Merge tag 'Smack-for-5.11-io_uring-fix' of git://github.com/cschaufler/smack-next
[linux-2.6-microblaze.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 patternProperties:
19   ".*":
20     if:
21       type: object
22     then:
23       $ref: input.yaml#
24
25       properties:
26         gpios:
27           maxItems: 1
28
29         interrupts:
30           maxItems: 1
31
32         label:
33           description: Descriptive name of the key.
34
35         linux,code:
36           description: Key / Axis code to emit.
37           $ref: /schemas/types.yaml#/definitions/uint32
38
39         linux,input-type:
40           description:
41             Specify event type this button/key generates. If not specified defaults to
42             <1> == EV_KEY.
43           $ref: /schemas/types.yaml#/definitions/uint32
44
45           default: 1
46
47         linux,input-value:
48           description: |
49             If linux,input-type is EV_ABS or EV_REL then this
50             value is sent for events this button generates when pressed.
51             EV_ABS/EV_REL axis will generate an event with a value of 0
52             when all buttons with linux,input-type == type and
53             linux,code == axis are released. This value is interpreted
54             as a signed 32 bit value, e.g. to make a button generate a
55             value of -1 use:
56
57             linux,input-value = <0xffffffff>; /* -1 */
58
59           $ref: /schemas/types.yaml#/definitions/uint32
60
61         debounce-interval:
62           description:
63             Debouncing interval time in milliseconds. If not specified defaults to 5.
64           $ref: /schemas/types.yaml#/definitions/uint32
65
66           default: 5
67
68         wakeup-source:
69           description: Button can wake-up the system.
70
71         wakeup-event-action:
72           description: |
73             Specifies whether the key should wake the system when asserted, when
74             deasserted, or both. This property is only valid for keys that wake up the
75             system (e.g., when the "wakeup-source" property is also provided).
76
77             Supported values are defined in linux-event-codes.h:
78
79               EV_ACT_ANY        - both asserted and deasserted
80               EV_ACT_ASSERTED   - asserted
81               EV_ACT_DEASSERTED - deasserted
82           $ref: /schemas/types.yaml#/definitions/uint32
83           enum: [0, 1, 2]
84
85         linux,can-disable:
86           description:
87             Indicates that button is connected to dedicated (not shared) interrupt
88             which can be disabled to suppress events from the button.
89           type: boolean
90
91         pinctrl-0:
92           maxItems: 1
93
94         pinctrl-names:
95           maxItems: 1
96
97       required:
98         - linux,code
99
100       anyOf:
101         - required:
102             - interrupts
103         - required:
104             - gpios
105
106       dependencies:
107         wakeup-event-action: [ wakeup-source ]
108         linux,input-value: [ gpios ]
109
110       unevaluatedProperties: false
111
112 if:
113   properties:
114     compatible:
115       const: gpio-keys-polled
116 then:
117   properties:
118     poll-interval:
119       description:
120         Poll interval time in milliseconds
121       $ref: /schemas/types.yaml#/definitions/uint32
122
123   required:
124     - poll-interval
125
126 additionalProperties: false
127
128 examples:
129   - |
130     #include <dt-bindings/interrupt-controller/irq.h>
131
132     gpio-keys {
133         compatible = "gpio-keys";
134         autorepeat;
135
136         up {
137             label = "GPIO Key UP";
138             linux,code = <103>;
139             gpios = <&gpio1 0 1>;
140         };
141
142         down {
143             label = "GPIO Key DOWN";
144             linux,code = <108>;
145             interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>;
146         };
147     };
148
149 ...