mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
555 lines
16 KiB
555 lines
16 KiB
# 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 <[email protected]> |
|
|
|
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: |
|
const: azoteq,iqs269a |
|
|
|
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. |
|
|
|
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 |
|
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: |
|
$ref: /schemas/types.yaml#/definitions/uint32 |
|
description: Numeric key or switch code associated with the event. |
|
|
|
additionalProperties: false |
|
|
|
"^event-touch(-alt)?$": |
|
type: object |
|
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: |
|
$ref: /schemas/types.yaml#/definitions/uint32 |
|
description: Numeric key or switch code associated with the event. |
|
|
|
additionalProperties: false |
|
|
|
"^event-deep(-alt)?$": |
|
type: object |
|
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: |
|
$ref: /schemas/types.yaml#/definitions/uint32 |
|
description: Numeric key or switch code associated with the event. |
|
|
|
additionalProperties: false |
|
|
|
required: |
|
- reg |
|
|
|
additionalProperties: 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>; |
|
|
|
iqs269a@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>; |
|
|
|
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>; |
|
}; |
|
}; |
|
}; |
|
}; |
|
|
|
...
|
|
|