Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/Documentation/devicetree/bindings/input/iqs269a.yaml
26308 views
1
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2
%YAML 1.2
3
---
4
$id: http://devicetree.org/schemas/input/iqs269a.yaml#
5
$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7
title: Azoteq IQS269A Capacitive Touch Controller
8
9
maintainers:
10
- Jeff LaBundy <jeff@labundy.com>
11
12
allOf:
13
- $ref: input.yaml#
14
15
description: |
16
The Azoteq IQS269A is an 8-channel capacitive touch controller that features
17
additional Hall-effect and inductive sensing capabilities.
18
19
Link to datasheet: https://www.azoteq.com/
20
21
properties:
22
compatible:
23
enum:
24
- azoteq,iqs269a
25
- azoteq,iqs269a-00
26
- azoteq,iqs269a-d0
27
28
reg:
29
maxItems: 1
30
31
interrupts:
32
maxItems: 1
33
34
"#address-cells":
35
const: 1
36
37
"#size-cells":
38
const: 0
39
40
azoteq,hall-enable:
41
type: boolean
42
description:
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.
47
48
azoteq,suspend-mode:
49
$ref: /schemas/types.yaml#/definitions/uint32
50
enum: [0, 1, 2, 3]
51
default: 0
52
description: |
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)
57
3: Halt (no sensing)
58
59
azoteq,clk-div:
60
type: boolean
61
description: Divides the device's core clock by a factor of 4.
62
63
azoteq,ulp-update:
64
$ref: /schemas/types.yaml#/definitions/uint32
65
minimum: 0
66
maximum: 7
67
default: 3
68
description: Specifies the ultra-low-power mode update rate.
69
70
azoteq,reseed-offset:
71
type: boolean
72
description:
73
Applies an 8-count offset to all long-term averages upon either ATI or
74
reseed events.
75
76
azoteq,filt-str-lp-lta:
77
$ref: /schemas/types.yaml#/definitions/uint32
78
enum: [0, 1, 2, 3]
79
default: 0
80
description:
81
Specifies the long-term average filter strength during low-power mode.
82
83
azoteq,filt-str-lp-cnt:
84
$ref: /schemas/types.yaml#/definitions/uint32
85
enum: [0, 1, 2, 3]
86
default: 0
87
description:
88
Specifies the raw count filter strength during low-power mode.
89
90
azoteq,filt-str-np-lta:
91
$ref: /schemas/types.yaml#/definitions/uint32
92
enum: [0, 1, 2, 3]
93
default: 0
94
description:
95
Specifies the long-term average filter strength during normal-power mode.
96
97
azoteq,filt-str-np-cnt:
98
$ref: /schemas/types.yaml#/definitions/uint32
99
enum: [0, 1, 2, 3]
100
default: 0
101
description:
102
Specifies the raw count filter strength during normal-power mode.
103
104
azoteq,rate-np-ms:
105
minimum: 0
106
maximum: 255
107
default: 16
108
description: Specifies the report rate (in ms) during normal-power mode.
109
110
azoteq,rate-lp-ms:
111
minimum: 0
112
maximum: 255
113
default: 160
114
description: Specifies the report rate (in ms) during low-power mode.
115
116
azoteq,rate-ulp-ms:
117
multipleOf: 16
118
minimum: 0
119
maximum: 4080
120
default: 160
121
description: Specifies the report rate (in ms) during ultra-low-power mode.
122
123
azoteq,timeout-pwr-ms:
124
multipleOf: 512
125
minimum: 0
126
maximum: 130560
127
default: 2560
128
description:
129
Specifies the length of time (in ms) to wait for an event during normal-
130
power mode before transitioning to low-power mode.
131
132
azoteq,timeout-lta-ms:
133
multipleOf: 512
134
minimum: 0
135
maximum: 130560
136
default: 32768
137
description:
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
140
altogether.
141
142
azoteq,ati-band-disable:
143
type: boolean
144
description: Disables the ATI band check.
145
146
azoteq,ati-lp-only:
147
type: boolean
148
description: Limits automatic ATI to low-power mode.
149
150
azoteq,ati-band-tighten:
151
type: boolean
152
description: Tightens the ATI band from 1/8 to 1/16 of the desired target.
153
154
azoteq,filt-disable:
155
type: boolean
156
description: Disables all raw count filtering.
157
158
azoteq,gpio3-select:
159
$ref: /schemas/types.yaml#/definitions/uint32
160
minimum: 0
161
maximum: 7
162
default: 0
163
description:
164
Selects the channel for which the GPIO3 pin represents touch state.
165
166
azoteq,dual-direction:
167
type: boolean
168
description:
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
171
in either direction.
172
173
azoteq,tx-freq:
174
$ref: /schemas/types.yaml#/definitions/uint32
175
enum: [0, 1, 2, 3]
176
default: 0
177
description: |
178
Specifies the inductive sensing excitation frequency as follows (paren-
179
thesized numbers represent the frequency if 'azoteq,clk-div' is present):
180
0: 16 MHz (4 MHz)
181
1: 8 MHz (2 MHz)
182
2: 4 MHz (1 MHz)
183
3: 2 MHz (500 kHz)
184
185
azoteq,global-cap-increase:
186
type: boolean
187
description: Increases the global capacitance adder from 0.5 pF to 1.5 pF.
188
189
azoteq,reseed-select:
190
$ref: /schemas/types.yaml#/definitions/uint32
191
enum: [0, 1, 2, 3]
192
default: 0
193
description: |
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:
196
0: None
197
1: Proximity
198
2: Proximity or touch
199
3: Proximity, touch or deep touch
200
201
azoteq,tracking-enable:
202
type: boolean
203
description:
204
Enables all associated channels to track their respective reference
205
channels.
206
207
azoteq,filt-str-slider:
208
$ref: /schemas/types.yaml#/definitions/uint32
209
enum: [0, 1, 2, 3]
210
default: 1
211
description: Specifies the slider coordinate filter strength.
212
213
azoteq,touch-hold-ms:
214
multipleOf: 256
215
minimum: 256
216
maximum: 65280
217
default: 5120
218
description:
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.
222
223
linux,keycodes:
224
minItems: 1
225
maxItems: 8
226
description: |
227
Specifies the numeric keycodes associated with each available gesture in
228
the following order (enter 0 for unused gestures):
229
0: Slider 0 tap
230
1: Slider 0 hold
231
2: Slider 0 positive flick or swipe
232
3: Slider 0 negative flick or swipe
233
4: Slider 1 tap
234
5: Slider 1 hold
235
6: Slider 1 positive flick or swipe
236
7: Slider 1 negative flick or swipe
237
238
azoteq,gesture-swipe:
239
type: boolean
240
description:
241
Directs the device to interpret axial gestures as a swipe (finger remains
242
on slider) instead of a flick (finger leaves slider).
243
244
azoteq,timeout-tap-ms:
245
multipleOf: 16
246
minimum: 0
247
maximum: 4080
248
default: 400
249
description:
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.
253
254
azoteq,timeout-swipe-ms:
255
multipleOf: 16
256
minimum: 0
257
maximum: 4080
258
default: 2000
259
description:
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
263
version 2.
264
265
azoteq,thresh-swipe:
266
$ref: /schemas/types.yaml#/definitions/uint32
267
minimum: 0
268
maximum: 255
269
default: 128
270
description:
271
Specifies the number of points across which an axial gesture must travel
272
in order to be interpreted as a flick or swipe.
273
274
dependencies:
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"]
279
280
patternProperties:
281
"^channel@[0-7]$":
282
type: object
283
description:
284
Represents a single sensing channel. A channel is active if defined and
285
inactive otherwise.
286
287
properties:
288
reg:
289
minimum: 0
290
maximum: 7
291
description: Index of the channel.
292
293
azoteq,reseed-disable:
294
type: boolean
295
description:
296
Prevents the channel from being reseeded if the long-term average
297
timeout (defined in 'azoteq,timeout-lta') expires.
298
299
azoteq,blocking-enable:
300
type: boolean
301
description: Specifies that the channel is a blocking channel.
302
303
azoteq,slider0-select:
304
type: boolean
305
description: Specifies that the channel participates in slider 0.
306
307
azoteq,slider1-select:
308
type: boolean
309
description: Specifies that the channel participates in slider 1.
310
311
azoteq,rx-enable:
312
$ref: /schemas/types.yaml#/definitions/uint32-array
313
minItems: 1
314
maxItems: 8
315
items:
316
minimum: 0
317
maximum: 7
318
description:
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
321
for channel 0).
322
323
azoteq,tx-enable:
324
$ref: /schemas/types.yaml#/definitions/uint32-array
325
minItems: 1
326
maxItems: 8
327
items:
328
minimum: 0
329
maximum: 7
330
default: [0, 1, 2, 3, 4, 5, 6, 7]
331
description: Specifies the TX pin(s) associated with the channel.
332
333
azoteq,meas-cap-decrease:
334
type: boolean
335
description:
336
Decreases the internal measurement capacitance from 60 pF to 15 pF.
337
338
azoteq,rx-float-inactive:
339
type: boolean
340
description: Floats any inactive CRX pins instead of grounding them.
341
342
azoteq,local-cap-size:
343
$ref: /schemas/types.yaml#/definitions/uint32
344
enum: [0, 1, 2]
345
default: 0
346
description: |
347
Specifies the capacitance to be added to the channel as follows:
348
0: None
349
1: Global adder (based on 'azoteq,global-cap-increase')
350
2: Global adder + 0.5 pF
351
352
azoteq,invert-enable:
353
type: boolean
354
description:
355
Inverts the polarity of the states reported for proximity, touch and
356
deep-touch events relative to their respective thresholds.
357
358
azoteq,proj-bias:
359
$ref: /schemas/types.yaml#/definitions/uint32
360
enum: [0, 1, 2, 3]
361
default: 2
362
description: |
363
Specifies the bias current applied during projected-capacitance
364
sensing as follows:
365
0: 2.5 uA
366
1: 5 uA
367
2: 10 uA
368
3: 20 uA
369
370
azoteq,sense-mode:
371
$ref: /schemas/types.yaml#/definitions/uint32
372
enum: [0, 1, 9, 14, 15]
373
default: 0
374
description: |
375
Specifies the channel's sensing mode as follows:
376
0: Self capacitance
377
1: Projected capacitance
378
9: Self or mutual inductance
379
14: Hall effect
380
15: Temperature
381
382
azoteq,sense-freq:
383
$ref: /schemas/types.yaml#/definitions/uint32
384
enum: [0, 1, 2, 3]
385
default: 1
386
description: |
387
Specifies the channel's sensing frequency as follows (parenthesized
388
numbers represent the frequency if 'azoteq,clk-div' is present):
389
0: 4 MHz (1 MHz)
390
1: 2 MHz (500 kHz)
391
2: 1 MHz (250 kHz)
392
3: 500 kHz (125 kHz)
393
394
azoteq,static-enable:
395
type: boolean
396
description: Enables the static front-end for the channel.
397
398
azoteq,ati-mode:
399
$ref: /schemas/types.yaml#/definitions/uint32
400
enum: [0, 1, 2, 3]
401
default: 3
402
description: |
403
Specifies the channel's ATI mode as follows:
404
0: Disabled
405
1: Semi-partial
406
2: Partial
407
3: Full
408
409
azoteq,ati-base:
410
$ref: /schemas/types.yaml#/definitions/uint32
411
enum: [75, 100, 150, 200]
412
default: 100
413
description: Specifies the channel's ATI base.
414
415
azoteq,ati-target:
416
$ref: /schemas/types.yaml#/definitions/uint32
417
multipleOf: 32
418
minimum: 0
419
maximum: 2016
420
default: 512
421
description: Specifies the channel's ATI target.
422
423
azoteq,assoc-select:
424
$ref: /schemas/types.yaml#/definitions/uint32-array
425
minItems: 1
426
maxItems: 8
427
items:
428
minimum: 0
429
maximum: 7
430
description:
431
Specifies the associated channels for which the channel serves as a
432
reference channel. By default, no channels are selected.
433
434
azoteq,assoc-weight:
435
$ref: /schemas/types.yaml#/definitions/uint32
436
minimum: 0
437
maximum: 255
438
default: 0
439
description:
440
Specifies the channel's impact weight if it acts as an associated
441
channel (0 = 0% impact, 255 = 200% impact).
442
443
patternProperties:
444
"^event-prox(-alt)?$":
445
type: object
446
$ref: input.yaml#
447
description:
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.
451
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).
455
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.
460
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).
464
465
properties:
466
azoteq,thresh:
467
$ref: /schemas/types.yaml#/definitions/uint32
468
minimum: 0
469
maximum: 255
470
default: 10
471
description: Specifies the threshold for the event.
472
473
linux,code: true
474
475
additionalProperties: false
476
477
"^event-touch(-alt)?$":
478
type: object
479
$ref: input.yaml#
480
description: Represents a touch event reported by the channel.
481
482
properties:
483
azoteq,thresh:
484
$ref: /schemas/types.yaml#/definitions/uint32
485
minimum: 0
486
maximum: 255
487
default: 8
488
description: Specifies the threshold for the event.
489
490
azoteq,hyst:
491
$ref: /schemas/types.yaml#/definitions/uint32
492
minimum: 0
493
maximum: 15
494
default: 4
495
description: Specifies the hysteresis for the event.
496
497
linux,code: true
498
499
additionalProperties: false
500
501
"^event-deep(-alt)?$":
502
type: object
503
$ref: input.yaml#
504
description: Represents a deep-touch event reported by the channel.
505
506
properties:
507
azoteq,thresh:
508
$ref: /schemas/types.yaml#/definitions/uint32
509
minimum: 0
510
maximum: 255
511
default: 26
512
description: Specifies the threshold for the event.
513
514
azoteq,hyst:
515
$ref: /schemas/types.yaml#/definitions/uint32
516
minimum: 0
517
maximum: 15
518
default: 0
519
description: Specifies the hysteresis for the event.
520
521
linux,code: true
522
523
additionalProperties: false
524
525
required:
526
- reg
527
528
additionalProperties: false
529
530
if:
531
properties:
532
compatible:
533
contains:
534
enum:
535
- azoteq,iqs269a-d0
536
then:
537
patternProperties:
538
"^channel@[0-7]$":
539
properties:
540
azoteq,slider1-select: false
541
else:
542
properties:
543
azoteq,touch-hold-ms: false
544
545
required:
546
- compatible
547
- reg
548
- interrupts
549
- "#address-cells"
550
- "#size-cells"
551
552
additionalProperties: false
553
554
examples:
555
- |
556
#include <dt-bindings/input/input.h>
557
#include <dt-bindings/interrupt-controller/irq.h>
558
559
i2c {
560
#address-cells = <1>;
561
#size-cells = <0>;
562
563
touch@44 {
564
#address-cells = <1>;
565
#size-cells = <0>;
566
567
compatible = "azoteq,iqs269a";
568
reg = <0x44>;
569
interrupt-parent = <&gpio>;
570
interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
571
572
azoteq,hall-enable;
573
azoteq,suspend-mode = <2>;
574
575
linux,keycodes = <KEY_PLAYPAUSE>,
576
<KEY_STOPCD>,
577
<KEY_NEXTSONG>,
578
<KEY_PREVIOUSSONG>;
579
580
azoteq,timeout-tap-ms = <400>;
581
azoteq,timeout-swipe-ms = <800>;
582
583
channel@0 {
584
reg = <0x0>;
585
586
event-prox {
587
linux,code = <KEY_POWER>;
588
};
589
};
590
591
channel@1 {
592
reg = <0x1>;
593
azoteq,slider0-select;
594
};
595
596
channel@2 {
597
reg = <0x2>;
598
azoteq,slider0-select;
599
};
600
601
channel@3 {
602
reg = <0x3>;
603
azoteq,slider0-select;
604
};
605
606
channel@4 {
607
reg = <0x4>;
608
azoteq,slider0-select;
609
};
610
611
channel@5 {
612
reg = <0x5>;
613
azoteq,slider0-select;
614
};
615
616
channel@6 {
617
reg = <0x6>;
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>;
627
};
628
629
channel@7 {
630
reg = <0x7>;
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>;
640
641
event-touch {
642
linux,code = <SW_LID>;
643
};
644
};
645
};
646
};
647
648
...
649
650