i2S6ULY2: eMMC variant use GPT partition
This commit is contained in:
@ -469,16 +469,12 @@ void board_late_mmc_env_init(void)
|
||||
|
||||
if (!check_mmc_autodetect())
|
||||
return;
|
||||
|
||||
#if 0
|
||||
setenv_ulong("mmcdev", dev_no);
|
||||
|
||||
/* Set mmcblk env */
|
||||
sprintf(mmcblk, "/dev/mmcblk%dp2 rootwait rw",
|
||||
mmc_map_to_kernel_blk(dev_no));
|
||||
setenv("mmcroot", mmcblk);
|
||||
|
||||
sprintf(cmd, "mmc dev %d", dev_no);
|
||||
run_command(cmd, 0);
|
||||
#endif
|
||||
}
|
||||
int board_mmc_init(bd_t *bis)
|
||||
{
|
||||
@ -871,6 +867,7 @@ static const struct boot_mode board_boot_modes[] = {
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SYS_BOOT_NAND
|
||||
void create_partition_table(void)
|
||||
{
|
||||
struct mtd_info *nand = &nand_info[0];
|
||||
@ -886,9 +883,50 @@ void create_partition_table(void)
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SYS_BOOT_EMMC
|
||||
void generate_partition_table(void)
|
||||
{
|
||||
struct mmc *mmc = find_mmc_device(1);
|
||||
unsigned int capacity_gb = 0;
|
||||
#if 0
|
||||
/*
|
||||
* Todo: will use random uuid for gpt
|
||||
*/
|
||||
if(!getenv("uuid_disk"))
|
||||
run_command("uuid uuid_disk", 0);
|
||||
if(!getenv("part1_uuid"))
|
||||
run_command("uuid part1_uuid", 0);
|
||||
if(!getenv("part2_uuid"))
|
||||
run_command("uuid part2_uuid", 0);
|
||||
if(!getenv("part3_uuid"))
|
||||
run_command("uuid part3_uuid", 0);
|
||||
if(!getenv("part4_uuid"))
|
||||
run_command("uuid part4_uuid", 0);
|
||||
if(!getenv("part5_uuid"))
|
||||
run_command("uuid part5_uuid", 0);
|
||||
if(!getenv("part6_uuid"))
|
||||
run_command("uuid part6_uuid", 0);
|
||||
if(!getenv("part7_uuid"))
|
||||
run_command("uuid part7_uuid", 0);
|
||||
#endif
|
||||
/* Retrieve eMMC size in GiB */
|
||||
if (mmc)
|
||||
capacity_gb = mmc->capacity / SZ_1G;
|
||||
|
||||
/* eMMC capacity is not exact, so asume 8GB if larger than 7GB */
|
||||
if (capacity_gb >= 7)
|
||||
setenv("parts_linux", LINUX_8GB_PARTITION_TABLE);
|
||||
else
|
||||
setenv("parts_linux", LINUX_4GB_PARTITION_TABLE);
|
||||
}
|
||||
#endif
|
||||
|
||||
int board_late_init(void)
|
||||
{
|
||||
char* parttable;
|
||||
|
||||
#ifdef CONFIG_CMD_BMODE
|
||||
add_board_boot_modes(board_boot_modes);
|
||||
#endif
|
||||
@ -915,6 +953,15 @@ int board_late_init(void)
|
||||
|
||||
set_wdog_reset((struct wdog_regs *)WDOG1_BASE_ADDR);
|
||||
|
||||
#ifdef CONFIG_SYS_BOOT_EMMC
|
||||
/*
|
||||
* If there is no defined partition table generate one dynamically
|
||||
* basing on the available eMMC size.
|
||||
*/
|
||||
parttable = getenv("parts_linux");
|
||||
if (!parttable)
|
||||
generate_partition_table();
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@ -114,19 +114,52 @@
|
||||
#elif defined(CONFIG_SYS_BOOT_EMMC)
|
||||
/* i2S-6ULL eMMC variant */
|
||||
#define CONFIG_ENV_IS_IN_MMC
|
||||
#ifdef CONFIG_SDCARD
|
||||
#define CONFIG_SYS_MMC_ENV_DEV 0 /* USDHC1 */
|
||||
#else
|
||||
#define CONFIG_SYS_MMC_ENV_DEV 1 /* USDHC2 */
|
||||
#endif
|
||||
#define CONFIG_SYS_MMC_ENV_PART 1 /* user area */
|
||||
|
||||
#define CONFIG_BOOT_PARTITION "1"
|
||||
#define CONFIG_RECOVERY_PARTITION "2"
|
||||
|
||||
#define CONFIG_CMD_UUID
|
||||
#define CONFIG_CMD_UPDATE_MMC
|
||||
|
||||
#define RANDOM_UUIDS \
|
||||
"uuid_disk=075e2a9b-6af6-448c-a52a-3a6e69f0afff\0" \
|
||||
"part1_uuid=43f1961b-ce4c-4e6c-8f22-2230c5d532bd\0" \
|
||||
"part2_uuid=f241b915-4241-47fd-b4de-ab5af832a0f6\0" \
|
||||
"part3_uuid=1c606ef5-f1ac-43b9-9bb5-d5c578580b6b\0" \
|
||||
"part4_uuid=c7d8648b-76f7-4e2b-b829-e95a83cc7b32\0" \
|
||||
"part5_uuid=ebae5694-6e56-497c-83c6-c4455e12d727\0" \
|
||||
"part6_uuid=3845c9fc-e581-49f3-999f-86c9bab515ef\0" \
|
||||
"part7_uuid=3fcf7bf1-b6fe-419d-9a14-f87950727bc0\0" \
|
||||
"part8_uuid=12c08a28-fb40-430a-a5bc-7b4f015b0b3c\0" \
|
||||
"part9_uuid=dc83dea8-c467-45dc-84eb-5e913daec17e\0"
|
||||
|
||||
#define LINUX_4GB_PARTITION_TABLE \
|
||||
"\"uuid_disk=${uuid_disk};" \
|
||||
"start=2MiB," \
|
||||
"name=linux,size=64MiB,uuid=${part1_uuid};" \
|
||||
"name=recovery,size=64MiB,uuid=${part2_uuid};" \
|
||||
"name=rootfs,size=1536MiB,uuid=${part3_uuid},type=linux;" \
|
||||
"name=data,size=-,uuid=${part4_uuid},type=linux;" \
|
||||
"\""
|
||||
#define LINUX_8GB_PARTITION_TABLE \
|
||||
"\"uuid_disk=${uuid_disk};" \
|
||||
"start=2MiB," \
|
||||
"name=linux,size=64MiB,uuid=${part1_uuid};" \
|
||||
"name=recovery,size=64MiB,uuid=${part2_uuid};" \
|
||||
"name=rootfs,size=3GiB,uuid=${part3_uuid};" \
|
||||
"name=data,size=-,uuid=${part4_uuid};" \
|
||||
"\""
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_ENV_IS_IN_MMC) || defined(CONFIG_SDCARD)
|
||||
#define CONFIG_ENV_OFFSET (8 * SZ_64K)
|
||||
#define CONFIG_ENV_SIZE SZ_8K
|
||||
#if defined(CONFIG_ENV_IS_IN_MMC)
|
||||
|
||||
#define CONFIG_ENV_OFFSET SZ_1M
|
||||
#define CONFIG_ENV_SIZE SZ_16K
|
||||
|
||||
#elif defined(CONFIG_ENV_IS_IN_SPI_FLASH)
|
||||
|
||||
#define CONFIG_ENV_OFFSET (768 * 1024)
|
||||
#define CONFIG_ENV_SIZE SZ_8K
|
||||
#define CONFIG_ENV_SECT_SIZE (64 * 1024)
|
||||
@ -134,10 +167,13 @@
|
||||
#define CONFIG_ENV_SPI_CS CONFIG_SF_DEFAULT_CS
|
||||
#define CONFIG_ENV_SPI_MODE CONFIG_SF_DEFAULT_MODE
|
||||
#define CONFIG_ENV_SPI_MAX_HZ CONFIG_SF_DEFAULT_SPEED
|
||||
|
||||
#elif defined(CONFIG_ENV_IS_IN_NAND)
|
||||
|
||||
#define CONFIG_ENV_OFFSET (SZ_1M * 5)
|
||||
#define CONFIG_ENV_SECT_SIZE SZ_1M
|
||||
#define CONFIG_ENV_SIZE CONFIG_ENV_SECT_SIZE
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@ -161,6 +197,12 @@
|
||||
#define CONFIG_PARTITION_UUIDS
|
||||
#define CONFIG_CMD_PART
|
||||
#define CONFIG_SUPPORT_EMMC_BOOT /* eMMC specific */
|
||||
|
||||
/* MMC device and partition where U-Boot image is */
|
||||
#define CONFIG_SYS_BOOT_PART_EMMC 1 /* Boot part 1 on eMMC */
|
||||
#define CONFIG_SYS_BOOT_PART_OFFSET SZ_1K
|
||||
#define CONFIG_SYS_BOOT_PART_SIZE (SZ_2M - CONFIG_SYS_BOOT_PART_OFFSET)
|
||||
|
||||
#endif
|
||||
|
||||
#define CONFIG_SYS_MMC_IMG_LOAD_PART 1
|
||||
@ -291,6 +333,7 @@
|
||||
#endif /* endif CONFIG_CMD_USB */
|
||||
|
||||
/* MTD (NAND) */
|
||||
#if defined(CONFIG_SYS_BOOT_NAND)
|
||||
#define CONFIG_SKIP_NAND_BBT_SCAN
|
||||
#define CONFIG_UBOOT_PARTITION "bootloader"
|
||||
#define CONFIG_LINUX_PARTITION "linux"
|
||||
@ -322,6 +365,7 @@
|
||||
|
||||
/* Max percentage of reserved blocks for bad block management per partition */
|
||||
#define CONFIG_MTD_UBI_MAXRSVDPEB_PCNT 4
|
||||
#endif
|
||||
|
||||
/* Supported sources for update */
|
||||
#define CONFIG_SUPPORTED_SOURCES ((1 << SRC_TFTP) | \
|
||||
|
||||
@ -75,6 +75,7 @@
|
||||
"if test $fdt_file = undefined; then " \
|
||||
"echo WARNING: Could not determine dtb to use; fi; " \
|
||||
"fi;\0"
|
||||
|
||||
#elif defined(CONFIG_SYS_BOOT_EMMC)
|
||||
/* i2S-6ULL eMMC Variant */
|
||||
#define CONFIG_MFG_NAND_PARTITION ""
|
||||
@ -175,6 +176,7 @@
|
||||
|
||||
#define CONFIG_EXTRA_ENV_SETTINGS \
|
||||
CONFIG_MFG_ENV_SETTINGS \
|
||||
RANDOM_UUIDS \
|
||||
"script=boot.scr\0" \
|
||||
"zimage=zImage\0" \
|
||||
"console=ttymxc0\0" \
|
||||
@ -185,15 +187,28 @@
|
||||
"boot_fdt=try\0" \
|
||||
"ip_dyn=yes\0" \
|
||||
"panel=TFT43AB\0" \
|
||||
"default_bootargs=console=ttymxc0,115200\0" \
|
||||
"opt_args=quiet \0" \
|
||||
"bootargs_linux=\0" \
|
||||
"mmcdev="__stringify(CONFIG_SYS_MMC_ENV_DEV)"\0" \
|
||||
"mmcpart=" __stringify(CONFIG_SYS_MMC_IMG_LOAD_PART) "\0" \
|
||||
"mmcroot=" CONFIG_MMCROOT " rootwait rw\0" \
|
||||
"mmcpart=" CONFIG_BOOT_PARTITION "\0" \
|
||||
"mmcroot=PARTUUID=1c606ef5-f1ac-43b9-9bb5-d5c578580b6b\0" \
|
||||
"mmcautodetect=yes\0" \
|
||||
"mmcargs=setenv bootargs ${default_bootargs} " \
|
||||
"partition_mmc_linux=mmc rescan;" \
|
||||
"if mmc dev ${mmcdev} 0; then " \
|
||||
"gpt write mmc ${mmcdev} ${parts_linux};" \
|
||||
"mmc rescan;" \
|
||||
"else " \
|
||||
"if mmc dev ${mmcdev};then " \
|
||||
"gpt write mmc ${mmcdev} ${parts_linux};" \
|
||||
"mmc rescan;" \
|
||||
"else;" \
|
||||
"fi;" \
|
||||
"fi;\0" \
|
||||
"mmcargs=setenv bootargs console=${console},${baudrate} " \
|
||||
CONFIG_BOOTARGS_CMA_SIZE \
|
||||
"root=${mmcroot} ${opt_args}\0" \
|
||||
"root=${mmcroot} ${bootargs_linux}\0" \
|
||||
"bootargs_mmc_linux=setenv bootargs console=${console},${baudrate} " \
|
||||
"${bootargs_linux} root=${mmcroot} rootwait rw " \
|
||||
"${bootargs_once} ${extra_bootargs}\0" \
|
||||
"loadbootscript=" \
|
||||
"fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \
|
||||
"bootscript=echo Running bootscript from mmc ...; " \
|
||||
@ -243,9 +258,7 @@
|
||||
CONFIG_FDT_FILE \
|
||||
|
||||
#define CONFIG_BOOTCOMMAND \
|
||||
"run findfdt;" \
|
||||
"mmc dev ${mmcdev} ${mmcpart};" \
|
||||
"mmc dev ${mmcdev} ${mmcpart}; if mmc rescan; then " \
|
||||
"if mmc rescan; then " \
|
||||
"if run loadbootscript; then " \
|
||||
"run bootscript; " \
|
||||
"else " \
|
||||
@ -255,14 +268,16 @@
|
||||
"fi; " \
|
||||
"fi; " \
|
||||
"else run netboot; fi"
|
||||
#endif
|
||||
|
||||
#define CONFIG_SYS_STORAGE_MEDIA "mmc"
|
||||
#endif /* end of CONFIG_SYS_BOOT_EMMC */
|
||||
|
||||
/* Miscellaneous configurable options */
|
||||
#define CONFIG_CMD_MEMTEST
|
||||
#define CONFIG_SYS_MEMTEST_START 0x80000000
|
||||
#define CONFIG_SYS_MEMTEST_END (CONFIG_SYS_MEMTEST_START + 0x8000000)
|
||||
|
||||
#define CONFIG_MMCROOT "/dev/mmcblk1p2" /* USDHC2 */
|
||||
#define CONFIG_MMCROOT "/dev/mmcblk1p3" /* USDHC2, part 3 */
|
||||
|
||||
#define CONFIG_IMX_THERMAL
|
||||
|
||||
@ -286,7 +301,7 @@
|
||||
#define CONFIG_IMX_VIDEO_SKIP
|
||||
#define CONFIG_IMX6_LCD_DAT16
|
||||
/*#define CONFIG_IMX6_LCD_DAT24*/
|
||||
#endif
|
||||
#endif /* End of CONFIG_VIDEO */
|
||||
#endif
|
||||
|
||||
#define CONFIG_IOMUX_LPSR
|
||||
|
||||
Reference in New Issue
Block a user