GNU Linux-libre 5.19-rc6-gnu
[releases.git] / Documentation / devicetree / bindings / input / adc-keys.txt
1 ADC attached resistor ladder buttons
2 ------------------------------------
3
4 Required properties:
5  - compatible: "adc-keys"
6  - io-channels: Phandle to an ADC channel
7  - io-channel-names = "buttons";
8  - keyup-threshold-microvolt: Voltage above or equal to which all the keys are
9                               considered up.
10
11 Optional properties:
12         - poll-interval: Poll interval time in milliseconds
13         - autorepeat: Boolean, Enable auto repeat feature of Linux input
14           subsystem.
15
16 Each button (key) is represented as a sub-node of "adc-keys":
17
18 Required subnode-properties:
19         - label: Descriptive name of the key.
20         - linux,code: Keycode to emit.
21         - press-threshold-microvolt: voltage above or equal to which this key is
22                                      considered pressed.
23
24 No two values of press-threshold-microvolt may be the same.
25 All values of press-threshold-microvolt must be less than
26 keyup-threshold-microvolt.
27
28 Example:
29
30 #include <dt-bindings/input/input.h>
31
32         adc-keys {
33                 compatible = "adc-keys";
34                 io-channels = <&lradc 0>;
35                 io-channel-names = "buttons";
36                 keyup-threshold-microvolt = <2000000>;
37
38                 button-up {
39                         label = "Volume Up";
40                         linux,code = <KEY_VOLUMEUP>;
41                         press-threshold-microvolt = <1500000>;
42                 };
43
44                 button-down {
45                         label = "Volume Down";
46                         linux,code = <KEY_VOLUMEDOWN>;
47                         press-threshold-microvolt = <1000000>;
48                 };
49
50                 button-enter {
51                         label = "Enter";
52                         linux,code = <KEY_ENTER>;
53                         press-threshold-microvolt = <500000>;
54                 };
55         };
56
57 +--------------------------------+------------------------+
58 | 2.000.000 <= value             | no key pressed         |
59 +--------------------------------+------------------------+
60 | 1.500.000 <= value < 2.000.000 | KEY_VOLUMEUP pressed   |
61 +--------------------------------+------------------------+
62 | 1.000.000 <= value < 1.500.000 | KEY_VOLUMEDOWN pressed |
63 +--------------------------------+------------------------+
64 |   500.000 <= value < 1.000.000 | KEY_ENTER pressed      |
65 +--------------------------------+------------------------+
66 |              value <   500.000 | no key pressed         |
67 +--------------------------------+------------------------+