[U-Boot] [PATCH v2 14/18] efi_loader: provide links between devices EFI handles

Alexander Graf agraf at suse.de
Thu Jan 18 18:55:02 UTC 2018



On 17.01.18 20:16, Heinrich Schuchardt wrote:
> U-Boot devices and EFI handles can be related, e.g. an
> IDE disk relates to a handle with the EFI_BLOCK_IO_PROTOCOL.
> Provide pointers to store these links.
> 
> Signed-off-by: Heinrich Schuchardt <xypron.glpk at gmx.de>

You actually wouldn't need any of these changes I think. With a small
change to the block driver, even the need for "dev" disappears.

Alex

diff --git a/lib/efi_driver/efi_block_device.c
b/lib/efi_driver/efi_block_device.c
index 837787d563..71c752d107 100644
--- a/lib/efi_driver/efi_block_device.c
+++ b/lib/efi_driver/efi_block_device.c
@@ -91,19 +91,19 @@ static ulong efi_bl_write(struct udevice *dev,
lbaint_t blknr, lbaint_t blkcnt,
 	return blkcnt;
 }

-static int efi_bl_bind_partions(efi_handle_t handle)
+static int efi_bl_bind_partions(efi_object *obj, struct udevice *bdev)
 {
 	struct efi_object *obj = efi_search_obj(handle);
 	struct blk_desc *desc;
 	const char *if_typename;

-	if (!obj || !obj->dev)
+	if (!obj || !bdev)
 		return -ENOENT;
-	desc = dev_get_uclass_platdata(obj->dev);
+	desc = dev_get_uclass_platdata(bdev);
 	if_typename = blk_get_if_type_name(desc->if_type);

 	return efi_disk_create_partitions(handle, desc, if_typename,
-					  desc->devnum, obj->dev->name);
+					  desc->devnum, bdev->name);
 }

 /*
@@ -137,11 +137,10 @@ static int efi_bl_bind(efi_handle_t handle, void
*interface)
 		return ret;
 	EFI_PRINT("%s: block device '%s' created\n", __func__, bdev->name);
 	bdev->platdata = interface;
-	obj->dev = bdev;

 	ret = blk_prepare_device(bdev);

-	disks = efi_bl_bind_partions(handle);
+	disks = efi_bl_bind_partions(obj, bdev);
 	EFI_PRINT("Found %d partions\n", disks);

 	return 0;


More information about the U-Boot mailing list