Skip to content
Snippets Groups Projects
Commit 0e14f889 authored by Paul Kocialkowski's avatar Paul Kocialkowski Committed by Tom Rini
Browse files

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: default avatarPaul Kocialkowski <contact@paulk.fr>
Reviewed-by: default avatarTom Rini <trini@konsulko.com>
parent 69f25415
No related branches found
No related tags found
No related merge requests found
......@@ -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');
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment