Hi Srinivas, On 5/17/2019 11:09 PM, Srinivas Pandruvada wrote: > [CAUTION: External Email] > > On Wed, 2019-05-15 at 16:28 +0000, Shah, Nehal-bakulchandra wrote: >> Hi All, >> >> >> I am working on sensor driver for AMD platform and in our platform, >> firmware doesn't give data in HID format. So i am writing interface >> driver which makes >> firmware data into HID Report format.Now i have taken reference from >> HID Usage document and i have created sample descriptor like this for >> accel 3d. >> >> static const u8 HID_Sensor_ReportDesc_acc[]= >> { >> HID_USAGE_PAGE_SENSOR, >> HID_USAGE_SENSOR_TYPE_MOTION_ACCELEROMETER_3D, >> HID_COLLECTION(Physical), >> >> //feature reports (xmit/receive) >> HID_REPORT_ID(1), >> HID_USAGE_PAGE_SENSOR, >> HID_USAGE_SENSOR_PROPERTY_SENSOR_CONNECTION_TYPE, // NAry >> HID_LOGICAL_MIN_8(0), >> HID_LOGICAL_MAX_8(2), >> HID_REPORT_SIZE(8), >> HID_REPORT_COUNT(1), >> HID_COLLECTION(Logical), >> HID_USAGE_SENSOR_PROPERTY_CONNECTION_TYPE_PC_INTEGRATED_SEL, >> HID_USAGE_SENSOR_PROPERTY_CONNECTION_TYPE_PC_ATTACHED_SEL, >> HID_USAGE_SENSOR_PROPERTY_CONNECTION_TYPE_PC_EXTERNAL_SEL, >> HID_FEATURE(Data_Arr_Abs), >> HID_END_COLLECTION, >> HID_USAGE_SENSOR_PROPERTY_REPORTING_STATE, >> HID_LOGICAL_MIN_8(0), >> HID_LOGICAL_MAX_8(5), >> HID_REPORT_SIZE(8), >> HID_REPORT_COUNT(1), >> HID_COLLECTION(Logical), >> HID_USAGE_SENSOR_PROPERTY_REPORTING_STATE_NO_EVENTS_SEL, >> HID_USAGE_SENSOR_PROPERTY_REPORTING_STATE_ALL_EVENTS_SEL, >> HID_USAGE_SENSOR_PROPERTY_REPORTING_STATE_THRESHOLD_EVENTS_SEL, >> HID_USAGE_SENSOR_PROPERTY_REPORTING_STATE_NO_EVENTS_WAKE_SEL, >> HID_USAGE_SENSOR_PROPERTY_REPORTING_STATE_ALL_EVENTS_WAKE_SEL, >> HID_USAGE_SENSOR_PROPERTY_REPORTING_STATE_THRESHOLD_EVENTS_WAKE >> _SEL, >> HID_FEATURE(Data_Arr_Abs), >> HID_END_COLLECTION, >> HID_USAGE_SENSOR_PROPERTY_POWER_STATE, >> HID_LOGICAL_MIN_8(0), >> HID_LOGICAL_MAX_8(5), >> HID_REPORT_SIZE(8), >> HID_REPORT_COUNT(1), >> HID_COLLECTION(Logical), >> HID_USAGE_SENSOR_PROPERTY_POWER_STATE_UNDEFINED_SEL, >> HID_USAGE_SENSOR_PROPERTY_POWER_STATE_D0_FULL_POWER_SEL, >> HID_USAGE_SENSOR_PROPERTY_POWER_STATE_D1_LOW_POWER_SEL, >> HID_USAGE_SENSOR_PROPERTY_POWER_STATE_D2_STANDBY_WITH_WAKE_SEL, >> HID_USAGE_SENSOR_PROPERTY_POWER_STATE_D3_SLEEP_WITH_WAKE_SEL, >> HID_USAGE_SENSOR_PROPERTY_POWER_STATE_D4_POWER_OFF_SEL, >> HID_FEATURE(Data_Arr_Abs), >> HID_END_COLLECTION, >> HID_USAGE_SENSOR_STATE, >> HID_LOGICAL_MIN_8(0), >> HID_LOGICAL_MAX_8(6), >> HID_REPORT_SIZE(8), >> HID_REPORT_COUNT(1), >> HID_COLLECTION(Logical), >> HID_USAGE_SENSOR_STATE_UNKNOWN_SEL, >> HID_USAGE_SENSOR_STATE_READY_SEL, >> HID_USAGE_SENSOR_STATE_NOT_AVAILABLE_SEL, >> HID_USAGE_SENSOR_STATE_NO_DATA_SEL, >> HID_USAGE_SENSOR_STATE_INITIALIZING_SEL, >> HID_USAGE_SENSOR_STATE_ACCESS_DENIED_SEL, >> HID_USAGE_SENSOR_STATE_ERROR_SEL, >> HID_FEATURE(Data_Arr_Abs), >> HID_END_COLLECTION, >> HID_USAGE_SENSOR_PROPERTY_REPORT_INTERVAL, >> HID_LOGICAL_MIN_8(0), >> HID_LOGICAL_MAX_32(0xFF,0xFF,0xFF,0xFF), >> HID_REPORT_SIZE(32), >> HID_REPORT_COUNT(1), >> HID_UNIT_EXPONENT(0), >> HID_FEATURE(Data_Var_Abs), >> HID_USAGE_SENSOR_DATA(HID_USAGE_SENSOR_DATA_MOTION_ACCELERATION >> ,HID_USAGE_SENSOR_DATA_MOD_CHANGE_SENSITIVITY_ABS), >> HID_LOGICAL_MIN_8(0), >> HID_LOGICAL_MAX_16(0xFF,0xFF), >> HID_REPORT_SIZE(16), >> HID_REPORT_COUNT(1), >> HID_UNIT_EXPONENT(0x0E), // scale default unit "G" to provide >> 2 digits past the decimal point >> HID_FEATURE(Data_Var_Abs), >> HID_USAGE_SENSOR_DATA(HID_USAGE_SENSOR_DATA_MOTION_ACCELERATION >> ,HID_USAGE_SENSOR_DATA_MOD_MAX), >> HID_LOGICAL_MIN_16(0x01,0x80), // LOGICAL_MINIMUM (-32767) >> HID_LOGICAL_MAX_16(0xFF,0x7F), // LOGICAL_MAXIMUM (32767) >> HID_REPORT_SIZE(16), >> HID_REPORT_COUNT(1), >> HID_UNIT_EXPONENT(0x0E), // scale default unit "G" to provide >> 2 digits past the decimal point >> HID_FEATURE(Data_Var_Abs), >> HID_USAGE_SENSOR_DATA(HID_USAGE_SENSOR_DATA_MOTION_ACCELERATION >> ,HID_USAGE_SENSOR_DATA_MOD_MIN), >> HID_LOGICAL_MIN_16(0x01,0x80), // LOGICAL_MINIMUM (-32767) >> HID_LOGICAL_MAX_16(0xFF,0x7F), // LOGICAL_MAXIMUM (32767) >> HID_REPORT_SIZE(16), >> HID_REPORT_COUNT(1), >> HID_UNIT_EXPONENT(0x0E), // scale default unit "G" to provide >> 2 digits past the decimal point >> HID_FEATURE(Data_Var_Abs), >> >> //input reports (transmit) >> HID_USAGE_PAGE_SENSOR, >> HID_USAGE_SENSOR_STATE, >> HID_LOGICAL_MIN_8(0), >> HID_LOGICAL_MAX_8(6), >> HID_REPORT_SIZE(8), >> HID_REPORT_COUNT(1), >> HID_COLLECTION(Logical), >> HID_USAGE_SENSOR_STATE_UNKNOWN_SEL, >> HID_USAGE_SENSOR_STATE_READY_SEL, >> HID_USAGE_SENSOR_STATE_NOT_AVAILABLE_SEL, >> HID_USAGE_SENSOR_STATE_NO_DATA_SEL, >> HID_USAGE_SENSOR_STATE_INITIALIZING_SEL, >> HID_USAGE_SENSOR_STATE_ACCESS_DENIED_SEL, >> HID_USAGE_SENSOR_STATE_ERROR_SEL, >> HID_INPUT(Data_Arr_Abs), >> HID_END_COLLECTION, >> HID_USAGE_SENSOR_EVENT, >> HID_LOGICAL_MIN_8(0), >> HID_LOGICAL_MAX_8(5), >> HID_REPORT_SIZE(8), >> HID_REPORT_COUNT(1), >> HID_COLLECTION(Logical), >> HID_USAGE_SENSOR_EVENT_UNKNOWN_SEL, >> HID_USAGE_SENSOR_EVENT_STATE_CHANGED_SEL, >> HID_USAGE_SENSOR_EVENT_PROPERTY_CHANGED_SEL, >> HID_USAGE_SENSOR_EVENT_DATA_UPDATED_SEL, >> HID_USAGE_SENSOR_EVENT_POLL_RESPONSE_SEL, >> HID_USAGE_SENSOR_EVENT_CHANGE_SENSITIVITY_SEL, >> HID_INPUT(Data_Arr_Abs), >> HID_END_COLLECTION, >> HID_USAGE_SENSOR_DATA_MOTION_ACCELERATION_X_AXIS, >> HID_LOGICAL_MIN_16(0x01,0x80), // LOGICAL_MINIMUM (-32767) >> HID_LOGICAL_MAX_16(0xFF,0x7F), // LOGICAL_MAXIMUM (32767) >> HID_REPORT_SIZE(16), >> HID_REPORT_COUNT(1), >> HID_UNIT_EXPONENT(0x0E), // scale default unit "G" to provide >> 2 digits past the decimal point >> HID_INPUT(Data_Var_Abs), >> HID_USAGE_SENSOR_DATA_MOTION_ACCELERATION_Y_AXIS, >> HID_LOGICAL_MIN_16(0x01,0x80), // LOGICAL_MINIMUM (-32767) >> HID_LOGICAL_MAX_16(0xFF,0x7F), // LOGICAL_MAXIMUM (32767) >> HID_REPORT_SIZE(16), >> HID_REPORT_COUNT(1), >> HID_UNIT_EXPONENT(0x0E), // scale default unit "G" to provide >> 2 digits past the decimal point >> HID_INPUT(Data_Var_Abs), >> HID_USAGE_SENSOR_DATA_MOTION_ACCELERATION_Z_AXIS, >> HID_LOGICAL_MIN_16(0x01,0x80), // LOGICAL_MINIMUM (-32767) >> HID_LOGICAL_MAX_16(0xFF,0x7F), // LOGICAL_MAXIMUM (32767) >> HID_REPORT_SIZE(16), >> HID_REPORT_COUNT(1), >> HID_UNIT_EXPONENT(0x0E), // scale default unit "G" to provide >> 2 digits past the decimal point >> HID_INPUT(Data_Var_Abs), >> >> //include the following datafield if required to support the >> shake event >> HID_USAGE_SENSOR_DATA_MOTION_STATE, >> HID_LOGICAL_MIN_8(0), // False = Still >> HID_LOGICAL_MAX_8(1), // True = In Motion >> HID_REPORT_SIZE(8), >> HID_REPORT_COUNT(1), >> HID_INPUT(Data_Var_Abs), >> >> HID_END_COLLECTION >> }; >> >> for Feature report i have created following structure >> >> struct accel3_feature_report >> { >> //common properties >> u8 reportid; >> >> u8 connectiontype; >> u8 reportstate; >> u8 powerstate; >> u8 sensorstate; >> u32 reportinterval; >> >> //properties specific to this sensor >> u16 accelsensitiity; >> u16 accelmax; >> u16 accelmin; >> >> } ; >> >> Can some one help me is this the correct way of going forward? With >> this i am getting request for feature report and i can see device in >> iio bus also but i am not getting call for input report. Please help >> me in this regards. > You will get call for input report when you try to read. > > For example: > #cat in_accel_*_raw > > Thanks, > Srinivas > > Yes today i could get the input report after running above command. So i have question, like in some external sensor hub i have observed that sensor is pushing data to HID Framework and iio-proxy keeps getting updated. But here we need to run the above command and after that iio-proxy is getting updated. Is it the same case in ISH and other design? >> >> Thanks >> Nehal Shah >> >> > Regards Nehal Shah