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
7title: ADC attached resistor ladder buttons
8
9maintainers:
10  - Alexandre Belloni <alexandre.belloni@bootlin.com>
11
12allOf:
13  - $ref: input.yaml#
14
15properties:
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
32patternProperties:
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
56required:
57  - compatible
58  - io-channels
59  - io-channel-names
60  - keyup-threshold-microvolt
61
62additionalProperties: false
63
64examples:
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...
104