| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- # SPDX-License-Identifier: GPL-2.0-only
- %YAML 1.2
- ---
- $id: http://devicetree.org/schemas/input/gpio-keys.yaml#
- $schema: http://devicetree.org/meta-schemas/core.yaml#
- title: GPIO attached keys
- maintainers:
- - Rob Herring <robh@kernel.org>
- properties:
- compatible:
- enum:
- - gpio-keys
- - gpio-keys-polled
- autorepeat: true
- label:
- description: Name of entire device
- poll-interval: true
- patternProperties:
- "^(button|event|key|switch|(button|event|key|switch)-[a-z0-9-]+|[a-z0-9-]+-(button|event|key|switch))$":
- $ref: input.yaml#
- properties:
- gpios:
- maxItems: 1
- interrupts:
- oneOf:
- - items:
- - description: Optional key interrupt or wakeup interrupt
- - items:
- - description: Key interrupt
- - description: Wakeup interrupt
- interrupt-names:
- description:
- Optional interrupt names, can be used to specify a separate dedicated
- wake-up interrupt in addition to the gpio irq
- oneOf:
- - items:
- - enum: [ irq, wakeup ]
- - items:
- - const: irq
- - const: wakeup
- label:
- description: Descriptive name of the key.
- linux,code:
- description: Key / Axis code to emit.
- linux,input-type:
- default: 1 # EV_KEY
- linux,input-value:
- description: |
- If linux,input-type is EV_ABS or EV_REL then this
- value is sent for events this button generates when pressed.
- EV_ABS/EV_REL axis will generate an event with a value of 0
- when all buttons with linux,input-type == type and
- linux,code == axis are released. This value is interpreted
- as a signed 32 bit value, e.g. to make a button generate a
- value of -1 use:
- linux,input-value = <0xffffffff>; /* -1 */
- $ref: /schemas/types.yaml#/definitions/uint32
- debounce-interval:
- description:
- Debouncing interval time in milliseconds. If not specified defaults to 5.
- $ref: /schemas/types.yaml#/definitions/uint32
- default: 5
- wakeup-source:
- description: Button can wake-up the system.
- wakeup-event-action:
- description: |
- Specifies whether the key should wake the system when asserted, when
- deasserted, or both. This property is only valid for keys that wake up the
- system (e.g., when the "wakeup-source" property is also provided).
- Supported values are defined in linux-event-codes.h:
- EV_ACT_ANY - both asserted and deasserted
- EV_ACT_ASSERTED - asserted
- EV_ACT_DEASSERTED - deasserted
- $ref: /schemas/types.yaml#/definitions/uint32
- enum: [0, 1, 2]
- linux,can-disable:
- description:
- Indicates that button is connected to dedicated (not shared) interrupt
- which can be disabled to suppress events from the button.
- type: boolean
- required:
- - linux,code
- anyOf:
- - required:
- - interrupts
- - required:
- - interrupts-extended
- - required:
- - gpios
- allOf:
- - if:
- properties:
- interrupts:
- minItems: 2
- required:
- - interrupts
- then:
- properties:
- interrupt-names:
- minItems: 2
- required:
- - interrupt-names
- dependencies:
- wakeup-event-action: [ wakeup-source ]
- linux,input-value: [ gpios ]
- unevaluatedProperties: false
- allOf:
- - $ref: input.yaml#
- - if:
- properties:
- compatible:
- const: gpio-keys-polled
- then:
- required:
- - poll-interval
- else:
- properties:
- poll-interval: false
- additionalProperties: false
- examples:
- - |
- #include <dt-bindings/interrupt-controller/irq.h>
- gpio-keys {
- compatible = "gpio-keys";
- autorepeat;
- key-up {
- label = "GPIO Key UP";
- linux,code = <103>;
- gpios = <&gpio1 0 1>;
- };
- key-down {
- label = "GPIO Key DOWN";
- linux,code = <108>;
- interrupts = <1 IRQ_TYPE_EDGE_FALLING>;
- };
- key-wakeup {
- label = "GPIO Key WAKEUP";
- linux,code = <143>;
- interrupts-extended = <&intc 2 IRQ_TYPE_EDGE_FALLING>,
- <&intc_wakeup 0 IRQ_TYPE_LEVEL_HIGH>;
- interrupt-names = "irq", "wakeup";
- wakeup-source;
- };
- };
- ...
|