| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648 |
- # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
- %YAML 1.2
- ---
- $id: http://devicetree.org/schemas/input/iqs269a.yaml#
- $schema: http://devicetree.org/meta-schemas/core.yaml#
- title: Azoteq IQS269A Capacitive Touch Controller
- maintainers:
- - Jeff LaBundy <jeff@labundy.com>
- allOf:
- - $ref: input.yaml#
- description: |
- The Azoteq IQS269A is an 8-channel capacitive touch controller that features
- additional Hall-effect and inductive sensing capabilities.
- Link to datasheet: https://www.azoteq.com/
- properties:
- compatible:
- enum:
- - azoteq,iqs269a
- - azoteq,iqs269a-00
- - azoteq,iqs269a-d0
- reg:
- maxItems: 1
- interrupts:
- maxItems: 1
- "#address-cells":
- const: 1
- "#size-cells":
- const: 0
- azoteq,hall-enable:
- type: boolean
- description:
- Enables Hall-effect sensing on channels 6 and 7. In this case, keycodes
- assigned to channel 6 are ignored and keycodes assigned to channel 7 are
- interpreted as switch codes. Refer to the datasheet for requirements im-
- posed on channels 6 and 7 by Hall-effect sensing.
- azoteq,suspend-mode:
- $ref: /schemas/types.yaml#/definitions/uint32
- enum: [0, 1, 2, 3]
- default: 0
- description: |
- Specifies the power mode during suspend as follows:
- 0: Automatic (same as normal runtime, i.e. suspend/resume disabled)
- 1: Low power (all sensing at a reduced reporting rate)
- 2: Ultra-low power (channel 0 proximity sensing)
- 3: Halt (no sensing)
- azoteq,clk-div:
- type: boolean
- description: Divides the device's core clock by a factor of 4.
- azoteq,ulp-update:
- $ref: /schemas/types.yaml#/definitions/uint32
- minimum: 0
- maximum: 7
- default: 3
- description: Specifies the ultra-low-power mode update rate.
- azoteq,reseed-offset:
- type: boolean
- description:
- Applies an 8-count offset to all long-term averages upon either ATI or
- reseed events.
- azoteq,filt-str-lp-lta:
- $ref: /schemas/types.yaml#/definitions/uint32
- enum: [0, 1, 2, 3]
- default: 0
- description:
- Specifies the long-term average filter strength during low-power mode.
- azoteq,filt-str-lp-cnt:
- $ref: /schemas/types.yaml#/definitions/uint32
- enum: [0, 1, 2, 3]
- default: 0
- description:
- Specifies the raw count filter strength during low-power mode.
- azoteq,filt-str-np-lta:
- $ref: /schemas/types.yaml#/definitions/uint32
- enum: [0, 1, 2, 3]
- default: 0
- description:
- Specifies the long-term average filter strength during normal-power mode.
- azoteq,filt-str-np-cnt:
- $ref: /schemas/types.yaml#/definitions/uint32
- enum: [0, 1, 2, 3]
- default: 0
- description:
- Specifies the raw count filter strength during normal-power mode.
- azoteq,rate-np-ms:
- minimum: 0
- maximum: 255
- default: 16
- description: Specifies the report rate (in ms) during normal-power mode.
- azoteq,rate-lp-ms:
- minimum: 0
- maximum: 255
- default: 160
- description: Specifies the report rate (in ms) during low-power mode.
- azoteq,rate-ulp-ms:
- multipleOf: 16
- minimum: 0
- maximum: 4080
- default: 160
- description: Specifies the report rate (in ms) during ultra-low-power mode.
- azoteq,timeout-pwr-ms:
- multipleOf: 512
- minimum: 0
- maximum: 130560
- default: 2560
- description:
- Specifies the length of time (in ms) to wait for an event during normal-
- power mode before transitioning to low-power mode.
- azoteq,timeout-lta-ms:
- multipleOf: 512
- minimum: 0
- maximum: 130560
- default: 32768
- description:
- Specifies the length of time (in ms) to wait before resetting the long-
- term average of all channels. Specify the maximum timeout to disable it
- altogether.
- azoteq,ati-band-disable:
- type: boolean
- description: Disables the ATI band check.
- azoteq,ati-lp-only:
- type: boolean
- description: Limits automatic ATI to low-power mode.
- azoteq,ati-band-tighten:
- type: boolean
- description: Tightens the ATI band from 1/8 to 1/16 of the desired target.
- azoteq,filt-disable:
- type: boolean
- description: Disables all raw count filtering.
- azoteq,gpio3-select:
- $ref: /schemas/types.yaml#/definitions/uint32
- minimum: 0
- maximum: 7
- default: 0
- description:
- Selects the channel for which the GPIO3 pin represents touch state.
- azoteq,dual-direction:
- type: boolean
- description:
- Specifies that long-term averages are to freeze in the presence of either
- increasing or decreasing counts, thereby permitting events to be reported
- in either direction.
- azoteq,tx-freq:
- $ref: /schemas/types.yaml#/definitions/uint32
- enum: [0, 1, 2, 3]
- default: 0
- description: |
- Specifies the inductive sensing excitation frequency as follows (paren-
- thesized numbers represent the frequency if 'azoteq,clk-div' is present):
- 0: 16 MHz (4 MHz)
- 1: 8 MHz (2 MHz)
- 2: 4 MHz (1 MHz)
- 3: 2 MHz (500 kHz)
- azoteq,global-cap-increase:
- type: boolean
- description: Increases the global capacitance adder from 0.5 pF to 1.5 pF.
- azoteq,reseed-select:
- $ref: /schemas/types.yaml#/definitions/uint32
- enum: [0, 1, 2, 3]
- default: 0
- description: |
- Specifies the event(s) that prompt the device to reseed (i.e. reset the
- long-term average) of an associated channel as follows:
- 0: None
- 1: Proximity
- 2: Proximity or touch
- 3: Proximity, touch or deep touch
- azoteq,tracking-enable:
- type: boolean
- description:
- Enables all associated channels to track their respective reference
- channels.
- azoteq,filt-str-slider:
- $ref: /schemas/types.yaml#/definitions/uint32
- enum: [0, 1, 2, 3]
- default: 1
- description: Specifies the slider coordinate filter strength.
- azoteq,touch-hold-ms:
- multipleOf: 256
- minimum: 256
- maximum: 65280
- default: 5120
- description:
- Specifies the length of time (in ms) for which the channel selected by
- 'azoteq,gpio3-select' must be held in a state of touch in order for an
- approximately 60-ms pulse to be asserted on the GPIO4 pin.
- linux,keycodes:
- minItems: 1
- maxItems: 8
- description: |
- Specifies the numeric keycodes associated with each available gesture in
- the following order (enter 0 for unused gestures):
- 0: Slider 0 tap
- 1: Slider 0 hold
- 2: Slider 0 positive flick or swipe
- 3: Slider 0 negative flick or swipe
- 4: Slider 1 tap
- 5: Slider 1 hold
- 6: Slider 1 positive flick or swipe
- 7: Slider 1 negative flick or swipe
- azoteq,gesture-swipe:
- type: boolean
- description:
- Directs the device to interpret axial gestures as a swipe (finger remains
- on slider) instead of a flick (finger leaves slider).
- azoteq,timeout-tap-ms:
- multipleOf: 16
- minimum: 0
- maximum: 4080
- default: 400
- description:
- Specifies the length of time (in ms) within which a slider touch must be
- released in order to be interpreted as a tap. Default and maximum values
- as well as step size are reduced by a factor of 4 with device version 2.
- azoteq,timeout-swipe-ms:
- multipleOf: 16
- minimum: 0
- maximum: 4080
- default: 2000
- description:
- Specifies the length of time (in ms) within which an axial gesture must be
- completed in order to be interpreted as a flick or swipe. Default and max-
- imum values as well as step size are reduced by a factor of 4 with device
- version 2.
- azoteq,thresh-swipe:
- $ref: /schemas/types.yaml#/definitions/uint32
- minimum: 0
- maximum: 255
- default: 128
- description:
- Specifies the number of points across which an axial gesture must travel
- in order to be interpreted as a flick or swipe.
- dependencies:
- azoteq,gesture-swipe: ["linux,keycodes"]
- azoteq,timeout-tap-ms: ["linux,keycodes"]
- azoteq,timeout-swipe-ms: ["linux,keycodes"]
- azoteq,thresh-swipe: ["linux,keycodes"]
- patternProperties:
- "^channel@[0-7]$":
- type: object
- description:
- Represents a single sensing channel. A channel is active if defined and
- inactive otherwise.
- properties:
- reg:
- minimum: 0
- maximum: 7
- description: Index of the channel.
- azoteq,reseed-disable:
- type: boolean
- description:
- Prevents the channel from being reseeded if the long-term average
- timeout (defined in 'azoteq,timeout-lta') expires.
- azoteq,blocking-enable:
- type: boolean
- description: Specifies that the channel is a blocking channel.
- azoteq,slider0-select:
- type: boolean
- description: Specifies that the channel participates in slider 0.
- azoteq,slider1-select:
- type: boolean
- description: Specifies that the channel participates in slider 1.
- 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 channel. By default, only
- the CRX pin corresponding to the channel's index is enabled (e.g. CRX0
- for channel 0).
- azoteq,tx-enable:
- $ref: /schemas/types.yaml#/definitions/uint32-array
- minItems: 1
- maxItems: 8
- items:
- minimum: 0
- maximum: 7
- default: [0, 1, 2, 3, 4, 5, 6, 7]
- description: Specifies the TX pin(s) associated with the channel.
- azoteq,meas-cap-decrease:
- type: boolean
- description:
- Decreases the internal measurement capacitance from 60 pF to 15 pF.
- azoteq,rx-float-inactive:
- type: boolean
- description: Floats any inactive CRX pins instead of grounding them.
- azoteq,local-cap-size:
- $ref: /schemas/types.yaml#/definitions/uint32
- enum: [0, 1, 2]
- default: 0
- description: |
- Specifies the capacitance to be added to the channel as follows:
- 0: None
- 1: Global adder (based on 'azoteq,global-cap-increase')
- 2: Global adder + 0.5 pF
- azoteq,invert-enable:
- type: boolean
- description:
- Inverts the polarity of the states reported for proximity, touch and
- deep-touch events relative to their respective thresholds.
- azoteq,proj-bias:
- $ref: /schemas/types.yaml#/definitions/uint32
- enum: [0, 1, 2, 3]
- default: 2
- description: |
- Specifies the bias current applied during projected-capacitance
- sensing as follows:
- 0: 2.5 uA
- 1: 5 uA
- 2: 10 uA
- 3: 20 uA
- azoteq,sense-mode:
- $ref: /schemas/types.yaml#/definitions/uint32
- enum: [0, 1, 9, 14, 15]
- default: 0
- description: |
- Specifies the channel's sensing mode as follows:
- 0: Self capacitance
- 1: Projected capacitance
- 9: Self or mutual inductance
- 14: Hall effect
- 15: Temperature
- azoteq,sense-freq:
- $ref: /schemas/types.yaml#/definitions/uint32
- enum: [0, 1, 2, 3]
- default: 1
- description: |
- Specifies the channel's sensing frequency as follows (parenthesized
- numbers represent the frequency if 'azoteq,clk-div' is present):
- 0: 4 MHz (1 MHz)
- 1: 2 MHz (500 kHz)
- 2: 1 MHz (250 kHz)
- 3: 500 kHz (125 kHz)
- azoteq,static-enable:
- type: boolean
- description: Enables the static front-end for the channel.
- azoteq,ati-mode:
- $ref: /schemas/types.yaml#/definitions/uint32
- enum: [0, 1, 2, 3]
- default: 3
- description: |
- Specifies the channel's ATI mode as follows:
- 0: Disabled
- 1: Semi-partial
- 2: Partial
- 3: Full
- azoteq,ati-base:
- $ref: /schemas/types.yaml#/definitions/uint32
- enum: [75, 100, 150, 200]
- default: 100
- description: Specifies the channel's ATI base.
- azoteq,ati-target:
- $ref: /schemas/types.yaml#/definitions/uint32
- multipleOf: 32
- minimum: 0
- maximum: 2016
- default: 512
- description: Specifies the channel's ATI target.
- azoteq,assoc-select:
- $ref: /schemas/types.yaml#/definitions/uint32-array
- minItems: 1
- maxItems: 8
- items:
- minimum: 0
- maximum: 7
- description:
- Specifies the associated channels for which the channel serves as a
- reference channel. By default, no channels are selected.
- azoteq,assoc-weight:
- $ref: /schemas/types.yaml#/definitions/uint32
- minimum: 0
- maximum: 255
- default: 0
- description:
- Specifies the channel's impact weight if it acts as an associated
- channel (0 = 0% impact, 255 = 200% impact).
- patternProperties:
- "^event-prox(-alt)?$":
- type: object
- $ref: input.yaml#
- description:
- Represents a proximity event reported by the channel in response to
- a decrease in counts. Node names suffixed with '-alt' instead corre-
- spond to an increase in counts.
- By default, the long-term average tracks an increase in counts such
- that only events corresponding to a decrease in counts are reported
- (refer to the datasheet for more information).
- Specify 'azoteq,dual-direction' to freeze the long-term average when
- the counts increase or decrease such that events of either direction
- can be reported. Alternatively, specify 'azoteq,invert-enable' to in-
- vert the polarity of the states reported by the channel.
- Complementary events (e.g. event-touch and event-touch-alt) can both
- be present and specify different key or switch codes, but not differ-
- ent thresholds or hysteresis (if applicable).
- properties:
- azoteq,thresh:
- $ref: /schemas/types.yaml#/definitions/uint32
- minimum: 0
- maximum: 255
- default: 10
- description: Specifies the threshold for the event.
- linux,code: true
- additionalProperties: false
- "^event-touch(-alt)?$":
- type: object
- $ref: input.yaml#
- description: Represents a touch event reported by the channel.
- properties:
- azoteq,thresh:
- $ref: /schemas/types.yaml#/definitions/uint32
- minimum: 0
- maximum: 255
- default: 8
- description: Specifies the threshold for the event.
- azoteq,hyst:
- $ref: /schemas/types.yaml#/definitions/uint32
- minimum: 0
- maximum: 15
- default: 4
- description: Specifies the hysteresis for the event.
- linux,code: true
- additionalProperties: false
- "^event-deep(-alt)?$":
- type: object
- $ref: input.yaml#
- description: Represents a deep-touch event reported by the channel.
- properties:
- azoteq,thresh:
- $ref: /schemas/types.yaml#/definitions/uint32
- minimum: 0
- maximum: 255
- default: 26
- description: Specifies the threshold for the event.
- azoteq,hyst:
- $ref: /schemas/types.yaml#/definitions/uint32
- minimum: 0
- maximum: 15
- default: 0
- description: Specifies the hysteresis for the event.
- linux,code: true
- additionalProperties: false
- required:
- - reg
- additionalProperties: false
- if:
- properties:
- compatible:
- contains:
- enum:
- - azoteq,iqs269a-d0
- then:
- patternProperties:
- "^channel@[0-7]$":
- properties:
- azoteq,slider1-select: false
- else:
- properties:
- azoteq,touch-hold-ms: false
- required:
- - compatible
- - reg
- - interrupts
- - "#address-cells"
- - "#size-cells"
- additionalProperties: false
- examples:
- - |
- #include <dt-bindings/input/input.h>
- #include <dt-bindings/interrupt-controller/irq.h>
- i2c {
- #address-cells = <1>;
- #size-cells = <0>;
- touch@44 {
- #address-cells = <1>;
- #size-cells = <0>;
- compatible = "azoteq,iqs269a";
- reg = <0x44>;
- interrupt-parent = <&gpio>;
- interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
- azoteq,hall-enable;
- azoteq,suspend-mode = <2>;
- linux,keycodes = <KEY_PLAYPAUSE>,
- <KEY_STOPCD>,
- <KEY_NEXTSONG>,
- <KEY_PREVIOUSSONG>;
- azoteq,timeout-tap-ms = <400>;
- azoteq,timeout-swipe-ms = <800>;
- channel@0 {
- reg = <0x0>;
- event-prox {
- linux,code = <KEY_POWER>;
- };
- };
- channel@1 {
- reg = <0x1>;
- azoteq,slider0-select;
- };
- channel@2 {
- reg = <0x2>;
- azoteq,slider0-select;
- };
- channel@3 {
- reg = <0x3>;
- azoteq,slider0-select;
- };
- channel@4 {
- reg = <0x4>;
- azoteq,slider0-select;
- };
- channel@5 {
- reg = <0x5>;
- azoteq,slider0-select;
- };
- channel@6 {
- reg = <0x6>;
- azoteq,invert-enable;
- azoteq,static-enable;
- azoteq,reseed-disable;
- azoteq,rx-enable = <0>;
- azoteq,sense-freq = <0x0>;
- azoteq,sense-mode = <0xE>;
- azoteq,ati-mode = <0x0>;
- azoteq,ati-base = <200>;
- azoteq,ati-target = <320>;
- };
- channel@7 {
- reg = <0x7>;
- azoteq,invert-enable;
- azoteq,static-enable;
- azoteq,reseed-disable;
- azoteq,rx-enable = <0>, <6>;
- azoteq,sense-freq = <0x0>;
- azoteq,sense-mode = <0xE>;
- azoteq,ati-mode = <0x3>;
- azoteq,ati-base = <200>;
- azoteq,ati-target = <320>;
- event-touch {
- linux,code = <SW_LID>;
- };
- };
- };
- };
- ...
|