X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=disk%2Fpart.c;h=9f51a0767690120c9340f078efd626b0662f5cdd;hb=55cdcdaad3edb24779b76716d5cf9c36db2fed44;hp=6a1c02d9fada7410c953cd144c2ea6968fb3a200;hpb=08ca213acadef61748dc62d48b0f5c4bed8b8c2d;p=oweals%2Fu-boot.git diff --git a/disk/part.c b/disk/part.c index 6a1c02d9fa..9f51a07676 100644 --- a/disk/part.c +++ b/disk/part.c @@ -615,3 +615,61 @@ cleanup: free(dup_str); return ret; } + +int part_get_info_by_name(struct blk_desc *dev_desc, const char *name, + disk_partition_t *info) +{ + struct part_driver *first_drv = + ll_entry_start(struct part_driver, part_driver); + const int n_drvs = ll_entry_count(struct part_driver, part_driver); + struct part_driver *part_drv; + + for (part_drv = first_drv; part_drv != first_drv + n_drvs; part_drv++) { + int ret; + int i; + for (i = 1; i < part_drv->max_entries; i++) { + ret = part_drv->get_info(dev_desc, i, info); + if (ret != 0) { + /* no more entries in table */ + break; + } + if (strcmp(name, (const char *)info->name) == 0) { + /* matched */ + return 0; + } + } + } + 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); +}