tizen: add ramdisk bootmode with ramdisk config option 22/111922/2
authorSeung-Woo Kim <sw0312.kim@samsung.com>
Wed, 25 Jan 2017 04:20:39 +0000 (13:20 +0900)
committerSeung-Woo Kim <sw0312.kim@samsung.com>
Fri, 10 Feb 2017 04:50:47 +0000 (13:50 +0900)
This patch adds ramdisk bootmode with ramdisk boot config option.

Change-Id: Ic9b571b4eb7c09805b7f567fa9ffa5ec08fe51de
Signed-off-by: Seung-Woo Kim <sw0312.kim@samsung.com>
include/normal_mode.h
property/normal_emc_mode.c
property/normal_mode.c
property/tizen_misc.c

index 2b2ab25..bd4beba 100644 (file)
@@ -53,6 +53,7 @@ extern unsigned char raw_header[8192];
 #define VLX_TAG_ADDR    0x82000100
 #define DT_ADR          0x85400000
 #define RAMDISK_ADR     0x85500000
+#define RAMDISK_SIZE_MB 8
 
 #if defined (CONFIG_SPX30G)
 #define COOPERATE_PROCESSOR_RESET_ADDR    0x402b00b0
index d4fdecb..e364956 100644 (file)
@@ -560,6 +560,15 @@ LOCAL int _boot_load_kernel_ramdisk_image(block_dev_desc_t * dev, char *bootmode
                debugf("%s:dt load error!\n", __FUNCTION__);
                return 0;
        }
+
+
+#ifdef CONFIG_TIZEN
+#ifdef CONFIG_RAMDISK_BOOT
+       {
+               load_ramdisk(PARTS_RAMDISK, RAMDISK_ADR, RAMDISK_SIZE_MB * 1024 * 1024);
+       }
+#endif /* CONFIG_RAMDISK_BOOT */
+#else /* CONFIG_TIZEN */
 #ifdef CONFIG_SDRAMDISK
        {
                int sd_ramdisk_size = 0;
@@ -574,6 +583,7 @@ LOCAL int _boot_load_kernel_ramdisk_image(block_dev_desc_t * dev, char *bootmode
                        hdr->ramdisk_size = sd_ramdisk_size;
        }
 #endif
+#endif /* CONFIG_TIZEN */
        return 1;
 }
 
index 2bd31af..3ef7204 100644 (file)
@@ -172,15 +172,18 @@ int fdt_fixup_for_tizen(void *fdt)
        /* Tizen default cmdline: mem */
        ptr += sprintf(ptr, CMDLINE_DEFAULT_TIZEN);
 
+#ifdef CONFIG_RAMDISK_BOOT
+       ptr += sprintf(ptr, " root=/dev/ram0 rw initrd=0x%x,%dM",
+                               RAMDISK_ADR, RAMDISK_SIZE_MB);
+#else
        val = tizen_get_part_num(PARTS_ROOTFS);
        ptr += sprintf(ptr, " root=/dev/mmcblk0p%d ro rootfstype=ext4 rootwait", val);
+       ptr += sprintf(ptr, " initrd=0x%x,0x%x", RAMDISK_ADR, 0);
+#endif
 
        ptr += sprintf(ptr, " lcd_id=ID%06x", load_lcd_id_to_kernel());
        ptr += sprintf(ptr, " lcd_base=%x", CONFIG_FB_RAM_BASE);
 
-       /* check ramdisk_size */
-       ptr += sprintf(ptr, " initrd=0x%x,0x%x", RAMDISK_ADR, 0);
-
        ptr += sprintf(ptr, " mtp_offset=%s", load_mtp_offset_to_kernel());
        ptr += sprintf(ptr, " elvss_offset=0x%x", load_elvss_offset_to_kernel());
        ptr += sprintf(ptr, " hbm_offset=%s", load_hbm_offset_to_kernel());
@@ -197,7 +200,11 @@ int fdt_fixup_for_tizen(void *fdt)
                break;
        case PM_STATE_NORMAL:
        default:
+#ifdef CONFIG_RAMDISK_BOOT
+               ptr += sprintf(ptr, " bootmode=ramdisk");
+#else
                ptr += sprintf(ptr, " bootmode=normal");
+#endif
        }
        thor_save_env("normal");
 
index a881d17..263c476 100644 (file)
@@ -775,6 +775,11 @@ static int load_binary_to_addr(char *name, unsigned int addr, unsigned int size)
        return 0;
 }
 
+int load_ramdisk(char *name, unsigned int base_addr, unsigned int size)
+{
+       return load_binary_to_addr(name, base_addr, size);
+}
+
 int check_board_signature(char *fname, unsigned int dn_addr, unsigned int size)
 {
        struct sig_header bh_target;