}
static int boot_mode;
+
+static const char *boot_flag_name(u32 flag)
+{
+ flag -= SYS_KERNRL_REBOOT_FLAG;
+ switch (flag) {
+ case BOOT_NORMAL: return "NORMAL";
+ case BOOT_LOADER: return "LOADER";
+ case BOOT_MASKROM: return "MASKROM";
+ case BOOT_RECOVER: return "RECOVER";
+ case BOOT_NORECOVER: return "NORECOVER";
+ case BOOT_SECONDOS: return "SECONDOS";
+ case BOOT_WIPEDATA: return "WIPEDATA";
+ case BOOT_WIPEALL: return "WIPEALL";
+ case BOOT_CHECKIMG: return "CHECKIMG";
+ case BOOT_FASTBOOT: return "FASTBOOT";
+ default: return "";
+ }
+}
+
+static const char *boot_mode_name(u32 mode)
+{
+ switch (mode) {
+ case BOOT_MODE_NORMAL: return "NORMAL";
+ case BOOT_MODE_FACTORY2: return "FACTORY2";
+ case BOOT_MODE_RECOVERY: return "RECOVERY";
+ case BOOT_MODE_CHARGE: return "CHARGE";
+ case BOOT_MODE_POWER_TEST: return "POWER_TEST";
+ case BOOT_MODE_OFFMODE_CHARGING: return "OFFMODE_CHARGING";
+ case BOOT_MODE_REBOOT: return "REBOOT";
+ case BOOT_MODE_PANIC: return "PANIC";
+ case BOOT_MODE_WATCHDOG: return "WATCHDOG";
+ default: return "";
+ }
+}
+
static void __init rk30_boot_mode_init(void)
{
u32 boot_flag = readl_relaxed(RK30_PMU_BASE + PMU_SYS_REG0);
if (boot_flag == (SYS_KERNRL_REBOOT_FLAG | BOOT_RECOVER)) {
boot_mode = BOOT_MODE_RECOVERY;
}
- if (boot_mode || boot_flag)
- printk("Boot mode: %d flag: 0x%08x\n", boot_mode, boot_flag);
+ if (boot_mode || ((boot_flag & 0xff) && ((boot_flag & 0xffffff00) == SYS_KERNRL_REBOOT_FLAG)))
+ printk("Boot mode: %s (%d) flag: %s (0x%08x)\n", boot_mode_name(boot_mode), boot_mode, boot_flag_name(boot_flag), boot_flag);
}
int board_boot_mode(void)