File Index
Files and directories
Sign in
FILE

gpio-keys.yaml

File preview with syntax highlighting.

linux-6.19.14/Documentation/devicetree/bindings/input/gpio-keys.yaml 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
  7title: 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
 18  autorepeat: true
 19
 20  label:
 21    description: Name of entire device
 22
 23  poll-interval: true
 24
 25patternProperties:
 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        oneOf:
 35          - items:
 36              - description: Optional key interrupt or wakeup interrupt
 37          - items:
 38              - description: Key interrupt
 39              - description: Wakeup interrupt
 40
 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
 51
 52      label:
 53        description: Descriptive name of the key.
 54
 55      linux,code:
 56        description: Key / Axis code to emit.
 57
 58      linux,input-type:
 59        default: 1  # EV_KEY
 60
 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:
 70
 71          linux,input-value = <0xffffffff>; /* -1 */
 72
 73        $ref: /schemas/types.yaml#/definitions/uint32
 74
 75      debounce-interval:
 76        description:
 77          Debouncing interval time in milliseconds. If not specified defaults to 5.
 78        $ref: /schemas/types.yaml#/definitions/uint32
 79
 80        default: 5
 81
 82      wakeup-source:
 83        description: Button can wake-up the system.
 84
 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).
 90
 91          Supported values are defined in linux-event-codes.h:
 92
 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]
 98
 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
104
105    required:
106      - linux,code
107
108    anyOf:
109      - required:
110          - interrupts
111      - required:
112          - interrupts-extended
113      - required:
114          - gpios
115
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
129
130    dependencies:
131      wakeup-event-action: [ wakeup-source ]
132      linux,input-value: [ gpios ]
133
134    unevaluatedProperties: false
135
136allOf:
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
148
149additionalProperties: false
150
151examples:
152  - |
153    #include <dt-bindings/interrupt-controller/irq.h>
154
155    gpio-keys {
156        compatible = "gpio-keys";
157        autorepeat;
158
159        key-up {
160            label = "GPIO Key UP";
161            linux,code = <103>;
162            gpios = <&gpio1 0 1>;
163        };
164
165        key-down {
166            label = "GPIO Key DOWN";
167            linux,code = <108>;
168            interrupts = <1 IRQ_TYPE_EDGE_FALLING>;
169        };
170
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    };
180
181...
~/ Read-only file preview.