1menuconfig POWER
2	 bool "Power"
3	 default y
4	 help
5	  Enable support for power control in U-Boot. This includes support
6	  for PMICs (Power-management Integrated Circuits) and some of the
7	  features provided by PMICs. In particular, voltage regulators can
8	  be used to enable/disable power and vary its voltage. That can be
9	  useful in U-Boot to turn on boot peripherals and adjust CPU voltage
10	  so that the clock speed can be increased. This enables the drivers
11	  in drivers/power, drivers/power/pmic and drivers/power/regulator
12	  as part of a build.
13
14if POWER
15
16config POWER_LEGACY
17	bool "Legacy power support"
18	help
19	  Note: This is a legacy option. Use DM_PMIC instead.
20
21	  Enable support for power control in U-Boot. This includes support
22	  for PMICs (Power-management Integrated Circuits) and some of the
23	  features provided by PMICs. In particular, voltage regulators can
24	  be used to enable/disable power and vary its voltage. That can be
25	  useful in U-Boot to turn on boot peripherals and adjust CPU voltage
26	  so that the clock speed can be increased. This enables the drivers
27	  in drivers/power, drivers/power/pmic and drivers/power/regulator
28	  as part of a build.
29
30config SPL_POWER_LEGACY
31	bool "Legacy power support in SPL"
32	default y if POWER_LEGACY
33	help
34	  Note: This is a legacy option. Use SPL_DM_PMIC instead.
35
36	  Enable support for power control in SPL. This includes support
37	  for PMICs (Power-management Integrated Circuits) and some of the
38	  features provided by PMICs. In particular, voltage regulators can
39	  be used to enable/disable power and vary its voltage. That can be
40	  useful in SPL to turn on boot peripherals and adjust CPU voltage
41	  so that the clock speed can be increased. This enables the drivers
42	  in drivers/power, drivers/power/pmic and drivers/power/regulator
43	  as part of a build.
44
45source "drivers/power/acpi_pmc/Kconfig"
46
47source "drivers/power/domain/Kconfig"
48
49source "drivers/power/pmic/Kconfig"
50
51source "drivers/power/regulator/Kconfig"
52
53choice
54	prompt "Select Sunxi PMIC Variant"
55	depends on ARCH_SUNXI
56	default AXP209_POWER if MACH_SUN4I || MACH_SUN5I || MACH_SUN7I
57	default AXP221_POWER if MACH_SUN6I || MACH_SUN8I_A23 || MACH_SUN8I_A33 || MACH_SUN8I_R40
58	default AXP305_POWER if MACH_SUN50I_H616
59	default AXP818_POWER if MACH_SUN8I_A83T
60	default SUNXI_NO_PMIC if MACH_SUNXI_H3_H5 || MACH_SUN50I || MACH_SUN8I_V3S
61
62config SUNXI_NO_PMIC
63	bool "board without a pmic"
64	---help---
65	Select this for boards which do not use a PMIC.
66
67config AXP152_POWER
68	bool "axp152 pmic support"
69	depends on MACH_SUN5I
70	select AXP_PMIC_BUS
71	select CMD_POWEROFF
72	---help---
73	Select this to enable support for the axp152 pmic found on most
74	A10s boards.
75
76config AXP209_POWER
77	bool "axp209 pmic support"
78	depends on MACH_SUN4I || MACH_SUN5I || MACH_SUN7I || MACH_SUN8I_V3S
79	select AXP_PMIC_BUS
80	select CMD_POWEROFF
81	---help---
82	Select this to enable support for the axp209 pmic found on most
83	A10, A13 and A20 boards.
84
85config AXP221_POWER
86	bool "axp221 / axp223 pmic support"
87	depends on MACH_SUN6I || MACH_SUN8I_A23 || MACH_SUN8I_A33 || MACH_SUN8I_R40
88	select AXP_PMIC_BUS
89	select CMD_POWEROFF
90	---help---
91	Select this to enable support for the axp221/axp223 pmic found on most
92	A23 and A31 boards.
93
94config AXP305_POWER
95	bool "axp305 pmic support"
96	depends on MACH_SUN50I_H616
97	select AXP_PMIC_BUS
98	select CMD_POWEROFF
99	---help---
100	Select this to enable support for the axp305 pmic found on most
101	H616 boards.
102
103config AXP809_POWER
104	bool "axp809 pmic support"
105	depends on MACH_SUN9I
106	select AXP_PMIC_BUS
107	select CMD_POWEROFF
108	---help---
109	Say y here to enable support for the axp809 pmic found on A80 boards.
110
111config AXP818_POWER
112	bool "axp818 pmic support"
113	depends on MACH_SUN8I_A83T
114	select AXP_PMIC_BUS
115	select CMD_POWEROFF
116	---help---
117	Say y here to enable support for the axp818 pmic found on
118	A83T dev board.
119
120config SY8106A_POWER
121	bool "SY8106A pmic support"
122	depends on MACH_SUNXI_H3_H5
123	---help---
124	Select this to enable support for the SY8106A pmic found on some
125	H3 boards.
126
127endchoice
128
129config AXP_DCDC1_VOLT
130	int "axp pmic dcdc1 voltage"
131	depends on AXP221_POWER || AXP809_POWER || AXP818_POWER
132	default 3300 if AXP818_POWER || MACH_SUN8I_R40
133	default 3000 if MACH_SUN6I || MACH_SUN8I || MACH_SUN9I
134	---help---
135	Set the voltage (mV) to program the axp pmic dcdc1 at, set to 0 to
136	disable dcdc1. On A23 / A31 / A33 (axp221) boards dcdc1 is used for
137	generic 3.3V IO voltage for external devices like the lcd-panal and
138	sdcard interfaces, etc. On most boards dcdc1 is undervolted to 3.0V to
139	save battery. On A31 devices dcdc1 is also used for VCC-IO. On A83T
140	dcdc1 is used for VCC-IO, nand, usb0, sd , etc. On A80 dcdc1 normally
141	powers some of the pingroups, NAND/eMMC, SD/MMC, and USB OTG.
142
143config AXP_DCDC2_VOLT
144	int "axp pmic dcdc2 voltage"
145	depends on AXP152_POWER || AXP209_POWER || AXP221_POWER || AXP809_POWER || AXP818_POWER
146	default 900 if AXP818_POWER
147	default 1400 if AXP152_POWER || AXP209_POWER
148	default 1200 if MACH_SUN6I
149	default 1100 if MACH_SUN8I
150	default 0 if MACH_SUN9I
151	---help---
152	Set the voltage (mV) to program the axp pmic dcdc2 at, set to 0 to
153	disable dcdc2.
154	On A10(s) / A13 / A20 boards dcdc2 is VDD-CPU and should be 1.4V.
155	On A31 boards dcdc2 is used for VDD-GPU and should be 1.2V.
156	On A23/A33 boards dcdc2 is used for VDD-SYS and should be 1.1V.
157	On A80 boards dcdc2 powers the GPU and can be left off.
158	On A83T boards dcdc2 is used for VDD-CPUA(cluster 0) and should be 0.9V.
159	On R40 boards dcdc2 is VDD-CPU and should be 1.1V
160
161config AXP_DCDC3_VOLT
162	int "axp pmic dcdc3 voltage"
163	depends on AXP152_POWER || AXP209_POWER || AXP221_POWER || AXP809_POWER || AXP818_POWER
164	default 900 if AXP809_POWER || AXP818_POWER
165	default 1500 if AXP152_POWER
166	default 1250 if AXP209_POWER
167	default 1100 if MACH_SUN8I_R40
168	default 1200 if MACH_SUN6I || MACH_SUN8I
169	---help---
170	Set the voltage (mV) to program the axp pmic dcdc3 at, set to 0 to
171	disable dcdc3.
172	On A10(s) / A13 / A20 boards with an axp209 dcdc3 is VDD-INT-DLL and
173	should be 1.25V.
174	On A10s boards with an axp152 dcdc3 is VCC-DRAM and should be 1.5V.
175	On A23 / A31 / A33 boards dcdc3 is VDD-CPU and should be 1.2V.
176	On A80 boards dcdc3 is used for VDD-CPUA(cluster 0) and should be 0.9V.
177	On A83T boards dcdc3 is used for VDD-CPUB(cluster 1) and should be 0.9V.
178	On R40 boards dcdc3 is VDD-SYS and VDD-GPU and should be 1.1V.
179
180config AXP_DCDC4_VOLT
181	int "axp pmic dcdc4 voltage"
182	depends on AXP152_POWER || AXP221_POWER || AXP809_POWER || AXP818_POWER || AXP305_POWER
183	default 1250 if AXP152_POWER
184	default 1200 if MACH_SUN6I
185	default 0 if MACH_SUN8I
186	default 900 if MACH_SUN9I
187	default 1500 if AXP305_POWER
188	---help---
189	Set the voltage (mV) to program the axp pmic dcdc4 at, set to 0 to
190	disable dcdc4.
191	On A10s boards with an axp152 dcdc4 is VDD-INT-DLL and should be 1.25V.
192	On A31 boards dcdc4 is used for VDD-SYS and should be 1.2V.
193	On A23 / A33 boards dcdc4 is unused and should be disabled.
194	On A80 boards dcdc4 powers VDD-SYS, HDMI, USB OTG and should be 0.9V.
195	On A83T boards dcdc4 is used for VDD-GPU.
196	On H616 boards dcdcd is used for VCC-DRAM.
197
198config AXP_DCDC5_VOLT
199	int "axp pmic dcdc5 voltage"
200	depends on AXP221_POWER || AXP809_POWER || AXP818_POWER
201	default 1500 if MACH_SUN6I || MACH_SUN8I || MACH_SUN9I
202	---help---
203	Set the voltage (mV) to program the axp pmic dcdc5 at, set to 0 to
204	disable dcdc5.
205	On A23 / A31 / A33 / A80 / A83T / R40 boards dcdc5 is VCC-DRAM and
206	should be 1.5V, 1.35V if DDR3L is used.
207
208config AXP_ALDO1_VOLT
209	int "axp pmic (a)ldo1 voltage"
210	depends on AXP221_POWER || AXP809_POWER || AXP818_POWER
211	default 0 if MACH_SUN6I || MACH_SUN8I_R40
212	default 1800 if MACH_SUN8I_A83T
213	default 3000 if MACH_SUN8I || MACH_SUN9I
214	---help---
215	Set the voltage (mV) to program the axp pmic aldo1 at, set to 0 to
216	disable aldo1.
217	On A31 boards aldo1 is often used to power the wifi module.
218	On A23 / A33 boards aldo1 is used for VCC-IO and should be 3.0V.
219	On A80 boards aldo1 powers the USB hosts and should be 3.0V.
220	On A83T / H8 boards aldo1 is used for MIPI CSI, DSI, HDMI, EFUSE, and
221	should be 1.8V.
222
223config AXP_ALDO2_VOLT
224	int "axp pmic (a)ldo2 voltage"
225	depends on AXP152_POWER || AXP209_POWER || AXP221_POWER || AXP809_POWER || AXP818_POWER
226	default 3000 if AXP152_POWER || AXP209_POWER
227	default 0 if MACH_SUN6I || MACH_SUN9I
228	default 1800 if MACH_SUN8I_A83T
229	default 2500 if MACH_SUN8I
230	---help---
231	Set the voltage (mV) to program the axp pmic aldo2 at, set to 0 to
232	disable aldo2.
233	On A10(s) / A13 / A20 boards aldo2 is AVCC and should be 3.0V.
234	On A31 boards aldo2 is typically unused and should be disabled.
235	On A31 boards aldo2 may be used for LPDDR2 then it should be 1.8V.
236	On A23 / A33 boards aldo2 is used for VDD-DLL and should be 2.5V.
237	On A80 boards aldo2 powers PB pingroup and camera IO and can be left off.
238	On A83T / H8 boards aldo2 powers VDD-DLL, VCC18-PLL, CPVDD, VDD18-ADC,
239	LPDDR2, and the codec. It should be 1.8V.
240
241config AXP_ALDO3_VOLT
242	int "axp pmic (a)ldo3 voltage"
243	depends on AXP209_POWER || AXP221_POWER || AXP809_POWER || AXP818_POWER
244	default 0 if AXP209_POWER || MACH_SUN9I
245	default 3000 if MACH_SUN6I || MACH_SUN8I
246	---help---
247	Set the voltage (mV) to program the axp pmic aldo3 at, set to 0 to
248	disable aldo3.
249	On A10(s) / A13 / A20 boards aldo3 should be 2.8V.
250	On A23 / A31 / A33 / R40 boards aldo3 is VCC-PLL and AVCC and should
251	be 3.0V.
252	On A80 boards aldo3 is normally not used.
253	On A83T / H8 boards aldo3 is AVCC, VCC-PL, and VCC-LED, and should be
254	3.0V.
255
256choice
257	prompt "axp pmic (a)ldo3 voltage rate control"
258	depends on AXP209_POWER
259	default AXP_ALDO3_VOLT_SLOPE_NONE
260	---help---
261	The AXP can slowly ramp up voltage to reduce the inrush current when
262	changing voltages.
263	Note, this does not apply when enabling/disabling LDO3. See
264	"axp pmic (a)ldo3 inrush quirk" below to enable a slew rate to limit
265	inrush current on broken board designs.
266
267config AXP_ALDO3_VOLT_SLOPE_NONE
268	bool "No voltage slope"
269	---help---
270	Tries to reach the next voltage setting near instantaneously. Measurements
271	indicate that this is about 0.0167 V/uS.
272
273config AXP_ALDO3_VOLT_SLOPE_16
274	bool "1.6 mV per uS"
275	---help---
276	Increases the voltage by 1.6 mV per uS until the final voltage has
277	been reached. Note that the scaling is in 25 mV steps and thus
278	the slew rate in reality is about 25 mV/31.250 uS.
279
280config AXP_ALDO3_VOLT_SLOPE_08
281	bool "0.8 mV per uS"
282	---help---
283	Increases the voltage by 0.8 mV per uS until the final voltage has
284	been reached. Note that the scaling is in 25 mV steps however and thus
285	the slew rate in reality is about 25 mV/15.625 uS.
286	This is the slowest supported rate.
287
288endchoice
289
290config AXP_ALDO3_INRUSH_QUIRK
291	bool "axp pmic (a)ldo3 inrush quirk"
292	depends on AXP209_POWER
293	---help---
294	The reference design denotes a value of 4.7 uF for the output capacitor
295	of LDO3. Some boards have too high capacitance causing 	an inrush current
296	and resulting an AXP209 shutdown.
297
298config AXP_ALDO4_VOLT
299	int "axp pmic (a)ldo4 voltage"
300	depends on AXP209_POWER
301	default 0 if AXP209_POWER
302	---help---
303	Set the voltage (mV) to program the axp pmic aldo4 at, set to 0 to
304	disable aldo4.
305	On A10(s) / A13 / A20 boards aldo4 should be 2.8V.
306
307config AXP_DLDO1_VOLT
308	int "axp pmic dldo1 voltage"
309	depends on AXP221_POWER || AXP809_POWER || AXP818_POWER
310	default 0
311	---help---
312	Set the voltage (mV) to program the axp pmic dldo1 at, set to 0 to
313	disable dldo1. On sun6i (A31) boards with ethernet dldo1 is often used
314	to power the ethernet phy. On A23, A33 and A80 boards this is often
315	used to power the wifi.
316
317config AXP_DLDO2_VOLT
318	int "axp pmic dldo2 voltage"
319	depends on AXP221_POWER || AXP809_POWER || AXP818_POWER
320	default 3000 if MACH_SUN9I
321	default 0
322	---help---
323	Set the voltage (mV) to program the axp pmic dldo2 at, set to 0 to
324	disable dldo2.
325	On A80 boards dldo2 normally powers the PL pins and should be 3.0V.
326
327config AXP_DLDO3_VOLT
328	int "axp pmic dldo3 voltage"
329	depends on AXP221_POWER || AXP818_POWER
330	default 0
331	---help---
332	Set the voltage (mV) to program the axp pmic dldo3 at, set to 0 to
333	disable dldo3.
334
335config AXP_DLDO4_VOLT
336	int "axp pmic dldo4 voltage"
337	depends on AXP221_POWER || AXP818_POWER
338	default 0
339	---help---
340	Set the voltage (mV) to program the axp pmic dldo4 at, set to 0 to
341	disable dldo4.
342
343config AXP_ELDO1_VOLT
344	int "axp pmic eldo1 voltage"
345	depends on AXP221_POWER || AXP809_POWER || AXP818_POWER
346	default 0
347	---help---
348	Set the voltage (mV) to program the axp pmic eldo1 at, set to 0 to
349	disable eldo1.
350
351config AXP_ELDO2_VOLT
352	int "axp pmic eldo2 voltage"
353	depends on AXP221_POWER || AXP809_POWER || AXP818_POWER
354	default 0
355	---help---
356	Set the voltage (mV) to program the axp pmic eldo2 at, set to 0 to
357	disable eldo2.
358
359config AXP_ELDO3_VOLT
360	int "axp pmic eldo3 voltage"
361	depends on AXP221_POWER || AXP809_POWER || AXP818_POWER
362	default 3000 if MACH_SUN9I
363	default 0
364	---help---
365	Set the voltage (mV) to program the axp pmic eldo3 at, set to 0 to
366	disable eldo3. On some A31(s) tablets it might be used to supply
367	1.2V for the SSD2828 chip (converter of parallel LCD interface
368	into MIPI DSI).
369	On A80 boards it powers the PM pingroup and should be 3.0V.
370
371config AXP_FLDO1_VOLT
372	int "axp pmic fldo1 voltage"
373	depends on AXP818_POWER
374	default 0 if MACH_SUN8I_A83T
375	---help---
376	Set the voltage (mV) to program the axp pmic fldo1 at, set to 0 to
377	disable fldo1.
378	On A83T / H8 boards fldo1 is VCC-HSIC and should be 1.2V if HSIC is
379	used.
380
381config AXP_FLDO2_VOLT
382	int "axp pmic fldo2 voltage"
383	depends on AXP818_POWER
384	default 900 if MACH_SUN8I_A83T
385	---help---
386	Set the voltage (mV) to program the axp pmic fldo2 at, set to 0 to
387	disable fldo2.
388	On A83T / H8 boards fldo2 is VCC-CPUS and should be 0.9V.
389
390config AXP_FLDO3_VOLT
391	int "axp pmic fldo3 voltage"
392	depends on AXP818_POWER
393	default 0
394	---help---
395	Set the voltage (mV) to program the axp pmic fldo3 at, set to 0 to
396	disable fldo3.
397
398config AXP_SW_ON
399	bool "axp pmic sw on"
400	depends on AXP809_POWER || AXP818_POWER
401	---help---
402	Enable to turn on axp pmic sw.
403
404config SY8106A_VOUT1_VOLT
405	int "SY8106A pmic VOUT1 voltage"
406	depends on SY8106A_POWER
407	default 1200
408	---help---
409	Set the voltage (mV) to program the SY8106A pmic VOUT1. This
410	is typically used to power the VDD-CPU and should be 1200mV.
411	Values can range from 680mV till 1950mV.
412
413config TWL4030_POWER
414	depends on OMAP34XX
415	bool "Enable driver for TI TWL4030 power management chip"
416	imply CMD_POWEROFF
417	---help---
418	The TWL4030 in a combination audio CODEC/power management with
419	GPIO and it is commonly used with the OMAP3 family of processors
420
421config POWER_MT6323
422	bool "Poweroff driver for mediatek mt6323"
423	select CMD_POWEROFF
424	help
425	  This adds poweroff driver for mt6323
426	  this pmic is used on mt7623 / Bananapi R2
427
428config POWER_I2C
429	bool "I2C-based power control for legacy power"
430	depends on POWER_LEGACY
431	help
432	  Enable this to use the I2C driver designed for the legacy PMIC
433	  interface.
434
435	  Not to be used for new designs and existing ones should be moved to
436	  the new PMIC interface based on driver model.
437
438config SPL_POWER_I2C
439	bool "I2C-based power control for legacy power"
440	depends on SPL_POWER_LEGACY
441	default y if POWER_I2C
442	help
443	  Enable this to use the I2C driver designed for the legacy PMIC
444	  interface.
445
446	  Not to be used for new designs and existing ones should be moved to
447	  the new PMIC interface based on driver model.
448
449endif
450