tizen: add recovery boot mode
[profile/mobile/platform/kernel/u-boot-tm1.git] / property / normal_mode.c
index 3ef7204..0e4cd49 100644 (file)
@@ -33,6 +33,7 @@ void *harsh_data = harsh_data_buf;
 unsigned char raw_header[8192];
 const int SP09_MAX_PHASE_BUFF_SIZE = sizeof(SP09_PHASE_CHECK_T);
 unsigned int g_charger_mode = 0;
+unsigned int g_recovery_mode = 0;
 char serial_number_to_transfer[SP09_MAX_SN_LEN];
 
 extern int charger_connected(void);
@@ -173,6 +174,9 @@ int fdt_fixup_for_tizen(void *fdt)
        ptr += sprintf(ptr, CMDLINE_DEFAULT_TIZEN);
 
 #ifdef CONFIG_RAMDISK_BOOT
+       if (g_recovery_mode)
+                       ptr += sprintf(ptr, " bootmode=recovery");
+
        ptr += sprintf(ptr, " root=/dev/ram0 rw initrd=0x%x,%dM",
                                RAMDISK_ADR, RAMDISK_SIZE_MB);
 #else
@@ -200,11 +204,13 @@ int fdt_fixup_for_tizen(void *fdt)
                break;
        case PM_STATE_NORMAL:
        default:
+               if (!g_recovery_mode) {
 #ifdef CONFIG_RAMDISK_BOOT
-               ptr += sprintf(ptr, " bootmode=ramdisk");
+                       ptr += sprintf(ptr, " bootmode=ramdisk");
 #else
-               ptr += sprintf(ptr, " bootmode=normal");
+                       ptr += sprintf(ptr, " bootmode=normal");
 #endif
+               }
        }
        thor_save_env("normal");
 
@@ -389,6 +395,11 @@ static int start_linux()
        return 0;
 }
 
+void set_recovery_mode(unsigned int recovery_mode)
+{
+       g_recovery_mode = recovery_mode;
+}
+
 void lcd_display_logo(int backlight_set, ulong bmp_img, size_t size)
 {
 #define mdelay(t)     ({unsigned long msec=(t); while (msec--) { udelay(1000);}})      //LiWei add