Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
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 };