Message ID | 20180919185245.15260-2-hdegoede@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Delegated to: | Jiri Kosina |
Headers | show |
Series | [v2] HID: i2c-hid: Remove RESEND_REPORT_DESCR quirk and its handling | expand |
at 02:52, Hans de Goede <hdegoede@redhat.com> wrote: > Commit 52cf93e63ee6 ("HID: i2c-hid: Don't reset device upon system resume") > removes the need for the RESEND_REPORT_DESCR quirk for Raydium devices, but > kept it for the SIS device id 10FB touchscreens, as the author of that > commit could not determine if the quirk is still necessary there. > > I've tested suspend/resume on a Toshiba Click Mini L9W-B which is the > device for which this quirk was added in the first place and with the > "Don't reset device upon system resume" fix the quirk is no longer > necessary, so this commit removes it. > > Note even better I also had some other devices with SIS touchscreens which > suspend/resume issues, where the RESEND_REPORT_DESCR quirk did not help. > > I've also tested these devices with the "Don't reset device upon system > resume" fix and I'm happy to report that that fix also fixes touchscreen > resume on the following devices: > > Asus T100HA > Asus T200TA > Peaq C1010 > > Cc: Kai-Heng Feng <kai.heng.feng@canonical.com> > Acked-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> > Signed-off-by: Hans de Goede <hdegoede@redhat.com> Thanks for the good news, Acked-by: Kai-Heng Feng <kai.heng.feng@canonical.com> > --- > drivers/hid/hid-ids.h | 1 - > drivers/hid/i2c-hid/i2c-hid.c | 18 +++--------------- > 2 files changed, 3 insertions(+), 16 deletions(-) > > diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h > index 5146ee029db4..bc49909aba8e 100644 > --- a/drivers/hid/hid-ids.h > +++ b/drivers/hid/hid-ids.h > @@ -976,7 +976,6 @@ > #define USB_DEVICE_ID_SIS817_TOUCH 0x0817 > #define USB_DEVICE_ID_SIS_TS 0x1013 > #define USB_DEVICE_ID_SIS1030_TOUCH 0x1030 > -#define USB_DEVICE_ID_SIS10FB_TOUCH 0x10fb > > #define USB_VENDOR_ID_SKYCABLE 0x1223 > #define USB_DEVICE_ID_SKYCABLE_WIRELESS_PRESENTER 0x3F07 > diff --git a/drivers/hid/i2c-hid/i2c-hid.c b/drivers/hid/i2c-hid/i2c-hid.c > index a8610f5bf6f5..4e3592e7a3f7 100644 > --- a/drivers/hid/i2c-hid/i2c-hid.c > +++ b/drivers/hid/i2c-hid/i2c-hid.c > @@ -47,8 +47,7 @@ > /* quirks to control the device */ > #define I2C_HID_QUIRK_SET_PWR_WAKEUP_DEV BIT(0) > #define I2C_HID_QUIRK_NO_IRQ_AFTER_RESET BIT(1) > -#define I2C_HID_QUIRK_RESEND_REPORT_DESCR BIT(2) > -#define I2C_HID_QUIRK_NO_RUNTIME_PM BIT(3) > +#define I2C_HID_QUIRK_NO_RUNTIME_PM BIT(2) > > /* flags */ > #define I2C_HID_STARTED 0 > @@ -172,8 +171,6 @@ static const struct i2c_hid_quirks { > { I2C_VENDOR_ID_HANTICK, I2C_PRODUCT_ID_HANTICK_5288, > I2C_HID_QUIRK_NO_IRQ_AFTER_RESET | > I2C_HID_QUIRK_NO_RUNTIME_PM }, > - { USB_VENDOR_ID_SIS_TOUCH, USB_DEVICE_ID_SIS10FB_TOUCH, > - I2C_HID_QUIRK_RESEND_REPORT_DESCR }, > { 0, 0 } > }; > > @@ -1241,22 +1238,13 @@ static int i2c_hid_resume(struct device *dev) > > /* Instead of resetting device, simply powers the device on. This > * solves "incomplete reports" on Raydium devices 2386:3118 and > - * 2386:4B33 > + * 2386:4B33 and fixes various SIS touchscreens no longer sending > + * data after a suspend/resume. > */ > ret = i2c_hid_set_power(client, I2C_HID_PWR_ON); > if (ret) > return ret; > > - /* Some devices need to re-send report descr cmd > - * after resume, after this it will be back normal. > - * otherwise it issues too many incomplete reports. > - */ > - if (ihid->quirks & I2C_HID_QUIRK_RESEND_REPORT_DESCR) { > - ret = i2c_hid_command(client, &hid_report_descr_cmd, NULL, 0); > - if (ret) > - return ret; > - } > - > if (hid->driver && hid->driver->reset_resume) { > ret = hid->driver->reset_resume(hid); > return ret; > -- > 2.19.0.rc1
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h index 5146ee029db4..bc49909aba8e 100644 --- a/drivers/hid/hid-ids.h +++ b/drivers/hid/hid-ids.h @@ -976,7 +976,6 @@ #define USB_DEVICE_ID_SIS817_TOUCH 0x0817 #define USB_DEVICE_ID_SIS_TS 0x1013 #define USB_DEVICE_ID_SIS1030_TOUCH 0x1030 -#define USB_DEVICE_ID_SIS10FB_TOUCH 0x10fb #define USB_VENDOR_ID_SKYCABLE 0x1223 #define USB_DEVICE_ID_SKYCABLE_WIRELESS_PRESENTER 0x3F07 diff --git a/drivers/hid/i2c-hid/i2c-hid.c b/drivers/hid/i2c-hid/i2c-hid.c index a8610f5bf6f5..4e3592e7a3f7 100644 --- a/drivers/hid/i2c-hid/i2c-hid.c +++ b/drivers/hid/i2c-hid/i2c-hid.c @@ -47,8 +47,7 @@ /* quirks to control the device */ #define I2C_HID_QUIRK_SET_PWR_WAKEUP_DEV BIT(0) #define I2C_HID_QUIRK_NO_IRQ_AFTER_RESET BIT(1) -#define I2C_HID_QUIRK_RESEND_REPORT_DESCR BIT(2) -#define I2C_HID_QUIRK_NO_RUNTIME_PM BIT(3) +#define I2C_HID_QUIRK_NO_RUNTIME_PM BIT(2) /* flags */ #define I2C_HID_STARTED 0 @@ -172,8 +171,6 @@ static const struct i2c_hid_quirks { { I2C_VENDOR_ID_HANTICK, I2C_PRODUCT_ID_HANTICK_5288, I2C_HID_QUIRK_NO_IRQ_AFTER_RESET | I2C_HID_QUIRK_NO_RUNTIME_PM }, - { USB_VENDOR_ID_SIS_TOUCH, USB_DEVICE_ID_SIS10FB_TOUCH, - I2C_HID_QUIRK_RESEND_REPORT_DESCR }, { 0, 0 } }; @@ -1241,22 +1238,13 @@ static int i2c_hid_resume(struct device *dev) /* Instead of resetting device, simply powers the device on. This * solves "incomplete reports" on Raydium devices 2386:3118 and - * 2386:4B33 + * 2386:4B33 and fixes various SIS touchscreens no longer sending + * data after a suspend/resume. */ ret = i2c_hid_set_power(client, I2C_HID_PWR_ON); if (ret) return ret; - /* Some devices need to re-send report descr cmd - * after resume, after this it will be back normal. - * otherwise it issues too many incomplete reports. - */ - if (ihid->quirks & I2C_HID_QUIRK_RESEND_REPORT_DESCR) { - ret = i2c_hid_command(client, &hid_report_descr_cmd, NULL, 0); - if (ret) - return ret; - } - if (hid->driver && hid->driver->reset_resume) { ret = hid->driver->reset_resume(hid); return ret;