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