xref: /openbmc/linux/Documentation/devicetree/bindings/input/touchscreen/azoteq,iqs7211.yaml (revision c900529f3d9161bfde5cca0754f83b4d3c3e0220)
1*d6239463SJeff LaBundy# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*d6239463SJeff LaBundy%YAML 1.2
3*d6239463SJeff LaBundy---
4*d6239463SJeff LaBundy$id: http://devicetree.org/schemas/input/touchscreen/azoteq,iqs7211.yaml#
5*d6239463SJeff LaBundy$schema: http://devicetree.org/meta-schemas/core.yaml#
6*d6239463SJeff LaBundy
7*d6239463SJeff LaBundytitle: Azoteq IQS7210A/7211A/E Trackpad/Touchscreen Controller
8*d6239463SJeff LaBundy
9*d6239463SJeff LaBundymaintainers:
10*d6239463SJeff LaBundy  - Jeff LaBundy <jeff@labundy.com>
11*d6239463SJeff LaBundy
12*d6239463SJeff LaBundydescription: |
13*d6239463SJeff LaBundy  The Azoteq IQS7210A, IQS7211A and IQS7211E trackpad and touchscreen control-
14*d6239463SJeff LaBundy  lers employ projected-capacitance sensing and can track two contacts.
15*d6239463SJeff LaBundy
16*d6239463SJeff LaBundy  Link to datasheets: https://www.azoteq.com/
17*d6239463SJeff LaBundy
18*d6239463SJeff LaBundyproperties:
19*d6239463SJeff LaBundy  compatible:
20*d6239463SJeff LaBundy    enum:
21*d6239463SJeff LaBundy      - azoteq,iqs7210a
22*d6239463SJeff LaBundy      - azoteq,iqs7211a
23*d6239463SJeff LaBundy      - azoteq,iqs7211e
24*d6239463SJeff LaBundy
25*d6239463SJeff LaBundy  reg:
26*d6239463SJeff LaBundy    maxItems: 1
27*d6239463SJeff LaBundy
28*d6239463SJeff LaBundy  irq-gpios:
29*d6239463SJeff LaBundy    maxItems: 1
30*d6239463SJeff LaBundy    description:
31*d6239463SJeff LaBundy      Specifies the GPIO connected to the device's active-low RDY output. The
32*d6239463SJeff LaBundy      pin doubles as the IQS7211E's active-low MCLR input, in which case this
33*d6239463SJeff LaBundy      GPIO must be configured as open-drain.
34*d6239463SJeff LaBundy
35*d6239463SJeff LaBundy  reset-gpios:
36*d6239463SJeff LaBundy    maxItems: 1
37*d6239463SJeff LaBundy    description:
38*d6239463SJeff LaBundy      Specifies the GPIO connected to the device's active-low MCLR input. The
39*d6239463SJeff LaBundy      device is temporarily held in hardware reset prior to initialization if
40*d6239463SJeff LaBundy      this property is present.
41*d6239463SJeff LaBundy
42*d6239463SJeff LaBundy  azoteq,forced-comms:
43*d6239463SJeff LaBundy    type: boolean
44*d6239463SJeff LaBundy    description:
45*d6239463SJeff LaBundy      Enables forced communication; to be used with host adapters that cannot
46*d6239463SJeff LaBundy      tolerate clock stretching.
47*d6239463SJeff LaBundy
48*d6239463SJeff LaBundy  azoteq,forced-comms-default:
49*d6239463SJeff LaBundy    $ref: /schemas/types.yaml#/definitions/uint32
50*d6239463SJeff LaBundy    enum: [0, 1]
51*d6239463SJeff LaBundy    description:
52*d6239463SJeff LaBundy      Indicates if the device's OTP memory enables (1) or disables (0) forced
53*d6239463SJeff LaBundy      communication by default. Specifying this property can expedite startup
54*d6239463SJeff LaBundy      time if the default value is known.
55*d6239463SJeff LaBundy
56*d6239463SJeff LaBundy      If this property is not specified, communication is not initiated until
57*d6239463SJeff LaBundy      the device asserts its RDY pin shortly after exiting hardware reset. At
58*d6239463SJeff LaBundy      that point, forced communication is either enabled or disabled based on
59*d6239463SJeff LaBundy      the presence or absence of the 'azoteq,forced-comms' property.
60*d6239463SJeff LaBundy
61*d6239463SJeff LaBundy  azoteq,rate-active-ms:
62*d6239463SJeff LaBundy    minimum: 0
63*d6239463SJeff LaBundy    maximum: 65535
64*d6239463SJeff LaBundy    description: Specifies the report rate (in ms) during active mode.
65*d6239463SJeff LaBundy
66*d6239463SJeff LaBundy  azoteq,rate-touch-ms:
67*d6239463SJeff LaBundy    minimum: 0
68*d6239463SJeff LaBundy    maximum: 65535
69*d6239463SJeff LaBundy    description: Specifies the report rate (in ms) during idle-touch mode.
70*d6239463SJeff LaBundy
71*d6239463SJeff LaBundy  azoteq,rate-idle-ms:
72*d6239463SJeff LaBundy    minimum: 0
73*d6239463SJeff LaBundy    maximum: 65535
74*d6239463SJeff LaBundy    description: Specifies the report rate (in ms) during idle mode.
75*d6239463SJeff LaBundy
76*d6239463SJeff LaBundy  azoteq,rate-lp1-ms:
77*d6239463SJeff LaBundy    minimum: 0
78*d6239463SJeff LaBundy    maximum: 65535
79*d6239463SJeff LaBundy    description: Specifies the report rate (in ms) during low-power mode 1.
80*d6239463SJeff LaBundy
81*d6239463SJeff LaBundy  azoteq,rate-lp2-ms:
82*d6239463SJeff LaBundy    minimum: 0
83*d6239463SJeff LaBundy    maximum: 65535
84*d6239463SJeff LaBundy    description: Specifies the report rate (in ms) during low-power mode 2.
85*d6239463SJeff LaBundy
86*d6239463SJeff LaBundy  azoteq,timeout-active-ms:
87*d6239463SJeff LaBundy    multipleOf: 1000
88*d6239463SJeff LaBundy    minimum: 0
89*d6239463SJeff LaBundy    maximum: 65535000
90*d6239463SJeff LaBundy    description:
91*d6239463SJeff LaBundy      Specifies the length of time (in ms) to wait for an event before moving
92*d6239463SJeff LaBundy      from active mode to idle or idle-touch modes.
93*d6239463SJeff LaBundy
94*d6239463SJeff LaBundy  azoteq,timeout-touch-ms:
95*d6239463SJeff LaBundy    multipleOf: 1000
96*d6239463SJeff LaBundy    minimum: 0
97*d6239463SJeff LaBundy    maximum: 65535000
98*d6239463SJeff LaBundy    description:
99*d6239463SJeff LaBundy      Specifies the length of time (in ms) to wait for an event before moving
100*d6239463SJeff LaBundy      from idle-touch mode to idle mode.
101*d6239463SJeff LaBundy
102*d6239463SJeff LaBundy  azoteq,timeout-idle-ms:
103*d6239463SJeff LaBundy    multipleOf: 1000
104*d6239463SJeff LaBundy    minimum: 0
105*d6239463SJeff LaBundy    maximum: 65535000
106*d6239463SJeff LaBundy    description:
107*d6239463SJeff LaBundy      Specifies the length of time (in ms) to wait for an event before moving
108*d6239463SJeff LaBundy      from idle mode to low-power mode 1.
109*d6239463SJeff LaBundy
110*d6239463SJeff LaBundy  azoteq,timeout-lp1-ms:
111*d6239463SJeff LaBundy    multipleOf: 1000
112*d6239463SJeff LaBundy    minimum: 0
113*d6239463SJeff LaBundy    maximum: 65535000
114*d6239463SJeff LaBundy    description:
115*d6239463SJeff LaBundy      Specifies the length of time (in ms) to wait for an event before moving
116*d6239463SJeff LaBundy      from low-power mode 1 to low-power mode 2.
117*d6239463SJeff LaBundy
118*d6239463SJeff LaBundy  azoteq,timeout-lp2-ms:
119*d6239463SJeff LaBundy    multipleOf: 1000
120*d6239463SJeff LaBundy    minimum: 0
121*d6239463SJeff LaBundy    maximum: 60000
122*d6239463SJeff LaBundy    description:
123*d6239463SJeff LaBundy      Specifies the rate (in ms) at which the trackpad reference values
124*d6239463SJeff LaBundy      are updated during low-power modes 1 and 2.
125*d6239463SJeff LaBundy
126*d6239463SJeff LaBundy  azoteq,timeout-ati-ms:
127*d6239463SJeff LaBundy    multipleOf: 1000
128*d6239463SJeff LaBundy    minimum: 0
129*d6239463SJeff LaBundy    maximum: 60000
130*d6239463SJeff LaBundy    description:
131*d6239463SJeff LaBundy      Specifies the delay (in ms) before the automatic tuning implementation
132*d6239463SJeff LaBundy      (ATI) is retried in the event it fails to complete.
133*d6239463SJeff LaBundy
134*d6239463SJeff LaBundy  azoteq,timeout-comms-ms:
135*d6239463SJeff LaBundy    minimum: 0
136*d6239463SJeff LaBundy    maximum: 65535
137*d6239463SJeff LaBundy    description:
138*d6239463SJeff LaBundy      Specifies the delay (in ms) before a communication window is closed.
139*d6239463SJeff LaBundy
140*d6239463SJeff LaBundy  azoteq,timeout-press-ms:
141*d6239463SJeff LaBundy    multipleOf: 1000
142*d6239463SJeff LaBundy    minimum: 0
143*d6239463SJeff LaBundy    maximum: 60000
144*d6239463SJeff LaBundy    description:
145*d6239463SJeff LaBundy      Specifies the length of time (in ms) to wait before automatically
146*d6239463SJeff LaBundy      releasing a press event. Specify zero to allow the press state to
147*d6239463SJeff LaBundy      persist indefinitely.
148*d6239463SJeff LaBundy
149*d6239463SJeff LaBundy  azoteq,fosc-freq:
150*d6239463SJeff LaBundy    $ref: /schemas/types.yaml#/definitions/uint32
151*d6239463SJeff LaBundy    enum: [0, 1]
152*d6239463SJeff LaBundy    description: |
153*d6239463SJeff LaBundy      Specifies the device's core clock frequency as follows:
154*d6239463SJeff LaBundy      0: 14 MHz
155*d6239463SJeff LaBundy      1: 18 MHz
156*d6239463SJeff LaBundy
157*d6239463SJeff LaBundy  azoteq,fosc-trim:
158*d6239463SJeff LaBundy    $ref: /schemas/types.yaml#/definitions/uint32
159*d6239463SJeff LaBundy    minimum: 0
160*d6239463SJeff LaBundy    maximum: 15
161*d6239463SJeff LaBundy    description: Specifies the device's core clock frequency trim.
162*d6239463SJeff LaBundy
163*d6239463SJeff LaBundy  azoteq,num-contacts:
164*d6239463SJeff LaBundy    $ref: /schemas/types.yaml#/definitions/uint32
165*d6239463SJeff LaBundy    minimum: 0
166*d6239463SJeff LaBundy    maximum: 2
167*d6239463SJeff LaBundy    default: 0
168*d6239463SJeff LaBundy    description: Specifies the number of contacts reported by the device.
169*d6239463SJeff LaBundy
170*d6239463SJeff LaBundy  azoteq,contact-split:
171*d6239463SJeff LaBundy    $ref: /schemas/types.yaml#/definitions/uint32
172*d6239463SJeff LaBundy    minimum: 0
173*d6239463SJeff LaBundy    maximum: 255
174*d6239463SJeff LaBundy    description: Specifies the contact (finger) split factor.
175*d6239463SJeff LaBundy
176*d6239463SJeff LaBundy  azoteq,trim-x:
177*d6239463SJeff LaBundy    $ref: /schemas/types.yaml#/definitions/uint32
178*d6239463SJeff LaBundy    minimum: 0
179*d6239463SJeff LaBundy    maximum: 255
180*d6239463SJeff LaBundy    description: Specifies the horizontal trim width.
181*d6239463SJeff LaBundy
182*d6239463SJeff LaBundy  azoteq,trim-y:
183*d6239463SJeff LaBundy    $ref: /schemas/types.yaml#/definitions/uint32
184*d6239463SJeff LaBundy    minimum: 0
185*d6239463SJeff LaBundy    maximum: 255
186*d6239463SJeff LaBundy    description: Specifies the vertical trim height.
187*d6239463SJeff LaBundy
188*d6239463SJeff LaBundy  trackpad:
189*d6239463SJeff LaBundy    type: object
190*d6239463SJeff LaBundy    description: Represents all channels associated with the trackpad.
191*d6239463SJeff LaBundy
192*d6239463SJeff LaBundy    properties:
193*d6239463SJeff LaBundy      azoteq,rx-enable:
194*d6239463SJeff LaBundy        $ref: /schemas/types.yaml#/definitions/uint32-array
195*d6239463SJeff LaBundy        minItems: 1
196*d6239463SJeff LaBundy        maxItems: 8
197*d6239463SJeff LaBundy        items:
198*d6239463SJeff LaBundy          minimum: 0
199*d6239463SJeff LaBundy          maximum: 7
200*d6239463SJeff LaBundy        description:
201*d6239463SJeff LaBundy          Specifies the order of the CRx pin(s) associated with the trackpad.
202*d6239463SJeff LaBundy
203*d6239463SJeff LaBundy      azoteq,tx-enable:
204*d6239463SJeff LaBundy        $ref: /schemas/types.yaml#/definitions/uint32-array
205*d6239463SJeff LaBundy        minItems: 1
206*d6239463SJeff LaBundy        maxItems: 12
207*d6239463SJeff LaBundy        items:
208*d6239463SJeff LaBundy          minimum: 0
209*d6239463SJeff LaBundy          maximum: 11
210*d6239463SJeff LaBundy        description:
211*d6239463SJeff LaBundy          Specifies the order of the CTx pin(s) associated with the trackpad.
212*d6239463SJeff LaBundy
213*d6239463SJeff LaBundy      azoteq,channel-select:
214*d6239463SJeff LaBundy        $ref: /schemas/types.yaml#/definitions/uint32-array
215*d6239463SJeff LaBundy        minItems: 1
216*d6239463SJeff LaBundy        maxItems: 36
217*d6239463SJeff LaBundy        items:
218*d6239463SJeff LaBundy          minimum: 0
219*d6239463SJeff LaBundy          maximum: 255
220*d6239463SJeff LaBundy        description: |
221*d6239463SJeff LaBundy          Specifies the channels mapped to each cycle in the following order:
222*d6239463SJeff LaBundy          Cycle 0, slot 0
223*d6239463SJeff LaBundy          Cycle 0, slot 1
224*d6239463SJeff LaBundy          Cycle 1, slot 0
225*d6239463SJeff LaBundy          Cycle 1, slot 1
226*d6239463SJeff LaBundy          ...and so on. Specify 255 to disable a given slot.
227*d6239463SJeff LaBundy
228*d6239463SJeff LaBundy      azoteq,ati-frac-div-fine:
229*d6239463SJeff LaBundy        $ref: /schemas/types.yaml#/definitions/uint32
230*d6239463SJeff LaBundy        minimum: 0
231*d6239463SJeff LaBundy        maximum: 31
232*d6239463SJeff LaBundy        description: Specifies the trackpad's ATI fine fractional divider.
233*d6239463SJeff LaBundy
234*d6239463SJeff LaBundy      azoteq,ati-frac-mult-coarse:
235*d6239463SJeff LaBundy        $ref: /schemas/types.yaml#/definitions/uint32
236*d6239463SJeff LaBundy        minimum: 0
237*d6239463SJeff LaBundy        maximum: 15
238*d6239463SJeff LaBundy        description: Specifies the trackpad's ATI coarse fractional multiplier.
239*d6239463SJeff LaBundy
240*d6239463SJeff LaBundy      azoteq,ati-frac-div-coarse:
241*d6239463SJeff LaBundy        $ref: /schemas/types.yaml#/definitions/uint32
242*d6239463SJeff LaBundy        minimum: 0
243*d6239463SJeff LaBundy        maximum: 31
244*d6239463SJeff LaBundy        description: Specifies the trackpad's ATI coarse fractional divider.
245*d6239463SJeff LaBundy
246*d6239463SJeff LaBundy      azoteq,ati-comp-div:
247*d6239463SJeff LaBundy        $ref: /schemas/types.yaml#/definitions/uint32
248*d6239463SJeff LaBundy        minimum: 0
249*d6239463SJeff LaBundy        maximum: 31
250*d6239463SJeff LaBundy        description: Specifies the trackpad's ATI compensation divider.
251*d6239463SJeff LaBundy
252*d6239463SJeff LaBundy      azoteq,ati-target:
253*d6239463SJeff LaBundy        $ref: /schemas/types.yaml#/definitions/uint32
254*d6239463SJeff LaBundy        minimum: 0
255*d6239463SJeff LaBundy        maximum: 65535
256*d6239463SJeff LaBundy        description: Specifies the trackpad's ATI target.
257*d6239463SJeff LaBundy
258*d6239463SJeff LaBundy      azoteq,touch-enter:
259*d6239463SJeff LaBundy        $ref: /schemas/types.yaml#/definitions/uint32
260*d6239463SJeff LaBundy        minimum: 0
261*d6239463SJeff LaBundy        maximum: 255
262*d6239463SJeff LaBundy        description: Specifies the trackpad's touch entrance factor.
263*d6239463SJeff LaBundy
264*d6239463SJeff LaBundy      azoteq,touch-exit:
265*d6239463SJeff LaBundy        $ref: /schemas/types.yaml#/definitions/uint32
266*d6239463SJeff LaBundy        minimum: 0
267*d6239463SJeff LaBundy        maximum: 255
268*d6239463SJeff LaBundy        description: Specifies the trackpad's touch exit factor.
269*d6239463SJeff LaBundy
270*d6239463SJeff LaBundy      azoteq,thresh:
271*d6239463SJeff LaBundy        $ref: /schemas/types.yaml#/definitions/uint32
272*d6239463SJeff LaBundy        minimum: 0
273*d6239463SJeff LaBundy        maximum: 255
274*d6239463SJeff LaBundy        description: Specifies the trackpad's stationary touch threshold.
275*d6239463SJeff LaBundy
276*d6239463SJeff LaBundy      azoteq,conv-period:
277*d6239463SJeff LaBundy        $ref: /schemas/types.yaml#/definitions/uint32
278*d6239463SJeff LaBundy        minimum: 0
279*d6239463SJeff LaBundy        maximum: 255
280*d6239463SJeff LaBundy        description: Specifies the trackpad's conversion period.
281*d6239463SJeff LaBundy
282*d6239463SJeff LaBundy      azoteq,conv-frac:
283*d6239463SJeff LaBundy        $ref: /schemas/types.yaml#/definitions/uint32
284*d6239463SJeff LaBundy        minimum: 0
285*d6239463SJeff LaBundy        maximum: 255
286*d6239463SJeff LaBundy        description: Specifies the trackpad's conversion frequency fraction.
287*d6239463SJeff LaBundy
288*d6239463SJeff LaBundy    patternProperties:
289*d6239463SJeff LaBundy      "^event-(tap(-double|-triple)?|hold|palm|swipe-(x|y)-(pos|neg)(-hold)?)$":
290*d6239463SJeff LaBundy        type: object
291*d6239463SJeff LaBundy        $ref: ../input.yaml#
292*d6239463SJeff LaBundy        description:
293*d6239463SJeff LaBundy          Represents a gesture event reported by the trackpad. In the case of
294*d6239463SJeff LaBundy          axial gestures, the duration or distance specified in one direction
295*d6239463SJeff LaBundy          applies to both directions along the same axis.
296*d6239463SJeff LaBundy
297*d6239463SJeff LaBundy        properties:
298*d6239463SJeff LaBundy          linux,code: true
299*d6239463SJeff LaBundy
300*d6239463SJeff LaBundy          azoteq,gesture-max-ms:
301*d6239463SJeff LaBundy            minimum: 0
302*d6239463SJeff LaBundy            maximum: 65535
303*d6239463SJeff LaBundy            description: Specifies the maximum duration of tap/swipe gestures.
304*d6239463SJeff LaBundy
305*d6239463SJeff LaBundy          azoteq,gesture-mid-ms:
306*d6239463SJeff LaBundy            minimum: 0
307*d6239463SJeff LaBundy            maximum: 65535
308*d6239463SJeff LaBundy            description:
309*d6239463SJeff LaBundy              Specifies the maximum duration between subsequent tap gestures
310*d6239463SJeff LaBundy              (IQS7211E only).
311*d6239463SJeff LaBundy
312*d6239463SJeff LaBundy          azoteq,gesture-min-ms:
313*d6239463SJeff LaBundy            minimum: 0
314*d6239463SJeff LaBundy            maximum: 65535
315*d6239463SJeff LaBundy            description: Specifies the minimum duration of hold gestures.
316*d6239463SJeff LaBundy
317*d6239463SJeff LaBundy          azoteq,gesture-dist:
318*d6239463SJeff LaBundy            $ref: /schemas/types.yaml#/definitions/uint32
319*d6239463SJeff LaBundy            minimum: 0
320*d6239463SJeff LaBundy            maximum: 65535
321*d6239463SJeff LaBundy            description:
322*d6239463SJeff LaBundy              Specifies the minimum (swipe) or maximum (tap and hold) distance
323*d6239463SJeff LaBundy              a finger may travel to be considered a gesture.
324*d6239463SJeff LaBundy
325*d6239463SJeff LaBundy          azoteq,gesture-dist-rep:
326*d6239463SJeff LaBundy            $ref: /schemas/types.yaml#/definitions/uint32
327*d6239463SJeff LaBundy            minimum: 0
328*d6239463SJeff LaBundy            maximum: 65535
329*d6239463SJeff LaBundy            description:
330*d6239463SJeff LaBundy              Specifies the minimum distance a finger must travel to elicit a
331*d6239463SJeff LaBundy              repeated swipe gesture (IQS7211E only).
332*d6239463SJeff LaBundy
333*d6239463SJeff LaBundy          azoteq,gesture-angle:
334*d6239463SJeff LaBundy            $ref: /schemas/types.yaml#/definitions/uint32
335*d6239463SJeff LaBundy            minimum: 0
336*d6239463SJeff LaBundy            maximum: 75
337*d6239463SJeff LaBundy            description:
338*d6239463SJeff LaBundy              Specifies the maximum angle (in degrees) a finger may travel to
339*d6239463SJeff LaBundy              be considered a swipe gesture.
340*d6239463SJeff LaBundy
341*d6239463SJeff LaBundy          azoteq,thresh:
342*d6239463SJeff LaBundy            $ref: /schemas/types.yaml#/definitions/uint32
343*d6239463SJeff LaBundy            minimum: 0
344*d6239463SJeff LaBundy            maximum: 42
345*d6239463SJeff LaBundy            description: Specifies the palm gesture threshold (IQS7211E only).
346*d6239463SJeff LaBundy
347*d6239463SJeff LaBundy        additionalProperties: false
348*d6239463SJeff LaBundy
349*d6239463SJeff LaBundy    dependencies:
350*d6239463SJeff LaBundy      azoteq,rx-enable: ["azoteq,tx-enable"]
351*d6239463SJeff LaBundy      azoteq,tx-enable: ["azoteq,rx-enable"]
352*d6239463SJeff LaBundy      azoteq,channel-select: ["azoteq,rx-enable"]
353*d6239463SJeff LaBundy
354*d6239463SJeff LaBundy    additionalProperties: false
355*d6239463SJeff LaBundy
356*d6239463SJeff LaBundy  alp:
357*d6239463SJeff LaBundy    type: object
358*d6239463SJeff LaBundy    $ref: ../input.yaml#
359*d6239463SJeff LaBundy    description: Represents the alternate low-power channel (ALP).
360*d6239463SJeff LaBundy
361*d6239463SJeff LaBundy    properties:
362*d6239463SJeff LaBundy      azoteq,rx-enable:
363*d6239463SJeff LaBundy        $ref: /schemas/types.yaml#/definitions/uint32-array
364*d6239463SJeff LaBundy        minItems: 1
365*d6239463SJeff LaBundy        maxItems: 8
366*d6239463SJeff LaBundy        items:
367*d6239463SJeff LaBundy          minimum: 0
368*d6239463SJeff LaBundy          maximum: 7
369*d6239463SJeff LaBundy        description:
370*d6239463SJeff LaBundy          Specifies the CRx pin(s) associated with the ALP in no particular
371*d6239463SJeff LaBundy          order.
372*d6239463SJeff LaBundy
373*d6239463SJeff LaBundy      azoteq,tx-enable:
374*d6239463SJeff LaBundy        $ref: /schemas/types.yaml#/definitions/uint32-array
375*d6239463SJeff LaBundy        minItems: 1
376*d6239463SJeff LaBundy        maxItems: 12
377*d6239463SJeff LaBundy        items:
378*d6239463SJeff LaBundy          minimum: 0
379*d6239463SJeff LaBundy          maximum: 11
380*d6239463SJeff LaBundy        description:
381*d6239463SJeff LaBundy          Specifies the CTx pin(s) associated with the ALP in no particular
382*d6239463SJeff LaBundy          order.
383*d6239463SJeff LaBundy
384*d6239463SJeff LaBundy      azoteq,ati-frac-div-fine:
385*d6239463SJeff LaBundy        $ref: /schemas/types.yaml#/definitions/uint32
386*d6239463SJeff LaBundy        minimum: 0
387*d6239463SJeff LaBundy        maximum: 31
388*d6239463SJeff LaBundy        description: Specifies the ALP's ATI fine fractional divider.
389*d6239463SJeff LaBundy
390*d6239463SJeff LaBundy      azoteq,ati-frac-mult-coarse:
391*d6239463SJeff LaBundy        $ref: /schemas/types.yaml#/definitions/uint32
392*d6239463SJeff LaBundy        minimum: 0
393*d6239463SJeff LaBundy        maximum: 15
394*d6239463SJeff LaBundy        description: Specifies the ALP's ATI coarse fractional multiplier.
395*d6239463SJeff LaBundy
396*d6239463SJeff LaBundy      azoteq,ati-frac-div-coarse:
397*d6239463SJeff LaBundy        $ref: /schemas/types.yaml#/definitions/uint32
398*d6239463SJeff LaBundy        minimum: 0
399*d6239463SJeff LaBundy        maximum: 31
400*d6239463SJeff LaBundy        description: Specifies the ALP's ATI coarse fractional divider.
401*d6239463SJeff LaBundy
402*d6239463SJeff LaBundy      azoteq,ati-comp-div:
403*d6239463SJeff LaBundy        $ref: /schemas/types.yaml#/definitions/uint32
404*d6239463SJeff LaBundy        minimum: 0
405*d6239463SJeff LaBundy        maximum: 31
406*d6239463SJeff LaBundy        description: Specifies the ALP's ATI compensation divider.
407*d6239463SJeff LaBundy
408*d6239463SJeff LaBundy      azoteq,ati-target:
409*d6239463SJeff LaBundy        $ref: /schemas/types.yaml#/definitions/uint32
410*d6239463SJeff LaBundy        minimum: 0
411*d6239463SJeff LaBundy        maximum: 65535
412*d6239463SJeff LaBundy        description: Specifies the ALP's ATI target.
413*d6239463SJeff LaBundy
414*d6239463SJeff LaBundy      azoteq,ati-base:
415*d6239463SJeff LaBundy        $ref: /schemas/types.yaml#/definitions/uint32
416*d6239463SJeff LaBundy        multipleOf: 8
417*d6239463SJeff LaBundy        minimum: 0
418*d6239463SJeff LaBundy        maximum: 255
419*d6239463SJeff LaBundy        description: Specifies the ALP's ATI base.
420*d6239463SJeff LaBundy
421*d6239463SJeff LaBundy      azoteq,ati-mode:
422*d6239463SJeff LaBundy        $ref: /schemas/types.yaml#/definitions/uint32
423*d6239463SJeff LaBundy        enum: [0, 1]
424*d6239463SJeff LaBundy        description: |
425*d6239463SJeff LaBundy          Specifies the ALP's ATI mode as follows:
426*d6239463SJeff LaBundy          0: Partial
427*d6239463SJeff LaBundy          1: Full
428*d6239463SJeff LaBundy
429*d6239463SJeff LaBundy      azoteq,sense-mode:
430*d6239463SJeff LaBundy        $ref: /schemas/types.yaml#/definitions/uint32
431*d6239463SJeff LaBundy        enum: [0, 1]
432*d6239463SJeff LaBundy        description: |
433*d6239463SJeff LaBundy          Specifies the ALP's sensing mode as follows:
434*d6239463SJeff LaBundy          0: Self capacitive
435*d6239463SJeff LaBundy          1: Mutual capacitive
436*d6239463SJeff LaBundy
437*d6239463SJeff LaBundy      azoteq,debounce-enter:
438*d6239463SJeff LaBundy        $ref: /schemas/types.yaml#/definitions/uint32
439*d6239463SJeff LaBundy        minimum: 0
440*d6239463SJeff LaBundy        maximum: 255
441*d6239463SJeff LaBundy        description: Specifies the ALP's debounce entrance factor.
442*d6239463SJeff LaBundy
443*d6239463SJeff LaBundy      azoteq,debounce-exit:
444*d6239463SJeff LaBundy        $ref: /schemas/types.yaml#/definitions/uint32
445*d6239463SJeff LaBundy        minimum: 0
446*d6239463SJeff LaBundy        maximum: 255
447*d6239463SJeff LaBundy        description: Specifies the ALP's debounce exit factor.
448*d6239463SJeff LaBundy
449*d6239463SJeff LaBundy      azoteq,thresh:
450*d6239463SJeff LaBundy        $ref: /schemas/types.yaml#/definitions/uint32
451*d6239463SJeff LaBundy        minimum: 0
452*d6239463SJeff LaBundy        maximum: 65535
453*d6239463SJeff LaBundy        description: Specifies the ALP's proximity or touch threshold.
454*d6239463SJeff LaBundy
455*d6239463SJeff LaBundy      azoteq,conv-period:
456*d6239463SJeff LaBundy        $ref: /schemas/types.yaml#/definitions/uint32
457*d6239463SJeff LaBundy        minimum: 0
458*d6239463SJeff LaBundy        maximum: 255
459*d6239463SJeff LaBundy        description: Specifies the ALP's conversion period.
460*d6239463SJeff LaBundy
461*d6239463SJeff LaBundy      azoteq,conv-frac:
462*d6239463SJeff LaBundy        $ref: /schemas/types.yaml#/definitions/uint32
463*d6239463SJeff LaBundy        minimum: 0
464*d6239463SJeff LaBundy        maximum: 255
465*d6239463SJeff LaBundy        description: Specifies the ALP's conversion frequency fraction.
466*d6239463SJeff LaBundy
467*d6239463SJeff LaBundy      linux,code: true
468*d6239463SJeff LaBundy
469*d6239463SJeff LaBundy    additionalProperties: false
470*d6239463SJeff LaBundy
471*d6239463SJeff LaBundy  button:
472*d6239463SJeff LaBundy    type: object
473*d6239463SJeff LaBundy    description: Represents the inductive or capacitive button.
474*d6239463SJeff LaBundy
475*d6239463SJeff LaBundy    properties:
476*d6239463SJeff LaBundy      azoteq,ati-frac-div-fine:
477*d6239463SJeff LaBundy        $ref: /schemas/types.yaml#/definitions/uint32
478*d6239463SJeff LaBundy        minimum: 0
479*d6239463SJeff LaBundy        maximum: 31
480*d6239463SJeff LaBundy        description: Specifies the button's ATI fine fractional divider.
481*d6239463SJeff LaBundy
482*d6239463SJeff LaBundy      azoteq,ati-frac-mult-coarse:
483*d6239463SJeff LaBundy        $ref: /schemas/types.yaml#/definitions/uint32
484*d6239463SJeff LaBundy        minimum: 0
485*d6239463SJeff LaBundy        maximum: 15
486*d6239463SJeff LaBundy        description: Specifies the button's ATI coarse fractional multiplier.
487*d6239463SJeff LaBundy
488*d6239463SJeff LaBundy      azoteq,ati-frac-div-coarse:
489*d6239463SJeff LaBundy        $ref: /schemas/types.yaml#/definitions/uint32
490*d6239463SJeff LaBundy        minimum: 0
491*d6239463SJeff LaBundy        maximum: 31
492*d6239463SJeff LaBundy        description: Specifies the button's ATI coarse fractional divider.
493*d6239463SJeff LaBundy
494*d6239463SJeff LaBundy      azoteq,ati-comp-div:
495*d6239463SJeff LaBundy        $ref: /schemas/types.yaml#/definitions/uint32
496*d6239463SJeff LaBundy        minimum: 0
497*d6239463SJeff LaBundy        maximum: 31
498*d6239463SJeff LaBundy        description: Specifies the button's ATI compensation divider.
499*d6239463SJeff LaBundy
500*d6239463SJeff LaBundy      azoteq,ati-target:
501*d6239463SJeff LaBundy        $ref: /schemas/types.yaml#/definitions/uint32
502*d6239463SJeff LaBundy        minimum: 0
503*d6239463SJeff LaBundy        maximum: 65535
504*d6239463SJeff LaBundy        description: Specifies the button's ATI target.
505*d6239463SJeff LaBundy
506*d6239463SJeff LaBundy      azoteq,ati-base:
507*d6239463SJeff LaBundy        $ref: /schemas/types.yaml#/definitions/uint32
508*d6239463SJeff LaBundy        multipleOf: 8
509*d6239463SJeff LaBundy        minimum: 0
510*d6239463SJeff LaBundy        maximum: 255
511*d6239463SJeff LaBundy        description: Specifies the button's ATI base.
512*d6239463SJeff LaBundy
513*d6239463SJeff LaBundy      azoteq,ati-mode:
514*d6239463SJeff LaBundy        $ref: /schemas/types.yaml#/definitions/uint32
515*d6239463SJeff LaBundy        enum: [0, 1]
516*d6239463SJeff LaBundy        description: |
517*d6239463SJeff LaBundy          Specifies the button's ATI mode as follows:
518*d6239463SJeff LaBundy          0: Partial
519*d6239463SJeff LaBundy          1: Full
520*d6239463SJeff LaBundy
521*d6239463SJeff LaBundy      azoteq,sense-mode:
522*d6239463SJeff LaBundy        $ref: /schemas/types.yaml#/definitions/uint32
523*d6239463SJeff LaBundy        enum: [0, 1, 2]
524*d6239463SJeff LaBundy        description: |
525*d6239463SJeff LaBundy          Specifies the button's sensing mode as follows:
526*d6239463SJeff LaBundy          0: Self capacitive
527*d6239463SJeff LaBundy          1: Mutual capacitive
528*d6239463SJeff LaBundy          2: Inductive
529*d6239463SJeff LaBundy
530*d6239463SJeff LaBundy      azoteq,touch-enter:
531*d6239463SJeff LaBundy        $ref: /schemas/types.yaml#/definitions/uint32
532*d6239463SJeff LaBundy        minimum: 0
533*d6239463SJeff LaBundy        maximum: 255
534*d6239463SJeff LaBundy        description: Specifies the button's touch entrance factor.
535*d6239463SJeff LaBundy
536*d6239463SJeff LaBundy      azoteq,touch-exit:
537*d6239463SJeff LaBundy        $ref: /schemas/types.yaml#/definitions/uint32
538*d6239463SJeff LaBundy        minimum: 0
539*d6239463SJeff LaBundy        maximum: 255
540*d6239463SJeff LaBundy        description: Specifies the button's touch exit factor.
541*d6239463SJeff LaBundy
542*d6239463SJeff LaBundy      azoteq,debounce-enter:
543*d6239463SJeff LaBundy        $ref: /schemas/types.yaml#/definitions/uint32
544*d6239463SJeff LaBundy        minimum: 0
545*d6239463SJeff LaBundy        maximum: 255
546*d6239463SJeff LaBundy        description: Specifies the button's debounce entrance factor.
547*d6239463SJeff LaBundy
548*d6239463SJeff LaBundy      azoteq,debounce-exit:
549*d6239463SJeff LaBundy        $ref: /schemas/types.yaml#/definitions/uint32
550*d6239463SJeff LaBundy        minimum: 0
551*d6239463SJeff LaBundy        maximum: 255
552*d6239463SJeff LaBundy        description: Specifies the button's debounce exit factor.
553*d6239463SJeff LaBundy
554*d6239463SJeff LaBundy      azoteq,thresh:
555*d6239463SJeff LaBundy        $ref: /schemas/types.yaml#/definitions/uint32
556*d6239463SJeff LaBundy        minimum: 0
557*d6239463SJeff LaBundy        maximum: 65535
558*d6239463SJeff LaBundy        description: Specifies the button's proximity threshold.
559*d6239463SJeff LaBundy
560*d6239463SJeff LaBundy      azoteq,conv-period:
561*d6239463SJeff LaBundy        $ref: /schemas/types.yaml#/definitions/uint32
562*d6239463SJeff LaBundy        minimum: 0
563*d6239463SJeff LaBundy        maximum: 255
564*d6239463SJeff LaBundy        description: Specifies the button's conversion period.
565*d6239463SJeff LaBundy
566*d6239463SJeff LaBundy      azoteq,conv-frac:
567*d6239463SJeff LaBundy        $ref: /schemas/types.yaml#/definitions/uint32
568*d6239463SJeff LaBundy        minimum: 0
569*d6239463SJeff LaBundy        maximum: 255
570*d6239463SJeff LaBundy        description: Specifies the button's conversion frequency fraction.
571*d6239463SJeff LaBundy
572*d6239463SJeff LaBundy    patternProperties:
573*d6239463SJeff LaBundy      "^event-(prox|touch)$":
574*d6239463SJeff LaBundy        type: object
575*d6239463SJeff LaBundy        $ref: ../input.yaml#
576*d6239463SJeff LaBundy        description:
577*d6239463SJeff LaBundy          Represents a proximity or touch event reported by the button.
578*d6239463SJeff LaBundy
579*d6239463SJeff LaBundy        properties:
580*d6239463SJeff LaBundy          linux,code: true
581*d6239463SJeff LaBundy
582*d6239463SJeff LaBundy        additionalProperties: false
583*d6239463SJeff LaBundy
584*d6239463SJeff LaBundy    additionalProperties: false
585*d6239463SJeff LaBundy
586*d6239463SJeff LaBundy  wakeup-source: true
587*d6239463SJeff LaBundy
588*d6239463SJeff LaBundy  touchscreen-size-x: true
589*d6239463SJeff LaBundy  touchscreen-size-y: true
590*d6239463SJeff LaBundy  touchscreen-inverted-x: true
591*d6239463SJeff LaBundy  touchscreen-inverted-y: true
592*d6239463SJeff LaBundy  touchscreen-swapped-x-y: true
593*d6239463SJeff LaBundy
594*d6239463SJeff LaBundydependencies:
595*d6239463SJeff LaBundy  touchscreen-size-x: ["azoteq,num-contacts"]
596*d6239463SJeff LaBundy  touchscreen-size-y: ["azoteq,num-contacts"]
597*d6239463SJeff LaBundy  touchscreen-inverted-x: ["azoteq,num-contacts"]
598*d6239463SJeff LaBundy  touchscreen-inverted-y: ["azoteq,num-contacts"]
599*d6239463SJeff LaBundy  touchscreen-swapped-x-y: ["azoteq,num-contacts"]
600*d6239463SJeff LaBundy
601*d6239463SJeff LaBundyrequired:
602*d6239463SJeff LaBundy  - compatible
603*d6239463SJeff LaBundy  - reg
604*d6239463SJeff LaBundy  - irq-gpios
605*d6239463SJeff LaBundy
606*d6239463SJeff LaBundyadditionalProperties: false
607*d6239463SJeff LaBundy
608*d6239463SJeff LaBundyallOf:
609*d6239463SJeff LaBundy  - $ref: touchscreen.yaml#
610*d6239463SJeff LaBundy
611*d6239463SJeff LaBundy  - if:
612*d6239463SJeff LaBundy      properties:
613*d6239463SJeff LaBundy        compatible:
614*d6239463SJeff LaBundy          contains:
615*d6239463SJeff LaBundy            const: azoteq,iqs7210a
616*d6239463SJeff LaBundy
617*d6239463SJeff LaBundy    then:
618*d6239463SJeff LaBundy      properties:
619*d6239463SJeff LaBundy        alp:
620*d6239463SJeff LaBundy          properties:
621*d6239463SJeff LaBundy            azoteq,rx-enable:
622*d6239463SJeff LaBundy              maxItems: 4
623*d6239463SJeff LaBundy              items:
624*d6239463SJeff LaBundy                minimum: 4
625*d6239463SJeff LaBundy
626*d6239463SJeff LaBundy    else:
627*d6239463SJeff LaBundy      properties:
628*d6239463SJeff LaBundy        azoteq,timeout-press-ms: false
629*d6239463SJeff LaBundy
630*d6239463SJeff LaBundy        alp:
631*d6239463SJeff LaBundy          properties:
632*d6239463SJeff LaBundy            azoteq,ati-mode: false
633*d6239463SJeff LaBundy
634*d6239463SJeff LaBundy        button: false
635*d6239463SJeff LaBundy
636*d6239463SJeff LaBundy  - if:
637*d6239463SJeff LaBundy      properties:
638*d6239463SJeff LaBundy        compatible:
639*d6239463SJeff LaBundy          contains:
640*d6239463SJeff LaBundy            const: azoteq,iqs7211e
641*d6239463SJeff LaBundy
642*d6239463SJeff LaBundy    then:
643*d6239463SJeff LaBundy      properties:
644*d6239463SJeff LaBundy        reset-gpios: false
645*d6239463SJeff LaBundy
646*d6239463SJeff LaBundy        trackpad:
647*d6239463SJeff LaBundy          properties:
648*d6239463SJeff LaBundy            azoteq,tx-enable:
649*d6239463SJeff LaBundy              maxItems: 13
650*d6239463SJeff LaBundy              items:
651*d6239463SJeff LaBundy                maximum: 12
652*d6239463SJeff LaBundy
653*d6239463SJeff LaBundy        alp:
654*d6239463SJeff LaBundy          properties:
655*d6239463SJeff LaBundy            azoteq,tx-enable:
656*d6239463SJeff LaBundy              maxItems: 13
657*d6239463SJeff LaBundy              items:
658*d6239463SJeff LaBundy                maximum: 12
659*d6239463SJeff LaBundy
660*d6239463SJeff LaBundyexamples:
661*d6239463SJeff LaBundy  - |
662*d6239463SJeff LaBundy    #include <dt-bindings/gpio/gpio.h>
663*d6239463SJeff LaBundy    #include <dt-bindings/input/input.h>
664*d6239463SJeff LaBundy
665*d6239463SJeff LaBundy    i2c {
666*d6239463SJeff LaBundy            #address-cells = <1>;
667*d6239463SJeff LaBundy            #size-cells = <0>;
668*d6239463SJeff LaBundy
669*d6239463SJeff LaBundy            touch@56 {
670*d6239463SJeff LaBundy                    compatible = "azoteq,iqs7210a";
671*d6239463SJeff LaBundy                    reg = <0x56>;
672*d6239463SJeff LaBundy                    irq-gpios = <&gpio 4 GPIO_ACTIVE_LOW>;
673*d6239463SJeff LaBundy                    reset-gpios = <&gpio 17 (GPIO_ACTIVE_LOW |
674*d6239463SJeff LaBundy                                             GPIO_PUSH_PULL)>;
675*d6239463SJeff LaBundy                    azoteq,num-contacts = <2>;
676*d6239463SJeff LaBundy
677*d6239463SJeff LaBundy                    trackpad {
678*d6239463SJeff LaBundy                            azoteq,rx-enable = <6>, <5>, <4>, <3>, <2>;
679*d6239463SJeff LaBundy                            azoteq,tx-enable = <1>, <7>, <8>, <9>, <10>;
680*d6239463SJeff LaBundy                    };
681*d6239463SJeff LaBundy
682*d6239463SJeff LaBundy                    button {
683*d6239463SJeff LaBundy                            azoteq,sense-mode = <2>;
684*d6239463SJeff LaBundy                            azoteq,touch-enter = <40>;
685*d6239463SJeff LaBundy                            azoteq,touch-exit = <36>;
686*d6239463SJeff LaBundy
687*d6239463SJeff LaBundy                            event-touch {
688*d6239463SJeff LaBundy                                    linux,code = <KEY_HOME>;
689*d6239463SJeff LaBundy                            };
690*d6239463SJeff LaBundy                    };
691*d6239463SJeff LaBundy
692*d6239463SJeff LaBundy                    alp {
693*d6239463SJeff LaBundy                            azoteq,sense-mode = <1>;
694*d6239463SJeff LaBundy                            linux,code = <KEY_POWER>;
695*d6239463SJeff LaBundy                    };
696*d6239463SJeff LaBundy            };
697*d6239463SJeff LaBundy    };
698*d6239463SJeff LaBundy
699*d6239463SJeff LaBundy  - |
700*d6239463SJeff LaBundy    #include <dt-bindings/gpio/gpio.h>
701*d6239463SJeff LaBundy    #include <dt-bindings/input/input.h>
702*d6239463SJeff LaBundy
703*d6239463SJeff LaBundy    i2c {
704*d6239463SJeff LaBundy            #address-cells = <1>;
705*d6239463SJeff LaBundy            #size-cells = <0>;
706*d6239463SJeff LaBundy
707*d6239463SJeff LaBundy            touch@56 {
708*d6239463SJeff LaBundy                    compatible = "azoteq,iqs7211e";
709*d6239463SJeff LaBundy                    reg = <0x56>;
710*d6239463SJeff LaBundy                    irq-gpios = <&gpio 4 (GPIO_ACTIVE_LOW |
711*d6239463SJeff LaBundy                                          GPIO_OPEN_DRAIN)>;
712*d6239463SJeff LaBundy
713*d6239463SJeff LaBundy                    trackpad {
714*d6239463SJeff LaBundy                            event-tap {
715*d6239463SJeff LaBundy                                    linux,code = <KEY_PLAYPAUSE>;
716*d6239463SJeff LaBundy                            };
717*d6239463SJeff LaBundy
718*d6239463SJeff LaBundy                            event-tap-double {
719*d6239463SJeff LaBundy                                    linux,code = <KEY_SHUFFLE>;
720*d6239463SJeff LaBundy                            };
721*d6239463SJeff LaBundy
722*d6239463SJeff LaBundy                            event-tap-triple {
723*d6239463SJeff LaBundy                                    linux,code = <KEY_AGAIN>;
724*d6239463SJeff LaBundy                            };
725*d6239463SJeff LaBundy
726*d6239463SJeff LaBundy                            event-hold {
727*d6239463SJeff LaBundy                                    linux,code = <KEY_STOP>;
728*d6239463SJeff LaBundy                            };
729*d6239463SJeff LaBundy
730*d6239463SJeff LaBundy                            event-palm {
731*d6239463SJeff LaBundy                                    linux,code = <KEY_EXIT>;
732*d6239463SJeff LaBundy                            };
733*d6239463SJeff LaBundy
734*d6239463SJeff LaBundy                            event-swipe-x-pos {
735*d6239463SJeff LaBundy                                    linux,code = <KEY_REWIND>;
736*d6239463SJeff LaBundy                            };
737*d6239463SJeff LaBundy
738*d6239463SJeff LaBundy                            event-swipe-x-pos-hold {
739*d6239463SJeff LaBundy                                    linux,code = <KEY_PREVIOUS>;
740*d6239463SJeff LaBundy                            };
741*d6239463SJeff LaBundy
742*d6239463SJeff LaBundy                            event-swipe-x-neg {
743*d6239463SJeff LaBundy                                    linux,code = <KEY_FASTFORWARD>;
744*d6239463SJeff LaBundy                            };
745*d6239463SJeff LaBundy
746*d6239463SJeff LaBundy                            event-swipe-x-neg-hold {
747*d6239463SJeff LaBundy                                    linux,code = <KEY_NEXT>;
748*d6239463SJeff LaBundy                            };
749*d6239463SJeff LaBundy
750*d6239463SJeff LaBundy                            event-swipe-y-pos {
751*d6239463SJeff LaBundy                                    linux,code = <KEY_VOLUMEUP>;
752*d6239463SJeff LaBundy                            };
753*d6239463SJeff LaBundy
754*d6239463SJeff LaBundy                            event-swipe-y-pos-hold {
755*d6239463SJeff LaBundy                                    linux,code = <KEY_MUTE>;
756*d6239463SJeff LaBundy                            };
757*d6239463SJeff LaBundy
758*d6239463SJeff LaBundy                            event-swipe-y-neg {
759*d6239463SJeff LaBundy                                    linux,code = <KEY_VOLUMEDOWN>;
760*d6239463SJeff LaBundy                            };
761*d6239463SJeff LaBundy
762*d6239463SJeff LaBundy                            event-swipe-y-neg-hold {
763*d6239463SJeff LaBundy                                    linux,code = <KEY_MUTE>;
764*d6239463SJeff LaBundy                            };
765*d6239463SJeff LaBundy                    };
766*d6239463SJeff LaBundy            };
767*d6239463SJeff LaBundy    };
768*d6239463SJeff LaBundy
769*d6239463SJeff LaBundy...
770