diff mbox series

HID: i2c-hid: Fix Elan touchpad regression

Message ID 20210809065505.6823-1-jbroadus@gmail.com (mailing list archive)
State Mainlined
Commit 786537063bbfb3a7ebc6fc21b2baf37fb91df401
Delegated to: Jiri Kosina
Headers show
Series HID: i2c-hid: Fix Elan touchpad regression | expand

Commit Message

Jim Broadus Aug. 9, 2021, 6:55 a.m. UTC
A quirk was recently added for Elan devices that has same device match
as an entry earlier in the list. The i2c_hid_lookup_quirk function will
always return the last match in the list, so the new entry shadows the
old entry. The quirk in the previous entry, I2C_HID_QUIRK_BOGUS_IRQ,
silenced a flood of messages which have reappeared in the 5.13 kernel.

This change moves the two quirk flags into the same entry.

Fixes: ca66a6770bd9 (HID: i2c-hid: Skip ELAN power-on command after reset)
Signed-off-by: Jim Broadus <jbroadus@gmail.com>
---
 drivers/hid/i2c-hid/i2c-hid-core.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

Comments

Johnny Chuang Aug. 11, 2021, 8:32 a.m. UTC | #1
> A quirk was recently added for Elan devices that has same device match
> as an entry earlier in the list. The i2c_hid_lookup_quirk function will
> always return the last match in the list, so the new entry shadows the
> old entry. The quirk in the previous entry, I2C_HID_QUIRK_BOGUS_IRQ,
> silenced a flood of messages which have reappeared in the 5.13 kernel.
>
> This change moves the two quirk flags into the same entry.
>

LGTM

Many thanks,
Johnny/ELAN

> Fixes: ca66a6770bd9 (HID: i2c-hid: Skip ELAN power-on command after reset)
> Signed-off-by: Jim Broadus <jbroadus@gmail.com>
> ---
>  drivers/hid/i2c-hid/i2c-hid-core.c | 5 ++---
>  1 file changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/hid/i2c-hid/i2c-hid-core.c b/drivers/hid/i2c-hid/i2c-hid-core.c
> index 46474612e73c..517141138b00 100644
> --- a/drivers/hid/i2c-hid/i2c-hid-core.c
> +++ b/drivers/hid/i2c-hid/i2c-hid-core.c
> @@ -171,8 +171,6 @@ static const struct i2c_hid_quirks {
>                 I2C_HID_QUIRK_NO_IRQ_AFTER_RESET },
>         { I2C_VENDOR_ID_RAYDIUM, I2C_PRODUCT_ID_RAYDIUM_3118,
>                 I2C_HID_QUIRK_NO_IRQ_AFTER_RESET },
> -       { USB_VENDOR_ID_ELAN, HID_ANY_ID,
> -                I2C_HID_QUIRK_BOGUS_IRQ },
>         { USB_VENDOR_ID_ALPS_JP, HID_ANY_ID,
>                  I2C_HID_QUIRK_RESET_ON_RESUME },
>         { I2C_VENDOR_ID_SYNAPTICS, I2C_PRODUCT_ID_SYNAPTICS_SYNA2393,
> @@ -183,7 +181,8 @@ static const struct i2c_hid_quirks {
>          * Sending the wakeup after reset actually break ELAN touchscreen controller
>          */
>         { USB_VENDOR_ID_ELAN, HID_ANY_ID,
> -                I2C_HID_QUIRK_NO_WAKEUP_AFTER_RESET },
> +                I2C_HID_QUIRK_NO_WAKEUP_AFTER_RESET |
> +                I2C_HID_QUIRK_BOGUS_IRQ },
>         { 0, 0 }
>  };
>
> --
> 2.31.1
>
Jiri Kosina Aug. 20, 2021, 12:52 p.m. UTC | #2
On Sun, 8 Aug 2021, Jim Broadus wrote:

> A quirk was recently added for Elan devices that has same device match
> as an entry earlier in the list. The i2c_hid_lookup_quirk function will
> always return the last match in the list, so the new entry shadows the
> old entry. The quirk in the previous entry, I2C_HID_QUIRK_BOGUS_IRQ,
> silenced a flood of messages which have reappeared in the 5.13 kernel.
> 
> This change moves the two quirk flags into the same entry.
> 
> Fixes: ca66a6770bd9 (HID: i2c-hid: Skip ELAN power-on command after reset)
> Signed-off-by: Jim Broadus <jbroadus@gmail.com>

Applied, thank you.
diff mbox series

Patch

diff --git a/drivers/hid/i2c-hid/i2c-hid-core.c b/drivers/hid/i2c-hid/i2c-hid-core.c
index 46474612e73c..517141138b00 100644
--- a/drivers/hid/i2c-hid/i2c-hid-core.c
+++ b/drivers/hid/i2c-hid/i2c-hid-core.c
@@ -171,8 +171,6 @@  static const struct i2c_hid_quirks {
 		I2C_HID_QUIRK_NO_IRQ_AFTER_RESET },
 	{ I2C_VENDOR_ID_RAYDIUM, I2C_PRODUCT_ID_RAYDIUM_3118,
 		I2C_HID_QUIRK_NO_IRQ_AFTER_RESET },
-	{ USB_VENDOR_ID_ELAN, HID_ANY_ID,
-		 I2C_HID_QUIRK_BOGUS_IRQ },
 	{ USB_VENDOR_ID_ALPS_JP, HID_ANY_ID,
 		 I2C_HID_QUIRK_RESET_ON_RESUME },
 	{ I2C_VENDOR_ID_SYNAPTICS, I2C_PRODUCT_ID_SYNAPTICS_SYNA2393,
@@ -183,7 +181,8 @@  static const struct i2c_hid_quirks {
 	 * Sending the wakeup after reset actually break ELAN touchscreen controller
 	 */
 	{ USB_VENDOR_ID_ELAN, HID_ANY_ID,
-		 I2C_HID_QUIRK_NO_WAKEUP_AFTER_RESET },
+		 I2C_HID_QUIRK_NO_WAKEUP_AFTER_RESET |
+		 I2C_HID_QUIRK_BOGUS_IRQ },
 	{ 0, 0 }
 };