From: Joonyoung Shim Date: Wed, 6 Aug 2014 02:48:30 +0000 (+0900) Subject: dfu:mmc: support to get partition information by name X-Git-Tag: submit/tizen/20150522.044923~20 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6529629b3d015d0805c9106ac51cfe1b4b88865f;p=platform%2Fkernel%2Fu-boot.git dfu:mmc: support to get partition information by name The partitions can have partition name like label. If partition name is exist, first get partition information by name than by partition number, so we can ignore hardcoding dependency of partition number. Change-Id: Ibfb2521438ce366959814c2a87085e9f384de588 Signed-off-by: Joonyoung Shim --- diff --git a/drivers/dfu/dfu_mmc.c b/drivers/dfu/dfu_mmc.c index fd865e1121..133026508d 100644 --- a/drivers/dfu/dfu_mmc.c +++ b/drivers/dfu/dfu_mmc.c @@ -270,6 +270,24 @@ void dfu_free_entity_mmc(struct dfu_entity *dfu) } } +static int dfu_get_partition_info_by_name(block_dev_desc_t *dev_desc, + const char *name, + disk_partition_t *info) +{ + switch (dev_desc->part_type) { +#ifdef CONFIG_EFI_PARTITION + case PART_TYPE_EFI: + if (get_partition_info_efi_by_name(dev_desc, name, info) == 0) + return 0; + break; +#endif + default: + break; + } + + return -EPERM; +} + /* * @param s Parameter string containing space-separated arguments: * 1st: @@ -346,12 +364,17 @@ int dfu_fill_entity_mmc(struct dfu_entity *dfu, char *devstr, char *s) int mmcdev = second_arg; int mmcpart = third_arg; + if (dfu_get_partition_info_by_name(blk_dev, dfu->name, + &partinfo) == 0) + goto skip; + if (get_partition_info(blk_dev, mmcpart, &partinfo) != 0) { error("Couldn't find part #%d on mmc device #%d\n", mmcpart, mmcdev); return -ENODEV; } +skip: dfu->layout = DFU_RAW_ADDR; dfu->data.mmc.lba_start = partinfo.start; dfu->data.mmc.lba_size = partinfo.size;