libsefi/protocols/uefi_driver_model.h
2024-03-30 00:02:42 +01:00

419 lines
12 KiB
C

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