All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH v3 0/9] Stop AXP from crashing when enabling LDO3
@ 2018-11-21 18:05 Priit Laes
  2018-11-21 18:05 ` [U-Boot] [PATCH v3 1/9] sunxi: board: Print error after power initialization fails Priit Laes
                   ` (13 more replies)
  0 siblings, 14 replies; 26+ messages in thread
From: Priit Laes @ 2018-11-21 18:05 UTC (permalink / raw)
  To: u-boot

This is a resend/v2 of a "Stop AXP from crashing when enabling LDO3" series,
posted by Olliver Schinagl in March 2017. Unfortunately it never got past
initial discussion [1], but most Olimex Lime2 boards are still running
into this bug.

When powering up an AXP209, the default value for LDO3 output is enabled. This
works fine. However if for whatever reason, LDO3 is disabled, for example by OS
during reboot and u-boot enables LDO3 again, the PMIC shuts down (without
setting an interrupt) causing the board to hang. This behavior has been seen
from Linux as well, u-boot disables LDO3 as a default value, the kernel enables
it per its DTS, the kernel hangs as the PMIC gets shut down.

The root cause is that some boards have too high capacitance on the LDO3 output
port causing inrush currents exceeding the maximum of the AXP209.

The fix is to turn on the LDO3 at the lowest possible voltage and then set the
final voltage.

If the capacitance is really big (due to a connected device for example) the
AXP209 also features VRC, or Voltage Rate Control, allowing voltage to ramp up
even slower.

Similar changes need to be also implemented in the operating system driver
side when driver needs to toggle power for the ALDO3 regulator.

This patch series implements the above with a few tiny cleanups.

The initial discussion with some scope screenshots can be found in the
linux-sunxi mailing list [0].

And the initial series were posted to u-boot mailing list [1].

Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
Signed-off-by: Priit Laes <plaes@plaes.org>

[0] https://groups.google.com/forum/m/#!topic/linux-sunxi/EDvEsbHHqQI
[1] https://lists.denx.de/pipermail/u-boot/2017-March/282789.html

--
Changes since v2:
- Collected Acked-by tags, patches 1,3-5 are now ripe for picking.
- Olliver fixed wrong code in patch 2, thanks for Maxime for spotting
- Fixed checkpatch error in patch 5
- Expanded commit message for patch 6

Changes from initial submission:
- Rebased on top of latest master and fixed conflicts
- Added comments about datasheet errors for patch 6
- Fixed some typos and checkpatch errors
- Added patch to Olimex Lime2 eMMC board

Olliver Schinagl (8):
  sunxi: board: Print error after power initialization fails
  sunxi: pmic_bus: Decrease boot time by not writing duplicate data
  power: axp209: Use BIT() macro
  power: axp209: Define the chip version mask
  power: axp209: Reduce magic values by adding defines for LDO[234]
  power: axp209: Add support for voltage rate control on LDO3
  power: axp209: Limit inrush current for broken boards
  arm: sunxi: Reduce inrush current on Olimex OLinuXino-A20-Lime2

Priit Laes (1):
  arm: sunxi: Reduce inrush current on Olimex OLinuXino-A20-Lime2-eMMC

 arch/arm/mach-sunxi/pmic_bus.c             |  6 ++-
 board/sunxi/board.c                        | 18 +++---
 configs/A20-OLinuXino-Lime2-eMMC_defconfig |  2 +-
 configs/A20-OLinuXino-Lime2_defconfig      |  2 +-
 drivers/power/Kconfig                      | 43 ++++++++++++++-
 drivers/power/axp209.c                     | 66 ++++++++++++++++++----
 include/axp209.h                           | 70 +++++++++++++++++------
 7 files changed, 172 insertions(+), 35 deletions(-)

base-commit: a3e1653ddeb02f39481eba572275016171e9670c
-- 
git-series 0.9.1

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

* [U-Boot] [PATCH v3 1/9] sunxi: board: Print error after power initialization fails
  2018-11-21 18:05 [U-Boot] [PATCH v3 0/9] Stop AXP from crashing when enabling LDO3 Priit Laes
@ 2018-11-21 18:05 ` Priit Laes
  2018-11-21 18:05 ` [U-Boot] [PATCH v3 2/9] sunxi: pmic_bus: Decrease boot time by not writing duplicate data Priit Laes
                   ` (12 subsequent siblings)
  13 siblings, 0 replies; 26+ messages in thread
From: Priit Laes @ 2018-11-21 18:05 UTC (permalink / raw)
  To: u-boot

From: Olliver Schinagl <oliver@schinagl.nl>

Currently during init, we enable all power, then enable the dram and
after that check whether there was an error during power-up.

This makes little sense, we should enable power and then check if power
was brought up properly before we continue to initialize other things.

This patch moves the DRAM init after the power failure check.

Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
Signed-off-by: Priit Laes <plaes@plaes.org>
Acked-by: Maxime Ripard <maxime.ripard@bootlin.com>
---
 board/sunxi/board.c | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/board/sunxi/board.c b/board/sunxi/board.c
index 64ccbc7..26284db 100644
--- a/board/sunxi/board.c
+++ b/board/sunxi/board.c
@@ -637,13 +637,6 @@ void sunxi_board_init(void)
 	power_failed |= axp_set_sw(IS_ENABLED(CONFIG_AXP_SW_ON));
 #endif
 #endif
-	printf("DRAM:");
-	gd->ram_size = sunxi_dram_init();
-	printf(" %d MiB\n", (int)(gd->ram_size >> 20));
-	if (!gd->ram_size)
-		hang();
-
-	sunxi_spl_store_dram_size(gd->ram_size);
 
 	/*
 	 * Only clock up the CPU to full speed if we are reasonably
@@ -652,7 +645,16 @@ void sunxi_board_init(void)
 	if (!power_failed)
 		clock_set_pll1(CONFIG_SYS_CLK_FREQ);
 	else
-		printf("Failed to set core voltage! Can't set CPU frequency\n");
+		printf("Error setting up the power controller.\n"
+		       "CPU frequency not set.\n");
+
+	printf("DRAM:");
+	gd->ram_size = sunxi_dram_init();
+	printf(" %d MiB\n", (int)(gd->ram_size >> 20));
+	if (!gd->ram_size)
+		hang();
+
+	sunxi_spl_store_dram_size(gd->ram_size);
 }
 #endif
 
-- 
git-series 0.9.1

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

* [U-Boot] [PATCH v3 2/9] sunxi: pmic_bus: Decrease boot time by not writing duplicate data
  2018-11-21 18:05 [U-Boot] [PATCH v3 0/9] Stop AXP from crashing when enabling LDO3 Priit Laes
  2018-11-21 18:05 ` [U-Boot] [PATCH v3 1/9] sunxi: board: Print error after power initialization fails Priit Laes
@ 2018-11-21 18:05 ` Priit Laes
  2018-11-22  8:21   ` Maxime Ripard
  2018-11-21 18:05 ` [U-Boot] [PATCH v3 3/9] power: axp209: Use BIT() macro Priit Laes
                   ` (11 subsequent siblings)
  13 siblings, 1 reply; 26+ messages in thread
From: Priit Laes @ 2018-11-21 18:05 UTC (permalink / raw)
  To: u-boot

From: Olliver Schinagl <oliver@schinagl.nl>

When we clear a pmic_bus bit, we do a read-modify-write operation.
We waste some time however, by writing back the exact samea value
that was already set in the chip. Let us thus only do the write
in case data was changed.

Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
Signed-off-by: Priit Laes <plaes@plaes.org>

--
Changes since v2:
- Fix code for pmic_bus_setbits
---
 arch/arm/mach-sunxi/pmic_bus.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/arch/arm/mach-sunxi/pmic_bus.c b/arch/arm/mach-sunxi/pmic_bus.c
index 5d91d7e..dea42de 100644
--- a/arch/arm/mach-sunxi/pmic_bus.c
+++ b/arch/arm/mach-sunxi/pmic_bus.c
@@ -101,6 +101,9 @@ int pmic_bus_setbits(u8 reg, u8 bits)
 	if (ret)
 		return ret;
 
+	if ((val & bits) == bits)
+		return 0;
+
 	val |= bits;
 	return pmic_bus_write(reg, val);
 }
@@ -114,6 +117,9 @@ int pmic_bus_clrbits(u8 reg, u8 bits)
 	if (ret)
 		return ret;
 
+	if (!(val & bits))
+		return 0;
+
 	val &= ~bits;
 	return pmic_bus_write(reg, val);
 }
-- 
git-series 0.9.1

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

* [U-Boot] [PATCH v3 3/9] power: axp209: Use BIT() macro
  2018-11-21 18:05 [U-Boot] [PATCH v3 0/9] Stop AXP from crashing when enabling LDO3 Priit Laes
  2018-11-21 18:05 ` [U-Boot] [PATCH v3 1/9] sunxi: board: Print error after power initialization fails Priit Laes
  2018-11-21 18:05 ` [U-Boot] [PATCH v3 2/9] sunxi: pmic_bus: Decrease boot time by not writing duplicate data Priit Laes
@ 2018-11-21 18:05 ` Priit Laes
  2018-11-21 18:05 ` [U-Boot] [PATCH v3 4/9] power: axp209: Define the chip version mask Priit Laes
                   ` (10 subsequent siblings)
  13 siblings, 0 replies; 26+ messages in thread
From: Priit Laes @ 2018-11-21 18:05 UTC (permalink / raw)
  To: u-boot

From: Olliver Schinagl <oliver@schinagl.nl>

Use the standard BIT() macro for bitfield definitions in headers.

Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
Signed-off-by: Priit Laes <plaes@plaes.org>
Acked-by: Maxime Ripard <maxime.ripard@bootlin.com>
---
 include/axp209.h | 34 ++++++++++++++++++----------------
 1 file changed, 18 insertions(+), 16 deletions(-)

diff --git a/include/axp209.h b/include/axp209.h
index b7de6ed..3a4fc28 100644
--- a/include/axp209.h
+++ b/include/axp209.h
@@ -3,6 +3,8 @@
  * (C) Copyright 2012 Henrik Nordstrom <henrik@henriknordstrom.net>
  */
 
+#include <linux/bitops.h>
+
 enum axp209_reg {
 	AXP209_POWER_STATUS = 0x00,
 	AXP209_CHIP_VERSION = 0x03,
@@ -20,29 +22,29 @@ enum axp209_reg {
 	AXP209_SHUTDOWN = 0x32,
 };
 
-#define AXP209_POWER_STATUS_ON_BY_DC	(1 << 0)
-#define AXP209_POWER_STATUS_VBUS_USABLE	(1 << 4)
+#define AXP209_POWER_STATUS_ON_BY_DC	BIT(0)
+#define AXP209_POWER_STATUS_VBUS_USABLE	BIT(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_OUTPUT_CTRL_EXTEN	BIT(0)
+#define AXP209_OUTPUT_CTRL_DCDC3	BIT(1)
+#define AXP209_OUTPUT_CTRL_LDO2		BIT(2)
+#define AXP209_OUTPUT_CTRL_LDO4		BIT(3)
+#define AXP209_OUTPUT_CTRL_DCDC2	BIT(4)
+#define AXP209_OUTPUT_CTRL_LDO3		BIT(6)
 
-#define AXP209_IRQ5_PEK_UP		(1 << 6)
-#define AXP209_IRQ5_PEK_DOWN		(1 << 5)
+#define AXP209_IRQ5_PEK_UP		BIT(6)
+#define AXP209_IRQ5_PEK_DOWN		BIT(5)
 
-#define AXP209_POWEROFF			(1 << 7)
+#define AXP209_POWEROFF			BIT(7)
 
 /* For axp_gpio.c */
 #define AXP_POWER_STATUS		0x00
-#define AXP_POWER_STATUS_VBUS_PRESENT		(1 << 5)
+#define AXP_POWER_STATUS_VBUS_PRESENT	BIT(5)
 #define AXP_GPIO0_CTRL			0x90
 #define AXP_GPIO1_CTRL			0x92
 #define AXP_GPIO2_CTRL			0x93
-#define AXP_GPIO_CTRL_OUTPUT_LOW		0x00 /* Drive pin low */
-#define AXP_GPIO_CTRL_OUTPUT_HIGH		0x01 /* Drive pin high */
-#define AXP_GPIO_CTRL_INPUT			0x02 /* Input */
+#define AXP_GPIO_CTRL_OUTPUT_LOW	0x00 /* Drive pin low */
+#define AXP_GPIO_CTRL_OUTPUT_HIGH	0x01 /* Drive pin high */
+#define AXP_GPIO_CTRL_INPUT		0x02 /* Input */
 #define AXP_GPIO_STATE			0x94
-#define AXP_GPIO_STATE_OFFSET			4
+#define AXP_GPIO_STATE_OFFSET		4
-- 
git-series 0.9.1

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

* [U-Boot] [PATCH v3 4/9] power: axp209: Define the chip version mask
  2018-11-21 18:05 [U-Boot] [PATCH v3 0/9] Stop AXP from crashing when enabling LDO3 Priit Laes
                   ` (2 preceding siblings ...)
  2018-11-21 18:05 ` [U-Boot] [PATCH v3 3/9] power: axp209: Use BIT() macro Priit Laes
@ 2018-11-21 18:05 ` Priit Laes
  2018-11-21 18:05 ` [U-Boot] [PATCH v3 5/9] power: axp209: Reduce magic values by adding defines for LDO[234] Priit Laes
                   ` (9 subsequent siblings)
  13 siblings, 0 replies; 26+ messages in thread
From: Priit Laes @ 2018-11-21 18:05 UTC (permalink / raw)
  To: u-boot

From: Olliver Schinagl <oliver@schinagl.nl>

Use a define for the chip version mask on the axp209.

Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
Signed-off-by: Priit Laes <plaes@plaes.org>
Acked-by: Maxime Ripard <maxime.ripard@bootlin.com>
---
 drivers/power/axp209.c | 5 +----
 include/axp209.h       | 2 ++
 2 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/power/axp209.c b/drivers/power/axp209.c
index 6de5ec6..e13c762 100644
--- a/drivers/power/axp209.c
+++ b/drivers/power/axp209.c
@@ -153,10 +153,7 @@ int axp_init(void)
 	if (rc)
 		return rc;
 
-	/* Low 4 bits is chip version */
-	ver &= 0x0f;
-
-	if (ver != 0x1)
+	if ((ver & AXP209_CHIP_VERSION_MASK) != 0x1)
 		return -EINVAL;
 
 	/* Mask all interrupts */
diff --git a/include/axp209.h b/include/axp209.h
index 3a4fc28..43e3873 100644
--- a/include/axp209.h
+++ b/include/axp209.h
@@ -25,6 +25,8 @@ enum axp209_reg {
 #define AXP209_POWER_STATUS_ON_BY_DC	BIT(0)
 #define AXP209_POWER_STATUS_VBUS_USABLE	BIT(4)
 
+#define AXP209_CHIP_VERSION_MASK	0x0f
+
 #define AXP209_OUTPUT_CTRL_EXTEN	BIT(0)
 #define AXP209_OUTPUT_CTRL_DCDC3	BIT(1)
 #define AXP209_OUTPUT_CTRL_LDO2		BIT(2)
-- 
git-series 0.9.1

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

* [U-Boot] [PATCH v3 5/9] power: axp209: Reduce magic values by adding defines for LDO[234]
  2018-11-21 18:05 [U-Boot] [PATCH v3 0/9] Stop AXP from crashing when enabling LDO3 Priit Laes
                   ` (3 preceding siblings ...)
  2018-11-21 18:05 ` [U-Boot] [PATCH v3 4/9] power: axp209: Define the chip version mask Priit Laes
@ 2018-11-21 18:05 ` Priit Laes
  2018-11-21 18:05 ` [U-Boot] [PATCH v3 6/9] power: axp209: Add support for voltage rate control on LDO3 Priit Laes
                   ` (8 subsequent siblings)
  13 siblings, 0 replies; 26+ messages in thread
From: Priit Laes @ 2018-11-21 18:05 UTC (permalink / raw)
  To: u-boot

From: Olliver Schinagl <oliver@schinagl.nl>

The AXP209 has a few 'magisc-ish' values that are better served with
clear defines.

Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
Signed-off-by: Priit Laes <plaes@plaes.org>
Acked-by: Maxime Ripard <maxime.ripard@bootlin.com>
---
 drivers/power/axp209.c | 14 +++++++-------
 include/axp209.h       | 13 +++++++++++++
 2 files changed, 20 insertions(+), 7 deletions(-)

diff --git a/drivers/power/axp209.c b/drivers/power/axp209.c
index e13c762..819b168 100644
--- a/drivers/power/axp209.c
+++ b/drivers/power/axp209.c
@@ -81,8 +81,7 @@ int axp_set_aldo2(unsigned int mvolt)
 	if (rc)
 		return rc;
 
-	/* LDO2 configuration is in upper 4 bits */
-	reg = (reg & 0x0f) | (cfg << 4);
+	reg |= AXP209_LDO24_LDO2_SET(reg, cfg);
 	rc = pmic_bus_write(AXP209_LDO24_VOLTAGE, reg);
 	if (rc)
 		return rc;
@@ -99,10 +98,12 @@ int axp_set_aldo3(unsigned int mvolt)
 		return pmic_bus_clrbits(AXP209_OUTPUT_CTRL,
 					AXP209_OUTPUT_CTRL_LDO3);
 
-	if (mvolt == -1)
-		cfg = 0x80;	/* determined by LDO3IN pin */
-	else
+	if (mvolt == -1) {
+		cfg = AXP209_LDO3_VOLTAGE_FROM_LDO3IN;
+	} else {
 		cfg = axp209_mvolt_to_cfg(mvolt, 700, 3500, 25);
+		cfg = AXP209_LDO3_VOLTAGE_SET(cfg);
+	}
 
 	rc = pmic_bus_write(AXP209_LDO3_VOLTAGE, cfg);
 	if (rc)
@@ -131,8 +132,7 @@ int axp_set_aldo4(unsigned int mvolt)
 	if (rc)
 		return rc;
 
-	/* LDO4 configuration is in lower 4 bits */
-	reg = (reg & 0xf0) | (cfg << 0);
+	reg |= AXP209_LDO24_LDO4_SET(reg, cfg);
 	rc = pmic_bus_write(AXP209_LDO24_VOLTAGE, reg);
 	if (rc)
 		return rc;
diff --git a/include/axp209.h b/include/axp209.h
index 43e3873..dc27d65 100644
--- a/include/axp209.h
+++ b/include/axp209.h
@@ -34,6 +34,19 @@ enum axp209_reg {
 #define AXP209_OUTPUT_CTRL_DCDC2	BIT(4)
 #define AXP209_OUTPUT_CTRL_LDO3		BIT(6)
 
+#define AXP209_LDO24_LDO2_MASK		0xf0
+#define AXP209_LDO24_LDO4_MASK		0x0f
+#define AXP209_LDO24_LDO2_SET(reg, cfg)	\
+	(((reg) & ~AXP209_LDO24_LDO2_MASK) | \
+	(((cfg) << 4) & AXP209_LDO24_LDO2_MASK))
+#define AXP209_LDO24_LDO4_SET(reg, cfg)	\
+	(((reg) & ~AXP209_LDO24_LDO4_MASK) | \
+	(((cfg) << 0) & AXP209_LDO24_LDO4_MASK))
+
+#define AXP209_LDO3_VOLTAGE_FROM_LDO3IN	BIT(7)
+#define AXP209_LDO3_VOLTAGE_MASK	0x7f
+#define AXP209_LDO3_VOLTAGE_SET(x)	((x) & AXP209_LDO3_VOLTAGE_MASK)
+
 #define AXP209_IRQ5_PEK_UP		BIT(6)
 #define AXP209_IRQ5_PEK_DOWN		BIT(5)
 
-- 
git-series 0.9.1

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

* [U-Boot] [PATCH v3 6/9] power: axp209: Add support for voltage rate control on LDO3
  2018-11-21 18:05 [U-Boot] [PATCH v3 0/9] Stop AXP from crashing when enabling LDO3 Priit Laes
                   ` (4 preceding siblings ...)
  2018-11-21 18:05 ` [U-Boot] [PATCH v3 5/9] power: axp209: Reduce magic values by adding defines for LDO[234] Priit Laes
@ 2018-11-21 18:05 ` Priit Laes
  2018-11-22  8:22   ` Maxime Ripard
  2018-11-21 18:05 ` [U-Boot] [PATCH v3 7/9] power: axp209: Limit inrush current for broken boards Priit Laes
                   ` (7 subsequent siblings)
  13 siblings, 1 reply; 26+ messages in thread
From: Priit Laes @ 2018-11-21 18:05 UTC (permalink / raw)
  To: u-boot

From: Olliver Schinagl <oliver@schinagl.nl>

The AXP209 LDO3 regulator supports voltage rate control, or can set a
slew rate.

This allows for the power to gradually rise up to the desired voltage,
instead of spiking up as fast as possible. Reason to have this can be
to reduce the inrush currents for example.

There are 3 slopes to choose from, the default, 'none' is a voltage rise
of 0.0167 V/uS, a 1.6 mV/uS and a 0.8 mV/uS voltage rise.

In ideal world (where vendors follow the recommended design guidelines)
this setting should not be enabled by default. Unless of course AXP209
crashes instead of reporting overcurrent condition as it normally should
do in this case.

Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
Signed-off-by: Priit Laes <plaes@plaes.org>
---
 drivers/power/Kconfig  | 34 ++++++++++++++++++++++++++++++++++
 drivers/power/axp209.c | 24 ++++++++++++++++++++++++
 include/axp209.h       | 21 +++++++++++++++++++++
 3 files changed, 79 insertions(+)

diff --git a/drivers/power/Kconfig b/drivers/power/Kconfig
index 1a38524..e83036f 100644
--- a/drivers/power/Kconfig
+++ b/drivers/power/Kconfig
@@ -197,6 +197,40 @@ config AXP_ALDO3_VOLT
 	On A83T / H8 boards aldo3 is AVCC, VCC-PL, and VCC-LED, and should be
 	3.0V.
 
+choice
+	prompt "axp pmic (a)ldo3 voltage rate control"
+	depends on AXP209_POWER
+	default AXP_ALDO3_VOLT_SLOPE_NONE
+	---help---
+	The AXP can slowly ramp up voltage to reduce the inrush current when
+	changing voltages.
+	Note, this does not apply when enabling/disabling LDO3. See
+	"axp pmic (a)ldo3 inrush quirk" below to enable a slew rate to limit
+	inrush current on broken board designs.
+
+config AXP_ALDO3_VOLT_SLOPE_NONE
+	bool "No voltage slope"
+	---help---
+	Tries to reach the next voltage setting near instantaneously. Measurements
+	indicate that this is about 0.0167 V/uS.
+
+config AXP_ALDO3_VOLT_SLOPE_16
+	bool "1.6 mV per uS"
+	---help---
+	Increases the voltage by 1.6 mV per uS until the final voltage has
+	been reached. Note that the scaling is in 25 mV steps and thus
+	the slew rate in reality is about 25 mV/31.250 uS.
+
+config AXP_ALDO3_VOLT_SLOPE_08
+	bool "0.8 mV per uS"
+	---help---
+	Increases the voltage by 0.8 mV per uS until the final voltage has
+	been reached. Note that the scaling is in 25 mV steps however and thus
+	the slew rate in reality is about 25 mV/15.625 uS.
+	This is the slowest supported rate.
+
+endchoice
+
 config AXP_ALDO4_VOLT
 	int "axp pmic (a)ldo4 voltage"
 	depends on AXP209_POWER
diff --git a/drivers/power/axp209.c b/drivers/power/axp209.c
index 819b168..cf138fc 100644
--- a/drivers/power/axp209.c
+++ b/drivers/power/axp209.c
@@ -9,6 +9,16 @@
 #include <asm/arch/pmic_bus.h>
 #include <axp_pmic.h>
 
+#ifdef CONFIG_AXP_ALDO3_VOLT_SLOPE_08
+#  define AXP209_VRC_SLOPE AXP209_VRC_LDO3_800uV_uS
+#endif
+#ifdef CONFIG_AXP_ALDO3_VOLT_SLOPE_16
+#  define AXP209_VRC_SLOPE AXP209_VRC_LDO3_1600uV_uS
+#endif
+#if defined CONFIG_AXP_ALDO3_VOLT_SLOPE_NONE || !defined AXP209_VRC_SLOPE
+#  define AXP209_VRC_SLOPE 0x00
+#endif
+
 static u8 axp209_mvolt_to_cfg(int mvolt, int min, int max, int div)
 {
 	if (mvolt < min)
@@ -98,6 +108,20 @@ int axp_set_aldo3(unsigned int mvolt)
 		return pmic_bus_clrbits(AXP209_OUTPUT_CTRL,
 					AXP209_OUTPUT_CTRL_LDO3);
 
+	/*
+	 * Some boards have trouble reaching the target voltage without causing
+	 * great inrush currents. To prevent this, boards can enable a certain
+	 * slope to ramp up voltage. Note, this only works when changing an
+	 * already active power rail. When toggling power on, the AXP ramps up
+	 * steeply@0.0167 V/uS.
+	 */
+	rc = pmic_bus_read(AXP209_VRC_DCDC2_LDO3, &cfg);
+	cfg = AXP209_VRC_LDO3_SLOPE_SET(cfg, AXP209_VRC_SLOPE);
+	rc |= pmic_bus_write(AXP209_VRC_DCDC2_LDO3, cfg);
+
+	if (rc)
+		return rc;
+
 	if (mvolt == -1) {
 		cfg = AXP209_LDO3_VOLTAGE_FROM_LDO3IN;
 	} else {
diff --git a/include/axp209.h b/include/axp209.h
index dc27d65..f4f1b2f 100644
--- a/include/axp209.h
+++ b/include/axp209.h
@@ -10,6 +10,7 @@ enum axp209_reg {
 	AXP209_CHIP_VERSION = 0x03,
 	AXP209_OUTPUT_CTRL = 0x12,
 	AXP209_DCDC2_VOLTAGE = 0x23,
+	AXP209_VRC_DCDC2_LDO3 = 0x25,
 	AXP209_DCDC3_VOLTAGE = 0x27,
 	AXP209_LDO24_VOLTAGE = 0x28,
 	AXP209_LDO3_VOLTAGE = 0x29,
@@ -34,6 +35,26 @@ enum axp209_reg {
 #define AXP209_OUTPUT_CTRL_DCDC2	BIT(4)
 #define AXP209_OUTPUT_CTRL_LDO3		BIT(6)
 
+/*
+ * AXP209 datasheet contains wrong information about LDO3 VRC:
+ * - VRC is actually enabled when BIT(1) is True
+ * - VRC is actually not enabled by default (BIT(3) = 0 after reset)
+ */
+#define AXP209_VRC_LDO3_EN		BIT(3)
+#define AXP209_VRC_DCDC2_EN		BIT(2)
+#define AXP209_VRC_LDO3_800uV_uS	(BIT(1) | AXP209_VRC_LDO3_EN)
+#define AXP209_VRC_LDO3_1600uV_uS	AXP209_VRC_LDO3_EN
+#define AXP209_VRC_DCDC2_800uV_uS	(BIT(0) | AXP209_VRC_DCDC2_EN)
+#define AXP209_VRC_DCDC2_1600uV_uS	AXP209_VRC_DCDC2_EN
+#define AXP209_VRC_LDO3_MASK		0xa
+#define AXP209_VRC_DCDC2_MASK		0x5
+#define AXP209_VRC_DCDC2_SLOPE_SET(reg, cfg) \
+	(((reg) & ~AXP209_VRC_DCDC2_MASK) | \
+	((cfg) & AXP209_VRC_DCDC2_MASK))
+#define AXP209_VRC_LDO3_SLOPE_SET(reg, cfg) \
+	(((reg) & ~AXP209_VRC_LDO3_MASK) | \
+	((cfg) & AXP209_VRC_LDO3_MASK))
+
 #define AXP209_LDO24_LDO2_MASK		0xf0
 #define AXP209_LDO24_LDO4_MASK		0x0f
 #define AXP209_LDO24_LDO2_SET(reg, cfg)	\
-- 
git-series 0.9.1

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

* [U-Boot] [PATCH v3 7/9] power: axp209: Limit inrush current for broken boards
  2018-11-21 18:05 [U-Boot] [PATCH v3 0/9] Stop AXP from crashing when enabling LDO3 Priit Laes
                   ` (5 preceding siblings ...)
  2018-11-21 18:05 ` [U-Boot] [PATCH v3 6/9] power: axp209: Add support for voltage rate control on LDO3 Priit Laes
@ 2018-11-21 18:05 ` Priit Laes
  2018-11-22  8:22   ` Maxime Ripard
  2018-11-21 18:05 ` [U-Boot] [PATCH v3 8/9] arm: sunxi: Reduce inrush current on Olimex OLinuXino-A20-Lime2 Priit Laes
                   ` (6 subsequent siblings)
  13 siblings, 1 reply; 26+ messages in thread
From: Priit Laes @ 2018-11-21 18:05 UTC (permalink / raw)
  To: u-boot

From: Olliver Schinagl <oliver@schinagl.nl>

Some boards feature a capacitance on LDO3's output that is too large,
causing inrush currents which as a result, shut down the AXP209. This
has been reported before, without knowing the actual cause.

A fix appeared to be done with
commit 0e6e34ac8dbb ("sunxi: Olimex A20 boards: Enable LDO3 and LDO4 regulators").

The description there is a bit misleading, the kernel does not hang
during AXP209 initialization, the PMIC shuts down, causing voltages to
drop and thus the whole system freezes.

While the AXP209 does have the ability to ramp up the voltage slowly, to
reduce these inrush currents, the voltage rate control (VRC) however is
not applicable when switching on the LDO3 output. Only when going from
an enabled lower voltage setting, to a higher voltage setting is the VRC
in effect.

To work around this problem, we set LDO3 to the lowest possible setting
of 0.7 V if it was not yet enabled, and then let the VRC (if enabled) do
its thing. It should be noted, that for some undocumented reason, there
is a short delay needed between setting the LDO3 voltage register and
enabling the power. One would expect that this delay ought to be just
after enabling the output power at 0.7 V, but this did not work.

Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
Signed-off-by: Priit Laes <plaes@plaes.org>
---
 drivers/power/Kconfig  |  9 +++++++++
 drivers/power/axp209.c | 23 +++++++++++++++++++++++
 2 files changed, 32 insertions(+)

diff --git a/drivers/power/Kconfig b/drivers/power/Kconfig
index e83036f..9495dca 100644
--- a/drivers/power/Kconfig
+++ b/drivers/power/Kconfig
@@ -231,6 +231,15 @@ config AXP_ALDO3_VOLT_SLOPE_08
 
 endchoice
 
+config AXP_ALDO3_INRUSH_QUIRK
+	bool "axp pmic (a)ldo3 inrush quirk"
+	depends on AXP209_POWER
+	default n
+	---help---
+	The reference design denotes a value of 4.7 uF for the output capacitor
+	of LDO3. Some boards have too high capacitance causing 	an inrush current
+	and resulting an AXP209 shutdown.
+
 config AXP_ALDO4_VOLT
 	int "axp pmic (a)ldo4 voltage"
 	depends on AXP209_POWER
diff --git a/drivers/power/axp209.c b/drivers/power/axp209.c
index cf138fc..67b4209 100644
--- a/drivers/power/axp209.c
+++ b/drivers/power/axp209.c
@@ -122,6 +122,29 @@ int axp_set_aldo3(unsigned int mvolt)
 	if (rc)
 		return rc;
 
+#ifdef CONFIG_AXP_ALDO3_INRUSH_QUIRK
+	/*
+	 * On some boards, LDO3 has a too big capacitor installed. When
+	 * turning on LDO3, this causes the AXP209 to shutdown on
+	 * voltages over 1.9 volt. As a workaround, we enable LDO3
+	 * first with the lowest possible voltage. If this still causes
+	 * high inrush currents, the voltage slope should be increased.
+	 */
+	rc = pmic_bus_read(AXP209_OUTPUT_CTRL, &cfg);
+	if (rc)
+		return rc;
+
+	if (!(cfg & AXP209_OUTPUT_CTRL_LDO3)) {
+		rc = pmic_bus_write(AXP209_LDO3_VOLTAGE, 0x0); /* 0.7 Volt */
+		mdelay(1);
+		rc |= pmic_bus_setbits(AXP209_OUTPUT_CTRL,
+				       AXP209_OUTPUT_CTRL_LDO3);
+
+		if (rc)
+			return rc;
+	}
+#endif
+
 	if (mvolt == -1) {
 		cfg = AXP209_LDO3_VOLTAGE_FROM_LDO3IN;
 	} else {
-- 
git-series 0.9.1

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

* [U-Boot] [PATCH v3 8/9] arm: sunxi: Reduce inrush current on Olimex OLinuXino-A20-Lime2
  2018-11-21 18:05 [U-Boot] [PATCH v3 0/9] Stop AXP from crashing when enabling LDO3 Priit Laes
                   ` (6 preceding siblings ...)
  2018-11-21 18:05 ` [U-Boot] [PATCH v3 7/9] power: axp209: Limit inrush current for broken boards Priit Laes
@ 2018-11-21 18:05 ` Priit Laes
  2018-11-22  8:22   ` Maxime Ripard
  2018-11-21 18:05 ` [U-Boot] [PATCH v3 9/9] arm: sunxi: Reduce inrush current on Olimex OLinuXino-A20-Lime2-eMMC Priit Laes
                   ` (5 subsequent siblings)
  13 siblings, 1 reply; 26+ messages in thread
From: Priit Laes @ 2018-11-21 18:05 UTC (permalink / raw)
  To: u-boot

From: Olliver Schinagl <oliver@schinagl.nl>

The lime2 features a too large capacitor on the LDO3 output, which
causes the PMIC to shutdown when enabling power. To be able to still
boot up however, we must gradually enable power on LDO3 for this board.

We do this by enabling both the inrush quirk and the maximum slope the
AXP209 supports.

Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
Signed-off-by: Priit Laes <plaes@plaes.org>
---
 configs/A20-OLinuXino-Lime2_defconfig | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/configs/A20-OLinuXino-Lime2_defconfig b/configs/A20-OLinuXino-Lime2_defconfig
index fa58a6d..0c04ae6 100644
--- a/configs/A20-OLinuXino-Lime2_defconfig
+++ b/configs/A20-OLinuXino-Lime2_defconfig
@@ -25,7 +25,9 @@ CONFIG_ETH_DESIGNWARE=y
 CONFIG_RGMII=y
 CONFIG_MII=y
 CONFIG_SUN7I_GMAC=y
+CONFIG_AXP_ALDO3_INRUSH_QUIRK=y
 CONFIG_AXP_ALDO3_VOLT=2800
+CONFIG_AXP_ALDO3_VOLT_SLOPE_08=y
 CONFIG_AXP_ALDO4_VOLT=2800
 CONFIG_SCSI=y
 CONFIG_USB_EHCI_HCD=y
-- 
git-series 0.9.1

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

* [U-Boot] [PATCH v3 9/9] arm: sunxi: Reduce inrush current on Olimex OLinuXino-A20-Lime2-eMMC
  2018-11-21 18:05 [U-Boot] [PATCH v3 0/9] Stop AXP from crashing when enabling LDO3 Priit Laes
                   ` (7 preceding siblings ...)
  2018-11-21 18:05 ` [U-Boot] [PATCH v3 8/9] arm: sunxi: Reduce inrush current on Olimex OLinuXino-A20-Lime2 Priit Laes
@ 2018-11-21 18:05 ` Priit Laes
  2018-11-22  8:23   ` Maxime Ripard
  2018-11-21 18:13 ` [U-Boot] [PATCH v3 0/9] Stop AXP from crashing when enabling LDO3 Priit Laes
                   ` (4 subsequent siblings)
  13 siblings, 1 reply; 26+ messages in thread
From: Priit Laes @ 2018-11-21 18:05 UTC (permalink / raw)
  To: u-boot

From: Priit Laes <priit.laes@paf.com>

The lime2 features a too large capacitor on the LDO3 output, which
causes the PMIC to shutdown when enabling power. To be able to still
boot up however, we must gradually enable power on LDO3 for this board.

We do this by enabling both the inrush quirk and the maximum slope the
AXP209 supports.

Signed-off-by: Priit Laes <plaes@plaes.org>
---
 configs/A20-OLinuXino-Lime2-eMMC_defconfig | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/configs/A20-OLinuXino-Lime2-eMMC_defconfig b/configs/A20-OLinuXino-Lime2-eMMC_defconfig
index 467ca4e..dee8d02 100644
--- a/configs/A20-OLinuXino-Lime2-eMMC_defconfig
+++ b/configs/A20-OLinuXino-Lime2-eMMC_defconfig
@@ -26,7 +26,9 @@ CONFIG_ETH_DESIGNWARE=y
 CONFIG_RGMII=y
 CONFIG_MII=y
 CONFIG_SUN7I_GMAC=y
+CONFIG_AXP_ALDO3_INRUSH_QUIRK=y
 CONFIG_AXP_ALDO3_VOLT=2800
+CONFIG_AXP_ALDO3_VOLT_SLOPE_08=y
 CONFIG_AXP_ALDO4_VOLT=2800
 CONFIG_SCSI=y
 CONFIG_USB_EHCI_HCD=y
-- 
git-series 0.9.1

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

* [U-Boot] [PATCH v3 0/9] Stop AXP from crashing when enabling LDO3
  2018-11-21 18:05 [U-Boot] [PATCH v3 0/9] Stop AXP from crashing when enabling LDO3 Priit Laes
                   ` (8 preceding siblings ...)
  2018-11-21 18:05 ` [U-Boot] [PATCH v3 9/9] arm: sunxi: Reduce inrush current on Olimex OLinuXino-A20-Lime2-eMMC Priit Laes
@ 2018-11-21 18:13 ` Priit Laes
  2018-11-22 14:07   ` Olliver Schinagl
       [not found] ` <jwvzhu2upbx.fsf-monnier+gmane.comp.hardware.netbook.arm.sunxi@gnu.org>
                   ` (3 subsequent siblings)
  13 siblings, 1 reply; 26+ messages in thread
From: Priit Laes @ 2018-11-21 18:13 UTC (permalink / raw)
  To: u-boot

On Wed, Nov 21, 2018 at 08:05:24PM +0200, Priit Laes wrote:
> This is a resend/v2 of a "Stop AXP from crashing when enabling LDO3" series,
> posted by Olliver Schinagl in March 2017. Unfortunately it never got past
> initial discussion [1], but most Olimex Lime2 boards are still running
> into this bug.

Well, this is actually v3. Missed this paragraph when pushing out v3.

> When powering up an AXP209, the default value for LDO3 output is enabled. This
> works fine. However if for whatever reason, LDO3 is disabled, for example by OS
> during reboot and u-boot enables LDO3 again, the PMIC shuts down (without
> setting an interrupt) causing the board to hang. This behavior has been seen
> from Linux as well, u-boot disables LDO3 as a default value, the kernel enables
> it per its DTS, the kernel hangs as the PMIC gets shut down.
> 
> The root cause is that some boards have too high capacitance on the LDO3 output
> port causing inrush currents exceeding the maximum of the AXP209.
> 
> The fix is to turn on the LDO3 at the lowest possible voltage and then set the
> final voltage.
> 
> If the capacitance is really big (due to a connected device for example) the
> AXP209 also features VRC, or Voltage Rate Control, allowing voltage to ramp up
> even slower.
> 
> Similar changes need to be also implemented in the operating system driver
> side when driver needs to toggle power for the ALDO3 regulator.
> 
> This patch series implements the above with a few tiny cleanups.
> 
> The initial discussion with some scope screenshots can be found in the
> linux-sunxi mailing list [0].
> 
> And the initial series were posted to u-boot mailing list [1].
> 
> Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
> Signed-off-by: Priit Laes <plaes@plaes.org>
> 
> [0] https://groups.google.com/forum/m/#!topic/linux-sunxi/EDvEsbHHqQI
> [1] https://lists.denx.de/pipermail/u-boot/2017-March/282789.html
> 
> --
> Changes since v2:
> - Collected Acked-by tags, patches 1,3-5 are now ripe for picking.
> - Olliver fixed wrong code in patch 2, thanks for Maxime for spotting
> - Fixed checkpatch error in patch 5
> - Expanded commit message for patch 6
> 
> Changes from initial submission:
> - Rebased on top of latest master and fixed conflicts
> - Added comments about datasheet errors for patch 6
> - Fixed some typos and checkpatch errors
> - Added patch to Olimex Lime2 eMMC board
> 
> Olliver Schinagl (8):
>   sunxi: board: Print error after power initialization fails
>   sunxi: pmic_bus: Decrease boot time by not writing duplicate data
>   power: axp209: Use BIT() macro
>   power: axp209: Define the chip version mask
>   power: axp209: Reduce magic values by adding defines for LDO[234]
>   power: axp209: Add support for voltage rate control on LDO3
>   power: axp209: Limit inrush current for broken boards
>   arm: sunxi: Reduce inrush current on Olimex OLinuXino-A20-Lime2
> 
> Priit Laes (1):
>   arm: sunxi: Reduce inrush current on Olimex OLinuXino-A20-Lime2-eMMC
> 
>  arch/arm/mach-sunxi/pmic_bus.c             |  6 ++-
>  board/sunxi/board.c                        | 18 +++---
>  configs/A20-OLinuXino-Lime2-eMMC_defconfig |  2 +-
>  configs/A20-OLinuXino-Lime2_defconfig      |  2 +-
>  drivers/power/Kconfig                      | 43 ++++++++++++++-
>  drivers/power/axp209.c                     | 66 ++++++++++++++++++----
>  include/axp209.h                           | 70 +++++++++++++++++------
>  7 files changed, 172 insertions(+), 35 deletions(-)
> 
> base-commit: a3e1653ddeb02f39481eba572275016171e9670c
> -- 
> git-series 0.9.1

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

* [U-Boot] [linux-sunxi] Re: [PATCH v3 0/9] Stop AXP from crashing when enabling LDO3
       [not found] ` <jwvzhu2upbx.fsf-monnier+gmane.comp.hardware.netbook.arm.sunxi@gnu.org>
@ 2018-11-22  7:31   ` Priit Laes
  2018-11-24 19:36     ` [U-Boot] Reboot and audio on Orange Pi mini (was: [linux-sunxi] Re: [PATCH v3 0/9] Stop AXP from crashing when enabling LDO3) Stefan Monnier
  0 siblings, 1 reply; 26+ messages in thread
From: Priit Laes @ 2018-11-22  7:31 UTC (permalink / raw)
  To: u-boot

On Wed, Nov 21, 2018 at 03:58:18PM -0500, Stefan Monnier wrote:
> > When powering up an AXP209, the default value for LDO3 output is
> > enabled.  This works fine.  However if for whatever reason, LDO3 is
> > disabled, for example by OS during reboot and u-boot enables LDO3
> > again, the PMIC shuts down (without setting an interrupt) causing the
> > board to hang.  This behavior has been seen from Linux as well, u-boot
> > disables LDO3 as a default value, the kernel enables it per its DTS,
> > the kernel hangs as the PMIC gets shut down.
> 
> Hmm... I've never had any problems booting my Orange Pi mini, but it
> (almost) always hangs on reboot (right after the final message from the
> OS and before the first message from U-boot).
> Any chance this is the same problem?

Well, f you have the hardware, then there's only one way to find out:

1) Apply patchset
2) Add following into boards defconfig:
CONFIG_AXP_ALDO3_INRUSH_QUIRK=y
3) If it still fails to reboot, add following
CONFIG_AXP_ALDO3_VOLT_SLOPE_08=y
> 
> 
>         Stefan
> 
> -- 
> You received this message because you are subscribed to the Google Groups "linux-sunxi" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to linux-sunxi+unsubscribe at googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

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

* [U-Boot] [PATCH v3 2/9] sunxi: pmic_bus: Decrease boot time by not writing duplicate data
  2018-11-21 18:05 ` [U-Boot] [PATCH v3 2/9] sunxi: pmic_bus: Decrease boot time by not writing duplicate data Priit Laes
@ 2018-11-22  8:21   ` Maxime Ripard
  0 siblings, 0 replies; 26+ messages in thread
From: Maxime Ripard @ 2018-11-22  8:21 UTC (permalink / raw)
  To: u-boot

On Wed, Nov 21, 2018 at 08:05:26PM +0200, Priit Laes wrote:
> From: Olliver Schinagl <oliver@schinagl.nl>
> 
> When we clear a pmic_bus bit, we do a read-modify-write operation.
> We waste some time however, by writing back the exact samea value
> that was already set in the chip. Let us thus only do the write
> in case data was changed.
> 
> Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
> Signed-off-by: Priit Laes <plaes@plaes.org>

Acked-by: Maxime Ripard <maxime.ripard@bootlin.com>

Maxime

-- 
Maxime Ripard, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20181122/0f41bf05/attachment.sig>

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

* [U-Boot] [PATCH v3 6/9] power: axp209: Add support for voltage rate control on LDO3
  2018-11-21 18:05 ` [U-Boot] [PATCH v3 6/9] power: axp209: Add support for voltage rate control on LDO3 Priit Laes
@ 2018-11-22  8:22   ` Maxime Ripard
  0 siblings, 0 replies; 26+ messages in thread
From: Maxime Ripard @ 2018-11-22  8:22 UTC (permalink / raw)
  To: u-boot

On Wed, Nov 21, 2018 at 08:05:30PM +0200, Priit Laes wrote:
> From: Olliver Schinagl <oliver@schinagl.nl>
> 
> The AXP209 LDO3 regulator supports voltage rate control, or can set a
> slew rate.
> 
> This allows for the power to gradually rise up to the desired voltage,
> instead of spiking up as fast as possible. Reason to have this can be
> to reduce the inrush currents for example.
> 
> There are 3 slopes to choose from, the default, 'none' is a voltage rise
> of 0.0167 V/uS, a 1.6 mV/uS and a 0.8 mV/uS voltage rise.
> 
> In ideal world (where vendors follow the recommended design guidelines)
> this setting should not be enabled by default. Unless of course AXP209
> crashes instead of reporting overcurrent condition as it normally should
> do in this case.
> 
> Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
> Signed-off-by: Priit Laes <plaes@plaes.org>

Acked-by: Maxime Ripard <maxime.ripard@bootlin.com>

Maxime

-- 
Maxime Ripard, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20181122/2fc800b6/attachment.sig>

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

* [U-Boot] [PATCH v3 7/9] power: axp209: Limit inrush current for broken boards
  2018-11-21 18:05 ` [U-Boot] [PATCH v3 7/9] power: axp209: Limit inrush current for broken boards Priit Laes
@ 2018-11-22  8:22   ` Maxime Ripard
  0 siblings, 0 replies; 26+ messages in thread
From: Maxime Ripard @ 2018-11-22  8:22 UTC (permalink / raw)
  To: u-boot

On Wed, Nov 21, 2018 at 08:05:31PM +0200, Priit Laes wrote:
> From: Olliver Schinagl <oliver@schinagl.nl>
> 
> Some boards feature a capacitance on LDO3's output that is too large,
> causing inrush currents which as a result, shut down the AXP209. This
> has been reported before, without knowing the actual cause.
> 
> A fix appeared to be done with
> commit 0e6e34ac8dbb ("sunxi: Olimex A20 boards: Enable LDO3 and LDO4 regulators").
> 
> The description there is a bit misleading, the kernel does not hang
> during AXP209 initialization, the PMIC shuts down, causing voltages to
> drop and thus the whole system freezes.
> 
> While the AXP209 does have the ability to ramp up the voltage slowly, to
> reduce these inrush currents, the voltage rate control (VRC) however is
> not applicable when switching on the LDO3 output. Only when going from
> an enabled lower voltage setting, to a higher voltage setting is the VRC
> in effect.
> 
> To work around this problem, we set LDO3 to the lowest possible setting
> of 0.7 V if it was not yet enabled, and then let the VRC (if enabled) do
> its thing. It should be noted, that for some undocumented reason, there
> is a short delay needed between setting the LDO3 voltage register and
> enabling the power. One would expect that this delay ought to be just
> after enabling the output power at 0.7 V, but this did not work.
> 
> Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
> Signed-off-by: Priit Laes <plaes@plaes.org>

Acked-by: Maxime Ripard <maxime.ripard@bootlin.com>

Maxime

-- 
Maxime Ripard, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20181122/4df9bab0/attachment.sig>

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

* [U-Boot] [PATCH v3 8/9] arm: sunxi: Reduce inrush current on Olimex OLinuXino-A20-Lime2
  2018-11-21 18:05 ` [U-Boot] [PATCH v3 8/9] arm: sunxi: Reduce inrush current on Olimex OLinuXino-A20-Lime2 Priit Laes
@ 2018-11-22  8:22   ` Maxime Ripard
  0 siblings, 0 replies; 26+ messages in thread
From: Maxime Ripard @ 2018-11-22  8:22 UTC (permalink / raw)
  To: u-boot

On Wed, Nov 21, 2018 at 08:05:32PM +0200, Priit Laes wrote:
> From: Olliver Schinagl <oliver@schinagl.nl>
> 
> The lime2 features a too large capacitor on the LDO3 output, which
> causes the PMIC to shutdown when enabling power. To be able to still
> boot up however, we must gradually enable power on LDO3 for this board.
> 
> We do this by enabling both the inrush quirk and the maximum slope the
> AXP209 supports.
> 
> Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
> Signed-off-by: Priit Laes <plaes@plaes.org>

Acked-by: Maxime Ripard <maxime.ripard@bootlin.com>

Maxime

-- 
Maxime Ripard, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20181122/acfeecb0/attachment.sig>

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

* [U-Boot] [PATCH v3 9/9] arm: sunxi: Reduce inrush current on Olimex OLinuXino-A20-Lime2-eMMC
  2018-11-21 18:05 ` [U-Boot] [PATCH v3 9/9] arm: sunxi: Reduce inrush current on Olimex OLinuXino-A20-Lime2-eMMC Priit Laes
@ 2018-11-22  8:23   ` Maxime Ripard
  0 siblings, 0 replies; 26+ messages in thread
From: Maxime Ripard @ 2018-11-22  8:23 UTC (permalink / raw)
  To: u-boot

On Wed, Nov 21, 2018 at 08:05:33PM +0200, Priit Laes wrote:
> From: Priit Laes <priit.laes@paf.com>
> 
> The lime2 features a too large capacitor on the LDO3 output, which
> causes the PMIC to shutdown when enabling power. To be able to still
> boot up however, we must gradually enable power on LDO3 for this board.
> 
> We do this by enabling both the inrush quirk and the maximum slope the
> AXP209 supports.
> 
> Signed-off-by: Priit Laes <plaes@plaes.org>

Acked-by: Maxime Ripard <maxime.ripard@bootlin.com>

Maxime

-- 
Maxime Ripard, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20181122/8a4f095f/attachment.sig>

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

* [U-Boot] [PATCH v3 0/9] Stop AXP from crashing when enabling LDO3
  2018-11-21 18:13 ` [U-Boot] [PATCH v3 0/9] Stop AXP from crashing when enabling LDO3 Priit Laes
@ 2018-11-22 14:07   ` Olliver Schinagl
  2018-11-22 14:30     ` [U-Boot] [linux-sunxi] " Priit Laes
  0 siblings, 1 reply; 26+ messages in thread
From: Olliver Schinagl @ 2018-11-22 14:07 UTC (permalink / raw)
  To: u-boot

On 21-11-18 19:13, Priit Laes wrote:
> On Wed, Nov 21, 2018 at 08:05:24PM +0200, Priit Laes wrote:
>> This is a resend/v2 of a "Stop AXP from crashing when enabling LDO3" series,
>> posted by Olliver Schinagl in March 2017. Unfortunately it never got past
>> initial discussion [1], but most Olimex Lime2 boards are still running
>> into this bug.
> Well, this is actually v3. Missed this paragraph when pushing out v3.
It happens :)
>> <snip>
>> The initial discussion with some scope screenshots can be found in the
>> linux-sunxi mailing list [0].

Just like I didn't see this bit but claimed to be to lazy to find links
and pics :)


So thanks for that and thanks a lot for re-submitting this series!! Feel
free to do the same for the linux bits. The patches should be clean
enough to apply pretty easily [0].

[0] https://gitlab.com/ultimaker/embedded/platform/linux/commits/for-next/regulator

P.S. I had not forgotten about you and have a labled box to go your way tomorrow :)

>>
>> And the initial series were posted to u-boot mailing list [1].
>>
>> Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
>> Signed-off-by: Priit Laes <plaes@plaes.org>
>>
>> [0] https://groups.google.com/forum/m/#!topic/linux-sunxi/EDvEsbHHqQI
>> [1] https://lists.denx.de/pipermail/u-boot/2017-March/282789.html
>>
>> --
>> Changes since v2:
>> - Collected Acked-by tags, patches 1,3-5 are now ripe for picking.
>> - Olliver fixed wrong code in patch 2, thanks for Maxime for spotting
>> - Fixed checkpatch error in patch 5
>> - Expanded commit message for patch 6
>>
>> Changes from initial submission:
>> - Rebased on top of latest master and fixed conflicts
>> - Added comments about datasheet errors for patch 6
>> - Fixed some typos and checkpatch errors
>> - Added patch to Olimex Lime2 eMMC board
>>
>> Olliver Schinagl (8):
>>   sunxi: board: Print error after power initialization fails
>>   sunxi: pmic_bus: Decrease boot time by not writing duplicate data
>>   power: axp209: Use BIT() macro
>>   power: axp209: Define the chip version mask
>>   power: axp209: Reduce magic values by adding defines for LDO[234]
>>   power: axp209: Add support for voltage rate control on LDO3
>>   power: axp209: Limit inrush current for broken boards
>>   arm: sunxi: Reduce inrush current on Olimex OLinuXino-A20-Lime2
>>
>> Priit Laes (1):
>>   arm: sunxi: Reduce inrush current on Olimex OLinuXino-A20-Lime2-eMMC
>>
>>  arch/arm/mach-sunxi/pmic_bus.c             |  6 ++-
>>  board/sunxi/board.c                        | 18 +++---
>>  configs/A20-OLinuXino-Lime2-eMMC_defconfig |  2 +-
>>  configs/A20-OLinuXino-Lime2_defconfig      |  2 +-
>>  drivers/power/Kconfig                      | 43 ++++++++++++++-
>>  drivers/power/axp209.c                     | 66 ++++++++++++++++++----
>>  include/axp209.h                           | 70 +++++++++++++++++------
>>  7 files changed, 172 insertions(+), 35 deletions(-)
>>
>> base-commit: a3e1653ddeb02f39481eba572275016171e9670c
>> -- 
>> git-series 0.9.1

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

* [U-Boot] [linux-sunxi] Re: [PATCH v3 0/9] Stop AXP from crashing when enabling LDO3
  2018-11-22 14:07   ` Olliver Schinagl
@ 2018-11-22 14:30     ` Priit Laes
  0 siblings, 0 replies; 26+ messages in thread
From: Priit Laes @ 2018-11-22 14:30 UTC (permalink / raw)
  To: u-boot

On Thu, Nov 22, 2018 at 03:07:46PM +0100, Olliver Schinagl wrote:
> On 21-11-18 19:13, Priit Laes wrote:
> > On Wed, Nov 21, 2018 at 08:05:24PM +0200, Priit Laes wrote:
> >> This is a resend/v2 of a "Stop AXP from crashing when enabling LDO3" series,
> >> posted by Olliver Schinagl in March 2017. Unfortunately it never got past
> >> initial discussion [1], but most Olimex Lime2 boards are still running
> >> into this bug.
> > Well, this is actually v3. Missed this paragraph when pushing out v3.
> It happens :)
> >> <snip>
> >> The initial discussion with some scope screenshots can be found in the
> >> linux-sunxi mailing list [0].
> 
> Just like I didn't see this bit but claimed to be to lazy to find links
> and pics :)
> 
> 
> So thanks for that and thanks a lot for re-submitting this series!! Feel
> free to do the same for the linux bits. The patches should be clean
> enough to apply pretty easily [0].
> 
> [0] https://gitlab.com/ultimaker/embedded/platform/linux/commits/for-next/regulator

Yup, I rebased it against latest master without any issues.
> 
> P.S. I had not forgotten about you and have a labled box to go your way tomorrow :)

YAY! \o/

> >>
> >> And the initial series were posted to u-boot mailing list [1].
> >>
> >> Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
> >> Signed-off-by: Priit Laes <plaes@plaes.org>
> >>
> >> [0] https://groups.google.com/forum/m/#!topic/linux-sunxi/EDvEsbHHqQI
> >> [1] https://lists.denx.de/pipermail/u-boot/2017-March/282789.html
> >>
> >> --
> >> Changes since v2:
> >> - Collected Acked-by tags, patches 1,3-5 are now ripe for picking.
> >> - Olliver fixed wrong code in patch 2, thanks for Maxime for spotting
> >> - Fixed checkpatch error in patch 5
> >> - Expanded commit message for patch 6
> >>
> >> Changes from initial submission:
> >> - Rebased on top of latest master and fixed conflicts
> >> - Added comments about datasheet errors for patch 6
> >> - Fixed some typos and checkpatch errors
> >> - Added patch to Olimex Lime2 eMMC board
> >>
> >> Olliver Schinagl (8):
> >>   sunxi: board: Print error after power initialization fails
> >>   sunxi: pmic_bus: Decrease boot time by not writing duplicate data
> >>   power: axp209: Use BIT() macro
> >>   power: axp209: Define the chip version mask
> >>   power: axp209: Reduce magic values by adding defines for LDO[234]
> >>   power: axp209: Add support for voltage rate control on LDO3
> >>   power: axp209: Limit inrush current for broken boards
> >>   arm: sunxi: Reduce inrush current on Olimex OLinuXino-A20-Lime2
> >>
> >> Priit Laes (1):
> >>   arm: sunxi: Reduce inrush current on Olimex OLinuXino-A20-Lime2-eMMC
> >>
> >>  arch/arm/mach-sunxi/pmic_bus.c             |  6 ++-
> >>  board/sunxi/board.c                        | 18 +++---
> >>  configs/A20-OLinuXino-Lime2-eMMC_defconfig |  2 +-
> >>  configs/A20-OLinuXino-Lime2_defconfig      |  2 +-
> >>  drivers/power/Kconfig                      | 43 ++++++++++++++-
> >>  drivers/power/axp209.c                     | 66 ++++++++++++++++++----
> >>  include/axp209.h                           | 70 +++++++++++++++++------
> >>  7 files changed, 172 insertions(+), 35 deletions(-)
> >>
> >> base-commit: a3e1653ddeb02f39481eba572275016171e9670c
> >> -- 
> >> git-series 0.9.1
> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups "linux-sunxi" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to linux-sunxi+unsubscribe at googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

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

* [U-Boot] Reboot and audio on Orange Pi mini (was: [linux-sunxi] Re: [PATCH v3 0/9] Stop AXP from crashing when enabling LDO3)
  2018-11-22  7:31   ` Priit Laes
@ 2018-11-24 19:36     ` Stefan Monnier
  0 siblings, 0 replies; 26+ messages in thread
From: Stefan Monnier @ 2018-11-24 19:36 UTC (permalink / raw)
  To: u-boot

> Well, f you have the hardware, then there's only one way to find out:
>
> 1) Apply patchset
> 2) Add following into boards defconfig:
> CONFIG_AXP_ALDO3_INRUSH_QUIRK=y
> 3) If it still fails to reboot, add following
> CONFIG_AXP_ALDO3_VOLT_SLOPE_08=y

Hmm... I tried it and it worked: it now reboots flawlessly.
I tried it first with both setting, then only with the first...
... then without any
... then back with my old U-Boot
and now I can't reproduce the hang that normally happens at almost every
reboot.  Not sure if I should rejoice or what.

One thing I noticed along the way: on my Orange Pi mini, there's
a regression in U-Boot that happened between 2015.07 and 2015.10.
All version I tried starting with 2015.10 cause a constant "humming" on
the audio output (the plain old TRRS plug audio output).

During a reboot, the humming briefly disappears after Linux causes the
reboot and before U-Boot has fully started, but it quickly comes
pretty loudly.  As soon as U-Boot passes the control to the Linux kernel
the humming gets a bit less loud, but remains there.
Playing a song doesn't seem to affect the humming.

Interestingly, if I boot a Linux kernel with HDMI support, then at some
point during the Linux boot, the humming disappears.  But sadly, I need
to use a DTB with the HDMI output disabled because of some unexplained
interaction with the normal audio codec (see the «Odd "jump" when
playing music on A20» thread in the linux-sunxi mainling list, spanning
July to October).


        Stefan "back at U-Boot 2015.07"

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

* [U-Boot] [linux-sunxi] [PATCH v3 0/9] Stop AXP from crashing when enabling LDO3
  2018-11-21 18:05 [U-Boot] [PATCH v3 0/9] Stop AXP from crashing when enabling LDO3 Priit Laes
                   ` (10 preceding siblings ...)
       [not found] ` <jwvzhu2upbx.fsf-monnier+gmane.comp.hardware.netbook.arm.sunxi@gnu.org>
@ 2018-11-27 16:11 ` Priit Laes
  2018-11-28 11:10 ` [U-Boot] " Andy Yan
  2018-12-07 16:56 ` [U-Boot] [linux-sunxi] " Jagan Teki
  13 siblings, 0 replies; 26+ messages in thread
From: Priit Laes @ 2018-11-27 16:11 UTC (permalink / raw)
  To: u-boot

On Wed, Nov 21, 2018 at 08:05:24PM +0200, Priit Laes wrote:
> This is a resend/v2 of a "Stop AXP from crashing when enabling LDO3" series,
> posted by Olliver Schinagl in March 2017. Unfortunately it never got past
> initial discussion [1], but most Olimex Lime2 boards are still running
> into this bug.
> 
> When powering up an AXP209, the default value for LDO3 output is enabled. This
> works fine. However if for whatever reason, LDO3 is disabled, for example by OS
> during reboot and u-boot enables LDO3 again, the PMIC shuts down (without
> setting an interrupt) causing the board to hang. This behavior has been seen
> from Linux as well, u-boot disables LDO3 as a default value, the kernel enables
> it per its DTS, the kernel hangs as the PMIC gets shut down.
> 
> The root cause is that some boards have too high capacitance on the LDO3 output
> port causing inrush currents exceeding the maximum of the AXP209.
> 
> The fix is to turn on the LDO3 at the lowest possible voltage and then set the
> final voltage.
> 
> If the capacitance is really big (due to a connected device for example) the
> AXP209 also features VRC, or Voltage Rate Control, allowing voltage to ramp up
> even slower.
> 
> Similar changes need to be also implemented in the operating system driver
> side when driver needs to toggle power for the ALDO3 regulator.
> 
> This patch series implements the above with a few tiny cleanups.

Anything else that should be done by me, now that all the patches have
Acked-by?


Päikest,
Priit

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

* [U-Boot] [PATCH v3 0/9] Stop AXP from crashing when enabling LDO3
  2018-11-21 18:05 [U-Boot] [PATCH v3 0/9] Stop AXP from crashing when enabling LDO3 Priit Laes
                   ` (11 preceding siblings ...)
  2018-11-27 16:11 ` [U-Boot] [linux-sunxi] [PATCH v3 0/9] Stop AXP from crashing when enabling LDO3 Priit Laes
@ 2018-11-28 11:10 ` Andy Yan
  2018-11-28 12:23   ` Andy Yan
  2018-12-07 16:56 ` [U-Boot] [linux-sunxi] " Jagan Teki
  13 siblings, 1 reply; 26+ messages in thread
From: Andy Yan @ 2018-11-28 11:10 UTC (permalink / raw)
  To: u-boot

Hi:
Priit Laes <plaes@plaes.org> 于2018年11月22日周四 上午2:06写道:

> This is a resend/v2 of a "Stop AXP from crashing when enabling LDO3"
> series,
> posted by Olliver Schinagl in March 2017. Unfortunately it never got past
> initial discussion [1], but most Olimex Lime2 boards are still running
> into this bug.
>
> When powering up an AXP209, the default value for LDO3 output is enabled.
> This
> works fine. However if for whatever reason, LDO3 is disabled, for example
> by OS
> during reboot and u-boot enables LDO3 again, the PMIC shuts down (without
> setting an interrupt) causing the board to hang. This behavior has been
> seen
> from Linux as well, u-boot disables LDO3 as a default value, the kernel
> enables
> it per its DTS, the kernel hangs as the PMIC gets shut down.
>
> The root cause is that some boards have too high capacitance on the LDO3
> output
> port causing inrush currents exceeding the maximum of the AXP209.
>
> The fix is to turn on the LDO3 at the lowest possible voltage and then set
> the
> final voltage.
>
> If the capacitance is really big (due to a connected device for example)
> the
> AXP209 also features VRC, or Voltage Rate Control, allowing voltage to
> ramp up
> even slower.
>
> Similar changes need to be also implemented in the operating system driver
> side when driver needs to toggle power for the ALDO3 regulator.
>
> This patch series implements the above with a few tiny cleanups.
>
> The initial discussion with some scope screenshots can be found in the
> linux-sunxi mailing list [0].
>
> And the initial series were posted to u-boot mailing list [1].
>
> Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
> Signed-off-by: Priit Laes <plaes@plaes.org>
>
> [0] https://groups.google.com/forum/m/#!topic/linux-sunxi/EDvEsbHHqQI
> [1] https://lists.denx.de/pipermail/u-boot/2017-March/282789.html
>
> --
> Changes since v2:
> - Collected Acked-by tags, patches 1,3-5 are now ripe for picking.
> - Olliver fixed wrong code in patch 2, thanks for Maxime for spotting
> - Fixed checkpatch error in patch 5
> - Expanded commit message for patch 6
>
> Changes from initial submission:
> - Rebased on top of latest master and fixed conflicts
> - Added comments about datasheet errors for patch 6
> - Fixed some typos and checkpatch errors
> - Added patch to Olimex Lime2 eMMC board
>
> Olliver Schinagl (8):
>   sunxi: board: Print error after power initialization fails
>   sunxi: pmic_bus: Decrease boot time by not writing duplicate data
>   power: axp209: Use BIT() macro
>   power: axp209: Define the chip version mask
>   power: axp209: Reduce magic values by adding defines for LDO[234]
>   power: axp209: Add support for voltage rate control on LDO3
>   power: axp209: Limit inrush current for broken boards
>   arm: sunxi: Reduce inrush current on Olimex OLinuXino-A20-Lime2
>
> Priit Laes (1):
>   arm: sunxi: Reduce inrush current on Olimex OLinuXino-A20-Lime2-eMMC
>
>  arch/arm/mach-sunxi/pmic_bus.c             |  6 ++-
>  board/sunxi/board.c                        | 18 +++---
>  configs/A20-OLinuXino-Lime2-eMMC_defconfig |  2 +-
>  configs/A20-OLinuXino-Lime2_defconfig      |  2 +-
>  drivers/power/Kconfig                      | 43 ++++++++++++++-
>  drivers/power/axp209.c                     | 66 ++++++++++++++++++----
>  include/axp209.h                           | 70 +++++++++++++++++------
>  7 files changed, 172 insertions(+), 35 deletions(-)
>
> base-commit: a3e1653ddeb02f39481eba572275016171e9670c
>


I also play with a Lime2-eMMC board(rev K) these days,  but I found this
board could do reboot whatevery in u-boot or kernel when it boot from
emmc.  But it reboot well when it boot from sdcard.

 root at lime2:~#
root at lime2:~#
root at lime2:~#
root at lime2:~# reboot
[ 2089.632091] reboot: Restarting system

Can't see any further reboot log. unless i replug the power jack.





When I do reset from u-boot , it failed too:

Boot SPL 2018.05-armbian (Nov 28 2018 - 14:39:04 +0800)
DRAM: 3/2/2
Trying to boot from MMC2


U-ready
DRAM:  1 GiB
MMC:   SUNXI MMC: 1
Loading Environment from EXT4... MMC: no card present
** Bad device mmc 0 **
In:    serial
Out:   serial
Err:   serial
Allwinner mUSB OTG (Peripheral)
SCSI:  SATA link 0 timeout.
A: ethernet at 01c50000
Warning: usb_ether using MAC address from ROM
, eth1: usb_ether
MMC: no card present
** Bad device mmc 0 **
us 0 for devices... 1 USB Device(s) found
scan1 USB Device(s) found
       scaswitch to partitions #0, OK
mmc1(part MMC: no card present
=> <INTERRUPT>
=>
=> reset
resetting ...

I post these here hope to know if anyone meet the same situtation.


-- 
> git-series 0.9.1
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> https://lists.denx.de/listinfo/u-boot
>

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

* [U-Boot] [PATCH v3 0/9] Stop AXP from crashing when enabling LDO3
  2018-11-28 11:10 ` [U-Boot] " Andy Yan
@ 2018-11-28 12:23   ` Andy Yan
  2018-11-28 14:22     ` Priit Laes
  0 siblings, 1 reply; 26+ messages in thread
From: Andy Yan @ 2018-11-28 12:23 UTC (permalink / raw)
  To: u-boot

Hi :
Andy Yan <andyshrk@gmail.com> 于2018年11月28日周三 下午7:10写道:

> Hi:
> Priit Laes <plaes@plaes.org> 于2018年11月22日周四 上午2:06写道:
>
>> This is a resend/v2 of a "Stop AXP from crashing when enabling LDO3"
>> series,
>> posted by Olliver Schinagl in March 2017. Unfortunately it never got past
>> initial discussion [1], but most Olimex Lime2 boards are still running
>> into this bug.
>>
>> When powering up an AXP209, the default value for LDO3 output is enabled.
>> This
>> works fine. However if for whatever reason, LDO3 is disabled, for example
>> by OS
>> during reboot and u-boot enables LDO3 again, the PMIC shuts down (without
>> setting an interrupt) causing the board to hang. This behavior has been
>> seen
>> from Linux as well, u-boot disables LDO3 as a default value, the kernel
>> enables
>> it per its DTS, the kernel hangs as the PMIC gets shut down.
>>
>> The root cause is that some boards have too high capacitance on the LDO3
>> output
>> port causing inrush currents exceeding the maximum of the AXP209.
>>
>> The fix is to turn on the LDO3 at the lowest possible voltage and then
>> set the
>> final voltage.
>>
>> If the capacitance is really big (due to a connected device for example)
>> the
>> AXP209 also features VRC, or Voltage Rate Control, allowing voltage to
>> ramp up
>> even slower.
>>
>> Similar changes need to be also implemented in the operating system driver
>> side when driver needs to toggle power for the ALDO3 regulator.
>>
>> This patch series implements the above with a few tiny cleanups.
>>
>> The initial discussion with some scope screenshots can be found in the
>> linux-sunxi mailing list [0].
>>
>> And the initial series were posted to u-boot mailing list [1].
>>
>> Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
>> Signed-off-by: Priit Laes <plaes@plaes.org>
>>
>> [0] https://groups.google.com/forum/m/#!topic/linux-sunxi/EDvEsbHHqQI
>> [1] https://lists.denx.de/pipermail/u-boot/2017-March/282789.html
>>
>> --
>> Changes since v2:
>> - Collected Acked-by tags, patches 1,3-5 are now ripe for picking.
>> - Olliver fixed wrong code in patch 2, thanks for Maxime for spotting
>> - Fixed checkpatch error in patch 5
>> - Expanded commit message for patch 6
>>
>> Changes from initial submission:
>> - Rebased on top of latest master and fixed conflicts
>> - Added comments about datasheet errors for patch 6
>> - Fixed some typos and checkpatch errors
>> - Added patch to Olimex Lime2 eMMC board
>>
>> Olliver Schinagl (8):
>>   sunxi: board: Print error after power initialization fails
>>   sunxi: pmic_bus: Decrease boot time by not writing duplicate data
>>   power: axp209: Use BIT() macro
>>   power: axp209: Define the chip version mask
>>   power: axp209: Reduce magic values by adding defines for LDO[234]
>>   power: axp209: Add support for voltage rate control on LDO3
>>   power: axp209: Limit inrush current for broken boards
>>   arm: sunxi: Reduce inrush current on Olimex OLinuXino-A20-Lime2
>>
>> Priit Laes (1):
>>   arm: sunxi: Reduce inrush current on Olimex OLinuXino-A20-Lime2-eMMC
>>
>>  arch/arm/mach-sunxi/pmic_bus.c             |  6 ++-
>>  board/sunxi/board.c                        | 18 +++---
>>  configs/A20-OLinuXino-Lime2-eMMC_defconfig |  2 +-
>>  configs/A20-OLinuXino-Lime2_defconfig      |  2 +-
>>  drivers/power/Kconfig                      | 43 ++++++++++++++-
>>  drivers/power/axp209.c                     | 66 ++++++++++++++++++----
>>  include/axp209.h                           | 70 +++++++++++++++++------
>>  7 files changed, 172 insertions(+), 35 deletions(-)
>>
>> base-commit: a3e1653ddeb02f39481eba572275016171e9670c
>>
>
>
> I also play with a Lime2-eMMC board(rev K) these days,  but I found this
> board could do reboot whatevery in u-boot or kernel when it boot from
> emmc.  But it reboot well when it boot from sdcard.
>
>
Sorry I mean this board couldn't do reboot from kernel or u-boot here .


>  root at lime2:~#
> root at lime2:~#
> root at lime2:~#
> root at lime2:~# reboot
> [ 2089.632091] reboot: Restarting system
>
> Can't see any further reboot log. unless i replug the power jack.
>
>
>
>
>
> When I do reset from u-boot , it failed too:
>
> Boot SPL 2018.05-armbian (Nov 28 2018 - 14:39:04 +0800)
> DRAM: 3/2/2
> Trying to boot from MMC2
>
>
> U-ready
> DRAM:  1 GiB
> MMC:   SUNXI MMC: 1
> Loading Environment from EXT4... MMC: no card present
> ** Bad device mmc 0 **
> In:    serial
> Out:   serial
> Err:   serial
> Allwinner mUSB OTG (Peripheral)
> SCSI:  SATA link 0 timeout.
> A: ethernet at 01c50000
> Warning: usb_ether using MAC address from ROM
> , eth1: usb_ether
> MMC: no card present
> ** Bad device mmc 0 **
> us 0 for devices... 1 USB Device(s) found
> scan1 USB Device(s) found
>        scaswitch to partitions #0, OK
> mmc1(part MMC: no card present
> => <INTERRUPT>
> =>
> => reset
> resetting ...
>
> I post these here hope to know if anyone meet the same situtation.
>
>
> --
>> git-series 0.9.1
>> _______________________________________________
>> U-Boot mailing list
>> U-Boot at lists.denx.de
>> https://lists.denx.de/listinfo/u-boot
>>
>

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

* [U-Boot] [PATCH v3 0/9] Stop AXP from crashing when enabling LDO3
  2018-11-28 12:23   ` Andy Yan
@ 2018-11-28 14:22     ` Priit Laes
  2018-11-29  0:45       ` Andy Yan
  0 siblings, 1 reply; 26+ messages in thread
From: Priit Laes @ 2018-11-28 14:22 UTC (permalink / raw)
  To: u-boot

On Wed, Nov 28, 2018 at 08:23:37PM +0800, Andy Yan wrote:
> Hi :
> Andy Yan <andyshrk@gmail.com> 于2018年11月28日周三 下午7:10写道:
> 
> > Hi:
> > Priit Laes <plaes@plaes.org> 于2018年11月22日周四 上午2:06写道:
> >
> >> This is a resend/v2 of a "Stop AXP from crashing when enabling LDO3"
> >> series,
> >> posted by Olliver Schinagl in March 2017. Unfortunately it never got past
> >> initial discussion [1], but most Olimex Lime2 boards are still running
> >> into this bug.
> >>
> >> When powering up an AXP209, the default value for LDO3 output is enabled.
> >> This
> >> works fine. However if for whatever reason, LDO3 is disabled, for example
> >> by OS
> >> during reboot and u-boot enables LDO3 again, the PMIC shuts down (without
> >> setting an interrupt) causing the board to hang. This behavior has been
> >> seen
> >> from Linux as well, u-boot disables LDO3 as a default value, the kernel
> >> enables
> >> it per its DTS, the kernel hangs as the PMIC gets shut down.
> >>
> >> The root cause is that some boards have too high capacitance on the LDO3
> >> output
> >> port causing inrush currents exceeding the maximum of the AXP209.
> >>
> >> The fix is to turn on the LDO3 at the lowest possible voltage and then
> >> set the
> >> final voltage.
> >>
> >> If the capacitance is really big (due to a connected device for example)
> >> the
> >> AXP209 also features VRC, or Voltage Rate Control, allowing voltage to
> >> ramp up
> >> even slower.
> >>
> >> Similar changes need to be also implemented in the operating system driver
> >> side when driver needs to toggle power for the ALDO3 regulator.
> >>
> >> This patch series implements the above with a few tiny cleanups.
> >>
> >> The initial discussion with some scope screenshots can be found in the
> >> linux-sunxi mailing list [0].
> >>
> >> And the initial series were posted to u-boot mailing list [1].
> >>
> >> Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
> >> Signed-off-by: Priit Laes <plaes@plaes.org>
> >>
> >> [0] https://groups.google.com/forum/m/#!topic/linux-sunxi/EDvEsbHHqQI
> >> [1] https://lists.denx.de/pipermail/u-boot/2017-March/282789.html
> >>
> >> --
> >> Changes since v2:
> >> - Collected Acked-by tags, patches 1,3-5 are now ripe for picking.
> >> - Olliver fixed wrong code in patch 2, thanks for Maxime for spotting
> >> - Fixed checkpatch error in patch 5
> >> - Expanded commit message for patch 6
> >>
> >> Changes from initial submission:
> >> - Rebased on top of latest master and fixed conflicts
> >> - Added comments about datasheet errors for patch 6
> >> - Fixed some typos and checkpatch errors
> >> - Added patch to Olimex Lime2 eMMC board
> >>
> >> Olliver Schinagl (8):
> >>   sunxi: board: Print error after power initialization fails
> >>   sunxi: pmic_bus: Decrease boot time by not writing duplicate data
> >>   power: axp209: Use BIT() macro
> >>   power: axp209: Define the chip version mask
> >>   power: axp209: Reduce magic values by adding defines for LDO[234]
> >>   power: axp209: Add support for voltage rate control on LDO3
> >>   power: axp209: Limit inrush current for broken boards
> >>   arm: sunxi: Reduce inrush current on Olimex OLinuXino-A20-Lime2
> >>
> >> Priit Laes (1):
> >>   arm: sunxi: Reduce inrush current on Olimex OLinuXino-A20-Lime2-eMMC
> >>
> >>  arch/arm/mach-sunxi/pmic_bus.c             |  6 ++-
> >>  board/sunxi/board.c                        | 18 +++---
> >>  configs/A20-OLinuXino-Lime2-eMMC_defconfig |  2 +-
> >>  configs/A20-OLinuXino-Lime2_defconfig      |  2 +-
> >>  drivers/power/Kconfig                      | 43 ++++++++++++++-
> >>  drivers/power/axp209.c                     | 66 ++++++++++++++++++----
> >>  include/axp209.h                           | 70 +++++++++++++++++------
> >>  7 files changed, 172 insertions(+), 35 deletions(-)
> >>
> >> base-commit: a3e1653ddeb02f39481eba572275016171e9670c
> >>
> >
> >
> > I also play with a Lime2-eMMC board(rev K) these days,  but I found this
> > board could do reboot whatevery in u-boot or kernel when it boot from
> > emmc.  But it reboot well when it boot from sdcard.
> >
> >
> Sorry I mean this board couldn't do reboot from kernel or u-boot here .

This is a hw issue in rev.K. Please contact Olimex.
> 
> 
> >  root at lime2:~#
> > root at lime2:~#
> > root at lime2:~#
> > root at lime2:~# reboot
> > [ 2089.632091] reboot: Restarting system
> >
> > Can't see any further reboot log. unless i replug the power jack.
> >
> >
> >
> >
> >
> > When I do reset from u-boot , it failed too:
> >
> > Boot SPL 2018.05-armbian (Nov 28 2018 - 14:39:04 +0800)
> > DRAM: 3/2/2
> > Trying to boot from MMC2
> >
> >
> > U-ready
> > DRAM:  1 GiB
> > MMC:   SUNXI MMC: 1
> > Loading Environment from EXT4... MMC: no card present
> > ** Bad device mmc 0 **
> > In:    serial
> > Out:   serial
> > Err:   serial
> > Allwinner mUSB OTG (Peripheral)
> > SCSI:  SATA link 0 timeout.
> > A: ethernet at 01c50000
> > Warning: usb_ether using MAC address from ROM
> > , eth1: usb_ether
> > MMC: no card present
> > ** Bad device mmc 0 **
> > us 0 for devices... 1 USB Device(s) found
> > scan1 USB Device(s) found
> >        scaswitch to partitions #0, OK
> > mmc1(part MMC: no card present
> > => <INTERRUPT>
> > =>
> > => reset
> > resetting ...
> >
> > I post these here hope to know if anyone meet the same situtation.
> >
> >
> > --
> >> git-series 0.9.1
> >> _______________________________________________
> >> U-Boot mailing list
> >> U-Boot at lists.denx.de
> >> https://lists.denx.de/listinfo/u-boot
> >>
> >

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

* [U-Boot] [PATCH v3 0/9] Stop AXP from crashing when enabling LDO3
  2018-11-28 14:22     ` Priit Laes
@ 2018-11-29  0:45       ` Andy Yan
  0 siblings, 0 replies; 26+ messages in thread
From: Andy Yan @ 2018-11-29  0:45 UTC (permalink / raw)
  To: u-boot

Hi :
Priit Laes <plaes@plaes.org> 于2018年11月28日周三 下午10:23写道:

> On Wed, Nov 28, 2018 at 08:23:37PM +0800, Andy Yan wrote:
> > Hi :
> > Andy Yan <andyshrk@gmail.com> 于2018年11月28日周三 下午7:10写道:
> >
> > > Hi:
> > > Priit Laes <plaes@plaes.org> 于2018年11月22日周四 上午2:06写道:
> > >
> > >> This is a resend/v2 of a "Stop AXP from crashing when enabling LDO3"
> > >> series,
> > >> posted by Olliver Schinagl in March 2017. Unfortunately it never got
> past
> > >> initial discussion [1], but most Olimex Lime2 boards are still running
> > >> into this bug.
> > >>
> > >> When powering up an AXP209, the default value for LDO3 output is
> enabled.
> > >> This
> > >> works fine. However if for whatever reason, LDO3 is disabled, for
> example
> > >> by OS
> > >> during reboot and u-boot enables LDO3 again, the PMIC shuts down
> (without
> > >> setting an interrupt) causing the board to hang. This behavior has
> been
> > >> seen
> > >> from Linux as well, u-boot disables LDO3 as a default value, the
> kernel
> > >> enables
> > >> it per its DTS, the kernel hangs as the PMIC gets shut down.
> > >>
> > >> The root cause is that some boards have too high capacitance on the
> LDO3
> > >> output
> > >> port causing inrush currents exceeding the maximum of the AXP209.
> > >>
> > >> The fix is to turn on the LDO3 at the lowest possible voltage and then
> > >> set the
> > >> final voltage.
> > >>
> > >> If the capacitance is really big (due to a connected device for
> example)
> > >> the
> > >> AXP209 also features VRC, or Voltage Rate Control, allowing voltage to
> > >> ramp up
> > >> even slower.
> > >>
> > >> Similar changes need to be also implemented in the operating system
> driver
> > >> side when driver needs to toggle power for the ALDO3 regulator.
> > >>
> > >> This patch series implements the above with a few tiny cleanups.
> > >>
> > >> The initial discussion with some scope screenshots can be found in the
> > >> linux-sunxi mailing list [0].
> > >>
> > >> And the initial series were posted to u-boot mailing list [1].
> > >>
> > >> Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
> > >> Signed-off-by: Priit Laes <plaes@plaes.org>
> > >>
> > >> [0] https://groups.google.com/forum/m/#!topic/linux-sunxi/EDvEsbHHqQI
> > >> [1] https://lists.denx.de/pipermail/u-boot/2017-March/282789.html
> > >>
> > >> --
> > >> Changes since v2:
> > >> - Collected Acked-by tags, patches 1,3-5 are now ripe for picking.
> > >> - Olliver fixed wrong code in patch 2, thanks for Maxime for spotting
> > >> - Fixed checkpatch error in patch 5
> > >> - Expanded commit message for patch 6
> > >>
> > >> Changes from initial submission:
> > >> - Rebased on top of latest master and fixed conflicts
> > >> - Added comments about datasheet errors for patch 6
> > >> - Fixed some typos and checkpatch errors
> > >> - Added patch to Olimex Lime2 eMMC board
> > >>
> > >> Olliver Schinagl (8):
> > >>   sunxi: board: Print error after power initialization fails
> > >>   sunxi: pmic_bus: Decrease boot time by not writing duplicate data
> > >>   power: axp209: Use BIT() macro
> > >>   power: axp209: Define the chip version mask
> > >>   power: axp209: Reduce magic values by adding defines for LDO[234]
> > >>   power: axp209: Add support for voltage rate control on LDO3
> > >>   power: axp209: Limit inrush current for broken boards
> > >>   arm: sunxi: Reduce inrush current on Olimex OLinuXino-A20-Lime2
> > >>
> > >> Priit Laes (1):
> > >>   arm: sunxi: Reduce inrush current on Olimex OLinuXino-A20-Lime2-eMMC
> > >>
> > >>  arch/arm/mach-sunxi/pmic_bus.c             |  6 ++-
> > >>  board/sunxi/board.c                        | 18 +++---
> > >>  configs/A20-OLinuXino-Lime2-eMMC_defconfig |  2 +-
> > >>  configs/A20-OLinuXino-Lime2_defconfig      |  2 +-
> > >>  drivers/power/Kconfig                      | 43 ++++++++++++++-
> > >>  drivers/power/axp209.c                     | 66
> ++++++++++++++++++----
> > >>  include/axp209.h                           | 70
> +++++++++++++++++------
> > >>  7 files changed, 172 insertions(+), 35 deletions(-)
> > >>
> > >> base-commit: a3e1653ddeb02f39481eba572275016171e9670c
> > >>
> > >
> > >
> > > I also play with a Lime2-eMMC board(rev K) these days,  but I found
> this
> > > board could do reboot whatevery in u-boot or kernel when it boot from
> > > emmc.  But it reboot well when it boot from sdcard.
> > >
> > >
> > Sorry I mean this board couldn't do reboot from kernel or u-boot here .
>
> This is a hw issue in rev.K. Please contact Olimex.
>



Got it, thanks a lot

> >
> >
> > >  root at lime2:~#
> > > root at lime2:~#
> > > root at lime2:~#
> > > root at lime2:~# reboot
> > > [ 2089.632091] reboot: Restarting system
> > >
> > > Can't see any further reboot log. unless i replug the power jack.
> > >
> > >
> > >
> > >
> > >
> > > When I do reset from u-boot , it failed too:
> > >
> > > Boot SPL 2018.05-armbian (Nov 28 2018 - 14:39:04 +0800)
> > > DRAM: 3/2/2
> > > Trying to boot from MMC2
> > >
> > >
> > > U-ready
> > > DRAM:  1 GiB
> > > MMC:   SUNXI MMC: 1
> > > Loading Environment from EXT4... MMC: no card present
> > > ** Bad device mmc 0 **
> > > In:    serial
> > > Out:   serial
> > > Err:   serial
> > > Allwinner mUSB OTG (Peripheral)
> > > SCSI:  SATA link 0 timeout.
> > > A: ethernet at 01c50000
> > > Warning: usb_ether using MAC address from ROM
> > > , eth1: usb_ether
> > > MMC: no card present
> > > ** Bad device mmc 0 **
> > > us 0 for devices... 1 USB Device(s) found
> > > scan1 USB Device(s) found
> > >        scaswitch to partitions #0, OK
> > > mmc1(part MMC: no card present
> > > => <INTERRUPT>
> > > =>
> > > => reset
> > > resetting ...
> > >
> > > I post these here hope to know if anyone meet the same situtation.
> > >
> > >
> > > --
> > >> git-series 0.9.1
> > >> _______________________________________________
> > >> U-Boot mailing list
> > >> U-Boot at lists.denx.de
> > >> https://lists.denx.de/listinfo/u-boot
> > >>
> > >
>

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

* [U-Boot] [linux-sunxi] [PATCH v3 0/9] Stop AXP from crashing when enabling LDO3
  2018-11-21 18:05 [U-Boot] [PATCH v3 0/9] Stop AXP from crashing when enabling LDO3 Priit Laes
                   ` (12 preceding siblings ...)
  2018-11-28 11:10 ` [U-Boot] " Andy Yan
@ 2018-12-07 16:56 ` Jagan Teki
  13 siblings, 0 replies; 26+ messages in thread
From: Jagan Teki @ 2018-12-07 16:56 UTC (permalink / raw)
  To: u-boot

On Wed, Nov 21, 2018 at 11:35 PM Priit Laes <plaes@plaes.org> wrote:
>
> This is a resend/v2 of a "Stop AXP from crashing when enabling LDO3" series,
> posted by Olliver Schinagl in March 2017. Unfortunately it never got past
> initial discussion [1], but most Olimex Lime2 boards are still running
> into this bug.
>
> When powering up an AXP209, the default value for LDO3 output is enabled. This
> works fine. However if for whatever reason, LDO3 is disabled, for example by OS
> during reboot and u-boot enables LDO3 again, the PMIC shuts down (without
> setting an interrupt) causing the board to hang. This behavior has been seen
> from Linux as well, u-boot disables LDO3 as a default value, the kernel enables
> it per its DTS, the kernel hangs as the PMIC gets shut down.
>
> The root cause is that some boards have too high capacitance on the LDO3 output
> port causing inrush currents exceeding the maximum of the AXP209.
>
> The fix is to turn on the LDO3 at the lowest possible voltage and then set the
> final voltage.
>
> If the capacitance is really big (due to a connected device for example) the
> AXP209 also features VRC, or Voltage Rate Control, allowing voltage to ramp up
> even slower.
>
> Similar changes need to be also implemented in the operating system driver
> side when driver needs to toggle power for the ALDO3 regulator.
>
> This patch series implements the above with a few tiny cleanups.
>
> The initial discussion with some scope screenshots can be found in the
> linux-sunxi mailing list [0].
>
> And the initial series were posted to u-boot mailing list [1].
>
> Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
> Signed-off-by: Priit Laes <plaes@plaes.org>
>
> [0] https://groups.google.com/forum/m/#!topic/linux-sunxi/EDvEsbHHqQI
> [1] https://lists.denx.de/pipermail/u-boot/2017-March/282789.html

Applied to u-boot-sunxi/master

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

end of thread, other threads:[~2018-12-07 16:56 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-11-21 18:05 [U-Boot] [PATCH v3 0/9] Stop AXP from crashing when enabling LDO3 Priit Laes
2018-11-21 18:05 ` [U-Boot] [PATCH v3 1/9] sunxi: board: Print error after power initialization fails Priit Laes
2018-11-21 18:05 ` [U-Boot] [PATCH v3 2/9] sunxi: pmic_bus: Decrease boot time by not writing duplicate data Priit Laes
2018-11-22  8:21   ` Maxime Ripard
2018-11-21 18:05 ` [U-Boot] [PATCH v3 3/9] power: axp209: Use BIT() macro Priit Laes
2018-11-21 18:05 ` [U-Boot] [PATCH v3 4/9] power: axp209: Define the chip version mask Priit Laes
2018-11-21 18:05 ` [U-Boot] [PATCH v3 5/9] power: axp209: Reduce magic values by adding defines for LDO[234] Priit Laes
2018-11-21 18:05 ` [U-Boot] [PATCH v3 6/9] power: axp209: Add support for voltage rate control on LDO3 Priit Laes
2018-11-22  8:22   ` Maxime Ripard
2018-11-21 18:05 ` [U-Boot] [PATCH v3 7/9] power: axp209: Limit inrush current for broken boards Priit Laes
2018-11-22  8:22   ` Maxime Ripard
2018-11-21 18:05 ` [U-Boot] [PATCH v3 8/9] arm: sunxi: Reduce inrush current on Olimex OLinuXino-A20-Lime2 Priit Laes
2018-11-22  8:22   ` Maxime Ripard
2018-11-21 18:05 ` [U-Boot] [PATCH v3 9/9] arm: sunxi: Reduce inrush current on Olimex OLinuXino-A20-Lime2-eMMC Priit Laes
2018-11-22  8:23   ` Maxime Ripard
2018-11-21 18:13 ` [U-Boot] [PATCH v3 0/9] Stop AXP from crashing when enabling LDO3 Priit Laes
2018-11-22 14:07   ` Olliver Schinagl
2018-11-22 14:30     ` [U-Boot] [linux-sunxi] " Priit Laes
     [not found] ` <jwvzhu2upbx.fsf-monnier+gmane.comp.hardware.netbook.arm.sunxi@gnu.org>
2018-11-22  7:31   ` Priit Laes
2018-11-24 19:36     ` [U-Boot] Reboot and audio on Orange Pi mini (was: [linux-sunxi] Re: [PATCH v3 0/9] Stop AXP from crashing when enabling LDO3) Stefan Monnier
2018-11-27 16:11 ` [U-Boot] [linux-sunxi] [PATCH v3 0/9] Stop AXP from crashing when enabling LDO3 Priit Laes
2018-11-28 11:10 ` [U-Boot] " Andy Yan
2018-11-28 12:23   ` Andy Yan
2018-11-28 14:22     ` Priit Laes
2018-11-29  0:45       ` Andy Yan
2018-12-07 16:56 ` [U-Boot] [linux-sunxi] " Jagan Teki

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.