diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/hid/hid-sensor-custom.c | 2 | ||||
-rw-r--r-- | drivers/hid/hid-sensor-hub.c | 94 | ||||
-rw-r--r-- | drivers/iio/common/hid-sensors/hid-sensor-attributes.c | 3 |
3 files changed, 4 insertions, 95 deletions
diff --git a/drivers/hid/hid-sensor-custom.c b/drivers/hid/hid-sensor-custom.c index fb86f86b9d92..0bcf041368c7 100644 --- a/drivers/hid/hid-sensor-custom.c +++ b/drivers/hid/hid-sensor-custom.c @@ -823,7 +823,7 @@ static int hid_sensor_custom_remove(struct platform_device *pdev) return 0; } -static struct platform_device_id hid_sensor_custom_ids[] = { +static const struct platform_device_id hid_sensor_custom_ids[] = { { .name = "HID-SENSOR-2000e1", }, diff --git a/drivers/hid/hid-sensor-hub.c b/drivers/hid/hid-sensor-hub.c index 4ef73374a8f9..25363fc571bc 100644 --- a/drivers/hid/hid-sensor-hub.c +++ b/drivers/hid/hid-sensor-hub.c @@ -579,54 +579,6 @@ void sensor_hub_device_close(struct hid_sensor_hub_device *hsdev) } EXPORT_SYMBOL_GPL(sensor_hub_device_close); -static __u8 *sensor_hub_report_fixup(struct hid_device *hdev, __u8 *rdesc, - unsigned int *rsize) -{ - int index; - struct sensor_hub_data *sd = hid_get_drvdata(hdev); - unsigned char report_block[] = { - 0x0a, 0x16, 0x03, 0x15, 0x00, 0x25, 0x05}; - unsigned char power_block[] = { - 0x0a, 0x19, 0x03, 0x15, 0x00, 0x25, 0x05}; - - if (!(sd->quirks & HID_SENSOR_HUB_ENUM_QUIRK)) { - hid_dbg(hdev, "No Enum quirks\n"); - return rdesc; - } - - /* Looks for power and report state usage id and force to 1 */ - for (index = 0; index < *rsize; ++index) { - if (((*rsize - index) > sizeof(report_block)) && - !memcmp(&rdesc[index], report_block, - sizeof(report_block))) { - rdesc[index + 4] = 0x01; - index += sizeof(report_block); - } - if (((*rsize - index) > sizeof(power_block)) && - !memcmp(&rdesc[index], power_block, - sizeof(power_block))) { - rdesc[index + 4] = 0x01; - index += sizeof(power_block); - } - } - - /* Checks if the report descriptor of Thinkpad Helix 2 has a logical - * minimum for magnetic flux axis greater than the maximum */ - if (hdev->product == USB_DEVICE_ID_TEXAS_INSTRUMENTS_LENOVO_YOGA && - *rsize == 2558 && rdesc[913] == 0x17 && rdesc[914] == 0x40 && - rdesc[915] == 0x81 && rdesc[916] == 0x08 && - rdesc[917] == 0x00 && rdesc[918] == 0x27 && - rdesc[921] == 0x07 && rdesc[922] == 0x00) { - /* Sets negative logical minimum for mag x, y and z */ - rdesc[914] = rdesc[935] = rdesc[956] = 0xc0; - rdesc[915] = rdesc[936] = rdesc[957] = 0x7e; - rdesc[916] = rdesc[937] = rdesc[958] = 0xf7; - rdesc[917] = rdesc[938] = rdesc[959] = 0xff; - } - - return rdesc; -} - static int sensor_hub_probe(struct hid_device *hdev, const struct hid_device_id *id) { @@ -778,51 +730,6 @@ static void sensor_hub_remove(struct hid_device *hdev) } static const struct hid_device_id sensor_hub_devices[] = { - { HID_DEVICE(HID_BUS_ANY, HID_GROUP_SENSOR_HUB, USB_VENDOR_ID_INTEL_0, - USB_DEVICE_ID_INTEL_HID_SENSOR_0), - .driver_data = HID_SENSOR_HUB_ENUM_QUIRK}, - { HID_DEVICE(HID_BUS_ANY, HID_GROUP_SENSOR_HUB, USB_VENDOR_ID_INTEL_1, - USB_DEVICE_ID_INTEL_HID_SENSOR_0), - .driver_data = HID_SENSOR_HUB_ENUM_QUIRK}, - { HID_DEVICE(HID_BUS_ANY, HID_GROUP_SENSOR_HUB, USB_VENDOR_ID_INTEL_1, - USB_DEVICE_ID_INTEL_HID_SENSOR_1), - .driver_data = HID_SENSOR_HUB_ENUM_QUIRK}, - { HID_DEVICE(HID_BUS_ANY, HID_GROUP_SENSOR_HUB, USB_VENDOR_ID_MICROSOFT, - USB_DEVICE_ID_MS_SURFACE_PRO_2), - .driver_data = HID_SENSOR_HUB_ENUM_QUIRK}, - { HID_DEVICE(HID_BUS_ANY, HID_GROUP_SENSOR_HUB, USB_VENDOR_ID_MICROSOFT, - USB_DEVICE_ID_MS_TOUCH_COVER_2), - .driver_data = HID_SENSOR_HUB_ENUM_QUIRK}, - { HID_DEVICE(HID_BUS_ANY, HID_GROUP_SENSOR_HUB, USB_VENDOR_ID_MICROSOFT, - USB_DEVICE_ID_MS_TYPE_COVER_2), - .driver_data = HID_SENSOR_HUB_ENUM_QUIRK}, - { HID_DEVICE(HID_BUS_ANY, HID_GROUP_SENSOR_HUB, USB_VENDOR_ID_MICROSOFT, - 0x07bd), /* Microsoft Surface 3 */ - .driver_data = HID_SENSOR_HUB_ENUM_QUIRK}, - { HID_DEVICE(HID_BUS_ANY, HID_GROUP_SENSOR_HUB, USB_VENDOR_ID_MICROCHIP, - 0x0f01), /* MM7150 */ - .driver_data = HID_SENSOR_HUB_ENUM_QUIRK}, - { HID_DEVICE(HID_BUS_ANY, HID_GROUP_SENSOR_HUB, USB_VENDOR_ID_STM_0, - USB_DEVICE_ID_STM_HID_SENSOR), - .driver_data = HID_SENSOR_HUB_ENUM_QUIRK}, - { HID_DEVICE(HID_BUS_ANY, HID_GROUP_SENSOR_HUB, USB_VENDOR_ID_STM_0, - USB_DEVICE_ID_STM_HID_SENSOR_1), - .driver_data = HID_SENSOR_HUB_ENUM_QUIRK}, - { HID_DEVICE(HID_BUS_ANY, HID_GROUP_SENSOR_HUB, USB_VENDOR_ID_TEXAS_INSTRUMENTS, - USB_DEVICE_ID_TEXAS_INSTRUMENTS_LENOVO_YOGA), - .driver_data = HID_SENSOR_HUB_ENUM_QUIRK}, - { HID_DEVICE(HID_BUS_ANY, HID_GROUP_SENSOR_HUB, USB_VENDOR_ID_ITE, - USB_DEVICE_ID_ITE_LENOVO_YOGA), - .driver_data = HID_SENSOR_HUB_ENUM_QUIRK}, - { HID_DEVICE(HID_BUS_ANY, HID_GROUP_SENSOR_HUB, USB_VENDOR_ID_ITE, - USB_DEVICE_ID_ITE_LENOVO_YOGA2), - .driver_data = HID_SENSOR_HUB_ENUM_QUIRK}, - { HID_DEVICE(HID_BUS_ANY, HID_GROUP_SENSOR_HUB, USB_VENDOR_ID_ITE, - USB_DEVICE_ID_ITE_LENOVO_YOGA900), - .driver_data = HID_SENSOR_HUB_ENUM_QUIRK}, - { HID_DEVICE(HID_BUS_ANY, HID_GROUP_SENSOR_HUB, USB_VENDOR_ID_INTEL_0, - 0x22D8), - .driver_data = HID_SENSOR_HUB_ENUM_QUIRK}, { HID_DEVICE(HID_BUS_ANY, HID_GROUP_SENSOR_HUB, HID_ANY_ID, HID_ANY_ID) }, { } @@ -835,7 +742,6 @@ static struct hid_driver sensor_hub_driver = { .probe = sensor_hub_probe, .remove = sensor_hub_remove, .raw_event = sensor_hub_raw_event, - .report_fixup = sensor_hub_report_fixup, #ifdef CONFIG_PM .suspend = sensor_hub_suspend, .resume = sensor_hub_resume, diff --git a/drivers/iio/common/hid-sensors/hid-sensor-attributes.c b/drivers/iio/common/hid-sensors/hid-sensor-attributes.c index f5d4d786e193..ed3849d6fc6a 100644 --- a/drivers/iio/common/hid-sensors/hid-sensor-attributes.c +++ b/drivers/iio/common/hid-sensors/hid-sensor-attributes.c @@ -473,6 +473,9 @@ int hid_sensor_parse_common_attributes(struct hid_sensor_hub_device *hsdev, HID_USAGE_SENSOR_PROY_POWER_STATE, &st->power_state); + st->power_state.logical_minimum = 1; + st->report_state.logical_minimum = 1; + sensor_hub_input_get_attribute_info(hsdev, HID_FEATURE_REPORT, usage_id, HID_USAGE_SENSOR_PROP_SENSITIVITY_ABS, |