File Index
Files and directories
Sign in
FILE

azoteq,iqs7222.yaml

File preview with syntax highlighting.

linux-6.19.14/Documentation/devicetree/bindings/input/azoteq,iqs7222.yaml 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
   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: /schemas/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...
~/ Read-only file preview.