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