blob: 418c168b223b7cdfffbb3d6b12f3d88e079d33c1 [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/azoteq,iqs7222.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Azoteq IQS7222A/B/C/D Capacitive Touch Controller
8
9maintainers:
10 - Jeff LaBundy <jeff@labundy.com>
11
12description: |
13 The Azoteq IQS7222A, IQS7222B, IQS7222C and IQS7222D are multichannel
14 capacitive touch controllers that feature additional sensing capabilities.
15
16 Link to datasheets: https://www.azoteq.com/
17
18properties:
19 compatible:
20 enum:
21 - azoteq,iqs7222a
22 - azoteq,iqs7222b
23 - azoteq,iqs7222c
24 - azoteq,iqs7222d
25
26 reg:
27 maxItems: 1
28
29 irq-gpios:
30 maxItems: 1
31 description:
32 Specifies the GPIO connected to the device's active-low RDY output.
33
34 reset-gpios:
35 maxItems: 1
36 description:
37 Specifies the GPIO connected to the device's active-low MCLR input. The
38 device is temporarily held in hardware reset prior to initialization if
39 this property is present.
40
41 azoteq,max-counts:
42 $ref: /schemas/types.yaml#/definitions/uint32
43 enum: [0, 1, 2, 3]
44 description: |
45 Specifies the maximum number of conversion periods (counts) that can be
46 reported as follows:
47 0: 1023
48 1: 2047
49 2: 4095
50 3: 16384
51
52 azoteq,auto-mode:
53 $ref: /schemas/types.yaml#/definitions/uint32
54 enum: [0, 1, 2, 3]
55 description: |
56 Specifies the number of conversions to occur before an interrupt is
57 generated as follows:
58 0: 4
59 1: 8
60 2: 16
61 3: 32
62
63 azoteq,ati-frac-div-fine:
64 $ref: /schemas/types.yaml#/definitions/uint32
65 minimum: 0
66 maximum: 31
67 description: Specifies the preloaded ATI fine fractional divider.
68
69 azoteq,ati-frac-div-coarse:
70 $ref: /schemas/types.yaml#/definitions/uint32
71 minimum: 0
72 maximum: 31
73 description: Specifies the preloaded ATI coarse fractional divider.
74
75 azoteq,ati-comp-select:
76 $ref: /schemas/types.yaml#/definitions/uint32
77 minimum: 0
78 maximum: 1023
79 description: Specifies the preloaded ATI compensation selection.
80
81 azoteq,lta-beta-lp:
82 $ref: /schemas/types.yaml#/definitions/uint32
83 minimum: 0
84 maximum: 15
85 description:
86 Specifies the long-term average filter damping factor to be applied during
87 low-power mode.
88
89 azoteq,lta-beta-np:
90 $ref: /schemas/types.yaml#/definitions/uint32
91 minimum: 0
92 maximum: 15
93 description:
94 Specifies the long-term average filter damping factor to be applied during
95 normal-power mode.
96
97 azoteq,counts-beta-lp:
98 $ref: /schemas/types.yaml#/definitions/uint32
99 minimum: 0
100 maximum: 15
101 description:
102 Specifies the counts filter damping factor to be applied during low-power
103 mode.
104
105 azoteq,counts-beta-np:
106 $ref: /schemas/types.yaml#/definitions/uint32
107 minimum: 0
108 maximum: 15
109 description:
110 Specifies the counts filter damping factor to be applied during normal-
111 power mode.
112
113 azoteq,lta-fast-beta-lp:
114 $ref: /schemas/types.yaml#/definitions/uint32
115 minimum: 0
116 maximum: 15
117 description:
118 Specifies the long-term average filter fast damping factor to be applied
119 during low-power mode.
120
121 azoteq,lta-fast-beta-np:
122 $ref: /schemas/types.yaml#/definitions/uint32
123 minimum: 0
124 maximum: 15
125 description:
126 Specifies the long-term average filter fast damping factor to be applied
127 during normal-power mode.
128
129 azoteq,timeout-ati-ms:
130 multipleOf: 500
131 minimum: 0
132 maximum: 32767500
133 description:
134 Specifies the delay (in ms) before ATI is retried following an ATI error.
135
136 azoteq,rate-ati-ms:
137 minimum: 0
138 maximum: 65535
139 description: Specifies the rate (in ms) at which ATI status is evaluated.
140
141 azoteq,timeout-np-ms:
142 minimum: 0
143 maximum: 65535
144 description:
145 Specifies the length of time (in ms) to wait for an event before moving
146 from normal-power mode to low-power mode.
147
148 azoteq,rate-np-ms:
149 minimum: 0
150 maximum: 3000
151 description: Specifies the report rate (in ms) during normal-power mode.
152
153 azoteq,timeout-lp-ms:
154 minimum: 0
155 maximum: 65535
156 description:
157 Specifies the length of time (in ms) to wait for an event before moving
158 from low-power mode to ultra-low-power mode.
159
160 azoteq,rate-lp-ms:
161 minimum: 0
162 maximum: 3000
163 description: Specifies the report rate (in ms) during low-power mode.
164
165 azoteq,timeout-ulp-ms:
166 minimum: 0
167 maximum: 65535
168 description:
169 Specifies the rate (in ms) at which channels not regularly sampled during
170 ultra-low-power mode are updated.
171
172 azoteq,rate-ulp-ms:
173 minimum: 0
174 maximum: 3000
175 description: Specifies the report rate (in ms) during ultra-low-power mode.
176
177 touchscreen-size-x: true
178 touchscreen-size-y: true
179 touchscreen-inverted-x: true
180 touchscreen-inverted-y: true
181 touchscreen-swapped-x-y: true
182
183 trackpad:
184 type: object
185 description: Represents all channels associated with the trackpad.
186
187 properties:
188 azoteq,channel-select:
189 $ref: /schemas/types.yaml#/definitions/uint32-array
190 minItems: 1
191 maxItems: 12
192 items:
193 minimum: 0
194 maximum: 13
195 description:
196 Specifies the order of the channels that participate in the trackpad.
197 Specify 255 to omit a given channel for the purpose of mapping a non-
198 rectangular trackpad.
199
200 azoteq,num-rows:
201 $ref: /schemas/types.yaml#/definitions/uint32
202 minimum: 1
203 maximum: 12
204 description: Specifies the number of rows that comprise the trackpad.
205
206 azoteq,num-cols:
207 $ref: /schemas/types.yaml#/definitions/uint32
208 minimum: 1
209 maximum: 12
210 description: Specifies the number of columns that comprise the trackpad.
211
212 azoteq,top-speed:
213 $ref: /schemas/types.yaml#/definitions/uint32
214 multipleOf: 4
215 minimum: 0
216 maximum: 1020
217 description:
218 Specifies the speed (in coordinates traveled per conversion) after
219 which coordinate filtering is no longer applied.
220
221 azoteq,bottom-speed:
222 $ref: /schemas/types.yaml#/definitions/uint32
223 minimum: 0
224 maximum: 255
225 description:
226 Specifies the speed (in coordinates traveled per conversion) after
227 which coordinate filtering is linearly reduced.
228
229 azoteq,use-prox:
230 type: boolean
231 description:
232 Directs the trackpad to respond to the proximity states of the
233 selected channels instead of their corresponding touch states.
234 Note the trackpad cannot report granular coordinates during a
235 state of proximity.
236
237 patternProperties:
238 "^azoteq,lower-cal-(x|y)$":
239 $ref: /schemas/types.yaml#/definitions/uint32
240 minimum: 0
241 maximum: 255
242 description: Specifies the trackpad's lower starting points.
243
244 "^azoteq,upper-cal-(x|y)$":
245 $ref: /schemas/types.yaml#/definitions/uint32
246 minimum: 0
247 maximum: 255
248 description: Specifies the trackpad's upper starting points.
249
250 "^event-(press|tap|(swipe|flick)-(x|y)-(pos|neg))$":
251 type: object
252 $ref: input.yaml#
253 description:
254 Represents a press or gesture event reported by the trackpad. Specify
255 'linux,code' under the press event to report absolute coordinates.
256
257 properties:
258 linux,code: true
259
260 azoteq,gesture-angle-tighten:
261 type: boolean
262 description:
263 Limits the tangent of the gesture angle to 0.5 (axial gestures
264 only). If specified in one direction, the effect is applied in
265 either direction.
266
267 azoteq,gesture-max-ms:
268 multipleOf: 16
269 minimum: 0
270 maximum: 4080
271 description:
272 Specifies the length of time (in ms) within which a tap, swipe
273 or flick gesture must be completed in order to be acknowledged
274 by the device. The number specified for any one swipe or flick
275 gesture applies to all other swipe or flick gestures.
276
277 azoteq,gesture-min-ms:
278 multipleOf: 16
279 minimum: 0
280 maximum: 4080
281 description:
282 Specifies the length of time (in ms) for which a tap gesture must
283 be held in order to be acknowledged by the device.
284
285 azoteq,gesture-dist:
286 $ref: /schemas/types.yaml#/definitions/uint32
287 minimum: 0
288 maximum: 65535
289 description:
290 Specifies the distance (in coordinates) across which a swipe or
291 flick gesture must travel in order to be acknowledged by the
292 device. The number specified for any one swipe or flick gesture
293 applies to all remaining swipe or flick gestures.
294
295 For tap gestures, this property specifies the distance from the
296 original point of contact across which the contact is permitted
297 to travel before the gesture is rejected by the device.
298
299 azoteq,gpio-select:
300 $ref: /schemas/types.yaml#/definitions/uint32-array
301 minItems: 1
302 maxItems: 3
303 items:
304 minimum: 0
305 maximum: 2
306 description: |
307 Specifies one or more GPIO mapped to the event as follows:
308 0: GPIO0
309 1: GPIO3
310 2: GPIO4
311
312 Note that although multiple events can be mapped to a single
313 GPIO, they must all be of the same type (proximity, touch or
314 trackpad gesture).
315
316 additionalProperties: false
317
318 required:
319 - azoteq,channel-select
320
321 additionalProperties: false
322
323patternProperties:
324 "^cycle-[0-9]$":
325 type: object
326 description: Represents a conversion cycle serving two sensing channels.
327
328 properties:
329 azoteq,conv-period:
330 $ref: /schemas/types.yaml#/definitions/uint32
331 minimum: 0
332 maximum: 255
333 description: Specifies the cycle's conversion period.
334
335 azoteq,conv-frac:
336 $ref: /schemas/types.yaml#/definitions/uint32
337 minimum: 0
338 maximum: 255
339 description: Specifies the cycle's conversion frequency fraction.
340
341 azoteq,tx-enable:
342 $ref: /schemas/types.yaml#/definitions/uint32-array
343 minItems: 1
344 maxItems: 9
345 items:
346 minimum: 0
347 maximum: 8
348 description: Specifies the CTx pin(s) associated with the cycle.
349
350 azoteq,rx-float-inactive:
351 type: boolean
352 description: Floats any inactive CRx pins instead of grounding them.
353
354 azoteq,dead-time-enable:
355 type: boolean
356 description:
357 Increases the denominator of the conversion frequency formula by one.
358
359 azoteq,tx-freq-fosc:
360 type: boolean
361 description:
362 Fixes the conversion frequency to that of the device's core clock.
363
364 azoteq,vbias-enable:
365 type: boolean
366 description: Enables the bias voltage for use during inductive sensing.
367
368 azoteq,sense-mode:
369 $ref: /schemas/types.yaml#/definitions/uint32
370 enum: [0, 1, 2, 3]
371 description: |
372 Specifies the cycle's sensing mode as follows:
373 0: None
374 1: Self capacitive
375 2: Mutual capacitive
376 3: Inductive
377
378 Note that in the case of IQS7222A, cycles 5 and 6 are restricted to
379 Hall-effect sensing.
380
381 azoteq,iref-enable:
382 type: boolean
383 description:
384 Enables the current reference for use during various sensing modes.
385
386 azoteq,iref-level:
387 $ref: /schemas/types.yaml#/definitions/uint32
388 minimum: 0
389 maximum: 15
390 description: Specifies the cycle's current reference level.
391
392 azoteq,iref-trim:
393 $ref: /schemas/types.yaml#/definitions/uint32
394 minimum: 0
395 maximum: 15
396 description: Specifies the cycle's current reference trim.
397
398 dependencies:
399 azoteq,iref-level: ["azoteq,iref-enable"]
400 azoteq,iref-trim: ["azoteq,iref-enable"]
401
402 additionalProperties: false
403
404 "^channel-([0-9]|1[0-9])$":
405 type: object
406 description:
407 Represents a single sensing channel. A channel is active if defined and
408 inactive otherwise.
409
410 Note that in the case of IQS7222A, channels 10 and 11 are restricted to
411 Hall-effect sensing with events reported on channel 10 only.
412
413 properties:
414 azoteq,ulp-allow:
415 type: boolean
416 description:
417 Permits the device to enter ultra-low-power mode while the channel
418 lies in a state of touch or proximity.
419
420 azoteq,ref-select:
421 $ref: /schemas/types.yaml#/definitions/uint32
422 minimum: 0
423 maximum: 9
424 description: Specifies a separate reference channel to be followed.
425
426 azoteq,ref-weight:
427 $ref: /schemas/types.yaml#/definitions/uint32
428 minimum: 0
429 maximum: 65535
430 description: Specifies the relative weight of the reference channel.
431
432 azoteq,use-prox:
433 type: boolean
434 description:
435 Activates the reference channel in response to proximity events
436 instead of touch events.
437
438 azoteq,counts-filt-enable:
439 type: boolean
440 description: Applies counts filtering to the channel.
441
442 azoteq,ati-band:
443 $ref: /schemas/types.yaml#/definitions/uint32
444 enum: [0, 1, 2, 3]
445 description: |
446 Specifies the channel's ATI band as a fraction of its ATI target as
447 follows:
448 0: 1/16
449 1: 1/8
450 2: 1/4
451 3: 1/2
452
453 azoteq,global-halt:
454 type: boolean
455 description:
456 Specifies that the channel's long-term average is to freeze if any
457 other participating channel lies in a proximity or touch state.
458
459 azoteq,invert-enable:
460 type: boolean
461 description:
462 Inverts the polarity of the states reported for proximity and touch
463 events relative to their respective thresholds.
464
465 azoteq,dual-direction:
466 type: boolean
467 description:
468 Specifies that the channel's long-term average is to freeze in the
469 presence of either increasing or decreasing counts, thereby permit-
470 ting events to be reported in either direction.
471
472 azoteq,rx-enable:
473 $ref: /schemas/types.yaml#/definitions/uint32-array
474 minItems: 1
475 maxItems: 4
476 items:
477 minimum: 0
478 maximum: 7
479 description: Specifies the CRx pin(s) associated with the channel.
480
481 azoteq,samp-cap-double:
482 type: boolean
483 description: Doubles the sampling capacitance from 40 pF to 80 pF.
484
485 azoteq,vref-half:
486 type: boolean
487 description: Halves the discharge threshold from 1.0 V to 0.5 V.
488
489 azoteq,proj-bias:
490 $ref: /schemas/types.yaml#/definitions/uint32
491 enum: [0, 1, 2, 3]
492 description: |
493 Specifies the bias current applied during mutual (projected)
494 capacitive sensing as follows:
495 0: 2 uA
496 1: 5 uA
497 2: 7 uA
498 3: 10 uA
499
500 azoteq,ati-target:
501 $ref: /schemas/types.yaml#/definitions/uint32
502 multipleOf: 8
503 minimum: 0
504 maximum: 2040
505 description: Specifies the channel's ATI target.
506
507 azoteq,ati-base:
508 $ref: /schemas/types.yaml#/definitions/uint32
509 multipleOf: 16
510 minimum: 0
511 maximum: 496
512 description: Specifies the channel's ATI base.
513
514 azoteq,ati-mode:
515 $ref: /schemas/types.yaml#/definitions/uint32
516 enum: [0, 1, 2, 3, 4, 5]
517 description: |
518 Specifies the channel's ATI mode as follows:
519 0: Disabled
520 1: Compensation
521 2: Compensation divider
522 3: Fine fractional divider
523 4: Coarse fractional divider
524 5: Full
525
526 azoteq,ati-frac-div-fine:
527 $ref: /schemas/types.yaml#/definitions/uint32
528 minimum: 0
529 maximum: 31
530 description: Specifies the channel's ATI fine fractional divider.
531
532 azoteq,ati-frac-mult-coarse:
533 $ref: /schemas/types.yaml#/definitions/uint32
534 minimum: 0
535 maximum: 15
536 description: Specifies the channel's ATI coarse fractional multiplier.
537
538 azoteq,ati-frac-div-coarse:
539 $ref: /schemas/types.yaml#/definitions/uint32
540 minimum: 0
541 maximum: 31
542 description: Specifies the channel's ATI coarse fractional divider.
543
544 azoteq,ati-comp-div:
545 $ref: /schemas/types.yaml#/definitions/uint32
546 minimum: 0
547 maximum: 31
548 description: Specifies the channel's ATI compensation divider.
549
550 azoteq,ati-comp-select:
551 $ref: /schemas/types.yaml#/definitions/uint32
552 minimum: 0
553 maximum: 1023
554 description: Specifies the channel's ATI compensation selection.
555
556 azoteq,debounce-enter:
557 $ref: /schemas/types.yaml#/definitions/uint32
558 minimum: 0
559 maximum: 15
560 description: Specifies the channel's debounce entrance factor.
561
562 azoteq,debounce-exit:
563 $ref: /schemas/types.yaml#/definitions/uint32
564 minimum: 0
565 maximum: 15
566 description: Specifies the channel's debounce exit factor.
567
568 patternProperties:
569 "^event-(prox|touch)$":
570 type: object
571 $ref: input.yaml#
572 description:
573 Represents a proximity or touch event reported by the channel.
574
575 properties:
576 azoteq,gpio-select:
577 $ref: /schemas/types.yaml#/definitions/uint32-array
578 minItems: 1
579 maxItems: 3
580 items:
581 minimum: 0
582 maximum: 2
583 description: |
584 Specifies one or more GPIO mapped to the event as follows:
585 0: GPIO0
586 1: GPIO3
587 2: GPIO4
588
589 Note that although multiple events can be mapped to a single
590 GPIO, they must all be of the same type (proximity, touch or
591 slider/trackpad gesture).
592
593 azoteq,thresh:
594 $ref: /schemas/types.yaml#/definitions/uint32
595 description:
596 Specifies the threshold for the event. Valid entries range from
597 0-127 and 0-255 for proximity and touch events, respectively.
598
599 azoteq,hyst:
600 $ref: /schemas/types.yaml#/definitions/uint32
601 minimum: 0
602 maximum: 255
603 description:
604 Specifies the hysteresis for the event (touch events only).
605
606 azoteq,timeout-press-ms:
607 multipleOf: 500
608 minimum: 0
609 maximum: 127500
610 description:
611 Specifies the length of time (in ms) to wait before automatically
612 releasing a press event. Specify zero to allow the press state to
613 persist indefinitely.
614
615 The IQS7222B does not feature channel-specific timeouts; the time-
616 out specified for any one channel applies to all channels.
617
618 linux,code: true
619
620 linux,input-type:
621 enum: [1, 5]
622 default: 1
623 description:
624 Specifies whether the event is to be interpreted as a key (1)
625 or a switch (5).
626
627 additionalProperties: false
628
629 dependencies:
630 azoteq,ref-weight: ["azoteq,ref-select"]
631 azoteq,use-prox: ["azoteq,ref-select"]
632
633 additionalProperties: false
634
635 "^slider-[0-1]$":
636 type: object
637 description: Represents a slider comprising three or four channels.
638
639 properties:
640 azoteq,channel-select:
641 $ref: /schemas/types.yaml#/definitions/uint32-array
642 minItems: 3
643 maxItems: 4
644 items:
645 minimum: 0
646 maximum: 9
647 description:
648 Specifies the order of the channels that participate in the slider.
649
650 azoteq,slider-size:
651 $ref: /schemas/types.yaml#/definitions/uint32
652 minimum: 1
653 maximum: 65535
654 description:
655 Specifies the slider's one-dimensional resolution, equal to the
656 maximum coordinate plus one.
657
658 azoteq,lower-cal:
659 $ref: /schemas/types.yaml#/definitions/uint32
660 minimum: 0
661 maximum: 255
662 description: Specifies the slider's lower starting point.
663
664 azoteq,upper-cal:
665 $ref: /schemas/types.yaml#/definitions/uint32
666 minimum: 0
667 maximum: 255
668 description: Specifies the slider's upper starting point.
669
670 azoteq,top-speed:
671 $ref: /schemas/types.yaml#/definitions/uint32
672 minimum: 0
673 maximum: 65535
674 description:
675 Specifies the speed (in coordinates traveled per conversion) after
676 which coordinate filtering is no longer applied.
677
678 azoteq,bottom-speed:
679 $ref: /schemas/types.yaml#/definitions/uint32
680 minimum: 0
681 maximum: 255
682 description:
683 Specifies the speed (in coordinates traveled per conversion) after
684 which coordinate filtering is linearly reduced.
685
686 azoteq,bottom-beta:
687 $ref: /schemas/types.yaml#/definitions/uint32
688 minimum: 0
689 maximum: 7
690 description:
691 Specifies the coordinate filter damping factor to be applied
692 while the speed of movement is below that which is specified
693 by azoteq,bottom-speed.
694
695 azoteq,static-beta:
696 type: boolean
697 description:
698 Applies the coordinate filter damping factor specified by
699 azoteq,bottom-beta regardless of the speed of movement.
700
701 azoteq,use-prox:
702 type: boolean
703 description:
704 Directs the slider to respond to the proximity states of the selected
705 channels instead of their corresponding touch states. Note the slider
706 cannot report granular coordinates during a state of proximity.
707
708 linux,axis:
709 $ref: /schemas/types.yaml#/definitions/uint32
710 description:
711 Specifies the absolute axis to which coordinates are mapped. Specify
712 ABS_WHEEL to operate the slider as a wheel (IQS7222C only).
713
714 patternProperties:
715 "^event-(press|tap|(swipe|flick)-(pos|neg))$":
716 type: object
717 $ref: input.yaml#
718 description:
719 Represents a press or gesture (IQS7222A only) event reported by
720 the slider.
721
722 properties:
723 linux,code: true
724
725 azoteq,gesture-max-ms:
726 multipleOf: 16
727 minimum: 0
728 maximum: 4080
729 description:
730 Specifies the length of time (in ms) within which a tap, swipe
731 or flick gesture must be completed in order to be acknowledged
732 by the device. The number specified for any one swipe or flick
733 gesture applies to all remaining swipe or flick gestures.
734
735 azoteq,gesture-min-ms:
736 multipleOf: 16
737 minimum: 0
738 maximum: 496
739 description:
740 Specifies the length of time (in ms) for which a tap gesture must
741 be held in order to be acknowledged by the device.
742
743 azoteq,gesture-dist:
744 $ref: /schemas/types.yaml#/definitions/uint32
745 multipleOf: 16
746 minimum: 0
747 maximum: 4080
748 description:
749 Specifies the distance (in coordinates) across which a swipe or
750 flick gesture must travel in order to be acknowledged by the
751 device. The number specified for any one swipe or flick gesture
752 applies to all remaining swipe or flick gestures.
753
754 azoteq,gpio-select:
755 $ref: /schemas/types.yaml#/definitions/uint32-array
756 minItems: 1
757 maxItems: 3
758 items:
759 minimum: 0
760 maximum: 2
761 description: |
762 Specifies one or more GPIO mapped to the event as follows:
763 0: GPIO0
764 1: GPIO3
765 2: GPIO4
766
767 Note that although multiple events can be mapped to a single
768 GPIO, they must all be of the same type (proximity, touch or
769 slider gesture).
770
771 additionalProperties: false
772
773 required:
774 - azoteq,channel-select
775
776 additionalProperties: false
777
778 "^gpio-[0-2]$":
779 type: object
780 description: |
781 Represents a GPIO mapped to one or more events as follows:
782 gpio-0: GPIO0
783 gpio-1: GPIO3
784 gpio-2: GPIO4
785
786 allOf:
Tom Rini762f85b2024-07-20 11:15:10 -0600787 - $ref: /schemas/pinctrl/pincfg-node.yaml#
Tom Rini53633a82024-02-29 12:33:36 -0500788
789 properties:
790 drive-open-drain: true
791
792 additionalProperties: false
793
794allOf:
795 - $ref: touchscreen/touchscreen.yaml#
796
797 - if:
798 properties:
799 compatible:
800 contains:
801 enum:
802 - azoteq,iqs7222a
803 - azoteq,iqs7222b
804 - azoteq,iqs7222c
805
806 then:
807 properties:
808 touchscreen-size-x: false
809 touchscreen-size-y: false
810 touchscreen-inverted-x: false
811 touchscreen-inverted-y: false
812 touchscreen-swapped-x-y: false
813
814 trackpad: false
815
816 patternProperties:
817 "^channel-([0-9]|1[0-9])$":
818 properties:
819 azoteq,counts-filt-enable: false
820
821 - if:
822 properties:
823 compatible:
824 contains:
825 enum:
826 - azoteq,iqs7222b
827 - azoteq,iqs7222c
828
829 then:
830 patternProperties:
831 "^channel-([0-9]|1[0-9])$":
832 properties:
833 azoteq,ulp-allow: false
834
835 - if:
836 properties:
837 compatible:
838 contains:
839 enum:
840 - azoteq,iqs7222b
841 - azoteq,iqs7222d
842
843 then:
844 patternProperties:
845 "^cycle-[0-9]$":
846 properties:
847 azoteq,iref-enable: false
848
849 "^channel-([0-9]|1[0-9])$":
850 properties:
851 azoteq,ref-select: false
852
853 "^slider-[0-1]$": false
854
855 - if:
856 properties:
857 compatible:
858 contains:
859 const: azoteq,iqs7222b
860
861 then:
862 patternProperties:
863 "^channel-([0-9]|1[0-9])$":
864 patternProperties:
865 "^event-(prox|touch)$":
866 properties:
867 azoteq,gpio-select: false
868
869 "^gpio-[0-2]$": false
870
871 - if:
872 properties:
873 compatible:
874 contains:
875 const: azoteq,iqs7222a
876
877 then:
878 patternProperties:
879 "^channel-([0-9]|1[0-9])$":
880 patternProperties:
881 "^event-(prox|touch)$":
882 properties:
883 azoteq,gpio-select:
884 maxItems: 1
885 items:
886 maximum: 0
887
888 "^slider-[0-1]$":
889 properties:
890 azoteq,slider-size:
891 multipleOf: 16
892 minimum: 16
893 maximum: 4080
894
895 azoteq,top-speed:
896 multipleOf: 4
897 maximum: 1020
898
899 patternProperties:
900 "^event-(press|tap|(swipe|flick)-(pos|neg))$":
901 properties:
902 azoteq,gpio-select:
903 maxItems: 1
904 items:
905 maximum: 0
906
907 else:
908 patternProperties:
909 "^slider-[0-1]$":
910 patternProperties:
911 "^event-(press|tap|(swipe|flick)-(pos|neg))$":
912 properties:
913 azoteq,gesture-max-ms: false
914
915 azoteq,gesture-min-ms: false
916
917 azoteq,gesture-dist: false
918
919required:
920 - compatible
921 - reg
922 - irq-gpios
923
924additionalProperties: false
925
926examples:
927 - |
928 #include <dt-bindings/gpio/gpio.h>
929 #include <dt-bindings/input/input.h>
930
931 i2c {
932 #address-cells = <1>;
933 #size-cells = <0>;
934
935 iqs7222a@44 {
936 compatible = "azoteq,iqs7222a";
937 reg = <0x44>;
938 irq-gpios = <&gpio 4 GPIO_ACTIVE_LOW>;
939 azoteq,lta-beta-lp = <7>;
940 azoteq,lta-beta-np = <8>;
941 azoteq,counts-beta-lp = <2>;
942 azoteq,counts-beta-np = <3>;
943 azoteq,lta-fast-beta-lp = <3>;
944 azoteq,lta-fast-beta-np = <4>;
945
946 cycle-0 {
947 azoteq,conv-period = <5>;
948 azoteq,conv-frac = <127>;
949 azoteq,tx-enable = <1>, <2>, <4>, <5>;
950 azoteq,dead-time-enable;
951 azoteq,sense-mode = <2>;
952 };
953
954 cycle-1 {
955 azoteq,conv-period = <5>;
956 azoteq,conv-frac = <127>;
957 azoteq,tx-enable = <5>;
958 azoteq,dead-time-enable;
959 azoteq,sense-mode = <2>;
960 };
961
962 cycle-2 {
963 azoteq,conv-period = <5>;
964 azoteq,conv-frac = <127>;
965 azoteq,tx-enable = <4>;
966 azoteq,dead-time-enable;
967 azoteq,sense-mode = <2>;
968 };
969
970 cycle-3 {
971 azoteq,conv-period = <5>;
972 azoteq,conv-frac = <127>;
973 azoteq,tx-enable = <2>;
974 azoteq,dead-time-enable;
975 azoteq,sense-mode = <2>;
976 };
977
978 cycle-4 {
979 azoteq,conv-period = <5>;
980 azoteq,conv-frac = <127>;
981 azoteq,tx-enable = <1>;
982 azoteq,dead-time-enable;
983 azoteq,sense-mode = <2>;
984 };
985
986 cycle-5 {
987 azoteq,conv-period = <2>;
988 azoteq,conv-frac = <0>;
989 };
990
991 cycle-6 {
992 azoteq,conv-period = <2>;
993 azoteq,conv-frac = <0>;
994 };
995
996 channel-0 {
997 azoteq,ulp-allow;
998 azoteq,global-halt;
999 azoteq,invert-enable;
1000 azoteq,rx-enable = <3>;
1001 azoteq,ati-target = <800>;
1002 azoteq,ati-base = <208>;
1003 azoteq,ati-mode = <5>;
1004 };
1005
1006 channel-1 {
1007 azoteq,global-halt;
1008 azoteq,invert-enable;
1009 azoteq,rx-enable = <3>;
1010 azoteq,ati-target = <496>;
1011 azoteq,ati-base = <208>;
1012 azoteq,ati-mode = <5>;
1013 };
1014
1015 channel-2 {
1016 azoteq,global-halt;
1017 azoteq,invert-enable;
1018 azoteq,rx-enable = <3>;
1019 azoteq,ati-target = <496>;
1020 azoteq,ati-base = <208>;
1021 azoteq,ati-mode = <5>;
1022 };
1023
1024 channel-3 {
1025 azoteq,global-halt;
1026 azoteq,invert-enable;
1027 azoteq,rx-enable = <3>;
1028 azoteq,ati-target = <496>;
1029 azoteq,ati-base = <208>;
1030 azoteq,ati-mode = <5>;
1031 };
1032
1033 channel-4 {
1034 azoteq,global-halt;
1035 azoteq,invert-enable;
1036 azoteq,rx-enable = <3>;
1037 azoteq,ati-target = <496>;
1038 azoteq,ati-base = <208>;
1039 azoteq,ati-mode = <5>;
1040 };
1041
1042 channel-5 {
1043 azoteq,ulp-allow;
1044 azoteq,global-halt;
1045 azoteq,invert-enable;
1046 azoteq,rx-enable = <6>;
1047 azoteq,ati-target = <800>;
1048 azoteq,ati-base = <144>;
1049 azoteq,ati-mode = <5>;
1050 };
1051
1052 channel-6 {
1053 azoteq,global-halt;
1054 azoteq,invert-enable;
1055 azoteq,rx-enable = <6>;
1056 azoteq,ati-target = <496>;
1057 azoteq,ati-base = <160>;
1058 azoteq,ati-mode = <5>;
1059
1060 event-touch {
1061 linux,code = <KEY_MUTE>;
1062 };
1063 };
1064
1065 channel-7 {
1066 azoteq,global-halt;
1067 azoteq,invert-enable;
1068 azoteq,rx-enable = <6>;
1069 azoteq,ati-target = <496>;
1070 azoteq,ati-base = <160>;
1071 azoteq,ati-mode = <5>;
1072
1073 event-touch {
1074 linux,code = <KEY_VOLUMEDOWN>;
1075 };
1076 };
1077
1078 channel-8 {
1079 azoteq,global-halt;
1080 azoteq,invert-enable;
1081 azoteq,rx-enable = <6>;
1082 azoteq,ati-target = <496>;
1083 azoteq,ati-base = <160>;
1084 azoteq,ati-mode = <5>;
1085
1086 event-touch {
1087 linux,code = <KEY_VOLUMEUP>;
1088 };
1089 };
1090
1091 channel-9 {
1092 azoteq,global-halt;
1093 azoteq,invert-enable;
1094 azoteq,rx-enable = <6>;
1095 azoteq,ati-target = <496>;
1096 azoteq,ati-base = <160>;
1097 azoteq,ati-mode = <5>;
1098
1099 event-touch {
1100 linux,code = <KEY_POWER>;
1101 };
1102 };
1103
1104 channel-10 {
1105 azoteq,ulp-allow;
1106 azoteq,ati-target = <496>;
1107 azoteq,ati-base = <112>;
1108
1109 event-touch {
1110 linux,code = <SW_LID>;
1111 linux,input-type = <EV_SW>;
1112 };
1113 };
1114
1115 channel-11 {
1116 azoteq,ati-target = <496>;
1117 azoteq,ati-base = <112>;
1118 };
1119
1120 slider-0 {
1121 azoteq,channel-select = <1>, <2>, <3>, <4>;
1122 azoteq,slider-size = <4080>;
1123 azoteq,upper-cal = <50>;
1124 azoteq,lower-cal = <30>;
1125 azoteq,top-speed = <200>;
1126 azoteq,bottom-speed = <1>;
1127 azoteq,bottom-beta = <3>;
1128
1129 event-tap {
1130 linux,code = <KEY_PLAYPAUSE>;
1131 azoteq,gesture-max-ms = <400>;
1132 azoteq,gesture-min-ms = <32>;
1133 };
1134
1135 event-flick-pos {
1136 linux,code = <KEY_NEXTSONG>;
1137 azoteq,gesture-max-ms = <800>;
1138 azoteq,gesture-dist = <800>;
1139 };
1140
1141 event-flick-neg {
1142 linux,code = <KEY_PREVIOUSSONG>;
1143 };
1144 };
1145 };
1146 };
1147
1148...