Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

dt-bindings: input: Add bindings for Azoteq IQS269A

This patch adds device tree bindings for the Azoteq IQS269A
capacitive touch controller.

Signed-off-by: Jeff LaBundy <jeff@labundy.com>
Reviewed-by: Rob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/1588352982-5117-1-git-send-email-jeff@labundy.com
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>

authored by

Jeff LaBundy and committed by
Dmitry Torokhov
430ee40d 768062fd

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