# 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 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 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; }; }; ...