1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/input/touchscreen/cypress,cy8ctma340.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Cypress CY8CTMA340 series touchscreen controller
8
9description: The Cypress CY8CTMA340 series (also known as "CYTTSP" after
10  the marketing name Cypress TrueTouch Standard Product) touchscreens can
11  be connected to either I2C or SPI buses.
12
13maintainers:
14  - Javier Martinez Canillas <javier@dowhile0.org>
15  - Linus Walleij <linus.walleij@linaro.org>
16
17allOf:
18  - $ref: touchscreen.yaml#
19
20properties:
21  $nodename:
22    pattern: "^touchscreen(@.*)?$"
23
24  compatible:
25    oneOf:
26      - const: cypress,cy8ctma340
27      - const: cypress,cy8ctst341
28      - const: cypress,cyttsp-spi
29        description: Legacy compatible for SPI connected CY8CTMA340
30        deprecated: true
31      - const: cypress,cyttsp-i2c
32        description: Legacy compatible for I2C connected CY8CTMA340
33        deprecated: true
34
35  reg:
36    description: I2C address when used on the I2C bus, or the SPI chip
37      select index when used on the SPI bus
38
39  clock-frequency:
40    description: I2C client clock frequency, defined for host when using
41      the device on the I2C bus
42    minimum: 0
43    maximum: 400000
44
45  spi-max-frequency:
46    description: SPI clock frequency, defined for host, defined when using
47      the device on the SPI bus. The throughput is maximum 2 Mbps so the
48      typical value is 2000000, if higher rates are used the total throughput
49      needs to be restricted to 2 Mbps.
50    minimum: 0
51    maximum: 6000000
52
53  interrupts:
54    description: Interrupt to host
55    maxItems: 1
56
57  vcpin-supply:
58    description: Analog power supply regulator on VCPIN pin
59
60  vdd-supply:
61    description: Digital power supply regulator on VDD pin
62
63  reset-gpios:
64    description: Reset line for the touchscreen, should be tagged
65      as GPIO_ACTIVE_LOW
66
67  bootloader-key:
68    description: the 8-byte bootloader key that is required to switch
69      the chip from bootloader mode (default mode) to application mode
70    $ref: /schemas/types.yaml#/definitions/uint8-array
71    minItems: 8
72    maxItems: 8
73
74  touchscreen-size-x: true
75  touchscreen-size-y: true
76  touchscreen-fuzz-x: true
77  touchscreen-fuzz-y: true
78
79  active-distance:
80    description: the distance in pixels beyond which a touch must move
81      before movement is detected and reported by the device
82    $ref: /schemas/types.yaml#/definitions/uint32
83    minimum: 0
84    maximum: 15
85
86  active-interval-ms:
87    description: the minimum period in ms between consecutive
88      scanning/processing cycles when the chip is in active mode
89    minimum: 0
90    maximum: 255
91
92  lowpower-interval-ms:
93    description: the minimum period in ms between consecutive
94      scanning/processing cycles when the chip is in low-power mode
95    minimum: 0
96    maximum: 2550
97
98  touch-timeout-ms:
99    description: minimum time in ms spent in the active power state while no
100      touches are detected before entering low-power mode
101    minimum: 0
102    maximum: 2550
103
104  use-handshake:
105    description: enable register-based handshake (boolean). This should only
106      be used if the chip is configured to use 'blocking communication with
107      timeout' (in this case the device generates an interrupt at the end of
108      every scanning/processing cycle)
109    $ref: /schemas/types.yaml#/definitions/flag
110
111additionalProperties: false
112
113required:
114  - compatible
115  - reg
116  - interrupts
117  - bootloader-key
118  - touchscreen-size-x
119  - touchscreen-size-y
120
121examples:
122  - |
123    #include <dt-bindings/interrupt-controller/irq.h>
124    #include <dt-bindings/gpio/gpio.h>
125    spi {
126      #address-cells = <1>;
127      #size-cells = <0>;
128      num-cs = <1>;
129      cs-gpios = <&gpio 2 GPIO_ACTIVE_HIGH>;
130
131      touchscreen@0 {
132        compatible = "cypress,cy8ctma340";
133        reg = <0>;
134        interrupt-parent = <&gpio>;
135        interrupts = <20 IRQ_TYPE_EDGE_FALLING>;
136        reset-gpios = <&gpio 21 GPIO_ACTIVE_LOW>;
137        vdd-supply = <&ldo_aux1_reg>;
138        vcpin-supply = <&ldo_aux2_reg>;
139        bootloader-key = /bits/ 8 <0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07>;
140        touchscreen-size-x = <480>;
141        touchscreen-size-y = <800>;
142        active-interval-ms = <0>;
143        touch-timeout-ms = <255>;
144        lowpower-interval-ms = <10>;
145      };
146    };
147
148...
149