1*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0-only 2*4882a593Smuzhiyun%YAML 1.2 3*4882a593Smuzhiyun--- 4*4882a593Smuzhiyun$id: http://devicetree.org/schemas/input/gpio-keys.yaml# 5*4882a593Smuzhiyun$schema: http://devicetree.org/meta-schemas/core.yaml# 6*4882a593Smuzhiyun 7*4882a593Smuzhiyuntitle: Device-Tree bindings for GPIO attached keys 8*4882a593Smuzhiyun 9*4882a593Smuzhiyunmaintainers: 10*4882a593Smuzhiyun - Rob Herring <robh@kernel.org> 11*4882a593Smuzhiyun 12*4882a593Smuzhiyunproperties: 13*4882a593Smuzhiyun compatible: 14*4882a593Smuzhiyun enum: 15*4882a593Smuzhiyun - gpio-keys 16*4882a593Smuzhiyun - gpio-keys-polled 17*4882a593Smuzhiyun 18*4882a593SmuzhiyunpatternProperties: 19*4882a593Smuzhiyun ".*": 20*4882a593Smuzhiyun if: 21*4882a593Smuzhiyun type: object 22*4882a593Smuzhiyun then: 23*4882a593Smuzhiyun $ref: input.yaml# 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun properties: 26*4882a593Smuzhiyun gpios: 27*4882a593Smuzhiyun maxItems: 1 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun interrupts: 30*4882a593Smuzhiyun maxItems: 1 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun label: 33*4882a593Smuzhiyun description: Descriptive name of the key. 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun linux,code: 36*4882a593Smuzhiyun description: Key / Axis code to emit. 37*4882a593Smuzhiyun $ref: /schemas/types.yaml#definitions/uint32 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun linux,input-type: 40*4882a593Smuzhiyun description: 41*4882a593Smuzhiyun Specify event type this button/key generates. If not specified defaults to 42*4882a593Smuzhiyun <1> == EV_KEY. 43*4882a593Smuzhiyun $ref: /schemas/types.yaml#definitions/uint32 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun default: 1 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun linux,input-value: 48*4882a593Smuzhiyun description: | 49*4882a593Smuzhiyun If linux,input-type is EV_ABS or EV_REL then this 50*4882a593Smuzhiyun value is sent for events this button generates when pressed. 51*4882a593Smuzhiyun EV_ABS/EV_REL axis will generate an event with a value of 0 52*4882a593Smuzhiyun when all buttons with linux,input-type == type and 53*4882a593Smuzhiyun linux,code == axis are released. This value is interpreted 54*4882a593Smuzhiyun as a signed 32 bit value, e.g. to make a button generate a 55*4882a593Smuzhiyun value of -1 use: 56*4882a593Smuzhiyun 57*4882a593Smuzhiyun linux,input-value = <0xffffffff>; /* -1 */ 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun $ref: /schemas/types.yaml#definitions/uint32 60*4882a593Smuzhiyun 61*4882a593Smuzhiyun debounce-interval: 62*4882a593Smuzhiyun description: 63*4882a593Smuzhiyun Debouncing interval time in milliseconds. If not specified defaults to 5. 64*4882a593Smuzhiyun $ref: /schemas/types.yaml#definitions/uint32 65*4882a593Smuzhiyun 66*4882a593Smuzhiyun default: 5 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun wakeup-source: 69*4882a593Smuzhiyun description: Button can wake-up the system. 70*4882a593Smuzhiyun 71*4882a593Smuzhiyun wakeup-event-action: 72*4882a593Smuzhiyun description: | 73*4882a593Smuzhiyun Specifies whether the key should wake the system when asserted, when 74*4882a593Smuzhiyun deasserted, or both. This property is only valid for keys that wake up the 75*4882a593Smuzhiyun system (e.g., when the "wakeup-source" property is also provided). 76*4882a593Smuzhiyun 77*4882a593Smuzhiyun Supported values are defined in linux-event-codes.h: 78*4882a593Smuzhiyun 79*4882a593Smuzhiyun EV_ACT_ANY - both asserted and deasserted 80*4882a593Smuzhiyun EV_ACT_ASSERTED - asserted 81*4882a593Smuzhiyun EV_ACT_DEASSERTED - deasserted 82*4882a593Smuzhiyun $ref: /schemas/types.yaml#definitions/uint32 83*4882a593Smuzhiyun enum: [0, 1, 2] 84*4882a593Smuzhiyun 85*4882a593Smuzhiyun linux,can-disable: 86*4882a593Smuzhiyun description: 87*4882a593Smuzhiyun Indicates that button is connected to dedicated (not shared) interrupt 88*4882a593Smuzhiyun which can be disabled to suppress events from the button. 89*4882a593Smuzhiyun type: boolean 90*4882a593Smuzhiyun 91*4882a593Smuzhiyun pinctrl-0: 92*4882a593Smuzhiyun maxItems: 1 93*4882a593Smuzhiyun 94*4882a593Smuzhiyun pinctrl-names: 95*4882a593Smuzhiyun maxItems: 1 96*4882a593Smuzhiyun 97*4882a593Smuzhiyun required: 98*4882a593Smuzhiyun - linux,code 99*4882a593Smuzhiyun 100*4882a593Smuzhiyun anyOf: 101*4882a593Smuzhiyun - required: 102*4882a593Smuzhiyun - interrupts 103*4882a593Smuzhiyun - required: 104*4882a593Smuzhiyun - gpios 105*4882a593Smuzhiyun 106*4882a593Smuzhiyun dependencies: 107*4882a593Smuzhiyun wakeup-event-action: [ wakeup-source ] 108*4882a593Smuzhiyun linux,input-value: [ gpios ] 109*4882a593Smuzhiyun 110*4882a593Smuzhiyun unevaluatedProperties: false 111*4882a593Smuzhiyun 112*4882a593Smuzhiyunif: 113*4882a593Smuzhiyun properties: 114*4882a593Smuzhiyun compatible: 115*4882a593Smuzhiyun const: gpio-keys-polled 116*4882a593Smuzhiyunthen: 117*4882a593Smuzhiyun properties: 118*4882a593Smuzhiyun poll-interval: 119*4882a593Smuzhiyun description: 120*4882a593Smuzhiyun Poll interval time in milliseconds 121*4882a593Smuzhiyun $ref: /schemas/types.yaml#definitions/uint32 122*4882a593Smuzhiyun 123*4882a593Smuzhiyun required: 124*4882a593Smuzhiyun - poll-interval 125*4882a593Smuzhiyun 126*4882a593SmuzhiyunadditionalProperties: false 127*4882a593Smuzhiyun 128*4882a593Smuzhiyunexamples: 129*4882a593Smuzhiyun - | 130*4882a593Smuzhiyun #include <dt-bindings/interrupt-controller/irq.h> 131*4882a593Smuzhiyun 132*4882a593Smuzhiyun gpio-keys { 133*4882a593Smuzhiyun compatible = "gpio-keys"; 134*4882a593Smuzhiyun autorepeat; 135*4882a593Smuzhiyun 136*4882a593Smuzhiyun up { 137*4882a593Smuzhiyun label = "GPIO Key UP"; 138*4882a593Smuzhiyun linux,code = <103>; 139*4882a593Smuzhiyun gpios = <&gpio1 0 1>; 140*4882a593Smuzhiyun }; 141*4882a593Smuzhiyun 142*4882a593Smuzhiyun down { 143*4882a593Smuzhiyun label = "GPIO Key DOWN"; 144*4882a593Smuzhiyun linux,code = <108>; 145*4882a593Smuzhiyun interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>; 146*4882a593Smuzhiyun }; 147*4882a593Smuzhiyun }; 148*4882a593Smuzhiyun 149*4882a593Smuzhiyun... 150