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 IQS7210A/7211A/E

Add bindings for the Azoteq IQS7210A/7211A/E family of trackpad/
touchscreen controllers.

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

authored by

Jeff LaBundy and committed by
Dmitry Torokhov
d6239463 0859c176

+769
+769
Documentation/devicetree/bindings/input/touchscreen/azoteq,iqs7211.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/touchscreen/azoteq,iqs7211.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Azoteq IQS7210A/7211A/E Trackpad/Touchscreen Controller 8 + 9 + maintainers: 10 + - Jeff LaBundy <jeff@labundy.com> 11 + 12 + description: | 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 + 18 + properties: 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 + 594 + dependencies: 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 + 601 + required: 602 + - compatible 603 + - reg 604 + - irq-gpios 605 + 606 + additionalProperties: false 607 + 608 + allOf: 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 + 660 + examples: 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 + ...