| # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) |
| %YAML 1.2 |
| --- |
| $id: http://devicetree.org/schemas/input/touchscreen/azoteq,iqs7211.yaml# |
| $schema: http://devicetree.org/meta-schemas/core.yaml# |
| |
| title: Azoteq IQS7210A/7211A/E Trackpad/Touchscreen Controller |
| |
| maintainers: |
| - Jeff LaBundy <jeff@labundy.com> |
| |
| description: | |
| The Azoteq IQS7210A, IQS7211A and IQS7211E trackpad and touchscreen control- |
| lers employ projected-capacitance sensing and can track two contacts. |
| |
| Link to datasheets: https://www.azoteq.com/ |
| |
| properties: |
| compatible: |
| enum: |
| - azoteq,iqs7210a |
| - azoteq,iqs7211a |
| - azoteq,iqs7211e |
| |
| reg: |
| maxItems: 1 |
| |
| irq-gpios: |
| maxItems: 1 |
| description: |
| Specifies the GPIO connected to the device's active-low RDY output. The |
| pin doubles as the IQS7211E's active-low MCLR input, in which case this |
| GPIO must be configured as open-drain. |
| |
| reset-gpios: |
| maxItems: 1 |
| description: |
| Specifies the GPIO connected to the device's active-low MCLR input. The |
| device is temporarily held in hardware reset prior to initialization if |
| this property is present. |
| |
| azoteq,forced-comms: |
| type: boolean |
| description: |
| Enables forced communication; to be used with host adapters that cannot |
| tolerate clock stretching. |
| |
| azoteq,forced-comms-default: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| enum: [0, 1] |
| description: |
| Indicates if the device's OTP memory enables (1) or disables (0) forced |
| communication by default. Specifying this property can expedite startup |
| time if the default value is known. |
| |
| If this property is not specified, communication is not initiated until |
| the device asserts its RDY pin shortly after exiting hardware reset. At |
| that point, forced communication is either enabled or disabled based on |
| the presence or absence of the 'azoteq,forced-comms' property. |
| |
| azoteq,rate-active-ms: |
| minimum: 0 |
| maximum: 65535 |
| description: Specifies the report rate (in ms) during active mode. |
| |
| azoteq,rate-touch-ms: |
| minimum: 0 |
| maximum: 65535 |
| description: Specifies the report rate (in ms) during idle-touch mode. |
| |
| azoteq,rate-idle-ms: |
| minimum: 0 |
| maximum: 65535 |
| description: Specifies the report rate (in ms) during idle mode. |
| |
| azoteq,rate-lp1-ms: |
| minimum: 0 |
| maximum: 65535 |
| description: Specifies the report rate (in ms) during low-power mode 1. |
| |
| azoteq,rate-lp2-ms: |
| minimum: 0 |
| maximum: 65535 |
| description: Specifies the report rate (in ms) during low-power mode 2. |
| |
| azoteq,timeout-active-ms: |
| multipleOf: 1000 |
| minimum: 0 |
| maximum: 65535000 |
| description: |
| Specifies the length of time (in ms) to wait for an event before moving |
| from active mode to idle or idle-touch modes. |
| |
| azoteq,timeout-touch-ms: |
| multipleOf: 1000 |
| minimum: 0 |
| maximum: 65535000 |
| description: |
| Specifies the length of time (in ms) to wait for an event before moving |
| from idle-touch mode to idle mode. |
| |
| azoteq,timeout-idle-ms: |
| multipleOf: 1000 |
| minimum: 0 |
| maximum: 65535000 |
| description: |
| Specifies the length of time (in ms) to wait for an event before moving |
| from idle mode to low-power mode 1. |
| |
| azoteq,timeout-lp1-ms: |
| multipleOf: 1000 |
| minimum: 0 |
| maximum: 65535000 |
| description: |
| Specifies the length of time (in ms) to wait for an event before moving |
| from low-power mode 1 to low-power mode 2. |
| |
| azoteq,timeout-lp2-ms: |
| multipleOf: 1000 |
| minimum: 0 |
| maximum: 60000 |
| description: |
| Specifies the rate (in ms) at which the trackpad reference values |
| are updated during low-power modes 1 and 2. |
| |
| azoteq,timeout-ati-ms: |
| multipleOf: 1000 |
| minimum: 0 |
| maximum: 60000 |
| description: |
| Specifies the delay (in ms) before the automatic tuning implementation |
| (ATI) is retried in the event it fails to complete. |
| |
| azoteq,timeout-comms-ms: |
| minimum: 0 |
| maximum: 65535 |
| description: |
| Specifies the delay (in ms) before a communication window is closed. |
| |
| azoteq,timeout-press-ms: |
| multipleOf: 1000 |
| minimum: 0 |
| maximum: 60000 |
| description: |
| Specifies the length of time (in ms) to wait before automatically |
| releasing a press event. Specify zero to allow the press state to |
| persist indefinitely. |
| |
| azoteq,fosc-freq: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| enum: [0, 1] |
| description: | |
| Specifies the device's core clock frequency as follows: |
| 0: 14 MHz |
| 1: 18 MHz |
| |
| azoteq,fosc-trim: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| minimum: 0 |
| maximum: 15 |
| description: Specifies the device's core clock frequency trim. |
| |
| azoteq,num-contacts: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| minimum: 0 |
| maximum: 2 |
| default: 0 |
| description: Specifies the number of contacts reported by the device. |
| |
| azoteq,contact-split: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| minimum: 0 |
| maximum: 255 |
| description: Specifies the contact (finger) split factor. |
| |
| azoteq,trim-x: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| minimum: 0 |
| maximum: 255 |
| description: Specifies the horizontal trim width. |
| |
| azoteq,trim-y: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| minimum: 0 |
| maximum: 255 |
| description: Specifies the vertical trim height. |
| |
| trackpad: |
| type: object |
| description: Represents all channels associated with the trackpad. |
| |
| properties: |
| azoteq,rx-enable: |
| $ref: /schemas/types.yaml#/definitions/uint32-array |
| minItems: 1 |
| maxItems: 8 |
| items: |
| minimum: 0 |
| maximum: 7 |
| description: |
| Specifies the order of the CRx pin(s) associated with the trackpad. |
| |
| azoteq,tx-enable: |
| $ref: /schemas/types.yaml#/definitions/uint32-array |
| minItems: 1 |
| maxItems: 12 |
| items: |
| minimum: 0 |
| maximum: 11 |
| description: |
| Specifies the order of the CTx pin(s) associated with the trackpad. |
| |
| azoteq,channel-select: |
| $ref: /schemas/types.yaml#/definitions/uint32-array |
| minItems: 1 |
| maxItems: 36 |
| items: |
| minimum: 0 |
| maximum: 255 |
| description: | |
| Specifies the channels mapped to each cycle in the following order: |
| Cycle 0, slot 0 |
| Cycle 0, slot 1 |
| Cycle 1, slot 0 |
| Cycle 1, slot 1 |
| ...and so on. Specify 255 to disable a given slot. |
| |
| azoteq,ati-frac-div-fine: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| minimum: 0 |
| maximum: 31 |
| description: Specifies the trackpad's ATI fine fractional divider. |
| |
| azoteq,ati-frac-mult-coarse: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| minimum: 0 |
| maximum: 15 |
| description: Specifies the trackpad's ATI coarse fractional multiplier. |
| |
| azoteq,ati-frac-div-coarse: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| minimum: 0 |
| maximum: 31 |
| description: Specifies the trackpad's ATI coarse fractional divider. |
| |
| azoteq,ati-comp-div: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| minimum: 0 |
| maximum: 31 |
| description: Specifies the trackpad's ATI compensation divider. |
| |
| azoteq,ati-target: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| minimum: 0 |
| maximum: 65535 |
| description: Specifies the trackpad's ATI target. |
| |
| azoteq,touch-enter: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| minimum: 0 |
| maximum: 255 |
| description: Specifies the trackpad's touch entrance factor. |
| |
| azoteq,touch-exit: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| minimum: 0 |
| maximum: 255 |
| description: Specifies the trackpad's touch exit factor. |
| |
| azoteq,thresh: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| minimum: 0 |
| maximum: 255 |
| description: Specifies the trackpad's stationary touch threshold. |
| |
| azoteq,conv-period: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| minimum: 0 |
| maximum: 255 |
| description: Specifies the trackpad's conversion period. |
| |
| azoteq,conv-frac: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| minimum: 0 |
| maximum: 255 |
| description: Specifies the trackpad's conversion frequency fraction. |
| |
| patternProperties: |
| "^event-(tap(-double|-triple)?|hold|palm|swipe-(x|y)-(pos|neg)(-hold)?)$": |
| type: object |
| $ref: ../input.yaml# |
| description: |
| Represents a gesture event reported by the trackpad. In the case of |
| axial gestures, the duration or distance specified in one direction |
| applies to both directions along the same axis. |
| |
| properties: |
| linux,code: true |
| |
| azoteq,gesture-max-ms: |
| minimum: 0 |
| maximum: 65535 |
| description: Specifies the maximum duration of tap/swipe gestures. |
| |
| azoteq,gesture-mid-ms: |
| minimum: 0 |
| maximum: 65535 |
| description: |
| Specifies the maximum duration between subsequent tap gestures |
| (IQS7211E only). |
| |
| azoteq,gesture-min-ms: |
| minimum: 0 |
| maximum: 65535 |
| description: Specifies the minimum duration of hold gestures. |
| |
| azoteq,gesture-dist: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| minimum: 0 |
| maximum: 65535 |
| description: |
| Specifies the minimum (swipe) or maximum (tap and hold) distance |
| a finger may travel to be considered a gesture. |
| |
| azoteq,gesture-dist-rep: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| minimum: 0 |
| maximum: 65535 |
| description: |
| Specifies the minimum distance a finger must travel to elicit a |
| repeated swipe gesture (IQS7211E only). |
| |
| azoteq,gesture-angle: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| minimum: 0 |
| maximum: 75 |
| description: |
| Specifies the maximum angle (in degrees) a finger may travel to |
| be considered a swipe gesture. |
| |
| azoteq,thresh: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| minimum: 0 |
| maximum: 42 |
| description: Specifies the palm gesture threshold (IQS7211E only). |
| |
| additionalProperties: false |
| |
| dependencies: |
| azoteq,rx-enable: ["azoteq,tx-enable"] |
| azoteq,tx-enable: ["azoteq,rx-enable"] |
| azoteq,channel-select: ["azoteq,rx-enable"] |
| |
| additionalProperties: false |
| |
| alp: |
| type: object |
| $ref: ../input.yaml# |
| description: Represents the alternate low-power channel (ALP). |
| |
| properties: |
| azoteq,rx-enable: |
| $ref: /schemas/types.yaml#/definitions/uint32-array |
| minItems: 1 |
| maxItems: 8 |
| items: |
| minimum: 0 |
| maximum: 7 |
| description: |
| Specifies the CRx pin(s) associated with the ALP in no particular |
| order. |
| |
| azoteq,tx-enable: |
| $ref: /schemas/types.yaml#/definitions/uint32-array |
| minItems: 1 |
| maxItems: 12 |
| items: |
| minimum: 0 |
| maximum: 11 |
| description: |
| Specifies the CTx pin(s) associated with the ALP in no particular |
| order. |
| |
| azoteq,ati-frac-div-fine: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| minimum: 0 |
| maximum: 31 |
| description: Specifies the ALP's ATI fine fractional divider. |
| |
| azoteq,ati-frac-mult-coarse: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| minimum: 0 |
| maximum: 15 |
| description: Specifies the ALP's ATI coarse fractional multiplier. |
| |
| azoteq,ati-frac-div-coarse: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| minimum: 0 |
| maximum: 31 |
| description: Specifies the ALP's ATI coarse fractional divider. |
| |
| azoteq,ati-comp-div: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| minimum: 0 |
| maximum: 31 |
| description: Specifies the ALP's ATI compensation divider. |
| |
| azoteq,ati-target: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| minimum: 0 |
| maximum: 65535 |
| description: Specifies the ALP's ATI target. |
| |
| azoteq,ati-base: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| multipleOf: 8 |
| minimum: 0 |
| maximum: 255 |
| description: Specifies the ALP's ATI base. |
| |
| azoteq,ati-mode: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| enum: [0, 1] |
| description: | |
| Specifies the ALP's ATI mode as follows: |
| 0: Partial |
| 1: Full |
| |
| azoteq,sense-mode: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| enum: [0, 1] |
| description: | |
| Specifies the ALP's sensing mode as follows: |
| 0: Self capacitive |
| 1: Mutual capacitive |
| |
| azoteq,debounce-enter: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| minimum: 0 |
| maximum: 255 |
| description: Specifies the ALP's debounce entrance factor. |
| |
| azoteq,debounce-exit: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| minimum: 0 |
| maximum: 255 |
| description: Specifies the ALP's debounce exit factor. |
| |
| azoteq,thresh: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| minimum: 0 |
| maximum: 65535 |
| description: Specifies the ALP's proximity or touch threshold. |
| |
| azoteq,conv-period: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| minimum: 0 |
| maximum: 255 |
| description: Specifies the ALP's conversion period. |
| |
| azoteq,conv-frac: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| minimum: 0 |
| maximum: 255 |
| description: Specifies the ALP's conversion frequency fraction. |
| |
| linux,code: true |
| |
| additionalProperties: false |
| |
| button: |
| type: object |
| description: Represents the inductive or capacitive button. |
| |
| properties: |
| azoteq,ati-frac-div-fine: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| minimum: 0 |
| maximum: 31 |
| description: Specifies the button's ATI fine fractional divider. |
| |
| azoteq,ati-frac-mult-coarse: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| minimum: 0 |
| maximum: 15 |
| description: Specifies the button's ATI coarse fractional multiplier. |
| |
| azoteq,ati-frac-div-coarse: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| minimum: 0 |
| maximum: 31 |
| description: Specifies the button's ATI coarse fractional divider. |
| |
| azoteq,ati-comp-div: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| minimum: 0 |
| maximum: 31 |
| description: Specifies the button's ATI compensation divider. |
| |
| azoteq,ati-target: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| minimum: 0 |
| maximum: 65535 |
| description: Specifies the button's ATI target. |
| |
| azoteq,ati-base: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| multipleOf: 8 |
| minimum: 0 |
| maximum: 255 |
| description: Specifies the button's ATI base. |
| |
| azoteq,ati-mode: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| enum: [0, 1] |
| description: | |
| Specifies the button's ATI mode as follows: |
| 0: Partial |
| 1: Full |
| |
| azoteq,sense-mode: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| enum: [0, 1, 2] |
| description: | |
| Specifies the button's sensing mode as follows: |
| 0: Self capacitive |
| 1: Mutual capacitive |
| 2: Inductive |
| |
| azoteq,touch-enter: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| minimum: 0 |
| maximum: 255 |
| description: Specifies the button's touch entrance factor. |
| |
| azoteq,touch-exit: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| minimum: 0 |
| maximum: 255 |
| description: Specifies the button's touch exit factor. |
| |
| azoteq,debounce-enter: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| minimum: 0 |
| maximum: 255 |
| description: Specifies the button's debounce entrance factor. |
| |
| azoteq,debounce-exit: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| minimum: 0 |
| maximum: 255 |
| description: Specifies the button's debounce exit factor. |
| |
| azoteq,thresh: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| minimum: 0 |
| maximum: 65535 |
| description: Specifies the button's proximity threshold. |
| |
| azoteq,conv-period: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| minimum: 0 |
| maximum: 255 |
| description: Specifies the button's conversion period. |
| |
| azoteq,conv-frac: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| minimum: 0 |
| maximum: 255 |
| description: Specifies the button's conversion frequency fraction. |
| |
| patternProperties: |
| "^event-(prox|touch)$": |
| type: object |
| $ref: ../input.yaml# |
| description: |
| Represents a proximity or touch event reported by the button. |
| |
| properties: |
| linux,code: true |
| |
| additionalProperties: false |
| |
| additionalProperties: false |
| |
| wakeup-source: true |
| |
| touchscreen-size-x: true |
| touchscreen-size-y: true |
| touchscreen-inverted-x: true |
| touchscreen-inverted-y: true |
| touchscreen-swapped-x-y: true |
| |
| dependencies: |
| touchscreen-size-x: ["azoteq,num-contacts"] |
| touchscreen-size-y: ["azoteq,num-contacts"] |
| touchscreen-inverted-x: ["azoteq,num-contacts"] |
| touchscreen-inverted-y: ["azoteq,num-contacts"] |
| touchscreen-swapped-x-y: ["azoteq,num-contacts"] |
| |
| required: |
| - compatible |
| - reg |
| - irq-gpios |
| |
| additionalProperties: false |
| |
| allOf: |
| - $ref: touchscreen.yaml# |
| |
| - if: |
| properties: |
| compatible: |
| contains: |
| const: azoteq,iqs7210a |
| |
| then: |
| properties: |
| alp: |
| properties: |
| azoteq,rx-enable: |
| maxItems: 4 |
| items: |
| minimum: 4 |
| |
| else: |
| properties: |
| azoteq,timeout-press-ms: false |
| |
| alp: |
| properties: |
| azoteq,ati-mode: false |
| |
| button: false |
| |
| - if: |
| properties: |
| compatible: |
| contains: |
| const: azoteq,iqs7211e |
| |
| then: |
| properties: |
| reset-gpios: false |
| |
| trackpad: |
| properties: |
| azoteq,tx-enable: |
| maxItems: 13 |
| items: |
| maximum: 12 |
| |
| alp: |
| properties: |
| azoteq,tx-enable: |
| maxItems: 13 |
| items: |
| maximum: 12 |
| |
| examples: |
| - | |
| #include <dt-bindings/gpio/gpio.h> |
| #include <dt-bindings/input/input.h> |
| |
| i2c { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| touch@56 { |
| compatible = "azoteq,iqs7210a"; |
| reg = <0x56>; |
| irq-gpios = <&gpio 4 GPIO_ACTIVE_LOW>; |
| reset-gpios = <&gpio 17 (GPIO_ACTIVE_LOW | |
| GPIO_PUSH_PULL)>; |
| azoteq,num-contacts = <2>; |
| |
| trackpad { |
| azoteq,rx-enable = <6>, <5>, <4>, <3>, <2>; |
| azoteq,tx-enable = <1>, <7>, <8>, <9>, <10>; |
| }; |
| |
| button { |
| azoteq,sense-mode = <2>; |
| azoteq,touch-enter = <40>; |
| azoteq,touch-exit = <36>; |
| |
| event-touch { |
| linux,code = <KEY_HOME>; |
| }; |
| }; |
| |
| alp { |
| azoteq,sense-mode = <1>; |
| linux,code = <KEY_POWER>; |
| }; |
| }; |
| }; |
| |
| - | |
| #include <dt-bindings/gpio/gpio.h> |
| #include <dt-bindings/input/input.h> |
| |
| i2c { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| touch@56 { |
| compatible = "azoteq,iqs7211e"; |
| reg = <0x56>; |
| irq-gpios = <&gpio 4 (GPIO_ACTIVE_LOW | |
| GPIO_OPEN_DRAIN)>; |
| |
| trackpad { |
| event-tap { |
| linux,code = <KEY_PLAYPAUSE>; |
| }; |
| |
| event-tap-double { |
| linux,code = <KEY_SHUFFLE>; |
| }; |
| |
| event-tap-triple { |
| linux,code = <KEY_AGAIN>; |
| }; |
| |
| event-hold { |
| linux,code = <KEY_STOP>; |
| }; |
| |
| event-palm { |
| linux,code = <KEY_EXIT>; |
| }; |
| |
| event-swipe-x-pos { |
| linux,code = <KEY_REWIND>; |
| }; |
| |
| event-swipe-x-pos-hold { |
| linux,code = <KEY_PREVIOUS>; |
| }; |
| |
| event-swipe-x-neg { |
| linux,code = <KEY_FASTFORWARD>; |
| }; |
| |
| event-swipe-x-neg-hold { |
| linux,code = <KEY_NEXT>; |
| }; |
| |
| event-swipe-y-pos { |
| linux,code = <KEY_VOLUMEUP>; |
| }; |
| |
| event-swipe-y-pos-hold { |
| linux,code = <KEY_MUTE>; |
| }; |
| |
| event-swipe-y-neg { |
| linux,code = <KEY_VOLUMEDOWN>; |
| }; |
| |
| event-swipe-y-neg-hold { |
| linux,code = <KEY_MUTE>; |
| }; |
| }; |
| }; |
| }; |
| |
| ... |