From a0e221ae23fc65439b3828991d1b58b4a203b0c5 Mon Sep 17 00:00:00 2001 From: qwang12 Date: Wed, 21 Jan 2009 10:17:15 +0000 Subject: Update the INF file name based on the directory name change. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7341 6f19259b-4bc3-4df7-8a09-765794883524 --- .../PciCfgOnPciCfg2Thunk/PciCfgOnPciCfg2Thunk.c | 311 ++++++++++++++ .../PciCfgOnPciCfg2Thunk/PciCfgOnPciCfg2Thunk.inf | 63 +++ .../PciCfgOnPciCfg2Thunk/PciCfgToPciCfg2Thunk.c | 311 -------------- .../PciCfgOnPciCfg2Thunk/PciCfgToPciCfg2Thunk.inf | 63 --- .../Compatibility/Uc2OnUcThunk/Uc2OnUcThunk.c | 458 +++++++++++++++++++++ .../Compatibility/Uc2OnUcThunk/Uc2OnUcThunk.inf | 62 +++ .../Compatibility/Uc2OnUcThunk/Uc2ToUcThunk.c | 458 --------------------- .../Compatibility/Uc2OnUcThunk/Uc2ToUcThunk.inf | 62 --- 8 files changed, 894 insertions(+), 894 deletions(-) create mode 100644 EdkCompatibilityPkg/Compatibility/PciCfgOnPciCfg2Thunk/PciCfgOnPciCfg2Thunk.c create mode 100644 EdkCompatibilityPkg/Compatibility/PciCfgOnPciCfg2Thunk/PciCfgOnPciCfg2Thunk.inf delete mode 100644 EdkCompatibilityPkg/Compatibility/PciCfgOnPciCfg2Thunk/PciCfgToPciCfg2Thunk.c delete mode 100644 EdkCompatibilityPkg/Compatibility/PciCfgOnPciCfg2Thunk/PciCfgToPciCfg2Thunk.inf create mode 100644 EdkCompatibilityPkg/Compatibility/Uc2OnUcThunk/Uc2OnUcThunk.c create mode 100644 EdkCompatibilityPkg/Compatibility/Uc2OnUcThunk/Uc2OnUcThunk.inf delete mode 100644 EdkCompatibilityPkg/Compatibility/Uc2OnUcThunk/Uc2ToUcThunk.c delete mode 100644 EdkCompatibilityPkg/Compatibility/Uc2OnUcThunk/Uc2ToUcThunk.inf (limited to 'EdkCompatibilityPkg/Compatibility') diff --git a/EdkCompatibilityPkg/Compatibility/PciCfgOnPciCfg2Thunk/PciCfgOnPciCfg2Thunk.c b/EdkCompatibilityPkg/Compatibility/PciCfgOnPciCfg2Thunk/PciCfgOnPciCfg2Thunk.c new file mode 100644 index 0000000000..592a571f13 --- /dev/null +++ b/EdkCompatibilityPkg/Compatibility/PciCfgOnPciCfg2Thunk/PciCfgOnPciCfg2Thunk.c @@ -0,0 +1,311 @@ +/** @file +Module produce PciCfgPpi on top of PciCfgPpi2. + +PIWG's PI specification replaces Inte's EFI Specification 1.10. +EFI_PEI_PCI_CFG_PPI defined in Inte's EFI Specification 1.10 is replaced by +EFI_PEI_PCI_CFG2_PPI in PI 1.0. +This module produces PciCfgPpi on top of PciCfgPpi2. This module is used on platform when both of +these two conditions are true: +1) Framework module is present that consumes PCI CFG AND +2) PI module is present that produces PCI CFG2 but not PCI CFG + +The Usage of this module is rare since EDK II module IntelFrameworkModulePkg\Universal\PcatSingleSegmentPciCfgPei\PcatSingleSegmentPciCfgPei.inf +that produce PCI CFG2 can also produce PCI CFG by setting Pcd Feature Flag gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdPciCfgDisable +to FALSE. + + +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: +**/ + +#include +#include +#include +#include + +// +// Function Prototypes +// + +/** + Reads from a given location in the PCI configuration space. + + @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. + + @param This Pointer to local data for the interface. + + @param Width The width of the access. Enumerated in bytes. + See EFI_PEI_PCI_CFG_PPI_WIDTH above. + + @param Address The physical address of the access. The format of + the address is described by EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS. + + @param Buffer A pointer to the buffer of data.. + + + @retval EFI_SUCCESS The function completed successfully. + + @retval EFI_DEVICE_ERROR There was a problem with the transaction. + + @retval EFI_DEVICE_NOT_READY The device is not capable of supporting the operation at this + time. + +**/ +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 + ); + +/** + Write to a given location in the PCI configuration space. + + @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. + + @param This Pointer to local data for the interface. + + @param Width The width of the access. Enumerated in bytes. + See EFI_PEI_PCI_CFG_PPI_WIDTH above. + + @param Address The physical address of the access. The format of + the address is described by EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS. + + @param Buffer A pointer to the buffer of data.. + + + @retval EFI_SUCCESS The function completed successfully. + + @retval EFI_DEVICE_ERROR There was a problem with the transaction. + + @retval EFI_DEVICE_NOT_READY The device is not capable of supporting the operation at this + time. + +**/ +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 + ); + +/** + PCI read-modify-write operation. + + @param PeiServices An indirect pointer to the PEI Services Table + published by the PEI Foundation. + + @param This Pointer to local data for the interface. + + @param Width The width of the access. Enumerated in bytes. Type + EFI_PEI_PCI_CFG_PPI_WIDTH is defined in Read(). + + @param Address The physical address of the access. + + @param SetBits Points to value to bitwise-OR with the read configuration value. + The size of the value is determined by Width. + + @param ClearBits Points to the value to negate and bitwise-AND with the read configuration value. + The size of the value is determined by Width. + + + @retval EFI_SUCCESS The function completed successfully. + + @retval EFI_DEVICE_ERROR There was a problem with the transaction. + + @retval EFI_DEVICE_NOT_READY The device is not capable of supporting + the operation at this time. + +**/ +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 +}; + +/** + + Standard PEIM entry point. + + @param FfsHeadher The FFS file header + @param PeiServices General purpose services available to every PEIM. + + + @retval EFI_SUCCESS if the interface could be successfully + installed + +--*/ +EFI_STATUS +EFIAPI +PeimInitializePciCfg ( + IN EFI_PEI_FILE_HANDLE FfsHeader, + IN CONST EFI_PEI_SERVICES **PeiServices + ) +{ + // + // Publish the PciCfgToPciCfg2 Thunk capability to other modules + // + return (*PeiServices)->InstallPpi (PeiServices, &mPpiListPciCfg); +} + +/** + Reads from a given location in the PCI configuration space. + + @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. + + @param This Pointer to local data for the interface. + + @param Width The width of the access. Enumerated in bytes. + See EFI_PEI_PCI_CFG_PPI_WIDTH above. + + @param Address The physical address of the access. The format of + the address is described by EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS. + + @param Buffer A pointer to the buffer of data.. + + + @retval EFI_SUCCESS The function completed successfully. + + @retval EFI_DEVICE_ERROR There was a problem with the transaction. + + @retval EFI_DEVICE_NOT_READY The device is not capable of supporting the operation at this + time. + +**/ +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); +} + + +/** + Write to a given location in the PCI configuration space. + + @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. + + @param This Pointer to local data for the interface. + + @param Width The width of the access. Enumerated in bytes. + See EFI_PEI_PCI_CFG_PPI_WIDTH above. + + @param Address The physical address of the access. The format of + the address is described by EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS. + + @param Buffer A pointer to the buffer of data.. + + + @retval EFI_SUCCESS The function completed successfully. + + @retval EFI_DEVICE_ERROR There was a problem with the transaction. + + @retval EFI_DEVICE_NOT_READY The device is not capable of supporting the operation at this + time. + +**/ +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); +} + +/** + PCI read-modify-write operation. + + @param PeiServices An indirect pointer to the PEI Services Table + published by the PEI Foundation. + + @param This Pointer to local data for the interface. + + @param Width The width of the access. Enumerated in bytes. Type + EFI_PEI_PCI_CFG_PPI_WIDTH is defined in Read(). + + @param Address The physical address of the access. + + @param SetBits Points to value to bitwise-OR with the read configuration value. + The size of the value is determined by Width. + + @param ClearBits Points to the value to negate and bitwise-AND with the read configuration value. + The size of the value is determined by Width. + + + @retval EFI_SUCCESS The function completed successfully. + + @retval EFI_DEVICE_ERROR There was a problem with the transaction. + + @retval EFI_DEVICE_NOT_READY The device is not capable of supporting + the operation at this time. + +**/ +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/Compatibility/PciCfgOnPciCfg2Thunk/PciCfgOnPciCfg2Thunk.inf b/EdkCompatibilityPkg/Compatibility/PciCfgOnPciCfg2Thunk/PciCfgOnPciCfg2Thunk.inf new file mode 100644 index 0000000000..9dbad54526 --- /dev/null +++ b/EdkCompatibilityPkg/Compatibility/PciCfgOnPciCfg2Thunk/PciCfgOnPciCfg2Thunk.inf @@ -0,0 +1,63 @@ +#/** @file +# Module produce PciCfgPpi on top of PciCfgPpi2. +# +# PIWG's PI specification replaces Inte's EFI Specification 1.10. +# EFI_PEI_PCI_CFG_PPI defined in Inte's EFI Specification 1.10 is replaced by +# EFI_PEI_PCI_CFG2_PPI in PI 1.0. +# This module produces PciCfgPpi on top of PciCfgPpi2. This module is used on platform when both of +# these two conditions are true: +# 1) Framework module is present that consumes PCI CFG AND +# 2) R9 module is present that produces PCI CFG2 but not PCI CFG +# +# The Usage of this module is rare since EDK II module IntelFrameworkModulePkg\Universal\PcatSingleSegmentPciCfgPei\PcatSingleSegmentPciCfgPei.inf +# that produce PCI CFG2 can also produce PCI CFG by setting Pcd Feature Flag gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdPciCfgDisable +# to FALSE. +# +# +# 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 = PciCfgOnPciCfg2Thunk + 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] + PciCfgOnPciCfg2Thunk.c + +[Packages] + MdePkg/MdePkg.dec + IntelFrameworkPkg/IntelFrameworkPkg.dec + +[LibraryClasses] + PeimEntryPoint + DebugLib + +[Ppis] + gEfiPciCfgPpiInServiceTableGuid + gEfiPciCfg2PpiGuid + +[Depex] + gEfiPciCfg2PpiGuid diff --git a/EdkCompatibilityPkg/Compatibility/PciCfgOnPciCfg2Thunk/PciCfgToPciCfg2Thunk.c b/EdkCompatibilityPkg/Compatibility/PciCfgOnPciCfg2Thunk/PciCfgToPciCfg2Thunk.c deleted file mode 100644 index 592a571f13..0000000000 --- a/EdkCompatibilityPkg/Compatibility/PciCfgOnPciCfg2Thunk/PciCfgToPciCfg2Thunk.c +++ /dev/null @@ -1,311 +0,0 @@ -/** @file -Module produce PciCfgPpi on top of PciCfgPpi2. - -PIWG's PI specification replaces Inte's EFI Specification 1.10. -EFI_PEI_PCI_CFG_PPI defined in Inte's EFI Specification 1.10 is replaced by -EFI_PEI_PCI_CFG2_PPI in PI 1.0. -This module produces PciCfgPpi on top of PciCfgPpi2. This module is used on platform when both of -these two conditions are true: -1) Framework module is present that consumes PCI CFG AND -2) PI module is present that produces PCI CFG2 but not PCI CFG - -The Usage of this module is rare since EDK II module IntelFrameworkModulePkg\Universal\PcatSingleSegmentPciCfgPei\PcatSingleSegmentPciCfgPei.inf -that produce PCI CFG2 can also produce PCI CFG by setting Pcd Feature Flag gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdPciCfgDisable -to FALSE. - - -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: -**/ - -#include -#include -#include -#include - -// -// Function Prototypes -// - -/** - Reads from a given location in the PCI configuration space. - - @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. - - @param This Pointer to local data for the interface. - - @param Width The width of the access. Enumerated in bytes. - See EFI_PEI_PCI_CFG_PPI_WIDTH above. - - @param Address The physical address of the access. The format of - the address is described by EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS. - - @param Buffer A pointer to the buffer of data.. - - - @retval EFI_SUCCESS The function completed successfully. - - @retval EFI_DEVICE_ERROR There was a problem with the transaction. - - @retval EFI_DEVICE_NOT_READY The device is not capable of supporting the operation at this - time. - -**/ -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 - ); - -/** - Write to a given location in the PCI configuration space. - - @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. - - @param This Pointer to local data for the interface. - - @param Width The width of the access. Enumerated in bytes. - See EFI_PEI_PCI_CFG_PPI_WIDTH above. - - @param Address The physical address of the access. The format of - the address is described by EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS. - - @param Buffer A pointer to the buffer of data.. - - - @retval EFI_SUCCESS The function completed successfully. - - @retval EFI_DEVICE_ERROR There was a problem with the transaction. - - @retval EFI_DEVICE_NOT_READY The device is not capable of supporting the operation at this - time. - -**/ -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 - ); - -/** - PCI read-modify-write operation. - - @param PeiServices An indirect pointer to the PEI Services Table - published by the PEI Foundation. - - @param This Pointer to local data for the interface. - - @param Width The width of the access. Enumerated in bytes. Type - EFI_PEI_PCI_CFG_PPI_WIDTH is defined in Read(). - - @param Address The physical address of the access. - - @param SetBits Points to value to bitwise-OR with the read configuration value. - The size of the value is determined by Width. - - @param ClearBits Points to the value to negate and bitwise-AND with the read configuration value. - The size of the value is determined by Width. - - - @retval EFI_SUCCESS The function completed successfully. - - @retval EFI_DEVICE_ERROR There was a problem with the transaction. - - @retval EFI_DEVICE_NOT_READY The device is not capable of supporting - the operation at this time. - -**/ -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 -}; - -/** - - Standard PEIM entry point. - - @param FfsHeadher The FFS file header - @param PeiServices General purpose services available to every PEIM. - - - @retval EFI_SUCCESS if the interface could be successfully - installed - ---*/ -EFI_STATUS -EFIAPI -PeimInitializePciCfg ( - IN EFI_PEI_FILE_HANDLE FfsHeader, - IN CONST EFI_PEI_SERVICES **PeiServices - ) -{ - // - // Publish the PciCfgToPciCfg2 Thunk capability to other modules - // - return (*PeiServices)->InstallPpi (PeiServices, &mPpiListPciCfg); -} - -/** - Reads from a given location in the PCI configuration space. - - @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. - - @param This Pointer to local data for the interface. - - @param Width The width of the access. Enumerated in bytes. - See EFI_PEI_PCI_CFG_PPI_WIDTH above. - - @param Address The physical address of the access. The format of - the address is described by EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS. - - @param Buffer A pointer to the buffer of data.. - - - @retval EFI_SUCCESS The function completed successfully. - - @retval EFI_DEVICE_ERROR There was a problem with the transaction. - - @retval EFI_DEVICE_NOT_READY The device is not capable of supporting the operation at this - time. - -**/ -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); -} - - -/** - Write to a given location in the PCI configuration space. - - @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. - - @param This Pointer to local data for the interface. - - @param Width The width of the access. Enumerated in bytes. - See EFI_PEI_PCI_CFG_PPI_WIDTH above. - - @param Address The physical address of the access. The format of - the address is described by EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS. - - @param Buffer A pointer to the buffer of data.. - - - @retval EFI_SUCCESS The function completed successfully. - - @retval EFI_DEVICE_ERROR There was a problem with the transaction. - - @retval EFI_DEVICE_NOT_READY The device is not capable of supporting the operation at this - time. - -**/ -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); -} - -/** - PCI read-modify-write operation. - - @param PeiServices An indirect pointer to the PEI Services Table - published by the PEI Foundation. - - @param This Pointer to local data for the interface. - - @param Width The width of the access. Enumerated in bytes. Type - EFI_PEI_PCI_CFG_PPI_WIDTH is defined in Read(). - - @param Address The physical address of the access. - - @param SetBits Points to value to bitwise-OR with the read configuration value. - The size of the value is determined by Width. - - @param ClearBits Points to the value to negate and bitwise-AND with the read configuration value. - The size of the value is determined by Width. - - - @retval EFI_SUCCESS The function completed successfully. - - @retval EFI_DEVICE_ERROR There was a problem with the transaction. - - @retval EFI_DEVICE_NOT_READY The device is not capable of supporting - the operation at this time. - -**/ -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/Compatibility/PciCfgOnPciCfg2Thunk/PciCfgToPciCfg2Thunk.inf b/EdkCompatibilityPkg/Compatibility/PciCfgOnPciCfg2Thunk/PciCfgToPciCfg2Thunk.inf deleted file mode 100644 index 9dbad54526..0000000000 --- a/EdkCompatibilityPkg/Compatibility/PciCfgOnPciCfg2Thunk/PciCfgToPciCfg2Thunk.inf +++ /dev/null @@ -1,63 +0,0 @@ -#/** @file -# Module produce PciCfgPpi on top of PciCfgPpi2. -# -# PIWG's PI specification replaces Inte's EFI Specification 1.10. -# EFI_PEI_PCI_CFG_PPI defined in Inte's EFI Specification 1.10 is replaced by -# EFI_PEI_PCI_CFG2_PPI in PI 1.0. -# This module produces PciCfgPpi on top of PciCfgPpi2. This module is used on platform when both of -# these two conditions are true: -# 1) Framework module is present that consumes PCI CFG AND -# 2) R9 module is present that produces PCI CFG2 but not PCI CFG -# -# The Usage of this module is rare since EDK II module IntelFrameworkModulePkg\Universal\PcatSingleSegmentPciCfgPei\PcatSingleSegmentPciCfgPei.inf -# that produce PCI CFG2 can also produce PCI CFG by setting Pcd Feature Flag gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdPciCfgDisable -# to FALSE. -# -# -# 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 = PciCfgOnPciCfg2Thunk - 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] - PciCfgOnPciCfg2Thunk.c - -[Packages] - MdePkg/MdePkg.dec - IntelFrameworkPkg/IntelFrameworkPkg.dec - -[LibraryClasses] - PeimEntryPoint - DebugLib - -[Ppis] - gEfiPciCfgPpiInServiceTableGuid - gEfiPciCfg2PpiGuid - -[Depex] - gEfiPciCfg2PpiGuid diff --git a/EdkCompatibilityPkg/Compatibility/Uc2OnUcThunk/Uc2OnUcThunk.c b/EdkCompatibilityPkg/Compatibility/Uc2OnUcThunk/Uc2OnUcThunk.c new file mode 100644 index 0000000000..7bc94018b8 --- /dev/null +++ b/EdkCompatibilityPkg/Compatibility/Uc2OnUcThunk/Uc2OnUcThunk.c @@ -0,0 +1,458 @@ +/** @file +Module produce UC2 on top of UC. + +UEFI 2.1 specification supersedes Inte's EFI Specification 1.10. +EFI_UNICODE_COLLATION_PROTOCOL defined in Inte's EFI Specification 1.10 is replaced by +EFI_UNICODE_COLLATION_PROTOCOL in UEFI 2.1. +This module produces UC2 on top of UC. This module is used on platform when both of +these two conditions are true: +1) EFI 1.10 module producing UC present +2) And the rest of modules on the platform consume UC2 + +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: + +**/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + + + +/** + Performs a case-insensitive comparison of two Null-terminated Unicode + strings. + + @param This Protocol instance pointer. + @param Str1 A pointer to a Null-terminated Unicode string. + @param Str2 A pointer to a Null-terminated Unicode string. + + @retval 0 Str1 is equivalent to Str2 + @retval > 0 Str1 is lexically greater than Str2 + @retval < 0 Str1 is lexically less than Str2 + +**/ +INTN +EFIAPI +StriColl ( + IN EFI_UNICODE_COLLATION_PROTOCOL *This, + IN CHAR16 *Str1, + IN CHAR16 *Str2 + ); + +/** + Converts all the Unicode characters in a Null-terminated Unicode string to + lower case Unicode characters. + + @param This Protocol instance pointer. + @param Str A pointer to a Null-terminated Unicode string. + +**/ +VOID +EFIAPI +StrLwr ( + IN EFI_UNICODE_COLLATION_PROTOCOL *This, + IN OUT CHAR16 *Str + ); + +/** + Converts all the Unicode characters in a Null-terminated Unicode string to upper + case Unicode characters. + + @param This Protocol instance pointer. + @param Str A pointer to a Null-terminated Unicode string. + +**/ +VOID +EFIAPI +StrUpr ( + IN EFI_UNICODE_COLLATION_PROTOCOL *This, + IN OUT CHAR16 *Str + ); + +/** + Performs a case-insensitive comparison of a Null-terminated Unicode + pattern string and a Null-terminated Unicode string. + + @param This Protocol instance pointer. + @param String A pointer to a Null-terminated Unicode string. + @param Pattern A pointer to a Null-terminated Unicode pattern string. + + @retval TRUE Pattern was found in String. + @retval FALSE Pattern was not found in String. + +**/ +BOOLEAN +EFIAPI +MetaiMatch ( + IN EFI_UNICODE_COLLATION_PROTOCOL *This, + IN CHAR16 *String, + IN CHAR16 *Pattern + ); + +/** + Converts an 8.3 FAT file name in an OEM character set to a Null-terminated + Unicode string. + + @param This Protocol instance pointer. + @param FatSize The size of the string Fat in bytes. + @param Fat A pointer to a Null-terminated string that contains an 8.3 file + name using an OEM character set. + @param String A pointer to a Null-terminated Unicode string. The string must + be preallocated to hold FatSize Unicode characters. + +**/ +VOID +EFIAPI +FatToStr ( + IN EFI_UNICODE_COLLATION_PROTOCOL *This, + IN UINTN FatSize, + IN CHAR8 *Fat, + OUT CHAR16 *String + ); + +/** + Converts a Null-terminated Unicode string to legal characters in a FAT + filename using an OEM character set. + + @param This Protocol instance pointer. + @param String A pointer to a Null-terminated Unicode string. The string must + be preallocated to hold FatSize Unicode characters. + @param FatSize The size of the string Fat in bytes. + @param Fat A pointer to a Null-terminated string that contains an 8.3 file + name using an OEM character set. + + @retval TRUE Fat is a Long File Name + @retval FALSE Fat is an 8.3 file name + +**/ +BOOLEAN +EFIAPI +StrToFat ( + IN EFI_UNICODE_COLLATION_PROTOCOL *This, + IN CHAR16 *String, + IN UINTN FatSize, + OUT CHAR8 *Fat + ); + +#define UC2_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('_', 'U', 'C', '2') + +typedef struct { + UINT32 Signature; + EFI_UNICODE_COLLATION_PROTOCOL UC2; + EFI_UNICODE_COLLATION_PROTOCOL *UC; +} UC2_PRIVATE_DATA; + +#define UC2_PRIVATE_DATA_FROM_THIS(a) CR (a, UC2_PRIVATE_DATA, UC2, UC2_PRIVATE_DATA_SIGNATURE) + +// +// Firmware Volume Protocol template +// +EFI_EVENT mUc2Registration; + +UC2_PRIVATE_DATA gUC2PrivateDataTemplate = { + UC2_PRIVATE_DATA_SIGNATURE, + { + StriColl, + MetaiMatch, + StrLwr, + StrUpr, + FatToStr, + StrToFat, + NULL + }, + NULL +}; + +// +// Module globals +// + +VOID +EFIAPI +UcNotificationEvent ( + IN EFI_EVENT Event, + IN VOID *Context + ) +{ + EFI_STATUS Status; + UINTN BufferSize; + EFI_HANDLE Handle; + UC2_PRIVATE_DATA *Private; + EFI_UNICODE_COLLATION_PROTOCOL *Uc2; + + while (TRUE) { + BufferSize = sizeof (Handle); + Status = gBS->LocateHandle ( + ByRegisterNotify, + &gEfiUnicodeCollationProtocolGuid, + mUc2Registration, + &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, + &gEfiUnicodeCollation2ProtocolGuid, + (VOID **)&Uc2 + ); + if (!EFI_ERROR (Status)) { + continue; + } + + // + // Allocate private data structure + // + Private = AllocateCopyPool (sizeof (UC2_PRIVATE_DATA), &gUC2PrivateDataTemplate); + if (Private == NULL) { + continue; + } + + // + // Retrieve the UC Protocol + // + Status = gBS->HandleProtocol ( + Handle, + &gEfiUnicodeCollationProtocolGuid, + (VOID **)&Private->UC + ); + ASSERT_EFI_ERROR (Status); + + // + // Fill in rest of private data structure + // + Private->UC2.SupportedLanguages = AllocateZeroPool (RFC_3066_ENTRY_SIZE); + Status = ConvertIso639LanguageToRfc3066Language (Private->UC->SupportedLanguages, Private->UC2.SupportedLanguages); + + if (!EFI_ERROR (Status)) { + + // + // Install Firmware Volume Protocol onto same handle + // + Status = gBS->InstallMultipleProtocolInterfaces ( + &Handle, + &gEfiUnicodeCollation2ProtocolGuid, + &Private->UC2, + 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 +InitializeUC2 ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + EfiCreateProtocolNotifyEvent ( + &gEfiUnicodeCollationProtocolGuid, + TPL_CALLBACK, + UcNotificationEvent, + NULL, + &mUc2Registration + ); + return EFI_SUCCESS; +} + + +/** + Performs a case-insensitive comparison of two Null-terminated Unicode + strings. + + @param This Protocol instance pointer. + @param Str1 A pointer to a Null-terminated Unicode string. + @param Str2 A pointer to a Null-terminated Unicode string. + + @retval 0 Str1 is equivalent to Str2 + @retval > 0 Str1 is lexically greater than Str2 + @retval < 0 Str1 is lexically less than Str2 + +**/ +INTN +EFIAPI +StriColl ( + IN EFI_UNICODE_COLLATION_PROTOCOL *This, + IN CHAR16 *Str1, + IN CHAR16 *Str2 + ) +{ + UC2_PRIVATE_DATA *Private; + + Private = UC2_PRIVATE_DATA_FROM_THIS (This); + + return Private->UC->StriColl (Private->UC, Str1, Str2); +} + + +/** + Converts all the Unicode characters in a Null-terminated Unicode string to + lower case Unicode characters. + + @param This Protocol instance pointer. + @param Str A pointer to a Null-terminated Unicode string. + +**/ +VOID +EFIAPI +StrLwr ( + IN EFI_UNICODE_COLLATION_PROTOCOL *This, + IN OUT CHAR16 *Str + ) +{ + UC2_PRIVATE_DATA *Private; + + Private = UC2_PRIVATE_DATA_FROM_THIS (This); + + Private->UC->StrLwr (Private->UC, Str); +} + + +/** + Converts all the Unicode characters in a Null-terminated Unicode string to upper + case Unicode characters. + + @param This Protocol instance pointer. + @param Str A pointer to a Null-terminated Unicode string. + +**/ +VOID +EFIAPI +StrUpr ( + IN EFI_UNICODE_COLLATION_PROTOCOL *This, + IN OUT CHAR16 *Str + ) +{ + UC2_PRIVATE_DATA *Private; + + Private = UC2_PRIVATE_DATA_FROM_THIS (This); + + Private->UC->StrUpr (Private->UC, Str); +} + +/** + Performs a case-insensitive comparison of a Null-terminated Unicode + pattern string and a Null-terminated Unicode string. + + @param This Protocol instance pointer. + @param String A pointer to a Null-terminated Unicode string. + @param Pattern A pointer to a Null-terminated Unicode pattern string. + + @retval TRUE Pattern was found in String. + @retval FALSE Pattern was not found in String. + +**/ +BOOLEAN +EFIAPI +MetaiMatch ( + IN EFI_UNICODE_COLLATION_PROTOCOL *This, + IN CHAR16 *String, + IN CHAR16 *Pattern + ) +{ + UC2_PRIVATE_DATA *Private; + + Private = UC2_PRIVATE_DATA_FROM_THIS (This); + + return Private->UC->MetaiMatch (Private->UC, String, Pattern); +} + + +/** + Converts an 8.3 FAT file name in an OEM character set to a Null-terminated + Unicode string. + + @param This Protocol instance pointer. + @param FatSize The size of the string Fat in bytes. + @param Fat A pointer to a Null-terminated string that contains an 8.3 file + name using an OEM character set. + @param String A pointer to a Null-terminated Unicode string. The string must + be preallocated to hold FatSize Unicode characters. + +**/ +VOID +EFIAPI +FatToStr ( + IN EFI_UNICODE_COLLATION_PROTOCOL *This, + IN UINTN FatSize, + IN CHAR8 *Fat, + OUT CHAR16 *String + ) +{ + UC2_PRIVATE_DATA *Private; + + Private = UC2_PRIVATE_DATA_FROM_THIS (This); + + Private->UC->FatToStr (Private->UC, FatSize, Fat, String); +} + + +/** + Converts a Null-terminated Unicode string to legal characters in a FAT + filename using an OEM character set. + + @param This Protocol instance pointer. + @param String A pointer to a Null-terminated Unicode string. The string must + be preallocated to hold FatSize Unicode characters. + @param FatSize The size of the string Fat in bytes. + @param Fat A pointer to a Null-terminated string that contains an 8.3 file + name using an OEM character set. + + @retval TRUE Fat is a Long File Name + @retval FALSE Fat is an 8.3 file name + +**/ +BOOLEAN +EFIAPI +StrToFat ( + IN EFI_UNICODE_COLLATION_PROTOCOL *This, + IN CHAR16 *String, + IN UINTN FatSize, + OUT CHAR8 *Fat + ) +{ + UC2_PRIVATE_DATA *Private; + + Private = UC2_PRIVATE_DATA_FROM_THIS (This); + + return Private->UC->StrToFat (Private->UC, String, FatSize, Fat); +} + diff --git a/EdkCompatibilityPkg/Compatibility/Uc2OnUcThunk/Uc2OnUcThunk.inf b/EdkCompatibilityPkg/Compatibility/Uc2OnUcThunk/Uc2OnUcThunk.inf new file mode 100644 index 0000000000..5e0266919d --- /dev/null +++ b/EdkCompatibilityPkg/Compatibility/Uc2OnUcThunk/Uc2OnUcThunk.inf @@ -0,0 +1,62 @@ +#/** @file +# Module produce UC2 on top of UC. +# +# UEFI 2.1 specification supersedes Inte's EFI Specification 1.10. +# UNICODE_COLLATION_PROTOCOL defined in Inte's EFI Specification 1.10 is replaced by +# EFI_UNICODE_COLLATION_PROTOCOL in UEFI 2.1. +# This module produces UC2 on top of UC. This module is used on platform when both of +# these two conditions are true: +# 1) EFI 1.10 module producing UC present +# 2) And the rest of modules on the platform consume UC2 +# +# 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 = Uc2OnUcThunk + FILE_GUID = 69282DF3-778F-4269-91AA-D7DF6E193317 + MODULE_TYPE = DXE_DRIVER + VERSION_STRING = 1.0 + EDK_RELEASE_VERSION = 0x00020000 + EFI_SPECIFICATION_VERSION = 0x00020000 + ENTRY_POINT = InitializeUC2 + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 IPF EBC +# + +[Sources.common] + Uc2OnUcThunk.c + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + IntelFrameworkPkg/IntelFrameworkPkg.dec + +[LibraryClasses] + UefiDriverEntryPoint + UefiBootServicesTableLib + BaseLib + DebugLib + UefiLib + MemoryAllocationLib + HiiLib + +[Protocols] + gEfiUnicodeCollation2ProtocolGuid + gEfiUnicodeCollationProtocolGuid + +[Depex] + TRUE diff --git a/EdkCompatibilityPkg/Compatibility/Uc2OnUcThunk/Uc2ToUcThunk.c b/EdkCompatibilityPkg/Compatibility/Uc2OnUcThunk/Uc2ToUcThunk.c deleted file mode 100644 index 7bc94018b8..0000000000 --- a/EdkCompatibilityPkg/Compatibility/Uc2OnUcThunk/Uc2ToUcThunk.c +++ /dev/null @@ -1,458 +0,0 @@ -/** @file -Module produce UC2 on top of UC. - -UEFI 2.1 specification supersedes Inte's EFI Specification 1.10. -EFI_UNICODE_COLLATION_PROTOCOL defined in Inte's EFI Specification 1.10 is replaced by -EFI_UNICODE_COLLATION_PROTOCOL in UEFI 2.1. -This module produces UC2 on top of UC. This module is used on platform when both of -these two conditions are true: -1) EFI 1.10 module producing UC present -2) And the rest of modules on the platform consume UC2 - -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: - -**/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - - - -/** - Performs a case-insensitive comparison of two Null-terminated Unicode - strings. - - @param This Protocol instance pointer. - @param Str1 A pointer to a Null-terminated Unicode string. - @param Str2 A pointer to a Null-terminated Unicode string. - - @retval 0 Str1 is equivalent to Str2 - @retval > 0 Str1 is lexically greater than Str2 - @retval < 0 Str1 is lexically less than Str2 - -**/ -INTN -EFIAPI -StriColl ( - IN EFI_UNICODE_COLLATION_PROTOCOL *This, - IN CHAR16 *Str1, - IN CHAR16 *Str2 - ); - -/** - Converts all the Unicode characters in a Null-terminated Unicode string to - lower case Unicode characters. - - @param This Protocol instance pointer. - @param Str A pointer to a Null-terminated Unicode string. - -**/ -VOID -EFIAPI -StrLwr ( - IN EFI_UNICODE_COLLATION_PROTOCOL *This, - IN OUT CHAR16 *Str - ); - -/** - Converts all the Unicode characters in a Null-terminated Unicode string to upper - case Unicode characters. - - @param This Protocol instance pointer. - @param Str A pointer to a Null-terminated Unicode string. - -**/ -VOID -EFIAPI -StrUpr ( - IN EFI_UNICODE_COLLATION_PROTOCOL *This, - IN OUT CHAR16 *Str - ); - -/** - Performs a case-insensitive comparison of a Null-terminated Unicode - pattern string and a Null-terminated Unicode string. - - @param This Protocol instance pointer. - @param String A pointer to a Null-terminated Unicode string. - @param Pattern A pointer to a Null-terminated Unicode pattern string. - - @retval TRUE Pattern was found in String. - @retval FALSE Pattern was not found in String. - -**/ -BOOLEAN -EFIAPI -MetaiMatch ( - IN EFI_UNICODE_COLLATION_PROTOCOL *This, - IN CHAR16 *String, - IN CHAR16 *Pattern - ); - -/** - Converts an 8.3 FAT file name in an OEM character set to a Null-terminated - Unicode string. - - @param This Protocol instance pointer. - @param FatSize The size of the string Fat in bytes. - @param Fat A pointer to a Null-terminated string that contains an 8.3 file - name using an OEM character set. - @param String A pointer to a Null-terminated Unicode string. The string must - be preallocated to hold FatSize Unicode characters. - -**/ -VOID -EFIAPI -FatToStr ( - IN EFI_UNICODE_COLLATION_PROTOCOL *This, - IN UINTN FatSize, - IN CHAR8 *Fat, - OUT CHAR16 *String - ); - -/** - Converts a Null-terminated Unicode string to legal characters in a FAT - filename using an OEM character set. - - @param This Protocol instance pointer. - @param String A pointer to a Null-terminated Unicode string. The string must - be preallocated to hold FatSize Unicode characters. - @param FatSize The size of the string Fat in bytes. - @param Fat A pointer to a Null-terminated string that contains an 8.3 file - name using an OEM character set. - - @retval TRUE Fat is a Long File Name - @retval FALSE Fat is an 8.3 file name - -**/ -BOOLEAN -EFIAPI -StrToFat ( - IN EFI_UNICODE_COLLATION_PROTOCOL *This, - IN CHAR16 *String, - IN UINTN FatSize, - OUT CHAR8 *Fat - ); - -#define UC2_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('_', 'U', 'C', '2') - -typedef struct { - UINT32 Signature; - EFI_UNICODE_COLLATION_PROTOCOL UC2; - EFI_UNICODE_COLLATION_PROTOCOL *UC; -} UC2_PRIVATE_DATA; - -#define UC2_PRIVATE_DATA_FROM_THIS(a) CR (a, UC2_PRIVATE_DATA, UC2, UC2_PRIVATE_DATA_SIGNATURE) - -// -// Firmware Volume Protocol template -// -EFI_EVENT mUc2Registration; - -UC2_PRIVATE_DATA gUC2PrivateDataTemplate = { - UC2_PRIVATE_DATA_SIGNATURE, - { - StriColl, - MetaiMatch, - StrLwr, - StrUpr, - FatToStr, - StrToFat, - NULL - }, - NULL -}; - -// -// Module globals -// - -VOID -EFIAPI -UcNotificationEvent ( - IN EFI_EVENT Event, - IN VOID *Context - ) -{ - EFI_STATUS Status; - UINTN BufferSize; - EFI_HANDLE Handle; - UC2_PRIVATE_DATA *Private; - EFI_UNICODE_COLLATION_PROTOCOL *Uc2; - - while (TRUE) { - BufferSize = sizeof (Handle); - Status = gBS->LocateHandle ( - ByRegisterNotify, - &gEfiUnicodeCollationProtocolGuid, - mUc2Registration, - &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, - &gEfiUnicodeCollation2ProtocolGuid, - (VOID **)&Uc2 - ); - if (!EFI_ERROR (Status)) { - continue; - } - - // - // Allocate private data structure - // - Private = AllocateCopyPool (sizeof (UC2_PRIVATE_DATA), &gUC2PrivateDataTemplate); - if (Private == NULL) { - continue; - } - - // - // Retrieve the UC Protocol - // - Status = gBS->HandleProtocol ( - Handle, - &gEfiUnicodeCollationProtocolGuid, - (VOID **)&Private->UC - ); - ASSERT_EFI_ERROR (Status); - - // - // Fill in rest of private data structure - // - Private->UC2.SupportedLanguages = AllocateZeroPool (RFC_3066_ENTRY_SIZE); - Status = ConvertIso639LanguageToRfc3066Language (Private->UC->SupportedLanguages, Private->UC2.SupportedLanguages); - - if (!EFI_ERROR (Status)) { - - // - // Install Firmware Volume Protocol onto same handle - // - Status = gBS->InstallMultipleProtocolInterfaces ( - &Handle, - &gEfiUnicodeCollation2ProtocolGuid, - &Private->UC2, - 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 -InitializeUC2 ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable - ) -{ - EfiCreateProtocolNotifyEvent ( - &gEfiUnicodeCollationProtocolGuid, - TPL_CALLBACK, - UcNotificationEvent, - NULL, - &mUc2Registration - ); - return EFI_SUCCESS; -} - - -/** - Performs a case-insensitive comparison of two Null-terminated Unicode - strings. - - @param This Protocol instance pointer. - @param Str1 A pointer to a Null-terminated Unicode string. - @param Str2 A pointer to a Null-terminated Unicode string. - - @retval 0 Str1 is equivalent to Str2 - @retval > 0 Str1 is lexically greater than Str2 - @retval < 0 Str1 is lexically less than Str2 - -**/ -INTN -EFIAPI -StriColl ( - IN EFI_UNICODE_COLLATION_PROTOCOL *This, - IN CHAR16 *Str1, - IN CHAR16 *Str2 - ) -{ - UC2_PRIVATE_DATA *Private; - - Private = UC2_PRIVATE_DATA_FROM_THIS (This); - - return Private->UC->StriColl (Private->UC, Str1, Str2); -} - - -/** - Converts all the Unicode characters in a Null-terminated Unicode string to - lower case Unicode characters. - - @param This Protocol instance pointer. - @param Str A pointer to a Null-terminated Unicode string. - -**/ -VOID -EFIAPI -StrLwr ( - IN EFI_UNICODE_COLLATION_PROTOCOL *This, - IN OUT CHAR16 *Str - ) -{ - UC2_PRIVATE_DATA *Private; - - Private = UC2_PRIVATE_DATA_FROM_THIS (This); - - Private->UC->StrLwr (Private->UC, Str); -} - - -/** - Converts all the Unicode characters in a Null-terminated Unicode string to upper - case Unicode characters. - - @param This Protocol instance pointer. - @param Str A pointer to a Null-terminated Unicode string. - -**/ -VOID -EFIAPI -StrUpr ( - IN EFI_UNICODE_COLLATION_PROTOCOL *This, - IN OUT CHAR16 *Str - ) -{ - UC2_PRIVATE_DATA *Private; - - Private = UC2_PRIVATE_DATA_FROM_THIS (This); - - Private->UC->StrUpr (Private->UC, Str); -} - -/** - Performs a case-insensitive comparison of a Null-terminated Unicode - pattern string and a Null-terminated Unicode string. - - @param This Protocol instance pointer. - @param String A pointer to a Null-terminated Unicode string. - @param Pattern A pointer to a Null-terminated Unicode pattern string. - - @retval TRUE Pattern was found in String. - @retval FALSE Pattern was not found in String. - -**/ -BOOLEAN -EFIAPI -MetaiMatch ( - IN EFI_UNICODE_COLLATION_PROTOCOL *This, - IN CHAR16 *String, - IN CHAR16 *Pattern - ) -{ - UC2_PRIVATE_DATA *Private; - - Private = UC2_PRIVATE_DATA_FROM_THIS (This); - - return Private->UC->MetaiMatch (Private->UC, String, Pattern); -} - - -/** - Converts an 8.3 FAT file name in an OEM character set to a Null-terminated - Unicode string. - - @param This Protocol instance pointer. - @param FatSize The size of the string Fat in bytes. - @param Fat A pointer to a Null-terminated string that contains an 8.3 file - name using an OEM character set. - @param String A pointer to a Null-terminated Unicode string. The string must - be preallocated to hold FatSize Unicode characters. - -**/ -VOID -EFIAPI -FatToStr ( - IN EFI_UNICODE_COLLATION_PROTOCOL *This, - IN UINTN FatSize, - IN CHAR8 *Fat, - OUT CHAR16 *String - ) -{ - UC2_PRIVATE_DATA *Private; - - Private = UC2_PRIVATE_DATA_FROM_THIS (This); - - Private->UC->FatToStr (Private->UC, FatSize, Fat, String); -} - - -/** - Converts a Null-terminated Unicode string to legal characters in a FAT - filename using an OEM character set. - - @param This Protocol instance pointer. - @param String A pointer to a Null-terminated Unicode string. The string must - be preallocated to hold FatSize Unicode characters. - @param FatSize The size of the string Fat in bytes. - @param Fat A pointer to a Null-terminated string that contains an 8.3 file - name using an OEM character set. - - @retval TRUE Fat is a Long File Name - @retval FALSE Fat is an 8.3 file name - -**/ -BOOLEAN -EFIAPI -StrToFat ( - IN EFI_UNICODE_COLLATION_PROTOCOL *This, - IN CHAR16 *String, - IN UINTN FatSize, - OUT CHAR8 *Fat - ) -{ - UC2_PRIVATE_DATA *Private; - - Private = UC2_PRIVATE_DATA_FROM_THIS (This); - - return Private->UC->StrToFat (Private->UC, String, FatSize, Fat); -} - diff --git a/EdkCompatibilityPkg/Compatibility/Uc2OnUcThunk/Uc2ToUcThunk.inf b/EdkCompatibilityPkg/Compatibility/Uc2OnUcThunk/Uc2ToUcThunk.inf deleted file mode 100644 index 5e0266919d..0000000000 --- a/EdkCompatibilityPkg/Compatibility/Uc2OnUcThunk/Uc2ToUcThunk.inf +++ /dev/null @@ -1,62 +0,0 @@ -#/** @file -# Module produce UC2 on top of UC. -# -# UEFI 2.1 specification supersedes Inte's EFI Specification 1.10. -# UNICODE_COLLATION_PROTOCOL defined in Inte's EFI Specification 1.10 is replaced by -# EFI_UNICODE_COLLATION_PROTOCOL in UEFI 2.1. -# This module produces UC2 on top of UC. This module is used on platform when both of -# these two conditions are true: -# 1) EFI 1.10 module producing UC present -# 2) And the rest of modules on the platform consume UC2 -# -# 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 = Uc2OnUcThunk - FILE_GUID = 69282DF3-778F-4269-91AA-D7DF6E193317 - MODULE_TYPE = DXE_DRIVER - VERSION_STRING = 1.0 - EDK_RELEASE_VERSION = 0x00020000 - EFI_SPECIFICATION_VERSION = 0x00020000 - ENTRY_POINT = InitializeUC2 - -# -# The following information is for reference only and not required by the build tools. -# -# VALID_ARCHITECTURES = IA32 X64 IPF EBC -# - -[Sources.common] - Uc2OnUcThunk.c - -[Packages] - MdePkg/MdePkg.dec - MdeModulePkg/MdeModulePkg.dec - IntelFrameworkPkg/IntelFrameworkPkg.dec - -[LibraryClasses] - UefiDriverEntryPoint - UefiBootServicesTableLib - BaseLib - DebugLib - UefiLib - MemoryAllocationLib - HiiLib - -[Protocols] - gEfiUnicodeCollation2ProtocolGuid - gEfiUnicodeCollationProtocolGuid - -[Depex] - TRUE -- cgit v1.2.3