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.
41 $ref: /schemas/types.yaml#/definitions/uint32
44 Specifies the maximum number of conversion periods (counts) that can be
52 $ref: /schemas/types.yaml#/definitions/uint32
55 Specifies the number of conversions to occur before an interrupt is
62 azoteq,ati-frac-div-fine:
63 $ref: /schemas/types.yaml#/definitions/uint32
66 description: Specifies the preloaded ATI fine fractional divider.
68 azoteq,ati-frac-div-coarse:
69 $ref: /schemas/types.yaml#/definitions/uint32
72 description: Specifies the preloaded ATI coarse fractional divider.
74 azoteq,ati-comp-select:
75 $ref: /schemas/types.yaml#/definitions/uint32
78 description: Specifies the preloaded ATI compensation selection.
81 $ref: /schemas/types.yaml#/definitions/uint32
85 Specifies the long-term average filter damping factor to be applied during
89 $ref: /schemas/types.yaml#/definitions/uint32
93 Specifies the long-term average filter damping factor to be applied during
96 azoteq,counts-beta-lp:
97 $ref: /schemas/types.yaml#/definitions/uint32
101 Specifies the counts filter damping factor to be applied during low-power
104 azoteq,counts-beta-np:
105 $ref: /schemas/types.yaml#/definitions/uint32
109 Specifies the counts filter damping factor to be applied during normal-
112 azoteq,lta-fast-beta-lp:
113 $ref: /schemas/types.yaml#/definitions/uint32
117 Specifies the long-term average filter fast damping factor to be applied
118 during low-power mode.
120 azoteq,lta-fast-beta-np:
121 $ref: /schemas/types.yaml#/definitions/uint32
125 Specifies the long-term average filter fast damping factor to be applied
126 during normal-power mode.
128 azoteq,timeout-ati-ms:
133 Specifies the delay (in ms) before ATI is retried following an ATI error.
138 description: Specifies the rate (in ms) at which ATI status is evaluated.
140 azoteq,timeout-np-ms:
144 Specifies the length of time (in ms) to wait for an event before moving
145 from normal-power mode to low-power mode.
150 description: Specifies the report rate (in ms) during normal-power mode.
152 azoteq,timeout-lp-ms:
156 Specifies the length of time (in ms) to wait for an event before moving
157 from low-power mode to ultra-low-power mode.
162 description: Specifies the report rate (in ms) during low-power mode.
164 azoteq,timeout-ulp-ms:
168 Specifies the rate (in ms) at which channels not regularly sampled during
169 ultra-low-power mode are updated.
174 description: Specifies the report rate (in ms) during ultra-low-power mode.
179 description: Represents a conversion cycle serving two sensing channels.
183 $ref: /schemas/types.yaml#/definitions/uint32
186 description: Specifies the cycle's conversion period.
189 $ref: /schemas/types.yaml#/definitions/uint32
192 description: Specifies the cycle's conversion frequency fraction.
195 $ref: /schemas/types.yaml#/definitions/uint32-array
201 description: Specifies the CTx pin(s) associated with the cycle.
203 azoteq,rx-float-inactive:
205 description: Floats any inactive CRx pins instead of grounding them.
207 azoteq,dead-time-enable:
210 Increases the denominator of the conversion frequency formula by one.
215 Fixes the conversion frequency to that of the device's core clock.
219 description: Enables the bias voltage for use during inductive sensing.
222 $ref: /schemas/types.yaml#/definitions/uint32
225 Specifies the cycle's sensing mode as follows:
231 Note that in the case of IQS7222A, cycles 5 and 6 are restricted to
237 Enables the current reference for use during various sensing modes.
240 $ref: /schemas/types.yaml#/definitions/uint32
243 description: Specifies the cycle's current reference level.
246 $ref: /schemas/types.yaml#/definitions/uint32
249 description: Specifies the cycle's current reference trim.
252 azoteq,iref-level: ["azoteq,iref-enable"]
253 azoteq,iref-trim: ["azoteq,iref-enable"]
255 additionalProperties: false
257 "^channel-([0-9]|1[0-9])$":
260 Represents a single sensing channel. A channel is active if defined and
263 Note that in the case of IQS7222A, channels 10 and 11 are restricted to
264 Hall-effect sensing with events reported on channel 10 only.
270 Permits the device to enter ultra-low-power mode while the channel
271 lies in a state of touch or proximity.
274 $ref: /schemas/types.yaml#/definitions/uint32
277 description: Specifies a separate reference channel to be followed.
280 $ref: /schemas/types.yaml#/definitions/uint32
283 description: Specifies the relative weight of the reference channel.
288 Activates the reference channel in response to proximity events
289 instead of touch events.
292 $ref: /schemas/types.yaml#/definitions/uint32
295 Specifies the channel's ATI band as a fraction of its ATI target as
305 Specifies that the channel's long-term average is to freeze if any
306 other participating channel lies in a proximity or touch state.
308 azoteq,invert-enable:
311 Inverts the polarity of the states reported for proximity and touch
312 events relative to their respective thresholds.
314 azoteq,dual-direction:
317 Specifies that the channel's long-term average is to freeze in the
318 presence of either increasing or decreasing counts, thereby permit-
319 ting events to be reported in either direction.
322 $ref: /schemas/types.yaml#/definitions/uint32-array
328 description: Specifies the CRx pin(s) associated with the channel.
330 azoteq,samp-cap-double:
332 description: Doubles the sampling capacitance from 40 pF to 80 pF.
336 description: Halves the discharge threshold from 1.0 V to 0.5 V.
339 $ref: /schemas/types.yaml#/definitions/uint32
342 Specifies the bias current applied during mutual (projected)
343 capacitive sensing as follows:
350 $ref: /schemas/types.yaml#/definitions/uint32
354 description: Specifies the channel's ATI target.
357 $ref: /schemas/types.yaml#/definitions/uint32
361 description: Specifies the channel's ATI base.
364 $ref: /schemas/types.yaml#/definitions/uint32
365 enum: [0, 1, 2, 3, 4, 5]
367 Specifies the channel's ATI mode as follows:
370 2: Compensation divider
371 3: Fine fractional divider
372 4: Coarse fractional divider
375 azoteq,ati-frac-div-fine:
376 $ref: /schemas/types.yaml#/definitions/uint32
379 description: Specifies the channel's ATI fine fractional divider.
381 azoteq,ati-frac-mult-coarse:
382 $ref: /schemas/types.yaml#/definitions/uint32
385 description: Specifies the channel's ATI coarse fractional multiplier.
387 azoteq,ati-frac-div-coarse:
388 $ref: /schemas/types.yaml#/definitions/uint32
391 description: Specifies the channel's ATI coarse fractional divider.
394 $ref: /schemas/types.yaml#/definitions/uint32
397 description: Specifies the channel's ATI compensation divider.
399 azoteq,ati-comp-select:
400 $ref: /schemas/types.yaml#/definitions/uint32
403 description: Specifies the channel's ATI compensation selection.
405 azoteq,debounce-enter:
406 $ref: /schemas/types.yaml#/definitions/uint32
409 description: Specifies the channel's debounce entrance factor.
411 azoteq,debounce-exit:
412 $ref: /schemas/types.yaml#/definitions/uint32
415 description: Specifies the channel's debounce exit factor.
418 "^event-(prox|touch)$":
422 Represents a proximity or touch event reported by the channel.
426 $ref: /schemas/types.yaml#/definitions/uint32-array
433 Specifies one or more GPIO mapped to the event as follows:
435 1: GPIO3 (IQS7222C only)
436 2: GPIO4 (IQS7222C only)
438 Note that although multiple events can be mapped to a single
439 GPIO, they must all be of the same type (proximity, touch or
443 $ref: /schemas/types.yaml#/definitions/uint32
445 Specifies the threshold for the event. Valid entries range from
446 0-127 and 0-255 for proximity and touch events, respectively.
449 $ref: /schemas/types.yaml#/definitions/uint32
453 Specifies the hysteresis for the event (touch events only).
455 azoteq,timeout-press-ms:
460 Specifies the length of time (in ms) to wait before automatically
461 releasing a press event. Specify zero to allow the press state to
462 persist indefinitely.
464 The IQS7222B does not feature channel-specific timeouts; the time-
465 out specified for any one channel applies to all channels.
473 Specifies whether the event is to be interpreted as a key (1)
476 additionalProperties: false
479 azoteq,ref-weight: ["azoteq,ref-select"]
480 azoteq,use-prox: ["azoteq,ref-select"]
482 additionalProperties: false
486 description: Represents a slider comprising three or four channels.
489 azoteq,channel-select:
490 $ref: /schemas/types.yaml#/definitions/uint32-array
497 Specifies the order of the channels that participate in the slider.
500 $ref: /schemas/types.yaml#/definitions/uint32
504 Specifies the slider's one-dimensional resolution, equal to the
505 maximum coordinate plus one.
508 $ref: /schemas/types.yaml#/definitions/uint32
511 description: Specifies the slider's lower starting point.
514 $ref: /schemas/types.yaml#/definitions/uint32
517 description: Specifies the slider's upper starting point.
520 $ref: /schemas/types.yaml#/definitions/uint32
524 Specifies the speed of movement after which coordinate filtering is
528 $ref: /schemas/types.yaml#/definitions/uint32
532 Specifies the speed of movement after which coordinate filtering is
536 $ref: /schemas/types.yaml#/definitions/uint32
540 Specifies the coordinate filter damping factor to be applied
541 while the speed of movement is below that which is specified
542 by azoteq,bottom-speed.
547 Applies the coordinate filter damping factor specified by
548 azoteq,bottom-beta regardless of the speed of movement.
553 Directs the slider to respond to the proximity states of the selected
554 channels instead of their corresponding touch states. Note the slider
555 cannot report granular coordinates during a state of proximity.
558 $ref: /schemas/types.yaml#/definitions/uint32
560 Specifies the absolute axis to which coordinates are mapped. Specify
561 ABS_WHEEL to operate the slider as a wheel (IQS7222C only).
564 "^event-(press|tap|(swipe|flick)-(pos|neg))$":
568 Represents a press or gesture (IQS7222A only) event reported by
574 azoteq,gesture-max-ms:
579 Specifies the length of time (in ms) within which a tap, swipe
580 or flick gesture must be completed in order to be acknowledged
581 by the device. The number specified for any one swipe or flick
582 gesture applies to all remaining swipe or flick gestures.
584 azoteq,gesture-min-ms:
589 Specifies the length of time (in ms) for which a tap gesture must
590 be held in order to be acknowledged by the device.
593 $ref: /schemas/types.yaml#/definitions/uint32
598 Specifies the distance across which a swipe or flick gesture must
599 travel in order to be acknowledged by the device. The number spec-
600 ified for any one swipe or flick gesture applies to all remaining
601 swipe or flick gestures.
604 $ref: /schemas/types.yaml#/definitions/uint32-array
611 Specifies one or more GPIO mapped to the event as follows:
613 1: GPIO3 (IQS7222C only)
614 2: GPIO4 (IQS7222C only)
616 Note that although multiple events can be mapped to a single
617 GPIO, they must all be of the same type (proximity, touch or
620 additionalProperties: false
623 - azoteq,channel-select
625 additionalProperties: false
630 Represents a GPIO mapped to one or more events as follows:
632 gpio-1: GPIO3 (IQS7222C only)
633 gpio-2: GPIO4 (IQS7222C only)
636 - $ref: ../pinctrl/pincfg-node.yaml#
639 drive-open-drain: true
641 additionalProperties: false
648 const: azoteq,iqs7222b
654 azoteq,iref-enable: false
656 "^channel-([0-9]|1[0-9])$":
658 azoteq,ref-select: false
661 "^event-(prox|touch)$":
663 azoteq,gpio-select: false
665 "^slider-[0-1]$": false
667 "^gpio-[0-2]$": false
673 const: azoteq,iqs7222a
677 "^channel-([0-9]|1[0-9])$":
679 "^event-(prox|touch)$":
698 "^event-(press|tap|(swipe|flick)-(pos|neg))$":
707 "^channel-([0-9]|1[0-9])$":
709 azoteq,ulp-allow: false
713 "^event-(press|tap|(swipe|flick)-(pos|neg))$":
715 azoteq,gesture-max-ms: false
717 azoteq,gesture-min-ms: false
719 azoteq,gesture-dist: false
726 additionalProperties: false
730 #include <dt-bindings/gpio/gpio.h>
731 #include <dt-bindings/input/input.h>
734 #address-cells = <1>;
738 compatible = "azoteq,iqs7222a";
740 irq-gpios = <&gpio 4 GPIO_ACTIVE_LOW>;
741 azoteq,lta-beta-lp = <7>;
742 azoteq,lta-beta-np = <8>;
743 azoteq,counts-beta-lp = <2>;
744 azoteq,counts-beta-np = <3>;
745 azoteq,lta-fast-beta-lp = <3>;
746 azoteq,lta-fast-beta-np = <4>;
749 azoteq,conv-period = <5>;
750 azoteq,conv-frac = <127>;
751 azoteq,tx-enable = <1>, <2>, <4>, <5>;
752 azoteq,dead-time-enable;
753 azoteq,sense-mode = <2>;
757 azoteq,conv-period = <5>;
758 azoteq,conv-frac = <127>;
759 azoteq,tx-enable = <5>;
760 azoteq,dead-time-enable;
761 azoteq,sense-mode = <2>;
765 azoteq,conv-period = <5>;
766 azoteq,conv-frac = <127>;
767 azoteq,tx-enable = <4>;
768 azoteq,dead-time-enable;
769 azoteq,sense-mode = <2>;
773 azoteq,conv-period = <5>;
774 azoteq,conv-frac = <127>;
775 azoteq,tx-enable = <2>;
776 azoteq,dead-time-enable;
777 azoteq,sense-mode = <2>;
781 azoteq,conv-period = <5>;
782 azoteq,conv-frac = <127>;
783 azoteq,tx-enable = <1>;
784 azoteq,dead-time-enable;
785 azoteq,sense-mode = <2>;
789 azoteq,conv-period = <2>;
790 azoteq,conv-frac = <0>;
794 azoteq,conv-period = <2>;
795 azoteq,conv-frac = <0>;
801 azoteq,invert-enable;
802 azoteq,rx-enable = <3>;
803 azoteq,ati-target = <800>;
804 azoteq,ati-base = <208>;
805 azoteq,ati-mode = <5>;
810 azoteq,invert-enable;
811 azoteq,rx-enable = <3>;
812 azoteq,ati-target = <496>;
813 azoteq,ati-base = <208>;
814 azoteq,ati-mode = <5>;
819 azoteq,invert-enable;
820 azoteq,rx-enable = <3>;
821 azoteq,ati-target = <496>;
822 azoteq,ati-base = <208>;
823 azoteq,ati-mode = <5>;
828 azoteq,invert-enable;
829 azoteq,rx-enable = <3>;
830 azoteq,ati-target = <496>;
831 azoteq,ati-base = <208>;
832 azoteq,ati-mode = <5>;
837 azoteq,invert-enable;
838 azoteq,rx-enable = <3>;
839 azoteq,ati-target = <496>;
840 azoteq,ati-base = <208>;
841 azoteq,ati-mode = <5>;
847 azoteq,invert-enable;
848 azoteq,rx-enable = <6>;
849 azoteq,ati-target = <800>;
850 azoteq,ati-base = <144>;
851 azoteq,ati-mode = <5>;
856 azoteq,invert-enable;
857 azoteq,rx-enable = <6>;
858 azoteq,ati-target = <496>;
859 azoteq,ati-base = <160>;
860 azoteq,ati-mode = <5>;
863 linux,code = <KEY_MUTE>;
869 azoteq,invert-enable;
870 azoteq,rx-enable = <6>;
871 azoteq,ati-target = <496>;
872 azoteq,ati-base = <160>;
873 azoteq,ati-mode = <5>;
876 linux,code = <KEY_VOLUMEDOWN>;
882 azoteq,invert-enable;
883 azoteq,rx-enable = <6>;
884 azoteq,ati-target = <496>;
885 azoteq,ati-base = <160>;
886 azoteq,ati-mode = <5>;
889 linux,code = <KEY_VOLUMEUP>;
895 azoteq,invert-enable;
896 azoteq,rx-enable = <6>;
897 azoteq,ati-target = <496>;
898 azoteq,ati-base = <160>;
899 azoteq,ati-mode = <5>;
902 linux,code = <KEY_POWER>;
908 azoteq,ati-target = <496>;
909 azoteq,ati-base = <112>;
912 linux,code = <SW_LID>;
913 linux,input-type = <EV_SW>;
918 azoteq,ati-target = <496>;
919 azoteq,ati-base = <112>;
923 azoteq,channel-select = <1>, <2>, <3>, <4>;
924 azoteq,slider-size = <4080>;
925 azoteq,upper-cal = <50>;
926 azoteq,lower-cal = <30>;
927 azoteq,top-speed = <200>;
928 azoteq,bottom-speed = <1>;
929 azoteq,bottom-beta = <3>;
932 linux,code = <KEY_PLAYPAUSE>;
933 azoteq,gesture-max-ms = <400>;
934 azoteq,gesture-min-ms = <32>;
938 linux,code = <KEY_NEXTSONG>;
939 azoteq,gesture-max-ms = <800>;
940 azoteq,gesture-dist = <800>;
944 linux,code = <KEY_PREVIOUSSONG>;