diff options
-rw-r--r-- | arch/arm/mach-rockchip/boot_mode.c | 2 | ||||
-rw-r--r-- | common/boot_rkimg.c | 11 | ||||
-rw-r--r-- | include/console.h | 1 |
3 files changed, 11 insertions, 3 deletions
diff --git a/arch/arm/mach-rockchip/boot_mode.c b/arch/arm/mach-rockchip/boot_mode.c index a738bfd79cc..f271c5b945b 100644 --- a/arch/arm/mach-rockchip/boot_mode.c +++ b/arch/arm/mach-rockchip/boot_mode.c @@ -164,6 +164,8 @@ void rockchip_dnl_mode_check(void) printf("recovery key pressed, entering recovery mode!\n"); env_set("reboot_mode", "recovery"); } + } else if (gd->console_evt == CONSOLE_EVT_CTRL_F) { + env_set("reboot_mode", "fastboot"); } } diff --git a/common/boot_rkimg.c b/common/boot_rkimg.c index 9c2aedf03db..66a5dfebdaf 100644 --- a/common/boot_rkimg.c +++ b/common/boot_rkimg.c @@ -364,9 +364,14 @@ int rockchip_get_boot_mode(void) * USB attach will do env_set("reboot_mode", "recovery"); */ env_reboot_mode = env_get("reboot_mode"); - if (env_reboot_mode && !strcmp(env_reboot_mode, "recovery")) { - boot_mode = BOOT_MODE_RECOVERY; - printf("boot mode: recovery\n"); + if (env_reboot_mode) { + if (!strcmp(env_reboot_mode, "recovery")) { + boot_mode = BOOT_MODE_RECOVERY; + printf("boot mode: recovery\n"); + } else if (!strcmp(env_reboot_mode, "fastboot")) { + boot_mode = BOOT_MODE_BOOTLOADER; + printf("boot mode: fastboot\n"); + } } if (boot_mode != -1) diff --git a/include/console.h b/include/console.h index d72c8cdf356..c5eac9cba2a 100644 --- a/include/console.h +++ b/include/console.h @@ -12,6 +12,7 @@ extern char console_buffer[]; #define CONSOLE_EVT_CTRL_B 0x02 #define CONSOLE_EVT_CTRL_D 0x04 +#define CONSOLE_EVT_CTRL_F 0x06 /* common/console.c */ int console_init_f(void); /* Before relocation; uses the serial stuff */ |