part: Use desc instead of dev_desc

The dev_ prefix is a hangover from the pre-driver model days. The device
is now a different thing, with driver model. Update the partition code to
just use 'desc', as is done with driver model.

Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass
2023-08-24 13:55:24 -06:00
committed by Tom Rini
parent 05763b71d2
commit 5aab05d97e
2 changed files with 147 additions and 156 deletions

View File

@@ -42,25 +42,25 @@ static struct part_driver *part_driver_get_type(int part_type)
return NULL; return NULL;
} }
static struct part_driver *part_driver_lookup_type(struct blk_desc *dev_desc) static struct part_driver *part_driver_lookup_type(struct blk_desc *desc)
{ {
struct part_driver *drv = struct part_driver *drv =
ll_entry_start(struct part_driver, part_driver); ll_entry_start(struct part_driver, part_driver);
const int n_ents = ll_entry_count(struct part_driver, part_driver); const int n_ents = ll_entry_count(struct part_driver, part_driver);
struct part_driver *entry; struct part_driver *entry;
if (dev_desc->part_type == PART_TYPE_UNKNOWN) { if (desc->part_type == PART_TYPE_UNKNOWN) {
for (entry = drv; entry != drv + n_ents; entry++) { for (entry = drv; entry != drv + n_ents; entry++) {
int ret; int ret;
ret = entry->test(dev_desc); ret = entry->test(desc);
if (!ret) { if (!ret) {
dev_desc->part_type = entry->part_type; desc->part_type = entry->part_type;
return entry; return entry;
} }
} }
} else { } else {
return part_driver_get_type(dev_desc->part_type); return part_driver_get_type(desc->part_type);
} }
/* Not found */ /* Not found */
@@ -85,25 +85,25 @@ int part_get_type_by_name(const char *name)
static struct blk_desc *get_dev_hwpart(const char *ifname, int dev, int hwpart) static struct blk_desc *get_dev_hwpart(const char *ifname, int dev, int hwpart)
{ {
struct blk_desc *dev_desc; struct blk_desc *desc;
int ret; int ret;
if (!blk_enabled()) if (!blk_enabled())
return NULL; return NULL;
dev_desc = blk_get_devnum_by_uclass_idname(ifname, dev); desc = blk_get_devnum_by_uclass_idname(ifname, dev);
if (!dev_desc) { if (!desc) {
debug("%s: No device for iface '%s', dev %d\n", __func__, debug("%s: No device for iface '%s', dev %d\n", __func__,
ifname, dev); ifname, dev);
return NULL; return NULL;
} }
ret = blk_dselect_hwpart(dev_desc, hwpart); ret = blk_dselect_hwpart(desc, hwpart);
if (ret) { if (ret) {
debug("%s: Failed to select h/w partition: err-%d\n", __func__, debug("%s: Failed to select h/w partition: err-%d\n", __func__,
ret); ret);
return NULL; return NULL;
} }
return dev_desc; return desc;
} }
struct blk_desc *blk_get_dev(const char *ifname, int dev) struct blk_desc *blk_get_dev(const char *ifname, int dev)
@@ -140,29 +140,24 @@ static lba512_t lba512_muldiv(lba512_t block_count, lba512_t mul_by,
return bc_quot * mul_by + ((bc_rem * mul_by) >> right_shift); return bc_quot * mul_by + ((bc_rem * mul_by) >> right_shift);
} }
void dev_print(struct blk_desc *dev_desc) void dev_print(struct blk_desc *desc)
{ {
lba512_t lba512; /* number of blocks if 512bytes block size */ lba512_t lba512; /* number of blocks if 512bytes block size */
if (dev_desc->type == DEV_TYPE_UNKNOWN) { if (desc->type == DEV_TYPE_UNKNOWN) {
puts ("not available\n"); puts ("not available\n");
return; return;
} }
switch (dev_desc->uclass_id) { switch (desc->uclass_id) {
case UCLASS_SCSI: case UCLASS_SCSI:
printf ("(%d:%d) Vendor: %s Prod.: %s Rev: %s\n", printf("(%d:%d) Vendor: %s Prod.: %s Rev: %s\n", desc->target,
dev_desc->target,dev_desc->lun, desc->lun, desc->vendor, desc->product, desc->revision);
dev_desc->vendor,
dev_desc->product,
dev_desc->revision);
break; break;
case UCLASS_IDE: case UCLASS_IDE:
case UCLASS_AHCI: case UCLASS_AHCI:
printf ("Model: %s Firm: %s Ser#: %s\n", printf("Model: %s Firm: %s Ser#: %s\n", desc->vendor,
dev_desc->vendor, desc->revision, desc->product);
dev_desc->revision,
dev_desc->product);
break; break;
case UCLASS_MMC: case UCLASS_MMC:
case UCLASS_USB: case UCLASS_USB:
@@ -171,27 +166,27 @@ void dev_print(struct blk_desc *dev_desc)
case UCLASS_HOST: case UCLASS_HOST:
case UCLASS_BLKMAP: case UCLASS_BLKMAP:
printf ("Vendor: %s Rev: %s Prod: %s\n", printf ("Vendor: %s Rev: %s Prod: %s\n",
dev_desc->vendor, desc->vendor,
dev_desc->revision, desc->revision,
dev_desc->product); desc->product);
break; break;
case UCLASS_VIRTIO: case UCLASS_VIRTIO:
printf("%s VirtIO Block Device\n", dev_desc->vendor); printf("%s VirtIO Block Device\n", desc->vendor);
break; break;
case UCLASS_EFI_MEDIA: case UCLASS_EFI_MEDIA:
printf("EFI media Block Device %d\n", dev_desc->devnum); printf("EFI media Block Device %d\n", desc->devnum);
break; break;
case UCLASS_INVALID: case UCLASS_INVALID:
puts("device type unknown\n"); puts("device type unknown\n");
return; return;
default: default:
printf("Unhandled device type: %i\n", dev_desc->uclass_id); printf("Unhandled device type: %i\n", desc->uclass_id);
return; return;
} }
puts (" Type: "); puts (" Type: ");
if (dev_desc->removable) if (desc->removable)
puts ("Removable "); puts ("Removable ");
switch (dev_desc->type & 0x1F) { switch (desc->type & 0x1F) {
case DEV_TYPE_HARDDISK: case DEV_TYPE_HARDDISK:
puts ("Hard Disk"); puts ("Hard Disk");
break; break;
@@ -205,17 +200,17 @@ void dev_print(struct blk_desc *dev_desc)
puts ("Tape"); puts ("Tape");
break; break;
default: default:
printf ("# %02X #", dev_desc->type & 0x1F); printf("# %02X #", desc->type & 0x1F);
break; break;
} }
puts ("\n"); puts ("\n");
if (dev_desc->lba > 0L && dev_desc->blksz > 0L) { if (desc->lba > 0L && desc->blksz > 0L) {
ulong mb, mb_quot, mb_rem, gb, gb_quot, gb_rem; ulong mb, mb_quot, mb_rem, gb, gb_quot, gb_rem;
lbaint_t lba; lbaint_t lba;
lba = dev_desc->lba; lba = desc->lba;
lba512 = (lba * (dev_desc->blksz/512)); lba512 = lba * (desc->blksz / 512);
/* round to 1 digit */ /* round to 1 digit */
/* 2048 = (1024 * 1024) / 512 MB */ /* 2048 = (1024 * 1024) / 512 MB */
mb = lba512_muldiv(lba512, 10, 11); mb = lba512_muldiv(lba512, 10, 11);
@@ -227,7 +222,7 @@ void dev_print(struct blk_desc *dev_desc)
gb_quot = gb / 10; gb_quot = gb / 10;
gb_rem = gb - (10 * gb_quot); gb_rem = gb - (10 * gb_quot);
#ifdef CONFIG_LBA48 #ifdef CONFIG_LBA48
if (dev_desc->lba48) if (desc->lba48)
printf (" Supports 48-bit addressing\n"); printf (" Supports 48-bit addressing\n");
#endif #endif
#if defined(CONFIG_SYS_64BIT_LBA) #if defined(CONFIG_SYS_64BIT_LBA)
@@ -235,42 +230,42 @@ void dev_print(struct blk_desc *dev_desc)
mb_quot, mb_rem, mb_quot, mb_rem,
gb_quot, gb_rem, gb_quot, gb_rem,
lba, lba,
dev_desc->blksz); desc->blksz);
#else #else
printf (" Capacity: %lu.%lu MB = %lu.%lu GB (%lu x %lu)\n", printf (" Capacity: %lu.%lu MB = %lu.%lu GB (%lu x %lu)\n",
mb_quot, mb_rem, mb_quot, mb_rem,
gb_quot, gb_rem, gb_quot, gb_rem,
(ulong)lba, (ulong)lba,
dev_desc->blksz); desc->blksz);
#endif #endif
} else { } else {
puts (" Capacity: not available\n"); puts (" Capacity: not available\n");
} }
} }
void part_init(struct blk_desc *dev_desc) void part_init(struct blk_desc *desc)
{ {
struct part_driver *drv = struct part_driver *drv =
ll_entry_start(struct part_driver, part_driver); ll_entry_start(struct part_driver, part_driver);
const int n_ents = ll_entry_count(struct part_driver, part_driver); const int n_ents = ll_entry_count(struct part_driver, part_driver);
struct part_driver *entry; struct part_driver *entry;
blkcache_invalidate(dev_desc->uclass_id, dev_desc->devnum); blkcache_invalidate(desc->uclass_id, desc->devnum);
dev_desc->part_type = PART_TYPE_UNKNOWN; desc->part_type = PART_TYPE_UNKNOWN;
for (entry = drv; entry != drv + n_ents; entry++) { for (entry = drv; entry != drv + n_ents; entry++) {
int ret; int ret;
ret = entry->test(dev_desc); ret = entry->test(desc);
debug("%s: try '%s': ret=%d\n", __func__, entry->name, ret); debug("%s: try '%s': ret=%d\n", __func__, entry->name, ret);
if (!ret) { if (!ret) {
dev_desc->part_type = entry->part_type; desc->part_type = entry->part_type;
break; break;
} }
} }
} }
static void print_part_header(const char *type, struct blk_desc *dev_desc) static void print_part_header(const char *type, struct blk_desc *desc)
{ {
#if CONFIG_IS_ENABLED(MAC_PARTITION) || \ #if CONFIG_IS_ENABLED(MAC_PARTITION) || \
CONFIG_IS_ENABLED(DOS_PARTITION) || \ CONFIG_IS_ENABLED(DOS_PARTITION) || \
@@ -278,7 +273,7 @@ static void print_part_header(const char *type, struct blk_desc *dev_desc)
CONFIG_IS_ENABLED(AMIGA_PARTITION) || \ CONFIG_IS_ENABLED(AMIGA_PARTITION) || \
CONFIG_IS_ENABLED(EFI_PARTITION) CONFIG_IS_ENABLED(EFI_PARTITION)
puts ("\nPartition Map for "); puts ("\nPartition Map for ");
switch (dev_desc->uclass_id) { switch (desc->uclass_id) {
case UCLASS_IDE: case UCLASS_IDE:
puts ("IDE"); puts ("IDE");
break; break;
@@ -314,28 +309,28 @@ static void print_part_header(const char *type, struct blk_desc *dev_desc)
break; break;
} }
printf (" device %d -- Partition Type: %s\n\n", printf (" device %d -- Partition Type: %s\n\n",
dev_desc->devnum, type); desc->devnum, type);
#endif /* any CONFIG_..._PARTITION */ #endif /* any CONFIG_..._PARTITION */
} }
void part_print(struct blk_desc *dev_desc) void part_print(struct blk_desc *desc)
{ {
struct part_driver *drv; struct part_driver *drv;
drv = part_driver_lookup_type(dev_desc); drv = part_driver_lookup_type(desc);
if (!drv) { if (!drv) {
printf("## Unknown partition table type %x\n", printf("## Unknown partition table type %x\n",
dev_desc->part_type); desc->part_type);
return; return;
} }
PRINTF("## Testing for valid %s partition ##\n", drv->name); PRINTF("## Testing for valid %s partition ##\n", drv->name);
print_part_header(drv->name, dev_desc); print_part_header(drv->name, desc);
if (drv->print) if (drv->print)
drv->print(dev_desc); drv->print(desc);
} }
int part_get_info_by_type(struct blk_desc *dev_desc, int part, int part_type, int part_get_info_by_type(struct blk_desc *desc, int part, int part_type,
struct disk_partition *info) struct disk_partition *info)
{ {
struct part_driver *drv; struct part_driver *drv;
@@ -350,14 +345,14 @@ int part_get_info_by_type(struct blk_desc *dev_desc, int part, int part_type,
#endif #endif
if (part_type == PART_TYPE_UNKNOWN) { if (part_type == PART_TYPE_UNKNOWN) {
drv = part_driver_lookup_type(dev_desc); drv = part_driver_lookup_type(desc);
} else { } else {
drv = part_driver_get_type(part_type); drv = part_driver_get_type(part_type);
} }
if (!drv) { if (!drv) {
debug("## Unknown partition table type %x\n", debug("## Unknown partition table type %x\n",
dev_desc->part_type); desc->part_type);
return -EPROTONOSUPPORT; return -EPROTONOSUPPORT;
} }
if (!drv->get_info) { if (!drv->get_info) {
@@ -365,7 +360,7 @@ int part_get_info_by_type(struct blk_desc *dev_desc, int part, int part_type,
drv->name); drv->name);
return -ENOSYS; return -ENOSYS;
} }
if (drv->get_info(dev_desc, part, info) == 0) { if (drv->get_info(desc, part, info) == 0) {
PRINTF("## Valid %s partition found ##\n", drv->name); PRINTF("## Valid %s partition found ##\n", drv->name);
return 0; return 0;
} }
@@ -374,18 +369,18 @@ int part_get_info_by_type(struct blk_desc *dev_desc, int part, int part_type,
return -ENOENT; return -ENOENT;
} }
int part_get_info(struct blk_desc *dev_desc, int part, int part_get_info(struct blk_desc *desc, int part,
struct disk_partition *info) struct disk_partition *info)
{ {
return part_get_info_by_type(dev_desc, part, PART_TYPE_UNKNOWN, info); return part_get_info_by_type(desc, part, PART_TYPE_UNKNOWN, info);
} }
int part_get_info_whole_disk(struct blk_desc *dev_desc, int part_get_info_whole_disk(struct blk_desc *desc,
struct disk_partition *info) struct disk_partition *info)
{ {
info->start = 0; info->start = 0;
info->size = dev_desc->lba; info->size = desc->lba;
info->blksz = dev_desc->blksz; info->blksz = desc->blksz;
info->bootable = 0; info->bootable = 0;
strcpy((char *)info->type, BOOT_PART_TYPE); strcpy((char *)info->type, BOOT_PART_TYPE);
strcpy((char *)info->name, "Whole Disk"); strcpy((char *)info->name, "Whole Disk");
@@ -400,7 +395,7 @@ int part_get_info_whole_disk(struct blk_desc *dev_desc,
} }
int blk_get_device_by_str(const char *ifname, const char *dev_hwpart_str, int blk_get_device_by_str(const char *ifname, const char *dev_hwpart_str,
struct blk_desc **dev_desc) struct blk_desc **desc)
{ {
char *ep; char *ep;
char *dup_str = NULL; char *dup_str = NULL;
@@ -436,8 +431,8 @@ int blk_get_device_by_str(const char *ifname, const char *dev_hwpart_str,
} }
} }
*dev_desc = get_dev_hwpart(ifname, dev, hwpart); *desc = get_dev_hwpart(ifname, dev, hwpart);
if (!(*dev_desc) || ((*dev_desc)->type == DEV_TYPE_UNKNOWN)) { if (!(*desc) || ((*desc)->type == DEV_TYPE_UNKNOWN)) {
debug("** Bad device %s %s **\n", ifname, dev_hwpart_str); debug("** Bad device %s %s **\n", ifname, dev_hwpart_str);
dev = -ENODEV; dev = -ENODEV;
goto cleanup; goto cleanup;
@@ -449,8 +444,8 @@ int blk_get_device_by_str(const char *ifname, const char *dev_hwpart_str,
* Always should be done, otherwise hw partition 0 will return * Always should be done, otherwise hw partition 0 will return
* stale data after displaying a non-zero hw partition. * stale data after displaying a non-zero hw partition.
*/ */
if ((*dev_desc)->uclass_id == UCLASS_MMC) if ((*desc)->uclass_id == UCLASS_MMC)
part_init(*dev_desc); part_init(*desc);
} }
cleanup: cleanup:
@@ -461,7 +456,7 @@ cleanup:
#define PART_UNSPECIFIED -2 #define PART_UNSPECIFIED -2
#define PART_AUTO -1 #define PART_AUTO -1
int blk_get_device_part_str(const char *ifname, const char *dev_part_str, int blk_get_device_part_str(const char *ifname, const char *dev_part_str,
struct blk_desc **dev_desc, struct blk_desc **desc,
struct disk_partition *info, int allow_whole_dev) struct disk_partition *info, int allow_whole_dev)
{ {
int ret; int ret;
@@ -474,7 +469,7 @@ int blk_get_device_part_str(const char *ifname, const char *dev_part_str,
int part; int part;
struct disk_partition tmpinfo; struct disk_partition tmpinfo;
*dev_desc = NULL; *desc = NULL;
memset(info, 0, sizeof(*info)); memset(info, 0, sizeof(*info));
#if IS_ENABLED(CONFIG_SANDBOX) || IS_ENABLED(CONFIG_SEMIHOSTING) #if IS_ENABLED(CONFIG_SANDBOX) || IS_ENABLED(CONFIG_SEMIHOSTING)
@@ -533,7 +528,7 @@ int blk_get_device_part_str(const char *ifname, const char *dev_part_str,
} }
/* Look up the device */ /* Look up the device */
dev = blk_get_device_by_str(ifname, dev_str, dev_desc); dev = blk_get_device_by_str(ifname, dev_str, desc);
if (dev < 0) { if (dev < 0) {
printf("** Bad device specification %s %s **\n", printf("** Bad device specification %s %s **\n",
ifname, dev_str); ifname, dev_str);
@@ -565,9 +560,8 @@ int blk_get_device_part_str(const char *ifname, const char *dev_part_str,
* No partition table on device, * No partition table on device,
* or user requested partition 0 (entire device). * or user requested partition 0 (entire device).
*/ */
if (((*dev_desc)->part_type == PART_TYPE_UNKNOWN) || if (((*desc)->part_type == PART_TYPE_UNKNOWN) || !part) {
(part == 0)) { if (!(*desc)->lba) {
if (!(*dev_desc)->lba) {
printf("** Bad device size - %s %s **\n", ifname, printf("** Bad device size - %s %s **\n", ifname,
dev_str); dev_str);
ret = -EINVAL; ret = -EINVAL;
@@ -586,9 +580,9 @@ int blk_get_device_part_str(const char *ifname, const char *dev_part_str,
goto cleanup; goto cleanup;
} }
(*dev_desc)->log2blksz = LOG2((*dev_desc)->blksz); (*desc)->log2blksz = LOG2((*desc)->blksz);
part_get_info_whole_disk(*dev_desc, info); part_get_info_whole_disk(*desc, info);
ret = 0; ret = 0;
goto cleanup; goto cleanup;
@@ -606,7 +600,7 @@ int blk_get_device_part_str(const char *ifname, const char *dev_part_str,
* other than "auto", use that partition number directly. * other than "auto", use that partition number directly.
*/ */
if (part != PART_AUTO) { if (part != PART_AUTO) {
ret = part_get_info(*dev_desc, part, info); ret = part_get_info(*desc, part, info);
if (ret) { if (ret) {
printf("** Invalid partition %d **\n", part); printf("** Invalid partition %d **\n", part);
goto cleanup; goto cleanup;
@@ -618,7 +612,7 @@ int blk_get_device_part_str(const char *ifname, const char *dev_part_str,
*/ */
part = 0; part = 0;
for (p = 1; p <= MAX_SEARCH_PARTITIONS; p++) { for (p = 1; p <= MAX_SEARCH_PARTITIONS; p++) {
ret = part_get_info(*dev_desc, p, info); ret = part_get_info(*desc, p, info);
if (ret) if (ret)
continue; continue;
@@ -662,7 +656,7 @@ int blk_get_device_part_str(const char *ifname, const char *dev_part_str,
goto cleanup; goto cleanup;
} }
(*dev_desc)->log2blksz = LOG2((*dev_desc)->blksz); (*desc)->log2blksz = LOG2((*desc)->blksz);
ret = part; ret = part;
goto cleanup; goto cleanup;
@@ -672,14 +666,14 @@ cleanup:
return ret; return ret;
} }
int part_get_info_by_name(struct blk_desc *dev_desc, const char *name, int part_get_info_by_name(struct blk_desc *desc, const char *name,
struct disk_partition *info) struct disk_partition *info)
{ {
struct part_driver *part_drv; struct part_driver *part_drv;
int ret; int ret;
int i; int i;
part_drv = part_driver_lookup_type(dev_desc); part_drv = part_driver_lookup_type(desc);
if (!part_drv) if (!part_drv)
return -1; return -1;
@@ -690,7 +684,7 @@ int part_get_info_by_name(struct blk_desc *dev_desc, const char *name,
} }
for (i = 1; i < part_drv->max_entries; i++) { for (i = 1; i < part_drv->max_entries; i++) {
ret = part_drv->get_info(dev_desc, i, info); ret = part_drv->get_info(desc, i, info);
if (ret != 0) { if (ret != 0) {
/* no more entries in table */ /* no more entries in table */
break; break;
@@ -710,18 +704,18 @@ int part_get_info_by_name(struct blk_desc *dev_desc, const char *name,
* Parse a device number and partition name string in the form of * Parse a device number and partition name string in the form of
* "devicenum.hwpartnum#partition_name", for example "0.1#misc". devicenum and * "devicenum.hwpartnum#partition_name", for example "0.1#misc". devicenum and
* hwpartnum are both optional, defaulting to 0. If the partition is found, * hwpartnum are both optional, defaulting to 0. If the partition is found,
* sets dev_desc and part_info accordingly with the information of the * sets desc and part_info accordingly with the information of the
* partition with the given partition_name. * partition with the given partition_name.
* *
* @param[in] dev_iface Device interface * @param[in] dev_iface Device interface
* @param[in] dev_part_str Input string argument, like "0.1#misc" * @param[in] dev_part_str Input string argument, like "0.1#misc"
* @param[out] dev_desc Place to store the device description pointer * @param[out] desc Place to store the device description pointer
* @param[out] part_info Place to store the partition information * @param[out] part_info Place to store the partition information
* Return: 0 on success, or a negative on error * Return: 0 on success, or a negative on error
*/ */
static int part_get_info_by_dev_and_name(const char *dev_iface, static int part_get_info_by_dev_and_name(const char *dev_iface,
const char *dev_part_str, const char *dev_part_str,
struct blk_desc **dev_desc, struct blk_desc **desc,
struct disk_partition *part_info) struct disk_partition *part_info)
{ {
char *dup_str = NULL; char *dup_str = NULL;
@@ -743,11 +737,11 @@ static int part_get_info_by_dev_and_name(const char *dev_iface,
return -EINVAL; return -EINVAL;
} }
ret = blk_get_device_by_str(dev_iface, dev_str, dev_desc); ret = blk_get_device_by_str(dev_iface, dev_str, desc);
if (ret < 0) if (ret < 0)
goto cleanup; goto cleanup;
ret = part_get_info_by_name(*dev_desc, part_str, part_info); ret = part_get_info_by_name(*desc, part_str, part_info);
if (ret < 0) if (ret < 0)
printf("Could not find \"%s\" partition\n", part_str); printf("Could not find \"%s\" partition\n", part_str);
@@ -758,35 +752,35 @@ cleanup:
int part_get_info_by_dev_and_name_or_num(const char *dev_iface, int part_get_info_by_dev_and_name_or_num(const char *dev_iface,
const char *dev_part_str, const char *dev_part_str,
struct blk_desc **dev_desc, struct blk_desc **desc,
struct disk_partition *part_info, struct disk_partition *part_info,
int allow_whole_dev) int allow_whole_dev)
{ {
int ret; int ret;
/* Split the part_name if passed as "$dev_num#part_name". */ /* Split the part_name if passed as "$dev_num#part_name". */
ret = part_get_info_by_dev_and_name(dev_iface, dev_part_str, ret = part_get_info_by_dev_and_name(dev_iface, dev_part_str, desc,
dev_desc, part_info); part_info);
if (ret >= 0) if (ret >= 0)
return ret; return ret;
/* /*
* Couldn't lookup by name, try looking up the partition description * Couldn't lookup by name, try looking up the partition description
* directly. * directly.
*/ */
ret = blk_get_device_part_str(dev_iface, dev_part_str, ret = blk_get_device_part_str(dev_iface, dev_part_str, desc, part_info,
dev_desc, part_info, allow_whole_dev); allow_whole_dev);
if (ret < 0) if (ret < 0)
printf("Couldn't find partition %s %s\n", printf("Couldn't find partition %s %s\n",
dev_iface, dev_part_str); dev_iface, dev_part_str);
return ret; return ret;
} }
void part_set_generic_name(const struct blk_desc *dev_desc, void part_set_generic_name(const struct blk_desc *desc, int part_num,
int part_num, char *name) char *name)
{ {
char *devtype; char *devtype;
switch (dev_desc->uclass_id) { switch (desc->uclass_id) {
case UCLASS_IDE: case UCLASS_IDE:
case UCLASS_AHCI: case UCLASS_AHCI:
devtype = "hd"; devtype = "hd";
@@ -805,7 +799,7 @@ void part_set_generic_name(const struct blk_desc *dev_desc,
break; break;
} }
sprintf(name, "%s%c%d", devtype, 'a' + dev_desc->devnum, part_num); sprintf(name, "%s%c%d", devtype, 'a' + desc->devnum, part_num);
} }
int part_get_bootable(struct blk_desc *desc) int part_get_bootable(struct blk_desc *desc)

View File

@@ -113,7 +113,7 @@ struct blk_desc *mg_disk_get_dev(int dev);
* contained with the interface's data structure. There is no global * contained with the interface's data structure. There is no global
* numbering for block devices, so the interface name must be provided. * numbering for block devices, so the interface name must be provided.
* *
* @dev_desc: Block device descriptor * @desc: Block device descriptor
* @part: Partition number to read * @part: Partition number to read
* @part_type: Partition driver to use, or PART_TYPE_UNKNOWN to automatically * @part_type: Partition driver to use, or PART_TYPE_UNKNOWN to automatically
* choose a driver * choose a driver
@@ -121,24 +121,24 @@ struct blk_desc *mg_disk_get_dev(int dev);
* *
* Return: 0 on success, negative errno on failure * Return: 0 on success, negative errno on failure
*/ */
int part_get_info_by_type(struct blk_desc *dev_desc, int part, int part_type, int part_get_info_by_type(struct blk_desc *desc, int part, int part_type,
struct disk_partition *info); struct disk_partition *info);
int part_get_info(struct blk_desc *dev_desc, int part, int part_get_info(struct blk_desc *desc, int part,
struct disk_partition *info); struct disk_partition *info);
/** /**
* part_get_info_whole_disk() - get partition info for the special case of * part_get_info_whole_disk() - get partition info for the special case of
* a partition occupying the entire disk. * a partition occupying the entire disk.
* *
* @dev_desc: block device descriptor * @desc: block device descriptor
* @info: returned partition information * @info: returned partition information
* Return: 0 on success * Return: 0 on success
*/ */
int part_get_info_whole_disk(struct blk_desc *dev_desc, int part_get_info_whole_disk(struct blk_desc *desc,
struct disk_partition *info); struct disk_partition *info);
void part_print(struct blk_desc *dev_desc); void part_print(struct blk_desc *desc);
void part_init(struct blk_desc *dev_desc); void part_init(struct blk_desc *desc);
void dev_print(struct blk_desc *dev_desc); void dev_print(struct blk_desc *desc);
/** /**
* blk_get_device_by_str() - Get a block device given its interface/hw partition * blk_get_device_by_str() - Get a block device given its interface/hw partition
@@ -162,11 +162,11 @@ void dev_print(struct blk_desc *dev_desc);
* containing the device number (e.g. "2") or the device number * containing the device number (e.g. "2") or the device number
* and hardware partition number (e.g. "2.4") for devices that * and hardware partition number (e.g. "2.4") for devices that
* support it (currently only MMC). * support it (currently only MMC).
* @dev_desc: Returns a pointer to the block device on success * @desc: Returns a pointer to the block device on success
* Return: block device number (local to the interface), or -1 on error * Return: block device number (local to the interface), or -1 on error
*/ */
int blk_get_device_by_str(const char *ifname, const char *dev_str, int blk_get_device_by_str(const char *ifname, const char *dev_str,
struct blk_desc **dev_desc); struct blk_desc **desc);
/** /**
* blk_get_device_part_str() - Get a block device and partition * blk_get_device_part_str() - Get a block device and partition
@@ -196,7 +196,7 @@ int blk_get_device_by_str(const char *ifname, const char *dev_str,
* *
* @ifname: Interface name (e.g. "ide", "scsi") * @ifname: Interface name (e.g. "ide", "scsi")
* @dev_part_str: Device and partition string * @dev_part_str: Device and partition string
* @dev_desc: Returns a pointer to the block device on success * @desc: Returns a pointer to the block device on success
* @info: Returns partition information * @info: Returns partition information
* @allow_whole_dev: true to allow the user to select partition 0 * @allow_whole_dev: true to allow the user to select partition 0
* (which means the whole device), false to require a valid * (which means the whole device), false to require a valid
@@ -205,22 +205,22 @@ int blk_get_device_by_str(const char *ifname, const char *dev_str,
* *
*/ */
int blk_get_device_part_str(const char *ifname, const char *dev_part_str, int blk_get_device_part_str(const char *ifname, const char *dev_part_str,
struct blk_desc **dev_desc, struct blk_desc **desc,
struct disk_partition *info, int allow_whole_dev); struct disk_partition *info, int allow_whole_dev);
/** /**
* part_get_info_by_name() - Search for a partition by name * part_get_info_by_name() - Search for a partition by name
* among all available registered partitions * among all available registered partitions
* *
* @dev_desc: block device descriptor * @desc: block device descriptor
* @name: the specified table entry name * @name: the specified table entry name
* @info: returns the disk partition info * @info: returns the disk partition info
* *
* Return: the partition number on match (starting on 1), -1 on no match, * Return: the partition number on match (starting on 1), -1 on no match,
* otherwise error * otherwise error
*/ */
int part_get_info_by_name(struct blk_desc *dev_desc, int part_get_info_by_name(struct blk_desc *desc, const char *name,
const char *name, struct disk_partition *info); struct disk_partition *info);
/** /**
* part_get_info_by_dev_and_name_or_num() - Get partition info from dev number * part_get_info_by_dev_and_name_or_num() - Get partition info from dev number
@@ -232,11 +232,11 @@ int part_get_info_by_name(struct blk_desc *dev_desc,
* (like "device_num#partition_name") or a device number plus a partition number * (like "device_num#partition_name") or a device number plus a partition number
* separated by a ":". For example both "0#misc" and "0:1" can be valid * separated by a ":". For example both "0#misc" and "0:1" can be valid
* partition descriptions for a given interface. If the partition is found, sets * partition descriptions for a given interface. If the partition is found, sets
* dev_desc and part_info accordingly with the information of the partition. * desc and part_info accordingly with the information of the partition.
* *
* @dev_iface: Device interface * @dev_iface: Device interface
* @dev_part_str: Input partition description, like "0#misc" or "0:1" * @dev_part_str: Input partition description, like "0#misc" or "0:1"
* @dev_desc: Place to store the device description pointer * @desc: Place to store the device description pointer
* @part_info: Place to store the partition information * @part_info: Place to store the partition information
* @allow_whole_dev: true to allow the user to select partition 0 * @allow_whole_dev: true to allow the user to select partition 0
* (which means the whole device), false to require a valid * (which means the whole device), false to require a valid
@@ -245,7 +245,7 @@ int part_get_info_by_name(struct blk_desc *dev_desc,
*/ */
int part_get_info_by_dev_and_name_or_num(const char *dev_iface, int part_get_info_by_dev_and_name_or_num(const char *dev_iface,
const char *dev_part_str, const char *dev_part_str,
struct blk_desc **dev_desc, struct blk_desc **desc,
struct disk_partition *part_info, struct disk_partition *part_info,
int allow_whole_dev); int allow_whole_dev);
@@ -256,12 +256,12 @@ int part_get_info_by_dev_and_name_or_num(const char *dev_iface,
* (DOS, ISO). Generates partition name out of the device type and partition * (DOS, ISO). Generates partition name out of the device type and partition
* number. * number.
* *
* @dev_desc: pointer to the block device * @desc: pointer to the block device
* @part_num: partition number for which the name is generated * @part_num: partition number for which the name is generated
* @name: buffer where the name is written * @name: buffer where the name is written
*/ */
void part_set_generic_name(const struct blk_desc *dev_desc, void part_set_generic_name(const struct blk_desc *desc, int part_num,
int part_num, char *name); char *name);
extern const struct block_drvr block_drvr[]; extern const struct block_drvr block_drvr[];
#else #else
@@ -269,26 +269,25 @@ static inline struct blk_desc *blk_get_dev(const char *ifname, int dev)
{ return NULL; } { return NULL; }
static inline struct blk_desc *mg_disk_get_dev(int dev) { return NULL; } static inline struct blk_desc *mg_disk_get_dev(int dev) { return NULL; }
static inline int part_get_info(struct blk_desc *dev_desc, int part, static inline int part_get_info(struct blk_desc *desc, int part,
struct disk_partition *info) { return -1; } struct disk_partition *info) { return -1; }
static inline int part_get_info_whole_disk(struct blk_desc *dev_desc, static inline int part_get_info_whole_disk(struct blk_desc *desc,
struct disk_partition *info) struct disk_partition *info)
{ return -1; } { return -1; }
static inline void part_print(struct blk_desc *dev_desc) {} static inline void part_print(struct blk_desc *desc) {}
static inline void part_init(struct blk_desc *dev_desc) {} static inline void part_init(struct blk_desc *desc) {}
static inline void dev_print(struct blk_desc *dev_desc) {} static inline void dev_print(struct blk_desc *desc) {}
static inline int blk_get_device_by_str(const char *ifname, const char *dev_str, static inline int blk_get_device_by_str(const char *ifname, const char *dev_str,
struct blk_desc **dev_desc) struct blk_desc **desc)
{ return -1; } { return -1; }
static inline int blk_get_device_part_str(const char *ifname, static inline int blk_get_device_part_str(const char *ifname,
const char *dev_part_str, const char *dev_part_str,
struct blk_desc **dev_desc, struct blk_desc **desc,
struct disk_partition *info, struct disk_partition *info,
int allow_whole_dev) int allow_whole_dev)
{ *dev_desc = NULL; return -1; } { *desc = NULL; return -1; }
static inline int part_get_info_by_name(struct blk_desc *dev_desc, static inline int part_get_info_by_name(struct blk_desc *desc, const char *name,
const char *name,
struct disk_partition *info) struct disk_partition *info)
{ {
return -ENOENT; return -ENOENT;
@@ -297,11 +296,11 @@ static inline int part_get_info_by_name(struct blk_desc *dev_desc,
static inline int static inline int
part_get_info_by_dev_and_name_or_num(const char *dev_iface, part_get_info_by_dev_and_name_or_num(const char *dev_iface,
const char *dev_part_str, const char *dev_part_str,
struct blk_desc **dev_desc, struct blk_desc **desc,
struct disk_partition *part_info, struct disk_partition *part_info,
int allow_whole_dev) int allow_whole_dev)
{ {
*dev_desc = NULL; *desc = NULL;
return -ENOSYS; return -ENOSYS;
} }
#endif #endif
@@ -382,29 +381,29 @@ struct part_driver {
/** /**
* @get_info: Get information about a partition * @get_info: Get information about a partition
* *
* @get_info.dev_desc: Block device descriptor * @get_info.desc: Block device descriptor
* @get_info.part: Partition number (1 = first) * @get_info.part: Partition number (1 = first)
* @get_info.info: Returns partition information * @get_info.info: Returns partition information
*/ */
int (*get_info)(struct blk_desc *dev_desc, int part, int (*get_info)(struct blk_desc *desc, int part,
struct disk_partition *info); struct disk_partition *info);
/** /**
* @print: Print partition information * @print: Print partition information
* *
* @print.dev_desc: Block device descriptor * @print.desc: Block device descriptor
*/ */
void (*print)(struct blk_desc *dev_desc); void (*print)(struct blk_desc *desc);
/** /**
* @test: Test if a device contains this partition type * @test: Test if a device contains this partition type
* *
* @test.dev_desc: Block device descriptor * @test.desc: Block device descriptor
* @test.Return: * @test.Return:
* 0 if the block device appears to contain this partition type, * 0 if the block device appears to contain this partition type,
* -ve if not * -ve if not
*/ */
int (*test)(struct blk_desc *dev_desc); int (*test)(struct blk_desc *desc);
}; };
/* Declare a new U-Boot partition 'driver' */ /* Declare a new U-Boot partition 'driver' */
@@ -418,19 +417,18 @@ struct part_driver {
/** /**
* write_gpt_table() - Write the GUID Partition Table to disk * write_gpt_table() - Write the GUID Partition Table to disk
* *
* @dev_desc: block device descriptor * @desc: block device descriptor
* @gpt_h: pointer to GPT header representation * @gpt_h: pointer to GPT header representation
* @gpt_e: pointer to GPT partition table entries * @gpt_e: pointer to GPT partition table entries
* *
* Return: zero on success, otherwise error * Return: zero on success, otherwise error
*/ */
int write_gpt_table(struct blk_desc *dev_desc, int write_gpt_table(struct blk_desc *desc, gpt_header *gpt_h, gpt_entry *gpt_e);
gpt_header *gpt_h, gpt_entry *gpt_e);
/** /**
* gpt_fill_pte() - Fill the GPT partition table entry * gpt_fill_pte() - Fill the GPT partition table entry
* *
* @dev_desc: block device descriptor * @desc: block device descriptor
* @gpt_h: GPT header representation * @gpt_h: GPT header representation
* @gpt_e: GPT partition table entries * @gpt_e: GPT partition table entries
* @partitions: list of partitions * @partitions: list of partitions
@@ -438,55 +436,54 @@ int write_gpt_table(struct blk_desc *dev_desc,
* *
* Return: zero on success * Return: zero on success
*/ */
int gpt_fill_pte(struct blk_desc *dev_desc, int gpt_fill_pte(struct blk_desc *desc, gpt_header *gpt_h, gpt_entry *gpt_e,
gpt_header *gpt_h, gpt_entry *gpt_e,
struct disk_partition *partitions, int parts); struct disk_partition *partitions, int parts);
/** /**
* gpt_fill_header() - Fill the GPT header * gpt_fill_header() - Fill the GPT header
* *
* @dev_desc: block device descriptor * @desc: block device descriptor
* @gpt_h: GPT header representation * @gpt_h: GPT header representation
* @str_guid: disk guid string representation * @str_guid: disk guid string representation
* @parts_count: number of partitions * @parts_count: number of partitions
* *
* Return: error on str_guid conversion error * Return: error on str_guid conversion error
*/ */
int gpt_fill_header(struct blk_desc *dev_desc, gpt_header *gpt_h, int gpt_fill_header(struct blk_desc *desc, gpt_header *gpt_h, char *str_guid,
char *str_guid, int parts_count); int parts_count);
/** /**
* gpt_restore() - Restore GPT partition table * gpt_restore() - Restore GPT partition table
* *
* @dev_desc: block device descriptor * @desc: block device descriptor
* @str_disk_guid: disk GUID * @str_disk_guid: disk GUID
* @partitions: list of partitions * @partitions: list of partitions
* @parts_count: number of partitions * @parts_count: number of partitions
* *
* Return: 0 on success * Return: 0 on success
*/ */
int gpt_restore(struct blk_desc *dev_desc, char *str_disk_guid, int gpt_restore(struct blk_desc *desc, char *str_disk_guid,
struct disk_partition *partitions, const int parts_count); struct disk_partition *partitions, const int parts_count);
/** /**
* is_valid_gpt_buf() - Ensure that the Primary GPT information is valid * is_valid_gpt_buf() - Ensure that the Primary GPT information is valid
* *
* @dev_desc: block device descriptor * @desc: block device descriptor
* @buf: buffer which contains the MBR and Primary GPT info * @buf: buffer which contains the MBR and Primary GPT info
* *
* Return: 0 on success, otherwise error * Return: 0 on success, otherwise error
*/ */
int is_valid_gpt_buf(struct blk_desc *dev_desc, void *buf); int is_valid_gpt_buf(struct blk_desc *desc, void *buf);
/** /**
* write_mbr_and_gpt_partitions() - write MBR, Primary GPT and Backup GPT * write_mbr_and_gpt_partitions() - write MBR, Primary GPT and Backup GPT
* *
* @dev_desc: block device descriptor * @desc: block device descriptor
* @buf: buffer which contains the MBR and Primary GPT info * @buf: buffer which contains the MBR and Primary GPT info
* *
* Return: 0 on success, otherwise error * Return: 0 on success, otherwise error
*/ */
int write_mbr_and_gpt_partitions(struct blk_desc *dev_desc, void *buf); int write_mbr_and_gpt_partitions(struct blk_desc *desc, void *buf);
/** /**
* gpt_verify_headers() - Read and check CRC32 of the GPT's header * gpt_verify_headers() - Read and check CRC32 of the GPT's header
@@ -494,24 +491,24 @@ int write_mbr_and_gpt_partitions(struct blk_desc *dev_desc, void *buf);
* *
* As a side effect if sets gpt_head and gpt_pte so they point to GPT data. * As a side effect if sets gpt_head and gpt_pte so they point to GPT data.
* *
* @dev_desc: block device descriptor * @desc: block device descriptor
* @gpt_head: pointer to GPT header data read from medium * @gpt_head: pointer to GPT header data read from medium
* @gpt_pte: pointer to GPT partition table enties read from medium * @gpt_pte: pointer to GPT partition table enties read from medium
* *
* Return: 0 on success, otherwise error * Return: 0 on success, otherwise error
*/ */
int gpt_verify_headers(struct blk_desc *dev_desc, gpt_header *gpt_head, int gpt_verify_headers(struct blk_desc *desc, gpt_header *gpt_head,
gpt_entry **gpt_pte); gpt_entry **gpt_pte);
/** /**
* gpt_repair_headers() - Function to repair the GPT's header * gpt_repair_headers() - Function to repair the GPT's header
* and partition table entries (PTE) * and partition table entries (PTE)
* *
* @dev_desc: block device descriptor * @desc: block device descriptor
* *
* Return: 0 on success, otherwise error * Return: 0 on success, otherwise error
*/ */
int gpt_repair_headers(struct blk_desc *dev_desc); int gpt_repair_headers(struct blk_desc *desc);
/** /**
* gpt_verify_partitions() - Function to check if partitions' name, start and * gpt_verify_partitions() - Function to check if partitions' name, start and
@@ -521,7 +518,7 @@ int gpt_repair_headers(struct blk_desc *dev_desc);
* provided in '$partitions' environment variable. Specificially, name, start * provided in '$partitions' environment variable. Specificially, name, start
* and size of the partition is checked. * and size of the partition is checked.
* *
* @dev_desc: block device descriptor * @desc: block device descriptor
* @partitions: partition data read from '$partitions' env variable * @partitions: partition data read from '$partitions' env variable
* @parts: number of partitions read from '$partitions' env variable * @parts: number of partitions read from '$partitions' env variable
* @gpt_head: pointer to GPT header data read from medium * @gpt_head: pointer to GPT header data read from medium
@@ -529,7 +526,7 @@ int gpt_repair_headers(struct blk_desc *dev_desc);
* *
* Return: 0 on success, otherwise error * Return: 0 on success, otherwise error
*/ */
int gpt_verify_partitions(struct blk_desc *dev_desc, int gpt_verify_partitions(struct blk_desc *desc,
struct disk_partition *partitions, int parts, struct disk_partition *partitions, int parts,
gpt_header *gpt_head, gpt_entry **gpt_pte); gpt_header *gpt_head, gpt_entry **gpt_pte);
@@ -540,12 +537,12 @@ int gpt_verify_partitions(struct blk_desc *dev_desc,
* This function reads the GUID string from a block device whose descriptor * This function reads the GUID string from a block device whose descriptor
* is provided. * is provided.
* *
* @dev_desc: block device descriptor * @desc: block device descriptor
* @guid: pre-allocated string in which to return the GUID * @guid: pre-allocated string in which to return the GUID
* *
* Return: 0 on success, otherwise error * Return: 0 on success, otherwise error
*/ */
int get_disk_guid(struct blk_desc *dev_desc, char *guid); int get_disk_guid(struct blk_desc *desc, char *guid);
#endif #endif
@@ -562,12 +559,12 @@ int is_valid_dos_buf(void *buf);
/** /**
* write_mbr_sector() - write DOS MBR * write_mbr_sector() - write DOS MBR
* *
* @dev_desc: block device descriptor * @desc: block device descriptor
* @buf: buffer which contains the MBR * @buf: buffer which contains the MBR
* *
* Return: 0 on success, otherwise error * Return: 0 on success, otherwise error
*/ */
int write_mbr_sector(struct blk_desc *dev_desc, void *buf); int write_mbr_sector(struct blk_desc *desc, void *buf);
int write_mbr_partitions(struct blk_desc *dev, int write_mbr_partitions(struct blk_desc *dev,
struct disk_partition *p, int count, unsigned int disksig); struct disk_partition *p, int count, unsigned int disksig);