mbox series

[v6,0/3] Support wakeup methods of Atmel maXTouch controllers

Message ID 20210302102158.10533-1-digetx@gmail.com
Headers show
Series Support wakeup methods of Atmel maXTouch controllers | expand

Message

Dmitry Osipenko March 2, 2021, 10:21 a.m. UTC
Some Atmel maXTouch controllers, like mXT1386 and mXT3432S1 for example,
have a WAKE line that needs to be asserted in order to wake controller
from a deep sleep, otherwise it will be unusable. This series implements
support for the wakeup methods in accordance to the mXT1386 datasheet [1],
see page 29 (chapter "5.8 WAKE Line").

The mXT1386 is a widely used controller found on many older Android tablet
devices. Touchscreen on Acer A500 tablet now works properly after this
series.

This patchset is a continuation of the work originally started by
Jiada Wang [2].

[1] https://ww1.microchip.com/downloads/en/DeviceDoc/mXT1386_1vx_Datasheet_LX.pdf
[2] https://patchwork.kernel.org/project/linux-input/list/?series=357875

Changelog:

v6: - Added r-b from Rob Herring to the DT-binding patch that he gave
      to v4.

v5: - No code changes. Improved commit message of the "acer-a500: Add
      atmel,wakeup-method property" patch and added r-b from Linus Walleij
      to "Input: atmel_mxt_ts - support wakeup methods" patch that he gave
      to v4.

v4: - Improved commit message of the DT binding patch. No code changes.

v3: - Added "default: 0" to the atmel,wakeup-method property in the binding.

    - Added r-b from Linus Walleij to the binding patch.

    - The wake-GPIO is now toggled on touchscreen's start/stop in order to
      allow it to sleep during suspend. Suggested by Linus Walleij.

v2: - Fixed copy-paste bug in the code.

Dmitry Osipenko (3):
  dt-bindings: input: atmel_mxt_ts: Document atmel,wakeup-method and
    WAKE line GPIO
  Input: atmel_mxt_ts - support wakeup methods
  ARM: tegra: acer-a500: Add atmel,wakeup-method property

 .../bindings/input/atmel,maxtouch.yaml        | 29 +++++++
 .../boot/dts/tegra20-acer-a500-picasso.dts    |  3 +
 drivers/input/touchscreen/atmel_mxt_ts.c      | 78 +++++++++++++++++++
 include/dt-bindings/input/atmel-maxtouch.h    | 10 +++
 4 files changed, 120 insertions(+)
 create mode 100644 include/dt-bindings/input/atmel-maxtouch.h

Comments

Dmitry Torokhov March 21, 2021, 10:44 p.m. UTC | #1
Hi Dmitry,

On Sat, Mar 20, 2021 at 07:02:43PM +0300, Dmitry Osipenko wrote:
> 02.03.2021 13:21, Dmitry Osipenko пишет:

> > Some Atmel maXTouch controllers, like mXT1386 and mXT3432S1 for example,

> > have a WAKE line that needs to be asserted in order to wake controller

> > from a deep sleep, otherwise it will be unusable. This series implements

> > support for the wakeup methods in accordance to the mXT1386 datasheet [1],

> > see page 29 (chapter "5.8 WAKE Line").

> > 

> > The mXT1386 is a widely used controller found on many older Android tablet

> > devices. Touchscreen on Acer A500 tablet now works properly after this

> > series.

> > 

> > This patchset is a continuation of the work originally started by

> > Jiada Wang [2].

> > 

> > [1] https://ww1.microchip.com/downloads/en/DeviceDoc/mXT1386_1vx_Datasheet_LX.pdf

> > [2] https://patchwork.kernel.org/project/linux-input/list/?series=357875

> 

> Hi,

> 

> This series is very wanted by Android tablet devices from Acer, Asus and

> other vendors which use Maxtouch 1386 controller. Touchscreens don't

> work without the wakeup support, i.e. without this series. The wakeup

> support is implemented in accordance to the datasheet and touchscreens

> are working excellent using these patches.

> 

> Could you please take this series into v5.13?

> 

> Or could you please let me know what exactly needs to be improved?


Sorry, I was still slightly unhappy that we still are not tracking the
state of controller and opportunistically retrying failed I2C transfers,
but as I am failing to find time to come up with another solution I have
just applied your series.

Thanks.

-- 
Dmitry
Dmitry Osipenko March 21, 2021, 11:08 p.m. UTC | #2
22.03.2021 01:44, Dmitry Torokhov пишет:
> Hi Dmitry,
> 
> On Sat, Mar 20, 2021 at 07:02:43PM +0300, Dmitry Osipenko wrote:
>> 02.03.2021 13:21, Dmitry Osipenko пишет:
>>> Some Atmel maXTouch controllers, like mXT1386 and mXT3432S1 for example,
>>> have a WAKE line that needs to be asserted in order to wake controller
>>> from a deep sleep, otherwise it will be unusable. This series implements
>>> support for the wakeup methods in accordance to the mXT1386 datasheet [1],
>>> see page 29 (chapter "5.8 WAKE Line").
>>>
>>> The mXT1386 is a widely used controller found on many older Android tablet
>>> devices. Touchscreen on Acer A500 tablet now works properly after this
>>> series.
>>>
>>> This patchset is a continuation of the work originally started by
>>> Jiada Wang [2].
>>>
>>> [1] https://ww1.microchip.com/downloads/en/DeviceDoc/mXT1386_1vx_Datasheet_LX.pdf
>>> [2] https://patchwork.kernel.org/project/linux-input/list/?series=357875
>>
>> Hi,
>>
>> This series is very wanted by Android tablet devices from Acer, Asus and
>> other vendors which use Maxtouch 1386 controller. Touchscreens don't
>> work without the wakeup support, i.e. without this series. The wakeup
>> support is implemented in accordance to the datasheet and touchscreens
>> are working excellent using these patches.
>>
>> Could you please take this series into v5.13?
>>
>> Or could you please let me know what exactly needs to be improved?
> 
> Sorry, I was still slightly unhappy that we still are not tracking the
> state of controller and opportunistically retrying failed I2C transfers,
> but as I am failing to find time to come up with another solution I have
> just applied your series.

Thank you! I don't have other solutions either, although /I think/
potentially it should be possible to differentiate the I2C error here.
On NVIDIA Tegra I see that I2C controller always gets a h/w NAK on TS
wake-up and it returns -EREMOTEIO in this case. IIRC, some other
non-NVIDIA I2C drivers always return -EIO on any error, so this method
isn't universal, but certainly it feels like there is some a room for
further improvements.