GNU Linux-libre 6.1.90-gnu
[releases.git] / Documentation / devicetree / bindings / input / adc-keys.yaml
1 # SPDX-License-Identifier: GPL-2.0
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/input/adc-keys.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: ADC attached resistor ladder buttons
8
9 maintainers:
10   - Alexandre Belloni <alexandre.belloni@bootlin.com>
11
12 allOf:
13   - $ref: input.yaml#
14
15 properties:
16   compatible:
17     const: adc-keys
18
19   io-channels:
20     maxItems: 1
21
22   io-channel-names:
23     const: buttons
24
25   keyup-threshold-microvolt:
26     description:
27       Voltage above or equal to which all the keys are considered up.
28
29   poll-interval: true
30   autorepeat: true
31
32 patternProperties:
33   '^button-':
34     type: object
35     $ref: input.yaml#
36     additionalProperties: false
37     description:
38       Each button (key) is represented as a sub-node.
39
40     properties:
41       label: true
42
43       linux,code: true
44
45       press-threshold-microvolt:
46         description:
47           Voltage above or equal to which this key is considered pressed. No
48           two values of press-threshold-microvolt may be the same. All values
49           of press-threshold-microvolt must be less than
50           keyup-threshold-microvolt.
51
52     required:
53       - linux,code
54       - press-threshold-microvolt
55
56 required:
57   - compatible
58   - io-channels
59   - io-channel-names
60   - keyup-threshold-microvolt
61
62 additionalProperties: false
63
64 examples:
65   - |
66     #include <dt-bindings/input/input.h>
67     // +--------------------------------+------------------------+
68     // | 2.000.000 <= value             | no key pressed         |
69     // +--------------------------------+------------------------+
70     // | 1.500.000 <= value < 2.000.000 | KEY_VOLUMEUP pressed   |
71     // +--------------------------------+------------------------+
72     // | 1.000.000 <= value < 1.500.000 | KEY_VOLUMEDOWN pressed |
73     // +--------------------------------+------------------------+
74     // |   500.000 <= value < 1.000.000 | KEY_ENTER pressed      |
75     // +--------------------------------+------------------------+
76     // |              value <   500.000 | no key pressed         |
77     // +--------------------------------+------------------------+
78
79     adc-keys {
80         compatible = "adc-keys";
81         io-channels = <&lradc 0>;
82         io-channel-names = "buttons";
83         keyup-threshold-microvolt = <2000000>;
84
85         button-up {
86             label = "Volume Up";
87             linux,code = <KEY_VOLUMEUP>;
88             press-threshold-microvolt = <1500000>;
89         };
90
91         button-down {
92             label = "Volume Down";
93             linux,code = <KEY_VOLUMEDOWN>;
94             press-threshold-microvolt = <1000000>;
95         };
96
97         button-enter {
98             label = "Enter";
99             linux,code = <KEY_ENTER>;
100             press-threshold-microvolt = <500000>;
101         };
102     };
103 ...