/* 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 /** * 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 */