1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 /*
3  * HID  descriptor stuructures
4  * Copyright 2020 Advanced Micro Devices, Inc.
5  * Authors: Nehal Bakulchandra Shah <Nehal-bakulchandra.shah@amd.com>
6  *	    Sandeep Singh <Sandeep.singh@amd.com>
7  */
8 
9 #ifndef AMD_SFH_HID_REPORT_DESCRIPTOR_H
10 #define AMD_SFH_HID_REPORT_DESCRIPTOR_H
11 
12 // Accelerometer 3D Sensor
13 static const u8 accel3_report_descriptor[] = {
14 0x05, 0x20,          /* Usage page */
15 0x09, 0x73,          /* Motion type Accel 3D */
16 0xA1, 0x00,          /* HID Collection (Physical) */
17 
18 //feature reports(xmit/receive)
19 0x85, 1,           /* HID  Report ID */
20 0x05, 0x20,	   /* HID usage page sensor */
21 0x0A, 0x09, 0x03,  /* Sensor property and sensor connection type */
22 0x15, 0,           /* HID logical MIN_8(0) */
23 0x25, 2,	   /* HID logical MAX_8(2) */
24 0x75, 8,	   /* HID report size(8) */
25 0x95, 1,	   /* HID report count(1) */
26 0xA1, 0x02,	   /* HID collection (logical) */
27 0x0A, 0x30, 0x08, /* Sensor property connection type intergated sel*/
28 0x0A, 0x31, 0x08, /* Sensor property connection type attached sel */
29 0x0A, 0x32, 0x08, /* Sensor property connection type external sel */
30 0xB1, 0x00,       /* HID feature (Data_Arr_Abs) */
31 0xC0,		  /* HID end collection */
32 0x0A, 0x16, 0x03, /* HID usage sensor property reporting state */
33 0x15, 0,          /* HID logical Min_8(0) */
34 0x25, 5,	  /* HID logical Max_8(5) */
35 0x75, 8,	  /* HID report size(8) */
36 0x95, 1,          /* HID report count(1) */
37 0xA1, 0x02,	  /* HID collection(logical) */
38 0x0A, 0x40, 0x08, /* Sensor property report state no events sel */
39 0x0A, 0x41, 0x08, /* Sensor property report state all events sel */
40 0x0A, 0x42, 0x08, /* Sensor property report state threshold events sel */
41 0x0A, 0x43, 0x08, /* Sensor property report state no events wake sel */
42 0x0A, 0x44, 0x08, /* Sensor property report state all events wake sel */
43 0x0A, 0x45, 0x08, /* Sensor property report state threshold events wake sel */
44 0xB1, 0x00,	  /* HID feature (Data_Arr_Abs) */
45 0xC0,		  /* HID end collection */
46 0x0A, 0x19, 0x03, /* HID usage sensor property power state */
47 0x15, 0,	  /* HID logical Min_8(0) */
48 0x25, 5,	  /* HID logical Max_8(5) */
49 0x75, 8,	  /* HID report size(8) */
50 0x95, 1,	  /* HID report count(1) */
51 0xA1, 0x02,	  /* HID collection(logical) */
52 0x0A, 0x50, 0x08, /* Sensor property power state undefined sel */
53 0x0A, 0x51, 0x08, /* Sensor property power state D0 full power  sel */
54 0x0A, 0x52, 0x08, /* Sensor property power state D1 low power sel */
55 0x0A, 0x53, 0x08, /* Sensor property power state D2 standby with wake sel */
56 0x0A, 0x54, 0x08, /* Sensor property power state D3 sleep with wake  sel */
57 0x0A, 0x55, 0x08, /* Sensor property power state D4 power off sel */
58 0xB1, 0x00,       /* HID feature (Data_Arr_Abs) */
59 0xC0,		  /* HID end collection */
60 0x0A, 0x01, 0x02, /* HID usage sensor state */
61 0x15, 0,	  /* HID logical Min_8(0) */
62 0x25, 6,	  /* HID logical Max_8(6) */
63 0x75, 8,	  /* HID report size(8) */
64 0x95, 1,	  /* HID report count(1) */
65 0xA1, 0x02,	  /* HID collection(logical) */
66 0x0A, 0x00, 0x08, /* HID usage sensor state unknown sel */
67 0x0A, 0x01, 0x08, /* HID usage sensor state ready sel */
68 0x0A, 0x02, 0x08, /* HID usage sensor state not available sel */
69 0x0A, 0x03, 0x08, /* HID usage sensor state no data sel */
70 0x0A, 0x04, 0x08, /* HID usage sensor state initializing sel */
71 0x0A, 0x05, 0x08, /* HID usage sensor state access denied sel */
72 0x0A, 0x06, 0x08, /* HID usage sensor state error sel */
73 0xB1, 0x00,	  /* HID feature (Data_Arr_Abs) */
74 0xC0,		  /* HID end collection */
75 0x0A, 0x0E, 0x03, /* HID usage sensor property report interval */
76 0x15, 0,	  /* HID logical Min_8(0) */
77 0x27, 0xFF, 0xFF, 0xFF, 0xFF, /* HID logical Max_32 */
78 
79 0x75, 32,	  /* HID report size(32) */
80 0x95, 1,	  /* HID report count(1) */
81 0x55, 0,	  /* HID unit exponent(0) */
82 0xB1, 0x02,	  /* HID feature (Data_Arr_Abs) */
83 0x0A, 0x52, 0x14, /* Sensor data motion accel and mod change sensitivity ABS) */
84 
85 0x15, 0,		/* HID logical Min_8(0) */
86 0x26, 0xFF, 0xFF,	/* HID logical Max_16(0xFF,0xFF) */
87 
88 0x75, 16,		/* HID report size(16) */
89 0x95, 1,		/* HID report count(1) */
90 0x55, 0x0E,		/* HID unit exponent(0x0E) */
91 0xB1, 0x02,		/* HID feature (Data_Arr_Abs) */
92 0x0A, 0x52, 0x24,	/* HID usage sensor data (motion accel and mod max) */
93 
94 0x16, 0x01, 0x80,	/* HID logical Min_16(0x01,0x80) */
95 
96 0x26, 0xFF, 0x7F,	/* HID logical Max_16(0xFF,0x7F) */
97 
98 0x75, 16,		/* HID report size(16) */
99 0x95, 1,		/* HID report count(1) */
100 0x55, 0x0E,		/* HID unit exponent(0x0E) */
101 0xB1, 0x02,		/* HID feature (Data_Arr_Abs) */
102 0x0A, 0x52, 0x34,	/* HID usage sensor data (motion accel and mod min) */
103 
104 0x16, 0x01, 0x80,	/* HID logical Min_16(0x01,0x80) */
105 
106 0x26, 0xFF, 0x7F,	/* HID logical Max_16(0xFF,0x7F) */
107 
108 0x75, 16,		/* HID report size(16) */
109 0x95, 1,		/* HID report count(1) */
110 0x55, 0x0E,		/* HID unit exponent(0x0E) */
111 0xB1, 0x02,		/* HID feature (Data_Arr_Abs) */
112 
113 //input report (transmit)
114 0x05, 0x20,		 /* HID usage page sensors */
115 0x0A, 0x01, 0x02,	 /* HID usage sensor state */
116 0x15, 0,		 /* HID logical Min_8(0) */
117 0x25, 6,		 /* HID logical Max_8(6) */
118 0x75, 8,		 /* HID report size(8) */
119 0x95, 1,		 /* HID report count (1) */
120 0xA1, 0x02,		 /* HID end collection (logical) */
121 0x0A, 0x00, 0x08,	 /* HID usage sensor state unknown sel */
122 0x0A, 0x01, 0x08,	 /* HID usage sensor state ready sel */
123 0x0A, 0x02, 0x08,	 /* HID usage sensor state not available sel */
124 0x0A, 0x03, 0x08,	 /* HID usage sensor state no data sel */
125 0x0A, 0x04, 0x08,	 /* HID usage sensor state initializing sel */
126 0x0A, 0x05, 0x08,	 /* HID usage sensor state access denied sel */
127 0x0A, 0x06, 0x08,	 /* HID usage sensor state error sel */
128 0X81, 0x00,		 /* HID Input (Data_Arr_Abs) */
129 0xC0,			 /* HID end collection */
130 0x0A, 0x02, 0x02,	 /* HID usage sensor event */
131 0x15, 0,		 /* HID logical Min_8(0) */
132 0x25, 5,		 /* HID logical Max_8(5) */
133 0x75, 8,		 /* HID report size(8) */
134 0x95, 1,		 /* HID report count (1) */
135 0xA1, 0x02,		 /* HID end collection (logical) */
136 0x0A, 0x10, 0x08,	 /* HID usage sensor event unknown sel */
137 0x0A, 0x11, 0x08,	 /* HID usage sensor event state changed sel */
138 0x0A, 0x12, 0x08,	 /* HID usage sensor event property changed sel */
139 0x0A, 0x13, 0x08,	 /* HID usage sensor event data updated sel */
140 0x0A, 0x14, 0x08,	 /* HID usage sensor event poll response sel */
141 0x0A, 0x15, 0x08,	 /* HID usage sensor event change sensitivity sel */
142 0X81, 0x00,		 /* HID Input (Data_Arr_Abs) */
143 0xC0,			 /* HID end collection */
144 0x0A, 0x53, 0x04,	 /* HID usage sensor data motion Acceleration X axis */
145 0x17, 0x00, 0x00, 0x01, 0x80, /* HID logical Min_32 */
146 
147 0x27, 0xFF, 0xff, 0XFF, 0XFF, /* HID logical Max_32  */
148 
149 0x75, 32,		/* HID report size(32) */
150 0x95, 1,		/* HID report count (1) */
151 0x55, 0x0E,		/* HID unit exponent(0x0E) */
152 0X81, 0x02,		/* HID Input (Data_Arr_Abs) */
153 0x0A, 0x54, 0x04,	/* HID usage sensor data motion Acceleration Y axis */
154 0x17, 0X00, 0X00, 0x01, 0x80, /* HID logical Min_32 */
155 
156 0x27, 0xFF, 0xFF, 0XFF, 0XFF, /* HID logical Max_32 */
157 
158 0x75, 32,		/* HID report size(32) */
159 0x95, 1,		/* HID report count (1) */
160 0x55, 0x0E,		/* HID unit exponent(0x0E) */
161 0X81, 0x02,		/* HID Input (Data_Arr_Abs) */
162 0x0A, 0x55, 0x04,	/* HID usage sensor data motion Acceleration Z axis */
163 0x17, 0X00, 0X00, 0x01, 0x80, /* HID logical Min_32 */
164 
165 0x27, 0XFF, 0XFF, 0xFF, 0x7F, /* HID logical Max_32 */
166 
167 0x75, 32,		/* HID report size(32) */
168 0x95, 1,		/* HID report count (1) */
169 0x55, 0x0E,		/* HID unit exponent(0x0E) */
170 0X81, 0x02,		/* HID Input (Data_Arr_Abs) */
171 
172 0x0A, 0x51, 0x04,	/* HID usage sensor data motion state */
173 0x15, 0,		/* HID logical Min_8(0) False = Still*/
174 0x25, 1,		/* HID logical Min_8(1) True = In motion */
175 0x75, 8,		/* HID report size(8) */
176 0x95, 1,		/* HID report count (1) */
177 0X81, 0x02,		/* HID Input (Data_Arr_Abs) */
178 0xC0			/* HID end collection */
179 };
180 
181 const u8 gyro3_report_descriptor[] = {
182 0x05, 0x20,		/* Usage page */
183 0x09, 0x76,		/* Motion type Gyro3D */
184 0xA1, 0x00,		/* HID Collection (Physical) */
185 
186 0x85, 2,		/* HID  Report ID */
187 0x05, 0x20,		/* HID usage page sensor */
188 0x0A, 0x09, 0x03,	/* Sensor property and sensor connection type */
189 0x15, 0,		/* HID logical MIN_8(0) */
190 0x25, 2,		/* HID logical MAX_8(2) */
191 0x75, 8,		/* HID report size(8) */
192 0x95, 1,		/* HID report count(1) */
193 0xA1, 0x02,		/* HID collection (logical) */
194 0x0A, 0x30, 0x08,	/* Sensor property connection type intergated sel */
195 0x0A, 0x31, 0x08,	/* Sensor property connection type attached sel */
196 0x0A, 0x32, 0x08,	/* Sensor property connection type external sel */
197 0xB1, 0x00,		/* HID feature (Data_Arr_Abs) */
198 0xC0,			/* HID end collection */
199 0x0A, 0x16, 0x03,	/* HID usage sensor property reporting state */
200 0x15, 0,		/* HID logical Min_8(0) */
201 0x25, 5,		/* HID logical Max_8(5) */
202 0x75, 8,		/* HID report size(8) */
203 0x95, 1,		/* HID report count(1) */
204 0xA1, 0x02,		/* HID collection(logical) */
205 0x0A, 0x40, 0x08,	/* Sensor reporting state no events sel */
206 0x0A, 0x41, 0x08,	/* Sensor reporting state all events sel */
207 0x0A, 0x42, 0x08,	/* Sensor reporting state threshold events sel */
208 0x0A, 0x43, 0x08,	/* Sensor reporting state no events wake sel */
209 0x0A, 0x44, 0x08,	/* Sensor reporting state all events wake sel */
210 0x0A, 0x45, 0x08,	/* Sensor reporting state threshold events wake sel */
211 0xB1, 0x00,		/* HID feature (Data_Arr_Abs) */
212 0xC0,			/* HID end collection */
213 0x0A, 0x19, 0x03,	/* HID usage sensor property power state */
214 0x15, 0,		/* HID logical Min_8(0) */
215 0x25, 5,		/* HID logical Max_8(5) */
216 0x75, 8,		/* HID report size(8) */
217 0x95, 1,		/* HID report count(1) */
218 0xA1, 0x02,		/* HID collection(logical) */
219 0x0A, 0x50, 0x08,	/* Sensor  power state undefined sel */
220 0x0A, 0x51, 0x08,	/* Sensor  power state D0 full power  sel */
221 0x0A, 0x52, 0x08,	/* Sensor  power state D1 low power sel */
222 0x0A, 0x53, 0x08,	/* Sensor  power state D2 standby with wake sel */
223 0x0A, 0x54, 0x08,	/* Sensor  power state D3 sleep with wake  sel */
224 0x0A, 0x55, 0x08,	/* Sensor  power state D4 power off sel */
225 0xB1, 0x00,		/* HID feature (Data_Arr_Abs) */
226 0xC0,			/* HID end collection */
227 0x0A, 0x01, 0x02,	/* HID usage sensor state */
228 0x15, 0,		/* HID logical Min_8(0) */
229 0x25, 6,		/* HID logical Max_8(6) */
230 0x75, 8,		/* HID report size(8) */
231 0x95, 1,		/* HID report count(1) */
232 0xA1, 0x02,		/* HID collection(logical) */
233 0x0A, 0x00, 0x08,	/* HID usage sensor state unknown sel */
234 0x0A, 0x01, 0x08,	/* HID usage sensor state ready sel */
235 0x0A, 0x02, 0x08,	/* HID usage sensor state not available sel */
236 0x0A, 0x03, 0x08,	/* HID usage sensor state no data sel */
237 0x0A, 0x04, 0x08,	/* HID usage sensor state initializing sel */
238 0x0A, 0x05, 0x08,	/* HID usage sensor state access denied sel */
239 0x0A, 0x06, 0x08,	/* HID usage sensor state error sel */
240 0xB1, 0x00,		/* HID feature (Data_Arr_Abs) */
241 0xC0,			/* HID end collection */
242 0x0A, 0x0E, 0x03,	/* HID usage sensor property report interval */
243 0x15, 0,		/* HID logical Min_8(0) */
244 0x27, 0xFF, 0xFF, 0xFF, 0xFF,	/* HID logical Max_32 */
245 
246 0x75, 32,		/* HID report size(32) */
247 0x95, 1,		/* HID report count(1) */
248 0x55, 0,		/* HID unit exponent(0) */
249 0xB1, 0x02,		/* HID feature (Data_Arr_Abs) */
250 0x0A, 0x56, 0x14,	/* Angular velocity and mod change sensitivity ABS)*/
251 
252 0x15, 0,		/* HID logical Min_8(0) */
253 0x26, 0xFF, 0xFF,	/* HID logical Max_16(0xFF,0xFF) */
254 
255 0x75, 16,		/* HID report size(16) */
256 0x95, 1,		/* HID report count(1) */
257 0x55, 0x0E,		/* HID unit exponent(0x0E) */
258 0xB1, 0x02,		/* HID feature (Data_Arr_Abs) */
259 0x0A, 0x56, 0x24,	/* Sensor data (motion angular velocity and mod max) */
260 
261 0x16, 0x01, 0x80,	/* HID logical Min_16(0x01,0x80) */
262 
263 0x26, 0xFF, 0x7F,	/* HID logical Max_16(0xFF,0x7F) */
264 
265 0x75, 16,		/* HID report size(16) */
266 0x95, 1,		/* HID report count(1) */
267 0x55, 0x0E,		/* HID unit exponent(0x0E) */
268 0xB1, 0x02,		/* HID feature (Data_Arr_Abs) */
269 0x0A, 0x56, 0x34,	/* HID usage sensor data (motion accel and mod min) */
270 
271 0x16, 0x01, 0x80,	/* HID logical Min_16(0x01,0x80) */
272 
273 0x26, 0xFF, 0x7F,	/* HID logical Max_16(0xFF,0x7F) */
274 
275 0x75, 16,		/* HID report size(16) */
276 0x95, 1,		/* HID report count(1) */
277 0x55, 0x0E,		/* HID unit exponent(0x0E) */
278 0xB1, 0x02,		/* HID feature (Data_Arr_Abs) */
279 
280 //Input reports(transmit)
281 0x05, 0x20,		/* HID usage page sensors */
282 0x0A, 0x01, 0x02,	/* HID usage sensor state */
283 0x15, 0,		/* HID logical Min_8(0) */
284 0x25, 6,		/* HID logical Max_8(6) */
285 0x75, 8,		/* HID report size(8) */
286 0x95, 1,		/* HID report count (1) */
287 0xA1, 0x02,		/* HID end collection (logical) */
288 0x0A, 0x00, 0x08,	/* HID usage sensor state unknown sel */
289 0x0A, 0x01, 0x08,	/* HID usage sensor state ready sel */
290 0x0A, 0x02, 0x08,	/* HID usage sensor state not available sel */
291 0x0A, 0x03, 0x08,	/* HID usage sensor state no data sel */
292 0x0A, 0x04, 0x08,	/* HID usage sensor state initializing sel */
293 0x0A, 0x05, 0x08,	/* HID usage sensor state access denied sel */
294 0x0A, 0x06, 0x08,	/* HID usage sensor state error sel */
295 0X81, 0x00,		/* HID Input (Data_Arr_Abs) */
296 0xC0,			/* HID end collection */
297 0x0A, 0x02, 0x02,	/* HID usage sensor event */
298 0x15, 0,		/* HID logical Min_8(0) */
299 0x25, 5,		/* HID logical Max_8(5) */
300 0x75, 8,		/* HID report size(8) */
301 0x95, 1,		/* HID report count (1) */
302 0xA1, 0x02,		/* HID end collection (logical) */
303 0x0A, 0x10, 0x08,	/* HID usage sensor event unknown sel */
304 0x0A, 0x11, 0x08,	/* HID usage sensor event state changed sel */
305 0x0A, 0x12, 0x08,	/* HID usage sensor event property changed sel */
306 0x0A, 0x13, 0x08,	/* HID usage sensor event data updated sel */
307 0x0A, 0x14, 0x08,	/* HID usage sensor event poll response sel */
308 0x0A, 0x15, 0x08,	/* HID usage sensor event change sensitivity sel */
309 0X81, 0x00,		/* HID Input (Data_Arr_Abs) */
310 0xC0,			/* HID end collection */
311 0x0A, 0x57, 0x04,	/* Sensor data motion Angular velocity  X axis */
312 0x17, 0x00, 0x00, 0x01, 0x80,	/* HID logical Min_32 */
313 
314 0x27, 0xFF, 0xFF, 0xFF, 0x7F,	/* HID logical Max_32 */
315 
316 0x75, 32,		/* HID report size(32) */
317 0x95, 1,		/* HID report count (1) */
318 0x55, 0x0E,		/* HID unit exponent(0x0E) */
319 0X81, 0x02,		/* HID Input (Data_Arr_Abs) */
320 0x0A, 0x58, 0x04,	/* Sensor data motion Angular velocity  Y axis */
321 0x17, 0x00, 0x00, 0x01, 0x80, /* HID logical Min_32 */
322 
323 0x27, 0xFF, 0xFF, 0xFF, 0x7F, /* HID logical Max_32 */
324 
325 0x75, 32,		/* HID report size(32) */
326 0x95, 1,		/* HID report count (1) */
327 0x55, 0x0E,		/* HID unit exponent(0x0E) */
328 0X81, 0x02,		/* HID Input (Data_Arr_Abs) */
329 0x0A, 0x59, 0x04,	/* Sensor data motion Angular velocity  Z axis */
330 0x17, 0x00, 0x00, 0x01, 0x80, /* HID logical Min_32 */
331 
332 0x27, 0xFF, 0xFF, 0xFF, 0x7F, /* HID logical Max_32 */
333 
334 0x75, 32,		/* HID report size(32) */
335 0x95, 1,		/* HID report count (1) */
336 0x55, 0x0E,		/* HID unit exponent(0x0E) */
337 0X81, 0x02,		/* HID Input (Data_Arr_Abs) */
338 
339 0xC0,			/* HID end collection */
340 };
341 
342 const u8 comp3_report_descriptor[] = {
343 0x05, 0x20,		/* Usage page */
344 0x09, 0x83,		/* Motion type Orientation compass 3D */
345 0xA1, 0x00,		/* HID Collection (Physical) */
346 
347 0x85, 3,		/* HID  Report ID */
348 0x05, 0x20,		/* HID usage page sensor */
349 0x0A, 0x09, 0x03,	/* Sensor property and sensor connection type */
350 0x15, 0,		/* HID logical MIN_8(0) */
351 0x25, 2,		/* HID logical MAX_8(2) */
352 0x75, 8,		/* HID report size(8) */
353 0x95, 1,		/* HID report count(1) */
354 0xA1, 0x02,		/* HID collection (logical) */
355 0x0A, 0x30, 0x08,	/* Sensor property connection type intergated sel */
356 0x0A, 0x31, 0x08,	/* Sensor property connection type attached sel */
357 0x0A, 0x32, 0x08,	/* Sensor property connection type external sel */
358 0xB1, 0x00,		/* HID feature (Data_Arr_Abs) */
359 0xC0,			/* HID end collection */
360 0x0A, 0x16, 0x03,	/* HID usage sensor property reporting state */
361 0x15, 0,		/* HID logical Min_8(0) */
362 0x25, 5,		/* HID logical Max_8(5) */
363 0x75, 8,		/* HID report size(8) */
364 0x95, 1,		/* HID report count(1) */
365 0xA1, 0x02,		/* HID collection(logical) */
366 0x0A, 0x40, 0x08,	/* Sensor reporting state no events sel */
367 0x0A, 0x41, 0x08,	/* Sensor reporting state all events sel */
368 0x0A, 0x42, 0x08,	/* Sensor reporting state threshold events sel */
369 0x0A, 0x43, 0x08,	/* Sensor reporting state no events wake sel */
370 0x0A, 0x44, 0x08,	/* Sensor reporting state all events wake sel */
371 0x0A, 0x45, 0x08,	/* Sensor reporting state threshold events wake sel */
372 0xB1, 0x00,		/* HID feature (Data_Arr_Abs) */
373 0xC0,			/* HID end collection */
374 0x0A, 0x19, 0x03,       /* HID usage sensor property power state */
375 0x15, 0,		/* HID logical Min_8(0) */
376 0x25, 5,		/* HID logical Max_8(5) */
377 0x75, 8,		/* HID report size(8) */
378 0x95, 1,		/* HID report count(1) */
379 0xA1, 0x02,		/* HID collection(logical) */
380 0x0A, 0x50, 0x08,	/* Sensor power state undefined sel */
381 0x0A, 0x51, 0x08,	/* Sensor power state D0 full power  sel */
382 0x0A, 0x52, 0x08,	/* Sensor power state D1 low power sel */
383 0x0A, 0x53, 0x08,	/* Sensor power state D2 standby with wake sel */
384 0x0A, 0x54, 0x08,	/* Sensor power state D3 sleep with wake  sel */
385 0x0A, 0x55, 0x08,	/* Sensor power state D4 power off sel */
386 0xB1, 0x00,		/* HID feature (Data_Arr_Abs) */
387 0xC0,			/* HID end collection */
388 0x0A, 0x01, 0x02,	/* HID usage sensor state */
389 0x15, 0,		/* HID logical Min_8(0) */
390 0x25, 6,		/* HID logical Max_8(6) */
391 0x75, 8,		/* HID report size(8) */
392 0x95, 1,		/* HID report count(1) */
393 0xA1, 0x02,		/* HID collection(logical) */
394 0x0A, 0x00, 0x08,       /* HID usage sensor state unknown sel */
395 0x0A, 0x01, 0x08,       /* HID usage sensor state ready sel */
396 0x0A, 0x02, 0x08,       /* HID usage sensor state not available sel */
397 0x0A, 0x03, 0x08,       /* HID usage sensor state no data sel */
398 0x0A, 0x04, 0x08,       /* HID usage sensor state initializing sel */
399 0x0A, 0x05, 0x08,       /* HID usage sensor state access denied sel */
400 0x0A, 0x06, 0x08,       /* HID usage sensor state error sel */
401 0xB1, 0x00,		/* HID feature (Data_Arr_Abs) */
402 0xC0,			/* HID end collection */
403 0x0A, 0x0E, 0x03,	/* HID usage sensor property report interval */
404 0x15, 0,		/* HID logical Min_8(0) */
405 0x27, 0xFF, 0xFF, 0xFF, 0xFF,	/* HID logical Max_32 */
406 0x75, 32,		/* HID report size(32) */
407 0x95, 1,		/* HID report count(1) */
408 0x55, 0,		/* HID unit exponent(0) */
409 0xB1, 0x02,		/* HID feature (Data_Arr_Abs) */
410 0x0A, 0x71, 0x14,	/* Orientation  and mod change sensitivity ABS)*/
411 0x15, 0,		/* HID logical Min_8(0) */
412 0x26, 0xFF, 0xFF,	/* HID logical Max_16(0xFF,0xFF) */
413 0x75, 16,		/* HID report size(16) */
414 0x95, 1,		/* HID report count(1) */
415 0x55, 0x0E,		/* HID unit exponent(0x0E) */
416 0xB1, 0x02,		/* HID feature (Data_Arr_Abs) */
417 0x0A, 0x71, 0x24,	/* Sensor data (motion orientation  and mod max) */
418 0x16, 0x01, 0x80,	/* HID logical Min_16(0x01,0x80) */
419 0x26, 0xFF, 0x7F,	/* HID logical Max_16(0xFF,0x7F) */
420 0x75, 16,		/* HID report size(16) */
421 0x95, 1,		/* HID report count(1) */
422 0x55, 0x0F,		/* HID unit exponent(0x0F) */
423 0xB1, 0x02,		/* HID feature (Data_Arr_Abs) */
424 0x0A, 0x71, 0x34,	/* Sensor data (motion orientation  and mod min) */
425 0x16, 0x01, 0x80,	/* HID logical Min_16(0x01,0x80) */
426 0x26, 0xFF, 0x7F,	/* HID logical Max_16(0xFF,0x7F) */
427 0x75, 16,		/* HID report size(16) */
428 0x95, 1,		/* HID report count(1) */
429 0x55, 0x0F,		/* HID unit exponent(0x0F) */
430 0xB1, 0x02,		/* HID feature (Data_Arr_Abs) */
431 0x0A, 0x84, 0x14,	/* Maganetic flux and change sensitivity ABS) */
432 0x15, 0,		/* HID logical Min_8(0) */
433 0x26, 0xFF, 0xFF,	/* HID logical Max_16(0xFF,0xFF) */
434 0x75, 16,		/* HID report size(16) */
435 0x95, 1,		/* HID report count(1) */
436 0x55, 0x0E,		/* HID unit exponent(0x0E) */
437 0xB1, 0x02,		/* HID feature (Data_Arr_Abs) */
438 0x0A, 0x84, 0x24,	/* Maganetic flux and mod change sensitivity Max) */
439 0x16, 0x01, 0x80,	/* HID logical Min_16(0x01,0x80) */
440 0x26, 0xFF, 0x7F,	/* HID logical Max_16(0xFF,0x7F) */
441 0x75, 16,		/* HID report size(16) */
442 0x95, 1,		/* HID report count(1) */
443 0x55, 0x0F,		/* HID unit exponent(0x0F) */
444 0xB1, 0x02,		/* HID feature (Data_Arr_Abs) */
445 0x0A, 0x84, 0x34,	/* Maganetic flux and mod change sensitivity Min */
446 0x16, 0x01, 0x80,	/* HID logical Min_16(0x01,0x80) */
447 0x26, 0xFF, 0x7F,	/* HID logical Max_16(0xFF,0x7F) */
448 0x75, 16,		/* HID report size(16) */
449 0x95, 1,		/* HID report count(1) */
450 0x55, 0x0F,		/* HID unit exponent(0x0F) */
451 0xB1, 0x02,		/* HID feature (Data_Arr_Abs) */
452 
453 //Input reports(transmit)
454 0x05, 0x20,		/* HID usage page sensors */
455 0x0A, 0x01, 0x02,	/* HID usage sensor state */
456 0x15, 0,		/* HID logical Min_8(0) */
457 0x25, 6,		/* HID logical Max_8(6) */
458 0x75, 8,		/* HID report size(8) */
459 0x95, 1,		/* HID report count (1) */
460 0xA1, 0x02,		/* HID end collection (logical) */
461 0x0A, 0x00, 0x08,	/* HID usage sensor state unknown sel */
462 0x0A, 0x01, 0x08,	/* HID usage sensor state ready sel */
463 0x0A, 0x02, 0x08,	/* HID usage sensor state not available sel */
464 0x0A, 0x03, 0x08,	/* HID usage sensor state no data sel */
465 0x0A, 0x04, 0x08,	/* HID usage sensor state initializing sel */
466 0x0A, 0x05, 0x08,	/* HID usage sensor state access denied sel */
467 0x0A, 0x06, 0x08,	/* HID usage sensor state error sel */
468 0X81, 0x00,		/* HID Input (Data_Arr_Abs) */
469 0xC0,			/* HID end collection */
470 0x0A, 0x02, 0x02,	/* HID usage sensor event */
471 0x15, 0,		/* HID logical Min_8(0) */
472 0x25, 5,		/* HID logical Max_8(5) */
473 0x75, 8,		/* HID report size(8) */
474 0x95, 1,		/* HID report count (1) */
475 0xA1, 0x02,		/* HID end collection (logical) */
476 0x0A, 0x10, 0x08,	/* HID usage sensor event unknown sel */
477 0x0A, 0x11, 0x08,	/* HID usage sensor event state changed sel */
478 0x0A, 0x12, 0x08,	/* HID usage sensor event property changed sel */
479 0x0A, 0x13, 0x08,	/* HID usage sensor event data updated sel */
480 0x0A, 0x14, 0x08,	/* HID usage sensor event poll response sel */
481 0x0A, 0x15, 0x08,	/* HID usage sensor event change sensitivity sel */
482 0X81, 0x00,		/* HID Input (Data_Arr_Abs) */
483 0xC0,			/* HID end collection */
484 0x0A, 0x85, 0x04,	/* Sensor data orientation magnetic flux X axis */
485 0x17, 0x00, 0x00, 0x01, 0x80,	/* HID logical Min_32 */
486 0x27, 0xFF, 0xFF, 0xFF, 0x7F,	/* HID logical Max_32 */
487 0x75, 32,		/* HID report size(32) */
488 0x95, 1,		/* HID report count (1) */
489 0x55, 0x0D,		/* HID unit exponent(0x0D) */
490 0X81, 0x02,		/* HID Input (Data_Arr_Abs) */
491 0x0A, 0x86, 0x04,	/* Sensor data orientation magnetic flux Y axis */
492 0x17, 0x00, 0x00, 0x01, 0x80,	/* HID logical Min_32 */
493 0x27, 0xFF, 0xFF, 0xFF, 0x7F,	/* HID logical Max_32 */
494 0x75, 32,		/* HID report size(32) */
495 0x95, 1,		/* HID report count (1) */
496 0x55, 0x0D,		/* HID unit exponent(0x0D) */
497 0X81, 0x02,		/* HID Input (Data_Arr_Abs) */
498 0x0A, 0x87, 0x04,	/* Sensor data orientation magnetic flux Z axis */
499 0x17, 0x00, 0x00, 0x01, 0x80,	/* HID logical Min_32 */
500 0x27, 0xFF, 0xFF, 0xFF, 0x7F,	/* HID logical Max_32 */
501 0x75, 32,			/* HID report size(32) */
502 0x95, 1,			/* HID report count (1) */
503 0x55, 0x0D,			/* HID unit exponent(0x0D) */
504 0X81, 0x02,			/* HID Input (Data_Arr_Abs) */
505 0x0A, 0x88, 0x04,	/* Sensor data orientation magnetometer accuracy */
506 0x17, 0x00, 0x00, 0x01, 0x80,	/* HID logical Min_32 */
507 0x27, 0xFF, 0xFF, 0xFF, 0x7F,	/* HID logical Max_32 */
508 0x75, 32,			/* HID report size(32) */
509 0x95, 1,			/* HID report count (1) */
510 0X81, 0x02,			/* HID Input (Data_Arr_Abs) */
511 0xC0				/* HID end collection */
512 };
513 
514 const u8 als_report_descriptor[] = {
515 0x05, 0x20,	/* HID usage page sensor */
516 0x09, 0x41,	/* HID usage sensor type Ambientlight  */
517 0xA1, 0x00,	/* HID Collection (Physical) */
518 
519 //feature reports(xmit/receive)//
520 0x85, 4,		/* HID  Report ID */
521 0x05, 0x20,		/* HID usage page sensor */
522 0x0A, 0x09, 0x03,	/* Sensor property and sensor connection type */
523 0x15, 0,		/* HID logical MIN_8(0) */
524 0x25, 2,		/* HID logical MAX_8(2) */
525 0x75, 8,		/* HID report size(8) */
526 0x95, 1,		/* HID report count(1) */
527 0xA1, 0x02,		/* HID collection (logical) */
528 0x0A, 0x30, 0x08,	/* Sensor property connection type intergated sel */
529 0x0A, 0x31, 0x08,	/* Sensor property connection type attached sel */
530 0x0A, 0x32, 0x08,	/* Sensor property connection type external sel */
531 0xB1, 0x00,		/* HID feature (Data_Arr_Abs) */
532 0xC0,			/* HID end collection */
533 0x0A, 0x16, 0x03,	/* HID usage sensor property reporting state */
534 0x15, 0,		/* HID logical Min_8(0) */
535 0x25, 5,		/* HID logical Max_8(5) */
536 0x75, 8,		/* HID report size(8) */
537 0x95, 1,		/* HID report count(1) */
538 0xA1, 0x02,		/* HID collection(logical) */
539 0x0A, 0x40, 0x08,	/* Sensor reporting state no events sel */
540 0x0A, 0x41, 0x08,	/* Sensor reporting state all events sel */
541 0x0A, 0x42, 0x08,	/* Sensor reporting state threshold events sel */
542 0x0A, 0x43, 0x08,	/* Sensor reporting state no events wake sel */
543 0x0A, 0x44, 0x08,	/* Sensor reporting state all events wake sel */
544 0x0A, 0x45, 0x08,	/* Sensor reporting state threshold events wake sel */
545 0xB1, 0x00,		/* HID feature (Data_Arr_Abs) */
546 0xC0,			/* HID end collection */
547 0x0A, 0x19, 0x03,	/* HID usage sensor property power state */
548 0x15, 0,		/* HID logical Min_8(0) */
549 0x25, 5,		/* HID logical Max_8(5) */
550 0x75, 8,		/* HID report size(8) */
551 0x95, 1,		/* HID report count(1) */
552 0xA1, 0x02,		/* HID collection(logical) */
553 0x0A, 0x50, 0x08,	/* Sensor power state undefined sel */
554 0x0A, 0x51, 0x08,	/* Sensor power state D0 full power  sel */
555 0x0A, 0x52, 0x08,	/* Sensor power state D1 low power sel */
556 0x0A, 0x53, 0x08,	/* Sensor power state D2 standby with wake sel */
557 0x0A, 0x54, 0x08,	/* Sensor power state D3 sleep with wake  sel */
558 0x0A, 0x55, 0x08,	/* Sensor power state D4 power off sel */
559 0xB1, 0x00,		/* HID feature (Data_Arr_Abs) */
560 0xC0,			/* HID end collection */
561 0x0A, 0x01, 0x02,	/* HID usage sensor state */
562 0x15, 0,		/* HID logical Min_8(0) */
563 0x25, 6,		/* HID logical Max_8(6) */
564 0x75, 8,		/* HID report size(8) */
565 0x95, 1,		/* HID report count(1) */
566 0xA1, 0x02,		/* HID collection(logical) */
567 0x0A, 0x00, 0x08,	/* HID usage sensor state unknown sel */
568 0x0A, 0x01, 0x08,	/* HID usage sensor state ready sel */
569 0x0A, 0x02, 0x08,	/* HID usage sensor state not available sel */
570 0x0A, 0x03, 0x08,	/* HID usage sensor state no data sel */
571 0x0A, 0x04, 0x08,	/* HID usage sensor state initializing sel */
572 0x0A, 0x05, 0x08,	/* HID usage sensor state access denied sel */
573 0x0A, 0x06, 0x08,	/* HID usage sensor state error sel */
574 0xB1, 0x00,		/* HID feature (Data_Arr_Abs) */
575 0xC0,			/* HID end collection */
576 0x0A, 0x0E, 0x03,	/* HID usage sensor property report interval */
577 0x15, 0,		/* HID logical Min_8(0) */
578 0x27, 0xFF, 0xFF, 0xFF, 0xFF,	/* HID logical Max_32 */
579 0x75, 32,		/* HID report size(32) */
580 0x95, 1,		/* HID report count(1) */
581 0x55, 0,		/* HID unit exponent(0) */
582 0xB1, 0x02,		/* HID feature (Data_Arr_Abs) */
583 0x0A, 0xD1, 0xE4,	/* Light illuminance and sensitivity REL PCT) */
584 0x15, 0,		/* HID logical Min_8(0) */
585 0x26, 0x10, 0x27,	/* HID logical Max_16(0x10,0x27) */
586 0x75, 16,		/* HID report size(16) */
587 0x95, 1,		/* HID report count(1) */
588 0x55, 0x0E,		/* HID unit exponent(0x0E) */
589 0xB1, 0x02,		/* HID feature (Data_Arr_Abs) */
590 0x0A, 0xD1, 0x24,	/* Sensor data (Light illuminance and mod max) */
591 0x15, 0,		/* HID logical Min_8(0) */
592 0x26, 0xFF, 0xFF,	/* HID logical Max_16(0xFF,0xFF) */
593 0x75, 16,		/* HID report size(16) */
594 0x95, 1,		/* HID report count(1) */
595 0x55, 0x0F,		/* HID unit exponent(0x0F) */
596 0xB1, 0x02,		/* HID feature (Data_Arr_Abs) */
597 0x0A, 0xD1, 0x34,	/* Sensor data (Light illuminance and mod min) */
598 0x15, 0,		/* HID logical Min_8(0) */
599 0x26, 0xFF, 0xFF,	/* HID logical Max_16(0xFF,0xFF) */
600 0x75, 16,		/* HID report size(16) */
601 0x95, 1,		/* HID report count(1) */
602 0x55, 0x0F,		/* HID unit exponent(0x0F) */
603 0xB1, 0x02,		/* HID feature (Data_Arr_Abs) */
604 
605 //Input reports (transmit)
606 0x05, 0x20,		/* HID usage page sensors */
607 0x0A, 0x01, 0x02,	/* HID usage sensor state */
608 0x15, 0,		/* HID logical Min_8(0) */
609 0x25, 6,		/* HID logical Max_8(6) */
610 0x75, 8,		/* HID report size(8) */
611 0x95, 1,		/* HID report count (1) */
612 0xA1, 0x02,		/* HID end collection (logical) */
613 0x0A, 0x00, 0x08,	/* HID usage sensor state unknown sel */
614 0x0A, 0x01, 0x08,	/* HID usage sensor state ready sel */
615 0x0A, 0x02, 0x08,	/* HID usage sensor state not available sel */
616 0x0A, 0x03, 0x08,	/* HID usage sensor state no data sel */
617 0x0A, 0x04, 0x08,	/* HID usage sensor state initializing sel */
618 0x0A, 0x05, 0x08,	/* HID usage sensor state access denied sel */
619 0x0A, 0x06, 0x08,	/* HID usage sensor state error sel */
620 0X81, 0x00,		/* HID Input (Data_Arr_Abs) */
621 0xC0,			/* HID end collection */
622 0x0A, 0x02, 0x02,	/* HID usage sensor event */
623 0x15, 0,		/* HID logical Min_8(0) */
624 0x25, 5,		/* HID logical Max_8(5) */
625 0x75, 8,		/* HID report size(8) */
626 0x95, 1,		/* HID report count (1) */
627 0xA1, 0x02,		/* HID end collection (logical) */
628 0x0A, 0x10, 0x08,	/* HID usage sensor event unknown sel */
629 0x0A, 0x11, 0x08,	/* HID usage sensor event state changed sel */
630 0x0A, 0x12, 0x08,	/* HID usage sensor event property changed sel */
631 0x0A, 0x13, 0x08,	/* HID usage sensor event data updated sel */
632 0x0A, 0x14, 0x08,	/* HID usage sensor event poll response sel */
633 0x0A, 0x15, 0x08,	/* HID usage sensor event change sensitivity sel */
634 0X81, 0x00,		/* HID Input (Data_Arr_Abs) */
635 0xC0,			/* HID end collection */
636 0x0A, 0xD1, 0x04,	/* HID usage sensor data light illuminance */
637 0x17, 0x00, 0x00, 0x01, 0x80,	 /* HID logical Min_32 */
638 0x27, 0xFF, 0xFF, 0xFF, 0x7F,	 /* HID logical Max_32 */
639 0x55, 0x0F,		/* HID unit exponent(0x0F) */
640 0x75, 32,		/* HID report size(32) */
641 0x95, 1,		/* HID report count (1) */
642 0X81, 0x02,		/* HID Input (Data_Arr_Abs) */
643 0xC0			/* HID end collection */
644 };
645 #endif
646