linux/Documentation/devicetree/bindings/input/iqs269a.yaml
<<
>>
Prefs
   1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
   2%YAML 1.2
   3---
   4$id: http://devicetree.org/schemas/input/iqs269a.yaml#
   5$schema: http://devicetree.org/meta-schemas/core.yaml#
   6
   7title: Azoteq IQS269A Capacitive Touch Controller
   8
   9maintainers:
  10  - Jeff LaBundy <jeff@labundy.com>
  11
  12description: |
  13  The Azoteq IQS269A is an 8-channel capacitive touch controller that features
  14  additional Hall-effect and inductive sensing capabilities.
  15
  16  Link to datasheet: https://www.azoteq.com/
  17
  18properties:
  19  compatible:
  20    const: azoteq,iqs269a
  21
  22  reg:
  23    maxItems: 1
  24
  25  interrupts:
  26    maxItems: 1
  27
  28  "#address-cells":
  29    const: 1
  30
  31  "#size-cells":
  32    const: 0
  33
  34  azoteq,hall-enable:
  35    type: boolean
  36    description:
  37      Enables Hall-effect sensing on channels 6 and 7. In this case, keycodes
  38      assigned to channel 6 are ignored and keycodes assigned to channel 7 are
  39      interpreted as switch codes. Refer to the datasheet for requirements im-
  40      posed on channels 6 and 7 by Hall-effect sensing.
  41
  42  azoteq,suspend-mode:
  43    $ref: /schemas/types.yaml#/definitions/uint32
  44    enum: [0, 1, 2, 3]
  45    default: 0
  46    description: |
  47      Specifies the power mode during suspend as follows:
  48      0: Automatic (same as normal runtime, i.e. suspend/resume disabled)
  49      1: Low power (all sensing at a reduced reporting rate)
  50      2: Ultra-low power (channel 0 proximity sensing)
  51      3: Halt (no sensing)
  52
  53  azoteq,clk-div:
  54    type: boolean
  55    description: Divides the device's core clock by a factor of 4.
  56
  57  azoteq,ulp-update:
  58    $ref: /schemas/types.yaml#/definitions/uint32
  59    minimum: 0
  60    maximum: 7
  61    default: 3
  62    description: Specifies the ultra-low-power mode update rate.
  63
  64  azoteq,reseed-offset:
  65    type: boolean
  66    description:
  67      Applies an 8-count offset to all long-term averages upon either ATI or
  68      reseed events.
  69
  70  azoteq,filt-str-lp-lta:
  71    $ref: /schemas/types.yaml#/definitions/uint32
  72    enum: [0, 1, 2, 3]
  73    default: 0
  74    description:
  75      Specifies the long-term average filter strength during low-power mode.
  76
  77  azoteq,filt-str-lp-cnt:
  78    $ref: /schemas/types.yaml#/definitions/uint32
  79    enum: [0, 1, 2, 3]
  80    default: 0
  81    description:
  82      Specifies the raw count filter strength during low-power mode.
  83
  84  azoteq,filt-str-np-lta:
  85    $ref: /schemas/types.yaml#/definitions/uint32
  86    enum: [0, 1, 2, 3]
  87    default: 0
  88    description:
  89      Specifies the long-term average filter strength during normal-power mode.
  90
  91  azoteq,filt-str-np-cnt:
  92    $ref: /schemas/types.yaml#/definitions/uint32
  93    enum: [0, 1, 2, 3]
  94    default: 0
  95    description:
  96      Specifies the raw count filter strength during normal-power mode.
  97
  98  azoteq,rate-np-ms:
  99    minimum: 0
 100    maximum: 255
 101    default: 16
 102    description: Specifies the report rate (in ms) during normal-power mode.
 103
 104  azoteq,rate-lp-ms:
 105    minimum: 0
 106    maximum: 255
 107    default: 160
 108    description: Specifies the report rate (in ms) during low-power mode.
 109
 110  azoteq,rate-ulp-ms:
 111    multipleOf: 16
 112    minimum: 0
 113    maximum: 4080
 114    default: 160
 115    description: Specifies the report rate (in ms) during ultra-low-power mode.
 116
 117  azoteq,timeout-pwr-ms:
 118    multipleOf: 512
 119    minimum: 0
 120    maximum: 130560
 121    default: 2560
 122    description:
 123      Specifies the length of time (in ms) to wait for an event during normal-
 124      power mode before transitioning to low-power mode.
 125
 126  azoteq,timeout-lta-ms:
 127    multipleOf: 512
 128    minimum: 0
 129    maximum: 130560
 130    default: 32768
 131    description:
 132      Specifies the length of time (in ms) to wait before resetting the long-
 133      term average of all channels. Specify the maximum timeout to disable it
 134      altogether.
 135
 136  azoteq,ati-band-disable:
 137    type: boolean
 138    description: Disables the ATI band check.
 139
 140  azoteq,ati-lp-only:
 141    type: boolean
 142    description: Limits automatic ATI to low-power mode.
 143
 144  azoteq,ati-band-tighten:
 145    type: boolean
 146    description: Tightens the ATI band from 1/8 to 1/16 of the desired target.
 147
 148  azoteq,filt-disable:
 149    type: boolean
 150    description: Disables all raw count filtering.
 151
 152  azoteq,gpio3-select:
 153    $ref: /schemas/types.yaml#/definitions/uint32
 154    minimum: 0
 155    maximum: 7
 156    default: 0
 157    description:
 158      Selects the channel for which the GPIO3 pin represents touch state.
 159
 160  azoteq,dual-direction:
 161    type: boolean
 162    description:
 163      Specifies that long-term averages are to freeze in the presence of either
 164      increasing or decreasing counts, thereby permitting events to be reported
 165      in either direction.
 166
 167  azoteq,tx-freq:
 168    $ref: /schemas/types.yaml#/definitions/uint32
 169    enum: [0, 1, 2, 3]
 170    default: 0
 171    description: |
 172      Specifies the inductive sensing excitation frequency as follows (paren-
 173      thesized numbers represent the frequency if 'azoteq,clk-div' is present):
 174      0: 16 MHz (4 MHz)
 175      1: 8 MHz (2 MHz)
 176      2: 4 MHz (1 MHz)
 177      3: 2 MHz (500 kHz)
 178
 179  azoteq,global-cap-increase:
 180    type: boolean
 181    description: Increases the global capacitance adder from 0.5 pF to 1.5 pF.
 182
 183  azoteq,reseed-select:
 184    $ref: /schemas/types.yaml#/definitions/uint32
 185    enum: [0, 1, 2, 3]
 186    default: 0
 187    description: |
 188      Specifies the event(s) that prompt the device to reseed (i.e. reset the
 189      long-term average) of an associated channel as follows:
 190      0: None
 191      1: Proximity
 192      2: Proximity or touch
 193      3: Proximity, touch or deep touch
 194
 195  azoteq,tracking-enable:
 196    type: boolean
 197    description:
 198      Enables all associated channels to track their respective reference
 199      channels.
 200
 201  azoteq,filt-str-slider:
 202    $ref: /schemas/types.yaml#/definitions/uint32
 203    enum: [0, 1, 2, 3]
 204    default: 1
 205    description: Specifies the slider coordinate filter strength.
 206
 207patternProperties:
 208  "^channel@[0-7]$":
 209    type: object
 210    description:
 211      Represents a single sensing channel. A channel is active if defined and
 212      inactive otherwise.
 213
 214    properties:
 215      reg:
 216        minimum: 0
 217        maximum: 7
 218        description: Index of the channel.
 219
 220      azoteq,reseed-disable:
 221        type: boolean
 222        description:
 223          Prevents the channel from being reseeded if the long-term average
 224          timeout (defined in 'azoteq,timeout-lta') expires.
 225
 226      azoteq,blocking-enable:
 227        type: boolean
 228        description: Specifies that the channel is a blocking channel.
 229
 230      azoteq,slider0-select:
 231        type: boolean
 232        description: Specifies that the channel participates in slider 0.
 233
 234      azoteq,slider1-select:
 235        type: boolean
 236        description: Specifies that the channel participates in slider 1.
 237
 238      azoteq,rx-enable:
 239        $ref: /schemas/types.yaml#/definitions/uint32-array
 240        minItems: 1
 241        maxItems: 8
 242        items:
 243          minimum: 0
 244          maximum: 7
 245        description:
 246          Specifies the CRX pin(s) associated with the channel. By default, only
 247          the CRX pin corresponding to the channel's index is enabled (e.g. CRX0
 248          for channel 0).
 249
 250      azoteq,tx-enable:
 251        $ref: /schemas/types.yaml#/definitions/uint32-array
 252        minItems: 1
 253        maxItems: 8
 254        items:
 255          minimum: 0
 256          maximum: 7
 257        default: [0, 1, 2, 3, 4, 5, 6, 7]
 258        description: Specifies the TX pin(s) associated with the channel.
 259
 260      azoteq,meas-cap-decrease:
 261        type: boolean
 262        description:
 263          Decreases the internal measurement capacitance from 60 pF to 15 pF.
 264
 265      azoteq,rx-float-inactive:
 266        type: boolean
 267        description: Floats any inactive CRX pins instead of grounding them.
 268
 269      azoteq,local-cap-size:
 270        $ref: /schemas/types.yaml#/definitions/uint32
 271        enum: [0, 1, 2]
 272        default: 0
 273        description: |
 274          Specifies the capacitance to be added to the channel as follows:
 275          0: None
 276          1: Global adder (based on 'azoteq,global-cap-increase')
 277          2: Global adder + 0.5 pF
 278
 279      azoteq,invert-enable:
 280        type: boolean
 281        description:
 282          Inverts the polarity of the states reported for proximity, touch and
 283          deep-touch events relative to their respective thresholds.
 284
 285      azoteq,proj-bias:
 286        $ref: /schemas/types.yaml#/definitions/uint32
 287        enum: [0, 1, 2, 3]
 288        default: 2
 289        description: |
 290          Specifies the bias current applied during projected-capacitance
 291          sensing as follows:
 292          0: 2.5 uA
 293          1: 5 uA
 294          2: 10 uA
 295          3: 20 uA
 296
 297      azoteq,sense-mode:
 298        $ref: /schemas/types.yaml#/definitions/uint32
 299        enum: [0, 1, 9, 14, 15]
 300        default: 0
 301        description: |
 302          Specifies the channel's sensing mode as follows:
 303          0:  Self capacitance
 304          1:  Projected capacitance
 305          9:  Self or mutual inductance
 306          14: Hall effect
 307          15: Temperature
 308
 309      azoteq,sense-freq:
 310        $ref: /schemas/types.yaml#/definitions/uint32
 311        enum: [0, 1, 2, 3]
 312        default: 1
 313        description: |
 314          Specifies the channel's sensing frequency as follows (parenthesized
 315          numbers represent the frequency if 'azoteq,clk-div' is present):
 316          0: 4 MHz (1 MHz)
 317          1: 2 MHz (500 kHz)
 318          2: 1 MHz (250 kHz)
 319          3: 500 kHz (125 kHz)
 320
 321      azoteq,static-enable:
 322        type: boolean
 323        description: Enables the static front-end for the channel.
 324
 325      azoteq,ati-mode:
 326        $ref: /schemas/types.yaml#/definitions/uint32
 327        enum: [0, 1, 2, 3]
 328        default: 3
 329        description: |
 330          Specifies the channel's ATI mode as follows:
 331          0: Disabled
 332          1: Semi-partial
 333          2: Partial
 334          3: Full
 335
 336      azoteq,ati-base:
 337        $ref: /schemas/types.yaml#/definitions/uint32
 338        enum: [75, 100, 150, 200]
 339        default: 100
 340        description: Specifies the channel's ATI base.
 341
 342      azoteq,ati-target:
 343        $ref: /schemas/types.yaml#/definitions/uint32
 344        multipleOf: 32
 345        minimum: 0
 346        maximum: 2016
 347        default: 512
 348        description: Specifies the channel's ATI target.
 349
 350      azoteq,assoc-select:
 351        $ref: /schemas/types.yaml#/definitions/uint32-array
 352        minItems: 1
 353        maxItems: 8
 354        items:
 355          minimum: 0
 356          maximum: 7
 357        description:
 358          Specifies the associated channels for which the channel serves as a
 359          reference channel. By default, no channels are selected.
 360
 361      azoteq,assoc-weight:
 362        $ref: /schemas/types.yaml#/definitions/uint32
 363        minimum: 0
 364        maximum: 255
 365        default: 0
 366        description:
 367          Specifies the channel's impact weight if it acts as an associated
 368          channel (0 = 0% impact, 255 = 200% impact).
 369
 370    patternProperties:
 371      "^event-prox(-alt)?$":
 372        type: object
 373        description:
 374          Represents a proximity event reported by the channel in response to
 375          a decrease in counts. Node names suffixed with '-alt' instead corre-
 376          spond to an increase in counts.
 377
 378          By default, the long-term average tracks an increase in counts such
 379          that only events corresponding to a decrease in counts are reported
 380          (refer to the datasheet for more information).
 381
 382          Specify 'azoteq,dual-direction' to freeze the long-term average when
 383          the counts increase or decrease such that events of either direction
 384          can be reported. Alternatively, specify 'azoteq,invert-enable' to in-
 385          vert the polarity of the states reported by the channel.
 386
 387          Complementary events (e.g. event-touch and event-touch-alt) can both
 388          be present and specify different key or switch codes, but not differ-
 389          ent thresholds or hysteresis (if applicable).
 390
 391        properties:
 392          azoteq,thresh:
 393            $ref: /schemas/types.yaml#/definitions/uint32
 394            minimum: 0
 395            maximum: 255
 396            default: 10
 397            description: Specifies the threshold for the event.
 398
 399          linux,code:
 400            $ref: /schemas/types.yaml#/definitions/uint32
 401            description: Numeric key or switch code associated with the event.
 402
 403        additionalProperties: false
 404
 405      "^event-touch(-alt)?$":
 406        type: object
 407        description: Represents a touch event reported by the channel.
 408
 409        properties:
 410          azoteq,thresh:
 411            $ref: /schemas/types.yaml#/definitions/uint32
 412            minimum: 0
 413            maximum: 255
 414            default: 8
 415            description: Specifies the threshold for the event.
 416
 417          azoteq,hyst:
 418            $ref: /schemas/types.yaml#/definitions/uint32
 419            minimum: 0
 420            maximum: 15
 421            default: 4
 422            description: Specifies the hysteresis for the event.
 423
 424          linux,code:
 425            $ref: /schemas/types.yaml#/definitions/uint32
 426            description: Numeric key or switch code associated with the event.
 427
 428        additionalProperties: false
 429
 430      "^event-deep(-alt)?$":
 431        type: object
 432        description: Represents a deep-touch event reported by the channel.
 433
 434        properties:
 435          azoteq,thresh:
 436            $ref: /schemas/types.yaml#/definitions/uint32
 437            minimum: 0
 438            maximum: 255
 439            default: 26
 440            description: Specifies the threshold for the event.
 441
 442          azoteq,hyst:
 443            $ref: /schemas/types.yaml#/definitions/uint32
 444            minimum: 0
 445            maximum: 15
 446            default: 0
 447            description: Specifies the hysteresis for the event.
 448
 449          linux,code:
 450            $ref: /schemas/types.yaml#/definitions/uint32
 451            description: Numeric key or switch code associated with the event.
 452
 453        additionalProperties: false
 454
 455    required:
 456      - reg
 457
 458    additionalProperties: false
 459
 460required:
 461  - compatible
 462  - reg
 463  - interrupts
 464  - "#address-cells"
 465  - "#size-cells"
 466
 467additionalProperties: false
 468
 469examples:
 470  - |
 471    #include <dt-bindings/input/input.h>
 472    #include <dt-bindings/interrupt-controller/irq.h>
 473
 474    i2c {
 475            #address-cells = <1>;
 476            #size-cells = <0>;
 477
 478            iqs269a@44 {
 479                    #address-cells = <1>;
 480                    #size-cells = <0>;
 481
 482                    compatible = "azoteq,iqs269a";
 483                    reg = <0x44>;
 484                    interrupt-parent = <&gpio>;
 485                    interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
 486
 487                    azoteq,hall-enable;
 488                    azoteq,suspend-mode = <2>;
 489
 490                    channel@0 {
 491                            reg = <0x0>;
 492
 493                            event-prox {
 494                                    linux,code = <KEY_POWER>;
 495                            };
 496                    };
 497
 498                    channel@1 {
 499                            reg = <0x1>;
 500                            azoteq,slider0-select;
 501                    };
 502
 503                    channel@2 {
 504                            reg = <0x2>;
 505                            azoteq,slider0-select;
 506                    };
 507
 508                    channel@3 {
 509                            reg = <0x3>;
 510                            azoteq,slider0-select;
 511                    };
 512
 513                    channel@4 {
 514                            reg = <0x4>;
 515                            azoteq,slider0-select;
 516                    };
 517
 518                    channel@5 {
 519                            reg = <0x5>;
 520                            azoteq,slider0-select;
 521                    };
 522
 523                    channel@6 {
 524                            reg = <0x6>;
 525                            azoteq,invert-enable;
 526                            azoteq,static-enable;
 527                            azoteq,reseed-disable;
 528                            azoteq,rx-enable = <0>;
 529                            azoteq,sense-freq = <0x0>;
 530                            azoteq,sense-mode = <0xE>;
 531                            azoteq,ati-mode = <0x0>;
 532                            azoteq,ati-base = <200>;
 533                            azoteq,ati-target = <320>;
 534                    };
 535
 536                    channel@7 {
 537                            reg = <0x7>;
 538                            azoteq,invert-enable;
 539                            azoteq,static-enable;
 540                            azoteq,reseed-disable;
 541                            azoteq,rx-enable = <0>, <6>;
 542                            azoteq,sense-freq = <0x0>;
 543                            azoteq,sense-mode = <0xE>;
 544                            azoteq,ati-mode = <0x3>;
 545                            azoteq,ati-base = <200>;
 546                            azoteq,ati-target = <320>;
 547
 548                            event-touch {
 549                                    linux,code = <SW_LID>;
 550                            };
 551                    };
 552            };
 553    };
 554
 555...
 556