disk: part: refactor generic name creation for DOS and ISO
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@jikos.cz> Reviewed-by: Tom Rini <trini@konsulko.com> Acked-by: Steve Rae <steve.rae@raedomain.com> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
b6dd69a4d6
commit
da2ee24d91
32
disk/part.c
32
disk/part.c
|
@ -641,3 +641,35 @@ int part_get_info_by_name(struct blk_desc *dev_desc, const char *name,
|
||||||
}
|
}
|
||||||
return -1;
|
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);
|
||||||
|
}
|
||||||
|
|
|
@ -209,35 +209,8 @@ static int part_get_info_extended(struct blk_desc *dev_desc,
|
||||||
info->start = (lbaint_t)(ext_part_sector +
|
info->start = (lbaint_t)(ext_part_sector +
|
||||||
le32_to_int(pt->start4));
|
le32_to_int(pt->start4));
|
||||||
info->size = (lbaint_t)le32_to_int(pt->size4);
|
info->size = (lbaint_t)le32_to_int(pt->size4);
|
||||||
switch(dev_desc->if_type) {
|
part_set_generic_name(dev_desc, part_num,
|
||||||
case IF_TYPE_IDE:
|
(char *)info->name);
|
||||||
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;
|
|
||||||
}
|
|
||||||
/* sprintf(info->type, "%d, pt->sys_ind); */
|
/* sprintf(info->type, "%d, pt->sys_ind); */
|
||||||
strcpy((char *)info->type, "U-Boot");
|
strcpy((char *)info->type, "U-Boot");
|
||||||
info->bootable = is_bootable(pt);
|
info->bootable = is_bootable(pt);
|
||||||
|
|
|
@ -137,30 +137,7 @@ int part_get_info_iso_verb(struct blk_desc *dev_desc, int part_num,
|
||||||
entry_num=1;
|
entry_num=1;
|
||||||
offset=0x20;
|
offset=0x20;
|
||||||
strcpy((char *)info->type, "U-Boot");
|
strcpy((char *)info->type, "U-Boot");
|
||||||
switch(dev_desc->if_type) {
|
part_set_generic_name(dev_desc, part_num, (char *)info->name);
|
||||||
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;
|
|
||||||
}
|
|
||||||
/* the bootcatalog (including validation Entry) is limited to 2048Bytes
|
/* the bootcatalog (including validation Entry) is limited to 2048Bytes
|
||||||
* (63 boot entries + validation entry) */
|
* (63 boot entries + validation entry) */
|
||||||
while(offset<2048) {
|
while(offset<2048) {
|
||||||
|
|
|
@ -79,6 +79,7 @@ The device type is as follows:
|
||||||
* IDE, ATAPI and SATA disks: hd
|
* IDE, ATAPI and SATA disks: hd
|
||||||
* SCSI disks: sd
|
* SCSI disks: sd
|
||||||
* USB media: usbd
|
* USB media: usbd
|
||||||
|
* MMC and SD cards: mmcsd
|
||||||
* Disk on chip: docd
|
* Disk on chip: docd
|
||||||
* other: xx
|
* other: xx
|
||||||
|
|
||||||
|
|
|
@ -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,
|
int part_get_info_by_name(struct blk_desc *dev_desc,
|
||||||
const char *name, disk_partition_t *info);
|
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[];
|
extern const struct block_drvr block_drvr[];
|
||||||
#else
|
#else
|
||||||
static inline struct blk_desc *blk_get_dev(const char *ifname, int dev)
|
static inline struct blk_desc *blk_get_dev(const char *ifname, int dev)
|
||||||
|
|
Loading…
Reference in New Issue