1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/input/mediatek,pmic-keys.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: MediaTek PMIC Keys
8
9maintainers:
10  - Chen Zhong <chen.zhong@mediatek.com>
11
12allOf:
13  - $ref: input.yaml#
14
15description: |
16  There are two key functions provided by MT6397, MT6323 and other MediaTek
17  PMICs: pwrkey and homekey.
18  The key functions are defined as the subnode of the function node provided
19  by the PMIC that is defined as a Multi-Function Device (MFD).
20
21  For MediaTek MT6323/MT6397 PMIC bindings see
22  Documentation/devicetree/bindings/mfd/mt6397.txt
23
24properties:
25  compatible:
26    enum:
27      - mediatek,mt6323-keys
28      - mediatek,mt6331-keys
29      - mediatek,mt6358-keys
30      - mediatek,mt6397-keys
31
32  power-off-time-sec: true
33
34  mediatek,long-press-mode:
35    description: |
36      Key long-press force shutdown setting
37      0 - disabled
38      1 - pwrkey
39      2 - pwrkey+homekey
40    $ref: /schemas/types.yaml#/definitions/uint32
41    default: 0
42    maximum: 2
43
44patternProperties:
45  "^((power|home)|(key-[a-z0-9-]+|[a-z0-9-]+-key))$":
46    $ref: input.yaml#
47
48    properties:
49      interrupts:
50        minItems: 1
51        items:
52          - description: Key press interrupt
53          - description: Key release interrupt
54
55      interrupt-names: true
56
57      linux-keycodes:
58        maxItems: 1
59
60      wakeup-source: true
61
62    required:
63      - linux,keycodes
64
65    if:
66      properties:
67        interrupt-names:
68          contains:
69            const: powerkey
70    then:
71      properties:
72        interrupt-names:
73          minItems: 1
74          items:
75            - const: powerkey
76            - const: powerkey_r
77    else:
78      properties:
79        interrupt-names:
80          minItems: 1
81          items:
82            - const: homekey
83            - const: homekey_r
84
85    unevaluatedProperties: false
86
87required:
88  - compatible
89
90unevaluatedProperties: false
91
92examples:
93  - |
94    #include <dt-bindings/input/input.h>
95    #include <dt-bindings/interrupt-controller/arm-gic.h>
96
97    pmic {
98        compatible = "mediatek,mt6397";
99
100        keys {
101          compatible = "mediatek,mt6397-keys";
102          mediatek,long-press-mode = <1>;
103          power-off-time-sec = <0>;
104
105          key-power {
106            linux,keycodes = <KEY_POWER>;
107            wakeup-source;
108          };
109
110          key-home {
111            linux,keycodes = <KEY_VOLUMEDOWN>;
112          };
113        };
114    };
115