[U-Boot] [PATCH v2 3/4] disk: part: refactor generic name creation for DOS and ISO
Steve Rae
steve.rae at raedomain.com
Mon Sep 12 19:39:47 CEST 2016
On Fri, Sep 9, 2016 at 1:27 AM, Petr Kulhavy <brain at jikos.cz> wrote:
> In both DOS and ISO partition tables the same code to create partition name
> like "hda1" was repeated.
>
> Code moved to into a new function part_set_generic_name() in part.c and optimized.
> Added recognition of MMC and SD types, name is like "mmcsda1".
>
> Signed-off-by: Petr Kulhavy <brain at jikos.cz>
> Reviewed-by: Tom Rini <trini at konsulko.com>
> ---
> v1: initial
> v2: no change
>
> disk/part.c | 32 ++++++++++++++++++++++++++++++++
> disk/part_dos.c | 31 ++-----------------------------
> disk/part_iso.c | 25 +------------------------
> doc/README.android-fastboot | 1 +
> include/part.h | 14 ++++++++++++++
> 5 files changed, 50 insertions(+), 53 deletions(-)
>
> diff --git a/disk/part.c b/disk/part.c
> index 8317e80..9f51a07 100644
> --- a/disk/part.c
> +++ b/disk/part.c
> @@ -641,3 +641,35 @@ int part_get_info_by_name(struct blk_desc *dev_desc, const char *name,
> }
> return -1;
> }
> +
> +void part_set_generic_name(const struct blk_desc *dev_desc,
> + int part_num, char *name)
> +{
> + char *devtype;
> +
> + switch (dev_desc->if_type) {
> + case IF_TYPE_IDE:
> + case IF_TYPE_SATA:
> + case IF_TYPE_ATAPI:
> + devtype = "hd";
> + break;
> + case IF_TYPE_SCSI:
> + devtype = "sd";
> + break;
> + case IF_TYPE_USB:
> + devtype = "usbd";
> + break;
> + case IF_TYPE_DOC:
> + devtype = "docd";
> + break;
> + case IF_TYPE_MMC:
> + case IF_TYPE_SD:
> + devtype = "mmcsd";
> + break;
> + default:
> + devtype = "xx";
> + break;
> + }
> +
> + sprintf(name, "%s%c%d", devtype, 'a' + dev_desc->devnum, part_num);
> +}
> diff --git a/disk/part_dos.c b/disk/part_dos.c
> index 8e6aae5..ed78334 100644
> --- a/disk/part_dos.c
> +++ b/disk/part_dos.c
> @@ -209,35 +209,8 @@ static int part_get_info_extended(struct blk_desc *dev_desc,
> info->start = (lbaint_t)(ext_part_sector +
> le32_to_int(pt->start4));
> info->size = (lbaint_t)le32_to_int(pt->size4);
> - switch(dev_desc->if_type) {
> - case IF_TYPE_IDE:
> - case IF_TYPE_SATA:
> - case IF_TYPE_ATAPI:
> - sprintf((char *)info->name, "hd%c%d",
> - 'a' + dev_desc->devnum,
> - part_num);
> - break;
> - case IF_TYPE_SCSI:
> - sprintf((char *)info->name, "sd%c%d",
> - 'a' + dev_desc->devnum,
> - part_num);
> - break;
> - case IF_TYPE_USB:
> - sprintf((char *)info->name, "usbd%c%d",
> - 'a' + dev_desc->devnum,
> - part_num);
> - break;
> - case IF_TYPE_DOC:
> - sprintf((char *)info->name, "docd%c%d",
> - 'a' + dev_desc->devnum,
> - part_num);
> - break;
> - default:
> - sprintf((char *)info->name, "xx%c%d",
> - 'a' + dev_desc->devnum,
> - part_num);
> - break;
> - }
> + part_set_generic_name(dev_desc, part_num,
> + (char *)info->name);
> /* sprintf(info->type, "%d, pt->sys_ind); */
> strcpy((char *)info->type, "U-Boot");
> info->bootable = is_bootable(pt);
> diff --git a/disk/part_iso.c b/disk/part_iso.c
> index 78fc97e..bb8ed65 100644
> --- a/disk/part_iso.c
> +++ b/disk/part_iso.c
> @@ -137,30 +137,7 @@ int part_get_info_iso_verb(struct blk_desc *dev_desc, int part_num,
> entry_num=1;
> offset=0x20;
> strcpy((char *)info->type, "U-Boot");
> - switch(dev_desc->if_type) {
> - case IF_TYPE_IDE:
> - case IF_TYPE_SATA:
> - case IF_TYPE_ATAPI:
> - sprintf ((char *)info->name, "hd%c%d",
> - 'a' + dev_desc->devnum, part_num);
> - break;
> - case IF_TYPE_SCSI:
> - sprintf ((char *)info->name, "sd%c%d",
> - 'a' + dev_desc->devnum, part_num);
> - break;
> - case IF_TYPE_USB:
> - sprintf ((char *)info->name, "usbd%c%d",
> - 'a' + dev_desc->devnum, part_num);
> - break;
> - case IF_TYPE_DOC:
> - sprintf ((char *)info->name, "docd%c%d",
> - 'a' + dev_desc->devnum, part_num);
> - break;
> - default:
> - sprintf ((char *)info->name, "xx%c%d",
> - 'a' + dev_desc->devnum, part_num);
> - break;
> - }
> + part_set_generic_name(dev_desc, part_num, (char *)info->name);
> /* the bootcatalog (including validation Entry) is limited to 2048Bytes
> * (63 boot entries + validation entry) */
> while(offset<2048) {
> diff --git a/doc/README.android-fastboot b/doc/README.android-fastboot
> index dea7066..b8afa15 100644
> --- a/doc/README.android-fastboot
> +++ b/doc/README.android-fastboot
> @@ -79,6 +79,7 @@ The device type is as follows:
> * IDE, ATAPI and SATA disks: hd
> * SCSI disks: sd
> * USB media: usbd
> + * MMC and SD cards: mmcsd
> * Disk on chip: docd
> * other: xx
>
> diff --git a/include/part.h b/include/part.h
> index b17c219..0979005 100644
> --- a/include/part.h
> +++ b/include/part.h
> @@ -165,6 +165,20 @@ int blk_get_device_part_str(const char *ifname, const char *dev_part_str,
> int part_get_info_by_name(struct blk_desc *dev_desc,
> const char *name, disk_partition_t *info);
>
> +/**
> + * part_set_generic_name() - create generic partition like hda1 or sdb2
> + *
> + * Helper function for partition tables, which don't hold partition names
> + * (DOS, ISO). Generates partition name out of the device type and partition
> + * number.
> + *
> + * @dev_desc: pointer to the block device
> + * @part_num: partition number for which the name is generated
> + * @name: buffer where the name is written
> + */
> +void part_set_generic_name(const struct blk_desc *dev_desc,
> + int part_num, char *name);
> +
> extern const struct block_drvr block_drvr[];
> #else
> static inline struct blk_desc *blk_get_dev(const char *ifname, int dev)
> --
> 2.7.4
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
Acked-by: Steve Rae <steve.rae at raedomain.com>
More information about the U-Boot
mailing list