diff --git a/EdkCompatibilityPkg/Compatiblity/FrameworkHiiToUefiHiiThunk/Fonts.c b/EdkCompatibilityPkg/Compatiblity/FrameworkHiiToUefiHiiThunk/Fonts.c deleted file mode 100644 index eadc5b35b4..0000000000 --- a/EdkCompatibilityPkg/Compatiblity/FrameworkHiiToUefiHiiThunk/Fonts.c +++ /dev/null @@ -1,68 +0,0 @@ -/**@file - - This file contains the Glyph related function. - -Copyright (c) 2006 - 2008, 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. - -**/ - - -#include "HiiDatabase.h" - -EFI_STATUS -EFIAPI -HiiGetGlyph ( - IN EFI_HII_PROTOCOL *This, - IN CHAR16 *Source, - IN OUT UINT16 *Index, - OUT UINT8 **GlyphBuffer, - OUT UINT16 *BitWidth, - IN OUT UINT32 *InternalStatus - ) -/*++ - -Routine Description: - Translates a Unicode character into the corresponding font glyph. - If the Source was pointing to a non-spacing character, the next Source[*Index] - character will be parsed and OR'd to the GlyphBuffer until a spacing character - is found in the Source. Since non-spacing characters are considered to be the - same pixel width as a regular character their BitWidth will be reflected correctly - however due to their special attribute, they are considered to be zero advancing width. - This basically means that the cursor would not advance, thus the character that follows - it would overlay the non-spacing character. The Index is modified to reflect both the - incoming array entry into the Source string but also the outgoing array entry after having - parsed the equivalent of a single Glyph's worth of data. - -Arguments: - -Returns: - ---*/ -{ - ASSERT (FALSE); - return EFI_SUCCESS; -} - -EFI_STATUS -EFIAPI -HiiGlyphToBlt ( - IN EFI_HII_PROTOCOL *This, - IN UINT8 *GlyphBuffer, - IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Foreground, - IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Background, - IN UINTN Count, - IN UINTN Width, - IN UINTN Height, - IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer - ) -{ - ASSERT (FALSE); - return EFI_SUCCESS; -} diff --git a/EdkCompatibilityPkg/Compatiblity/FrameworkHiiToUefiHiiThunk/Forms.c b/EdkCompatibilityPkg/Compatiblity/FrameworkHiiToUefiHiiThunk/Forms.c deleted file mode 100644 index 0e49e2066b..0000000000 --- a/EdkCompatibilityPkg/Compatiblity/FrameworkHiiToUefiHiiThunk/Forms.c +++ /dev/null @@ -1,154 +0,0 @@ -/**@file - This file contains the form processing code to the HII database. - -Copyright (c) 2006 - 2008 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. - -**/ - - -#include "HiiDatabase.h" - -EFI_STATUS -EFIAPI -HiiExportDatabase ( - IN EFI_HII_PROTOCOL *This, - IN FRAMEWORK_EFI_HII_HANDLE Handle, - IN OUT UINTN *BufferSize, - OUT VOID *Buffer - ) -/*++ - -Routine Description: - - This function allows a program to extract a form or form package that has - previously been registered with the EFI HII database. - -Arguments: - -Returns: - ---*/ -{ - ASSERT (FALSE); - return EFI_UNSUPPORTED; -} - -EFI_STATUS -EFIAPI -HiiGetForms ( - IN EFI_HII_PROTOCOL *This, - IN FRAMEWORK_EFI_HII_HANDLE Handle, - IN EFI_FORM_ID FormId, - IN OUT UINTN *BufferLengthTemp, - OUT UINT8 *Buffer - ) -/*++ - -Routine Description: - - This function allows a program to extract a form or form package that has - previously been registered with the EFI HII database. - -Arguments: - This - A pointer to the EFI_HII_PROTOCOL instance. - - Handle - Handle on which the form resides. Type FRAMEWORK_EFI_HII_HANDLE is defined in - EFI_HII_PROTOCOL.NewPack() in the Packages section. - - FormId - The ID of the form to return. If the ID is zero, the entire form package is returned. - Type EFI_FORM_ID is defined in "Related Definitions" below. - - BufferLength - On input, the length of the Buffer. On output, the length of the returned buffer, if - the length was sufficient and, if it was not, the length that is required to fit the - requested form(s). - - Buffer - The buffer designed to receive the form(s). - -Returns: - - EFI_SUCCESS - Buffer filled with the requested forms. BufferLength - was updated. - - EFI_INVALID_PARAMETER - The handle is unknown. - - EFI_NOT_FOUND - A form on the requested handle cannot be found with the - requested FormId. - - EFI_BUFFER_TOO_SMALL - The buffer provided was not large enough to allow the form to be stored. - ---*/ -{ - ASSERT (FALSE); - return EFI_UNSUPPORTED; -} - -EFI_STATUS -EFIAPI -HiiGetDefaultImage ( - IN EFI_HII_PROTOCOL *This, - IN FRAMEWORK_EFI_HII_HANDLE Handle, - IN UINTN DefaultMask, - OUT EFI_HII_VARIABLE_PACK_LIST **VariablePackList - ) -/*++ - - Routine Description: - - This function allows a program to extract the NV Image - that represents the default storage image - - Arguments: - This - A pointer to the EFI_HII_PROTOCOL instance. - Handle - The HII handle from which will have default data retrieved. - UINTN - Mask used to retrieve the default image. - VariablePackList - Callee allocated, tightly-packed, link list data - structure that contain all default varaible packs - from the Hii Database. - - Returns: - EFI_NOT_FOUND - If Hii database does not contain any default images. - EFI_INVALID_PARAMETER - Invalid input parameter. - EFI_SUCCESS - Operation successful. - ---*/ -{ - return EFI_SUCCESS; -} - - -EFI_STATUS -EFIAPI -HiiUpdateForm ( - IN EFI_HII_PROTOCOL *This, - IN FRAMEWORK_EFI_HII_HANDLE Handle, - IN EFI_FORM_LABEL Label, - IN BOOLEAN AddData, - IN EFI_HII_UPDATE_DATA *Data - ) -/*++ - -Routine Description: - This function allows the caller to update a form that has - previously been registered with the EFI HII database. - -Arguments: - Handle - Hii Handle associated with the Formset to modify - Label - Update information starting immediately after this label in the IFR - AddData - If TRUE, add data. If FALSE, remove data - Data - If adding data, this is the pointer to the data to add - -Returns: - EFI_SUCCESS - Update success. - Other - Update fail. - ---*/ -{ - return EFI_SUCCESS; -} diff --git a/EdkCompatibilityPkg/Compatiblity/FrameworkHiiToUefiHiiThunk/FrameworkHiiToUefiHiiThunk.inf b/EdkCompatibilityPkg/Compatiblity/FrameworkHiiToUefiHiiThunk/FrameworkHiiToUefiHiiThunk.inf deleted file mode 100644 index 38f7a9beb8..0000000000 --- a/EdkCompatibilityPkg/Compatiblity/FrameworkHiiToUefiHiiThunk/FrameworkHiiToUefiHiiThunk.inf +++ /dev/null @@ -1,75 +0,0 @@ -#/** @file -# Component description file for HiiDatabase module which produce a Framework HII instance -# based on the avaliable UEFI HII protocol found in the platform. -# -# This module inits HII database and installs HII protocol based on the avaliable UEFI HII protocol found in the platform.. -# Copyright (c) 2006 - 2008, 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. -# -# -#**/ - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = FrameworkHiiToUefiHiiThunk - FILE_GUID = AC3435BB-B1D3-4EF8-957C-8048606FF671 - MODULE_TYPE = DXE_DRIVER - VERSION_STRING = 1.0 - EDK_RELEASE_VERSION = 0x00020000 - EFI_SPECIFICATION_VERSION = 0x00020000 - - ENTRY_POINT = InitializeHiiDatabase - -# -# The following information is for reference only and not required by the build tools. -# -# VALID_ARCHITECTURES = IA32 X64 IPF EBC -# - -[Sources.common] - Keyboard.c - Fonts.c - Package.c - Strings.c - Forms.c - HiiDatabase.h - HiiDatabase.c - Utility.c - Utility.h - - -[Packages] - MdePkg/MdePkg.dec - IntelFrameworkPkg/IntelFrameworkPkg.dec - -[LibraryClasses] - UefiRuntimeServicesTableLib - UefiBootServicesTableLib - BaseMemoryLib - MemoryAllocationLib - UefiDriverEntryPoint - DebugLib - BaseLib - HiiLib - - - -[Protocols] - gEfiHiiProtocolGuid - gEfiHiiImageProtocolGuid - gEfiHiiDatabaseProtocolGuid - gEfiHiiStringProtocolGuid - gEfiHiiFontProtocolGuid - -[Depex] - gEfiHiiImageProtocolGuid AND - gEfiHiiDatabaseProtocolGuid AND - gEfiHiiStringProtocolGuid AND - gEfiHiiFontProtocolGuid - diff --git a/EdkCompatibilityPkg/Compatiblity/FrameworkHiiToUefiHiiThunk/HiiDatabase.c b/EdkCompatibilityPkg/Compatiblity/FrameworkHiiToUefiHiiThunk/HiiDatabase.c deleted file mode 100644 index c7d339e107..0000000000 --- a/EdkCompatibilityPkg/Compatiblity/FrameworkHiiToUefiHiiThunk/HiiDatabase.c +++ /dev/null @@ -1,207 +0,0 @@ -/**@file - -Framework to UEFI 2.1 HII Thunk - -Copyright (c) 2003, 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. - -**/ - -#include "HiiDatabase.h" - - -EFI_HII_THUNK_PRIVATE_DATA HiiThunkPrivateDataTempate = { - {//Signature - EFI_HII_THUNK_DRIVER_DATA_SIGNATURE - }, - {//Handle - (EFI_HANDLE) NULL - }, - { //Hii - HiiNewPack, - HiiRemovePack, - HiiFindHandles, - HiiExportDatabase, - - HiiTestString, - HiiGetGlyph, - HiiGlyphToBlt, - - HiiNewString, - HiiGetPrimaryLanguages, - HiiGetSecondaryLanguages, - HiiGetString, - HiiResetStrings, - HiiGetLine, - HiiGetForms, - HiiGetDefaultImage, - HiiUpdateForm, - - HiiGetKeyboardLayout - }, - { //StaticHiiHandle - //The FRAMEWORK_EFI_HII_HANDLE starts from 1 - // and increase upwords untill reach 2^(sizeof (FRAMEWORK_EFI_HII_HANDLE)) - 1. - // The code will assert to prevent overflow. - (FRAMEWORK_EFI_HII_HANDLE) 1 - }, - { - NULL, NULL //HiiHandleLinkList - }, -}; - -EFI_HII_DATABASE_PROTOCOL *mUefiHiiDatabaseProtocol; -EFI_HII_FONT_PROTOCOL *mUefiHiiFontProtocol; -EFI_HII_IMAGE_PROTOCOL *mUefiHiiImageProtocol; -EFI_HII_STRING_PROTOCOL *mUefiStringProtocol; - -EFI_STATUS -EFIAPI -InitializeHiiDatabase ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable - ) -/*++ - -Routine Description: - Initialize HII Database - -Arguments: - (Standard EFI Image entry - EFI_IMAGE_ENTRY_POINT) - -Returns: - EFI_SUCCESS - Setup loaded. - other - Setup Error - ---*/ -{ - EFI_HII_THUNK_PRIVATE_DATA *HiiData; - EFI_HANDLE Handle; - EFI_STATUS Status; - - ASSERT_PROTOCOL_ALREADY_INSTALLED (NULL, &gEfiHiiProtocolGuid); - - HiiData = AllocateCopyPool (sizeof (EFI_HII_THUNK_PRIVATE_DATA), &HiiThunkPrivateDataTempate); - ASSERT (HiiData != NULL); - InitializeListHead (&HiiData->HiiThunkHandleMappingDBListHead); - - Status = gBS->LocateProtocol ( - &gEfiHiiDatabaseProtocolGuid, - NULL, - (VOID **) &mUefiHiiDatabaseProtocol - ); - ASSERT_EFI_ERROR (Status); - - Status = gBS->LocateProtocol ( - &gEfiHiiFontProtocolGuid, - NULL, - (VOID **) &mUefiHiiFontProtocol - ); - ASSERT_EFI_ERROR (Status); - - Status = gBS->LocateProtocol ( - &gEfiHiiImageProtocolGuid, - NULL, - (VOID **) &mUefiHiiImageProtocol - ); - ASSERT_EFI_ERROR (Status); - - Status = gBS->LocateProtocol ( - &gEfiHiiStringProtocolGuid, - NULL, - (VOID **) &mUefiStringProtocol - ); - ASSERT_EFI_ERROR (Status); - - // - // Install protocol interface - // - Handle = NULL; - Status = gBS->InstallProtocolInterface ( - &HiiData->Handle, - &gEfiHiiProtocolGuid, - EFI_NATIVE_INTERFACE, - (VOID *) &HiiData->Hii - ); - ASSERT_EFI_ERROR (Status); - - return Status; -} - -EFI_STATUS -EFIAPI -HiiFindHandles ( - IN EFI_HII_PROTOCOL *This, - IN OUT UINT16 *HandleBufferLength, - OUT FRAMEWORK_EFI_HII_HANDLE Handle[1] - ) -/*++ - -Routine Description: - Determines the handles that are currently active in the database. - -Arguments: - -Returns: - ---*/ -{ - ASSERT (FALSE); - return EFI_SUCCESS; -} - -EFI_STATUS -EFIAPI -HiiGetPrimaryLanguages ( - IN EFI_HII_PROTOCOL *This, - IN FRAMEWORK_EFI_HII_HANDLE Handle, - OUT EFI_STRING *LanguageString - ) -/*++ - -Routine Description: - - This function allows a program to determine what the primary languages that are supported on a given handle. - -Arguments: - -Returns: - ---*/ -{ - ASSERT (FALSE); - return EFI_SUCCESS; -} - -EFI_STATUS -EFIAPI -HiiGetSecondaryLanguages ( - IN EFI_HII_PROTOCOL *This, - IN FRAMEWORK_EFI_HII_HANDLE Handle, - IN CHAR16 *PrimaryLanguage, - OUT EFI_STRING *LanguageString - ) -/*++ - -Routine Description: - - This function allows a program to determine which secondary languages are supported - on a given handle for a given primary language. - - Arguments: - -Returns: - ---*/ -{ - ASSERT (FALSE); - return EFI_SUCCESS; -} - - diff --git a/EdkCompatibilityPkg/Compatiblity/FrameworkHiiToUefiHiiThunk/HiiDatabase.h b/EdkCompatibilityPkg/Compatiblity/FrameworkHiiToUefiHiiThunk/HiiDatabase.h deleted file mode 100644 index f0ef02e2dd..0000000000 --- a/EdkCompatibilityPkg/Compatiblity/FrameworkHiiToUefiHiiThunk/HiiDatabase.h +++ /dev/null @@ -1,322 +0,0 @@ -/**@file - - This file contains global defines and prototype definitions - for the HII database. - -Copyright (c) 2006 - 2008, 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. - -**/ - -#ifndef _HIIDATABASE_H -#define _HIIDATABASE_H - - -#include - -#include -#include -#include - -// -// UEFI HII Protocols -// -#include -#include -#include -#include -#include -#include - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "Utility.h" - -// -// Macros -// - - -// -// Typedef -// - -typedef struct { - UINT32 BinaryLength; - EFI_HII_PACKAGE_HEADER PackageHeader; -} TIANO_AUTOGEN_PACKAGES_HEADER; - -#define EFI_HII_THUNK_PRIVATE_DATA_FROM_THIS(Record) CR(Record, EFI_HII_THUNK_PRIVATE_DATA, Hii, EFI_HII_THUNK_DRIVER_DATA_SIGNATURE) -#define EFI_HII_THUNK_DRIVER_DATA_SIGNATURE EFI_SIGNATURE_32 ('H', 'i', 'I', 'T') -typedef struct { - UINTN Signature; - EFI_HANDLE Handle; - EFI_HII_PROTOCOL Hii; - FRAMEWORK_EFI_HII_HANDLE StaticHiiHandle; - - // - // This LIST_ENTRY is the list head which has HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY type - // as list entry. - // - LIST_ENTRY HiiThunkHandleMappingDBListHead; - -} EFI_HII_THUNK_PRIVATE_DATA; - - -#define HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY_FROM_LISTENTRY(Record) CR(Record, HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY, List, HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY_SIGNATURE) -#define HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY_SIGNATURE EFI_SIGNATURE_32 ('H', 'T', 'H', 'M') -typedef struct { - LIST_ENTRY List; - UINT32 Signature; - FRAMEWORK_EFI_HII_HANDLE FrameworkHiiHandle; - EFI_HII_HANDLE UefiHiiHandle; - - BOOLEAN IsPackageListWithOnlyStringPackages; - // - // The field below is only valid if IsPackageListWithOnlyStringPack is TRUE. - // The HII 0.92 version of HII data implementation in EDK 1.03 and 1.04 make an the following assumption - // in both HII Database implementation and all modules that registering packages: - // If a Package List has only IFR package and no String Package, the String Package containing the strings - // referenced by this IFR package is in another Package List - // registered with the HII database with the same EFI_HII_PACKAGES.GuidId. - // - // - // Only valid if IsPackageListWithSingleStringPack is TRUE. - // UEFI Package List Head Pointer, pointing to a allocated buffer containing the package - // - EFI_HII_PACKAGE_LIST_HEADER *UefiStringPackageListHeader; //Only valid if IsStringPack is TRUE. - //This UEFI Package list only consists of a list of string packages. - - EFI_GUID TagGuid; - // - // TRUE if the package list identified by UefiHiiHandle imports String Packages from - // other package list with IsPackageListWithOnlyStringPackages is TRUE. - // - BOOLEAN DoesPackageListImportStringPackages; - EFI_HII_PACKAGE_LIST_HEADER *ImportedUefiStringPackageListHeader; //Only valid if DoesPackageListImportStringPackages is true. - -} HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY; - -// -// Extern Variables -// -extern EFI_HII_DATABASE_PROTOCOL *mUefiHiiDatabaseProtocol; -extern EFI_HII_FONT_PROTOCOL *mUefiHiiFontProtocol; -extern EFI_HII_IMAGE_PROTOCOL *mUefiHiiImageProtocol; -extern EFI_HII_STRING_PROTOCOL *mUefiStringProtocol; - -// -// Prototypes -// - -// -// Public Interface Prototypes -// -EFI_STATUS -EFIAPI -InitializeHiiDatabase ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable - ) -; - -EFI_STATUS -EFIAPI -HiiNewPack ( - IN EFI_HII_PROTOCOL *This, - IN EFI_HII_PACKAGES *PackageList, - OUT FRAMEWORK_EFI_HII_HANDLE *Handle - ) -; - -EFI_STATUS -EFIAPI -HiiRemovePack ( - IN EFI_HII_PROTOCOL *This, - IN FRAMEWORK_EFI_HII_HANDLE Handle - ) -; - -EFI_STATUS -EFIAPI -HiiFindHandles ( - IN EFI_HII_PROTOCOL *This, - IN OUT UINT16 *HandleBufferLength, - OUT FRAMEWORK_EFI_HII_HANDLE *Handle - ) -; - -EFI_STATUS -EFIAPI -HiiExportDatabase ( - IN EFI_HII_PROTOCOL *This, - IN FRAMEWORK_EFI_HII_HANDLE Handle, - IN OUT UINTN *BufferSize, - OUT VOID *Buffer - ) -; - -EFI_STATUS -EFIAPI -HiiGetGlyph ( - IN EFI_HII_PROTOCOL *This, - IN CHAR16 *Source, - IN OUT UINT16 *Index, - OUT UINT8 **GlyphBuffer, - OUT UINT16 *BitWidth, - IN OUT UINT32 *InternalStatus - ) -; - -EFI_STATUS -EFIAPI -HiiGlyphToBlt ( - IN EFI_HII_PROTOCOL *This, - IN UINT8 *GlyphBuffer, - IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Foreground, - IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Background, - IN UINTN Count, - IN UINTN Width, - IN UINTN Height, - IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer - ) -; - -EFI_STATUS -EFIAPI -HiiNewString ( - IN EFI_HII_PROTOCOL *This, - IN CHAR16 *Language, - IN FRAMEWORK_EFI_HII_HANDLE Handle, - IN OUT STRING_REF *Reference, - IN CHAR16 *NewString - ) -; - -EFI_STATUS -EFIAPI -HiiGetString ( - IN EFI_HII_PROTOCOL *This, - IN FRAMEWORK_EFI_HII_HANDLE Handle, - IN STRING_REF Token, - IN BOOLEAN Raw, - IN CHAR16 *LanguageString, - IN OUT UINTN *BufferLength, - OUT EFI_STRING StringBuffer - ) -; - -EFI_STATUS -EFIAPI -HiiResetStrings ( - IN EFI_HII_PROTOCOL *This, - IN FRAMEWORK_EFI_HII_HANDLE Handle - ) -; - -EFI_STATUS -EFIAPI -HiiTestString ( - IN EFI_HII_PROTOCOL *This, - IN CHAR16 *StringToTest, - IN OUT UINT32 *FirstMissing, - OUT UINT32 *GlyphBufferSize - ) -; - -EFI_STATUS -EFIAPI -HiiGetPrimaryLanguages ( - IN EFI_HII_PROTOCOL *This, - IN FRAMEWORK_EFI_HII_HANDLE Handle, - OUT EFI_STRING *LanguageString - ) -; - -EFI_STATUS -EFIAPI -HiiGetSecondaryLanguages ( - IN EFI_HII_PROTOCOL *This, - IN FRAMEWORK_EFI_HII_HANDLE Handle, - IN CHAR16 *PrimaryLanguage, - OUT EFI_STRING *LanguageString - ) -; - -EFI_STATUS -EFIAPI -HiiGetLine ( - IN EFI_HII_PROTOCOL *This, - IN FRAMEWORK_EFI_HII_HANDLE Handle, - IN STRING_REF Token, - IN OUT UINT16 *Index, - IN UINT16 LineWidth, - IN CHAR16 *LanguageString, - IN OUT UINT16 *BufferLength, - OUT EFI_STRING StringBuffer - ) -; - -EFI_STATUS -EFIAPI -HiiGetForms ( - IN EFI_HII_PROTOCOL *This, - IN FRAMEWORK_EFI_HII_HANDLE Handle, - IN EFI_FORM_ID FormId, - IN OUT UINTN *BufferLength, - OUT UINT8 *Buffer - ) -; - -EFI_STATUS -EFIAPI -HiiGetDefaultImage ( - IN EFI_HII_PROTOCOL *This, - IN FRAMEWORK_EFI_HII_HANDLE Handle, - IN UINTN DefaultMask, - OUT EFI_HII_VARIABLE_PACK_LIST **VariablePackList - ) -; - -EFI_STATUS -EFIAPI -HiiUpdateForm ( - IN EFI_HII_PROTOCOL *This, - IN FRAMEWORK_EFI_HII_HANDLE Handle, - IN EFI_FORM_LABEL Label, - IN BOOLEAN AddData, - IN EFI_HII_UPDATE_DATA *Data - ) -; - -EFI_STATUS -EFIAPI -HiiGetKeyboardLayout ( - IN EFI_HII_PROTOCOL *This, - OUT UINT16 *DescriptorCount, - OUT FRAMEWORK_EFI_KEY_DESCRIPTOR *Descriptor - ) -; - -EFI_STATUS -HiiCompareLanguage ( - IN CHAR16 *LanguageStringLocation, - IN CHAR16 *Language - ) -; - -#endif diff --git a/EdkCompatibilityPkg/Compatiblity/FrameworkHiiToUefiHiiThunk/Keyboard.c b/EdkCompatibilityPkg/Compatiblity/FrameworkHiiToUefiHiiThunk/Keyboard.c deleted file mode 100644 index d54c9b9d29..0000000000 --- a/EdkCompatibilityPkg/Compatiblity/FrameworkHiiToUefiHiiThunk/Keyboard.c +++ /dev/null @@ -1,37 +0,0 @@ -/**@file - - This file contains the keyboard processing code to the HII database. - -Copyright (c) 2006 - 2008, 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. - -**/ - - -#include "HiiDatabase.h" - -EFI_STATUS -EFIAPI -HiiGetKeyboardLayout ( - IN EFI_HII_PROTOCOL *This, - OUT UINT16 *DescriptorCount, - OUT FRAMEWORK_EFI_KEY_DESCRIPTOR *Descriptor - ) -/*++ - -Routine Description: - -Arguments: - -Returns: - ---*/ -{ - return EFI_SUCCESS; -} diff --git a/EdkCompatibilityPkg/Compatiblity/FrameworkHiiToUefiHiiThunk/Package.c b/EdkCompatibilityPkg/Compatiblity/FrameworkHiiToUefiHiiThunk/Package.c deleted file mode 100644 index 2a1407c366..0000000000 --- a/EdkCompatibilityPkg/Compatiblity/FrameworkHiiToUefiHiiThunk/Package.c +++ /dev/null @@ -1,518 +0,0 @@ -/**@file - - This file contains the keyboard processing code to the HII database. - -Copyright (c) 2006 - 2008, 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. - -**/ - - -#include "HiiDatabase.h" - - -EFI_STATUS -GetIfrAndStringPackNum ( - IN CONST EFI_HII_PACKAGES *Packages, - UINTN *IfrPackNum, - UINTN *StringPackNum - ) -{ - UINTN Index; - TIANO_AUTOGEN_PACKAGES_HEADER **TianoAutogenPackageHdrArray; - - ASSERT (Packages != NULL); - ASSERT (IfrPackNum != NULL); - ASSERT (StringPackNum != NULL); - - *IfrPackNum = 0; - *StringPackNum = 0; - - TianoAutogenPackageHdrArray = (TIANO_AUTOGEN_PACKAGES_HEADER **) (((UINT8 *) &Packages->GuidId) + sizeof (Packages->GuidId)); - for (Index = 0; Index < Packages->NumberOfPackages; Index++) { - // - // BugBug: The current UEFI HII build tool generate a binary in the format defined in: - // TIANO_AUTOGEN_PACKAGES_HEADER. We assume that all packages generated in - // this binary is with same package type. So the returned IfrPackNum and StringPackNum - // may not be the exact number of valid package number in the binary generated - // by HII Build tool. - // - switch (TianoAutogenPackageHdrArray[Index]->PackageHeader.Type) { - case EFI_HII_PACKAGE_FORM: - *IfrPackNum += 1; - break; - case EFI_HII_PACKAGE_STRINGS: - *StringPackNum += 1; - break; - - case EFI_HII_PACKAGE_SIMPLE_FONTS: - break; - - // - // The following fonts are invalid for a module that using Framework to UEFI thunk layer. - // - case EFI_HII_PACKAGE_KEYBOARD_LAYOUT: - case EFI_HII_PACKAGE_FONTS: - case EFI_HII_PACKAGE_IMAGES: - default: - ASSERT (FALSE); - return EFI_INVALID_PARAMETER; - break; - } - } - - return EFI_SUCCESS; -} - -EFI_STATUS -LibExportPackageLists ( - IN EFI_HII_HANDLE UefiHiiHandle, - OUT EFI_HII_PACKAGE_LIST_HEADER **PackageListHeader, - OUT UINTN *PackageListSize - ) -{ - EFI_STATUS Status; - UINTN Size; - EFI_HII_PACKAGE_LIST_HEADER *PackageListHdr; - - ASSERT (PackageListSize != NULL); - ASSERT (PackageListHeader != NULL); - - Size = 0; - PackageListHdr = NULL; - Status = mUefiHiiDatabaseProtocol->ExportPackageLists ( - mUefiHiiDatabaseProtocol, - UefiHiiHandle, - &Size, - PackageListHdr - ); - ASSERT_EFI_ERROR (Status == EFI_BUFFER_TOO_SMALL); - if (Status == EFI_BUFFER_TOO_SMALL) { - PackageListHdr = AllocateZeroPool (Size); - ASSERT (PackageListHdr != NULL); - - if (PackageListHeader == NULL) { - return EFI_OUT_OF_RESOURCES; - } else { - Status = mUefiHiiDatabaseProtocol->ExportPackageLists ( - mUefiHiiDatabaseProtocol, - UefiHiiHandle, - &Size, - PackageListHdr - ); - ASSERT_EFI_ERROR (Status); - } - } - - if (!EFI_ERROR (Status)) { - *PackageListHeader = PackageListHdr; - *PackageListSize = Size; - } - - return Status; -} - -BOOLEAN -IsOnlyStringPackagesInPackageList ( - IN CONST EFI_HII_PACKAGE_LIST_HEADER *StringPackageListHeader - ) -{ - EFI_HII_PACKAGE_HEADER *PackageHeader; - - PackageHeader = (EFI_HII_PACKAGE_HEADER *) (StringPackageListHeader + 1); - - while (PackageHeader->Type != EFI_HII_PACKAGE_END) { - PackageHeader = (EFI_HII_PACKAGE_HEADER *) (PackageHeader ); - } -} - - -EFI_STATUS -InsertStringPackagesToIfrPackageList ( - IN CONST EFI_HII_PACKAGE_LIST_HEADER *StringPackageListHeader, - IN EFI_HII_HANDLE UefiHiiHandle - ) -{ - EFI_STATUS Status; - Status = mUefiHiiDatabaseProtocol->UpdatePackageList ( - mUefiHiiDatabaseProtocol, - UefiHiiHandle, - StringPackageListHeader - ); - - return Status; -} - - -/** - Removes a node from a doubly linked list, and returns the node that follows - the removed node. - - Removes the node Entry from a doubly linked list. It is up to the caller of - this function to release the memory used by this node if that is required. On - exit, the node following Entry in the doubly linked list is returned. If - Entry is the only node in the linked list, then the head node of the linked - list is returned. - - If Entry is NULL, then ASSERT(). - If Entry is the head node of an empty list, then ASSERT(). - If PcdMaximumLinkedListLength is not zero, and the number of nodes in the - linked list containing Entry, including the Entry node, is greater than - or equal to PcdMaximumLinkedListLength, then ASSERT(). - - @param Entry A pointer to a node in a linked list - - @return Entry - -**/ -EFI_STATUS -AddStringPackagesToMatchingIfrPackageList ( - IN EFI_HII_THUNK_PRIVATE_DATA *Private, - IN CONST EFI_HII_PACKAGE_LIST_HEADER *StringPackageListHeader - ) -{ - EFI_STATUS Status; - LIST_ENTRY *ListEntry; - HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY *HandleMapEntry; - - for (ListEntry = Private->HiiThunkHandleMappingDBListHead.ForwardLink; - ListEntry != &Private->HiiThunkHandleMappingDBListHead; - ListEntry = ListEntry->ForwardLink - ) { - HandleMapEntry = HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY_FROM_LISTENTRY (ListEntry); - if (CompareGuid (&StringPackageListHeader->PackageListGuid, &HandleMapEntry->TagGuid)) { - Status = InsertStringPackagesToIfrPackageList (StringPackageListHeader, HandleMapEntry->UefiHiiHandle); - } - } - - return EFI_NOT_FOUND; -} -EFI_HII_PACKAGE_LIST_HEADER * -PrepareUefiPackageListFromFrameworkHiiPackages ( - IN CONST EFI_HII_PACKAGES *Packages, - IN CONST EFI_GUID *GuidId OPTIONAL - ) -{ - UINTN NumberOfPackages; - EFI_HII_PACKAGE_LIST_HEADER *PackageListHeader; - UINT8 *PackageListData; - UINT32 PackageListLength; - UINT32 PackageLength; - EFI_HII_PACKAGE_HEADER PackageHeader; - UINTN Index; - TIANO_AUTOGEN_PACKAGES_HEADER **TianoAutogenPackageHdrArray; - - TianoAutogenPackageHdrArray = (TIANO_AUTOGEN_PACKAGES_HEADER **) ((UINT8 *) &Packages->GuidId + sizeof (Packages->GuidId)); - NumberOfPackages = Packages->NumberOfPackages; - - PackageListLength = sizeof (EFI_HII_PACKAGE_LIST_HEADER); - - for (Index = 0; Index < NumberOfPackages; Index++) { - CopyMem (&PackageLength, &TianoAutogenPackageHdrArray[Index]->BinaryLength, sizeof (UINT32)); - PackageListLength += PackageLength; - } - - // - // Include the lenght of EFI_HII_PACKAGE_END - // - PackageListLength += sizeof (EFI_HII_PACKAGE_HEADER); - PackageListHeader = AllocateZeroPool (PackageListLength); - ASSERT (PackageListHeader != NULL); - if (GuidId == NULL) { - CopyMem (&PackageListHeader->PackageListGuid, Packages->GuidId, sizeof (EFI_GUID)); - } else { - CopyMem (&PackageListHeader->PackageListGuid, GuidId, sizeof (EFI_GUID)); - } - PackageListHeader->PackageLength = PackageListLength; - - PackageListData = ((UINT8 *) PackageListHeader) + sizeof (EFI_HII_PACKAGE_LIST_HEADER); - - for (Index = 0; Index < NumberOfPackages; Index++) { - CopyMem (&PackageLength, &(TianoAutogenPackageHdrArray[Index]->BinaryLength), sizeof (UINT32)); - PackageLength -= sizeof (UINT32); - CopyMem (PackageListData, &(TianoAutogenPackageHdrArray[Index]->PackageHeader), PackageLength); - PackageListData += PackageLength; - } - - // - // Append EFI_HII_PACKAGE_END - // - PackageHeader.Type = EFI_HII_PACKAGE_END; - PackageHeader.Length = sizeof (EFI_HII_PACKAGE_HEADER); - CopyMem (PackageListData, &PackageHeader, PackageHeader.Length); - - return PackageListHeader; -} - -EFI_GUID * -UefiGeneratePackageListGuidId ( - IN CONST EFI_HII_PACKAGES * Packages - ) -{ - EFI_GUID *Guid; - UINT64 MonotonicCount; - - Guid = AllocateCopyPool (sizeof (EFI_GUID), Packages->GuidId); - - gBS->GetNextMonotonicCount (&MonotonicCount); - // - // Use Monotonic Count as a psedo random number generator. - // - *((UINT64 *) Guid) = *((UINT64 *) Guid) + MonotonicCount; - - return Guid; -} - -EFI_STATUS -FindAndAddStringPackageToIfrPackageList( - EFI_HII_THUNK_PRIVATE_DATA *Private, - EFI_GUID *GuidId, - EFI_HII_HANDLE UefiIfrHiiHandle - ) -{ - EFI_STATUS Status; - LIST_ENTRY *ListEntry; - HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY *HandleMapEntry; - EFI_HII_PACKAGE_LIST_HEADER *StringPackageListHeader; - UINTN Size; - - for (ListEntry = Private->HiiThunkHandleMappingDBListHead.ForwardLink; - ListEntry != &Private->HiiThunkHandleMappingDBListHead; - ListEntry = ListEntry->ForwardLink - ) { - HandleMapEntry = HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY_FROM_LISTENTRY (ListEntry); - if (CompareGuid (GuidId, &HandleMapEntry->TagGuid) && (!HandleMapEntry->DoesPackageListImportStringPackages)) { - Status = LibExportPackageLists (HandleMapEntry->UefiHiiHandle, &StringPackageListHeader, &Size); - ASSERT_EFI_ERROR (Status); - - // - // Add Function to only get only String Packages from the Package List - // - - Status = InsertStringPackagesToIfrPackageList (StringPackageListHeader, UefiIfrHiiHandle); - ASSERT_EFI_ERROR (Status); - - FreePool (StringPackageListHeader); - return EFI_SUCCESS; - } - } - - return EFI_NOT_FOUND; - -} - -EFI_STATUS -InstallDefaultUefiConfigAccessProtocol ( - IN EFI_HII_PACKAGES *Packages, - OUT EFI_HANDLE *Handle - ) -{ - return EFI_SUCCESS; -} - -EFI_STATUS -UefiRegisterPackageList( - EFI_HII_THUNK_PRIVATE_DATA *Private, - EFI_HII_PACKAGES *Packages, - FRAMEWORK_EFI_HII_HANDLE *Handle - ) -{ - EFI_STATUS Status; - UINTN StringPackNum; - UINTN IfrPackNum; - EFI_HII_PACKAGE_LIST_HEADER *UefiPackageListHeader; - HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY *HandleMappingEntry; - EFI_GUID *GuidId; - EFI_HANDLE UefiHiiDriverHandle; - - GuidId = NULL; - UefiHiiDriverHandle = NULL; - - Status = GetIfrAndStringPackNum (Packages, &IfrPackNum, &StringPackNum); - ASSERT_EFI_ERROR (Status); - - HandleMappingEntry = AllocateZeroPool (sizeof (*HandleMappingEntry)); - ASSERT (HandleMappingEntry != NULL); - - HandleMappingEntry->Signature = HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY_SIGNATURE; - HandleMappingEntry->FrameworkHiiHandle = Private->StaticHiiHandle++; - CopyGuid (&HandleMappingEntry->TagGuid, Packages->GuidId); - - if ((StringPackNum == 0) && (IfrPackNum != 0)) { - // - // UEFI HII database does not allow two package list with the same GUID. - // In Framework HII implementation, Packages->GuidId is used as an identifier to associate - // a PackageList with only IFR to a Package list the with String package. - // - GuidId = UefiGeneratePackageListGuidId (Packages); - } - - // - // UEFI HII require EFI_HII_CONFIG_ACCESS_PROTOCOL to be installed on a EFI_HANDLE, so - // that Setup Utility will load the Buffer Storage - // - if (IfrPackNum != 0) { - InstallDefaultUefiConfigAccessProtocol (Packages, &UefiHiiDriverHandle); - } - UefiPackageListHeader = PrepareUefiPackageListFromFrameworkHiiPackages (Packages, GuidId); - Status = mUefiHiiDatabaseProtocol->NewPackageList ( - mUefiHiiDatabaseProtocol, - UefiPackageListHeader, - UefiHiiDriverHandle, - &HandleMappingEntry->UefiHiiHandle - ); - ASSERT_EFI_ERROR (Status); - if (EFI_ERROR (Status)) { - goto Done; - } - - if (IfrPackNum == 0) { - if (StringPackNum != 0) { - // - // Look for a package list with IFR Pack which has already registed with HII Database - // - HandleMappingEntry->IsPackageListWithOnlyStringPackages = TRUE; - Status = AddStringPackagesToMatchingIfrPackageList ( - Private, - UefiPackageListHeader - ); - - if (!EFI_ERROR (Status) || Status == EFI_NOT_FOUND) { - - if (Status == EFI_NOT_FOUND) { - Status = EFI_SUCCESS; - } - } - } - } else { - if (StringPackNum == 0) { - // - // Register the Package List to UEFI HII first. - // - Status = FindAndAddStringPackageToIfrPackageList ( - Private, - Packages->GuidId, - HandleMappingEntry->UefiHiiHandle - ); - ASSERT_EFI_ERROR (Status); - if (!EFI_ERROR (Status)) { - HandleMappingEntry->DoesPackageListImportStringPackages = TRUE; - } - } - } - - if (!EFI_ERROR (Status)) { - InsertTailList (&Private->HiiThunkHandleMappingDBListHead, &HandleMappingEntry->List); - } - -Done: - if (EFI_ERROR (Status)) { - FreePool (HandleMappingEntry); - } else { - *Handle = HandleMappingEntry->FrameworkHiiHandle; - } - - FreePool (UefiPackageListHeader); - SafeFreePool (GuidId); - - return Status; -} - -EFI_STATUS -EFIAPI -HiiNewPack ( - IN EFI_HII_PROTOCOL *This, - IN EFI_HII_PACKAGES *Packages, - OUT FRAMEWORK_EFI_HII_HANDLE *Handle - ) -/*++ - -Routine Description: - - Extracts the various packs from a package list. - -Arguments: - - This - Pointer of HII protocol. - Packages - Pointer of HII packages. - Handle - Handle value to be returned. - -Returns: - - EFI_SUCCESS - Pacakges has added to HII database successfully. - EFI_INVALID_PARAMETER - Invalid parameter. - ---*/ -{ - EFI_STATUS Status; - EFI_HII_THUNK_PRIVATE_DATA *Private; - - if (Handle == NULL) { - return EFI_INVALID_PARAMETER; - } - - if (Packages == NULL) { - return EFI_INVALID_PARAMETER; - } - - Private = EFI_HII_THUNK_PRIVATE_DATA_FROM_THIS(This); - - Status = UefiRegisterPackageList ( - Private, - Packages, - Handle - ); - - return Status; -} - -EFI_STATUS -EFIAPI -HiiRemovePack ( - IN EFI_HII_PROTOCOL *This, - IN FRAMEWORK_EFI_HII_HANDLE Handle - ) -/*++ - -Routine Description: - Removes the various packs from a Handle - -Arguments: - -Returns: - ---*/ -{ - EFI_STATUS Status; - EFI_HII_THUNK_PRIVATE_DATA *Private; - LIST_ENTRY *ListEntry; - HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY *HandleMapEntry; - - Private = EFI_HII_THUNK_PRIVATE_DATA_FROM_THIS(This); - - for (ListEntry = Private->HiiThunkHandleMappingDBListHead.ForwardLink; - ListEntry != &Private->HiiThunkHandleMappingDBListHead; - ListEntry = ListEntry->ForwardLink - ) { - HandleMapEntry = HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY_FROM_LISTENTRY (ListEntry); - - if (Handle == HandleMapEntry->FrameworkHiiHandle) { - Status = mUefiHiiDatabaseProtocol->RemovePackageList ( - mUefiHiiDatabaseProtocol, - HandleMapEntry->UefiHiiHandle - ); - ASSERT_EFI_ERROR (Status); - - RemoveEntryList (ListEntry); - return Status; - } - } - - return EFI_NOT_FOUND; -} diff --git a/EdkCompatibilityPkg/Compatiblity/FrameworkHiiToUefiHiiThunk/Strings.c b/EdkCompatibilityPkg/Compatiblity/FrameworkHiiToUefiHiiThunk/Strings.c deleted file mode 100644 index 0054ee43fc..0000000000 --- a/EdkCompatibilityPkg/Compatiblity/FrameworkHiiToUefiHiiThunk/Strings.c +++ /dev/null @@ -1,315 +0,0 @@ -/**@file - - This file contains the keyboard processing code to the HII database. - -Copyright (c) 2006 - 2008, 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. - -**/ - - -#include "HiiDatabase.h" - -EFI_STATUS -EFIAPI -HiiTestString ( - IN EFI_HII_PROTOCOL *This, - IN CHAR16 *StringToTest, - IN OUT UINT32 *FirstMissing, - OUT UINT32 *GlyphBufferSize - ) -/*++ - -Routine Description: - Test if all of the characters in a string have corresponding font characters. - -Arguments: - -Returns: - ---*/ -{ - ASSERT (FALSE); - return EFI_SUCCESS; -} - -EFI_STATUS -GetTagGuidByFrameworkHiiHandle ( - IN CONST EFI_HII_THUNK_PRIVATE_DATA *Private, - IN FRAMEWORK_EFI_HII_HANDLE FrameworkHiiHandle, - OUT EFI_GUID *TagGuid - ) -{ - LIST_ENTRY *ListEntry; - HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY *HandleMapEntry; - - ASSERT (TagGuid != NULL); - - for (ListEntry = Private->HiiThunkHandleMappingDBListHead.ForwardLink; - ListEntry != &Private->HiiThunkHandleMappingDBListHead; - ListEntry = ListEntry->ForwardLink - ) { - - HandleMapEntry = HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY_FROM_LISTENTRY (ListEntry); - - if (FrameworkHiiHandle == HandleMapEntry->FrameworkHiiHandle) { - CopyGuid (TagGuid, &HandleMapEntry->TagGuid); - return EFI_SUCCESS; - } - } - - return EFI_NOT_FOUND; -} - -EFI_STATUS -HiiThunkNewStringForAllStringPackages ( - IN CONST EFI_HII_THUNK_PRIVATE_DATA *Private, - OUT CONST EFI_GUID *TagGuid, - IN CHAR16 *Language, - IN OUT STRING_REF *Reference, - IN CHAR16 *NewString - ) -{ - EFI_STATUS Status; - LIST_ENTRY *ListEntry; - HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY *HandleMapEntry; - EFI_STRING_ID StringId1; - EFI_STRING_ID StringId2; - CHAR8 *UefiStringProtocolLanguage; - BOOLEAN Found; - - ASSERT (TagGuid != NULL); - - StringId1 = (EFI_STRING_ID) 0; - StringId2 = (EFI_STRING_ID) 0; - Found = FALSE; - - // - // BugBug: We will handle the case that Language is not NULL later. - // - ASSERT (Language == NULL); - - //if (Language == NULL) { - UefiStringProtocolLanguage = NULL; - //} - - for (ListEntry = Private->HiiThunkHandleMappingDBListHead.ForwardLink; - ListEntry != &Private->HiiThunkHandleMappingDBListHead; - ListEntry = ListEntry->ForwardLink - ) { - - HandleMapEntry = HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY_FROM_LISTENTRY (ListEntry); - - if (CompareGuid (TagGuid, &HandleMapEntry->TagGuid)) { - Found = TRUE; - if (*Reference == 0) { - Status = HiiLibNewString (HandleMapEntry->UefiHiiHandle, &StringId2, NewString); - } else { - Status = HiiLibSetString (HandleMapEntry->UefiHiiHandle, *Reference, NewString); - } - if (EFI_ERROR (Status)) { - return Status; - } - if (*Reference == 0) { - if (StringId1 == (EFI_STRING_ID) 0) { - StringId1 = StringId2; - } else { - if (StringId1 != StringId2) { - ASSERT(FALSE); - return EFI_INVALID_PARAMETER; - } - } - } - } - } - - if (Found) { - *Reference = StringId1; - Status = EFI_SUCCESS; - } else { - Status = EFI_NOT_FOUND; - } - - return Status; -} - -EFI_STATUS -EFIAPI -HiiNewString ( - IN EFI_HII_PROTOCOL *This, - IN CHAR16 *Language, - IN FRAMEWORK_EFI_HII_HANDLE Handle, - IN OUT STRING_REF *Reference, - IN CHAR16 *NewString - ) -/*++ - -Routine Description: - This function allows a new String to be added to an already existing String Package. - We will make a buffer the size of the package + StrSize of the new string. We will - copy the string package that first gets changed and the following language packages until - we encounter the NULL string package. All this time we will ensure that the offsets have - been adjusted. - -Arguments: - -Returns: - ---*/ -{ - EFI_STATUS Status; - EFI_HII_THUNK_PRIVATE_DATA *Private; - EFI_GUID TagGuid; - - Private = EFI_HII_THUNK_PRIVATE_DATA_FROM_THIS(This); - - Status = GetTagGuidByFrameworkHiiHandle (Private, Handle, &TagGuid); - ASSERT_EFI_ERROR (Status); - - Status = HiiThunkNewStringForAllStringPackages (Private, &TagGuid, Language, Reference, NewString); - ASSERT_EFI_ERROR (Status); - - return EFI_SUCCESS; -} - -EFI_STATUS -EFIAPI -HiiResetStrings ( - IN EFI_HII_PROTOCOL *This, - IN FRAMEWORK_EFI_HII_HANDLE Handle - ) -/*++ - -Routine Description: - - This function removes any new strings that were added after the initial string export for this handle. - -Arguments: - -Returns: - ---*/ -{ - ASSERT (FALSE); - return EFI_UNSUPPORTED; -} - -EFI_STATUS -EFIAPI -HiiGetString ( - IN EFI_HII_PROTOCOL *This, - IN FRAMEWORK_EFI_HII_HANDLE Handle, - IN STRING_REF Token, - IN BOOLEAN Raw, - IN CHAR16 *LanguageString, - IN OUT UINTN *BufferLengthTemp, - OUT EFI_STRING StringBuffer - ) -/*++ - -Routine Description: - - This function extracts a string from a package already registered with the EFI HII database. - -Arguments: - This - A pointer to the EFI_HII_PROTOCOL instance. - Handle - The HII handle on which the string resides. - Token - The string token assigned to the string. - Raw - If TRUE, the string is returned unedited in the internal storage format described - above. If false, the string returned is edited by replacing with - and by removing special characters such as the prefix. - LanguageString - Pointer to a NULL-terminated string containing a single ISO 639-2 language - identifier, indicating the language to print. If the LanguageString is empty (starts - with a NULL), the default system language will be used to determine the language. - BufferLength - Length of the StringBuffer. If the status reports that the buffer width is too - small, this parameter is filled with the length of the buffer needed. - StringBuffer - The buffer designed to receive the characters in the string. Type EFI_STRING is - defined in String. - -Returns: - EFI_INVALID_PARAMETER - If input parameter is invalid. - EFI_BUFFER_TOO_SMALL - If the *BufferLength is too small. - EFI_SUCCESS - Operation is successful. - ---*/ -{ - LIST_ENTRY *ListEntry; - HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY *HandleMapEntry; - CHAR8 *AsciiLanguage; - EFI_HII_THUNK_PRIVATE_DATA *Private; - - Private = EFI_HII_THUNK_PRIVATE_DATA_FROM_THIS(This); - - if (LanguageString == NULL) { - AsciiLanguage = NULL; - } else { - AsciiLanguage = AllocateZeroPool (StrLen (LanguageString) + 1); - if (AsciiLanguage == NULL) { - return EFI_OUT_OF_RESOURCES; - } - UnicodeStrToAsciiStr (LanguageString, AsciiLanguage); - } - - for (ListEntry = Private->HiiThunkHandleMappingDBListHead.ForwardLink; - ListEntry != &Private->HiiThunkHandleMappingDBListHead; - ListEntry = ListEntry->ForwardLink - ) { - - HandleMapEntry = HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY_FROM_LISTENTRY (ListEntry); - - if (Handle == HandleMapEntry->FrameworkHiiHandle) { - if (AsciiLanguage == NULL) { - return HiiLibGetString (HandleMapEntry->UefiHiiHandle, Token, StringBuffer, BufferLengthTemp); - } else { - return mUefiStringProtocol->GetString ( - mUefiStringProtocol, - AsciiLanguage, - HandleMapEntry->UefiHiiHandle, - Token, - StringBuffer, - BufferLengthTemp, - NULL - ); - } - } - } - - return EFI_NOT_FOUND; -} - -EFI_STATUS -EFIAPI -HiiGetLine ( - IN EFI_HII_PROTOCOL *This, - IN FRAMEWORK_EFI_HII_HANDLE Handle, - IN STRING_REF Token, - IN OUT UINT16 *Index, - IN UINT16 LineWidth, - IN CHAR16 *LanguageString, - IN OUT UINT16 *BufferLength, - OUT EFI_STRING StringBuffer - ) -/*++ - -Routine Description: - - This function allows a program to extract a part of a string of not more than a given width. - With repeated calls, this allows a calling program to extract "lines" of text that fit inside - columns. The effort of measuring the fit of strings inside columns is localized to this call. - -Arguments: - -Returns: - ---*/ -{ - ASSERT (FALSE); - return EFI_UNSUPPORTED; -} - diff --git a/EdkCompatibilityPkg/Compatiblity/FrameworkHiiToUefiHiiThunk/Utility.c b/EdkCompatibilityPkg/Compatiblity/FrameworkHiiToUefiHiiThunk/Utility.c deleted file mode 100644 index 30b743e19e..0000000000 --- a/EdkCompatibilityPkg/Compatiblity/FrameworkHiiToUefiHiiThunk/Utility.c +++ /dev/null @@ -1,41 +0,0 @@ -/**@file - - This file contains the keyboard processing code to the HII database. - -Copyright (c) 2006 - 2008, 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. - -**/ - - -#include "HiiDatabase.h" - -EFI_GUID * -GetGuidOfFirstFormset ( - CONST EFI_HII_FORM_PACKAGE * FormPackage -) -{ - UINT8 *StartOfNextPackage; - EFI_IFR_OP_HEADER *OpCodeData; - - StartOfNextPackage = (UINT8 *) FormPackage + FormPackage->Header.Length; - OpCodeData = (EFI_IFR_OP_HEADER *) (FormPackage + 1); - - while ((UINT8 *) OpCodeData < StartOfNextPackage) { - if (OpCodeData->OpCode == EFI_IFR_FORM_SET_OP) { - return &(((EFI_IFR_FORM_SET *) OpCodeData)->Guid); - } - OpCodeData = (EFI_IFR_OP_HEADER *) ((UINT8 *) OpCodeData + OpCodeData->Length); - } - - ASSERT (FALSE); - - return NULL; -} - diff --git a/EdkCompatibilityPkg/Compatiblity/FrameworkHiiToUefiHiiThunk/Utility.h b/EdkCompatibilityPkg/Compatiblity/FrameworkHiiToUefiHiiThunk/Utility.h deleted file mode 100644 index 5edde947ad..0000000000 --- a/EdkCompatibilityPkg/Compatiblity/FrameworkHiiToUefiHiiThunk/Utility.h +++ /dev/null @@ -1,24 +0,0 @@ -/**@file - - This file contains utility functions by HII Thunk Modules. - -Copyright (c) 2006 - 2008, 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. - -**/ - -#ifndef _HII_THUNK_UTILITY_H -#define _HII_THUNK_UTILITY_H - -EFI_GUID * -GetGuidOfFirstFormset ( - CONST EFI_HII_FORM_PACKAGE * FormPackage -); - -#endif diff --git a/EdkCompatibilityPkg/Compatiblity/Fv2ToFvThunk/Fv2ToFvThunk.c b/EdkCompatibilityPkg/Compatiblity/Fv2ToFvThunk/Fv2ToFvThunk.c deleted file mode 100644 index da2ada6899..0000000000 --- a/EdkCompatibilityPkg/Compatiblity/Fv2ToFvThunk/Fv2ToFvThunk.c +++ /dev/null @@ -1,1492 +0,0 @@ -/*++ - -Copyright (c) 2006 - 2008 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: - - FvToFv2Thunk.c - -Abstract: - - DXE driver - ---*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/** - - Because of constraints imposed by the underlying firmware - storage, an instance of the Firmware Volume Protocol may not - be to able to support all possible variations of this - architecture. These constraints and the current state of the - firmware volume are exposed to the caller using the - GetVolumeAttributes() function. GetVolumeAttributes() is - callable only from TPL_NOTIFY and below. Behavior of - GetVolumeAttributes() at any EFI_TPL above TPL_NOTIFY is - undefined. Type EFI_TPL is defined in RaiseTPL() in the UEFI - 2.0 specification. - - @param This Indicates the EFI_FIRMWARE_VOLUME2_PROTOCOL - instance. - - @param FvAttributes Pointer to an EFI_FV_ATTRIBUTES in which - the attributes and current settings are - returned. - - - @retval EFI_SUCCESS The firmware volume attributes were - returned. - -**/ -EFI_STATUS -EFIAPI -Fv2GetVolumeAttributes ( - IN CONST EFI_FIRMWARE_VOLUME2_PROTOCOL *This, - OUT EFI_FV_ATTRIBUTES *FvAttributes - ); - - -/** - The SetVolumeAttributes() function is used to set configurable - firmware volume attributes. Only EFI_FV_READ_STATUS, - EFI_FV_WRITE_STATUS, and EFI_FV_LOCK_STATUS may be modified, and - then only in accordance with the declared capabilities. All - other bits of FvAttributes are ignored on input. On successful - return, all bits of *FvAttributes are valid and it contains the - completed EFI_FV_ATTRIBUTES for the volume. To modify an - attribute, the corresponding status bit in the EFI_FV_ATTRIBUTES - is set to the desired value on input. The EFI_FV_LOCK_STATUS bit - does not affect the ability to read or write the firmware - volume. Rather, once the EFI_FV_LOCK_STATUS bit is set, it - prevents further modification to all the attribute bits. - SetVolumeAttributes() is callable only from TPL_NOTIFY and - below. Behavior of SetVolumeAttributes() at any EFI_TPL above - TPL_NOTIFY is undefined. Type EFI_TPL is defined in - RaiseTPL() in the UEFI 2.0 specification. - - - @param This Indicates the EFI_FIRMWARE_VOLUME2_PROTOCOL - instance. - - @param FvAttributes On input, FvAttributes is a pointer to - an EFI_FV_ATTRIBUTES containing the - desired firmware volume settings. On - successful return, it contains the new - settings of the firmware volume. On - unsuccessful return, FvAttributes is not - modified and the firmware volume - settings are not changed. - - @retval EFI_SUCCESS The requested firmware volume attributes - were set and the resulting - EFI_FV_ATTRIBUTES is returned in - FvAttributes. - - @retval EFI_INVALID_PARAMETER FvAttributes:EFI_FV_READ_STATUS - is set to 1 on input, but the - device does not support enabling - reads - (FvAttributes:EFI_FV_READ_ENABLE - is clear on return from - GetVolumeAttributes()). Actual - volume attributes are unchanged. - - @retval EFI_INVALID_PARAMETER FvAttributes:EFI_FV_READ_STATUS - is cleared to 0 on input, but - the device does not support - disabling reads - (FvAttributes:EFI_FV_READ_DISABL - is clear on return from - GetVolumeAttributes()). Actual - volume attributes are unchanged. - - @retval EFI_INVALID_PARAMETER FvAttributes:EFI_FV_WRITE_STATUS - is set to 1 on input, but the - device does not support enabling - writes - (FvAttributes:EFI_FV_WRITE_ENABL - is clear on return from - GetVolumeAttributes()). Actual - volume attributes are unchanged. - - @retval EFI_INVALID_PARAMETER FvAttributes:EFI_FV_WRITE_STATUS - is cleared to 0 on input, but - the device does not support - disabling writes - (FvAttributes:EFI_FV_WRITE_DISAB - is clear on return from - GetVolumeAttributes()). Actual - volume attributes are unchanged. - - @retval EFI_INVALID_PARAMETER FvAttributes:EFI_FV_LOCK_STATUS - is set on input, but the device - does not support locking - (FvAttributes:EFI_FV_LOCK_CAP is - clear on return from - GetVolumeAttributes()). Actual - volume attributes are unchanged. - - @retval EFI_ACCESS_DENIED Device is locked and does not - allow attribute modification - (FvAttributes:EFI_FV_LOCK_STATUS - is set on return from - GetVolumeAttributes()). Actual - volume attributes are unchanged. - -**/ -EFI_STATUS -EFIAPI -Fv2SetVolumeAttributes ( - IN CONST EFI_FIRMWARE_VOLUME2_PROTOCOL *This, - IN OUT EFI_FV_ATTRIBUTES *FvAttributes - ); - - -/** - ReadFile() is used to retrieve any file from a firmware volume - during the DXE phase. The actual binary encoding of the file in - the firmware volume media may be in any arbitrary format as long - as it does the following: ?It is accessed using the Firmware - Volume Protocol. ?The image that is returned follows the image - format defined in Code Definitions: PI Firmware File Format. - If the input value of Buffer==NULL, it indicates the caller is - requesting only that the type, attributes, and size of the - file be returned and that there is no output buffer. In this - case, the following occurs: - - BufferSize is returned with the size that is required to - successfully complete the read. - - The output parameters FoundType and *FileAttributes are - returned with valid values. - - The returned value of *AuthenticationStatus is undefined. - - If the input value of Buffer!=NULL, the output buffer is - specified by a double indirection of the Buffer parameter. The - input value of *Buffer is used to determine if the output - buffer is caller allocated or is dynamically allocated by - ReadFile(). If the input value of *Buffer!=NULL, it indicates - the output buffer is caller allocated. In this case, the input - value of *BufferSize indicates the size of the - caller-allocated output buffer. If the output buffer is not - large enough to contain the entire requested output, it is - filled up to the point that the output buffer is exhausted and - EFI_WARN_BUFFER_TOO_SMALL is returned, and then BufferSize is - returned with the size required to successfully complete the - read. All other output parameters are returned with valid - values. If the input value of *Buffer==NULL, it indicates the - output buffer is to be allocated by ReadFile(). In this case, - ReadFile() will allocate an appropriately sized buffer from - boot services pool memory, which will be returned in Buffer. - The size of the new buffer is returned in BufferSize and all - other output parameters are returned with valid values. - ReadFile() is callable only from TPL_NOTIFY and below. - Behavior of ReadFile() at any EFI_TPL above TPL_NOTIFY is - undefined. Type EFI_TPL is defined in RaiseTPL() in the UEFI - 2.0 specification. - - @param This Indicates the EFI_FIRMWARE_VOLUME2_PROTOCOL - instance. - - @param NameGuid Pointer to an EFI_GUID, which is the file - name. All firmware file names are EFI_GUIDs. - A single firmware volume must not have two - valid files with the same file name - EFI_GUID. - - @param Buffer Pointer to a pointer to a buffer in which the - file contents are returned, not including the - file header. - @param BufferSize Pointer to a caller-allocated UINTN. It - indicates the size of the memory - represented by Buffer. - - @param FoundType Pointer to a caller-allocated - EFI_FV_FILETYPE. - - @param FileAttributes Pointer to a caller-allocated - EFI_FV_FILE_ATTRIBUTES. - - @param AuthenticationStatus Pointer to a caller-allocated - UINT32 in which the - authentication status is - returned. - - @retval EFI_SUCCESS The call completed successfully. - - @retval EFI_WARN_BUFFER_TOO_SMALL The buffer is too small to - contain the requested - output. The buffer is - filled and the output is - truncated. - - @retval EFI_OUT_OF_RESOURCES An allocation failure occurred. - - @retavl EFI_NOT_FOUND Name was not found in the firmware - volume. - - @retval EFI_DEVICE_ERROR A hardware error occurred when - attempting to access the firmware - volume. - - @retval EFI_ACCESS_DENIED The firmware volume is configured to - isallow reads. - -**/ -EFI_STATUS -EFIAPI -Fv2ReadFile ( - IN CONST EFI_FIRMWARE_VOLUME2_PROTOCOL *This, - IN CONST EFI_GUID *NameGuid, - IN OUT VOID **Buffer, - IN OUT UINTN *BufferSize, - OUT EFI_FV_FILETYPE *FoundType, - OUT EFI_FV_FILE_ATTRIBUTES *FileAttributes, - OUT UINT32 *AuthenticationStatus - ); - -/** - ReadSection() is used to retrieve a specific section from a file - within a firmware volume. The section returned is determined - using a depth-first, left-to-right search algorithm through all - sections found in the specified file. See - ????Firmware File Sections???? on page 9 for more details about - sections. The output buffer is specified by a double indirection - of the Buffer parameter. The input value of Buffer is used to - determine if the output buffer is caller allocated or is - dynamically allocated by ReadSection(). If the input value of - Buffer!=NULL, it indicates that the output buffer is caller - allocated. In this case, the input value of *BufferSize - indicates the size of the caller-allocated output buffer. If - the output buffer is not large enough to contain the entire - requested output, it is filled up to the point that the output - buffer is exhausted and EFI_WARN_BUFFER_TOO_SMALL is returned, - and then BufferSize is returned with the size that is required - to successfully complete the read. All other - output parameters are returned with valid values. If the input - value of *Buffer==NULL, it indicates the output buffer is to - be allocated by ReadSection(). In this case, ReadSection() - will allocate an appropriately sized buffer from boot services - pool memory, which will be returned in *Buffer. The size of - the new buffer is returned in *BufferSize and all other output - parameters are returned with valid values. ReadSection() is - callable only from TPL_NOTIFY and below. Behavior of - ReadSection() at any EFI_TPL above TPL_NOTIFY is - undefined. Type EFI_TPL is defined in RaiseTPL() in the UEFI - 2.0 specification. - - - @param This Indicates the EFI_FIRMWARE_VOLUME2_PROTOCOL - instance. - - @param NameGuid Pointer to an EFI_GUID, which indicates the - file name from which the requested section - will be read. - - @param SectionType Indicates the section type to return. - SectionType in conjunction with - SectionInstance indicates which section to - return. - - @param SectionInstance Indicates which instance of sections - with a type of SectionType to return. - SectionType in conjunction with - SectionInstance indicates which - section to return. SectionInstance is - zero based. - - @param Buffer Pointer to a pointer to a buffer in which the - section contents are returned, not including - the section header. - - @param BufferSize Pointer to a caller-allocated UINTN. It - indicates the size of the memory - represented by Buffer. - - @param AuthenticationStatus Pointer to a caller-allocated - UINT32 in which the authentication - status is returned. - - - @retval EFI_SUCCESS The call completed successfully. - - @retval EFI_WARN_BUFFER_TOO_SMALL The caller-allocated - buffer is too small to - contain the requested - output. The buffer is - filled and the output is - truncated. - - @retval EFI_OUT_OF_RESOURCES An allocation failure occurred. - - @retval EFI_NOT_FOUND The requested file was not found in - the firmware volume. EFI_NOT_FOUND The - requested section was not found in the - specified file. - - @retval EFI_DEVICE_ERROR A hardware error occurred when - attempting to access the firmware - volume. - - @retval EFI_ACCESS_DENIED The firmware volume is configured to - disallow reads. EFI_PROTOCOL_ERROR - The requested section was not found, - but the file could not be fully - parsed because a required - GUIDED_SECTION_EXTRACTION_PROTOCOL - was not found. It is possible the - requested section exists within the - file and could be successfully - extracted once the required - GUIDED_SECTION_EXTRACTION_PROTOCOL - is published. - -**/ -EFI_STATUS -EFIAPI -Fv2ReadSection ( - IN CONST EFI_FIRMWARE_VOLUME2_PROTOCOL *This, - IN CONST EFI_GUID *NameGuid, - IN EFI_SECTION_TYPE SectionType, - IN UINTN SectionInstance, - IN OUT VOID **Buffer, - IN OUT UINTN *BufferSize, - OUT UINT32 *AuthenticationStatus - ); - -/** - WriteFile() is used to write one or more files to a firmware - volume. Each file to be written is described by an - EFI_FV_WRITE_FILE_DATA structure. The caller must ensure that - any required alignment for all files listed in the FileData - array is compatible with the firmware volume. Firmware volume - capabilities can be determined using the GetVolumeAttributes() - call. Similarly, if the WritePolicy is set to - EFI_FV_RELIABLE_WRITE, the caller must check the firmware volume - capabilities to ensure EFI_FV_RELIABLE_WRITE is supported by the - firmware volume. EFI_FV_UNRELIABLE_WRITE must always be - supported. Writing a file with a size of zero - (FileData[n].BufferSize == 0) deletes the file from the firmware - volume if it exists. Deleting a file must be done one at a time. - Deleting a file as part of a multiple file write is not allowed. - Platform Initialization Specification VOLUME 3 Shared - Architectural Elements 84 August 21, 2006 Version 1.0 - WriteFile() is callable only from TPL_NOTIFY and below. - Behavior of WriteFile() at any EFI_TPL above TPL_NOTIFY is - undefined. Type EFI_TPL is defined in RaiseTPL() in the UEFI 2.0 - specification. - - @param This Indicates the EFI_FIRMWARE_VOLUME2_PROTOCOL - instance. NumberOfFiles Indicates the number of - elements in the array pointed to by FileData. - - - @param WritePolicy Indicates the level of reliability for the - write in the event of a power failure or - other system failure during the write - operation. - - @param FileData Pointer to an array of - EFI_FV_WRITE_FILE_DATA. Each element of - FileData[] represents a file to be written. - - - @retval EFI_SUCCESS The write completed successfully. - - @retval EFI_OUT_OF_RESOURCES The firmware volume does not - have enough free space to - storefile(s). - - @retval EFI_DEVICE_ERROR A hardware error occurred when - attempting to access the firmware volume. - - @retval EFI_WRITE_PROTECTED The firmware volume is - configured to disallow writes. - - @retval EFI_NOT_FOUND A delete was requested, but the - requested file was not found in the - firmware volume. - - @retval EFI_INVALID_PARAMETER A delete was requested with a - multiple file write. - - @retval EFI_INVALID_PARAMETER An unsupported WritePolicy was - requested. - - @retval EFI_INVALID_PARAMETER An unknown file type was - specified. - - @retval EFI_INVALID_PARAMETER A file system specific error - has occurred. - -**/ -EFI_STATUS -EFIAPI -Fv2WriteFile ( - IN CONST EFI_FIRMWARE_VOLUME2_PROTOCOL *This, - IN UINT32 NumberOfFiles, - IN EFI_FV_WRITE_POLICY WritePolicy, - IN EFI_FV_WRITE_FILE_DATA *FileData - ); - -/** - GetNextFile() is the interface that is used to search a firmware - volume for a particular file. It is called successively until - the desired file is located or the function returns - EFI_NOT_FOUND. To filter uninteresting files from the output, - the type of file to search for may be specified in FileType. For - example, if *FileType is EFI_FV_FILETYPE_DRIVER, only files of - this type will be returned in the output. If *FileType is - EFI_FV_FILETYPE_ALL, no filtering of file types is done. The Key - parameter is used to indicate a starting point of the search. If - the buffer *Key is completely initialized to zero, the search - re-initialized and starts at the beginning. Subsequent calls to - GetNextFile() must maintain the value of *Key returned by the - immediately previous call. The actual contents of *Key are - implementation specific and no semantic content is implied. - GetNextFile() is callable only from TPL_NOTIFY and below. - Behavior of GetNextFile() at any EFI_TPL above TPL_NOTIFY is - undefined. Type EFI_TPL is defined in RaiseTPL() in the UEFI 2.0 - specification. Status Codes Returned - - - @param This Indicates the EFI_FIRMWARE_VOLUME2_PROTOCOL - instance. Key Pointer to a caller-allocated buffer - that contains implementation-specific data that is - used to track where to begin the search for the - next file. The size of the buffer must be at least - This->KeySize bytes long. To re-initialize the - search and begin from the beginning of the - firmware volume, the entire buffer must be cleared - to zero. Other than clearing the buffer to - initiate a new search, the caller must not modify - the data in the buffer between calls to - GetNextFile(). - - @param FileType Pointer to a caller-allocated - EFI_FV_FILETYPE. The GetNextFile() API can - filter its search for files based on the - value of the FileType input. A *FileType - input of EFI_FV_FILETYPE_ALL causes - GetNextFile() to search for files of all - types. If a file is found, the file's type - is returned in FileType. *FileType is not - modified if no file is found. - - @param NameGuid Pointer to a caller-allocated EFI_GUID. If a - matching file is found, the file's name is - returned in NameGuid. If no matching file is - found, *NameGuid is not modified. - - @param Attributes Pointer to a caller-allocated - EFI_FV_FILE_ATTRIBUTES. If a matching file - is found, the file's attributes are returned - in Attributes. If no matching file is found, - Attributes is not modified. Type - EFI_FV_FILE_ATTRIBUTES is defined in - ReadFile(). - - @param Size Pointer to a caller-allocated UINTN. If a - matching file is found, the file's size is - returned in *Size. If no matching file is found, - Size is not modified. - - @retval EFI_SUCCESS The output parameters are filled with data - obtained from the first matching file that - was found. - - @retval FI_NOT_FOUND No files of type FileType were found. - - - @retval EFI_DEVICE_ERROR A hardware error occurred when - attempting to access the firmware - volume. - - @retval EFI_ACCESS_DENIED The firmware volume is configured to - disallow reads. - - -**/ -EFI_STATUS -EFIAPI -Fv2GetNextFile ( - IN CONST EFI_FIRMWARE_VOLUME2_PROTOCOL *This, - IN OUT VOID *Key, - IN OUT EFI_FV_FILETYPE *FileType, - OUT EFI_GUID *NameGuid, - OUT EFI_FV_FILE_ATTRIBUTES *Attributes, - OUT UINTN *Size - ); - -/** - The GetInfo() function returns information of type - InformationType for the requested firmware volume. If the volume - does not support the requested information type, then - EFI_UNSUPPORTED is returned. If the buffer is not large enough - to hold the requested structure, EFI_BUFFER_TOO_SMALL is - returned and the BufferSize is set to the size of buffer that is - required to make the request. The information types defined by - this specification are required information types that all file - systems must support. - - @param This A pointer to the EFI_FIRMWARE_VOLUME2_PROTOCOL - instance that is the file handle the requested - information is for. - - @param InformationType The type identifier for the - information being requested. - - @param BufferSize On input, the size of Buffer. On output, - the amount of data returned in Buffer. In - both cases, the size is measured in bytes. - - @param Buffer A pointer to the data buffer to return. The - buffer's type is indicated by InformationType. - - - @retval EFI_SUCCESS The information was retrieved. - - @retval EFI_UNSUPPORTED The InformationType is not known. - - @retval EFI_NO_MEDIA The device has no medium. - - @retval EFI_DEVICE_ERROR The device reported an error. - - @retval EFI_VOLUME_CORRUPTED The file system structures are - corrupted. - - @retval EFI_BUFFER_TOO_SMALL The BufferSize is too small to - read the current directory - entry. BufferSize has been - updated with the size needed to - complete the request. - - -**/ -EFI_STATUS -EFIAPI -Fv2GetInfo ( - IN CONST EFI_FIRMWARE_VOLUME2_PROTOCOL *This, - IN CONST EFI_GUID *InformationType, - IN OUT UINTN *BufferSize, - OUT VOID *Buffer - ); - -/** - - The SetInfo() function sets information of type InformationType - on the requested firmware volume. - - - @param This A pointer to the EFI_FIRMWARE_VOLUME2_PROTOCOL - instance that is the file handle the information - is for. - - @param InformationType The type identifier for the - information being set. - - @param BufferSize The size, in bytes, of Buffer. - - @param Buffer A pointer to the data buffer to write. The - buffer's type is indicated by InformationType. - - @retval EFI_SUCCESS The information was set. - - @retval EFI_UNSUPPORTED The InformationType is not known. - - @retval EFI_NO_MEDIA The device has no medium. - - @retval EFI_DEVICE_ERROR The device reported an error. - - @retval EFI_VOLUME_CORRUPTED The file system structures are - corrupted. - - - @retval EFI_WRITE_PROTECTED The media is read only. - - @retval EFI_VOLUME_FULL The volume is full. - - @retval EFI_BAD_BUFFER_SIZE BufferSize is smaller than the - size of the type indicated by - InformationType. - -**/ -EFI_STATUS -EFIAPI -Fv2SetInfo ( - IN CONST EFI_FIRMWARE_VOLUME2_PROTOCOL *This, - IN CONST EFI_GUID *InformationType, - IN UINTN BufferSize, - IN CONST VOID *Buffer - ); - -// -// -// -#define FIRMWARE_VOLUME2_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('f', 'v', '2', 't') - -typedef struct { - UINTN Signature; - EFI_FIRMWARE_VOLUME2_PROTOCOL FirmwareVolume2; - EFI_FIRMWARE_VOLUME_PROTOCOL *FirmwareVolume; -} FIRMWARE_VOLUME2_PRIVATE_DATA; - -#define FIRMWARE_VOLUME2_PRIVATE_DATA_FROM_THIS(a) CR (a, FIRMWARE_VOLUME2_PRIVATE_DATA, FirmwareVolume2, FIRMWARE_VOLUME2_PRIVATE_DATA_SIGNATURE) - -// -// Firmware Volume Protocol template -// -EFI_EVENT mFv2Registration; - -FIRMWARE_VOLUME2_PRIVATE_DATA gFirmwareVolume2PrivateDataTemplate = { - FIRMWARE_VOLUME2_PRIVATE_DATA_SIGNATURE, - { - Fv2GetVolumeAttributes, - Fv2SetVolumeAttributes, - Fv2ReadFile, - Fv2ReadSection, - Fv2WriteFile, - Fv2GetNextFile, - 0, - NULL, - Fv2GetInfo, - Fv2SetInfo - }, - NULL -}; - -// -// Module globals -// - -VOID -EFIAPI -Fv2NotificationEvent ( - IN EFI_EVENT Event, - IN VOID *Context - ) -{ - EFI_STATUS Status; - UINTN BufferSize; - EFI_HANDLE Handle; - FIRMWARE_VOLUME2_PRIVATE_DATA *Private; - EFI_FIRMWARE_VOLUME2_PROTOCOL *FirmwareVolume2; - - while (TRUE) { - BufferSize = sizeof (Handle); - Status = gBS->LocateHandle ( - ByRegisterNotify, - &gEfiFirmwareVolumeProtocolGuid, - mFv2Registration, - &BufferSize, - &Handle - ); - if (EFI_ERROR (Status)) { - // - // Exit Path of While Loop.... - // - break; - } - - // - // Skip this handle if the Firmware Volume Protocol is already installed - // - Status = gBS->HandleProtocol ( - Handle, - &gEfiFirmwareVolume2ProtocolGuid, - (VOID **)&FirmwareVolume2 - ); - if (!EFI_ERROR (Status)) { - continue; - } - - // - // Allocate private data structure - // - Private = AllocateCopyPool (sizeof (FIRMWARE_VOLUME2_PRIVATE_DATA), &gFirmwareVolume2PrivateDataTemplate); - if (Private == NULL) { - continue; - } - - // - // Retrieve the Firmware Volume2 Protocol - // - Status = gBS->HandleProtocol ( - Handle, - &gEfiFirmwareVolumeProtocolGuid, - (VOID **)&Private->FirmwareVolume - ); - ASSERT_EFI_ERROR (Status); - - // - // Fill in rest of private data structure - // - Private->FirmwareVolume2.KeySize = Private->FirmwareVolume->KeySize; - Private->FirmwareVolume2.ParentHandle = Private->FirmwareVolume->ParentHandle; - - // - // Install Firmware Volume Protocol onto same handle - // - Status = gBS->InstallMultipleProtocolInterfaces ( - &Handle, - &gEfiFirmwareVolume2ProtocolGuid, - &Private->FirmwareVolume2, - NULL - ); - ASSERT_EFI_ERROR (Status); - } -} - - -/** - The user Entry Point for DXE driver. The user code starts with this function - as the real entry point for the image goes into a library that calls this - function. - - @param[in] ImageHandle The firmware allocated handle for the EFI image. - @param[in] SystemTable A pointer to the EFI System Table. - - @retval EFI_SUCCESS The entry point is executed successfully. - @retval other Some error occurs when executing this entry point. - -**/ -EFI_STATUS -EFIAPI -InitializeFirmwareVolume ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable - ) -{ - EfiCreateProtocolNotifyEvent ( - &gEfiFirmwareVolumeProtocolGuid, - TPL_CALLBACK, - Fv2NotificationEvent, - NULL, - &mFv2Registration - ); - return EFI_SUCCESS; -} - -/** - - Because of constraints imposed by the underlying firmware - storage, an instance of the Firmware Volume Protocol may not - be to able to support all possible variations of this - architecture. These constraints and the current state of the - firmware volume are exposed to the caller using the - GetVolumeAttributes() function. GetVolumeAttributes() is - callable only from TPL_NOTIFY and below. Behavior of - GetVolumeAttributes() at any EFI_TPL above TPL_NOTIFY is - undefined. Type EFI_TPL is defined in RaiseTPL() in the UEFI - 2.0 specification. - - @param This Indicates the EFI_FIRMWARE_VOLUME2_PROTOCOL - instance. - - @param FvAttributes Pointer to an EFI_FV_ATTRIBUTES in which - the attributes and current settings are - returned. - - - @retval EFI_SUCCESS The firmware volume attributes were - returned. - -**/ -EFI_STATUS -EFIAPI -Fv2GetVolumeAttributes ( - IN CONST EFI_FIRMWARE_VOLUME2_PROTOCOL *This, - OUT EFI_FV_ATTRIBUTES *FvAttributes - ) -{ - EFI_STATUS Status; - FIRMWARE_VOLUME2_PRIVATE_DATA *Private; - EFI_FIRMWARE_VOLUME_PROTOCOL *FirmwareVolume; - INTN Alignment; - - Private = FIRMWARE_VOLUME2_PRIVATE_DATA_FROM_THIS (This); - FirmwareVolume = Private->FirmwareVolume; - Status = FirmwareVolume->GetVolumeAttributes ( - FirmwareVolume, - (FRAMEWORK_EFI_FV_ATTRIBUTES *)FvAttributes - ); - if (!EFI_ERROR (Status)) { - Alignment = LowBitSet64 (RShiftU64 (*FvAttributes, 16) & 0xffff); - if (Alignment != -1) { - Alignment = Alignment << 16; - } else { - Alignment = 0; - } - *FvAttributes = (*FvAttributes & 0x1ff) | Alignment; - } - return Status; -} - -/** - The SetVolumeAttributes() function is used to set configurable - firmware volume attributes. Only EFI_FV_READ_STATUS, - EFI_FV_WRITE_STATUS, and EFI_FV_LOCK_STATUS may be modified, and - then only in accordance with the declared capabilities. All - other bits of FvAttributes are ignored on input. On successful - return, all bits of *FvAttributes are valid and it contains the - completed EFI_FV_ATTRIBUTES for the volume. To modify an - attribute, the corresponding status bit in the EFI_FV_ATTRIBUTES - is set to the desired value on input. The EFI_FV_LOCK_STATUS bit - does not affect the ability to read or write the firmware - volume. Rather, once the EFI_FV_LOCK_STATUS bit is set, it - prevents further modification to all the attribute bits. - SetVolumeAttributes() is callable only from TPL_NOTIFY and - below. Behavior of SetVolumeAttributes() at any EFI_TPL above - TPL_NOTIFY is undefined. Type EFI_TPL is defined in - RaiseTPL() in the UEFI 2.0 specification. - - - @param This Indicates the EFI_FIRMWARE_VOLUME2_PROTOCOL - instance. - - @param FvAttributes On input, FvAttributes is a pointer to - an EFI_FV_ATTRIBUTES containing the - desired firmware volume settings. On - successful return, it contains the new - settings of the firmware volume. On - unsuccessful return, FvAttributes is not - modified and the firmware volume - settings are not changed. - - @retval EFI_SUCCESS The requested firmware volume attributes - were set and the resulting - EFI_FV_ATTRIBUTES is returned in - FvAttributes. - - @retval EFI_INVALID_PARAMETER FvAttributes:EFI_FV_READ_STATUS - is set to 1 on input, but the - device does not support enabling - reads - (FvAttributes:EFI_FV_READ_ENABLE - is clear on return from - GetVolumeAttributes()). Actual - volume attributes are unchanged. - - @retval EFI_INVALID_PARAMETER FvAttributes:EFI_FV_READ_STATUS - is cleared to 0 on input, but - the device does not support - disabling reads - (FvAttributes:EFI_FV_READ_DISABL - is clear on return from - GetVolumeAttributes()). Actual - volume attributes are unchanged. - - @retval EFI_INVALID_PARAMETER FvAttributes:EFI_FV_WRITE_STATUS - is set to 1 on input, but the - device does not support enabling - writes - (FvAttributes:EFI_FV_WRITE_ENABL - is clear on return from - GetVolumeAttributes()). Actual - volume attributes are unchanged. - - @retval EFI_INVALID_PARAMETER FvAttributes:EFI_FV_WRITE_STATUS - is cleared to 0 on input, but - the device does not support - disabling writes - (FvAttributes:EFI_FV_WRITE_DISAB - is clear on return from - GetVolumeAttributes()). Actual - volume attributes are unchanged. - - @retval EFI_INVALID_PARAMETER FvAttributes:EFI_FV_LOCK_STATUS - is set on input, but the device - does not support locking - (FvAttributes:EFI_FV_LOCK_CAP is - clear on return from - GetVolumeAttributes()). Actual - volume attributes are unchanged. - - @retval EFI_ACCESS_DENIED Device is locked and does not - allow attribute modification - (FvAttributes:EFI_FV_LOCK_STATUS - is set on return from - GetVolumeAttributes()). Actual - volume attributes are unchanged. - -**/ -EFI_STATUS -EFIAPI -Fv2SetVolumeAttributes ( - IN CONST EFI_FIRMWARE_VOLUME2_PROTOCOL *This, - IN OUT EFI_FV_ATTRIBUTES *FvAttributes - ) -{ - FIRMWARE_VOLUME2_PRIVATE_DATA *Private; - EFI_FIRMWARE_VOLUME_PROTOCOL *FirmwareVolume; - FRAMEWORK_EFI_FV_ATTRIBUTES FrameworkFvAttributes; - - Private = FIRMWARE_VOLUME2_PRIVATE_DATA_FROM_THIS (This); - FirmwareVolume = Private->FirmwareVolume; - - FrameworkFvAttributes = (*FvAttributes & 0x1ff) | ((UINTN)EFI_FV_ALIGNMENT_2 << ((*FvAttributes & EFI_FV2_ALIGNMENT) >> 16)); - - return FirmwareVolume->SetVolumeAttributes ( - FirmwareVolume, - &FrameworkFvAttributes - ); -} - -/** - ReadFile() is used to retrieve any file from a firmware volume - during the DXE phase. The actual binary encoding of the file in - the firmware volume media may be in any arbitrary format as long - as it does the following: ?It is accessed using the Firmware - Volume Protocol. ?The image that is returned follows the image - format defined in Code Definitions: PI Firmware File Format. - If the input value of Buffer==NULL, it indicates the caller is - requesting only that the type, attributes, and size of the - file be returned and that there is no output buffer. In this - case, the following occurs: - - BufferSize is returned with the size that is required to - successfully complete the read. - - The output parameters FoundType and *FileAttributes are - returned with valid values. - - The returned value of *AuthenticationStatus is undefined. - - If the input value of Buffer!=NULL, the output buffer is - specified by a double indirection of the Buffer parameter. The - input value of *Buffer is used to determine if the output - buffer is caller allocated or is dynamically allocated by - ReadFile(). If the input value of *Buffer!=NULL, it indicates - the output buffer is caller allocated. In this case, the input - value of *BufferSize indicates the size of the - caller-allocated output buffer. If the output buffer is not - large enough to contain the entire requested output, it is - filled up to the point that the output buffer is exhausted and - EFI_WARN_BUFFER_TOO_SMALL is returned, and then BufferSize is - returned with the size required to successfully complete the - read. All other output parameters are returned with valid - values. If the input value of *Buffer==NULL, it indicates the - output buffer is to be allocated by ReadFile(). In this case, - ReadFile() will allocate an appropriately sized buffer from - boot services pool memory, which will be returned in Buffer. - The size of the new buffer is returned in BufferSize and all - other output parameters are returned with valid values. - ReadFile() is callable only from TPL_NOTIFY and below. - Behavior of ReadFile() at any EFI_TPL above TPL_NOTIFY is - undefined. Type EFI_TPL is defined in RaiseTPL() in the UEFI - 2.0 specification. - - @param This Indicates the EFI_FIRMWARE_VOLUME2_PROTOCOL - instance. - - @param NameGuid Pointer to an EFI_GUID, which is the file - name. All firmware file names are EFI_GUIDs. - A single firmware volume must not have two - valid files with the same file name - EFI_GUID. - - @param Buffer Pointer to a pointer to a buffer in which the - file contents are returned, not including the - file header. - @param BufferSize Pointer to a caller-allocated UINTN. It - indicates the size of the memory - represented by Buffer. - - @param FoundType Pointer to a caller-allocated - EFI_FV_FILETYPE. - - @param FileAttributes Pointer to a caller-allocated - EFI_FV_FILE_ATTRIBUTES. - - @param AuthenticationStatus Pointer to a caller-allocated - UINT32 in which the - authentication status is - returned. - - @retval EFI_SUCCESS The call completed successfully. - - @retval EFI_WARN_BUFFER_TOO_SMALL The buffer is too small to - contain the requested - output. The buffer is - filled and the output is - truncated. - - @retval EFI_OUT_OF_RESOURCES An allocation failure occurred. - - @retavl EFI_NOT_FOUND Name was not found in the firmware - volume. - - @retval EFI_DEVICE_ERROR A hardware error occurred when - attempting to access the firmware - volume. - - @retval EFI_ACCESS_DENIED The firmware volume is configured to - isallow reads. - -**/ -EFI_STATUS -EFIAPI -Fv2ReadFile ( - IN CONST EFI_FIRMWARE_VOLUME2_PROTOCOL *This, - IN CONST EFI_GUID *NameGuid, - IN OUT VOID **Buffer, - IN OUT UINTN *BufferSize, - OUT EFI_FV_FILETYPE *FoundType, - OUT EFI_FV_FILE_ATTRIBUTES *FileAttributes, - OUT UINT32 *AuthenticationStatus - ) -{ - FIRMWARE_VOLUME2_PRIVATE_DATA *Private; - EFI_FIRMWARE_VOLUME_PROTOCOL *FirmwareVolume; - - Private = FIRMWARE_VOLUME2_PRIVATE_DATA_FROM_THIS (This); - FirmwareVolume = Private->FirmwareVolume; - - return FirmwareVolume->ReadFile ( - FirmwareVolume, - (EFI_GUID *)NameGuid, - Buffer, - BufferSize, - FoundType, - FileAttributes, - AuthenticationStatus - ); -} - -/** - ReadSection() is used to retrieve a specific section from a file - within a firmware volume. The section returned is determined - using a depth-first, left-to-right search algorithm through all - sections found in the specified file. See - ????Firmware File Sections???? on page 9 for more details about - sections. The output buffer is specified by a double indirection - of the Buffer parameter. The input value of Buffer is used to - determine if the output buffer is caller allocated or is - dynamically allocated by ReadSection(). If the input value of - Buffer!=NULL, it indicates that the output buffer is caller - allocated. In this case, the input value of *BufferSize - indicates the size of the caller-allocated output buffer. If - the output buffer is not large enough to contain the entire - requested output, it is filled up to the point that the output - buffer is exhausted and EFI_WARN_BUFFER_TOO_SMALL is returned, - and then BufferSize is returned with the size that is required - to successfully complete the read. All other - output parameters are returned with valid values. If the input - value of *Buffer==NULL, it indicates the output buffer is to - be allocated by ReadSection(). In this case, ReadSection() - will allocate an appropriately sized buffer from boot services - pool memory, which will be returned in *Buffer. The size of - the new buffer is returned in *BufferSize and all other output - parameters are returned with valid values. ReadSection() is - callable only from TPL_NOTIFY and below. Behavior of - ReadSection() at any EFI_TPL above TPL_NOTIFY is - undefined. Type EFI_TPL is defined in RaiseTPL() in the UEFI - 2.0 specification. - - - @param This Indicates the EFI_FIRMWARE_VOLUME2_PROTOCOL - instance. - - @param NameGuid Pointer to an EFI_GUID, which indicates the - file name from which the requested section - will be read. - - @param SectionType Indicates the section type to return. - SectionType in conjunction with - SectionInstance indicates which section to - return. - - @param SectionInstance Indicates which instance of sections - with a type of SectionType to return. - SectionType in conjunction with - SectionInstance indicates which - section to return. SectionInstance is - zero based. - - @param Buffer Pointer to a pointer to a buffer in which the - section contents are returned, not including - the section header. - - @param BufferSize Pointer to a caller-allocated UINTN. It - indicates the size of the memory - represented by Buffer. - - @param AuthenticationStatus Pointer to a caller-allocated - UINT32 in which the authentication - status is returned. - - - @retval EFI_SUCCESS The call completed successfully. - - @retval EFI_WARN_BUFFER_TOO_SMALL The caller-allocated - buffer is too small to - contain the requested - output. The buffer is - filled and the output is - truncated. - - @retval EFI_OUT_OF_RESOURCES An allocation failure occurred. - - @retval EFI_NOT_FOUND The requested file was not found in - the firmware volume. EFI_NOT_FOUND The - requested section was not found in the - specified file. - - @retval EFI_DEVICE_ERROR A hardware error occurred when - attempting to access the firmware - volume. - - @retval EFI_ACCESS_DENIED The firmware volume is configured to - disallow reads. EFI_PROTOCOL_ERROR - The requested section was not found, - but the file could not be fully - parsed because a required - GUIDED_SECTION_EXTRACTION_PROTOCOL - was not found. It is possible the - requested section exists within the - file and could be successfully - extracted once the required - GUIDED_SECTION_EXTRACTION_PROTOCOL - is published. - -**/ -EFI_STATUS -EFIAPI -Fv2ReadSection ( - IN CONST EFI_FIRMWARE_VOLUME2_PROTOCOL *This, - IN CONST EFI_GUID *NameGuid, - IN EFI_SECTION_TYPE SectionType, - IN UINTN SectionInstance, - IN OUT VOID **Buffer, - IN OUT UINTN *BufferSize, - OUT UINT32 *AuthenticationStatus - ) -{ - FIRMWARE_VOLUME2_PRIVATE_DATA *Private; - EFI_FIRMWARE_VOLUME_PROTOCOL *FirmwareVolume; - - Private = FIRMWARE_VOLUME2_PRIVATE_DATA_FROM_THIS (This); - FirmwareVolume = Private->FirmwareVolume; - - return FirmwareVolume->ReadSection ( - FirmwareVolume, - (EFI_GUID *)NameGuid, - SectionType, - SectionInstance, - Buffer, - BufferSize, - AuthenticationStatus - ); -} - -/** - WriteFile() is used to write one or more files to a firmware - volume. Each file to be written is described by an - EFI_FV_WRITE_FILE_DATA structure. The caller must ensure that - any required alignment for all files listed in the FileData - array is compatible with the firmware volume. Firmware volume - capabilities can be determined using the GetVolumeAttributes() - call. Similarly, if the WritePolicy is set to - EFI_FV_RELIABLE_WRITE, the caller must check the firmware volume - capabilities to ensure EFI_FV_RELIABLE_WRITE is supported by the - firmware volume. EFI_FV_UNRELIABLE_WRITE must always be - supported. Writing a file with a size of zero - (FileData[n].BufferSize == 0) deletes the file from the firmware - volume if it exists. Deleting a file must be done one at a time. - Deleting a file as part of a multiple file write is not allowed. - Platform Initialization Specification VOLUME 3 Shared - Architectural Elements 84 August 21, 2006 Version 1.0 - WriteFile() is callable only from TPL_NOTIFY and below. - Behavior of WriteFile() at any EFI_TPL above TPL_NOTIFY is - undefined. Type EFI_TPL is defined in RaiseTPL() in the UEFI 2.0 - specification. - - @param This Indicates the EFI_FIRMWARE_VOLUME2_PROTOCOL - instance. NumberOfFiles Indicates the number of - elements in the array pointed to by FileData. - - - @param WritePolicy Indicates the level of reliability for the - write in the event of a power failure or - other system failure during the write - operation. - - @param FileData Pointer to an array of - EFI_FV_WRITE_FILE_DATA. Each element of - FileData[] represents a file to be written. - - - @retval EFI_SUCCESS The write completed successfully. - - @retval EFI_OUT_OF_RESOURCES The firmware volume does not - have enough free space to - storefile(s). - - @retval EFI_DEVICE_ERROR A hardware error occurred when - attempting to access the firmware volume. - - @retval EFI_WRITE_PROTECTED The firmware volume is - configured to disallow writes. - - @retval EFI_NOT_FOUND A delete was requested, but the - requested file was not found in the - firmware volume. - - @retval EFI_INVALID_PARAMETER A delete was requested with a - multiple file write. - - @retval EFI_INVALID_PARAMETER An unsupported WritePolicy was - requested. - - @retval EFI_INVALID_PARAMETER An unknown file type was - specified. - - @retval EFI_INVALID_PARAMETER A file system specific error - has occurred. - -**/ -EFI_STATUS -EFIAPI -Fv2WriteFile ( - IN CONST EFI_FIRMWARE_VOLUME2_PROTOCOL *This, - IN UINT32 NumberOfFiles, - IN EFI_FV_WRITE_POLICY WritePolicy, - IN EFI_FV_WRITE_FILE_DATA *FileData - ) -{ - FIRMWARE_VOLUME2_PRIVATE_DATA *Private; - EFI_FIRMWARE_VOLUME_PROTOCOL *FirmwareVolume; - - Private = FIRMWARE_VOLUME2_PRIVATE_DATA_FROM_THIS (This); - FirmwareVolume = Private->FirmwareVolume; - - return FirmwareVolume->WriteFile ( - FirmwareVolume, - NumberOfFiles, - WritePolicy, - (FRAMEWORK_EFI_FV_WRITE_FILE_DATA *)FileData - ); -} - -/** - GetNextFile() is the interface that is used to search a firmware - volume for a particular file. It is called successively until - the desired file is located or the function returns - EFI_NOT_FOUND. To filter uninteresting files from the output, - the type of file to search for may be specified in FileType. For - example, if *FileType is EFI_FV_FILETYPE_DRIVER, only files of - this type will be returned in the output. If *FileType is - EFI_FV_FILETYPE_ALL, no filtering of file types is done. The Key - parameter is used to indicate a starting point of the search. If - the buffer *Key is completely initialized to zero, the search - re-initialized and starts at the beginning. Subsequent calls to - GetNextFile() must maintain the value of *Key returned by the - immediately previous call. The actual contents of *Key are - implementation specific and no semantic content is implied. - GetNextFile() is callable only from TPL_NOTIFY and below. - Behavior of GetNextFile() at any EFI_TPL above TPL_NOTIFY is - undefined. Type EFI_TPL is defined in RaiseTPL() in the UEFI 2.0 - specification. Status Codes Returned - - - @param This Indicates the EFI_FIRMWARE_VOLUME2_PROTOCOL - instance. Key Pointer to a caller-allocated buffer - that contains implementation-specific data that is - used to track where to begin the search for the - next file. The size of the buffer must be at least - This->KeySize bytes long. To re-initialize the - search and begin from the beginning of the - firmware volume, the entire buffer must be cleared - to zero. Other than clearing the buffer to - initiate a new search, the caller must not modify - the data in the buffer between calls to - GetNextFile(). - - @param FileType Pointer to a caller-allocated - EFI_FV_FILETYPE. The GetNextFile() API can - filter its search for files based on the - value of the FileType input. A *FileType - input of EFI_FV_FILETYPE_ALL causes - GetNextFile() to search for files of all - types. If a file is found, the file's type - is returned in FileType. *FileType is not - modified if no file is found. - - @param NameGuid Pointer to a caller-allocated EFI_GUID. If a - matching file is found, the file's name is - returned in NameGuid. If no matching file is - found, *NameGuid is not modified. - - @param Attributes Pointer to a caller-allocated - EFI_FV_FILE_ATTRIBUTES. If a matching file - is found, the file's attributes are returned - in Attributes. If no matching file is found, - Attributes is not modified. Type - EFI_FV_FILE_ATTRIBUTES is defined in - ReadFile(). - - @param Size Pointer to a caller-allocated UINTN. If a - matching file is found, the file's size is - returned in *Size. If no matching file is found, - Size is not modified. - - @retval EFI_SUCCESS The output parameters are filled with data - obtained from the first matching file that - was found. - - @retval FI_NOT_FOUND No files of type FileType were found. - - - @retval EFI_DEVICE_ERROR A hardware error occurred when - attempting to access the firmware - volume. - - @retval EFI_ACCESS_DENIED The firmware volume is configured to - disallow reads. - - -**/ -EFI_STATUS -EFIAPI -Fv2GetNextFile ( - IN CONST EFI_FIRMWARE_VOLUME2_PROTOCOL *This, - IN OUT VOID *Key, - IN OUT EFI_FV_FILETYPE *FileType, - OUT EFI_GUID *NameGuid, - OUT EFI_FV_FILE_ATTRIBUTES *Attributes, - OUT UINTN *Size - ) -{ - FIRMWARE_VOLUME2_PRIVATE_DATA *Private; - EFI_FIRMWARE_VOLUME_PROTOCOL *FirmwareVolume; - - Private = FIRMWARE_VOLUME2_PRIVATE_DATA_FROM_THIS (This); - FirmwareVolume = Private->FirmwareVolume; - - return FirmwareVolume->GetNextFile ( - FirmwareVolume, - Key, - FileType, - NameGuid, - Attributes, - Size - ); -} - -/** - The GetInfo() function returns information of type - InformationType for the requested firmware volume. If the volume - does not support the requested information type, then - EFI_UNSUPPORTED is returned. If the buffer is not large enough - to hold the requested structure, EFI_BUFFER_TOO_SMALL is - returned and the BufferSize is set to the size of buffer that is - required to make the request. The information types defined by - this specification are required information types that all file - systems must support. - - @param This A pointer to the EFI_FIRMWARE_VOLUME2_PROTOCOL - instance that is the file handle the requested - information is for. - - @param InformationType The type identifier for the - information being requested. - - @param BufferSize On input, the size of Buffer. On output, - the amount of data returned in Buffer. In - both cases, the size is measured in bytes. - - @param Buffer A pointer to the data buffer to return. The - buffer's type is indicated by InformationType. - - - @retval EFI_SUCCESS The information was retrieved. - - @retval EFI_UNSUPPORTED The InformationType is not known. - - @retval EFI_NO_MEDIA The device has no medium. - - @retval EFI_DEVICE_ERROR The device reported an error. - - @retval EFI_VOLUME_CORRUPTED The file system structures are - corrupted. - - @retval EFI_BUFFER_TOO_SMALL The BufferSize is too small to - read the current directory - entry. BufferSize has been - updated with the size needed to - complete the request. - - -**/ -EFI_STATUS -EFIAPI -Fv2GetInfo ( - IN CONST EFI_FIRMWARE_VOLUME2_PROTOCOL *This, - IN CONST EFI_GUID *InformationType, - IN OUT UINTN *BufferSize, - OUT VOID *Buffer - ) -{ - return EFI_UNSUPPORTED; -} - -/** - - The SetInfo() function sets information of type InformationType - on the requested firmware volume. - - - @param This A pointer to the EFI_FIRMWARE_VOLUME2_PROTOCOL - instance that is the file handle the information - is for. - - @param InformationType The type identifier for the - information being set. - - @param BufferSize The size, in bytes, of Buffer. - - @param Buffer A pointer to the data buffer to write. The - buffer's type is indicated by InformationType. - - @retval EFI_SUCCESS The information was set. - - @retval EFI_UNSUPPORTED The InformationType is not known. - - @retval EFI_NO_MEDIA The device has no medium. - - @retval EFI_DEVICE_ERROR The device reported an error. - - @retval EFI_VOLUME_CORRUPTED The file system structures are - corrupted. - - - @retval EFI_WRITE_PROTECTED The media is read only. - - @retval EFI_VOLUME_FULL The volume is full. - - @retval EFI_BAD_BUFFER_SIZE BufferSize is smaller than the - size of the type indicated by - InformationType. - -**/ -EFI_STATUS -EFIAPI -Fv2SetInfo ( - IN CONST EFI_FIRMWARE_VOLUME2_PROTOCOL *This, - IN CONST EFI_GUID *InformationType, - IN UINTN BufferSize, - IN CONST VOID *Buffer - ) -{ - return EFI_UNSUPPORTED; -} diff --git a/EdkCompatibilityPkg/Compatiblity/Fv2ToFvThunk/Fv2ToFvThunk.inf b/EdkCompatibilityPkg/Compatiblity/Fv2ToFvThunk/Fv2ToFvThunk.inf deleted file mode 100644 index b7a3862605..0000000000 --- a/EdkCompatibilityPkg/Compatiblity/Fv2ToFvThunk/Fv2ToFvThunk.inf +++ /dev/null @@ -1,53 +0,0 @@ -#/** @file -# Component description file for PeiVariable module. -# -# PEIM to provide the Variable functionality. -# Copyright (c) 2006 - 2007, 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. -# -# -#**/ - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = Fv2ToFvThunk - FILE_GUID = D8A6F4A6-0E97-4a8b-A475-39F1B28B5AEC - MODULE_TYPE = DXE_DRIVER - VERSION_STRING = 1.0 - EDK_RELEASE_VERSION = 0x00020000 - EFI_SPECIFICATION_VERSION = 0x00020000 - ENTRY_POINT = InitializeFirmwareVolume - -# -# The following information is for reference only and not required by the build tools. -# -# VALID_ARCHITECTURES = IA32 X64 IPF EBC -# - -[Sources.common] - Fv2ToFvThunk.c - -[Packages] - MdePkg/MdePkg.dec - IntelFrameworkPkg/IntelFrameworkPkg.dec - -[LibraryClasses] - UefiDriverEntryPoint - UefiBootServicesTableLib - BaseLib - DebugLib - UefiLib - MemoryAllocationLib - -[Protocols] - gEfiFirmwareVolume2ProtocolGuid - gEfiFirmwareVolumeProtocolGuid - -[Depex] - TRUE diff --git a/EdkCompatibilityPkg/Compatiblity/FvToFv2Thunk/FvToFv2Thunk.c b/EdkCompatibilityPkg/Compatiblity/FvToFv2Thunk/FvToFv2Thunk.c deleted file mode 100644 index 61b2b049ca..0000000000 --- a/EdkCompatibilityPkg/Compatiblity/FvToFv2Thunk/FvToFv2Thunk.c +++ /dev/null @@ -1,619 +0,0 @@ -/*++ - -Copyright (c) 2006 - 2008 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: - - FvToFv2Thunk.c - -Abstract: - - DXE driver - ---*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/** - Retrieves attributes, insures positive polarity of attribute bits, returns - resulting attributes in output parameter - - @param This Calling context - @param Attributes output buffer which contains attributes - - @retval EFI_INVALID_PARAMETER - @retval EFI_SUCCESS - -**/ -EFI_STATUS -EFIAPI -FvGetVolumeAttributes ( - IN EFI_FIRMWARE_VOLUME_PROTOCOL *This, - OUT FRAMEWORK_EFI_FV_ATTRIBUTES *Attributes - ); - -/** - Sets volume attributes - - @param This Calling context - @param Attributes Buffer which contains attributes - - @retval EFI_INVALID_PARAMETER - @retval EFI_DEVICE_ERROR - @retval EFI_SUCCESS - -**/ -EFI_STATUS -EFIAPI -FvSetVolumeAttributes ( - IN EFI_FIRMWARE_VOLUME_PROTOCOL *This, - IN OUT FRAMEWORK_EFI_FV_ATTRIBUTES *Attributes - ); - -/** - Read the requested file (NameGuid) and returns data in Buffer. - - @param This Calling context - @param NameGuid Filename identifying which file to read - @param Buffer Pointer to pointer to buffer in which contents of file are returned. -
- If Buffer is NULL, only type, attributes, and size are returned as - there is no output buffer. -
- If Buffer != NULL and *Buffer == NULL, the output buffer is allocated - from BS pool by ReadFile -
- If Buffer != NULL and *Buffer != NULL, the output buffer has been - allocated by the caller and is being passed in. - @param BufferSize Indicates the buffer size passed in, and on output the size - required to complete the read - @param FoundType Indicates the type of the file who's data is returned - @param FileAttributes Indicates the attributes of the file who's data is resturned - @param AuthenticationStatus Indicates the authentication status of the data - - @retval EFI_SUCCESS - @retval EFI_WARN_BUFFER_TOO_SMALL - @retval EFI_NOT_FOUND - @retval EFI_DEVICE_ERROR - @retval EFI_ACCESS_DENIED - -**/ -EFI_STATUS -EFIAPI -FvReadFile ( - IN EFI_FIRMWARE_VOLUME_PROTOCOL *This, - IN EFI_GUID *NameGuid, - IN OUT VOID **Buffer, - IN OUT UINTN *BufferSize, - OUT EFI_FV_FILETYPE *FoundType, - OUT EFI_FV_FILE_ATTRIBUTES *FileAttributes, - OUT UINT32 *AuthenticationStatus - ); - -/** - Read the requested section from the specified file and returns data in Buffer. - - @param This Calling context - @param NameGuid Filename identifying the file from which to read - @param SectionType Indicates what section type to retrieve - @param SectionInstance Indicates which instance of SectionType to retrieve - @param Buffer Pointer to pointer to buffer in which contents of file are returned. -
- If Buffer is NULL, only type, attributes, and size are returned as - there is no output buffer. -
- If Buffer != NULL and *Buffer == NULL, the output buffer is allocated - from BS pool by ReadFile -
- If Buffer != NULL and *Buffer != NULL, the output buffer has been - allocated by the caller and is being passed in. - @param BufferSize Indicates the buffer size passed in, and on output the size - required to complete the read - @param AuthenticationStatus Indicates the authentication status of the data - - @retval EFI_SUCCESS - @retval EFI_WARN_BUFFER_TOO_SMALL - @retval EFI_OUT_OF_RESOURCES - @retval EFI_NOT_FOUND - @retval EFI_DEVICE_ERROR - @retval EFI_ACCESS_DENIED - -**/ -EFI_STATUS -EFIAPI -FvReadSection ( - IN EFI_FIRMWARE_VOLUME_PROTOCOL *This, - IN EFI_GUID *NameGuid, - IN EFI_SECTION_TYPE SectionType, - IN UINTN SectionInstance, - IN OUT VOID **Buffer, - IN OUT UINTN *BufferSize, - OUT UINT32 *AuthenticationStatus - ); - -/** - Write the supplied file (NameGuid) to the FV. - - @param This Calling context - @param NumberOfFiles Indicates the number of file records pointed to by FileData - @param WritePolicy Indicates the level of reliability of the write with respect to - things like power failure events. - @param FileData A pointer to an array of EFI_FV_WRITE_FILE_DATA structures. Each - element in the array indicates a file to write, and there are - NumberOfFiles elements in the input array. - - @retval EFI_SUCCESS - @retval EFI_OUT_OF_RESOURCES - @retval EFI_DEVICE_ERROR - @retval EFI_WRITE_PROTECTED - @retval EFI_NOT_FOUND - @retval EFI_INVALID_PARAMETER - -**/ -EFI_STATUS -EFIAPI -FvWriteFile ( - IN EFI_FIRMWARE_VOLUME_PROTOCOL *This, - IN UINT32 NumberOfFiles, - IN FRAMEWORK_EFI_FV_WRITE_POLICY WritePolicy, - IN FRAMEWORK_EFI_FV_WRITE_FILE_DATA *FileData - ); - -/** - Given the input key, search for the next matching file in the volume. - - @param This Calling context - @param Key Pointer to a caller allocated buffer that contains an implementation - specific key that is used to track where to begin searching on - successive calls. - @param FileType Indicates the file type to filter for - @param NameGuid Guid filename of the file found - @param Attributes Attributes of the file found - @param Size Size in bytes of the file found - - @retval EFI_SUCCESS - @retval EFI_NOT_FOUND - @retval EFI_DEVICE_ERROR - @retval EFI_ACCESS_DENIED - -**/ -EFI_STATUS -EFIAPI -FvGetNextFile ( - IN EFI_FIRMWARE_VOLUME_PROTOCOL *This, - IN OUT VOID *Key, - IN OUT EFI_FV_FILETYPE *FileType, - OUT EFI_GUID *NameGuid, - OUT EFI_FV_FILE_ATTRIBUTES *Attributes, - OUT UINTN *Size - ); - -#define FIRMWARE_VOLUME_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('f', 'v', 't', 'h') - -typedef struct { - UINTN Signature; - EFI_FIRMWARE_VOLUME_PROTOCOL FirmwareVolume; - EFI_FIRMWARE_VOLUME2_PROTOCOL *FirmwareVolume2; -} FIRMWARE_VOLUME_PRIVATE_DATA; - -#define FIRMWARE_VOLUME_PRIVATE_DATA_FROM_THIS(a) CR (a, FIRMWARE_VOLUME_PRIVATE_DATA, FirmwareVolume, FIRMWARE_VOLUME_PRIVATE_DATA_SIGNATURE) - -// -// Firmware Volume Protocol template -// -EFI_EVENT mFvRegistration; - -FIRMWARE_VOLUME_PRIVATE_DATA gFirmwareVolumePrivateDataTemplate = { - FIRMWARE_VOLUME_PRIVATE_DATA_SIGNATURE, - { - FvGetVolumeAttributes, - FvSetVolumeAttributes, - FvReadFile, - FvReadSection, - FvWriteFile, - FvGetNextFile, - 0, - NULL - }, - NULL -}; - -// -// Module globals -// - -VOID -EFIAPI -FvNotificationEvent ( - IN EFI_EVENT Event, - IN VOID *Context - ) -{ - EFI_STATUS Status; - UINTN BufferSize; - EFI_HANDLE Handle; - FIRMWARE_VOLUME_PRIVATE_DATA *Private; - EFI_FIRMWARE_VOLUME_PROTOCOL *FirmwareVolume; - - while (TRUE) { - BufferSize = sizeof (Handle); - Status = gBS->LocateHandle ( - ByRegisterNotify, - &gEfiFirmwareVolume2ProtocolGuid, - mFvRegistration, - &BufferSize, - &Handle - ); - if (EFI_ERROR (Status)) { - // - // Exit Path of While Loop.... - // - break; - } - - // - // Skip this handle if the Firmware Volume Protocol is already installed - // - Status = gBS->HandleProtocol ( - Handle, - &gEfiFirmwareVolumeProtocolGuid, - (VOID **)&FirmwareVolume - ); - if (!EFI_ERROR (Status)) { - continue; - } - - // - // Allocate private data structure - // - Private = AllocateCopyPool (sizeof (FIRMWARE_VOLUME_PRIVATE_DATA), &gFirmwareVolumePrivateDataTemplate); - if (Private == NULL) { - continue; - } - - // - // Retrieve the Firmware Volume2 Protocol - // - Status = gBS->HandleProtocol ( - Handle, - &gEfiFirmwareVolume2ProtocolGuid, - (VOID **)&Private->FirmwareVolume2 - ); - ASSERT_EFI_ERROR (Status); - - // - // Fill in rest of private data structure - // - Private->FirmwareVolume.KeySize = Private->FirmwareVolume2->KeySize; - Private->FirmwareVolume.ParentHandle = Private->FirmwareVolume2->ParentHandle; - - // - // Install Firmware Volume Protocol onto same handle - // - Status = gBS->InstallMultipleProtocolInterfaces ( - &Handle, - &gEfiFirmwareVolumeProtocolGuid, - &Private->FirmwareVolume, - NULL - ); - ASSERT_EFI_ERROR (Status); - } -} - - -/** - The user Entry Point for DXE driver. The user code starts with this function - as the real entry point for the image goes into a library that calls this - function. - - @param[in] ImageHandle The firmware allocated handle for the EFI image. - @param[in] SystemTable A pointer to the EFI System Table. - - @retval EFI_SUCCESS The entry point is executed successfully. - @retval other Some error occurs when executing this entry point. - -**/ -EFI_STATUS -EFIAPI -InitializeFirmwareVolume2 ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable - ) -{ - EfiCreateProtocolNotifyEvent ( - &gEfiFirmwareVolume2ProtocolGuid, - TPL_CALLBACK, - FvNotificationEvent, - NULL, - &mFvRegistration - ); - return EFI_SUCCESS; -} - -/** - Retrieves attributes, insures positive polarity of attribute bits, returns - resulting attributes in output parameter - - @param This Calling context - @param Attributes output buffer which contains attributes - - @retval EFI_INVALID_PARAMETER - @retval EFI_SUCCESS - -**/ -EFI_STATUS -EFIAPI -FvGetVolumeAttributes ( - IN EFI_FIRMWARE_VOLUME_PROTOCOL *This, - OUT FRAMEWORK_EFI_FV_ATTRIBUTES *Attributes - ) -{ - EFI_STATUS Status; - FIRMWARE_VOLUME_PRIVATE_DATA *Private; - EFI_FIRMWARE_VOLUME2_PROTOCOL *FirmwareVolume2; - - Private = FIRMWARE_VOLUME_PRIVATE_DATA_FROM_THIS (This); - FirmwareVolume2 = Private->FirmwareVolume2; - - Status = FirmwareVolume2->GetVolumeAttributes ( - FirmwareVolume2, - Attributes - ); - if (!EFI_ERROR (Status)) { - *Attributes = (*Attributes & 0x1ff) | ((UINTN)EFI_FV_ALIGNMENT_2 << ((*Attributes & EFI_FV2_ALIGNMENT) >> 16)); - } - return Status; -} - -/** - Sets volume attributes - - @param This Calling context - @param Attributes Buffer which contains attributes - - @retval EFI_INVALID_PARAMETER - @retval EFI_DEVICE_ERROR - @retval EFI_SUCCESS - -**/ -EFI_STATUS -EFIAPI -FvSetVolumeAttributes ( - IN EFI_FIRMWARE_VOLUME_PROTOCOL *This, - IN OUT FRAMEWORK_EFI_FV_ATTRIBUTES *Attributes - ) -{ - FIRMWARE_VOLUME_PRIVATE_DATA *Private; - EFI_FIRMWARE_VOLUME2_PROTOCOL *FirmwareVolume2; - INTN Alignment; - EFI_FV_ATTRIBUTES Fv2Attributes; - - Private = FIRMWARE_VOLUME_PRIVATE_DATA_FROM_THIS (This); - FirmwareVolume2 = Private->FirmwareVolume2; - - Fv2Attributes = (*Attributes & 0x1ff); - Alignment = LowBitSet64 (RShiftU64 (*Attributes, 16) & 0xffff); - if (Alignment != -1) { - Fv2Attributes |= LShiftU64 (Alignment, 16); - } - return FirmwareVolume2->SetVolumeAttributes ( - FirmwareVolume2, - &Fv2Attributes - ); -} - -/** - Read the requested file (NameGuid) and returns data in Buffer. - - @param This Calling context - @param NameGuid Filename identifying which file to read - @param Buffer Pointer to pointer to buffer in which contents of file are returned. -
- If Buffer is NULL, only type, attributes, and size are returned as - there is no output buffer. -
- If Buffer != NULL and *Buffer == NULL, the output buffer is allocated - from BS pool by ReadFile -
- If Buffer != NULL and *Buffer != NULL, the output buffer has been - allocated by the caller and is being passed in. - @param BufferSize Indicates the buffer size passed in, and on output the size - required to complete the read - @param FoundType Indicates the type of the file who's data is returned - @param FileAttributes Indicates the attributes of the file who's data is resturned - @param AuthenticationStatus Indicates the authentication status of the data - - @retval EFI_SUCCESS - @retval EFI_WARN_BUFFER_TOO_SMALL - @retval EFI_NOT_FOUND - @retval EFI_DEVICE_ERROR - @retval EFI_ACCESS_DENIED - -**/ -EFI_STATUS -EFIAPI -FvReadFile ( - IN EFI_FIRMWARE_VOLUME_PROTOCOL *This, - IN EFI_GUID *NameGuid, - IN OUT VOID **Buffer, - IN OUT UINTN *BufferSize, - OUT EFI_FV_FILETYPE *FoundType, - OUT EFI_FV_FILE_ATTRIBUTES *FileAttributes, - OUT UINT32 *AuthenticationStatus - ) -{ - FIRMWARE_VOLUME_PRIVATE_DATA *Private; - EFI_FIRMWARE_VOLUME2_PROTOCOL *FirmwareVolume2; - - Private = FIRMWARE_VOLUME_PRIVATE_DATA_FROM_THIS (This); - FirmwareVolume2 = Private->FirmwareVolume2; - - return FirmwareVolume2->ReadFile ( - FirmwareVolume2, - NameGuid, - Buffer, - BufferSize, - FoundType, - FileAttributes, - AuthenticationStatus - ); -} - -/** - Read the requested section from the specified file and returns data in Buffer. - - @param This Calling context - @param NameGuid Filename identifying the file from which to read - @param SectionType Indicates what section type to retrieve - @param SectionInstance Indicates which instance of SectionType to retrieve - @param Buffer Pointer to pointer to buffer in which contents of file are returned. -
- If Buffer is NULL, only type, attributes, and size are returned as - there is no output buffer. -
- If Buffer != NULL and *Buffer == NULL, the output buffer is allocated - from BS pool by ReadFile -
- If Buffer != NULL and *Buffer != NULL, the output buffer has been - allocated by the caller and is being passed in. - @param BufferSize Indicates the buffer size passed in, and on output the size - required to complete the read - @param AuthenticationStatus Indicates the authentication status of the data - - @retval EFI_SUCCESS - @retval EFI_WARN_BUFFER_TOO_SMALL - @retval EFI_OUT_OF_RESOURCES - @retval EFI_NOT_FOUND - @retval EFI_DEVICE_ERROR - @retval EFI_ACCESS_DENIED - -**/ -EFI_STATUS -EFIAPI -FvReadSection ( - IN EFI_FIRMWARE_VOLUME_PROTOCOL *This, - IN EFI_GUID *NameGuid, - IN EFI_SECTION_TYPE SectionType, - IN UINTN SectionInstance, - IN OUT VOID **Buffer, - IN OUT UINTN *BufferSize, - OUT UINT32 *AuthenticationStatus - ) -{ - FIRMWARE_VOLUME_PRIVATE_DATA *Private; - EFI_FIRMWARE_VOLUME2_PROTOCOL *FirmwareVolume2; - - Private = FIRMWARE_VOLUME_PRIVATE_DATA_FROM_THIS (This); - FirmwareVolume2 = Private->FirmwareVolume2; - - return FirmwareVolume2->ReadSection ( - FirmwareVolume2, - NameGuid, - SectionType, - SectionInstance, - Buffer, - BufferSize, - AuthenticationStatus - ); -} - -/** - Write the supplied file (NameGuid) to the FV. - - @param This Calling context - @param NumberOfFiles Indicates the number of file records pointed to by FileData - @param WritePolicy Indicates the level of reliability of the write with respect to - things like power failure events. - @param FileData A pointer to an array of EFI_FV_WRITE_FILE_DATA structures. Each - element in the array indicates a file to write, and there are - NumberOfFiles elements in the input array. - - @retval EFI_SUCCESS - @retval EFI_OUT_OF_RESOURCES - @retval EFI_DEVICE_ERROR - @retval EFI_WRITE_PROTECTED - @retval EFI_NOT_FOUND - @retval EFI_INVALID_PARAMETER - -**/ -EFI_STATUS -EFIAPI -FvWriteFile ( - IN EFI_FIRMWARE_VOLUME_PROTOCOL *This, - IN UINT32 NumberOfFiles, - IN FRAMEWORK_EFI_FV_WRITE_POLICY WritePolicy, - IN FRAMEWORK_EFI_FV_WRITE_FILE_DATA *FileData - ) -{ - FIRMWARE_VOLUME_PRIVATE_DATA *Private; - EFI_FIRMWARE_VOLUME2_PROTOCOL *FirmwareVolume2; - - Private = FIRMWARE_VOLUME_PRIVATE_DATA_FROM_THIS (This); - FirmwareVolume2 = Private->FirmwareVolume2; - - return FirmwareVolume2->WriteFile ( - FirmwareVolume2, - NumberOfFiles, - WritePolicy, - (EFI_FV_WRITE_FILE_DATA *)FileData - ); -} - -/** - Given the input key, search for the next matching file in the volume. - - @param This Calling context - @param Key Pointer to a caller allocated buffer that contains an implementation - specific key that is used to track where to begin searching on - successive calls. - @param FileType Indicates the file type to filter for - @param NameGuid Guid filename of the file found - @param Attributes Attributes of the file found - @param Size Size in bytes of the file found - - @retval EFI_SUCCESS - @retval EFI_NOT_FOUND - @retval EFI_DEVICE_ERROR - @retval EFI_ACCESS_DENIED - -**/ -EFI_STATUS -EFIAPI -FvGetNextFile ( - IN EFI_FIRMWARE_VOLUME_PROTOCOL *This, - IN OUT VOID *Key, - IN OUT EFI_FV_FILETYPE *FileType, - OUT EFI_GUID *NameGuid, - OUT EFI_FV_FILE_ATTRIBUTES *Attributes, - OUT UINTN *Size - ) -{ - FIRMWARE_VOLUME_PRIVATE_DATA *Private; - EFI_FIRMWARE_VOLUME2_PROTOCOL *FirmwareVolume2; - - Private = FIRMWARE_VOLUME_PRIVATE_DATA_FROM_THIS (This); - FirmwareVolume2 = Private->FirmwareVolume2; - - return FirmwareVolume2->GetNextFile ( - FirmwareVolume2, - Key, - FileType, - NameGuid, - Attributes, - Size - ); -} diff --git a/EdkCompatibilityPkg/Compatiblity/FvToFv2Thunk/FvToFv2Thunk.inf b/EdkCompatibilityPkg/Compatiblity/FvToFv2Thunk/FvToFv2Thunk.inf deleted file mode 100644 index 8eaf4a2bcc..0000000000 --- a/EdkCompatibilityPkg/Compatiblity/FvToFv2Thunk/FvToFv2Thunk.inf +++ /dev/null @@ -1,53 +0,0 @@ -#/** @file -# Component description file for PeiVariable module. -# -# PEIM to provide the Variable functionality. -# Copyright (c) 2006 - 2007, 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. -# -# -#**/ - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = FvToFv2Thunk - FILE_GUID = 5007A40E-A5E0-44f7-86AE-662F9A91DA26 - MODULE_TYPE = DXE_DRIVER - VERSION_STRING = 1.0 - EDK_RELEASE_VERSION = 0x00020000 - EFI_SPECIFICATION_VERSION = 0x00020000 - ENTRY_POINT = InitializeFirmwareVolume2 - -# -# The following information is for reference only and not required by the build tools. -# -# VALID_ARCHITECTURES = IA32 X64 IPF EBC -# - -[Sources.common] - FvToFv2Thunk.c - -[Packages] - MdePkg/MdePkg.dec - IntelFrameworkPkg/IntelFrameworkPkg.dec - -[LibraryClasses] - UefiDriverEntryPoint - UefiBootServicesTableLib - BaseLib - DebugLib - UefiLib - MemoryAllocationLib - -[Protocols] - gEfiFirmwareVolume2ProtocolGuid - gEfiFirmwareVolumeProtocolGuid - -[Depex] - TRUE diff --git a/EdkCompatibilityPkg/Compatiblity/PciCfg2ToPciCfgThunk/PciCfg2ToPciCfgThunk.c b/EdkCompatibilityPkg/Compatiblity/PciCfg2ToPciCfgThunk/PciCfg2ToPciCfgThunk.c deleted file mode 100644 index 9cdf65ac92..0000000000 --- a/EdkCompatibilityPkg/Compatiblity/PciCfg2ToPciCfgThunk/PciCfg2ToPciCfgThunk.c +++ /dev/null @@ -1,219 +0,0 @@ -/*++ - -Copyright (c) 2006 - 2008 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: - - Variable.c - -Abstract: - - PEIM to provide the Variable functionality - ---*/ - -#include -#include -#include -#include -#include - -// -// Function Prototypes - Callbacks -// -EFI_STATUS -EFIAPI -EcpPciCfgPpiNotifyCallback ( - IN EFI_PEI_SERVICES **PeiServices, - IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor, - IN VOID *Ppi - ); - -// -// Function Prototypes -// -EFI_STATUS -EFIAPI -PciCfg2Read ( - IN CONST EFI_PEI_SERVICES **PeiServices, - IN CONST EFI_PEI_PCI_CFG2_PPI *This, - IN EFI_PEI_PCI_CFG_PPI_WIDTH Width, - IN UINT64 Address, - IN OUT VOID *Buffer - ); - -EFI_STATUS -EFIAPI -PciCfg2Write ( - IN CONST EFI_PEI_SERVICES **PeiServices, - IN CONST EFI_PEI_PCI_CFG2_PPI *This, - IN EFI_PEI_PCI_CFG_PPI_WIDTH Width, - IN UINT64 Address, - IN OUT VOID *Buffer - ); - -EFI_STATUS -EFIAPI -PciCfg2Modify ( - IN CONST EFI_PEI_SERVICES **PeiServices, - IN CONST EFI_PEI_PCI_CFG2_PPI *This, - IN EFI_PEI_PCI_CFG_PPI_WIDTH Width, - IN UINT64 Address, - IN CONST VOID *SetBits, - IN CONST VOID *ClearBits - ); - -// -// Module globals -// -EFI_PEI_NOTIFY_DESCRIPTOR mNotifyOnEcpPciCfgList = { - (EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST), - &gEcpPeiPciCfgPpiGuid, - EcpPciCfgPpiNotifyCallback -}; - -EFI_PEI_PCI_CFG2_PPI mPciCfg2Ppi = { - PciCfg2Read, - PciCfg2Write, - PciCfg2Modify, - 0 -}; - -EFI_PEI_PPI_DESCRIPTOR mPpiListPciCfg2 = { - (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST), - &gEfiPciCfg2PpiGuid, - &mPciCfg2Ppi -}; - - -EFI_STATUS -EFIAPI -PeimInitializePciCfg2 ( - IN EFI_FFS_FILE_HEADER *FfsHeader, - IN CONST EFI_PEI_SERVICES **PeiServices - ) -/*++ - -Routine Description: - - Provide the functionality of the variable services. - -Arguments: - - FfsHeadher - The FFS file header - PeiServices - General purpose services available to every PEIM. - -Returns: - - Status - EFI_SUCCESS if the interface could be successfully - installed - ---*/ -{ - EFI_STATUS Status; - - // - // Register a notification for ECP PCI CFG PPI - // - Status = (*PeiServices)->NotifyPpi (PeiServices, &mNotifyOnEcpPciCfgList); - ASSERT_EFI_ERROR (Status); - return Status; -} - -EFI_STATUS -EFIAPI -EcpPciCfgPpiNotifyCallback ( - IN EFI_PEI_SERVICES **PeiServices, - IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor, - IN VOID *Ppi - ) -{ - // - // When ECP PCI CFG PPI is installed, publish the PCI CFG2 PPI in the - // PEI Services Table and the PPI database - // - (*PeiServices)->PciCfg = &mPciCfg2Ppi; - return (*PeiServices)->InstallPpi ((CONST EFI_PEI_SERVICES **)PeiServices, &mPpiListPciCfg2); -} - -EFI_STATUS -EFIAPI -PciCfg2Read ( - IN CONST EFI_PEI_SERVICES **PeiServices, - IN CONST EFI_PEI_PCI_CFG2_PPI *This, - IN EFI_PEI_PCI_CFG_PPI_WIDTH Width, - IN UINT64 Address, - IN OUT VOID *Buffer - ) -{ - EFI_STATUS Status; - EFI_PEI_PCI_CFG_PPI *PciCfg; - - Status = (*PeiServices)->LocatePpi ( - PeiServices, - &gEcpPeiPciCfgPpiGuid, - 0, - NULL, - (VOID **)&PciCfg - ); - ASSERT_EFI_ERROR (Status); - - return PciCfg->Read ((EFI_PEI_SERVICES **)PeiServices, PciCfg, Width, Address, Buffer); -} - -EFI_STATUS -EFIAPI -PciCfg2Write ( - IN CONST EFI_PEI_SERVICES **PeiServices, - IN CONST EFI_PEI_PCI_CFG2_PPI *This, - IN EFI_PEI_PCI_CFG_PPI_WIDTH Width, - IN UINT64 Address, - IN OUT VOID *Buffer - ) -{ - EFI_STATUS Status; - EFI_PEI_PCI_CFG_PPI *PciCfg; - - Status = (*PeiServices)->LocatePpi ( - PeiServices, - &gEcpPeiPciCfgPpiGuid, - 0, - NULL, - (VOID **)&PciCfg - ); - ASSERT_EFI_ERROR (Status); - - return PciCfg->Write ((EFI_PEI_SERVICES **)PeiServices, PciCfg, Width, Address, Buffer); -} - -EFI_STATUS -EFIAPI -PciCfg2Modify ( - IN CONST EFI_PEI_SERVICES **PeiServices, - IN CONST EFI_PEI_PCI_CFG2_PPI *This, - IN EFI_PEI_PCI_CFG_PPI_WIDTH Width, - IN UINT64 Address, - IN CONST VOID *SetBits, - IN CONST VOID *ClearBits - ) -{ - EFI_STATUS Status; - EFI_PEI_PCI_CFG_PPI *PciCfg; - - Status = (*PeiServices)->LocatePpi ( - PeiServices, - &gEcpPeiPciCfgPpiGuid, - 0, - NULL, - (VOID **)&PciCfg - ); - ASSERT_EFI_ERROR (Status); - - return PciCfg->Modify ((EFI_PEI_SERVICES **)PeiServices, PciCfg, Width, Address, *(UINTN *)SetBits, *(UINTN *)ClearBits); -} diff --git a/EdkCompatibilityPkg/Compatiblity/PciCfg2ToPciCfgThunk/PciCfg2ToPciCfgThunk.inf b/EdkCompatibilityPkg/Compatiblity/PciCfg2ToPciCfgThunk/PciCfg2ToPciCfgThunk.inf deleted file mode 100644 index 85e84e5795..0000000000 --- a/EdkCompatibilityPkg/Compatiblity/PciCfg2ToPciCfgThunk/PciCfg2ToPciCfgThunk.inf +++ /dev/null @@ -1,53 +0,0 @@ -#/** @file -# Component description file for PeiVariable module. -# -# PEIM to provide the Variable functionality. -# Copyright (c) 2006 - 2007, 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. -# -# -#**/ - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = PciCfg2ToPciCfgThunk - FILE_GUID = 41401688-2862-431b-BAAC-6ECADAC384AB - MODULE_TYPE = PEIM - VERSION_STRING = 1.0 - EDK_RELEASE_VERSION = 0x00020000 - EFI_SPECIFICATION_VERSION = 0x00020000 - - ENTRY_POINT = PeimInitializePciCfg2 - -# -# The following information is for reference only and not required by the build tools. -# -# VALID_ARCHITECTURES = IA32 X64 IPF EBC -# - -[Sources.common] - PciCfg2ToPciCfgThunk.c - -[Packages] - MdePkg/MdePkg.dec - IntelFrameworkPkg/IntelFrameworkPkg.dec - EdkCompatibilityPkg/EdkCompatibilityPkg.dec - -[LibraryClasses] - PeimEntryPoint - DebugLib - -[Ppis] - gEfiPciCfgPpiInServiceTableGuid - gEfiPciCfg2PpiGuid - gEcpPeiPciCfgPpiGuid - -[Depex] - TRUE -# gEcpPeiPciCfgPpiGuid diff --git a/EdkCompatibilityPkg/Compatiblity/PciCfgToPciCfg2Thunk/PciCfgToPciCfg2Thunk.c b/EdkCompatibilityPkg/Compatiblity/PciCfgToPciCfg2Thunk/PciCfgToPciCfg2Thunk.c deleted file mode 100644 index 9821253fa9..0000000000 --- a/EdkCompatibilityPkg/Compatiblity/PciCfgToPciCfg2Thunk/PciCfgToPciCfg2Thunk.c +++ /dev/null @@ -1,155 +0,0 @@ -/*++ - -Copyright (c) 2006 - 2008 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: - - Variable.c - -Abstract: - - PEIM to provide the Variable functionality - ---*/ - -#include -#include -#include -#include - -// -// Function Prototypes -// -EFI_STATUS -EFIAPI -PciCfgRead ( - IN EFI_PEI_SERVICES **PeiServices, - IN EFI_PEI_PCI_CFG_PPI *This, - IN EFI_PEI_PCI_CFG_PPI_WIDTH Width, - IN UINT64 Address, - IN OUT VOID *Buffer - ); - -EFI_STATUS -EFIAPI -PciCfgWrite ( - IN EFI_PEI_SERVICES **PeiServices, - IN EFI_PEI_PCI_CFG_PPI *This, - IN EFI_PEI_PCI_CFG_PPI_WIDTH Width, - IN UINT64 Address, - IN OUT VOID *Buffer - ); - -EFI_STATUS -EFIAPI -PciCfgModify ( - IN EFI_PEI_SERVICES **PeiServices, - IN EFI_PEI_PCI_CFG_PPI *This, - IN EFI_PEI_PCI_CFG_PPI_WIDTH Width, - IN UINT64 Address, - IN UINTN SetBits, - IN UINTN ClearBits - ); - -// -// Module globals -// -EFI_PEI_PCI_CFG_PPI mPciCfgPpi = { - PciCfgRead, - PciCfgWrite, - PciCfgModify, -}; - -EFI_PEI_PPI_DESCRIPTOR mPpiListPciCfg = { - (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST), - &gEfiPciCfgPpiInServiceTableGuid, - &mPciCfgPpi -}; - -EFI_STATUS -EFIAPI -PeimInitializePciCfg ( - IN EFI_FFS_FILE_HEADER *FfsHeader, - IN CONST EFI_PEI_SERVICES **PeiServices - ) -/*++ - -Routine Description: - - Provide the functionality of the variable services. - -Arguments: - - FfsHeadher - The FFS file header - PeiServices - General purpose services available to every PEIM. - -Returns: - - Status - EFI_SUCCESS if the interface could be successfully - installed - ---*/ -{ - // - // Publish the variable capability to other modules - // - return (*PeiServices)->InstallPpi (PeiServices, &mPpiListPciCfg); -} - -EFI_STATUS -EFIAPI -PciCfgRead ( - IN EFI_PEI_SERVICES **PeiServices, - IN EFI_PEI_PCI_CFG_PPI *This, - IN EFI_PEI_PCI_CFG_PPI_WIDTH Width, - IN UINT64 Address, - IN OUT VOID *Buffer - ) -{ - EFI_PEI_PCI_CFG2_PPI *PciCfg2; - - PciCfg2 = (*PeiServices)->PciCfg; - - return PciCfg2->Read ((CONST EFI_PEI_SERVICES **)PeiServices, PciCfg2, Width, Address, Buffer); -} - -EFI_STATUS -EFIAPI -PciCfgWrite ( - IN EFI_PEI_SERVICES **PeiServices, - IN EFI_PEI_PCI_CFG_PPI *This, - IN EFI_PEI_PCI_CFG_PPI_WIDTH Width, - IN UINT64 Address, - IN OUT VOID *Buffer - ) -{ - EFI_PEI_PCI_CFG2_PPI *PciCfg2; - - PciCfg2 = (*PeiServices)->PciCfg; - - return PciCfg2->Write ((CONST EFI_PEI_SERVICES **)PeiServices, PciCfg2, Width, Address, Buffer); -} - -EFI_STATUS -EFIAPI -PciCfgModify ( - IN EFI_PEI_SERVICES **PeiServices, - IN EFI_PEI_PCI_CFG_PPI *This, - IN EFI_PEI_PCI_CFG_PPI_WIDTH Width, - IN UINT64 Address, - IN UINTN SetBits, - IN UINTN ClearBits - ) -{ - EFI_PEI_PCI_CFG2_PPI *PciCfg2; - - PciCfg2 = (*PeiServices)->PciCfg; - - return PciCfg2->Modify ((CONST EFI_PEI_SERVICES **)PeiServices, PciCfg2, Width, Address, &SetBits, &ClearBits); -} diff --git a/EdkCompatibilityPkg/Compatiblity/PciCfgToPciCfg2Thunk/PciCfgToPciCfg2Thunk.inf b/EdkCompatibilityPkg/Compatiblity/PciCfgToPciCfg2Thunk/PciCfgToPciCfg2Thunk.inf deleted file mode 100644 index a264ab4b93..0000000000 --- a/EdkCompatibilityPkg/Compatiblity/PciCfgToPciCfg2Thunk/PciCfgToPciCfg2Thunk.inf +++ /dev/null @@ -1,50 +0,0 @@ -#/** @file -# Component description file for PeiVariable module. -# -# PEIM to provide the Variable functionality. -# Copyright (c) 2006 - 2007, 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. -# -# -#**/ - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = PciCfgToPciCfg2Thunk - FILE_GUID = 717886AB-C40A-44cf-9114-4119E84B0DC7 - MODULE_TYPE = PEIM - VERSION_STRING = 1.0 - EDK_RELEASE_VERSION = 0x00020000 - EFI_SPECIFICATION_VERSION = 0x00020000 - - ENTRY_POINT = PeimInitializePciCfg - -# -# The following information is for reference only and not required by the build tools. -# -# VALID_ARCHITECTURES = IA32 X64 IPF EBC -# - -[Sources.common] - PciCfgToPciCfg2Thunk.c - -[Packages] - MdePkg/MdePkg.dec - IntelFrameworkPkg/IntelFrameworkPkg.dec - -[LibraryClasses] - PeimEntryPoint - DebugLib - -[Ppis] - gEfiPciCfgPpiInServiceTableGuid - gEfiPciCfg2PpiGuid - -[Depex] - gEfiPciCfg2PpiGuid diff --git a/EdkCompatibilityPkg/Compatiblity/ReadOnlyVariable2ToReadOnlyVariableThunk/ReadOnlyVariable2ToReadOnlyVariableThunk.c b/EdkCompatibilityPkg/Compatiblity/ReadOnlyVariable2ToReadOnlyVariableThunk/ReadOnlyVariable2ToReadOnlyVariableThunk.c deleted file mode 100644 index 832dc520e5..0000000000 --- a/EdkCompatibilityPkg/Compatiblity/ReadOnlyVariable2ToReadOnlyVariableThunk/ReadOnlyVariable2ToReadOnlyVariableThunk.c +++ /dev/null @@ -1,208 +0,0 @@ -/*++ - -Copyright (c) 2006 - 2008 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: - - Variable.c - -Abstract: - - PEIM to provide the Variable functionality - ---*/ - -#include -#include -#include -#include -#include -#include - -// -// Function Prototypes -// -EFI_STATUS -EFIAPI -PeiGetVariable ( - IN CONST EFI_PEI_READ_ONLY_VARIABLE2_PPI *This, - IN CONST CHAR16 *VariableName, - IN CONST EFI_GUID *VariableGuid, - OUT UINT32 *Attributes, - IN OUT UINTN *DataSize, - OUT VOID *Data - ); - -EFI_STATUS -EFIAPI -PeiGetNextVariableName ( - IN CONST EFI_PEI_READ_ONLY_VARIABLE2_PPI *This, - IN OUT UINTN *VariableNameSize, - IN OUT CHAR16 *VariableName, - IN OUT EFI_GUID *VariableGuid - ); - -// -// Module globals -// -EFI_PEI_READ_ONLY_VARIABLE2_PPI mVariablePpi = { - PeiGetVariable, - PeiGetNextVariableName -}; - -EFI_PEI_PPI_DESCRIPTOR mPpiListVariable = { - (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST), - &gEfiPeiReadOnlyVariable2PpiGuid, - &mVariablePpi -}; - -EFI_STATUS -EFIAPI -PeimInitializeReadOnlyVariable2 ( - IN EFI_FFS_FILE_HEADER *FfsHeader, - IN EFI_PEI_SERVICES **PeiServices - ) -/*++ - -Routine Description: - - Provide the functionality of the variable services. - -Arguments: - - FfsHeadher - The FFS file header - PeiServices - General purpose services available to every PEIM. - -Returns: - - Status - EFI_SUCCESS if the interface could be successfully - installed - ---*/ -{ - // - // Publish the variable capability to other modules - // - return PeiServicesInstallPpi (&mPpiListVariable); -} - -EFI_STATUS -EFIAPI -PeiGetVariable ( - IN CONST EFI_PEI_READ_ONLY_VARIABLE2_PPI *This, - IN CONST CHAR16 *VariableName, - IN CONST EFI_GUID *VariableGuid, - OUT UINT32 *Attributes, - IN OUT UINTN *DataSize, - OUT VOID *Data - ) -/*++ - -Routine Description: - - Provide the read variable functionality of the variable services. - -Arguments: - - PeiServices - General purpose services available to every PEIM. - - VariableName - The variable name - - VendorGuid - The vendor's GUID - - Attributes - Pointer to the attribute - - DataSize - Size of data - - Data - Pointer to data - -Returns: - - EFI_SUCCESS - The interface could be successfully installed - - EFI_NOT_FOUND - The variable could not be discovered - - EFI_BUFFER_TOO_SMALL - The caller buffer is not large enough - ---*/ -{ - EFI_STATUS Status; - EFI_PEI_READ_ONLY_VARIABLE_PPI *ReadOnlyVariable; - - Status = PeiServicesLocatePpi ( - &gEfiPeiReadOnlyVariablePpiGuid, - 0, - NULL, - (VOID **)&ReadOnlyVariable - ); - ASSERT_EFI_ERROR (Status); - - return ReadOnlyVariable->PeiGetVariable ( - GetPeiServicesTablePointer (), - (CHAR16 *)VariableName, - (EFI_GUID *)VariableGuid, - Attributes, - DataSize, - Data - ); -} - -EFI_STATUS -EFIAPI -PeiGetNextVariableName ( - IN CONST EFI_PEI_READ_ONLY_VARIABLE2_PPI *This, - IN OUT UINTN *VariableNameSize, - IN OUT CHAR16 *VariableName, - IN OUT EFI_GUID *VariableGuid - ) -/*++ - -Routine Description: - - Provide the get next variable functionality of the variable services. - -Arguments: - - PeiServices - General purpose services available to every PEIM. - VariabvleNameSize - The variable name's size. - VariableName - A pointer to the variable's name. - VariableGuid - A pointer to the EFI_GUID structure. - - VariableNameSize - Size of the variable name - - VariableName - The variable name - - VendorGuid - The vendor's GUID - -Returns: - - EFI_SUCCESS - The interface could be successfully installed - - EFI_NOT_FOUND - The variable could not be discovered - ---*/ -{ - EFI_STATUS Status; - EFI_PEI_READ_ONLY_VARIABLE_PPI *ReadOnlyVariable; - - Status = PeiServicesLocatePpi ( - &gEfiPeiReadOnlyVariablePpiGuid, - 0, - NULL, - (VOID **)&ReadOnlyVariable - ); - ASSERT_EFI_ERROR (Status); - - return ReadOnlyVariable->PeiGetNextVariableName ( - GetPeiServicesTablePointer (), - VariableNameSize, - VariableName, - VariableGuid - ); -} diff --git a/EdkCompatibilityPkg/Compatiblity/ReadOnlyVariable2ToReadOnlyVariableThunk/ReadOnlyVariable2ToReadOnlyVariableThunk.inf b/EdkCompatibilityPkg/Compatiblity/ReadOnlyVariable2ToReadOnlyVariableThunk/ReadOnlyVariable2ToReadOnlyVariableThunk.inf deleted file mode 100644 index c9b08f1f56..0000000000 --- a/EdkCompatibilityPkg/Compatiblity/ReadOnlyVariable2ToReadOnlyVariableThunk/ReadOnlyVariable2ToReadOnlyVariableThunk.inf +++ /dev/null @@ -1,52 +0,0 @@ -#/** @file -# Component description file for PeiVariable module. -# -# PEIM to provide the Variable functionality. -# Copyright (c) 2006 - 2007, 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. -# -# -#**/ - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = ReadOnlyVariable2ToReadOnlyVariableThunk - FILE_GUID = 950216A2-A621-479c-A13D-2990617BDFE7 - MODULE_TYPE = PEIM - VERSION_STRING = 1.0 - EDK_RELEASE_VERSION = 0x00020000 - EFI_SPECIFICATION_VERSION = 0x00020000 - - ENTRY_POINT = PeimInitializeReadOnlyVariable2 - -# -# The following information is for reference only and not required by the build tools. -# -# VALID_ARCHITECTURES = IA32 X64 IPF EBC -# - -[Sources.common] - ReadOnlyVariable2ToReadOnlyVariableThunk.c - -[Packages] - MdePkg/MdePkg.dec - IntelFrameworkPkg/IntelFrameworkPkg.dec - -[LibraryClasses] - PeimEntryPoint - PeiServicesLib - PeiServicesTablePointerLib - DebugLib - -[Ppis] - gEfiPeiReadOnlyVariablePpiGuid # PPI ALWAYS_CONSUMED - gEfiPeiReadOnlyVariable2PpiGuid # PPI ALWAYS_PRODUCED - -[Depex] - gEfiPeiReadOnlyVariablePpiGuid diff --git a/EdkCompatibilityPkg/Compatiblity/ReadOnlyVariableToReadOnlyVariable2Thunk/ReadOnlyVariableToReadOnlyVariable2Thunk.c b/EdkCompatibilityPkg/Compatiblity/ReadOnlyVariableToReadOnlyVariable2Thunk/ReadOnlyVariableToReadOnlyVariable2Thunk.c deleted file mode 100644 index 8da77e1628..0000000000 --- a/EdkCompatibilityPkg/Compatiblity/ReadOnlyVariableToReadOnlyVariable2Thunk/ReadOnlyVariableToReadOnlyVariable2Thunk.c +++ /dev/null @@ -1,208 +0,0 @@ -/*++ - -Copyright (c) 2006 - 2008 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: - - Variable.c - -Abstract: - - PEIM to provide the Variable functionality - ---*/ - -#include -#include -#include -#include - -// -// Function Prototypes -// -EFI_STATUS -EFIAPI -PeiGetVariable ( - IN EFI_PEI_SERVICES **PeiServices, - IN CHAR16 *VariableName, - IN EFI_GUID *VendorGuid, - OUT UINT32 *Attributes OPTIONAL, - IN OUT UINTN *DataSize, - OUT VOID *Data - ); - -EFI_STATUS -EFIAPI -PeiGetNextVariableName ( - IN EFI_PEI_SERVICES **PeiServices, - IN OUT UINTN *VariableNameSize, - IN OUT CHAR16 *VariableName, - IN OUT EFI_GUID *VendorGuid - ); - -// -// Module globals -// -EFI_PEI_READ_ONLY_VARIABLE_PPI mVariablePpi = { - PeiGetVariable, - PeiGetNextVariableName -}; - -EFI_PEI_PPI_DESCRIPTOR mPpiListVariable = { - (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST), - &gEfiPeiReadOnlyVariablePpiGuid, - &mVariablePpi -}; - -EFI_STATUS -EFIAPI -PeimInitializeReadOnlyVariable ( - IN EFI_FFS_FILE_HEADER *FfsHeader, - IN CONST EFI_PEI_SERVICES **PeiServices - ) -/*++ - -Routine Description: - - Provide the functionality of the variable services. - -Arguments: - - FfsHeadher - The FFS file header - PeiServices - General purpose services available to every PEIM. - -Returns: - - Status - EFI_SUCCESS if the interface could be successfully - installed - ---*/ -{ - // - // Publish the variable capability to other modules - // - return (*PeiServices)->InstallPpi (PeiServices, &mPpiListVariable); -} - -EFI_STATUS -EFIAPI -PeiGetVariable ( - IN EFI_PEI_SERVICES **PeiServices, - IN CHAR16 *VariableName, - IN EFI_GUID *VendorGuid, - OUT UINT32 *Attributes OPTIONAL, - IN OUT UINTN *DataSize, - OUT VOID *Data - ) -/*++ - -Routine Description: - - Provide the read variable functionality of the variable services. - -Arguments: - - PeiServices - General purpose services available to every PEIM. - - VariableName - The variable name - - VendorGuid - The vendor's GUID - - Attributes - Pointer to the attribute - - DataSize - Size of data - - Data - Pointer to data - -Returns: - - EFI_SUCCESS - The interface could be successfully installed - - EFI_NOT_FOUND - The variable could not be discovered - - EFI_BUFFER_TOO_SMALL - The caller buffer is not large enough - ---*/ -{ - EFI_STATUS Status; - EFI_PEI_READ_ONLY_VARIABLE2_PPI *ReadOnlyVariable2; - - Status = (*PeiServices)->LocatePpi ( - (CONST EFI_PEI_SERVICES **)PeiServices, - &gEfiPeiReadOnlyVariable2PpiGuid, - 0, - NULL, - (VOID **)&ReadOnlyVariable2 - ); - ASSERT_EFI_ERROR (Status); - - return ReadOnlyVariable2->GetVariable ( - ReadOnlyVariable2, - VariableName, - VendorGuid, - Attributes, - DataSize, - Data - ); -} - -EFI_STATUS -EFIAPI -PeiGetNextVariableName ( - IN EFI_PEI_SERVICES **PeiServices, - IN OUT UINTN *VariableNameSize, - IN OUT CHAR16 *VariableName, - IN OUT EFI_GUID *VendorGuid - ) -/*++ - -Routine Description: - - Provide the get next variable functionality of the variable services. - -Arguments: - - PeiServices - General purpose services available to every PEIM. - VariabvleNameSize - The variable name's size. - VariableName - A pointer to the variable's name. - VariableGuid - A pointer to the EFI_GUID structure. - - VariableNameSize - Size of the variable name - - VariableName - The variable name - - VendorGuid - The vendor's GUID - -Returns: - - EFI_SUCCESS - The interface could be successfully installed - - EFI_NOT_FOUND - The variable could not be discovered - ---*/ -{ - EFI_STATUS Status; - EFI_PEI_READ_ONLY_VARIABLE2_PPI *ReadOnlyVariable2; - - Status = (*PeiServices)->LocatePpi ( - (CONST EFI_PEI_SERVICES **)PeiServices, - &gEfiPeiReadOnlyVariable2PpiGuid, - 0, - NULL, - (VOID **)&ReadOnlyVariable2 - ); - ASSERT_EFI_ERROR (Status); - - return ReadOnlyVariable2->NextVariableName ( - ReadOnlyVariable2, - VariableNameSize, - VariableName, - VendorGuid - ); -} diff --git a/EdkCompatibilityPkg/Compatiblity/ReadOnlyVariableToReadOnlyVariable2Thunk/ReadOnlyVariableToReadOnlyVariable2Thunk.inf b/EdkCompatibilityPkg/Compatiblity/ReadOnlyVariableToReadOnlyVariable2Thunk/ReadOnlyVariableToReadOnlyVariable2Thunk.inf deleted file mode 100644 index 3142eed31d..0000000000 --- a/EdkCompatibilityPkg/Compatiblity/ReadOnlyVariableToReadOnlyVariable2Thunk/ReadOnlyVariableToReadOnlyVariable2Thunk.inf +++ /dev/null @@ -1,52 +0,0 @@ -#/** @file -# Component description file for PeiVariable module. -# -# PEIM to provide the Variable functionality. -# Copyright (c) 2006 - 2007, 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. -# -# -#**/ - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = ReadOnlyVariableToReadOnlyVariable2Thunk - FILE_GUID = 0FDB764B-E669-4c69-83AC-5EDD99A2711E - MODULE_TYPE = PEIM - VERSION_STRING = 1.0 - EDK_RELEASE_VERSION = 0x00020000 - EFI_SPECIFICATION_VERSION = 0x00020000 - - ENTRY_POINT = PeimInitializeReadOnlyVariable - -# -# The following information is for reference only and not required by the build tools. -# -# VALID_ARCHITECTURES = IA32 X64 IPF EBC -# - -[Sources.common] - ReadOnlyVariableToReadOnlyVariable2Thunk.c - -[Packages] - MdePkg/MdePkg.dec - IntelFrameworkPkg/IntelFrameworkPkg.dec - -[LibraryClasses] - PeimEntryPoint -# PeiServicesLib -# PeiServicesTablePointerLib - DebugLib - -[Ppis] - gEfiPeiReadOnlyVariable2PpiGuid # PPI ALWAYS_CONSUMED - gEfiPeiReadOnlyVariablePpiGuid # PPI ALWAYS_PRODUCED - -[Depex] - gEfiPeiReadOnlyVariable2PpiGuid