blob: 3c430d38594f111126268f54774aaa4469fe1754 [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/input/iqs269a.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Azoteq IQS269A Capacitive Touch Controller
8
9maintainers:
10 - Jeff LaBundy <jeff@labundy.com>
11
12description: |
13 The Azoteq IQS269A is an 8-channel capacitive touch controller that features
14 additional Hall-effect and inductive sensing capabilities.
15
16 Link to datasheet: https://www.azoteq.com/
17
18properties:
19 compatible:
20 const: azoteq,iqs269a
21
22 reg:
23 maxItems: 1
24
25 interrupts:
26 maxItems: 1
27
28 "#address-cells":
29 const: 1
30
31 "#size-cells":
32 const: 0
33
34 azoteq,hall-enable:
35 type: boolean
36 description:
37 Enables Hall-effect sensing on channels 6 and 7. In this case, keycodes
38 assigned to channel 6 are ignored and keycodes assigned to channel 7 are
39 interpreted as switch codes. Refer to the datasheet for requirements im-
40 posed on channels 6 and 7 by Hall-effect sensing.
41
42 azoteq,suspend-mode:
43 $ref: /schemas/types.yaml#/definitions/uint32
44 enum: [0, 1, 2, 3]
45 default: 0
46 description: |
47 Specifies the power mode during suspend as follows:
48 0: Automatic (same as normal runtime, i.e. suspend/resume disabled)
49 1: Low power (all sensing at a reduced reporting rate)
50 2: Ultra-low power (channel 0 proximity sensing)
51 3: Halt (no sensing)
52
53 azoteq,clk-div:
54 type: boolean
55 description: Divides the device's core clock by a factor of 4.
56
57 azoteq,ulp-update:
58 $ref: /schemas/types.yaml#/definitions/uint32
59 minimum: 0
60 maximum: 7
61 default: 3
62 description: Specifies the ultra-low-power mode update rate.
63
64 azoteq,reseed-offset:
65 type: boolean
66 description:
67 Applies an 8-count offset to all long-term averages upon either ATI or
68 reseed events.
69
70 azoteq,filt-str-lp-lta:
71 $ref: /schemas/types.yaml#/definitions/uint32
72 enum: [0, 1, 2, 3]
73 default: 0
74 description:
75 Specifies the long-term average filter strength during low-power mode.
76
77 azoteq,filt-str-lp-cnt:
78 $ref: /schemas/types.yaml#/definitions/uint32
79 enum: [0, 1, 2, 3]
80 default: 0
81 description:
82 Specifies the raw count filter strength during low-power mode.
83
84 azoteq,filt-str-np-lta:
85 $ref: /schemas/types.yaml#/definitions/uint32
86 enum: [0, 1, 2, 3]
87 default: 0
88 description:
89 Specifies the long-term average filter strength during normal-power mode.
90
91 azoteq,filt-str-np-cnt:
92 $ref: /schemas/types.yaml#/definitions/uint32
93 enum: [0, 1, 2, 3]
94 default: 0
95 description:
96 Specifies the raw count filter strength during normal-power mode.
97
98 azoteq,rate-np-ms:
99 minimum: 0
100 maximum: 255
101 default: 16
102 description: Specifies the report rate (in ms) during normal-power mode.
103
104 azoteq,rate-lp-ms:
105 minimum: 0
106 maximum: 255
107 default: 160
108 description: Specifies the report rate (in ms) during low-power mode.
109
110 azoteq,rate-ulp-ms:
111 multipleOf: 16
112 minimum: 0
113 maximum: 4080
114 default: 160
115 description: Specifies the report rate (in ms) during ultra-low-power mode.
116
117 azoteq,timeout-pwr-ms:
118 multipleOf: 512
119 minimum: 0
120 maximum: 130560
121 default: 2560
122 description:
123 Specifies the length of time (in ms) to wait for an event during normal-
124 power mode before transitioning to low-power mode.
125
126 azoteq,timeout-lta-ms:
127 multipleOf: 512
128 minimum: 0
129 maximum: 130560
130 default: 32768
131 description:
132 Specifies the length of time (in ms) to wait before resetting the long-
133 term average of all channels. Specify the maximum timeout to disable it
134 altogether.
135
136 azoteq,ati-band-disable:
137 type: boolean
138 description: Disables the ATI band check.
139
140 azoteq,ati-lp-only:
141 type: boolean
142 description: Limits automatic ATI to low-power mode.
143
144 azoteq,ati-band-tighten:
145 type: boolean
146 description: Tightens the ATI band from 1/8 to 1/16 of the desired target.
147
148 azoteq,filt-disable:
149 type: boolean
150 description: Disables all raw count filtering.
151
152 azoteq,gpio3-select:
153 $ref: /schemas/types.yaml#/definitions/uint32
154 minimum: 0
155 maximum: 7
156 default: 0
157 description:
158 Selects the channel for which the GPIO3 pin represents touch state.
159
160 azoteq,dual-direction:
161 type: boolean
162 description:
163 Specifies that long-term averages are to freeze in the presence of either
164 increasing or decreasing counts, thereby permitting events to be reported
165 in either direction.
166
167 azoteq,tx-freq:
168 $ref: /schemas/types.yaml#/definitions/uint32
169 enum: [0, 1, 2, 3]
170 default: 0
171 description: |
172 Specifies the inductive sensing excitation frequency as follows (paren-
173 thesized numbers represent the frequency if 'azoteq,clk-div' is present):
174 0: 16 MHz (4 MHz)
175 1: 8 MHz (2 MHz)
176 2: 4 MHz (1 MHz)
177 3: 2 MHz (500 kHz)
178
179 azoteq,global-cap-increase:
180 type: boolean
181 description: Increases the global capacitance adder from 0.5 pF to 1.5 pF.
182
183 azoteq,reseed-select:
184 $ref: /schemas/types.yaml#/definitions/uint32
185 enum: [0, 1, 2, 3]
186 default: 0
187 description: |
188 Specifies the event(s) that prompt the device to reseed (i.e. reset the
189 long-term average) of an associated channel as follows:
190 0: None
191 1: Proximity
192 2: Proximity or touch
193 3: Proximity, touch or deep touch
194
195 azoteq,tracking-enable:
196 type: boolean
197 description:
198 Enables all associated channels to track their respective reference
199 channels.
200
201 azoteq,filt-str-slider:
202 $ref: /schemas/types.yaml#/definitions/uint32
203 enum: [0, 1, 2, 3]
204 default: 1
205 description: Specifies the slider coordinate filter strength.
206
207patternProperties:
208 "^channel@[0-7]$":
209 type: object
210 description:
211 Represents a single sensing channel. A channel is active if defined and
212 inactive otherwise.
213
214 properties:
215 reg:
216 minimum: 0
217 maximum: 7
218 description: Index of the channel.
219
220 azoteq,reseed-disable:
221 type: boolean
222 description:
223 Prevents the channel from being reseeded if the long-term average
224 timeout (defined in 'azoteq,timeout-lta') expires.
225
226 azoteq,blocking-enable:
227 type: boolean
228 description: Specifies that the channel is a blocking channel.
229
230 azoteq,slider0-select:
231 type: boolean
232 description: Specifies that the channel participates in slider 0.
233
234 azoteq,slider1-select:
235 type: boolean
236 description: Specifies that the channel participates in slider 1.
237
238 azoteq,rx-enable:
239 $ref: /schemas/types.yaml#/definitions/uint32-array
240 minItems: 1
241 maxItems: 8
242 items:
243 minimum: 0
244 maximum: 7
245 description:
246 Specifies the CRX pin(s) associated with the channel. By default, only
247 the CRX pin corresponding to the channel's index is enabled (e.g. CRX0
248 for channel 0).
249
250 azoteq,tx-enable:
251 $ref: /schemas/types.yaml#/definitions/uint32-array
252 minItems: 1
253 maxItems: 8
254 items:
255 minimum: 0
256 maximum: 7
257 default: [0, 1, 2, 3, 4, 5, 6, 7]
258 description: Specifies the TX pin(s) associated with the channel.
259
260 azoteq,meas-cap-decrease:
261 type: boolean
262 description:
263 Decreases the internal measurement capacitance from 60 pF to 15 pF.
264
265 azoteq,rx-float-inactive:
266 type: boolean
267 description: Floats any inactive CRX pins instead of grounding them.
268
269 azoteq,local-cap-size:
270 $ref: /schemas/types.yaml#/definitions/uint32
271 enum: [0, 1, 2]
272 default: 0
273 description: |
274 Specifies the capacitance to be added to the channel as follows:
275 0: None
276 1: Global adder (based on 'azoteq,global-cap-increase')
277 2: Global adder + 0.5 pF
278
279 azoteq,invert-enable:
280 type: boolean
281 description:
282 Inverts the polarity of the states reported for proximity, touch and
283 deep-touch events relative to their respective thresholds.
284
285 azoteq,proj-bias:
286 $ref: /schemas/types.yaml#/definitions/uint32
287 enum: [0, 1, 2, 3]
288 default: 2
289 description: |
290 Specifies the bias current applied during projected-capacitance
291 sensing as follows:
292 0: 2.5 uA
293 1: 5 uA
294 2: 10 uA
295 3: 20 uA
296
297 azoteq,sense-mode:
298 $ref: /schemas/types.yaml#/definitions/uint32
299 enum: [0, 1, 9, 14, 15]
300 default: 0
301 description: |
302 Specifies the channel's sensing mode as follows:
303 0: Self capacitance
304 1: Projected capacitance
305 9: Self or mutual inductance
306 14: Hall effect
307 15: Temperature
308
309 azoteq,sense-freq:
310 $ref: /schemas/types.yaml#/definitions/uint32
311 enum: [0, 1, 2, 3]
312 default: 1
313 description: |
314 Specifies the channel's sensing frequency as follows (parenthesized
315 numbers represent the frequency if 'azoteq,clk-div' is present):
316 0: 4 MHz (1 MHz)
317 1: 2 MHz (500 kHz)
318 2: 1 MHz (250 kHz)
319 3: 500 kHz (125 kHz)
320
321 azoteq,static-enable:
322 type: boolean
323 description: Enables the static front-end for the channel.
324
325 azoteq,ati-mode:
326 $ref: /schemas/types.yaml#/definitions/uint32
327 enum: [0, 1, 2, 3]
328 default: 3
329 description: |
330 Specifies the channel's ATI mode as follows:
331 0: Disabled
332 1: Semi-partial
333 2: Partial
334 3: Full
335
336 azoteq,ati-base:
337 $ref: /schemas/types.yaml#/definitions/uint32
338 enum: [75, 100, 150, 200]
339 default: 100
340 description: Specifies the channel's ATI base.
341
342 azoteq,ati-target:
343 $ref: /schemas/types.yaml#/definitions/uint32
344 multipleOf: 32
345 minimum: 0
346 maximum: 2016
347 default: 512
348 description: Specifies the channel's ATI target.
349
350 azoteq,assoc-select:
351 $ref: /schemas/types.yaml#/definitions/uint32-array
352 minItems: 1
353 maxItems: 8
354 items:
355 minimum: 0
356 maximum: 7
357 description:
358 Specifies the associated channels for which the channel serves as a
359 reference channel. By default, no channels are selected.
360
361 azoteq,assoc-weight:
362 $ref: /schemas/types.yaml#/definitions/uint32
363 minimum: 0
364 maximum: 255
365 default: 0
366 description:
367 Specifies the channel's impact weight if it acts as an associated
368 channel (0 = 0% impact, 255 = 200% impact).
369
370 patternProperties:
371 "^event-prox(-alt)?$":
372 type: object
373 $ref: input.yaml#
374 description:
375 Represents a proximity event reported by the channel in response to
376 a decrease in counts. Node names suffixed with '-alt' instead corre-
377 spond to an increase in counts.
378
379 By default, the long-term average tracks an increase in counts such
380 that only events corresponding to a decrease in counts are reported
381 (refer to the datasheet for more information).
382
383 Specify 'azoteq,dual-direction' to freeze the long-term average when
384 the counts increase or decrease such that events of either direction
385 can be reported. Alternatively, specify 'azoteq,invert-enable' to in-
386 vert the polarity of the states reported by the channel.
387
388 Complementary events (e.g. event-touch and event-touch-alt) can both
389 be present and specify different key or switch codes, but not differ-
390 ent thresholds or hysteresis (if applicable).
391
392 properties:
393 azoteq,thresh:
394 $ref: /schemas/types.yaml#/definitions/uint32
395 minimum: 0
396 maximum: 255
397 default: 10
398 description: Specifies the threshold for the event.
399
400 linux,code: true
401
402 additionalProperties: false
403
404 "^event-touch(-alt)?$":
405 type: object
406 $ref: input.yaml#
407 description: Represents a touch event reported by the channel.
408
409 properties:
410 azoteq,thresh:
411 $ref: /schemas/types.yaml#/definitions/uint32
412 minimum: 0
413 maximum: 255
414 default: 8
415 description: Specifies the threshold for the event.
416
417 azoteq,hyst:
418 $ref: /schemas/types.yaml#/definitions/uint32
419 minimum: 0
420 maximum: 15
421 default: 4
422 description: Specifies the hysteresis for the event.
423
424 linux,code: true
425
426 additionalProperties: false
427
428 "^event-deep(-alt)?$":
429 type: object
430 $ref: input.yaml#
431 description: Represents a deep-touch event reported by the channel.
432
433 properties:
434 azoteq,thresh:
435 $ref: /schemas/types.yaml#/definitions/uint32
436 minimum: 0
437 maximum: 255
438 default: 26
439 description: Specifies the threshold for the event.
440
441 azoteq,hyst:
442 $ref: /schemas/types.yaml#/definitions/uint32
443 minimum: 0
444 maximum: 15
445 default: 0
446 description: Specifies the hysteresis for the event.
447
448 linux,code: true
449
450 additionalProperties: false
451
452 required:
453 - reg
454
455 additionalProperties: false
456
457required:
458 - compatible
459 - reg
460 - interrupts
461 - "#address-cells"
462 - "#size-cells"
463
464additionalProperties: false
465
466examples:
467 - |
468 #include <dt-bindings/input/input.h>
469 #include <dt-bindings/interrupt-controller/irq.h>
470
471 i2c {
472 #address-cells = <1>;
473 #size-cells = <0>;
474
475 touch@44 {
476 #address-cells = <1>;
477 #size-cells = <0>;
478
479 compatible = "azoteq,iqs269a";
480 reg = <0x44>;
481 interrupt-parent = <&gpio>;
482 interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
483
484 azoteq,hall-enable;
485 azoteq,suspend-mode = <2>;
486
487 channel@0 {
488 reg = <0x0>;
489
490 event-prox {
491 linux,code = <KEY_POWER>;
492 };
493 };
494
495 channel@1 {
496 reg = <0x1>;
497 azoteq,slider0-select;
498 };
499
500 channel@2 {
501 reg = <0x2>;
502 azoteq,slider0-select;
503 };
504
505 channel@3 {
506 reg = <0x3>;
507 azoteq,slider0-select;
508 };
509
510 channel@4 {
511 reg = <0x4>;
512 azoteq,slider0-select;
513 };
514
515 channel@5 {
516 reg = <0x5>;
517 azoteq,slider0-select;
518 };
519
520 channel@6 {
521 reg = <0x6>;
522 azoteq,invert-enable;
523 azoteq,static-enable;
524 azoteq,reseed-disable;
525 azoteq,rx-enable = <0>;
526 azoteq,sense-freq = <0x0>;
527 azoteq,sense-mode = <0xE>;
528 azoteq,ati-mode = <0x0>;
529 azoteq,ati-base = <200>;
530 azoteq,ati-target = <320>;
531 };
532
533 channel@7 {
534 reg = <0x7>;
535 azoteq,invert-enable;
536 azoteq,static-enable;
537 azoteq,reseed-disable;
538 azoteq,rx-enable = <0>, <6>;
539 azoteq,sense-freq = <0x0>;
540 azoteq,sense-mode = <0xE>;
541 azoteq,ati-mode = <0x3>;
542 azoteq,ati-base = <200>;
543 azoteq,ati-target = <320>;
544
545 event-touch {
546 linux,code = <SW_LID>;
547 };
548 };
549 };
550 };
551
552...