Merge tag 'block-6.13-20242901' of git://git.kernel.dk/linux
[drm/drm-misc.git] / Documentation / devicetree / bindings / input / gpio-keys.yaml
blobcc78c2152921308fe0cad3e29ca78a5fad08f066
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#
7 title: GPIO attached keys
9 maintainers:
10   - Rob Herring <robh@kernel.org>
12 properties:
13   compatible:
14     enum:
15       - gpio-keys
16       - gpio-keys-polled
18   autorepeat: true
20   label:
21     description: Name of entire device
23   poll-interval: true
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#
29     properties:
30       gpios:
31         maxItems: 1
33       interrupts:
34         oneOf:
35           - items:
36               - description: Optional key interrupt or wakeup interrupt
37           - items:
38               - description: Key interrupt
39               - description: Wakeup interrupt
41       interrupt-names:
42         description:
43           Optional interrupt names, can be used to specify a separate dedicated
44           wake-up interrupt in addition to the gpio irq
45         oneOf:
46           - items:
47               - enum: [ irq, wakeup ]
48           - items:
49               - const: irq
50               - const: wakeup
52       label:
53         description: Descriptive name of the key.
55       linux,code:
56         description: Key / Axis code to emit.
58       linux,input-type:
59         default: 1  # EV_KEY
61       linux,input-value:
62         description: |
63           If linux,input-type is EV_ABS or EV_REL then this
64           value is sent for events this button generates when pressed.
65           EV_ABS/EV_REL axis will generate an event with a value of 0
66           when all buttons with linux,input-type == type and
67           linux,code == axis are released. This value is interpreted
68           as a signed 32 bit value, e.g. to make a button generate a
69           value of -1 use:
71           linux,input-value = <0xffffffff>; /* -1 */
73         $ref: /schemas/types.yaml#/definitions/uint32
75       debounce-interval:
76         description:
77           Debouncing interval time in milliseconds. If not specified defaults to 5.
78         $ref: /schemas/types.yaml#/definitions/uint32
80         default: 5
82       wakeup-source:
83         description: Button can wake-up the system.
85       wakeup-event-action:
86         description: |
87           Specifies whether the key should wake the system when asserted, when
88           deasserted, or both. This property is only valid for keys that wake up the
89           system (e.g., when the "wakeup-source" property is also provided).
91           Supported values are defined in linux-event-codes.h:
93             EV_ACT_ANY        - both asserted and deasserted
94             EV_ACT_ASSERTED   - asserted
95             EV_ACT_DEASSERTED - deasserted
96         $ref: /schemas/types.yaml#/definitions/uint32
97         enum: [0, 1, 2]
99       linux,can-disable:
100         description:
101           Indicates that button is connected to dedicated (not shared) interrupt
102           which can be disabled to suppress events from the button.
103         type: boolean
105     required:
106       - linux,code
108     anyOf:
109       - required:
110           - interrupts
111       - required:
112           - interrupts-extended
113       - required:
114           - gpios
116     allOf:
117       - if:
118           properties:
119             interrupts:
120               minItems: 2
121           required:
122             - interrupts
123         then:
124           properties:
125             interrupt-names:
126               minItems: 2
127           required:
128             - interrupt-names
130     dependencies:
131       wakeup-event-action: [ wakeup-source ]
132       linux,input-value: [ gpios ]
134     unevaluatedProperties: false
136 allOf:
137   - $ref: input.yaml#
138   - if:
139       properties:
140         compatible:
141           const: gpio-keys-polled
142     then:
143       required:
144         - poll-interval
145     else:
146       properties:
147         poll-interval: false
149 additionalProperties: false
151 examples:
152   - |
153     #include <dt-bindings/interrupt-controller/irq.h>
155     gpio-keys {
156         compatible = "gpio-keys";
157         autorepeat;
159         key-up {
160             label = "GPIO Key UP";
161             linux,code = <103>;
162             gpios = <&gpio1 0 1>;
163         };
165         key-down {
166             label = "GPIO Key DOWN";
167             linux,code = <108>;
168             interrupts = <1 IRQ_TYPE_EDGE_FALLING>;
169         };
171         key-wakeup {
172             label = "GPIO Key WAKEUP";
173             linux,code = <143>;
174             interrupts-extended = <&intc 2 IRQ_TYPE_EDGE_FALLING>,
175                                   <&intc_wakeup 0 IRQ_TYPE_LEVEL_HIGH>;
176             interrupt-names = "irq", "wakeup";
177             wakeup-source;
178         };
179     };