mirror of
https://github.com/u-boot/u-boot.git
synced 2024-11-30 08:03:32 +08:00
sniper: Power off when the power on reason is not a valid one
In most cases, userspace will attempt to power off the device with HALT instead of POWER_OFF, which triggers a reset instead of a proper power off from the TWL4030. Hence, it is up to the bootloader to actually turn the device off when there is no reason to turn it on. A reboot identified with the OMAP reboot mode bits set is acceptable, as well as a power on reason from either the power button, USB or charger plug. Other cases should trigger a power off. Note that for the U-Boot reset command to take effect, we have to fill-in the OMAP reboot bits. Signed-off-by: Paul Kocialkowski <contact@paulk.fr> Reviewed-by: Tom Rini <trini@konsulko.com>
This commit is contained in:
parent
69f25415ed
commit
0e14f88957
@ -94,6 +94,7 @@ int misc_init_r(void)
|
||||
char serial_string[17] = { 0 };
|
||||
char reboot_mode[2] = { 0 };
|
||||
u32 dieid[4] = { 0 };
|
||||
unsigned char data = 0;
|
||||
|
||||
/* Power button reset init */
|
||||
|
||||
@ -107,6 +108,18 @@ int misc_init_r(void)
|
||||
setenv("reboot-mode", (char *)reboot_mode);
|
||||
|
||||
omap_reboot_mode_clear();
|
||||
} else {
|
||||
/*
|
||||
* When not rebooting, valid power on reasons are either the
|
||||
* power button, charger plug or USB plug.
|
||||
*/
|
||||
|
||||
data |= twl4030_input_power_button();
|
||||
data |= twl4030_input_charger();
|
||||
data |= twl4030_input_usb();
|
||||
|
||||
if (!data)
|
||||
twl4030_power_off();
|
||||
}
|
||||
|
||||
/* Serial number */
|
||||
@ -145,6 +158,11 @@ void get_board_serial(struct tag_serialnr *serialnr)
|
||||
}
|
||||
}
|
||||
|
||||
void reset_misc(void)
|
||||
{
|
||||
omap_reboot_mode_store('u');
|
||||
}
|
||||
|
||||
int fb_set_reboot_flag(void)
|
||||
{
|
||||
return omap_reboot_mode_store('b');
|
||||
|
Loading…
Reference in New Issue
Block a user