[PATCH 0/2] Add more support for NXP's mfgtool

NXP's mfgtool needs some additional switches to deal with the whole mmc device.
Angus Ainslie (2): fastboot: fb_getvar: Add getvar_logical_blocksize for MXP mfgtool fastboot: fb_mmc: Add mfgtool all partition size
drivers/fastboot/fb_getvar.c | 27 +++++++++++++++++++++++++++ drivers/fastboot/fb_mmc.c | 7 +++++++ 2 files changed, 34 insertions(+)

uuu uses the blocksize to determine the upload size
Signed-off-by: Angus Ainslie angus@akkea.ca --- drivers/fastboot/fb_getvar.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+)
diff --git a/drivers/fastboot/fb_getvar.c b/drivers/fastboot/fb_getvar.c index d43f2cfee6..ff5f0d3d40 100644 --- a/drivers/fastboot/fb_getvar.c +++ b/drivers/fastboot/fb_getvar.c @@ -31,6 +31,7 @@ static void getvar_partition_type(char *part_name, char *response); static void getvar_partition_size(char *part_name, char *response); #endif static void getvar_is_userspace(char *var_parameter, char *response); +static void getvar_logical_blocksize(char *var_parameter, char *response);
static const struct { const char *variable; @@ -81,6 +82,9 @@ static const struct { }, { .variable = "is-userspace", .dispatch = getvar_is_userspace + }, { + .variable = "logical-block-size", + .dispatch = getvar_logical_blocksize } };
@@ -140,6 +144,29 @@ static void getvar_downloadsize(char *var_parameter, char *response) fastboot_response("OKAY", response, "0x%08x", fastboot_buf_size); }
+static int fb_get_block_size(void) +{ + int dev_no = 0; + struct blk_desc *dev_desc; + + dev_desc = blk_get_dev("mmc", 0); + + if (!dev_desc) { + printf("** Block device %s %d not supported\n", + "mmc", 0); + return 0; + } + return dev_desc->blksz; +} + +static void getvar_logical_blocksize(char *var_parameter, char *response) +{ + u32 blksz; + + blksz = fb_get_block_size(); + fastboot_response("OKAY", response, "0x%08x", blksz); +} + static void getvar_serialno(char *var_parameter, char *response) { const char *tmp = env_get("serial#");

Hi Angus,
On 12/17/21 10:41 AM, Angus Ainslie wrote:
uuu uses the blocksize to determine the upload size
Can you please elaborate on this more?
Signed-off-by: Angus Ainslie angus@akkea.ca
drivers/fastboot/fb_getvar.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+)
diff --git a/drivers/fastboot/fb_getvar.c b/drivers/fastboot/fb_getvar.c index d43f2cfee6..ff5f0d3d40 100644 --- a/drivers/fastboot/fb_getvar.c +++ b/drivers/fastboot/fb_getvar.c @@ -31,6 +31,7 @@ static void getvar_partition_type(char *part_name, char *response); static void getvar_partition_size(char *part_name, char *response); #endif static void getvar_is_userspace(char *var_parameter, char *response); +static void getvar_logical_blocksize(char *var_parameter, char *response);
static const struct { const char *variable; @@ -81,6 +82,9 @@ static const struct { }, { .variable = "is-userspace", .dispatch = getvar_is_userspace
- }, {
.variable = "logical-block-size",
} };.dispatch = getvar_logical_blocksize
@@ -140,6 +144,29 @@ static void getvar_downloadsize(char *var_parameter, char *response) fastboot_response("OKAY", response, "0x%08x", fastboot_buf_size); }
+static int fb_get_block_size(void) +{
- int dev_no = 0;
- struct blk_desc *dev_desc;
- dev_desc = blk_get_dev("mmc", 0);
And what if your block device is not mmc 0? This code is not specific to fastboot mmc. What about nand?
- if (!dev_desc) {
printf("** Block device %s %d not supported\n",
"mmc", 0);
return 0;
Why return 0? This should result in an error fastboot_response.
- }
- return dev_desc->blksz;
+}
+static void getvar_logical_blocksize(char *var_parameter, char *response) +{
- u32 blksz;
- blksz = fb_get_block_size();
- fastboot_response("OKAY", response, "0x%08x", blksz);
Can we combine these functions?
--Sean
+}
- static void getvar_serialno(char *var_parameter, char *response) { const char *tmp = env_get("serial#");

Hi Sean,
On 2021-12-17 15:10, Sean Anderson wrote:
Hi Angus,
On 12/17/21 10:41 AM, Angus Ainslie wrote:
uuu uses the blocksize to determine the upload size
Can you please elaborate on this more?
Signed-off-by: Angus Ainslie angus@akkea.ca
drivers/fastboot/fb_getvar.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+)
diff --git a/drivers/fastboot/fb_getvar.c b/drivers/fastboot/fb_getvar.c index d43f2cfee6..ff5f0d3d40 100644 --- a/drivers/fastboot/fb_getvar.c +++ b/drivers/fastboot/fb_getvar.c @@ -31,6 +31,7 @@ static void getvar_partition_type(char *part_name, char *response); static void getvar_partition_size(char *part_name, char *response); #endif static void getvar_is_userspace(char *var_parameter, char *response); +static void getvar_logical_blocksize(char *var_parameter, char *response); static const struct { const char *variable; @@ -81,6 +82,9 @@ static const struct { }, { .variable = "is-userspace", .dispatch = getvar_is_userspace
- }, {
.variable = "logical-block-size",
} }; @@ -140,6 +144,29 @@ static void getvar_downloadsize(char.dispatch = getvar_logical_blocksize
*var_parameter, char *response) fastboot_response("OKAY", response, "0x%08x", fastboot_buf_size); } +static int fb_get_block_size(void) +{
- int dev_no = 0;
- struct blk_desc *dev_desc;
- dev_desc = blk_get_dev("mmc", 0);
And what if your block device is not mmc 0? This code is not specific to fastboot mmc. What about nand?
- if (!dev_desc) {
printf("** Block device %s %d not supported\n",
"mmc", 0);
return 0;
Why return 0? This should result in an error fastboot_response.
- }
- return dev_desc->blksz;
+}
+static void getvar_logical_blocksize(char *var_parameter, char *response) +{
- u32 blksz;
- blksz = fb_get_block_size();
- fastboot_response("OKAY", response, "0x%08x", blksz);
Can we combine these functions?
--Sean
Thanks for the comments. I'll fix them up for v2.
Angus
+}
- static void getvar_serialno(char *var_parameter, char *response) { const char *tmp = env_get("serial#");

NXP mfgtool uses all to specify the entire partition
Signed-off-by: Angus Ainslie angus@akkea.ca --- drivers/fastboot/fb_mmc.c | 7 +++++++ 1 file changed, 7 insertions(+)
diff --git a/drivers/fastboot/fb_mmc.c b/drivers/fastboot/fb_mmc.c index 2738dc836e..9ebf392252 100644 --- a/drivers/fastboot/fb_mmc.c +++ b/drivers/fastboot/fb_mmc.c @@ -84,6 +84,13 @@ static int do_get_part_info(struct blk_desc **dev_desc, const char *name, /* First try partition names on the default device */ *dev_desc = blk_get_dev("mmc", CONFIG_FASTBOOT_FLASH_MMC_DEV); if (*dev_desc) { + if (!strncmp(name, "all", strlen("all"))) { + info->blksz = (*dev_desc)->blksz; + info->size = (*dev_desc)->lba; + info->start = 0; + return 0; + } + ret = part_get_info_by_name(*dev_desc, name, info); if (ret >= 0) return ret;

On 12/17/21 10:42 AM, Angus Ainslie wrote:
NXP mfgtool uses all to specify the entire partition
Signed-off-by: Angus Ainslie angus@akkea.ca
drivers/fastboot/fb_mmc.c | 7 +++++++ 1 file changed, 7 insertions(+)
diff --git a/drivers/fastboot/fb_mmc.c b/drivers/fastboot/fb_mmc.c index 2738dc836e..9ebf392252 100644 --- a/drivers/fastboot/fb_mmc.c +++ b/drivers/fastboot/fb_mmc.c @@ -84,6 +84,13 @@ static int do_get_part_info(struct blk_desc **dev_desc, const char *name, /* First try partition names on the default device */ *dev_desc = blk_get_dev("mmc", CONFIG_FASTBOOT_FLASH_MMC_DEV); if (*dev_desc) {
if (!strncmp(name, "all", strlen("all"))) {
info->blksz = (*dev_desc)->blksz;
info->size = (*dev_desc)->lba;
info->start = 0;
return 0;
}
- ret = part_get_info_by_name(*dev_desc, name, info); if (ret >= 0) return ret;
This can be done with "partition" 0. If you need compatibility, use an alias.
--Sean

Hello Angus! What is the use-case for these patches?
Would you mind defining why the current implementation is not enough? Used like that:
FB: flash -raw2sparse mmc0 emmc.wic
17 груд. 2021 р. о 17:41 Angus Ainslie angus@akkea.ca написав(ла):
NXP's mfgtool needs some additional switches to deal with the whole mmc device.
Angus Ainslie (2): fastboot: fb_getvar: Add getvar_logical_blocksize for MXP mfgtool fastboot: fb_mmc: Add mfgtool all partition size
drivers/fastboot/fb_getvar.c | 27 +++++++++++++++++++++++++++ drivers/fastboot/fb_mmc.c | 7 +++++++ 2 files changed, 34 insertions(+)
-- 2.25.1

Hi Oleh
On 2021-12-18 00:44, Oleh Kravchenko wrote:
Hello Angus! What is the use-case for these patches?
Would you mind defining why the current implementation is not enough? Used like that:
FB: flash -raw2sparse mmc0 emmc.wic
Thanks, it looks like the way I'm using fastboot is causing the issue.
FB: ucmd setenv fastboot_dev mmc FB: ucmd setenv mmcdev 0 FB: flash -raw2sparse all <image>
using your syntax I likely won't need these patches.
FB: flash -raw2sparse mmc0 <image>
Cheers Angus

18.12.21 16:34, Angus Ainslie пише:
Hi Oleh
On 2021-12-18 00:44, Oleh Kravchenko wrote:
Hello Angus! What is the use-case for these patches?
Would you mind defining why the current implementation is not enough? Used like that:
FB: flash -raw2sparse mmc0 emmc.wic
Thanks, it looks like the way I'm using fastboot is causing the issue.
FB: ucmd setenv fastboot_dev mmc FB: ucmd setenv mmcdev 0 FB: flash -raw2sparse all <image>
using your syntax I likely won't need these patches.
Just make sure you have these configs enabled:
CONFIG_FASTBOOT_MMC_USER_SUPPORT=y CONFIG_FASTBOOT_MMC_BOOT_SUPPORT=y # enable this if you planning flash boot area too
FB: flash -raw2sparse mmc0 <image>
Cheers Angus
participants (3)
-
Angus Ainslie
-
Oleh Kravchenko
-
Sean Anderson