1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2%YAML 1.2 3--- 4$id: http://devicetree.org/schemas/input/touchscreen/azoteq,iqs7211.yaml# 5$schema: http://devicetree.org/meta-schemas/core.yaml# 6 7title: Azoteq IQS7210A/7211A/E Trackpad/Touchscreen Controller 8 9maintainers: 10 - Jeff LaBundy <jeff@labundy.com> 11 12description: | 13 The Azoteq IQS7210A, IQS7211A and IQS7211E trackpad and touchscreen control- 14 lers employ projected-capacitance sensing and can track two contacts. 15 16 Link to datasheets: https://www.azoteq.com/ 17 18properties: 19 compatible: 20 enum: 21 - azoteq,iqs7210a 22 - azoteq,iqs7211a 23 - azoteq,iqs7211e 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. The 32 pin doubles as the IQS7211E's active-low MCLR input, in which case this 33 GPIO must be configured as open-drain. 34 35 reset-gpios: 36 maxItems: 1 37 description: 38 Specifies the GPIO connected to the device's active-low MCLR input. The 39 device is temporarily held in hardware reset prior to initialization if 40 this property is present. 41 42 azoteq,forced-comms: 43 type: boolean 44 description: 45 Enables forced communication; to be used with host adapters that cannot 46 tolerate clock stretching. 47 48 azoteq,forced-comms-default: 49 $ref: /schemas/types.yaml#/definitions/uint32 50 enum: [0, 1] 51 description: 52 Indicates if the device's OTP memory enables (1) or disables (0) forced 53 communication by default. Specifying this property can expedite startup 54 time if the default value is known. 55 56 If this property is not specified, communication is not initiated until 57 the device asserts its RDY pin shortly after exiting hardware reset. At 58 that point, forced communication is either enabled or disabled based on 59 the presence or absence of the 'azoteq,forced-comms' property. 60 61 azoteq,rate-active-ms: 62 minimum: 0 63 maximum: 65535 64 description: Specifies the report rate (in ms) during active mode. 65 66 azoteq,rate-touch-ms: 67 minimum: 0 68 maximum: 65535 69 description: Specifies the report rate (in ms) during idle-touch mode. 70 71 azoteq,rate-idle-ms: 72 minimum: 0 73 maximum: 65535 74 description: Specifies the report rate (in ms) during idle mode. 75 76 azoteq,rate-lp1-ms: 77 minimum: 0 78 maximum: 65535 79 description: Specifies the report rate (in ms) during low-power mode 1. 80 81 azoteq,rate-lp2-ms: 82 minimum: 0 83 maximum: 65535 84 description: Specifies the report rate (in ms) during low-power mode 2. 85 86 azoteq,timeout-active-ms: 87 multipleOf: 1000 88 minimum: 0 89 maximum: 65535000 90 description: 91 Specifies the length of time (in ms) to wait for an event before moving 92 from active mode to idle or idle-touch modes. 93 94 azoteq,timeout-touch-ms: 95 multipleOf: 1000 96 minimum: 0 97 maximum: 65535000 98 description: 99 Specifies the length of time (in ms) to wait for an event before moving 100 from idle-touch mode to idle mode. 101 102 azoteq,timeout-idle-ms: 103 multipleOf: 1000 104 minimum: 0 105 maximum: 65535000 106 description: 107 Specifies the length of time (in ms) to wait for an event before moving 108 from idle mode to low-power mode 1. 109 110 azoteq,timeout-lp1-ms: 111 multipleOf: 1000 112 minimum: 0 113 maximum: 65535000 114 description: 115 Specifies the length of time (in ms) to wait for an event before moving 116 from low-power mode 1 to low-power mode 2. 117 118 azoteq,timeout-lp2-ms: 119 multipleOf: 1000 120 minimum: 0 121 maximum: 60000 122 description: 123 Specifies the rate (in ms) at which the trackpad reference values 124 are updated during low-power modes 1 and 2. 125 126 azoteq,timeout-ati-ms: 127 multipleOf: 1000 128 minimum: 0 129 maximum: 60000 130 description: 131 Specifies the delay (in ms) before the automatic tuning implementation 132 (ATI) is retried in the event it fails to complete. 133 134 azoteq,timeout-comms-ms: 135 minimum: 0 136 maximum: 65535 137 description: 138 Specifies the delay (in ms) before a communication window is closed. 139 140 azoteq,timeout-press-ms: 141 multipleOf: 1000 142 minimum: 0 143 maximum: 60000 144 description: 145 Specifies the length of time (in ms) to wait before automatically 146 releasing a press event. Specify zero to allow the press state to 147 persist indefinitely. 148 149 azoteq,fosc-freq: 150 $ref: /schemas/types.yaml#/definitions/uint32 151 enum: [0, 1] 152 description: | 153 Specifies the device's core clock frequency as follows: 154 0: 14 MHz 155 1: 18 MHz 156 157 azoteq,fosc-trim: 158 $ref: /schemas/types.yaml#/definitions/uint32 159 minimum: 0 160 maximum: 15 161 description: Specifies the device's core clock frequency trim. 162 163 azoteq,num-contacts: 164 $ref: /schemas/types.yaml#/definitions/uint32 165 minimum: 0 166 maximum: 2 167 default: 0 168 description: Specifies the number of contacts reported by the device. 169 170 azoteq,contact-split: 171 $ref: /schemas/types.yaml#/definitions/uint32 172 minimum: 0 173 maximum: 255 174 description: Specifies the contact (finger) split factor. 175 176 azoteq,trim-x: 177 $ref: /schemas/types.yaml#/definitions/uint32 178 minimum: 0 179 maximum: 255 180 description: Specifies the horizontal trim width. 181 182 azoteq,trim-y: 183 $ref: /schemas/types.yaml#/definitions/uint32 184 minimum: 0 185 maximum: 255 186 description: Specifies the vertical trim height. 187 188 trackpad: 189 type: object 190 description: Represents all channels associated with the trackpad. 191 192 properties: 193 azoteq,rx-enable: 194 $ref: /schemas/types.yaml#/definitions/uint32-array 195 minItems: 1 196 maxItems: 8 197 items: 198 minimum: 0 199 maximum: 7 200 description: 201 Specifies the order of the CRx pin(s) associated with the trackpad. 202 203 azoteq,tx-enable: 204 $ref: /schemas/types.yaml#/definitions/uint32-array 205 minItems: 1 206 maxItems: 12 207 items: 208 minimum: 0 209 maximum: 11 210 description: 211 Specifies the order of the CTx pin(s) associated with the trackpad. 212 213 azoteq,channel-select: 214 $ref: /schemas/types.yaml#/definitions/uint32-array 215 minItems: 1 216 maxItems: 36 217 items: 218 minimum: 0 219 maximum: 255 220 description: | 221 Specifies the channels mapped to each cycle in the following order: 222 Cycle 0, slot 0 223 Cycle 0, slot 1 224 Cycle 1, slot 0 225 Cycle 1, slot 1 226 ...and so on. Specify 255 to disable a given slot. 227 228 azoteq,ati-frac-div-fine: 229 $ref: /schemas/types.yaml#/definitions/uint32 230 minimum: 0 231 maximum: 31 232 description: Specifies the trackpad's ATI fine fractional divider. 233 234 azoteq,ati-frac-mult-coarse: 235 $ref: /schemas/types.yaml#/definitions/uint32 236 minimum: 0 237 maximum: 15 238 description: Specifies the trackpad's ATI coarse fractional multiplier. 239 240 azoteq,ati-frac-div-coarse: 241 $ref: /schemas/types.yaml#/definitions/uint32 242 minimum: 0 243 maximum: 31 244 description: Specifies the trackpad's ATI coarse fractional divider. 245 246 azoteq,ati-comp-div: 247 $ref: /schemas/types.yaml#/definitions/uint32 248 minimum: 0 249 maximum: 31 250 description: Specifies the trackpad's ATI compensation divider. 251 252 azoteq,ati-target: 253 $ref: /schemas/types.yaml#/definitions/uint32 254 minimum: 0 255 maximum: 65535 256 description: Specifies the trackpad's ATI target. 257 258 azoteq,touch-enter: 259 $ref: /schemas/types.yaml#/definitions/uint32 260 minimum: 0 261 maximum: 255 262 description: Specifies the trackpad's touch entrance factor. 263 264 azoteq,touch-exit: 265 $ref: /schemas/types.yaml#/definitions/uint32 266 minimum: 0 267 maximum: 255 268 description: Specifies the trackpad's touch exit factor. 269 270 azoteq,thresh: 271 $ref: /schemas/types.yaml#/definitions/uint32 272 minimum: 0 273 maximum: 255 274 description: Specifies the trackpad's stationary touch threshold. 275 276 azoteq,conv-period: 277 $ref: /schemas/types.yaml#/definitions/uint32 278 minimum: 0 279 maximum: 255 280 description: Specifies the trackpad's conversion period. 281 282 azoteq,conv-frac: 283 $ref: /schemas/types.yaml#/definitions/uint32 284 minimum: 0 285 maximum: 255 286 description: Specifies the trackpad's conversion frequency fraction. 287 288 patternProperties: 289 "^event-(tap(-double|-triple)?|hold|palm|swipe-(x|y)-(pos|neg)(-hold)?)$": 290 type: object 291 $ref: ../input.yaml# 292 description: 293 Represents a gesture event reported by the trackpad. In the case of 294 axial gestures, the duration or distance specified in one direction 295 applies to both directions along the same axis. 296 297 properties: 298 linux,code: true 299 300 azoteq,gesture-max-ms: 301 minimum: 0 302 maximum: 65535 303 description: Specifies the maximum duration of tap/swipe gestures. 304 305 azoteq,gesture-mid-ms: 306 minimum: 0 307 maximum: 65535 308 description: 309 Specifies the maximum duration between subsequent tap gestures 310 (IQS7211E only). 311 312 azoteq,gesture-min-ms: 313 minimum: 0 314 maximum: 65535 315 description: Specifies the minimum duration of hold gestures. 316 317 azoteq,gesture-dist: 318 $ref: /schemas/types.yaml#/definitions/uint32 319 minimum: 0 320 maximum: 65535 321 description: 322 Specifies the minimum (swipe) or maximum (tap and hold) distance 323 a finger may travel to be considered a gesture. 324 325 azoteq,gesture-dist-rep: 326 $ref: /schemas/types.yaml#/definitions/uint32 327 minimum: 0 328 maximum: 65535 329 description: 330 Specifies the minimum distance a finger must travel to elicit a 331 repeated swipe gesture (IQS7211E only). 332 333 azoteq,gesture-angle: 334 $ref: /schemas/types.yaml#/definitions/uint32 335 minimum: 0 336 maximum: 75 337 description: 338 Specifies the maximum angle (in degrees) a finger may travel to 339 be considered a swipe gesture. 340 341 azoteq,thresh: 342 $ref: /schemas/types.yaml#/definitions/uint32 343 minimum: 0 344 maximum: 42 345 description: Specifies the palm gesture threshold (IQS7211E only). 346 347 additionalProperties: false 348 349 dependencies: 350 azoteq,rx-enable: ["azoteq,tx-enable"] 351 azoteq,tx-enable: ["azoteq,rx-enable"] 352 azoteq,channel-select: ["azoteq,rx-enable"] 353 354 additionalProperties: false 355 356 alp: 357 type: object 358 $ref: ../input.yaml# 359 description: Represents the alternate low-power channel (ALP). 360 361 properties: 362 azoteq,rx-enable: 363 $ref: /schemas/types.yaml#/definitions/uint32-array 364 minItems: 1 365 maxItems: 8 366 items: 367 minimum: 0 368 maximum: 7 369 description: 370 Specifies the CRx pin(s) associated with the ALP in no particular 371 order. 372 373 azoteq,tx-enable: 374 $ref: /schemas/types.yaml#/definitions/uint32-array 375 minItems: 1 376 maxItems: 12 377 items: 378 minimum: 0 379 maximum: 11 380 description: 381 Specifies the CTx pin(s) associated with the ALP in no particular 382 order. 383 384 azoteq,ati-frac-div-fine: 385 $ref: /schemas/types.yaml#/definitions/uint32 386 minimum: 0 387 maximum: 31 388 description: Specifies the ALP's ATI fine fractional divider. 389 390 azoteq,ati-frac-mult-coarse: 391 $ref: /schemas/types.yaml#/definitions/uint32 392 minimum: 0 393 maximum: 15 394 description: Specifies the ALP's ATI coarse fractional multiplier. 395 396 azoteq,ati-frac-div-coarse: 397 $ref: /schemas/types.yaml#/definitions/uint32 398 minimum: 0 399 maximum: 31 400 description: Specifies the ALP's ATI coarse fractional divider. 401 402 azoteq,ati-comp-div: 403 $ref: /schemas/types.yaml#/definitions/uint32 404 minimum: 0 405 maximum: 31 406 description: Specifies the ALP's ATI compensation divider. 407 408 azoteq,ati-target: 409 $ref: /schemas/types.yaml#/definitions/uint32 410 minimum: 0 411 maximum: 65535 412 description: Specifies the ALP's ATI target. 413 414 azoteq,ati-base: 415 $ref: /schemas/types.yaml#/definitions/uint32 416 multipleOf: 8 417 minimum: 0 418 maximum: 255 419 description: Specifies the ALP's ATI base. 420 421 azoteq,ati-mode: 422 $ref: /schemas/types.yaml#/definitions/uint32 423 enum: [0, 1] 424 description: | 425 Specifies the ALP's ATI mode as follows: 426 0: Partial 427 1: Full 428 429 azoteq,sense-mode: 430 $ref: /schemas/types.yaml#/definitions/uint32 431 enum: [0, 1] 432 description: | 433 Specifies the ALP's sensing mode as follows: 434 0: Self capacitive 435 1: Mutual capacitive 436 437 azoteq,debounce-enter: 438 $ref: /schemas/types.yaml#/definitions/uint32 439 minimum: 0 440 maximum: 255 441 description: Specifies the ALP's debounce entrance factor. 442 443 azoteq,debounce-exit: 444 $ref: /schemas/types.yaml#/definitions/uint32 445 minimum: 0 446 maximum: 255 447 description: Specifies the ALP's debounce exit factor. 448 449 azoteq,thresh: 450 $ref: /schemas/types.yaml#/definitions/uint32 451 minimum: 0 452 maximum: 65535 453 description: Specifies the ALP's proximity or touch threshold. 454 455 azoteq,conv-period: 456 $ref: /schemas/types.yaml#/definitions/uint32 457 minimum: 0 458 maximum: 255 459 description: Specifies the ALP's conversion period. 460 461 azoteq,conv-frac: 462 $ref: /schemas/types.yaml#/definitions/uint32 463 minimum: 0 464 maximum: 255 465 description: Specifies the ALP's conversion frequency fraction. 466 467 linux,code: true 468 469 additionalProperties: false 470 471 button: 472 type: object 473 description: Represents the inductive or capacitive button. 474 475 properties: 476 azoteq,ati-frac-div-fine: 477 $ref: /schemas/types.yaml#/definitions/uint32 478 minimum: 0 479 maximum: 31 480 description: Specifies the button's ATI fine fractional divider. 481 482 azoteq,ati-frac-mult-coarse: 483 $ref: /schemas/types.yaml#/definitions/uint32 484 minimum: 0 485 maximum: 15 486 description: Specifies the button's ATI coarse fractional multiplier. 487 488 azoteq,ati-frac-div-coarse: 489 $ref: /schemas/types.yaml#/definitions/uint32 490 minimum: 0 491 maximum: 31 492 description: Specifies the button's ATI coarse fractional divider. 493 494 azoteq,ati-comp-div: 495 $ref: /schemas/types.yaml#/definitions/uint32 496 minimum: 0 497 maximum: 31 498 description: Specifies the button's ATI compensation divider. 499 500 azoteq,ati-target: 501 $ref: /schemas/types.yaml#/definitions/uint32 502 minimum: 0 503 maximum: 65535 504 description: Specifies the button's ATI target. 505 506 azoteq,ati-base: 507 $ref: /schemas/types.yaml#/definitions/uint32 508 multipleOf: 8 509 minimum: 0 510 maximum: 255 511 description: Specifies the button's ATI base. 512 513 azoteq,ati-mode: 514 $ref: /schemas/types.yaml#/definitions/uint32 515 enum: [0, 1] 516 description: | 517 Specifies the button's ATI mode as follows: 518 0: Partial 519 1: Full 520 521 azoteq,sense-mode: 522 $ref: /schemas/types.yaml#/definitions/uint32 523 enum: [0, 1, 2] 524 description: | 525 Specifies the button's sensing mode as follows: 526 0: Self capacitive 527 1: Mutual capacitive 528 2: Inductive 529 530 azoteq,touch-enter: 531 $ref: /schemas/types.yaml#/definitions/uint32 532 minimum: 0 533 maximum: 255 534 description: Specifies the button's touch entrance factor. 535 536 azoteq,touch-exit: 537 $ref: /schemas/types.yaml#/definitions/uint32 538 minimum: 0 539 maximum: 255 540 description: Specifies the button's touch exit factor. 541 542 azoteq,debounce-enter: 543 $ref: /schemas/types.yaml#/definitions/uint32 544 minimum: 0 545 maximum: 255 546 description: Specifies the button's debounce entrance factor. 547 548 azoteq,debounce-exit: 549 $ref: /schemas/types.yaml#/definitions/uint32 550 minimum: 0 551 maximum: 255 552 description: Specifies the button's debounce exit factor. 553 554 azoteq,thresh: 555 $ref: /schemas/types.yaml#/definitions/uint32 556 minimum: 0 557 maximum: 65535 558 description: Specifies the button's proximity threshold. 559 560 azoteq,conv-period: 561 $ref: /schemas/types.yaml#/definitions/uint32 562 minimum: 0 563 maximum: 255 564 description: Specifies the button's conversion period. 565 566 azoteq,conv-frac: 567 $ref: /schemas/types.yaml#/definitions/uint32 568 minimum: 0 569 maximum: 255 570 description: Specifies the button's conversion frequency fraction. 571 572 patternProperties: 573 "^event-(prox|touch)$": 574 type: object 575 $ref: ../input.yaml# 576 description: 577 Represents a proximity or touch event reported by the button. 578 579 properties: 580 linux,code: true 581 582 additionalProperties: false 583 584 additionalProperties: false 585 586 wakeup-source: true 587 588 touchscreen-size-x: true 589 touchscreen-size-y: true 590 touchscreen-inverted-x: true 591 touchscreen-inverted-y: true 592 touchscreen-swapped-x-y: true 593 594dependencies: 595 touchscreen-size-x: ["azoteq,num-contacts"] 596 touchscreen-size-y: ["azoteq,num-contacts"] 597 touchscreen-inverted-x: ["azoteq,num-contacts"] 598 touchscreen-inverted-y: ["azoteq,num-contacts"] 599 touchscreen-swapped-x-y: ["azoteq,num-contacts"] 600 601required: 602 - compatible 603 - reg 604 - irq-gpios 605 606additionalProperties: false 607 608allOf: 609 - $ref: touchscreen.yaml# 610 611 - if: 612 properties: 613 compatible: 614 contains: 615 const: azoteq,iqs7210a 616 617 then: 618 properties: 619 alp: 620 properties: 621 azoteq,rx-enable: 622 maxItems: 4 623 items: 624 minimum: 4 625 626 else: 627 properties: 628 azoteq,timeout-press-ms: false 629 630 alp: 631 properties: 632 azoteq,ati-mode: false 633 634 button: false 635 636 - if: 637 properties: 638 compatible: 639 contains: 640 const: azoteq,iqs7211e 641 642 then: 643 properties: 644 reset-gpios: false 645 646 trackpad: 647 properties: 648 azoteq,tx-enable: 649 maxItems: 13 650 items: 651 maximum: 12 652 653 alp: 654 properties: 655 azoteq,tx-enable: 656 maxItems: 13 657 items: 658 maximum: 12 659 660examples: 661 - | 662 #include <dt-bindings/gpio/gpio.h> 663 #include <dt-bindings/input/input.h> 664 665 i2c { 666 #address-cells = <1>; 667 #size-cells = <0>; 668 669 touch@56 { 670 compatible = "azoteq,iqs7210a"; 671 reg = <0x56>; 672 irq-gpios = <&gpio 4 GPIO_ACTIVE_LOW>; 673 reset-gpios = <&gpio 17 (GPIO_ACTIVE_LOW | 674 GPIO_PUSH_PULL)>; 675 azoteq,num-contacts = <2>; 676 677 trackpad { 678 azoteq,rx-enable = <6>, <5>, <4>, <3>, <2>; 679 azoteq,tx-enable = <1>, <7>, <8>, <9>, <10>; 680 }; 681 682 button { 683 azoteq,sense-mode = <2>; 684 azoteq,touch-enter = <40>; 685 azoteq,touch-exit = <36>; 686 687 event-touch { 688 linux,code = <KEY_HOME>; 689 }; 690 }; 691 692 alp { 693 azoteq,sense-mode = <1>; 694 linux,code = <KEY_POWER>; 695 }; 696 }; 697 }; 698 699 - | 700 #include <dt-bindings/gpio/gpio.h> 701 #include <dt-bindings/input/input.h> 702 703 i2c { 704 #address-cells = <1>; 705 #size-cells = <0>; 706 707 touch@56 { 708 compatible = "azoteq,iqs7211e"; 709 reg = <0x56>; 710 irq-gpios = <&gpio 4 (GPIO_ACTIVE_LOW | 711 GPIO_OPEN_DRAIN)>; 712 713 trackpad { 714 event-tap { 715 linux,code = <KEY_PLAYPAUSE>; 716 }; 717 718 event-tap-double { 719 linux,code = <KEY_SHUFFLE>; 720 }; 721 722 event-tap-triple { 723 linux,code = <KEY_AGAIN>; 724 }; 725 726 event-hold { 727 linux,code = <KEY_STOP>; 728 }; 729 730 event-palm { 731 linux,code = <KEY_EXIT>; 732 }; 733 734 event-swipe-x-pos { 735 linux,code = <KEY_REWIND>; 736 }; 737 738 event-swipe-x-pos-hold { 739 linux,code = <KEY_PREVIOUS>; 740 }; 741 742 event-swipe-x-neg { 743 linux,code = <KEY_FASTFORWARD>; 744 }; 745 746 event-swipe-x-neg-hold { 747 linux,code = <KEY_NEXT>; 748 }; 749 750 event-swipe-y-pos { 751 linux,code = <KEY_VOLUMEUP>; 752 }; 753 754 event-swipe-y-pos-hold { 755 linux,code = <KEY_MUTE>; 756 }; 757 758 event-swipe-y-neg { 759 linux,code = <KEY_VOLUMEDOWN>; 760 }; 761 762 event-swipe-y-neg-hold { 763 linux,code = <KEY_MUTE>; 764 }; 765 }; 766 }; 767 }; 768 769... 770