2020-11-04 16:07:50

by Coiby Xu

[permalink] [raw]
Subject: [PATCH 4/4] pinctrl: amd: remove debounce filter setting in irq type setting

Debounce filter setting should be independent from irq type setting
because according to the ACPI specs, there are separate arguments for
specifying debounce timeout and irq type in GpioIo and GpioInt.

This will fix broken touchpads for Lenovo Legion-5 AMD gaming laptops
including 15ARH05 (R7000) and R7000P whose BIOS set the debounce timeout
to 124.8ms which led to kernel receiving only ~7 HID reports per second.

Cc: Hans de Goede <[email protected]>
Cc: Andy Shevchenko <[email protected]>
Cc: [email protected]
BugLink: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1887190
Message-Id: <CAHp75VcwiGREBUJ0A06EEw-SyabqYsp+dqs2DpSrhaY-2GVdAA@mail.gmail.com>
Signed-off-by: Coiby Xu <[email protected]>
---
drivers/pinctrl/pinctrl-amd.c | 7 -------
1 file changed, 7 deletions(-)

diff --git a/drivers/pinctrl/pinctrl-amd.c b/drivers/pinctrl/pinctrl-amd.c
index 524d55546b61..5a1d518b563e 100644
--- a/drivers/pinctrl/pinctrl-amd.c
+++ b/drivers/pinctrl/pinctrl-amd.c
@@ -468,7 +468,6 @@ static int amd_gpio_irq_set_type(struct irq_data *d, unsigned int type)
pin_reg &= ~BIT(LEVEL_TRIG_OFF);
pin_reg &= ~(ACTIVE_LEVEL_MASK << ACTIVE_LEVEL_OFF);
pin_reg |= ACTIVE_HIGH << ACTIVE_LEVEL_OFF;
- pin_reg |= DB_TYPE_REMOVE_GLITCH << DB_CNTRL_OFF;
irq_set_handler_locked(d, handle_edge_irq);
break;

@@ -476,7 +475,6 @@ static int amd_gpio_irq_set_type(struct irq_data *d, unsigned int type)
pin_reg &= ~BIT(LEVEL_TRIG_OFF);
pin_reg &= ~(ACTIVE_LEVEL_MASK << ACTIVE_LEVEL_OFF);
pin_reg |= ACTIVE_LOW << ACTIVE_LEVEL_OFF;
- pin_reg |= DB_TYPE_REMOVE_GLITCH << DB_CNTRL_OFF;
irq_set_handler_locked(d, handle_edge_irq);
break;

@@ -484,7 +482,6 @@ static int amd_gpio_irq_set_type(struct irq_data *d, unsigned int type)
pin_reg &= ~BIT(LEVEL_TRIG_OFF);
pin_reg &= ~(ACTIVE_LEVEL_MASK << ACTIVE_LEVEL_OFF);
pin_reg |= BOTH_EADGE << ACTIVE_LEVEL_OFF;
- pin_reg |= DB_TYPE_REMOVE_GLITCH << DB_CNTRL_OFF;
irq_set_handler_locked(d, handle_edge_irq);
break;

@@ -492,8 +489,6 @@ static int amd_gpio_irq_set_type(struct irq_data *d, unsigned int type)
pin_reg |= LEVEL_TRIGGER << LEVEL_TRIG_OFF;
pin_reg &= ~(ACTIVE_LEVEL_MASK << ACTIVE_LEVEL_OFF);
pin_reg |= ACTIVE_HIGH << ACTIVE_LEVEL_OFF;
- pin_reg &= ~(DB_CNTRl_MASK << DB_CNTRL_OFF);
- pin_reg |= DB_TYPE_PRESERVE_LOW_GLITCH << DB_CNTRL_OFF;
irq_set_handler_locked(d, handle_level_irq);
break;

@@ -501,8 +496,6 @@ static int amd_gpio_irq_set_type(struct irq_data *d, unsigned int type)
pin_reg |= LEVEL_TRIGGER << LEVEL_TRIG_OFF;
pin_reg &= ~(ACTIVE_LEVEL_MASK << ACTIVE_LEVEL_OFF);
pin_reg |= ACTIVE_LOW << ACTIVE_LEVEL_OFF;
- pin_reg &= ~(DB_CNTRl_MASK << DB_CNTRL_OFF);
- pin_reg |= DB_TYPE_PRESERVE_HIGH_GLITCH << DB_CNTRL_OFF;
irq_set_handler_locked(d, handle_level_irq);
break;

--
2.28.0


2020-11-04 23:14:45

by Coiby Xu

[permalink] [raw]
Subject: Re: [PATCH 4/4] pinctrl: amd: remove debounce filter setting in irq type setting

On Wed, Nov 04, 2020 at 10:42:38PM +0200, Andy Shevchenko wrote:
>On Wed, Nov 4, 2020 at 6:05 PM Coiby Xu <[email protected]> wrote:
>>
>> Debounce filter setting should be independent from irq type setting
>> because according to the ACPI specs, there are separate arguments for
>> specifying debounce timeout and irq type in GpioIo and GpioInt.
>>
>> This will fix broken touchpads for Lenovo Legion-5 AMD gaming laptops
>> including 15ARH05 (R7000) and R7000P whose BIOS set the debounce timeout
>> to 124.8ms which led to kernel receiving only ~7 HID reports per second.
>
>to the kernel

Thank you for correcting my grammar mistakes!

>
>> Cc: Hans de Goede <[email protected]>
>> Cc: Andy Shevchenko <[email protected]>
>> Cc: [email protected]
>> BugLink: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1887190
>
>> Message-Id: <CAHp75VcwiGREBUJ0A06EEw-SyabqYsp+dqs2DpSrhaY-2GVdAA@mail.gmail.com>
>
>Link: https://lore.kernel.org/...
>
>--
>With Best Regards,
>Andy Shevchenko

--
Best regards,
Coiby

2020-11-05 01:57:50

by Andy Shevchenko

[permalink] [raw]
Subject: Re: [PATCH 4/4] pinctrl: amd: remove debounce filter setting in irq type setting

On Wed, Nov 4, 2020 at 6:05 PM Coiby Xu <[email protected]> wrote:
>
> Debounce filter setting should be independent from irq type setting
> because according to the ACPI specs, there are separate arguments for
> specifying debounce timeout and irq type in GpioIo and GpioInt.
>
> This will fix broken touchpads for Lenovo Legion-5 AMD gaming laptops
> including 15ARH05 (R7000) and R7000P whose BIOS set the debounce timeout
> to 124.8ms which led to kernel receiving only ~7 HID reports per second.

to the kernel

> Cc: Hans de Goede <[email protected]>
> Cc: Andy Shevchenko <[email protected]>
> Cc: [email protected]
> BugLink: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1887190

> Message-Id: <CAHp75VcwiGREBUJ0A06EEw-SyabqYsp+dqs2DpSrhaY-2GVdAA@mail.gmail.com>

Link: https://lore.kernel.org/...

--
With Best Regards,
Andy Shevchenko