mbox series

[v2,0/4] Add support for the Cypress cyttsp5

Message ID 20211103114830.62711-1-alistair@alistair23.me (mailing list archive)
Headers show
Series Add support for the Cypress cyttsp5 | expand

Message

Alistair Francis Nov. 3, 2021, 11:48 a.m. UTC
This patch series builds on top of [1] and adds support for the cyttsp5
touchscreen controller for the reMarkable 2.

I first tried to add an I2C HID device. Although the cyttsp5 has some HID
looking aspects it is not HID compatible. Just in trying to probe the device
I found:
 - The HID descriptor has extra padding
 - The HID descriptor sets the high bytes of the descriptor length
 - The HID descriptor has extra unrecognised tags
 - The HID reset command doesn't appear to work

I don't think there is a way to use the I2C HID framework with the cyttsp5.
For anyone interested you can see the work here [2]. In that branch though I
can only obtain a HID descriptor, nothing else works without more core
changes.

So instead I rebased the series from [1]. Converted to the new yaml DTS
documentation, added regulator support and fixed a x/y miscalculation bug.

1: https://lwn.net/ml/linux-kernel/20180703094309.18514-1-mylene.josserand@bootlin.com/
2: https://github.com/alistair23/linux/commits/rM2-mainline-cyttsp5-hid

Alistair Francis (2):
  ARM: imx_v6_v7_defconfig: Enable the cyttsp5 touchscreen
  ARM: dts: imx7d: remarkable2: Enable the cyttsp5

Mylène Josserand (2):
  Input: Add driver for Cypress Generation 5 touchscreen
  Documentation: DT: bindings: input: Add documentation for cyttsp5

 .../input/touchscreen/cypress,tt21000.yaml    |   92 ++
 arch/arm/boot/dts/imx7d-remarkable2.dts       |   89 ++
 arch/arm/configs/imx_v6_v7_defconfig          |    1 +
 drivers/input/touchscreen/Kconfig             |   14 +
 drivers/input/touchscreen/Makefile            |    1 +
 drivers/input/touchscreen/cyttsp5.c           | 1135 +++++++++++++++++
 6 files changed, 1332 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/input/touchscreen/cypress,tt21000.yaml
 create mode 100644 drivers/input/touchscreen/cyttsp5.c

Comments

Andreas Kemnade Nov. 5, 2021, 2:52 p.m. UTC | #1
Hallo Alistair,

my Xorg (debian buster installation) does not like that:
[  3112.462] (**) cyttsp5: Applying InputClass "evdev touchscreen catchall"
[  3112.462] (**) cyttsp5: Applying InputClass "libinput touchscreen catchall"
[  3112.462] (II) Using input driver 'libinput' for 'cyttsp5'
[  3112.463] (**) cyttsp5: always reports core events
[  3112.463] (**) Option "Device" "/dev/input/event1"
[  3112.463] (**) Option "_source" "server/udev"
[  3112.496] (II) event1  - cyttsp5: is tagged by udev as: Touchscreen
[  3112.498] (EE) event1  - cyttsp5: kernel bug: device has min == max on ABS_X
[  3112.498] (II) event1  - cyttsp5: was rejected
[  3112.498] (II) event1  - not using input device '/dev/input/event1'.
[  3112.499] (EE) libinput: cyttsp5: Failed to create a device for /dev/input/event1

# evtest /dev/input/event1 
Input driver version is 1.0.1
Input device ID: bus 0x0 vendor 0x0 product 0x0 version 0x0
Input device name: "cyttsp5"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 330 (BTN_TOUCH)
  Event type 2 (EV_REL)
  Event type 3 (EV_ABS)
    Event code 0 (ABS_X)
      Value      0
      Min        0
      Max        0 <-- upsets xorg
    Event code 1 (ABS_Y)
      Value      0
      Min        0
      Max        0
    Event code 47 (ABS_MT_SLOT)
      Value      0
      Min        0
      Max       31
    Event code 48 (ABS_MT_TOUCH_MAJOR)
      Value      0
      Min        0
      Max      255
    Event code 49 (ABS_MT_TOUCH_MINOR)
      Value      0
      Min        0
      Max      255
    Event code 53 (ABS_MT_POSITION_X)
      Value      0
      Min        0
      Max     1447
    Event code 54 (ABS_MT_POSITION_Y)
      Value      0
      Min        0
      Max     1071
    Event code 57 (ABS_MT_TRACKING_ID)
      Value      0
      Min        0
      Max    65535
    Event code 58 (ABS_MT_PRESSURE)
      Value      0
      Min        0
      Max      255

I specified touchscreen-size-x and touchscreen-size-y in my devicetree.
No idea why it is like this yet.

Regards,
Andreas

On Wed,  3 Nov 2021 21:48:26 +1000
Alistair Francis <alistair@alistair23.me> wrote:

> This patch series builds on top of [1] and adds support for the cyttsp5
> touchscreen controller for the reMarkable 2.
> 
> I first tried to add an I2C HID device. Although the cyttsp5 has some HID
> looking aspects it is not HID compatible. Just in trying to probe the device
> I found:
>  - The HID descriptor has extra padding
>  - The HID descriptor sets the high bytes of the descriptor length
>  - The HID descriptor has extra unrecognised tags
>  - The HID reset command doesn't appear to work
> 
> I don't think there is a way to use the I2C HID framework with the cyttsp5.
> For anyone interested you can see the work here [2]. In that branch though I
> can only obtain a HID descriptor, nothing else works without more core
> changes.
> 
> So instead I rebased the series from [1]. Converted to the new yaml DTS
> documentation, added regulator support and fixed a x/y miscalculation bug.
> 
> 1: https://lwn.net/ml/linux-kernel/20180703094309.18514-1-mylene.josserand@bootlin.com/
> 2: https://github.com/alistair23/linux/commits/rM2-mainline-cyttsp5-hid
> 
> Alistair Francis (2):
>   ARM: imx_v6_v7_defconfig: Enable the cyttsp5 touchscreen
>   ARM: dts: imx7d: remarkable2: Enable the cyttsp5
> 
> Mylène Josserand (2):
>   Input: Add driver for Cypress Generation 5 touchscreen
>   Documentation: DT: bindings: input: Add documentation for cyttsp5
> 
>  .../input/touchscreen/cypress,tt21000.yaml    |   92 ++
>  arch/arm/boot/dts/imx7d-remarkable2.dts       |   89 ++
>  arch/arm/configs/imx_v6_v7_defconfig          |    1 +
>  drivers/input/touchscreen/Kconfig             |   14 +
>  drivers/input/touchscreen/Makefile            |    1 +
>  drivers/input/touchscreen/cyttsp5.c           | 1135 +++++++++++++++++
>  6 files changed, 1332 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/input/touchscreen/cypress,tt21000.yaml
>  create mode 100644 drivers/input/touchscreen/cyttsp5.c
>
Alistair Francis Nov. 25, 2021, 9:44 a.m. UTC | #2
On Sat, Nov 6, 2021 at 12:52 AM Andreas Kemnade <andreas@kemnade.info> wrote:
>
> Hallo Alistair,
>
> my Xorg (debian buster installation) does not like that:
> [  3112.462] (**) cyttsp5: Applying InputClass "evdev touchscreen catchall"
> [  3112.462] (**) cyttsp5: Applying InputClass "libinput touchscreen catchall"
> [  3112.462] (II) Using input driver 'libinput' for 'cyttsp5'
> [  3112.463] (**) cyttsp5: always reports core events
> [  3112.463] (**) Option "Device" "/dev/input/event1"
> [  3112.463] (**) Option "_source" "server/udev"
> [  3112.496] (II) event1  - cyttsp5: is tagged by udev as: Touchscreen
> [  3112.498] (EE) event1  - cyttsp5: kernel bug: device has min == max on ABS_X
> [  3112.498] (II) event1  - cyttsp5: was rejected
> [  3112.498] (II) event1  - not using input device '/dev/input/event1'.
> [  3112.499] (EE) libinput: cyttsp5: Failed to create a device for /dev/input/event1
>
> # evtest /dev/input/event1
> Input driver version is 1.0.1
> Input device ID: bus 0x0 vendor 0x0 product 0x0 version 0x0
> Input device name: "cyttsp5"
> Supported events:
>   Event type 0 (EV_SYN)
>   Event type 1 (EV_KEY)
>     Event code 330 (BTN_TOUCH)
>   Event type 2 (EV_REL)
>   Event type 3 (EV_ABS)
>     Event code 0 (ABS_X)
>       Value      0
>       Min        0
>       Max        0 <-- upsets xorg
>     Event code 1 (ABS_Y)
>       Value      0
>       Min        0
>       Max        0
>     Event code 47 (ABS_MT_SLOT)
>       Value      0
>       Min        0
>       Max       31
>     Event code 48 (ABS_MT_TOUCH_MAJOR)
>       Value      0
>       Min        0
>       Max      255
>     Event code 49 (ABS_MT_TOUCH_MINOR)
>       Value      0
>       Min        0
>       Max      255
>     Event code 53 (ABS_MT_POSITION_X)
>       Value      0
>       Min        0
>       Max     1447
>     Event code 54 (ABS_MT_POSITION_Y)
>       Value      0
>       Min        0
>       Max     1071
>     Event code 57 (ABS_MT_TRACKING_ID)
>       Value      0
>       Min        0
>       Max    65535
>     Event code 58 (ABS_MT_PRESSURE)
>       Value      0
>       Min        0
>       Max      255
>
> I specified touchscreen-size-x and touchscreen-size-y in my devicetree.
> No idea why it is like this yet.

Thanks! I see the same problem on my side as well. I'm not using X so
I don't see a crash and didn't notice the error.

I'll work on fixing this.

Alistair