mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 15:14:43 +00:00
sunxi: Add option to prevent booting on power plug-in
For sunxi boards with the AXP209, AXP221, AXP809, and AXP818 PMICs (plus possibly others, I only confirmed the datasheets for these), it is sometimes desirable to not boot whenever the device is plugged in. An example would be when using the NTC CHIP inside a PocketCHIP. This provides a configurable option to check if bit 0 of register 0 of the PMIC says it was powered because of a power button press (0) or a plug-in event (1). If the value is 1 and this option is selected, the device shuts down shortly after printing a message to console stating the reason why it's shutting down. Powering up the board with the power button is not affected. Signed-off-by: Chris Morgan <macromorgan@hotmail.com> [Andre: reword to speak of boot, remove #ifdefs] Signed-off-by: Andre Przywara <andre.przywara@arm.com>
This commit is contained in:
parent
78592c094e
commit
52bcc4f053
2 changed files with 21 additions and 0 deletions
|
@ -785,6 +785,16 @@ config AXP_GPIO
|
|||
---help---
|
||||
Say Y here to enable support for the gpio pins of the axp PMIC ICs.
|
||||
|
||||
config AXP_DISABLE_BOOT_ON_POWERON
|
||||
bool "Disable device boot on power plug-in"
|
||||
depends on AXP209_POWER || AXP221_POWER || AXP809_POWER || AXP818_POWER
|
||||
default n
|
||||
---help---
|
||||
Say Y here to prevent the device from booting up because of a plug-in
|
||||
event. When set, the device will boot into the SPL briefly to
|
||||
determine why it was powered on, and if it was determined because of
|
||||
a plug-in event instead of a button press event it will shut back off.
|
||||
|
||||
config VIDEO_SUNXI
|
||||
bool "Enable graphical uboot console on HDMI, LCD or VGA"
|
||||
depends on !MACH_SUN8I_A83T
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
#include <asm/arch/dram.h>
|
||||
#include <asm/arch/mmc.h>
|
||||
#include <asm/arch/prcm.h>
|
||||
#include <asm/arch/pmic_bus.h>
|
||||
#include <asm/arch/spl.h>
|
||||
#include <asm/global_data.h>
|
||||
#include <linux/delay.h>
|
||||
|
@ -602,6 +603,16 @@ void sunxi_board_init(void)
|
|||
defined CONFIG_AXP809_POWER || defined CONFIG_AXP818_POWER
|
||||
power_failed = axp_init();
|
||||
|
||||
if (IS_ENABLED(CONFIG_AXP_DISABLE_BOOT_ON_POWERON) && !power_failed) {
|
||||
u8 boot_reason;
|
||||
|
||||
pmic_bus_read(AXP_POWER_STATUS, &boot_reason);
|
||||
if (boot_reason & AXP_POWER_STATUS_ALDO_IN) {
|
||||
printf("Power on by plug-in, shutting down.\n");
|
||||
pmic_bus_write(0x32, BIT(7));
|
||||
}
|
||||
}
|
||||
|
||||
#if defined CONFIG_AXP221_POWER || defined CONFIG_AXP809_POWER || \
|
||||
defined CONFIG_AXP818_POWER
|
||||
power_failed |= axp_set_dcdc1(CONFIG_AXP_DCDC1_VOLT);
|
||||
|
|
Loading…
Reference in a new issue