diff --git a/board/lge/sniper/sniper.c b/board/lge/sniper/sniper.c index d5318c4..44d422d 100644 --- a/board/lge/sniper/sniper.c +++ b/board/lge/sniper/sniper.c @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -67,6 +68,23 @@ int board_init(void) return 0; } +int misc_init_r(void) +{ + char reboot_mode[2] = { 0 }; + + /* Reboot mode */ + + reboot_mode[0] = omap_reboot_mode(); + if (reboot_mode[0] > 0 && isascii(reboot_mode[0])) { + if (!getenv("reboot-mode")) + setenv("reboot-mode", (char *)reboot_mode); + + omap_reboot_mode_clear(); + } + + return 0; +} + void set_muxconf_regs(void) { MUX_SNIPER(); diff --git a/include/configs/sniper.h b/include/configs/sniper.h index bf788ba..2ac9291 100644 --- a/include/configs/sniper.h +++ b/include/configs/sniper.h @@ -35,6 +35,7 @@ */ #define CONFIG_SYS_GENERIC_BOARD +#define CONFIG_MISC_INIT_R /* * Clocks @@ -251,6 +252,8 @@ #define CONFIG_BOOTCOMMAND \ "setenv boot_mmc_part ${kernel_mmc_part}; " \ + "if test reboot-${reboot-mode} = reboot-r; then " \ + "echo recovery; setenv boot_mmc_part ${recovery_mmc_part}; fi; " \ "part start mmc ${boot_mmc_dev} ${boot_mmc_part} boot_mmc_start; " \ "part size mmc ${boot_mmc_dev} ${boot_mmc_part} boot_mmc_size; " \ "mmc dev ${boot_mmc_dev}; " \