Re: [Regression]: Commit 74d905d2 breaks the touchpad and touchscreen of Google Chromebook "samus"

From: Andre Muller
Date: Tue Nov 24 2020 - 03:06:48 EST


Hi,

just a shot in the dark:

I consulted my notes on the convoluted initial setup of a mainline kernel
for this hardware, and found the Atmel chip needed reprogramming
to start working. The settings are preserved, once set.

I ran "enable-atmel.sh", last in 2017,
from here: https://github.com/raphael/linux-samus/tree/master/scripts/setup/touchpad

I don't see or think this is related to the issue at hand,
but my expertise on this hardware is limited, to put it kindly :)

Thanks,
Andre


On 24/11/2020 07.32, Wang, Jiada wrote:
Hi Andre

Thanks for the log,
Hmmm, from the log (also as you have observed)
Seems "data->use_retrigen_workaround" is true on your device
so workaround mxt_process_messages_until_invalid() is used.
which is as same as with the commit reverted,
I am not sure what caused IRQ get generated.

@dmitry
I would suggest to revert the commit until we find out the root cause

Thanks,
Jiada


On 2020/11/24 15:15, Andre Muller wrote:
On 24/11/2020 04.02, Wang, Jiada wrote:
Hello Andre

Thanks for the log,
can you add more debug information like following diff,
and get full log?

Hi Jiada,

I added the warnings, but none of them triggers.
I double-checked the generated object file, it includes the debug strings.
(Also tested that touchscreen/touchpad don't work, as expected.)

Please find the full log attached.

Thank you,
Andre



diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c
index 98f17fa3a892..60bccd5c42f6 100644
--- a/drivers/input/touchscreen/atmel_mxt_ts.c
+++ b/drivers/input/touchscreen/atmel_mxt_ts.c
@@ -1298,21 +1298,29 @@ static int mxt_check_retrigen(struct mxt_data *data)
         data->use_retrigen_workaround = false;

         irqd = irq_get_irq_data(data->irq);
-       if (!irqd)
+       if (!irqd) {
+               dev_warn(&client->dev, "unable to get IRQ data\n");
                 return -EINVAL;
+       }

-       if (irqd_is_level_type(irqd))
+       if (irqd_is_level_type(irqd)) {
+               dev_warn(&client->dev, "IRQ is level type\n");
                 return 0;
+       }

         if (data->T18_address) {
                 error = __mxt_read_reg(client,
                                        data->T18_address + MXT_COMMS_CTRL,
                                        1, &val);
-               if (error)
+               if (error) {
+                       dev_warn(&client->dev, "failed to read reg: MXT_COMMS_CTRL\n");
                         return error;
+               }

-               if (val & MXT_COMMS_RETRIGEN)
+               if (val & MXT_COMMS_RETRIGEN) {
+                       dev_warn(&client->dev, "RETRIGEN feature available\n");
                         return 0;
+               }
         }

         dev_warn(&client->dev, "Enabling RETRIGEN workaround\n");


Thanks,
Jiada

On 2020/11/05 23:23, Andre Muller wrote:
On 05/11/2020 14.25, Wang, Jiada wrote:
Hi Andre

Thanks for your report,
could you also please post the log when with this commit reverted?

Thanks,
Jiada

Shure!
The full dmesg with the revert is attached.

The atmel_mxt bits are:

[    0.195879] atmel_mxt_ts i2c-ATML0000:01: Family: 164 Variant: 17 Firmware V1.0.AA Objects: 32
[    0.211712] atmel_mxt_ts i2c-ATML0000:01: Direct firmware load for maxtouch.cfg failed with error -2
[    0.212986] atmel_mxt_ts i2c-ATML0000:01: Touchscreen size X960Y540
[    0.213025] input: Atmel maXTouch Touchpad as /devices/pci0000:00/INT3432:00/i2c-0/i2c-ATML0000:01/input/input4
[    0.219208] atmel_mxt_ts i2c-ATML0001:01: Family: 164 Variant: 13 Firmware V1.0.AA Objects: 41
[    0.238825] atmel_mxt_ts i2c-ATML0001:01: Direct firmware load for maxtouch.cfg failed with error -2
[    0.238949] intel_rapl_common: Found RAPL domain package
[    0.238955] intel_rapl_common: Found RAPL domain core
[    0.238961] intel_rapl_common: Found RAPL domain uncore
[    0.238966] intel_rapl_common: Found RAPL domain dram
[    0.240121] atmel_mxt_ts i2c-ATML0001:01: Touchscreen size X2559Y1699
[    0.240157] input: Atmel maXTouch Touchscreen as /devices/pci0000:00/INT3433:00/i2c-1/i2c-ATML0001:01/input/input5

Regards,
Andre


On 2020/11/04 17:13, Andre wrote:
Hi,

commit 74d905d2: Input: atmel_mxt_ts - only read messages in
mxt_acquire_irq() when necessary

breaks the touchpad and touchscreen of the 2015 Chromebook Pixel "Samus".

Reverting the commit from the current git tree gets them to work again.

I am not at all shure what info to include, but I will happily provide
it on request.

The dmesgs of a boot with commit 74d905d2 show "Enabling RETRIGEN
workaround", but otherwise looks the same as a boot without.

Here is the relevant bit (with 74d905d2):

atmel_mxt_ts i2c-ATML0000:01: Family: 164 Variant: 17 Firmware V1.0.AA
Objects: 32
atmel_mxt_ts i2c-ATML0000:01: Enabling RETRIGEN workaround
atmel_mxt_ts i2c-ATML0000:01: Direct firmware load for maxtouch.cfg
failed with error -2
atmel_mxt_ts i2c-ATML0000:01: Touchscreen size X960Y540
input: Atmel maXTouch Touchpad as
/devices/pci0000:00/INT3432:00/i2c-0/i2c-ATML0000:01/input/input4
atmel_mxt_ts i2c-ATML0001:01: Family: 164 Variant: 13 Firmware V1.0.AA
Objects: 41
atmel_mxt_ts i2c-ATML0001:01: Enabling RETRIGEN workaround
atmel_mxt_ts i2c-ATML0001:01: Direct firmware load for maxtouch.cfg
failed with error -2

Thank you,
Andre Müller