linux/Documentation/devicetree/bindings/input/gpio-keys.yaml
<<
>>
Prefs
   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: 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:
  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
 112if:
 113  properties:
 114    compatible:
 115      const: gpio-keys-polled
 116then:
 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
 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...
 150