xref: /OK3568_Linux_fs/kernel/Documentation/devicetree/bindings/input/gpio-keys.yaml (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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