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