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/D Capacitive Touch Controller
10 - Jeff LaBundy <jeff@labundy.com>
13 The Azoteq IQS7222A, IQS7222B, IQS7222C and IQS7222D are multichannel
14 capacitive touch controllers that feature additional sensing capabilities.
16 Link to datasheets: https://www.azoteq.com/
32 Specifies the GPIO connected to the device's active-low RDY output.
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.
42 $ref: /schemas/types.yaml#/definitions/uint32
45 Specifies the maximum number of conversion periods (counts) that can be
53 $ref: /schemas/types.yaml#/definitions/uint32
56 Specifies the number of conversions to occur before an interrupt is
63 azoteq,ati-frac-div-fine:
64 $ref: /schemas/types.yaml#/definitions/uint32
67 description: Specifies the preloaded ATI fine fractional divider.
69 azoteq,ati-frac-div-coarse:
70 $ref: /schemas/types.yaml#/definitions/uint32
73 description: Specifies the preloaded ATI coarse fractional divider.
75 azoteq,ati-comp-select:
76 $ref: /schemas/types.yaml#/definitions/uint32
79 description: Specifies the preloaded ATI compensation selection.
82 $ref: /schemas/types.yaml#/definitions/uint32
86 Specifies the long-term average filter damping factor to be applied during
90 $ref: /schemas/types.yaml#/definitions/uint32
94 Specifies the long-term average filter damping factor to be applied during
97 azoteq,counts-beta-lp:
98 $ref: /schemas/types.yaml#/definitions/uint32
102 Specifies the counts filter damping factor to be applied during low-power
105 azoteq,counts-beta-np:
106 $ref: /schemas/types.yaml#/definitions/uint32
110 Specifies the counts filter damping factor to be applied during normal-
113 azoteq,lta-fast-beta-lp:
114 $ref: /schemas/types.yaml#/definitions/uint32
118 Specifies the long-term average filter fast damping factor to be applied
119 during low-power mode.
121 azoteq,lta-fast-beta-np:
122 $ref: /schemas/types.yaml#/definitions/uint32
126 Specifies the long-term average filter fast damping factor to be applied
127 during normal-power mode.
129 azoteq,timeout-ati-ms:
134 Specifies the delay (in ms) before ATI is retried following an ATI error.
139 description: Specifies the rate (in ms) at which ATI status is evaluated.
141 azoteq,timeout-np-ms:
145 Specifies the length of time (in ms) to wait for an event before moving
146 from normal-power mode to low-power mode.
151 description: Specifies the report rate (in ms) during normal-power mode.
153 azoteq,timeout-lp-ms:
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.
163 description: Specifies the report rate (in ms) during low-power mode.
165 azoteq,timeout-ulp-ms:
169 Specifies the rate (in ms) at which channels not regularly sampled during
170 ultra-low-power mode are updated.
175 description: Specifies the report rate (in ms) during ultra-low-power mode.
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
185 description: Represents all channels associated with the trackpad.
188 azoteq,channel-select:
189 $ref: /schemas/types.yaml#/definitions/uint32-array
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.
201 $ref: /schemas/types.yaml#/definitions/uint32
204 description: Specifies the number of rows that comprise the trackpad.
207 $ref: /schemas/types.yaml#/definitions/uint32
210 description: Specifies the number of columns that comprise the trackpad.
213 $ref: /schemas/types.yaml#/definitions/uint32
218 Specifies the speed (in coordinates traveled per conversion) after
219 which coordinate filtering is no longer applied.
222 $ref: /schemas/types.yaml#/definitions/uint32
226 Specifies the speed (in coordinates traveled per conversion) after
227 which coordinate filtering is linearly reduced.
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
238 "^azoteq,lower-cal-(x|y)$":
239 $ref: /schemas/types.yaml#/definitions/uint32
242 description: Specifies the trackpad's lower starting points.
244 "^azoteq,upper-cal-(x|y)$":
245 $ref: /schemas/types.yaml#/definitions/uint32
248 description: Specifies the trackpad's upper starting points.
250 "^event-(press|tap|(swipe|flick)-(x|y)-(pos|neg))$":
254 Represents a press or gesture event reported by the trackpad. Specify
255 'linux,code' under the press event to report absolute coordinates.
260 azoteq,gesture-angle-tighten:
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
267 azoteq,gesture-max-ms:
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.
277 azoteq,gesture-min-ms:
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.
286 $ref: /schemas/types.yaml#/definitions/uint32
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.
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.
300 $ref: /schemas/types.yaml#/definitions/uint32-array
307 Specifies one or more GPIO mapped to the event as follows:
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
316 additionalProperties: false
319 - azoteq,channel-select
321 additionalProperties: false
326 description: Represents a conversion cycle serving two sensing channels.
330 $ref: /schemas/types.yaml#/definitions/uint32
333 description: Specifies the cycle's conversion period.
336 $ref: /schemas/types.yaml#/definitions/uint32
339 description: Specifies the cycle's conversion frequency fraction.
342 $ref: /schemas/types.yaml#/definitions/uint32-array
348 description: Specifies the CTx pin(s) associated with the cycle.
350 azoteq,rx-float-inactive:
352 description: Floats any inactive CRx pins instead of grounding them.
354 azoteq,dead-time-enable:
357 Increases the denominator of the conversion frequency formula by one.
362 Fixes the conversion frequency to that of the device's core clock.
366 description: Enables the bias voltage for use during inductive sensing.
369 $ref: /schemas/types.yaml#/definitions/uint32
372 Specifies the cycle's sensing mode as follows:
378 Note that in the case of IQS7222A, cycles 5 and 6 are restricted to
384 Enables the current reference for use during various sensing modes.
387 $ref: /schemas/types.yaml#/definitions/uint32
390 description: Specifies the cycle's current reference level.
393 $ref: /schemas/types.yaml#/definitions/uint32
396 description: Specifies the cycle's current reference trim.
399 azoteq,iref-level: ["azoteq,iref-enable"]
400 azoteq,iref-trim: ["azoteq,iref-enable"]
402 additionalProperties: false
404 "^channel-([0-9]|1[0-9])$":
407 Represents a single sensing channel. A channel is active if defined and
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.
417 Permits the device to enter ultra-low-power mode while the channel
418 lies in a state of touch or proximity.
421 $ref: /schemas/types.yaml#/definitions/uint32
424 description: Specifies a separate reference channel to be followed.
427 $ref: /schemas/types.yaml#/definitions/uint32
430 description: Specifies the relative weight of the reference channel.
435 Activates the reference channel in response to proximity events
436 instead of touch events.
438 azoteq,counts-filt-enable:
440 description: Applies counts filtering to the channel.
443 $ref: /schemas/types.yaml#/definitions/uint32
446 Specifies the channel's ATI band as a fraction of its ATI target as
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.
459 azoteq,invert-enable:
462 Inverts the polarity of the states reported for proximity and touch
463 events relative to their respective thresholds.
465 azoteq,dual-direction:
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.
473 $ref: /schemas/types.yaml#/definitions/uint32-array
479 description: Specifies the CRx pin(s) associated with the channel.
481 azoteq,samp-cap-double:
483 description: Doubles the sampling capacitance from 40 pF to 80 pF.
487 description: Halves the discharge threshold from 1.0 V to 0.5 V.
490 $ref: /schemas/types.yaml#/definitions/uint32
493 Specifies the bias current applied during mutual (projected)
494 capacitive sensing as follows:
501 $ref: /schemas/types.yaml#/definitions/uint32
505 description: Specifies the channel's ATI target.
508 $ref: /schemas/types.yaml#/definitions/uint32
512 description: Specifies the channel's ATI base.
515 $ref: /schemas/types.yaml#/definitions/uint32
516 enum: [0, 1, 2, 3, 4, 5]
518 Specifies the channel's ATI mode as follows:
521 2: Compensation divider
522 3: Fine fractional divider
523 4: Coarse fractional divider
526 azoteq,ati-frac-div-fine:
527 $ref: /schemas/types.yaml#/definitions/uint32
530 description: Specifies the channel's ATI fine fractional divider.
532 azoteq,ati-frac-mult-coarse:
533 $ref: /schemas/types.yaml#/definitions/uint32
536 description: Specifies the channel's ATI coarse fractional multiplier.
538 azoteq,ati-frac-div-coarse:
539 $ref: /schemas/types.yaml#/definitions/uint32
542 description: Specifies the channel's ATI coarse fractional divider.
545 $ref: /schemas/types.yaml#/definitions/uint32
548 description: Specifies the channel's ATI compensation divider.
550 azoteq,ati-comp-select:
551 $ref: /schemas/types.yaml#/definitions/uint32
554 description: Specifies the channel's ATI compensation selection.
556 azoteq,debounce-enter:
557 $ref: /schemas/types.yaml#/definitions/uint32
560 description: Specifies the channel's debounce entrance factor.
562 azoteq,debounce-exit:
563 $ref: /schemas/types.yaml#/definitions/uint32
566 description: Specifies the channel's debounce exit factor.
569 "^event-(prox|touch)$":
573 Represents a proximity or touch event reported by the channel.
577 $ref: /schemas/types.yaml#/definitions/uint32-array
584 Specifies one or more GPIO mapped to the event as follows:
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).
594 $ref: /schemas/types.yaml#/definitions/uint32
596 Specifies the threshold for the event. Valid entries range from
597 0-127 and 0-255 for proximity and touch events, respectively.
600 $ref: /schemas/types.yaml#/definitions/uint32
604 Specifies the hysteresis for the event (touch events only).
606 azoteq,timeout-press-ms:
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.
615 The IQS7222B does not feature channel-specific timeouts; the time-
616 out specified for any one channel applies to all channels.
624 Specifies whether the event is to be interpreted as a key (1)
627 additionalProperties: false
630 azoteq,ref-weight: ["azoteq,ref-select"]
631 azoteq,use-prox: ["azoteq,ref-select"]
633 additionalProperties: false
637 description: Represents a slider comprising three or four channels.
640 azoteq,channel-select:
641 $ref: /schemas/types.yaml#/definitions/uint32-array
648 Specifies the order of the channels that participate in the slider.
651 $ref: /schemas/types.yaml#/definitions/uint32
655 Specifies the slider's one-dimensional resolution, equal to the
656 maximum coordinate plus one.
659 $ref: /schemas/types.yaml#/definitions/uint32
662 description: Specifies the slider's lower starting point.
665 $ref: /schemas/types.yaml#/definitions/uint32
668 description: Specifies the slider's upper starting point.
671 $ref: /schemas/types.yaml#/definitions/uint32
675 Specifies the speed (in coordinates traveled per conversion) after
676 which coordinate filtering is no longer applied.
679 $ref: /schemas/types.yaml#/definitions/uint32
683 Specifies the speed (in coordinates traveled per conversion) after
684 which coordinate filtering is linearly reduced.
687 $ref: /schemas/types.yaml#/definitions/uint32
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.
698 Applies the coordinate filter damping factor specified by
699 azoteq,bottom-beta regardless of the speed of movement.
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.
709 $ref: /schemas/types.yaml#/definitions/uint32
711 Specifies the absolute axis to which coordinates are mapped. Specify
712 ABS_WHEEL to operate the slider as a wheel (IQS7222C only).
715 "^event-(press|tap|(swipe|flick)-(pos|neg))$":
719 Represents a press or gesture (IQS7222A only) event reported by
725 azoteq,gesture-max-ms:
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.
735 azoteq,gesture-min-ms:
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.
744 $ref: /schemas/types.yaml#/definitions/uint32
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.
755 $ref: /schemas/types.yaml#/definitions/uint32-array
762 Specifies one or more GPIO mapped to the event as follows:
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
771 additionalProperties: false
774 - azoteq,channel-select
776 additionalProperties: false
781 Represents a GPIO mapped to one or more events as follows:
787 - $ref: ../pinctrl/pincfg-node.yaml#
790 drive-open-drain: true
792 additionalProperties: false
795 - $ref: touchscreen/touchscreen.yaml#
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
817 "^channel-([0-9]|1[0-9])$":
819 azoteq,counts-filt-enable: false
831 "^channel-([0-9]|1[0-9])$":
833 azoteq,ulp-allow: false
847 azoteq,iref-enable: false
849 "^channel-([0-9]|1[0-9])$":
851 azoteq,ref-select: false
853 "^slider-[0-1]$": false
859 const: azoteq,iqs7222b
863 "^channel-([0-9]|1[0-9])$":
865 "^event-(prox|touch)$":
867 azoteq,gpio-select: false
869 "^gpio-[0-2]$": false
875 const: azoteq,iqs7222a
879 "^channel-([0-9]|1[0-9])$":
881 "^event-(prox|touch)$":
900 "^event-(press|tap|(swipe|flick)-(pos|neg))$":
911 "^event-(press|tap|(swipe|flick)-(pos|neg))$":
913 azoteq,gesture-max-ms: false
915 azoteq,gesture-min-ms: false
917 azoteq,gesture-dist: false
924 additionalProperties: false
928 #include <dt-bindings/gpio/gpio.h>
929 #include <dt-bindings/input/input.h>
932 #address-cells = <1>;
936 compatible = "azoteq,iqs7222a";
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>;
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>;
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>;
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>;
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>;
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>;
987 azoteq,conv-period = <2>;
988 azoteq,conv-frac = <0>;
992 azoteq,conv-period = <2>;
993 azoteq,conv-frac = <0>;
999 azoteq,invert-enable;
1000 azoteq,rx-enable = <3>;
1001 azoteq,ati-target = <800>;
1002 azoteq,ati-base = <208>;
1003 azoteq,ati-mode = <5>;
1008 azoteq,invert-enable;
1009 azoteq,rx-enable = <3>;
1010 azoteq,ati-target = <496>;
1011 azoteq,ati-base = <208>;
1012 azoteq,ati-mode = <5>;
1017 azoteq,invert-enable;
1018 azoteq,rx-enable = <3>;
1019 azoteq,ati-target = <496>;
1020 azoteq,ati-base = <208>;
1021 azoteq,ati-mode = <5>;
1026 azoteq,invert-enable;
1027 azoteq,rx-enable = <3>;
1028 azoteq,ati-target = <496>;
1029 azoteq,ati-base = <208>;
1030 azoteq,ati-mode = <5>;
1035 azoteq,invert-enable;
1036 azoteq,rx-enable = <3>;
1037 azoteq,ati-target = <496>;
1038 azoteq,ati-base = <208>;
1039 azoteq,ati-mode = <5>;
1045 azoteq,invert-enable;
1046 azoteq,rx-enable = <6>;
1047 azoteq,ati-target = <800>;
1048 azoteq,ati-base = <144>;
1049 azoteq,ati-mode = <5>;
1054 azoteq,invert-enable;
1055 azoteq,rx-enable = <6>;
1056 azoteq,ati-target = <496>;
1057 azoteq,ati-base = <160>;
1058 azoteq,ati-mode = <5>;
1061 linux,code = <KEY_MUTE>;
1067 azoteq,invert-enable;
1068 azoteq,rx-enable = <6>;
1069 azoteq,ati-target = <496>;
1070 azoteq,ati-base = <160>;
1071 azoteq,ati-mode = <5>;
1074 linux,code = <KEY_VOLUMEDOWN>;
1080 azoteq,invert-enable;
1081 azoteq,rx-enable = <6>;
1082 azoteq,ati-target = <496>;
1083 azoteq,ati-base = <160>;
1084 azoteq,ati-mode = <5>;
1087 linux,code = <KEY_VOLUMEUP>;
1093 azoteq,invert-enable;
1094 azoteq,rx-enable = <6>;
1095 azoteq,ati-target = <496>;
1096 azoteq,ati-base = <160>;
1097 azoteq,ati-mode = <5>;
1100 linux,code = <KEY_POWER>;
1106 azoteq,ati-target = <496>;
1107 azoteq,ati-base = <112>;
1110 linux,code = <SW_LID>;
1111 linux,input-type = <EV_SW>;
1116 azoteq,ati-target = <496>;
1117 azoteq,ati-base = <112>;
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>;
1130 linux,code = <KEY_PLAYPAUSE>;
1131 azoteq,gesture-max-ms = <400>;
1132 azoteq,gesture-min-ms = <32>;
1136 linux,code = <KEY_NEXTSONG>;
1137 azoteq,gesture-max-ms = <800>;
1138 azoteq,gesture-dist = <800>;
1142 linux,code = <KEY_PREVIOUSSONG>;