All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 0/5] sunxi: power: axp818: Support ALDO/DLDO/ELDOs
@ 2016-01-12  6:42 Chen-Yu Tsai
  2016-01-12  6:42 ` [U-Boot] [PATCH 1/5] power: axp818: Remove duplicate register definition macros Chen-Yu Tsai
                   ` (5 more replies)
  0 siblings, 6 replies; 8+ messages in thread
From: Chen-Yu Tsai @ 2016-01-12  6:42 UTC (permalink / raw)
  To: u-boot

Hi everyone,

This series adds proper support for ALDO/DLDO/ELDOs on AXP818. FLDOs
aren't covered yet, though the hardware defaults should work nicely
with sane hardware. ALDO functions aren't consolidated or cleaned up
either.

Patch 1 cleans up the axp818 header.

Patch 2 merges the separate axp221 dldo functions into 1.

Patch 3 adds support for axp818's dldos and eldos.

Patch 4 drops the LDO voltages from h8_homlet_v2_defconfig. These
match the defaults.

Patch 5 adds support for axp818's aldos.


Regards
ChenYu


Chen-Yu Tsai (5):
  power: axp818: Remove duplicate register definition macros
  power: axp: merge separate DLDO functions into 1
  power: axp818: Add support for DLDO and ELDO regulators
  sunxi: h8_homlet_v2: Drop LDO settings from defconfig
  sunxi: power: axp818: Enable support for ALDOs

 board/sunxi/board.c            | 16 ++++----
 configs/h8_homlet_v2_defconfig |  3 --
 drivers/power/Kconfig          | 25 +++++++-----
 drivers/power/axp221.c         | 88 ++++++++++--------------------------------
 drivers/power/axp818.c         | 81 ++++++++++++++++++++++++++++++++++++++
 include/axp818.h               |  8 ----
 include/axp_pmic.h             |  5 +--
 7 files changed, 125 insertions(+), 101 deletions(-)

-- 
2.6.4

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [U-Boot] [PATCH 1/5] power: axp818: Remove duplicate register definition macros
  2016-01-12  6:42 [U-Boot] [PATCH 0/5] sunxi: power: axp818: Support ALDO/DLDO/ELDOs Chen-Yu Tsai
@ 2016-01-12  6:42 ` Chen-Yu Tsai
  2016-01-15  3:21   ` Vishnu Patekar
  2016-01-12  6:42 ` [U-Boot] [PATCH 2/5] power: axp: merge separate DLDO functions into 1 Chen-Yu Tsai
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 8+ messages in thread
From: Chen-Yu Tsai @ 2016-01-12  6:42 UTC (permalink / raw)
  To: u-boot

Some of the register definitions are duplicated. Drop them.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
---
 include/axp818.h | 8 --------
 1 file changed, 8 deletions(-)

diff --git a/include/axp818.h b/include/axp818.h
index 1dc6456..46d05ad 100644
--- a/include/axp818.h
+++ b/include/axp818.h
@@ -32,13 +32,6 @@
 #define AXP818_OUTPUT_CTRL3_ALDO2_EN	(1 << 6)
 #define AXP818_OUTPUT_CTRL3_ALDO3_EN	(1 << 7)
 
-#define AXP818_DCDC1_CTRL	0x20
-#define AXP818_DCDC2_CTRL	0x21
-#define AXP818_DCDC3_CTRL	0x22
-#define AXP818_DCDC4_CTRL	0x23
-#define AXP818_DCDC5_CTRL	0x24
-#define AXP818_DCDC6_CTRL	0x25
-
 #define AXP818_DLDO1_CTRL	0x15
 #define AXP818_DLDO2_CTRL	0x16
 #define AXP818_DLDO3_CTRL	0x17
@@ -46,7 +39,6 @@
 #define AXP818_ELDO1_CTRL	0x19
 #define AXP818_ELDO2_CTRL	0x1a
 #define AXP818_ELDO3_CTRL	0x1b
-#define AXP818_ELDO3_CTRL	0x1b
 #define AXP818_FLDO1_CTRL	0x1c
 #define AXP818_FLDO2_3_CTRL	0x1d
 #define AXP818_DCDC1_CTRL	0x20
-- 
2.6.4

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [U-Boot] [PATCH 2/5] power: axp: merge separate DLDO functions into 1
  2016-01-12  6:42 [U-Boot] [PATCH 0/5] sunxi: power: axp818: Support ALDO/DLDO/ELDOs Chen-Yu Tsai
  2016-01-12  6:42 ` [U-Boot] [PATCH 1/5] power: axp818: Remove duplicate register definition macros Chen-Yu Tsai
@ 2016-01-12  6:42 ` Chen-Yu Tsai
  2016-01-12  6:42 ` [U-Boot] [PATCH 3/5] power: axp818: Add support for DLDO and ELDO regulators Chen-Yu Tsai
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 8+ messages in thread
From: Chen-Yu Tsai @ 2016-01-12  6:42 UTC (permalink / raw)
  To: u-boot

Instead of one function for each DLDO regulator, make 1 function that
takes an extra "index". Since the control bits for the DLDO regulators
are contiguous, this makes the function very simple. This removes a lot
of duplicate code.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
---
 board/sunxi/board.c    |  8 ++---
 drivers/power/axp221.c | 88 ++++++++++++--------------------------------------
 include/axp_pmic.h     |  5 +--
 3 files changed, 25 insertions(+), 76 deletions(-)

diff --git a/board/sunxi/board.c b/board/sunxi/board.c
index 386e2e0..85f01fd 100644
--- a/board/sunxi/board.c
+++ b/board/sunxi/board.c
@@ -460,10 +460,10 @@ void sunxi_board_init(void)
 #endif
 
 #ifdef CONFIG_AXP221_POWER
-	power_failed |= axp_set_dldo1(CONFIG_AXP_DLDO1_VOLT);
-	power_failed |= axp_set_dldo2(CONFIG_AXP_DLDO2_VOLT);
-	power_failed |= axp_set_dldo3(CONFIG_AXP_DLDO3_VOLT);
-	power_failed |= axp_set_dldo4(CONFIG_AXP_DLDO4_VOLT);
+	power_failed |= axp_set_dldo(1, CONFIG_AXP_DLDO1_VOLT);
+	power_failed |= axp_set_dldo(2, CONFIG_AXP_DLDO2_VOLT);
+	power_failed |= axp_set_dldo(3, CONFIG_AXP_DLDO3_VOLT);
+	power_failed |= axp_set_dldo(4, CONFIG_AXP_DLDO4_VOLT);
 	power_failed |= axp_set_eldo(1, CONFIG_AXP_ELDO1_VOLT);
 	power_failed |= axp_set_eldo(2, CONFIG_AXP_ELDO2_VOLT);
 	power_failed |= axp_set_eldo(3, CONFIG_AXP_ELDO3_VOLT);
diff --git a/drivers/power/axp221.c b/drivers/power/axp221.c
index 65802e4..e0cbf79 100644
--- a/drivers/power/axp221.c
+++ b/drivers/power/axp221.c
@@ -115,74 +115,6 @@ int axp_set_dcdc5(unsigned int mvolt)
 				AXP221_OUTPUT_CTRL1_DCDC5_EN);
 }
 
-int axp_set_dldo1(unsigned int mvolt)
-{
-	int ret;
-	u8 cfg = axp221_mvolt_to_cfg(mvolt, 700, 3300, 100);
-
-	if (mvolt == 0)
-		return pmic_bus_clrbits(AXP221_OUTPUT_CTRL2,
-					AXP221_OUTPUT_CTRL2_DLDO1_EN);
-
-	ret = pmic_bus_write(AXP221_DLDO1_CTRL, cfg);
-	if (ret)
-		return ret;
-
-	return pmic_bus_setbits(AXP221_OUTPUT_CTRL2,
-				AXP221_OUTPUT_CTRL2_DLDO1_EN);
-}
-
-int axp_set_dldo2(unsigned int mvolt)
-{
-	int ret;
-	u8 cfg = axp221_mvolt_to_cfg(mvolt, 700, 3300, 100);
-
-	if (mvolt == 0)
-		return pmic_bus_clrbits(AXP221_OUTPUT_CTRL2,
-					AXP221_OUTPUT_CTRL2_DLDO2_EN);
-
-	ret = pmic_bus_write(AXP221_DLDO2_CTRL, cfg);
-	if (ret)
-		return ret;
-
-	return pmic_bus_setbits(AXP221_OUTPUT_CTRL2,
-				AXP221_OUTPUT_CTRL2_DLDO2_EN);
-}
-
-int axp_set_dldo3(unsigned int mvolt)
-{
-	int ret;
-	u8 cfg = axp221_mvolt_to_cfg(mvolt, 700, 3300, 100);
-
-	if (mvolt == 0)
-		return pmic_bus_clrbits(AXP221_OUTPUT_CTRL2,
-					AXP221_OUTPUT_CTRL2_DLDO3_EN);
-
-	ret = pmic_bus_write(AXP221_DLDO3_CTRL, cfg);
-	if (ret)
-		return ret;
-
-	return pmic_bus_setbits(AXP221_OUTPUT_CTRL2,
-				AXP221_OUTPUT_CTRL2_DLDO3_EN);
-}
-
-int axp_set_dldo4(unsigned int mvolt)
-{
-	int ret;
-	u8 cfg = axp221_mvolt_to_cfg(mvolt, 700, 3300, 100);
-
-	if (mvolt == 0)
-		return pmic_bus_clrbits(AXP221_OUTPUT_CTRL2,
-					AXP221_OUTPUT_CTRL2_DLDO4_EN);
-
-	ret = pmic_bus_write(AXP221_DLDO4_CTRL, cfg);
-	if (ret)
-		return ret;
-
-	return pmic_bus_setbits(AXP221_OUTPUT_CTRL2,
-				AXP221_OUTPUT_CTRL2_DLDO4_EN);
-}
-
 int axp_set_aldo1(unsigned int mvolt)
 {
 	int ret;
@@ -234,6 +166,26 @@ int axp_set_aldo3(unsigned int mvolt)
 				AXP221_OUTPUT_CTRL3_ALDO3_EN);
 }
 
+int axp_set_dldo(int dldo_num, unsigned int mvolt)
+{
+	u8 cfg = axp221_mvolt_to_cfg(mvolt, 700, 3300, 100);
+	int ret;
+
+	if (dldo_num < 1 || dldo_num > 4)
+		return -EINVAL;
+
+	if (mvolt == 0)
+		return pmic_bus_clrbits(AXP221_OUTPUT_CTRL2,
+				AXP221_OUTPUT_CTRL2_DLDO1_EN << (dldo_num - 1));
+
+	ret = pmic_bus_write(AXP221_DLDO1_CTRL + (dldo_num - 1), cfg);
+	if (ret)
+		return ret;
+
+	return pmic_bus_setbits(AXP221_OUTPUT_CTRL2,
+				AXP221_OUTPUT_CTRL2_DLDO1_EN << (dldo_num - 1));
+}
+
 int axp_set_eldo(int eldo_num, unsigned int mvolt)
 {
 	int ret;
diff --git a/include/axp_pmic.h b/include/axp_pmic.h
index 3b01c49..0f14683 100644
--- a/include/axp_pmic.h
+++ b/include/axp_pmic.h
@@ -29,10 +29,7 @@ int axp_set_aldo1(unsigned int mvolt);
 int axp_set_aldo2(unsigned int mvolt);
 int axp_set_aldo3(unsigned int mvolt);
 int axp_set_aldo4(unsigned int mvolt);
-int axp_set_dldo1(unsigned int mvolt);
-int axp_set_dldo2(unsigned int mvolt);
-int axp_set_dldo3(unsigned int mvolt);
-int axp_set_dldo4(unsigned int mvolt);
+int axp_set_dldo(int dldo_num, unsigned int mvolt);
 int axp_set_eldo(int eldo_num, unsigned int mvolt);
 int axp_init(void);
 int axp_get_sid(unsigned int *sid);
-- 
2.6.4

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [U-Boot] [PATCH 3/5] power: axp818: Add support for DLDO and ELDO regulators
  2016-01-12  6:42 [U-Boot] [PATCH 0/5] sunxi: power: axp818: Support ALDO/DLDO/ELDOs Chen-Yu Tsai
  2016-01-12  6:42 ` [U-Boot] [PATCH 1/5] power: axp818: Remove duplicate register definition macros Chen-Yu Tsai
  2016-01-12  6:42 ` [U-Boot] [PATCH 2/5] power: axp: merge separate DLDO functions into 1 Chen-Yu Tsai
@ 2016-01-12  6:42 ` Chen-Yu Tsai
  2016-01-12  6:42 ` [U-Boot] [PATCH 4/5] sunxi: h8_homlet_v2: Drop LDO settings from defconfig Chen-Yu Tsai
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 8+ messages in thread
From: Chen-Yu Tsai @ 2016-01-12  6:42 UTC (permalink / raw)
  To: u-boot

AXP818 provides an array of LDOs to provide power to various peripherals.
None of these regulators are critical.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
---
 drivers/power/Kconfig  | 12 ++++++------
 drivers/power/axp818.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 50 insertions(+), 6 deletions(-)

diff --git a/drivers/power/Kconfig b/drivers/power/Kconfig
index e86dd72..6f61763 100644
--- a/drivers/power/Kconfig
+++ b/drivers/power/Kconfig
@@ -164,7 +164,7 @@ config AXP_ALDO4_VOLT
 
 config AXP_DLDO1_VOLT
 	int "axp pmic dldo1 voltage"
-	depends on AXP221_POWER
+	depends on AXP221_POWER || AXP818_POWER
 	default 0
 	---help---
 	Set the voltage (mV) to program the axp pmic dldo1 at, set to 0 to
@@ -174,7 +174,7 @@ config AXP_DLDO1_VOLT
 
 config AXP_DLDO2_VOLT
 	int "axp pmic dldo2 voltage"
-	depends on AXP221_POWER
+	depends on AXP221_POWER || AXP818_POWER
 	default 0
 	---help---
 	Set the voltage (mV) to program the axp pmic dldo2 at, set to 0 to
@@ -182,7 +182,7 @@ config AXP_DLDO2_VOLT
 
 config AXP_DLDO3_VOLT
 	int "axp pmic dldo3 voltage"
-	depends on AXP221_POWER
+	depends on AXP221_POWER || AXP818_POWER
 	default 0
 	---help---
 	Set the voltage (mV) to program the axp pmic dldo3 at, set to 0 to
@@ -198,7 +198,7 @@ config AXP_DLDO4_VOLT
 
 config AXP_ELDO1_VOLT
 	int "axp pmic eldo1 voltage"
-	depends on AXP221_POWER
+	depends on AXP221_POWER || AXP818_POWER
 	default 0
 	---help---
 	Set the voltage (mV) to program the axp pmic eldo1 at, set to 0 to
@@ -206,7 +206,7 @@ config AXP_ELDO1_VOLT
 
 config AXP_ELDO2_VOLT
 	int "axp pmic eldo2 voltage"
-	depends on AXP221_POWER
+	depends on AXP221_POWER || AXP818_POWER
 	default 0
 	---help---
 	Set the voltage (mV) to program the axp pmic eldo2 at, set to 0 to
@@ -214,7 +214,7 @@ config AXP_ELDO2_VOLT
 
 config AXP_ELDO3_VOLT
 	int "axp pmic eldo3 voltage"
-	depends on AXP221_POWER
+	depends on AXP221_POWER || AXP818_POWER
 	default 0
 	---help---
 	Set the voltage (mV) to program the axp pmic eldo3 at, set to 0 to
diff --git a/drivers/power/axp818.c b/drivers/power/axp818.c
index 4b21a83..3119b64 100644
--- a/drivers/power/axp818.c
+++ b/drivers/power/axp818.c
@@ -110,6 +110,50 @@ int axp_set_dcdc5(unsigned int mvolt)
 				AXP818_OUTPUT_CTRL1_DCDC5_EN);
 }
 
+int axp_set_dldo(int dldo_num, unsigned int mvolt)
+{
+	int ret;
+	u8 cfg;
+
+	if (dldo_num < 1 || dldo_num > 4)
+		return -EINVAL;
+
+	if (mvolt == 0)
+		return pmic_bus_clrbits(AXP818_OUTPUT_CTRL2,
+				AXP818_OUTPUT_CTRL2_DLDO1_EN << (dldo_num - 1));
+
+	cfg = axp818_mvolt_to_cfg(mvolt, 700, 3300, 100);
+	if (dldo_num == 2 && mvolt > 3300)
+		cfg += 1 + axp818_mvolt_to_cfg(mvolt, 3400, 4200, 200);
+	ret = pmic_bus_write(AXP818_ELDO1_CTRL + (dldo_num - 1), cfg);
+	if (ret)
+		return ret;
+
+	return pmic_bus_setbits(AXP818_OUTPUT_CTRL2,
+				AXP818_OUTPUT_CTRL2_DLDO1_EN << (dldo_num - 1));
+}
+
+int axp_set_eldo(int eldo_num, unsigned int mvolt)
+{
+	int ret;
+	u8 cfg;
+
+	if (eldo_num < 1 || eldo_num > 3)
+		return -EINVAL;
+
+	if (mvolt == 0)
+		return pmic_bus_clrbits(AXP818_OUTPUT_CTRL2,
+				AXP818_OUTPUT_CTRL2_ELDO1_EN << (eldo_num - 1));
+
+	cfg = axp818_mvolt_to_cfg(mvolt, 700, 1900, 50);
+	ret = pmic_bus_write(AXP818_ELDO1_CTRL + (eldo_num - 1), cfg);
+	if (ret)
+		return ret;
+
+	return pmic_bus_setbits(AXP818_OUTPUT_CTRL2,
+				AXP818_OUTPUT_CTRL2_ELDO1_EN << (eldo_num - 1));
+}
+
 int axp_init(void)
 {
 	u8 axp_chip_id;
-- 
2.6.4

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [U-Boot] [PATCH 4/5] sunxi: h8_homlet_v2: Drop LDO settings from defconfig
  2016-01-12  6:42 [U-Boot] [PATCH 0/5] sunxi: power: axp818: Support ALDO/DLDO/ELDOs Chen-Yu Tsai
                   ` (2 preceding siblings ...)
  2016-01-12  6:42 ` [U-Boot] [PATCH 3/5] power: axp818: Add support for DLDO and ELDO regulators Chen-Yu Tsai
@ 2016-01-12  6:42 ` Chen-Yu Tsai
  2016-01-12  6:42 ` [U-Boot] [PATCH 5/5] sunxi: power: axp818: Enable support for ALDOs Chen-Yu Tsai
  2016-01-22 14:10 ` [U-Boot] [linux-sunxi] [PATCH 0/5] sunxi: power: axp818: Support ALDO/DLDO/ELDOs Hans de Goede
  5 siblings, 0 replies; 8+ messages in thread
From: Chen-Yu Tsai @ 2016-01-12  6:42 UTC (permalink / raw)
  To: u-boot

The LDO settings in this defconfig are either wrong (ALDOs must not be 0)
or the same as Kconfig defaults.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
---
 configs/h8_homlet_v2_defconfig | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/configs/h8_homlet_v2_defconfig b/configs/h8_homlet_v2_defconfig
index dc2809a..ecd04a6 100644
--- a/configs/h8_homlet_v2_defconfig
+++ b/configs/h8_homlet_v2_defconfig
@@ -19,6 +19,3 @@ CONFIG_AXP_DCDC2_VOLT=900
 CONFIG_AXP_DCDC3_VOLT=900
 CONFIG_AXP_DCDC4_VOLT=0
 CONFIG_AXP_DCDC5_VOLT=1500
-CONFIG_AXP_ALDO2_VOLT=0
-CONFIG_AXP_ALDO3_VOLT=0
-CONFIG_AXP_DLDO4_VOLT=0
-- 
2.6.4

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [U-Boot] [PATCH 5/5] sunxi: power: axp818: Enable support for ALDOs
  2016-01-12  6:42 [U-Boot] [PATCH 0/5] sunxi: power: axp818: Support ALDO/DLDO/ELDOs Chen-Yu Tsai
                   ` (3 preceding siblings ...)
  2016-01-12  6:42 ` [U-Boot] [PATCH 4/5] sunxi: h8_homlet_v2: Drop LDO settings from defconfig Chen-Yu Tsai
@ 2016-01-12  6:42 ` Chen-Yu Tsai
  2016-01-22 14:10 ` [U-Boot] [linux-sunxi] [PATCH 0/5] sunxi: power: axp818: Support ALDO/DLDO/ELDOs Hans de Goede
  5 siblings, 0 replies; 8+ messages in thread
From: Chen-Yu Tsai @ 2016-01-12  6:42 UTC (permalink / raw)
  To: u-boot

Previously, AXP818 ALDO support was partially added to Kconfig, but
never enabled in the board file, nor properly set or configured in
Kconfig. The boards continue to work because the AXP818 is designed
to pair with the A83T/H8, and the default voltages match the reference
design's requirements.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
---
 board/sunxi/board.c    |  8 +++-----
 drivers/power/Kconfig  | 13 ++++++++++---
 drivers/power/axp818.c | 37 +++++++++++++++++++++++++++++++++++++
 3 files changed, 50 insertions(+), 8 deletions(-)

diff --git a/board/sunxi/board.c b/board/sunxi/board.c
index 85f01fd..e0ff650 100644
--- a/board/sunxi/board.c
+++ b/board/sunxi/board.c
@@ -446,20 +446,18 @@ void sunxi_board_init(void)
 	power_failed |= axp_set_dcdc5(CONFIG_AXP_DCDC5_VOLT);
 #endif
 
-#ifdef CONFIG_AXP221_POWER
+#if defined CONFIG_AXP221_POWER || defined CONFIG_AXP818_POWER
 	power_failed |= axp_set_aldo1(CONFIG_AXP_ALDO1_VOLT);
 #endif
-#ifndef CONFIG_AXP818_POWER
 	power_failed |= axp_set_aldo2(CONFIG_AXP_ALDO2_VOLT);
-#endif
-#if !defined(CONFIG_AXP152_POWER) && !defined(CONFIG_AXP818_POWER)
+#if !defined(CONFIG_AXP152_POWER)
 	power_failed |= axp_set_aldo3(CONFIG_AXP_ALDO3_VOLT);
 #endif
 #ifdef CONFIG_AXP209_POWER
 	power_failed |= axp_set_aldo4(CONFIG_AXP_ALDO4_VOLT);
 #endif
 
-#ifdef CONFIG_AXP221_POWER
+#if defined(CONFIG_AXP221_POWER) || defined(CONFIG_AXP818_POWER)
 	power_failed |= axp_set_dldo(1, CONFIG_AXP_DLDO1_VOLT);
 	power_failed |= axp_set_dldo(2, CONFIG_AXP_DLDO2_VOLT);
 	power_failed |= axp_set_dldo(3, CONFIG_AXP_DLDO3_VOLT);
diff --git a/drivers/power/Kconfig b/drivers/power/Kconfig
index 6f61763..e91a5c0 100644
--- a/drivers/power/Kconfig
+++ b/drivers/power/Kconfig
@@ -118,20 +118,24 @@ config AXP_DCDC5_VOLT
 
 config AXP_ALDO1_VOLT
 	int "axp pmic (a)ldo1 voltage"
-	depends on AXP221_POWER
+	depends on AXP221_POWER || AXP818_POWER
 	default 0 if MACH_SUN6I
+	default 1800 if MACH_SUN8I_A83T
 	default 3000 if MACH_SUN8I
 	---help---
 	Set the voltage (mV) to program the axp pmic aldo1 at, set to 0 to
 	disable aldo1.
 	On A31 boards aldo1 is often used to power the wifi module.
 	On A23 / A33 boards aldo1 is used for VCC-IO and should be 3.0V.
+	On A83T / H8 boards aldo1 is used for MIPI CSI, DSI, HDMI, EFUSE, and
+	should be 1.8V.
 
 config AXP_ALDO2_VOLT
 	int "axp pmic (a)ldo2 voltage"
 	depends on AXP152_POWER || AXP209_POWER || AXP221_POWER || AXP818_POWER
 	default 3000 if AXP152_POWER || AXP209_POWER
 	default 0 if MACH_SUN6I
+	default 1800 if MACH_SUN8I_A83T
 	default 2500 if MACH_SUN8I
 	---help---
 	Set the voltage (mV) to program the axp pmic aldo2 at, set to 0 to
@@ -140,18 +144,21 @@ config AXP_ALDO2_VOLT
 	On A31 boards aldo2 is typically unused and should be disabled.
 	On A31 boards aldo2 may be used for LPDDR2 then it should be 1.8V.
 	On A23 / A33 boards aldo2 is used for VDD-DLL and should be 2.5V.
+	On A83T / H8 boards aldo2 powers VDD-DLL, VCC18-PLL, CPVDD, VDD18-ADC,
+	LPDDR2, and the codec. It should be 1.8V.
 
 config AXP_ALDO3_VOLT
 	int "axp pmic (a)ldo3 voltage"
 	depends on AXP209_POWER || AXP221_POWER || AXP818_POWER
-	default 0 if AXP209_POWER || AXP818_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
 	disable aldo3.
 	On A10(s) / A13 / A20 boards aldo3 should be 2.8V.
 	On A23 / A31 / A33 boards aldo3 is VCC-PLL and AVCC and should be 3.0V.
-	On A83T aldo3 is used for LVDS, DSI, MIPI, HDMI, etc.
+	On A83T / H8 boards aldo3 is AVCC, VCC-PL, and VCC-LED, and should be
+	3.0V.
 
 config AXP_ALDO4_VOLT
 	int "axp pmic (a)ldo4 voltage"
diff --git a/drivers/power/axp818.c b/drivers/power/axp818.c
index 3119b64..e885d02 100644
--- a/drivers/power/axp818.c
+++ b/drivers/power/axp818.c
@@ -110,6 +110,43 @@ int axp_set_dcdc5(unsigned int mvolt)
 				AXP818_OUTPUT_CTRL1_DCDC5_EN);
 }
 
+int axp_set_aldo(int aldo_num, unsigned int mvolt)
+{
+	int ret;
+	u8 cfg;
+
+	if (aldo_num < 1 || aldo_num > 3)
+		return -EINVAL;
+
+	if (mvolt == 0)
+		return pmic_bus_clrbits(AXP818_OUTPUT_CTRL3,
+				AXP818_OUTPUT_CTRL3_ALDO1_EN << (aldo_num - 1));
+
+	cfg = axp818_mvolt_to_cfg(mvolt, 700, 3300, 100);
+	ret = pmic_bus_write(AXP818_ALDO1_CTRL + (aldo_num - 1), cfg);
+	if (ret)
+		return ret;
+
+	return pmic_bus_setbits(AXP818_OUTPUT_CTRL3,
+				AXP818_OUTPUT_CTRL3_ALDO1_EN << (aldo_num - 1));
+}
+
+/* TODO: re-work other AXP drivers to consolidate ALDO functions. */
+int axp_set_aldo1(unsigned int mvolt)
+{
+	return axp_set_aldo(1, mvolt);
+}
+
+int axp_set_aldo2(unsigned int mvolt)
+{
+	return axp_set_aldo(2, mvolt);
+}
+
+int axp_set_aldo3(unsigned int mvolt)
+{
+	return axp_set_aldo(3, mvolt);
+}
+
 int axp_set_dldo(int dldo_num, unsigned int mvolt)
 {
 	int ret;
-- 
2.6.4

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [U-Boot] [PATCH 1/5] power: axp818: Remove duplicate register definition macros
  2016-01-12  6:42 ` [U-Boot] [PATCH 1/5] power: axp818: Remove duplicate register definition macros Chen-Yu Tsai
@ 2016-01-15  3:21   ` Vishnu Patekar
  0 siblings, 0 replies; 8+ messages in thread
From: Vishnu Patekar @ 2016-01-15  3:21 UTC (permalink / raw)
  To: u-boot

Hello Wens,

Thanks for correcting it.

Regards,
Vishnu

On Tue, Jan 12, 2016 at 2:42 PM, Chen-Yu Tsai <wens@csie.org> wrote:
> Some of the register definitions are duplicated. Drop them.
>
> Signed-off-by: Chen-Yu Tsai <wens@csie.org>
> ---
>  include/axp818.h | 8 --------
>  1 file changed, 8 deletions(-)
>
> diff --git a/include/axp818.h b/include/axp818.h
> index 1dc6456..46d05ad 100644
> --- a/include/axp818.h
> +++ b/include/axp818.h
> @@ -32,13 +32,6 @@
>  #define AXP818_OUTPUT_CTRL3_ALDO2_EN   (1 << 6)
>  #define AXP818_OUTPUT_CTRL3_ALDO3_EN   (1 << 7)
>
> -#define AXP818_DCDC1_CTRL      0x20
> -#define AXP818_DCDC2_CTRL      0x21
> -#define AXP818_DCDC3_CTRL      0x22
> -#define AXP818_DCDC4_CTRL      0x23
> -#define AXP818_DCDC5_CTRL      0x24
> -#define AXP818_DCDC6_CTRL      0x25
> -
>  #define AXP818_DLDO1_CTRL      0x15
>  #define AXP818_DLDO2_CTRL      0x16
>  #define AXP818_DLDO3_CTRL      0x17
> @@ -46,7 +39,6 @@
>  #define AXP818_ELDO1_CTRL      0x19
>  #define AXP818_ELDO2_CTRL      0x1a
>  #define AXP818_ELDO3_CTRL      0x1b
> -#define AXP818_ELDO3_CTRL      0x1b
>  #define AXP818_FLDO1_CTRL      0x1c
>  #define AXP818_FLDO2_3_CTRL    0x1d
>  #define AXP818_DCDC1_CTRL      0x20
> --
> 2.6.4
>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [U-Boot] [linux-sunxi] [PATCH 0/5] sunxi: power: axp818: Support ALDO/DLDO/ELDOs
  2016-01-12  6:42 [U-Boot] [PATCH 0/5] sunxi: power: axp818: Support ALDO/DLDO/ELDOs Chen-Yu Tsai
                   ` (4 preceding siblings ...)
  2016-01-12  6:42 ` [U-Boot] [PATCH 5/5] sunxi: power: axp818: Enable support for ALDOs Chen-Yu Tsai
@ 2016-01-22 14:10 ` Hans de Goede
  5 siblings, 0 replies; 8+ messages in thread
From: Hans de Goede @ 2016-01-22 14:10 UTC (permalink / raw)
  To: u-boot

Hi,

On 12-01-16 07:42, Chen-Yu Tsai wrote:
> Hi everyone,
>
> This series adds proper support for ALDO/DLDO/ELDOs on AXP818. FLDOs
> aren't covered yet, though the hardware defaults should work nicely
> with sane hardware. ALDO functions aren't consolidated or cleaned up
> either.
>
> Patch 1 cleans up the axp818 header.
>
> Patch 2 merges the separate axp221 dldo functions into 1.
>
> Patch 3 adds support for axp818's dldos and eldos.
>
> Patch 4 drops the LDO voltages from h8_homlet_v2_defconfig. These
> match the defaults.
>
> Patch 5 adds support for axp818's aldos.

Thanks, applied.

Regards,

Hans

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2016-01-22 14:10 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-01-12  6:42 [U-Boot] [PATCH 0/5] sunxi: power: axp818: Support ALDO/DLDO/ELDOs Chen-Yu Tsai
2016-01-12  6:42 ` [U-Boot] [PATCH 1/5] power: axp818: Remove duplicate register definition macros Chen-Yu Tsai
2016-01-15  3:21   ` Vishnu Patekar
2016-01-12  6:42 ` [U-Boot] [PATCH 2/5] power: axp: merge separate DLDO functions into 1 Chen-Yu Tsai
2016-01-12  6:42 ` [U-Boot] [PATCH 3/5] power: axp818: Add support for DLDO and ELDO regulators Chen-Yu Tsai
2016-01-12  6:42 ` [U-Boot] [PATCH 4/5] sunxi: h8_homlet_v2: Drop LDO settings from defconfig Chen-Yu Tsai
2016-01-12  6:42 ` [U-Boot] [PATCH 5/5] sunxi: power: axp818: Enable support for ALDOs Chen-Yu Tsai
2016-01-22 14:10 ` [U-Boot] [linux-sunxi] [PATCH 0/5] sunxi: power: axp818: Support ALDO/DLDO/ELDOs Hans de Goede

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.