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