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