summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/efi_driver.h29
-rw-r--r--lib/efi_driver/efi_block_device.c5
-rw-r--r--lib/efi_driver/efi_uclass.c2
3 files changed, 20 insertions, 16 deletions
diff --git a/include/efi_driver.h b/include/efi_driver.h
index de38abe83bd..71e0d3194ea 100644
--- a/include/efi_driver.h
+++ b/include/efi_driver.h
@@ -11,6 +11,19 @@
#include <efi_loader.h>
/**
+ * struct efi_driver_binding_extended_protocol - extended driver binding protocol
+ *
+ * This structure adds internal fields to the driver binding protocol.
+ *
+ * @bp: driver binding protocol
+ * @ops: operations supported by the driver
+ */
+struct efi_driver_binding_extended_protocol {
+ struct efi_driver_binding_protocol bp;
+ const struct efi_driver_ops *ops;
+};
+
+/**
* struct efi_driver_ops - operations support by an EFI driver
*
* @protocol: The GUID of the protocol which is consumed by the
@@ -25,20 +38,8 @@
struct efi_driver_ops {
const efi_guid_t *protocol;
const efi_guid_t *child_protocol;
- efi_status_t (*bind)(efi_handle_t handle, void *interface);
-};
-
-/**
- * struct efi_driver_binding_extended_protocol - extended driver binding protocol
- *
- * This structure adds internal fields to the driver binding protocol.
- *
- * @bp: driver binding protocol
- * @ops: operations supported by the driver
- */
-struct efi_driver_binding_extended_protocol {
- struct efi_driver_binding_protocol bp;
- const struct efi_driver_ops *ops;
+ efi_status_t (*bind)(struct efi_driver_binding_extended_protocol *this,
+ efi_handle_t handle, void *interface);
};
#endif /* _EFI_DRIVER_H */
diff --git a/lib/efi_driver/efi_block_device.c b/lib/efi_driver/efi_block_device.c
index e9eabbde58d..f440067f702 100644
--- a/lib/efi_driver/efi_block_device.c
+++ b/lib/efi_driver/efi_block_device.c
@@ -174,11 +174,14 @@ err:
/**
* efi_bl_bind() - bind to a block io protocol
*
+ * @this: driver binding protocol
* @handle: handle
* @interface: block io protocol
* Return: status code
*/
-static efi_status_t efi_bl_bind(efi_handle_t handle, void *interface)
+static efi_status_t efi_bl_bind(
+ struct efi_driver_binding_extended_protocol *this,
+ efi_handle_t handle, void *interface)
{
efi_status_t ret = EFI_SUCCESS;
struct efi_object *obj = efi_search_obj(handle);
diff --git a/lib/efi_driver/efi_uclass.c b/lib/efi_driver/efi_uclass.c
index aabee0e2601..0a16c594e3a 100644
--- a/lib/efi_driver/efi_uclass.c
+++ b/lib/efi_driver/efi_uclass.c
@@ -146,7 +146,7 @@ static efi_status_t EFIAPI efi_uc_start(
ret = check_node_type(controller_handle);
if (ret != EFI_SUCCESS)
goto err;
- ret = bp->ops->bind(controller_handle, interface);
+ ret = bp->ops->bind(bp, controller_handle, interface);
if (ret == EFI_SUCCESS)
goto out;