xref: /freebsd/sys/contrib/device-tree/Bindings/input/adc-keys.txt (revision 8ddb146abcdf061be9f2c0db7e391697dafad85c)
1ADC attached resistor ladder buttons
2------------------------------------
3
4Required 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
11Optional properties:
12	- poll-interval: Poll interval time in milliseconds
13	- autorepeat: Boolean, Enable auto repeat feature of Linux input
14	  subsystem.
15
16Each button (key) is represented as a sub-node of "adc-keys":
17
18Required 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
24No two values of press-threshold-microvolt may be the same.
25All values of press-threshold-microvolt must be less than
26keyup-threshold-microvolt.
27
28Example:
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+--------------------------------+------------------------+
68