[Artful,UBUNTU:,SAUCE:] HID: Add quirk for Lenovo Yoga 910 with ITE Chips

Submitted by Chris MacNaughton on Aug. 2, 2017, 3:27 p.m.

Details

Message ID d68e8dd3-f4f6-1999-ed51-37d445530a78@canonical.com
State New
Headers show

Commit Message

Chris MacNaughton Aug. 2, 2017, 3:27 p.m.
BugLink: https://launchpad.net/ubuntu/+source/linux/+bug/1708120

As with previous generations of this device (see
https://patchwork.kernel.org/patch/7887361/), the ITE
HID Sensor Hub, responsible for the accelerometer and als sensor,
requires a quirk entry.

Without the entry, the Sensor Hub can't be accessed and the kernel fails
to report any movements. As a result
iio-sensor-proxy receives no new data.

It shall additionally be noted that the i2c-hid 'sleep' bug (present
since kernel ver. 4.3)
still affects the driver. This means that the sensor hub will not report
any movement, until
the device is suspended and resumed.

Signed-off-by: Patrick Pedersen <ctx.xda@gmail.com>
Signed-off-by: Chris MacNaughton <chris.macnaughton@canonical.com>
---
drivers/hid/hid-ids.h | 1 +
drivers/hid/hid-sensor-hub.c | 3 +++
2 files changed, 4 insertions(+)

.driver_data = HID_SENSOR_HUB_ENUM_QUIRK},
-- 2.11.0

Comments

Seth Forshee Aug. 3, 2017, 1:09 p.m.
On Wed, Aug 02, 2017 at 05:27:23PM +0200, Chris MacNaughton wrote:
> BugLink: https://launchpad.net/ubuntu/+source/linux/+bug/1708120
> 
> As with previous generations of this device (see
> https://patchwork.kernel.org/patch/7887361/), the ITE
> HID Sensor Hub, responsible for the accelerometer and als sensor,
> requires a quirk entry.
> 
> Without the entry, the Sensor Hub can't be accessed and the kernel fails
> to report any movements. As a result
> iio-sensor-proxy receives no new data.
> 
> It shall additionally be noted that the i2c-hid 'sleep' bug (present
> since kernel ver. 4.3)
> still affects the driver. This means that the sensor hub will not report
> any movement, until
> the device is suspended and resumed.
> 
> Signed-off-by: Patrick Pedersen <ctx.xda@gmail.com>
> Signed-off-by: Chris MacNaughton <chris.macnaughton@canonical.com>

I get the impression from the mailing list discussion that upstream may
end up going a different way with this fix, but it looks safe enough so
I don't see any reason we can't use this version until that happens.

The patch was mangled by your mailer though, and I ended up grabbing the
patch from patchwork. Applied as "UBUNTU: SAUCE: (no-up) HID: Add quirk
for Lenovo Yoga 910 with ITE Chips" to artful and unstable, thanks.

Patch hide | download patch | download mbox

diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
index d3793867adae..495de6227cf7 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
@@ -555,6 +555,7 @@ 
#define USB_DEVICE_ID_ITE_LENOVO_YOGA 0x8386
#define USB_DEVICE_ID_ITE_LENOVO_YOGA2 0x8350
#define USB_DEVICE_ID_ITE_LENOVO_YOGA900 0x8396
+#define USB_DEVICE_ID_ITE_LENOVO_YOGA910 0x8186

#define USB_VENDOR_ID_JABRA 0x0b0e
#define USB_DEVICE_ID_JABRA_SPEAK_410 0x0412
diff --git a/drivers/hid/hid-sensor-hub.c b/drivers/hid/hid-sensor-hub.c
index 4ef73374a8f9..85b8425483bd 100644
--- a/drivers/hid/hid-sensor-hub.c
+++ b/drivers/hid/hid-sensor-hub.c
@@ -820,6 +820,9 @@  static const struct hid_device_id
sensor_hub_devices[] = {
{ 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_ITE,
+ USB_DEVICE_ID_ITE_LENOVO_YOGA910),
+ .driver_data = HID_SENSOR_HUB_ENUM_QUIRK},
{ HID_DEVICE(HID_BUS_ANY, HID_GROUP_SENSOR_HUB, USB_VENDOR_ID_INTEL_0,
0x22D8),