xref: /linux/Documentation/devicetree/bindings/mfd/samsung,s2mps11.yaml (revision 6315d93541f8a5f77c5ef5c4f25233e66d189603)
1# SPDX-License-Identifier: GPL-2.0-only
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/mfd/samsung,s2mps11.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Samsung S2MPS11/13/14/15 and S2MPU02 Power Management IC
8
9maintainers:
10  - Krzysztof Kozlowski <krzk@kernel.org>
11
12description: |
13  This is a part of device tree bindings for S2M and S5M family of Power
14  Management IC (PMIC).
15
16  The Samsung S2MPS11/13/14/15 and S2MPU02 is a family of Power Management IC
17  which include voltage and current regulators, RTC, clock outputs and other
18  sub-blocks.
19
20properties:
21  compatible:
22    enum:
23      - samsung,s2mps11-pmic
24      - samsung,s2mps13-pmic
25      - samsung,s2mps14-pmic
26      - samsung,s2mps15-pmic
27      - samsung,s2mpu02-pmic
28      - samsung,s2mpu05-pmic
29
30  clocks:
31    $ref: /schemas/clock/samsung,s2mps11.yaml
32    description:
33      Child node describing clock provider.
34
35  interrupts:
36    maxItems: 1
37
38  reg:
39    maxItems: 1
40
41  regulators:
42    type: object
43    description:
44      List of child nodes that specify the regulators.
45
46  samsung,s2mps11-acokb-ground:
47    description: |
48      Indicates that ACOKB pin of S2MPS11 PMIC is connected to the ground so
49      the PMIC must manually set PWRHOLD bit in CTRL1 register to turn off the
50      power. Usually the ACOKB is pulled up to VBATT so when PWRHOLD pin goes
51      low, the rising ACOKB will trigger power off.
52    type: boolean
53
54  samsung,s2mps11-wrstbi-ground:
55    description: |
56      Indicates that WRSTBI pin of PMIC is pulled down. When the system is
57      suspended it will always go down thus triggering unwanted buck warm
58      reset (setting buck voltages to default values).
59    type: boolean
60
61  wakeup-source: true
62
63required:
64  - compatible
65  - reg
66  - regulators
67
68additionalProperties: false
69
70allOf:
71  - if:
72      properties:
73        compatible:
74          contains:
75            const: samsung,s2mps11-pmic
76    then:
77      properties:
78        regulators:
79          $ref: /schemas/regulator/samsung,s2mps11.yaml
80        samsung,s2mps11-wrstbi-ground: false
81
82  - if:
83      properties:
84        compatible:
85          contains:
86            const: samsung,s2mps13-pmic
87    then:
88      properties:
89        regulators:
90          $ref: /schemas/regulator/samsung,s2mps13.yaml
91        samsung,s2mps11-acokb-ground: false
92
93  - if:
94      properties:
95        compatible:
96          contains:
97            const: samsung,s2mps14-pmic
98    then:
99      properties:
100        regulators:
101          $ref: /schemas/regulator/samsung,s2mps14.yaml
102        samsung,s2mps11-acokb-ground: false
103        samsung,s2mps11-wrstbi-ground: false
104
105  - if:
106      properties:
107        compatible:
108          contains:
109            const: samsung,s2mps15-pmic
110    then:
111      properties:
112        regulators:
113          $ref: /schemas/regulator/samsung,s2mps15.yaml
114        samsung,s2mps11-acokb-ground: false
115        samsung,s2mps11-wrstbi-ground: false
116
117  - if:
118      properties:
119        compatible:
120          contains:
121            const: samsung,s2mpu02-pmic
122    then:
123      properties:
124        regulators:
125          $ref: /schemas/regulator/samsung,s2mpu02.yaml
126        samsung,s2mps11-acokb-ground: false
127        samsung,s2mps11-wrstbi-ground: false
128
129  - if:
130      properties:
131        compatible:
132          contains:
133            const: samsung,s2mpu05-pmic
134    then:
135      properties:
136        regulators:
137          $ref: /schemas/regulator/samsung,s2mpu05.yaml
138        samsung,s2mps11-acokb-ground: false
139        samsung,s2mps11-wrstbi-ground: false
140
141examples:
142  - |
143    #include <dt-bindings/interrupt-controller/irq.h>
144
145    i2c {
146        #address-cells = <1>;
147        #size-cells = <0>;
148
149        pmic@66 {
150            compatible = "samsung,s2mps11-pmic";
151            reg = <0x66>;
152
153            interrupt-parent = <&gpx0>;
154            interrupts = <4 IRQ_TYPE_LEVEL_LOW>;
155            pinctrl-names = "default";
156            pinctrl-0 = <&s2mps11_irq>;
157            samsung,s2mps11-acokb-ground;
158            wakeup-source;
159
160            clocks {
161                compatible = "samsung,s2mps11-clk";
162                #clock-cells = <1>;
163                clock-output-names = "s2mps11_ap", "s2mps11_cp", "s2mps11_bt";
164            };
165
166            regulators {
167                LDO1 {
168                    regulator-name = "vdd_ldo1";
169                    regulator-min-microvolt = <1000000>;
170                    regulator-max-microvolt = <1000000>;
171                    regulator-always-on;
172                };
173
174                LDO4 {
175                    regulator-name = "vdd_adc";
176                    regulator-min-microvolt = <1800000>;
177                    regulator-max-microvolt = <1800000>;
178
179                    regulator-state-mem {
180                        regulator-off-in-suspend;
181                    };
182                };
183
184                // ....
185
186                BUCK1 {
187                    regulator-name = "vdd_mif";
188                    regulator-min-microvolt = <800000>;
189                    regulator-max-microvolt = <1300000>;
190                    regulator-always-on;
191                    regulator-boot-on;
192
193                    regulator-state-mem {
194                        regulator-off-in-suspend;
195                    };
196                };
197
198                BUCK2 {
199                    regulator-name = "vdd_arm";
200                    regulator-min-microvolt = <800000>;
201                    regulator-max-microvolt = <1500000>;
202                    regulator-always-on;
203                    regulator-boot-on;
204                    regulator-coupled-with = <&buck3_reg>;
205                    regulator-coupled-max-spread = <300000>;
206
207                    regulator-state-mem {
208                        regulator-off-in-suspend;
209                    };
210                };
211
212                BUCK3 {
213                    regulator-name = "vdd_int";
214                    regulator-min-microvolt = <800000>;
215                    regulator-max-microvolt = <1400000>;
216                    regulator-always-on;
217                    regulator-boot-on;
218                    regulator-coupled-with = <&buck2_reg>;
219                    regulator-coupled-max-spread = <300000>;
220
221                    regulator-state-mem {
222                        regulator-off-in-suspend;
223                    };
224                };
225
226                // ...
227            };
228        };
229    };
230
231  - |
232    #include <dt-bindings/interrupt-controller/irq.h>
233
234    i2c {
235        #address-cells = <1>;
236        #size-cells = <0>;
237
238        pmic@66 {
239            compatible = "samsung,s2mps14-pmic";
240            reg = <0x66>;
241
242            interrupt-parent = <&gpx0>;
243            interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
244            wakeup-source;
245
246            clocks {
247                compatible = "samsung,s2mps14-clk";
248                #clock-cells = <1>;
249                clock-output-names = "s2mps14_ap", "unused", "s2mps14_bt";
250            };
251
252            regulators {
253                LDO1 {
254                    regulator-name = "VLDO1_1.0V";
255                    regulator-min-microvolt = <1000000>;
256                    regulator-max-microvolt = <1000000>;
257                    regulator-always-on;
258
259                    regulator-state-mem {
260                        regulator-on-in-suspend;
261                    };
262                };
263
264                // ...
265
266                BUCK1 {
267                    regulator-name = "VBUCK1_1.0V";
268                    regulator-min-microvolt = <800000>;
269                    regulator-max-microvolt = <1000000>;
270                    regulator-always-on;
271
272                    regulator-state-mem {
273                        regulator-off-in-suspend;
274                    };
275                };
276
277                // ...
278            };
279        };
280    };
281