text: /* SPDX-License-Identifier: GPL-2.0-or-later */
  /*
   * HID  descriptor stuructures
   * Copyright 2020 Advanced Micro Devices, Inc.
   * Authors: Nehal Bakulchandra Shah <Nehal-bakulchandra.shah@amd.com>
   *	    Sandeep Singh <Sandeep.singh@amd.com>
   */
  
  #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 */
  };
  
  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 */
  };
  
  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 */
  };
  
  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) */
  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
  