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 IQS7222A/B/C

This patch adds bindings for the Azoteq IQS7222A/B/C family of
capacitive touch controllers.

Signed-off-by: Jeff LaBundy <jeff@labundy.com>
Reviewed-by: Rob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/20220403221659.865997-2-jeff@labundy.com
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>

authored by

Jeff LaBundy and committed by
Dmitry Torokhov
44dc42d2 db6c4ee7

+960
+960
Documentation/devicetree/bindings/input/azoteq,iqs7222.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/input/azoteq,iqs7222.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Azoteq IQS7222A/B/C Capacitive Touch Controller 8 + 9 + maintainers: 10 + - Jeff LaBundy <jeff@labundy.com> 11 + 12 + description: | 13 + The Azoteq IQS7222A, IQS7222B and IQS7222C are multichannel capacitive touch 14 + controllers that feature additional sensing capabilities. 15 + 16 + Link to datasheets: https://www.azoteq.com/ 17 + 18 + properties: 19 + compatible: 20 + enum: 21 + - azoteq,iqs7222a 22 + - azoteq,iqs7222b 23 + - azoteq,iqs7222c 24 + 25 + reg: 26 + maxItems: 1 27 + 28 + irq-gpios: 29 + maxItems: 1 30 + description: 31 + Specifies the GPIO connected to the device's active-low RDY output. 32 + 33 + reset-gpios: 34 + maxItems: 1 35 + description: 36 + Specifies the GPIO connected to the device's active-low MCLR input. The 37 + device is temporarily held in hardware reset prior to initialization if 38 + this property is present. 39 + 40 + azoteq,rf-filt-enable: 41 + type: boolean 42 + description: Enables the device's internal RF filter. 43 + 44 + azoteq,max-counts: 45 + $ref: /schemas/types.yaml#/definitions/uint32 46 + enum: [0, 1, 2, 3] 47 + description: | 48 + Specifies the maximum number of conversion periods (counts) that can be 49 + reported as follows: 50 + 0: 1023 51 + 1: 2047 52 + 2: 4095 53 + 3: 16384 54 + 55 + azoteq,auto-mode: 56 + $ref: /schemas/types.yaml#/definitions/uint32 57 + enum: [0, 1, 2, 3] 58 + description: | 59 + Specifies the number of conversions to occur before an interrupt is 60 + generated as follows: 61 + 0: 4 62 + 1: 8 63 + 2: 16 64 + 3: 32 65 + 66 + azoteq,ati-frac-div-fine: 67 + $ref: /schemas/types.yaml#/definitions/uint32 68 + minimum: 0 69 + maximum: 31 70 + description: Specifies the preloaded ATI fine fractional divider. 71 + 72 + azoteq,ati-frac-div-coarse: 73 + $ref: /schemas/types.yaml#/definitions/uint32 74 + minimum: 0 75 + maximum: 31 76 + description: Specifies the preloaded ATI coarse fractional divider. 77 + 78 + azoteq,ati-comp-select: 79 + $ref: /schemas/types.yaml#/definitions/uint32 80 + minimum: 0 81 + maximum: 1023 82 + description: Specifies the preloaded ATI compensation selection. 83 + 84 + azoteq,lta-beta-lp: 85 + $ref: /schemas/types.yaml#/definitions/uint32 86 + minimum: 0 87 + maximum: 15 88 + description: 89 + Specifies the long-term average filter damping factor to be applied during 90 + low-power mode. 91 + 92 + azoteq,lta-beta-np: 93 + $ref: /schemas/types.yaml#/definitions/uint32 94 + minimum: 0 95 + maximum: 15 96 + description: 97 + Specifies the long-term average filter damping factor to be applied during 98 + normal-power mode. 99 + 100 + azoteq,counts-beta-lp: 101 + $ref: /schemas/types.yaml#/definitions/uint32 102 + minimum: 0 103 + maximum: 15 104 + description: 105 + Specifies the counts filter damping factor to be applied during low-power 106 + mode. 107 + 108 + azoteq,counts-beta-np: 109 + $ref: /schemas/types.yaml#/definitions/uint32 110 + minimum: 0 111 + maximum: 15 112 + description: 113 + Specifies the counts filter damping factor to be applied during normal- 114 + power mode. 115 + 116 + azoteq,lta-fast-beta-lp: 117 + $ref: /schemas/types.yaml#/definitions/uint32 118 + minimum: 0 119 + maximum: 15 120 + description: 121 + Specifies the long-term average filter fast damping factor to be applied 122 + during low-power mode. 123 + 124 + azoteq,lta-fast-beta-np: 125 + $ref: /schemas/types.yaml#/definitions/uint32 126 + minimum: 0 127 + maximum: 15 128 + description: 129 + Specifies the long-term average filter fast damping factor to be applied 130 + during normal-power mode. 131 + 132 + azoteq,timeout-ati-ms: 133 + multipleOf: 500 134 + minimum: 0 135 + maximum: 32767500 136 + description: 137 + Specifies the delay (in ms) before ATI is retried following an ATI error. 138 + 139 + azoteq,rate-ati-ms: 140 + minimum: 0 141 + maximum: 65535 142 + description: Specifies the rate (in ms) at which ATI status is evaluated. 143 + 144 + azoteq,timeout-np-ms: 145 + minimum: 0 146 + maximum: 65535 147 + description: 148 + Specifies the length of time (in ms) to wait for an event before moving 149 + from normal-power mode to low-power mode. 150 + 151 + azoteq,rate-np-ms: 152 + minimum: 0 153 + maximum: 3000 154 + description: Specifies the report rate (in ms) during normal-power mode. 155 + 156 + azoteq,timeout-lp-ms: 157 + minimum: 0 158 + maximum: 65535 159 + description: 160 + Specifies the length of time (in ms) to wait for an event before moving 161 + from low-power mode to ultra-low-power mode. 162 + 163 + azoteq,rate-lp-ms: 164 + minimum: 0 165 + maximum: 3000 166 + description: Specifies the report rate (in ms) during low-power mode. 167 + 168 + azoteq,timeout-ulp-ms: 169 + minimum: 0 170 + maximum: 65535 171 + description: 172 + Specifies the rate (in ms) at which channels not regularly sampled during 173 + ultra-low-power mode are updated. 174 + 175 + azoteq,rate-ulp-ms: 176 + minimum: 0 177 + maximum: 3000 178 + description: Specifies the report rate (in ms) during ultra-low-power mode. 179 + 180 + patternProperties: 181 + "^cycle-[0-9]$": 182 + type: object 183 + description: Represents a conversion cycle serving two sensing channels. 184 + 185 + properties: 186 + azoteq,conv-period: 187 + $ref: /schemas/types.yaml#/definitions/uint32 188 + minimum: 0 189 + maximum: 255 190 + description: Specifies the cycle's conversion period. 191 + 192 + azoteq,conv-frac: 193 + $ref: /schemas/types.yaml#/definitions/uint32 194 + minimum: 0 195 + maximum: 255 196 + description: Specifies the cycle's conversion frequency fraction. 197 + 198 + azoteq,tx-enable: 199 + $ref: /schemas/types.yaml#/definitions/uint32-array 200 + minItems: 1 201 + maxItems: 9 202 + items: 203 + minimum: 0 204 + maximum: 8 205 + description: Specifies the CTx pin(s) associated with the cycle. 206 + 207 + azoteq,rx-float-inactive: 208 + type: boolean 209 + description: Floats any inactive CRx pins instead of grounding them. 210 + 211 + azoteq,dead-time-enable: 212 + type: boolean 213 + description: 214 + Increases the denominator of the conversion frequency formula by one. 215 + 216 + azoteq,tx-freq-fosc: 217 + type: boolean 218 + description: 219 + Fixes the conversion frequency to that of the device's core clock. 220 + 221 + azoteq,vbias-enable: 222 + type: boolean 223 + description: Enables the bias voltage for use during inductive sensing. 224 + 225 + azoteq,sense-mode: 226 + $ref: /schemas/types.yaml#/definitions/uint32 227 + enum: [0, 1, 2, 3] 228 + description: | 229 + Specifies the cycle's sensing mode as follows: 230 + 0: None 231 + 1: Self capacitive 232 + 2: Mutual capacitive 233 + 3: Inductive 234 + 235 + Note that in the case of IQS7222A, cycles 5 and 6 are restricted to 236 + Hall-effect sensing. 237 + 238 + azoteq,iref-enable: 239 + type: boolean 240 + description: 241 + Enables the current reference for use during various sensing modes. 242 + 243 + azoteq,iref-level: 244 + $ref: /schemas/types.yaml#/definitions/uint32 245 + minimum: 0 246 + maximum: 15 247 + description: Specifies the cycle's current reference level. 248 + 249 + azoteq,iref-trim: 250 + $ref: /schemas/types.yaml#/definitions/uint32 251 + minimum: 0 252 + maximum: 15 253 + description: Specifies the cycle's current reference trim. 254 + 255 + dependencies: 256 + azoteq,iref-level: ["azoteq,iref-enable"] 257 + azoteq,iref-trim: ["azoteq,iref-enable"] 258 + 259 + additionalProperties: false 260 + 261 + "^channel-([0-9]|1[0-9])$": 262 + type: object 263 + description: 264 + Represents a single sensing channel. A channel is active if defined and 265 + inactive otherwise. 266 + 267 + Note that in the case of IQS7222A, channels 10 and 11 are restricted to 268 + Hall-effect sensing with events reported on channel 10 only. 269 + 270 + properties: 271 + azoteq,ulp-allow: 272 + type: boolean 273 + description: 274 + Permits the device to enter ultra-low-power mode while the channel 275 + lies in a state of touch or proximity. 276 + 277 + azoteq,ref-select: 278 + $ref: /schemas/types.yaml#/definitions/uint32 279 + minimum: 0 280 + maximum: 9 281 + description: Specifies a separate reference channel to be followed. 282 + 283 + azoteq,ref-weight: 284 + $ref: /schemas/types.yaml#/definitions/uint32 285 + minimum: 0 286 + maximum: 65535 287 + description: Specifies the relative weight of the reference channel. 288 + 289 + azoteq,use-prox: 290 + type: boolean 291 + description: 292 + Activates the reference channel in response to proximity events 293 + instead of touch events. 294 + 295 + azoteq,ati-band: 296 + $ref: /schemas/types.yaml#/definitions/uint32 297 + enum: [0, 1, 2, 3] 298 + description: | 299 + Specifies the channel's ATI band as a fraction of its ATI target as 300 + follows: 301 + 0: 1/16 302 + 1: 1/8 303 + 2: 1/4 304 + 3: 1/2 305 + 306 + azoteq,global-halt: 307 + type: boolean 308 + description: 309 + Specifies that the channel's long-term average is to freeze if any 310 + other participating channel lies in a proximity or touch state. 311 + 312 + azoteq,invert-enable: 313 + type: boolean 314 + description: 315 + Inverts the polarity of the states reported for proximity and touch 316 + events relative to their respective thresholds. 317 + 318 + azoteq,dual-direction: 319 + type: boolean 320 + description: 321 + Specifies that the channel's long-term average is to freeze in the 322 + presence of either increasing or decreasing counts, thereby permit- 323 + ting events to be reported in either direction. 324 + 325 + azoteq,rx-enable: 326 + $ref: /schemas/types.yaml#/definitions/uint32-array 327 + minItems: 1 328 + maxItems: 4 329 + items: 330 + minimum: 0 331 + maximum: 7 332 + description: Specifies the CRx pin(s) associated with the channel. 333 + 334 + azoteq,samp-cap-double: 335 + type: boolean 336 + description: Doubles the sampling capacitance from 40 pF to 80 pF. 337 + 338 + azoteq,vref-half: 339 + type: boolean 340 + description: Halves the discharge threshold from 1.0 V to 0.5 V. 341 + 342 + azoteq,proj-bias: 343 + $ref: /schemas/types.yaml#/definitions/uint32 344 + enum: [0, 1, 2, 3] 345 + description: | 346 + Specifies the bias current applied during mutual (projected) 347 + capacitive sensing as follows: 348 + 0: 2 uA 349 + 1: 5 uA 350 + 2: 7 uA 351 + 3: 10 uA 352 + 353 + azoteq,ati-target: 354 + $ref: /schemas/types.yaml#/definitions/uint32 355 + multipleOf: 8 356 + minimum: 0 357 + maximum: 2040 358 + description: Specifies the channel's ATI target. 359 + 360 + azoteq,ati-base: 361 + $ref: /schemas/types.yaml#/definitions/uint32 362 + multipleOf: 16 363 + minimum: 0 364 + maximum: 496 365 + description: Specifies the channel's ATI base. 366 + 367 + azoteq,ati-mode: 368 + $ref: /schemas/types.yaml#/definitions/uint32 369 + enum: [0, 1, 2, 3, 4, 5] 370 + description: | 371 + Specifies the channel's ATI mode as follows: 372 + 0: Disabled 373 + 1: Compensation 374 + 2: Compensation divider 375 + 3: Fine fractional divider 376 + 4: Coarse fractional divider 377 + 5: Full 378 + 379 + azoteq,ati-frac-div-fine: 380 + $ref: /schemas/types.yaml#/definitions/uint32 381 + minimum: 0 382 + maximum: 31 383 + description: Specifies the channel's ATI fine fractional divider. 384 + 385 + azoteq,ati-frac-mult-coarse: 386 + $ref: /schemas/types.yaml#/definitions/uint32 387 + minimum: 0 388 + maximum: 15 389 + description: Specifies the channel's ATI coarse fractional multiplier. 390 + 391 + azoteq,ati-frac-div-coarse: 392 + $ref: /schemas/types.yaml#/definitions/uint32 393 + minimum: 0 394 + maximum: 31 395 + description: Specifies the channel's ATI coarse fractional divider. 396 + 397 + azoteq,ati-comp-div: 398 + $ref: /schemas/types.yaml#/definitions/uint32 399 + minimum: 0 400 + maximum: 31 401 + description: Specifies the channel's ATI compensation divider. 402 + 403 + azoteq,ati-comp-select: 404 + $ref: /schemas/types.yaml#/definitions/uint32 405 + minimum: 0 406 + maximum: 1023 407 + description: Specifies the channel's ATI compensation selection. 408 + 409 + azoteq,debounce-enter: 410 + $ref: /schemas/types.yaml#/definitions/uint32 411 + minimum: 0 412 + maximum: 15 413 + description: Specifies the channel's debounce entrance factor. 414 + 415 + azoteq,debounce-exit: 416 + $ref: /schemas/types.yaml#/definitions/uint32 417 + minimum: 0 418 + maximum: 15 419 + description: Specifies the channel's debounce exit factor. 420 + 421 + patternProperties: 422 + "^event-(prox|touch)$": 423 + type: object 424 + description: 425 + Represents a proximity or touch event reported by the channel. 426 + 427 + properties: 428 + azoteq,gpio-select: 429 + $ref: /schemas/types.yaml#/definitions/uint32-array 430 + minItems: 1 431 + maxItems: 3 432 + items: 433 + minimum: 0 434 + maximum: 2 435 + description: | 436 + Specifies one or more GPIO mapped to the event as follows: 437 + 0: GPIO0 438 + 1: GPIO3 (IQS7222C only) 439 + 2: GPIO4 (IQS7222C only) 440 + 441 + Note that although multiple events can be mapped to a single 442 + GPIO, they must all be of the same type (proximity, touch or 443 + slider gesture). 444 + 445 + azoteq,thresh: 446 + $ref: /schemas/types.yaml#/definitions/uint32 447 + description: 448 + Specifies the threshold for the event. Valid entries range from 449 + 0-127 and 0-255 for proximity and touch events, respectively. 450 + 451 + azoteq,hyst: 452 + $ref: /schemas/types.yaml#/definitions/uint32 453 + minimum: 0 454 + maximum: 255 455 + description: 456 + Specifies the hysteresis for the event (touch events only). 457 + 458 + azoteq,timeout-press-ms: 459 + multipleOf: 500 460 + minimum: 0 461 + maximum: 127500 462 + description: 463 + Specifies the length of time (in ms) to wait before automatically 464 + releasing a press event. Specify zero to allow the press state to 465 + persist indefinitely. 466 + 467 + The IQS7222B does not feature channel-specific timeouts; the time- 468 + out specified for any one channel applies to all channels. 469 + 470 + linux,code: 471 + $ref: /schemas/types.yaml#/definitions/uint32 472 + description: 473 + Numeric key or switch code associated with the event. Specify 474 + KEY_RESERVED (0) to opt out of event reporting. 475 + 476 + linux,input-type: 477 + $ref: /schemas/types.yaml#/definitions/uint32 478 + enum: [1, 5] 479 + default: 1 480 + description: 481 + Specifies whether the event is to be interpreted as a key (1) 482 + or a switch (5). 483 + 484 + required: 485 + - linux,code 486 + 487 + additionalProperties: false 488 + 489 + dependencies: 490 + azoteq,ref-weight: ["azoteq,ref-select"] 491 + azoteq,use-prox: ["azoteq,ref-select"] 492 + 493 + additionalProperties: false 494 + 495 + "^slider-[0-1]$": 496 + type: object 497 + description: Represents a slider comprising three or four channels. 498 + 499 + properties: 500 + azoteq,channel-select: 501 + $ref: /schemas/types.yaml#/definitions/uint32-array 502 + minItems: 3 503 + maxItems: 4 504 + items: 505 + minimum: 0 506 + maximum: 9 507 + description: 508 + Specifies the order of the channels that participate in the slider. 509 + 510 + azoteq,slider-size: 511 + $ref: /schemas/types.yaml#/definitions/uint32 512 + minimum: 0 513 + maximum: 65535 514 + description: 515 + Specifies the slider's one-dimensional resolution, equal to the 516 + maximum coordinate plus one. 517 + 518 + azoteq,lower-cal: 519 + $ref: /schemas/types.yaml#/definitions/uint32 520 + minimum: 0 521 + maximum: 255 522 + description: Specifies the slider's lower starting point. 523 + 524 + azoteq,upper-cal: 525 + $ref: /schemas/types.yaml#/definitions/uint32 526 + minimum: 0 527 + maximum: 255 528 + description: Specifies the slider's upper starting point. 529 + 530 + azoteq,top-speed: 531 + $ref: /schemas/types.yaml#/definitions/uint32 532 + minimum: 0 533 + maximum: 65535 534 + description: 535 + Specifies the speed of movement after which coordinate filtering is 536 + no longer applied. 537 + 538 + azoteq,bottom-speed: 539 + $ref: /schemas/types.yaml#/definitions/uint32 540 + multipleOf: 4 541 + minimum: 0 542 + maximum: 1020 543 + description: 544 + Specifies the speed of movement after which coordinate filtering is 545 + linearly reduced. 546 + 547 + azoteq,bottom-beta: 548 + $ref: /schemas/types.yaml#/definitions/uint32 549 + minimum: 0 550 + maximum: 7 551 + description: 552 + Specifies the coordinate filter damping factor to be applied 553 + while the speed of movement is below that which is specified 554 + by azoteq,bottom-speed. 555 + 556 + azoteq,static-beta: 557 + type: boolean 558 + description: 559 + Applies the coordinate filter damping factor specified by 560 + azoteq,bottom-beta regardless of the speed of movement. 561 + 562 + azoteq,use-prox: 563 + type: boolean 564 + description: 565 + Directs the slider to respond to the proximity states of the selected 566 + channels instead of their corresponding touch states. Note the slider 567 + cannot report granular coordinates during a state of proximity. 568 + 569 + linux,axis: 570 + $ref: /schemas/types.yaml#/definitions/uint32 571 + description: 572 + Specifies the absolute axis to which coordinates are mapped. Specify 573 + ABS_WHEEL to operate the slider as a wheel (IQS7222C only). 574 + 575 + patternProperties: 576 + "^event-(press|tap|(swipe|flick)-(pos|neg))$": 577 + type: object 578 + description: 579 + Represents a press or gesture (IQS7222A only) event reported by 580 + the slider. 581 + 582 + properties: 583 + linux,code: 584 + $ref: /schemas/types.yaml#/definitions/uint32 585 + description: Numeric key code associated with the event. 586 + 587 + azoteq,gesture-max-ms: 588 + multipleOf: 4 589 + minimum: 0 590 + maximum: 1020 591 + description: 592 + Specifies the length of time (in ms) within which a tap, swipe 593 + or flick gesture must be completed in order to be acknowledged 594 + by the device. The number specified for any one swipe or flick 595 + gesture applies to all remaining swipe or flick gestures. 596 + 597 + azoteq,gesture-min-ms: 598 + multipleOf: 4 599 + minimum: 0 600 + maximum: 124 601 + description: 602 + Specifies the length of time (in ms) for which a tap gesture must 603 + be held in order to be acknowledged by the device. 604 + 605 + azoteq,gesture-dist: 606 + $ref: /schemas/types.yaml#/definitions/uint32 607 + multipleOf: 16 608 + minimum: 0 609 + maximum: 4080 610 + description: 611 + Specifies the distance across which a swipe or flick gesture must 612 + travel in order to be acknowledged by the device. The number spec- 613 + ified for any one swipe or flick gesture applies to all remaining 614 + swipe or flick gestures. 615 + 616 + azoteq,gpio-select: 617 + $ref: /schemas/types.yaml#/definitions/uint32-array 618 + minItems: 1 619 + maxItems: 1 620 + items: 621 + minimum: 0 622 + maximum: 0 623 + description: | 624 + Specifies an individual GPIO mapped to a tap, swipe or flick 625 + gesture as follows: 626 + 0: GPIO0 627 + 1: GPIO3 (reserved) 628 + 2: GPIO4 (reserved) 629 + 630 + Note that although multiple events can be mapped to a single 631 + GPIO, they must all be of the same type (proximity, touch or 632 + slider gesture). 633 + 634 + required: 635 + - linux,code 636 + 637 + additionalProperties: false 638 + 639 + required: 640 + - azoteq,channel-select 641 + 642 + additionalProperties: false 643 + 644 + "^gpio-[0-2]$": 645 + type: object 646 + description: | 647 + Represents a GPIO mapped to one or more events as follows: 648 + gpio-0: GPIO0 649 + gpio-1: GPIO3 (IQS7222C only) 650 + gpio-2: GPIO4 (IQS7222C only) 651 + 652 + allOf: 653 + - $ref: ../pinctrl/pincfg-node.yaml# 654 + 655 + properties: 656 + drive-open-drain: true 657 + 658 + additionalProperties: false 659 + 660 + allOf: 661 + - if: 662 + properties: 663 + compatible: 664 + contains: 665 + const: azoteq,iqs7222b 666 + 667 + then: 668 + patternProperties: 669 + "^cycle-[0-9]$": 670 + properties: 671 + azoteq,iref-enable: false 672 + 673 + "^channel-([0-9]|1[0-9])$": 674 + properties: 675 + azoteq,ref-select: false 676 + 677 + patternProperties: 678 + "^event-(prox|touch)$": 679 + properties: 680 + azoteq,gpio-select: false 681 + 682 + "^slider-[0-1]$": false 683 + 684 + "^gpio-[0-2]$": false 685 + 686 + - if: 687 + properties: 688 + compatible: 689 + contains: 690 + const: azoteq,iqs7222a 691 + 692 + then: 693 + patternProperties: 694 + "^channel-([0-9]|1[0-9])$": 695 + patternProperties: 696 + "^event-(prox|touch)$": 697 + properties: 698 + azoteq,gpio-select: 699 + maxItems: 1 700 + items: 701 + maximum: 0 702 + 703 + "^slider-[0-1]$": 704 + properties: 705 + azoteq,slider-size: 706 + multipleOf: 16 707 + maximum: 4080 708 + 709 + azoteq,top-speed: 710 + multipleOf: 4 711 + maximum: 1020 712 + 713 + else: 714 + patternProperties: 715 + "^channel-([0-9]|1[0-9])$": 716 + properties: 717 + azoteq,ulp-allow: false 718 + 719 + "^slider-[0-1]$": 720 + patternProperties: 721 + "^event-(press|tap|(swipe|flick)-(pos|neg))$": 722 + properties: 723 + azoteq,gesture-max-ms: false 724 + 725 + azoteq,gesture-min-ms: false 726 + 727 + azoteq,gesture-dist: false 728 + 729 + azoteq,gpio-select: false 730 + 731 + required: 732 + - compatible 733 + - reg 734 + - irq-gpios 735 + 736 + additionalProperties: false 737 + 738 + examples: 739 + - | 740 + #include <dt-bindings/gpio/gpio.h> 741 + #include <dt-bindings/input/input.h> 742 + 743 + i2c { 744 + #address-cells = <1>; 745 + #size-cells = <0>; 746 + 747 + iqs7222a@44 { 748 + compatible = "azoteq,iqs7222a"; 749 + reg = <0x44>; 750 + irq-gpios = <&gpio 4 GPIO_ACTIVE_LOW>; 751 + azoteq,lta-beta-lp = <7>; 752 + azoteq,lta-beta-np = <8>; 753 + azoteq,counts-beta-lp = <2>; 754 + azoteq,counts-beta-np = <3>; 755 + azoteq,lta-fast-beta-lp = <3>; 756 + azoteq,lta-fast-beta-np = <4>; 757 + 758 + cycle-0 { 759 + azoteq,conv-period = <5>; 760 + azoteq,conv-frac = <127>; 761 + azoteq,tx-enable = <1>, <2>, <4>, <5>; 762 + azoteq,dead-time-enable; 763 + azoteq,sense-mode = <2>; 764 + }; 765 + 766 + cycle-1 { 767 + azoteq,conv-period = <5>; 768 + azoteq,conv-frac = <127>; 769 + azoteq,tx-enable = <5>; 770 + azoteq,dead-time-enable; 771 + azoteq,sense-mode = <2>; 772 + }; 773 + 774 + cycle-2 { 775 + azoteq,conv-period = <5>; 776 + azoteq,conv-frac = <127>; 777 + azoteq,tx-enable = <4>; 778 + azoteq,dead-time-enable; 779 + azoteq,sense-mode = <2>; 780 + }; 781 + 782 + cycle-3 { 783 + azoteq,conv-period = <5>; 784 + azoteq,conv-frac = <127>; 785 + azoteq,tx-enable = <2>; 786 + azoteq,dead-time-enable; 787 + azoteq,sense-mode = <2>; 788 + }; 789 + 790 + cycle-4 { 791 + azoteq,conv-period = <5>; 792 + azoteq,conv-frac = <127>; 793 + azoteq,tx-enable = <1>; 794 + azoteq,dead-time-enable; 795 + azoteq,sense-mode = <2>; 796 + }; 797 + 798 + cycle-5 { 799 + azoteq,conv-period = <2>; 800 + azoteq,conv-frac = <0>; 801 + }; 802 + 803 + cycle-6 { 804 + azoteq,conv-period = <2>; 805 + azoteq,conv-frac = <0>; 806 + }; 807 + 808 + channel-0 { 809 + azoteq,ulp-allow; 810 + azoteq,global-halt; 811 + azoteq,invert-enable; 812 + azoteq,rx-enable = <3>; 813 + azoteq,ati-target = <800>; 814 + azoteq,ati-base = <208>; 815 + azoteq,ati-mode = <5>; 816 + }; 817 + 818 + channel-1 { 819 + azoteq,global-halt; 820 + azoteq,invert-enable; 821 + azoteq,rx-enable = <3>; 822 + azoteq,ati-target = <496>; 823 + azoteq,ati-base = <208>; 824 + azoteq,ati-mode = <5>; 825 + }; 826 + 827 + channel-2 { 828 + azoteq,global-halt; 829 + azoteq,invert-enable; 830 + azoteq,rx-enable = <3>; 831 + azoteq,ati-target = <496>; 832 + azoteq,ati-base = <208>; 833 + azoteq,ati-mode = <5>; 834 + }; 835 + 836 + channel-3 { 837 + azoteq,global-halt; 838 + azoteq,invert-enable; 839 + azoteq,rx-enable = <3>; 840 + azoteq,ati-target = <496>; 841 + azoteq,ati-base = <208>; 842 + azoteq,ati-mode = <5>; 843 + }; 844 + 845 + channel-4 { 846 + azoteq,global-halt; 847 + azoteq,invert-enable; 848 + azoteq,rx-enable = <3>; 849 + azoteq,ati-target = <496>; 850 + azoteq,ati-base = <208>; 851 + azoteq,ati-mode = <5>; 852 + }; 853 + 854 + channel-5 { 855 + azoteq,ulp-allow; 856 + azoteq,global-halt; 857 + azoteq,invert-enable; 858 + azoteq,rx-enable = <6>; 859 + azoteq,ati-target = <800>; 860 + azoteq,ati-base = <144>; 861 + azoteq,ati-mode = <5>; 862 + }; 863 + 864 + channel-6 { 865 + azoteq,global-halt; 866 + azoteq,invert-enable; 867 + azoteq,rx-enable = <6>; 868 + azoteq,ati-target = <496>; 869 + azoteq,ati-base = <160>; 870 + azoteq,ati-mode = <5>; 871 + 872 + event-touch { 873 + linux,code = <KEY_MUTE>; 874 + }; 875 + }; 876 + 877 + channel-7 { 878 + azoteq,global-halt; 879 + azoteq,invert-enable; 880 + azoteq,rx-enable = <6>; 881 + azoteq,ati-target = <496>; 882 + azoteq,ati-base = <160>; 883 + azoteq,ati-mode = <5>; 884 + 885 + event-touch { 886 + linux,code = <KEY_VOLUMEDOWN>; 887 + }; 888 + }; 889 + 890 + channel-8 { 891 + azoteq,global-halt; 892 + azoteq,invert-enable; 893 + azoteq,rx-enable = <6>; 894 + azoteq,ati-target = <496>; 895 + azoteq,ati-base = <160>; 896 + azoteq,ati-mode = <5>; 897 + 898 + event-touch { 899 + linux,code = <KEY_VOLUMEUP>; 900 + }; 901 + }; 902 + 903 + channel-9 { 904 + azoteq,global-halt; 905 + azoteq,invert-enable; 906 + azoteq,rx-enable = <6>; 907 + azoteq,ati-target = <496>; 908 + azoteq,ati-base = <160>; 909 + azoteq,ati-mode = <5>; 910 + 911 + event-touch { 912 + linux,code = <KEY_POWER>; 913 + }; 914 + }; 915 + 916 + channel-10 { 917 + azoteq,ulp-allow; 918 + azoteq,ati-target = <496>; 919 + azoteq,ati-base = <112>; 920 + 921 + event-touch { 922 + linux,code = <SW_LID>; 923 + linux,input-type = <EV_SW>; 924 + }; 925 + }; 926 + 927 + channel-11 { 928 + azoteq,ati-target = <496>; 929 + azoteq,ati-base = <112>; 930 + }; 931 + 932 + slider-0 { 933 + azoteq,channel-select = <1>, <2>, <3>, <4>; 934 + azoteq,slider-size = <4080>; 935 + azoteq,upper-cal = <50>; 936 + azoteq,lower-cal = <30>; 937 + azoteq,top-speed = <200>; 938 + azoteq,bottom-speed = <1>; 939 + azoteq,bottom-beta = <3>; 940 + 941 + event-tap { 942 + linux,code = <KEY_PLAYPAUSE>; 943 + azoteq,gesture-max-ms = <600>; 944 + azoteq,gesture-min-ms = <24>; 945 + }; 946 + 947 + event-flick-pos { 948 + linux,code = <KEY_NEXTSONG>; 949 + azoteq,gesture-max-ms = <600>; 950 + azoteq,gesture-dist = <816>; 951 + }; 952 + 953 + event-flick-neg { 954 + linux,code = <KEY_PREVIOUSSONG>; 955 + }; 956 + }; 957 + }; 958 + }; 959 + 960 + ...