
This patch allows to determine active boot partition in boot script:
if mmc partboot ${mmcdev} 2; then echo "booted from eMMC boot1 partition" fi
Signed-off-by: Grygorii Tertychnyi grygorii.tertychnyi@leica-geosystems.com --- cmd/mmc.c | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+)
diff --git a/cmd/mmc.c b/cmd/mmc.c index 1529a3e05ddd..010d6ab9aa19 100644 --- a/cmd/mmc.c +++ b/cmd/mmc.c @@ -771,6 +771,41 @@ static int do_mmc_boot_resize(struct cmd_tbl *cmdtp, int flag, return CMD_RET_SUCCESS; }
+static int do_mmc_partboot(struct cmd_tbl *cmdtp, int flag, + int argc, char *const argv[]) +{ + int dev; + struct mmc *mmc; + u8 part_args, part_emmc; + + if (argc != 3) + return CMD_RET_USAGE; + + dev = simple_strtoul(argv[1], NULL, 10); + + mmc = init_mmc_device(dev, false); + if (!mmc) + return CMD_RET_FAILURE; + + if (IS_SD(mmc)) { + puts("PARTITION_CONFIG only exists on eMMC\n"); + return CMD_RET_FAILURE; + } + + if (mmc->part_config == MMCPART_NOAVAILABLE) { + printf("No part_config info for ver. 0x%x\n", mmc->version); + return CMD_RET_FAILURE; + } + + part_emmc = EXT_CSD_EXTRACT_BOOT_PART(mmc->part_config); + part_args = simple_strtoul(argv[2], NULL, 10); + + if (part_emmc == part_args) + return CMD_RET_SUCCESS; + else + return CMD_RET_FAILURE; +} + static int mmc_partconf_print(struct mmc *mmc) { u8 ack, access, part; @@ -953,6 +988,7 @@ static struct cmd_tbl cmd_mmc[] = { #ifdef CONFIG_SUPPORT_EMMC_BOOT U_BOOT_CMD_MKENT(bootbus, 5, 0, do_mmc_bootbus, "", ""), U_BOOT_CMD_MKENT(bootpart-resize, 4, 0, do_mmc_boot_resize, "", ""), + U_BOOT_CMD_MKENT(partboot, 3, 0, do_mmc_partboot, "", ""), U_BOOT_CMD_MKENT(partconf, 5, 0, do_mmc_partconf, "", ""), U_BOOT_CMD_MKENT(rst-function, 3, 0, do_mmc_rst_func, "", ""), #endif @@ -1021,6 +1057,9 @@ U_BOOT_CMD( " - Set the BOOT_BUS_WIDTH field of the specified device\n" "mmc bootpart-resize <dev> <boot part size MB> <RPMB part size MB>\n" " - Change sizes of boot and RPMB partitions of specified device\n" + "mmc partboot dev boot_partition\n" + " - Return success if the given boot_partition value matches BOOT_PARTITION_ENABLE\n" + " bit field of the specified device\n" "mmc partconf dev [boot_ack boot_partition partition_access]\n" " - Show or change the bits of the PARTITION_CONFIG field of the specified device\n" "mmc rst-function dev value\n"