tizen: add recovery boot mode
[profile/mobile/platform/kernel/u-boot-tm1.git] / property / cmd_cboot.c
old mode 100755 (executable)
new mode 100644 (file)
index 1e398fb..663ad2d
@@ -228,6 +228,11 @@ boot_mode_enum_type  get_mode_from_gpio_extend(void){
     }
 }
 
+#ifdef CONFIG_TIZEN
+extern int tizen_reboot_check(void);
+extern int tizen_reboot_recovery_check(void);
+#endif
+
 int do_cboot(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
 {
     volatile int i;
@@ -280,8 +285,22 @@ int do_cboot(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
     DBG("do_cboot:boot mode is %d\n",bootmode);
 
 #ifdef CONFIG_TIZEN
-       if (bootmode == CMD_NONE)
-               bootmode = CMD_NORMAL_MODE;
+       if (bootmode == CMD_NONE || bootmode == CMD_CHARGE_MODE) {
+               if (bootmode == CMD_NONE)
+                       bootmode = CMD_NORMAL_MODE;
+               if (tizen_reboot_check()) {
+                       bootmode = CMD_THOR_MODE;
+                       DBG("do_cboot:boot mode is %d\n",bootmode);
+               } else if (tizen_reboot_recovery_check()) {
+#ifdef CONFIG_RAMDISK_BOOT
+                       bootmode = CMD_RECOVERY_MODE;
+#else
+                       bootmode = CMD_NORMAL_MODE;
+#endif
+                       DBG("do_cboot:boot mode is %d\n",bootmode);
+               }
+
+       }
 #endif
 
 #ifdef CONFIG_LCD_LOGO
@@ -308,6 +327,9 @@ int do_cboot(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
 
     cmd_mode_regist(boot_mode_array);
     if((bootmode > CMD_POWER_DOWN_DEVICE) && (0 != boot_mode_array[bootmode])){
+       /* goto main_loop() if any input is hit from console */
+       if (tstc())
+               return 0;
         DBG("do_cboot: enter boot mode\n");
         boot_mode_array[bootmode]();
     }else{