From a1d2b2b46da11d17572d33870d52adeb6b86c0d7 Mon Sep 17 00:00:00 2001 From: Lukasz Majewski Date: Thu, 12 May 2016 13:21:39 +0200 Subject: [PATCH] TPL: TM2: dfu: Add support for in-partition offset in dfu_alt_info specifiers Signed-off-by: Marek Szyprowski --- drivers/dfu/dfu_mmc.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/drivers/dfu/dfu_mmc.c b/drivers/dfu/dfu_mmc.c index f405dd28d1..2e8ae74189 100644 --- a/drivers/dfu/dfu_mmc.c +++ b/drivers/dfu/dfu_mmc.c @@ -372,6 +372,7 @@ int dfu_fill_entity_mmc(struct dfu_entity *dfu, char *devstr, char *s) block_dev_desc_t *blk_dev = &mmc->block_dev; int mmcdev = second_arg; int mmcpart = third_arg; + int offset = 0; if (dfu_get_partition_info_by_name(blk_dev, dfu->name, &partinfo) == 0) @@ -384,9 +385,17 @@ int dfu_fill_entity_mmc(struct dfu_entity *dfu, char *devstr, char *s) } skip: + /* + * Check for an extra entry at dfu_alt_info env variable + * specifying the mmc HW defined partition number + */ + if (s) + if (!strcmp(strsep(&s, " "), "offset")) + offset = simple_strtoul(s, NULL, 0); + dfu->layout = DFU_RAW_ADDR; - dfu->data.mmc.lba_start = partinfo.start; - dfu->data.mmc.lba_size = partinfo.size; + dfu->data.mmc.lba_start = partinfo.start+offset; + dfu->data.mmc.lba_size = partinfo.size-offset; dfu->data.mmc.lba_blk_size = partinfo.blksz; } else if (!strcmp(entity_type, "fat")) { dfu->layout = DFU_FS_FAT; -- 2.34.1