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 <oli...@schinagl.nl> Signed-off-by: Priit Laes <pl...@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 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot