* [U-Boot] [PATCH 1/3] sunxi: power: Add support for disabling axp209 regulators
@ 2015-10-10 12:40 Hans de Goede
2015-10-10 12:40 ` [U-Boot] [PATCH 2/3] sunxi: power: Change axp209 LDO3 and LDO4 default to disabled Hans de Goede
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Hans de Goede @ 2015-10-10 12:40 UTC (permalink / raw)
To: u-boot
Add support for disabling the regulators found on the axp209 pmic.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
drivers/power/axp209.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++----
include/axp209.h | 8 ++++++++
2 files changed, 54 insertions(+), 4 deletions(-)
diff --git a/drivers/power/axp209.c b/drivers/power/axp209.c
index bb5d08b..71aa000 100644
--- a/drivers/power/axp209.c
+++ b/drivers/power/axp209.c
@@ -24,6 +24,14 @@ int axp_set_dcdc2(unsigned int mvolt)
int rc;
u8 cfg, current;
+ if (mvolt == 0)
+ return pmic_bus_clrbits(AXP209_OUTPUT_CTRL,
+ AXP209_OUTPUT_CTRL_DCDC2);
+
+ rc = pmic_bus_setbits(AXP209_OUTPUT_CTRL, AXP209_OUTPUT_CTRL_DCDC2);
+ if (rc)
+ return rc;
+
cfg = axp209_mvolt_to_cfg(mvolt, 700, 2275, 25);
/* Do we really need to be this gentle? It has built-in voltage slope */
@@ -45,8 +53,17 @@ int axp_set_dcdc2(unsigned int mvolt)
int axp_set_dcdc3(unsigned int mvolt)
{
u8 cfg = axp209_mvolt_to_cfg(mvolt, 700, 3500, 25);
+ int rc;
+
+ if (mvolt == 0)
+ return pmic_bus_clrbits(AXP209_OUTPUT_CTRL,
+ AXP209_OUTPUT_CTRL_DCDC3);
- return pmic_bus_write(AXP209_DCDC3_VOLTAGE, cfg);
+ rc = pmic_bus_write(AXP209_DCDC3_VOLTAGE, cfg);
+ if (rc)
+ return rc;
+
+ return pmic_bus_setbits(AXP209_OUTPUT_CTRL, AXP209_OUTPUT_CTRL_DCDC3);
}
int axp_set_aldo2(unsigned int mvolt)
@@ -54,6 +71,10 @@ int axp_set_aldo2(unsigned int mvolt)
int rc;
u8 cfg, reg;
+ if (mvolt == 0)
+ return pmic_bus_clrbits(AXP209_OUTPUT_CTRL,
+ AXP209_OUTPUT_CTRL_LDO2);
+
cfg = axp209_mvolt_to_cfg(mvolt, 1800, 3300, 100);
rc = pmic_bus_read(AXP209_LDO24_VOLTAGE, ®);
@@ -62,19 +83,32 @@ int axp_set_aldo2(unsigned int mvolt)
/* LDO2 configuration is in upper 4 bits */
reg = (reg & 0x0f) | (cfg << 4);
- return pmic_bus_write(AXP209_LDO24_VOLTAGE, reg);
+ rc = pmic_bus_write(AXP209_LDO24_VOLTAGE, reg);
+ if (rc)
+ return rc;
+
+ return pmic_bus_setbits(AXP209_OUTPUT_CTRL, AXP209_OUTPUT_CTRL_LDO2);
}
int axp_set_aldo3(unsigned int mvolt)
{
u8 cfg;
+ int rc;
+
+ if (mvolt == 0)
+ return pmic_bus_clrbits(AXP209_OUTPUT_CTRL,
+ AXP209_OUTPUT_CTRL_LDO3);
if (mvolt == -1)
cfg = 0x80; /* determined by LDO3IN pin */
else
cfg = axp209_mvolt_to_cfg(mvolt, 700, 3500, 25);
- return pmic_bus_write(AXP209_LDO3_VOLTAGE, cfg);
+ rc = pmic_bus_write(AXP209_LDO3_VOLTAGE, cfg);
+ if (rc)
+ return rc;
+
+ return pmic_bus_setbits(AXP209_OUTPUT_CTRL, AXP209_OUTPUT_CTRL_LDO3);
}
int axp_set_aldo4(unsigned int mvolt)
@@ -86,6 +120,10 @@ int axp_set_aldo4(unsigned int mvolt)
};
u8 cfg, reg;
+ if (mvolt == 0)
+ return pmic_bus_clrbits(AXP209_OUTPUT_CTRL,
+ AXP209_OUTPUT_CTRL_LDO4);
+
/* Translate mvolt to register cfg value, requested <= selected */
for (cfg = 15; vindex[cfg] > mvolt && cfg > 0; cfg--);
@@ -95,7 +133,11 @@ int axp_set_aldo4(unsigned int mvolt)
/* LDO4 configuration is in lower 4 bits */
reg = (reg & 0xf0) | (cfg << 0);
- return pmic_bus_write(AXP209_LDO24_VOLTAGE, reg);
+ rc = pmic_bus_write(AXP209_LDO24_VOLTAGE, reg);
+ if (rc)
+ return rc;
+
+ return pmic_bus_setbits(AXP209_OUTPUT_CTRL, AXP209_OUTPUT_CTRL_LDO4);
}
int axp_init(void)
diff --git a/include/axp209.h b/include/axp209.h
index 13aa66c..e1b22e3 100644
--- a/include/axp209.h
+++ b/include/axp209.h
@@ -7,6 +7,7 @@
enum axp209_reg {
AXP209_POWER_STATUS = 0x00,
AXP209_CHIP_VERSION = 0x03,
+ AXP209_OUTPUT_CTRL = 0x12,
AXP209_DCDC2_VOLTAGE = 0x23,
AXP209_DCDC3_VOLTAGE = 0x27,
AXP209_LDO24_VOLTAGE = 0x28,
@@ -23,6 +24,13 @@ enum axp209_reg {
#define AXP209_POWER_STATUS_ON_BY_DC (1 << 0)
#define AXP209_POWER_STATUS_VBUS_USABLE (1 << 4)
+#define AXP209_OUTPUT_CTRL_EXTEN (1 << 0)
+#define AXP209_OUTPUT_CTRL_DCDC3 (1 << 1)
+#define AXP209_OUTPUT_CTRL_LDO2 (1 << 2)
+#define AXP209_OUTPUT_CTRL_LDO4 (1 << 3)
+#define AXP209_OUTPUT_CTRL_DCDC2 (1 << 4)
+#define AXP209_OUTPUT_CTRL_LDO3 (1 << 6)
+
#define AXP209_IRQ5_PEK_UP (1 << 6)
#define AXP209_IRQ5_PEK_DOWN (1 << 5)
--
2.5.0
^ permalink raw reply related [flat|nested] 4+ messages in thread* [U-Boot] [PATCH 2/3] sunxi: power: Change axp209 LDO3 and LDO4 default to disabled
2015-10-10 12:40 [U-Boot] [PATCH 1/3] sunxi: power: Add support for disabling axp209 regulators Hans de Goede
@ 2015-10-10 12:40 ` Hans de Goede
2015-10-10 12:40 ` [U-Boot] [PATCH 3/3] sunxi: power: Columbus: only enable ELDO3 when necessary Hans de Goede
2015-10-11 9:08 ` [U-Boot] [PATCH 1/3] sunxi: power: Add support for disabling axp209 regulators Ian Campbell
2 siblings, 0 replies; 4+ messages in thread
From: Hans de Goede @ 2015-10-10 12:40 UTC (permalink / raw)
To: u-boot
LDO3 and LDO4 are normally either unused, or used to power csi
attached camera sensors, and as such do not need to be enabled at
boot time.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
drivers/power/Kconfig | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/power/Kconfig b/drivers/power/Kconfig
index 21e4929..c0d7aa5 100644
--- a/drivers/power/Kconfig
+++ b/drivers/power/Kconfig
@@ -126,7 +126,7 @@ config AXP_ALDO2_VOLT
config AXP_ALDO3_VOLT
int "axp pmic (a)ldo3 voltage"
depends on AXP209_POWER || AXP221_POWER
- default 2800 if AXP209_POWER
+ default 0 if AXP209_POWER
default 3000 if MACH_SUN6I || MACH_SUN8I
---help---
Set the voltage (mV) to program the axp pmic aldo3 at, set to 0 to
@@ -137,7 +137,7 @@ config AXP_ALDO3_VOLT
config AXP_ALDO4_VOLT
int "axp pmic (a)ldo4 voltage"
depends on AXP209_POWER
- default 2800 if AXP209_POWER
+ default 0 if AXP209_POWER
---help---
Set the voltage (mV) to program the axp pmic aldo4 at, set to 0 to
disable aldo4.
--
2.5.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [U-Boot] [PATCH 3/3] sunxi: power: Columbus: only enable ELDO3 when necessary
2015-10-10 12:40 [U-Boot] [PATCH 1/3] sunxi: power: Add support for disabling axp209 regulators Hans de Goede
2015-10-10 12:40 ` [U-Boot] [PATCH 2/3] sunxi: power: Change axp209 LDO3 and LDO4 default to disabled Hans de Goede
@ 2015-10-10 12:40 ` Hans de Goede
2015-10-11 9:08 ` [U-Boot] [PATCH 1/3] sunxi: power: Add support for disabling axp209 regulators Ian Campbell
2 siblings, 0 replies; 4+ messages in thread
From: Hans de Goede @ 2015-10-10 12:40 UTC (permalink / raw)
To: u-boot
ELDO3 is only necessary when using the lcd-panel, and not when using hdmi,
the display code already takes care of enabling ELDO3 when necessary,
so there is no need to permanently enable it in the deconfig.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
configs/Colombus_defconfig | 1 -
1 file changed, 1 deletion(-)
diff --git a/configs/Colombus_defconfig b/configs/Colombus_defconfig
index d680df1..2ce8cb1 100644
--- a/configs/Colombus_defconfig
+++ b/configs/Colombus_defconfig
@@ -23,5 +23,4 @@ CONFIG_SYS_EXTRA_OPTIONS="SUNXI_GMAC,RGMII"
# CONFIG_CMD_FPGA is not set
CONFIG_ETH_DESIGNWARE=y
CONFIG_AXP_ALDO1_VOLT=3300
-CONFIG_AXP_ELDO3_VOLT=1800
CONFIG_USB_EHCI_HCD=y
--
2.5.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [U-Boot] [PATCH 1/3] sunxi: power: Add support for disabling axp209 regulators
2015-10-10 12:40 [U-Boot] [PATCH 1/3] sunxi: power: Add support for disabling axp209 regulators Hans de Goede
2015-10-10 12:40 ` [U-Boot] [PATCH 2/3] sunxi: power: Change axp209 LDO3 and LDO4 default to disabled Hans de Goede
2015-10-10 12:40 ` [U-Boot] [PATCH 3/3] sunxi: power: Columbus: only enable ELDO3 when necessary Hans de Goede
@ 2015-10-11 9:08 ` Ian Campbell
2 siblings, 0 replies; 4+ messages in thread
From: Ian Campbell @ 2015-10-11 9:08 UTC (permalink / raw)
To: u-boot
On Sat, 2015-10-10 at 14:40 +0200, Hans de Goede wrote:
> Add support for disabling the regulators found on the axp209 pmic.
>
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
All 3 patches in this series: Acked-by: Ian Campbell <ijc@hellion.org.uk>
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2015-10-11 9:08 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-10-10 12:40 [U-Boot] [PATCH 1/3] sunxi: power: Add support for disabling axp209 regulators Hans de Goede
2015-10-10 12:40 ` [U-Boot] [PATCH 2/3] sunxi: power: Change axp209 LDO3 and LDO4 default to disabled Hans de Goede
2015-10-10 12:40 ` [U-Boot] [PATCH 3/3] sunxi: power: Columbus: only enable ELDO3 when necessary Hans de Goede
2015-10-11 9:08 ` [U-Boot] [PATCH 1/3] sunxi: power: Add support for disabling axp209 regulators Ian Campbell
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.