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