mbox series

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

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

Message

Dmitry Osipenko Jan. 22, 2021, 8:06 p.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:

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

Linus Walleij Jan. 23, 2021, 10:59 p.m. UTC | #1
On Fri, Jan 22, 2021 at 9:07 PM Dmitry Osipenko <digetx@gmail.com> wrote:

> According to datasheets, chips like mXT1386 have a WAKE line, it is used

> to wake the chip up from deep sleep mode before communicating with it via

> the I2C-compatible interface.

>

> If the WAKE line is connected to a GPIO line, the line must be asserted

> 25 ms before the host attempts to communicate with the controller. If the

> WAKE line is connected to the SCL pin, the controller will send a NACK on

> the first attempt to address it, the host must then retry 25 ms later.

>

> Implement the wake-up methods in the driver. Touchscreen now works

> properly on devices like Acer A500 tablet, fixing problems like this:

>

>  atmel_mxt_ts 0-004c: __mxt_read_reg: i2c transfer failed (-121)

>  atmel_mxt_ts 0-004c: mxt_bootloader_read: i2c recv failed (-121)

>  atmel_mxt_ts 0-004c: Trying alternate bootloader address

>  atmel_mxt_ts 0-004c: mxt_bootloader_read: i2c recv failed (-121)

>  atmel_mxt_ts: probe of 0-004c failed with error -121

>

> Signed-off-by: Jiada Wang <jiada_wang@mentor.com>

> Signed-off-by: Dmitry Osipenko <digetx@gmail.com>


Reviewed-by: Linus Walleij <linus.walleij@linaro.org>


Yours,
Linus Walleij
Rob Herring Feb. 5, 2021, 11:16 p.m. UTC | #2
On Fri, 22 Jan 2021 23:06:57 +0300, Dmitry Osipenko wrote:
> Some Atmel touchscreen controllers have a WAKE line that needs to be

> asserted low in order to wake up controller from a deep sleep. Document

> the wakeup methods and the new GPIO properties.

> 

> Reviewed-by: Linus Walleij <linus.walleij@linaro.org>

> Signed-off-by: Dmitry Osipenko <digetx@gmail.com>

> ---

>  .../bindings/input/atmel,maxtouch.yaml        | 29 +++++++++++++++++++

>  include/dt-bindings/input/atmel-maxtouch.h    | 10 +++++++

>  2 files changed, 39 insertions(+)

>  create mode 100644 include/dt-bindings/input/atmel-maxtouch.h

> 


Reviewed-by: Rob Herring <robh@kernel.org>