blob: f3c3f64fd012b19aa852cb0734ab85e8a24dfd07 [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/mfd/maxim,max8998.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Maxim MAX8998, National/TI LP3974 Power Management IC
8
9maintainers:
10 - Krzysztof Kozlowski <krzk@kernel.org>
11
12description:
13 The Maxim MAX8998 is a Power Management IC which includes voltage/current
14 regulators, real time clock, battery charging controller and several other
15 sub-blocks. It is interfaced using an I2C interface. Each sub-block is
16 addressed by the host system using different i2c slave address.
17
18properties:
19 compatible:
20 enum:
21 - maxim,max8998
22 - national,lp3974
23 - ti,lp3974
24
25 reg:
26 maxItems: 1
27
28 interrupts:
29 minItems: 1
30 items:
31 - description: Main interrupt
32 - description: Power-on/-off interrupt
33
34 max8998,pmic-buck1-dvs-gpios:
35 maxItems: 2
36 description:
37 Two host gpios used for buck1 DVS.
38
39 max8998,pmic-buck2-dvs-gpio:
40 maxItems: 1
41 description:
42 Host gpio used for buck2 DVS.
43
44 max8998,pmic-buck1-default-dvs-idx:
45 $ref: /schemas/types.yaml#/definitions/uint32
46 enum: [0, 1, 2, 3]
47 default: 0
48 description:
49 Default voltage setting selected from the possible 4 options selectable
50 by the DVS gpios.
51
52 max8998,pmic-buck2-default-dvs-idx:
53 $ref: /schemas/types.yaml#/definitions/uint32
54 enum: [0, 1]
55 default: 0
56 description:
57 Default voltage setting selected from the possible 2 options selectable
58 by the DVS GPIOs.
59
60 max8998,pmic-buck-voltage-lock:
61 type: boolean
62 description:
63 If present, disallows changing of preprogrammed buck DVS voltages.
64
65 max8998,pmic-buck1-dvs-voltage:
66 $ref: /schemas/types.yaml#/definitions/uint32-array
67 maxItems: 4
68 description:
69 Four voltage values in microvolts for buck1 regulator that can be
70 selected using DVS GPIO.
71
72 max8998,pmic-buck2-dvs-voltage:
73 $ref: /schemas/types.yaml#/definitions/uint32-array
74 maxItems: 2
75 description:
76 Two voltage values in microvolts for buck2 regulator that can be
77 selected using DVS GPIO.
78
79 regulators:
80 type: object
81 additionalProperties: false
82
83 properties:
84 CHARGER:
85 type: object
86 $ref: /schemas/regulator/regulator.yaml#
87 unevaluatedProperties: false
88 description:
89 CHARGER is main battery charger current control, wrongly represented
90 as regulator.
91
92 properties:
93 regulator-min-microamp:
94 minimum: 90000
95 maximum: 800000
96
97 regulator-max-microamp:
98 minimum: 90000
99 maximum: 800000
100
101 regulator-min-microvolt: false
102 regulator-max-microvolt: false
103
104 required:
105 - regulator-name
106
107 patternProperties:
108 "^(LDO([2-9]|1[0-7])|BUCK[1-4])$":
109 type: object
110 $ref: /schemas/regulator/regulator.yaml#
111 unevaluatedProperties: false
112
113 required:
114 - regulator-name
115
116 "^(EN32KHz-AP|EN32KHz-CP|ENVICHG|ESAFEOUT[12])$":
117 type: object
118 $ref: /schemas/regulator/regulator.yaml#
119 unevaluatedProperties: false
120 description: |
121 EN32KHz-AP and EN32KHz-CP are 32768 Hz clocks, wrongly represented as
122 regulators.
123 ENVICHG is a Battery Charging Current Monitor Output.
124
125 properties:
126 regulator-min-microvolt: false
127 regulator-max-microvolt: false
128
129 required:
130 - regulator-name
131
132dependencies:
133 max8998,pmic-buck1-dvs-gpios: [ "max8998,pmic-buck1-dvs-voltage" ]
134 max8998,pmic-buck2-dvs-gpio: [ "max8998,pmic-buck2-dvs-voltage" ]
135
136required:
137 - compatible
138 - reg
139 - regulators
140
141additionalProperties: false
142
143examples:
144 - |
145 #include <dt-bindings/gpio/gpio.h>
146 #include <dt-bindings/interrupt-controller/irq.h>
147
148 i2c {
149 #address-cells = <1>;
150 #size-cells = <0>;
151
152 pmic@66 {
153 compatible = "national,lp3974";
154 reg = <0x66>;
155 interrupts-extended = <&gpx0 7 IRQ_TYPE_LEVEL_LOW>,
156 <&gpx2 7 IRQ_TYPE_LEVEL_LOW>;
157 pinctrl-names = "default";
158 pinctrl-0 = <&lp3974_irq>;
159
160 max8998,pmic-buck1-default-dvs-idx = <0>;
161 max8998,pmic-buck1-dvs-gpios = <&gpx0 5 GPIO_ACTIVE_HIGH>,
162 <&gpx0 6 GPIO_ACTIVE_HIGH>;
163 max8998,pmic-buck1-dvs-voltage = <1100000>, <1000000>,
164 <1100000>, <1000000>;
165 max8998,pmic-buck2-default-dvs-idx = <0>;
166 max8998,pmic-buck2-dvs-gpio = <&gpe2 0 GPIO_ACTIVE_HIGH>;
167 max8998,pmic-buck2-dvs-voltage = <1200000>, <1100000>;
168
169 regulators {
170 LDO2 {
171 regulator-name = "VALIVE_1.2V";
172 regulator-min-microvolt = <1200000>;
173 regulator-max-microvolt = <1200000>;
174 regulator-always-on;
175 };
176
177 LDO3 {
178 regulator-name = "VUSB+MIPI_1.1V";
179 regulator-min-microvolt = <1100000>;
180 regulator-max-microvolt = <1100000>;
181 regulator-always-on;
182 };
183
184 LDO4 {
185 regulator-name = "VADC_3.3V";
186 regulator-min-microvolt = <3300000>;
187 regulator-max-microvolt = <3300000>;
188 };
189
190 LDO5 {
191 regulator-name = "VTF_2.8V";
192 regulator-min-microvolt = <2800000>;
193 regulator-max-microvolt = <2800000>;
194 };
195
196 LDO6 {
197 regulator-name = "LDO6";
198 regulator-min-microvolt = <2000000>;
199 regulator-max-microvolt = <2000000>;
200 };
201
202 LDO7 {
203 regulator-name = "VLCD+VMIPI_1.8V";
204 regulator-min-microvolt = <1800000>;
205 regulator-max-microvolt = <1800000>;
206 };
207
208 LDO8 {
209 regulator-name = "VUSB+VDAC_3.3V";
210 regulator-min-microvolt = <3300000>;
211 regulator-max-microvolt = <3300000>;
212 regulator-always-on;
213 };
214
215 LDO9 {
216 regulator-name = "VCC_2.8V";
217 regulator-min-microvolt = <2800000>;
218 regulator-max-microvolt = <2800000>;
219 regulator-always-on;
220 };
221
222 LDO10 {
223 regulator-name = "VPLL_1.1V";
224 regulator-min-microvolt = <1100000>;
225 regulator-max-microvolt = <1100000>;
226 regulator-boot-on;
227 regulator-always-on;
228 };
229
230 LDO11 {
231 regulator-name = "CAM_AF_3.3V";
232 regulator-min-microvolt = <3300000>;
233 regulator-max-microvolt = <3300000>;
234 };
235
236 LDO12 {
237 regulator-name = "PS_2.8V";
238 regulator-min-microvolt = <2800000>;
239 regulator-max-microvolt = <2800000>;
240 };
241
242 LDO13 {
243 regulator-name = "VHIC_1.2V";
244 regulator-min-microvolt = <1200000>;
245 regulator-max-microvolt = <1200000>;
246 };
247
248 LDO14 {
249 regulator-name = "CAM_I_HOST_1.8V";
250 regulator-min-microvolt = <1800000>;
251 regulator-max-microvolt = <1800000>;
252 };
253
254 LDO15 {
255 regulator-name = "CAM_S_DIG+FM33_CORE_1.2V";
256 regulator-min-microvolt = <1200000>;
257 regulator-max-microvolt = <1200000>;
258 };
259
260 LDO16 {
261 regulator-name = "CAM_S_ANA_2.8V";
262 regulator-min-microvolt = <2800000>;
263 regulator-max-microvolt = <2800000>;
264 };
265
266 LDO17 {
267 regulator-name = "VCC_3.0V_LCD";
268 regulator-min-microvolt = <3000000>;
269 regulator-max-microvolt = <3000000>;
270 };
271
272 BUCK1 {
273 regulator-name = "VINT_1.1V";
274 regulator-min-microvolt = <750000>;
275 regulator-max-microvolt = <1500000>;
276 regulator-boot-on;
277 regulator-always-on;
278 };
279
280 BUCK2 {
281 regulator-name = "VG3D_1.1V";
282 regulator-min-microvolt = <750000>;
283 regulator-max-microvolt = <1500000>;
284 regulator-boot-on;
285 };
286
287 BUCK3 {
288 regulator-name = "VCC_1.8V";
289 regulator-min-microvolt = <1800000>;
290 regulator-max-microvolt = <1800000>;
291 regulator-always-on;
292 };
293
294 BUCK4 {
295 regulator-name = "VMEM_1.2V";
296 regulator-min-microvolt = <1200000>;
297 regulator-max-microvolt = <1200000>;
298 regulator-always-on;
299 };
300
301 EN32KHz-AP {
302 regulator-name = "32KHz AP";
303 regulator-always-on;
304 };
305
306 EN32KHz-CP {
307 regulator-name = "32KHz CP";
308 };
309
310 ENVICHG {
311 regulator-name = "VICHG";
312 };
313
314 ESAFEOUT1 {
315 regulator-name = "SAFEOUT1";
316 };
317
318 ESAFEOUT2 {
319 regulator-name = "SAFEOUT2";
320 regulator-boot-on;
321 };
322 };
323 };
324 };