1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
4 $id: http://devicetree.org/schemas/input/azoteq,iqs7222.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
7 title: Azoteq IQS7222A/B/C Capacitive Touch Controller
10 - Jeff LaBundy <jeff@labundy.com>
13 The Azoteq IQS7222A, IQS7222B and IQS7222C are multichannel capacitive touch
14 controllers that feature additional sensing capabilities.
16 Link to datasheets: https://www.azoteq.com/
31 Specifies the GPIO connected to the device's active-low RDY output.
36 Specifies the GPIO connected to the device's active-low MCLR input. The
37 device is temporarily held in hardware reset prior to initialization if
38 this property is present.
40 azoteq,rf-filt-enable:
42 description: Enables the device's internal RF filter.
45 $ref: /schemas/types.yaml#/definitions/uint32
48 Specifies the maximum number of conversion periods (counts) that can be
56 $ref: /schemas/types.yaml#/definitions/uint32
59 Specifies the number of conversions to occur before an interrupt is
66 azoteq,ati-frac-div-fine:
67 $ref: /schemas/types.yaml#/definitions/uint32
70 description: Specifies the preloaded ATI fine fractional divider.
72 azoteq,ati-frac-div-coarse:
73 $ref: /schemas/types.yaml#/definitions/uint32
76 description: Specifies the preloaded ATI coarse fractional divider.
78 azoteq,ati-comp-select:
79 $ref: /schemas/types.yaml#/definitions/uint32
82 description: Specifies the preloaded ATI compensation selection.
85 $ref: /schemas/types.yaml#/definitions/uint32
89 Specifies the long-term average filter damping factor to be applied during
93 $ref: /schemas/types.yaml#/definitions/uint32
97 Specifies the long-term average filter damping factor to be applied during
100 azoteq,counts-beta-lp:
101 $ref: /schemas/types.yaml#/definitions/uint32
105 Specifies the counts filter damping factor to be applied during low-power
108 azoteq,counts-beta-np:
109 $ref: /schemas/types.yaml#/definitions/uint32
113 Specifies the counts filter damping factor to be applied during normal-
116 azoteq,lta-fast-beta-lp:
117 $ref: /schemas/types.yaml#/definitions/uint32
121 Specifies the long-term average filter fast damping factor to be applied
122 during low-power mode.
124 azoteq,lta-fast-beta-np:
125 $ref: /schemas/types.yaml#/definitions/uint32
129 Specifies the long-term average filter fast damping factor to be applied
130 during normal-power mode.
132 azoteq,timeout-ati-ms:
137 Specifies the delay (in ms) before ATI is retried following an ATI error.
142 description: Specifies the rate (in ms) at which ATI status is evaluated.
144 azoteq,timeout-np-ms:
148 Specifies the length of time (in ms) to wait for an event before moving
149 from normal-power mode to low-power mode.
154 description: Specifies the report rate (in ms) during normal-power mode.
156 azoteq,timeout-lp-ms:
160 Specifies the length of time (in ms) to wait for an event before moving
161 from low-power mode to ultra-low-power mode.
166 description: Specifies the report rate (in ms) during low-power mode.
168 azoteq,timeout-ulp-ms:
172 Specifies the rate (in ms) at which channels not regularly sampled during
173 ultra-low-power mode are updated.
178 description: Specifies the report rate (in ms) during ultra-low-power mode.
183 description: Represents a conversion cycle serving two sensing channels.
187 $ref: /schemas/types.yaml#/definitions/uint32
190 description: Specifies the cycle's conversion period.
193 $ref: /schemas/types.yaml#/definitions/uint32
196 description: Specifies the cycle's conversion frequency fraction.
199 $ref: /schemas/types.yaml#/definitions/uint32-array
205 description: Specifies the CTx pin(s) associated with the cycle.
207 azoteq,rx-float-inactive:
209 description: Floats any inactive CRx pins instead of grounding them.
211 azoteq,dead-time-enable:
214 Increases the denominator of the conversion frequency formula by one.
219 Fixes the conversion frequency to that of the device's core clock.
223 description: Enables the bias voltage for use during inductive sensing.
226 $ref: /schemas/types.yaml#/definitions/uint32
229 Specifies the cycle's sensing mode as follows:
235 Note that in the case of IQS7222A, cycles 5 and 6 are restricted to
241 Enables the current reference for use during various sensing modes.
244 $ref: /schemas/types.yaml#/definitions/uint32
247 description: Specifies the cycle's current reference level.
250 $ref: /schemas/types.yaml#/definitions/uint32
253 description: Specifies the cycle's current reference trim.
256 azoteq,iref-level: ["azoteq,iref-enable"]
257 azoteq,iref-trim: ["azoteq,iref-enable"]
259 additionalProperties: false
261 "^channel-([0-9]|1[0-9])$":
264 Represents a single sensing channel. A channel is active if defined and
267 Note that in the case of IQS7222A, channels 10 and 11 are restricted to
268 Hall-effect sensing with events reported on channel 10 only.
274 Permits the device to enter ultra-low-power mode while the channel
275 lies in a state of touch or proximity.
278 $ref: /schemas/types.yaml#/definitions/uint32
281 description: Specifies a separate reference channel to be followed.
284 $ref: /schemas/types.yaml#/definitions/uint32
287 description: Specifies the relative weight of the reference channel.
292 Activates the reference channel in response to proximity events
293 instead of touch events.
296 $ref: /schemas/types.yaml#/definitions/uint32
299 Specifies the channel's ATI band as a fraction of its ATI target as
309 Specifies that the channel's long-term average is to freeze if any
310 other participating channel lies in a proximity or touch state.
312 azoteq,invert-enable:
315 Inverts the polarity of the states reported for proximity and touch
316 events relative to their respective thresholds.
318 azoteq,dual-direction:
321 Specifies that the channel's long-term average is to freeze in the
322 presence of either increasing or decreasing counts, thereby permit-
323 ting events to be reported in either direction.
326 $ref: /schemas/types.yaml#/definitions/uint32-array
332 description: Specifies the CRx pin(s) associated with the channel.
334 azoteq,samp-cap-double:
336 description: Doubles the sampling capacitance from 40 pF to 80 pF.
340 description: Halves the discharge threshold from 1.0 V to 0.5 V.
343 $ref: /schemas/types.yaml#/definitions/uint32
346 Specifies the bias current applied during mutual (projected)
347 capacitive sensing as follows:
354 $ref: /schemas/types.yaml#/definitions/uint32
358 description: Specifies the channel's ATI target.
361 $ref: /schemas/types.yaml#/definitions/uint32
365 description: Specifies the channel's ATI base.
368 $ref: /schemas/types.yaml#/definitions/uint32
369 enum: [0, 1, 2, 3, 4, 5]
371 Specifies the channel's ATI mode as follows:
374 2: Compensation divider
375 3: Fine fractional divider
376 4: Coarse fractional divider
379 azoteq,ati-frac-div-fine:
380 $ref: /schemas/types.yaml#/definitions/uint32
383 description: Specifies the channel's ATI fine fractional divider.
385 azoteq,ati-frac-mult-coarse:
386 $ref: /schemas/types.yaml#/definitions/uint32
389 description: Specifies the channel's ATI coarse fractional multiplier.
391 azoteq,ati-frac-div-coarse:
392 $ref: /schemas/types.yaml#/definitions/uint32
395 description: Specifies the channel's ATI coarse fractional divider.
398 $ref: /schemas/types.yaml#/definitions/uint32
401 description: Specifies the channel's ATI compensation divider.
403 azoteq,ati-comp-select:
404 $ref: /schemas/types.yaml#/definitions/uint32
407 description: Specifies the channel's ATI compensation selection.
409 azoteq,debounce-enter:
410 $ref: /schemas/types.yaml#/definitions/uint32
413 description: Specifies the channel's debounce entrance factor.
415 azoteq,debounce-exit:
416 $ref: /schemas/types.yaml#/definitions/uint32
419 description: Specifies the channel's debounce exit factor.
422 "^event-(prox|touch)$":
425 Represents a proximity or touch event reported by the channel.
429 $ref: /schemas/types.yaml#/definitions/uint32-array
436 Specifies one or more GPIO mapped to the event as follows:
438 1: GPIO3 (IQS7222C only)
439 2: GPIO4 (IQS7222C only)
441 Note that although multiple events can be mapped to a single
442 GPIO, they must all be of the same type (proximity, touch or
446 $ref: /schemas/types.yaml#/definitions/uint32
448 Specifies the threshold for the event. Valid entries range from
449 0-127 and 0-255 for proximity and touch events, respectively.
452 $ref: /schemas/types.yaml#/definitions/uint32
456 Specifies the hysteresis for the event (touch events only).
458 azoteq,timeout-press-ms:
463 Specifies the length of time (in ms) to wait before automatically
464 releasing a press event. Specify zero to allow the press state to
465 persist indefinitely.
467 The IQS7222B does not feature channel-specific timeouts; the time-
468 out specified for any one channel applies to all channels.
471 $ref: /schemas/types.yaml#/definitions/uint32
473 Numeric key or switch code associated with the event. Specify
474 KEY_RESERVED (0) to opt out of event reporting.
477 $ref: /schemas/types.yaml#/definitions/uint32
481 Specifies whether the event is to be interpreted as a key (1)
487 additionalProperties: false
490 azoteq,ref-weight: ["azoteq,ref-select"]
491 azoteq,use-prox: ["azoteq,ref-select"]
493 additionalProperties: false
497 description: Represents a slider comprising three or four channels.
500 azoteq,channel-select:
501 $ref: /schemas/types.yaml#/definitions/uint32-array
508 Specifies the order of the channels that participate in the slider.
511 $ref: /schemas/types.yaml#/definitions/uint32
515 Specifies the slider's one-dimensional resolution, equal to the
516 maximum coordinate plus one.
519 $ref: /schemas/types.yaml#/definitions/uint32
522 description: Specifies the slider's lower starting point.
525 $ref: /schemas/types.yaml#/definitions/uint32
528 description: Specifies the slider's upper starting point.
531 $ref: /schemas/types.yaml#/definitions/uint32
535 Specifies the speed of movement after which coordinate filtering is
539 $ref: /schemas/types.yaml#/definitions/uint32
544 Specifies the speed of movement after which coordinate filtering is
548 $ref: /schemas/types.yaml#/definitions/uint32
552 Specifies the coordinate filter damping factor to be applied
553 while the speed of movement is below that which is specified
554 by azoteq,bottom-speed.
559 Applies the coordinate filter damping factor specified by
560 azoteq,bottom-beta regardless of the speed of movement.
565 Directs the slider to respond to the proximity states of the selected
566 channels instead of their corresponding touch states. Note the slider
567 cannot report granular coordinates during a state of proximity.
570 $ref: /schemas/types.yaml#/definitions/uint32
572 Specifies the absolute axis to which coordinates are mapped. Specify
573 ABS_WHEEL to operate the slider as a wheel (IQS7222C only).
576 "^event-(press|tap|(swipe|flick)-(pos|neg))$":
579 Represents a press or gesture (IQS7222A only) event reported by
584 $ref: /schemas/types.yaml#/definitions/uint32
585 description: Numeric key code associated with the event.
587 azoteq,gesture-max-ms:
592 Specifies the length of time (in ms) within which a tap, swipe
593 or flick gesture must be completed in order to be acknowledged
594 by the device. The number specified for any one swipe or flick
595 gesture applies to all remaining swipe or flick gestures.
597 azoteq,gesture-min-ms:
602 Specifies the length of time (in ms) for which a tap gesture must
603 be held in order to be acknowledged by the device.
606 $ref: /schemas/types.yaml#/definitions/uint32
611 Specifies the distance across which a swipe or flick gesture must
612 travel in order to be acknowledged by the device. The number spec-
613 ified for any one swipe or flick gesture applies to all remaining
614 swipe or flick gestures.
617 $ref: /schemas/types.yaml#/definitions/uint32-array
624 Specifies an individual GPIO mapped to a tap, swipe or flick
630 Note that although multiple events can be mapped to a single
631 GPIO, they must all be of the same type (proximity, touch or
637 additionalProperties: false
640 - azoteq,channel-select
642 additionalProperties: false
647 Represents a GPIO mapped to one or more events as follows:
649 gpio-1: GPIO3 (IQS7222C only)
650 gpio-2: GPIO4 (IQS7222C only)
653 - $ref: ../pinctrl/pincfg-node.yaml#
656 drive-open-drain: true
658 additionalProperties: false
665 const: azoteq,iqs7222b
671 azoteq,iref-enable: false
673 "^channel-([0-9]|1[0-9])$":
675 azoteq,ref-select: false
678 "^event-(prox|touch)$":
680 azoteq,gpio-select: false
682 "^slider-[0-1]$": false
684 "^gpio-[0-2]$": false
690 const: azoteq,iqs7222a
694 "^channel-([0-9]|1[0-9])$":
696 "^event-(prox|touch)$":
715 "^channel-([0-9]|1[0-9])$":
717 azoteq,ulp-allow: false
721 "^event-(press|tap|(swipe|flick)-(pos|neg))$":
723 azoteq,gesture-max-ms: false
725 azoteq,gesture-min-ms: false
727 azoteq,gesture-dist: false
729 azoteq,gpio-select: false
736 additionalProperties: false
740 #include <dt-bindings/gpio/gpio.h>
741 #include <dt-bindings/input/input.h>
744 #address-cells = <1>;
748 compatible = "azoteq,iqs7222a";
750 irq-gpios = <&gpio 4 GPIO_ACTIVE_LOW>;
751 azoteq,lta-beta-lp = <7>;
752 azoteq,lta-beta-np = <8>;
753 azoteq,counts-beta-lp = <2>;
754 azoteq,counts-beta-np = <3>;
755 azoteq,lta-fast-beta-lp = <3>;
756 azoteq,lta-fast-beta-np = <4>;
759 azoteq,conv-period = <5>;
760 azoteq,conv-frac = <127>;
761 azoteq,tx-enable = <1>, <2>, <4>, <5>;
762 azoteq,dead-time-enable;
763 azoteq,sense-mode = <2>;
767 azoteq,conv-period = <5>;
768 azoteq,conv-frac = <127>;
769 azoteq,tx-enable = <5>;
770 azoteq,dead-time-enable;
771 azoteq,sense-mode = <2>;
775 azoteq,conv-period = <5>;
776 azoteq,conv-frac = <127>;
777 azoteq,tx-enable = <4>;
778 azoteq,dead-time-enable;
779 azoteq,sense-mode = <2>;
783 azoteq,conv-period = <5>;
784 azoteq,conv-frac = <127>;
785 azoteq,tx-enable = <2>;
786 azoteq,dead-time-enable;
787 azoteq,sense-mode = <2>;
791 azoteq,conv-period = <5>;
792 azoteq,conv-frac = <127>;
793 azoteq,tx-enable = <1>;
794 azoteq,dead-time-enable;
795 azoteq,sense-mode = <2>;
799 azoteq,conv-period = <2>;
800 azoteq,conv-frac = <0>;
804 azoteq,conv-period = <2>;
805 azoteq,conv-frac = <0>;
811 azoteq,invert-enable;
812 azoteq,rx-enable = <3>;
813 azoteq,ati-target = <800>;
814 azoteq,ati-base = <208>;
815 azoteq,ati-mode = <5>;
820 azoteq,invert-enable;
821 azoteq,rx-enable = <3>;
822 azoteq,ati-target = <496>;
823 azoteq,ati-base = <208>;
824 azoteq,ati-mode = <5>;
829 azoteq,invert-enable;
830 azoteq,rx-enable = <3>;
831 azoteq,ati-target = <496>;
832 azoteq,ati-base = <208>;
833 azoteq,ati-mode = <5>;
838 azoteq,invert-enable;
839 azoteq,rx-enable = <3>;
840 azoteq,ati-target = <496>;
841 azoteq,ati-base = <208>;
842 azoteq,ati-mode = <5>;
847 azoteq,invert-enable;
848 azoteq,rx-enable = <3>;
849 azoteq,ati-target = <496>;
850 azoteq,ati-base = <208>;
851 azoteq,ati-mode = <5>;
857 azoteq,invert-enable;
858 azoteq,rx-enable = <6>;
859 azoteq,ati-target = <800>;
860 azoteq,ati-base = <144>;
861 azoteq,ati-mode = <5>;
866 azoteq,invert-enable;
867 azoteq,rx-enable = <6>;
868 azoteq,ati-target = <496>;
869 azoteq,ati-base = <160>;
870 azoteq,ati-mode = <5>;
873 linux,code = <KEY_MUTE>;
879 azoteq,invert-enable;
880 azoteq,rx-enable = <6>;
881 azoteq,ati-target = <496>;
882 azoteq,ati-base = <160>;
883 azoteq,ati-mode = <5>;
886 linux,code = <KEY_VOLUMEDOWN>;
892 azoteq,invert-enable;
893 azoteq,rx-enable = <6>;
894 azoteq,ati-target = <496>;
895 azoteq,ati-base = <160>;
896 azoteq,ati-mode = <5>;
899 linux,code = <KEY_VOLUMEUP>;
905 azoteq,invert-enable;
906 azoteq,rx-enable = <6>;
907 azoteq,ati-target = <496>;
908 azoteq,ati-base = <160>;
909 azoteq,ati-mode = <5>;
912 linux,code = <KEY_POWER>;
918 azoteq,ati-target = <496>;
919 azoteq,ati-base = <112>;
922 linux,code = <SW_LID>;
923 linux,input-type = <EV_SW>;
928 azoteq,ati-target = <496>;
929 azoteq,ati-base = <112>;
933 azoteq,channel-select = <1>, <2>, <3>, <4>;
934 azoteq,slider-size = <4080>;
935 azoteq,upper-cal = <50>;
936 azoteq,lower-cal = <30>;
937 azoteq,top-speed = <200>;
938 azoteq,bottom-speed = <1>;
939 azoteq,bottom-beta = <3>;
942 linux,code = <KEY_PLAYPAUSE>;
943 azoteq,gesture-max-ms = <600>;
944 azoteq,gesture-min-ms = <24>;
948 linux,code = <KEY_NEXTSONG>;
949 azoteq,gesture-max-ms = <600>;
950 azoteq,gesture-dist = <816>;
954 linux,code = <KEY_PREVIOUSSONG>;