GNU Linux-libre 6.1.90-gnu
[releases.git] / Documentation / devicetree / bindings / input / gpio-keys.yaml
1 # SPDX-License-Identifier: GPL-2.0-only
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/input/gpio-keys.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: Device-Tree bindings for GPIO attached keys
8
9 maintainers:
10   - Rob Herring <robh@kernel.org>
11
12 properties:
13   compatible:
14     enum:
15       - gpio-keys
16       - gpio-keys-polled
17
18   autorepeat: true
19
20   label:
21     description: Name of entire device
22
23   poll-interval: true
24
25 patternProperties:
26   "^(button|event|key|switch|(button|event|key|switch)-[a-z0-9-]+|[a-z0-9-]+-(button|event|key|switch))$":
27     $ref: input.yaml#
28
29     properties:
30       gpios:
31         maxItems: 1
32
33       interrupts:
34         maxItems: 1
35
36       label:
37         description: Descriptive name of the key.
38
39       linux,code:
40         description: Key / Axis code to emit.
41
42       linux,input-type:
43         default: 1  # EV_KEY
44
45       linux,input-value:
46         description: |
47           If linux,input-type is EV_ABS or EV_REL then this
48           value is sent for events this button generates when pressed.
49           EV_ABS/EV_REL axis will generate an event with a value of 0
50           when all buttons with linux,input-type == type and
51           linux,code == axis are released. This value is interpreted
52           as a signed 32 bit value, e.g. to make a button generate a
53           value of -1 use:
54
55           linux,input-value = <0xffffffff>; /* -1 */
56
57         $ref: /schemas/types.yaml#/definitions/uint32
58
59       debounce-interval:
60         description:
61           Debouncing interval time in milliseconds. If not specified defaults to 5.
62         $ref: /schemas/types.yaml#/definitions/uint32
63
64         default: 5
65
66       wakeup-source:
67         description: Button can wake-up the system.
68
69       wakeup-event-action:
70         description: |
71           Specifies whether the key should wake the system when asserted, when
72           deasserted, or both. This property is only valid for keys that wake up the
73           system (e.g., when the "wakeup-source" property is also provided).
74
75           Supported values are defined in linux-event-codes.h:
76
77             EV_ACT_ANY        - both asserted and deasserted
78             EV_ACT_ASSERTED   - asserted
79             EV_ACT_DEASSERTED - deasserted
80         $ref: /schemas/types.yaml#/definitions/uint32
81         enum: [0, 1, 2]
82
83       linux,can-disable:
84         description:
85           Indicates that button is connected to dedicated (not shared) interrupt
86           which can be disabled to suppress events from the button.
87         type: boolean
88
89     required:
90       - linux,code
91
92     anyOf:
93       - required:
94           - interrupts
95       - required:
96           - interrupts-extended
97       - required:
98           - gpios
99
100     dependencies:
101       wakeup-event-action: [ wakeup-source ]
102       linux,input-value: [ gpios ]
103
104     unevaluatedProperties: false
105
106 allOf:
107   - $ref: input.yaml#
108   - if:
109       properties:
110         compatible:
111           const: gpio-keys-polled
112     then:
113       required:
114         - poll-interval
115     else:
116       properties:
117         poll-interval: false
118
119 additionalProperties: false
120
121 examples:
122   - |
123     #include <dt-bindings/interrupt-controller/irq.h>
124
125     gpio-keys {
126         compatible = "gpio-keys";
127         autorepeat;
128
129         key-up {
130             label = "GPIO Key UP";
131             linux,code = <103>;
132             gpios = <&gpio1 0 1>;
133         };
134
135         key-down {
136             label = "GPIO Key DOWN";
137             linux,code = <108>;
138             interrupts = <1 IRQ_TYPE_EDGE_FALLING>;
139         };
140     };
141
142 ...