[PATCH v6 24/48] Input: atmel_mxt_ts - make bootloader interrupt driven

From: Bartosz Szczepanek
Date: Mon Jan 27 2020 - 12:41:33 EST


Hi,

I've been testing this patchset on Chromebook equipped with Atmel touchscreen &
touchpad. In my setup, this particular patch seems to introduce a regression
on firmware update:

> localhost /sys/devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-6/i2c-ATML0001:00 # echo maxtouch-ts.fw > update_fw
> bash: echo: write error: Remote I/O error

Kernel logs show that the reason is failed I2C transfer:

> [ 111.632131] atmel_mxt_ts i2c-ATML0001:00: Found bootloader addr:27 ID:21 version:4
> [ 111.637711] atmel_mxt_ts i2c-ATML0001:00: Unlocking bootloader
> [ 129.155091] atmel_mxt_ts i2c-ATML0001:00: Sent 1356 frames, 212224 bytes
> [ 129.263269] atmel_mxt_ts i2c-ATML0001:00: The firmware update succeeded
> [ 129.263952] atmel_mxt_ts i2c-ATML0001:00: __mxt_read_chunk: i2c transfer failed (-121)
> [ 129.265072] atmel_mxt_ts i2c-ATML0001:00: mxt_bootloader_read: i2c recv failed (-121)
> [ 129.265588] atmel_mxt_ts i2c-ATML0001:00: Trying alternate bootloader address
> [ 129.266375] atmel_mxt_ts i2c-ATML0001:00: mxt_bootloader_read: i2c recv failed (-121)

Surprisingly, only touchscreen device is affected. When I checked out to
119e1b7e8481 ("Input: atmel_mxt_ts - refactor code to enter bootloader into
separate func") all worked fine. In between these commits I got some mixed
results, including timeout while waiting for completion:

> [ 190.006174] atmel_mxt_ts i2c-ATML0001:00: Found bootloader addr:27 ID:21 version:4
> [ 190.317819] atmel_mxt_ts i2c-ATML0001:00: Wait for completion timed out.
> [ 190.318267] atmel_mxt_ts i2c-ATML0001:00: Update wait error -110
> [ 190.319310] atmel_mxt_ts i2c-ATML0001:00: Unlocking bootloader
> [ 208.369825] atmel_mxt_ts i2c-ATML0001:00: Sent 1356 frames, 212224 bytes
> [ 208.536942] atmel_mxt_ts i2c-ATML0001:00: The firmware update succeeded
> [ 208.544835] atmel_mxt_ts i2c-ATML0001:00: Family: 164 Variant: 14 Firmware V2.3.AA Objects: 40
> [ 208.547623] atmel_mxt_ts i2c-ATML0001:00: Touchscreen size X4095Y2729

Some more details - the touchscreen device reports itself as:

> atmel_mxt_ts i2c-ATML0001:00: Family: 164 Variant: 14 Firmware V2.3.AA Objects: 40

Due to Chromebook limitations on kernel version, I'm running 4.19 kernel
with patches backported from master (so that atmel_mxt_ts is aligned between
master and 4.19). The platform is Samsung Chromebook Pro.

Best regards,
Bartosz