Linux 6.9-rc1
[linux-2.6-microblaze.git] / Documentation / devicetree / bindings / power / reset / qcom,pon.yaml
1 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/power/reset/qcom,pon.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: Qualcomm PON Device
8
9 maintainers:
10   - Vinod Koul <vkoul@kernel.org>
11
12 description: |
13   The Power On device for Qualcomm PM8xxx is MFD supporting pwrkey
14   and resin along with the Android reboot-mode.
15
16   This DT node has pwrkey and resin as sub nodes.
17
18 properties:
19   compatible:
20     enum:
21       - qcom,pm8916-pon
22       - qcom,pm8941-pon
23       - qcom,pms405-pon
24       - qcom,pm8998-pon
25       - qcom,pmk8350-pon
26
27   reg:
28     description: |
29       Specifies the SPMI base address for the PON (power-on) peripheral.  For
30       PMICs that have the PON peripheral (GEN3) split into PON_HLOS and PON_PBS
31       (e.g. PMK8350), this can hold addresses of both PON_HLOS and PON_PBS
32       peripherals.  In that case, the PON_PBS address needs to be specified to
33       facilitate software debouncing on some PMIC.
34     minItems: 1
35     maxItems: 2
36
37   reg-names:
38     minItems: 1
39     maxItems: 2
40
41   pwrkey:
42     type: object
43     $ref: /schemas/input/qcom,pm8941-pwrkey.yaml#
44
45   resin:
46     type: object
47     $ref: /schemas/input/qcom,pm8941-pwrkey.yaml#
48
49   watchdog:
50     type: object
51     $ref: /schemas/watchdog/qcom,pm8916-wdt.yaml
52
53 required:
54   - compatible
55   - reg
56
57 unevaluatedProperties: false
58
59 allOf:
60   - if:
61       properties:
62         compatible:
63           contains:
64             enum:
65               - qcom,pm8916-pon
66               - qcom,pms405-pon
67               - qcom,pm8998-pon
68     then:
69       allOf:
70         - $ref: reboot-mode.yaml#
71
72       properties:
73         reg:
74           maxItems: 1
75         reg-names:
76           items:
77             - const: pon
78
79     # Special case for pm8941, which doesn't store reset mode
80   - if:
81       properties:
82         compatible:
83           contains:
84             const: qcom,pm8941-pon
85     then:
86       properties:
87         reg:
88           maxItems: 1
89         reg-names:
90           items:
91             - const: pon
92
93   - if:
94       properties:
95         compatible:
96           contains:
97             const: qcom,pmk8350-pon
98     then:
99       properties:
100         reg:
101           minItems: 1
102           maxItems: 2
103         reg-names:
104           minItems: 1
105           items:
106             - const: hlos
107             - const: pbs
108
109 examples:
110   - |
111    #include <dt-bindings/interrupt-controller/irq.h>
112    #include <dt-bindings/input/linux-event-codes.h>
113    #include <dt-bindings/spmi/spmi.h>
114
115    spmi@c440000 {
116      reg = <0x0c440000 0x1100>;
117      #address-cells = <2>;
118      #size-cells = <0>;
119
120      pmic@0 {
121        reg = <0x0 SPMI_USID>;
122        #address-cells = <1>;
123        #size-cells = <0>;
124
125        pon@800 {
126          compatible = "qcom,pm8998-pon";
127          reg = <0x800>;
128
129          pwrkey {
130             compatible = "qcom,pm8941-pwrkey";
131             interrupts = <0x0 0x8 0 IRQ_TYPE_EDGE_BOTH>;
132             debounce = <15625>;
133             bias-pull-up;
134             linux,code = <KEY_POWER>;
135          };
136
137          resin {
138             compatible = "qcom,pm8941-resin";
139             interrupts = <0x0 0x8 1 IRQ_TYPE_EDGE_BOTH>;
140             debounce = <15625>;
141             bias-pull-up;
142             linux,code = <KEY_VOLUMEDOWN>;
143          };
144        };
145      };
146    };
147 ...