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 7title: Azoteq IQS269A Capacitive Touch Controller 8 9maintainers: 10 - Jeff LaBundy <jeff@labundy.com> 11 12description: | 13 The Azoteq IQS269A is an 8-channel capacitive touch controller that features 14 additional Hall-effect and inductive sensing capabilities. 15 16 Link to datasheet: https://www.azoteq.com/ 17 18properties: 19 compatible: 20 const: azoteq,iqs269a 21 22 reg: 23 maxItems: 1 24 25 interrupts: 26 maxItems: 1 27 28 "#address-cells": 29 const: 1 30 31 "#size-cells": 32 const: 0 33 34 azoteq,hall-enable: 35 type: boolean 36 description: 37 Enables Hall-effect sensing on channels 6 and 7. In this case, keycodes 38 assigned to channel 6 are ignored and keycodes assigned to channel 7 are 39 interpreted as switch codes. Refer to the datasheet for requirements im- 40 posed on channels 6 and 7 by Hall-effect sensing. 41 42 azoteq,suspend-mode: 43 $ref: /schemas/types.yaml#/definitions/uint32 44 enum: [0, 1, 2, 3] 45 default: 0 46 description: | 47 Specifies the power mode during suspend as follows: 48 0: Automatic (same as normal runtime, i.e. suspend/resume disabled) 49 1: Low power (all sensing at a reduced reporting rate) 50 2: Ultra-low power (channel 0 proximity sensing) 51 3: Halt (no sensing) 52 53 azoteq,clk-div: 54 type: boolean 55 description: Divides the device's core clock by a factor of 4. 56 57 azoteq,ulp-update: 58 $ref: /schemas/types.yaml#/definitions/uint32 59 minimum: 0 60 maximum: 7 61 default: 3 62 description: Specifies the ultra-low-power mode update rate. 63 64 azoteq,reseed-offset: 65 type: boolean 66 description: 67 Applies an 8-count offset to all long-term averages upon either ATI or 68 reseed events. 69 70 azoteq,filt-str-lp-lta: 71 $ref: /schemas/types.yaml#/definitions/uint32 72 enum: [0, 1, 2, 3] 73 default: 0 74 description: 75 Specifies the long-term average filter strength during low-power mode. 76 77 azoteq,filt-str-lp-cnt: 78 $ref: /schemas/types.yaml#/definitions/uint32 79 enum: [0, 1, 2, 3] 80 default: 0 81 description: 82 Specifies the raw count filter strength during low-power mode. 83 84 azoteq,filt-str-np-lta: 85 $ref: /schemas/types.yaml#/definitions/uint32 86 enum: [0, 1, 2, 3] 87 default: 0 88 description: 89 Specifies the long-term average filter strength during normal-power mode. 90 91 azoteq,filt-str-np-cnt: 92 $ref: /schemas/types.yaml#/definitions/uint32 93 enum: [0, 1, 2, 3] 94 default: 0 95 description: 96 Specifies the raw count filter strength during normal-power mode. 97 98 azoteq,rate-np-ms: 99 minimum: 0 100 maximum: 255 101 default: 16 102 description: Specifies the report rate (in ms) during normal-power mode. 103 104 azoteq,rate-lp-ms: 105 minimum: 0 106 maximum: 255 107 default: 160 108 description: Specifies the report rate (in ms) during low-power mode. 109 110 azoteq,rate-ulp-ms: 111 multipleOf: 16 112 minimum: 0 113 maximum: 4080 114 default: 160 115 description: Specifies the report rate (in ms) during ultra-low-power mode. 116 117 azoteq,timeout-pwr-ms: 118 multipleOf: 512 119 minimum: 0 120 maximum: 130560 121 default: 2560 122 description: 123 Specifies the length of time (in ms) to wait for an event during normal- 124 power mode before transitioning to low-power mode. 125 126 azoteq,timeout-lta-ms: 127 multipleOf: 512 128 minimum: 0 129 maximum: 130560 130 default: 32768 131 description: 132 Specifies the length of time (in ms) to wait before resetting the long- 133 term average of all channels. Specify the maximum timeout to disable it 134 altogether. 135 136 azoteq,ati-band-disable: 137 type: boolean 138 description: Disables the ATI band check. 139 140 azoteq,ati-lp-only: 141 type: boolean 142 description: Limits automatic ATI to low-power mode. 143 144 azoteq,ati-band-tighten: 145 type: boolean 146 description: Tightens the ATI band from 1/8 to 1/16 of the desired target. 147 148 azoteq,filt-disable: 149 type: boolean 150 description: Disables all raw count filtering. 151 152 azoteq,gpio3-select: 153 $ref: /schemas/types.yaml#/definitions/uint32 154 minimum: 0 155 maximum: 7 156 default: 0 157 description: 158 Selects the channel for which the GPIO3 pin represents touch state. 159 160 azoteq,dual-direction: 161 type: boolean 162 description: 163 Specifies that long-term averages are to freeze in the presence of either 164 increasing or decreasing counts, thereby permitting events to be reported 165 in either direction. 166 167 azoteq,tx-freq: 168 $ref: /schemas/types.yaml#/definitions/uint32 169 enum: [0, 1, 2, 3] 170 default: 0 171 description: | 172 Specifies the inductive sensing excitation frequency as follows (paren- 173 thesized numbers represent the frequency if 'azoteq,clk-div' is present): 174 0: 16 MHz (4 MHz) 175 1: 8 MHz (2 MHz) 176 2: 4 MHz (1 MHz) 177 3: 2 MHz (500 kHz) 178 179 azoteq,global-cap-increase: 180 type: boolean 181 description: Increases the global capacitance adder from 0.5 pF to 1.5 pF. 182 183 azoteq,reseed-select: 184 $ref: /schemas/types.yaml#/definitions/uint32 185 enum: [0, 1, 2, 3] 186 default: 0 187 description: | 188 Specifies the event(s) that prompt the device to reseed (i.e. reset the 189 long-term average) of an associated channel as follows: 190 0: None 191 1: Proximity 192 2: Proximity or touch 193 3: Proximity, touch or deep touch 194 195 azoteq,tracking-enable: 196 type: boolean 197 description: 198 Enables all associated channels to track their respective reference 199 channels. 200 201 azoteq,filt-str-slider: 202 $ref: /schemas/types.yaml#/definitions/uint32 203 enum: [0, 1, 2, 3] 204 default: 1 205 description: Specifies the slider coordinate filter strength. 206 207patternProperties: 208 "^channel@[0-7]$": 209 type: object 210 description: 211 Represents a single sensing channel. A channel is active if defined and 212 inactive otherwise. 213 214 properties: 215 reg: 216 minimum: 0 217 maximum: 7 218 description: Index of the channel. 219 220 azoteq,reseed-disable: 221 type: boolean 222 description: 223 Prevents the channel from being reseeded if the long-term average 224 timeout (defined in 'azoteq,timeout-lta') expires. 225 226 azoteq,blocking-enable: 227 type: boolean 228 description: Specifies that the channel is a blocking channel. 229 230 azoteq,slider0-select: 231 type: boolean 232 description: Specifies that the channel participates in slider 0. 233 234 azoteq,slider1-select: 235 type: boolean 236 description: Specifies that the channel participates in slider 1. 237 238 azoteq,rx-enable: 239 $ref: /schemas/types.yaml#/definitions/uint32-array 240 minItems: 1 241 maxItems: 8 242 items: 243 minimum: 0 244 maximum: 7 245 description: 246 Specifies the CRX pin(s) associated with the channel. By default, only 247 the CRX pin corresponding to the channel's index is enabled (e.g. CRX0 248 for channel 0). 249 250 azoteq,tx-enable: 251 $ref: /schemas/types.yaml#/definitions/uint32-array 252 minItems: 1 253 maxItems: 8 254 items: 255 minimum: 0 256 maximum: 7 257 default: [0, 1, 2, 3, 4, 5, 6, 7] 258 description: Specifies the TX pin(s) associated with the channel. 259 260 azoteq,meas-cap-decrease: 261 type: boolean 262 description: 263 Decreases the internal measurement capacitance from 60 pF to 15 pF. 264 265 azoteq,rx-float-inactive: 266 type: boolean 267 description: Floats any inactive CRX pins instead of grounding them. 268 269 azoteq,local-cap-size: 270 $ref: /schemas/types.yaml#/definitions/uint32 271 enum: [0, 1, 2] 272 default: 0 273 description: | 274 Specifies the capacitance to be added to the channel as follows: 275 0: None 276 1: Global adder (based on 'azoteq,global-cap-increase') 277 2: Global adder + 0.5 pF 278 279 azoteq,invert-enable: 280 type: boolean 281 description: 282 Inverts the polarity of the states reported for proximity, touch and 283 deep-touch events relative to their respective thresholds. 284 285 azoteq,proj-bias: 286 $ref: /schemas/types.yaml#/definitions/uint32 287 enum: [0, 1, 2, 3] 288 default: 2 289 description: | 290 Specifies the bias current applied during projected-capacitance 291 sensing as follows: 292 0: 2.5 uA 293 1: 5 uA 294 2: 10 uA 295 3: 20 uA 296 297 azoteq,sense-mode: 298 $ref: /schemas/types.yaml#/definitions/uint32 299 enum: [0, 1, 9, 14, 15] 300 default: 0 301 description: | 302 Specifies the channel's sensing mode as follows: 303 0: Self capacitance 304 1: Projected capacitance 305 9: Self or mutual inductance 306 14: Hall effect 307 15: Temperature 308 309 azoteq,sense-freq: 310 $ref: /schemas/types.yaml#/definitions/uint32 311 enum: [0, 1, 2, 3] 312 default: 1 313 description: | 314 Specifies the channel's sensing frequency as follows (parenthesized 315 numbers represent the frequency if 'azoteq,clk-div' is present): 316 0: 4 MHz (1 MHz) 317 1: 2 MHz (500 kHz) 318 2: 1 MHz (250 kHz) 319 3: 500 kHz (125 kHz) 320 321 azoteq,static-enable: 322 type: boolean 323 description: Enables the static front-end for the channel. 324 325 azoteq,ati-mode: 326 $ref: /schemas/types.yaml#/definitions/uint32 327 enum: [0, 1, 2, 3] 328 default: 3 329 description: | 330 Specifies the channel's ATI mode as follows: 331 0: Disabled 332 1: Semi-partial 333 2: Partial 334 3: Full 335 336 azoteq,ati-base: 337 $ref: /schemas/types.yaml#/definitions/uint32 338 enum: [75, 100, 150, 200] 339 default: 100 340 description: Specifies the channel's ATI base. 341 342 azoteq,ati-target: 343 $ref: /schemas/types.yaml#/definitions/uint32 344 multipleOf: 32 345 minimum: 0 346 maximum: 2016 347 default: 512 348 description: Specifies the channel's ATI target. 349 350 azoteq,assoc-select: 351 $ref: /schemas/types.yaml#/definitions/uint32-array 352 minItems: 1 353 maxItems: 8 354 items: 355 minimum: 0 356 maximum: 7 357 description: 358 Specifies the associated channels for which the channel serves as a 359 reference channel. By default, no channels are selected. 360 361 azoteq,assoc-weight: 362 $ref: /schemas/types.yaml#/definitions/uint32 363 minimum: 0 364 maximum: 255 365 default: 0 366 description: 367 Specifies the channel's impact weight if it acts as an associated 368 channel (0 = 0% impact, 255 = 200% impact). 369 370 patternProperties: 371 "^event-prox(-alt)?$": 372 type: object 373 description: 374 Represents a proximity event reported by the channel in response to 375 a decrease in counts. Node names suffixed with '-alt' instead corre- 376 spond to an increase in counts. 377 378 By default, the long-term average tracks an increase in counts such 379 that only events corresponding to a decrease in counts are reported 380 (refer to the datasheet for more information). 381 382 Specify 'azoteq,dual-direction' to freeze the long-term average when 383 the counts increase or decrease such that events of either direction 384 can be reported. Alternatively, specify 'azoteq,invert-enable' to in- 385 vert the polarity of the states reported by the channel. 386 387 Complementary events (e.g. event-touch and event-touch-alt) can both 388 be present and specify different key or switch codes, but not differ- 389 ent thresholds or hysteresis (if applicable). 390 391 properties: 392 azoteq,thresh: 393 $ref: /schemas/types.yaml#/definitions/uint32 394 minimum: 0 395 maximum: 255 396 default: 10 397 description: Specifies the threshold for the event. 398 399 linux,code: 400 $ref: /schemas/types.yaml#/definitions/uint32 401 description: Numeric key or switch code associated with the event. 402 403 additionalProperties: false 404 405 "^event-touch(-alt)?$": 406 type: object 407 description: Represents a touch event reported by the channel. 408 409 properties: 410 azoteq,thresh: 411 $ref: /schemas/types.yaml#/definitions/uint32 412 minimum: 0 413 maximum: 255 414 default: 8 415 description: Specifies the threshold for the event. 416 417 azoteq,hyst: 418 $ref: /schemas/types.yaml#/definitions/uint32 419 minimum: 0 420 maximum: 15 421 default: 4 422 description: Specifies the hysteresis for the event. 423 424 linux,code: 425 $ref: /schemas/types.yaml#/definitions/uint32 426 description: Numeric key or switch code associated with the event. 427 428 additionalProperties: false 429 430 "^event-deep(-alt)?$": 431 type: object 432 description: Represents a deep-touch event reported by the channel. 433 434 properties: 435 azoteq,thresh: 436 $ref: /schemas/types.yaml#/definitions/uint32 437 minimum: 0 438 maximum: 255 439 default: 26 440 description: Specifies the threshold for the event. 441 442 azoteq,hyst: 443 $ref: /schemas/types.yaml#/definitions/uint32 444 minimum: 0 445 maximum: 15 446 default: 0 447 description: Specifies the hysteresis for the event. 448 449 linux,code: 450 $ref: /schemas/types.yaml#/definitions/uint32 451 description: Numeric key or switch code associated with the event. 452 453 additionalProperties: false 454 455 required: 456 - reg 457 458 additionalProperties: false 459 460required: 461 - compatible 462 - reg 463 - interrupts 464 - "#address-cells" 465 - "#size-cells" 466 467additionalProperties: false 468 469examples: 470 - | 471 #include <dt-bindings/input/input.h> 472 #include <dt-bindings/interrupt-controller/irq.h> 473 474 i2c { 475 #address-cells = <1>; 476 #size-cells = <0>; 477 478 iqs269a@44 { 479 #address-cells = <1>; 480 #size-cells = <0>; 481 482 compatible = "azoteq,iqs269a"; 483 reg = <0x44>; 484 interrupt-parent = <&gpio>; 485 interrupts = <17 IRQ_TYPE_LEVEL_LOW>; 486 487 azoteq,hall-enable; 488 azoteq,suspend-mode = <2>; 489 490 channel@0 { 491 reg = <0x0>; 492 493 event-prox { 494 linux,code = <KEY_POWER>; 495 }; 496 }; 497 498 channel@1 { 499 reg = <0x1>; 500 azoteq,slider0-select; 501 }; 502 503 channel@2 { 504 reg = <0x2>; 505 azoteq,slider0-select; 506 }; 507 508 channel@3 { 509 reg = <0x3>; 510 azoteq,slider0-select; 511 }; 512 513 channel@4 { 514 reg = <0x4>; 515 azoteq,slider0-select; 516 }; 517 518 channel@5 { 519 reg = <0x5>; 520 azoteq,slider0-select; 521 }; 522 523 channel@6 { 524 reg = <0x6>; 525 azoteq,invert-enable; 526 azoteq,static-enable; 527 azoteq,reseed-disable; 528 azoteq,rx-enable = <0>; 529 azoteq,sense-freq = <0x0>; 530 azoteq,sense-mode = <0xE>; 531 azoteq,ati-mode = <0x0>; 532 azoteq,ati-base = <200>; 533 azoteq,ati-target = <320>; 534 }; 535 536 channel@7 { 537 reg = <0x7>; 538 azoteq,invert-enable; 539 azoteq,static-enable; 540 azoteq,reseed-disable; 541 azoteq,rx-enable = <0>, <6>; 542 azoteq,sense-freq = <0x0>; 543 azoteq,sense-mode = <0xE>; 544 azoteq,ati-mode = <0x3>; 545 azoteq,ati-base = <200>; 546 azoteq,ati-target = <320>; 547 548 event-touch { 549 linux,code = <SW_LID>; 550 }; 551 }; 552 }; 553 }; 554 555... 556