1fbfb9a60SRob Herring# SPDX-License-Identifier: GPL-2.0-only 2fbfb9a60SRob Herring%YAML 1.2 3fbfb9a60SRob Herring--- 4fbfb9a60SRob Herring$id: http://devicetree.org/schemas/input/gpio-keys.yaml# 5fbfb9a60SRob Herring$schema: http://devicetree.org/meta-schemas/core.yaml# 6fbfb9a60SRob Herring 79d69d47fSKrzysztof Kozlowskititle: GPIO attached keys 8fbfb9a60SRob Herring 9fbfb9a60SRob Herringmaintainers: 10fbfb9a60SRob Herring - Rob Herring <robh@kernel.org> 11fbfb9a60SRob Herring 12fbfb9a60SRob Herringproperties: 13fbfb9a60SRob Herring compatible: 14fbfb9a60SRob Herring enum: 15fbfb9a60SRob Herring - gpio-keys 16fbfb9a60SRob Herring - gpio-keys-polled 17fbfb9a60SRob Herring 18005d4674SKrzysztof Kozlowski autorepeat: true 19005d4674SKrzysztof Kozlowski 20005d4674SKrzysztof Kozlowski label: 21005d4674SKrzysztof Kozlowski description: Name of entire device 22005d4674SKrzysztof Kozlowski 23005d4674SKrzysztof Kozlowski poll-interval: true 24005d4674SKrzysztof Kozlowski 25fbfb9a60SRob HerringpatternProperties: 265eb56522SKrzysztof Kozlowski "^(button|event|key|switch|(button|event|key|switch)-[a-z0-9-]+|[a-z0-9-]+-(button|event|key|switch))$": 273d21a460SRob Herring $ref: input.yaml# 28fbfb9a60SRob Herring 29fbfb9a60SRob Herring properties: 30fbfb9a60SRob Herring gpios: 31fbfb9a60SRob Herring maxItems: 1 32fbfb9a60SRob Herring 33fbfb9a60SRob Herring interrupts: 34*d2ff98b7STony Lindgren oneOf: 35*d2ff98b7STony Lindgren - items: 36*d2ff98b7STony Lindgren - description: Optional key interrupt or wakeup interrupt 37*d2ff98b7STony Lindgren - items: 38*d2ff98b7STony Lindgren - description: Key interrupt 39*d2ff98b7STony Lindgren - description: Wakeup interrupt 40*d2ff98b7STony Lindgren 41*d2ff98b7STony Lindgren interrupt-names: 42*d2ff98b7STony Lindgren description: 43*d2ff98b7STony Lindgren Optional interrupt names, can be used to specify a separate dedicated 44*d2ff98b7STony Lindgren wake-up interrupt in addition to the gpio irq 45*d2ff98b7STony Lindgren oneOf: 46*d2ff98b7STony Lindgren - items: 47*d2ff98b7STony Lindgren - enum: [ irq, wakeup ] 48*d2ff98b7STony Lindgren - items: 49*d2ff98b7STony Lindgren - const: irq 50*d2ff98b7STony Lindgren - const: wakeup 51fbfb9a60SRob Herring 52fbfb9a60SRob Herring label: 53fbfb9a60SRob Herring description: Descriptive name of the key. 54fbfb9a60SRob Herring 55fbfb9a60SRob Herring linux,code: 56fbfb9a60SRob Herring description: Key / Axis code to emit. 57fbfb9a60SRob Herring 58fbfb9a60SRob Herring linux,input-type: 5975448ff7SRob Herring default: 1 # EV_KEY 60fbfb9a60SRob Herring 61fbfb9a60SRob Herring linux,input-value: 62fbfb9a60SRob Herring description: | 63fbfb9a60SRob Herring If linux,input-type is EV_ABS or EV_REL then this 64fbfb9a60SRob Herring value is sent for events this button generates when pressed. 65fbfb9a60SRob Herring EV_ABS/EV_REL axis will generate an event with a value of 0 66fbfb9a60SRob Herring when all buttons with linux,input-type == type and 67fbfb9a60SRob Herring linux,code == axis are released. This value is interpreted 68fbfb9a60SRob Herring as a signed 32 bit value, e.g. to make a button generate a 69fbfb9a60SRob Herring value of -1 use: 70fbfb9a60SRob Herring 71fbfb9a60SRob Herring linux,input-value = <0xffffffff>; /* -1 */ 72fbfb9a60SRob Herring 73d69c6dddSRob Herring $ref: /schemas/types.yaml#/definitions/uint32 74fbfb9a60SRob Herring 75fbfb9a60SRob Herring debounce-interval: 76fbfb9a60SRob Herring description: 77fbfb9a60SRob Herring Debouncing interval time in milliseconds. If not specified defaults to 5. 78d69c6dddSRob Herring $ref: /schemas/types.yaml#/definitions/uint32 793d21a460SRob Herring 80fbfb9a60SRob Herring default: 5 81fbfb9a60SRob Herring 82fbfb9a60SRob Herring wakeup-source: 83fbfb9a60SRob Herring description: Button can wake-up the system. 84fbfb9a60SRob Herring 85fbfb9a60SRob Herring wakeup-event-action: 86fbfb9a60SRob Herring description: | 87fbfb9a60SRob Herring Specifies whether the key should wake the system when asserted, when 88fbfb9a60SRob Herring deasserted, or both. This property is only valid for keys that wake up the 89fbfb9a60SRob Herring system (e.g., when the "wakeup-source" property is also provided). 90fbfb9a60SRob Herring 91fbfb9a60SRob Herring Supported values are defined in linux-event-codes.h: 92fbfb9a60SRob Herring 93fbfb9a60SRob Herring EV_ACT_ANY - both asserted and deasserted 94fbfb9a60SRob Herring EV_ACT_ASSERTED - asserted 95fbfb9a60SRob Herring EV_ACT_DEASSERTED - deasserted 96d69c6dddSRob Herring $ref: /schemas/types.yaml#/definitions/uint32 97fbfb9a60SRob Herring enum: [0, 1, 2] 98fbfb9a60SRob Herring 99fbfb9a60SRob Herring linux,can-disable: 100fbfb9a60SRob Herring description: 101fbfb9a60SRob Herring Indicates that button is connected to dedicated (not shared) interrupt 102fbfb9a60SRob Herring which can be disabled to suppress events from the button. 103fbfb9a60SRob Herring type: boolean 104fbfb9a60SRob Herring 105fbfb9a60SRob Herring required: 106fbfb9a60SRob Herring - linux,code 107fbfb9a60SRob Herring 108fbfb9a60SRob Herring anyOf: 109fbfb9a60SRob Herring - required: 110fbfb9a60SRob Herring - interrupts 111fbfb9a60SRob Herring - required: 11242d3f278SKrzysztof Kozlowski - interrupts-extended 11342d3f278SKrzysztof Kozlowski - required: 114fbfb9a60SRob Herring - gpios 115fbfb9a60SRob Herring 116*d2ff98b7STony Lindgren allOf: 117*d2ff98b7STony Lindgren - if: 118*d2ff98b7STony Lindgren properties: 119*d2ff98b7STony Lindgren interrupts: 120*d2ff98b7STony Lindgren minItems: 2 121*d2ff98b7STony Lindgren required: 122*d2ff98b7STony Lindgren - interrupts 123*d2ff98b7STony Lindgren then: 124*d2ff98b7STony Lindgren properties: 125*d2ff98b7STony Lindgren interrupt-names: 126*d2ff98b7STony Lindgren minItems: 2 127*d2ff98b7STony Lindgren required: 128*d2ff98b7STony Lindgren - interrupt-names 129*d2ff98b7STony Lindgren 130fbfb9a60SRob Herring dependencies: 131fbfb9a60SRob Herring wakeup-event-action: [ wakeup-source ] 132fbfb9a60SRob Herring linux,input-value: [ gpios ] 133fbfb9a60SRob Herring 134fbfb9a60SRob Herring unevaluatedProperties: false 135fbfb9a60SRob Herring 136005d4674SKrzysztof KozlowskiallOf: 137005d4674SKrzysztof Kozlowski - $ref: input.yaml# 138005d4674SKrzysztof Kozlowski - if: 139fbfb9a60SRob Herring properties: 140fbfb9a60SRob Herring compatible: 141fbfb9a60SRob Herring const: gpio-keys-polled 142fbfb9a60SRob Herring then: 143fbfb9a60SRob Herring required: 144fbfb9a60SRob Herring - poll-interval 145005d4674SKrzysztof Kozlowski else: 146005d4674SKrzysztof Kozlowski properties: 147005d4674SKrzysztof Kozlowski poll-interval: false 148fbfb9a60SRob Herring 149fbfb9a60SRob HerringadditionalProperties: false 150fbfb9a60SRob Herring 151fbfb9a60SRob Herringexamples: 152fbfb9a60SRob Herring - | 153fbfb9a60SRob Herring #include <dt-bindings/interrupt-controller/irq.h> 154fbfb9a60SRob Herring 155fbfb9a60SRob Herring gpio-keys { 156fbfb9a60SRob Herring compatible = "gpio-keys"; 157fbfb9a60SRob Herring autorepeat; 158fbfb9a60SRob Herring 1594fda8a2dSKrzysztof Kozlowski key-up { 160fbfb9a60SRob Herring label = "GPIO Key UP"; 161fbfb9a60SRob Herring linux,code = <103>; 162fbfb9a60SRob Herring gpios = <&gpio1 0 1>; 163fbfb9a60SRob Herring }; 164fbfb9a60SRob Herring 1654fda8a2dSKrzysztof Kozlowski key-down { 166fbfb9a60SRob Herring label = "GPIO Key DOWN"; 167fbfb9a60SRob Herring linux,code = <108>; 168c4cb38b5SGeert Uytterhoeven interrupts = <1 IRQ_TYPE_EDGE_FALLING>; 169fbfb9a60SRob Herring }; 170*d2ff98b7STony Lindgren 171*d2ff98b7STony Lindgren key-wakeup { 172*d2ff98b7STony Lindgren label = "GPIO Key WAKEUP"; 173*d2ff98b7STony Lindgren linux,code = <143>; 174*d2ff98b7STony Lindgren interrupts-extended = <&intc 2 IRQ_TYPE_EDGE_FALLING>, 175*d2ff98b7STony Lindgren <&intc_wakeup 0 IRQ_TYPE_LEVEL_HIGH>; 176*d2ff98b7STony Lindgren interrupt-names = "irq", "wakeup"; 177*d2ff98b7STony Lindgren wakeup-source; 178*d2ff98b7STony Lindgren }; 179fbfb9a60SRob Herring }; 180fbfb9a60SRob Herring 181fbfb9a60SRob Herring... 182