1/* SPDX-License-Identifier: GPL-2.0-or-later */
2/*
3 * HID report descriptors, structures and routines
4 * Copyright 2020-2021 Advanced Micro Devices, Inc.
5 * Authors: Nehal Bakulchandra Shah <Nehal-bakulchandra.shah@amd.com>
6 * Sandeep Singh <Sandeep.singh@amd.com>
7 * Basavaraj Natikar <Basavaraj.Natikar@amd.com>
8 */
9
10#ifndef AMD_SFH_HID_DESCRIPTOR_H
11#define AMD_SFH_HID_DESCRIPTOR_H
12
13enum desc_type {
14 /* Report descriptor name */
15 descr_size = 1,
16 input_size,
17 feature_size,
18};
19
20struct common_feature_property {
21 /* common properties */
22 u8 report_id;
23 u8 connection_type;
24 u8 report_state;
25 u8 power_state;
26 u8 sensor_state;
27 u32 report_interval;
28} __packed;
29
30struct common_input_property {
31 /* common properties */
32 u8 report_id;
33 u8 sensor_state;
34 u8 event_type;
35} __packed;
36
37struct accel3_feature_report {
38 struct common_feature_property common_property;
39 /* properties specific to this sensor */
40 u16 accel_change_sesnitivity;
41 s16 accel_sensitivity_max;
42 s16 accel_sensitivity_min;
43} __packed;
44
45struct accel3_input_report {
46 struct common_input_property common_property;
47 /* values specific to this sensor */
48 int in_accel_x_value;
49 int in_accel_y_value;
50 int in_accel_z_value;
51 /* include if required to support the "shake" event */
52 u8 in_accel_shake_detection;
53} __packed;
54
55struct gyro_feature_report {
56 struct common_feature_property common_property;
57 /* properties specific to this sensor */
58 u16 gyro_change_sesnitivity;
59 s16 gyro_sensitivity_max;
60 s16 gyro_sensitivity_min;
61} __packed;
62
63struct gyro_input_report {
64 struct common_input_property common_property;
65 /* values specific to this sensor */
66 int in_angel_x_value;
67 int in_angel_y_value;
68 int in_angel_z_value;
69} __packed;
70
71struct magno_feature_report {
72 struct common_feature_property common_property;
73 /*properties specific to this sensor */
74 u16 magno_headingchange_sensitivity;
75 s16 heading_min;
76 s16 heading_max;
77 u16 flux_change_sensitivity;
78 s16 flux_min;
79 s16 flux_max;
80} __packed;
81
82struct magno_input_report {
83 struct common_input_property common_property;
84 int in_magno_x;
85 int in_magno_y;
86 int in_magno_z;
87 int in_magno_accuracy;
88} __packed;
89
90struct als_feature_report {
91 struct common_feature_property common_property;
92 /* properties specific to this sensor */
93 u16 als_change_sesnitivity;
94 s16 als_sensitivity_max;
95 s16 als_sensitivity_min;
96} __packed;
97
98struct als_input_report {
99 struct common_input_property common_property;
100 /* values specific to this sensor */
101 int illuminance_value;
102 int light_color_temp;
103 int chromaticity_x_value;
104 int chromaticity_y_value;
105} __packed;
106
107struct hpd_feature_report {
108 struct common_feature_property common_property;
109} __packed;
110
111struct hpd_input_report {
112 struct common_input_property common_property;
113 /* values specific to human presence sensor */
114 u8 human_presence;
115} __packed;
116
117#endif
118

source code of linux/drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_desc.h