1 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
4 $id: http://devicetree.org/schemas/input/iqs269a.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
7 title: Azoteq IQS269A Capacitive Touch Controller
10 - Jeff LaBundy <jeff@labundy.com>
16 The Azoteq IQS269A is an 8-channel capacitive touch controller that features
17 additional Hall-effect and inductive sensing capabilities.
19 Link to datasheet: https://www.azoteq.com/
43 Enables Hall-effect sensing on channels 6 and 7. In this case, keycodes
44 assigned to channel 6 are ignored and keycodes assigned to channel 7 are
45 interpreted as switch codes. Refer to the datasheet for requirements im-
46 posed on channels 6 and 7 by Hall-effect sensing.
49 $ref: /schemas/types.yaml#/definitions/uint32
53 Specifies the power mode during suspend as follows:
54 0: Automatic (same as normal runtime, i.e. suspend/resume disabled)
55 1: Low power (all sensing at a reduced reporting rate)
56 2: Ultra-low power (channel 0 proximity sensing)
61 description: Divides the device's core clock by a factor of 4.
64 $ref: /schemas/types.yaml#/definitions/uint32
68 description: Specifies the ultra-low-power mode update rate.
73 Applies an 8-count offset to all long-term averages upon either ATI or
76 azoteq,filt-str-lp-lta:
77 $ref: /schemas/types.yaml#/definitions/uint32
81 Specifies the long-term average filter strength during low-power mode.
83 azoteq,filt-str-lp-cnt:
84 $ref: /schemas/types.yaml#/definitions/uint32
88 Specifies the raw count filter strength during low-power mode.
90 azoteq,filt-str-np-lta:
91 $ref: /schemas/types.yaml#/definitions/uint32
95 Specifies the long-term average filter strength during normal-power mode.
97 azoteq,filt-str-np-cnt:
98 $ref: /schemas/types.yaml#/definitions/uint32
102 Specifies the raw count filter strength during normal-power mode.
108 description: Specifies the report rate (in ms) during normal-power mode.
114 description: Specifies the report rate (in ms) during low-power mode.
121 description: Specifies the report rate (in ms) during ultra-low-power mode.
123 azoteq,timeout-pwr-ms:
129 Specifies the length of time (in ms) to wait for an event during normal-
130 power mode before transitioning to low-power mode.
132 azoteq,timeout-lta-ms:
138 Specifies the length of time (in ms) to wait before resetting the long-
139 term average of all channels. Specify the maximum timeout to disable it
142 azoteq,ati-band-disable:
144 description: Disables the ATI band check.
148 description: Limits automatic ATI to low-power mode.
150 azoteq,ati-band-tighten:
152 description: Tightens the ATI band from 1/8 to 1/16 of the desired target.
156 description: Disables all raw count filtering.
159 $ref: /schemas/types.yaml#/definitions/uint32
164 Selects the channel for which the GPIO3 pin represents touch state.
166 azoteq,dual-direction:
169 Specifies that long-term averages are to freeze in the presence of either
170 increasing or decreasing counts, thereby permitting events to be reported
174 $ref: /schemas/types.yaml#/definitions/uint32
178 Specifies the inductive sensing excitation frequency as follows (paren-
179 thesized numbers represent the frequency if 'azoteq,clk-div' is present):
185 azoteq,global-cap-increase:
187 description: Increases the global capacitance adder from 0.5 pF to 1.5 pF.
189 azoteq,reseed-select:
190 $ref: /schemas/types.yaml#/definitions/uint32
194 Specifies the event(s) that prompt the device to reseed (i.e. reset the
195 long-term average) of an associated channel as follows:
198 2: Proximity or touch
199 3: Proximity, touch or deep touch
201 azoteq,tracking-enable:
204 Enables all associated channels to track their respective reference
207 azoteq,filt-str-slider:
208 $ref: /schemas/types.yaml#/definitions/uint32
211 description: Specifies the slider coordinate filter strength.
213 azoteq,touch-hold-ms:
219 Specifies the length of time (in ms) for which the channel selected by
220 'azoteq,gpio3-select' must be held in a state of touch in order for an
221 approximately 60-ms pulse to be asserted on the GPIO4 pin.
227 Specifies the numeric keycodes associated with each available gesture in
228 the following order (enter 0 for unused gestures):
231 2: Slider 0 positive flick or swipe
232 3: Slider 0 negative flick or swipe
235 6: Slider 1 positive flick or swipe
236 7: Slider 1 negative flick or swipe
238 azoteq,gesture-swipe:
241 Directs the device to interpret axial gestures as a swipe (finger remains
242 on slider) instead of a flick (finger leaves slider).
244 azoteq,timeout-tap-ms:
250 Specifies the length of time (in ms) within which a slider touch must be
251 released in order to be interpreted as a tap. Default and maximum values
252 as well as step size are reduced by a factor of 4 with device version 2.
254 azoteq,timeout-swipe-ms:
260 Specifies the length of time (in ms) within which an axial gesture must be
261 completed in order to be interpreted as a flick or swipe. Default and max-
262 imum values as well as step size are reduced by a factor of 4 with device
266 $ref: /schemas/types.yaml#/definitions/uint32
271 Specifies the number of points across which an axial gesture must travel
272 in order to be interpreted as a flick or swipe.
275 azoteq,gesture-swipe: ["linux,keycodes"]
276 azoteq,timeout-tap-ms: ["linux,keycodes"]
277 azoteq,timeout-swipe-ms: ["linux,keycodes"]
278 azoteq,thresh-swipe: ["linux,keycodes"]
284 Represents a single sensing channel. A channel is active if defined and
291 description: Index of the channel.
293 azoteq,reseed-disable:
296 Prevents the channel from being reseeded if the long-term average
297 timeout (defined in 'azoteq,timeout-lta') expires.
299 azoteq,blocking-enable:
301 description: Specifies that the channel is a blocking channel.
303 azoteq,slider0-select:
305 description: Specifies that the channel participates in slider 0.
307 azoteq,slider1-select:
309 description: Specifies that the channel participates in slider 1.
312 $ref: /schemas/types.yaml#/definitions/uint32-array
319 Specifies the CRX pin(s) associated with the channel. By default, only
320 the CRX pin corresponding to the channel's index is enabled (e.g. CRX0
324 $ref: /schemas/types.yaml#/definitions/uint32-array
330 default: [0, 1, 2, 3, 4, 5, 6, 7]
331 description: Specifies the TX pin(s) associated with the channel.
333 azoteq,meas-cap-decrease:
336 Decreases the internal measurement capacitance from 60 pF to 15 pF.
338 azoteq,rx-float-inactive:
340 description: Floats any inactive CRX pins instead of grounding them.
342 azoteq,local-cap-size:
343 $ref: /schemas/types.yaml#/definitions/uint32
347 Specifies the capacitance to be added to the channel as follows:
349 1: Global adder (based on 'azoteq,global-cap-increase')
350 2: Global adder + 0.5 pF
352 azoteq,invert-enable:
355 Inverts the polarity of the states reported for proximity, touch and
356 deep-touch events relative to their respective thresholds.
359 $ref: /schemas/types.yaml#/definitions/uint32
363 Specifies the bias current applied during projected-capacitance
371 $ref: /schemas/types.yaml#/definitions/uint32
372 enum: [0, 1, 9, 14, 15]
375 Specifies the channel's sensing mode as follows:
377 1: Projected capacitance
378 9: Self or mutual inductance
383 $ref: /schemas/types.yaml#/definitions/uint32
387 Specifies the channel's sensing frequency as follows (parenthesized
388 numbers represent the frequency if 'azoteq,clk-div' is present):
394 azoteq,static-enable:
396 description: Enables the static front-end for the channel.
399 $ref: /schemas/types.yaml#/definitions/uint32
403 Specifies the channel's ATI mode as follows:
410 $ref: /schemas/types.yaml#/definitions/uint32
411 enum: [75, 100, 150, 200]
413 description: Specifies the channel's ATI base.
416 $ref: /schemas/types.yaml#/definitions/uint32
421 description: Specifies the channel's ATI target.
424 $ref: /schemas/types.yaml#/definitions/uint32-array
431 Specifies the associated channels for which the channel serves as a
432 reference channel. By default, no channels are selected.
435 $ref: /schemas/types.yaml#/definitions/uint32
440 Specifies the channel's impact weight if it acts as an associated
441 channel (0 = 0% impact, 255 = 200% impact).
444 "^event-prox(-alt)?$":
448 Represents a proximity event reported by the channel in response to
449 a decrease in counts. Node names suffixed with '-alt' instead corre-
450 spond to an increase in counts.
452 By default, the long-term average tracks an increase in counts such
453 that only events corresponding to a decrease in counts are reported
454 (refer to the datasheet for more information).
456 Specify 'azoteq,dual-direction' to freeze the long-term average when
457 the counts increase or decrease such that events of either direction
458 can be reported. Alternatively, specify 'azoteq,invert-enable' to in-
459 vert the polarity of the states reported by the channel.
461 Complementary events (e.g. event-touch and event-touch-alt) can both
462 be present and specify different key or switch codes, but not differ-
463 ent thresholds or hysteresis (if applicable).
467 $ref: /schemas/types.yaml#/definitions/uint32
471 description: Specifies the threshold for the event.
475 additionalProperties: false
477 "^event-touch(-alt)?$":
480 description: Represents a touch event reported by the channel.
484 $ref: /schemas/types.yaml#/definitions/uint32
488 description: Specifies the threshold for the event.
491 $ref: /schemas/types.yaml#/definitions/uint32
495 description: Specifies the hysteresis for the event.
499 additionalProperties: false
501 "^event-deep(-alt)?$":
504 description: Represents a deep-touch event reported by the channel.
508 $ref: /schemas/types.yaml#/definitions/uint32
512 description: Specifies the threshold for the event.
515 $ref: /schemas/types.yaml#/definitions/uint32
519 description: Specifies the hysteresis for the event.
523 additionalProperties: false
528 additionalProperties: false
540 azoteq,slider1-select: false
543 azoteq,touch-hold-ms: false
552 additionalProperties: false
556 #include <dt-bindings/input/input.h>
557 #include <dt-bindings/interrupt-controller/irq.h>
560 #address-cells = <1>;
564 #address-cells = <1>;
567 compatible = "azoteq,iqs269a";
569 interrupt-parent = <&gpio>;
570 interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
573 azoteq,suspend-mode = <2>;
575 linux,keycodes = <KEY_PLAYPAUSE>,
580 azoteq,timeout-tap-ms = <400>;
581 azoteq,timeout-swipe-ms = <800>;
587 linux,code = <KEY_POWER>;
593 azoteq,slider0-select;
598 azoteq,slider0-select;
603 azoteq,slider0-select;
608 azoteq,slider0-select;
613 azoteq,slider0-select;
618 azoteq,invert-enable;
619 azoteq,static-enable;
620 azoteq,reseed-disable;
621 azoteq,rx-enable = <0>;
622 azoteq,sense-freq = <0x0>;
623 azoteq,sense-mode = <0xE>;
624 azoteq,ati-mode = <0x0>;
625 azoteq,ati-base = <200>;
626 azoteq,ati-target = <320>;
631 azoteq,invert-enable;
632 azoteq,static-enable;
633 azoteq,reseed-disable;
634 azoteq,rx-enable = <0>, <6>;
635 azoteq,sense-freq = <0x0>;
636 azoteq,sense-mode = <0xE>;
637 azoteq,ati-mode = <0x3>;
638 azoteq,ati-base = <200>;
639 azoteq,ati-target = <320>;
642 linux,code = <SW_LID>;