From 60d904a494c6e89c323bc13fa9348869e07e86d3 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Sun, 29 Oct 2023 23:37:22 +0100 Subject: [PATCH] dfu: mmc: Add support for exposing whole mmc device Add support for exposing the whole mmc device by setting the 'size' parameter to 0. This can be useful in case it is not clear what the total device size is up front. Update the documentation accordingly. Signed-off-by: Marek Vasut Reviewed-by: Mattijs Korpershoek Reviewed-by: Lukasz Majewski Link: https://lore.kernel.org/r/20231029223740.284149-1-marex@denx.de Signed-off-by: Mattijs Korpershoek --- doc/usage/dfu.rst | 5 +++++ drivers/dfu/dfu_mmc.c | 10 ++++++++++ 2 files changed, 15 insertions(+) diff --git a/doc/usage/dfu.rst b/doc/usage/dfu.rst index 68cacbbef6..8845a71df3 100644 --- a/doc/usage/dfu.rst +++ b/doc/usage/dfu.rst @@ -121,6 +121,11 @@ mmc with + offset + is the offset in the device (hexadecimal without "0x") + size + is the size of the access area (hexadecimal without "0x") + or 0 which means whole device partid being the GPT or DOS partition index, num diff --git a/drivers/dfu/dfu_mmc.c b/drivers/dfu/dfu_mmc.c index cdb3c18b01..12c54e90ef 100644 --- a/drivers/dfu/dfu_mmc.c +++ b/drivers/dfu/dfu_mmc.c @@ -386,6 +386,16 @@ int dfu_fill_entity_mmc(struct dfu_entity *dfu, char *devstr, char **argv, int a dfu->data.mmc.lba_size = third_arg; dfu->data.mmc.lba_blk_size = mmc->read_bl_len; + /* + * In case the size is zero (i.e. mmc raw 0x10 0), + * assume the user intends to use whole device. + */ + if (third_arg == 0) { + struct blk_desc *blk_dev = mmc_get_blk_desc(mmc); + + dfu->data.mmc.lba_size = blk_dev->lba; + } + /* * Check for an extra entry at dfu_alt_info env variable * specifying the mmc HW defined partition number -- 2.39.5