xref: /freebsd/sys/contrib/device-tree/Bindings/input/syna,rmi4.yaml (revision a90b9d0159070121c221b966469c3e36d912bf82)
1# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/input/syna,rmi4.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Synaptics RMI4 compliant devices
8
9maintainers:
10  - Jason A. Donenfeld <Jason@zx2c4.com>
11  - Matthias Schiffer <matthias.schiffer@ew.tq-group.com
12  - Vincent Huang <vincent.huang@tw.synaptics.com>
13
14description: |
15  The Synaptics RMI4 (Register Mapped Interface 4) core is able to support RMI4
16  devices using different transports (I2C, SPI) and different functions (e.g.
17  Function 1, 2D sensors using Function 11 or 12).
18
19properties:
20  compatible:
21    enum:
22      - syna,rmi4-i2c
23      - syna,rmi4-spi
24
25  reg:
26    maxItems: 1
27
28  '#address-cells':
29    const: 1
30
31  '#size-cells':
32    const: 0
33
34  interrupts:
35    maxItems: 1
36
37  reset-gpios:
38    maxItems: 1
39    description: Active low signal
40
41  spi-cpha: true
42  spi-cpol: true
43
44  syna,reset-delay-ms:
45    description:
46      Delay to wait after resetting the device.
47
48  syna,startup-delay-ms:
49    description:
50      Delay to wait after powering on the device.
51
52  vdd-supply: true
53  vio-supply: true
54
55  rmi4-f01@1:
56    type: object
57    additionalProperties: false
58    description:
59      Function 1
60
61    properties:
62      reg:
63        maxItems: 1
64
65      syna,nosleep-mode:
66        $ref: /schemas/types.yaml#/definitions/uint32
67        enum: [0, 1, 2]
68        description:
69          If set the device will run at full power without sleeping.  nosleep
70          has 3 modes, 0 will not change the default setting, 1 will disable
71          nosleep (allow sleeping), and 2 will enable nosleep (disabling
72          sleep).
73
74      syna,wakeup-threshold:
75        $ref: /schemas/types.yaml#/definitions/uint32
76        description:
77          Defines the amplitude of the disturbance to the background
78          capacitance that will cause the device to wake from dozing.
79
80      syna,doze-holdoff-ms:
81        description:
82          The delay to wait after the last finger lift and the first doze
83          cycle.
84
85      syna,doze-interval-ms:
86        description:
87          The time period that the device sleeps between finger activity.
88
89    required:
90      - reg
91
92patternProperties:
93  "^rmi4-f1[12]@1[12]$":
94    type: object
95    unevaluatedProperties: false
96    $ref: /schemas/input/touchscreen/touchscreen.yaml#
97    description:
98      RMI4 Function 11 and Function 12 are for 2D touch position sensing.
99
100    properties:
101      reg:
102        maxItems: 1
103
104      syna,clip-x-low:
105        $ref: /schemas/types.yaml#/definitions/uint32
106        description:
107          Minimum value for X.
108
109      syna,clip-y-low:
110        $ref: /schemas/types.yaml#/definitions/uint32
111        description:
112          Minimum value for Y.
113
114      syna,clip-x-high:
115        $ref: /schemas/types.yaml#/definitions/uint32
116        description:
117          Maximum value for X.
118
119      syna,clip-y-high:
120        $ref: /schemas/types.yaml#/definitions/uint32
121        description:
122          Maximum value for Y.
123
124      syna,offset-x:
125        $ref: /schemas/types.yaml#/definitions/uint32
126        description:
127          Add an offset to X.
128
129      syna,offset-y:
130        $ref: /schemas/types.yaml#/definitions/uint32
131        description:
132          Add an offset to Y.
133
134      syna,delta-x-threshold:
135        $ref: /schemas/types.yaml#/definitions/uint32
136        description:
137          Minimum distance on the X axis required to generate an interrupt in
138          reduced reporting mode.
139
140      syna,delta-y-threshold:
141        $ref: /schemas/types.yaml#/definitions/uint32
142        description:
143          Minimum distance on the Y axis required to generate an interrupt in
144          reduced reporting mode.
145
146      syna,sensor-type:
147        $ref: /schemas/types.yaml#/definitions/uint32
148        enum: [1, 2]
149        description: |
150          Sensor type: 1 for touchscreen 2 for touchpad.
151
152      syna,disable-report-mask:
153        $ref: /schemas/types.yaml#/definitions/uint32
154        description:
155          Mask for disabling posiiton reporting. Used to disable reporing
156          absolute position data.
157
158      syna,rezero-wait-ms:
159        description:
160          Time to wait after issuing a rezero command.
161
162    required:
163      - reg
164
165  "^rmi4-f[0-9a-f]+@[0-9a-f]+$":
166    type: object
167    additionalProperties: true
168
169    description:
170      Other functions, not documented yet.
171
172    properties:
173      reg:
174        maxItems: 1
175
176    required:
177      - reg
178
179required:
180  - compatible
181  - reg
182
183unevaluatedProperties: false
184
185allOf:
186  - $ref: /schemas/spi/spi-peripheral-props.yaml#
187
188  - if:
189      properties:
190        compatible:
191          contains:
192            const: syna,rmi4-i2c
193    then:
194      properties:
195        spi-rx-delay-us: false
196        spi-tx-delay-us: false
197    else:
198      properties:
199        syna,reset-delay-ms: false
200        syna,startup-delay-ms: false
201
202examples:
203  - |
204    #include <dt-bindings/interrupt-controller/irq.h>
205
206    i2c {
207        #address-cells = <1>;
208        #size-cells = <0>;
209
210        touchscreen@20 {
211            compatible = "syna,rmi4-i2c";
212            reg = <0x20>;
213            interrupt-parent = <&gpx1>;
214            interrupts = <6 IRQ_TYPE_EDGE_FALLING>;
215
216            syna,startup-delay-ms = <100>;
217            vdd-supply = <&tsp_vdd>;
218            vio-supply = <&ldo32_reg>;
219
220            pinctrl-0 = <&touch_irq>;
221            pinctrl-names = "default";
222            #address-cells = <1>;
223            #size-cells = <0>;
224
225            rmi4-f01@1 {
226                reg = <0x1>;
227                syna,nosleep-mode = <1>;
228            };
229
230            rmi4-f12@12 {
231                reg = <0x12>;
232                syna,sensor-type = <1>;
233            };
234
235            rmi4-f1a@1a {
236                reg = <0x1a>;
237            };
238        };
239    };
240
241  - |
242    #include <dt-bindings/interrupt-controller/irq.h>
243
244    spi {
245        #address-cells = <1>;
246        #size-cells = <0>;
247
248        touchscreen@0 {
249            compatible = "syna,rmi4-spi";
250            reg = <0x0>;
251            interrupt-parent = <&gpx1>;
252            interrupts = <6 IRQ_TYPE_EDGE_FALLING>;
253
254            spi-max-frequency = <4000000>;
255            spi-rx-delay-us = <30>;
256            spi-cpha;
257            spi-cpol;
258
259            #address-cells = <1>;
260            #size-cells = <0>;
261
262            rmi4-f01@1 {
263                reg = <0x1>;
264                syna,nosleep-mode = <1>;
265            };
266
267            rmi4-f11@11 {
268                reg = <0x11>;
269                touchscreen-inverted-y;
270                syna,sensor-type = <2>;
271            };
272        };
273    };
274