blob: b522c8d3ce0db719ff379f2fefbdca79e73d027c [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001# 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 };