OSDN Git Service

iio: hid-sensors: gyro : Add sensitivity
[android-x86/kernel.git] / drivers / iio / gyro / hid-sensor-gyro-3d.c
index c688d97..97797db 100644 (file)
@@ -182,10 +182,11 @@ static const struct iio_info gyro_3d_info = {
 };
 
 /* Function to push data to buffer */
-static void hid_sensor_push_data(struct iio_dev *indio_dev, u8 *data, int len)
+static void hid_sensor_push_data(struct iio_dev *indio_dev, const void *data,
+       int len)
 {
        dev_dbg(&indio_dev->dev, "hid_sensor_push_data\n");
-       iio_push_to_buffers(indio_dev, (u8 *)data);
+       iio_push_to_buffers(indio_dev, data);
 }
 
 /* Callback handler to send event after all samples are received and captured */
@@ -200,7 +201,7 @@ static int gyro_3d_proc_event(struct hid_sensor_hub_device *hsdev,
                                gyro_state->common_attributes.data_ready);
        if (gyro_state->common_attributes.data_ready)
                hid_sensor_push_data(indio_dev,
-                               (u8 *)gyro_state->gyro_val,
+                               gyro_state->gyro_val,
                                sizeof(gyro_state->gyro_val));
 
        return 0;
@@ -261,6 +262,17 @@ static int gyro_3d_parse_report(struct platform_device *pdev,
                        st->gyro[1].index, st->gyro[1].report_id,
                        st->gyro[2].index, st->gyro[2].report_id);
 
+       /* Set Sensitivity field ids, when there is no individual modifier */
+       if (st->common_attributes.sensitivity.index < 0) {
+               sensor_hub_input_get_attribute_info(hsdev,
+                       HID_FEATURE_REPORT, usage_id,
+                       HID_USAGE_SENSOR_DATA_MOD_CHANGE_SENSITIVITY_ABS |
+                       HID_USAGE_SENSOR_DATA_ANGL_VELOCITY,
+                       &st->common_attributes.sensitivity);
+               dev_dbg(&pdev->dev, "Sensitivity index:report %d:%d\n",
+                       st->common_attributes.sensitivity.index,
+                       st->common_attributes.sensitivity.report_id);
+       }
        return ret;
 }