| /* SPDX-License-Identifier: GPL-2.0+ */ | |
| /* | |
| * Internal structures for the EFI driver binding protocol | |
| * | |
| * Copyright (c) 2017 Heinrich Schuchardt | |
| */ | |
| #ifndef _EFI_DRIVER_H | |
| #define _EFI_DRIVER_H 1 | |
| #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 | |
| * driver. This GUID is used by the EFI uclass in the | |
| * supports() and start() methods of the | |
| * EFI_DRIVER_BINDING_PROTOCOL. | |
| * @child_protocol: Protocol supported by the child handles generated by | |
| * the EFI driver. | |
| * @init: Function called by the EFI uclass after installing the | |
| * driver binding protocol. | |
| * @bind: Function called by the EFI uclass to attach the | |
| * driver to EFI driver to a handle. | |
| */ | |
| struct efi_driver_ops { | |
| const efi_guid_t *protocol; | |
| const efi_guid_t *child_protocol; | |
| efi_status_t (*init)(struct efi_driver_binding_extended_protocol *this); | |
| efi_status_t (*bind)(struct efi_driver_binding_extended_protocol *this, | |
| efi_handle_t handle, void *interface); | |
| }; | |
| #endif /* _EFI_DRIVER_H */ |