diff mbox series

HID: i2c-hid: Fix Elan touchpad regression

Message ID 20210809065505.6823-1-jbroadus@gmail.com
State Accepted
Commit 786537063bbfb3a7ebc6fc21b2baf37fb91df401
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.

-- 
Jiri Kosina
SUSE Labs
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 }
 };