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