aboutsummaryrefslogtreecommitdiff
path: root/src/vendorcode/intel/edk2/UDK2017/MdePkg/Include/Protocol/ExtendedSalBootService.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/vendorcode/intel/edk2/UDK2017/MdePkg/Include/Protocol/ExtendedSalBootService.h')
-rw-r--r--src/vendorcode/intel/edk2/UDK2017/MdePkg/Include/Protocol/ExtendedSalBootService.h214
1 files changed, 214 insertions, 0 deletions
diff --git a/src/vendorcode/intel/edk2/UDK2017/MdePkg/Include/Protocol/ExtendedSalBootService.h b/src/vendorcode/intel/edk2/UDK2017/MdePkg/Include/Protocol/ExtendedSalBootService.h
new file mode 100644
index 0000000000..167201d85a
--- /dev/null
+++ b/src/vendorcode/intel/edk2/UDK2017/MdePkg/Include/Protocol/ExtendedSalBootService.h
@@ -0,0 +1,214 @@
+/** @file
+ Definition of Extended SAL Boot Service Protocol
+
+ The Extended SAL Boot Service Protocol provides a mechanisms for platform specific
+ drivers to update the SAL System Table and register Extended SAL Procedures that are
+ callable in physical or virtual mode using the SAL calling convention.
+
+ Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR>
+ This program and the accompanying materials
+ are licensed and made available under the terms and conditions of the BSD License
+ which accompanies this distribution. The full text of the license may be found at
+ http://opensource.org/licenses/bsd-license.php
+
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+**/
+
+#ifndef _EXTENDED_SAL_BOOT_SERVICE_PROTOCOL_H_
+#define _EXTENDED_SAL_BOOT_SERVICE_PROTOCOL_H_
+
+#include <IndustryStandard/Sal.h>
+
+#define EXTENDED_SAL_BOOT_SERVICE_PROTOCOL_GUID \
+ { 0xde0ee9a4, 0x3c7a, 0x44f2, {0xb7, 0x8b, 0xe3, 0xcc, 0xd6, 0x9c, 0x3a, 0xf7 } }
+
+typedef struct _EXTENDED_SAL_BOOT_SERVICE_PROTOCOL EXTENDED_SAL_BOOT_SERVICE_PROTOCOL;
+
+/**
+ Adds platform specific information to the to the header of the SAL System Table.
+
+ @param This A pointer to the EXTENDED_SAL_BOOT_SERVICE_PROTOCOL instance.
+ @param SalAVersion Version of recovery SAL PEIM(s) in BCD format. Higher byte contains
+ the major revision and the lower byte contains the minor revision.
+ @param SalBVersion Version of DXE SAL Driver in BCD format. Higher byte contains
+ the major revision and the lower byte contains the minor revision.
+ @param OemId A pointer to a Null-terminated ASCII string that contains OEM unique string.
+ The string cannot be longer than 32 bytes in total length
+ @param ProductId A pointer to a Null-terminated ASCII string that uniquely identifies a family of
+ compatible products. The string cannot be longer than 32 bytes in total length.
+
+ @retval EFI_SUCCESS The SAL System Table header was updated successfully.
+ @retval EFI_INVALID_PARAMETER OemId is NULL.
+ @retval EFI_INVALID_PARAMETER ProductId is NULL.
+ @retval EFI_INVALID_PARAMETER The length of OemId is greater than 32 characters.
+ @retval EFI_INVALID_PARAMETER The length of ProductId is greater than 32 characters.
+
+**/
+typedef
+EFI_STATUS
+(EFIAPI *EXTENDED_SAL_ADD_SST_INFO)(
+ IN EXTENDED_SAL_BOOT_SERVICE_PROTOCOL *This,
+ IN UINT16 SalAVersion,
+ IN UINT16 SalBVersion,
+ IN CHAR8 *OemId,
+ IN CHAR8 *ProductId
+ );
+
+/**
+ Adds an entry to the SAL System Table.
+
+ This function adds the SAL System Table Entry specified by TableEntry and EntrySize
+ to the SAL System Table.
+
+ @param This A pointer to the EXTENDED_SAL_BOOT_SERVICE_PROTOCOL instance.
+ @param TableEntry Pointer to a buffer containing a SAL System Table entry that is EntrySize bytes
+ in length. The first byte of the TableEntry describes the type of entry.
+ @param EntrySize The size, in bytes, of TableEntry.
+
+ @retval EFI_SUCCESSThe SAL System Table was updated successfully.
+ @retval EFI_INVALID_PARAMETER TableEntry is NULL.
+ @retval EFI_INVALID_PARAMETER TableEntry specifies an invalid entry type.
+ @retval EFI_INVALID_PARAMETER EntrySize is not valid for this type of entry.
+
+**/
+typedef
+EFI_STATUS
+(EFIAPI *EXTENDED_SAL_ADD_SST_ENTRY)(
+ IN EXTENDED_SAL_BOOT_SERVICE_PROTOCOL *This,
+ IN UINT8 *TableEntry,
+ IN UINTN EntrySize
+ );
+
+/**
+ Internal ESAL procedures.
+
+ This is prototype of internal Extended SAL procedures, which is registerd by
+ EXTENDED_SAL_REGISTER_INTERNAL_PROC service.
+
+ @param FunctionId The Function ID associated with this Extended SAL Procedure.
+ @param Arg2 Second argument to the Extended SAL procedure.
+ @param Arg3 Third argument to the Extended SAL procedure.
+ @param Arg4 Fourth argument to the Extended SAL procedure.
+ @param Arg5 Fifth argument to the Extended SAL procedure.
+ @param Arg6 Sixth argument to the Extended SAL procedure.
+ @param Arg7 Seventh argument to the Extended SAL procedure.
+ @param Arg8 Eighth argument to the Extended SAL procedure.
+ @param VirtualMode TRUE if the Extended SAL Procedure is being invoked in virtual mode.
+ FALSE if the Extended SAL Procedure is being invoked in physical mode.
+ @param ModuleGlobal A pointer to the global context associated with this Extended SAL Procedure.
+
+ @return The result returned from the specified Extended SAL Procedure
+
+**/
+typedef
+SAL_RETURN_REGS
+(EFIAPI *SAL_INTERNAL_EXTENDED_SAL_PROC)(
+ IN UINT64 FunctionId,
+ IN UINT64 Arg2,
+ IN UINT64 Arg3,
+ IN UINT64 Arg4,
+ IN UINT64 Arg5,
+ IN UINT64 Arg6,
+ IN UINT64 Arg7,
+ IN UINT64 Arg8,
+ IN BOOLEAN VirtualMode,
+ IN VOID *ModuleGlobal OPTIONAL
+ );
+
+/**
+ Registers an Extended SAL Procedure.
+
+ The Extended SAL Procedure specified by InternalSalProc and named by ClassGuidLo,
+ ClassGuidHi, and FunctionId is added to the set of available Extended SAL Procedures.
+
+ @param This A pointer to the EXTENDED_SAL_BOOT_SERVICE_PROTOCOL instance.
+ @param ClassGuidLo The lower 64-bits of the class GUID for the Extended SAL Procedure being added.
+ Each class GUID contains one or more functions specified by a Function ID.
+ @param ClassGuidHi The upper 64-bits of the class GUID for the Extended SAL Procedure being added.
+ Each class GUID contains one or more functions specified by a Function ID.
+ @param FunctionId The Function ID for the Extended SAL Procedure that is being added. This Function
+ ID is a member of the Extended SAL Procedure class specified by ClassGuidLo
+ and ClassGuidHi.
+ @param InternalSalProc A pointer to the Extended SAL Procedure being added.
+ @param PhysicalModuleGlobal Pointer to a module global structure. This is a physical mode pointer.
+ This pointer is passed to the Extended SAL Procedure specified by ClassGuidLo,
+ ClassGuidHi, FunctionId, and InternalSalProc. If the system is in physical mode,
+ then this pointer is passed unmodified to InternalSalProc. If the system is in
+ virtual mode, then the virtual address associated with this pointer is passed to
+ InternalSalProc.
+
+ @retval EFI_SUCCESS The Extended SAL Procedure was added.
+ @retval EFI_OUT_OF_RESOURCES There are not enough resources available to add the Extended SAL Procedure.
+
+**/
+typedef
+EFI_STATUS
+(EFIAPI *EXTENDED_SAL_REGISTER_INTERNAL_PROC)(
+ IN EXTENDED_SAL_BOOT_SERVICE_PROTOCOL *This,
+ IN UINT64 ClassGuidLo,
+ IN UINT64 ClassGuidHi,
+ IN UINT64 FunctionId,
+ IN SAL_INTERNAL_EXTENDED_SAL_PROC InternalSalProc,
+ IN VOID *PhysicalModuleGlobal OPTIONAL
+ );
+
+/**
+ Calls a previously registered Extended SAL Procedure.
+
+ This function calls the Extended SAL Procedure specified by ClassGuidLo, ClassGuidHi,
+ and FunctionId. The set of previously registered Extended SAL Procedures is searched for a
+ matching ClassGuidLo, ClassGuidHi, and FunctionId. If a match is not found, then
+ EFI_SAL_NOT_IMPLEMENTED is returned.
+
+ @param ClassGuidLo The lower 64-bits of the class GUID for the Extended SAL Procedure
+ that is being called.
+ @param ClassGuidHi The upper 64-bits of the class GUID for the Extended SAL Procedure
+ that is being called.
+ @param FunctionId Function ID for the Extended SAL Procedure being called.
+ @param Arg2 Second argument to the Extended SAL procedure.
+ @param Arg3 Third argument to the Extended SAL procedure.
+ @param Arg4 Fourth argument to the Extended SAL procedure.
+ @param Arg5 Fifth argument to the Extended SAL procedure.
+ @param Arg6 Sixth argument to the Extended SAL procedure.
+ @param Arg7 Seventh argument to the Extended SAL procedure.
+ @param Arg8 Eighth argument to the Extended SAL procedure.
+
+ @retval EFI_SAL_NOT_IMPLEMENTED The Extended SAL Procedure specified by ClassGuidLo,
+ ClassGuidHi, and FunctionId has not been registered.
+ @retval EFI_SAL_VIRTUAL_ADDRESS_ERROR This function was called in virtual mode before virtual mappings
+ for the specified Extended SAL Procedure are available.
+ @retval Other The result returned from the specified Extended SAL Procedure
+
+**/
+typedef
+SAL_RETURN_REGS
+(EFIAPI *EXTENDED_SAL_PROC)(
+ IN UINT64 ClassGuidLo,
+ IN UINT64 ClassGuidHi,
+ IN UINT64 FunctionId,
+ IN UINT64 Arg2,
+ IN UINT64 Arg3,
+ IN UINT64 Arg4,
+ IN UINT64 Arg5,
+ IN UINT64 Arg6,
+ IN UINT64 Arg7,
+ IN UINT64 Arg8
+ );
+
+///
+/// The EXTENDED_SAL_BOOT_SERVICE_PROTOCOL provides a mechanisms for platform specific
+/// drivers to update the SAL System Table and register Extended SAL Procedures that are
+/// callable in physical or virtual mode using the SAL calling convention.
+///
+struct _EXTENDED_SAL_BOOT_SERVICE_PROTOCOL {
+ EXTENDED_SAL_ADD_SST_INFO AddSalSystemTableInfo;
+ EXTENDED_SAL_ADD_SST_ENTRY AddSalSystemTableEntry;
+ EXTENDED_SAL_REGISTER_INTERNAL_PROC RegisterExtendedSalProc;
+ EXTENDED_SAL_PROC ExtendedSalProc;
+};
+
+extern EFI_GUID gEfiExtendedSalBootServiceProtocolGuid;
+
+#endif