common: rkimg: set download boot mode as the highest priority

Anyway, we should promise the user can enter download mode by
kernel command: reboot bootloader/loader/fastboot.

Change-Id: I23181a2f672774070f93478a338622be622900a0
Signed-off-by: Joseph Chen <chenjh@rock-chips.com>
This commit is contained in:
Joseph Chen 2019-05-31 09:55:12 +08:00 committed by Kever Yang
parent 224307fea3
commit 7b4692447b
1 changed files with 16 additions and 14 deletions

View File

@ -402,27 +402,29 @@ int rockchip_get_boot_mode(void)
}
fallback:
/* Mode from misc partition */
if (bmsg && !strcmp(bmsg->command, "boot-recovery")) {
boot_mode = BOOT_MODE_RECOVERY;
/*
* Boot mode priority
*
* Anyway, we should set download boot mode as the highest priority, so:
*
* reboot loader/bootloader/fastboot > misc partition "recovery" > reboot xxx.
*/
reg_boot_mode = readl((void *)CONFIG_ROCKCHIP_BOOT_MODE_REG);
if (reg_boot_mode == BOOT_LOADER) {
printf("boot mode: loader\n");
boot_mode = BOOT_MODE_LOADER;
} else if (reg_boot_mode == BOOT_FASTBOOT) {
printf("boot mode: bootloader\n");
boot_mode = BOOT_MODE_BOOTLOADER;
} else if (bmsg && !strcmp(bmsg->command, "boot-recovery")) {
printf("boot mode: recovery\n");
boot_mode = BOOT_MODE_RECOVERY;
} else {
/* Mode from boot mode register */
reg_boot_mode = readl((void *)CONFIG_ROCKCHIP_BOOT_MODE_REG);
switch (reg_boot_mode) {
case BOOT_NORMAL:
printf("boot mode: normal\n");
boot_mode = BOOT_MODE_NORMAL;
break;
case BOOT_FASTBOOT:
printf("boot mode: bootloader\n");
boot_mode = BOOT_MODE_BOOTLOADER;
break;
case BOOT_LOADER:
printf("boot mode: loader\n");
boot_mode = BOOT_MODE_LOADER;
break;
case BOOT_RECOVERY:
/* printf("boot mode: recovery\n"); */
boot_mode = BOOT_MODE_RECOVERY;