xref: /openbmc/linux/Documentation/devicetree/bindings/input/gpio-keys.yaml (revision 7ae9fb1b7ecbb5d85d07857943f677fd1a559b18)
1fbfb9a60SRob Herring# SPDX-License-Identifier: GPL-2.0-only
2fbfb9a60SRob Herring%YAML 1.2
3fbfb9a60SRob Herring---
4fbfb9a60SRob Herring$id: http://devicetree.org/schemas/input/gpio-keys.yaml#
5fbfb9a60SRob Herring$schema: http://devicetree.org/meta-schemas/core.yaml#
6fbfb9a60SRob Herring
7*9d69d47fSKrzysztof Kozlowskititle: GPIO attached keys
8fbfb9a60SRob Herring
9fbfb9a60SRob Herringmaintainers:
10fbfb9a60SRob Herring  - Rob Herring <robh@kernel.org>
11fbfb9a60SRob Herring
12fbfb9a60SRob Herringproperties:
13fbfb9a60SRob Herring  compatible:
14fbfb9a60SRob Herring    enum:
15fbfb9a60SRob Herring      - gpio-keys
16fbfb9a60SRob Herring      - gpio-keys-polled
17fbfb9a60SRob Herring
18005d4674SKrzysztof Kozlowski  autorepeat: true
19005d4674SKrzysztof Kozlowski
20005d4674SKrzysztof Kozlowski  label:
21005d4674SKrzysztof Kozlowski    description: Name of entire device
22005d4674SKrzysztof Kozlowski
23005d4674SKrzysztof Kozlowski  poll-interval: true
24005d4674SKrzysztof Kozlowski
25fbfb9a60SRob HerringpatternProperties:
265eb56522SKrzysztof Kozlowski  "^(button|event|key|switch|(button|event|key|switch)-[a-z0-9-]+|[a-z0-9-]+-(button|event|key|switch))$":
273d21a460SRob Herring    $ref: input.yaml#
28fbfb9a60SRob Herring
29fbfb9a60SRob Herring    properties:
30fbfb9a60SRob Herring      gpios:
31fbfb9a60SRob Herring        maxItems: 1
32fbfb9a60SRob Herring
33fbfb9a60SRob Herring      interrupts:
34fbfb9a60SRob Herring        maxItems: 1
35fbfb9a60SRob Herring
36fbfb9a60SRob Herring      label:
37fbfb9a60SRob Herring        description: Descriptive name of the key.
38fbfb9a60SRob Herring
39fbfb9a60SRob Herring      linux,code:
40fbfb9a60SRob Herring        description: Key / Axis code to emit.
41fbfb9a60SRob Herring
42fbfb9a60SRob Herring      linux,input-type:
4375448ff7SRob Herring        default: 1  # EV_KEY
44fbfb9a60SRob Herring
45fbfb9a60SRob Herring      linux,input-value:
46fbfb9a60SRob Herring        description: |
47fbfb9a60SRob Herring          If linux,input-type is EV_ABS or EV_REL then this
48fbfb9a60SRob Herring          value is sent for events this button generates when pressed.
49fbfb9a60SRob Herring          EV_ABS/EV_REL axis will generate an event with a value of 0
50fbfb9a60SRob Herring          when all buttons with linux,input-type == type and
51fbfb9a60SRob Herring          linux,code == axis are released. This value is interpreted
52fbfb9a60SRob Herring          as a signed 32 bit value, e.g. to make a button generate a
53fbfb9a60SRob Herring          value of -1 use:
54fbfb9a60SRob Herring
55fbfb9a60SRob Herring          linux,input-value = <0xffffffff>; /* -1 */
56fbfb9a60SRob Herring
57d69c6dddSRob Herring        $ref: /schemas/types.yaml#/definitions/uint32
58fbfb9a60SRob Herring
59fbfb9a60SRob Herring      debounce-interval:
60fbfb9a60SRob Herring        description:
61fbfb9a60SRob Herring          Debouncing interval time in milliseconds. If not specified defaults to 5.
62d69c6dddSRob Herring        $ref: /schemas/types.yaml#/definitions/uint32
633d21a460SRob Herring
64fbfb9a60SRob Herring        default: 5
65fbfb9a60SRob Herring
66fbfb9a60SRob Herring      wakeup-source:
67fbfb9a60SRob Herring        description: Button can wake-up the system.
68fbfb9a60SRob Herring
69fbfb9a60SRob Herring      wakeup-event-action:
70fbfb9a60SRob Herring        description: |
71fbfb9a60SRob Herring          Specifies whether the key should wake the system when asserted, when
72fbfb9a60SRob Herring          deasserted, or both. This property is only valid for keys that wake up the
73fbfb9a60SRob Herring          system (e.g., when the "wakeup-source" property is also provided).
74fbfb9a60SRob Herring
75fbfb9a60SRob Herring          Supported values are defined in linux-event-codes.h:
76fbfb9a60SRob Herring
77fbfb9a60SRob Herring            EV_ACT_ANY        - both asserted and deasserted
78fbfb9a60SRob Herring            EV_ACT_ASSERTED   - asserted
79fbfb9a60SRob Herring            EV_ACT_DEASSERTED - deasserted
80d69c6dddSRob Herring        $ref: /schemas/types.yaml#/definitions/uint32
81fbfb9a60SRob Herring        enum: [0, 1, 2]
82fbfb9a60SRob Herring
83fbfb9a60SRob Herring      linux,can-disable:
84fbfb9a60SRob Herring        description:
85fbfb9a60SRob Herring          Indicates that button is connected to dedicated (not shared) interrupt
86fbfb9a60SRob Herring          which can be disabled to suppress events from the button.
87fbfb9a60SRob Herring        type: boolean
88fbfb9a60SRob Herring
89fbfb9a60SRob Herring    required:
90fbfb9a60SRob Herring      - linux,code
91fbfb9a60SRob Herring
92fbfb9a60SRob Herring    anyOf:
93fbfb9a60SRob Herring      - required:
94fbfb9a60SRob Herring          - interrupts
95fbfb9a60SRob Herring      - required:
9642d3f278SKrzysztof Kozlowski          - interrupts-extended
9742d3f278SKrzysztof Kozlowski      - required:
98fbfb9a60SRob Herring          - gpios
99fbfb9a60SRob Herring
100fbfb9a60SRob Herring    dependencies:
101fbfb9a60SRob Herring      wakeup-event-action: [ wakeup-source ]
102fbfb9a60SRob Herring      linux,input-value: [ gpios ]
103fbfb9a60SRob Herring
104fbfb9a60SRob Herring    unevaluatedProperties: false
105fbfb9a60SRob Herring
106005d4674SKrzysztof KozlowskiallOf:
107005d4674SKrzysztof Kozlowski  - $ref: input.yaml#
108005d4674SKrzysztof Kozlowski  - if:
109fbfb9a60SRob Herring      properties:
110fbfb9a60SRob Herring        compatible:
111fbfb9a60SRob Herring          const: gpio-keys-polled
112fbfb9a60SRob Herring    then:
113fbfb9a60SRob Herring      required:
114fbfb9a60SRob Herring        - poll-interval
115005d4674SKrzysztof Kozlowski    else:
116005d4674SKrzysztof Kozlowski      properties:
117005d4674SKrzysztof Kozlowski        poll-interval: false
118fbfb9a60SRob Herring
119fbfb9a60SRob HerringadditionalProperties: false
120fbfb9a60SRob Herring
121fbfb9a60SRob Herringexamples:
122fbfb9a60SRob Herring  - |
123fbfb9a60SRob Herring    #include <dt-bindings/interrupt-controller/irq.h>
124fbfb9a60SRob Herring
125fbfb9a60SRob Herring    gpio-keys {
126fbfb9a60SRob Herring        compatible = "gpio-keys";
127fbfb9a60SRob Herring        autorepeat;
128fbfb9a60SRob Herring
1294fda8a2dSKrzysztof Kozlowski        key-up {
130fbfb9a60SRob Herring            label = "GPIO Key UP";
131fbfb9a60SRob Herring            linux,code = <103>;
132fbfb9a60SRob Herring            gpios = <&gpio1 0 1>;
133fbfb9a60SRob Herring        };
134fbfb9a60SRob Herring
1354fda8a2dSKrzysztof Kozlowski        key-down {
136fbfb9a60SRob Herring            label = "GPIO Key DOWN";
137fbfb9a60SRob Herring            linux,code = <108>;
138c4cb38b5SGeert Uytterhoeven            interrupts = <1 IRQ_TYPE_EDGE_FALLING>;
139fbfb9a60SRob Herring        };
140fbfb9a60SRob Herring    };
141fbfb9a60SRob Herring
142fbfb9a60SRob Herring...
143