From f037737fc1d47b0641c177bf8648f5c45919896e Mon Sep 17 00:00:00 2001 From: Jozef Nagy Date: Sat, 30 Mar 2024 00:02:42 +0100 Subject: [PATCH] Better code organization --- efi.h | 51 +-- protocols/adapter_information.h | 78 ---- protocols/bus_specific_driver_override.h | 19 - protocols/component_name2.h | 32 -- protocols/device_path.h | 77 ++++ protocols/driver_binding.h | 42 -- protocols/driver_diagnostics2.h | 34 -- protocols/driver_family_override.h | 18 - protocols/driver_health.h | 55 --- protocols/driver_supported_efi_version.h | 13 - protocols/loaded_image.h | 16 + protocols/loaded_image_device_path.h | 12 - protocols/platform_driver_override.h | 39 -- protocols/platform_to_driver_configuration.h | 59 --- protocols/service_binding.h | 25 -- protocols/uefi_driver_model.h | 419 +++++++++++++++++++ 16 files changed, 513 insertions(+), 476 deletions(-) delete mode 100644 protocols/adapter_information.h delete mode 100644 protocols/bus_specific_driver_override.h delete mode 100644 protocols/component_name2.h delete mode 100644 protocols/driver_binding.h delete mode 100644 protocols/driver_diagnostics2.h delete mode 100644 protocols/driver_family_override.h delete mode 100644 protocols/driver_health.h delete mode 100644 protocols/driver_supported_efi_version.h delete mode 100644 protocols/loaded_image_device_path.h delete mode 100644 protocols/platform_driver_override.h delete mode 100644 protocols/platform_to_driver_configuration.h delete mode 100644 protocols/service_binding.h create mode 100644 protocols/uefi_driver_model.h diff --git a/efi.h b/efi.h index 9cf6296..b2d804a 100644 --- a/efi.h +++ b/efi.h @@ -13,67 +13,18 @@ typedef struct { #define EFI_GLOBAL_VARIABLE {0x8be4df61,0x93ca,0x11d2, {0xaa,0x0d,0x00,0xe0,0x98,0x03,0x2b,0x8c}} -// Variable-size array -#define ANYSIZE_ARRAY 1 - -// Event types - -// - -// Task Priority Levels -#define TPL_APPLICATION 4 -#define TPL_CALLBACK 8 -#define TPL_NOTIFY 16 -#define TPL_HIGH_LEVEL 31 -// - -// Variable Attributes -#define EFI_VARIABLE_NON_VOLATILE 0x00000001 -#define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x00000002 -#define EFI_VARIABLE_RUNTIME_ACCESS 0x00000004 -#define EFI_VARIABLE_HARDWARE_ERROR_RECORD 0x00000008 -// NOTE: EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS is deprecated -// and should be considered reserved. -#define EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS 0x00000010 -#define EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS 0x00000020 -#define EFI_VARIABLE_APPEND_WRITE 0x00000040 -#define EFI_VARIABLE_ENHANCED_AUTHENTICATED_ACCESS 0x00000080 - -// EFI Open Protocol Attributes -#define EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL 0x00000001 -#define EFI_OPEN_PROTOCOL_GET_PROTOCOL 0x00000002 -#define EFI_OPEN_PROTOCOL_TEST_PROTOCOL 0x00000004 -#define EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER 0x00000008 -#define EFI_OPEN_PROTOCOL_BY_DRIVER 0x00000010 -#define EFI_OPEN_PROTOCOL_EXCLUSIVE 0x00000020 -// - -// Memory Descriptor Version Number -#define EFI_MEMORY_DESCRIPTOR_VERSION 1 - #include "efi_st.h" #include "efi_rs.h" #include "efi_bs.h" -#include "protocols/adapter_information.h" #include "protocols/boot_manager_policy.h" -#include "protocols/bus_specific_driver_override.h" -#include "protocols/component_name2.h" #include "protocols/device_path.h" -#include "protocols/driver_binding.h" -#include "protocols/driver_diagnostics2.h" -#include "protocols/driver_family_override.h" -#include "protocols/driver_health.h" -#include "protocols/driver_supported_efi_version.h" #include "protocols/file.h" #include "protocols/loaded_image.h" -#include "protocols/loaded_image_device_path.h" -#include "protocols/platform_driver_override.h" -#include "protocols/platform_to_driver_configuration.h" -#include "protocols/service_binding.h" #include "protocols/simple_file_system.h" #include "protocols/simple_text_input.h" #include "protocols/simple_text_output.h" +#include "protocols/uefi_driver_model.h" #define EFI_ERROR(Status) (((INTN)(EFI_STATUS)(Status)) < 0) diff --git a/protocols/adapter_information.h b/protocols/adapter_information.h deleted file mode 100644 index f9c8560..0000000 --- a/protocols/adapter_information.h +++ /dev/null @@ -1,78 +0,0 @@ -#ifndef EFI_PROTOCOLS_ADAPTER_INFORMATION_H -#define EFI_PROTOCOLS_ADAPTER_INFORMATION_H - -#define EFI_ADAPTER_INFORMATION_PROTOCOL_GUID {0xe5dd1403,0xd622,0xc24e, {0x84,0x88,0xc7,0x1b,0x17,0xf5,0xe8,0x02}} -#define EFI_ADAPTER_INFO_MEDIA_STATE_GUID {0xd7c74207,0xa831,0x4a26, {0xb1,0xf5,0xd1,0x93,0x06,0x5c,0xe8,0xb6}} -#define EFI_ADAPTER_INFO_NETWORK_BOOT_GUID {0x1fbd2960,0x4130,0x41e5,{0x94,0xac,0xd2,0xcf,0x03,0x7f,0xb3,0x7c}} -#define EFI_ADAPTER_INFO_SAN_MAC_ADDRESS_GUID {0x114da5ef,0x2cf1,0x4e12, {0x9b,0xbb,0xc4,0x70,0xb5,0x52,0x05,0xd9}} -#define EFI_ADAPTER_INFO_UNDI_IPV6_SUPPORT_GUID {0x4bd56be3,0x4975,0x4d8a, {0xa0,0xad,0xc4,0x91,0x20,0x4b,0x5d,0x4d}} -#define EFI_ADAPTER_INFO_MEDIA_TYPE_GUID {0x8484472f,0x71ec,0x411a, {0xb3,0x9c,0x62,0xcd,0x94,0xd9,0x91,0x6e}} -#define EFI_ADAPTER_INFO_CDAT_TYPE_GUID {0x77af24d1,0xb6f0,0x42b9, {0x83,0xf5,0x8f,0xe6,0xe8,0x3e,0xb6,0xf0}} - -typedef struct _EFI_ADAPTER_INFORMATION_PROTOCOL EFI_ADAPTER_INFORMATION_PROTOCOL; - -typedef struct { - EFI_STATUS MediaState; -} EFI_ADAPTER_INFO_MEDIA_STATE; - -typedef struct { - BOOLEAN iSsciIpv4BootCapablity; - BOOLEAN iScsiIpv6BootCapablity; - BOOLEAN FCoeBootCapablity; - BOOLEAN OffloadCapability; - BOOLEAN iScsiMpioCapability; - BOOLEAN iScsiIpv4Boot; - BOOLEAN iScsiIpv6Boot; - BOOLEAN FCoeBoot; -} EFI_ADAPTER_INFO_NETWORK_BOOT; - -typedef struct { - EFI_MAC_ADDRESS SanMacAddress; -} EFI_ADAPTER_INFO_SAN_MAC_ADDRESS; - -typedef struct { - BOOLEAN Ipv6Support; -} EFI_ADAPTER_INFO_UNDI_IPV6_SUPPORT; - -typedef struct { - UINT8 MediaType; -} EFI_ADAPTER_INFO_MEDIA_TYPE; - -typedef struct { - UINTN CdatSize; - UINT8 Cdat[]; -} EFI_ADAPTER_INFO_CDAT_TYPE_TYPE; - -typedef -EFI_STATUS -(EFIAPI *EFI_ADAPTER_INFO_GET_INFO)( - IN EFI_ADAPTER_INFORMATION_PROTOCOL *This, - IN EFI_GUID *InformationType, - OUT VOID **InformationBlock, - OUT UINTN *InformationBlockSize -); - -typedef -EFI_STATUS -(EFIAPI *EFI_ADAPTER_INFO_SET_INFO)( - IN EFI_ADAPTER_INFORMATION_PROTOCOL *This, - IN EFI_GUID *InformationType, - IN VOID *InformationBlock, - IN UINTN InformationBlockSize -); - -typedef -EFI_STATUS -(EFIAPI *EFI_ADAPTER_INFO_GET_SUPPORTED_TYPES)( - IN EFI_ADAPTER_INFORMATION_PROTOCOL *This, - OUT EFI_GUID **InfoTypesBuffer, - OUT UINTN *InfoTypesBufferCount -); - -typedef struct _EFI_ADAPTER_INFORMATION_PROTOCOL { - EFI_ADAPTER_INFO_GET_INFO GetInformation; - EFI_ADAPTER_INFO_SET_INFO SetInformation; - EFI_ADAPTER_INFO_GET_SUPPORTED_TYPES GetSupportedTypes; -} EFI_ADAPTER_INFORMATION_PROTOCOL; - -#endif /* EFI_PROTOCOLS_ADAPTER_INFORMATION_H */ diff --git a/protocols/bus_specific_driver_override.h b/protocols/bus_specific_driver_override.h deleted file mode 100644 index eda8370..0000000 --- a/protocols/bus_specific_driver_override.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef EFI_PROTOCOLS_BUS_SPECIFIC_DRIVER_OVERRIDE_H -#define EFI_PROTOCOLS_BUS_SPECIFIC_DRIVER_OVERRIDE_H - -#define EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL_GUID {0x3bc1b285,0x8a15,0x4a82, {0xaa,0xbf,0x4d,0x7d,0x13,0xfb,0x32,0x65}} - -typedef struct _EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL; - -typedef -EFI_STATUS -(EFIAPI *EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_GET_DRIVER)( - IN EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL *This, - IN OUT EFI_HANDLE *DriverImageHandle -); - -typedef struct _EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL { - EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_GET_DRIVER GetDriver; -} EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL; - -#endif /* EFI_PROTOCOLS_BUS_SPECIFIC_DRIVER_OVERRIDE_H */ diff --git a/protocols/component_name2.h b/protocols/component_name2.h deleted file mode 100644 index 1eb373e..0000000 --- a/protocols/component_name2.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef EFI_PROTOCOLS_COMPONENT_NAME2_H -#define EFI_PROTOCOLS_COMPONENT_NAME2_H - -#define EFI_COMPONENT_NAME2_PROTOCOL_GUID {0x6a7a5cff,0xe8d9,0x4f70, {0xba,0xda,0x75,0xab,0x30,0x25,0xce,0x14}} - -typedef struct _EFI_COMPONENT_NAME2_PROTOCOL EFI_COMPONENT_NAME2_PROTOCOL; - -typedef -EFI_STATUS -(EFIAPI *EFI_COMPONENT_NAME_GET_DRIVER_NAME)( - IN EFI_COMPONENT_NAME2_PROTOCOL *This, - IN CHAR8 *Language, - OUT CHAR16 **DriverName -); - -typedef -EFI_STATUS -(EFIAPI *EFI_COMPONENT_NAME_GET_CONTROLLER_NAME)( - IN EFI_COMPONENT_NAME2_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName -); - -typedef struct _EFI_COMPONENT_NAME2_PROTOCOL { - EFI_COMPONENT_NAME_GET_DRIVER_NAME GetDriverName; - EFI_COMPONENT_NAME_GET_CONTROLLER_NAME GetControllerName; - CHAR8 *SupportedLanguages; -} EFI_COMPONENT_NAME2_PROTOCOL; - -#endif /* EFI_PROTOCOLS_COMPONENT_NAME2_H */ diff --git a/protocols/device_path.h b/protocols/device_path.h index 012dd33..268e81e 100644 --- a/protocols/device_path.h +++ b/protocols/device_path.h @@ -1,6 +1,10 @@ #ifndef EFI_PROTOCOLS_DEVICE_PATH_H #define EFI_PROTOCOLS_DEVICE_PATH_H +//// +// EFI Device Path Protocol +/// + #define EFI_DEVICE_PATH_PROTOCOL_GUID {0x09576e91,0x6d3f,0x11d2,{0x8e,0x39,0x00,0xa0,0xc9,0x69,0x72,0x3b}} typedef struct _EFI_DEVICE_PATH_PROTOCOL EFI_DEVICE_PATH_PROTOCOL; @@ -11,4 +15,77 @@ typedef struct _EFI_DEVICE_PATH_PROTOCOL { UINT8 Length[2]; } EFI_DEVICE_PATH_PROTOCOL; +//// +// EFI Device Path Utilities Protocol +/// + +#define EFI_DEVICE_PATH_UTILITIES_PROTOCOL_GUID {0x379be4e,0xd706,0x437d, {0xb0,0x37,0xed,0xb8,0x2f,0xb7,0x72,0xa4}} + +typedef struct _EFI_DEVICE_PATH_UTILITIES_PROTOCOL EFI_DEVICE_PATH_UTILITIES_PROTOCOL; + +typedef +UINTN +(EFIAPI *EFI_DEVICE_PATH_UTILS_GET_DEVICE_PATH_SIZE)( + IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath +); + +typedef +EFI_DEVICE_PATH_PROTOCOL* +(EFIAPI *EFI_DEVICE_PATH_UTILS_DUP_DEVICE_PATH)( + IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath +); + +typedef +EFI_DEVICE_PATH_PROTOCOL* +(EFIAPI *EFI_DEVICE_PATH_UTILS_APPEND_PATH)( + IN CONST EFI_DEVICE_PATH_PROTOCOL *Src1, + IN CONST EFI_DEVICE_PATH_PROTOCOL *Src2 +); + +typedef +EFI_DEVICE_PATH_PROTOCOL* +(EFIAPI *EFI_DEVICE_PATH_UTILS_APPEND_NODE)( + IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath, + IN CONST EFI_DEVICE_PATH_PROTOCOL *DeviceNode +); + +typedef +EFI_DEVICE_PATH_PROTOCOL* +(EFIAPI *EFI_DEVICE_PATH_UTILS_APPEND_INSTANCE)( + IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath, + IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePathInstance +); + +typedef +EFI_DEVICE_PATH_PROTOCOL* +(EFIAPI *EFI_DEVICE_PATH_UTILS_GET_NEXT_INSTANCE)( + IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePathInstance, + OUT UINTN *DevicePathInstanceSize OPTIONAL +); + +typedef +BOOLEAN +(EFIAPI *EFI_DEVICE_PATH_UTILS_IS_MULTI_INSTANCE)( + IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath +); + +typedef +EFI_DEVICE_PATH_PROTOCOL* +(EFIAPI *EFI_DEVICE_PATH_UTILS_CREATE_NODE)( + IN UINT8 NodeType, + IN UINT8 NodeSubType, + IN UINT16 NodeLength +); + +typedef struct _EFI_DEVICE_PATH_UTILITIES_PROTOCOL { + EFI_DEVICE_PATH_UTILS_GET_DEVICE_PATH_SIZE GetDevicePathSize; + EFI_DEVICE_PATH_UTILS_DUP_DEVICE_PATH DuplicateDevicePath; + EFI_DEVICE_PATH_UTILS_APPEND_PATH AppendDevicePath; + EFI_DEVICE_PATH_UTILS_APPEND_NODE AppendDeviceNode; + EFI_DEVICE_PATH_UTILS_APPEND_INSTANCE AppendDevicePathInstance; + EFI_DEVICE_PATH_UTILS_GET_NEXT_INSTANCE GetNextDevicePathInstance; + EFI_DEVICE_PATH_UTILS_IS_MULTI_INSTANCE IsDevicePathMultiInstance; + EFI_DEVICE_PATH_UTILS_CREATE_NODE CreateDeviceNode; +} EFI_DEVICE_PATH_UTILITIES_PROTOCOL; + #endif /* EFI_PROTOCOLS_DEVICE_PATH_H */ diff --git a/protocols/driver_binding.h b/protocols/driver_binding.h deleted file mode 100644 index a38258f..0000000 --- a/protocols/driver_binding.h +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef EFI_PROTOCOLS_DRIVER_BINDING_H -#define EFI_PROTOCOLS_DRIVER_BINDING_H - -#define EFI_DRIVER_BINDING_PROTOCOL_GUID {0x18a031ab,0xb443,0x4d1a, {0xa5,0xc0,0x0c,0x09,0x26,0x1e,0x9f,0x71}} - -typedef struct _EFI_DRIVER_BINDING_PROTOCOL EFI_DRIVER_BINDING_PROTOCOL; - -typedef -EFI_STATUS -(EFIAPI *EFI_DRIVER_BINDING_PROTOCOL_SUPPORTED)( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL -); - -typedef -EFI_STATUS -(EFIAPI *EFI_DRIVER_BINDING_PROTOCOL_START)( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL -); - -typedef -EFI_STATUS -(EFIAPI *EFI_DRIVER_BINDING_PROTOCOL_STOP)( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN UINTN NumberOfChildren, - IN EFI_DEVICE_PATH_PROTOCOL *ChildHandleBuffer OPTIONAL -); - -typedef struct _EFI_DRIVER_BINDING_PROTOCOL { - EFI_DRIVER_BINDING_PROTOCOL_SUPPORTED Supported; - EFI_DRIVER_BINDING_PROTOCOL_START Start; - EFI_DRIVER_BINDING_PROTOCOL_STOP Stop; - UINT32 Version; - EFI_HANDLE ImageHandle; - EFI_HANDLE DriverBindingHandle; -} EFI_DRIVER_BINDING_PROTOCOL; - -#endif /* EFI_PROTOCOLS_DRIVER_BINDING_H */ diff --git a/protocols/driver_diagnostics2.h b/protocols/driver_diagnostics2.h deleted file mode 100644 index 466c695..0000000 --- a/protocols/driver_diagnostics2.h +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef EFI_PROTOCOLS_DRIVER_DIAGNOSTICS2_H -#define EFI_PROTOCOLS_DRIVER_DIAGNOSTICS2_H - -#define EFI_DRIVER_DIAGNOSTICS_PROTOCOL_GUID {0x4d330321,0x025f,0x4aac, {0x90,0xd8,0x5e,0xd9,0x00,0x17,0x3b,0x63}} - -typedef struct _EFI_DRIVER_DIAGNOSTICS2_PROTOCOL EFI_DRIVER_DIAGNOSTICS2_PROTOCOL; - -typedef enum { - EfiDriverDiagnosticTypeStandard = 0, - EfiDriverDiagnosticTypeExtended = 1, - EfiDriverDiagnosticTypeManufacturing = 2, - EfiDriverDiagnosticTypeCancel = 3, - EfiDriverDiagnosticTypeMaximum -} EFI_DRIVER_DIAGNOSTIC_TYPE; - -typedef -EFI_STATUS -(EFIAPI *EFI_DRIVER_DIAGNOSTICS2_RUN_DIAGNOSTICS)( - IN EFI_DRIVER_DIAGNOSTICS2_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN EFI_DRIVER_DIAGNOSTIC_TYPE DiagnosticType, - IN CHAR8 *Language, - OUT EFI_GUID **ErrorType, - OUT UINTN *BufferSize, - OUT CHAR16 **Buffer -); - -typedef struct _EFI_DRIVER_DIAGNOSTICS2_PROTOCOL { - EFI_DRIVER_DIAGNOSTICS2_RUN_DIAGNOSTICS RunDiagnostics; - CHAR8 *SupportedLanguages; -} EFI_DRIVER_DIAGNOSTICS2_PROTOCOL; - -#endif /* EFI_PROTOCOLS_DRIVER_DIAGNOSTICS2_H */ diff --git a/protocols/driver_family_override.h b/protocols/driver_family_override.h deleted file mode 100644 index 1cbc767..0000000 --- a/protocols/driver_family_override.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef EFI_PROTOCOLS_DRIVER_FAMILY_OVERRIDE_H -#define EFI_PROTOCOLS_DRIVER_FAMILY_OVERRIDE_H - -#define EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL_GUID {0xb1ee129e,0xda36,0x4181, {0x91,0xf8,0x04,0xa4,0x92,0x37,0x66,0xa7}} - -typedef struct _EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL; - -typedef -UINT32 -(EFIAPI *EFI_DRIVER_FAMILY_OVERRIDE_GET_VERSION)( - IN EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL *This -); - -typedef struct _EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL { - EFI_DRIVER_FAMILY_OVERRIDE_GET_VERSION GetVersion; -} EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL; - -#endif /* EFI_PROTOCOLS_DRIVER_FAMILY_OVERRIDE_H */ diff --git a/protocols/driver_health.h b/protocols/driver_health.h deleted file mode 100644 index e9c1ab6..0000000 --- a/protocols/driver_health.h +++ /dev/null @@ -1,55 +0,0 @@ -#ifndef EFI_PROTOCOLS_DRIVER_HEALTH_H -#define EFI_PROTOCOLS_DRIVER_HEALTH_H - -#define EFI_DRIVER_HEALTH_PROTOCOL_GUID {0x2a534210,0x9280,0x41d8, {0xae,0x79,0xca,0xda,0x01,0xa2,0xb1,0x27}} - -typedef struct _EFI_DRIVER_HEALTH_PROTOCOL EFI_DRIVER_HEALTH_PROTOCOL; - -typedef enum { - EfiDriverHealthStatusHealthy, - EfiDriverHealthStatusRepairRequired, - EfiDriverHealthStatusConfigurationRequired, - EfiDriverHealthStatusFailed, - EfiDriverHealthStatusReconnectRequired, - EfiDriverHealthStatusRebootRequired -} EFI_DRIVER_HEALTH_STATUS; - -typedef struct { - EFI_HII_HANDLE HiiHandle; - EFI_STRING_ID StringId; - UINT64 MessageCode; -} EFI_DRIVER_HEALTH_HII_MESSAGE; - -typedef -EFI_STATUS -(EFIAPI *EFI_DRIVER_HEALTH_GET_HEALTH_STATUS)( - IN EFI_DRIVER_HEALTH_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle OPTIONAL, - IN EFI_HANDLE ChildHandle OPTIONAL, - OUT EFI_DRIVER_HEALTH_STATUS *HealthStatus, - OUT EFI_DRIVER_HEALTH_HII_MESSAGE **MessageList OPTIONAL, - OUT EFI_HII_HANDLE *FormHiiHandle OPTIONAL -); - -typedef -EFI_STATUS -(EFIAPI *EFI_DRIVER_HEALTH_REPAIR_NOTIFY)( - IN UINTN Value, - IN UINTN Limit -); - -typedef -EFI_STATUS -(EFIAPI *EFI_DRIVER_HEALTH_REPAIR)( - IN EFI_DRIVER_HEALTH_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN EFI_DRIVER_HEALTH_REPAIR_NOTIFY RepairNotify OPTIONAL -); - -typedef struct _EFI_DRIVER_HEALTH_PROTOCOL { - EFI_DRIVER_HEALTH_GET_HEALTH_STATUS GetHealthStatus; - EFI_DRIVER_HEALTH_REPAIR Repair; -} EFI_DRIVER_HEALTH_PROTOCOL; - -#endif /* EFI_PROTOCOLS_DRIVER_HEALTH_H */ diff --git a/protocols/driver_supported_efi_version.h b/protocols/driver_supported_efi_version.h deleted file mode 100644 index a0bc642..0000000 --- a/protocols/driver_supported_efi_version.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef EFI_PROTOCOLS_DRIVER_SUPPORTED_EFI_VERSION_H -#define EFI_PROTOCOLS_DRIVER_SUPPORTED_EFI_VERSION_H - -#define EFI_DRIVER_SUPPORTED_EFI_VERSION_PROTOCOL_GUID {0x5c198761,0x16a8,0x4e69, {0x97,0x2c,0x89,0xd6,0x79,0x54,0xf8,0x1d}} - -typedef struct _EFI_DRIVER_SUPPORTED_EFI_VERSION_PROTOCOL EFI_DRIVER_SUPPORTED_EFI_VERSION_PROTOCOL; - -typedef struct _EFI_DRIVER_SUPPORTED_EFI_VERSION_PROTOCOL { - UINT32 Length; - UINT32 FirmwareVersion; -} EFI_DRIVER_SUPPORTED_EFI_VERSION_PROTOCOL; - -#endif /* EFI_PROTOCOLS_DRIVER_SUPPORTED_EFI_VERSION_H */ diff --git a/protocols/loaded_image.h b/protocols/loaded_image.h index fad5134..ea881ad 100644 --- a/protocols/loaded_image.h +++ b/protocols/loaded_image.h @@ -1,6 +1,10 @@ #ifndef EFI_PROTOCOLS_LOADED_IMAGE_H #define EFI_PROTOCOLS_LOADED_IMAGE_H +//// +// EFI Loaded Image Protocol +/// + #define EFI_LOADED_IMAGE_PROTOCOL_GUID {0x5b1b31a1,0x9562,0x11d2, {0x8e,0x3f,0x00,0xa0,0xc9,0x69,0x72,0x3b}} #define EFI_LOADED_IMAGE_PROTOCOL_VERSION 0x1000 @@ -33,4 +37,16 @@ typedef struct _EFI_LOADED_IMAGE_PROTOCOL { EFI_IMAGE_UNLOAD Unload; } EFI_LOADED_IMAGE_PROTOCOL; +//// +// EFI Loaded Image Device Path Protocol +/// + +#define EFI_LOADED_IMAGE_DEVICE_PATH_PROTOCOL_GUID {0xbc62157e,0x3e33,0x4fec, {0x99,0x20,0x2d,0x3b,0x36,0xd7,0x50,0xdf}} + +// UEFI Spec 2.10, 9.2.1: +// The Loaded Image Device Path Protocol uses the same protocol interface structure as the Device Path Protocol defined +// in Chapter 9. The only difference between the Device Path Protocol and the Loaded Image Device Path Protocol is +// the protocol GUID value. +typedef EFI_DEVICE_PATH_PROTOCOL EFI_LOADED_IMAGE_DEVICE_PATH_PROTOCOL; + #endif /* EFI_PROTOCOLS_LOADED_IMAGE_H */ diff --git a/protocols/loaded_image_device_path.h b/protocols/loaded_image_device_path.h deleted file mode 100644 index 76d56f8..0000000 --- a/protocols/loaded_image_device_path.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef EFI_PROTOCOLS_LOADED_IMAGE_DEVICE_PATH_H -#define EFI_PROTOCOLS_LOADED_IMAGE_DEVICE_PATH_H - -#define EFI_LOADED_IMAGE_DEVICE_PATH_PROTOCOL_GUID {0xbc62157e,0x3e33,0x4fec, {0x99,0x20,0x2d,0x3b,0x36,0xd7,0x50,0xdf}} - -// UEFI Spec 2.10, 9.2.1: -// The Loaded Image Device Path Protocol uses the same protocol interface structure as the Device Path Protocol defined -// in Chapter 9. The only difference between the Device Path Protocol and the Loaded Image Device Path Protocol is -// the protocol GUID value. -typedef EFI_DEVICE_PATH_PROTOCOL EFI_LOADED_IMAGE_DEVICE_PATH_PROTOCOL; - -#endif /* EFI_PROTOCOLS_LOADED_IMAGE_DEVICE_PATH_H */ diff --git a/protocols/platform_driver_override.h b/protocols/platform_driver_override.h deleted file mode 100644 index c345372..0000000 --- a/protocols/platform_driver_override.h +++ /dev/null @@ -1,39 +0,0 @@ -#ifndef EFI_PLATFORMS_PLATFORM_DRIVER_OVERRIDE_H -#define EFI_PLATFORMS_PLATFORM_DRIVER_OVERRIDE_H - -#define EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL_GUID {0x6b30c738,0xa391,0x11d4, {0x9a,0x3b,0x00,0x90,0x27,0x3f,0xc1,0x4d}} - -typedef struct _EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL; - -typedef -EFI_STATUS -(EFIAPI *EFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER)( - IN EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN OUT EFI_HANDLE *DriverImageHandle -); - -typedef -EFI_STATUS -(EFIAPI *EFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER_PATH)( - IN EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN OUT EFI_DEVICE_PATH_PROTOCOL **DriverImagePath -); - -typedef -EFI_STATUS -(EFIAPI *EFI_PLATFORM_DRIVER_OVERRIDE_DRIVER_LOADED)( - IN EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_DEVICE_PATH_PROTOCOL *DriverImagePath, - IN EFI_HANDLE DriverImageHandle -); - -typedef struct _EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL { - EFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER GetDriver; - EFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER_PATH GetDriverPath; - EFI_PLATFORM_DRIVER_OVERRIDE_DRIVER_LOADED DriverLoaded; -} EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL; - -#endif /* EFI_PLATFORMS_PLATFORM_DRIVER_OVERRIDE_H */ diff --git a/protocols/platform_to_driver_configuration.h b/protocols/platform_to_driver_configuration.h deleted file mode 100644 index 3e23859..0000000 --- a/protocols/platform_to_driver_configuration.h +++ /dev/null @@ -1,59 +0,0 @@ -#ifndef EFI_PROTOCOLS_PLATFORM_TO_DRIVER_CONFIGURATION_H -#define EFI_PROTOCOLS_PLATFORM_TO_DRIVER_CONFIGURATION_H - -#define EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOCOL_GUID {0x642cd590,0x8059,0x4c0a, {0xa9,0x58,0xc5,0xec,0x07,0xd2,0x3c,0x4b}} -#define EFI_PLATFORM_TO_DRIVER_CONFIGURATION_CLP_GUID {0x345ecc0e,0xcb6,0x4b75, {0xbb,0x57,0x1b,0x12,0x9c,0x47,0x33,0x3e}} - -typedef struct _EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOCOL EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOCOL; - -typedef enum { - EfiPlatformConfigurationActionNone = 0, - EfiPlatformConfigurationActionStopController = 1, - EfiPlatformConfigurationActionRestartController = 2, - EfiPlatformConfigurationActionRestartPlatform = 3, - EfiPlatformConfigurationActionNvramFailed = 4, - EfiPlatformConfigurationActionUnsupportedGuid = 5, - EfiPlatformConfigurationActionMaximum -} EFI_PLATFORM_CONFIGURATION_ACTION; - -typedef struct { - CHAR8 *CLPCommand; - UINT32 CLPCommandLength; - CHAR8 *CLPReturnString; - UINT32 CLPReturnStringLength; - UINT8 CLPCmdStatus; - UINT8 CLPErrorValue; - UINT16 CLPMsgCode; -} EFI_CONFIGURE_CLP_PARAMETER_BLK; - -typedef -EFI_STATUS -(EFIAPI *EFI_PLATFORM_TO_DRIVER_CONFIGURATION_QUERY)( - IN EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN UINTN *Instance, - OUT EFI_GUID **ParameterTypeGuid, - OUT VOID **ParameterBlock, - OUT UINTN *ParameterBlockSize -); - -typedef -EFI_STATUS -(EFIAPI *EFI_PLATFORM_TO_DRIVER_CONFIGURATION_RESPONSE)( - IN EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN UINTN *Instance, - IN EFI_GUID *ParameterTypeGuid, - IN VOID *ParameterBlock, - IN UINTN ParameterBlockSize, - IN EFI_PLATFORM_CONFIGURATION_ACTION ConfigurationAction -); - -typedef struct _EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOCOL { - EFI_PLATFORM_TO_DRIVER_CONFIGURATION_QUERY Query; - EFI_PLATFORM_TO_DRIVER_CONFIGURATION_RESPONSE Response; -} EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOCOL; - -#endif /* EFI_PROTOCOLS_PLATFORM_TO_DRIVER_CONFIGURATION_H */ diff --git a/protocols/service_binding.h b/protocols/service_binding.h deleted file mode 100644 index ed15cfa..0000000 --- a/protocols/service_binding.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef EFI_PROTOCOLS_SERVICE_BINDING_H -#define EFI_PROTOCOLS_SERVICE_BINDING_H - -typedef struct _EFI_SERVICE_BINDING_PROTOCOL EFI_SERVICE_BINDING_PROTOCOL; - -typedef -EFI_STATUS -(EFIAPI *EFI_SERVICE_BINDING_CREATE_CHILD)( - IN EFI_SERVICE_BINDING_PROTOCOL *This, - IN OUT EFI_HANDLE *ChildHandle -); - -typedef -EFI_STATUS -(EFIAPI *EFI_SERVICE_BINDING_DESTROY_CHILD)( - IN EFI_SERVICE_BINDING_PROTOCOL *This, - IN EFI_HANDLE ChildHandle -); - -typedef struct _EFI_SERVICE_BINDING_PROTOCOL { - EFI_SERVICE_BINDING_CREATE_CHILD CreateChild; - EFI_SERVICE_BINDING_DESTROY_CHILD DestroyChild; -} EFI_SERVICE_BINDING_PROTOCOL; - -#endif /* EFI_PROTOCOLS_SERVICE_BINDING_H */ diff --git a/protocols/uefi_driver_model.h b/protocols/uefi_driver_model.h new file mode 100644 index 0000000..8aba34e --- /dev/null +++ b/protocols/uefi_driver_model.h @@ -0,0 +1,419 @@ +#ifndef EFI_PROTOCOLS_UEFI_DRIVER_MODEL_H +#define EFI_PROTOCOLS_UEFI_DRIVER_MODEL_H + +//// +// EFI Driver Binding Protocol +/// + +#define EFI_DRIVER_BINDING_PROTOCOL_GUID {0x18a031ab,0xb443,0x4d1a, {0xa5,0xc0,0x0c,0x09,0x26,0x1e,0x9f,0x71}} + +typedef struct _EFI_DRIVER_BINDING_PROTOCOL EFI_DRIVER_BINDING_PROTOCOL; + +typedef +EFI_STATUS +(EFIAPI *EFI_DRIVER_BINDING_PROTOCOL_SUPPORTED)( + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL +); + +typedef +EFI_STATUS +(EFIAPI *EFI_DRIVER_BINDING_PROTOCOL_START)( + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL +); + +typedef +EFI_STATUS +(EFIAPI *EFI_DRIVER_BINDING_PROTOCOL_STOP)( + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN UINTN NumberOfChildren, + IN EFI_DEVICE_PATH_PROTOCOL *ChildHandleBuffer OPTIONAL +); + +typedef struct _EFI_DRIVER_BINDING_PROTOCOL { + EFI_DRIVER_BINDING_PROTOCOL_SUPPORTED Supported; + EFI_DRIVER_BINDING_PROTOCOL_START Start; + EFI_DRIVER_BINDING_PROTOCOL_STOP Stop; + UINT32 Version; + EFI_HANDLE ImageHandle; + EFI_HANDLE DriverBindingHandle; +} EFI_DRIVER_BINDING_PROTOCOL; + + +//// +// EFI Platform Driver Override Protocol +/// + +#define EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL_GUID {0x6b30c738,0xa391,0x11d4, {0x9a,0x3b,0x00,0x90,0x27,0x3f,0xc1,0x4d}} + +typedef struct _EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL; + +typedef +EFI_STATUS +(EFIAPI *EFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER)( + IN EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN OUT EFI_HANDLE *DriverImageHandle +); + +typedef +EFI_STATUS +(EFIAPI *EFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER_PATH)( + IN EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN OUT EFI_DEVICE_PATH_PROTOCOL **DriverImagePath +); + +typedef +EFI_STATUS +(EFIAPI *EFI_PLATFORM_DRIVER_OVERRIDE_DRIVER_LOADED)( + IN EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_DEVICE_PATH_PROTOCOL *DriverImagePath, + IN EFI_HANDLE DriverImageHandle +); + +typedef struct _EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL { + EFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER GetDriver; + EFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER_PATH GetDriverPath; + EFI_PLATFORM_DRIVER_OVERRIDE_DRIVER_LOADED DriverLoaded; +} EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL; + +//// +// EFI Bus Specific Driver Override Protocol +/// + +#define EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL_GUID {0x3bc1b285,0x8a15,0x4a82, {0xaa,0xbf,0x4d,0x7d,0x13,0xfb,0x32,0x65}} + +typedef struct _EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL; + +typedef +EFI_STATUS +(EFIAPI *EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_GET_DRIVER)( + IN EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL *This, + IN OUT EFI_HANDLE *DriverImageHandle +); + +typedef struct _EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL { + EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_GET_DRIVER GetDriver; +} EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL; + +//// +// EFI Driver Diagnostics Protocol +/// + +#define EFI_DRIVER_DIAGNOSTICS_PROTOCOL_GUID {0x4d330321,0x025f,0x4aac, {0x90,0xd8,0x5e,0xd9,0x00,0x17,0x3b,0x63}} + +typedef struct _EFI_DRIVER_DIAGNOSTICS2_PROTOCOL EFI_DRIVER_DIAGNOSTICS2_PROTOCOL; + +typedef enum { + EfiDriverDiagnosticTypeStandard = 0, + EfiDriverDiagnosticTypeExtended = 1, + EfiDriverDiagnosticTypeManufacturing = 2, + EfiDriverDiagnosticTypeCancel = 3, + EfiDriverDiagnosticTypeMaximum +} EFI_DRIVER_DIAGNOSTIC_TYPE; + +typedef +EFI_STATUS +(EFIAPI *EFI_DRIVER_DIAGNOSTICS2_RUN_DIAGNOSTICS)( + IN EFI_DRIVER_DIAGNOSTICS2_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN EFI_DRIVER_DIAGNOSTIC_TYPE DiagnosticType, + IN CHAR8 *Language, + OUT EFI_GUID **ErrorType, + OUT UINTN *BufferSize, + OUT CHAR16 **Buffer +); + +typedef struct _EFI_DRIVER_DIAGNOSTICS2_PROTOCOL { + EFI_DRIVER_DIAGNOSTICS2_RUN_DIAGNOSTICS RunDiagnostics; + CHAR8 *SupportedLanguages; +} EFI_DRIVER_DIAGNOSTICS2_PROTOCOL; + +//// +// EFI Component Name Protocol +/// + +#define EFI_COMPONENT_NAME2_PROTOCOL_GUID {0x6a7a5cff,0xe8d9,0x4f70, {0xba,0xda,0x75,0xab,0x30,0x25,0xce,0x14}} + +typedef struct _EFI_COMPONENT_NAME2_PROTOCOL EFI_COMPONENT_NAME2_PROTOCOL; + +typedef +EFI_STATUS +(EFIAPI *EFI_COMPONENT_NAME_GET_DRIVER_NAME)( + IN EFI_COMPONENT_NAME2_PROTOCOL *This, + IN CHAR8 *Language, + OUT CHAR16 **DriverName +); + +typedef +EFI_STATUS +(EFIAPI *EFI_COMPONENT_NAME_GET_CONTROLLER_NAME)( + IN EFI_COMPONENT_NAME2_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName +); + +typedef struct _EFI_COMPONENT_NAME2_PROTOCOL { + EFI_COMPONENT_NAME_GET_DRIVER_NAME GetDriverName; + EFI_COMPONENT_NAME_GET_CONTROLLER_NAME GetControllerName; + CHAR8 *SupportedLanguages; +} EFI_COMPONENT_NAME2_PROTOCOL; + +//// +// EFI Service Binding Protocol +/// + +typedef struct _EFI_SERVICE_BINDING_PROTOCOL EFI_SERVICE_BINDING_PROTOCOL; + +typedef +EFI_STATUS +(EFIAPI *EFI_SERVICE_BINDING_CREATE_CHILD)( + IN EFI_SERVICE_BINDING_PROTOCOL *This, + IN OUT EFI_HANDLE *ChildHandle +); + +typedef +EFI_STATUS +(EFIAPI *EFI_SERVICE_BINDING_DESTROY_CHILD)( + IN EFI_SERVICE_BINDING_PROTOCOL *This, + IN EFI_HANDLE ChildHandle +); + +typedef struct _EFI_SERVICE_BINDING_PROTOCOL { + EFI_SERVICE_BINDING_CREATE_CHILD CreateChild; + EFI_SERVICE_BINDING_DESTROY_CHILD DestroyChild; +} EFI_SERVICE_BINDING_PROTOCOL; + +//// +// EFI Platform to Driver Configuration Protocol +/// + +#define EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOCOL_GUID {0x642cd590,0x8059,0x4c0a, {0xa9,0x58,0xc5,0xec,0x07,0xd2,0x3c,0x4b}} +#define EFI_PLATFORM_TO_DRIVER_CONFIGURATION_CLP_GUID {0x345ecc0e,0xcb6,0x4b75, {0xbb,0x57,0x1b,0x12,0x9c,0x47,0x33,0x3e}} + +typedef struct _EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOCOL EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOCOL; + +typedef enum { + EfiPlatformConfigurationActionNone = 0, + EfiPlatformConfigurationActionStopController = 1, + EfiPlatformConfigurationActionRestartController = 2, + EfiPlatformConfigurationActionRestartPlatform = 3, + EfiPlatformConfigurationActionNvramFailed = 4, + EfiPlatformConfigurationActionUnsupportedGuid = 5, + EfiPlatformConfigurationActionMaximum +} EFI_PLATFORM_CONFIGURATION_ACTION; + +typedef struct { + CHAR8 *CLPCommand; + UINT32 CLPCommandLength; + CHAR8 *CLPReturnString; + UINT32 CLPReturnStringLength; + UINT8 CLPCmdStatus; + UINT8 CLPErrorValue; + UINT16 CLPMsgCode; +} EFI_CONFIGURE_CLP_PARAMETER_BLK; + +typedef +EFI_STATUS +(EFIAPI *EFI_PLATFORM_TO_DRIVER_CONFIGURATION_QUERY)( + IN EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN UINTN *Instance, + OUT EFI_GUID **ParameterTypeGuid, + OUT VOID **ParameterBlock, + OUT UINTN *ParameterBlockSize +); + +typedef +EFI_STATUS +(EFIAPI *EFI_PLATFORM_TO_DRIVER_CONFIGURATION_RESPONSE)( + IN EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN UINTN *Instance, + IN EFI_GUID *ParameterTypeGuid, + IN VOID *ParameterBlock, + IN UINTN ParameterBlockSize, + IN EFI_PLATFORM_CONFIGURATION_ACTION ConfigurationAction +); + +typedef struct _EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOCOL { + EFI_PLATFORM_TO_DRIVER_CONFIGURATION_QUERY Query; + EFI_PLATFORM_TO_DRIVER_CONFIGURATION_RESPONSE Response; +} EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOCOL; + +//// +// EFI Driver Supported EFI Version Protocol +/// + +#define EFI_DRIVER_SUPPORTED_EFI_VERSION_PROTOCOL_GUID {0x5c198761,0x16a8,0x4e69, {0x97,0x2c,0x89,0xd6,0x79,0x54,0xf8,0x1d}} + +typedef struct _EFI_DRIVER_SUPPORTED_EFI_VERSION_PROTOCOL EFI_DRIVER_SUPPORTED_EFI_VERSION_PROTOCOL; + +typedef struct _EFI_DRIVER_SUPPORTED_EFI_VERSION_PROTOCOL { + UINT32 Length; + UINT32 FirmwareVersion; +} EFI_DRIVER_SUPPORTED_EFI_VERSION_PROTOCOL; + +//// +// EFI Driver Family Override Protocol +/// + +#define EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL_GUID {0xb1ee129e,0xda36,0x4181, {0x91,0xf8,0x04,0xa4,0x92,0x37,0x66,0xa7}} + +typedef struct _EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL; + +typedef +UINT32 +(EFIAPI *EFI_DRIVER_FAMILY_OVERRIDE_GET_VERSION)( + IN EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL *This +); + +typedef struct _EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL { + EFI_DRIVER_FAMILY_OVERRIDE_GET_VERSION GetVersion; +} EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL; + +//// +// EFI Driver Health Protocol +/// + +#define EFI_DRIVER_HEALTH_PROTOCOL_GUID {0x2a534210,0x9280,0x41d8, {0xae,0x79,0xca,0xda,0x01,0xa2,0xb1,0x27}} + +typedef struct _EFI_DRIVER_HEALTH_PROTOCOL EFI_DRIVER_HEALTH_PROTOCOL; + +typedef enum { + EfiDriverHealthStatusHealthy, + EfiDriverHealthStatusRepairRequired, + EfiDriverHealthStatusConfigurationRequired, + EfiDriverHealthStatusFailed, + EfiDriverHealthStatusReconnectRequired, + EfiDriverHealthStatusRebootRequired +} EFI_DRIVER_HEALTH_STATUS; + +typedef struct { + EFI_HII_HANDLE HiiHandle; + EFI_STRING_ID StringId; + UINT64 MessageCode; +} EFI_DRIVER_HEALTH_HII_MESSAGE; + +typedef +EFI_STATUS +(EFIAPI *EFI_DRIVER_HEALTH_GET_HEALTH_STATUS)( + IN EFI_DRIVER_HEALTH_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle OPTIONAL, + IN EFI_HANDLE ChildHandle OPTIONAL, + OUT EFI_DRIVER_HEALTH_STATUS *HealthStatus, + OUT EFI_DRIVER_HEALTH_HII_MESSAGE **MessageList OPTIONAL, + OUT EFI_HII_HANDLE *FormHiiHandle OPTIONAL +); + +typedef +EFI_STATUS +(EFIAPI *EFI_DRIVER_HEALTH_REPAIR_NOTIFY)( + IN UINTN Value, + IN UINTN Limit +); + +typedef +EFI_STATUS +(EFIAPI *EFI_DRIVER_HEALTH_REPAIR)( + IN EFI_DRIVER_HEALTH_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN EFI_DRIVER_HEALTH_REPAIR_NOTIFY RepairNotify OPTIONAL +); + +typedef struct _EFI_DRIVER_HEALTH_PROTOCOL { + EFI_DRIVER_HEALTH_GET_HEALTH_STATUS GetHealthStatus; + EFI_DRIVER_HEALTH_REPAIR Repair; +} EFI_DRIVER_HEALTH_PROTOCOL; + +//// +// EFI Adapter Information Protocol +/// + +#define EFI_ADAPTER_INFORMATION_PROTOCOL_GUID {0xe5dd1403,0xd622,0xc24e, {0x84,0x88,0xc7,0x1b,0x17,0xf5,0xe8,0x02}} +#define EFI_ADAPTER_INFO_MEDIA_STATE_GUID {0xd7c74207,0xa831,0x4a26, {0xb1,0xf5,0xd1,0x93,0x06,0x5c,0xe8,0xb6}} +#define EFI_ADAPTER_INFO_NETWORK_BOOT_GUID {0x1fbd2960,0x4130,0x41e5,{0x94,0xac,0xd2,0xcf,0x03,0x7f,0xb3,0x7c}} +#define EFI_ADAPTER_INFO_SAN_MAC_ADDRESS_GUID {0x114da5ef,0x2cf1,0x4e12, {0x9b,0xbb,0xc4,0x70,0xb5,0x52,0x05,0xd9}} +#define EFI_ADAPTER_INFO_UNDI_IPV6_SUPPORT_GUID {0x4bd56be3,0x4975,0x4d8a, {0xa0,0xad,0xc4,0x91,0x20,0x4b,0x5d,0x4d}} +#define EFI_ADAPTER_INFO_MEDIA_TYPE_GUID {0x8484472f,0x71ec,0x411a, {0xb3,0x9c,0x62,0xcd,0x94,0xd9,0x91,0x6e}} +#define EFI_ADAPTER_INFO_CDAT_TYPE_GUID {0x77af24d1,0xb6f0,0x42b9, {0x83,0xf5,0x8f,0xe6,0xe8,0x3e,0xb6,0xf0}} + +typedef struct _EFI_ADAPTER_INFORMATION_PROTOCOL EFI_ADAPTER_INFORMATION_PROTOCOL; + +typedef struct { + EFI_STATUS MediaState; +} EFI_ADAPTER_INFO_MEDIA_STATE; + +typedef struct { + BOOLEAN iSsciIpv4BootCapablity; + BOOLEAN iScsiIpv6BootCapablity; + BOOLEAN FCoeBootCapablity; + BOOLEAN OffloadCapability; + BOOLEAN iScsiMpioCapability; + BOOLEAN iScsiIpv4Boot; + BOOLEAN iScsiIpv6Boot; + BOOLEAN FCoeBoot; +} EFI_ADAPTER_INFO_NETWORK_BOOT; + +typedef struct { + EFI_MAC_ADDRESS SanMacAddress; +} EFI_ADAPTER_INFO_SAN_MAC_ADDRESS; + +typedef struct { + BOOLEAN Ipv6Support; +} EFI_ADAPTER_INFO_UNDI_IPV6_SUPPORT; + +typedef struct { + UINT8 MediaType; +} EFI_ADAPTER_INFO_MEDIA_TYPE; + +typedef struct { + UINTN CdatSize; + UINT8 Cdat[]; +} EFI_ADAPTER_INFO_CDAT_TYPE_TYPE; + +typedef +EFI_STATUS +(EFIAPI *EFI_ADAPTER_INFO_GET_INFO)( + IN EFI_ADAPTER_INFORMATION_PROTOCOL *This, + IN EFI_GUID *InformationType, + OUT VOID **InformationBlock, + OUT UINTN *InformationBlockSize +); + +typedef +EFI_STATUS +(EFIAPI *EFI_ADAPTER_INFO_SET_INFO)( + IN EFI_ADAPTER_INFORMATION_PROTOCOL *This, + IN EFI_GUID *InformationType, + IN VOID *InformationBlock, + IN UINTN InformationBlockSize +); + +typedef +EFI_STATUS +(EFIAPI *EFI_ADAPTER_INFO_GET_SUPPORTED_TYPES)( + IN EFI_ADAPTER_INFORMATION_PROTOCOL *This, + OUT EFI_GUID **InfoTypesBuffer, + OUT UINTN *InfoTypesBufferCount +); + +typedef struct _EFI_ADAPTER_INFORMATION_PROTOCOL { + EFI_ADAPTER_INFO_GET_INFO GetInformation; + EFI_ADAPTER_INFO_SET_INFO SetInformation; + EFI_ADAPTER_INFO_GET_SUPPORTED_TYPES GetSupportedTypes; +} EFI_ADAPTER_INFORMATION_PROTOCOL; + +#endif /* EFI_PROTOCOLS_UEFI_DRIVER_MODEL_H */