Path: blob/master/Documentation/devicetree/bindings/input/iqs269a.yaml
26308 views
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)1%YAML 1.22---3$id: http://devicetree.org/schemas/input/iqs269a.yaml#4$schema: http://devicetree.org/meta-schemas/core.yaml#56title: Azoteq IQS269A Capacitive Touch Controller78maintainers:9- Jeff LaBundy <jeff@labundy.com>1011allOf:12- $ref: input.yaml#1314description: |15The Azoteq IQS269A is an 8-channel capacitive touch controller that features16additional Hall-effect and inductive sensing capabilities.1718Link to datasheet: https://www.azoteq.com/1920properties:21compatible:22enum:23- azoteq,iqs269a24- azoteq,iqs269a-0025- azoteq,iqs269a-d02627reg:28maxItems: 12930interrupts:31maxItems: 13233"#address-cells":34const: 13536"#size-cells":37const: 03839azoteq,hall-enable:40type: boolean41description:42Enables Hall-effect sensing on channels 6 and 7. In this case, keycodes43assigned to channel 6 are ignored and keycodes assigned to channel 7 are44interpreted as switch codes. Refer to the datasheet for requirements im-45posed on channels 6 and 7 by Hall-effect sensing.4647azoteq,suspend-mode:48$ref: /schemas/types.yaml#/definitions/uint3249enum: [0, 1, 2, 3]50default: 051description: |52Specifies the power mode during suspend as follows:530: Automatic (same as normal runtime, i.e. suspend/resume disabled)541: Low power (all sensing at a reduced reporting rate)552: Ultra-low power (channel 0 proximity sensing)563: Halt (no sensing)5758azoteq,clk-div:59type: boolean60description: Divides the device's core clock by a factor of 4.6162azoteq,ulp-update:63$ref: /schemas/types.yaml#/definitions/uint3264minimum: 065maximum: 766default: 367description: Specifies the ultra-low-power mode update rate.6869azoteq,reseed-offset:70type: boolean71description:72Applies an 8-count offset to all long-term averages upon either ATI or73reseed events.7475azoteq,filt-str-lp-lta:76$ref: /schemas/types.yaml#/definitions/uint3277enum: [0, 1, 2, 3]78default: 079description:80Specifies the long-term average filter strength during low-power mode.8182azoteq,filt-str-lp-cnt:83$ref: /schemas/types.yaml#/definitions/uint3284enum: [0, 1, 2, 3]85default: 086description:87Specifies the raw count filter strength during low-power mode.8889azoteq,filt-str-np-lta:90$ref: /schemas/types.yaml#/definitions/uint3291enum: [0, 1, 2, 3]92default: 093description:94Specifies the long-term average filter strength during normal-power mode.9596azoteq,filt-str-np-cnt:97$ref: /schemas/types.yaml#/definitions/uint3298enum: [0, 1, 2, 3]99default: 0100description:101Specifies the raw count filter strength during normal-power mode.102103azoteq,rate-np-ms:104minimum: 0105maximum: 255106default: 16107description: Specifies the report rate (in ms) during normal-power mode.108109azoteq,rate-lp-ms:110minimum: 0111maximum: 255112default: 160113description: Specifies the report rate (in ms) during low-power mode.114115azoteq,rate-ulp-ms:116multipleOf: 16117minimum: 0118maximum: 4080119default: 160120description: Specifies the report rate (in ms) during ultra-low-power mode.121122azoteq,timeout-pwr-ms:123multipleOf: 512124minimum: 0125maximum: 130560126default: 2560127description:128Specifies the length of time (in ms) to wait for an event during normal-129power mode before transitioning to low-power mode.130131azoteq,timeout-lta-ms:132multipleOf: 512133minimum: 0134maximum: 130560135default: 32768136description:137Specifies the length of time (in ms) to wait before resetting the long-138term average of all channels. Specify the maximum timeout to disable it139altogether.140141azoteq,ati-band-disable:142type: boolean143description: Disables the ATI band check.144145azoteq,ati-lp-only:146type: boolean147description: Limits automatic ATI to low-power mode.148149azoteq,ati-band-tighten:150type: boolean151description: Tightens the ATI band from 1/8 to 1/16 of the desired target.152153azoteq,filt-disable:154type: boolean155description: Disables all raw count filtering.156157azoteq,gpio3-select:158$ref: /schemas/types.yaml#/definitions/uint32159minimum: 0160maximum: 7161default: 0162description:163Selects the channel for which the GPIO3 pin represents touch state.164165azoteq,dual-direction:166type: boolean167description:168Specifies that long-term averages are to freeze in the presence of either169increasing or decreasing counts, thereby permitting events to be reported170in either direction.171172azoteq,tx-freq:173$ref: /schemas/types.yaml#/definitions/uint32174enum: [0, 1, 2, 3]175default: 0176description: |177Specifies the inductive sensing excitation frequency as follows (paren-178thesized numbers represent the frequency if 'azoteq,clk-div' is present):1790: 16 MHz (4 MHz)1801: 8 MHz (2 MHz)1812: 4 MHz (1 MHz)1823: 2 MHz (500 kHz)183184azoteq,global-cap-increase:185type: boolean186description: Increases the global capacitance adder from 0.5 pF to 1.5 pF.187188azoteq,reseed-select:189$ref: /schemas/types.yaml#/definitions/uint32190enum: [0, 1, 2, 3]191default: 0192description: |193Specifies the event(s) that prompt the device to reseed (i.e. reset the194long-term average) of an associated channel as follows:1950: None1961: Proximity1972: Proximity or touch1983: Proximity, touch or deep touch199200azoteq,tracking-enable:201type: boolean202description:203Enables all associated channels to track their respective reference204channels.205206azoteq,filt-str-slider:207$ref: /schemas/types.yaml#/definitions/uint32208enum: [0, 1, 2, 3]209default: 1210description: Specifies the slider coordinate filter strength.211212azoteq,touch-hold-ms:213multipleOf: 256214minimum: 256215maximum: 65280216default: 5120217description:218Specifies the length of time (in ms) for which the channel selected by219'azoteq,gpio3-select' must be held in a state of touch in order for an220approximately 60-ms pulse to be asserted on the GPIO4 pin.221222linux,keycodes:223minItems: 1224maxItems: 8225description: |226Specifies the numeric keycodes associated with each available gesture in227the following order (enter 0 for unused gestures):2280: Slider 0 tap2291: Slider 0 hold2302: Slider 0 positive flick or swipe2313: Slider 0 negative flick or swipe2324: Slider 1 tap2335: Slider 1 hold2346: Slider 1 positive flick or swipe2357: Slider 1 negative flick or swipe236237azoteq,gesture-swipe:238type: boolean239description:240Directs the device to interpret axial gestures as a swipe (finger remains241on slider) instead of a flick (finger leaves slider).242243azoteq,timeout-tap-ms:244multipleOf: 16245minimum: 0246maximum: 4080247default: 400248description:249Specifies the length of time (in ms) within which a slider touch must be250released in order to be interpreted as a tap. Default and maximum values251as well as step size are reduced by a factor of 4 with device version 2.252253azoteq,timeout-swipe-ms:254multipleOf: 16255minimum: 0256maximum: 4080257default: 2000258description:259Specifies the length of time (in ms) within which an axial gesture must be260completed in order to be interpreted as a flick or swipe. Default and max-261imum values as well as step size are reduced by a factor of 4 with device262version 2.263264azoteq,thresh-swipe:265$ref: /schemas/types.yaml#/definitions/uint32266minimum: 0267maximum: 255268default: 128269description:270Specifies the number of points across which an axial gesture must travel271in order to be interpreted as a flick or swipe.272273dependencies:274azoteq,gesture-swipe: ["linux,keycodes"]275azoteq,timeout-tap-ms: ["linux,keycodes"]276azoteq,timeout-swipe-ms: ["linux,keycodes"]277azoteq,thresh-swipe: ["linux,keycodes"]278279patternProperties:280"^channel@[0-7]$":281type: object282description:283Represents a single sensing channel. A channel is active if defined and284inactive otherwise.285286properties:287reg:288minimum: 0289maximum: 7290description: Index of the channel.291292azoteq,reseed-disable:293type: boolean294description:295Prevents the channel from being reseeded if the long-term average296timeout (defined in 'azoteq,timeout-lta') expires.297298azoteq,blocking-enable:299type: boolean300description: Specifies that the channel is a blocking channel.301302azoteq,slider0-select:303type: boolean304description: Specifies that the channel participates in slider 0.305306azoteq,slider1-select:307type: boolean308description: Specifies that the channel participates in slider 1.309310azoteq,rx-enable:311$ref: /schemas/types.yaml#/definitions/uint32-array312minItems: 1313maxItems: 8314items:315minimum: 0316maximum: 7317description:318Specifies the CRX pin(s) associated with the channel. By default, only319the CRX pin corresponding to the channel's index is enabled (e.g. CRX0320for channel 0).321322azoteq,tx-enable:323$ref: /schemas/types.yaml#/definitions/uint32-array324minItems: 1325maxItems: 8326items:327minimum: 0328maximum: 7329default: [0, 1, 2, 3, 4, 5, 6, 7]330description: Specifies the TX pin(s) associated with the channel.331332azoteq,meas-cap-decrease:333type: boolean334description:335Decreases the internal measurement capacitance from 60 pF to 15 pF.336337azoteq,rx-float-inactive:338type: boolean339description: Floats any inactive CRX pins instead of grounding them.340341azoteq,local-cap-size:342$ref: /schemas/types.yaml#/definitions/uint32343enum: [0, 1, 2]344default: 0345description: |346Specifies the capacitance to be added to the channel as follows:3470: None3481: Global adder (based on 'azoteq,global-cap-increase')3492: Global adder + 0.5 pF350351azoteq,invert-enable:352type: boolean353description:354Inverts the polarity of the states reported for proximity, touch and355deep-touch events relative to their respective thresholds.356357azoteq,proj-bias:358$ref: /schemas/types.yaml#/definitions/uint32359enum: [0, 1, 2, 3]360default: 2361description: |362Specifies the bias current applied during projected-capacitance363sensing as follows:3640: 2.5 uA3651: 5 uA3662: 10 uA3673: 20 uA368369azoteq,sense-mode:370$ref: /schemas/types.yaml#/definitions/uint32371enum: [0, 1, 9, 14, 15]372default: 0373description: |374Specifies the channel's sensing mode as follows:3750: Self capacitance3761: Projected capacitance3779: Self or mutual inductance37814: Hall effect37915: Temperature380381azoteq,sense-freq:382$ref: /schemas/types.yaml#/definitions/uint32383enum: [0, 1, 2, 3]384default: 1385description: |386Specifies the channel's sensing frequency as follows (parenthesized387numbers represent the frequency if 'azoteq,clk-div' is present):3880: 4 MHz (1 MHz)3891: 2 MHz (500 kHz)3902: 1 MHz (250 kHz)3913: 500 kHz (125 kHz)392393azoteq,static-enable:394type: boolean395description: Enables the static front-end for the channel.396397azoteq,ati-mode:398$ref: /schemas/types.yaml#/definitions/uint32399enum: [0, 1, 2, 3]400default: 3401description: |402Specifies the channel's ATI mode as follows:4030: Disabled4041: Semi-partial4052: Partial4063: Full407408azoteq,ati-base:409$ref: /schemas/types.yaml#/definitions/uint32410enum: [75, 100, 150, 200]411default: 100412description: Specifies the channel's ATI base.413414azoteq,ati-target:415$ref: /schemas/types.yaml#/definitions/uint32416multipleOf: 32417minimum: 0418maximum: 2016419default: 512420description: Specifies the channel's ATI target.421422azoteq,assoc-select:423$ref: /schemas/types.yaml#/definitions/uint32-array424minItems: 1425maxItems: 8426items:427minimum: 0428maximum: 7429description:430Specifies the associated channels for which the channel serves as a431reference channel. By default, no channels are selected.432433azoteq,assoc-weight:434$ref: /schemas/types.yaml#/definitions/uint32435minimum: 0436maximum: 255437default: 0438description:439Specifies the channel's impact weight if it acts as an associated440channel (0 = 0% impact, 255 = 200% impact).441442patternProperties:443"^event-prox(-alt)?$":444type: object445$ref: input.yaml#446description:447Represents a proximity event reported by the channel in response to448a decrease in counts. Node names suffixed with '-alt' instead corre-449spond to an increase in counts.450451By default, the long-term average tracks an increase in counts such452that only events corresponding to a decrease in counts are reported453(refer to the datasheet for more information).454455Specify 'azoteq,dual-direction' to freeze the long-term average when456the counts increase or decrease such that events of either direction457can be reported. Alternatively, specify 'azoteq,invert-enable' to in-458vert the polarity of the states reported by the channel.459460Complementary events (e.g. event-touch and event-touch-alt) can both461be present and specify different key or switch codes, but not differ-462ent thresholds or hysteresis (if applicable).463464properties:465azoteq,thresh:466$ref: /schemas/types.yaml#/definitions/uint32467minimum: 0468maximum: 255469default: 10470description: Specifies the threshold for the event.471472linux,code: true473474additionalProperties: false475476"^event-touch(-alt)?$":477type: object478$ref: input.yaml#479description: Represents a touch event reported by the channel.480481properties:482azoteq,thresh:483$ref: /schemas/types.yaml#/definitions/uint32484minimum: 0485maximum: 255486default: 8487description: Specifies the threshold for the event.488489azoteq,hyst:490$ref: /schemas/types.yaml#/definitions/uint32491minimum: 0492maximum: 15493default: 4494description: Specifies the hysteresis for the event.495496linux,code: true497498additionalProperties: false499500"^event-deep(-alt)?$":501type: object502$ref: input.yaml#503description: Represents a deep-touch event reported by the channel.504505properties:506azoteq,thresh:507$ref: /schemas/types.yaml#/definitions/uint32508minimum: 0509maximum: 255510default: 26511description: Specifies the threshold for the event.512513azoteq,hyst:514$ref: /schemas/types.yaml#/definitions/uint32515minimum: 0516maximum: 15517default: 0518description: Specifies the hysteresis for the event.519520linux,code: true521522additionalProperties: false523524required:525- reg526527additionalProperties: false528529if:530properties:531compatible:532contains:533enum:534- azoteq,iqs269a-d0535then:536patternProperties:537"^channel@[0-7]$":538properties:539azoteq,slider1-select: false540else:541properties:542azoteq,touch-hold-ms: false543544required:545- compatible546- reg547- interrupts548- "#address-cells"549- "#size-cells"550551additionalProperties: false552553examples:554- |555#include <dt-bindings/input/input.h>556#include <dt-bindings/interrupt-controller/irq.h>557558i2c {559#address-cells = <1>;560#size-cells = <0>;561562touch@44 {563#address-cells = <1>;564#size-cells = <0>;565566compatible = "azoteq,iqs269a";567reg = <0x44>;568interrupt-parent = <&gpio>;569interrupts = <17 IRQ_TYPE_LEVEL_LOW>;570571azoteq,hall-enable;572azoteq,suspend-mode = <2>;573574linux,keycodes = <KEY_PLAYPAUSE>,575<KEY_STOPCD>,576<KEY_NEXTSONG>,577<KEY_PREVIOUSSONG>;578579azoteq,timeout-tap-ms = <400>;580azoteq,timeout-swipe-ms = <800>;581582channel@0 {583reg = <0x0>;584585event-prox {586linux,code = <KEY_POWER>;587};588};589590channel@1 {591reg = <0x1>;592azoteq,slider0-select;593};594595channel@2 {596reg = <0x2>;597azoteq,slider0-select;598};599600channel@3 {601reg = <0x3>;602azoteq,slider0-select;603};604605channel@4 {606reg = <0x4>;607azoteq,slider0-select;608};609610channel@5 {611reg = <0x5>;612azoteq,slider0-select;613};614615channel@6 {616reg = <0x6>;617azoteq,invert-enable;618azoteq,static-enable;619azoteq,reseed-disable;620azoteq,rx-enable = <0>;621azoteq,sense-freq = <0x0>;622azoteq,sense-mode = <0xE>;623azoteq,ati-mode = <0x0>;624azoteq,ati-base = <200>;625azoteq,ati-target = <320>;626};627628channel@7 {629reg = <0x7>;630azoteq,invert-enable;631azoteq,static-enable;632azoteq,reseed-disable;633azoteq,rx-enable = <0>, <6>;634azoteq,sense-freq = <0x0>;635azoteq,sense-mode = <0xE>;636azoteq,ati-mode = <0x3>;637azoteq,ati-base = <200>;638azoteq,ati-target = <320>;639640event-touch {641linux,code = <SW_LID>;642};643};644};645};646647...648649650