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,mt6357-keys
30      - mediatek,mt6358-keys
31      - mediatek,mt6397-keys
32
33  power-off-time-sec: true
34
35  mediatek,long-press-mode:
36    description: |
37      Key long-press force shutdown setting
38      0 - disabled
39      1 - pwrkey
40      2 - pwrkey+homekey
41    $ref: /schemas/types.yaml#/definitions/uint32
42    default: 0
43    maximum: 2
44
45patternProperties:
46  "^((power|home)|(key-[a-z0-9-]+|[a-z0-9-]+-key))$":
47    $ref: input.yaml#
48
49    properties:
50      interrupts:
51        minItems: 1
52        items:
53          - description: Key press interrupt
54          - description: Key release interrupt
55
56      interrupt-names: true
57
58      linux,keycodes:
59        maxItems: 1
60
61      wakeup-source: true
62
63    required:
64      - linux,keycodes
65
66    if:
67      properties:
68        interrupt-names:
69          contains:
70            const: powerkey
71    then:
72      properties:
73        interrupt-names:
74          minItems: 1
75          items:
76            - const: powerkey
77            - const: powerkey_r
78    else:
79      properties:
80        interrupt-names:
81          minItems: 1
82          items:
83            - const: homekey
84            - const: homekey_r
85
86    unevaluatedProperties: false
87
88required:
89  - compatible
90
91unevaluatedProperties: false
92
93examples:
94  - |
95    #include <dt-bindings/input/input.h>
96    #include <dt-bindings/interrupt-controller/arm-gic.h>
97
98    pmic {
99        compatible = "mediatek,mt6397";
100
101        keys {
102          compatible = "mediatek,mt6397-keys";
103          mediatek,long-press-mode = <1>;
104          power-off-time-sec = <0>;
105
106          key-power {
107            linux,keycodes = <KEY_POWER>;
108            wakeup-source;
109          };
110
111          key-home {
112            linux,keycodes = <KEY_VOLUMEDOWN>;
113          };
114        };
115    };
116