From: Lukasz Majewski Date: Thu, 12 May 2016 11:21:39 +0000 (+0200) Subject: TPL: TM2: dfu: Add support for in-partition offset in dfu_alt_info specifiers X-Git-Tag: submit/tizen/20170414.042831~33 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ddc4fe1ba9b180b95d4efb593f0d39f65126980c;p=platform%2Fkernel%2Fu-boot.git TPL: TM2: dfu: Add support for in-partition offset in dfu_alt_info specifiers Signed-off-by: Marek Szyprowski --- diff --git a/drivers/dfu/dfu_mmc.c b/drivers/dfu/dfu_mmc.c index 926ccbd2ef..64cce7fdd4 100644 --- a/drivers/dfu/dfu_mmc.c +++ b/drivers/dfu/dfu_mmc.c @@ -358,6 +358,7 @@ int dfu_fill_entity_mmc(struct dfu_entity *dfu, char *devstr, char *s) struct blk_desc *blk_dev = mmc_get_blk_desc(mmc); int mmcdev = second_arg; int mmcpart = third_arg; + int offset = 0; if (part_get_info(blk_dev, mmcpart, &partinfo) != 0) { error("Couldn't find part #%d on mmc device #%d\n", @@ -365,9 +366,17 @@ int dfu_fill_entity_mmc(struct dfu_entity *dfu, char *devstr, char *s) return -ENODEV; } + /* + * 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;