From 3e5a3960f8b99d0dcfa1c769161135a394336443 Mon Sep 17 00:00:00 2001 From: vanjeff Date: Wed, 27 Jun 2007 05:49:17 +0000 Subject: [PATCH] add some framework definitions git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2776 6f19259b-4bc3-4df7-8a09-765794883524 --- .../Include/Ppi/ReadOnlyVariable.h | 120 ++++++++++ .../Include/Ppi/SectionExtraction.h | 108 +++++++++ IntelFrameworkPkg/Include/Ppi/Security.h | 73 +++++++ .../Include/Protocol/AcpiS3Save.h | 61 ++++++ .../Include/Protocol/FirmwareVolumeDispatch.h | 33 +++ .../Include/Protocol/FormCallback.h | 206 ++++++++++++++++++ .../Protocol/GuidedSectionExtraction.h | 102 +++++++++ IntelFrameworkPkg/IntelFrameworkPkg.dec | 26 +++ IntelFrameworkPkg/IntelFrameworkPkg.nspd | 40 ++++ 9 files changed, 769 insertions(+) create mode 100644 IntelFrameworkPkg/Include/Ppi/ReadOnlyVariable.h create mode 100644 IntelFrameworkPkg/Include/Ppi/SectionExtraction.h create mode 100644 IntelFrameworkPkg/Include/Ppi/Security.h create mode 100644 IntelFrameworkPkg/Include/Protocol/AcpiS3Save.h create mode 100644 IntelFrameworkPkg/Include/Protocol/FirmwareVolumeDispatch.h create mode 100644 IntelFrameworkPkg/Include/Protocol/FormCallback.h create mode 100644 IntelFrameworkPkg/Include/Protocol/GuidedSectionExtraction.h diff --git a/IntelFrameworkPkg/Include/Ppi/ReadOnlyVariable.h b/IntelFrameworkPkg/Include/Ppi/ReadOnlyVariable.h new file mode 100644 index 0000000000..ee00e14147 --- /dev/null +++ b/IntelFrameworkPkg/Include/Ppi/ReadOnlyVariable.h @@ -0,0 +1,120 @@ +/** @file + This file declares Read-only Variable Service PPI + + Copyright (c) 2006, Intel Corporation + All rights reserved. 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. + + Module Name: ReadOnlyVariable.h + + @par Revision Reference: + This PPI is defined in PEI CIS + Version 0.91. + +**/ + +#ifndef __PEI_READ_ONLY_VARIABLE_PPI_H__ +#define __PEI_READ_ONLY_VARIABLE_PPI_H__ + +#define EFI_PEI_READ_ONLY_VARIABLE_ACCESS_PPI_GUID \ + { \ + 0x3cdc90c6, 0x13fb, 0x4a75, {0x9e, 0x79, 0x59, 0xe9, 0xdd, 0x78, 0xb9, 0xfa } \ + } + +typedef struct _EFI_PEI_READ_ONLY_VARIABLE_PPI EFI_PEI_READ_ONLY_VARIABLE_PPI; + +// +// Variable attributes +// +#define EFI_VARIABLE_NON_VOLATILE 0x00000001 +#define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x00000002 +#define EFI_VARIABLE_RUNTIME_ACCESS 0x00000004 +#define EFI_VARIABLE_READ_ONLY 0x00000008 + +/** + Get Variable value by Name and GUID pair + + @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. + @param VariableName A NULL-terminated Unicode string that is the name of the vendor's variable. + @param VendorGuid A unique identifier for the vendor. + @param Attributes If not NULL, a pointer to the memory location to return + the attributes bitmask for the variable. + @param DataSize On input, the size in bytes of the return Data buffer. + On output, the size of data returned in Data. + @param Data The buffer to return the contents of the variable. + + @retval EFI_SUCCESS The function completed successfully. + @retval EFI_NOT_FOUND The variable was not found. + @retval EFI_BUFFER_TOO_SMALL The BufferSize is too small for the result. + @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value. + @retval EFI_DEVICE_ERROR The variable could not be retrieved due to a hardware error. + +**/ +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_GET_VARIABLE) ( + IN EFI_PEI_SERVICES **PeiServices, + IN CHAR16 *VariableName, + IN EFI_GUID *VendorGuid, + OUT UINT32 *Attributes OPTIONAL, + IN OUT UINTN *DataSize, + OUT VOID *Data + ); + +/** + This function can be called multiple times to retrieve the VariableName + and VendorGuid of all variables currently available in the system. On each call + to GetNextVariableName() the previous results are passed into the interface, + and on output the interface returns the next variable name data. When the + entire variable list has been returned, the error EFI_NOT_FOUND is returned. + + @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. + @param VariableNameSize The size of the VariableName buffer. + @param VariableName On input, supplies the last VariableName that was + returned by GetNextVariableName(). On output, returns the Null-terminated + Unicode string of the current variable. + @param VendorGuid On input, supplies the last VendorGuid that was + returned by GetNextVariableName(). On output, returns the VendorGuid + of the current variable. + + @retval EFI_SUCCESS The function completed successfully. + @retval EFI_NOT_FOUND The next variable was not found. + @retval EFI_BUFFER_TOO_SMALL The VariableNameSize is too small for the result. + @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value. + @retval EFI_DEVICE_ERROR The variable name could not be retrieved due to a hardware error. + +**/ +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_GET_NEXT_VARIABLE_NAME) ( + IN EFI_PEI_SERVICES **PeiServices, + IN OUT UINTN *VariableNameSize, + IN OUT CHAR16 *VariableName, + IN OUT EFI_GUID *VendorGuid + ); + +/** + @par Ppi Description: + This PPI provides a lightweight, read-only variant of the full EFI + variable services. + + @param GetVariable + A service to ascertain a given variable name. + + @param GetNextVariableName + A service to ascertain a variable based upon a given, known variable + +**/ +struct _EFI_PEI_READ_ONLY_VARIABLE_PPI { + EFI_PEI_GET_VARIABLE PeiGetVariable; + EFI_PEI_GET_NEXT_VARIABLE_NAME PeiGetNextVariableName; +}; + +extern EFI_GUID gEfiPeiReadOnlyVariablePpiGuid; + +#endif diff --git a/IntelFrameworkPkg/Include/Ppi/SectionExtraction.h b/IntelFrameworkPkg/Include/Ppi/SectionExtraction.h new file mode 100644 index 0000000000..fb95f6065a --- /dev/null +++ b/IntelFrameworkPkg/Include/Ppi/SectionExtraction.h @@ -0,0 +1,108 @@ +/** @file + This file declares Section Extraction PPI. + + Copyright (c) 2006, Intel Corporation + All rights reserved. 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. + + Module Name: SectionExtraction.h + + @par Revision Reference: + This PPI is defined in PEI CIS. + Version 0.91. + +**/ + +#ifndef __SECTION_EXTRACTION_PPI_H__ +#define __SECTION_EXTRACTION_PPI_H__ + +#define EFI_PEI_SECTION_EXTRACTION_PPI_GUID \ + { \ + 0x4F89E208, 0xE144, 0x4804, {0x9E, 0xC8, 0x0F, 0x89, 0x4F, 0x7E, 0x36, 0xD7 } \ + } + +typedef struct _EFI_PEI_SECTION_EXTRACTION_PPI EFI_PEI_SECTION_EXTRACTION_PPI; + +// +// Bit values for AuthenticationStatus +// +#define EFI_PEI_AUTH_STATUS_PLATFORM_OVERRIDE 0x01 +#define EFI_PEI_AUTH_STATUS_IMAGE_SIGNED 0x02 +#define EFI_PEI_AUTH_STATUS_NOT_TESTED 0x04 +#define EFI_PEI_AUTH_STATUS_TEST_FAILED 0x08 + +/** + The function is used to retrieve a section from within a section file. + It will retrieve both encapsulation sections and leaf sections in their entirety, + exclusive of the section header. + + @param PeiServices Pointer to the PEI Services Table. + @param This Indicates the calling context + @param SectionType Pointer to an EFI_SECTION_TYPE. If SectionType == NULL, + the contents of the entire section are returned in Buffer. If SectionType + is not NULL, only the requested section is returned. + @param SectionDefinitionGuid + Pointer to an EFI_GUID. + If SectionType == EFI_SECTION_GUID_DEFINED, SectionDefinitionGuid + indicates for which section GUID to search. + If SectionType != EFI_SECTION_GUID_DEFINED, SectionDefinitionGuid + is unused and is ignored. + @param SectionInstance If SectionType is not NULL, indicates which + instance of the requested section type to return. + @param Buffer Pointer to a pointer to a buffer in which the section + contents are returned. + @param BufferSize A pointer to a caller-allocated UINT32.On input, *BufferSize + indicates the size in bytes of the memory region pointed to by Buffer.On output, + *BufferSize contains the number of bytes required to read the section. + @param AuthenticationStatus + A pointer to a caller-allocated UINT32 in + which any metadata from encapsulating GUID-defined sections is returned. + + @retval EFI_SUCCESS The section was successfully processed and the section + contents were returned in Buffer. + @retval EFI_PROTOCOL_ERROR A GUID-defined section was encountered in + the file with its EFI_GUIDED_SECTION_PROCESSING_REQUIRED bit set, but + there was no corresponding GUIDed Section Extraction Protocol in the + handle database.*Buffer is unmodified. + @retval EFI_NOT_FOUND The requested section does not exist.*Buffer is unmodified. + @retval EFI_OUT_OF_RESOURCES The system has insufficient resources to process the request. + @retval EFI_INVALID_PARAMETER The SectionStreamHandle does not exist. + @retval EFI_WARN_TOO_SMALL The size of the input buffer is insufficient to + contain the requested section. The input buffer is filled and contents are + section contents are truncated. + +**/ +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_GET_SECTION) ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_PEI_SECTION_EXTRACTION_PPI *This, + IN EFI_SECTION_TYPE *SectionType, + IN EFI_GUID *SectionDefinitionGuid, OPTIONAL + IN UINTN SectionInstance, + IN VOID **Buffer, + IN OUT UINT32 *BufferSize, + OUT UINT32 *AuthenticationStatus + ); + +/** + @par Ppi Description: + This PPI supports encapsulating sections, such as GUIDed sections used to + authenticate the file encapsulation of other domain-specific wrapping. + + @param GetSection + Retrieves a section from within a section file. + +**/ +struct _EFI_PEI_SECTION_EXTRACTION_PPI { + EFI_PEI_GET_SECTION PeiGetSection; +}; + +extern EFI_GUID gEfiPeiSectionExtractionPpiGuid; + +#endif diff --git a/IntelFrameworkPkg/Include/Ppi/Security.h b/IntelFrameworkPkg/Include/Ppi/Security.h new file mode 100644 index 0000000000..0be9b4a32d --- /dev/null +++ b/IntelFrameworkPkg/Include/Ppi/Security.h @@ -0,0 +1,73 @@ +/** @file + This file declares Security Architectural PPI. + + Copyright (c) 2006, Intel Corporation + All rights reserved. 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. + + Module Name: Security.h + + @par Revision Reference: + This PPI is defined in PEI CIS. + Version 0.91. + +**/ + +#ifndef __SECURITY_PPI_H__ +#define __SECURITY_PPI_H__ + +#define EFI_PEI_SECURITY_PPI_GUID \ + { \ + 0x1388066e, 0x3a57, 0x4efa, {0x98, 0xf3, 0xc1, 0x2f, 0x3a, 0x95, 0x8a, 0x29 } \ + } + +typedef struct _EFI_PEI_SECURITY_PPI EFI_PEI_SECURITY_PPI; + +/** + Allows the platform builder to implement a security policy in response + to varying file authentication states. + + @param PeiServices Pointer to the PEI Services Table. + @param This Interface pointer that implements the particular EFI_PEI_SECURITY_PPI instance. + @param AuthenticationStatus + Status returned by the verification service as part of section extraction. + @param FfsFileHeader Pointer to the file under review. + @param DeferExecution Pointer to a variable that alerts the PEI Foundation to defer execution of a PEIM. + + @retval EFI_SUCCESS The service performed its action successfully. + @retval EFI_SECURITY_VIOLATION The object cannot be trusted + +**/ +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_SECURITY_AUTHENTICATION_STATE) ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_PEI_SECURITY_PPI *This, + IN UINT32 AuthenticationStatus, + IN EFI_FFS_FILE_HEADER *FfsFileHeader, + IN OUT BOOLEAN *StartCrisisRecovery + ); + +/** + @par Ppi Description: + This PPI is installed by some platform PEIM that abstracts the security + policy to the PEI Foundation, namely the case of a PEIM's authentication + state being returned during the PEI section extraction process. + + @param AuthenticationState + Allows the platform builder to implement a security policy in response + to varying file authentication states. + +**/ +struct _EFI_PEI_SECURITY_PPI { + EFI_PEI_SECURITY_AUTHENTICATION_STATE AuthenticationState; +}; + +extern EFI_GUID gEfiPeiSecurityPpiGuid; + +#endif diff --git a/IntelFrameworkPkg/Include/Protocol/AcpiS3Save.h b/IntelFrameworkPkg/Include/Protocol/AcpiS3Save.h new file mode 100644 index 0000000000..1571e3dcd2 --- /dev/null +++ b/IntelFrameworkPkg/Include/Protocol/AcpiS3Save.h @@ -0,0 +1,61 @@ +/*++ + +Copyright (c) 2006, Intel Corporation +All rights reserved. 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. + +Module Name: + + AcpiS3Save.h + +Abstract: + + +--*/ + +#ifndef _ACPI_S3_SAVE_PROTOCOL_H +#define _ACPI_S3_SAVE_PROTOCOL_H + +// +// Forward reference for pure ANSI compatability +// +typedef struct _EFI_ACPI_S3_SAVE_PROTOCOL EFI_ACPI_S3_SAVE_PROTOCOL; + +// +// S3 Save Protocol GUID +// +#define EFI_ACPI_S3_SAVE_GUID \ + { \ + 0x125f2de1, 0xfb85, 0x440c, {0xa5, 0x4c, 0x4d, 0x99, 0x35, 0x8a, 0x8d, 0x38 } \ + } + +// +// Protocol Data Structures +// +typedef +EFI_STATUS +(EFIAPI *EFI_ACPI_S3_SAVE) ( + IN EFI_ACPI_S3_SAVE_PROTOCOL * This, + IN VOID * LegacyMemoryAddress + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_ACPI_GET_LEGACY_MEMORY_SIZE) ( + IN EFI_ACPI_S3_SAVE_PROTOCOL * This, + OUT UINTN * Size +); + +struct _EFI_ACPI_S3_SAVE_PROTOCOL { + EFI_ACPI_GET_LEGACY_MEMORY_SIZE GetLegacyMemorySize; + EFI_ACPI_S3_SAVE S3Save; +}; + +extern EFI_GUID gEfiAcpiS3SaveProtocolGuid; + +#endif diff --git a/IntelFrameworkPkg/Include/Protocol/FirmwareVolumeDispatch.h b/IntelFrameworkPkg/Include/Protocol/FirmwareVolumeDispatch.h new file mode 100644 index 0000000000..249a476b77 --- /dev/null +++ b/IntelFrameworkPkg/Include/Protocol/FirmwareVolumeDispatch.h @@ -0,0 +1,33 @@ +/** @file + This file declares Firmware Volume Dispatch protocol. + + Presence of this protocol tells the dispatch to dispatch from this Firmware + Volume + + Copyright (c) 2006, Intel Corporation + All rights reserved. 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. + + Module Name: FirmwareVolumeDispatch.h + + @par Revision Reference: + This protol will be defined in DXE CIS Spec. + Version 0.91C. + +**/ + +#ifndef __FIRMWARE_VOLUME_DISPATCH_H__ +#define __FIRMWARE_VOLUME_DISPATCH_H__ + +#define EFI_FIRMWARE_VOLUME_DISPATCH_PROTOCOL_GUID \ + { 0x7aa35a69, 0x506c, 0x444f, {0xa7, 0xaf, 0x69, 0x4b, 0xf5, 0x6f, 0x71, 0xc8 } } + + +extern EFI_GUID gEfiFirmwareVolumeDispatchProtocolGuid; + +#endif diff --git a/IntelFrameworkPkg/Include/Protocol/FormCallback.h b/IntelFrameworkPkg/Include/Protocol/FormCallback.h new file mode 100644 index 0000000000..8845864be3 --- /dev/null +++ b/IntelFrameworkPkg/Include/Protocol/FormCallback.h @@ -0,0 +1,206 @@ +/** @file + The EFI_FORM_CALLBACK_PROTOCOL is the defined interface for access to custom + NV storage devices as well as communication of user selections in a more + interactive environment. This protocol should be published by hardware + specific drivers which want to export access to custom hardware storage or + publish IFR which has a requirement to call back the original driver. + + Copyright (c) 2006, Intel Corporation + All rights reserved. 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. + + Module Name: FormCallback.h + + @par Revision Reference: + This protocol is defined in HII spec 0.92. + +**/ + +#ifndef __FORM_CALLBACK_H__ +#define __FORM_CALLBACK_H__ + + +#define EFI_FORM_CALLBACK_PROTOCOL_GUID \ + { \ + 0xf3e4543d, 0xcf35, 0x6cef, {0x35, 0xc4, 0x4f, 0xe6, 0x34, 0x4d, 0xfc, 0x54 } \ + } + +// +// Forward reference for pure ANSI compatability +// +typedef struct _EFI_FORM_CALLBACK_PROTOCOL EFI_FORM_CALLBACK_PROTOCOL; + + +#define RESET_REQUIRED 1 // Flags setting to signify that the callback operation resulted in an eventual +// reset to be done upon exit of the browser +// +#define EXIT_REQUIRED 2 // Flags setting to signify that after the processing of the callback results - exit the browser +#define SAVE_REQUIRED 4 // Flags setting to signify that after the processing of the callback results - save the NV data +#define NV_CHANGED 8 // Flags setting to signify that after the processing of the callback results - turn the NV flag on +#define NV_NOT_CHANGED 16 // Flags setting to signify that after the processing of the callback results - turn the NV flag off +#pragma pack(1) +typedef struct { + UINT8 OpCode; // Likely a string, numeric, or one-of + UINT8 Length; // Length of the EFI_IFR_DATA_ENTRY packet + UINT16 Flags; // Flags settings to determine what behavior is desired from the browser after the callback + VOID *Data; // The data in the form based on the op-code type - this is not a pointer to the data, the data follows immediately + // If the OpCode is a OneOf or Numeric type - Data is a UINT16 value + // If the OpCode is a String type - Data is a CHAR16[x] type + // If the OpCode is a Checkbox type - Data is a UINT8 value + // If the OpCode is a NV Access type - Data is a EFI_IFR_NV_DATA structure + // +} EFI_IFR_DATA_ENTRY; + +typedef struct { + VOID *NvRamMap; // If the flag of the op-code specified retrieval of a copy of the NVRAM map, + // this is a pointer to a buffer copy + // + UINT32 EntryCount; // How many EFI_IFR_DATA_ENTRY entries + // + // EFI_IFR_DATA_ENTRY Data[1]; // The in-line Data entries. + // +} EFI_IFR_DATA_ARRAY; + +typedef union { + EFI_IFR_DATA_ARRAY DataArray; // Primarily used by those who call back to their drivers and use HII as a repository + EFI_IFR_PACKET DataPacket; // Primarily used by those which do not use HII as a repository + CHAR16 *String; // If returning an error - fill the string with null-terminated contents +} EFI_HII_CALLBACK_PACKET; + +typedef struct { + EFI_IFR_OP_HEADER Header; + UINT16 QuestionId; // Offset into the map + UINT8 StorageWidth; // Width of the value + // + // CHAR8 Data[1]; // The Data itself + // +} EFI_IFR_NV_DATA; + +#pragma pack() +// +// The following types are currently defined: +// +/** + Returns the value of a variable. + + @param This A pointer to the EFI_FORM_CALLBACK_PROTOCOL instance. + @param VariableName A NULL-terminated Unicode string that is the + name of the vendor's variable. + @param VendorGuid A unique identifier for the vendor. + @param Attributes If not NULL, a pointer to the memory location to + return the attribute's bit-mask for the variable. + @param DataSize The size in bytes of the Buffer. A size of zero causes + the variable to be deleted. + @param Buffer The buffer to return the contents of the variable. + + @retval EFI_SUCCESS The function completed successfully. + @retval EFI_NOT_FOUND The variable was not found. + @retval EFI_BUFFER_TOO_SMALL The DataSize is too small for the result. + DataSize has been updated with the size needed to complete the request. + @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value. + @retval EFI_DEVICE_ERROR The variable could not be saved due to a hardware failure. + +**/ +typedef +EFI_STATUS +(EFIAPI *EFI_NV_READ) ( + IN EFI_FORM_CALLBACK_PROTOCOL *This, + IN CHAR16 *VariableName, + IN EFI_GUID *VendorGuid, + OUT UINT32 *Attributes OPTIONAL, + IN OUT UINTN *DataSize, + OUT VOID *Buffer + ); + +/** + Sets the value of a variable. + + @param This A pointer to the EFI_FORM_CALLBACK_PROTOCOL instance. + @param VariableName A NULL-terminated Unicode string that is the + name of the vendor's variable. Each VariableName is unique for each VendorGuid. + @param VendorGuid A unique identifier for the vendor. + @param Attributes Attributes bit-mask to set for the variable. + @param DataSize The size in bytes of the Buffer. A size of zero causes + the variable to be deleted. + @param Buffer The buffer containing the contents of the variable. + @param ResetRequired Returns a value from the driver that abstracts + this information and will enable a system to know if a system reset + is required to achieve the configuration changes being enabled through + this function. + + @retval EFI_SUCCESS The firmware has successfully stored the variable and + its data as defined by the Attributes. + @retval EFI_OUT_OF_RESOURCES Not enough storage is available to hold + the variable and its data. + @retval EFI_INVALID_PARAMETER An invalid combination of Attributes bits + was supplied, or the DataSize exceeds the maximum allowed. + @retval EFI_DEVICE_ERROR The variable could not be saved due to a hardware failure. + +**/ +typedef +EFI_STATUS +(EFIAPI *EFI_NV_WRITE) ( + IN EFI_FORM_CALLBACK_PROTOCOL *This, + IN CHAR16 *VariableName, + IN EFI_GUID *VendorGuid, + IN UINT32 Attributes, + IN UINTN DataSize, + IN VOID *Buffer, + OUT BOOLEAN *ResetRequired + ); + +/** + This function is called to provide results data to the driver. + + @param This A pointer to the EFI_FORM_CALLBACK_PROTOCOL instance. + @param KeyValue A unique value which is sent to the original exporting + driver so that it can identify the type of data to expect. The format of + the data tends to vary based on the opcode that generated the callback. + @param Data A pointer to the data being sent to the original exporting driver. + @param Packet A pointer to a packet of information which a driver passes + back to the browser. + + @return Status Code + +**/ +typedef +EFI_STATUS +(EFIAPI *EFI_FORM_CALLBACK) ( + IN EFI_FORM_CALLBACK_PROTOCOL *This, + IN UINT16 KeyValue, + IN EFI_IFR_DATA_ARRAY *Data, + OUT EFI_HII_CALLBACK_PACKET **Packet + ); + +/** + @par Protocol Description: + The EFI_FORM_CALLBACK_PROTOCOL is the defined interface for access to + custom NVS devices as well as communication of user selections in a more + interactive environment. This protocol should be published by hardware-specific + drivers that want to export access to custom hardware storage or publish IFR + that has a requirement to call back the original driver. + + @param NvRead + The read operation to access the NV data serviced by a hardware-specific driver. + + @param NvWrite + The write operation to access the NV data serviced by a hardware-specific driver. + + @param Callback + The function that is called from the configuration browser to communicate key value pairs. + +**/ +struct _EFI_FORM_CALLBACK_PROTOCOL { + EFI_NV_READ NvRead; + EFI_NV_WRITE NvWrite; + EFI_FORM_CALLBACK Callback; +}; + +extern EFI_GUID gEfiFormCallbackProtocolGuid; + +#endif diff --git a/IntelFrameworkPkg/Include/Protocol/GuidedSectionExtraction.h b/IntelFrameworkPkg/Include/Protocol/GuidedSectionExtraction.h new file mode 100644 index 0000000000..8368e281a8 --- /dev/null +++ b/IntelFrameworkPkg/Include/Protocol/GuidedSectionExtraction.h @@ -0,0 +1,102 @@ +/** @file + This file declares GUIDed section extraction protocol. + + This interface provides a means of decoding a GUID defined encapsulation + section. There may be multiple different GUIDs associated with the GUIDed + section extraction protocol. That is, all instances of the GUIDed section + extraction protocol must have the same interface structure. + + Copyright (c) 2006, Intel Corporation + All rights reserved. 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. + + Module Name: GuidedSectionExtraction.h + + @par Revision Reference: + This protocol is defined in Firmware Volume Specification. + Version 0.9 + +**/ + +#ifndef __GUIDED_SECTION_EXTRACTION_PROTOCOL_H__ +#define __GUIDED_SECTION_EXTRACTION_PROTOCOL_H__ + + +// +// Protocol GUID definition. Each GUIDed section extraction protocol has the +// same interface but with different GUID. All the GUIDs is defined here. +// May add multiple GUIDs here. +// +#define EFI_CRC32_GUIDED_SECTION_EXTRACTION_PROTOCOL_GUID \ + { \ + 0xFC1BCDB0, 0x7D31, 0x49aa, {0x93, 0x6A, 0xA4, 0x60, 0x0D, 0x9D, 0xD0, 0x83 } \ + } + +// +// Forward reference for pure ANSI compatability +// +typedef struct _EFI_GUIDED_SECTION_EXTRACTION_PROTOCOL EFI_GUIDED_SECTION_EXTRACTION_PROTOCOL; + +// +// Protocol member functions +// +/** + Processes the input section and returns the data contained therein along + with the authentication status. + + @param This Indicates the EFI_GUIDED_SECTION_EXTRACTION_PROTOCOL instance. + @param InputSection Buffer containing the input GUIDed section to be processed. + @param OutputBuffer *OutputBuffer is allocated from boot services pool memory + and contains the new section stream. + @param OutputSize A pointer to a caller-allocated UINTN in which the size + of *OutputBuffer allocation is stored. + @param AuthenticationStatus A pointer to a caller-allocated UINT32 that + indicates the authentication status of the output buffer. + + @retval EFI_SUCCESS The InputSection was successfully processed and the + section contents were returned. + @retval EFI_OUT_OF_RESOURCES The system has insufficient resources to + process the request. + @retval EFI_INVALID_PARAMETER The GUID in InputSection does not match + this instance of the GUIDed Section Extraction Protocol. + +**/ + +typedef +EFI_STATUS +(EFIAPI *EFI_EXTRACT_GUIDED_SECTION) ( + IN EFI_GUIDED_SECTION_EXTRACTION_PROTOCOL *This, + IN VOID *InputSection, + OUT VOID **OutputBuffer, + OUT UINTN *OutputSize, + OUT UINT32 *AuthenticationStatus + ); + +// +// Protocol definition +// +/** + @par Protocol Description: + If a GUID-defined section is encountered when doing section extraction, + the section extraction driver calls the appropriate instance of the GUIDed + Section Extraction Protocol to extract the section stream contained therein. + + @param ExtractSection + Takes the GUIDed section as input and produces the section stream data. + +**/ +struct _EFI_GUIDED_SECTION_EXTRACTION_PROTOCOL { + EFI_EXTRACT_GUIDED_SECTION ExtractSection; +}; + +// +// may add other GUID here +// +extern EFI_GUID gEfiCrc32GuidedSectionExtractionProtocolGuid; + +#endif diff --git a/IntelFrameworkPkg/IntelFrameworkPkg.dec b/IntelFrameworkPkg/IntelFrameworkPkg.dec index 4adad1623b..fb7f623d44 100644 --- a/IntelFrameworkPkg/IntelFrameworkPkg.dec +++ b/IntelFrameworkPkg/IntelFrameworkPkg.dec @@ -70,6 +70,7 @@ gEfiFrameworkDevicePathGuid = { 0xb7084e63, 0x46b7, 0x4d1a, { 0x86, 0x77, 0xe3, 0x0b, 0x53, 0xdb, 0xf0, 0x50 }} gSmmCommunicateHeaderGuid = { 0xf328e36c, 0x23b6, 0x4a95, { 0x85, 0x4b, 0x32, 0xe1, 0x95, 0x34, 0xcd, 0x75 }} gEfiSmmPeiSmramMemoryReserveGuid = { 0x6dadf1d1, 0xd4cc, 0x4910, { 0xbb, 0x6e, 0x82, 0xb1, 0xfd, 0x80, 0xff, 0x3d }} + gEfiCapsuleGuid = { 0x3B6686BD, 0x0D76, 0x4030, { 0xB7, 0x0E, 0xB5, 0x51, 0x9E, 0x2F, 0xC5, 0xA0 }} @@ -81,6 +82,10 @@ # ################################################################################ [Protocols.common] + gEfiCrc32GuidedSectionExtractionProtocolGuid = { 0xFC1BCDB0, 0x7D31, 0x49AA, { 0x93, 0x6A, 0xA4, 0x60, 0x0D, 0x9D, 0xD0, 0x83 }} + gEfiFormCallbackProtocolGuid = { 0xF3E4543D, 0xCF35, 0x6CEF, { 0x35, 0xC4, 0x4F, 0xE6, 0x34, 0x4D, 0xFC, 0x54 }} + gEfiFirmwareVolumeDispatchProtocolGuid = { 0x7AA35A69, 0x506C, 0x444F, { 0xA7, 0xAF, 0x69, 0x4B, 0xF5, 0x6F, 0x71, 0xC8 }} + gEfiAcpiS3SaveProtocolGuid = { 0x125F2DE1, 0xFB85, 0x440C, { 0xA5, 0x4C, 0x4D, 0x99, 0x35, 0x8A, 0x8D, 0x38 }} gEfiAcpiSupportProtocolGuid = { 0xdbff9d55, 0x89b7, 0x46da, { 0xbd, 0xdf, 0x67, 0x7d, 0x3d, 0xc0, 0x24, 0x1d }} gEfiBootScriptSaveProtocolGuid = { 0x470e1529, 0xb79e, 0x4e32, { 0xa0, 0xfe, 0x6a, 0x15, 0x6d, 0x29, 0xf9, 0xb2 }} gEfiCpuIoProtocolGuid = { 0xB0732526, 0x38C8, 0x4b40, { 0x88, 0x77, 0x61, 0xc7, 0xb0, 0x6a, 0xac, 0x45 }} @@ -112,3 +117,24 @@ gEfiSmmSxDispatchProtocolGuid = { 0x14fc52be, 0x01dc, 0x426c, { 0x91, 0xae, 0xa2, 0x3c, 0x3e, 0x22, 0x0a, 0xe8 }} + + +################################################################################ +# +# Global Ppis Definition section - list of Global Ppis C Name Data Structures +# that are provided by this package. +# +################################################################################ +[Ppis.common] + gEfiPeiReadOnlyVariablePpiGuid = { 0x3CDC90C6, 0x13FB, 0x4A75, { 0x9E, 0x79, 0x59, 0xE9, 0xDD, 0x78, 0xB9, 0xFA }} + gEfiPeiSectionExtractionPpiGuid = { 0x4F89E208, 0xE144, 0x4804, { 0x9E, 0xC8, 0x0F, 0x89, 0x4F, 0x7E, 0x36, 0xD7 }} + gEfiPeiSecurityPpiGuid = { 0x1388066E, 0x3A57, 0x4EFA, { 0x98, 0xF3, 0xC1, 0x2F, 0x3A, 0x95, 0x8A, 0x29 }} + gEfiPeiVirtualBlockIoPpiGuid = { 0x695d8aa1, 0x42ee, 0x4c46, { 0x80, 0x5c, 0x6e, 0xa6, 0xbc, 0xe7, 0x99, 0xe3 }} + gEfiPei144FloppyBlockIoPpiGuid = { 0xda6855bd, 0x07b7, 0x4c05, { 0x9e, 0xd8, 0xe2, 0x59, 0xfd, 0x36, 0x0e, 0x22 }} + gEfiPeiIdeBlockIoPpiGuid = { 0x0964e5b22, 0x6459, 0x11d2, { 0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b }} + gEfiPeiBootScriptExecuterPpiGuid = { 0xabd42895, 0x78cf, 0x4872, { 0x84, 0x44, 0x1b, 0x5c, 0x18, 0x0b, 0xfb, 0xff }} + gEfiPeiRecoveryModulePpiGuid = { 0xFB6D9542, 0x612D, 0x4f45, { 0x87, 0x2f, 0x5c, 0xff, 0x52, 0xe9, 0x3d, 0xcf }} + gEfiPeiS3ResumePpiGuid = { 0x4426CCB2, 0xE684, 0x4a8a, { 0xae, 0x40, 0x20, 0xd4, 0xb0, 0x25, 0xb7, 0x10 }} + gEfiPeiSmbusPpiGuid = { 0xabd42895, 0x78cf, 0x4872, { 0x84, 0x44, 0x1b, 0x5c, 0x18, 0x0b, 0xfb, 0xda }} + + diff --git a/IntelFrameworkPkg/IntelFrameworkPkg.nspd b/IntelFrameworkPkg/IntelFrameworkPkg.nspd index ce48da92aa..284a8ebff6 100644 --- a/IntelFrameworkPkg/IntelFrameworkPkg.nspd +++ b/IntelFrameworkPkg/IntelFrameworkPkg.nspd @@ -39,6 +39,11 @@ Include/FrameworkSmm.h + + gEfiCapsuleGuid + 3B6686BD-0D76-4030-B70E-B5519E2FC5A0 + + gEfiSmmPeiSmramMemoryReserveGuid 6dadf1d1-d4cc-4910-bb6e-82b1fd80ff3d @@ -236,6 +241,26 @@ dbff9d55-89b7-46da-bddf-677d3dc0241d ACPI Support protocol + + gEfiAcpiS3SaveProtocolGuid + 125F2DE1-FB85-440C-A54C-4D99358A8D38 + + + + gEfiFirmwareVolumeDispatchProtocolGuid + 7AA35A69-506C-444F-A7AF-694BF56F71C8 + + + + gEfiFormCallbackProtocolGuid + F3E4543D-CF35-6CEF-35C4-4FE6344DFC54 + + + + gEfiCrc32GuidedSectionExtractionProtocolGuid + FC1BCDB0-7D31-49AA-936A-A4600D9DD083 + + @@ -273,5 +298,20 @@ 695d8aa1-42ee-4c46-805c-6ea6bce799e3 Virtual Block I/O PPI + + gEfiPeiSecurityPpiGuid + 1388066E-3A57-4EFA-98F3-C12F3A958A29 + + + + gEfiPeiSectionExtractionPpiGuid + 4F89E208-E144-4804-9EC8-0F894F7E36D7 + + + + gEfiPeiReadOnlyVariablePpiGuid + 3CDC90C6-13FB-4A75-9E79-59E9DD78B9FA + + \ No newline at end of file -- 2.39.2