Hi Grygorii, On 2/15/21 10:04 PM, gr embeter wrote: > Hello Jaehoon, > > On Sun, 14 Feb 2021 at 23:08 Jaehoon Chung <jh80.ch...@samsung.com> wrote: > >> Dear Grygorii, >> >> On 2/12/21 7:32 PM, grygorii tertychnyi wrote: >>> This patch allows to determine active boot partition in boot script: >>> >>> if mmc partboot ${mmcdev} 2; then >>> echo "booted from eMMC boot1 partition" >>> fi >> >> I don't know what purpose this patch has. > > > With an eMMC as a boot source I have two boot partitions, i.e. “boot1” and > “boot2”, with two different versions of U-Boot on each partition. > > I also have two different kernels located on eMMC “user” partition, let’s > say “image1” and “image2”. > > So, I want to boot “image1” kernel if it is U-boot from “boot1” partition > is booted now, > and to boot “image2” kernel if it is U-boot from “boot2” partition is > booted. > > It is easy to do it manually. I just added possibility to do it with U-boot > script now, > because “mmc partconf ...” does not let you check the current boot > partition with hush. > > Hope, I explained the purpose.
I remembered. Because i feel to see similar patch to use bootpart. At that time, i also asked same question. Sorry for not remembered yours. https://patchwork.ozlabs.org/project/uboot/patch/20201212074633.891704-1-grembe...@outlook.com/ > > > >> >> Best Regards, >> Jaehoon Chung >> >>> >>> Signed-off-by: Grygorii Tertychnyi < >> grygorii.tertych...@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, "", ""), partboot can be confused. how about changing more clear name, like mmc_bootpart_check? >>> 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" why it needs to pass "boot_partition"? And use more clear usage..with optional or mandatory. <> - mandatory [] - optional mmc partboot <dev> >>> + " - 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" >>> >> >> >