/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* HID descriptor stuructures
* Copyright 2020-2021 Advanced Micro Devices, Inc.
* Authors: Nehal Bakulchandra Shah <[email protected]>
* Sandeep Singh <[email protected]>
* Basavaraj Natikar <[email protected]>
*/
#ifndef AMD_SFH_HID_REPORT_DESCRIPTOR_H
#define AMD_SFH_HID_REPORT_DESCRIPTOR_H
// Accelerometer 3D Sensor
static const u8 accel3_report_descriptor[] = {
0x05, 0x20, /* Usage page */
0x09, 0x73, /* Motion type Accel 3D */
0xA1, 0x00, /* HID Collection (Physical) */
//feature reports(xmit/receive)
0x85, 1, /* HID Report ID */
0x05, 0x20, /* HID usage page sensor */
0x0A, 0x09, 0x03, /* Sensor property and sensor connection type */
0x15, 0, /* HID logical MIN_8(0) */
0x25, 2, /* HID logical MAX_8(2) */
0x75, 8, /* HID report size(8) */
0x95, 1, /* HID report count(1) */
0xA1, 0x02, /* HID collection (logical) */
0x0A, 0x30, 0x08, /* Sensor property connection type intergated sel*/
0x0A, 0x31, 0x08, /* Sensor property connection type attached sel */
0x0A, 0x32, 0x08, /* Sensor property connection type external sel */
0xB1, 0x00, /* HID feature (Data_Arr_Abs) */
0xC0, /* HID end collection */
0x0A, 0x16, 0x03, /* HID usage sensor property reporting state */
0x15, 0, /* HID logical Min_8(0) */
0x25, 5, /* HID logical Max_8(5) */
0x75, 8, /* HID report size(8) */
0x95, 1, /* HID report count(1) */
0xA1, 0x02, /* HID collection(logical) */
0x0A, 0x40, 0x08, /* Sensor property report state no events sel */
0x0A, 0x41, 0x08, /* Sensor property report state all events sel */
0x0A, 0x42, 0x08, /* Sensor property report state threshold events sel */
0x0A, 0x43, 0x08, /* Sensor property report state no events wake sel */
0x0A, 0x44, 0x08, /* Sensor property report state all events wake sel */
0x0A, 0x45, 0x08, /* Sensor property report state threshold events wake sel */
0xB1, 0x00, /* HID feature (Data_Arr_Abs) */
0xC0, /* HID end collection */
0x0A, 0x19, 0x03, /* HID usage sensor property power state */
0x15, 0, /* HID logical Min_8(0) */
0x25, 5, /* HID logical Max_8(5) */
0x75, 8, /* HID report size(8) */
0x95, 1, /* HID report count(1) */
0xA1, 0x02, /* HID collection(logical) */
0x0A, 0x50, 0x08, /* Sensor property power state undefined sel */
0x0A, 0x51, 0x08, /* Sensor property power state D0 full power sel */
0x0A, 0x52, 0x08, /* Sensor property power state D1 low power sel */
0x0A, 0x53, 0x08, /* Sensor property power state D2 standby with wake sel */
0x0A, 0x54, 0x08, /* Sensor property power state D3 sleep with wake sel */
0x0A, 0x55, 0x08, /* Sensor property power state D4 power off sel */
0xB1, 0x00, /* HID feature (Data_Arr_Abs) */
0xC0, /* HID end collection */
0x0A, 0x01, 0x02, /* HID usage sensor state */
0x15, 0, /* HID logical Min_8(0) */
0x25, 6, /* HID logical Max_8(6) */
0x75, 8, /* HID report size(8) */
0x95, 1, /* HID report count(1) */
0xA1, 0x02, /* HID collection(logical) */
0x0A, 0x00, 0x08, /* HID usage sensor state unknown sel */
0x0A, 0x01, 0x08, /* HID usage sensor state ready sel */
0x0A, 0x02, 0x08, /* HID usage sensor state not available sel */
0x0A, 0x03, 0x08, /* HID usage sensor state no data sel */
0x0A, 0x04, 0x08, /* HID usage sensor state initializing sel */
0x0A, 0x05, 0x08, /* HID usage sensor state access denied sel */
0x0A, 0x06, 0x08, /* HID usage sensor state error sel */
0xB1, 0x00, /* HID feature (Data_Arr_Abs) */
0xC0, /* HID end collection */
0x0A, 0x0E, 0x03, /* HID usage sensor property report interval */
0x15, 0, /* HID logical Min_8(0) */
0x27, 0xFF, 0xFF, 0xFF, 0xFF, /* HID logical Max_32 */
0x75, 32, /* HID report size(32) */
0x95, 1, /* HID report count(1) */
0x55, 0, /* HID unit exponent(0) */
0xB1, 0x02, /* HID feature (Data_Arr_Abs) */
0x0A, 0x52, 0x14, /* Sensor data motion accel and mod change sensitivity ABS) */
0x15, 0, /* HID logical Min_8(0) */
0x26, 0xFF, 0xFF, /* HID logical Max_16(0xFF,0xFF) */
0x75, 16, /* HID report size(16) */
0x95, 1, /* HID report count(1) */
0x55, 0x0E, /* HID unit exponent(0x0E) */
0xB1, 0x02, /* HID feature (Data_Arr_Abs) */
0x0A, 0x52, 0x24, /* HID usage sensor data (motion accel and mod max) */
0x16, 0x01, 0x80, /* HID logical Min_16(0x01,0x80) */
0x26, 0xFF, 0x7F, /* HID logical Max_16(0xFF,0x7F) */
0x75, 16, /* HID report size(16) */
0x95, 1, /* HID report count(1) */
0x55, 0x0E, /* HID unit exponent(0x0E) */
0xB1, 0x02, /* HID feature (Data_Arr_Abs) */
0x0A, 0x52, 0x34, /* HID usage sensor data (motion accel and mod min) */
0x16, 0x01, 0x80, /* HID logical Min_16(0x01,0x80) */
0x26, 0xFF, 0x7F, /* HID logical Max_16(0xFF,0x7F) */
0x75, 16, /* HID report size(16) */
0x95, 1, /* HID report count(1) */
0x55, 0x0E, /* HID unit exponent(0x0E) */
0xB1, 0x02, /* HID feature (Data_Arr_Abs) */
//input report (transmit)
0x05, 0x20, /* HID usage page sensors */
0x0A, 0x01, 0x02, /* HID usage sensor state */
0x15, 0, /* HID logical Min_8(0) */
0x25, 6, /* HID logical Max_8(6) */
0x75, 8, /* HID report size(8) */
0x95, 1, /* HID report count (1) */
0xA1, 0x02, /* HID end collection (logical) */
0x0A, 0x00, 0x08, /* HID usage sensor state unknown sel */
0x0A, 0x01, 0x08, /* HID usage sensor state ready sel */
0x0A, 0x02, 0x08, /* HID usage sensor state not available sel */
0x0A, 0x03, 0x08, /* HID usage sensor state no data sel */
0x0A, 0x04, 0x08, /* HID usage sensor state initializing sel */
0x0A, 0x05, 0x08, /* HID usage sensor state access denied sel */
0x0A, 0x06, 0x08, /* HID usage sensor state error sel */
0X81, 0x00, /* HID Input (Data_Arr_Abs) */
0xC0, /* HID end collection */
0x0A, 0x02, 0x02, /* HID usage sensor event */
0x15, 0, /* HID logical Min_8(0) */
0x25, 5, /* HID logical Max_8(5) */
0x75, 8, /* HID report size(8) */
0x95, 1, /* HID report count (1) */
0xA1, 0x02, /* HID end collection (logical) */
0x0A, 0x10, 0x08, /* HID usage sensor event unknown sel */
0x0A, 0x11, 0x08, /* HID usage sensor event state changed sel */
0x0A, 0x12, 0x08, /* HID usage sensor event property changed sel */
0x0A, 0x13, 0x08, /* HID usage sensor event data updated sel */
0x0A, 0x14, 0x08, /* HID usage sensor event poll response sel */
0x0A, 0x15, 0x08, /* HID usage sensor event change sensitivity sel */
0X81, 0x00, /* HID Input (Data_Arr_Abs) */
0xC0, /* HID end collection */
0x0A, 0x53, 0x04, /* HID usage sensor data motion Acceleration X axis */
0x17, 0x00, 0x00, 0x01, 0x80, /* HID logical Min_32 */
0x27, 0xFF, 0xff, 0XFF, 0XFF, /* HID logical Max_32 */
0x75, 32, /* HID report size(32) */
0x95, 1, /* HID report count (1) */
0x55, 0x0E, /* HID unit exponent(0x0E) */
0X81, 0x02, /* HID Input (Data_Arr_Abs) */
0x0A, 0x54, 0x04, /* HID usage sensor data motion Acceleration Y axis */
0x17, 0X00, 0X00, 0x01, 0x80, /* HID logical Min_32 */
0x27, 0xFF, 0xFF, 0XFF, 0XFF, /* HID logical Max_32 */
0x75, 32, /* HID report size(32) */
0x95, 1, /* HID report count (1) */
0x55, 0x0E, /* HID unit exponent(0x0E) */
0X81, 0x02, /* HID Input (Data_Arr_Abs) */
0x0A, 0x55, 0x04, /* HID usage sensor data motion Acceleration Z axis */
0x17, 0X00, 0X00, 0x01, 0x80, /* HID logical Min_32 */
0x27, 0XFF, 0XFF, 0xFF, 0x7F, /* HID logical Max_32 */
0x75, 32, /* HID report size(32) */
0x95, 1, /* HID report count (1) */
0x55, 0x0E, /* HID unit exponent(0x0E) */
0X81, 0x02, /* HID Input (Data_Arr_Abs) */
0x0A, 0x51, 0x04, /* HID usage sensor data motion state */
0x15, 0, /* HID logical Min_8(0) False = Still*/
0x25, 1, /* HID logical Min_8(1) True = In motion */
0x75, 8, /* HID report size(8) */
0x95, 1, /* HID report count (1) */
0X81, 0x02, /* HID Input (Data_Arr_Abs) */
0xC0 /* HID end collection */
};
static const u8 gyro3_report_descriptor[] = {
0x05, 0x20, /* Usage page */
0x09, 0x76, /* Motion type Gyro3D */
0xA1, 0x00, /* HID Collection (Physical) */
0x85, 2, /* HID Report ID */
0x05, 0x20, /* HID usage page sensor */
0x0A, 0x09, 0x03, /* Sensor property and sensor connection type */
0x15, 0, /* HID logical MIN_8(0) */
0x25, 2, /* HID logical MAX_8(2) */
0x75, 8, /* HID report size(8) */
0x95, 1, /* HID report count(1) */
0xA1, 0x02, /* HID collection (logical) */
0x0A, 0x30, 0x08, /* Sensor property connection type intergated sel */
0x0A, 0x31, 0x08, /* Sensor property connection type attached sel */
0x0A, 0x32, 0x08, /* Sensor property connection type external sel */
0xB1, 0x00, /* HID feature (Data_Arr_Abs) */
0xC0, /* HID end collection */
0x0A, 0x16, 0x03, /* HID usage sensor property reporting state */
0x15, 0, /* HID logical Min_8(0) */
0x25, 5, /* HID logical Max_8(5) */
0x75, 8, /* HID report size(8) */
0x95, 1, /* HID report count(1) */
0xA1, 0x02, /* HID collection(logical) */
0x0A, 0x40, 0x08, /* Sensor reporting state no events sel */
0x0A, 0x41, 0x08, /* Sensor reporting state all events sel */
0x0A, 0x42, 0x08, /* Sensor reporting state threshold events sel */
0x0A, 0x43, 0x08, /* Sensor reporting state no events wake sel */
0x0A, 0x44, 0x08, /* Sensor reporting state all events wake sel */
0x0A, 0x45, 0x08, /* Sensor reporting state threshold events wake sel */
0xB1, 0x00, /* HID feature (Data_Arr_Abs) */
0xC0, /* HID end collection */
0x0A, 0x19, 0x03, /* HID usage sensor property power state */
0x15, 0, /* HID logical Min_8(0) */
0x25, 5, /* HID logical Max_8(5) */
0x75, 8, /* HID report size(8) */
0x95, 1, /* HID report count(1) */
0xA1, 0x02, /* HID collection(logical) */
0x0A, 0x50, 0x08, /* Sensor power state undefined sel */
0x0A, 0x51, 0x08, /* Sensor power state D0 full power sel */
0x0A, 0x52, 0x08, /* Sensor power state D1 low power sel */
0x0A, 0x53, 0x08, /* Sensor power state D2 standby with wake sel */
0x0A, 0x54, 0x08, /* Sensor power state D3 sleep with wake sel */
0x0A, 0x55, 0x08, /* Sensor power state D4 power off sel */
0xB1, 0x00, /* HID feature (Data_Arr_Abs) */
0xC0, /* HID end collection */
0x0A, 0x01, 0x02, /* HID usage sensor state */
0x15, 0, /* HID logical Min_8(0) */
0x25, 6, /* HID logical Max_8(6) */
0x75, 8, /* HID report size(8) */
0x95, 1, /* HID report count(1) */
0xA1, 0x02, /* HID collection(logical) */
0x0A, 0x00, 0x08, /* HID usage sensor state unknown sel */
0x0A, 0x01, 0x08, /* HID usage sensor state ready sel */
0x0A, 0x02, 0x08, /* HID usage sensor state not available sel */
0x0A, 0x03, 0x08, /* HID usage sensor state no data sel */
0x0A, 0x04, 0x08, /* HID usage sensor state initializing sel */
0x0A, 0x05, 0x08, /* HID usage sensor state access denied sel */
0x0A, 0x06, 0x08, /* HID usage sensor state error sel */
0xB1, 0x00, /* HID feature (Data_Arr_Abs) */
0xC0, /* HID end collection */
0x0A, 0x0E, 0x03, /* HID usage sensor property report interval */
0x15, 0, /* HID logical Min_8(0) */
0x27, 0xFF, 0xFF, 0xFF, 0xFF, /* HID logical Max_32 */
0x75, 32, /* HID report size(32) */
0x95, 1, /* HID report count(1) */
0x55, 0, /* HID unit exponent(0) */
0xB1, 0x02, /* HID feature (Data_Arr_Abs) */
0x0A, 0x56, 0x14, /* Angular velocity and mod change sensitivity ABS)*/
0x15, 0, /* HID logical Min_8(0) */
0x26, 0xFF, 0xFF, /* HID logical Max_16(0xFF,0xFF) */
0x75, 16, /* HID report size(16) */
0x95, 1, /* HID report count(1) */
0x55, 0x0E, /* HID unit exponent(0x0E) */
0xB1, 0x02, /* HID feature (Data_Arr_Abs) */
0x0A, 0x56, 0x24, /* Sensor data (motion angular velocity and mod max) */
0x16, 0x01, 0x80, /* HID logical Min_16(0x01,0x80) */
0x26, 0xFF, 0x7F, /* HID logical Max_16(0xFF,0x7F) */
0x75, 16, /* HID report size(16) */
0x95, 1, /* HID report count(1) */
0x55, 0x0E, /* HID unit exponent(0x0E) */
0xB1, 0x02, /* HID feature (Data_Arr_Abs) */
0x0A, 0x56, 0x34, /* HID usage sensor data (motion accel and mod min) */
0x16, 0x01, 0x80, /* HID logical Min_16(0x01,0x80) */
0x26, 0xFF, 0x7F, /* HID logical Max_16(0xFF,0x7F) */
0x75, 16, /* HID report size(16) */
0x95, 1, /* HID report count(1) */
0x55, 0x0E, /* HID unit exponent(0x0E) */
0xB1, 0x02, /* HID feature (Data_Arr_Abs) */
//Input reports(transmit)
0x05, 0x20, /* HID usage page sensors */
0x0A, 0x01, 0x02, /* HID usage sensor state */
0x15, 0, /* HID logical Min_8(0) */
0x25, 6, /* HID logical Max_8(6) */
0x75, 8, /* HID report size(8) */
0x95, 1, /* HID report count (1) */
0xA1, 0x02, /* HID end collection (logical) */
0x0A, 0x00, 0x08, /* HID usage sensor state unknown sel */
0x0A, 0x01, 0x08, /* HID usage sensor state ready sel */
0x0A, 0x02, 0x08, /* HID usage sensor state not available sel */
0x0A, 0x03, 0x08, /* HID usage sensor state no data sel */
0x0A, 0x04, 0x08, /* HID usage sensor state initializing sel */
0x0A, 0x05, 0x08, /* HID usage sensor state access denied sel */
0x0A, 0x06, 0x08, /* HID usage sensor state error sel */
0X81, 0x00, /* HID Input (Data_Arr_Abs) */
0xC0, /* HID end collection */
0x0A, 0x02, 0x02, /* HID usage sensor event */
0x15, 0, /* HID logical Min_8(0) */
0x25, 5, /* HID logical Max_8(5) */
0x75, 8, /* HID report size(8) */
0x95, 1, /* HID report count (1) */
0xA1, 0x02, /* HID end collection (logical) */
0x0A, 0x10, 0x08, /* HID usage sensor event unknown sel */
0x0A, 0x11, 0x08, /* HID usage sensor event state changed sel */
0x0A, 0x12, 0x08, /* HID usage sensor event property changed sel */
0x0A, 0x13, 0x08, /* HID usage sensor event data updated sel */
0x0A, 0x14, 0x08, /* HID usage sensor event poll response sel */
0x0A, 0x15, 0x08, /* HID usage sensor event change sensitivity sel */
0X81, 0x00, /* HID Input (Data_Arr_Abs) */
0xC0, /* HID end collection */
0x0A, 0x57, 0x04, /* Sensor data motion Angular velocity X axis */
0x17, 0x00, 0x00, 0x01, 0x80, /* HID logical Min_32 */
0x27, 0xFF, 0xFF, 0xFF, 0x7F, /* HID logical Max_32 */
0x75, 32, /* HID report size(32) */
0x95, 1, /* HID report count (1) */
0x55, 0x0E, /* HID unit exponent(0x0E) */
0X81, 0x02, /* HID Input (Data_Arr_Abs) */
0x0A, 0x58, 0x04, /* Sensor data motion Angular velocity Y axis */
0x17, 0x00, 0x00, 0x01, 0x80, /* HID logical Min_32 */
0x27, 0xFF, 0xFF, 0xFF, 0x7F, /* HID logical Max_32 */
0x75, 32, /* HID report size(32) */
0x95, 1, /* HID report count (1) */
0x55, 0x0E, /* HID unit exponent(0x0E) */
0X81, 0x02, /* HID Input (Data_Arr_Abs) */
0x0A, 0x59, 0x04, /* Sensor data motion Angular velocity Z axis */
0x17, 0x00, 0x00, 0x01, 0x80, /* HID logical Min_32 */
0x27, 0xFF, 0xFF, 0xFF, 0x7F, /* HID logical Max_32 */
0x75, 32, /* HID report size(32) */
0x95, 1, /* HID report count (1) */
0x55, 0x0E, /* HID unit exponent(0x0E) */
0X81, 0x02, /* HID Input (Data_Arr_Abs) */
0xC0, /* HID end collection */
};
static const u8 comp3_report_descriptor[] = {
0x05, 0x20, /* Usage page */
0x09, 0x83, /* Motion type Orientation compass 3D */
0xA1, 0x00, /* HID Collection (Physical) */
0x85, 3, /* HID Report ID */
0x05, 0x20, /* HID usage page sensor */
0x0A, 0x09, 0x03, /* Sensor property and sensor connection type */
0x15, 0, /* HID logical MIN_8(0) */
0x25, 2, /* HID logical MAX_8(2) */
0x75, 8, /* HID report size(8) */
0x95, 1, /* HID report count(1) */
0xA1, 0x02, /* HID collection (logical) */
0x0A, 0x30, 0x08, /* Sensor property connection type intergated sel */
0x0A, 0x31, 0x08, /* Sensor property connection type attached sel */
0x0A, 0x32, 0x08, /* Sensor property connection type external sel */
0xB1, 0x00, /* HID feature (Data_Arr_Abs) */
0xC0, /* HID end collection */
0x0A, 0x16, 0x03, /* HID usage sensor property reporting state */
0x15, 0, /* HID logical Min_8(0) */
0x25, 5, /* HID logical Max_8(5) */
0x75, 8, /* HID report size(8) */
0x95, 1, /* HID report count(1) */
0xA1, 0x02, /* HID collection(logical) */
0x0A, 0x40, 0x08, /* Sensor reporting state no events sel */
0x0A, 0x41, 0x08, /* Sensor reporting state all events sel */
0x0A, 0x42, 0x08, /* Sensor reporting state threshold events sel */
0x0A, 0x43, 0x08, /* Sensor reporting state no events wake sel */
0x0A, 0x44, 0x08, /* Sensor reporting state all events wake sel */
0x0A, 0x45, 0x08, /* Sensor reporting state threshold events wake sel */
0xB1, 0x00, /* HID feature (Data_Arr_Abs) */
0xC0, /* HID end collection */
0x0A, 0x19, 0x03, /* HID usage sensor property power state */
0x15, 0, /* HID logical Min_8(0) */
0x25, 5, /* HID logical Max_8(5) */
0x75, 8, /* HID report size(8) */
0x95, 1, /* HID report count(1) */
0xA1, 0x02, /* HID collection(logical) */
0x0A, 0x50, 0x08, /* Sensor power state undefined sel */
0x0A, 0x51, 0x08, /* Sensor power state D0 full power sel */
0x0A, 0x52, 0x08, /* Sensor power state D1 low power sel */
0x0A, 0x53, 0x08, /* Sensor power state D2 standby with wake sel */
0x0A, 0x54, 0x08, /* Sensor power state D3 sleep with wake sel */
0x0A, 0x55, 0x08, /* Sensor power state D4 power off sel */
0xB1, 0x00, /* HID feature (Data_Arr_Abs) */
0xC0, /* HID end collection */
0x0A, 0x01, 0x02, /* HID usage sensor state */
0x15, 0, /* HID logical Min_8(0) */
0x25, 6, /* HID logical Max_8(6) */
0x75, 8, /* HID report size(8) */
0x95, 1, /* HID report count(1) */
0xA1, 0x02, /* HID collection(logical) */
0x0A, 0x00, 0x08, /* HID usage sensor state unknown sel */
0x0A, 0x01, 0x08, /* HID usage sensor state ready sel */
0x0A, 0x02, 0x08, /* HID usage sensor state not available sel */
0x0A, 0x03, 0x08, /* HID usage sensor state no data sel */
0x0A, 0x04, 0x08, /* HID usage sensor state initializing sel */
0x0A, 0x05, 0x08, /* HID usage sensor state access denied sel */
0x0A, 0x06, 0x08, /* HID usage sensor state error sel */
0xB1, 0x00, /* HID feature (Data_Arr_Abs) */
0xC0, /* HID end collection */
0x0A, 0x0E, 0x03, /* HID usage sensor property report interval */
0x15, 0, /* HID logical Min_8(0) */
0x27, 0xFF, 0xFF, 0xFF, 0xFF, /* HID logical Max_32 */
0x75, 32, /* HID report size(32) */
0x95, 1, /* HID report count(1) */
0x55, 0, /* HID unit exponent(0) */
0xB1, 0x02, /* HID feature (Data_Arr_Abs) */
0x0A, 0x71, 0x14, /* Orientation and mod change sensitivity ABS)*/
0x15, 0, /* HID logical Min_8(0) */
0x26, 0xFF, 0xFF, /* HID logical Max_16(0xFF,0xFF) */
0x75, 16, /* HID report size(16) */
0x95, 1, /* HID report count(1) */
0x55, 0x0E, /* HID unit exponent(0x0E) */
0xB1, 0x02, /* HID feature (Data_Arr_Abs) */
0x0A, 0x71, 0x24, /* Sensor data (motion orientation and mod max) */
0x16, 0x01, 0x80, /* HID logical Min_16(0x01,0x80) */
0x26, 0xFF, 0x7F, /* HID logical Max_16(0xFF,0x7F) */
0x75, 16, /* HID report size(16) */
0x95, 1, /* HID report count(1) */
0x55, 0x0F, /* HID unit exponent(0x0F) */
0xB1, 0x02, /* HID feature (Data_Arr_Abs) */
0x0A, 0x71, 0x34, /* Sensor data (motion orientation and mod min) */
0x16, 0x01, 0x80, /* HID logical Min_16(0x01,0x80) */
0x26, 0xFF, 0x7F, /* HID logical Max_16(0xFF,0x7F) */
0x75, 16, /* HID report size(16) */
0x95, 1, /* HID report count(1) */
0x55, 0x0F, /* HID unit exponent(0x0F) */
0xB1, 0x02, /* HID feature (Data_Arr_Abs) */
0x0A, 0x84, 0x14, /* Maganetic flux and change sensitivity ABS) */
0x15, 0, /* HID logical Min_8(0) */
0x26, 0xFF, 0xFF, /* HID logical Max_16(0xFF,0xFF) */
0x75, 16, /* HID report size(16) */
0x95, 1, /* HID report count(1) */
0x55, 0x0E, /* HID unit exponent(0x0E) */
0xB1, 0x02, /* HID feature (Data_Arr_Abs) */
0x0A, 0x84, 0x24, /* Maganetic flux and mod change sensitivity Max) */
0x16, 0x01, 0x80, /* HID logical Min_16(0x01,0x80) */
0x26, 0xFF, 0x7F, /* HID logical Max_16(0xFF,0x7F) */
0x75, 16, /* HID report size(16) */
0x95, 1, /* HID report count(1) */
0x55, 0x0F, /* HID unit exponent(0x0F) */
0xB1, 0x02, /* HID feature (Data_Arr_Abs) */
0x0A, 0x84, 0x34, /* Maganetic flux and mod change sensitivity Min */
0x16, 0x01, 0x80, /* HID logical Min_16(0x01,0x80) */
0x26, 0xFF, 0x7F, /* HID logical Max_16(0xFF,0x7F) */
0x75, 16, /* HID report size(16) */
0x95, 1, /* HID report count(1) */
0x55, 0x0F, /* HID unit exponent(0x0F) */
0xB1, 0x02, /* HID feature (Data_Arr_Abs) */
//Input reports(transmit)
0x05, 0x20, /* HID usage page sensors */
0x0A, 0x01, 0x02, /* HID usage sensor state */
0x15, 0, /* HID logical Min_8(0) */
0x25, 6, /* HID logical Max_8(6) */
0x75, 8, /* HID report size(8) */
0x95, 1, /* HID report count (1) */
0xA1, 0x02, /* HID end collection (logical) */
0x0A, 0x00, 0x08, /* HID usage sensor state unknown sel */
0x0A, 0x01, 0x08, /* HID usage sensor state ready sel */
0x0A, 0x02, 0x08, /* HID usage sensor state not available sel */
0x0A, 0x03, 0x08, /* HID usage sensor state no data sel */
0x0A, 0x04, 0x08, /* HID usage sensor state initializing sel */
0x0A, 0x05, 0x08, /* HID usage sensor state access denied sel */
0x0A, 0x06, 0x08, /* HID usage sensor state error sel */
0X81, 0x00, /* HID Input (Data_Arr_Abs) */
0xC0, /* HID end collection */
0x0A, 0x02, 0x02, /* HID usage sensor event */
0x15, 0, /* HID logical Min_8(0) */
0x25, 5, /* HID logical Max_8(5) */
0x75, 8, /* HID report size(8) */
0x95, 1, /* HID report count (1) */
0xA1, 0x02, /* HID end collection (logical) */
0x0A, 0x10, 0x08, /* HID usage sensor event unknown sel */
0x0A, 0x11, 0x08, /* HID usage sensor event state changed sel */
0x0A, 0x12, 0x08, /* HID usage sensor event property changed sel */
0x0A, 0x13, 0x08, /* HID usage sensor event data updated sel */
0x0A, 0x14, 0x08, /* HID usage sensor event poll response sel */
0x0A, 0x15, 0x08, /* HID usage sensor event change sensitivity sel */
0X81, 0x00, /* HID Input (Data_Arr_Abs) */
0xC0, /* HID end collection */
0x0A, 0x85, 0x04, /* Sensor data orientation magnetic flux X axis */
0x17, 0x00, 0x00, 0x01, 0x80, /* HID logical Min_32 */
0x27, 0xFF, 0xFF, 0xFF, 0x7F, /* HID logical Max_32 */
0x75, 32, /* HID report size(32) */
0x95, 1, /* HID report count (1) */
0x55, 0x0D, /* HID unit exponent(0x0D) */
0X81, 0x02, /* HID Input (Data_Arr_Abs) */
0x0A, 0x86, 0x04, /* Sensor data orientation magnetic flux Y axis */
0x17, 0x00, 0x00, 0x01, 0x80, /* HID logical Min_32 */
0x27, 0xFF, 0xFF, 0xFF, 0x7F, /* HID logical Max_32 */
0x75, 32, /* HID report size(32) */
0x95, 1, /* HID report count (1) */
0x55, 0x0D, /* HID unit exponent(0x0D) */
0X81, 0x02, /* HID Input (Data_Arr_Abs) */
0x0A, 0x87, 0x04, /* Sensor data orientation magnetic flux Z axis */
0x17, 0x00, 0x00, 0x01, 0x80, /* HID logical Min_32 */
0x27, 0xFF, 0xFF, 0xFF, 0x7F, /* HID logical Max_32 */
0x75, 32, /* HID report size(32) */
0x95, 1, /* HID report count (1) */
0x55, 0x0D, /* HID unit exponent(0x0D) */
0X81, 0x02, /* HID Input (Data_Arr_Abs) */
0x0A, 0x88, 0x04, /* Sensor data orientation magnetometer accuracy */
0x17, 0x00, 0x00, 0x01, 0x80, /* HID logical Min_32 */
0x27, 0xFF, 0xFF, 0xFF, 0x7F, /* HID logical Max_32 */
0x75, 32, /* HID report size(32) */
0x95, 1, /* HID report count (1) */
0X81, 0x02, /* HID Input (Data_Arr_Abs) */
0xC0 /* HID end collection */
};
static const u8 als_report_descriptor[] = {
0x05, 0x20, /* HID usage page sensor */
0x09, 0x41, /* HID usage sensor type Ambientlight */
0xA1, 0x00, /* HID Collection (Physical) */
//feature reports(xmit/receive)//
0x85, 4, /* HID Report ID */
0x05, 0x20, /* HID usage page sensor */
0x0A, 0x09, 0x03, /* Sensor property and sensor connection type */
0x15, 0, /* HID logical MIN_8(0) */
0x25, 2, /* HID logical MAX_8(2) */
0x75, 8, /* HID report size(8) */
0x95, 1, /* HID report count(1) */
0xA1, 0x02, /* HID collection (logical) */
0x0A, 0x30, 0x08, /* Sensor property connection type intergated sel */
0x0A, 0x31, 0x08, /* Sensor property connection type attached sel */
0x0A, 0x32, 0x08, /* Sensor property connection type external sel */
0xB1, 0x00, /* HID feature (Data_Arr_Abs) */
0xC0, /* HID end collection */
0x0A, 0x16, 0x03, /* HID usage sensor property reporting state */
0x15, 0, /* HID logical Min_8(0) */
0x25, 5, /* HID logical Max_8(5) */
0x75, 8, /* HID report size(8) */
0x95, 1, /* HID report count(1) */
0xA1, 0x02, /* HID collection(logical) */
0x0A, 0x40, 0x08, /* Sensor reporting state no events sel */
0x0A, 0x41, 0x08, /* Sensor reporting state all events sel */
0x0A, 0x42, 0x08, /* Sensor reporting state threshold events sel */
0x0A, 0x43, 0x08, /* Sensor reporting state no events wake sel */
0x0A, 0x44, 0x08, /* Sensor reporting state all events wake sel */
0x0A, 0x45, 0x08, /* Sensor reporting state threshold events wake sel */
0xB1, 0x00, /* HID feature (Data_Arr_Abs) */
0xC0, /* HID end collection */
0x0A, 0x19, 0x03, /* HID usage sensor property power state */
0x15, 0, /* HID logical Min_8(0) */
0x25, 5, /* HID logical Max_8(5) */
0x75, 8, /* HID report size(8) */
0x95, 1, /* HID report count(1) */
0xA1, 0x02, /* HID collection(logical) */
0x0A, 0x50, 0x08, /* Sensor power state undefined sel */
0x0A, 0x51, 0x08, /* Sensor power state D0 full power sel */
0x0A, 0x52, 0x08, /* Sensor power state D1 low power sel */
0x0A, 0x53, 0x08, /* Sensor power state D2 standby with wake sel */
0x0A, 0x54, 0x08, /* Sensor power state D3 sleep with wake sel */
0x0A, 0x55, 0x08, /* Sensor power state D4 power off sel */
0xB1, 0x00, /* HID feature (Data_Arr_Abs) */
0xC0, /* HID end collection */
0x0A, 0x01, 0x02, /* HID usage sensor state */
0x15, 0, /* HID logical Min_8(0) */
0x25, 6, /* HID logical Max_8(6) */
0x75, 8, /* HID report size(8) */
0x95, 1, /* HID report count(1) */
0xA1, 0x02, /* HID collection(logical) */
0x0A, 0x00, 0x08, /* HID usage sensor state unknown sel */
0x0A, 0x01, 0x08, /* HID usage sensor state ready sel */
0x0A, 0x02, 0x08, /* HID usage sensor state not available sel */
0x0A, 0x03, 0x08, /* HID usage sensor state no data sel */
0x0A, 0x04, 0x08, /* HID usage sensor state initializing sel */
0x0A, 0x05, 0x08, /* HID usage sensor state access denied sel */
0x0A, 0x06, 0x08, /* HID usage sensor state error sel */
0xB1, 0x00, /* HID feature (Data_Arr_Abs) */
0xC0, /* HID end collection */
0x0A, 0x0E, 0x03, /* HID usage sensor property report interval */
0x15, 0, /* HID logical Min_8(0) */
0x27, 0xFF, 0xFF, 0xFF, 0xFF, /* HID logical Max_32 */
0x75, 32, /* HID report size(32) */
0x95, 1, /* HID report count(1) */
0x55, 0, /* HID unit exponent(0) */
0xB1, 0x02, /* HID feature (Data_Arr_Abs) */
0x0A, 0xD1, 0xE4, /* Light illuminance and sensitivity REL PCT) */
0x15, 0, /* HID logical Min_8(0) */
0x26, 0x10, 0x27, /* HID logical Max_16(0x10,0x27) */
0x75, 16, /* HID report size(16) */
0x95, 1, /* HID report count(1) */
0x55, 0x0E, /* HID unit exponent(0x0E) */
0xB1, 0x02, /* HID feature (Data_Arr_Abs) */
0x0A, 0xD1, 0x24, /* Sensor data (Light illuminance and mod max) */
0x15, 0, /* HID logical Min_8(0) */
0x26, 0xFF, 0xFF, /* HID logical Max_16(0xFF,0xFF) */
0x75, 16, /* HID report size(16) */
0x95, 1, /* HID report count(1) */
0x55, 0x0F, /* HID unit exponent(0x0F) */
0xB1, 0x02, /* HID feature (Data_Arr_Abs) */
0x0A, 0xD1, 0x34, /* Sensor data (Light illuminance and mod min) */
0x15, 0, /* HID logical Min_8(0) */
0x26, 0xFF, 0xFF, /* HID logical Max_16(0xFF,0xFF) */
0x75, 16, /* HID report size(16) */
0x95, 1, /* HID report count(1) */
0x55, 0x0F, /* HID unit exponent(0x0F) */
0xB1, 0x02, /* HID feature (Data_Arr_Abs) */
//Input reports (transmit)
0x05, 0x20, /* HID usage page sensors */
0x0A, 0x01, 0x02, /* HID usage sensor state */
0x15, 0, /* HID logical Min_8(0) */
0x25, 6, /* HID logical Max_8(6) */
0x75, 8, /* HID report size(8) */
0x95, 1, /* HID report count (1) */
0xA1, 0x02, /* HID end collection (logical) */
0x0A, 0x00, 0x08, /* HID usage sensor state unknown sel */
0x0A, 0x01, 0x08, /* HID usage sensor state ready sel */
0x0A, 0x02, 0x08, /* HID usage sensor state not available sel */
0x0A, 0x03, 0x08, /* HID usage sensor state no data sel */
0x0A, 0x04, 0x08, /* HID usage sensor state initializing sel */
0x0A, 0x05, 0x08, /* HID usage sensor state access denied sel */
0x0A, 0x06, 0x08, /* HID usage sensor state error sel */
0X81, 0x00, /* HID Input (Data_Arr_Abs) */
0xC0, /* HID end collection */
0x0A, 0x02, 0x02, /* HID usage sensor event */
0x15, 0, /* HID logical Min_8(0) */
0x25, 5, /* HID logical Max_8(5) */
0x75, 8, /* HID report size(8) */
0x95, 1, /* HID report count (1) */
0xA1, 0x02, /* HID end collection (logical) */
0x0A, 0x10, 0x08, /* HID usage sensor event unknown sel */
0x0A, 0x11, 0x08, /* HID usage sensor event state changed sel */
0x0A, 0x12, 0x08, /* HID usage sensor event property changed sel */
0x0A, 0x13, 0x08, /* HID usage sensor event data updated sel */
0x0A, 0x14, 0x08, /* HID usage sensor event poll response sel */
0x0A, 0x15, 0x08, /* HID usage sensor event change sensitivity sel */
0X81, 0x00, /* HID Input (Data_Arr_Abs) */
0xC0, /* HID end collection */
0x0A, 0xD1, 0x04, /* HID usage sensor data light illuminance */
0x17, 0x00, 0x00, 0x01, 0x80, /* HID logical Min_32 */
0x27, 0xFF, 0xFF, 0xFF, 0x7F, /* HID logical Max_32 */
0x55, 0x0F, /* HID unit exponent(0x0F) */
0x75, 32, /* HID report size(32) */
0x95, 1, /* HID report count (1) */
0X81, 0x02, /* HID Input (Data_Arr_Abs) */
0x0A, 0xD2, 0x04, /* HID usage sensor data light temperature */
0x17, 0x00, 0x00, 0x01, 0x80, /* HID logical Min_32 */
0x27, 0xFF, 0xFF, 0xFF, 0x7F, /* HID logical Max_32 */
0x55, 0x0, /* HID unit exponent(0x0) */
0x75, 32, /* HID report size(32) */
0x95, 1, /* HID report count (1) */
0X81, 0x02, /* HID Input (Data_Arr_Abs) */
0x0A, 0xD4, 0x04, /* HID usage sensor data light chromaticity_x */
0x17, 0x00, 0x00, 0x01, 0x80, /* HID logical Min_32 */
0x27, 0xFF, 0xFF, 0xFF, 0x7F, /* HID logical Max_32 */
0x55, 0x0, /* HID unit exponent(0x0) */
0x75, 32, /* HID report size(32) */
0x95, 1, /* HID report count(1) */
0X81, 0x02, /* HID Input (Data_Var_Abs) */
0x0A, 0xD5, 0x04, /* HID usage sensor data light chromaticity_y */
0x17, 0x00, 0x00, 0x01, 0x80, /* HID logical Min_32 */
0x27, 0xFF, 0xFF, 0xFF, 0x7F, /* HID logical Max_32 */
0x55, 0x0, /* HID unit exponent(0x0) */
0x75, 32, /* HID report size(32) */
0x95, 1, /* HID report count (1) */
0X81, 0x02, /* HID Input (Data_Var_Abs) */
0xC0 /* HID end collection */
};
/* BIOMETRIC PRESENCE*/
static const u8 hpd_report_descriptor[] = {
0x05, 0x20, /* Usage page */
0x09, 0x11, /* BIOMETRIC PRESENCE */
0xA1, 0x00, /* HID Collection (Physical) */
//feature reports(xmit/receive)
0x85, 5, /* HID Report ID */
0x05, 0x20, /* HID usage page sensor */
0x0A, 0x09, 0x03, /* Sensor property and sensor connection type */
0x15, 0, /* HID logical MIN_8(0) */
0x25, 2, /* HID logical MAX_8(2) */
0x75, 8, /* HID report size(8) */
0x95, 1, /* HID report count(1) */
0xA1, 0x02, /* HID collection (logical) */
0x0A, 0x30, 0x08, /* Sensor property connection type intergated sel*/
0x0A, 0x31, 0x08, /* Sensor property connection type attached sel */
0x0A, 0x32, 0x08, /* Sensor property connection type external sel */
0xB1, 0x00, /* HID feature (Data_Arr_Abs) */
0xC0, /* HID end collection */
0x0A, 0x16, 0x03, /* HID usage sensor property reporting state */
0x15, 0, /* HID logical Min_8(0) */
0x25, 5, /* HID logical Max_8(5) */
0x75, 8, /* HID report size(8) */
0x95, 1, /* HID report count(1) */
0xA1, 0x02, /* HID collection(logical) */
0x0A, 0x40, 0x08, /* Sensor property report state no events sel */
0x0A, 0x41, 0x08, /* Sensor property report state all events sel */
0x0A, 0x42, 0x08, /* Sensor property report state threshold events sel */
0x0A, 0x43, 0x08, /* Sensor property report state no events wake sel */
0x0A, 0x44, 0x08, /* Sensor property report state all events wake sel */
0x0A, 0x45, 0x08, /* Sensor property report state threshold events wake sel */
0xB1, 0x00, /* HID feature (Data_Arr_Abs) */
0xC0, /* HID end collection */
0x0A, 0x19, 0x03, /* HID usage sensor property power state */
0x15, 0, /* HID logical Min_8(0) */
0x25, 5, /* HID logical Max_8(5) */
0x75, 8, /* HID report size(8) */
0x95, 1, /* HID report count(1) */
0xA1, 0x02, /* HID collection(logical) */
0x0A, 0x50, 0x08, /* Sensor property power state undefined sel */
0x0A, 0x51, 0x08, /* Sensor property power state D0 full power sel */
0x0A, 0x52, 0x08, /* Sensor property power state D1 low power sel */
0x0A, 0x53, 0x08, /* Sensor property power state D2 standby with wake sel */
0x0A, 0x54, 0x08, /* Sensor property power state D3 sleep with wake sel */
0x0A, 0x55, 0x08, /* Sensor property power state D4 power off sel */
0xB1, 0x00, /* HID feature (Data_Arr_Abs) */
0xC0, /* HID end collection */
0x0A, 0x01, 0x02, /* HID usage sensor state */
0x15, 0, /* HID logical Min_8(0) */
0x25, 6, /* HID logical Max_8(6) */
0x75, 8, /* HID report size(8) */
0x95, 1, /* HID report count(1) */
0xA1, 0x02, /* HID collection(logical) */
0x0A, 0x00, 0x08, /* HID usage sensor state unknown sel */
0x0A, 0x01, 0x08, /* HID usage sensor state ready sel */
0x0A, 0x02, 0x08, /* HID usage sensor state not available sel */
0x0A, 0x03, 0x08, /* HID usage sensor state no data sel */
0x0A, 0x04, 0x08, /* HID usage sensor state initializing sel */
0x0A, 0x05, 0x08, /* HID usage sensor state access denied sel */
0x0A, 0x06, 0x08, /* HID usage sensor state error sel */
0xB1, 0x00, /* HID feature (Data_Arr_Abs) */
0xC0, /* HID end collection */
0x0A, 0x0E, 0x03, /* HID usage sensor property report interval */
0x15, 0, /* HID logical Min_8(0) */
0x27, 0xFF, 0xFF, 0xFF, 0xFF, /* HID logical Max_32 */
0x75, 32, /* HID report size(32) */
0x95, 1, /* HID report count(1) */
0x55, 0, /* HID unit exponent(0) */
0xB1, 0x02, /* HID feature (Data_Var_Abs) */
//input report (transmit)
0x05, 0x20, /* HID usage page sensors */
0x0A, 0x01, 0x02, /* HID usage sensor state */
0x15, 0, /* HID logical Min_8(0) */
0x25, 6, /* HID logical Max_8(6) */
0x75, 8, /* HID report size(8) */
0x95, 1, /* HID report count (1) */
0xA1, 0x02, /* HID end collection (logical) */
0x0A, 0x00, 0x08, /* HID usage sensor state unknown sel */
0x0A, 0x01, 0x08, /* HID usage sensor state ready sel */
0x0A, 0x02, 0x08, /* HID usage sensor state not available sel */
0x0A, 0x03, 0x08, /* HID usage sensor state no data sel */
0x0A, 0x04, 0x08, /* HID usage sensor state initializing sel */
0x0A, 0x05, 0x08, /* HID usage sensor state access denied sel */
0x0A, 0x06, 0x08, /* HID usage sensor state error sel */
0X81, 0x00, /* HID Input (Data_Arr_Abs) */
0xC0, /* HID end collection */
0x0A, 0x02, 0x02, /* HID usage sensor event */
0x15, 0, /* HID logical Min_8(0) */
0x25, 5, /* HID logical Max_8(5) */
0x75, 8, /* HID report size(8) */
0x95, 1, /* HID report count (1) */
0xA1, 0x02, /* HID end collection (logical) */
0x0A, 0x10, 0x08, /* HID usage sensor event unknown sel */
0x0A, 0x11, 0x08, /* HID usage sensor event state changed sel */
0x0A, 0x12, 0x08, /* HID usage sensor event property changed sel */
0x0A, 0x13, 0x08, /* HID usage sensor event data updated sel */
0x0A, 0x14, 0x08, /* HID usage sensor event poll response sel */
0x0A, 0x15, 0x08, /* HID usage sensor event change sensitivity sel */
0X81, 0x00, /* HID Input (Data_Arr_Abs) */
0xC0, /* HID end collection */
0x0A, 0xB1, 0x04, /* HID usage sensor data BIOMETRIC HUMAN PRESENCE */
0x15, 0, /* HID logical Min_8(0) */
0x25, 1, /* HID logical Max_8(1) */
0x75, 8, /* HID report size(8) */
0x95, 1, /* HID report count (1) */
0X81, 0x02, /* HID Input (Data_Var_Abs) */
0xC0 /* HID end collection */
};
#endif