blob: 060a309ff8e7c757cddc59e083c00a8194db4868 [file] [log] [blame]
Rob Herringfbfb9a62019-11-19 08:16:58 -06001# 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
7title: Device-Tree bindings for GPIO attached keys
8
9maintainers:
10 - Rob Herring <robh@kernel.org>
11
12properties:
13 compatible:
14 enum:
15 - gpio-keys
16 - gpio-keys-polled
17
18patternProperties:
19 ".*":
20 if:
21 type: object
22 then:
Rob Herring3d21a462020-04-15 19:55:49 -050023 $ref: input.yaml#
Rob Herringfbfb9a62019-11-19 08:16:58 -060024
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.
Rob Herringd69c6dd2020-12-17 16:34:29 -060037 $ref: /schemas/types.yaml#/definitions/uint32
Rob Herringfbfb9a62019-11-19 08:16:58 -060038
39 linux,input-type:
40 description:
41 Specify event type this button/key generates. If not specified defaults to
42 <1> == EV_KEY.
Rob Herringd69c6dd2020-12-17 16:34:29 -060043 $ref: /schemas/types.yaml#/definitions/uint32
Rob Herring3d21a462020-04-15 19:55:49 -050044
Rob Herringfbfb9a62019-11-19 08:16:58 -060045 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
Rob Herringd69c6dd2020-12-17 16:34:29 -060059 $ref: /schemas/types.yaml#/definitions/uint32
Rob Herringfbfb9a62019-11-19 08:16:58 -060060
61 debounce-interval:
62 description:
63 Debouncing interval time in milliseconds. If not specified defaults to 5.
Rob Herringd69c6dd2020-12-17 16:34:29 -060064 $ref: /schemas/types.yaml#/definitions/uint32
Rob Herring3d21a462020-04-15 19:55:49 -050065
Rob Herringfbfb9a62019-11-19 08:16:58 -060066 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
Rob Herringd69c6dd2020-12-17 16:34:29 -060082 $ref: /schemas/types.yaml#/definitions/uint32
Rob Herring3d21a462020-04-15 19:55:49 -050083 enum: [0, 1, 2]
Rob Herringfbfb9a62019-11-19 08:16:58 -060084
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
112if:
113 properties:
114 compatible:
115 const: gpio-keys-polled
116then:
117 properties:
118 poll-interval:
119 description:
120 Poll interval time in milliseconds
Rob Herringd69c6dd2020-12-17 16:34:29 -0600121 $ref: /schemas/types.yaml#/definitions/uint32
Rob Herringfbfb9a62019-11-19 08:16:58 -0600122
123 required:
124 - poll-interval
125
126additionalProperties: false
127
128examples:
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...