]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Remove IntelFrameworkPkg
authorHao A Wu <hao.a.wu@intel.com>
Mon, 27 May 2019 06:22:37 +0000 (14:22 +0800)
committerHao A Wu <hao.a.wu@intel.com>
Wed, 3 Jul 2019 05:24:16 +0000 (13:24 +0800)
REF:https://bugzilla.tianocore.org/show_bug.cgi?id=1604

Please note a subsequent commit will followed to update the information in
Maintainers.txt to reflect this package removal.

Cc: Andrew Fish <afish@apple.com>
Cc: Leif Lindholm <leif.lindholm@linaro.org>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Signed-off-by: Hao A Wu <hao.a.wu@intel.com>
Acked-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
Reviewed-by: Ray Ni <ray.ni@intel.com>
88 files changed:
IntelFrameworkPkg/FrameworkSpecConformance.txt [deleted file]
IntelFrameworkPkg/Include/Framework/BootScript.h [deleted file]
IntelFrameworkPkg/Include/Framework/DxeCis.h [deleted file]
IntelFrameworkPkg/Include/Framework/FirmwareVolumeHeader.h [deleted file]
IntelFrameworkPkg/Include/Framework/FirmwareVolumeImageFormat.h [deleted file]
IntelFrameworkPkg/Include/Framework/FrameworkInternalFormRepresentation.h [deleted file]
IntelFrameworkPkg/Include/Framework/Hob.h [deleted file]
IntelFrameworkPkg/Include/Framework/PeiCis.h [deleted file]
IntelFrameworkPkg/Include/Framework/SmmCis.h [deleted file]
IntelFrameworkPkg/Include/Framework/StatusCode.h [deleted file]
IntelFrameworkPkg/Include/FrameworkDxe.h [deleted file]
IntelFrameworkPkg/Include/FrameworkPei.h [deleted file]
IntelFrameworkPkg/Include/FrameworkSmm.h [deleted file]
IntelFrameworkPkg/Include/Guid/BlockIo.h [deleted file]
IntelFrameworkPkg/Include/Guid/Capsule.h [deleted file]
IntelFrameworkPkg/Include/Guid/DataHubRecords.h [deleted file]
IntelFrameworkPkg/Include/Guid/FirmwareFileSystem.h [deleted file]
IntelFrameworkPkg/Include/Guid/SmmCommunicate.h [deleted file]
IntelFrameworkPkg/Include/Guid/SmramMemoryReserve.h [deleted file]
IntelFrameworkPkg/Include/Ppi/BootScriptExecuter.h [deleted file]
IntelFrameworkPkg/Include/Ppi/FindFv.h [deleted file]
IntelFrameworkPkg/Include/Ppi/FvLoadFile.h [deleted file]
IntelFrameworkPkg/Include/Ppi/PciCfg.h [deleted file]
IntelFrameworkPkg/Include/Ppi/ReadOnlyVariable.h [deleted file]
IntelFrameworkPkg/Include/Ppi/S3Resume.h [deleted file]
IntelFrameworkPkg/Include/Ppi/SectionExtraction.h [deleted file]
IntelFrameworkPkg/Include/Ppi/Security.h [deleted file]
IntelFrameworkPkg/Include/Ppi/Smbus.h [deleted file]
IntelFrameworkPkg/Include/Protocol/AcpiS3Save.h [deleted file]
IntelFrameworkPkg/Include/Protocol/AcpiSupport.h [deleted file]
IntelFrameworkPkg/Include/Protocol/BootScriptSave.h [deleted file]
IntelFrameworkPkg/Include/Protocol/CpuIo.h [deleted file]
IntelFrameworkPkg/Include/Protocol/DataHub.h [deleted file]
IntelFrameworkPkg/Include/Protocol/FirmwareVolume.h [deleted file]
IntelFrameworkPkg/Include/Protocol/FrameworkFirmwareVolumeBlock.h [deleted file]
IntelFrameworkPkg/Include/Protocol/FrameworkFormBrowser.h [deleted file]
IntelFrameworkPkg/Include/Protocol/FrameworkFormCallback.h [deleted file]
IntelFrameworkPkg/Include/Protocol/FrameworkHii.h [deleted file]
IntelFrameworkPkg/Include/Protocol/FrameworkMpService.h [deleted file]
IntelFrameworkPkg/Include/Protocol/Legacy8259.h [deleted file]
IntelFrameworkPkg/Include/Protocol/LegacyBios.h [deleted file]
IntelFrameworkPkg/Include/Protocol/LegacyBiosPlatform.h [deleted file]
IntelFrameworkPkg/Include/Protocol/LegacyInterrupt.h [deleted file]
IntelFrameworkPkg/Include/Protocol/LegacyRegion.h [deleted file]
IntelFrameworkPkg/Include/Protocol/SectionExtraction.h [deleted file]
IntelFrameworkPkg/Include/Protocol/SmmAccess.h [deleted file]
IntelFrameworkPkg/Include/Protocol/SmmBase.h [deleted file]
IntelFrameworkPkg/Include/Protocol/SmmControl.h [deleted file]
IntelFrameworkPkg/Include/Protocol/SmmCpuIo.h [deleted file]
IntelFrameworkPkg/Include/Protocol/SmmCpuSaveState.h [deleted file]
IntelFrameworkPkg/Include/Protocol/SmmGpiDispatch.h [deleted file]
IntelFrameworkPkg/Include/Protocol/SmmIchnDispatch.h [deleted file]
IntelFrameworkPkg/Include/Protocol/SmmPeriodicTimerDispatch.h [deleted file]
IntelFrameworkPkg/Include/Protocol/SmmPowerButtonDispatch.h [deleted file]
IntelFrameworkPkg/Include/Protocol/SmmStandbyButtonDispatch.h [deleted file]
IntelFrameworkPkg/Include/Protocol/SmmSwDispatch.h [deleted file]
IntelFrameworkPkg/Include/Protocol/SmmSxDispatch.h [deleted file]
IntelFrameworkPkg/Include/Protocol/SmmUsbDispatch.h [deleted file]
IntelFrameworkPkg/IntelFrameworkPkg.dec [deleted file]
IntelFrameworkPkg/IntelFrameworkPkg.dsc [deleted file]
IntelFrameworkPkg/IntelFrameworkPkg.uni [deleted file]
IntelFrameworkPkg/IntelFrameworkPkgExtra.uni [deleted file]
IntelFrameworkPkg/Library/DxeIoLibCpuIo/DxeCpuIoLibInternal.h [deleted file]
IntelFrameworkPkg/Library/DxeIoLibCpuIo/DxeIoLibCpuIo.inf [deleted file]
IntelFrameworkPkg/Library/DxeIoLibCpuIo/DxeIoLibCpuIo.uni [deleted file]
IntelFrameworkPkg/Library/DxeIoLibCpuIo/IoHighLevel.c [deleted file]
IntelFrameworkPkg/Library/DxeIoLibCpuIo/IoLib.c [deleted file]
IntelFrameworkPkg/Library/DxeIoLibCpuIo/IoLibMmioBuffer.c [deleted file]
IntelFrameworkPkg/Library/DxeSmmDriverEntryPoint/DriverEntryPoint.c [deleted file]
IntelFrameworkPkg/Library/DxeSmmDriverEntryPoint/DxeSmmDriverEntryPoint.inf [deleted file]
IntelFrameworkPkg/Library/DxeSmmDriverEntryPoint/DxeSmmDriverEntryPoint.uni [deleted file]
IntelFrameworkPkg/Library/FrameworkUefiLib/Acpi.c [deleted file]
IntelFrameworkPkg/Library/FrameworkUefiLib/Console.c [deleted file]
IntelFrameworkPkg/Library/FrameworkUefiLib/FrameworkUefiLib.inf [deleted file]
IntelFrameworkPkg/Library/FrameworkUefiLib/FrameworkUefiLib.uni [deleted file]
IntelFrameworkPkg/Library/FrameworkUefiLib/UefiDriverModel.c [deleted file]
IntelFrameworkPkg/Library/FrameworkUefiLib/UefiLib.c [deleted file]
IntelFrameworkPkg/Library/FrameworkUefiLib/UefiLibInternal.h [deleted file]
IntelFrameworkPkg/Library/FrameworkUefiLib/UefiLibPrint.c [deleted file]
IntelFrameworkPkg/Library/FrameworkUefiLib/UefiNotTiano.c [deleted file]
IntelFrameworkPkg/Library/PeiHobLibFramework/HobLib.c [deleted file]
IntelFrameworkPkg/Library/PeiHobLibFramework/PeiHobLib.uni [deleted file]
IntelFrameworkPkg/Library/PeiHobLibFramework/PeiHobLibFramework.inf [deleted file]
IntelFrameworkPkg/Library/PeiSmbusLibSmbusPpi/InternalSmbusLib.h [deleted file]
IntelFrameworkPkg/Library/PeiSmbusLibSmbusPpi/PeiSmbusLib.c [deleted file]
IntelFrameworkPkg/Library/PeiSmbusLibSmbusPpi/PeiSmbusLibSmbusPpi.inf [deleted file]
IntelFrameworkPkg/Library/PeiSmbusLibSmbusPpi/PeiSmbusLibSmbusPpi.uni [deleted file]
IntelFrameworkPkg/Library/PeiSmbusLibSmbusPpi/SmbusLib.c [deleted file]

diff --git a/IntelFrameworkPkg/FrameworkSpecConformance.txt b/IntelFrameworkPkg/FrameworkSpecConformance.txt
deleted file mode 100644 (file)
index f5e601e..0000000
+++ /dev/null
@@ -1,1342 +0,0 @@
-##\r
-# This file is used to document mismatches between Intel Platform Innovation Framework specification\r
-# (http://www.intel.com/technology/framework/spec.htm) and data structures defind at IntelFrameworkPkg\r
-# package in EdkII Open Source Project (https://github.com/tianocore/edk2/tree/master/IntelFrameworkPkg)\r
-##\r
-\r
-##\r
-# The general consideration about keeping the mismatches in EdkII:\r
-# 1. Some definitions defined in Framework specification may bring a little complexity on implementation. EdkII\r
-#    makes changes on them from the view of code development.\r
-# 2. Some definitions are NOT defined in Framework specification, but introduced in Edk. EdkII chooses to keep\r
-#    them for backward-compatibility.\r
-# 3. The name of some definitions are NOT consistent with Framework specification. If the name doesn't bring\r
-#    misunderstanding literally, EdkII chooses to keep them for backward-compatibility.\r
-# 4. Some defintitions don't exactly match Framework specification, some new field members are introduced in EdkII\r
-#    to reflect the latest industry standard.\r
-#\r
-# Note:\r
-#    The IntelFrameworkPkg contains Framework specification contents that were not adopted by UEFI/PI, and names may be\r
-#    changed (such as adding "FRAMEWORK_") to avoid name collisions with approved UEFI/PI specifications.\r
-##\r
-\r
-##\r
-# Mismatch with Intel Platform Innovation Framework for DataHubSubclass Specification (Version 0.90)\r
-##\r
-  1. Guid/DataHubRecords.h\r
-    #define EFI_STRING_TOKEN          UINT16\r
-\r
-    This macro named "EFI_STRING_TOKEN" is *NOT* defined in Framework specification. Keeping this inconsistency\r
-    for backward compatibility.\r
-\r
-  2. Guid/DataHubRecords.h\r
-    #pragma pack(1)\r
-    typedef struct {\r
-      UINT8                             LastPciBus;\r
-    } EFI_MISC_LAST_PCI_BUS_DATA;\r
-    ...\r
-    typedef struct {\r
-      EFI_SUBCLASS_TYPE1_HEADER         Header;\r
-      EFI_MISC_SUBCLASS_RECORDS         Record;\r
-    } EFI_MISC_SUBCLASS_DRIVER_DATA;\r
-    #pragma pack()\r
-\r
-    Section "Alignment" in DataHubSubclass specification say "Fields in a data hub record should be aligned at their\r
-    natural boundaries". But in EdkII, the data structures above are packed.\r
-    Keeping this inconsistency for backward compatibility.\r
-\r
-  3. Guid/DataHubRecords.h\r
-    #define EFI_SUBCLASS_INSTANCE_RESERVED       0\r
-    #define EFI_SUBCLASS_INSTANCE_NON_APPLICABLE 0xFFFF\r
-\r
-    The symbols above are *NOT* defined in DataHubSubclass specification. But the values are defined and are meaningful.\r
-    According to DataHubSubclass spec, value 0 means Reserved and -1 means Not Applicable. EdkII introduces these macros\r
-    to faciliate user development.\r
-\r
-##\r
-# Mismatch with Intel Platform Innovation Framework for CacheSubclass Specification (Version 0.90)\r
-##\r
-  1. Guid/DataHubRecords.h\r
-    typedef EFI_EXP_BASE2_DATA       EFI_MAXIMUM_CACHE_SIZE_DATA;\r
-\r
-    The definition named "EFI_MAXIMUM_CACHE_SIZE_DATA" is *NOT* consistent with CacheSubclass specification, in which\r
-    the name should be EFI_CACHE_MAXIMUM_SIZE_DATA. Keeping this inconsistency for backward compatibility.\r
-\r
-  2. Guid/DataHubRecords.h\r
-    typedef struct {\r
-      UINT32                          Level           :3;\r
-      UINT32                          Socketed        :1;\r
-      UINT32                          Reserved2       :1;\r
-      UINT32                          Location        :2;\r
-      UINT32                          Enable          :1;\r
-      UINT32                          OperationalMode :2;\r
-      UINT32                          Reserved1       :22;\r
-    } EFI_CACHE_CONFIGURATION_DATA;\r
-\r
-    The field type of the definition is *NOT* consistent with CacheSubclass specification. Specification defines\r
-    them as UINT16, which is incorrect and should be UINT32 because the total width of bit-fields is 32bits width.\r
-\r
-  3. Guid/DataHubRecords.h\r
-    typedef enum {\r
-      CacheSizeRecordType              = 1,\r
-      MaximumSizeCacheRecordType       = 2,\r
-      CacheSpeedRecordType             = 3,\r
-      CacheSocketRecordType            = 4,\r
-      CacheSramTypeRecordType          = 5,\r
-      CacheInstalledSramTypeRecordType = 6,\r
-      CacheErrorTypeRecordType         = 7,\r
-      CacheTypeRecordType              = 8,\r
-      CacheAssociativityRecordType     = 9,\r
-      CacheConfigRecordType            = 10\r
-    } EFI_CACHE_VARIABLE_RECORD_TYPE;\r
-\r
-    The data structure and all enumeration fields are *NOT* defined in CacheSubclass specification, which only\r
-    defines the following macros to specify the record number of the data record:\r
-      #define EFI_CACHE_SIZE_RECORD_NUMBER                    0x00000001\r
-      #define EFI_CACHE_MAXIMUM_SIZE_RECORD_NUMBER            0x00000002\r
-      #define EFI_CACHE_SPEED_RECORD_NUMBER                   0x00000003\r
-      #define EFI_CACHE_SOCKET_RECORD_NUMBER                  0x00000004\r
-      #define EFI_CACHE_SRAM_SUPPORT_RECORD_NUMBER            0x00000005\r
-      #define EFI_CACHE_SRAM_INSTALL_RECORD_NUMBER            0x00000006\r
-      #define EFI_CACHE_ERROR_SUPPORT_RECORD_NUMBER           0x00000007\r
-      #define EFI_CACHE_TYPE_RECORD_NUMBER                    0x00000008\r
-      #define EFI_CACHE_ASSOCIATIVITY_RECORD_NUMBER           0x00000009\r
-      #define EFI_CACHE_CONFIGURATION_RECORD_NUMBER           0x0000000A\r
-    Keeping this inconsistency for backward compatibility.\r
-\r
-  4. Guid/DataHubRecords.h\r
-    typedef union {\r
-      EFI_CACHE_SIZE_DATA               CacheSize;\r
-      ...\r
-      EFI_CACHE_ASSOCIATION_DATA        CacheAssociation;\r
-    } EFI_CACHE_VARIABLE_RECORD;\r
-\r
-    typedef struct {\r
-       EFI_SUBCLASS_TYPE1_HEADER        DataRecordHeader;\r
-       EFI_CACHE_VARIABLE_RECORD        VariableRecord;\r
-    } EFI_CACHE_DATA_RECORD;\r
-\r
-    The definitions above are *NOT* defined in CacheSubclass specification. EdkII introduces them to simplify the\r
-    code logic. Therefore developer doesn't need to allocate memory dynamically to construct variable length data record.\r
-    Keeping this inconsistency for backward compatibility.\r
-\r
-##\r
-# Mismatch with Intel Platform Innovation Framework for ProcSubclass Specification (Version 0.90)\r
-##\r
-  1. Guid/DataHubRecords.h\r
-    #define EFI_PROCESSOR_SUBCLASS_VERSION    0x00010000\r
-\r
-    The value of the definition is *NOT* consistent with ProcSubclass specification, in which the value is 0x0100.\r
-    Keeping this inconsistency from the perspective of binary consistency.\r
-\r
-  2. Guid/DataHubRecords.h\r
-    typedef struct {\r
-      UINT32                            ProcessorBrandIndex    :8;\r
-      UINT32                            ProcessorClflush       :8;\r
-      UINT32                            ProcessorReserved      :8;\r
-      UINT32                            ProcessorDfltApicId    :8;\r
-    } EFI_PROCESSOR_MISC_INFO;\r
-\r
-    The definition is *NOT* consistent with ProcSubclass specification, in which the name of third field is defined\r
-    as "LogicalProcessorCount" rather than "ProcessorReserved".\r
-    Keeping this inconsistency for backward compatibility.\r
-\r
-  3. Guid/DataHubRecords.h\r
-    typedef enum {\r
-      ...\r
-      EfiProcessorFamilyUltraSparcIIIi         = 0x58,\r
-      ...\r
-      EfiProcessorFamilyIntelPentiumM          = 0xB9,\r
-      EfiProcessorFamilyIntelCeleronD          = 0xBA,\r
-      EfiProcessorFamilyIntelPentiumD          = 0xBB,\r
-      EfiProcessorFamilyIntelPentiumEx         = 0xBC,\r
-      EfiProcessorFamilyIntelCoreSolo          = 0xBD,\r
-      EfiProcessorFamilyReserved               = 0xBE,\r
-      EfiProcessorFamilyIntelCore2             = 0xBF,\r
-      ...\r
-      EfiProcessorFamilyG6                     = 0xCB,\r
-      EfiProcessorFamilyzArchitectur           = 0xCC,\r
-      EfiProcessorFamilyViaC7M                 = 0xD2,\r
-      EfiProcessorFamilyViaC7D                 = 0xD3,\r
-      EfiProcessorFamilyViaC7                  = 0xD4,\r
-      EfiProcessorFamilyViaEden                = 0xD5,\r
-      ...\r
-      EfiProcessorFamilyIndicatorFamily2       = 0xFE,\r
-      EfiProcessorFamilyReserved1              = 0xFF\r
-    } EFI_PROCESSOR_FAMILY_DATA;\r
-\r
-    a. In ProcSubclass specification 0.9, the field name whose value equals to 0x58 is "EfiProcessorFamilyUltraSparcIIi".\r
-       Due to the name has been defined in previous field, changing it to "EfiProcessorFamilyUltraSparcIIIi" to avoid\r
-       build break.\r
-    b. The other fields listed here are *NOT* defined in ProcSubclass specification 0.9. They are introduced to\r
-       support new processor family (type 4) defined in SmBios 2.6 specification.\r
-       Keeping this inconsistency to reflect the latest industry standard.\r
-\r
-  4. Guid/DataHubRecords.h\r
-    typedef enum {\r
-      ...\r
-      EfiProcessorSocket939              = 0x12,\r
-      EfiProcessorSocketmPGA604          = 0x13,\r
-      EfiProcessorSocketLGA771           = 0x14,\r
-      EfiProcessorSocketLGA775           = 0x15\r
-    } EFI_PROCESSOR_SOCKET_TYPE_DATA;\r
-\r
-    The fields listed here are *NOT* defined in ProcSubclass specification 0.9. They are introduced to support\r
-    new processor upgrade (type 4 offset 19h) defined in SmBios 2.6 specification.\r
-    Keeping this inconsistency to reflect the latest industry standard.\r
-\r
-  5. Guid/DataHubRecords.h\r
-    typedef EFI_INTER_LINK_DATA         EFI_CACHE_ASSOCIATION_DATA;\r
-\r
-    The definition name "EFI_CACHE_ASSOCIATION_DATA" is *NOT* consistent with ProcSubclass specification 0.9, in which\r
-    the name should be "EFI_PROCESSOR_CACHE_ASSOCIATION_DATA". Keeping this inconsistency for backward compatibility.\r
-\r
-  6. Guid/DataHubRecords.h\r
-    typedef enum {\r
-      EfiProcessorHealthy        = 1,\r
-      EfiProcessorPerfRestricted = 2,\r
-      EfiProcessorFuncRestricted = 3\r
-    } EFI_PROCESSOR_HEALTH_STATUS;\r
-\r
-    The structure name "EFI_PROCESSOR_HEALTH_STATUS" is *NOT* consistent with ProcSubclass specification 0.9, in which\r
-    the name should be "EFI_PROCESSOR_HEALTH_STATUS_DATA". Keeping this inconsistency for backward compatibility.\r
-\r
-  7. Guid/DataHubRecords.h\r
-    typedef enum {\r
-      ProcessorCoreFrequencyRecordType     = 1,\r
-      ProcessorFsbFrequencyRecordType      = 2,\r
-      ProcessorVersionRecordType           = 3,\r
-      ProcessorManufacturerRecordType      = 4,\r
-      ProcessorSerialNumberRecordType      = 5,\r
-      ProcessorIdRecordType                = 6,\r
-      ProcessorTypeRecordType              = 7,\r
-      ProcessorFamilyRecordType            = 8,\r
-      ProcessorVoltageRecordType           = 9,\r
-      ProcessorApicBaseAddressRecordType   = 10,\r
-      ProcessorApicIdRecordType            = 11,\r
-      ProcessorApicVersionNumberRecordType = 12,\r
-      CpuUcodeRevisionDataRecordType       = 13,\r
-      ProcessorStatusRecordType            = 14,\r
-      ProcessorSocketTypeRecordType        = 15,\r
-      ProcessorSocketNameRecordType        = 16,\r
-      CacheAssociationRecordType           = 17,\r
-      ProcessorMaxCoreFrequencyRecordType  = 18,\r
-      ProcessorAssetTagRecordType          = 19,\r
-      ProcessorMaxFsbFrequencyRecordType   = 20,\r
-      ProcessorPackageNumberRecordType     = 21,\r
-      ProcessorCoreFrequencyListRecordType = 22,\r
-      ProcessorFsbFrequencyListRecordType  = 23,\r
-      ProcessorHealthStatusRecordType      = 24,\r
-      ProcessorCoreCountRecordType         = 25,\r
-      ProcessorEnabledCoreCountRecordType  = 26,\r
-      ProcessorThreadCountRecordType       = 27,\r
-      ProcessorCharacteristicsRecordType   = 28,\r
-      ProcessorFamily2RecordType           = 29,\r
-      ProcessorPartNumberRecordType        = 30,\r
-    } EFI_CPU_VARIABLE_RECORD_TYPE;\r
-\r
-    The enumeration fields from ProcessorCoreFrequencyRecordType to ProcessorHealthStatusRecordType are *NOT* defined\r
-    in ProcSubclass specification 0.9, which only defines the following macros to specify the record number of the data record:\r
-      #define EFI_PROCESSOR_FREQUENCY_RECORD_NUMBER           0x00000001\r
-      #define EFI_PROCESSOR_BUS_FREQUENCY_RECORD_NUMBER       0x00000002\r
-      #define EFI_PROCESSOR_VERSION_RECORD_NUMBER             0x00000003\r
-      #define EFI_PROCESSOR_MANUFACTURER_RECORD_NUMBER        0x00000004\r
-      #define EFI_PROCESSOR_SERIAL_NUMBER_RECORD_NUMBER       0x00000005\r
-      #define EFI_PROCESSOR_ID_RECORD_NUMBER                  0x00000006\r
-      #define EFI_PROCESSOR_TYPE_RECORD_NUMBER                0x00000007\r
-      #define EFI_PROCESSOR_FAMILY_RECORD_NUMBER              0x00000008\r
-      #define EFI_PROCESSOR_VOLTAGE_RECORD_NUMBER             0x00000009\r
-      #define EFI_PROCESSOR_APIC_BASE_ADDRESS_RECORD_NUMBER   0x0000000A\r
-      #define EFI_PROCESSOR_APIC_ID_RECORD_NUMBER             0x0000000B\r
-      #define EFI_PROCESSOR_APIC_VER_NUMBER_RECORD_NUMBER     0x0000000C\r
-      #define EFI_PROCESSOR_MICROCODE_REVISION_RECORD_NUMBER  0x0000000D\r
-      #define EFI_PROCESSOR_STATUS_RECORD_NUMBER              0x0000000E\r
-      #define EFI_PROCESSOR_SOCKET_TYPE_RECORD_NUMBER         0x0000000F\r
-      #define EFI_PROCESSOR_SOCKET_NAME_RECORD_NUMBER         0x00000010\r
-      #define EFI_PROCESSOR_CACHE_ASSOCIATION_RECORD_NUMBER   0x00000011\r
-      #define EFI_PROCESSOR_MAX_FREQUENCY_RECORD_NUMBER       0x00000012\r
-      #define EFI_PROCESSOR_ASSET_TAG_RECORD_NUMBER           0x00000013\r
-      #define EFI_PROCESSOR_MAX_FSB_FREQUENCY_RECORD_NUMBER   0x00000014\r
-      #define EFI_PROCESSOR_PACKAGE_NUMBER_RECORD_NUMBER      0x00000015\r
-      #define EFI_PROCESSOR_FREQUENCY_LIST_RECORD_NUMBER      0x00000016\r
-      #define EFI_PROCESSOR_FSB_FREQUENCY_LIST_RECORD_NUMBER  0x00000017\r
-      #define EFI_PROCESSOR_HEALTH_STATUS_RECORD_NUMBER       0x00000018\r
-    Keeping this inconsistency for backward compatibility.\r
-\r
-    The enumeration fields from ProcessorCoreCountRecordType to ProcessorPartNumberRecordType are *NOT* defined\r
-    in ProcSubclass specification 0.9.\r
-    They are introduced to support new fields for type 4 defined in SmBios 2.6 specification.\r
-    Keeping this inconsistency to reflect the latest industry standard.\r
-\r
-  8. Guid/DataHubRecords.h\r
-    typedef union {\r
-      EFI_PROCESSOR_CORE_FREQUENCY_LIST_DATA  ProcessorCoreFrequencyList;\r
-      ...\r
-      EFI_PROCESSOR_FAMILY2_DATA              ProcessorFamily2;\r
-    } EFI_CPU_VARIABLE_RECORD;\r
-\r
-    typedef struct {\r
-      EFI_SUBCLASS_TYPE1_HEADER         DataRecordHeader;\r
-      EFI_CPU_VARIABLE_RECORD           VariableRecord;\r
-    } EFI_CPU_DATA_RECORD;\r
-\r
-    The definitions above are *NOT* defined in ProcSubclass specification 0.9. EdkII introduces them to simplify the\r
-    code logic. Therefore developer doesn't need to allocate memory dynamically to construct variable length data record.\r
-    Keeping this inconsistency for backward compatibility.\r
-\r
-  9. Guid/DataHubRecords.h\r
-    typedef STRING_REF                  EFI_PROCESSOR_PART_NUMBER_DATA;\r
-\r
-    typedef enum {\r
-      EfiProcessorFamilySh3           = 0x104,\r
-      EfiProcessorFamilySh4           = 0x105,\r
-      EfiProcessorFamilyArm           = 0x118,\r
-      EfiProcessorFamilyStrongArm     = 0x119,\r
-      EfiProcessorFamily6x86          = 0x12C,\r
-      EfiProcessorFamilyMediaGx       = 0x12D,\r
-      EfiProcessorFamilyMii           = 0x12E,\r
-      EfiProcessorFamilyWinChip       = 0x140,\r
-      EfiProcessorFamilyDsp           = 0x15E,\r
-      EfiProcessorFamilyVideo         = 0x1F4\r
-    } EFI_PROCESSOR_FAMILY2_DATA;\r
-\r
-    typedef UINT8                       EFI_PROCESSOR_CORE_COUNT_DATA;\r
-\r
-    typedef UINT8                       EFI_PROCESSOR_ENABLED_CORE_COUNT_DATA;\r
-\r
-    typedef UINT8                       EFI_PROCESSOR_THREAD_COUNT_DATA;\r
-\r
-    typedef struct {\r
-      UINT16  Reserved              :1;\r
-      UINT16  Unknown               :1;\r
-      UINT16  Capable64Bit          :1;\r
-      UINT16  Reserved2             :13;\r
-    } EFI_PROCESSOR_CHARACTERISTICS_DATA;\r
-\r
-    The fields listed here are *NOT* defined in ProcSubclass specification 0.9. They are introduced to support\r
-    new fields for type 4 defined in SmBios 2.6 specification.\r
-    Keeping this inconsistency to reflect the latest industry standard.\r
-\r
-##\r
-# Mismatch with Intel Platform Innovation Framework for MemSubclass Specification (Version 0.90)\r
-##\r
-  1. Guid/DataHubRecords.h\r
-    typedef enum _EFI_MEMORY_FORM_FACTOR {\r
-      ...\r
-      EfiMemoryFormFactorFbDimm                   = 0x0F\r
-    } EFI_MEMORY_FORM_FACTOR;\r
-\r
-    typedef enum _EFI_MEMORY_ARRAY_TYPE {\r
-      ...\r
-      EfiMemoryTypeDdr2                           = 0x13,\r
-      EfiMemoryTypeDdr2FbDimm                     = 0x14\r
-    } EFI_MEMORY_ARRAY_TYPE;\r
-\r
-    typedef enum {\r
-      ...\r
-      EfiMemoryStatePartial      = 6\r
-    } EFI_MEMORY_STATE;\r
-\r
-    The fields listed above are *NOT* defined in MemSubclass specification 0.9. They are introduced to support\r
-    new memory device (type 17) defined in SmBios 2.6 specification.\r
-    Keeping this inconsistency to reflect the latest industry standard.\r
-\r
-  2. Guid/DataHubRecords.h\r
-    typedef struct {\r
-      ...\r
-      EFI_EXP_BASE10_DATA      MemorySpeed;\r
-      ...\r
-    } EFI_MEMORY_ARRAY_LINK_DATA;\r
-\r
-    The field name "MemorySpeed" in the definition above is *NOT* consistent with MemSubclass specification 0.9,\r
-    in which it is defined as MemoryTypeSpeed. Keeping this inconsistency for backward compatibility.\r
-\r
-  3. Guid/DataHubRecords.h\r
-    #define EFI_MEMORY_CONTROLLER_INFORMATION_RECORD_NUMBER    0x00000008\r
-\r
-    typedef enum {\r
-      EfiErrorDetectingMethodOther   = 1,\r
-      EfiErrorDetectingMethodUnknown = 2,\r
-      EfiErrorDetectingMethodNone    = 3,\r
-      EfiErrorDetectingMethodParity  = 4,\r
-      EfiErrorDetectingMethod32Ecc   = 5,\r
-      EfiErrorDetectingMethod64Ecc   = 6,\r
-      EfiErrorDetectingMethod128Ecc  = 7,\r
-      EfiErrorDetectingMethodCrc     = 8\r
-    } EFI_MEMORY_ERROR_DETECT_METHOD_TYPE;\r
-\r
-    typedef struct {\r
-      UINT8                             Other                 :1;\r
-      UINT8                             Unknown               :1;\r
-      UINT8                             None                  :1;\r
-      UINT8                             SingleBitErrorCorrect :1;\r
-      UINT8                             DoubleBitErrorCorrect :1;\r
-      UINT8                             ErrorScrubbing        :1;\r
-      UINT8                             Reserved              :2;\r
-    } EFI_MEMORY_ERROR_CORRECT_CAPABILITY;\r
-\r
-    typedef enum {\r
-      EfiMemoryInterleaveOther      = 1,\r
-      EfiMemoryInterleaveUnknown    = 2,\r
-      EfiMemoryInterleaveOneWay     = 3,\r
-      EfiMemoryInterleaveTwoWay     = 4,\r
-      EfiMemoryInterleaveFourWay    = 5,\r
-      EfiMemoryInterleaveEightWay   = 6,\r
-      EfiMemoryInterleaveSixteenWay = 7\r
-    } EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE;\r
-\r
-    typedef struct {\r
-      UINT16                            Other    :1;\r
-      UINT16                            Unknown  :1;\r
-      UINT16                            SeventyNs:1;\r
-      UINT16                            SixtyNs  :1;\r
-      UINT16                            FiftyNs  :1;\r
-      UINT16                            Reserved :11;\r
-    } EFI_MEMORY_SPEED_TYPE;\r
-\r
-    typedef struct {\r
-      UINT16                            Other       :1;\r
-      UINT16                            Unknown     :1;\r
-      UINT16                            Standard    :1;\r
-      UINT16                            FastPageMode:1;\r
-      UINT16                            EDO         :1;\r
-      UINT16                            Parity      :1;\r
-      UINT16                            ECC         :1;\r
-      UINT16                            SIMM        :1;\r
-      UINT16                            DIMM        :1;\r
-      UINT16                            BurstEdo    :1;\r
-      UINT16                            SDRAM       :1;\r
-      UINT16                            Reserved    :5;\r
-    } EFI_MEMORY_SUPPORTED_TYPE;\r
-\r
-    typedef struct {\r
-      UINT8                             Five    :1;\r
-      UINT8                             Three   :1;\r
-      UINT8                             Two     :1;\r
-      UINT8                             Reserved:5;\r
-    } EFI_MEMORY_MODULE_VOLTAGE_TYPE;\r
-\r
-    typedef struct {\r
-      EFI_MEMORY_ERROR_DETECT_METHOD_TYPE ErrorDetectingMethod;\r
-      EFI_MEMORY_ERROR_CORRECT_CAPABILITY ErrorCorrectingCapability;\r
-      EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE  MemorySupportedInterleave;\r
-      EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE  MemoryCurrentInterleave;\r
-      UINT8                               MaxMemoryModuleSize;\r
-      EFI_MEMORY_SPEED_TYPE               MemorySpeedType;\r
-      EFI_MEMORY_SUPPORTED_TYPE           MemorySupportedType;\r
-      EFI_MEMORY_MODULE_VOLTAGE_TYPE      MemoryModuleVoltage;\r
-      UINT8                               NumberofMemorySlot;\r
-      EFI_MEMORY_ERROR_CORRECT_CAPABILITY EnabledCorrectingCapability;\r
-      UINT16                              *MemoryModuleConfigHandles;\r
-    } EFI_MEMORY_CONTROLLER_INFORMATION;\r
-\r
-    typedef struct {\r
-      EFI_MEMORY_ERROR_DETECT_METHOD_TYPE   ErrorDetectingMethod;\r
-      EFI_MEMORY_ERROR_CORRECT_CAPABILITY   ErrorCorrectingCapability;\r
-      EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE    MemorySupportedInterleave;\r
-      EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE    MemoryCurrentInterleave;\r
-      UINT8                                 MaxMemoryModuleSize;\r
-      EFI_MEMORY_SPEED_TYPE                 MemorySpeedType;\r
-      EFI_MEMORY_SUPPORTED_TYPE             MemorySupportedType;\r
-      EFI_MEMORY_MODULE_VOLTAGE_TYPE        MemoryModuleVoltage;\r
-      UINT8                                 NumberofMemorySlot;\r
-      EFI_MEMORY_ERROR_CORRECT_CAPABILITY   EnabledCorrectingCapability;\r
-      EFI_INTER_LINK_DATA                   MemoryModuleConfig[1];\r
-    } EFI_MEMORY_CONTROLLER_INFORMATION_DATA;\r
-\r
-    The definitions above are *NOT* defined in MemSubclass specification 0.9. They are introduced to support\r
-    new memory controller information (type 5) defined in SmBios 2.6 specification.\r
-    Keeping this inconsistency to reflect the latest industry standard.\r
-\r
-  4. Guid/DataHubRecords.h\r
-    #define EFI_MEMORY_32BIT_ERROR_INFORMATION_RECORD_NUMBER    0x00000009\r
-\r
-    typedef enum {\r
-      EfiMemoryErrorOther             = 1,\r
-      EfiMemoryErrorUnknown           = 2,\r
-      EfiMemoryErrorOk                = 3,\r
-      EfiMemoryErrorBadRead           = 4,\r
-      EfiMemoryErrorParity            = 5,\r
-      EfiMemoryErrorSigleBit          = 6,\r
-      EfiMemoryErrorDoubleBit         = 7,\r
-      EfiMemoryErrorMultiBit          = 8,\r
-      EfiMemoryErrorNibble            = 9,\r
-      EfiMemoryErrorChecksum          = 10,\r
-      EfiMemoryErrorCrc               = 11,\r
-      EfiMemoryErrorCorrectSingleBit  = 12,\r
-      EfiMemoryErrorCorrected         = 13,\r
-      EfiMemoryErrorUnCorrectable     = 14\r
-    } EFI_MEMORY_ERROR_TYPE;\r
-\r
-    typedef enum {\r
-      EfiMemoryGranularityOther               = 1,\r
-      EfiMemoryGranularityOtherUnknown        = 2,\r
-      EfiMemoryGranularityDeviceLevel         = 3,\r
-      EfiMemoryGranularityMemPartitionLevel   = 4\r
-    } EFI_MEMORY_ERROR_GRANULARITY_TYPE;\r
-\r
-    typedef enum {\r
-      EfiMemoryErrorOperationOther            = 1,\r
-      EfiMemoryErrorOperationUnknown          = 2,\r
-      EfiMemoryErrorOperationRead             = 3,\r
-      EfiMemoryErrorOperationWrite            = 4,\r
-      EfiMemoryErrorOperationPartialWrite     = 5\r
-    } EFI_MEMORY_ERROR_OPERATION_TYPE;\r
-\r
-    typedef struct {\r
-      EFI_MEMORY_ERROR_TYPE               MemoryErrorType;\r
-      EFI_MEMORY_ERROR_GRANULARITY_TYPE   MemoryErrorGranularity;\r
-      EFI_MEMORY_ERROR_OPERATION_TYPE     MemoryErrorOperation;\r
-      UINT32                              VendorSyndrome;\r
-      UINT32                              MemoryArrayErrorAddress;\r
-      UINT32                              DeviceErrorAddress;\r
-      UINT32                              DeviceErrorResolution;\r
-    } EFI_MEMORY_32BIT_ERROR_INFORMATION;\r
-\r
-    The definitions above are *NOT* defined in MemSubclass specification 0.9. They are introduced to support\r
-    new 32-bit memory error information (type 18) defined in SmBios 2.6 specification.\r
-    Keeping this inconsistency to reflect the latest industry standard.\r
-\r
-  5. Guid/DataHubRecords.h\r
-    #define EFI_MEMORY_64BIT_ERROR_INFORMATION_RECORD_NUMBER    0x0000000A\r
-\r
-    typedef struct {\r
-      EFI_MEMORY_ERROR_TYPE             MemoryErrorType;\r
-      EFI_MEMORY_ERROR_GRANULARITY_TYPE MemoryErrorGranularity;\r
-      EFI_MEMORY_ERROR_OPERATION_TYPE   MemoryErrorOperation;\r
-      UINT32                            VendorSyndrome;\r
-      UINT64                            MemoryArrayErrorAddress;\r
-      UINT64                            DeviceErrorAddress;\r
-      UINT32                            DeviceErrorResolution;\r
-    } EFI_MEMORY_64BIT_ERROR_INFORMATION;\r
-\r
-    The definitions above are *NOT* defined in MemSubclass specification 0.9. They are introduced to support\r
-    new 64-bit memory error information (type 33) defined in SmBios 2.6 specification.\r
-    Keeping this inconsistency to reflect the latest industry standard.\r
-\r
-  6. Guid/DataHubRecords.h\r
-    typedef union _EFI_MEMORY_SUBCLASS_RECORDS {\r
-      EFI_MEMORY_SIZE_DATA                 SizeData;\r
-      ...\r
-      EFI_MEMORY_64BIT_ERROR_INFORMATION   Memory64bitErrorInfo;\r
-    } EFI_MEMORY_SUBCLASS_RECORDS;\r
-\r
-    typedef struct {\r
-      EFI_SUBCLASS_TYPE1_HEADER         Header;\r
-      EFI_MEMORY_SUBCLASS_RECORDS       Record;\r
-    } EFI_MEMORY_SUBCLASS_DRIVER_DATA;\r
-\r
-    The definitions above are *NOT* defined in MemSubclass specification 0.9. EdkII introduces them to simplify the\r
-    code logic. Therefore developer doesn't need to allocate memory dynamically to construct variable length data record.\r
-    Keeping this inconsistency for backward compatibility.\r
-\r
-##\r
-# Mismatch with Intel Platform Innovation Framework for MiscSubclass Specification (Version 0.90)\r
-##\r
-  1. Guid/DataHubRecords.h\r
-    #pragma pack(1)\r
-    typedef struct _USB_PORT_DEVICE_PATH {\r
-      ACPI_HID_DEVICE_PATH              PciRootBridgeDevicePath;\r
-      PCI_DEVICE_PATH                   PciBusDevicePath;\r
-      EFI_DEVICE_PATH_PROTOCOL          EndDevicePath;\r
-    } USB_PORT_DEVICE_PATH;\r
-\r
-    typedef struct _IDE_DEVICE_PATH {\r
-      ACPI_HID_DEVICE_PATH              PciRootBridgeDevicePath;\r
-      PCI_DEVICE_PATH                   PciBusDevicePath;\r
-      EFI_DEVICE_PATH_PROTOCOL          EndDevicePath;\r
-    } IDE_DEVICE_PATH;\r
-\r
-    typedef struct _RMC_CONN_DEVICE_PATH {\r
-      ACPI_HID_DEVICE_PATH              PciRootBridgeDevicePath;\r
-      PCI_DEVICE_PATH                   PciBridgeDevicePath;\r
-      PCI_DEVICE_PATH                   PciBusDevicePath;\r
-      EFI_DEVICE_PATH_PROTOCOL          EndDevicePath;\r
-    } RMC_CONN_DEVICE_PATH;\r
-\r
-    typedef struct _RIDE_DEVICE_PATH {\r
-      ACPI_HID_DEVICE_PATH              PciRootBridgeDevicePath;\r
-      PCI_DEVICE_PATH                   PciBridgeDevicePath;\r
-      PCI_DEVICE_PATH                   PciBusDevicePath;\r
-      EFI_DEVICE_PATH_PROTOCOL          EndDevicePath;\r
-    } RIDE_DEVICE_PATH;\r
-\r
-    typedef struct _GB_NIC_DEVICE_PATH {\r
-      ACPI_HID_DEVICE_PATH              PciRootBridgeDevicePath;\r
-      PCI_DEVICE_PATH                   PciBridgeDevicePath;\r
-      PCI_DEVICE_PATH                   PciXBridgeDevicePath;\r
-      PCI_DEVICE_PATH                   PciXBusDevicePath;\r
-      EFI_DEVICE_PATH_PROTOCOL          EndDevicePath;\r
-    } GB_NIC_DEVICE_PATH;\r
-\r
-    typedef struct _PS2_CONN_DEVICE_PATH {\r
-      ACPI_HID_DEVICE_PATH              PciRootBridgeDevicePath;\r
-      PCI_DEVICE_PATH                   LpcBridgeDevicePath;\r
-      ACPI_HID_DEVICE_PATH              LpcBusDevicePath;\r
-      EFI_DEVICE_PATH_PROTOCOL          EndDevicePath;\r
-    } PS2_CONN_DEVICE_PATH;\r
-\r
-    typedef struct _SERIAL_CONN_DEVICE_PATH {\r
-      ACPI_HID_DEVICE_PATH              PciRootBridgeDevicePath;\r
-      PCI_DEVICE_PATH                   LpcBridgeDevicePath;\r
-      ACPI_HID_DEVICE_PATH              LpcBusDevicePath;\r
-      EFI_DEVICE_PATH_PROTOCOL          EndDevicePath;\r
-    } SERIAL_CONN_DEVICE_PATH;\r
-\r
-    typedef struct _PARALLEL_CONN_DEVICE_PATH {\r
-      ACPI_HID_DEVICE_PATH              PciRootBridgeDevicePath;\r
-      PCI_DEVICE_PATH                   LpcBridgeDevicePath;\r
-      ACPI_HID_DEVICE_PATH              LpcBusDevicePath;\r
-      EFI_DEVICE_PATH_PROTOCOL          EndDevicePath;\r
-    } PARALLEL_CONN_DEVICE_PATH;\r
-\r
-    typedef struct _FLOOPY_CONN_DEVICE_PATH {\r
-      ACPI_HID_DEVICE_PATH              PciRootBridgeDevicePath;\r
-      PCI_DEVICE_PATH                   LpcBridgeDevicePath;\r
-      ACPI_HID_DEVICE_PATH              LpcBusDevicePath;\r
-      EFI_DEVICE_PATH_PROTOCOL          EndDevicePath;\r
-    } FLOOPY_CONN_DEVICE_PATH;\r
-\r
-    typedef union _EFI_MISC_PORT_DEVICE_PATH {\r
-      USB_PORT_DEVICE_PATH              UsbDevicePath;\r
-      IDE_DEVICE_PATH                   IdeDevicePath;\r
-      RMC_CONN_DEVICE_PATH              RmcConnDevicePath;\r
-      RIDE_DEVICE_PATH                  RideDevicePath;\r
-      GB_NIC_DEVICE_PATH                GbNicDevicePath;\r
-      PS2_CONN_DEVICE_PATH              Ps2ConnDevicePath;\r
-      SERIAL_CONN_DEVICE_PATH           SerialConnDevicePath;\r
-      PARALLEL_CONN_DEVICE_PATH         ParallelConnDevicePath;\r
-      FLOOPY_CONN_DEVICE_PATH           FloppyConnDevicePath;\r
-    } EFI_MISC_PORT_DEVICE_PATH;\r
-    #pragma pack()\r
-\r
-    a. The definitions above are *NOT* defined in MiscSubclass specifications 0.9. EdkII introduces them to simplify the\r
-       code logic. Therefore developer doesn't need to allocate memory dynamically to construct variable length device\r
-       path for various device.\r
-       Keeping this inconsistency for backward compatibility.\r
-\r
-    b. The definitions above are packed. This way violates the rule of alignment defined in DataHubSubclass specification.\r
-       Section "Alignment" in DataHubSubclass specification say "Fields in a data hub record should be aligned at their\r
-       natural boundaries". Keeping this inconsistency for backward compatibility.\r
-\r
-  2. Guid/DataHubRecords.h\r
-    typedef struct {\r
-      ...\r
-      EFI_MISC_PORT_DEVICE_PATH         PortPath;\r
-    } EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA;\r
-\r
-    The definition is *NOT* consistent with MiscSubclass specification, in which the type of last field is defined as\r
-    "EFI_DEVICE_PATH_PROTOCOL". The definition in Specification may bring a little complexity on implementation. User\r
-    have to allocate variable length memory to contain device path info and free them finially.\r
-    EdkII introduced an union type named EFI_MISC_PORT_DEVICE_PATH to avoid the logic above.\r
-\r
-  3. Guid/DataHubRecords.h\r
-    typedef struct {\r
-      ...\r
-      UINT8                                       BiosMajorRelease;\r
-      UINT8                                       BiosMinorRelease;\r
-      UINT8                                       BiosEmbeddedFirmwareMajorRelease;\r
-      UINT8                                       BiosEmbeddedFirmwareMinorRelease;\r
-    } EFI_MISC_BIOS_VENDOR_DATA;\r
-\r
-    The fields listed above are *NOT* defined in MiscSubclass specification 0.9. They are introduced to support\r
-    new bios information (type 0) defined in SmBios 2.6 specification.\r
-    Keeping this inconsistency to reflect the latest industry standard.\r
-\r
-  4. Guid/DataHubRecords.h\r
-    typedef struct {\r
-      ...\r
-      STRING_REF                        SystemSKUNumber;\r
-      STRING_REF                        SystemFamily;\r
-    } EFI_MISC_SYSTEM_MANUFACTURER_DATA;\r
-\r
-    The fields listed above are *NOT* defined in MiscSubclass specification 0.9. They are introduced to support\r
-    new system information (type 1) defined in SmBios 2.6 specification.\r
-    Keeping this inconsistency to reflect the latest industry standard.\r
-\r
-  5. Guid/DataHubRecords.h\r
-    typedef struct {\r
-      ...\r
-      EFI_INTER_LINK_DATA               ManagementDeviceThresholdLink;\r
-      UINT8                             ComponentType;\r
-    } EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA;\r
-\r
-    a. The field "ManagementDeviceThresholdLink" above is *NOT* defined in MiscSubclass specification 0.9. It is introduced to support\r
-       new management device component (type 35) defined in SmBios 2.6 specification.\r
-       Keeping this inconsistency to reflect the latest industry standard.\r
-    b. The field "ComponentType" above is *NOT* defined in MiscSubclass specifications 0.9. It's implementation-specific to simplify the code logic.\r
-       Keeping this inconsistency for backward compatibility.\r
-\r
-  6. Guid/DataHubRecords.h\r
-    typedef struct {\r
-      UINT32                            ChassisType       :16;\r
-      UINT32                            ChassisLockPresent:1;\r
-      UINT32                            Reserved          :15;\r
-    } EFI_MISC_CHASSIS_STATUS;\r
-\r
-    The definition is *NOT* consistent with MiscSubclass specification 0.9, in which the first field is assigned a wrong field\r
-    name "EFI_MISC_CHASSIS_TYPE". Due to EFI_MISC_CHASSIS_TYPE has been declared as a data type, it can not be used as a\r
-    field name again. EdkII changes its name to "ChassisType" to pass build.\r
-\r
-  7. Guid/DataHubRecords.h\r
-    typedef enum {\r
-      ...\r
-      EfiSlotTypeAgp2X                  = 0x10,\r
-      ...\r
-      EfiSlotTypePciExpress             = 0xA5,\r
-      EfiSlotTypePciExpressX1           = 0xA6,\r
-      EfiSlotTypePciExpressX2           = 0xA7,\r
-      EfiSlotTypePciExpressX4           = 0xA8,\r
-      EfiSlotTypePciExpressX8           = 0xA9,\r
-      EfiSlotTypePciExpressX16          = 0xAA\r
-    } EFI_MISC_SLOT_TYPE;\r
-\r
-    a. The field name "EfiSlotTypeAgp2X" is *NOT* consistent with MiscSubclass specification 0.9, in which it is named\r
-       "EfiSlotTypeApg2X".\r
-       From its literal sense, this field represents a AGP type display card, so it should be named as "EfiSlotTypeAgp2X".\r
-    b. The enumeration fields from "EfiSlotTypePciExpress" to "EfiSlotTypePciExpressX16" are *NOT* defined in MiscSubclass specification 0.9.\r
-       They are introduced to support new system slots (type 9) defined in SmBios 2.6 specification.\r
-       Keeping this inconsistency to reflect the latest industry standard.\r
-\r
-  8. Guid/DataHubRecords.h\r
-    typedef struct {\r
-      ...\r
-      EFI_MISC_ONBOARD_DEVICE_STATUS    OnBoardDeviceStatus;\r
-      ...\r
-    } EFI_MISC_ONBOARD_DEVICE_DATA;\r
-\r
-    The definition is *NOT* consistent with MiscSubclass specification 0.9, in which the field "OnBoardDeviceStatus" is\r
-    named as "OnBoardDeviceType". Keeping this inconsistency for backward compatibility.\r
-\r
-  9. Guid/DataHubRecords.h\r
-    #define EFI_MISC_PORTABLE_BATTERY_RECORD_NUMBER   0x00000010\r
-\r
-    The name of the definition is *NOT* consistent with MiscSubclass specification 0.9, in which it is defined as\r
-    "EFI_MISC_BATTERY_LOCATION_RECORD_NUMBER". Keeping this inconsistency for backward compatibility.\r
-\r
-  10. Guid/DataHubRecords.h\r
-    typedef enum {\r
-      EfiPortableBatteryDeviceChemistryOther = 1,\r
-      EfiPortableBatteryDeviceChemistryUnknown = 2,\r
-      EfiPortableBatteryDeviceChemistryLeadAcid = 3,\r
-      EfiPortableBatteryDeviceChemistryNickelCadmium = 4,\r
-      EfiPortableBatteryDeviceChemistryNickelMetalHydride = 5,\r
-      EfiPortableBatteryDeviceChemistryLithiumIon = 6,\r
-      EfiPortableBatteryDeviceChemistryZincAir = 7,\r
-      EfiPortableBatteryDeviceChemistryLithiumPolymer = 8\r
-    } EFI_MISC_PORTABLE_BATTERY_DEVICE_CHEMISTRY;\r
-\r
-    The name of the definition is *NOT* consistent with MiscSubclass specification, in which it is defined as\r
-    "EFI_MISC_BATTERY_DEVICE_CHEMISTRY". And all field names have a redundant "Portable" string compared with MisSubclass\r
-    specification 0.9.\r
-    Keeping this inconsistency for backward compatibility.\r
-\r
-  11. Guid/DataHubRecords.h\r
-    typedef struct {\r
-      STRING_REF                                 Location;\r
-      STRING_REF                                 Manufacturer;\r
-      STRING_REF                                 ManufactureDate;\r
-      STRING_REF                                 SerialNumber;\r
-      STRING_REF                                 DeviceName;\r
-      EFI_MISC_PORTABLE_BATTERY_DEVICE_CHEMISTRY DeviceChemistry;\r
-      UINT16                                     DesignCapacity;\r
-      UINT16                                     DesignVoltage;\r
-      STRING_REF                                 SBDSVersionNumber;\r
-      UINT8                                      MaximumError;\r
-      UINT16                                     SBDSSerialNumber;\r
-      UINT16                                     SBDSManufactureDate;\r
-      STRING_REF                                 SBDSDeviceChemistry;\r
-      UINT8                                      DesignCapacityMultiplier;\r
-      UINT32                                     OEMSpecific;\r
-      UINT8                                      BatteryNumber;\r
-      BOOLEAN                                    Valid;\r
-    } EFI_MISC_PORTABLE_BATTERY;\r
-\r
-    The definition is *NOT* consistent with MiscSubclass specification 0.9, in which the structure name is defined as\r
-    "EFI_MISC_BATTERY_LOCATION_DATA". Moreover, the name and the order of all fields are also different with MiscSubclass\r
-    specification 0.9. Keeping this inconsistency for backward compatibility.\r
-\r
-  12. Guid/DataHubRecords.h\r
-    typedef enum {\r
-      ...\r
-    } EFI_MISC_BOOT_INFORMATION_STATUS_DATA_TYPE;\r
-\r
-    The name of the definition is *NOT* consistent with MiscSubclass specification 0.9, in which it is defined as\r
-    "EFI_MISC_BOOT_INFORMATION_STATUS_TYPE". Keeping this inconsistency for backward compatibility.\r
-\r
-  13. Guid/DataHubRecords.h\r
-    typedef struct {\r
-      EFI_MISC_BOOT_INFORMATION_STATUS_DATA_TYPE BootInformationStatus;\r
-      ...\r
-    } EFI_MISC_BOOT_INFORMATION_STATUS_DATA;\r
-\r
-    The definition is *NOT* consistent with MiscSubclass specification 0.9, in which the type of the first field is\r
-    "EFI_MISC_BOOT_INFORMATION_STATUS_TYPE". Keeping this inconsistency for backward compatibility.\r
-\r
-  14. Guid/DataHubRecords.h\r
-    typedef struct {\r
-      ...\r
-    } EFI_MISC_SYSTEM_POWER_SUPPLY_DATA;\r
-\r
-    The name of the definition is *NOT* consistent with MiscSubclass specification 0.9, in which it is defined as\r
-    "EFI_MISC_POWER_SUPPLY_UNIT_GROUP_DATA". Keeping this inconsistency for backward compatibility.\r
-\r
-  15. Guid/DataHubRecords.h\r
-    typedef struct {\r
-      ...\r
-    } SMBIOS_STRUCTURE_HDR;\r
-\r
-    The name of the definition is *NOT* consistent with MiscSubclass specification 0.9, in which the structure name\r
-    is defined as "EFI_SMBIOS_STRUCTURE_HDR". Due to this structure is commonly used by vendor to construct SmBios\r
-    type 0x80~0xFF table, Keeping this inconsistency for backward compatibility.\r
-\r
-  16. Guid/DataHubRecords.h\r
-    typedef struct {\r
-      SMBIOS_STRUCTURE_HDR              Header;\r
-      ...\r
-    } EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA;\r
-\r
-    The definition is *NOT* consistent with MiscSubclass specification 0.9, in which the type of the first field is\r
-    "EFI_SMBIOS_STRUCTURE_HDR". Keeping this inconsistency for backward compatibility.\r
-\r
-  17. Guid/DataHubRecords.h\r
-    typedef struct {\r
-      UINT16                            PowerSupplyHotReplaceable:1;\r
-      UINT16                            PowerSupplyPresent       :1;\r
-      UINT16                            PowerSupplyUnplugged     :1;\r
-      UINT16                            InputVoltageRangeSwitch  :4;\r
-      UINT16                            PowerSupplyStatus        :3;\r
-      UINT16                            PowerSupplyType          :4;\r
-      UINT16                            Reserved                 :2;\r
-    } EFI_MISC_POWER_SUPPLY_CHARACTERISTICS;\r
-\r
-    all field type in the definition are *NOT* consistent with MiscSubclass specification 0.9, in which it is defined as\r
-    "UINT32" and the total width of bit-fields is 32bits width.\r
-    Keeping this inconsistency for backward compatibility.\r
-\r
-  18. Guid/DataHubRecords.h\r
-    #define EFI_MISC_SYSTEM_EVENT_LOG_RECORD_NUMBER    0x00000020\r
-\r
-    typedef struct {\r
-      UINT16                            LogAreaLength;\r
-      UINT16                            LogHeaderStartOffset;\r
-      UINT16                            LogDataStartOffset;\r
-      UINT8                             AccessMethod;\r
-      UINT8                             LogStatus;\r
-      UINT32                            LogChangeToken;\r
-      UINT32                            AccessMethodAddress;\r
-      UINT8                             LogHeaderFormat;\r
-      UINT8                             NumberOfSupportedLogType;\r
-      UINT8                             LengthOfLogDescriptor;\r
-    } EFI_MISC_SYSTEM_EVENT_LOG_DATA;\r
-\r
-    #define ACCESS_INDEXIO_1INDEX8BIT_DATA8BIT    0x00\r
-    #define ACCESS_INDEXIO_2INDEX8BIT_DATA8BIT    0X01\r
-    #define ACCESS_INDEXIO_1INDEX16BIT_DATA8BIT   0X02\r
-    #define ACCESS_MEMORY_MAPPED                  0x03\r
-    #define ACCESS_GPNV                           0x04\r
-\r
-    The definitions listed above are *NOT* defined in MiscSubclass specification 0.9. It is introduced to support\r
-    new system event log (type 15) defined in SmBios 2.6 specification.\r
-    Keeping this inconsistency to reflect the latest industry standard.\r
-\r
-  19. Guid/DataHubRecords.h\r
-    #define EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD_RECORD_NUMBER    0x00000021\r
-\r
-    typedef struct {\r
-      UINT16                            LowerThresNonCritical;\r
-      UINT16                            UpperThresNonCritical;\r
-      UINT16                            LowerThresCritical;\r
-      UINT16                            UpperThresCritical;\r
-      UINT16                            LowerThresNonRecover;\r
-      UINT16                            UpperThresNonRecover;\r
-    } EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD;\r
-\r
-    The definitions listed above are *NOT* defined in MiscSubclass specification 0.9. It is introduced to support\r
-    new management device threshold data (type 36) defined in SmBios 2.6 specification.\r
-    Keeping this inconsistency to reflect the latest industry standard.\r
-\r
-  20. Guid/DataHubRecords.h\r
-    typedef union {\r
-      EFI_MISC_LAST_PCI_BUS_DATA                         LastPciBus;\r
-      ...\r
-      EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD               MiscManagementDeviceThreshold;\r
-    } EFI_MISC_SUBCLASS_RECORDS;\r
-\r
-    typedef struct {\r
-      EFI_SUBCLASS_TYPE1_HEADER         Header;\r
-      EFI_MISC_SUBCLASS_RECORDS         Record;\r
-    } EFI_MISC_SUBCLASS_DRIVER_DATA;\r
-\r
-    The definitions above are *NOT* defined in MemSubclass specification 0.9. EdkII introduces them to simplify the\r
-    code logic. Therefore developer doesn't need to allocate memory dynamically to construct variable length data record.\r
-    Keeping this inconsistency for backward compatibility.\r
-\r
-  21. Guid/DataHubRecords.h\r
-    typedef struct {\r
-      EFI_MISC_COOLING_DEVICE_TYPE      CoolingDeviceType;\r
-      EFI_INTER_LINK_DATA               CoolingDeviceTemperatureLink;\r
-      UINT8                             CoolingDeviceUnitGroup;\r
-      UINT16                            CoolingDeviceNominalSpeed;\r
-      UINT32                            CoolingDeviceOemDefined;\r
-    } EFI_MISC_COOLING_DEVICE_TEMP_LINK_DATA;\r
-\r
-    The "CoolingDeviceUnitGroup" field and "CoolingDeviceNominalSpeed" field are *NOT* consistent with\r
-    MiscSubclass specification 0.9. These fields are aligned with SMBIOS 2.6 specification. And user can easily\r
-    assign any value to CoolingDeviceNominalSpeed.\r
-\r
-  22. Guid/DataHubRecords.h\r
-    typedef enum {\r
-      ...\r
-      EfiSlotDataBusWidth1xOrx1         = 0x8,\r
-      EfiSlotDataBusWidth2xOrx2         = 0x9,\r
-      EfiSlotDataBusWidth4xOrx4         = 0xA,\r
-      EfiSlotDataBusWidth8xOrx8         = 0xB,\r
-      EfiSlotDataBusWidth12xOrx12       = 0xC,\r
-      EfiSlotDataBusWidth16xOrx16       = 0xD,\r
-      EfiSlotDataBusWidth32xOrx32       = 0xE\r
-    } EFI_MISC_SLOT_DATA_BUS_WIDTH;\r
-\r
-    The enumeration fields from "EfiSlotDataBusWidth1xOrx1" to "EfiSlotDataBusWidth32xOrx32" are *NOT* defined in MiscSubclass specification 0.9.\r
-    They are introduced to support new system slots (type 9) defined in SmBios 2.6 specification.\r
-    Keeping this inconsistency to reflect the latest industry standard.\r
-\r
-  23. Guid/DataHubRecords.h\r
-    typedef struct {\r
-      ...\r
-      UINT16                            TemperatureProbeMaximumValue;\r
-      UINT16                            TemperatureProbeMinimumValue;\r
-      UINT16                            TemperatureProbeResolution;\r
-      UINT16                            TemperatureProbeTolerance;\r
-      UINT16                            TemperatureProbeAccuracy;\r
-      UINT16                            TemperatureProbeNominalValue;\r
-      UINT16                            MDLowerNoncriticalThreshold;\r
-      UINT16                            MDUpperNoncriticalThreshold;\r
-      UINT16                            MDLowerCriticalThreshold;\r
-      UINT16                            MDUpperCriticalThreshold;\r
-      UINT16                            MDLowerNonrecoverableThreshold;\r
-      UINT16                            MDUpperNonrecoverableThreshold;\r
-      ...\r
-    } EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_DATA;\r
-\r
-    The structure fields from "TemperatureProbeMaximumValue" to "MDUpperNonrecoverableThreshold" are *NOT* consistent with MiscSubclass specification 0.9.\r
-    The specification defines the fields type as EFI_EXP_BASE10_DATA. In fact, they should be UINT16 type because they refer to 16bit width data.\r
-    Keeping this inconsistency for backward compatibility.\r
-\r
-  24. Guid/DataHubRecords.h\r
-    #define EFI_MISC_IPMI_INTERFACE_TYPE_DATA_RECORD_NUMBER EFI_MISC_IPMI_INTERFACE_TYPE_RECORD_NUMBER\r
-\r
-    The definition above is *NOT* defined in MiscSubclass specifications 0.9. It's defined for backward compatibility.\r
-\r
-##\r
-# Mismatch with Intel Platform Innovation Framework for Status Codes Specification (Version 0.92)\r
-##\r
-  1. Include/Framework/StatusCode.h\r
-    #define EFI_IOB_ATA_BUS_SMART_ENABLE               (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
-    #define EFI_IOB_ATA_BUS_SMART_DISABLE              (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
-    #define EFI_IOB_ATA_BUS_SMART_OVERTHRESHOLD        (EFI_SUBCLASS_SPECIFIC | 0x00000002)\r
-    #define EFI_IOB_ATA_BUS_SMART_UNDERTHRESHOLD       (EFI_SUBCLASS_SPECIFIC | 0x00000003)\r
-\r
-    #define EFI_IOB_ATA_BUS_SMART_NOTSUPPORTED         (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
-    #define EFI_IOB_ATA_BUS_SMART_DISABLED             (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
-\r
-    #define EFI_SW_DXE_BS_PC_BEGIN_CONNECTING_DRIVERS  (EFI_SUBCLASS_SPECIFIC | 0x00000005)\r
-    #define EFI_SW_DXE_BS_PC_VERIFYING_PASSWORD        (EFI_SUBCLASS_SPECIFIC | 0x00000006)\r
-\r
-    #define EFI_SW_DXE_RT_PC_S0                        (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
-    #define EFI_SW_DXE_RT_PC_S1                        (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
-    #define EFI_SW_DXE_RT_PC_S2                        (EFI_SUBCLASS_SPECIFIC | 0x00000002)\r
-    #define EFI_SW_DXE_RT_PC_S3                        (EFI_SUBCLASS_SPECIFIC | 0x00000003)\r
-    #define EFI_SW_DXE_RT_PC_S4                        (EFI_SUBCLASS_SPECIFIC | 0x00000004)\r
-    #define EFI_SW_DXE_RT_PC_S5                        (EFI_SUBCLASS_SPECIFIC | 0x00000005)\r
-\r
-    #define EFI_SW_CSM_LEGACY_ROM_INIT                 (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
-\r
-    The definitions above are *NOT* defined in Framework StatusCodes specification 0.92. But these subclass-specific error code\r
-    operations are needed for EdkII implementation.\r
-    Keeping this inconsistency for backward compatibility.\r
-\r
-  2. Include/Framework/StatusCode.h\r
-    typedef union {\r
-      CHAR8   *Ascii;\r
-      CHAR16  *Unicode;\r
-      ...\r
-    } EFI_STATUS_CODE_STRING;\r
-\r
-    The definition is *NOT* consistent with Framework SatausCodes specification 0.92, in which the first field is defined as "CHAR8 Ascii[]"\r
-    and the second field is defined as "CHAR16 Unicode[]". Keeping this inconsistency for backward compatibility.\r
-\r
-  3. Include/Framework/StatusCode.h\r
-    #define EFI_SW_EC_X64_DIVIDE_ERROR      EXCEPT_X64_DIVIDE_ERROR\r
-    #define EFI_SW_EC_X64_DEBUG             EXCEPT_X64_DEBUG\r
-    #define EFI_SW_EC_X64_NMI               EXCEPT_X64_NMI\r
-    #define EFI_SW_EC_X64_BREAKPOINT        EXCEPT_X64_BREAKPOINT\r
-    #define EFI_SW_EC_X64_OVERFLOW          EXCEPT_X64_OVERFLOW\r
-    #define EFI_SW_EC_X64_BOUND             EXCEPT_X64_BOUND\r
-    #define EFI_SW_EC_X64_INVALID_OPCODE    EXCEPT_X64_INVALID_OPCODE\r
-    #define EFI_SW_EC_X64_DOUBLE_FAULT      EXCEPT_X64_DOUBLE_FAULT\r
-    #define EFI_SW_EC_X64_INVALID_TSS       EXCEPT_X64_INVALID_TSS\r
-    #define EFI_SW_EC_X64_SEG_NOT_PRESENT   EXCEPT_X64_SEG_NOT_PRESENT\r
-    #define EFI_SW_EC_X64_STACK_FAULT       EXCEPT_X64_STACK_FAULT\r
-    #define EFI_SW_EC_X64_GP_FAULT          EXCEPT_X64_GP_FAULT\r
-    #define EFI_SW_EC_X64_PAGE_FAULT        EXCEPT_X64_PAGE_FAULT\r
-    #define EFI_SW_EC_X64_FP_ERROR          EXCEPT_X64_FP_ERROR\r
-    #define EFI_SW_EC_X64_ALIGNMENT_CHECK   EXCEPT_X64_ALIGNMENT_CHECK\r
-    #define EFI_SW_EC_X64_MACHINE_CHECK     EXCEPT_X64_MACHINE_CHECK\r
-    #define EFI_SW_EC_X64_SIMD              EXCEPT_X64_SIMD\r
-\r
-    The definitions are *NOT* defined in Framework StatusCodes specification 0.92, in which IA32 and IPF exception subclass error code definitions\r
-    are defined but omit the corresponding definitions for X64. EdkII introduce these definitions for implementation.\r
-\r
-##\r
-# Mismatch with Intel Platform Innovation Framework for EFI Boot Script Specification (Version 0.91)\r
-##\r
-  1. Include/Protocol/BootScriptSave.h\r
-    #define EFI_BOOT_SCRIPT_SAVE_PROTOCOL_GUID \\r
-    { \\r
-      0x470e1529, 0xb79e, 0x4e32, {0xa0, 0xfe, 0x6a, 0x15, 0x6d, 0x29, 0xf9, 0xb2 } \\r
-    }\r
-\r
-    The macro name "EFI_BOOT_SCRIPT_SAVE_PROTOCOL_GUID" is *NOT* consistent with Framework BootScript specification 0.91,\r
-    in which it's defined as "EFI_BOOT_SCRIPT_SAVE_GUID". Keeping this inconsistency for backward compatibility.\r
-\r
-  2. Include/Protocol/BootScriptSave.h\r
-    EFI_STATUS\r
-    EFI_BOOTSERVICE\r
-    (EFIAPI *EFI_BOOT_SCRIPT_WRITE) (\r
-      IN EFI_BOOT_SCRIPT_SAVE_PROTOCOL            *This,\r
-      ...\r
-    );\r
-\r
-    The first parameter's type is *NOT* consistent with Framework BootScript specification 0.91, in which it's defined as\r
-    "struct _EFI_BOOT_SCRIPT_SAVE_PROTOCOL". Keeping this inconsistency for backward compatibility.\r
-\r
-  3. Include/Framework/BootScript.h\r
-    #define EFI_BOOT_SCRIPT_MEM_POLL_OPCODE               0x09\r
-    #define EFI_BOOT_SCRIPT_INFORMATION_OPCODE            0x0A\r
-    #define EFI_BOOT_SCRIPT_PCI_CONFIG2_WRITE_OPCODE      0x0B\r
-    #define EFI_BOOT_SCRIPT_PCI_CONFIG2_READ_WRITE_OPCODE 0x0C\r
-    #define EFI_BOOT_SCRIPT_DISPATCH_2_OPCODE             0x0D\r
-\r
-    The OPCODEs above are not defined in Framework BootScript Specification 0.91, but adopted by PI 1.0 Spec. And they\r
-    are needed for EdkII implementation.\r
-\r
-  4. Include/Framework/BootScript.h\r
-    #define EFI_BOOT_SCRIPT_TABLE_OPCODE                  0xAA\r
-    #define EFI_BOOT_SCRIPT_TERMINATE_OPCODE              0xFF\r
-\r
-    The two OPCODEs are *NOT* defined in Framework BootScript specification 0.91. EdkII introduces them to indicate the start\r
-    or end of the boot script table.\r
-    Keeping this inconsistency for backward compatibility.\r
-\r
-  5. Include/Protocol/BootScriptSave.h\r
-    typedef\r
-    EFI_STATUS\r
-    (EFIAPI *EFI_BOOT_SCRIPT_CLOSE_TABLE) (\r
-      IN  EFI_BOOT_SCRIPT_SAVE_PROTOCOL            *This,\r
-      ...\r
-      );\r
-\r
-    The first parameter's type is *NOT* consistent with BootScript specification, in which it's defined as\r
-    "struct _EFI_BOOT_SCRIPT_SAVE_PROTOCOL". Keeping this inconsistency for backward compatibility.\r
-\r
-  6. Include/Include/BootScriptExecuter.h\r
-    typedef\r
-    EFI_STATUS\r
-    (EFIAPI *EFI_PEI_BOOT_SCRIPT_EXECUTE)(\r
-      IN     EFI_PEI_SERVICES                        **PeiServices,\r
-      IN     EFI_PEI_BOOT_SCRIPT_EXECUTER_PPI        *This,\r
-      ...\r
-      );\r
-\r
-    The second parameter's type is *NOT* consistent with BootScript specification, in which it's defined as\r
-    "struct _EFI_PEI_BOOT_SCRIPT_EXECUTER_PPI". Keeping this inconsistency for backward compatibility.\r
-\r
-##\r
-# Mismatch with Intel Platform Innovation Framework for EFI DXE CIS (Version 0.91)\r
-##\r
-  1. Include/Framework/DxeCis.h\r
-    EFI_STATUS_CODE_ARCH_PROTOCOL is removed.\r
-\r
-    EdkII doesn't provide EFI_STATUS_CODE_ARCH_PROTOCOL definition due to ReportStatusCode() field has been\r
-    removed from EFI Runtime Service Table of PI specification. EFI_STATUS_CODE_ARCH_PROTOCOL is *NOT* required,\r
-    and is replaced with EFI_STATUS_CODE_RUNTIME_PROTOCOL.\r
-\r
-##\r
-# Mismatch with Intel Platform Innovation Framework for EFI Firmware Volume Specification (Version 0.9)\r
-##\r
-  1. Include/Framework/FirmwareVolumeImageFormat.h\r
-    #define EFI_AGGREGATE_AUTH_STATUS_ALL               0x00000f\r
-    #define EFI_LOCAL_AUTH_STATUS_ALL                   0x0f0000\r
-\r
-    The two macros are *NOT* defined in Framework FV specification 0.9. EdkII introduces them as a mask to calculate the\r
-    value of authentication status.\r
-\r
-##\r
-# Mismatch with Intel Platform Innovation Framework for EFI Human Interface Infrastructure Specification (Version 0.92)\r
-##\r
-  1. Include/Protocol/FrameworkHii.h\r
-    #define EFI_HII_PROTOCOL_GUID \\r
-      { \\r
-        0xd7ad636e, 0xb997, 0x459b, {0xbf, 0x3f, 0x88, 0x46, 0x89, 0x79, 0x80, 0xe1} \\r
-      }\r
-\r
-    The Framework HII specification 0.92 changed part of HII interfaces but did not update the protocol GUID.\r
-    This change should cause a change of GUID in both of code and HII spec. EdkII updates the GUID in code,\r
-    but the Framework HII specification 0.92 is not updated. This is a known issue.\r
-\r
-  2. Include/Protocol/FrameworkHii.h\r
-    typedef struct {\r
-      ...\r
-      EFI_HANDLE          COBExportHandle;\r
-    } EFI_HII_HANDLE_PACK;\r
-\r
-    The last field "COBExportHandle" of EFI_HII_HANDLE_PACK is *NOT* defined in the Framework HII specification\r
-    0.92. Keeping this inconsistency for backward compatibility.\r
-\r
-  3. Include/Protocol/FrameworkHii.h\r
-    typedef struct {\r
-      UINTN     NumberOfPackages;\r
-      EFI_GUID  *GuidId;\r
-    } EFI_HII_PACKAGES;\r
-\r
-    The definition is *NOT* consistent with Framework HII specification 0.92, in which a field "HandlePack" is defined.\r
-    EdkII changes the EFI_HII_PACKAGES to contain various number of packages of different types just after the structure\r
-    as inline data, which will bring the flexibility on development.\r
-\r
-  4. Include/Protocol/FrameworkHii.h\r
-    struct _EFI_HII_PROTOCOL {\r
-      ...\r
-      EFI_HII_RESET_STRINGS                 ResetStrings;\r
-      ...\r
-    };\r
-\r
-    The field listed above is *NOT* defined in Framework HII specification 0.92. EdkII adds this field to provide\r
-    an ability of removing any new strings that were added after the initial string export for this handle.\r
-\r
-  5. Include/Protocol/FrameworkHii.h\r
-    typedef\r
-    EFI_STATUS\r
-    (EFIAPI *EFI_HII_GLYPH_TO_BLT)(\r
-      ...\r
-      IN     EFI_GRAPHICS_OUTPUT_BLT_PIXEL Foreground,\r
-      IN     EFI_GRAPHICS_OUTPUT_BLT_PIXEL Background,\r
-      ...\r
-      IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer\r
-      );\r
-\r
-    The type of the parameters listed above are *NOT* consistent with Framework HII specification 0.92, in which\r
-    the type of these parameters is EFI_UGA_PIXEL. Here the definition uses the EFI_GRAPHICS_OUTPUT_BLT_PIXEL which\r
-    defined in UEFI2.1 spec. Keeping this inconsistency for backward compatibility.\r
-\r
-  6. Include/Protocol/FrameworkHii.h\r
-    typedef struct {\r
-      FRAMEWORK_EFI_IFR_OP_HEADER       Header;\r
-      UINT8                             Flags;\r
-    } EFI_IFR_SUPPRESS;\r
-\r
-    typedef struct {\r
-      FRAMEWORK_EFI_IFR_OP_HEADER       Header;\r
-      UINT8                             Flags;\r
-    } EFI_IFR_GRAY_OUT;\r
-\r
-    typedef struct {\r
-      FRAMEWORK_EFI_IFR_OP_HEADER       Header;\r
-      STRING_REF                        Popup;\r
-      UINT8                             Flags;\r
-    } EFI_IFR_INCONSISTENT;\r
-\r
-    typedef struct {\r
-      FRAMEWORK_EFI_IFR_OP_HEADER       Header;\r
-      UINT16                            QuestionId;\r
-      UINT8                             Width;\r
-      UINT16                            Value;\r
-    } FRAMEWORK_EFI_IFR_EQ_ID_VAL;\r
-\r
-    typedef struct {\r
-      FRAMEWORK_EFI_IFR_OP_HEADER       Header;\r
-      UINT16                            QuestionId;\r
-      UINT8                             Width;\r
-      UINT16                            ListLength;\r
-      UINT16                            ValueList[1];\r
-    } FRAMEWORK_EFI_IFR_EQ_ID_LIST;\r
-\r
-    typedef struct {\r
-      FRAMEWORK_EFI_IFR_OP_HEADER       Header;\r
-      UINT16                            QuestionId1;\r
-      UINT8                             Width;\r
-      UINT16                            QuestionId2;\r
-    } FRAMEWORK_EFI_IFR_EQ_ID_ID;\r
-\r
-    typedef struct {\r
-      FRAMEWORK_EFI_IFR_OP_HEADER       Header;\r
-      UINT16                            VariableId;\r
-      UINT16                            Value;\r
-    } EFI_IFR_EQ_VAR_VAL;\r
-\r
-    The defintions are not complied with Framework HII spec 0.92. Keeping the inconsistent for implementation needed.\r
-\r
-  7. Include/Protocol/FrameworkFormCallback.h\r
-    #define RESET_REQUIRED  1\r
-    #define EXIT_REQUIRED   2\r
-    #define SAVE_REQUIRED   4\r
-    #define NV_CHANGED      8\r
-    #define NV_NOT_CHANGED  16\r
-\r
-    These macros are *NOT* defined in the Framework HII specification 0.92. These Flags are introduced to describe\r
-    the standard behavior of the browser after the callback.\r
-    Keeping this inconsistency for backward compatibility.\r
-\r
-  8. Include/Protocol/FrameworkFormCallback.h\r
-    typedef\r
-    EFI_STATUS\r
-    (EFIAPI *EFI_NV_WRITE)(\r
-      ...\r
-      IN     UINT32                        Attributes,\r
-      ...\r
-      );\r
-\r
-    The definition is *NOT* consistent with Framework HII specification 0.92, in which the type of Attributes\r
-    parameter is defined as "UINT32 *". EdkII changes the type of Attributes from UINT32 * to UINT32 because\r
-    the input paramter is not necessary to use pointer date type.\r
-\r
-##\r
-# Mismatch with Intel Platform Innovation Framework for PEI CIS Specification (Version 0.91)\r
-##\r
-  1. Include/Ppi/ReadOnlyVariable.h\r
-    #define EFI_VARIABLE_READ_ONLY          0x00000008\r
-\r
-    In Framework PeiCis specification 0.91, neither the macro or its value is defined.\r
-    Keeping this inconsistency for backward compatibility.\r
-\r
-  2. Include/Ppi/FindFv.h\r
-    typedef\r
-    EFI_STATUS\r
-    (EFIAPI *EFI_PEI_FIND_FV_FINDFV)(\r
-      IN EFI_PEI_FIND_FV_PPI             *This,\r
-      IN EFI_PEI_SERVICES                **PeiServices,\r
-      IN UINT8                           *FvNumber,\r
-      IN OUT EFI_FIRMWARE_VOLUME_HEADER  **FVAddress\r
-      );\r
-\r
-    The definition is *NOT* consistent with Framework PeiCis specification 0.91. Compared with spec, the order\r
-    of the first and second parameters is reversed. Keeping this inconsistency for backward compatibility.\r
-\r
-##\r
-# Mismatch with Intel Platform Innovation Framework for EFI SMM CIS (Version 0.91)\r
-##\r
-  1. Include/Guid/SmramMemoryReserve.h\r
-    typedef struct {\r
-      UINT32                NumberOfSmmReservedRegions;\r
-      ...\r
-    } EFI_SMRAM_HOB_DESCRIPTOR_BLOCK;\r
-\r
-    1) The name of the definition is *NOT* consistent with Framework SmmCis specification 0.91, in which it's\r
-    defined as "EFI_HOB_SMRAM_DESCRIPTOR_BLOCK" rather than "EFI_SMRAM_HOB_DESCRIPTOR_BLOCK".\r
-    Keeping this inconsistency for backward compatibility.\r
-\r
-    2) The definition of NumberOfSmmReservedRegions is *NOT* consistent with Framework SmmCis specification 0.91,\r
-    in which the type of this field is defined as UINTN. However, HOBs are supposed to be CPU neutral, so UINTN\r
-    is incorrect and UINT32 should be used.\r
-\r
-  2. Include/Guid/SmramMemoryReserve.h\r
-    typedef enum {\r
-      ...\r
-      IchnIoTrap3,\r
-      IchnIoTrap2,\r
-      IchnIoTrap1,\r
-      IchnIoTrap0,\r
-      IchnPciExpress,\r
-      IchnMonitor,\r
-      IchnSpi,\r
-      IchnQRT,\r
-      IchnGpioUnlock,\r
-      ...\r
-    } EFI_SMM_ICHN_SMI_TYPE;\r
-\r
-    The enumeration fields listed above are *NOT* defined in Framework SmmCis specification 0.91. EdkII introduces\r
-    these fields to support new SMI types.\r
-\r
-  3. Include/Framework/SmmCis.h\r
-    typedef union {\r
-      ///\r
-      /// The processor save-state information for IA-32 processors.\r
-      ///\r
-      EFI_SMI_CPU_SAVE_STATE     Ia32SaveState;\r
-      ///\r
-      /// Note: Inconsistency with the Framework SMM CIS spec - Itanium save state not included.\r
-      ///\r
-      /// The processor save-state information for Itanium processors.\r
-      ///\r
-      /// EFI_PMI_SYSTEM_CONTEXT ItaniumSaveState;\r
-    } EFI_SMM_CPU_SAVE_STATE;\r
-\r
-##\r
-# Mismatch with Intel Platform Innovation Framework for EFI S3 Resume Boot Path Specification (Version 0.9)\r
-##\r
-  1. Include/Protocol/AcpiS3Save.h\r
-    typedef\r
-    EFI_STATUS\r
-    EFI_BOOTSERVICE\r
-    (EFIAPI *EFI_ACPI_GET_LEGACY_MEMORY_SIZE) (\r
-      IN  EFI_ACPI_S3_SAVE_PROTOCOL *This,\r
-      OUT UINTN *Size\r
-      );\r
-\r
-    The first parameter's type is *NOT* consistent with Framework S3Resume specification, in which it's defined as\r
-    "struct _EFI_ACPI_S3_SAVE_PROTOCOL". Keeping this inconsistency for backward compatibility.\r
-\r
-  2. Include/Protocol/AcpiS3Save.h\r
-    typedef\r
-    EFI_STATUS\r
-    (EFIAPI *EFI_ACPI_S3_SAVE) (\r
-      IN EFI_ACPI_S3_SAVE_PROTOCOL      *This,\r
-      IN VOID                           *LegacyMemoryAddress\r
-      );\r
-\r
-    The first parameter's type is *NOT* consistent with Framework S3Resume specification, in which it's defined as\r
-    "struct _EFI_ACPI_S3_SAVE_PROTOCOL". Also the EFI_BOOTSERVICE modifier is removed from the function declaration.\r
-\r
-  3. Include/Protocol/AcpiS3Save.h\r
-    typedef\r
-    EFI_STATUS\r
-    (EFIAPI *EFI_ACPI_GET_LEGACY_MEMORY_SIZE)(\r
-      IN  EFI_ACPI_S3_SAVE_PROTOCOL     *This,\r
-      OUT UINTN                         *Size\r
-    );\r
-\r
-    The first parameter's type is *NOT* consistent with Framework S3Resume specification, in which it's defined as\r
-    "struct _EFI_ACPI_S3_SAVE_PROTOCOL". Also the EFI_BOOTSERVICE modifier is removed from the function declaration.\r
-\r
-##\r
-# Mismatch with Intel Platform Innovation Framework for EFI ACPI Specification (Version 0.91)\r
-##\r
-  1. Include/Protocol/AcpiSupport.h\r
-    typedef\r
-    EFI_STATUS\r
-    (EFIAPI *EFI_ACPI_GET_ACPI_TABLE)(\r
-      ...\r
-      );\r
-\r
-    The function modifier is *NOT* consistent with Framework Acpi specification. The EFI_BOOTSERVICE modifier\r
-    is removed from the function declaration.\r
-\r
-  2. Include/Protocol/AcpiSupport.h\r
-    typedef\r
-    EFI_STATUS\r
-    (EFIAPI *EFI_ACPI_SET_ACPI_TABLE)(\r
-      ...\r
-      );\r
-\r
-    The function modifier is *NOT* consistent with Framework Acpi specification. The EFI_BOOTSERVICE modifier\r
-    is removed from the function declaration.\r
-\r
-  3. Include/Protocol/AcpiSupport.h\r
-    typedef\r
-    EFI_STATUS\r
-    (EFIAPI *EFI_ACPI_PUBLISH_TABLES)(\r
-      ...\r
-      );\r
-\r
-    The function modifier is *NOT* consistent with Framework Acpi specification. The EFI_BOOTSERVICE modifier\r
-    is removed from the function declaration.\r
diff --git a/IntelFrameworkPkg/Include/Framework/BootScript.h b/IntelFrameworkPkg/Include/Framework/BootScript.h
deleted file mode 100644 (file)
index cb7220c..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/** @file\r
-  This file contains the boot script defintions that are shared between the\r
-  Boot Script Executor PPI and the Boot Script Save Protocol.\r
-\r
-Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-**/\r
-\r
-#ifndef _BOOT_SCRIPT_H_\r
-#define _BOOT_SCRIPT_H_\r
-\r
-#include <PiDxe.h>\r
-///\r
-/// The framework implementation defines follow opcode that are different from the PI specification:\r
-/// Add FRAMEWORK_ prefix to avoid naming conflict.\r
-///\r
-/// S3 Boot Script Table identifier.\r
-///\r
-#define FRAMEWORK_EFI_ACPI_S3_RESUME_SCRIPT_TABLE               0x00\r
-///\r
-/// The opcode is used to add a record for memory reads of the memory location and continues when the\r
-/// exit criteria is satisfied, or after a defined duration.\r
-///\r
-#define FRAMEWORK_EFI_BOOT_SCRIPT_MEM_POLL_OPCODE               0x09\r
-///\r
-/// The opcode is used to add a record for dispatching specified arbitrary code into a specified\r
-/// boot script table.\r
-///\r
-#define FRAMEWORK_EFI_BOOT_SCRIPT_DISPATCH_2_OPCODE             0x0D\r
-///\r
-/// The opcode indicates the start of the boot script table.\r
-///\r
-#define FRAMEWORK_EFI_BOOT_SCRIPT_TABLE_OPCODE                  0xAA\r
-///\r
-/// The opcode indicates the end of the boot script table.\r
-///\r
-#define FRAMEWORK_EFI_BOOT_SCRIPT_TERMINATE_OPCODE              0xFF\r
-\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Framework/DxeCis.h b/IntelFrameworkPkg/Include/Framework/DxeCis.h
deleted file mode 100644 (file)
index 98a947e..0000000
+++ /dev/null
@@ -1,170 +0,0 @@
-/** @file\r
-  Include file for definitions in the Intel Platform Innovation Framework for EFI\r
-  Driver Execution Environment Core Interface Specification (DXE CIS) Version 0.91.\r
-\r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-**/\r
-\r
-#ifndef _DXECIS_H_\r
-#define _DXECIS_H_\r
-\r
-#include <Protocol/StatusCode.h>\r
-\r
-/**\r
-  Functions of this type are used with the Framework MP Services Protocol and\r
-  the  SMM Services Table to execute a procedure on enabled APs.  The context\r
-  the AP should use durng execution is specified by Buffer.\r
-\r
-  @param[in]  Buffer   The pointer to the procedure's argument.\r
-\r
-**/\r
-typedef\r
-VOID\r
-(EFIAPI *FRAMEWORK_EFI_AP_PROCEDURE)(\r
-  IN  VOID  *Buffer\r
-  );\r
-\r
-///\r
-/// The Framework EFI Runtime Services Table as an extension to the EFI 1.10 Runtime Services Table.\r
-///\r
-typedef struct {\r
-  //\r
-  // Table header for the Framework EFI Runtime Services Table\r
-  //\r
-  EFI_TABLE_HEADER                  Hdr;\r
-  //\r
-  // Time services\r
-  //\r
-  EFI_GET_TIME                      GetTime;\r
-  EFI_SET_TIME                      SetTime;\r
-  EFI_GET_WAKEUP_TIME               GetWakeupTime;\r
-  EFI_SET_WAKEUP_TIME               SetWakeupTime;\r
-  //\r
-  // Virtual memory services\r
-  //\r
-  EFI_SET_VIRTUAL_ADDRESS_MAP       SetVirtualAddressMap;\r
-  EFI_CONVERT_POINTER               ConvertPointer;\r
-  //\r
-  // Variable services\r
-  //\r
-  EFI_GET_VARIABLE                  GetVariable;\r
-  EFI_GET_NEXT_VARIABLE_NAME        GetNextVariableName;\r
-  EFI_SET_VARIABLE                  SetVariable;\r
-  //\r
-  // Misc\r
-  //\r
-  EFI_GET_NEXT_HIGH_MONO_COUNT      GetNextHighMonotonicCount;\r
-  EFI_RESET_SYSTEM                  ResetSystem;\r
-  ///\r
-  /// A Framework extension to the EFI 1.10 runtime table.\r
-  /// It was moved to a protocol to avoid conflict with UEFI 2.0.\r
-  ///\r
-  EFI_REPORT_STATUS_CODE            ReportStatusCode;\r
-} FRAMEWORK_EFI_RUNTIME_SERVICES;\r
-\r
-///\r
-/// The Framework EFI Boot Services Table. Complies with the DxeCis specification.\r
-///\r
-typedef struct {\r
-  ///\r
-  /// The table header for the EFI Boot Services Table.\r
-  ///\r
-  EFI_TABLE_HEADER                Hdr;\r
-\r
-  //\r
-  // Task Priority Services\r
-  //\r
-  EFI_RAISE_TPL                   RaiseTPL;\r
-  EFI_RESTORE_TPL                 RestoreTPL;\r
-\r
-  //\r
-  // Memory Services\r
-  //\r
-  EFI_ALLOCATE_PAGES              AllocatePages;\r
-  EFI_FREE_PAGES                  FreePages;\r
-  EFI_GET_MEMORY_MAP              GetMemoryMap;\r
-  EFI_ALLOCATE_POOL               AllocatePool;\r
-  EFI_FREE_POOL                   FreePool;\r
-\r
-  //\r
-  // Event & Timer Services\r
-  //\r
-  EFI_CREATE_EVENT                  CreateEvent;\r
-  EFI_SET_TIMER                     SetTimer;\r
-  EFI_WAIT_FOR_EVENT                WaitForEvent;\r
-  EFI_SIGNAL_EVENT                  SignalEvent;\r
-  EFI_CLOSE_EVENT                   CloseEvent;\r
-  EFI_CHECK_EVENT                   CheckEvent;\r
-\r
-  //\r
-  // Protocol Handler Services\r
-  //\r
-  EFI_INSTALL_PROTOCOL_INTERFACE    InstallProtocolInterface;\r
-  EFI_REINSTALL_PROTOCOL_INTERFACE  ReinstallProtocolInterface;\r
-  EFI_UNINSTALL_PROTOCOL_INTERFACE  UninstallProtocolInterface;\r
-  EFI_HANDLE_PROTOCOL               HandleProtocol;\r
-  EFI_HANDLE_PROTOCOL               PcHandleProtocol;\r
-  EFI_REGISTER_PROTOCOL_NOTIFY      RegisterProtocolNotify;\r
-  EFI_LOCATE_HANDLE                 LocateHandle;\r
-  EFI_LOCATE_DEVICE_PATH            LocateDevicePath;\r
-  EFI_INSTALL_CONFIGURATION_TABLE   InstallConfigurationTable;\r
-\r
-  //\r
-  // Image Services\r
-  //\r
-  EFI_IMAGE_LOAD                    LoadImage;\r
-  EFI_IMAGE_START                   StartImage;\r
-  EFI_EXIT                          Exit;\r
-  EFI_IMAGE_UNLOAD                  UnloadImage;\r
-  EFI_EXIT_BOOT_SERVICES            ExitBootServices;\r
-\r
-  //\r
-  // Miscellaneous Services\r
-  //\r
-  EFI_GET_NEXT_MONOTONIC_COUNT      GetNextMonotonicCount;\r
-  EFI_STALL                         Stall;\r
-  EFI_SET_WATCHDOG_TIMER            SetWatchdogTimer;\r
-\r
-  //\r
-  // DriverSupport Services\r
-  //\r
-  EFI_CONNECT_CONTROLLER            ConnectController;\r
-  EFI_DISCONNECT_CONTROLLER         DisconnectController;\r
-\r
-  //\r
-  // Open and Close Protocol Services\r
-  //\r
-  EFI_OPEN_PROTOCOL                 OpenProtocol;\r
-  EFI_CLOSE_PROTOCOL                CloseProtocol;\r
-  EFI_OPEN_PROTOCOL_INFORMATION     OpenProtocolInformation;\r
-\r
-  //\r
-  // Library Services\r
-  //\r
-  EFI_PROTOCOLS_PER_HANDLE          ProtocolsPerHandle;\r
-  EFI_LOCATE_HANDLE_BUFFER          LocateHandleBuffer;\r
-  EFI_LOCATE_PROTOCOL               LocateProtocol;\r
-  EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES    InstallMultipleProtocolInterfaces;\r
-  EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES  UninstallMultipleProtocolInterfaces;\r
-\r
-  //\r
-  // 32-bit CRC Services\r
-  //\r
-  EFI_CALCULATE_CRC32               CalculateCrc32;\r
-\r
-  //\r
-  // Miscellaneous Services\r
-  //\r
-  EFI_COPY_MEM                      CopyMem;\r
-  EFI_SET_MEM                       SetMem;\r
-} FRAMEWORK_EFI_BOOT_SERVICES;\r
-\r
-#define EFI_EVENT_RUNTIME_CONTEXT       0x20000000\r
-#define EFI_EVENT_NOTIFY_SIGNAL_ALL     0x00000400\r
-#define EFI_EVENT_SIGNAL_READY_TO_BOOT  0x00000203\r
-#define EFI_EVENT_SIGNAL_LEGACY_BOOT    0x00000204\r
-\r
-#endif\r
-\r
diff --git a/IntelFrameworkPkg/Include/Framework/FirmwareVolumeHeader.h b/IntelFrameworkPkg/Include/Framework/FirmwareVolumeHeader.h
deleted file mode 100644 (file)
index e2b5a28..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-/** @file\r
-  Defines the data structure that is the volume header found at the beginning of\r
-  all firmware volumes that are either memory mapped or have an\r
-  associated FirmwareVolumeBlock protocol.\r
-\r
-Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  These definitions are from the Firmware Volume Block Spec 0.9.\r
-\r
-**/\r
-\r
-#ifndef __EFI_FIRMWARE_VOLUME_HEADER_H__\r
-#define __EFI_FIRMWARE_VOLUME_HEADER_H__\r
-\r
-///\r
-/// Firmware Volume Block Attributes bit definitions.\r
-///@{\r
-#define EFI_FVB_READ_DISABLED_CAP   0x00000001\r
-#define EFI_FVB_READ_ENABLED_CAP    0x00000002\r
-#define EFI_FVB_READ_STATUS         0x00000004\r
-\r
-#define EFI_FVB_WRITE_DISABLED_CAP  0x00000008\r
-#define EFI_FVB_WRITE_ENABLED_CAP   0x00000010\r
-#define EFI_FVB_WRITE_STATUS        0x00000020\r
-\r
-#define EFI_FVB_LOCK_CAP            0x00000040\r
-#define EFI_FVB_LOCK_STATUS         0x00000080\r
-\r
-#define EFI_FVB_STICKY_WRITE        0x00000200\r
-#define EFI_FVB_MEMORY_MAPPED       0x00000400\r
-#define EFI_FVB_ERASE_POLARITY      0x00000800\r
-\r
-#define EFI_FVB_ALIGNMENT_CAP       0x00008000\r
-#define EFI_FVB_ALIGNMENT_2         0x00010000\r
-#define EFI_FVB_ALIGNMENT_4         0x00020000\r
-#define EFI_FVB_ALIGNMENT_8         0x00040000\r
-#define EFI_FVB_ALIGNMENT_16        0x00080000\r
-#define EFI_FVB_ALIGNMENT_32        0x00100000\r
-#define EFI_FVB_ALIGNMENT_64        0x00200000\r
-#define EFI_FVB_ALIGNMENT_128       0x00400000\r
-#define EFI_FVB_ALIGNMENT_256       0x00800000\r
-#define EFI_FVB_ALIGNMENT_512       0x01000000\r
-#define EFI_FVB_ALIGNMENT_1K        0x02000000\r
-#define EFI_FVB_ALIGNMENT_2K        0x04000000\r
-#define EFI_FVB_ALIGNMENT_4K        0x08000000\r
-#define EFI_FVB_ALIGNMENT_8K        0x10000000\r
-#define EFI_FVB_ALIGNMENT_16K       0x20000000\r
-#define EFI_FVB_ALIGNMENT_32K       0x40000000\r
-#define EFI_FVB_ALIGNMENT_64K       0x80000000\r
-///@}\r
-\r
-/// This is a simple macro defined as the set of all FV Block Attributes signifying capabilities.\r
-#define EFI_FVB_CAPABILITIES  ( EFI_FVB_READ_DISABLED_CAP  | \\r
-                                EFI_FVB_READ_ENABLED_CAP   | \\r
-                                EFI_FVB_WRITE_DISABLED_CAP | \\r
-                                EFI_FVB_WRITE_ENABLED_CAP  | \\r
-                                EFI_FVB_LOCK_CAP \\r
-                              )\r
-\r
-/** A parameterized macro defining a boolean expression that tests the state of a particular bit.\r
-  *\r
-  * @param FvbAttributes  Indicates a test for CLEAR if EFI_FVB_ERASE_POLARITY is 1, else test for SET.\r
-  *\r
-  * @param TestAttributes The set of bits to test.\r
-  *\r
-  * @param Bit            A value indicating the bit(s) to test.\r
-  *                       If multiple bits are set, the logical OR of their tests is the expression's value.\r
-**/\r
-#define EFI_TEST_FFS_ATTRIBUTES_BIT( FvbAttributes, TestAttributes, Bit) \\r
-    ((BOOLEAN) \\r
-      ((FvbAttributes & EFI_FVB_ERASE_POLARITY) ? (((~TestAttributes) & Bit) == Bit) : ((TestAttributes & Bit) == Bit)) \\r
-    )\r
-\r
-/// A simple macro defined as the set of all FV Block Attribute bits that indicate status.\r
-#define EFI_FVB_STATUS    (EFI_FVB_READ_STATUS | EFI_FVB_WRITE_STATUS | EFI_FVB_LOCK_STATUS)\r
-\r
-#endif  /* __EFI_FIRMWARE_VOLUME_HEADER_H__ */\r
diff --git a/IntelFrameworkPkg/Include/Framework/FirmwareVolumeImageFormat.h b/IntelFrameworkPkg/Include/Framework/FirmwareVolumeImageFormat.h
deleted file mode 100644 (file)
index c77e39b..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/** @file\r
-  This file defines the data structures that are architecturally defined for file\r
-  images loaded via the FirmwareVolume protocol.  The Firmware Volume specification\r
-  is the basis for these definitions.\r
-\r
-Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  These definitions are from the Firmware Volume Spec 0.9.\r
-\r
-**/\r
-\r
-#ifndef __FIRMWARE_VOLUME_IMAGE_FORMAT_H__\r
-#define __FIRMWARE_VOLUME_IMAGE_FORMAT_H__\r
-\r
-//\r
-// Bit values for AuthenticationStatus\r
-//\r
-#define EFI_AGGREGATE_AUTH_STATUS_PLATFORM_OVERRIDE 0x000001\r
-#define EFI_AGGREGATE_AUTH_STATUS_IMAGE_SIGNED      0x000002\r
-#define EFI_AGGREGATE_AUTH_STATUS_NOT_TESTED        0x000004\r
-#define EFI_AGGREGATE_AUTH_STATUS_TEST_FAILED       0x000008\r
-#define EFI_AGGREGATE_AUTH_STATUS_ALL               0x00000f\r
-\r
-#define EFI_LOCAL_AUTH_STATUS_PLATFORM_OVERRIDE     0x010000\r
-#define EFI_LOCAL_AUTH_STATUS_IMAGE_SIGNED          0x020000\r
-#define EFI_LOCAL_AUTH_STATUS_NOT_TESTED            0x040000\r
-#define EFI_LOCAL_AUTH_STATUS_TEST_FAILED           0x080000\r
-#define EFI_LOCAL_AUTH_STATUS_ALL                   0x0f0000\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Framework/FrameworkInternalFormRepresentation.h b/IntelFrameworkPkg/Include/Framework/FrameworkInternalFormRepresentation.h
deleted file mode 100644 (file)
index 04cbae1..0000000
+++ /dev/null
@@ -1,397 +0,0 @@
-/** @file\r
-  This file defines the encoding for the VFR (Visual Form Representation) language.\r
-  Framework IFR is primarily consumed by the EFI presentation engine, and produced by EFI\r
-  internal application and drivers as well as all add-in card option-ROM drivers\r
-\r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  These definitions are from the Framework Specification HII 0.92.\r
-\r
-**/\r
-\r
-#ifndef __FRAMEWORK_INTERNAL_FORMREPRESENTATION_H__\r
-#define __FRAMEWORK_INTERNAL_FORMREPRESENTATION_H__\r
-\r
-typedef UINT16  STRING_REF;\r
-\r
-//\r
-// IFR Op codes\r
-//\r
-#define FRAMEWORK_EFI_IFR_FORM_OP                 0x01\r
-#define FRAMEWORK_EFI_IFR_SUBTITLE_OP             0x02\r
-#define FRAMEWORK_EFI_IFR_TEXT_OP                 0x03\r
-#define EFI_IFR_GRAPHIC_OP                        0x04\r
-#define FRAMEWORK_EFI_IFR_ONE_OF_OP               0x05\r
-#define FRAMEWORK_EFI_IFR_CHECKBOX_OP             0x06\r
-#define FRAMEWORK_EFI_IFR_NUMERIC_OP              0x07\r
-#define FRAMEWORK_EFI_IFR_PASSWORD_OP             0x08\r
-#define FRAMEWORK_EFI_IFR_ONE_OF_OPTION_OP        0x09  ///< ONEOF OPTION field.\r
-#define FRAMEWORK_EFI_IFR_SUPPRESS_IF_OP          0x0A\r
-#define EFI_IFR_END_FORM_OP                       0x0B\r
-#define EFI_IFR_HIDDEN_OP                         0x0C\r
-#define EFI_IFR_END_FORM_SET_OP                   0x0D\r
-#define FRAMEWORK_EFI_IFR_FORM_SET_OP             0x0E\r
-#define FRAMEWORK_EFI_IFR_REF_OP                  0x0F\r
-#define EFI_IFR_END_ONE_OF_OP                     0x10\r
-#define FRAMEWORK_EFI_IFR_END_OP                  EFI_IFR_END_ONE_OF_OP\r
-#define FRAMEWORK_EFI_IFR_INCONSISTENT_IF_OP      0x11\r
-#define FRAMEWORK_EFI_IFR_EQ_ID_VAL_OP            0x12\r
-#define FRAMEWORK_EFI_IFR_EQ_ID_ID_OP             0x13\r
-#define FRAMEWORK_EFI_IFR_EQ_ID_LIST_OP           0x14\r
-#define FRAMEWORK_EFI_IFR_AND_OP                  0x15\r
-#define FRAMEWORK_EFI_IFR_OR_OP                   0x16\r
-#define FRAMEWORK_EFI_IFR_NOT_OP                  0x17\r
-#define EFI_IFR_END_IF_OP                         0x18  ///< For endif of inconsistentif, suppressif, grayoutif.\r
-#define EFI_IFR_GRAYOUT_IF_OP                     0x19\r
-#define FRAMEWORK_EFI_IFR_DATE_OP                 0x1A\r
-#define FRAMEWORK_EFI_IFR_TIME_OP                 0x1B\r
-#define FRAMEWORK_EFI_IFR_STRING_OP               0x1C\r
-#define EFI_IFR_LABEL_OP                          0x1D\r
-#define EFI_IFR_SAVE_DEFAULTS_OP                  0x1E\r
-#define EFI_IFR_RESTORE_DEFAULTS_OP               0x1F\r
-#define EFI_IFR_BANNER_OP                         0x20\r
-#define EFI_IFR_INVENTORY_OP                      0x21\r
-#define EFI_IFR_EQ_VAR_VAL_OP                     0x22\r
-#define FRAMEWORK_EFI_IFR_ORDERED_LIST_OP         0x23\r
-#define FRAMEWORK_EFI_IFR_VARSTORE_OP             0x24\r
-#define EFI_IFR_VARSTORE_SELECT_OP                0x25\r
-#define EFI_IFR_VARSTORE_SELECT_PAIR_OP           0x26\r
-#define EFI_IFR_LAST_OPCODE                       EFI_IFR_VARSTORE_SELECT_PAIR_OP\r
-#define EFI_IFR_OEM_OP                            0xFE\r
-#define EFI_IFR_NV_ACCESS_COMMAND                 0xFF\r
-\r
-//\r
-// Define values for the flags fields in some VFR opcodes. These are\r
-// bitmasks.\r
-//\r
-#define EFI_IFR_FLAG_DEFAULT            0x01\r
-#define EFI_IFR_FLAG_MANUFACTURING      0x02\r
-#define EFI_IFR_FLAG_INTERACTIVE        0x04\r
-#define EFI_IFR_FLAG_NV_ACCESS          0x08\r
-#define EFI_IFR_FLAG_RESET_REQUIRED     0x10\r
-#define EFI_IFR_FLAG_LATE_CHECK         0x20\r
-\r
-#define EFI_NON_DEVICE_CLASS              0x00  ///< Useful when you do not want something in the Device Manager.\r
-#define EFI_DISK_DEVICE_CLASS             0x01\r
-#define EFI_VIDEO_DEVICE_CLASS            0x02\r
-#define EFI_NETWORK_DEVICE_CLASS          0x04\r
-#define EFI_INPUT_DEVICE_CLASS            0x08\r
-#define EFI_ON_BOARD_DEVICE_CLASS         0x10\r
-#define EFI_OTHER_DEVICE_CLASS            0x20\r
-\r
-#define EFI_SETUP_APPLICATION_SUBCLASS    0x00\r
-#define EFI_GENERAL_APPLICATION_SUBCLASS  0x01\r
-#define EFI_FRONT_PAGE_SUBCLASS           0x02\r
-#define EFI_SINGLE_USE_SUBCLASS           0x03  ///< Used to display a single entity ,and then exit.\r
-\r
-///\r
-/// Used to flag dynamically created op-codes. This is meaningful to the IFR Library set\r
-/// and the browser because we need to distinguish between compiled NV map data and created data.\r
-/// We do not allow new entries to be created in the NV map dynamically, but we do need\r
-/// to display this information correctly.  To dynamically create op-codes and assume that their\r
-/// data will be saved, ensure that the NV starting location they refer to is pre-defined in the\r
-/// NV map.\r
-///\r
-#define EFI_IFR_FLAG_CREATED  128\r
-\r
-\r
-#pragma pack(1)\r
-//\r
-// IFR Structure definitions\r
-//\r
-typedef struct {\r
-  UINT8                             OpCode;\r
-  UINT8                             Length;\r
-} FRAMEWORK_EFI_IFR_OP_HEADER;\r
-\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_OP_HEADER       Header;\r
-  EFI_GUID                          Guid;\r
-  STRING_REF                        FormSetTitle;\r
-  STRING_REF                        Help;\r
-  EFI_PHYSICAL_ADDRESS              CallbackHandle;\r
-  UINT16                            Class;\r
-  UINT16                            SubClass;\r
-  UINT16                            NvDataSize; ///< Set once; the size of the NV data as defined in the script.\r
-} FRAMEWORK_EFI_IFR_FORM_SET;\r
-\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_OP_HEADER       Header;\r
-  UINT16                            FormId;\r
-  STRING_REF                        FormTitle;\r
-} FRAMEWORK_EFI_IFR_FORM;\r
-\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_OP_HEADER       Header;\r
-  UINT16                            LabelId;\r
-} EFI_IFR_LABEL;\r
-\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_OP_HEADER       Header;\r
-  STRING_REF                        SubTitle;\r
-} FRAMEWORK_EFI_IFR_SUBTITLE;\r
-\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_OP_HEADER       Header;\r
-  STRING_REF                        Help;\r
-  STRING_REF                        Text;\r
-  STRING_REF                        TextTwo;\r
-  UINT8                             Flags;  ///< This is included solely for purposes of interactive/dynamic support.\r
-  UINT16                            Key;    ///< The value to be passed to the caller to identify this particular op-code.\r
-} FRAMEWORK_EFI_IFR_TEXT;\r
-\r
-//\r
-// goto\r
-//\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_OP_HEADER       Header;\r
-  UINT16                            FormId;\r
-  STRING_REF                        Prompt;\r
-  STRING_REF                        Help;   ///< The string Token for the context-help.\r
-  UINT8                             Flags;  ///< This is included solely for purposes of interactive/dynamic support.\r
-  UINT16                            Key;    ///< The value to be passed to the caller to identify this particular op-code.\r
-} FRAMEWORK_EFI_IFR_REF;\r
-\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_OP_HEADER       Header;\r
-} EFI_IFR_END_FORM;\r
-\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_OP_HEADER       Header;\r
-} EFI_IFR_END_FORM_SET;\r
-\r
-//\r
-// Also notice that the IFR_ONE_OF and IFR_CHECK_BOX are identical in structure......\r
-// code assumes this to be true, if this ever changes we need to revisit the InitializeTagStructures code\r
-//\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_OP_HEADER       Header;\r
-  UINT16                            QuestionId; ///< The ID designating what the question is about...\r
-  UINT8                             Width;      ///< The Size of the Data being saved.\r
-  STRING_REF                        Prompt;     ///< The String Token for the Prompt.\r
-  STRING_REF                        Help;       ///< The string Token for the context-help.\r
-} FRAMEWORK_EFI_IFR_ONE_OF;\r
-\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_OP_HEADER       Header;\r
-  UINT16                            QuestionId; ///< The offset in NV for storage of the data.\r
-  UINT8                             MaxEntries; ///< The maximum number of options in the ordered list (=size of NVStore).\r
-  STRING_REF                        Prompt;     ///< The string token for the prompt.\r
-  STRING_REF                        Help;       ///< The string token for the context-help.\r
-} FRAMEWORK_EFI_IFR_ORDERED_LIST;\r
-\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_OP_HEADER       Header;\r
-  UINT16                            QuestionId; ///< The ID designating what the question is about...\r
-  UINT8                             Width;      ///< The Size of the Data being saved.\r
-  STRING_REF                        Prompt;     ///< The String Token for the Prompt.\r
-  STRING_REF                        Help;       ///< The string Token for the context-help.\r
-  UINT8                             Flags;      ///< If non-zero, it means that it is the default option.\r
-  UINT16                            Key;        ///< Value to be passed to caller to identify this particular op-code.\r
-} FRAMEWORK_EFI_IFR_CHECKBOX, EFI_IFR_CHECK_BOX;\r
-\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_OP_HEADER       Header;\r
-  STRING_REF                        Option;     ///< The string token describing the option.\r
-  UINT16                            Value;      ///< The value associated with this option that is stored in the NVRAM.\r
-  UINT8                             Flags;      ///< If non-zero, it means that it is the default option.\r
-  UINT16                            Key;        ///< Value to be passed to caller to identify this particular op-code.\r
-} FRAMEWORK_EFI_IFR_ONE_OF_OPTION;\r
-\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_OP_HEADER       Header;\r
-  UINT16                            QuestionId; ///< The ID designating what the question is about...\r
-  UINT8                             Width;      ///< The Size of the Data being saved.\r
-  STRING_REF                        Prompt;     ///< The String Token for the Prompt.\r
-  STRING_REF                        Help;       ///< The string Token for the context-help.\r
-  UINT8                             Flags;      ///< This is included solely for purposes of interactive/dynamic support.\r
-  UINT16                            Key;        ///< The value to be passed to caller to identify this particular op-code.\r
-  UINT16                            Minimum;\r
-  UINT16                            Maximum;\r
-  UINT16                            Step;       ///< Zero means manual input. Otherwise, arrow selection is called for.\r
-  UINT16                            Default;\r
-} FRAMEWORK_EFI_IFR_NUMERIC;\r
-\r
-//\r
-// There is an interesting twist with regards to Time and Date.  This is one of the few items which can accept input\r
-// from a user, and may or may not need to use storage in the NVRAM space.  The decided method for determining\r
-// if NVRAM space will be used (only for a TimeOp or DateOp) is:  If .QuestionId == 0 && .Width == 0 (normally an\r
-// impossibility) then use system resources to store the data away and not NV resources.  In other words, the setup\r
-// engine will call gRT->SetTime, and gRT->SetDate for the saving of data, and the values displayed will be from the\r
-// gRT->GetXXXX series of calls.\r
-//\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_NUMERIC         Hour;\r
-  FRAMEWORK_EFI_IFR_NUMERIC         Minute;\r
-  FRAMEWORK_EFI_IFR_NUMERIC         Second;\r
-} FRAMEWORK_EFI_IFR_TIME;\r
-\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_NUMERIC         Year;\r
-  FRAMEWORK_EFI_IFR_NUMERIC         Month;\r
-  FRAMEWORK_EFI_IFR_NUMERIC         Day;\r
-} FRAMEWORK_EFI_IFR_DATE;\r
-\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_OP_HEADER       Header;\r
-  UINT16                            QuestionId;///< The ID designating what the question is about...\r
-  UINT8                             Width;     ///< The Size of the Data being saved.\r
-  STRING_REF                        Prompt;    ///< The String Token for the Prompt.\r
-  STRING_REF                        Help;      ///< The string Token for the context-help.\r
-  UINT8                             Flags;     ///< This is included solely for purposes of interactive/dynamic support.\r
-  UINT16                            Key;       ///< The value to be passed to caller to identify this particular op-code.\r
-  UINT8                             MinSize;   ///< Minimum allowable sized password.\r
-  UINT8                             MaxSize;   ///< Maximum allowable sized password.\r
-  UINT16                            Encoding;\r
-} FRAMEWORK_EFI_IFR_PASSWORD;\r
-\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_OP_HEADER       Header;\r
-  UINT16                            QuestionId; ///< The ID designating what the question is about...\r
-  UINT8                             Width;      ///< The Size of the Data being saved.\r
-  STRING_REF                        Prompt;     ///< The String Token for the Prompt.\r
-  STRING_REF                        Help;       ///< The string Token for the context-help.\r
-  UINT8                             Flags;      ///< This is included solely for purposes of interactive/dynamic support.\r
-  UINT16                            Key;        ///< The value to be passed to caller to identify this particular op-code.\r
-  UINT8                             MinSize;    ///< Minimum allowable sized password.\r
-  UINT8                             MaxSize;    ///< Maximum allowable sized password.\r
-} FRAMEWORK_EFI_IFR_STRING;\r
-\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_OP_HEADER       Header;\r
-} EFI_IFR_END_ONE_OF;\r
-\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_OP_HEADER       Header;\r
-  UINT16                            Value;\r
-  UINT16                            Key;\r
-} EFI_IFR_HIDDEN;\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// The following defintion may not comply with Framework Specification HII 0.92. To\r
-/// keep the inconsistant is for implementation needed.\r
-///@{\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_OP_HEADER       Header;\r
-  UINT8                             Flags;\r
-} EFI_IFR_SUPPRESS;\r
-\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_OP_HEADER       Header;\r
-  UINT8                             Flags;\r
-} EFI_IFR_GRAY_OUT;\r
-\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_OP_HEADER       Header;\r
-  STRING_REF                        Popup;\r
-  UINT8                             Flags;\r
-} EFI_IFR_INCONSISTENT;\r
-\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_OP_HEADER       Header;\r
-  UINT16                            QuestionId;   ///< The offset into variable storage.\r
-  UINT8                             Width;        ///< The size of variable storage.\r
-  UINT16                            Value;        ///< The value to compare against.\r
-} FRAMEWORK_EFI_IFR_EQ_ID_VAL;\r
-\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_OP_HEADER       Header;\r
-  UINT16                            QuestionId;   ///< The offset into variable storage.\r
-  UINT8                             Width;        ///< The size of variable storage.\r
-  UINT16                            ListLength;\r
-  UINT16                            ValueList[1];\r
-} FRAMEWORK_EFI_IFR_EQ_ID_LIST;\r
-\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_OP_HEADER       Header;\r
-  UINT16                            QuestionId1;  ///< The offset into variable storage for first value to compare.\r
-  UINT8                             Width;        ///< The size of variable storage (must be same for both).\r
-  UINT16                            QuestionId2;  ///< The offset into variable storage for second value to compare.\r
-} FRAMEWORK_EFI_IFR_EQ_ID_ID;\r
-\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_OP_HEADER       Header;\r
-  UINT16                            VariableId;   ///< The offset into variable storage.\r
-  UINT16                            Value;        ///< The value to compare against.\r
-} EFI_IFR_EQ_VAR_VAL;\r
-///@}\r
-\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_OP_HEADER       Header;\r
-} FRAMEWORK_EFI_IFR_AND;\r
-\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_OP_HEADER       Header;\r
-} FRAMEWORK_EFI_IFR_OR;\r
-\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_OP_HEADER       Header;\r
-} FRAMEWORK_EFI_IFR_NOT;\r
-\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_OP_HEADER       Header;\r
-} EFI_IFR_END_EXPR, EFI_IFR_END_IF;\r
-\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_OP_HEADER       Header;\r
-  UINT16                            FormId;\r
-  STRING_REF                        Prompt;\r
-  STRING_REF                        Help;\r
-  UINT8                             Flags;\r
-  UINT16                            Key;\r
-} EFI_IFR_SAVE_DEFAULTS;\r
-\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_OP_HEADER       Header;\r
-  STRING_REF                        Help;\r
-  STRING_REF                        Text;\r
-  STRING_REF                        TextTwo;    ///< Optional text.\r
-} EFI_IFR_INVENTORY;\r
-\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_OP_HEADER       Header;\r
-  EFI_GUID                          Guid;       ///< GUID for the variable.\r
-  UINT16                            VarId;      ///< The variable store ID, as referenced elsewhere in the form.\r
-  UINT16                            Size;       ///< The size of the variable storage.\r
-} FRAMEWORK_EFI_IFR_VARSTORE;\r
-\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_OP_HEADER       Header;\r
-  UINT16                            VarId;      ///< The variable store ID, as referenced elsewhere in the form.\r
-} EFI_IFR_VARSTORE_SELECT;\r
-\r
-///\r
-/// Used for the ideqid VFR statement where two variable stores may be referenced in the\r
-/// same VFR statement.\r
-/// A browser should treat this as an FRAMEWORK_EFI_IFR_VARSTORE_SELECT statement and assume that all following\r
-/// IFR opcodes use the VarId as defined here.\r
-///\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_OP_HEADER       Header;\r
-  UINT16                            VarId;          ///< The variable store ID, as referenced elsewhere in the form.\r
-  UINT16                            SecondaryVarId; ///< The variable store ID, as referenced elsewhere in the form.\r
-} EFI_IFR_VARSTORE_SELECT_PAIR;\r
-\r
-///\r
-/// Save defaults and restore defaults have same structure.\r
-///\r
-#define EFI_IFR_RESTORE_DEFAULTS  EFI_IFR_SAVE_DEFAULTS\r
-\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_OP_HEADER       Header;\r
-  STRING_REF                        Title;        ///< The string token for the banner title.\r
-  UINT16                            LineNumber;   ///< 1-based line number.\r
-  UINT8                             Alignment;    ///< Left, center, or right-aligned.\r
-} EFI_IFR_BANNER;\r
-\r
-#define EFI_IFR_BANNER_ALIGN_LEFT   0\r
-#define EFI_IFR_BANNER_ALIGN_CENTER 1\r
-#define EFI_IFR_BANNER_ALIGN_RIGHT  2\r
-#define EFI_IFR_BANNER_TIMEOUT      0xFF\r
-\r
-#pragma pack()\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Framework/Hob.h b/IntelFrameworkPkg/Include/Framework/Hob.h
deleted file mode 100644 (file)
index f6a71fa..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/** @file\r
-  This file defines the data structures per HOB specification v0.9.\r
-\r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  These definitions are from the HOB Spec 0.9 that were not adopted by the PI specifications.\r
-\r
-**/\r
-\r
-#ifndef _HOB_H_\r
-#define _HOB_H_\r
-\r
-///\r
-/// Capsule volume HOB -- identical to a firmware volume.\r
-/// This macro is defined to comply with the hob Framework Spec. And the marco was\r
-/// retired in the PI1.0 specification.\r
-///\r
-#define EFI_HOB_TYPE_CV           0x0008\r
-\r
-typedef struct {\r
-  EFI_HOB_GENERIC_HEADER            Header;\r
-  EFI_PHYSICAL_ADDRESS              BaseAddress;\r
-  UINT64                            Length;\r
-} EFI_HOB_CAPSULE_VOLUME;\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Framework/PeiCis.h b/IntelFrameworkPkg/Include/Framework/PeiCis.h
deleted file mode 100644 (file)
index d73161a..0000000
+++ /dev/null
@@ -1,205 +0,0 @@
-/** @file\r
-  The Include file for definitions in the Intel Platform Innovation Framework for EFI\r
-  Pre-EFI Initialization Core Interface Specification (PEI CIS) Version 0.91.\r
-\r
-Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-**/\r
-\r
-#ifndef __PEICIS_H__\r
-#define __PEICIS_H__\r
-\r
-#include <Ppi/PciCfg.h>\r
-//\r
-// Framework PEI Specification Revision information\r
-//\r
-#define FRAMEWORK_PEI_SPECIFICATION_MAJOR_REVISION    0\r
-#define FRAMEWORK_PEI_SPECIFICATION_MINOR_REVISION    91\r
-\r
-\r
-//\r
-// PEI services signature and Revision defined in Framework PEI spec\r
-//\r
-#define FRAMEWORK_PEI_SERVICES_SIGNATURE               0x5652455320494550ULL\r
-#define FRAMEWORK_PEI_SERVICES_REVISION               ((FRAMEWORK_PEI_SPECIFICATION_MAJOR_REVISION<<16) | (FRAMEWORK_PEI_SPECIFICATION_MINOR_REVISION))\r
-\r
-\r
-\r
-typedef struct _FRAMEWORK_EFI_PEI_SERVICES FRAMEWORK_EFI_PEI_SERVICES;\r
-\r
-/**\r
-  The PEI Dispatcher will invoke each PEIM one time.  During this pass, the PEI\r
-  Dispatcher will pass control to the PEIM at the AddressOfEntryPoint in the PE Header.\r
-\r
-  @param  FfsHeader        The pointer to the FFS file header.\r
-  @param  PeiServices      Describes the list of possible PEI Services.\r
-\r
-  @return Status code\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEIM_ENTRY_POINT)(\r
-  IN EFI_FFS_FILE_HEADER            *FfsHeader,\r
-  IN EFI_PEI_SERVICES               **PeiServices\r
-  );\r
-\r
-/**\r
-  This service abstracts the capability of the PEI\r
-  Foundation to discover instances of firmware volumes in the system.\r
-  Given the input file pointer, this service searches for the next\r
-  matching file in the Firmware File System (FFS) volume.\r
-\r
-  @param  PeiServices      An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.\r
-  @param  Instance         This instance of the firmware volume to find. The value 0 is the Boot Firmware Volume (BFV).\r
-  @param  FwVolHeader      The pointer to the firmware volume header of the volume to return.\r
-\r
-  @retval EFI_SUCCESS           The volume was found.\r
-  @retval EFI_NOT_FOUND         The volume was not found.\r
-  @retval EFI_INVALID_PARAMETER FwVolHeader is NULL\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_FFS_FIND_NEXT_VOLUME)(\r
-  IN FRAMEWORK_EFI_PEI_SERVICES     **PeiServices,\r
-  IN UINTN                          Instance,\r
-  IN OUT EFI_FIRMWARE_VOLUME_HEADER **FwVolHeader\r
-  );\r
-\r
-/**\r
-  This service abstracts the capability of the PEI\r
-  Foundation to discover instances of firmware files in the system.\r
-  Given the input file pointer, this service searches for the next matching\r
-  file in the Firmware File System (FFS) volume.\r
-\r
-  @param  PeiServices      An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.\r
-  @param  SearchType       A filter to find files only of this type.\r
-  @param  FwVolHeader      The pointer to the firmware volume header of the volume to search. This parameter\r
-                           must point to a valid FFS volume.\r
-  @param  FileHeader       The pointer to the current file from which to begin searching. Upon return this pointer will be\r
-                           updated to reflect the file found.\r
-\r
-  @retval EFI_SUCCESS      The file was found.\r
-  @retval EFI_NOT_FOUND    The file was not found.\r
-  @retval EFI_NOT_FOUND    The header checksum was not zero.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_FFS_FIND_NEXT_FILE)(\r
-  IN FRAMEWORK_EFI_PEI_SERVICES     **PeiServices,\r
-  IN EFI_FV_FILETYPE                SearchType,\r
-  IN EFI_FIRMWARE_VOLUME_HEADER     *FwVolHeader,\r
-  IN OUT EFI_FFS_FILE_HEADER        **FileHeader\r
-  );\r
-\r
-/**\r
-  Given the input file pointer, this service searches for the next\r
-  matching file in the Firmware File System (FFS) volume.\r
-\r
-  @param  PeiServices      An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.\r
-  @param  SectionType      The value of the section type to find.\r
-  @param  FfsFileHeader    A pointer to the file header that contains the set of sections to be searched.\r
-  @param  SectionData      A pointer to the discovered section, if successful.\r
-\r
-  @retval EFI_SUCCESS      The section was found.\r
-  @retval EFI_NOT_FOUND    The section was not found.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_FFS_FIND_SECTION_DATA)(\r
-  IN FRAMEWORK_EFI_PEI_SERVICES     **PeiServices,\r
-  IN EFI_SECTION_TYPE               SectionType,\r
-  IN EFI_FFS_FILE_HEADER            *FfsFileHeader,\r
-  IN OUT VOID                       **SectionData\r
-  );\r
-\r
-///\r
-///  FRAMEWORK_EFI_PEI_SERVICES is a collection of functions whose implementation is provided by the PEI\r
-///  Foundation. The table may be located in the temporary or permanent memory, depending upon the capabilities\r
-///  and phase of execution of PEI.\r
-///\r
-///  These services fall into various classes, including the following:\r
-///  - Managing the boot mode.\r
-///  - Allocating both early and permanent memory.\r
-///  - Supporting the Firmware File System (FFS).\r
-///  - Abstracting the PPI database abstraction.\r
-///  - Creating Hand-Off Blocks (HOBs).\r
-///\r
-struct _FRAMEWORK_EFI_PEI_SERVICES {\r
-  EFI_TABLE_HEADER                  Hdr;\r
-  //\r
-  // PPI Functions\r
-  //\r
-  EFI_PEI_INSTALL_PPI               InstallPpi;\r
-  EFI_PEI_REINSTALL_PPI             ReInstallPpi;\r
-  EFI_PEI_LOCATE_PPI                LocatePpi;\r
-  EFI_PEI_NOTIFY_PPI                NotifyPpi;\r
-  //\r
-  // Boot Mode Functions\r
-  //\r
-  EFI_PEI_GET_BOOT_MODE             GetBootMode;\r
-  EFI_PEI_SET_BOOT_MODE             SetBootMode;\r
-  //\r
-  // HOB Functions\r
-  //\r
-  EFI_PEI_GET_HOB_LIST              GetHobList;\r
-  EFI_PEI_CREATE_HOB                CreateHob;\r
-  //\r
-  // Firmware Volume Functions\r
-  //\r
-  EFI_PEI_FFS_FIND_NEXT_VOLUME      FfsFindNextVolume;\r
-  EFI_PEI_FFS_FIND_NEXT_FILE        FfsFindNextFile;\r
-  EFI_PEI_FFS_FIND_SECTION_DATA     FfsFindSectionData;\r
-  //\r
-  // PEI Memory Functions\r
-  //\r
-  EFI_PEI_INSTALL_PEI_MEMORY        InstallPeiMemory;\r
-  EFI_PEI_ALLOCATE_PAGES            AllocatePages;\r
-  EFI_PEI_ALLOCATE_POOL             AllocatePool;\r
-  EFI_PEI_COPY_MEM                  CopyMem;\r
-  EFI_PEI_SET_MEM                   SetMem;\r
-  //\r
-  // (the following interfaces are installed by publishing PEIM)\r
-  // Status Code\r
-  //\r
-  EFI_PEI_REPORT_STATUS_CODE        ReportStatusCode;\r
-  //\r
-  // Reset\r
-  //\r
-  EFI_PEI_RESET_SYSTEM              ResetSystem;\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// In Framework Spec, PeiCis0.91, CpuIo and PciCfg are NOT pointers.\r
-  ///\r
-\r
-  //\r
-  // I/O Abstractions\r
-  //\r
-  EFI_PEI_CPU_IO_PPI                *CpuIo;\r
-  EFI_PEI_PCI_CFG_PPI               *PciCfg;\r
-};\r
-///\r
-/// Enumeration of reset types defined in the Framework Specification PeiCis.\r
-///\r
-typedef enum {\r
-  ///\r
-  /// Used to induce a system-wide reset. This sets all circuitry within the\r
-  /// system to its initial state.  This type of reset is asynchronous to system\r
-  /// operation and operates withgout regard to cycle boundaries.  EfiColdReset\r
-  /// is tantamount to a system power cycle.\r
-  ///\r
-  EfiPeiResetCold,\r
-  ///\r
-  /// Used to induce a system-wide initialization. The processors are set to their\r
-  /// initial state, and pending cycles are not corrupted.  If the system does\r
-  /// not support this reset type, then an EfiResetCold must be performed.\r
-  ///\r
-  EfiPeiResetWarm,\r
-} EFI_PEI_RESET_TYPE;\r
-\r
-#endif\r
-\r
diff --git a/IntelFrameworkPkg/Include/Framework/SmmCis.h b/IntelFrameworkPkg/Include/Framework/SmmCis.h
deleted file mode 100644 (file)
index 1ff1400..0000000
+++ /dev/null
@@ -1,551 +0,0 @@
-/** @file\r
-  Include file for definitions in the Intel Platform Innovation Framework for EFI\r
-  System Management Mode Core Interface Specification (SMM CIS) version 0.91.\r
-\r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-**/\r
-\r
-#ifndef _SMM_CIS_H_\r
-#define _SMM_CIS_H_\r
-\r
-//\r
-// Share some common definitions with PI SMM\r
-//\r
-#include <Pi/PiSmmCis.h>\r
-#include <Protocol/SmmCpuIo.h>\r
-\r
-typedef struct _EFI_SMM_SYSTEM_TABLE      EFI_SMM_SYSTEM_TABLE;\r
-\r
-//\r
-// SMM Base specification constant and types\r
-//\r
-#define EFI_SMM_SYSTEM_TABLE_REVISION (0 << 16) | (0x09)\r
-\r
-/**\r
-  Allocates pool memory from SMRAM for IA-32, or runtime memory for\r
-  the Itanium processor family.\r
-\r
-  @param  PoolType         The type of pool to allocate. The only supported type\r
-                           is EfiRuntimeServicesData.\r
-  @param  Size             The number of bytes to allocate from the pool.\r
-  @param  Buffer           A pointer to a pointer to the allocated buffer if the\r
-                           call succeeds.  Otherwise, undefined.\r
-\r
-  @retval EFI_SUCCESS           The requested number of bytes was allocated.\r
-  @retval EFI_OUT_OF_RESOURCES  The pool requested could not be allocated.\r
-  @retval EFI_UNSUPPORTED       In runtime.\r
-  @note  Inconsistent with specification here:\r
-         In Framework Spec, this definition is named EFI_SMM_ALLOCATE_POOL.\r
-         To avoid a naming conflict, the definition is renamed.\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMMCORE_ALLOCATE_POOL)(\r
-  IN EFI_MEMORY_TYPE                PoolType,\r
-  IN UINTN                          Size,\r
-  OUT VOID                          **Buffer\r
-  );\r
-\r
-/**\r
-  Returns pool memory to the system.\r
-\r
-  @param  Buffer           The pointer to the buffer to free.\r
-\r
-  @retval EFI_SUCCESS           The memory was returned to the system.\r
-  @retval EFI_INVALID_PARAMETER Buffer was invalid.\r
-  @retval EFI_UNSUPPORTED       In runtime.\r
-  @note  Inconsistent with specification here:\r
-         In Framework Spec, this definition is named EFI_SMM_FREE_POOL.\r
-         To avoid a naming conflict, the definition is renamed.\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMMCORE_FREE_POOL)(\r
-  IN VOID                   *Buffer\r
-  );\r
-\r
-/**\r
-  Allocates memory pages from the system.\r
-\r
-  @param  Type             The type of allocation to perform.\r
-  @param  MemoryType       The only supported type is EfiRuntimeServicesData.\r
-  @param  NumberofPages    The number of contiguous 4 KB pages to allocate.\r
-  @param  Memory           Pointer to a physical address. On input, the way in which\r
-                           the address is used depends on the value of Type. On output, the address\r
-                           is set to the base of the page range that was allocated.\r
-\r
-  @retval EFI_SUCCESS           The requested pages were allocated.\r
-  @retval EFI_OUT_OF_RESOURCES  The pages requested could not be allocated.\r
-  @retval EFI_NOT_FOUND         The requested pages could not be found.\r
-  @retval EFI_INVALID_PARAMETER Type is not AllocateAnyPages or AllocateMaxAddress\r
-                                or AllocateAddress. Or, MemoryType is in the range EfiMaxMemoryType..0x7FFFFFFF.\r
-  @note  Inconsistent with specification here:\r
-         In the Framework Spec, this definition is named EFI_SMM_ALLOCATE_PAGES.\r
-         To avoid a naming conflict, the definition here is renamed.\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMMCORE_ALLOCATE_PAGES)(\r
-  IN EFI_ALLOCATE_TYPE      Type,\r
-  IN EFI_MEMORY_TYPE        MemoryType,\r
-  IN UINTN                  NumberOfPages,\r
-  OUT EFI_PHYSICAL_ADDRESS  *Memory\r
-  );\r
-\r
-/**\r
-  Frees memory pages for the system.\r
-\r
-  @param  Memory           The base physical address of the pages to be freed.\r
-  @param  NumberOfPages    The number of contiguous 4 KB pages to free.\r
-\r
-  @retval EFI_SUCCESS           The requested memory pages were freed.\r
-  @retval EFI_INVALID_PARAMETER Memory is not a page-aligned address or NumberOfPages is invalid.\r
-  @retval EFI_NOT_FOUND         The requested memory pages were not allocated with SmmAllocatePages().\r
-\r
-  @note  Inconsistent with specification here:\r
-         In the Framework Spec, this definition is named EFI_SMM_FREE_PAGES.\r
-         To avoid a naming conflict, the definition here is renamed.\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMMCORE_FREE_PAGES)(\r
-  IN EFI_PHYSICAL_ADDRESS   Memory,\r
-  IN UINTN                  NumberOfPages\r
-  );\r
-\r
-///\r
-/// The processor save-state information for IA-32 processors. This information is important in that the\r
-/// SMM drivers may need to ascertain the state of the processor before invoking the SMI.\r
-///\r
-typedef struct {\r
-  ///\r
-  /// Reserved for future processors. As such, software should not attempt to interpret or\r
-  /// write to this region.\r
-  ///\r
-  UINT8                 Reserved1[248];\r
-  ///\r
-  /// The location of the processor SMBASE, which is the location where the processor\r
-  /// will pass control upon receipt of an SMI.\r
-  ///\r
-  UINT32                SMBASE;\r
-  ///\r
-  /// The revision of the SMM save state. This value is set by the processor.\r
-  ///\r
-  UINT32                SMMRevId;\r
-  ///\r
-  /// The value of the I/O restart field. Allows for restarting an in-process I/O instruction.\r
-  ///\r
-  UINT16                IORestart;\r
-  ///\r
-  /// Describes behavior that should be commenced in response to a halt instruction.\r
-  ///\r
-  UINT16                AutoHALTRestart;\r
-  ///\r
-  /// Reserved for future processors. As such, software should not attempt to interpret or\r
-  /// write to this region.\r
-  ///\r
-  UINT8                 Reserved2[164];\r
-\r
-  //\r
-  // Registers in IA-32 processors.\r
-  //\r
-  UINT32                ES;\r
-  UINT32                CS;\r
-  UINT32                SS;\r
-  UINT32                DS;\r
-  UINT32                FS;\r
-  UINT32                GS;\r
-  UINT32                LDTBase;\r
-  UINT32                TR;\r
-  UINT32                DR7;\r
-  UINT32                DR6;\r
-  UINT32                EAX;\r
-  UINT32                ECX;\r
-  UINT32                EDX;\r
-  UINT32                EBX;\r
-  UINT32                ESP;\r
-  UINT32                EBP;\r
-  UINT32                ESI;\r
-  UINT32                EDI;\r
-  UINT32                EIP;\r
-  UINT32                EFLAGS;\r
-  UINT32                CR3;\r
-  UINT32                CR0;\r
-} EFI_SMI_CPU_SAVE_STATE;\r
-\r
-///\r
-/// The processor save-state information for the Itanium processor family. This information is\r
-/// important in that the SMM drivers may need to ascertain the state of the processor before invoking\r
-/// the PMI. This structure is mandatory and must be 512 byte aligned.\r
-///\r
-typedef struct {\r
-  UINT64   reserved;\r
-  UINT64   r1;\r
-  UINT64   r2;\r
-  UINT64   r3;\r
-  UINT64   r4;\r
-  UINT64   r5;\r
-  UINT64   r6;\r
-  UINT64   r7;\r
-  UINT64   r8;\r
-  UINT64   r9;\r
-  UINT64   r10;\r
-  UINT64   r11;\r
-  UINT64   r12;\r
-  UINT64   r13;\r
-  UINT64   r14;\r
-  UINT64   r15;\r
-  UINT64   r16;\r
-  UINT64   r17;\r
-  UINT64   r18;\r
-  UINT64   r19;\r
-  UINT64   r20;\r
-  UINT64   r21;\r
-  UINT64   r22;\r
-  UINT64   r23;\r
-  UINT64   r24;\r
-  UINT64   r25;\r
-  UINT64   r26;\r
-  UINT64   r27;\r
-  UINT64   r28;\r
-  UINT64   r29;\r
-  UINT64   r30;\r
-  UINT64   r31;\r
-\r
-  UINT64   pr;\r
-\r
-  UINT64   b0;\r
-  UINT64   b1;\r
-  UINT64   b2;\r
-  UINT64   b3;\r
-  UINT64   b4;\r
-  UINT64   b5;\r
-  UINT64   b6;\r
-  UINT64   b7;\r
-\r
-  // application registers\r
-  UINT64   ar_rsc;\r
-  UINT64   ar_bsp;\r
-  UINT64   ar_bspstore;\r
-  UINT64   ar_rnat;\r
-\r
-  UINT64   ar_fcr;\r
-\r
-  UINT64   ar_eflag;\r
-  UINT64   ar_csd;\r
-  UINT64   ar_ssd;\r
-  UINT64   ar_cflg;\r
-  UINT64   ar_fsr;\r
-  UINT64   ar_fir;\r
-  UINT64   ar_fdr;\r
-\r
-  UINT64   ar_ccv;\r
-\r
-  UINT64   ar_unat;\r
-\r
-  UINT64   ar_fpsr;\r
-\r
-  UINT64   ar_pfs;\r
-  UINT64   ar_lc;\r
-  UINT64   ar_ec;\r
-\r
-  // control registers\r
-  UINT64   cr_dcr;\r
-  UINT64   cr_itm;\r
-  UINT64   cr_iva;\r
-  UINT64   cr_pta;\r
-  UINT64   cr_ipsr;\r
-  UINT64   cr_isr;\r
-  UINT64   cr_iip;\r
-  UINT64   cr_ifa;\r
-  UINT64   cr_itir;\r
-  UINT64   cr_iipa;\r
-  UINT64   cr_ifs;\r
-  UINT64   cr_iim;\r
-  UINT64   cr_iha;\r
-\r
-  // debug registers\r
-  UINT64   dbr0;\r
-  UINT64   dbr1;\r
-  UINT64   dbr2;\r
-  UINT64   dbr3;\r
-  UINT64   dbr4;\r
-  UINT64   dbr5;\r
-  UINT64   dbr6;\r
-  UINT64   dbr7;\r
-\r
-  UINT64   ibr0;\r
-  UINT64   ibr1;\r
-  UINT64   ibr2;\r
-  UINT64   ibr3;\r
-  UINT64   ibr4;\r
-  UINT64   ibr5;\r
-  UINT64   ibr6;\r
-  UINT64   ibr7;\r
-\r
-  // virtual registers\r
-  UINT64   int_nat;         // nat bits for R1-R31\r
-\r
-} EFI_PMI_SYSTEM_CONTEXT;\r
-\r
-///\r
-/// The processor save-state information for IA-32 and Itanium processors. This information is\r
-/// important in that the SMM drivers may need to ascertain the state of the processor before invoking\r
-/// the SMI or PMI.\r
-///\r
-typedef union {\r
-  ///\r
-  /// The processor save-state information for IA-32 processors.\r
-  ///\r
-  EFI_SMI_CPU_SAVE_STATE     Ia32SaveState;\r
-  ///\r
-  /// Note: Inconsistency with the Framework SMM CIS spec - Itanium save state not included.\r
-  ///\r
-  /// The processor save-state information for Itanium processors.\r
-  ///\r
-  /// EFI_PMI_SYSTEM_CONTEXT ItaniumSaveState;\r
-} EFI_SMM_CPU_SAVE_STATE;\r
-\r
-///\r
-/// The optional floating point save-state information for IA-32 processors. If the optional floating\r
-/// point save is indicated for any handler, the following data structure must be preserved.\r
-///\r
-typedef struct {\r
-  UINT16                Fcw;\r
-  UINT16                Fsw;\r
-  UINT16                Ftw;\r
-  UINT16                Opcode;\r
-  UINT32                Eip;\r
-  UINT16                Cs;\r
-  UINT16                Rsvd1;\r
-  UINT32                DataOffset;\r
-  UINT16                Ds;\r
-  UINT8                 Rsvd2[10];\r
-  UINT8                 St0Mm0[10], Rsvd3[6];\r
-  UINT8                 St0Mm1[10], Rsvd4[6];\r
-  UINT8                 St0Mm2[10], Rsvd5[6];\r
-  UINT8                 St0Mm3[10], Rsvd6[6];\r
-  UINT8                 St0Mm4[10], Rsvd7[6];\r
-  UINT8                 St0Mm5[10], Rsvd8[6];\r
-  UINT8                 St0Mm6[10], Rsvd9[6];\r
-  UINT8                 St0Mm7[10], Rsvd10[6];\r
-  UINT8                 Rsvd11[22*16];\r
-} EFI_SMI_OPTIONAL_FPSAVE_STATE;\r
-\r
-///\r
-/// The optional floating point save-state information for the Itanium processor family. If the optional\r
-/// floating point save is indicated for any handler, then this data structure must be preserved.\r
-///\r
-typedef struct {\r
-  UINT64   f2[2];\r
-  UINT64   f3[2];\r
-  UINT64   f4[2];\r
-  UINT64   f5[2];\r
-  UINT64   f6[2];\r
-  UINT64   f7[2];\r
-  UINT64   f8[2];\r
-  UINT64   f9[2];\r
-  UINT64   f10[2];\r
-  UINT64   f11[2];\r
-  UINT64   f12[2];\r
-  UINT64   f13[2];\r
-  UINT64   f14[2];\r
-  UINT64   f15[2];\r
-  UINT64   f16[2];\r
-  UINT64   f17[2];\r
-  UINT64   f18[2];\r
-  UINT64   f19[2];\r
-  UINT64   f20[2];\r
-  UINT64   f21[2];\r
-  UINT64   f22[2];\r
-  UINT64   f23[2];\r
-  UINT64   f24[2];\r
-  UINT64   f25[2];\r
-  UINT64   f26[2];\r
-  UINT64   f27[2];\r
-  UINT64   f28[2];\r
-  UINT64   f29[2];\r
-  UINT64   f30[2];\r
-  UINT64   f31[2];\r
-} EFI_PMI_OPTIONAL_FLOATING_POINT_CONTEXT;\r
-\r
-///\r
-/// The processor save-state information for IA-32 and Itanium processors. If the optional floating\r
-/// point save is indicated for any handler, then this data structure must be preserved.\r
-///\r
-typedef union {\r
-  ///\r
-  /// The optional floating point save-state information for IA-32 processors.\r
-  ///\r
-  EFI_SMI_OPTIONAL_FPSAVE_STATE             Ia32FpSave;\r
-  ///\r
-  /// The optional floating point save-state information for Itanium processors.\r
-  ///\r
-  EFI_PMI_OPTIONAL_FLOATING_POINT_CONTEXT   ItaniumFpSave;\r
-} EFI_SMM_FLOATING_POINT_SAVE_STATE;\r
-\r
-/**\r
-  This function is the main entry point for an SMM handler dispatch\r
-  or communicate-based callback.\r
-\r
-  @param  SmmImageHandle   A unique value returned by the SMM infrastructure\r
-                           in response to registration for a communicate-based callback or dispatch.\r
-  @param  CommunicationBuffer\r
-                           An optional buffer that will be populated\r
-                           by the SMM infrastructure in response to a non-SMM agent (preboot or runtime)\r
-                           invoking the EFI_SMM_BASE_PROTOCOL.Communicate() service.\r
-  @param  SourceSize       If CommunicationBuffer is non-NULL, this field\r
-                           indicates the size of the data payload in this buffer.\r
-\r
-  @return Status Code\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_HANDLER_ENTRY_POINT)(\r
-  IN EFI_HANDLE             SmmImageHandle,\r
-  IN OUT VOID               *CommunicationBuffer OPTIONAL,\r
-  IN OUT UINTN              *SourceSize OPTIONAL\r
-  );\r
-\r
-/**\r
-  The SmmInstallConfigurationTable() function is used to maintain the list\r
-  of configuration tables that are stored in the System Management System\r
-  Table.  The list is stored as an array of (GUID, Pointer) pairs.  The list\r
-  must be allocated from pool memory with PoolType set to EfiRuntimeServicesData.\r
-\r
-  @param  SystemTable      A pointer to the SMM System Table.\r
-  @param  Guid             A pointer to the GUID for the entry to add, update, or remove.\r
-  @param  Table            A pointer to the buffer of the table to add.\r
-  @param  TableSize        The size of the table to install.\r
-\r
-  @retval EFI_SUCCESS           The (Guid, Table) pair was added, updated, or removed.\r
-  @retval EFI_INVALID_PARAMETER Guid is not valid.\r
-  @retval EFI_NOT_FOUND         An attempt was made to delete a non-existent entry.\r
-  @retval EFI_OUT_OF_RESOURCES  There is not enough memory available to complete the operation.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_INSTALL_CONFIGURATION_TABLE)(\r
-  IN EFI_SMM_SYSTEM_TABLE         *SystemTable,\r
-  IN EFI_GUID                     *Guid,\r
-  IN VOID                         *Table,\r
-  IN UINTN                        TableSize\r
-  );\r
-\r
-//\r
-// System Management System Table (SMST)\r
-//\r
-struct _EFI_SMM_SYSTEM_TABLE {\r
-  ///\r
-  /// The table header for the System Management System Table (SMST).\r
-  ///\r
-  EFI_TABLE_HEADER                    Hdr;\r
-\r
-  ///\r
-  /// A pointer to a NULL-terminated Unicode string containing the vendor name. It is\r
-  /// permissible for this pointer to be NULL.\r
-  ///\r
-  CHAR16                              *SmmFirmwareVendor;\r
-  ///\r
-  /// The particular revision of the firmware.\r
-  ///\r
-  UINT32                              SmmFirmwareRevision;\r
-\r
-  ///\r
-  /// Adds, updates, or removes a configuration table entry from the SMST.\r
-  ///\r
-  EFI_SMM_INSTALL_CONFIGURATION_TABLE SmmInstallConfigurationTable;\r
-\r
-  //\r
-  // I/O Services\r
-  //\r
-  ///\r
-  /// A GUID that designates the particular CPU I/O services.\r
-  ///\r
-  EFI_GUID                            EfiSmmCpuIoGuid;\r
-  ///\r
-  /// Provides the basic memory and I/O interfaces that are used to abstract accesses to\r
-  /// devices.\r
-  ///\r
-  EFI_SMM_CPU_IO_INTERFACE            SmmIo;\r
-\r
-  //\r
-  // Runtime memory service\r
-  //\r
-  ///\r
-  ///\r
-  /// Allocates pool memory from SMRAM for IA-32 or runtime memory for the\r
-  /// Itanium processor family.\r
-  ///\r
-  EFI_SMMCORE_ALLOCATE_POOL           SmmAllocatePool;\r
-  ///\r
-  /// Returns pool memory to the system.\r
-  ///\r
-  EFI_SMMCORE_FREE_POOL               SmmFreePool;\r
-  ///\r
-  /// Allocates memory pages from the system.\r
-  ///\r
-  EFI_SMMCORE_ALLOCATE_PAGES          SmmAllocatePages;\r
-  ///\r
-  /// Frees memory pages for the system.\r
-  ///\r
-  EFI_SMMCORE_FREE_PAGES              SmmFreePages;\r
-\r
-  //\r
-  // MP service\r
-  //\r
-\r
-  /// Inconsistent with specification here:\r
-  ///  In Framework Spec, this definition does not exist. This method is introduced in PI1.1 specification for\r
-  ///  the implementation needed.\r
-  EFI_SMM_STARTUP_THIS_AP             SmmStartupThisAp;\r
-\r
-  //\r
-  // CPU information records\r
-  //\r
-  ///\r
-  /// A 1-relative number between 1 and the NumberOfCpus field. This field designates\r
-  /// which processor is executing the SMM infrastructure. This number also serves as an\r
-  /// index into the CpuSaveState and CpuOptionalFloatingPointState\r
-  /// fields.\r
-  ///\r
-  UINTN                               CurrentlyExecutingCpu;\r
-  ///\r
-  /// The number of EFI Configuration Tables in the buffer\r
-  /// SmmConfigurationTable.\r
-  ///\r
-  UINTN                               NumberOfCpus;\r
-  ///\r
-  /// A pointer to the EFI Configuration Tables. The number of entries in the table is\r
-  /// NumberOfTableEntries.\r
-  ///\r
-  EFI_SMM_CPU_SAVE_STATE              *CpuSaveState;\r
-  ///\r
-  /// A pointer to a catenation of the EFI_SMM_FLOATING_POINT_SAVE_STATE.\r
-  /// The size of this entire table is NumberOfCpus* size of the\r
-  /// EFI_SMM_FLOATING_POINT_SAVE_STATE. These fields are populated only if\r
-  /// there is at least one SMM driver that has registered for a callback with the\r
-  /// FloatingPointSave field in EFI_SMM_BASE_PROTOCOL.RegisterCallback() set to TRUE.\r
-  ///\r
-  EFI_SMM_FLOATING_POINT_SAVE_STATE   *CpuOptionalFloatingPointState;\r
-\r
-  //\r
-  // Extensibility table\r
-  //\r
-  ///\r
-  /// The number of EFI Configuration Tables in the buffer\r
-  /// SmmConfigurationTable.\r
-  ///\r
-  UINTN                               NumberOfTableEntries;\r
-  ///\r
-  /// A pointer to the EFI Configuration Tables. The number of entries in the table is\r
-  /// NumberOfTableEntries.\r
-  ///\r
-  EFI_CONFIGURATION_TABLE             *SmmConfigurationTable;\r
-};\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Framework/StatusCode.h b/IntelFrameworkPkg/Include/Framework/StatusCode.h
deleted file mode 100644 (file)
index 753029c..0000000
+++ /dev/null
@@ -1,155 +0,0 @@
-/** @file\r
-  Status Code Definitions, according to Intel Platform Innovation Framework\r
-  for EFI Status Codes Specification\r
-\r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  Intel Platform Innovation Framework for EFI Status Codes Specification\r
-  Version 0.92.\r
-\r
-**/\r
-\r
-#ifndef _FRAMEWORK_STATUS_CODE_H_\r
-#define _FRAMEWORK_STATUS_CODE_H_\r
-\r
-//\r
-// Required for X64 defines for CPU exception types\r
-//\r
-#include <Protocol/DebugSupport.h>\r
-\r
-///\r
-/// Software Class DXE BS Driver Subclass Progress Code definitions.\r
-///\r
-/// Inconsistent with specification here:\r
-/// The Framework Specification, StatusCodes 0.92, does not define the macros.\r
-///\r
-///@{\r
-#define EFI_SW_DXE_BS_PC_BEGIN_CONNECTING_DRIVERS     (EFI_SUBCLASS_SPECIFIC | 0x00000005)\r
-#define EFI_SW_DXE_BS_PC_VERIFYING_PASSWORD           (EFI_SUBCLASS_SPECIFIC | 0x00000006)\r
-///@}\r
-\r
-///\r
-/// Software Class DXE RT Driver Subclass Progress Code definitions.\r
-///\r
-/// Inconsistent with specification here:\r
-/// The Framework Specification, StatusCodes 0.92, does not define the macros.\r
-///\r
-///@{\r
-#define EFI_SW_DXE_RT_PC_S0 (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
-#define EFI_SW_DXE_RT_PC_S1 (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
-#define EFI_SW_DXE_RT_PC_S2 (EFI_SUBCLASS_SPECIFIC | 0x00000002)\r
-#define EFI_SW_DXE_RT_PC_S3 (EFI_SUBCLASS_SPECIFIC | 0x00000003)\r
-#define EFI_SW_DXE_RT_PC_S4 (EFI_SUBCLASS_SPECIFIC | 0x00000004)\r
-#define EFI_SW_DXE_RT_PC_S5 (EFI_SUBCLASS_SPECIFIC | 0x00000005)\r
-///@}\r
-\r
-///\r
-/// Software Subclass definitions.\r
-///\r
-/// Inconsistent with specification here:\r
-/// The Framework Specification, StatusCodes 0.92, does not define the macros.\r
-///\r
-#define EFI_SOFTWARE_X64_EXCEPTION        (EFI_SOFTWARE | 0x00130000)\r
-\r
-///\r
-/// Software Class X64 Exception Subclass Error Code definitions.\r
-/// These exceptions are derived from the debug protocol definitions in the EFI\r
-/// specification.\r
-///\r
-/// Inconsistent with specification here:\r
-/// The Framework Specification, StatusCodes 0.92, does not define the macros.\r
-///\r
-///@{\r
-#define EFI_SW_EC_X64_DIVIDE_ERROR      EXCEPT_X64_DIVIDE_ERROR\r
-#define EFI_SW_EC_X64_DEBUG             EXCEPT_X64_DEBUG\r
-#define EFI_SW_EC_X64_NMI               EXCEPT_X64_NMI\r
-#define EFI_SW_EC_X64_BREAKPOINT        EXCEPT_X64_BREAKPOINT\r
-#define EFI_SW_EC_X64_OVERFLOW          EXCEPT_X64_OVERFLOW\r
-#define EFI_SW_EC_X64_BOUND             EXCEPT_X64_BOUND\r
-#define EFI_SW_EC_X64_INVALID_OPCODE    EXCEPT_X64_INVALID_OPCODE\r
-#define EFI_SW_EC_X64_DOUBLE_FAULT      EXCEPT_X64_DOUBLE_FAULT\r
-#define EFI_SW_EC_X64_INVALID_TSS       EXCEPT_X64_INVALID_TSS\r
-#define EFI_SW_EC_X64_SEG_NOT_PRESENT   EXCEPT_X64_SEG_NOT_PRESENT\r
-#define EFI_SW_EC_X64_STACK_FAULT       EXCEPT_X64_STACK_FAULT\r
-#define EFI_SW_EC_X64_GP_FAULT          EXCEPT_X64_GP_FAULT\r
-#define EFI_SW_EC_X64_PAGE_FAULT        EXCEPT_X64_PAGE_FAULT\r
-#define EFI_SW_EC_X64_FP_ERROR          EXCEPT_X64_FP_ERROR\r
-#define EFI_SW_EC_X64_ALIGNMENT_CHECK   EXCEPT_X64_ALIGNMENT_CHECK\r
-#define EFI_SW_EC_X64_MACHINE_CHECK     EXCEPT_X64_MACHINE_CHECK\r
-#define EFI_SW_EC_X64_SIMD              EXCEPT_X64_SIMD\r
-///@}\r
-\r
-///\r
-/// Software Class EFI After Life Subclass Progress Code definitions.\r
-///\r
-///@{\r
-#define EFI_SW_AL_PC_ENTRY_POINT    (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
-#define EFI_SW_AL_PC_RETURN_TO_LAST (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
-///@}\r
-\r
-///\r
-/// Software Class DXE Core Subclass Error Code definitions.\r
-///\r
-/// Inconsistent with specification here:\r
-/// The Framework Specification, StatusCodes 0.92, does not define the macros.\r
-///\r
-#define EFI_SW_CSM_LEGACY_ROM_INIT                (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
-\r
-///\r
-/// IO Bus Class ATA/ATAPI Subclass Progress Code definitions.\r
-///\r
-///\r
-/// Inconsistent with specification here:\r
-/// The Framework Specification, StatusCodes 0.92, does not define the macros.\r
-///\r
-///@{\r
-#define EFI_IOB_ATA_BUS_SMART_ENABLE          (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
-#define EFI_IOB_ATA_BUS_SMART_DISABLE         (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
-#define EFI_IOB_ATA_BUS_SMART_OVERTHRESHOLD   (EFI_SUBCLASS_SPECIFIC | 0x00000002)\r
-#define EFI_IOB_ATA_BUS_SMART_UNDERTHRESHOLD  (EFI_SUBCLASS_SPECIFIC | 0x00000003)\r
-///@}\r
-\r
-///\r
-/// IO Bus Class ATA/ATAPI Subclass Error Code definitions.\r
-///\r
-///\r
-/// Inconsistent with specification here:\r
-/// The Framework Specification, StatusCodes 0.92, does not define the macros.\r
-///\r
-///@{\r
-#define EFI_IOB_ATA_BUS_SMART_NOTSUPPORTED  (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
-#define EFI_IOB_ATA_BUS_SMART_DISABLED      (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
-///@}\r
-\r
-///\r
-/// The reason that the processor was disabled.\r
-///\r
-/// Inconsistent with specification here:\r
-/// The Framework Specification, StatusCodes 0.92, does not define the macros.\r
-///\r
-///@{\r
-#define EFI_CPU_CAUSE_NOT_DISABLED              0x0000\r
-///@}\r
-\r
-///\r
-/// Software Class PEI Module Subclass Progress Code definitions.\r
-///\r
-///@{\r
-#define EFI_SW_PEIM_PC_RECOVERY_BEGIN  EFI_SW_PEI_PC_RECOVERY_BEGIN\r
-#define EFI_SW_PEIM_PC_CAPSULE_LOAD    EFI_SW_PEI_PC_CAPSULE_LOAD\r
-#define EFI_SW_PEIM_PC_CAPSULE_START   EFI_SW_PEI_PC_CAPSULE_START\r
-#define EFI_SW_PEIM_PC_RECOVERY_USER   EFI_SW_PEI_PC_RECOVERY_USER\r
-#define EFI_SW_PEIM_PC_RECOVERY_AUTO   EFI_SW_PEI_PC_RECOVERY_AUTO\r
-///@}\r
-\r
-///\r
-/// Software Class PEI Core Subclass Error Code definitions.\r
-///\r
-///@{\r
-#define EFI_SW_PEIM_CORE_EC_DXE_CORRUPT       EFI_SW_PEI_CORE_EC_DXE_CORRUPT\r
-#define EFI_SW_PEIM_CORE_EC_DXEIPL_NOT_FOUND  EFI_SW_PEI_CORE_EC_DXEIPL_NOT_FOUND\r
-///@}\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/FrameworkDxe.h b/IntelFrameworkPkg/Include/FrameworkDxe.h
deleted file mode 100644 (file)
index 1d80196..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-/** @file\r
-  The root header file that provides Framework extension to UEFI/PI for modules. It can be included by\r
-  DXE, RUNTIME and SMM type modules that use Framework definitions.\r
-\r
-\r
-  This header file includes Framework extension definitions common to DXE\r
-  modules.\r
-\r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-**/\r
-\r
-#ifndef _FRAMEWORK_DXE_H_\r
-#define _FRAMEWORK_DXE_H_\r
-\r
-#include <PiDxe.h>\r
-\r
-#include <Framework/FrameworkInternalFormRepresentation.h>\r
-#include <Framework/FirmwareVolumeImageFormat.h>\r
-#include <Framework/FirmwareVolumeHeader.h>\r
-#include <Framework/Hob.h>\r
-#include <Framework/BootScript.h>\r
-#include <Framework/StatusCode.h>\r
-#include <Framework/DxeCis.h>\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/FrameworkPei.h b/IntelFrameworkPkg/Include/FrameworkPei.h
deleted file mode 100644 (file)
index 87af840..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-/** @file\r
-  Header file that support Framework extension to UEFI/PI for PEI modules.\r
-\r
-  This header file must include Framework extension definitions common to PEI\r
-  modules.\r
-\r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-**/\r
-\r
-#ifndef _FRAMEWORK_PEI_H_\r
-#define _FRAMEWORK_PEI_H_\r
-\r
-#include <PiPei.h>\r
-\r
-#include <Framework/FirmwareVolumeImageFormat.h>\r
-#include <Framework/FirmwareVolumeHeader.h>\r
-#include <Framework/Hob.h>\r
-#include <Framework/StatusCode.h>\r
-#include <Framework/BootScript.h>\r
-#include <Framework/PeiCis.h>\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/FrameworkSmm.h b/IntelFrameworkPkg/Include/FrameworkSmm.h
deleted file mode 100644 (file)
index c10e6bc..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-/** @file\r
-  Header file that support Framework extensions to UEFI/PI for SMM modules.\r
-\r
-  This header file must include Framework extension definitions common to DXE\r
-  modules.\r
-\r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-**/\r
-\r
-#ifndef _FRAMEWORK_SMM_H_\r
-#define _FRAMEWORK_SMM_H_\r
-\r
-#include <FrameworkDxe.h>\r
-#include <Framework/SmmCis.h>\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Guid/BlockIo.h b/IntelFrameworkPkg/Include/Guid/BlockIo.h
deleted file mode 100644 (file)
index f952798..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-/** @file\r
-  This file declares the hardware-device class GUIDs that may be used by the\r
-  PEIM that produces the Virtual Block I/O PPI.\r
-\r
-  These GUIDs are hardware-device class GUIDs that would be imported only by the\r
-  Virtual Block I/O PEIM.  This virtual PEIM imports only the actual Block I/O\r
-  PPIs from the device-class ones listed here and published a single instance of\r
-  the Block I/O PPI for consumption by the File System PEIM.  In the parlance of\r
-  the Framework DXE software stack, this Virtual Block I/O PEIM is actually\r
-  embodying the functionality of the partition driver.  Thsi Virtual Block I/O\r
-  PEIM has to multiple the multiple possible instances of Block I/O and also know\r
-  how to parse at least El Torito for CD-ROM, and perhaps Master Boot Record(MBR)\r
-  and GUID Partition Table(GPT) in the future.\r
-\r
-Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  These GUIDs are defined in Framework Recovery Specification Version 0.9\r
-\r
-**/\r
-\r
-#ifndef _PEI_BLOCK_IO_GUID_H_\r
-#define _PEI_BLOCK_IO_GUID_H_\r
-\r
-///\r
-/// Global ID for an IDE class recovery device.\r
-///\r
-#define EFI_PEI_IDE_BLOCK_IO_PPI \\r
-  { \\r
-    0x0964e5b22, 0x6459, 0x11d2, { 0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b }  \\r
-  }\r
-\r
-///\r
-/// Global ID for a Floppy class recovery device.\r
-///\r
-#define EFI_PEI_144_FLOPPY_BLOCK_IO_PPI \\r
-  { \\r
-    0xda6855bd, 0x07b7, 0x4c05, { 0x9e, 0xd8, 0xe2, 0x59, 0xfd, 0x36, 0x0e, 0x22 }  \\r
-  }\r
-\r
-extern EFI_GUID gEfiPeiIdeBlockIoPpiGuid;\r
-extern EFI_GUID gEfiPei144FloppyBlockIoPpiGuid;\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Guid/Capsule.h b/IntelFrameworkPkg/Include/Guid/Capsule.h
deleted file mode 100644 (file)
index 6dfdb11..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-/** @file\r
-  Framework Capule related Definition.\r
-\r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  Capsule Spec Version 0.9\r
-**/\r
-\r
-#ifndef _CAPSULE_GUID_H__\r
-#define _CAPSULE_GUID_H__\r
-\r
-//\r
-// This is the GUID of the capsule header of the image on disk.\r
-//\r
-#define EFI_CAPSULE_GUID \\r
-  { \\r
-    0x3B6686BD, 0x0D76, 0x4030, {0xB7, 0x0E, 0xB5, 0x51, 0x9E, 0x2F, 0xC5, 0xA0 } \\r
-  }\r
-\r
-//\r
-// This is the GUID of the configuration results file created by the capsule\r
-// application.\r
-//\r
-#define EFI_CONFIG_FILE_NAME_GUID \\r
-  { \\r
-    0x98B8D59B, 0xE8BA, 0x48EE, {0x98, 0xDD, 0xC2, 0x95, 0x39, 0x2F, 0x1E, 0xDB } \\r
-  }\r
-\r
-///\r
-/// Bits in the flags field of the capsule header.\r
-/// This flag is set if the capsule can support setup changes, and cleared if it cannot.\r
-///\r
-#define EFI_CAPSULE_HEADER_FLAG_SETUP 0x00000001\r
-\r
-#define CAPSULE_BLOCK_DESCRIPTOR_SIGNATURE  SIGNATURE_32 ('C', 'B', 'D', 'S')\r
-\r
-//\r
-// An array of these structs describe the blocks that make up a capsule for\r
-// a capsule update.\r
-//\r
-typedef struct {\r
-  UINT64                Length;     ///< Length of the data block.\r
-  EFI_PHYSICAL_ADDRESS  Data;       ///< Physical address of the data block.\r
-  UINT32                Signature;  ///< CBDS.\r
-  UINT32                CheckSum;   ///< To sum this structure to 0.\r
-} FRAMEWORK_EFI_CAPSULE_BLOCK_DESCRIPTOR;\r
-\r
-typedef struct {\r
-  EFI_GUID  OemGuid;\r
-  UINT32    HeaderSize;\r
-  //\r
-  // UINT8                       OemHdrData[];\r
-  //\r
-} EFI_CAPSULE_OEM_HEADER;\r
-\r
-typedef struct {\r
-  ///\r
-  /// A defined GUID that indicates the start of a capsule.\r
-  ///\r
-  EFI_GUID  CapsuleGuid;\r
-  ///\r
-  /// The size of the EFI_CAPSULE_HEADER structure.\r
-  ///\r
-  UINT32    HeaderSize;\r
-  ///\r
-  /// A bit-mapped list describing the capsule's attributes.\r
-  /// All undefined bits should be written as zero (0).\r
-  ///\r
-  UINT32    Flags;\r
-  ///\r
-  /// The length in bytes (27,415 for an image containing 27,415 bytes) of the entire image\r
-  /// including all headers. If this value is greater than the size of the data presented in\r
-  /// the capsule body, the image is separated across multiple media. If this\r
-  /// value is less than the size of the data, it is an error.\r
-  ///\r
-  UINT32    CapsuleImageSize;\r
-  ///\r
-  /// A zero-based number that enables a capsule to be split into pieces and then\r
-  /// recombined for easier transfer across media with limited size. The lower the\r
-  /// SequenceNumber, the earlier in the final image that the part of the capsule is to\r
-  /// appear. In capsules that are not split, this value shall be zero.\r
-  ///\r
-  UINT32    SequenceNumber;\r
-  ///\r
-  /// Used to group the various pieces of a split capsule to ensure that they comprise the\r
-  /// same base image. It is valid for this item to be zero, in which case the capsule cannot\r
-  /// be split into components.\r
-  ///\r
-  EFI_GUID  InstanceId;\r
-  ///\r
-  /// The offset in bytes from the beginning of the header to the start of an EFI string that\r
-  /// contains a description of the identity of the subcapsules that make up the capsule. If\r
-  /// the capsule is not split, this value should be zero. The same string should be\r
-  /// presented for all subcapsules that constitute the same capsule.\r
-  ///\r
-  UINT32    OffsetToSplitInformation;\r
-  ///\r
-  /// The offset in bytes from the beginning of the header to the start of the part of the\r
-  /// capsule that is to be transferred to DXE.\r
-  ///\r
-  UINT32    OffsetToCapsuleBody;\r
-  ///\r
-  /// The offset in bytes from the beginning of the header to the start of the OEM-defined\r
-  /// header. This value must be less than OffsetToCapsuleBody.\r
-  ///\r
-  UINT32    OffsetToOemDefinedHeader;\r
-  ///\r
-  /// The offset in bytes from the beginning of the header to the start of human-readable\r
-  /// text that describes the entity that created the capsule. This value must be less than OffsetToCapsuleBody.\r
-  ///\r
-  UINT32    OffsetToAuthorInformation;\r
-  ///\r
-  /// The offset in bytes from the beginning of the header to the start of human-readable\r
-  /// text that describes the revision of the capsule and/or the capsule's contents. This\r
-  /// value must be less than OffsetToCapsuleBody.\r
-  ///\r
-  UINT32    OffsetToRevisionInformation;\r
-  ///\r
-  /// The offset in bytes from the beginning of the header to the start of a one-line (less\r
-  /// than 40 Unicode characters in any language) description of the capsule. It is intended\r
-  /// to be used by OS-present applications when providing a list of capsules from which\r
-  /// the user can choose. This value must be less than OffsetToCapsuleBody.\r
-  ///\r
-  UINT32    OffsetToShortDescription;\r
-  ///\r
-  /// The offset in bytes from the beginning of the header to the start of an EFI string\r
-  ///\r
-  UINT32    OffsetToLongDescription;\r
-  ///\r
-  /// This field is reserved for future use by this specification. For future compatibility,\r
-  /// this field must be set to zero\r
-  ///\r
-  UINT32    OffsetToApplicableDevices;\r
-} FRAMEWORK_EFI_CAPSULE_HEADER;\r
-\r
-extern EFI_GUID gEfiCapsuleGuid;\r
-extern EFI_GUID gEfiConfigFileNameGuid;\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Guid/DataHubRecords.h b/IntelFrameworkPkg/Include/Guid/DataHubRecords.h
deleted file mode 100644 (file)
index 5699113..0000000
+++ /dev/null
@@ -1,2929 +0,0 @@
-/** @file\r
-  DataHubRecord.h includes all data hub subclass GUID definitions.\r
-\r
-  This file includes all data hub sub class defitions from\r
-  Cache subclass specification 0.9, DataHub SubClass specification 0.9, Memory SubClass Spec 0.9,\r
-  Processor Subclass specification 0.9, and Misc SubClass specification 0.9.\r
-\r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-**/\r
-#ifndef _DATAHUB_RECORDS_GUID_H_\r
-#define _DATAHUB_RECORDS_GUID_H_\r
-\r
-//\r
-// The include is required to retrieve type EFI_EXP_BASE10_DATA\r
-//\r
-#include <Guid/StatusCodeDataTypeId.h>\r
-\r
-#define EFI_PROCESSOR_SUBCLASS_GUID \\r
-  { 0x26fdeb7e, 0xb8af, 0x4ccf, {0xaa, 0x97, 0x02, 0x63, 0x3c, 0xe4, 0x8c, 0xa7 } }\r
-\r
-extern  EFI_GUID gEfiProcessorSubClassGuid;\r
-\r
-\r
-#define EFI_CACHE_SUBCLASS_GUID \\r
-  { 0x7f0013a7, 0xdc79, 0x4b22, {0x80, 0x99, 0x11, 0xf7, 0x5f, 0xdc, 0x82, 0x9d } }\r
-\r
-extern  EFI_GUID gEfiCacheSubClassGuid;\r
-\r
-///\r
-/// The memory subclass belongs to the data class and is identified as the memory\r
-/// subclass by the GUID.\r
-///\r
-#define EFI_MEMORY_SUBCLASS_GUID \\r
-  {0x4E8F4EBB, 0x64B9, 0x4e05, {0x9B, 0x18, 0x4C, 0xFE, 0x49, 0x23, 0x50, 0x97} }\r
-\r
-extern  EFI_GUID  gEfiMemorySubClassGuid;\r
-\r
-#define EFI_MISC_SUBCLASS_GUID \\r
-  { 0x772484B2, 0x7482, 0x4b91, {0x9F, 0x9A, 0xAD, 0x43, 0xF8, 0x1C, 0x58, 0x81 } }\r
-\r
-extern  EFI_GUID  gEfiMiscSubClassGuid;\r
-\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In ProcSubclass specification 0.9, the value is 0x0100.\r
-/// Keep it unchanged from the perspective of binary consistency.\r
-///\r
-#define EFI_PROCESSOR_SUBCLASS_VERSION    0x00010000\r
-\r
-#pragma pack(1)\r
-\r
-typedef struct _USB_PORT_DEVICE_PATH {\r
-  ACPI_HID_DEVICE_PATH              PciRootBridgeDevicePath;\r
-  PCI_DEVICE_PATH                   PciBusDevicePath;\r
-  EFI_DEVICE_PATH_PROTOCOL          EndDevicePath;\r
-} USB_PORT_DEVICE_PATH;\r
-\r
-//\r
-// IDE\r
-//\r
-typedef struct _IDE_DEVICE_PATH {\r
-  ACPI_HID_DEVICE_PATH              PciRootBridgeDevicePath;\r
-  PCI_DEVICE_PATH                   PciBusDevicePath;\r
-  EFI_DEVICE_PATH_PROTOCOL          EndDevicePath;\r
-} IDE_DEVICE_PATH;\r
-\r
-//\r
-// RMC Connector\r
-//\r
-typedef struct _RMC_CONN_DEVICE_PATH {\r
-  ACPI_HID_DEVICE_PATH              PciRootBridgeDevicePath;\r
-  PCI_DEVICE_PATH                   PciBridgeDevicePath;\r
-  PCI_DEVICE_PATH                   PciBusDevicePath;\r
-  EFI_DEVICE_PATH_PROTOCOL          EndDevicePath;\r
-} RMC_CONN_DEVICE_PATH;\r
-\r
-//\r
-// RIDE\r
-//\r
-typedef struct _RIDE_DEVICE_PATH {\r
-  ACPI_HID_DEVICE_PATH              PciRootBridgeDevicePath;\r
-  PCI_DEVICE_PATH                   PciBridgeDevicePath;\r
-  PCI_DEVICE_PATH                   PciBusDevicePath;\r
-  EFI_DEVICE_PATH_PROTOCOL          EndDevicePath;\r
-} RIDE_DEVICE_PATH;\r
-\r
-//\r
-// Gigabit NIC\r
-//\r
-typedef struct _GB_NIC_DEVICE_PATH {\r
-  ACPI_HID_DEVICE_PATH              PciRootBridgeDevicePath;\r
-  PCI_DEVICE_PATH                   PciBridgeDevicePath;\r
-  PCI_DEVICE_PATH                   PciXBridgeDevicePath;\r
-  PCI_DEVICE_PATH                   PciXBusDevicePath;\r
-  EFI_DEVICE_PATH_PROTOCOL          EndDevicePath;\r
-} GB_NIC_DEVICE_PATH;\r
-\r
-//\r
-// P/S2 Connector\r
-//\r
-typedef struct _PS2_CONN_DEVICE_PATH {\r
-  ACPI_HID_DEVICE_PATH              PciRootBridgeDevicePath;\r
-  PCI_DEVICE_PATH                   LpcBridgeDevicePath;\r
-  ACPI_HID_DEVICE_PATH              LpcBusDevicePath;\r
-  EFI_DEVICE_PATH_PROTOCOL          EndDevicePath;\r
-} PS2_CONN_DEVICE_PATH;\r
-\r
-//\r
-// Serial Port Connector\r
-//\r
-typedef struct _SERIAL_CONN_DEVICE_PATH {\r
-  ACPI_HID_DEVICE_PATH              PciRootBridgeDevicePath;\r
-  PCI_DEVICE_PATH                   LpcBridgeDevicePath;\r
-  ACPI_HID_DEVICE_PATH              LpcBusDevicePath;\r
-  EFI_DEVICE_PATH_PROTOCOL          EndDevicePath;\r
-} SERIAL_CONN_DEVICE_PATH;\r
-\r
-//\r
-// Parallel Port Connector\r
-//\r
-typedef struct _PARALLEL_CONN_DEVICE_PATH {\r
-  ACPI_HID_DEVICE_PATH              PciRootBridgeDevicePath;\r
-  PCI_DEVICE_PATH                   LpcBridgeDevicePath;\r
-  ACPI_HID_DEVICE_PATH              LpcBusDevicePath;\r
-  EFI_DEVICE_PATH_PROTOCOL          EndDevicePath;\r
-} PARALLEL_CONN_DEVICE_PATH;\r
-\r
-//\r
-// Floopy Connector\r
-//\r
-typedef struct _FLOOPY_CONN_DEVICE_PATH {\r
-  ACPI_HID_DEVICE_PATH              PciRootBridgeDevicePath;\r
-  PCI_DEVICE_PATH                   LpcBridgeDevicePath;\r
-  ACPI_HID_DEVICE_PATH              LpcBusDevicePath;\r
-  EFI_DEVICE_PATH_PROTOCOL          EndDevicePath;\r
-} FLOOPY_CONN_DEVICE_PATH;\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MiscSubclass specification 0.9, this data structure and corrsponding fields are NOT defined.\r
-/// It's implementation-specific to simplify the code logic.\r
-///\r
-typedef union _EFI_MISC_PORT_DEVICE_PATH {\r
-  USB_PORT_DEVICE_PATH              UsbDevicePath;\r
-  IDE_DEVICE_PATH                   IdeDevicePath;\r
-  RMC_CONN_DEVICE_PATH              RmcConnDevicePath;\r
-  RIDE_DEVICE_PATH                  RideDevicePath;\r
-  GB_NIC_DEVICE_PATH                GbNicDevicePath;\r
-  PS2_CONN_DEVICE_PATH              Ps2ConnDevicePath;\r
-  SERIAL_CONN_DEVICE_PATH           SerialConnDevicePath;\r
-  PARALLEL_CONN_DEVICE_PATH         ParallelConnDevicePath;\r
-  FLOOPY_CONN_DEVICE_PATH           FloppyConnDevicePath;\r
-} EFI_MISC_PORT_DEVICE_PATH;\r
-\r
-#pragma pack()\r
-\r
-///\r
-/// String Token Definition\r
-///\r
-/// Inconsistent with specification here:\r
-/// The macro isn't defined by any specification.\r
-/// Keep it unchanged for backward compatibility.\r
-///\r
-#define EFI_STRING_TOKEN          UINT16\r
-\r
-///\r
-/// Each data record that is a member of some subclass starts with a standard\r
-/// header of type EFI_SUBCLASS_TYPE1_HEADER.\r
-/// This header is only a guideline and applicable only to a data\r
-/// subclass that is producing SMBIOS data records. A subclass can start with a\r
-/// different header if needed.\r
-///\r
-typedef struct {\r
-  ///\r
-  /// The version of the specification to which a specific subclass data record adheres.\r
-  ///\r
-  UINT32                            Version;\r
-  ///\r
-  /// The size in bytes of this data class header.\r
-  ///\r
-  UINT32                            HeaderSize;\r
-  ///\r
-  /// The instance number of the subclass with the same ProducerName. This number is\r
-  /// applicable in cases where multiple subclass instances that were produced by the same\r
-  /// driver exist in the system. This entry is 1 based; 0 means Reserved and -1 means Not\r
-  /// Applicable. All data consumer drivers should be able to handle all the possible values\r
-  /// of Instance, including Not Applicable and Reserved.\r
-  ///\r
-  UINT16                            Instance;\r
-  ///\r
-  /// The instance number of the RecordType for the same Instance. This number is\r
-  /// applicable in cases where multiple instances of the RecordType exist for a specific\r
-  /// Instance. This entry is 1 based; 0 means Reserved and -1 means Not Applicable.\r
-  /// All data consumer drivers should be able to handle all the possible values of\r
-  /// SubInstance, including Not Applicable and Reserved.\r
-  ///\r
-  UINT16                            SubInstance;\r
-  ///\r
-  /// The record number for the data record being specified. The numbering scheme and\r
-  /// definition is defined in the specific subclass specification.\r
-  ///\r
-  UINT32                            RecordType;\r
-} EFI_SUBCLASS_TYPE1_HEADER;\r
-\r
-///\r
-/// This structure is used to link data records in the same subclasses. A data record is\r
-/// defined as a link to another data record in the same subclass using this structure.\r
-///\r
-typedef struct {\r
-  ///\r
-  /// An EFI_GUID that identifies the component that produced this data record. Type\r
-  /// EFI_GUID is defined in InstallProtocolInterface() in the EFI 1.10 Specification.\r
-  ///\r
-  EFI_GUID                          ProducerName;\r
-  ///\r
-  /// The instance number of the subclass with the same ProducerName. This number is\r
-  /// applicable in cases where multiple subclass instances that were produced by the same\r
-  /// driver exist in the system. This entry is 1 based; 0 means Reserved and -1 means Not\r
-  /// Applicable. All data consumer drivers should be able to handle all the possible values\r
-  /// of Instance, including Not Applicable and Reserved.\r
-  ///\r
-  UINT16                            Instance;\r
-  /// The instance number of the RecordType for the same Instance. This number is\r
-  /// applicable in cases where multiple instances of the RecordType exist for a specific\r
-  /// Instance. This entry is 1 based; 0 means Reserved and -1 means Not Applicable.\r
-  /// All data consumer drivers should be able to handle all the possible values of\r
-  /// SubInstance, including Not Applicable and Reserved.\r
-  UINT16                            SubInstance;\r
-} EFI_INTER_LINK_DATA;\r
-\r
-//\r
-// EXP data\r
-//\r
-///\r
-/// This macro provides a calculation for base-10 representations. Value and Exponent are each\r
-/// INT16. It is signed to cover negative values and is 16 bits wide (15 bits for data and 1 bit\r
-/// for the sign).\r
-///\r
-typedef struct {\r
-  ///\r
-  /// The INT16 number by which to multiply the base-10 representation.\r
-  ///\r
-  UINT16                            Value;\r
-  ///\r
-  /// The INT16 number by which to raise the base-10 calculation.\r
-  ///\r
-  UINT16                            Exponent;\r
-} EFI_EXP_BASE2_DATA;\r
-\r
-typedef EFI_EXP_BASE10_DATA        EFI_PROCESSOR_MAX_CORE_FREQUENCY_DATA;\r
-typedef EFI_EXP_BASE10_DATA        EFI_PROCESSOR_MAX_FSB_FREQUENCY_DATA;\r
-typedef EFI_EXP_BASE10_DATA        EFI_PROCESSOR_CORE_FREQUENCY_DATA;\r
-\r
-///\r
-/// This data record refers to the list of frequencies that the processor core supports. The list of\r
-/// supported frequencies is determined by the firmware based on hardware capabilities--for example,\r
-/// it could be a common subset of all processors and the chipset. The unit of measurement of this data\r
-/// record is in Hertz. For asynchronous processors, the content of this data record is zero.\r
-/// The list is terminated by -1 in the Value field of the last element. A Value field of zero means\r
-/// that the processor/driver supports automatic frequency selection.\r
-///\r
-/// Inconsistent with specification here:\r
-/// According to MiscSubclass 0.9 specification, it should be a pointer since it refers to a list of frequencies.\r
-///\r
-typedef EFI_EXP_BASE10_DATA        *EFI_PROCESSOR_CORE_FREQUENCY_LIST_DATA;\r
-\r
-///\r
-/// This data record refers to the list of supported frequencies of the processor external bus. The list of\r
-/// supported frequencies is determined by the firmware based on hardware capabilities--for example,\r
-/// it could be a common subset of all processors and the chipset. The unit of measurement of this data\r
-/// record is in Hertz. For asynchronous processors, the content of this data record is NULL.\r
-/// The list is terminated by -1 in the Value field of the last element. A Value field of zero means\r
-/// that the processor/driver supports automatic frequency selection.\r
-///\r
-typedef EFI_EXP_BASE10_DATA        *EFI_PROCESSOR_FSB_FREQUENCY_LIST_DATA;\r
-typedef EFI_EXP_BASE10_DATA        EFI_PROCESSOR_FSB_FREQUENCY_DATA;\r
-typedef STRING_REF                 EFI_PROCESSOR_VERSION_DATA;\r
-typedef STRING_REF                 EFI_PROCESSOR_MANUFACTURER_DATA;\r
-typedef STRING_REF                 EFI_PROCESSOR_SERIAL_NUMBER_DATA;\r
-typedef STRING_REF                 EFI_PROCESSOR_ASSET_TAG_DATA;\r
-typedef STRING_REF                 EFI_PROCESSOR_PART_NUMBER_DATA;\r
-\r
-typedef struct {\r
-  UINT32                            ProcessorSteppingId:4;\r
-  UINT32                            ProcessorModel:     4;\r
-  UINT32                            ProcessorFamily:    4;\r
-  UINT32                            ProcessorType:      2;\r
-  UINT32                            ProcessorReserved1: 2;\r
-  UINT32                            ProcessorXModel:    4;\r
-  UINT32                            ProcessorXFamily:   8;\r
-  UINT32                            ProcessorReserved2: 4;\r
-} EFI_PROCESSOR_SIGNATURE;\r
-\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// The name of third field in ProcSubClass specification 0.9 is LogicalProcessorCount.\r
-/// Keep it unchanged for backward compatibility.\r
-///\r
-typedef struct {\r
-  UINT32                            ProcessorBrandIndex    :8;\r
-  UINT32                            ProcessorClflush       :8;\r
-  UINT32                            ProcessorReserved      :8;\r
-  UINT32                            ProcessorDfltApicId    :8;\r
-} EFI_PROCESSOR_MISC_INFO;\r
-\r
-typedef struct {\r
-  UINT32                            ProcessorFpu:       1;\r
-  UINT32                            ProcessorVme:       1;\r
-  UINT32                            ProcessorDe:        1;\r
-  UINT32                            ProcessorPse:       1;\r
-  UINT32                            ProcessorTsc:       1;\r
-  UINT32                            ProcessorMsr:       1;\r
-  UINT32                            ProcessorPae:       1;\r
-  UINT32                            ProcessorMce:       1;\r
-  UINT32                            ProcessorCx8:       1;\r
-  UINT32                            ProcessorApic:      1;\r
-  UINT32                            ProcessorReserved1: 1;\r
-  UINT32                            ProcessorSep:       1;\r
-  UINT32                            ProcessorMtrr:      1;\r
-  UINT32                            ProcessorPge:       1;\r
-  UINT32                            ProcessorMca:       1;\r
-  UINT32                            ProcessorCmov:      1;\r
-  UINT32                            ProcessorPat:       1;\r
-  UINT32                            ProcessorPse36:     1;\r
-  UINT32                            ProcessorPsn:       1;\r
-  UINT32                            ProcessorClfsh:     1;\r
-  UINT32                            ProcessorReserved2: 1;\r
-  UINT32                            ProcessorDs:        1;\r
-  UINT32                            ProcessorAcpi:      1;\r
-  UINT32                            ProcessorMmx:       1;\r
-  UINT32                            ProcessorFxsr:      1;\r
-  UINT32                            ProcessorSse:       1;\r
-  UINT32                            ProcessorSse2:      1;\r
-  UINT32                            ProcessorSs:        1;\r
-  UINT32                            ProcessorReserved3: 1;\r
-  UINT32                            ProcessorTm:        1;\r
-  UINT32                            ProcessorReserved4: 2;\r
-} EFI_PROCESSOR_FEATURE_FLAGS;\r
-\r
-///\r
-/// This data record refers to the unique ID that identifies a set of processors. This data record is 16\r
-/// bytes in length. The data in this structure is processor specific and reserved values can be defined\r
-/// for future use. The consumer of this data should not make any assumption and should use this data\r
-/// with respect to the processor family defined in the Family record number.\r
-///\r
-typedef struct {\r
-  ///\r
-  /// Identifies the processor.\r
-  ///\r
-  EFI_PROCESSOR_SIGNATURE           Signature;\r
-  ///\r
-  /// Provides additional processor information.\r
-  ///\r
-  EFI_PROCESSOR_MISC_INFO           MiscInfo;\r
-  ///\r
-  /// Reserved for future use.\r
-  ///\r
-  UINT32                            Reserved;\r
-  ///\r
-  /// Provides additional processor information.\r
-  ///\r
-  EFI_PROCESSOR_FEATURE_FLAGS       FeatureFlags;\r
-} EFI_PROCESSOR_ID_DATA;\r
-\r
-///\r
-/// This data record refers to the general classification of the processor. This data record is 4 bytes in\r
-/// length.\r
-///\r
-typedef enum {\r
-  EfiProcessorOther    = 1,\r
-  EfiProcessorUnknown  = 2,\r
-  EfiCentralProcessor  = 3,\r
-  EfiMathProcessor     = 4,\r
-  EfiDspProcessor      = 5,\r
-  EfiVideoProcessor    = 6\r
-} EFI_PROCESSOR_TYPE_DATA;\r
-\r
-///\r
-/// This data record refers to the family of the processor as defined by the DMTF.\r
-/// This data record is 4 bytes in length.\r
-///\r
-typedef enum {\r
-  EfiProcessorFamilyOther                  = 0x01,\r
-  EfiProcessorFamilyUnknown                = 0x02,\r
-  EfiProcessorFamily8086                   = 0x03,\r
-  EfiProcessorFamily80286                  = 0x04,\r
-  EfiProcessorFamilyIntel386               = 0x05,\r
-  EfiProcessorFamilyIntel486               = 0x06,\r
-  EfiProcessorFamily8087                   = 0x07,\r
-  EfiProcessorFamily80287                  = 0x08,\r
-  EfiProcessorFamily80387                  = 0x09,\r
-  EfiProcessorFamily80487                  = 0x0A,\r
-  EfiProcessorFamilyPentium                = 0x0B,\r
-  EfiProcessorFamilyPentiumPro             = 0x0C,\r
-  EfiProcessorFamilyPentiumII              = 0x0D,\r
-  EfiProcessorFamilyPentiumMMX             = 0x0E,\r
-  EfiProcessorFamilyCeleron                = 0x0F,\r
-  EfiProcessorFamilyPentiumIIXeon          = 0x10,\r
-  EfiProcessorFamilyPentiumIII             = 0x11,\r
-  EfiProcessorFamilyM1                     = 0x12,\r
-  EfiProcessorFamilyM2                     = 0x13,\r
-  EfiProcessorFamilyM1Reserved2            = 0x14,\r
-  EfiProcessorFamilyM1Reserved3            = 0x15,\r
-  EfiProcessorFamilyM1Reserved4            = 0x16,\r
-  EfiProcessorFamilyM1Reserved5            = 0x17,\r
-  EfiProcessorFamilyAmdDuron               = 0x18,\r
-  EfiProcessorFamilyK5                     = 0x19,\r
-  EfiProcessorFamilyK6                     = 0x1A,\r
-  EfiProcessorFamilyK6_2                   = 0x1B,\r
-  EfiProcessorFamilyK6_3                   = 0x1C,\r
-  EfiProcessorFamilyAmdAthlon              = 0x1D,\r
-  EfiProcessorFamilyAmd29000               = 0x1E,\r
-  EfiProcessorFamilyK6_2Plus               = 0x1F,\r
-  EfiProcessorFamilyPowerPC                = 0x20,\r
-  EfiProcessorFamilyPowerPC601             = 0x21,\r
-  EfiProcessorFamilyPowerPC603             = 0x22,\r
-  EfiProcessorFamilyPowerPC603Plus         = 0x23,\r
-  EfiProcessorFamilyPowerPC604             = 0x24,\r
-  EfiProcessorFamilyPowerPC620             = 0x25,\r
-  EfiProcessorFamilyPowerPCx704            = 0x26,\r
-  EfiProcessorFamilyPowerPC750             = 0x27,\r
-  EfiProcessorFamilyAlpha3                 = 0x30,\r
-  EfiProcessorFamilyAlpha21064             = 0x31,\r
-  EfiProcessorFamilyAlpha21066             = 0x32,\r
-  EfiProcessorFamilyAlpha21164             = 0x33,\r
-  EfiProcessorFamilyAlpha21164PC           = 0x34,\r
-  EfiProcessorFamilyAlpha21164a            = 0x35,\r
-  EfiProcessorFamilyAlpha21264             = 0x36,\r
-  EfiProcessorFamilyAlpha21364             = 0x37,\r
-  EfiProcessorFamilyMips                   = 0x40,\r
-  EfiProcessorFamilyMIPSR4000              = 0x41,\r
-  EfiProcessorFamilyMIPSR4200              = 0x42,\r
-  EfiProcessorFamilyMIPSR4400              = 0x43,\r
-  EfiProcessorFamilyMIPSR4600              = 0x44,\r
-  EfiProcessorFamilyMIPSR10000             = 0x45,\r
-  EfiProcessorFamilySparc                  = 0x50,\r
-  EfiProcessorFamilySuperSparc             = 0x51,\r
-  EfiProcessorFamilymicroSparcII           = 0x52,\r
-  EfiProcessorFamilymicroSparcIIep         = 0x53,\r
-  EfiProcessorFamilyUltraSparc             = 0x54,\r
-  EfiProcessorFamilyUltraSparcII           = 0x55,\r
-  EfiProcessorFamilyUltraSparcIIi          = 0x56,\r
-  EfiProcessorFamilyUltraSparcIII          = 0x57,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field in ProcSubClass specification 0.9 is defined as EfiProcessorFamilyUltraSparcIIi.\r
-  /// Change it to EfiProcessorFamilyUltraSparcIIIi to avoid build break.\r
-  ///\r
-  EfiProcessorFamilyUltraSparcIIIi         = 0x58,\r
-  EfiProcessorFamily68040                  = 0x60,\r
-  EfiProcessorFamily68xxx                  = 0x61,\r
-  EfiProcessorFamily68000                  = 0x62,\r
-  EfiProcessorFamily68010                  = 0x63,\r
-  EfiProcessorFamily68020                  = 0x64,\r
-  EfiProcessorFamily68030                  = 0x65,\r
-  EfiProcessorFamilyHobbit                 = 0x70,\r
-  EfiProcessorFamilyCrusoeTM5000           = 0x78,\r
-  EfiProcessorFamilyCrusoeTM3000           = 0x79,\r
-  EfiProcessorFamilyEfficeonTM8000         = 0x7A,\r
-  EfiProcessorFamilyWeitek                 = 0x80,\r
-  EfiProcessorFamilyItanium                = 0x82,\r
-  EfiProcessorFamilyAmdAthlon64            = 0x83,\r
-  EfiProcessorFamilyAmdOpteron             = 0x84,\r
-  EfiProcessorFamilyAmdSempron             = 0x85,\r
-  EfiProcessorFamilyAmdTurion64Mobile      = 0x86,\r
-  EfiProcessorFamilyDualCoreAmdOpteron     = 0x87,\r
-  EfiProcessorFamilyAmdAthlon64X2DualCore  = 0x88,\r
-  EfiProcessorFamilyAmdTurion64X2Mobile    = 0x89,\r
-  EfiProcessorFamilyPARISC                 = 0x90,\r
-  EfiProcessorFamilyPaRisc8500             = 0x91,\r
-  EfiProcessorFamilyPaRisc8000             = 0x92,\r
-  EfiProcessorFamilyPaRisc7300LC           = 0x93,\r
-  EfiProcessorFamilyPaRisc7200             = 0x94,\r
-  EfiProcessorFamilyPaRisc7100LC           = 0x95,\r
-  EfiProcessorFamilyPaRisc7100             = 0x96,\r
-  EfiProcessorFamilyV30                    = 0xA0,\r
-  EfiProcessorFamilyPentiumIIIXeon         = 0xB0,\r
-  EfiProcessorFamilyPentiumIIISpeedStep    = 0xB1,\r
-  EfiProcessorFamilyPentium4               = 0xB2,\r
-  EfiProcessorFamilyIntelXeon              = 0xB3,\r
-  EfiProcessorFamilyAS400                  = 0xB4,\r
-  EfiProcessorFamilyIntelXeonMP            = 0xB5,\r
-  EfiProcessorFamilyAMDAthlonXP            = 0xB6,\r
-  EfiProcessorFamilyAMDAthlonMP            = 0xB7,\r
-  EfiProcessorFamilyIntelItanium2          = 0xB8,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiProcessorFamilyIntelPentiumM          = 0xB9,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiProcessorFamilyIntelCeleronD          = 0xBA,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiProcessorFamilyIntelPentiumD          = 0xBB,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiProcessorFamilyIntelPentiumEx         = 0xBC,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiProcessorFamilyIntelCoreSolo          = 0xBD,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiProcessorFamilyReserved               = 0xBE,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiProcessorFamilyIntelCore2             = 0xBF,\r
-  EfiProcessorFamilyIBM390                 = 0xC8,\r
-  EfiProcessorFamilyG4                     = 0xC9,\r
-  EfiProcessorFamilyG5                     = 0xCA,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in ProcSubClass specification  0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiProcessorFamilyG6                     = 0xCB,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiProcessorFamilyzArchitectur           = 0xCC,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiProcessorFamilyViaC7M                 = 0xD2,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiProcessorFamilyViaC7D                 = 0xD3,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiProcessorFamilyViaC7                  = 0xD4,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiProcessorFamilyViaEden                = 0xD5,\r
-  EfiProcessorFamilyi860                   = 0xFA,\r
-  EfiProcessorFamilyi960                   = 0xFB,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiProcessorFamilyIndicatorFamily2       = 0xFE,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiProcessorFamilyReserved1              = 0xFF\r
-} EFI_PROCESSOR_FAMILY_DATA;\r
-\r
-typedef enum {\r
-  EfiProcessorFamilySh3           = 0x104,\r
-  EfiProcessorFamilySh4           = 0x105,\r
-  EfiProcessorFamilyArm           = 0x118,\r
-  EfiProcessorFamilyStrongArm     = 0x119,\r
-  EfiProcessorFamily6x86          = 0x12C,\r
-  EfiProcessorFamilyMediaGx       = 0x12D,\r
-  EfiProcessorFamilyMii           = 0x12E,\r
-  EfiProcessorFamilyWinChip       = 0x140,\r
-  EfiProcessorFamilyDsp           = 0x15E,\r
-  EfiProcessorFamilyVideo         = 0x1F4\r
-} EFI_PROCESSOR_FAMILY2_DATA;\r
-\r
-///\r
-/// This data record refers to the core voltage of the processor being defined. The unit of measurement\r
-/// of this data record is in volts.\r
-///\r
-typedef EFI_EXP_BASE10_DATA         EFI_PROCESSOR_VOLTAGE_DATA;\r
-\r
-///\r
-/// This data record refers to the base address of the APIC of the processor being defined. This data\r
-/// record is a physical address location.\r
-///\r
-typedef EFI_PHYSICAL_ADDRESS        EFI_PROCESSOR_APIC_BASE_ADDRESS_DATA;\r
-\r
-///\r
-/// This data record refers to the ID of the APIC of the processor being defined. This data record is a\r
-/// 4-byte entry.\r
-///\r
-typedef UINT32                      EFI_PROCESSOR_APIC_ID_DATA;\r
-\r
-///\r
-/// This data record refers to the version number of the APIC of the processor being defined. This data\r
-/// record is a 4-byte entry.\r
-///\r
-typedef UINT32                      EFI_PROCESSOR_APIC_VERSION_NUMBER_DATA;\r
-\r
-typedef enum {\r
-  EfiProcessorIa32Microcode    = 1,\r
-  EfiProcessorIpfPalAMicrocode = 2,\r
-  EfiProcessorIpfPalBMicrocode = 3\r
-} EFI_PROCESSOR_MICROCODE_TYPE;\r
-\r
-///\r
-/// This data record refers to the revision of the processor microcode that is loaded in the processor.\r
-/// This data record is a 4-byte entry.\r
-///\r
-typedef struct {\r
-  ///\r
-  /// Identifies what type of microcode the data is.\r
-  ///\r
-  EFI_PROCESSOR_MICROCODE_TYPE      ProcessorMicrocodeType;\r
-  ///\r
-  /// Indicates the revision number of this microcode.\r
-  ///\r
-  UINT32                            ProcessorMicrocodeRevisionNumber;\r
-} EFI_PROCESSOR_MICROCODE_REVISION_DATA;\r
-\r
-///\r
-/// This data record refers to the status of the processor.\r
-///\r
-typedef struct {\r
-  UINT32       CpuStatus                 :3; ///< Indicates the status of the processor.\r
-  UINT32       Reserved1                 :3; ///< Reserved for future use. Should be set to zero.\r
-  UINT32       SocketPopulated           :1; ///< Indicates if the processor is socketed or not.\r
-  UINT32       Reserved2                 :1; ///< Reserved for future use. Should be set to zero.\r
-  UINT32       ApicEnable                :1; ///< Indicates if the APIC is enabled or not.\r
-  UINT32       BootApplicationProcessor  :1; ///< Indicates if this processor is the boot processor.\r
-  UINT32       Reserved3                 :22;///< Reserved for future use. Should be set to zero.\r
-} EFI_PROCESSOR_STATUS_DATA;\r
-\r
-typedef enum {\r
-  EfiCpuStatusUnknown        = 0,\r
-  EfiCpuStatusEnabled        = 1,\r
-  EfiCpuStatusDisabledByUser = 2,\r
-  EfiCpuStatusDisabledbyBios = 3,\r
-  EfiCpuStatusIdle           = 4,\r
-  EfiCpuStatusOther          = 7\r
-} EFI_CPU_STATUS;\r
-\r
-typedef enum {\r
-  EfiProcessorSocketOther            = 1,\r
-  EfiProcessorSocketUnknown          = 2,\r
-  EfiProcessorSocketDaughterBoard    = 3,\r
-  EfiProcessorSocketZIF              = 4,\r
-  EfiProcessorSocketReplacePiggyBack = 5,\r
-  EfiProcessorSocketNone             = 6,\r
-  EfiProcessorSocketLIF              = 7,\r
-  EfiProcessorSocketSlot1            = 8,\r
-  EfiProcessorSocketSlot2            = 9,\r
-  EfiProcessorSocket370Pin           = 0xA,\r
-  EfiProcessorSocketSlotA            = 0xB,\r
-  EfiProcessorSocketSlotM            = 0xC,\r
-  EfiProcessorSocket423              = 0xD,\r
-  EfiProcessorSocketA462             = 0xE,\r
-  EfiProcessorSocket478              = 0xF,\r
-  EfiProcessorSocket754              = 0x10,\r
-  EfiProcessorSocket940              = 0x11,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiProcessorSocket939              = 0x12,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiProcessorSocketmPGA604          = 0x13,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiProcessorSocketLGA771           = 0x14,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiProcessorSocketLGA775           = 0x15\r
-\r
-} EFI_PROCESSOR_SOCKET_TYPE_DATA;\r
-\r
-typedef STRING_REF                  EFI_PROCESSOR_SOCKET_NAME_DATA;\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In ProcSubclass specification 0.9, the naming is EFI_PROCESSOR_CACHE_ASSOCIATION_DATA.\r
-/// Keep it unchanged for backward compatibilty.\r
-///\r
-typedef EFI_INTER_LINK_DATA         EFI_CACHE_ASSOCIATION_DATA;\r
-\r
-///\r
-/// This data record refers to the health status of the processor.\r
-///\r
-/// Inconsistent with specification here:\r
-/// In ProcSubclass specification 0.9, the naming is EFI_PROCESSOR_HEALTH_STATUS_DATA.\r
-/// Keep it unchanged for backward compatibilty.\r
-///\r
-typedef enum {\r
-  EfiProcessorHealthy        = 1,\r
-  EfiProcessorPerfRestricted = 2,\r
-  EfiProcessorFuncRestricted = 3\r
-} EFI_PROCESSOR_HEALTH_STATUS;\r
-\r
-///\r
-/// This data record refers to the package number of this processor. Multiple logical processors can\r
-/// exist in a system and each logical processor can be correlated to the physical processor using this\r
-/// record type.\r
-///\r
-typedef UINTN                       EFI_PROCESSOR_PACKAGE_NUMBER_DATA;\r
-\r
-typedef UINT8                       EFI_PROCESSOR_CORE_COUNT_DATA;\r
-typedef UINT8                       EFI_PROCESSOR_ENABLED_CORE_COUNT_DATA;\r
-typedef UINT8                       EFI_PROCESSOR_THREAD_COUNT_DATA;\r
-\r
-typedef struct {\r
-  UINT16  Reserved              :1;\r
-  UINT16  Unknown               :1;\r
-  UINT16  Capable64Bit          :1;\r
-  UINT16  Reserved2             :13;\r
-} EFI_PROCESSOR_CHARACTERISTICS_DATA;\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In ProcSubclass specification 0.9, the enumeration type data structure is NOT defined.\r
-/// The equivalent in specification is\r
-///      #define EFI_PROCESSOR_FREQUENCY_RECORD_NUMBER           0x00000001\r
-///      #define EFI_PROCESSOR_BUS_FREQUENCY_RECORD_NUMBER       0x00000002\r
-///      #define EFI_PROCESSOR_VERSION_RECORD_NUMBER             0x00000003\r
-///      #define EFI_PROCESSOR_MANUFACTURER_RECORD_NUMBER        0x00000004\r
-///      #define EFI_PROCESSOR_SERIAL_NUMBER_RECORD_NUMBER       0x00000005\r
-///      #define EFI_PROCESSOR_ID_RECORD_NUMBER                  0x00000006\r
-///      #define EFI_PROCESSOR_TYPE_RECORD_NUMBER                0x00000007\r
-///      #define EFI_PROCESSOR_FAMILY_RECORD_NUMBER              0x00000008\r
-///      #define EFI_PROCESSOR_VOLTAGE_RECORD_NUMBER             0x00000009\r
-///      #define EFI_PROCESSOR_APIC_BASE_ADDRESS_RECORD_NUMBER   0x0000000A\r
-///      #define EFI_PROCESSOR_APIC_ID_RECORD_NUMBER             0x0000000B\r
-///      #define EFI_PROCESSOR_APIC_VER_NUMBER_RECORD_NUMBER     0x0000000C\r
-///      #define EFI_PROCESSOR_MICROCODE_REVISION_RECORD_NUMBER  0x0000000D\r
-///      #define EFI_PROCESSOR_STATUS_RECORD_NUMBER              0x0000000E\r
-///      #define EFI_PROCESSOR_SOCKET_TYPE_RECORD_NUMBER         0x0000000F\r
-///      #define EFI_PROCESSOR_SOCKET_NAME_RECORD_NUMBER         0x00000010\r
-///      #define EFI_PROCESSOR_CACHE_ASSOCIATION_RECORD_NUMBER   0x00000011\r
-///      #define EFI_PROCESSOR_MAX_FREQUENCY_RECORD_NUMBER       0x00000012\r
-///      #define EFI_PROCESSOR_ASSET_TAG_RECORD_NUMBER           0x00000013\r
-///      #define EFI_PROCESSOR_MAX_FSB_FREQUENCY_RECORD_NUMBER   0x00000014\r
-///      #define EFI_PROCESSOR_PACKAGE_NUMBER_RECORD_NUMBER      0x00000015\r
-///      #define EFI_PROCESSOR_FREQUENCY_LIST_RECORD_NUMBER      0x00000016\r
-///      #define EFI_PROCESSOR_FSB_FREQUENCY_LIST_RECORD_NUMBER  0x00000017\r
-///      #define EFI_PROCESSOR_HEALTH_STATUS_RECORD_NUMBER       0x00000018\r
-///\r
-/// Keep the definition unchanged for backward compatibility.\r
-typedef enum {\r
-  ProcessorCoreFrequencyRecordType     = 1,\r
-  ProcessorFsbFrequencyRecordType      = 2,\r
-  ProcessorVersionRecordType           = 3,\r
-  ProcessorManufacturerRecordType      = 4,\r
-  ProcessorSerialNumberRecordType      = 5,\r
-  ProcessorIdRecordType                = 6,\r
-  ProcessorTypeRecordType              = 7,\r
-  ProcessorFamilyRecordType            = 8,\r
-  ProcessorVoltageRecordType           = 9,\r
-  ProcessorApicBaseAddressRecordType   = 10,\r
-  ProcessorApicIdRecordType            = 11,\r
-  ProcessorApicVersionNumberRecordType = 12,\r
-  CpuUcodeRevisionDataRecordType       = 13,\r
-  ProcessorStatusRecordType            = 14,\r
-  ProcessorSocketTypeRecordType        = 15,\r
-  ProcessorSocketNameRecordType        = 16,\r
-  CacheAssociationRecordType           = 17,\r
-  ProcessorMaxCoreFrequencyRecordType  = 18,\r
-  ProcessorAssetTagRecordType          = 19,\r
-  ProcessorMaxFsbFrequencyRecordType   = 20,\r
-  ProcessorPackageNumberRecordType     = 21,\r
-  ProcessorCoreFrequencyListRecordType = 22,\r
-  ProcessorFsbFrequencyListRecordType  = 23,\r
-  ProcessorHealthStatusRecordType      = 24,\r
-  ProcessorCoreCountRecordType         = 25,\r
-  ProcessorEnabledCoreCountRecordType  = 26,\r
-  ProcessorThreadCountRecordType       = 27,\r
-  ProcessorCharacteristicsRecordType   = 28,\r
-  ProcessorFamily2RecordType           = 29,\r
-  ProcessorPartNumberRecordType        = 30,\r
-} EFI_CPU_VARIABLE_RECORD_TYPE;\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In ProcSubclass specification 0.9, the union type data structure is NOT defined.\r
-/// It's implementation-specific to simplify the code logic.\r
-///\r
-typedef union {\r
-  EFI_PROCESSOR_CORE_FREQUENCY_LIST_DATA  ProcessorCoreFrequencyList;\r
-  EFI_PROCESSOR_FSB_FREQUENCY_LIST_DATA   ProcessorFsbFrequencyList;\r
-  EFI_PROCESSOR_SERIAL_NUMBER_DATA        ProcessorSerialNumber;\r
-  EFI_PROCESSOR_CORE_FREQUENCY_DATA       ProcessorCoreFrequency;\r
-  EFI_PROCESSOR_FSB_FREQUENCY_DATA        ProcessorFsbFrequency;\r
-  EFI_PROCESSOR_MAX_CORE_FREQUENCY_DATA   ProcessorMaxCoreFrequency;\r
-  EFI_PROCESSOR_MAX_FSB_FREQUENCY_DATA    ProcessorMaxFsbFrequency;\r
-  EFI_PROCESSOR_VERSION_DATA              ProcessorVersion;\r
-  EFI_PROCESSOR_MANUFACTURER_DATA         ProcessorManufacturer;\r
-  EFI_PROCESSOR_ID_DATA                   ProcessorId;\r
-  EFI_PROCESSOR_TYPE_DATA                 ProcessorType;\r
-  EFI_PROCESSOR_FAMILY_DATA               ProcessorFamily;\r
-  EFI_PROCESSOR_VOLTAGE_DATA              ProcessorVoltage;\r
-  EFI_PROCESSOR_APIC_BASE_ADDRESS_DATA    ProcessorApicBase;\r
-  EFI_PROCESSOR_APIC_ID_DATA              ProcessorApicId;\r
-  EFI_PROCESSOR_APIC_VERSION_NUMBER_DATA  ProcessorApicVersionNumber;\r
-  EFI_PROCESSOR_MICROCODE_REVISION_DATA   CpuUcodeRevisionData;\r
-  EFI_PROCESSOR_STATUS_DATA               ProcessorStatus;\r
-  EFI_PROCESSOR_SOCKET_TYPE_DATA          ProcessorSocketType;\r
-  EFI_PROCESSOR_SOCKET_NAME_DATA          ProcessorSocketName;\r
-  EFI_PROCESSOR_ASSET_TAG_DATA            ProcessorAssetTag;\r
-  EFI_PROCESSOR_PART_NUMBER_DATA          ProcessorPartNumber;\r
-  EFI_PROCESSOR_HEALTH_STATUS             ProcessorHealthStatus;\r
-  EFI_PROCESSOR_PACKAGE_NUMBER_DATA       ProcessorPackageNumber;\r
-  EFI_PROCESSOR_CORE_COUNT_DATA           ProcessorCoreCount;\r
-  EFI_PROCESSOR_ENABLED_CORE_COUNT_DATA   ProcessorEnabledCoreCount;\r
-  EFI_PROCESSOR_THREAD_COUNT_DATA         ProcessorThreadCount;\r
-  EFI_PROCESSOR_CHARACTERISTICS_DATA      ProcessorCharacteristics;\r
-  EFI_PROCESSOR_FAMILY2_DATA              ProcessorFamily2;\r
-} EFI_CPU_VARIABLE_RECORD;\r
-\r
-typedef struct {\r
-  EFI_SUBCLASS_TYPE1_HEADER         DataRecordHeader;\r
-  EFI_CPU_VARIABLE_RECORD           VariableRecord;\r
-} EFI_CPU_DATA_RECORD;\r
-\r
-#define EFI_CACHE_SUBCLASS_VERSION    0x00010000\r
-\r
-typedef EFI_EXP_BASE2_DATA          EFI_CACHE_SIZE_DATA;\r
-///\r
-/// Inconsistent with specification here:\r
-/// In CacheSubclass specification 0.9, the naming is EFI_CACHE_MAXIMUM_SIZE_DATA.\r
-/// Keep it unchanged for backward compatibilty.\r
-///\r
-typedef EFI_EXP_BASE2_DATA          EFI_MAXIMUM_CACHE_SIZE_DATA;\r
-typedef EFI_EXP_BASE10_DATA         EFI_CACHE_SPEED_DATA;\r
-typedef STRING_REF                  EFI_CACHE_SOCKET_DATA;\r
-\r
-typedef struct {\r
-  UINT32                            Other         :1;\r
-  UINT32                            Unknown       :1;\r
-  UINT32                            NonBurst      :1;\r
-  UINT32                            Burst         :1;\r
-  UINT32                            PipelineBurst :1;\r
-  ///\r
-  /// Inconsistent between CacheSubclass 0.9 and SMBIOS specifications here:\r
-  /// In CacheSubclass specification 0.9, the sequence of Asynchronous and Synchronous fileds\r
-  /// are opposite to SMBIOS specification.\r
-  ///\r
-  UINT32                            Asynchronous  :1;\r
-  UINT32                            Synchronous   :1;\r
-  UINT32                            Reserved      :25;\r
-} EFI_CACHE_SRAM_TYPE_DATA;\r
-\r
-typedef EFI_CACHE_SRAM_TYPE_DATA    EFI_CACHE_SRAM_INSTALL_DATA;\r
-\r
-typedef enum {\r
-  EfiCacheErrorOther     = 1,\r
-  EfiCacheErrorUnknown   = 2,\r
-  EfiCacheErrorNone      = 3,\r
-  EfiCacheErrorParity    = 4,\r
-  EfiCacheErrorSingleBit = 5,\r
-  EfiCacheErrorMultiBit  = 6\r
-} EFI_CACHE_ERROR_TYPE_DATA;\r
-\r
-typedef enum {\r
-  EfiCacheTypeOther       = 1,\r
-  EfiCacheTypeUnknown     = 2,\r
-  EfiCacheTypeInstruction = 3,\r
-  EfiCacheTypeData        = 4,\r
-  EfiCacheTypeUnified     = 5\r
-} EFI_CACHE_TYPE_DATA;\r
-\r
-typedef enum {\r
-  EfiCacheAssociativityOther        = 1,\r
-  EfiCacheAssociativityUnknown      = 2,\r
-  EfiCacheAssociativityDirectMapped = 3,\r
-  EfiCacheAssociativity2Way         = 4,\r
-  EfiCacheAssociativity4Way         = 5,\r
-  EfiCacheAssociativityFully        = 6,\r
-  EfiCacheAssociativity8Way         = 7,\r
-  EfiCacheAssociativity16Way        = 8\r
-} EFI_CACHE_ASSOCIATIVITY_DATA;\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In CacheSubclass 0.9 specification. It defines the field type as UINT16.\r
-/// In fact, it should be UINT32 type because it refers to a 32bit width data.\r
-///\r
-typedef struct {\r
-  UINT32                            Level           :3;\r
-  UINT32                            Socketed        :1;\r
-  UINT32                            Reserved2       :1;\r
-  UINT32                            Location        :2;\r
-  UINT32                            Enable          :1;\r
-  UINT32                            OperationalMode :2;\r
-  UINT32                            Reserved1       :22;\r
-} EFI_CACHE_CONFIGURATION_DATA;\r
-\r
-#define EFI_CACHE_L1            1\r
-#define EFI_CACHE_L2            2\r
-#define EFI_CACHE_L3            3\r
-#define EFI_CACHE_L4            4\r
-#define EFI_CACHE_LMAX          EFI_CACHE_L4\r
-\r
-#define EFI_CACHE_SOCKETED      1\r
-#define EFI_CACHE_NOT_SOCKETED  0\r
-\r
-typedef enum {\r
-  EfiCacheInternal = 0,\r
-  EfiCacheExternal = 1,\r
-  EfiCacheReserved = 2,\r
-  EfiCacheUnknown  = 3\r
-} EFI_CACHE_LOCATION;\r
-\r
-#define EFI_CACHE_ENABLED       1\r
-#define EFI_CACHE_DISABLED      0\r
-\r
-typedef enum {\r
-  EfiCacheWriteThrough = 0,\r
-  EfiCacheWriteBack    = 1,\r
-  EfiCacheDynamicMode  = 2,\r
-  EfiCacheUnknownMode  = 3\r
-} EFI_CACHE_OPERATIONAL_MODE;\r
-\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In CacheSubclass specification 0.9, the enumeration type data structure is NOT defined.\r
-/// The equivalent in specification is\r
-///      #define EFI_CACHE_SIZE_RECORD_NUMBER                    0x00000001\r
-///      #define EFI_CACHE_MAXIMUM_SIZE_RECORD_NUMBER            0x00000002\r
-///      #define EFI_CACHE_SPEED_RECORD_NUMBER                   0x00000003\r
-///      #define EFI_CACHE_SOCKET_RECORD_NUMBER                  0x00000004\r
-///      #define EFI_CACHE_SRAM_SUPPORT_RECORD_NUMBER            0x00000005\r
-///      #define EFI_CACHE_SRAM_INSTALL_RECORD_NUMBER            0x00000006\r
-///      #define EFI_CACHE_ERROR_SUPPORT_RECORD_NUMBER           0x00000007\r
-///      #define EFI_CACHE_TYPE_RECORD_NUMBER                    0x00000008\r
-///      #define EFI_CACHE_ASSOCIATIVITY_RECORD_NUMBER           0x00000009\r
-///      #define EFI_CACHE_CONFIGURATION_RECORD_NUMBER           0x0000000A\r
-/// Keep the definition unchanged for backward compatibility.\r
-///\r
-typedef enum {\r
-  CacheSizeRecordType              = 1,\r
-  MaximumSizeCacheRecordType       = 2,\r
-  CacheSpeedRecordType             = 3,\r
-  CacheSocketRecordType            = 4,\r
-  CacheSramTypeRecordType          = 5,\r
-  CacheInstalledSramTypeRecordType = 6,\r
-  CacheErrorTypeRecordType         = 7,\r
-  CacheTypeRecordType              = 8,\r
-  CacheAssociativityRecordType     = 9,\r
-  CacheConfigRecordType            = 10\r
-} EFI_CACHE_VARIABLE_RECORD_TYPE;\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In CacheSubclass specification 0.9, the union type data structure is NOT defined.\r
-/// It's implementation-specific to simplify the code logic.\r
-///\r
-typedef union {\r
-  EFI_CACHE_SIZE_DATA                         CacheSize;\r
-  EFI_MAXIMUM_CACHE_SIZE_DATA                 MaximumCacheSize;\r
-  EFI_CACHE_SPEED_DATA                        CacheSpeed;\r
-  EFI_CACHE_SOCKET_DATA                       CacheSocket;\r
-  EFI_CACHE_SRAM_TYPE_DATA                    CacheSramType;\r
-  EFI_CACHE_SRAM_TYPE_DATA                    CacheInstalledSramType;\r
-  EFI_CACHE_ERROR_TYPE_DATA                   CacheErrorType;\r
-  EFI_CACHE_TYPE_DATA                         CacheType;\r
-  EFI_CACHE_ASSOCIATIVITY_DATA                CacheAssociativity;\r
-  EFI_CACHE_CONFIGURATION_DATA                CacheConfig;\r
-  EFI_CACHE_ASSOCIATION_DATA                  CacheAssociation;\r
-} EFI_CACHE_VARIABLE_RECORD;\r
-\r
-typedef struct {\r
-   EFI_SUBCLASS_TYPE1_HEADER        DataRecordHeader;\r
-   EFI_CACHE_VARIABLE_RECORD        VariableRecord;\r
-} EFI_CACHE_DATA_RECORD;\r
-\r
-#define EFI_MEMORY_SUBCLASS_VERSION     0x0100\r
-#define EFI_MEMORY_SIZE_RECORD_NUMBER   0x00000001\r
-\r
-typedef enum _EFI_MEMORY_REGION_TYPE {\r
-  EfiMemoryRegionMemory             = 0x01,\r
-  EfiMemoryRegionReserved           = 0x02,\r
-  EfiMemoryRegionAcpi               = 0x03,\r
-  EfiMemoryRegionNvs                = 0x04\r
-} EFI_MEMORY_REGION_TYPE;\r
-\r
-///\r
-/// This data record refers to the size of a memory region. The regions that are\r
-/// described can refer to physical memory, memory-mapped I/O, or reserved BIOS memory regions.\r
-/// The unit of measurement of this data record is in bytes.\r
-///\r
-typedef struct {\r
-  ///\r
-  /// A zero-based value that indicates which processor(s) can access the memory region.\r
-  /// A value of 0xFFFF indicates the region is accessible by all processors.\r
-  ///\r
-  UINT32                            ProcessorNumber;\r
-  ///\r
-  /// A zero-based value that indicates the starting bus that can access the memory region.\r
-  ///\r
-  UINT16                            StartBusNumber;\r
-  ///\r
-  /// A zero-based value that indicates the ending bus that can access the memory region.\r
-  /// A value of 0xFF for a PCI system indicates the region is accessible by all buses and\r
-  /// is global in scope. An example of the EndBusNumber not being 0xFF is a system\r
-  /// with two or more peer-to-host PCI bridges.\r
-  ///\r
-  UINT16                            EndBusNumber;\r
-  ///\r
-  /// The type of memory region from the operating system's point of view.\r
-  /// MemoryRegionType values are equivalent to the legacy INT 15 AX = E820 BIOS\r
-  /// command values.\r
-  ///\r
-  EFI_MEMORY_REGION_TYPE            MemoryRegionType;\r
-  ///\r
-  /// The size of the memory region in bytes.\r
-  ///\r
-  EFI_EXP_BASE2_DATA                MemorySize;\r
-  ///\r
-  /// The starting physical address of the memory region.\r
-  ///\r
-  EFI_PHYSICAL_ADDRESS              MemoryStartAddress;\r
-} EFI_MEMORY_SIZE_DATA;\r
-\r
-\r
-#define EFI_MEMORY_ARRAY_LOCATION_RECORD_NUMBER    0x00000002\r
-\r
-typedef enum _EFI_MEMORY_ARRAY_LOCATION {\r
-  EfiMemoryArrayLocationOther                 = 0x01,\r
-  EfiMemoryArrayLocationUnknown               = 0x02,\r
-  EfiMemoryArrayLocationSystemBoard           = 0x03,\r
-  EfiMemoryArrayLocationIsaAddonCard          = 0x04,\r
-  EfiMemoryArrayLocationEisaAddonCard         = 0x05,\r
-  EfiMemoryArrayLocationPciAddonCard          = 0x06,\r
-  EfiMemoryArrayLocationMcaAddonCard          = 0x07,\r
-  EfiMemoryArrayLocationPcmciaAddonCard       = 0x08,\r
-  EfiMemoryArrayLocationProprietaryAddonCard  = 0x09,\r
-  EfiMemoryArrayLocationNuBus                 = 0x0A,\r
-  EfiMemoryArrayLocationPc98C20AddonCard      = 0xA0,\r
-  EfiMemoryArrayLocationPc98C24AddonCard      = 0xA1,\r
-  EfiMemoryArrayLocationPc98EAddonCard        = 0xA2,\r
-  EfiMemoryArrayLocationPc98LocalBusAddonCard = 0xA3\r
-} EFI_MEMORY_ARRAY_LOCATION;\r
-\r
-typedef enum _EFI_MEMORY_ARRAY_USE {\r
-  EfiMemoryArrayUseOther                      = 0x01,\r
-  EfiMemoryArrayUseUnknown                    = 0x02,\r
-  EfiMemoryArrayUseSystemMemory               = 0x03,\r
-  EfiMemoryArrayUseVideoMemory                = 0x04,\r
-  EfiMemoryArrayUseFlashMemory                = 0x05,\r
-  EfiMemoryArrayUseNonVolatileRam             = 0x06,\r
-  EfiMemoryArrayUseCacheMemory                = 0x07\r
-} EFI_MEMORY_ARRAY_USE;\r
-\r
-typedef enum _EFI_MEMORY_ERROR_CORRECTION {\r
-  EfiMemoryErrorCorrectionOther               = 0x01,\r
-  EfiMemoryErrorCorrectionUnknown             = 0x02,\r
-  EfiMemoryErrorCorrectionNone                = 0x03,\r
-  EfiMemoryErrorCorrectionParity              = 0x04,\r
-  EfiMemoryErrorCorrectionSingleBitEcc        = 0x05,\r
-  EfiMemoryErrorCorrectionMultiBitEcc         = 0x06,\r
-  EfiMemoryErrorCorrectionCrc                 = 0x07\r
-} EFI_MEMORY_ERROR_CORRECTION;\r
-\r
-///\r
-/// This data record refers to the physical memory array. This data record is a structure.\r
-/// The type definition structure for EFI_MEMORY_ARRAY_LOCATION_DATA is in SMBIOS 2.3.4:\r
-/// - Table 3.3.17.1, Type 16, Offset 0x4\r
-/// - Table 3.3.17.2, Type 16, Offset 0x5\r
-/// - Table 3.3.17.3, Type 16, with the following offsets:\r
-///     -- Offset 0x6\r
-///     -- Offset 0x7\r
-///     -- Offset 0xB\r
-///     -- Offset 0xD\r
-///\r
-typedef struct {\r
-  ///\r
-  /// The physical location of the memory array.\r
-  ///\r
-  EFI_MEMORY_ARRAY_LOCATION         MemoryArrayLocation;\r
-  ///\r
-  /// The memory array usage.\r
-  ///\r
-  EFI_MEMORY_ARRAY_USE              MemoryArrayUse;\r
-  ///\r
-  /// The primary error correction or detection supported by this memory array.\r
-  ///\r
-  EFI_MEMORY_ERROR_CORRECTION       MemoryErrorCorrection;\r
-  ///\r
-  /// The maximum memory capacity size in kilobytes. If capacity is unknown, then\r
-  /// values of MaximumMemoryCapacity.Value = 0x00 and\r
-  /// MaximumMemoryCapacity.Exponent = 0x8000 are used.\r
-  ///\r
-  EFI_EXP_BASE2_DATA                MaximumMemoryCapacity;\r
-  ///\r
-  /// The number of memory slots or sockets that are available for memory devices\r
-  /// in this array.\r
-  ///\r
-  UINT16                            NumberMemoryDevices;\r
-} EFI_MEMORY_ARRAY_LOCATION_DATA;\r
-\r
-\r
-#define EFI_MEMORY_ARRAY_LINK_RECORD_NUMBER    0x00000003\r
-\r
-typedef enum _EFI_MEMORY_FORM_FACTOR {\r
-  EfiMemoryFormFactorOther                    = 0x01,\r
-  EfiMemoryFormFactorUnknown                  = 0x02,\r
-  EfiMemoryFormFactorSimm                     = 0x03,\r
-  EfiMemoryFormFactorSip                      = 0x04,\r
-  EfiMemoryFormFactorChip                     = 0x05,\r
-  EfiMemoryFormFactorDip                      = 0x06,\r
-  EfiMemoryFormFactorZip                      = 0x07,\r
-  EfiMemoryFormFactorProprietaryCard          = 0x08,\r
-  EfiMemoryFormFactorDimm                     = 0x09,\r
-  EfiMemoryFormFactorTsop                     = 0x0A,\r
-  EfiMemoryFormFactorRowOfChips               = 0x0B,\r
-  EfiMemoryFormFactorRimm                     = 0x0C,\r
-  EfiMemoryFormFactorSodimm                   = 0x0D,\r
-  EfiMemoryFormFactorSrimm                    = 0x0E,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in MemSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiMemoryFormFactorFbDimm                   = 0x0F\r
-} EFI_MEMORY_FORM_FACTOR;\r
-\r
-typedef enum _EFI_MEMORY_ARRAY_TYPE {\r
-  EfiMemoryTypeOther                          = 0x01,\r
-  EfiMemoryTypeUnknown                        = 0x02,\r
-  EfiMemoryTypeDram                           = 0x03,\r
-  EfiMemoryTypeEdram                          = 0x04,\r
-  EfiMemoryTypeVram                           = 0x05,\r
-  EfiMemoryTypeSram                           = 0x06,\r
-  EfiMemoryTypeRam                            = 0x07,\r
-  EfiMemoryTypeRom                            = 0x08,\r
-  EfiMemoryTypeFlash                          = 0x09,\r
-  EfiMemoryTypeEeprom                         = 0x0A,\r
-  EfiMemoryTypeFeprom                         = 0x0B,\r
-  EfiMemoryTypeEprom                          = 0x0C,\r
-  EfiMemoryTypeCdram                          = 0x0D,\r
-  EfiMemoryType3Dram                          = 0x0E,\r
-  EfiMemoryTypeSdram                          = 0x0F,\r
-  EfiMemoryTypeSgram                          = 0x10,\r
-  EfiMemoryTypeRdram                          = 0x11,\r
-  EfiMemoryTypeDdr                            = 0x12,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in MemSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiMemoryTypeDdr2                           = 0x13,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in MemSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiMemoryTypeDdr2FbDimm                     = 0x14\r
-} EFI_MEMORY_ARRAY_TYPE;\r
-\r
-typedef struct {\r
-  UINT32                            Reserved        :1;\r
-  UINT32                            Other           :1;\r
-  UINT32                            Unknown         :1;\r
-  UINT32                            FastPaged       :1;\r
-  UINT32                            StaticColumn    :1;\r
-  UINT32                            PseudoStatic    :1;\r
-  UINT32                            Rambus          :1;\r
-  UINT32                            Synchronous     :1;\r
-  UINT32                            Cmos            :1;\r
-  UINT32                            Edo             :1;\r
-  UINT32                            WindowDram      :1;\r
-  UINT32                            CacheDram       :1;\r
-  UINT32                            Nonvolatile     :1;\r
-  UINT32                            Reserved1       :19;\r
-} EFI_MEMORY_TYPE_DETAIL;\r
-\r
-typedef enum {\r
-  EfiMemoryStateEnabled      = 0,\r
-  EfiMemoryStateUnknown      = 1,\r
-  EfiMemoryStateUnsupported  = 2,\r
-  EfiMemoryStateError        = 3,\r
-  EfiMemoryStateAbsent       = 4,\r
-  EfiMemoryStateDisabled     = 5,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in MemSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiMemoryStatePartial      = 6\r
-} EFI_MEMORY_STATE;\r
-\r
-///\r
-/// This data record describes a memory device. This data record is a structure.\r
-/// The type definition structure for EFI_MEMORY_ARRAY_LINK_DATA is in SMBIOS 2.3.4.\r
-///\r
-typedef struct {\r
-  ///\r
-  /// A string that identifies the physically labeled socket or board position where the\r
-  /// memory device is located.\r
-  ///\r
-  STRING_REF                        MemoryDeviceLocator;\r
-  ///\r
-  /// A string denoting the physically labeled bank where the memory device is located.\r
-  ///\r
-  STRING_REF                        MemoryBankLocator;\r
-  ///\r
-  /// A string denoting the memory manufacturer.\r
-  ///\r
-  STRING_REF                        MemoryManufacturer;\r
-  ///\r
-  /// A string denoting the serial number of the memory device.\r
-  ///\r
-  STRING_REF                        MemorySerialNumber;\r
-  ///\r
-  /// The asset tag of the memory device.\r
-  ///\r
-  STRING_REF                        MemoryAssetTag;\r
-  ///\r
-  /// A string denoting the part number of the memory device.\r
-  ///\r
-  STRING_REF                        MemoryPartNumber;\r
-  ///\r
-  /// A link to a memory array structure set.\r
-  ///\r
-  EFI_INTER_LINK_DATA               MemoryArrayLink;\r
-  ///\r
-  /// A link to a memory array structure set.\r
-  ///\r
-  EFI_INTER_LINK_DATA               MemorySubArrayLink;\r
-  ///\r
-  /// The total width in bits of this memory device. If there are no error correcting bits,\r
-  /// then the total width equals the data width. If the width is unknown, then set the field\r
-  /// to 0xFFFF.\r
-  ///\r
-  UINT16                            MemoryTotalWidth;\r
-  ///\r
-  /// The data width in bits of the memory device. A data width of 0x00 and a total width\r
-  /// of 0x08 indicate that the device is used solely for error correction.\r
-  ///\r
-  UINT16                            MemoryDataWidth;\r
-  ///\r
-  /// The size in bytes of the memory device. A value of 0x00 denotes that no device is\r
-  /// installed, while a value of all Fs denotes that the size is not known.\r
-  ///\r
-  EFI_EXP_BASE2_DATA                MemoryDeviceSize;\r
-  ///\r
-  /// The form factor of the memory device.\r
-  ///\r
-  EFI_MEMORY_FORM_FACTOR            MemoryFormFactor;\r
-  ///\r
-  /// A memory device set that must be populated with all devices of the same type and\r
-  /// size. A value of 0x00 indicates that the device is not part of any set. A value of 0xFF\r
-  /// indicates that the attribute is unknown. Any other value denotes the set number.\r
-  ///\r
-  UINT8                             MemoryDeviceSet;\r
-  ///\r
-  /// The memory type in the socket.\r
-  ///\r
-  EFI_MEMORY_ARRAY_TYPE             MemoryType;\r
-  ///\r
-  /// The memory type details.\r
-  ///\r
-  EFI_MEMORY_TYPE_DETAIL            MemoryTypeDetail;\r
-  ///\r
-  /// The memory speed in megahertz (MHz). A value of 0x00 denotes that\r
-  /// the speed is unknown.\r
-  /// Inconsistent with specification here:\r
-  /// In MemSubclass specification 0.9, the naming is MemoryTypeSpeed.\r
-  /// Keep it unchanged for backward compatibilty.\r
-  ///\r
-  EFI_EXP_BASE10_DATA               MemorySpeed;\r
-  ///\r
-  /// The memory state.\r
-  ///\r
-  EFI_MEMORY_STATE                  MemoryState;\r
-} EFI_MEMORY_ARRAY_LINK_DATA;\r
-\r
-\r
-#define EFI_MEMORY_ARRAY_START_ADDRESS_RECORD_NUMBER    0x00000004\r
-\r
-///\r
-/// This data record refers to a specified physical memory array associated with\r
-/// a given memory range.\r
-///\r
-typedef struct {\r
-  ///\r
-  /// The starting physical address in bytes of memory mapped to a specified physical\r
-  /// memory array.\r
-  ///\r
-  EFI_PHYSICAL_ADDRESS              MemoryArrayStartAddress;\r
-  ///\r
-  /// The last physical address in bytes of memory mapped to a specified physical memory\r
-  /// array.\r
-  ///\r
-  EFI_PHYSICAL_ADDRESS              MemoryArrayEndAddress;\r
-  ///\r
-  /// See Physical Memory Array (Type 16) for physical memory array structures.\r
-  ///\r
-  EFI_INTER_LINK_DATA               PhysicalMemoryArrayLink;\r
-  ///\r
-  /// The number of memory devices that form a single row of memory for the address\r
-  /// partition.\r
-  ///\r
-  UINT16                            MemoryArrayPartitionWidth;\r
-} EFI_MEMORY_ARRAY_START_ADDRESS_DATA;\r
-\r
-\r
-#define EFI_MEMORY_DEVICE_START_ADDRESS_RECORD_NUMBER    0x00000005\r
-\r
-///\r
-/// This data record refers to a physical memory device that is associated with\r
-/// a given memory range.\r
-///\r
-typedef struct {\r
-  ///\r
-  /// The starting physical address that is associated with the device.\r
-  ///\r
-  EFI_PHYSICAL_ADDRESS              MemoryDeviceStartAddress;\r
-  ///\r
-  /// The ending physical address that is associated with the device.\r
-  ///\r
-  EFI_PHYSICAL_ADDRESS              MemoryDeviceEndAddress;\r
-  ///\r
-  /// A link to the memory device data structure.\r
-  ///\r
-  EFI_INTER_LINK_DATA               PhysicalMemoryDeviceLink;\r
-  ///\r
-  /// A link to the memory array data structure.\r
-  ///\r
-  EFI_INTER_LINK_DATA               PhysicalMemoryArrayLink;\r
-  ///\r
-  /// The position of the memory device in a row. A value of 0x00 is reserved and a value\r
-  /// of 0xFF indicates that the position is unknown.\r
-  ///\r
-  UINT8                             MemoryDevicePartitionRowPosition;\r
-  ///\r
-  /// The position of the device in an interleave.\r
-  ///\r
-  UINT8                             MemoryDeviceInterleavePosition;\r
-  ///\r
-  /// The maximum number of consecutive rows from the device that are accessed in a\r
-  /// single interleave transfer. A value of 0x00 indicates that the device is not interleaved\r
-  /// and a value of 0xFF indicates that the interleave configuration is unknown.\r
-  ///\r
-  UINT8                             MemoryDeviceInterleaveDataDepth;\r
-} EFI_MEMORY_DEVICE_START_ADDRESS_DATA;\r
-\r
-\r
-//\r
-//  Memory. Channel Device Type -  SMBIOS Type 37\r
-//\r
-\r
-#define EFI_MEMORY_CHANNEL_TYPE_RECORD_NUMBER    0x00000006\r
-\r
-typedef enum _EFI_MEMORY_CHANNEL_TYPE {\r
-  EfiMemoryChannelTypeOther                   = 1,\r
-  EfiMemoryChannelTypeUnknown                 = 2,\r
-  EfiMemoryChannelTypeRambus                  = 3,\r
-  EfiMemoryChannelTypeSyncLink                = 4\r
-} EFI_MEMORY_CHANNEL_TYPE;\r
-\r
-///\r
-/// This data record refers the type of memory that is associated with the channel. This data record is a\r
-/// structure.\r
-/// The type definition structure for EFI_MEMORY_CHANNEL_TYPE_DATA is in SMBIOS 2.3.4,\r
-/// Table 3.3.38, Type 37, with the following offsets:\r
-///   - Offset 0x4\r
-///   - Offset 0x5\r
-///   - Offset 0x6\r
-///\r
-typedef struct {\r
-  ///\r
-  /// The type of memory that is associated with the channel.\r
-  ///\r
-  EFI_MEMORY_CHANNEL_TYPE           MemoryChannelType;\r
-  ///\r
-  /// The maximum load that is supported by the channel.\r
-  ///\r
-  UINT8                             MemoryChannelMaximumLoad;\r
-  ///\r
-  /// The number of memory devices on this channel.\r
-  ///\r
-  UINT8                             MemoryChannelDeviceCount;\r
-} EFI_MEMORY_CHANNEL_TYPE_DATA;\r
-\r
-#define EFI_MEMORY_CHANNEL_DEVICE_RECORD_NUMBER    0x00000007\r
-\r
-///\r
-/// This data record refers to the memory device that is associated with the memory channel. This data\r
-/// record is a structure.\r
-/// The type definition structure for EFI_MEMORY_CHANNEL_DEVICE_DATA is in SMBIOS 2.3.4,\r
-/// Table 3.3.38, Type 37, with the following offsets:\r
-///   - Offset 0x7\r
-///   - Offset 0x8\r
-///\r
-typedef struct {\r
-  ///\r
-  /// A number between one and MemoryChannelDeviceCount plus an arbitrary base.\r
-  ///\r
-  UINT8                             DeviceId;\r
-  ///\r
-  /// The Link of the associated memory device. See Memory Device (Type 17) for\r
-  /// memory devices.\r
-  ///\r
-  EFI_INTER_LINK_DATA               DeviceLink;\r
-  ///\r
-  /// The number of load units that this device consumes.\r
-  ///\r
-  UINT8                             MemoryChannelDeviceLoad;\r
-} EFI_MEMORY_CHANNEL_DEVICE_DATA;\r
-\r
-//\r
-//  Memory. Controller Information - SMBIOS Type 5\r
-//\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 type 5.\r
-///\r
-#define EFI_MEMORY_CONTROLLER_INFORMATION_RECORD_NUMBER    0x00000008\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 type 5.\r
-///\r
-typedef enum {\r
-  EfiErrorDetectingMethodOther   = 1,\r
-  EfiErrorDetectingMethodUnknown = 2,\r
-  EfiErrorDetectingMethodNone    = 3,\r
-  EfiErrorDetectingMethodParity  = 4,\r
-  EfiErrorDetectingMethod32Ecc   = 5,\r
-  EfiErrorDetectingMethod64Ecc   = 6,\r
-  EfiErrorDetectingMethod128Ecc  = 7,\r
-  EfiErrorDetectingMethodCrc     = 8\r
-} EFI_MEMORY_ERROR_DETECT_METHOD_TYPE;\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 type 5.\r
-///\r
-typedef struct {\r
-  UINT8                             Other                 :1;\r
-  UINT8                             Unknown               :1;\r
-  UINT8                             None                  :1;\r
-  UINT8                             SingleBitErrorCorrect :1;\r
-  UINT8                             DoubleBitErrorCorrect :1;\r
-  UINT8                             ErrorScrubbing        :1;\r
-  UINT8                             Reserved              :2;\r
-} EFI_MEMORY_ERROR_CORRECT_CAPABILITY;\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 type 5.\r
-///\r
-typedef enum {\r
-  EfiMemoryInterleaveOther      = 1,\r
-  EfiMemoryInterleaveUnknown    = 2,\r
-  EfiMemoryInterleaveOneWay     = 3,\r
-  EfiMemoryInterleaveTwoWay     = 4,\r
-  EfiMemoryInterleaveFourWay    = 5,\r
-  EfiMemoryInterleaveEightWay   = 6,\r
-  EfiMemoryInterleaveSixteenWay = 7\r
-} EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE;\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 type 5.\r
-///\r
-typedef struct {\r
-  UINT16                            Other    :1;\r
-  UINT16                            Unknown  :1;\r
-  UINT16                            SeventyNs:1;\r
-  UINT16                            SixtyNs  :1;\r
-  UINT16                            FiftyNs  :1;\r
-  UINT16                            Reserved :11;\r
-} EFI_MEMORY_SPEED_TYPE;\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 type 5.\r
-///\r
-typedef struct {\r
-  UINT16                            Other       :1;\r
-  UINT16                            Unknown     :1;\r
-  UINT16                            Standard    :1;\r
-  UINT16                            FastPageMode:1;\r
-  UINT16                            EDO         :1;\r
-  UINT16                            Parity      :1;\r
-  UINT16                            ECC         :1;\r
-  UINT16                            SIMM        :1;\r
-  UINT16                            DIMM        :1;\r
-  UINT16                            BurstEdo    :1;\r
-  UINT16                            SDRAM       :1;\r
-  UINT16                            Reserved    :5;\r
-} EFI_MEMORY_SUPPORTED_TYPE;\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 type 5.\r
-///\r
-typedef struct {\r
-  UINT8                             Five    :1;\r
-  UINT8                             Three   :1;\r
-  UINT8                             Two     :1;\r
-  UINT8                             Reserved:5;\r
-} EFI_MEMORY_MODULE_VOLTAGE_TYPE;\r
-\r
-///\r
-/// EFI_MEMORY_CONTROLLER_INFORMATION is obsolete\r
-/// Use EFI_MEMORY_CONTROLLER_INFORMATION_DATA instead\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 type 5.\r
-///\r
-typedef struct {\r
-  EFI_MEMORY_ERROR_DETECT_METHOD_TYPE ErrorDetectingMethod;\r
-  EFI_MEMORY_ERROR_CORRECT_CAPABILITY ErrorCorrectingCapability;\r
-  EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE  MemorySupportedInterleave;\r
-  EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE  MemoryCurrentInterleave;\r
-  UINT8                               MaxMemoryModuleSize;\r
-  EFI_MEMORY_SPEED_TYPE               MemorySpeedType;\r
-  EFI_MEMORY_SUPPORTED_TYPE           MemorySupportedType;\r
-  EFI_MEMORY_MODULE_VOLTAGE_TYPE      MemoryModuleVoltage;\r
-  UINT8                               NumberofMemorySlot;\r
-  EFI_MEMORY_ERROR_CORRECT_CAPABILITY EnabledCorrectingCapability;\r
-  UINT16                              *MemoryModuleConfigHandles;\r
-} EFI_MEMORY_CONTROLLER_INFORMATION;\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 type 5.\r
-///\r
-typedef struct {\r
-  EFI_MEMORY_ERROR_DETECT_METHOD_TYPE   ErrorDetectingMethod;\r
-  EFI_MEMORY_ERROR_CORRECT_CAPABILITY   ErrorCorrectingCapability;\r
-  EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE    MemorySupportedInterleave;\r
-  EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE    MemoryCurrentInterleave;\r
-  UINT8                                 MaxMemoryModuleSize;\r
-  EFI_MEMORY_SPEED_TYPE                 MemorySpeedType;\r
-  EFI_MEMORY_SUPPORTED_TYPE             MemorySupportedType;\r
-  EFI_MEMORY_MODULE_VOLTAGE_TYPE        MemoryModuleVoltage;\r
-  UINT8                                 NumberofMemorySlot;\r
-  EFI_MEMORY_ERROR_CORRECT_CAPABILITY   EnabledCorrectingCapability;\r
-  EFI_INTER_LINK_DATA                   MemoryModuleConfig[1];\r
-} EFI_MEMORY_CONTROLLER_INFORMATION_DATA;\r
-\r
-///\r
-/// Memory. Error Information - SMBIOS Type 18\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 type 18.\r
-///\r
-#define EFI_MEMORY_32BIT_ERROR_INFORMATION_RECORD_NUMBER    0x00000009\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 type 18.\r
-///\r
-typedef enum {\r
-  EfiMemoryErrorOther             = 1,\r
-  EfiMemoryErrorUnknown           = 2,\r
-  EfiMemoryErrorOk                = 3,\r
-  EfiMemoryErrorBadRead           = 4,\r
-  EfiMemoryErrorParity            = 5,\r
-  EfiMemoryErrorSigleBit          = 6,\r
-  EfiMemoryErrorDoubleBit         = 7,\r
-  EfiMemoryErrorMultiBit          = 8,\r
-  EfiMemoryErrorNibble            = 9,\r
-  EfiMemoryErrorChecksum          = 10,\r
-  EfiMemoryErrorCrc               = 11,\r
-  EfiMemoryErrorCorrectSingleBit  = 12,\r
-  EfiMemoryErrorCorrected         = 13,\r
-  EfiMemoryErrorUnCorrectable     = 14\r
-} EFI_MEMORY_ERROR_TYPE;\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 type 18.\r
-///\r
-typedef enum {\r
-  EfiMemoryGranularityOther               = 1,\r
-  EfiMemoryGranularityOtherUnknown        = 2,\r
-  EfiMemoryGranularityDeviceLevel         = 3,\r
-  EfiMemoryGranularityMemPartitionLevel   = 4\r
-} EFI_MEMORY_ERROR_GRANULARITY_TYPE;\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 type 18.\r
-///\r
-typedef enum {\r
-  EfiMemoryErrorOperationOther            = 1,\r
-  EfiMemoryErrorOperationUnknown          = 2,\r
-  EfiMemoryErrorOperationRead             = 3,\r
-  EfiMemoryErrorOperationWrite            = 4,\r
-  EfiMemoryErrorOperationPartialWrite     = 5\r
-} EFI_MEMORY_ERROR_OPERATION_TYPE;\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 type 18.\r
-///\r
-typedef struct {\r
-  EFI_MEMORY_ERROR_TYPE               MemoryErrorType;\r
-  EFI_MEMORY_ERROR_GRANULARITY_TYPE   MemoryErrorGranularity;\r
-  EFI_MEMORY_ERROR_OPERATION_TYPE     MemoryErrorOperation;\r
-  UINT32                              VendorSyndrome;\r
-  UINT32                              MemoryArrayErrorAddress;\r
-  UINT32                              DeviceErrorAddress;\r
-  UINT32                              DeviceErrorResolution;\r
-} EFI_MEMORY_32BIT_ERROR_INFORMATION;\r
-\r
-///\r
-/// Memory. Error Information - SMBIOS Type 33.\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 type 33.\r
-///\r
-#define EFI_MEMORY_64BIT_ERROR_INFORMATION_RECORD_NUMBER    0x0000000A\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 type 33.\r
-///\r
-typedef struct {\r
-  EFI_MEMORY_ERROR_TYPE             MemoryErrorType;\r
-  EFI_MEMORY_ERROR_GRANULARITY_TYPE MemoryErrorGranularity;\r
-  EFI_MEMORY_ERROR_OPERATION_TYPE   MemoryErrorOperation;\r
-  UINT32                            VendorSyndrome;\r
-  UINT64                            MemoryArrayErrorAddress;\r
-  UINT64                            DeviceErrorAddress;\r
-  UINT32                            DeviceErrorResolution;\r
-} EFI_MEMORY_64BIT_ERROR_INFORMATION;\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It is implementation-specific to simplify the code logic.\r
-///\r
-typedef union _EFI_MEMORY_SUBCLASS_RECORDS {\r
-  EFI_MEMORY_SIZE_DATA                 SizeData;\r
-  EFI_MEMORY_ARRAY_LOCATION_DATA       ArrayLocationData;\r
-  EFI_MEMORY_ARRAY_LINK_DATA           ArrayLink;\r
-  EFI_MEMORY_ARRAY_START_ADDRESS_DATA  ArrayStartAddress;\r
-  EFI_MEMORY_DEVICE_START_ADDRESS_DATA DeviceStartAddress;\r
-  EFI_MEMORY_CHANNEL_TYPE_DATA         ChannelTypeData;\r
-  EFI_MEMORY_CHANNEL_DEVICE_DATA       ChannelDeviceData;\r
-  EFI_MEMORY_CONTROLLER_INFORMATION    MemoryControllerInfo;\r
-  EFI_MEMORY_32BIT_ERROR_INFORMATION   Memory32bitErrorInfo;\r
-  EFI_MEMORY_64BIT_ERROR_INFORMATION   Memory64bitErrorInfo;\r
-} EFI_MEMORY_SUBCLASS_RECORDS;\r
-\r
-typedef struct {\r
-  EFI_SUBCLASS_TYPE1_HEADER         Header;\r
-  EFI_MEMORY_SUBCLASS_RECORDS       Record;\r
-} EFI_MEMORY_SUBCLASS_DRIVER_DATA;\r
-\r
-#define EFI_MISC_SUBCLASS_VERSION     0x0100\r
-\r
-#pragma pack(1)\r
-\r
-//\r
-// Last PCI Bus Number\r
-//\r
-#define EFI_MISC_LAST_PCI_BUS_RECORD_NUMBER    0x00000001\r
-\r
-typedef struct {\r
-  UINT8                             LastPciBus;\r
-} EFI_MISC_LAST_PCI_BUS_DATA;\r
-\r
-//\r
-// Misc. BIOS Vendor - SMBIOS Type 0\r
-//\r
-#define EFI_MISC_BIOS_VENDOR_RECORD_NUMBER    0x00000002\r
-\r
-typedef struct {\r
-  UINT64                            Reserved1                         :2;\r
-  UINT64                            Unknown                           :1;\r
-  UINT64                            BiosCharacteristicsNotSupported   :1;\r
-  UINT64                            IsaIsSupported                    :1;\r
-  UINT64                            McaIsSupported                    :1;\r
-  UINT64                            EisaIsSupported                   :1;\r
-  UINT64                            PciIsSupported                    :1;\r
-  UINT64                            PcmciaIsSupported                 :1;\r
-  UINT64                            PlugAndPlayIsSupported            :1;\r
-  UINT64                            ApmIsSupported                    :1;\r
-  UINT64                            BiosIsUpgradable                  :1;\r
-  UINT64                            BiosShadowingAllowed              :1;\r
-  UINT64                            VlVesaIsSupported                 :1;\r
-  UINT64                            EscdSupportIsAvailable            :1;\r
-  UINT64                            BootFromCdIsSupported             :1;\r
-  UINT64                            SelectableBootIsSupported         :1;\r
-  UINT64                            RomBiosIsSocketed                 :1;\r
-  UINT64                            BootFromPcmciaIsSupported         :1;\r
-  UINT64                            EDDSpecificationIsSupported       :1;\r
-  UINT64                            JapaneseNecFloppyIsSupported      :1;\r
-  UINT64                            JapaneseToshibaFloppyIsSupported  :1;\r
-  UINT64                            Floppy525_360IsSupported          :1;\r
-  UINT64                            Floppy525_12IsSupported           :1;\r
-  UINT64                            Floppy35_720IsSupported           :1;\r
-  UINT64                            Floppy35_288IsSupported           :1;\r
-  UINT64                            PrintScreenIsSupported            :1;\r
-  UINT64                            Keyboard8042IsSupported           :1;\r
-  UINT64                            SerialIsSupported                 :1;\r
-  UINT64                            PrinterIsSupported                :1;\r
-  UINT64                            CgaMonoIsSupported                :1;\r
-  UINT64                            NecPc98                           :1;\r
-  UINT64                            AcpiIsSupported                   :1;\r
-  UINT64                            UsbLegacyIsSupported              :1;\r
-  UINT64                            AgpIsSupported                    :1;\r
-  UINT64                            I20BootIsSupported                :1;\r
-  UINT64                            Ls120BootIsSupported              :1;\r
-  UINT64                            AtapiZipDriveBootIsSupported      :1;\r
-  UINT64                            Boot1394IsSupported               :1;\r
-  UINT64                            SmartBatteryIsSupported           :1;\r
-  UINT64                            BiosBootSpecIsSupported           :1;\r
-  UINT64                            FunctionKeyNetworkBootIsSupported :1;\r
-  UINT64                            Reserved                          :22;\r
-} EFI_MISC_BIOS_CHARACTERISTICS;\r
-\r
-typedef struct {\r
-  UINT64                            BiosReserved  :16;\r
-  UINT64                            SystemReserved:16;\r
-  UINT64                            Reserved      :32;\r
-} EFI_MISC_BIOS_CHARACTERISTICS_EXTENSION;\r
-\r
-typedef struct {\r
-  STRING_REF                        BiosVendor;\r
-  STRING_REF                        BiosVersion;\r
-  STRING_REF                        BiosReleaseDate;\r
-  EFI_PHYSICAL_ADDRESS              BiosStartingAddress;\r
-  EFI_EXP_BASE2_DATA                BiosPhysicalDeviceSize;\r
-  EFI_MISC_BIOS_CHARACTERISTICS     BiosCharacteristics1;\r
-  EFI_MISC_BIOS_CHARACTERISTICS_EXTENSION\r
-                                    BiosCharacteristics2;\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// In MiscSubclass specification 0.9, this data structure and corrsponding fields are NOT defined.\r
-  /// It's introduced for SmBios 2.6 specification type 0.\r
-  ///\r
-  UINT8                             BiosMajorRelease;\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// In MiscSubclass specification 0.9, this data structure and corrsponding fields are NOT defined.\r
-  /// It's introduced for SmBios 2.6 specification type 0.\r
-  ///\r
-  UINT8                             BiosMinorRelease;\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// In MiscSubclass specification 0.9, this data structure and corrsponding fields are NOT defined.\r
-  /// It's introduced for SmBios 2.6 specification type 0.\r
-  ///\r
-  UINT8                             BiosEmbeddedFirmwareMajorRelease;\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// In MiscSubclass specification 0.9, this data structure and corrsponding fields are NOT defined.\r
-  /// It's introduced for SmBios 2.6 specification type 0.\r
-  ///\r
-  UINT8                             BiosEmbeddedFirmwareMinorRelease;\r
-} EFI_MISC_BIOS_VENDOR_DATA;\r
-\r
-//\r
-// Misc. System Manufacturer - SMBIOS Type 1\r
-//\r
-#define EFI_MISC_SYSTEM_MANUFACTURER_RECORD_NUMBER    0x00000003\r
-\r
-typedef enum {\r
-  EfiSystemWakeupTypeReserved        = 0,\r
-  EfiSystemWakeupTypeOther           = 1,\r
-  EfiSystemWakeupTypeUnknown         = 2,\r
-  EfiSystemWakeupTypeApmTimer        = 3,\r
-  EfiSystemWakeupTypeModemRing       = 4,\r
-  EfiSystemWakeupTypeLanRemote       = 5,\r
-  EfiSystemWakeupTypePowerSwitch     = 6,\r
-  EfiSystemWakeupTypePciPme          = 7,\r
-  EfiSystemWakeupTypeAcPowerRestored = 8\r
-} EFI_MISC_SYSTEM_WAKEUP_TYPE;\r
-\r
-typedef struct {\r
-  STRING_REF                        SystemManufacturer;\r
-  STRING_REF                        SystemProductName;\r
-  STRING_REF                        SystemVersion;\r
-  STRING_REF                        SystemSerialNumber;\r
-  EFI_GUID                          SystemUuid;\r
-  EFI_MISC_SYSTEM_WAKEUP_TYPE       SystemWakeupType;\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// In MiscSubclass specification 0.9, this data structure and corrsponding fields are NOT defined.\r
-  /// It's introduced for SmBios 2.6 specification type 1.\r
-  ///\r
-  STRING_REF                        SystemSKUNumber;\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// In MiscSubclass specification 0.9, this data structure and corrsponding fields are NOT defined.\r
-  /// It's introduced for SmBios 2.6 specification type 1.\r
-  ///\r
-  STRING_REF                        SystemFamily;\r
-} EFI_MISC_SYSTEM_MANUFACTURER_DATA;\r
-\r
-//\r
-// Misc. Base Board Manufacturer - SMBIOS Type 2\r
-//\r
-#define EFI_MISC_BASE_BOARD_MANUFACTURER_RECORD_NUMBER    0x00000004\r
-\r
-typedef struct {\r
-  UINT32                            Motherboard           :1;\r
-  UINT32                            RequiresDaughterCard  :1;\r
-  UINT32                            Removable             :1;\r
-  UINT32                            Replaceable           :1;\r
-  UINT32                            HotSwappable          :1;\r
-  UINT32                            Reserved              :27;\r
-} EFI_BASE_BOARD_FEATURE_FLAGS;\r
-\r
-typedef enum {\r
-  EfiBaseBoardTypeUnknown                = 1,\r
-  EfiBaseBoardTypeOther                  = 2,\r
-  EfiBaseBoardTypeServerBlade            = 3,\r
-  EfiBaseBoardTypeConnectivitySwitch     = 4,\r
-  EfiBaseBoardTypeSystemManagementModule = 5,\r
-  EfiBaseBoardTypeProcessorModule        = 6,\r
-  EfiBaseBoardTypeIOModule               = 7,\r
-  EfiBaseBoardTypeMemoryModule           = 8,\r
-  EfiBaseBoardTypeDaughterBoard          = 9,\r
-  EfiBaseBoardTypeMotherBoard            = 0xA,\r
-  EfiBaseBoardTypeProcessorMemoryModule  = 0xB,\r
-  EfiBaseBoardTypeProcessorIOModule      = 0xC,\r
-  EfiBaseBoardTypeInterconnectBoard      = 0xD\r
-} EFI_BASE_BOARD_TYPE;\r
-\r
-typedef struct {\r
-  STRING_REF                        BaseBoardManufacturer;\r
-  STRING_REF                        BaseBoardProductName;\r
-  STRING_REF                        BaseBoardVersion;\r
-  STRING_REF                        BaseBoardSerialNumber;\r
-  STRING_REF                        BaseBoardAssetTag;\r
-  STRING_REF                        BaseBoardChassisLocation;\r
-  EFI_BASE_BOARD_FEATURE_FLAGS      BaseBoardFeatureFlags;\r
-  EFI_BASE_BOARD_TYPE               BaseBoardType;\r
-  EFI_INTER_LINK_DATA               BaseBoardChassisLink;\r
-  UINT32                            BaseBoardNumberLinks;\r
-  EFI_INTER_LINK_DATA               LinkN;\r
-} EFI_MISC_BASE_BOARD_MANUFACTURER_DATA;\r
-\r
-//\r
-// Misc. System/Chassis Enclosure - SMBIOS Type 3\r
-//\r
-#define EFI_MISC_CHASSIS_MANUFACTURER_RECORD_NUMBER    0x00000005\r
-\r
-typedef enum {\r
-  EfiMiscChassisTypeOther               = 0x1,\r
-  EfiMiscChassisTypeUnknown             = 0x2,\r
-  EfiMiscChassisTypeDeskTop             = 0x3,\r
-  EfiMiscChassisTypeLowProfileDesktop   = 0x4,\r
-  EfiMiscChassisTypePizzaBox            = 0x5,\r
-  EfiMiscChassisTypeMiniTower           = 0x6,\r
-  EfiMiscChassisTypeTower               = 0x7,\r
-  EfiMiscChassisTypePortable            = 0x8,\r
-  EfiMiscChassisTypeLapTop              = 0x9,\r
-  EfiMiscChassisTypeNotebook            = 0xA,\r
-  EfiMiscChassisTypeHandHeld            = 0xB,\r
-  EfiMiscChassisTypeDockingStation      = 0xC,\r
-  EfiMiscChassisTypeAllInOne            = 0xD,\r
-  EfiMiscChassisTypeSubNotebook         = 0xE,\r
-  EfiMiscChassisTypeSpaceSaving         = 0xF,\r
-  EfiMiscChassisTypeLunchBox            = 0x10,\r
-  EfiMiscChassisTypeMainServerChassis   = 0x11,\r
-  EfiMiscChassisTypeExpansionChassis    = 0x12,\r
-  EfiMiscChassisTypeSubChassis          = 0x13,\r
-  EfiMiscChassisTypeBusExpansionChassis = 0x14,\r
-  EfiMiscChassisTypePeripheralChassis   = 0x15,\r
-  EfiMiscChassisTypeRaidChassis         = 0x16,\r
-  EfiMiscChassisTypeRackMountChassis    = 0x17,\r
-  EfiMiscChassisTypeSealedCasePc        = 0x18,\r
-  EfiMiscChassisMultiSystemChassis      = 0x19\r
-} EFI_MISC_CHASSIS_TYPE;\r
-\r
-typedef struct {\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// In MiscSubclass 0.9 specification, it has the incorrect field name "EFI_MISC_CHASSIS_TYPE".\r
-  /// Change it to "ChassisType" to pass build.\r
-  ///\r
-  UINT32                            ChassisType       :16;\r
-  UINT32                            ChassisLockPresent:1;\r
-  UINT32                            Reserved          :15;\r
-} EFI_MISC_CHASSIS_STATUS;\r
-\r
-typedef enum {\r
-  EfiChassisStateOther           = 0x01,\r
-  EfiChassisStateUnknown         = 0x02,\r
-  EfiChassisStateSafe            = 0x03,\r
-  EfiChassisStateWarning         = 0x04,\r
-  EfiChassisStateCritical        = 0x05,\r
-  EfiChassisStateNonRecoverable  = 0x06\r
-} EFI_MISC_CHASSIS_STATE;\r
-\r
-typedef enum {\r
-  EfiChassisSecurityStatusOther                          = 0x01,\r
-  EfiChassisSecurityStatusUnknown                        = 0x02,\r
-  EfiChassisSecurityStatusNone                           = 0x03,\r
-  EfiChassisSecurityStatusExternalInterfaceLockedOut     = 0x04,\r
-  EfiChassisSecurityStatusExternalInterfaceLockedEnabled = 0x05\r
-} EFI_MISC_CHASSIS_SECURITY_STATE;\r
-\r
-typedef struct {\r
-  UINT32                            RecordType :1;\r
-  UINT32                            Type       :7;\r
-  UINT32                            Reserved   :24;\r
-} EFI_MISC_ELEMENT_TYPE;\r
-\r
-typedef struct {\r
-  EFI_MISC_ELEMENT_TYPE             ChassisElementType;\r
-  EFI_INTER_LINK_DATA               ChassisElementStructure;\r
-  EFI_BASE_BOARD_TYPE               ChassisBaseBoard;\r
-  UINT32                            ChassisElementMinimum;\r
-  UINT32                            ChassisElementMaximum;\r
-} EFI_MISC_ELEMENTS;\r
-\r
-typedef struct {\r
-  STRING_REF                        ChassisManufacturer;\r
-  STRING_REF                        ChassisVersion;\r
-  STRING_REF                        ChassisSerialNumber;\r
-  STRING_REF                        ChassisAssetTag;\r
-  EFI_MISC_CHASSIS_STATUS           ChassisType;\r
-  EFI_MISC_CHASSIS_STATE            ChassisBootupState;\r
-  EFI_MISC_CHASSIS_STATE            ChassisPowerSupplyState;\r
-  EFI_MISC_CHASSIS_STATE            ChassisThermalState;\r
-  EFI_MISC_CHASSIS_SECURITY_STATE   ChassisSecurityState;\r
-  UINT32                            ChassisOemDefined;\r
-  UINT32                            ChassisHeight;\r
-  UINT32                            ChassisNumberPowerCords;\r
-  UINT32                            ChassisElementCount;\r
-  UINT32                            ChassisElementRecordLength;\r
-  EFI_MISC_ELEMENTS                 ChassisElements;\r
-} EFI_MISC_CHASSIS_MANUFACTURER_DATA;\r
-\r
-//\r
-// Misc. Port Connector Information - SMBIOS Type 8\r
-//\r
-#define EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_RECORD_NUMBER    0x00000006\r
-\r
-typedef enum {\r
-  EfiPortConnectorTypeNone                   = 0x00,\r
-  EfiPortConnectorTypeCentronics             = 0x01,\r
-  EfiPortConnectorTypeMiniCentronics         = 0x02,\r
-  EfiPortConnectorTypeProprietary            = 0x03,\r
-  EfiPortConnectorTypeDB25Male               = 0x04,\r
-  EfiPortConnectorTypeDB25Female             = 0x05,\r
-  EfiPortConnectorTypeDB15Male               = 0x06,\r
-  EfiPortConnectorTypeDB15Female             = 0x07,\r
-  EfiPortConnectorTypeDB9Male                = 0x08,\r
-  EfiPortConnectorTypeDB9Female              = 0x09,\r
-  EfiPortConnectorTypeRJ11                   = 0x0A,\r
-  EfiPortConnectorTypeRJ45                   = 0x0B,\r
-  EfiPortConnectorType50PinMiniScsi          = 0x0C,\r
-  EfiPortConnectorTypeMiniDin                = 0x0D,\r
-  EfiPortConnectorTypeMicriDin               = 0x0E,\r
-  EfiPortConnectorTypePS2                    = 0x0F,\r
-  EfiPortConnectorTypeInfrared               = 0x10,\r
-  EfiPortConnectorTypeHpHil                  = 0x11,\r
-  EfiPortConnectorTypeUsb                    = 0x12,\r
-  EfiPortConnectorTypeSsaScsi                = 0x13,\r
-  EfiPortConnectorTypeCircularDin8Male       = 0x14,\r
-  EfiPortConnectorTypeCircularDin8Female     = 0x15,\r
-  EfiPortConnectorTypeOnboardIde             = 0x16,\r
-  EfiPortConnectorTypeOnboardFloppy          = 0x17,\r
-  EfiPortConnectorType9PinDualInline         = 0x18,\r
-  EfiPortConnectorType25PinDualInline        = 0x19,\r
-  EfiPortConnectorType50PinDualInline        = 0x1A,\r
-  EfiPortConnectorType68PinDualInline        = 0x1B,\r
-  EfiPortConnectorTypeOnboardSoundInput      = 0x1C,\r
-  EfiPortConnectorTypeMiniCentronicsType14   = 0x1D,\r
-  EfiPortConnectorTypeMiniCentronicsType26   = 0x1E,\r
-  EfiPortConnectorTypeHeadPhoneMiniJack      = 0x1F,\r
-  EfiPortConnectorTypeBNC                    = 0x20,\r
-  EfiPortConnectorType1394                   = 0x21,\r
-  EfiPortConnectorTypePC98                   = 0xA0,\r
-  EfiPortConnectorTypePC98Hireso             = 0xA1,\r
-  EfiPortConnectorTypePCH98                  = 0xA2,\r
-  EfiPortConnectorTypePC98Note               = 0xA3,\r
-  EfiPortConnectorTypePC98Full               = 0xA4,\r
-  EfiPortConnectorTypeOther                  = 0xFF\r
-} EFI_MISC_PORT_CONNECTOR_TYPE;\r
-\r
-typedef enum {\r
-  EfiPortTypeNone                      = 0x00,\r
-  EfiPortTypeParallelXtAtCompatible    = 0x01,\r
-  EfiPortTypeParallelPortPs2           = 0x02,\r
-  EfiPortTypeParallelPortEcp           = 0x03,\r
-  EfiPortTypeParallelPortEpp           = 0x04,\r
-  EfiPortTypeParallelPortEcpEpp        = 0x05,\r
-  EfiPortTypeSerialXtAtCompatible      = 0x06,\r
-  EfiPortTypeSerial16450Compatible     = 0x07,\r
-  EfiPortTypeSerial16550Compatible     = 0x08,\r
-  EfiPortTypeSerial16550ACompatible    = 0x09,\r
-  EfiPortTypeScsi                      = 0x0A,\r
-  EfiPortTypeMidi                      = 0x0B,\r
-  EfiPortTypeJoyStick                  = 0x0C,\r
-  EfiPortTypeKeyboard                  = 0x0D,\r
-  EfiPortTypeMouse                     = 0x0E,\r
-  EfiPortTypeSsaScsi                   = 0x0F,\r
-  EfiPortTypeUsb                       = 0x10,\r
-  EfiPortTypeFireWire                  = 0x11,\r
-  EfiPortTypePcmciaTypeI               = 0x12,\r
-  EfiPortTypePcmciaTypeII              = 0x13,\r
-  EfiPortTypePcmciaTypeIII             = 0x14,\r
-  EfiPortTypeCardBus                   = 0x15,\r
-  EfiPortTypeAccessBusPort             = 0x16,\r
-  EfiPortTypeScsiII                    = 0x17,\r
-  EfiPortTypeScsiWide                  = 0x18,\r
-  EfiPortTypePC98                      = 0x19,\r
-  EfiPortTypePC98Hireso                = 0x1A,\r
-  EfiPortTypePCH98                     = 0x1B,\r
-  EfiPortTypeVideoPort                 = 0x1C,\r
-  EfiPortTypeAudioPort                 = 0x1D,\r
-  EfiPortTypeModemPort                 = 0x1E,\r
-  EfiPortTypeNetworkPort               = 0x1F,\r
-  EfiPortType8251Compatible            = 0xA0,\r
-  EfiPortType8251FifoCompatible        = 0xA1,\r
-  EfiPortTypeOther                     = 0xFF\r
-} EFI_MISC_PORT_TYPE;\r
-\r
-typedef struct {\r
-  STRING_REF                        PortInternalConnectorDesignator;\r
-  STRING_REF                        PortExternalConnectorDesignator;\r
-  EFI_MISC_PORT_CONNECTOR_TYPE      PortInternalConnectorType;\r
-  EFI_MISC_PORT_CONNECTOR_TYPE      PortExternalConnectorType;\r
-  EFI_MISC_PORT_TYPE                PortType;\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// In MiscSubclass specification 0.9, this type of field is defined as EFI_DEVICE_PATH_PROTOCOL,\r
-  /// which causes the implementation some complexity. Keep it unchanged for backward\r
-  /// compatibility.\r
-  ///\r
-  EFI_MISC_PORT_DEVICE_PATH         PortPath;\r
-} EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA;\r
-\r
-//\r
-// Misc. System Slots - SMBIOS Type 9\r
-//\r
-#define EFI_MISC_SYSTEM_SLOT_DESIGNATION_RECORD_NUMBER    0x00000007\r
-\r
-typedef enum {\r
-  EfiSlotTypeOther                        = 0x01,\r
-  EfiSlotTypeUnknown                      = 0x02,\r
-  EfiSlotTypeIsa                          = 0x03,\r
-  EfiSlotTypeMca                          = 0x04,\r
-  EfiSlotTypeEisa                         = 0x05,\r
-  EfiSlotTypePci                          = 0x06,\r
-  EfiSlotTypePcmcia                       = 0x07,\r
-  EfiSlotTypeVlVesa                       = 0x08,\r
-  EfiSlotTypeProprietary                  = 0x09,\r
-  EfiSlotTypeProcessorCardSlot            = 0x0A,\r
-  EfiSlotTypeProprietaryMemoryCardSlot    = 0x0B,\r
-  EfiSlotTypeIORiserCardSlot              = 0x0C,\r
-  EfiSlotTypeNuBus                        = 0x0D,\r
-  EfiSlotTypePci66MhzCapable              = 0x0E,\r
-  EfiSlotTypeAgp                          = 0x0F,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// In MiscSubclass specification 0.9, its naming should be EfiSlotTypeAgp2X\r
-  /// rather than EfiSlotTypeApg2X.\r
-  ///\r
-  EfiSlotTypeAgp2X                        = 0x10,\r
-  EfiSlotTypeAgp4X                        = 0x11,\r
-  EfiSlotTypePciX                         = 0x12,\r
-  EfiSlotTypeAgp8x                        = 0x13,\r
-  EfiSlotTypePC98C20                      = 0xA0,\r
-  EfiSlotTypePC98C24                      = 0xA1,\r
-  EfiSlotTypePC98E                        = 0xA2,\r
-  EfiSlotTypePC98LocalBus                 = 0xA3,\r
-  EfiSlotTypePC98Card                     = 0xA4,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// In MiscSubclass specification 0.9, these fields aren't defined.\r
-  /// They're introduced for SmBios 2.6 specification type 9.\r
-  ///\r
-  EfiSlotTypePciExpress                   = 0xA5,\r
-  EfiSlotTypePciExpressX1                 = 0xA6,\r
-  EfiSlotTypePciExpressX2                 = 0xA7,\r
-  EfiSlotTypePciExpressX4                 = 0xA8,\r
-  EfiSlotTypePciExpressX8                 = 0xA9,\r
-  EfiSlotTypePciExpressX16                = 0xAA\r
-} EFI_MISC_SLOT_TYPE;\r
-\r
-typedef enum {\r
-  EfiSlotDataBusWidthOther      = 0x01,\r
-  EfiSlotDataBusWidthUnknown    = 0x02,\r
-  EfiSlotDataBusWidth8Bit       = 0x03,\r
-  EfiSlotDataBusWidth16Bit      = 0x04,\r
-  EfiSlotDataBusWidth32Bit      = 0x05,\r
-  EfiSlotDataBusWidth64Bit      = 0x06,\r
-  EfiSlotDataBusWidth128Bit     = 0x07,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// In MiscSubclass specification 0.9, these fields aren't defined.\r
-  /// They're introduced for SmBios 2.6 specification type 9.\r
-  ///\r
-  EfiSlotDataBusWidth1xOrx1     = 0x8,\r
-  EfiSlotDataBusWidth2xOrx2     = 0x9,\r
-  EfiSlotDataBusWidth4xOrx4     = 0xA,\r
-  EfiSlotDataBusWidth8xOrx8     = 0xB,\r
-  EfiSlotDataBusWidth12xOrx12   = 0xC,\r
-  EfiSlotDataBusWidth16xOrx16   = 0xD,\r
-  EfiSlotDataBusWidth32xOrx32   = 0xE\r
-} EFI_MISC_SLOT_DATA_BUS_WIDTH;\r
-\r
-typedef enum {\r
-  EfiSlotUsageOther     = 1,\r
-  EfiSlotUsageUnknown   = 2,\r
-  EfiSlotUsageAvailable = 3,\r
-  EfiSlotUsageInUse     = 4\r
-} EFI_MISC_SLOT_USAGE;\r
-\r
-typedef enum {\r
-  EfiSlotLengthOther   = 1,\r
-  EfiSlotLengthUnknown = 2,\r
-  EfiSlotLengthShort   = 3,\r
-  EfiSlotLengthLong    = 4\r
-} EFI_MISC_SLOT_LENGTH;\r
-\r
-typedef struct {\r
-  UINT32                            CharacteristicsUnknown  :1;\r
-  UINT32                            Provides50Volts         :1;\r
-  UINT32                            Provides33Volts         :1;\r
-  UINT32                            SharedSlot              :1;\r
-  UINT32                            PcCard16Supported       :1;\r
-  UINT32                            CardBusSupported        :1;\r
-  UINT32                            ZoomVideoSupported      :1;\r
-  UINT32                            ModemRingResumeSupported:1;\r
-  UINT32                            PmeSignalSupported      :1;\r
-  UINT32                            HotPlugDevicesSupported :1;\r
-  UINT32                            SmbusSignalSupported    :1;\r
-  UINT32                            Reserved                :21;\r
-} EFI_MISC_SLOT_CHARACTERISTICS;\r
-\r
-typedef struct {\r
-  STRING_REF                        SlotDesignation;\r
-  EFI_MISC_SLOT_TYPE                SlotType;\r
-  EFI_MISC_SLOT_DATA_BUS_WIDTH      SlotDataBusWidth;\r
-  EFI_MISC_SLOT_USAGE               SlotUsage;\r
-  EFI_MISC_SLOT_LENGTH              SlotLength;\r
-  UINT16                            SlotId;\r
-  EFI_MISC_SLOT_CHARACTERISTICS     SlotCharacteristics;\r
-  EFI_DEVICE_PATH_PROTOCOL          SlotDevicePath;\r
-} EFI_MISC_SYSTEM_SLOT_DESIGNATION_DATA;\r
-\r
-//\r
-// Misc. Onboard Device - SMBIOS Type 10\r
-//\r
-#define EFI_MISC_ONBOARD_DEVICE_RECORD_NUMBER    0x00000008\r
-\r
-typedef enum {\r
-  EfiOnBoardDeviceTypeOther          = 1,\r
-  EfiOnBoardDeviceTypeUnknown        = 2,\r
-  EfiOnBoardDeviceTypeVideo          = 3,\r
-  EfiOnBoardDeviceTypeScsiController = 4,\r
-  EfiOnBoardDeviceTypeEthernet       = 5,\r
-  EfiOnBoardDeviceTypeTokenRing      = 6,\r
-  EfiOnBoardDeviceTypeSound          = 7\r
-} EFI_MISC_ONBOARD_DEVICE_TYPE;\r
-\r
-typedef struct {\r
-  UINT32                            DeviceType    :16;\r
-  UINT32                            DeviceEnabled :1;\r
-  UINT32                            Reserved      :15;\r
-} EFI_MISC_ONBOARD_DEVICE_STATUS;\r
-\r
-typedef struct {\r
-  STRING_REF                        OnBoardDeviceDescription;\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// In MiscSubclass specification 0.9, the name is OnBoardDeviceType.\r
-  /// Keep it unchanged for backward compatibilty.\r
-  ///\r
-  EFI_MISC_ONBOARD_DEVICE_STATUS    OnBoardDeviceStatus;\r
-  EFI_DEVICE_PATH_PROTOCOL          OnBoardDevicePath;\r
-} EFI_MISC_ONBOARD_DEVICE_DATA;\r
-\r
-//\r
-// Misc. BIOS Language Information - SMBIOS Type 11\r
-//\r
-#define EFI_MISC_OEM_STRING_RECORD_NUMBER    0x00000009\r
-\r
-typedef struct {\r
-  STRING_REF                        OemStringRef[1];\r
-} EFI_MISC_OEM_STRING_DATA;\r
-\r
-//\r
-// Misc. System Options - SMBIOS Type 12\r
-//\r
-typedef struct {\r
-  STRING_REF                        SystemOptionStringRef[1];\r
-} EFI_MISC_SYSTEM_OPTION_STRING_DATA;\r
-\r
-#define EFI_MISC_SYSTEM_OPTION_STRING_RECORD_NUMBER    0x0000000A\r
-\r
-//\r
-// Misc. Number of Installable Languages - SMBIOS Type 13\r
-//\r
-#define EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_RECORD_NUMBER    0x0000000B\r
-\r
-typedef struct {\r
-  UINT32                            AbbreviatedLanguageFormat :1;\r
-  UINT32                            Reserved                  :31;\r
-} EFI_MISC_LANGUAGE_FLAGS;\r
-\r
-typedef struct {\r
-  UINT16                            NumberOfInstallableLanguages;\r
-  EFI_MISC_LANGUAGE_FLAGS           LanguageFlags;\r
-  UINT16                            CurrentLanguageNumber;\r
-} EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_DATA;\r
-\r
-//\r
-// Misc. System Language String\r
-//\r
-#define EFI_MISC_SYSTEM_LANGUAGE_STRING_RECORD_NUMBER    0x0000000C\r
-\r
-typedef struct {\r
-  UINT16                            LanguageId;\r
-  STRING_REF                        SystemLanguageString;\r
-} EFI_MISC_SYSTEM_LANGUAGE_STRING_DATA;\r
-\r
-//\r
-// Group Associations - SMBIOS Type 14\r
-//\r
-#define EFI_MISC_GROUP_NAME_RECORD_NUMBER    0x0000000D\r
-\r
-typedef struct {\r
-  STRING_REF                        GroupName;\r
-  UINT16                            NumberGroupItems;\r
-  UINT16                            GroupId;\r
-} EFI_MISC_GROUP_NAME_DATA;\r
-\r
-//\r
-// Group Item Set Element\r
-//\r
-#define EFI_MISC_GROUP_ITEM_SET_RECORD_NUMBER    0x0000000E\r
-\r
-typedef struct {\r
-  EFI_GUID                          SubClass;\r
-  EFI_INTER_LINK_DATA               GroupLink;\r
-  UINT16                            GroupId;\r
-  UINT16                            GroupElementId;\r
-} EFI_MISC_GROUP_ITEM_SET_DATA;\r
-\r
-//\r
-//  Misc. Pointing Device Type - SMBIOS Type 21\r
-//\r
-#define EFI_MISC_POINTING_DEVICE_TYPE_RECORD_NUMBER    0x0000000F\r
-\r
-typedef enum {\r
-  EfiPointingDeviceTypeOther         = 0x01,\r
-  EfiPointingDeviceTypeUnknown       = 0x02,\r
-  EfiPointingDeviceTypeMouse         = 0x03,\r
-  EfiPointingDeviceTypeTrackBall     = 0x04,\r
-  EfiPointingDeviceTypeTrackPoint    = 0x05,\r
-  EfiPointingDeviceTypeGlidePoint    = 0x06,\r
-  EfiPointingDeviceTouchPad          = 0x07,\r
-  EfiPointingDeviceTouchScreen       = 0x08,\r
-  EfiPointingDeviceOpticalSensor     = 0x09\r
-} EFI_MISC_POINTING_DEVICE_TYPE;\r
-\r
-typedef enum {\r
-  EfiPointingDeviceInterfaceOther              = 0x01,\r
-  EfiPointingDeviceInterfaceUnknown            = 0x02,\r
-  EfiPointingDeviceInterfaceSerial             = 0x03,\r
-  EfiPointingDeviceInterfacePs2                = 0x04,\r
-  EfiPointingDeviceInterfaceInfrared           = 0x05,\r
-  EfiPointingDeviceInterfaceHpHil              = 0x06,\r
-  EfiPointingDeviceInterfaceBusMouse           = 0x07,\r
-  EfiPointingDeviceInterfaceADB                = 0x08,\r
-  EfiPointingDeviceInterfaceBusMouseDB9        = 0xA0,\r
-  EfiPointingDeviceInterfaceBusMouseMicroDin   = 0xA1,\r
-  EfiPointingDeviceInterfaceUsb                = 0xA2\r
-} EFI_MISC_POINTING_DEVICE_INTERFACE;\r
-\r
-typedef struct {\r
-  EFI_MISC_POINTING_DEVICE_TYPE       PointingDeviceType;\r
-  EFI_MISC_POINTING_DEVICE_INTERFACE  PointingDeviceInterface;\r
-  UINT16                              NumberPointingDeviceButtons;\r
-  EFI_DEVICE_PATH_PROTOCOL            PointingDevicePath;\r
-} EFI_MISC_POINTING_DEVICE_TYPE_DATA;\r
-\r
-//\r
-// Portable Battery - SMBIOS Type 22\r
-//\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MiscSubclass specification 0.9, the name is EFI_MISC_BATTERY_LOCATION_RECORD_NUMBER.\r
-/// Keep it unchanged for backward compatibilty.\r
-///\r
-#define EFI_MISC_PORTABLE_BATTERY_RECORD_NUMBER   0x00000010\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MiscSubclass specification 0.9, the structure name is EFI_MISC_BATTERY_DEVICE_CHEMISTRY.\r
-/// And all field namings are also different with specification.\r
-/// Keep it unchanged for backward compatibilty.\r
-///\r
-typedef enum {\r
-  EfiPortableBatteryDeviceChemistryOther = 1,\r
-  EfiPortableBatteryDeviceChemistryUnknown = 2,\r
-  EfiPortableBatteryDeviceChemistryLeadAcid = 3,\r
-  EfiPortableBatteryDeviceChemistryNickelCadmium = 4,\r
-  EfiPortableBatteryDeviceChemistryNickelMetalHydride = 5,\r
-  EfiPortableBatteryDeviceChemistryLithiumIon = 6,\r
-  EfiPortableBatteryDeviceChemistryZincAir = 7,\r
-  EfiPortableBatteryDeviceChemistryLithiumPolymer = 8\r
-} EFI_MISC_PORTABLE_BATTERY_DEVICE_CHEMISTRY;\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MiscSubclass specification 0.9, the structure name is EFI_MISC_BATTERY_LOCATION_DATA.\r
-/// Also, the name and the order of the fields vary with specifications.\r
-/// Keep it unchanged for backward compatibilty.\r
-///\r
-typedef struct {\r
-  STRING_REF                        Location;\r
-  STRING_REF                        Manufacturer;\r
-  STRING_REF                        ManufactureDate;\r
-  STRING_REF                        SerialNumber;\r
-  STRING_REF                        DeviceName;\r
-  EFI_MISC_PORTABLE_BATTERY_DEVICE_CHEMISTRY\r
-                                    DeviceChemistry;\r
-  UINT16                            DesignCapacity;\r
-  UINT16                            DesignVoltage;\r
-  STRING_REF                        SBDSVersionNumber;\r
-  UINT8                             MaximumError;\r
-  UINT16                            SBDSSerialNumber;\r
-  UINT16                            SBDSManufactureDate;\r
-  STRING_REF                        SBDSDeviceChemistry;\r
-  UINT8                             DesignCapacityMultiplier;\r
-  UINT32                            OEMSpecific;\r
-  UINT8                             BatteryNumber; // Temporary\r
-  BOOLEAN                           Valid; // Is entry valid - Temporary\r
-} EFI_MISC_PORTABLE_BATTERY;\r
-\r
-\r
-//\r
-// Misc. Reset Capabilities - SMBIOS Type 23\r
-//\r
-#define EFI_MISC_RESET_CAPABILITIES_RECORD_NUMBER    0x00000011\r
-\r
-typedef struct {\r
-  UINT32                            Status              :1;\r
-  UINT32                            BootOption          :2;\r
-  UINT32                            BootOptionOnLimit   :2;\r
-  UINT32                            WatchdogTimerPresent:1;\r
-  UINT32                            Reserved            :26;\r
-} EFI_MISC_RESET_CAPABILITIES_TYPE;\r
-\r
-typedef struct {\r
-  EFI_MISC_RESET_CAPABILITIES_TYPE  ResetCapabilities;\r
-  UINT16                            ResetCount;\r
-  UINT16                            ResetLimit;\r
-  UINT16                            ResetTimerInterval;\r
-  UINT16                            ResetTimeout;\r
-} EFI_MISC_RESET_CAPABILITIES;\r
-\r
-typedef struct {\r
-    EFI_MISC_RESET_CAPABILITIES     ResetCapabilities;\r
-    UINT16                          ResetCount;\r
-    UINT16                          ResetLimit;\r
-    UINT16                          ResetTimerInterval;\r
-    UINT16                          ResetTimeout;\r
-} EFI_MISC_RESET_CAPABILITIES_DATA;\r
-\r
-//\r
-// Misc. Hardware Security - SMBIOS Type 24\r
-//\r
-#define EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA_RECORD_NUMBER    0x00000012\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// The MiscSubclass specification 0.9 only mentions the possible value of each field in\r
-/// EFI_MISC_HARDWARE_SECURITY_SETTINGS.\r
-/// It's implementation-specific in order to to simplify the code logic.\r
-///\r
-typedef enum {\r
-  EfiHardwareSecurityStatusDisabled       = 0,\r
-  EfiHardwareSecurityStatusEnabled        = 1,\r
-  EfiHardwareSecurityStatusNotImplemented = 2,\r
-  EfiHardwareSecurityStatusUnknown        = 3\r
-} EFI_MISC_HARDWARE_SECURITY_STATUS;\r
-\r
-typedef struct {\r
-  UINT32 FrontPanelResetStatus       :2;\r
-  UINT32 AdministratorPasswordStatus :2;\r
-  UINT32 KeyboardPasswordStatus      :2;\r
-  UINT32 PowerOnPasswordStatus       :2;\r
-  UINT32 Reserved                    :24;\r
-} EFI_MISC_HARDWARE_SECURITY_SETTINGS;\r
-\r
-typedef struct {\r
-  EFI_MISC_HARDWARE_SECURITY_SETTINGS HardwareSecuritySettings;\r
-} EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA;\r
-\r
-//\r
-// System Power Controls - SMBIOS Type 25\r
-//\r
-#define EFI_MISC_SCHEDULED_POWER_ON_MONTH_RECORD_NUMBER    0x00000013\r
-\r
-typedef struct {\r
-  UINT16                            ScheduledPoweronMonth;\r
-  UINT16                            ScheduledPoweronDayOfMonth;\r
-  UINT16                            ScheduledPoweronHour;\r
-  UINT16                            ScheduledPoweronMinute;\r
-  UINT16                            ScheduledPoweronSecond;\r
-} EFI_MISC_SCHEDULED_POWER_ON_MONTH_DATA;\r
-\r
-//\r
-// Voltage Probe - SMBIOS Type 26\r
-//\r
-#define EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_RECORD_NUMBER    0x00000014\r
-\r
-typedef struct {\r
-  UINT32                            VoltageProbeSite        :5;\r
-  UINT32                            VoltageProbeStatus      :3;\r
-  UINT32                            Reserved                :24;\r
-} EFI_MISC_VOLTAGE_PROBE_LOCATION;\r
-\r
-typedef struct {\r
-  STRING_REF                        VoltageProbeDescription;\r
-  EFI_MISC_VOLTAGE_PROBE_LOCATION   VoltageProbeLocation;\r
-  EFI_EXP_BASE10_DATA               VoltageProbeMaximumValue;\r
-  EFI_EXP_BASE10_DATA               VoltageProbeMinimumValue;\r
-  EFI_EXP_BASE10_DATA               VoltageProbeResolution;\r
-  EFI_EXP_BASE10_DATA               VoltageProbeTolerance;\r
-  EFI_EXP_BASE10_DATA               VoltageProbeAccuracy;\r
-  EFI_EXP_BASE10_DATA               VoltageProbeNominalValue;\r
-  EFI_EXP_BASE10_DATA               MDLowerNoncriticalThreshold;\r
-  EFI_EXP_BASE10_DATA               MDUpperNoncriticalThreshold;\r
-  EFI_EXP_BASE10_DATA               MDLowerCriticalThreshold;\r
-  EFI_EXP_BASE10_DATA               MDUpperCriticalThreshold;\r
-  EFI_EXP_BASE10_DATA               MDLowerNonrecoverableThreshold;\r
-  EFI_EXP_BASE10_DATA               MDUpperNonrecoverableThreshold;\r
-  UINT32                            VoltageProbeOemDefined;\r
-} EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_DATA;\r
-\r
-//\r
-// Cooling Device - SMBIOS Type 27\r
-//\r
-#define EFI_MISC_COOLING_DEVICE_TEMP_LINK_RECORD_NUMBER    0x00000015\r
-\r
-typedef struct {\r
-  UINT32                            CoolingDevice       :5;\r
-  UINT32                            CoolingDeviceStatus :3;\r
-  UINT32                            Reserved            :24;\r
-} EFI_MISC_COOLING_DEVICE_TYPE;\r
-\r
-typedef struct {\r
-  EFI_MISC_COOLING_DEVICE_TYPE      CoolingDeviceType;\r
-  EFI_INTER_LINK_DATA               CoolingDeviceTemperatureLink;\r
-  UINT8                             CoolingDeviceUnitGroup;\r
-  UINT16                            CoolingDeviceNominalSpeed;\r
-  UINT32                            CoolingDeviceOemDefined;\r
-} EFI_MISC_COOLING_DEVICE_TEMP_LINK_DATA;\r
-\r
-//\r
-// Temperature Probe - SMBIOS Type 28\r
-//\r
-#define EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_RECORD_NUMBER    0x00000016\r
-\r
-typedef struct {\r
-  UINT32                            TemperatureProbeSite   :5;\r
-  UINT32                            TemperatureProbeStatus :3;\r
-  UINT32                            Reserved               :24;\r
-} EFI_MISC_TEMPERATURE_PROBE_LOCATION;\r
-\r
-typedef struct {\r
-  STRING_REF                        TemperatureProbeDescription;\r
-  EFI_MISC_TEMPERATURE_PROBE_LOCATION\r
-                                    TemperatureProbeLocation;\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// MiscSubclass 0.9 specification defines the fields type as EFI_EXP_BASE10_DATA.\r
-  /// In fact, they should be UINT16 type because they refer to 16bit width data.\r
-  /// Keeping this inconsistency for backward compatibility.\r
-  ///\r
-  UINT16                            TemperatureProbeMaximumValue;\r
-  UINT16                            TemperatureProbeMinimumValue;\r
-  UINT16                            TemperatureProbeResolution;\r
-  UINT16                            TemperatureProbeTolerance;\r
-  UINT16                            TemperatureProbeAccuracy;\r
-  UINT16                            TemperatureProbeNominalValue;\r
-  UINT16                            MDLowerNoncriticalThreshold;\r
-  UINT16                            MDUpperNoncriticalThreshold;\r
-  UINT16                            MDLowerCriticalThreshold;\r
-  UINT16                            MDUpperCriticalThreshold;\r
-  UINT16                            MDLowerNonrecoverableThreshold;\r
-  UINT16                            MDUpperNonrecoverableThreshold;\r
-  UINT32                            TemperatureProbeOemDefined;\r
-} EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_DATA;\r
-\r
-//\r
-// Electrical Current Probe - SMBIOS Type 29\r
-//\r
-\r
-#define EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_RECORD_NUMBER    0x00000017\r
-\r
-typedef struct {\r
-  UINT32                            ElectricalCurrentProbeSite    :5;\r
-  UINT32                            ElectricalCurrentProbeStatus  :3;\r
-  UINT32                            Reserved                      :24;\r
-} EFI_MISC_ELECTRICAL_CURRENT_PROBE_LOCATION;\r
-\r
-typedef struct {\r
-  STRING_REF                        ElectricalCurrentProbeDescription;\r
-  EFI_MISC_ELECTRICAL_CURRENT_PROBE_LOCATION\r
-                                    ElectricalCurrentProbeLocation;\r
-  EFI_EXP_BASE10_DATA               ElectricalCurrentProbeMaximumValue;\r
-  EFI_EXP_BASE10_DATA               ElectricalCurrentProbeMinimumValue;\r
-  EFI_EXP_BASE10_DATA               ElectricalCurrentProbeResolution;\r
-  EFI_EXP_BASE10_DATA               ElectricalCurrentProbeTolerance;\r
-  EFI_EXP_BASE10_DATA               ElectricalCurrentProbeAccuracy;\r
-  EFI_EXP_BASE10_DATA               ElectricalCurrentProbeNominalValue;\r
-  EFI_EXP_BASE10_DATA               MDLowerNoncriticalThreshold;\r
-  EFI_EXP_BASE10_DATA               MDUpperNoncriticalThreshold;\r
-  EFI_EXP_BASE10_DATA               MDLowerCriticalThreshold;\r
-  EFI_EXP_BASE10_DATA               MDUpperCriticalThreshold;\r
-  EFI_EXP_BASE10_DATA               MDLowerNonrecoverableThreshold;\r
-  EFI_EXP_BASE10_DATA               MDUpperNonrecoverableThreshold;\r
-  UINT32                            ElectricalCurrentProbeOemDefined;\r
-} EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_DATA;\r
-\r
-//\r
-// Out-of-Band Remote Access - SMBIOS Type 30\r
-//\r
-\r
-#define EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_RECORD_NUMBER    0x00000018\r
-\r
-typedef struct  {\r
-  UINT32                            InboundConnectionEnabled  :1;\r
-  UINT32                            OutboundConnectionEnabled :1;\r
-  UINT32                            Reserved                  :30;\r
-} EFI_MISC_REMOTE_ACCESS_CONNECTIONS;\r
-\r
-typedef struct {\r
-  STRING_REF                         RemoteAccessManufacturerNameDescription;\r
-  EFI_MISC_REMOTE_ACCESS_CONNECTIONS RemoteAccessConnections;\r
-} EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_DATA;\r
-\r
-//\r
-// Misc. BIS Entry Point - SMBIOS Type 31\r
-//\r
-#define EFI_MISC_BIS_ENTRY_POINT_RECORD_NUMBER    0x00000019\r
-\r
-typedef struct {\r
-  EFI_PHYSICAL_ADDRESS              BisEntryPoint;\r
-} EFI_MISC_BIS_ENTRY_POINT_DATA;\r
-\r
-//\r
-// Misc. Boot Information - SMBIOS Type 32\r
-//\r
-#define EFI_MISC_BOOT_INFORMATION_STATUS_RECORD_NUMBER    0x0000001A\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MiscSubclass specification 0.9, the structure name is EFI_MISC_BOOT_INFORMATION_STATUS_TYPE.\r
-/// Keep it unchanged for backward compatibilty.\r
-///\r
-typedef enum {\r
-  EfiBootInformationStatusNoError                  = 0x00,\r
-  EfiBootInformationStatusNoBootableMedia          = 0x01,\r
-  EfiBootInformationStatusNormalOSFailedLoading    = 0x02,\r
-  EfiBootInformationStatusFirmwareDetectedFailure  = 0x03,\r
-  EfiBootInformationStatusOSDetectedFailure        = 0x04,\r
-  EfiBootInformationStatusUserRequestedBoot        = 0x05,\r
-  EfiBootInformationStatusSystemSecurityViolation  = 0x06,\r
-  EfiBootInformationStatusPreviousRequestedImage   = 0x07,\r
-  EfiBootInformationStatusWatchdogTimerExpired     = 0x08,\r
-  EfiBootInformationStatusStartReserved            = 0x09,\r
-  EfiBootInformationStatusStartOemSpecific         = 0x80,\r
-  EfiBootInformationStatusStartProductSpecific     = 0xC0\r
-} EFI_MISC_BOOT_INFORMATION_STATUS_DATA_TYPE;\r
-\r
-typedef struct {\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// In MiscSubclass specification 0.9, the field name is EFI_MISC_BOOT_INFORMATION_STATUS_TYPE.\r
-  /// Keep it unchanged for backward compatibilty.\r
-  ///\r
-  EFI_MISC_BOOT_INFORMATION_STATUS_DATA_TYPE BootInformationStatus;\r
-  UINT8                                      BootInformationData[9];\r
-} EFI_MISC_BOOT_INFORMATION_STATUS_DATA;\r
-\r
-//\r
-// Management Device - SMBIOS Type 34\r
-//\r
-#define EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_RECORD_NUMBER    0x0000001B\r
-\r
-typedef enum {\r
-  EfiManagementDeviceTypeOther      = 0x01,\r
-  EfiManagementDeviceTypeUnknown    = 0x02,\r
-  EfiManagementDeviceTypeLm75       = 0x03,\r
-  EfiManagementDeviceTypeLm78       = 0x04,\r
-  EfiManagementDeviceTypeLm79       = 0x05,\r
-  EfiManagementDeviceTypeLm80       = 0x06,\r
-  EfiManagementDeviceTypeLm81       = 0x07,\r
-  EfiManagementDeviceTypeAdm9240    = 0x08,\r
-  EfiManagementDeviceTypeDs1780     = 0x09,\r
-  EfiManagementDeviceTypeMaxim1617  = 0x0A,\r
-  EfiManagementDeviceTypeGl518Sm    = 0x0B,\r
-  EfiManagementDeviceTypeW83781D    = 0x0C,\r
-  EfiManagementDeviceTypeHt82H791   = 0x0D\r
-} EFI_MISC_MANAGEMENT_DEVICE_TYPE;\r
-\r
-typedef enum {\r
-  EfiManagementDeviceAddressTypeOther   = 1,\r
-  EfiManagementDeviceAddressTypeUnknown = 2,\r
-  EfiManagementDeviceAddressTypeIOPort  = 3,\r
-  EfiManagementDeviceAddressTypeMemory  = 4,\r
-  EfiManagementDeviceAddressTypeSmbus   = 5\r
-} EFI_MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE;\r
-\r
-typedef struct {\r
-  STRING_REF                        ManagementDeviceDescription;\r
-  EFI_MISC_MANAGEMENT_DEVICE_TYPE   ManagementDeviceType;\r
-  UINTN                             ManagementDeviceAddress;\r
-  EFI_MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE\r
-                                    ManagementDeviceAddressType;\r
-} EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_DATA;\r
-\r
-//\r
-// Management Device Component - SMBIOS Type 35\r
-//\r
-\r
-#define EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_RECORD_NUMBER    0x0000001C\r
-\r
-typedef struct {\r
-  STRING_REF                        ManagementDeviceComponentDescription;\r
-  EFI_INTER_LINK_DATA               ManagementDeviceLink;\r
-  EFI_INTER_LINK_DATA               ManagementDeviceComponentLink;\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// In MiscSubclass specification 0.9, this field is NOT defined.\r
-  /// It's introduced for SmBios 2.6 specification type 35.\r
-  ///\r
-  EFI_INTER_LINK_DATA               ManagementDeviceThresholdLink;\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// In MiscSubclass specification 0.9, this field is NOT defined.\r
-  /// It's implementation-specific to simplify the code logic.\r
-  ///\r
-  UINT8                             ComponentType;\r
-} EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA;\r
-\r
-//\r
-// IPMI Data Record - SMBIOS Type 38\r
-//\r
-typedef enum {\r
-  EfiIpmiOther = 0,\r
-  EfiIpmiKcs   = 1,\r
-  EfiIpmiSmic  = 2,\r
-  EfiIpmiBt    = 3\r
-} EFI_MISC_IPMI_INTERFACE_TYPE;\r
-\r
-typedef struct {\r
-  UINT16                            IpmiSpecLeastSignificantDigit:4;\r
-  UINT16                            IpmiSpecMostSignificantDigit: 4;\r
-  UINT16                            Reserved:                     8;\r
-} EFI_MISC_IPMI_SPECIFICATION_REVISION;\r
-\r
-typedef struct {\r
-  EFI_MISC_IPMI_INTERFACE_TYPE      IpmiInterfaceType;\r
-  EFI_MISC_IPMI_SPECIFICATION_REVISION\r
-                                    IpmiSpecificationRevision;\r
-  UINT16                            IpmiI2CSlaveAddress;\r
-  UINT16                            IpmiNvDeviceAddress;\r
-  UINT64                            IpmiBaseAddress;\r
-  EFI_DEVICE_PATH_PROTOCOL          IpmiDevicePath;\r
-} EFI_MISC_IPMI_INTERFACE_TYPE_DATA;\r
-\r
-#define EFI_MISC_IPMI_INTERFACE_TYPE_RECORD_NUMBER    0x0000001D\r
-///\r
-/// The definition above is *NOT* defined in MiscSubclass specifications 0.9.\r
-/// It's defined for backward compatibility.\r
-///\r
-#define EFI_MISC_IPMI_INTERFACE_TYPE_DATA_RECORD_NUMBER EFI_MISC_IPMI_INTERFACE_TYPE_RECORD_NUMBER\r
-\r
-///\r
-/// System Power supply Record - SMBIOS Type 39\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MiscSubclass specification 0.9, the type of all fields are UINT32.\r
-/// Keep it unchanged for backward compatibilty.\r
-///\r
-typedef struct {\r
-  UINT16                            PowerSupplyHotReplaceable:1;\r
-  UINT16                            PowerSupplyPresent       :1;\r
-  UINT16                            PowerSupplyUnplugged     :1;\r
-  UINT16                            InputVoltageRangeSwitch  :4;\r
-  UINT16                            PowerSupplyStatus        :3;\r
-  UINT16                            PowerSupplyType          :4;\r
-  UINT16                            Reserved                 :2;\r
-} EFI_MISC_POWER_SUPPLY_CHARACTERISTICS;\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MiscSubclass specification 0.9, the structure name is EFI_MISC_POWER_SUPPLY_UNIT_GROUP_DATA.\r
-/// Keep it unchanged for backward compatibilty.\r
-///\r
-typedef struct {\r
-  UINT16                                 PowerUnitGroup;\r
-  STRING_REF                             PowerSupplyLocation;\r
-  STRING_REF                             PowerSupplyDeviceName;\r
-  STRING_REF                             PowerSupplyManufacturer;\r
-  STRING_REF                             PowerSupplySerialNumber;\r
-  STRING_REF                             PowerSupplyAssetTagNumber;\r
-  STRING_REF                             PowerSupplyModelPartNumber;\r
-  STRING_REF                             PowerSupplyRevisionLevel;\r
-  UINT16                                 PowerSupplyMaxPowerCapacity;\r
-  EFI_MISC_POWER_SUPPLY_CHARACTERISTICS  PowerSupplyCharacteristics;\r
-  EFI_INTER_LINK_DATA                    PowerSupplyInputVoltageProbeLink;\r
-  EFI_INTER_LINK_DATA                    PowerSupplyCoolingDeviceLink;\r
-  EFI_INTER_LINK_DATA                    PowerSupplyInputCurrentProbeLink;\r
-} EFI_MISC_SYSTEM_POWER_SUPPLY_DATA;\r
-\r
-#define EFI_MISC_SYSTEM_POWER_SUPPLY_RECORD_NUMBER    0x0000001E\r
-\r
-///\r
-/// OEM Data Record - SMBIOS Type 0x80-0xFF\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MiscSubclass specification 0.9, the structure name is EFI_SMBIOS_STRUCTURE_HDR.\r
-/// Due to this, the structure is commonly used by vendors to construct SmBios type 0x80~0xFF table,\r
-/// Keep it unchanged for backward compatibilty.\r
-///\r
-typedef struct {\r
-  UINT8                             Type;\r
-  UINT8                             Length;\r
-  UINT16                            Handle;\r
-} SMBIOS_STRUCTURE_HDR;\r
-\r
-typedef struct {\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// In MiscSubclass specification 0.9, the field name is EFI_SMBIOS_STRUCTURE_HDR.\r
-  /// Keep it unchanged for backward compatibilty.\r
-  ///\r
-  SMBIOS_STRUCTURE_HDR              Header;\r
-  UINT8                             RawData[1];\r
-} EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA;\r
-\r
-#define EFI_MISC_SMBIOS_STRUCT_ENCAP_RECORD_NUMBER    0x0000001F\r
-\r
-///\r
-/// Misc. System Event Log  - SMBIOS Type 15\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MiscSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 specification type 15.\r
-///\r
-#define EFI_MISC_SYSTEM_EVENT_LOG_RECORD_NUMBER    0x00000020\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MiscSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 specification type 15.\r
-///\r
-typedef struct {\r
-  UINT16                            LogAreaLength;\r
-  UINT16                            LogHeaderStartOffset;\r
-  UINT16                            LogDataStartOffset;\r
-  UINT8                             AccessMethod;\r
-  UINT8                             LogStatus;\r
-  UINT32                            LogChangeToken;\r
-  UINT32                            AccessMethodAddress;\r
-  UINT8                             LogHeaderFormat;\r
-  UINT8                             NumberOfSupportedLogType;\r
-  UINT8                             LengthOfLogDescriptor;\r
-} EFI_MISC_SYSTEM_EVENT_LOG_DATA;\r
-\r
-//\r
-// Access Method.\r
-//  0x00~0x04:  as following definition\r
-//  0x05~0x7f:  Available for future assignment.\r
-//  0x80~0xff:  BIOS Vendor/OEM-specific.\r
-//\r
-#define ACCESS_INDEXIO_1INDEX8BIT_DATA8BIT    0x00\r
-#define ACCESS_INDEXIO_2INDEX8BIT_DATA8BIT    0X01\r
-#define ACCESS_INDEXIO_1INDEX16BIT_DATA8BIT   0X02\r
-#define ACCESS_MEMORY_MAPPED                  0x03\r
-#define ACCESS_GPNV                           0x04\r
-\r
-///\r
-/// Management Device Threshold Data Record - SMBIOS Type 36\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MiscSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 specification type 36.\r
-///\r
-#define EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD_RECORD_NUMBER    0x00000021\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MiscSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 specification type 36.\r
-///\r
-typedef struct {\r
-  UINT16                            LowerThresNonCritical;\r
-  UINT16                            UpperThresNonCritical;\r
-  UINT16                            LowerThresCritical;\r
-  UINT16                            UpperThresCritical;\r
-  UINT16                            LowerThresNonRecover;\r
-  UINT16                            UpperThresNonRecover;\r
-} EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD;\r
-\r
-//\r
-// Declare the following strutures alias to use them more conviniently.\r
-//\r
-typedef EFI_MISC_LAST_PCI_BUS_DATA                        EFI_MISC_LAST_PCI_BUS;\r
-typedef EFI_MISC_BIOS_VENDOR_DATA                         EFI_MISC_BIOS_VENDOR;\r
-typedef EFI_MISC_SYSTEM_MANUFACTURER_DATA                 EFI_MISC_SYSTEM_MANUFACTURER;\r
-typedef EFI_MISC_BASE_BOARD_MANUFACTURER_DATA             EFI_MISC_BASE_BOARD_MANUFACTURER;\r
-typedef EFI_MISC_CHASSIS_MANUFACTURER_DATA                EFI_MISC_CHASSIS_MANUFACTURER;\r
-typedef EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA  EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR;\r
-typedef EFI_MISC_SYSTEM_SLOT_DESIGNATION_DATA             EFI_MISC_SYSTEM_SLOT_DESIGNATION;\r
-typedef EFI_MISC_ONBOARD_DEVICE_DATA                      EFI_MISC_ONBOARD_DEVICE;\r
-typedef EFI_MISC_POINTING_DEVICE_TYPE_DATA                EFI_MISC_ONBOARD_DEVICE_TYPE_DATA;\r
-typedef EFI_MISC_OEM_STRING_DATA                          EFI_MISC_OEM_STRING;\r
-typedef EFI_MISC_SYSTEM_OPTION_STRING_DATA                EFI_MISC_SYSTEM_OPTION_STRING;\r
-typedef EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_DATA     EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES;\r
-typedef EFI_MISC_SYSTEM_LANGUAGE_STRING_DATA              EFI_MISC_SYSTEM_LANGUAGE_STRING;\r
-typedef EFI_MISC_SYSTEM_EVENT_LOG_DATA                    EFI_MISC_SYSTEM_EVENT_LOG;\r
-typedef EFI_MISC_BIS_ENTRY_POINT_DATA                     EFI_MISC_BIS_ENTRY_POINT;\r
-typedef EFI_MISC_BOOT_INFORMATION_STATUS_DATA             EFI_MISC_BOOT_INFORMATION_STATUS;\r
-typedef EFI_MISC_SYSTEM_POWER_SUPPLY_DATA                 EFI_MISC_SYSTEM_POWER_SUPPLY;\r
-typedef EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA         EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION;\r
-typedef EFI_MISC_SCHEDULED_POWER_ON_MONTH_DATA            EFI_MISC_SCHEDULED_POWER_ON_MONTH;\r
-typedef EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_DATA           EFI_MISC_VOLTAGE_PROBE_DESCRIPTION;\r
-typedef EFI_MISC_COOLING_DEVICE_TEMP_LINK_DATA            EFI_MISC_COOLING_DEVICE_TEMP_LINK;\r
-typedef EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_DATA       EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION;\r
-typedef EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_DATA\r
-                                                          EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION;\r
-typedef EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_DATA       EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION;\r
-typedef EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_DATA EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION;\r
-typedef EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA\r
-                                                          EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION;\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It is implementation-specific to simplify the code logic.\r
-///\r
-typedef union {\r
-  EFI_MISC_LAST_PCI_BUS_DATA                         LastPciBus;\r
-  EFI_MISC_BIOS_VENDOR_DATA                          MiscBiosVendor;\r
-  EFI_MISC_SYSTEM_MANUFACTURER_DATA                  MiscSystemManufacturer;\r
-  EFI_MISC_BASE_BOARD_MANUFACTURER_DATA              MiscBaseBoardManufacturer;\r
-  EFI_MISC_CHASSIS_MANUFACTURER_DATA                 MiscChassisManufacturer;\r
-  EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA   MiscPortInternalConnectorDesignator;\r
-  EFI_MISC_SYSTEM_SLOT_DESIGNATION_DATA              MiscSystemSlotDesignation;\r
-  EFI_MISC_ONBOARD_DEVICE_DATA                       MiscOnboardDevice;\r
-  EFI_MISC_OEM_STRING_DATA                           MiscOemString;\r
-  EFI_MISC_SYSTEM_OPTION_STRING_DATA                 MiscOptionString;\r
-  EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_DATA      NumberOfInstallableLanguages;\r
-  EFI_MISC_SYSTEM_LANGUAGE_STRING_DATA               MiscSystemLanguageString;\r
-  EFI_MISC_SYSTEM_EVENT_LOG_DATA                     MiscSystemEventLog;\r
-  EFI_MISC_GROUP_NAME_DATA                           MiscGroupNameData;\r
-  EFI_MISC_GROUP_ITEM_SET_DATA                       MiscGroupItemSetData;\r
-  EFI_MISC_POINTING_DEVICE_TYPE_DATA                 MiscPointingDeviceTypeData;\r
-  EFI_MISC_RESET_CAPABILITIES_DATA                   MiscResetCapablilitiesData;\r
-  EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA           MiscHardwareSecuritySettingsData;\r
-  EFI_MISC_SCHEDULED_POWER_ON_MONTH_DATA             MiscScheduledPowerOnMonthData;\r
-  EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_DATA            MiscVoltagePorbeDescriptionData;\r
-  EFI_MISC_COOLING_DEVICE_TEMP_LINK_DATA             MiscCoolingDeviceTempLinkData;\r
-  EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_DATA        MiscTemperatureProbeDescriptionData;\r
-  EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_DATA MiscElectricalCurrentProbeDescriptionData;\r
-  EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_DATA\r
-                                                     MiscRemoteAccessManufacturerDescriptionData;\r
-  EFI_MISC_BIS_ENTRY_POINT_DATA                      MiscBisEntryPoint;\r
-  EFI_MISC_BOOT_INFORMATION_STATUS_DATA              MiscBootInformationStatus;\r
-  EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_DATA        MiscMangementDeviceDescriptionData;\r
-  EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA\r
-                                                     MiscmangementDeviceComponentDescriptionData;\r
-  EFI_MISC_IPMI_INTERFACE_TYPE_DATA                  MiscIpmiInterfaceTypeData;\r
-  EFI_MISC_SYSTEM_POWER_SUPPLY_DATA                  MiscPowerSupplyInfo;\r
-  EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA          MiscSmbiosStructEncapsulation;\r
-  EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD               MiscManagementDeviceThreshold;\r
-} EFI_MISC_SUBCLASS_RECORDS;\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It is implementation-specific to simplify the code logic.\r
-///\r
-typedef struct {\r
-  EFI_SUBCLASS_TYPE1_HEADER         Header;\r
-  EFI_MISC_SUBCLASS_RECORDS         Record;\r
-} EFI_MISC_SUBCLASS_DRIVER_DATA;\r
-#pragma pack()\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In DataHubSubclass specification 0.9 page 16, the following symbol is NOT defined.\r
-/// But value is meaningful, 0 means Reserved.\r
-///\r
-#define EFI_SUBCLASS_INSTANCE_RESERVED       0\r
-///\r
-/// Inconsistent with specification here:\r
-/// In DataHubSubclass specification 0.9 page 16, the following symbol is NOT defined.\r
-/// But value is meaningful, -1 means Not Applicable.\r
-///\r
-#define EFI_SUBCLASS_INSTANCE_NON_APPLICABLE 0xFFFF\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Guid/FirmwareFileSystem.h b/IntelFrameworkPkg/Include/Guid/FirmwareFileSystem.h
deleted file mode 100644 (file)
index dddf889..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file\r
-  Guid used to define the Firmware File System.  See the Framework Firmware\r
-  File System Specification for more details.\r
-\r
-Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  Guids defined in Firmware File System Spec 0.9.\r
-\r
-**/\r
-\r
-#ifndef __FIRMWARE_FILE_SYSTEM_GUID_H__\r
-#define __FIRMWARE_FILE_SYSTEM_GUID_H__\r
-\r
-///\r
-/// GUIDs defined by the FFS specification.\r
-///\r
-#define EFI_FIRMWARE_FILE_SYSTEM_GUID \\r
-  { 0x7A9354D9, 0x0468, 0x444a, {0x81, 0xCE, 0x0B, 0xF6, 0x17, 0xD8, 0x90, 0xDF }}\r
-\r
-typedef UINT16                      EFI_FFS_FILE_TAIL;\r
-\r
-#define FFS_ATTRIB_TAIL_PRESENT     0x01\r
-#define FFS_ATTRIB_RECOVERY         0x02\r
-#define FFS_ATTRIB_HEADER_EXTENSION 0x04\r
-\r
-extern EFI_GUID gEfiFirmwareFileSystemGuid;\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Guid/SmmCommunicate.h b/IntelFrameworkPkg/Include/Guid/SmmCommunicate.h
deleted file mode 100644 (file)
index 5f47d53..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/** @file\r
-  Definitions EFI_SMM_COMMUNICATE_HEADER used by EFI_SMM_BASE_PROTOCOL.Communicate()\r
-  functions.\r
-\r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  GUIDs defined in SmmCis spec version 0.9.\r
-\r
-**/\r
-\r
-#ifndef _SMM_COMMUNICATE_GUID_H_\r
-#define _SMM_COMMUNICATE_GUID_H_\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// GUID definition format has been changed, because the GUID format in the Framework specification is incorrect.\r
-///\r
-#define SMM_COMMUNICATE_HEADER_GUID \\r
-  { \\r
-    0xf328e36c, 0x23b6, 0x4a95, {0x85, 0x4b, 0x32, 0xe1, 0x95, 0x34, 0xcd, 0x75 } \\r
-  }\r
-\r
-extern EFI_GUID gSmmCommunicateHeaderGuid;\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Guid/SmramMemoryReserve.h b/IntelFrameworkPkg/Include/Guid/SmramMemoryReserve.h
deleted file mode 100644 (file)
index d57dfbe..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-/** @file\r
-  Definition of GUIDed HOB for reserving SMRAM regions.\r
-\r
-  This file defines:\r
-  * the GUID used to identify the GUID HOB for reserving SMRAM regions.\r
-  * the data structure of SMRAM descriptor to describe SMRAM candidate regions\r
-  * values of state of SMRAM candidate regions\r
-  * the GUID specific data structure of HOB for reserving SMRAM regions.\r
-  This GUIDed HOB can be used to convey the existence of the T-SEG reservation and H-SEG usage\r
-\r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  GUIDs defined in SmmCis spec version 0.9.\r
-\r
-**/\r
-\r
-#ifndef _EFI_SMM_PEI_SMRAM_MEMORY_RESERVE_H_\r
-#define _EFI_SMM_PEI_SMRAM_MEMORY_RESERVE_H_\r
-\r
-#define EFI_SMM_PEI_SMRAM_MEMORY_RESERVE \\r
-  { \\r
-    0x6dadf1d1, 0xd4cc, 0x4910, {0xbb, 0x6e, 0x82, 0xb1, 0xfd, 0x80, 0xff, 0x3d } \\r
-  }\r
-\r
-/**\r
-* GUID specific data structure of HOB for reserving SMRAM regions.\r
-*\r
-* Inconsistent with specification here:\r
-* EFI_HOB_SMRAM_DESCRIPTOR_BLOCK has been changed to EFI_SMRAM_HOB_DESCRIPTOR_BLOCK.\r
-* This inconsistency is kept in code in order for backward compatibility.\r
-**/\r
-typedef struct {\r
-  ///\r
-  /// Designates the number of possible regions in the system\r
-  /// that can be usable for SMRAM.\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// In Framework SMM CIS 0.91 specification, it defines the field type as UINTN.\r
-  /// However, HOBs are supposed to be CPU neutral, so UINT32 should be used instead.\r
-  ///\r
-  UINT32                NumberOfSmmReservedRegions;\r
-  ///\r
-  /// Used throughout this protocol to describe the candidate\r
-  /// regions for SMRAM that are supported by this platform.\r
-  ///\r
-  EFI_SMRAM_DESCRIPTOR  Descriptor[1];\r
-} EFI_SMRAM_HOB_DESCRIPTOR_BLOCK;\r
-\r
-extern EFI_GUID gEfiSmmPeiSmramMemoryReserveGuid;\r
-\r
-#endif\r
-\r
diff --git a/IntelFrameworkPkg/Include/Ppi/BootScriptExecuter.h b/IntelFrameworkPkg/Include/Ppi/BootScriptExecuter.h
deleted file mode 100644 (file)
index b153ed3..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-/** @file\r
-  This file declares the Boot Script Executer PPI.\r
-\r
-  This PPI is published by a PEIM upon dispatch and provides an execution engine for the\r
-  Framework boot script. This PEIM should be platform neutral and have no specific knowledge of\r
-  platform instructions or other information. The ability to interpret the boot script depends on the\r
-  abundance of other PPIs that are available. For example, if the script requests an SMBus command\r
-  execution, the PEIM looks for a relevant PPI that is available to execute it, rather than executing it\r
-  by issuing the native IA-32 instruction.\r
-\r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  This PPI is defined in Framework of EFI BootScript spec.\r
-  Version 0.91.\r
-\r
-**/\r
-\r
-#ifndef _PEI_BOOT_SCRIPT_EXECUTER_PPI_H_\r
-#define _PEI_BOOT_SCRIPT_EXECUTER_PPI_H_\r
-\r
-#define EFI_PEI_BOOT_SCRIPT_EXECUTER_PPI_GUID \\r
-  { \\r
-    0xabd42895, 0x78cf, 0x4872, {0x84, 0x44, 0x1b, 0x5c, 0x18, 0x0b, 0xfb, 0xff } \\r
-  }\r
-\r
-typedef struct _EFI_PEI_BOOT_SCRIPT_EXECUTER_PPI EFI_PEI_BOOT_SCRIPT_EXECUTER_PPI;\r
-\r
-/**\r
-  Executes the Framework boot script table.\r
-\r
-  @param  PeiServices    A pointer to the system PEI Services Table.\r
-  @param  This           A pointer to the EFI_PEI_BOOT_SCRIPT_EXECUTER_PPI instance.\r
-  @param  Address        The physical memory address where the table is stored.\r
-                         It must be zero if the table to be executed is stored in\r
-                         a firmware volume file.\r
-  @param  FvFile         The firmware volume file name that contains the table to\r
-                         be executed. It must be NULL if the table to be executed\r
-                         is stored in physical memory.\r
-\r
-  @retval EFI_SUCCESS           The boot script table was executed successfully.\r
-  @retval EFI_INVALID_PARAMETER Address is zero and FvFile is NULL.\r
-  @retval EFI_NOT_FOUND         The file name specified in FvFile cannot be found.\r
-  @retval EFI_UNSUPPORTED       The format of the boot script table is invalid.\r
-                                Or, an unsupported opcode occurred in the table.\r
-                                Or there were opcode execution errors, such as an\r
-                                insufficient dependency.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_BOOT_SCRIPT_EXECUTE)(\r
-  IN     EFI_PEI_SERVICES                        **PeiServices,\r
-  IN     EFI_PEI_BOOT_SCRIPT_EXECUTER_PPI        *This,\r
-  IN     EFI_PHYSICAL_ADDRESS                    Address,\r
-  IN     EFI_GUID                                *FvFile OPTIONAL\r
-  );\r
-\r
-///\r
-/// EFI_PEI_BOOT_SCRIPT_EXECUTER_PPI produces the function which interprets and\r
-/// executes the Framework boot script table.\r
-///\r
-struct _EFI_PEI_BOOT_SCRIPT_EXECUTER_PPI {\r
-  ///\r
-  /// Executes a boot script table.\r
-  ///\r
-  EFI_PEI_BOOT_SCRIPT_EXECUTE Execute;\r
-};\r
-\r
-extern EFI_GUID gEfiPeiBootScriptExecuterPpiGuid;\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Ppi/FindFv.h b/IntelFrameworkPkg/Include/Ppi/FindFv.h
deleted file mode 100644 (file)
index a938627..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-/** @file\r
-  This file declares FindFv PPI, which is used to locate FVs that contain PEIMs in PEI.\r
-\r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  This PPI is defined in PEI CIS\r
-  Version 0.91.\r
-\r
-**/\r
-\r
-#ifndef _FIND_FV_H_\r
-#define _FIND_FV_H_\r
-\r
-///\r
-///  Inconsistent with specification here:\r
-///  GUID value format has been changed to the standard GUID format.\r
-///\r
-#define EFI_PEI_FIND_FV_PPI_GUID \\r
-  { \\r
-    0x36164812, 0xa023, 0x44e5, {0xbd, 0x85, 0x5, 0xbf, 0x3c, 0x77, 0x0, 0xaa } \\r
-  }\r
-\r
-typedef struct _EFI_PEI_FIND_FV_PPI EFI_PEI_FIND_FV_PPI;\r
-\r
-/**\r
-  This interface returns the base address of the firmware volume whose index\r
-  was passed in FvNumber. Once this function reports a firmware volume\r
-  index/base address pair, that index/address pairing must continue throughout PEI.\r
-\r
-  @param  PeiServices    The pointer to the PEI Services Table.\r
-  @param  This           Interface pointer that implements the Find FV service.\r
-  @param  FvNumber       The index of the firmware volume to locate.\r
-  @param  FvAddress      The address of the volume to discover.\r
-\r
-  @retval EFI_SUCCESS           An additional firmware volume was found.\r
-  @retval EFI_OUT_OF_RESOURCES  There are no firmware volumes for the given FvNumber.\r
-  @retval EFI_INVALID_PARAMETER *FvAddress is NULL.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_FIND_FV_FINDFV)(\r
-  IN EFI_PEI_FIND_FV_PPI             *This,\r
-  IN EFI_PEI_SERVICES                **PeiServices,\r
-  IN UINT8                           *FvNumber,\r
-  IN OUT EFI_FIRMWARE_VOLUME_HEADER  **FVAddress\r
-  );\r
-\r
-/**\r
-  Hardware mechanisms for locating FVs in a platform vary widely.\r
-  EFI_PEI_FIND_FV_PPI serves to abstract this variation so that the\r
-  PEI Foundation can remain standard across a wide variety of platforms.\r
-**/\r
-struct _EFI_PEI_FIND_FV_PPI {\r
-  EFI_PEI_FIND_FV_FINDFV  FindFv;   ///< Service that abstracts the location of additional firmware volumes.\r
-};\r
-\r
-extern EFI_GUID gEfiFindFvPpiGuid;\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Ppi/FvLoadFile.h b/IntelFrameworkPkg/Include/Ppi/FvLoadFile.h
deleted file mode 100644 (file)
index 995aeae..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-/** @file\r
-  Load image file from fv to memory.\r
-\r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  This PPI is defined in PEI CIS spec Version 0.91.\r
-\r
-**/\r
-\r
-#ifndef _FV_FILE_LOADER_PPI_H_\r
-#define _FV_FILE_LOADER_PPI_H_\r
-\r
-#define EFI_PEI_FV_FILE_LOADER_GUID \\r
-  { \\r
-    0x7e1f0d85, 0x4ff, 0x4bb2, {0x86, 0x6a, 0x31, 0xa2, 0x99, 0x6a, 0x48, 0xa8 } \\r
-  }\r
-\r
-typedef struct _EFI_PEI_FV_FILE_LOADER_PPI  EFI_PEI_FV_FILE_LOADER_PPI;\r
-\r
-/**\r
-  Loads a PEIM into memory for subsequent execution.\r
-\r
-  @param  This           Interface pointer that implements the Load File PPI instance.\r
-  @param  FfsHeader      The pointer to the FFS header of the file to load.\r
-  @param  ImageAddress   The pointer to the address of the loaded Image\r
-  @param  ImageSize      The pointer to the size of the loaded image.\r
-  @param  EntryPoint     The pointer to the entry point of the image.\r
-\r
-  @retval EFI_SUCCESS           The image was loaded successfully.\r
-  @retval EFI_OUT_OF_RESOURCES  There was not enough memory.\r
-  @retval EFI_INVALID_PARAMETER The contents of the FFS file did not\r
-                                contain a valid PE/COFF image that could be loaded.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_FV_LOAD_FILE)(\r
-  IN  EFI_PEI_FV_FILE_LOADER_PPI                *This,\r
-  IN  EFI_FFS_FILE_HEADER                       *FfsHeader,\r
-  OUT EFI_PHYSICAL_ADDRESS                      *ImageAddress,\r
-  OUT UINT64                                    *ImageSize,\r
-  OUT EFI_PHYSICAL_ADDRESS                      *EntryPoint\r
-  );\r
-\r
-/**\r
-  This PPI is a pointer to the Load File service. This service will be\r
-  published by a PEIM. The PEI Foundation will use this service to\r
-  launch the known non-XIP PE/COFF PEIM images. This service may\r
-  depend upon the presence of the EFI_PEI_PERMANENT_MEMORY_INSTALLED_PPI.\r
-**/\r
-struct _EFI_PEI_FV_FILE_LOADER_PPI {\r
-  ///\r
-  /// Loads a PEIM into memory for subsequent execution.\r
-  ///\r
-  EFI_PEI_FV_LOAD_FILE  FvLoadFile;\r
-};\r
-\r
-extern EFI_GUID gEfiPeiFvFileLoaderPpiGuid;\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Ppi/PciCfg.h b/IntelFrameworkPkg/Include/Ppi/PciCfg.h
deleted file mode 100644 (file)
index 0d46210..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-/** @file\r
-  This file declares the PciCfg PPI used to access the PCI configuration space in PEI\r
-\r
-Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  This PPI is defined in PEI CIS\r
-  Version 0.91.\r
-\r
-**/\r
-\r
-#ifndef __PEI_PCI_CFG_H__\r
-#define __PEI_PCI_CFG_H__\r
-\r
-#include <Ppi/PciCfg2.h>\r
-//\r
-// Get the common definitions for EFI_PEI_PCI_CFG_PPI_WIDTH.\r
-//\r
-\r
-#define EFI_PEI_PCI_CFG_PPI_INSTALLED_GUID \\r
-  { \\r
-    0xe1f2eba0, 0xf7b9, 0x4a26, {0x86, 0x20, 0x13, 0x12, 0x21, 0x64, 0x2a, 0x90 } \\r
-  }\r
-\r
-typedef struct _EFI_PEI_PCI_CFG_PPI   EFI_PEI_PCI_CFG_PPI;\r
-\r
-#define PEI_PCI_CFG_ADDRESS(bus, dev, func, reg)  ( \\r
-      (UINT64) ((((UINTN) bus) << 24) + (((UINTN) dev) << 16) + (((UINTN) func) << 8) + ((UINTN) reg)) \\r
-    ) & 0x00000000ffffffff\r
-\r
-/**\r
-  PCI read and write operation.\r
-\r
-  @param  PeiServices    An indirect pointer to the PEI Services Table\r
-                         published by the PEI Foundation.\r
-  @param  This           Pointer to local data for the interface.\r
-  @param  Width          The width of the access. Enumerated in bytes.\r
-  @param  Address        The physical address of the access.\r
-  @param  Buffer         A pointer to the buffer of data.\r
-\r
-  @retval EFI_SUCCESS           The function completed successfully.\r
-  @retval EFI_NOT_YET_AVAILABLE The service has not been installed.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_PCI_CFG_PPI_IO)(\r
-  IN EFI_PEI_SERVICES             **PeiServices,\r
-  IN EFI_PEI_PCI_CFG_PPI          *This,\r
-  IN EFI_PEI_PCI_CFG_PPI_WIDTH    Width,\r
-  IN UINT64                       Address,\r
-  IN OUT VOID                     *Buffer\r
-  );\r
-\r
-/**\r
-  PCI read-modify-write operation.\r
-\r
-  @param  PeiServices    An indirect pointer to the PEI Services Table\r
-                         published by the PEI Foundation.\r
-  @param  This           The pointer to local data for the interface.\r
-  @param  Width          The width of the access. Enumerated in bytes.\r
-  @param  Address        The physical address of the access.\r
-  @param  SetBits        Value of the bits to set.\r
-  @param  ClearBits      Value of the bits to clear.\r
-\r
-  @retval EFI_SUCCESS           The function completed successfully.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_PCI_CFG_PPI_RW)(\r
-  IN EFI_PEI_SERVICES             **PeiServices,\r
-  IN EFI_PEI_PCI_CFG_PPI          *This,\r
-  IN EFI_PEI_PCI_CFG_PPI_WIDTH    Width,\r
-  IN UINT64                       Address,\r
-  IN UINTN                        SetBits,\r
-  IN UINTN                        ClearBits\r
-  );\r
-\r
-/**\r
-  The EFI_PEI_PCI_CFG_PPI interfaces are used to abstract accesses to PCI\r
-  controllers behind a PCI root bridge controller.\r
-**/\r
-struct _EFI_PEI_PCI_CFG_PPI {\r
-  ///\r
-  /// PCI read services.  See the Read() function description.\r
-  ///\r
-  EFI_PEI_PCI_CFG_PPI_IO  Read;\r
-\r
-  ///\r
-  /// PCI write services.  See the Write() function description.\r
-  ///\r
-  EFI_PEI_PCI_CFG_PPI_IO  Write;\r
-\r
-  ///\r
-  /// PCI read-modify-write services.  See the Modify() function description.\r
-  ///\r
-  EFI_PEI_PCI_CFG_PPI_RW  Modify;\r
-};\r
-\r
-extern EFI_GUID gEfiPciCfgPpiInServiceTableGuid;\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Ppi/ReadOnlyVariable.h b/IntelFrameworkPkg/Include/Ppi/ReadOnlyVariable.h
deleted file mode 100644 (file)
index 3d52e93..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-/** @file\r
-  This file declares the Read-only Variable Service PPI, which is required by the framework spec.\r
-\r
-  These services provide a lightweight, read-only variant of the full EFI variable services. The\r
-  reason that these services are read-only is to reduce the complexity of flash management. Also,\r
-  some implementation of the PEI may use the same physical flash part for variable and PEIM\r
-  storage. As such, a write command to certain technologies would alter the contents of the entire part,\r
-  making the PEIM execution in the original position not follow the required flow.\r
-\r
-Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  This PPI is defined in PEI CIS\r
-  Version 0.91.\r
-**/\r
-\r
-#ifndef __PEI_READ_ONLY_VARIABLE_PPI_H__\r
-#define __PEI_READ_ONLY_VARIABLE_PPI_H__\r
-\r
-#define EFI_PEI_READ_ONLY_VARIABLE_ACCESS_PPI_GUID \\r
-  { \\r
-    0x3cdc90c6, 0x13fb, 0x4a75, {0x9e, 0x79, 0x59, 0xe9, 0xdd, 0x78, 0xb9, 0xfa } \\r
-  }\r
-\r
-typedef struct _EFI_PEI_READ_ONLY_VARIABLE_PPI  EFI_PEI_READ_ONLY_VARIABLE_PPI;\r
-\r
-///\r
-/// Variable attributes.\r
-///@{\r
-#define EFI_VARIABLE_NON_VOLATILE       0x00000001\r
-#define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x00000002\r
-#define EFI_VARIABLE_RUNTIME_ACCESS     0x00000004\r
-///\r
-/// Inconsistent with specification here:\r
-/// In Framework Spec, PeiCis0.91, neither the macro or its value is defined.\r
-/// Keeping this inconsistancy for backward compatibility.\r
-///\r
-#define EFI_VARIABLE_READ_ONLY          0x00000008\r
-///@}\r
-\r
-/**\r
-  Get Variable value by Name and GUID pair.\r
-\r
-  @param[in]  PeiServices    An indirect pointer to the PEI Services Table published\r
-                             by the PEI Foundation.\r
-  @param[in]  VariableName   A NULL-terminated Unicode string that is the name of the vendor's variable.\r
-  @param[in]  VendorGuid     A unique identifier for the vendor.\r
-  @param[out] Attributes     This OPTIONAL parameter may be either NULL or\r
-                             a pointer to the location in which to return\r
-                             the attributes bitmask for the variable.\r
-  @param[in,out]  DataSize   On input, the size in bytes of the return Data buffer.\r
-                             On output, the size of data returned in Data.\r
-  @param[out] Data           The buffer to return the contents of the variable.\r
-\r
-  @retval EFI_SUCCESS           The function completed successfully.\r
-  @retval EFI_NOT_FOUND         The variable was not found.\r
-  @retval EFI_BUFFER_TOO_SMALL  The BufferSize is too small for the result.\r
-  @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value.\r
-  @retval EFI_DEVICE_ERROR      The variable could not be retrieved due to a hardware error.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_GET_VARIABLE)(\r
-  IN     EFI_PEI_SERVICES   **PeiServices,\r
-  IN     CHAR16             *VariableName,\r
-  IN     EFI_GUID           *VendorGuid,\r
-     OUT UINT32             *Attributes OPTIONAL,\r
-  IN OUT UINTN              *DataSize,\r
-     OUT VOID               *Data\r
-  );\r
-\r
-/**\r
-  This function can be called multiple times to retrieve the VariableName\r
-  and VendorGuid of all variables currently available in the system. On each call\r
-  to GetNextVariableName(), the previous results are passed into the interface,\r
-  and on output the interface returns the next variable name data.  When the\r
-  entire variable list has been returned, the error EFI_NOT_FOUND is returned.\r
-\r
-  @param[in]  PeiServices       An indirect pointer to the PEI Services Table\r
-                                published by the PEI Foundation.\r
-  @param[in]  VariableNameSize  The size of the VariableName buffer.\r
-  @param[in]  VariableName      On input, supplies the last VariableName that was\r
-                                returned by GetNextVariableName(). On output,\r
-                                returns the Null-terminated Unicode string of the\r
-                                current variable.\r
-  @param[in]  VendorGuid        On input, supplies the last VendorGuid that was\r
-                                returned by GetNextVariableName(). On output,\r
-                                returns the VendorGuid of the current variable.\r
-\r
-  @retval EFI_SUCCESS           The function completed successfully.\r
-  @retval EFI_NOT_FOUND         The next variable was not found.\r
-  @retval EFI_BUFFER_TOO_SMALL  The VariableNameSize is too small for the result.\r
-  @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value.\r
-  @retval EFI_DEVICE_ERROR      The variable name could not be retrieved due to\r
-                                a hardware error.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_GET_NEXT_VARIABLE_NAME)(\r
-  IN EFI_PEI_SERVICES             **PeiServices,\r
-  IN OUT UINTN                    *VariableNameSize,\r
-  IN OUT CHAR16                   *VariableName,\r
-  IN OUT EFI_GUID                 *VendorGuid\r
-  );\r
-\r
-///\r
-/// This PPI provides a lightweight, read-only variant of the full EFI\r
-/// variable services.\r
-///\r
-struct _EFI_PEI_READ_ONLY_VARIABLE_PPI {\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// In Framework Spec, PeiCis0.91, the field is named as GetVariable and GetNextVariableName.\r
-  /// Keeping this inconsistancy for backward compatibility.\r
-  ///\r
-  EFI_PEI_GET_VARIABLE            PeiGetVariable;         ///< A service to ascertain a given variable name.\r
-  EFI_PEI_GET_NEXT_VARIABLE_NAME  PeiGetNextVariableName; ///< A service to ascertain a variable based upon a given, known variable\r
-};\r
-\r
-extern EFI_GUID gEfiPeiReadOnlyVariablePpiGuid;\r
-\r
-#endif  /* __PEI_READ_ONLY_VARIABLE_PPI_H__ */\r
-\r
diff --git a/IntelFrameworkPkg/Include/Ppi/S3Resume.h b/IntelFrameworkPkg/Include/Ppi/S3Resume.h
deleted file mode 100644 (file)
index eb8ec59..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-/** @file\r
-  This file declares S3 Resume PPI which accomplishes the firmware S3 resume boot path\r
-  and transfers control to OS.\r
-\r
-  This PPI is published by the S3 resume PEIM and can be used on the S3 resume boot path to\r
-  restore the platform to its preboot configuration and transfer control to OS. The information that is\r
-  required for an S3 resume can be saved during the normal boot path using\r
-  EFI_ACPI_S3_SAVE_PROTOCOL. This presaved information can then be restored in the S3\r
-  resume boot path using EFI_PEI_S3_RESUME_PPI. Architecturally, the S3 resume PEIM is the\r
-  last PEIM to be dispatched in the S3 resume boot path.\r
-  Before using this PPI, the caller must ensure the necessary information for the S3 resume, such as\r
-  the following, is available for the S3 resume boot path:\r
-  - EFI_ACPI_S3_RESUME_SCRIPT_TABLE script table. Type\r
-    EFI_ACPI_S3_RESUME_SCRIPT_TABLE is defined in the Intel Platform Innovation\r
-    Framework for EFI Boot Script Specification.\r
-  - OS waking vector.\r
-  - The reserved memory range to be used for the S3 resume.\r
-  Otherwise, the S3 resume boot path may fail.\r
-\r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  This PPI is defined in Framework for EFI S3 Resume Boot Path spec.\r
-  Version 0.9.\r
-\r
-**/\r
-\r
-#ifndef __PEI_S3_RESUME_PPI_H__\r
-#define __PEI_S3_RESUME_PPI_H__\r
-\r
-#define EFI_PEI_S3_RESUME_PPI_GUID \\r
-  { \\r
-    0x4426CCB2, 0xE684, 0x4a8a, {0xAE, 0x40, 0x20, 0xD4, 0xB0, 0x25, 0xB7, 0x10 } \\r
-  }\r
-\r
-typedef struct _EFI_PEI_S3_RESUME_PPI   EFI_PEI_S3_RESUME_PPI;\r
-\r
-/**\r
-  Restores the platform to its preboot configuration for an S3 resume and\r
-  jumps to the OS waking vector.\r
-\r
-  @param  PeiServices    The pointer to the PEI Services Table\r
-\r
-  @retval EFI_ABORTED           Execution of the S3 resume boot script table failed.\r
-  @retval EFI_NOT_FOUND         Could not be locate some necessary information that\r
-                                is used for the S3 resume boot path d.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_S3_RESUME_PPI_RESTORE_CONFIG)(\r
-  IN EFI_PEI_SERVICES   **PeiServices\r
-  );\r
-\r
-/**\r
-  EFI_PEI_S3_RESUME_PPI accomplishes the firmware S3 resume boot\r
-  path and transfers control to OS.\r
-**/\r
-struct _EFI_PEI_S3_RESUME_PPI {\r
-  ///\r
-  /// Restores the platform to its preboot configuration for an S3 resume and\r
-  /// jumps to the OS waking vector.\r
-  ///\r
-  EFI_PEI_S3_RESUME_PPI_RESTORE_CONFIG  S3RestoreConfig;\r
-};\r
-\r
-extern EFI_GUID gEfiPeiS3ResumePpiGuid;\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Ppi/SectionExtraction.h b/IntelFrameworkPkg/Include/Ppi/SectionExtraction.h
deleted file mode 100644 (file)
index 30fe768..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-/** @file\r
-  This file declares the Section Extraction PPI.\r
-\r
-  This PPI is defined in PEI CIS version 0.91. It supports encapsulating sections,\r
-  such as GUIDed sections used to authenticate the file encapsulation of other domain-specific wrapping.\r
-\r
-Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-**/\r
-\r
-#ifndef __SECTION_EXTRACTION_H__\r
-#define __SECTION_EXTRACTION_H__\r
-\r
-#define EFI_PEI_SECTION_EXTRACTION_PPI_GUID \\r
-  { \\r
-    0x4F89E208, 0xE144, 0x4804, {0x9E, 0xC8, 0x0F, 0x89, 0x4F, 0x7E, 0x36, 0xD7 } \\r
-  }\r
-\r
-typedef struct _EFI_PEI_SECTION_EXTRACTION_PPI EFI_PEI_SECTION_EXTRACTION_PPI;\r
-\r
-//\r
-// Bit values for AuthenticationStatus\r
-//\r
-#define EFI_AUTH_STATUS_PLATFORM_OVERRIDE 0x01\r
-#define EFI_AUTH_STATUS_IMAGE_SIGNED      0x02\r
-#define EFI_AUTH_STATUS_NOT_TESTED        0x04\r
-#define EFI_AUTH_STATUS_TEST_FAILED       0x08\r
-\r
-/**\r
-  The function is used to retrieve a section from within a section file.\r
-  It will retrieve both encapsulation sections and leaf sections in their entirety,\r
-  exclusive of the section header.\r
-\r
-  @param PeiServices            The pointer to the PEI Services Table.\r
-  @param This                   Indicates the calling context\r
-  @param SectionType            The pointer to an EFI_SECTION_TYPE. If\r
-                                SectionType == NULL, the contents of the entire\r
-                                section are returned in Buffer. If SectionType\r
-                                is not NULL, only the requested section is returned.\r
-  @param SectionDefinitionGuid  The pointer to an EFI_GUID.\r
-                                If SectionType == EFI_SECTION_GUID_DEFINED,\r
-                                SectionDefinitionGuid indicates for which section\r
-                                GUID to search.  If SectionType != EFI_SECTION_GUID_DEFINED,\r
-                                SectionDefinitionGuid is unused and is ignored.\r
-  @param SectionInstance        If SectionType is not NULL, indicates which\r
-                                instance of the requested section type to return.\r
-  @param Buffer                 The pointer to a pointer to a buffer in which the\r
-                                section contents are returned.\r
-  @param BufferSize             A pointer to a caller-allocated UINT32. On input,\r
-                                *BufferSize indicates the size in bytes of the\r
-                                memory region pointed to by Buffer. On output,\r
-                                *BufferSize contains the number of bytes required\r
-                                to read the section.\r
-  @param AuthenticationStatus   A pointer to a caller-allocated UINT32 in\r
-                                which any metadata from encapsulating GUID-defined\r
-                                sections is returned.\r
-\r
-  @retval EFI_SUCCESS           The section was successfully processed, and the section\r
-                                contents were returned in Buffer.\r
-  @retval EFI_PROTOCOL_ERROR    A GUID-defined section was encountered in\r
-                                the file with its EFI_GUIDED_SECTION_PROCESSING_REQUIRED\r
-                                bit set, but there was no corresponding GUIDed\r
-                                Section Extraction Protocol in the handle database.\r
-                                *Buffer is unmodified.\r
-  @retval EFI_NOT_FOUND         The requested section does not exist.*Buffer is\r
-                                unmodified.\r
-  @retval EFI_OUT_OF_RESOURCES  The system has insufficient resources to process\r
-                                the request.\r
-  @retval EFI_INVALID_PARAMETER The SectionStreamHandle does not exist.\r
-  @retval EFI_WARN_TOO_SMALL    The size of the input buffer is insufficient to\r
-                                contain the requested section. The input buffer\r
-                                is filled and contents are section contents are\r
-                                truncated.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_GET_SECTION)(\r
-  IN EFI_PEI_SERVICES                         **PeiServices,\r
-  IN EFI_PEI_SECTION_EXTRACTION_PPI           *This,\r
-  IN EFI_SECTION_TYPE                         *SectionType,\r
-  IN EFI_GUID                                 *SectionDefinitionGuid, OPTIONAL\r
-  IN UINTN                                    SectionInstance,\r
-  IN VOID                                     **Buffer,\r
-  IN OUT UINT32                               *BufferSize,\r
-  OUT UINT32                                  *AuthenticationStatus\r
-  );\r
-\r
-/**\r
-  This PPI supports encapsulating sections, such as GUIDed sections used to\r
-  authenticate the file encapsulation of other domain-specific wrapping.\r
-**/\r
-struct _EFI_PEI_SECTION_EXTRACTION_PPI {\r
-  EFI_PEI_GET_SECTION GetSection;  ///< Retrieves a section from within a section file.\r
-};\r
-\r
-extern EFI_GUID gEfiPeiSectionExtractionPpiGuid;\r
-\r
-#endif\r
-\r
diff --git a/IntelFrameworkPkg/Include/Ppi/Security.h b/IntelFrameworkPkg/Include/Ppi/Security.h
deleted file mode 100644 (file)
index c90f941..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-/** @file\r
-  This file declares the Security Architectural PPI.\r
-\r
-  This PPI is installed by a platform PEIM that abstracts the security policy to the PEI\r
-  Foundation, namely the case of a PEIM's authentication state being returned during the PEI section\r
-  extraction process.\r
-\r
-Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  This PPI is defined in PEI CIS.\r
-  Version 0.91.\r
-\r
-**/\r
-\r
-#ifndef __SECURITY_PPI_H__\r
-#define __SECURITY_PPI_H__\r
-\r
-#define EFI_PEI_SECURITY_PPI_GUID \\r
-  { \\r
-    0x1388066e, 0x3a57, 0x4efa, {0x98, 0xf3, 0xc1, 0x2f, 0x3a, 0x95, 0x8a, 0x29 } \\r
-  }\r
-\r
-typedef struct _EFI_PEI_SECURITY_PPI  EFI_PEI_SECURITY_PPI;\r
-\r
-/**\r
-  Allows the platform builder to implement a security policy in response\r
-  to varying file authentication states.\r
-\r
-  @param  PeiServices             The pointer to the PEI Services Table.\r
-  @param  This                    Interface pointer that implements the particular\r
-                                  EFI_PEI_SECURITY_PPI instance.\r
-  @param  AuthenticationStatus    Status returned by the verification service as\r
-                                  part of section extraction.\r
-  @param  FfsFileHeader           The pointer to the file under review.\r
-  @param  DeferExecution          The pointer to a variable that alerts the PEI\r
-                                  Foundation to defer execution of a PEIM.\r
-\r
-  @retval EFI_SUCCESS             The service performed its action successfully.\r
-  @retval EFI_SECURITY_VIOLATION  The object cannot be trusted.\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *FRAMEWORK_EFI_PEI_SECURITY_AUTHENTICATION_STATE)(\r
-  IN EFI_PEI_SERVICES             **PeiServices,\r
-  IN EFI_PEI_SECURITY_PPI         *This,\r
-  IN UINT32                       AuthenticationStatus,\r
-  IN EFI_FFS_FILE_HEADER          *FfsFileHeader,\r
-  IN OUT BOOLEAN                  *DeferExecution\r
-  );\r
-\r
-//\r
-// PPI interface structure of Security PPI\r
-//\r
-struct _EFI_PEI_SECURITY_PPI {\r
-  FRAMEWORK_EFI_PEI_SECURITY_AUTHENTICATION_STATE  AuthenticationState;\r
-};\r
-\r
-extern EFI_GUID gEfiPeiSecurityPpiGuid;\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Ppi/Smbus.h b/IntelFrameworkPkg/Include/Ppi/Smbus.h
deleted file mode 100644 (file)
index 8200e71..0000000
+++ /dev/null
@@ -1,226 +0,0 @@
-/** @file\r
-  This file declares the Smbus PPI, which provides the basic I/O interfaces that a PEIM\r
-  uses to access its SMBus controller and the slave devices attached to it.\r
-\r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  This PPI is defined in Framework of EFI SmBus PPI spec.\r
-  Version 0.9.\r
-\r
-**/\r
-\r
-#ifndef _PEI_SMBUS_PPI_H_\r
-#define _PEI_SMBUS_PPI_H_\r
-\r
-#include <Ppi/Smbus2.h>\r
-\r
-#define EFI_PEI_SMBUS_PPI_GUID \\r
-  { \\r
-    0xabd42895, 0x78cf, 0x4872, {0x84, 0x44, 0x1b, 0x5c, 0x18, 0xb, 0xfb, 0xda } \\r
-  }\r
-\r
-typedef struct _EFI_PEI_SMBUS_PPI EFI_PEI_SMBUS_PPI;\r
-\r
-/**\r
-  Executes an SMBus operation to an SMBus controller.\r
-\r
-  @param[in]      PeiServices   A pointer to the system PEI Services Table.\r
-  @param[in]      This          A pointer to the EFI_PEI_SMBUS_PPI instance.\r
-  @param[in]      SlaveAddress  The SMBUS hardware address to which the SMBUS\r
-                                device is preassigned or allocated.\r
-  @param[in]      Command       This command is transmitted by the SMBus host\r
-                                controller to the SMBus slave device, and the\r
-                                interpretation is SMBus slave device specific.\r
-  @param[in]      Operation     Signifies which particular SMBus hardware protocol\r
-                                instance to use to execute the SMBus transactions.\r
-  @param[in]      PecCheck      Defines if Packet Error Code (PEC) checking is\r
-                                required for this operation.\r
-  @param[in, out] Length        The number of bytes for this operation.\r
-  @param[in, out] Buffer        Contains the value of data to execute to the SMBus\r
-                                slave device.\r
-\r
-  @retval EFI_SUCCESS           The last data that was returned from the access\r
-                                matched the poll exit criteria.\r
-  @retval EFI_CRC_ERROR         The checksum is not correct (PEC is incorrect).\r
-  @retval EFI_TIMEOUT           Timeout expired before the operation was completed.\r
-                                Timeout is determined by the SMBus host controller device.\r
-  @retval EFI_OUT_OF_RESOURCES  The request could not be completed\r
-                                due to a lack of resources.\r
-  @retval EFI_DEVICE_ERROR      The request was not completed because a failure\r
-                                was recorded in the Host Status Register bit.\r
-  @retval EFI_INVALID_PARAMETER The operation is not defined in EFI_SMBUS_OPERATION.\r
-  @retval EFI_INVALID_PARAMETER Length/Buffer is NULL for operations except for\r
-                                EfiSmbusQuickRead and EfiSmbusQuickWrite. Length\r
-                                is outside the range of valid values.\r
-  @retval EFI_UNSUPPORTED       The SMBus operation or PEC is not supported.\r
-  @retval EFI_BUFFER_TOO_SMALL  Buffer is not sufficient for this operation.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_SMBUS_PPI_EXECUTE_OPERATION)(\r
-  IN      EFI_PEI_SERVICES          **PeiServices,\r
-  IN      EFI_PEI_SMBUS_PPI         *This,\r
-  IN      EFI_SMBUS_DEVICE_ADDRESS  SlaveAddress,\r
-  IN      EFI_SMBUS_DEVICE_COMMAND  Command,\r
-  IN      EFI_SMBUS_OPERATION       Operation,\r
-  IN      BOOLEAN                   PecCheck,\r
-  IN OUT  UINTN                     *Length,\r
-  IN OUT  VOID                      *Buffer\r
-  );\r
-\r
-/**\r
-  This function is user-defined, and is called when the SlaveAddress/Data pair happens.\r
-\r
-  @param[in]  PeiServices    A pointer to the system PEI Services Table.\r
-  @param[in]  This           A pointer to the EFI_PEI_SMBUS_PPI instance.\r
-  @param[in]  SlaveAddress   The SMBUS hardware address to which the SMBUS\r
-                             device is preassigned or allocated.\r
-  @param[in]  Data           Data of the SMBus host notify command, which denotes that\r
-                             the caller wants to be called.\r
-\r
-  @return Status Code returned by callback function.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_SMBUS_NOTIFY_FUNCTION)(\r
-  IN      EFI_PEI_SERVICES              **PeiServices,\r
-  IN      EFI_PEI_SMBUS_PPI             *SmbusPpi,\r
-  IN      EFI_SMBUS_DEVICE_ADDRESS      SlaveAddress,\r
-  IN      UINTN                         Data\r
-  );\r
-\r
-/**\r
-  The ArpDevice() function enumerates either the entire bus or a specific\r
-  device identified by SmbusUdid.\r
-\r
-  @param[in]      PeiServices   A pointer to the system PEI Services Table.\r
-  @param[in]      This          A pointer to the EFI_PEI_SMBUS_PPI instance.\r
-  @param[in]      ArpAll        A Boolean expression that indicates if the host\r
-                                drivers need to enumerate all the devices or to\r
-                                enumerate only the device that is identified\r
-                                by SmbusUdid. If ArpAll is TRUE, SmbusUdid and\r
-                                SlaveAddress are optional and ignored if entered.\r
-                                If ArpAll is FALSE, ArpDevice will enumerate\r
-                                SmbusUdid, and the address will be at SlaveAddress.\r
-  @param[in]      SmbusUdid     The targeted SMBus Unique Device Identifier (UDID).\r
-                                The UDID may not exist for SMBus devices with fixed\r
-                                addresses.\r
-  @param[in, out] SlaveAddress  The new SMBus address for the slave device for\r
-                                which the operation is targeted.\r
-                                This address may be NULL.\r
-\r
-  @retval EFI_SUCCESS           The SMBus slave device address was set.\r
-  @retval EFI_INVALID_PARAMETER SlaveAddress is NULL.\r
-  @retval EFI_OUT_OF_RESOURCES  The request could not be completed\r
-                                due to a lack of resources.\r
-  @retval EFI_TIMEOUT           The SMBus slave device did not respond.\r
-  @retval EFI_DEVICE_ERROR      The request was not completed because the transaction failed.\r
-  @retval EFI_UNSUPPORTED       ArpDevice() is not implemented by this PEIM.\r
-                                This return value is not defined in the Framework Specification.\r
-                                This return value was introduced in the PI Specification.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_SMBUS_PPI_ARP_DEVICE)(\r
-  IN      EFI_PEI_SERVICES          **PeiServices,\r
-  IN      EFI_PEI_SMBUS_PPI         *This,\r
-  IN      BOOLEAN                   ArpAll,\r
-  IN      EFI_SMBUS_UDID            *SmbusUdid, OPTIONAL\r
-  IN OUT  EFI_SMBUS_DEVICE_ADDRESS  *SlaveAddress OPTIONAL\r
-  );\r
-\r
-/**\r
-  The GetArpMap() function returns the mapping of all the SMBus devices\r
-  that are enumerated by the SMBus host driver.\r
-\r
-  @param[in]      PeiServices    A pointer to the system PEI Services Table.\r
-  @param[in]      This           A pointer to the EFI_PEI_SMBUS_PPI instance.\r
-  @param[in, out] Length         The size of the buffer that contains the SMBus device map.\r
-  @param[in, out] SmbusDeviceMap The pointer to the device map as enumerated\r
-                                 by the SMBus controller driver.\r
-\r
-  @retval EFI_SUCCESS       The device map was returned correctly in the buffer.\r
-  @retval EFI_UNSUPPORTED   GetArpMap() are not implemented by this PEIM.\r
-                            This return value was not defined in the Framework Specification.\r
-                            This return value was introduced in the PI Specification.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_SMBUS_PPI_GET_ARP_MAP)(\r
-  IN      EFI_PEI_SERVICES          **PeiServices,\r
-  IN      EFI_PEI_SMBUS_PPI         *This,\r
-  IN OUT  UINTN                     *Length,\r
-  IN OUT  EFI_SMBUS_DEVICE_MAP      **SmbusDeviceMap\r
-  );\r
-\r
-/**\r
-  Allows a device driver to register for a callback when the bus driver detects a state that it needs to\r
-  propagate to other PEIMs that are registered for a callback.\r
-\r
-  The Notify() function registers all the callback functions to allow the\r
-  bus driver to call these functions when the SlaveAddress/Data pair occur.\r
-  All functions to be registered with EFI_PEI_SMBUS_PPI_NOTIFY must be of type\r
-  EFI_PEI_SMBUS_NOTIFY_FUNCTION.\r
-\r
-  @param[in] PeiServices    A pointer to the system PEI Services Table.\r
-  @param[in] This           A pointer to the EFI_PEI_SMBUS_PPI instance.\r
-  @param[in] SlaveAddress   The address that the host controller detects as\r
-                            sending a message and triggers all the registered functions.\r
-  @param[in] Data           Data that the host controller detects as sending a message\r
-                            and triggers all the registered functions.\r
-  @param[in] NotifyFunction The function to call when the bus driver\r
-                            detects the SlaveAddress and Data pair.\r
-\r
-  @retval EFI_SUCCESS       NotifyFunction has been registered.\r
-  @retval EFI_UNSUPPORTED   Notify() are not implemented by this PEIM.\r
-                            This return value is not defined in  the Framework Specification.\r
-                            This return value was introduced in the PI Specification.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_SMBUS_PPI_NOTIFY)(\r
-  IN      EFI_PEI_SERVICES              **PeiServices,\r
-  IN      EFI_PEI_SMBUS_PPI             *This,\r
-  IN      EFI_SMBUS_DEVICE_ADDRESS      SlaveAddress,\r
-  IN      UINTN                         Data,\r
-  IN      EFI_PEI_SMBUS_NOTIFY_FUNCTION NotifyFunction\r
-  );\r
-\r
-///\r
-/// Provides the basic I/O interfaces that a PEIM uses to access\r
-/// its SMBus controller and the slave devices attached to it.\r
-///\r
-struct _EFI_PEI_SMBUS_PPI {\r
-  ///\r
-  /// Executes the SMBus operation to an SMBus slave device.\r
-  ///\r
-  EFI_PEI_SMBUS_PPI_EXECUTE_OPERATION Execute;\r
-\r
-  ///\r
-  /// Allows an SMBus 2.0 device(s) to be Address Resolution Protocol (ARP)\r
-  ///\r
-  EFI_PEI_SMBUS_PPI_ARP_DEVICE        ArpDevice;\r
-\r
-  ///\r
-  /// Allows a PEIM to retrieve the address that was allocated by the SMBus\r
-  /// host controller during enumeration/ARP.\r
-  ///\r
-  EFI_PEI_SMBUS_PPI_GET_ARP_MAP       GetArpMap;\r
-\r
-  ///\r
-  /// Allows a driver to register for a callback to the SMBus host\r
-  /// controller driver when the bus issues a notification to the bus controller PEIM.\r
-  ///\r
-  EFI_PEI_SMBUS_PPI_NOTIFY            Notify;\r
-};\r
-\r
-extern EFI_GUID gEfiPeiSmbusPpiGuid;\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Protocol/AcpiS3Save.h b/IntelFrameworkPkg/Include/Protocol/AcpiS3Save.h
deleted file mode 100644 (file)
index 67e6327..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-/** @file\r
-  This protocol is used to prepare all information that is needed for the S3 resume boot path. This\r
-  protocol is not required for all platforms.\r
-\r
-Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  This Protocol is defined in Framework of S3 Resume Boot Path Spec.\r
-  Version 0.9.\r
-\r
-**/\r
-\r
-#ifndef _ACPI_S3_SAVE_PROTOCOL_H_\r
-#define _ACPI_S3_SAVE_PROTOCOL_H_\r
-\r
-//\r
-// Forward reference for pure ANSI compatability\r
-//\r
-typedef struct _EFI_ACPI_S3_SAVE_PROTOCOL EFI_ACPI_S3_SAVE_PROTOCOL;\r
-\r
-//\r
-// S3 Save Protocol GUID\r
-//\r
-#define EFI_ACPI_S3_SAVE_GUID \\r
-  { \\r
-    0x125f2de1, 0xfb85, 0x440c, {0xa5, 0x4c, 0x4d, 0x99, 0x35, 0x8a, 0x8d, 0x38 } \\r
-  }\r
-\r
-//\r
-// Protocol Data Structures\r
-//\r
-\r
-/**\r
-   This function is used to:\r
-\r
-  - Prepare all information that is needed in the S3 resume boot path. This information can include\r
-  the following:\r
-     -- Framework boot script table\r
-     -- RSDT pointer\r
-     -- Reserved memory for the S3 resume\r
-\r
-  - Get the minimum legacy memory length (meaning below 1 MB) that is required for the S3 resume boot path.\r
-  If LegacyMemoryAddress is NULL, the firmware will be unable to jump into a real-mode\r
-  waking vector. However, it might still be able to jump into a flat-mode waking vector as long as the\r
-  OS provides a flat-mode waking vector. It is the caller's responsibility to ensure the\r
-  LegacyMemoryAddress is valid. If the LegacyMemoryAddress is higher than 1 MB,\r
-  EFI_INVALID_PARAMETER will be returned.\r
-\r
-  @param  This                  A pointer to the EFI_ACPI_S3_SAVE_PROTOCOL instance.\r
-  @param  LegacyMemoryAddress   The base of legacy memory.\r
-\r
-  @retval EFI_SUCCESS           All information was saved successfully.\r
-  @retval EFI_INVALID_PARAMETER The memory range is not located below 1 MB.\r
-  @retval EFI_OUT_OF_RESOURCES  Resources were insufficient to save all the information.\r
-  @retval EFI_NOT_FOUND         Some necessary information cannot be found.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_ACPI_S3_SAVE)(\r
-  IN EFI_ACPI_S3_SAVE_PROTOCOL      * This,\r
-  IN VOID                           * LegacyMemoryAddress\r
-  );\r
-\r
-/**\r
-  This function returns the size of the legacy memory (meaning below 1 MB) that is required during an S3\r
-  resume. Before the Framework-based firmware transfers control to the OS, it has to transition from\r
-  flat mode into real mode in case the OS supplies only a real-mode waking vector. This transition\r
-  requires a certain amount of legacy memory. After getting the size of legacy memory\r
-  below, the caller is responsible for allocating the legacy memory below 1 MB according to\r
-  the size that is returned. The specific implementation of allocating the legacy memory is out of the\r
-  scope of this specification.\r
-\r
-  @param  This                  A pointer to the EFI_ACPI_S3_SAVE_PROTOCOL instance.\r
-  @param  Size       The returned size of legacy memory below 1MB.\r
-\r
-  @retval EFI_SUCCESS           Size was successfully returned.\r
-  @retval EFI_INVALID_PARAMETER The pointer Size is NULL.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_ACPI_GET_LEGACY_MEMORY_SIZE)(\r
-  IN  EFI_ACPI_S3_SAVE_PROTOCOL     * This,\r
-  OUT UINTN                         * Size\r
-);\r
-\r
-/**\r
-  The EFI_ACPI_S3_SAVE_PROTOCOL is responsible for preparing all the information that the\r
-  Framework needs to restore the platform's preboot state during an S3 resume boot. This\r
-  information can include the following:\r
-    - The Framework boot script table, containing all necessary operations to initialize the platform.\r
-    - ACPI table information, such as RSDT, through which the OS waking vector can be located.\r
-    - The range of reserved memory that can be used on the S3 resume boot path.\r
-  This protocol can be used after the Framework makes sure that the boot process is complete and\r
-  that no hardware has been left unconfigured. Where to call this protocol to save information is implementation-specific.\r
-  In the case of an EFI-aware OS, ExitBootServices() can be a choice to provide this hook.\r
-  The currently executing EFI OS loader image calls ExitBootServices()to terminate all boot\r
-  services. After ExitBootServices() successfully completes, the loader becomes responsible\r
-  for the continued operation of the system.\r
-  On a normal boot, ExitBootServices() checks if the platform supports S3 by looking for\r
-  EFI_ACPI_S3_SAVE_PROTOCOL. If the protocol exists, ExitBootServices()will assume\r
-  that the target platform supports an S3 resume and then call EFI_ACPI_S3_SAVE_PROTOCOL\r
-  to save the S3 resume information. The entire Framework boot script table will then be generated,\r
-  assuming the platform currently is in the preboot state.\r
-**/\r
-struct _EFI_ACPI_S3_SAVE_PROTOCOL {\r
-  ///\r
-  /// Gets the size of legacy memory below 1 MB that is required for S3 resume.\r
-  ///\r
-  EFI_ACPI_GET_LEGACY_MEMORY_SIZE   GetLegacyMemorySize;\r
-\r
-  ///\r
-  /// Prepare all information for an S3 resume.\r
-  ///\r
-  EFI_ACPI_S3_SAVE                  S3Save;\r
-};\r
-\r
-extern EFI_GUID gEfiAcpiS3SaveProtocolGuid;\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Protocol/AcpiSupport.h b/IntelFrameworkPkg/Include/Protocol/AcpiSupport.h
deleted file mode 100644 (file)
index d900597..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-/** @file\r
-  This protocol provides some basic services to support publishing ACPI system tables. The\r
-  services handle many of the more mundane tasks that are required to publish a set of tables. The\r
-  services will:\r
-        - Generate common tables.\r
-  - Update the table links.\r
-  - Ensure that tables are properly aligned and use correct types of memory.\r
-  - Update checksum values and IDs.\r
-  - Complete the final installation of the tables.\r
-\r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  This Protocol is defined in Framework ACPI Specification.\r
-  Version 0.9.\r
-\r
-**/\r
-\r
-#ifndef _ACPI_SUPPORT_PROTOCOL_H_\r
-#define _ACPI_SUPPORT_PROTOCOL_H_\r
-\r
-#include <Protocol/AcpiSystemDescriptionTable.h>\r
-\r
-typedef struct _EFI_ACPI_SUPPORT_PROTOCOL EFI_ACPI_SUPPORT_PROTOCOL;\r
-\r
-//\r
-// ACPI Support Protocol GUID\r
-//\r
-#define EFI_ACPI_SUPPORT_GUID \\r
-  { \\r
-    0xdbff9d55, 0x89b7, 0x46da, {0xbd, 0xdf, 0x67, 0x7d, 0x3d, 0xc0, 0x24, 0x1d } \\r
-  }\r
-\r
-\r
-//\r
-// Protocol Member Functions\r
-//\r
-\r
-/**\r
-  Returns a requested ACPI table.\r
-\r
-  @param  This                  A pointer to the EFI_ACPI_SUPPORT_PROTOCOL instance.\r
-  @param  Index                 The zero-based index of the table to retrieve.\r
-  @param  Table                 The pointer for returning the table buffer.\r
-  @param  Version               Updated with the ACPI versions to which this table belongs.\r
-  @param  Handle                The pointer for identifying the table.\r
-\r
-  @retval EFI_SUCCESS           The function completed successfully.\r
-  @retval EFI_NOT_FOUND         The requested index is too large and a table was not found.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_ACPI_GET_ACPI_TABLE)(\r
-  IN EFI_ACPI_SUPPORT_PROTOCOL            *This,\r
-  IN INTN                                 Index,\r
-  OUT VOID                                **Table,\r
-  OUT EFI_ACPI_TABLE_VERSION              *Version,\r
-  OUT UINTN                               *Handle\r
-  );\r
-\r
-/**\r
-  Used to add, remove, or update ACPI tables.\r
-\r
-  @param  This                  A pointer to the EFI_ACPI_SUPPORT_PROTOCOL instance.\r
-  @param  Table                 The pointer to the new table to add or update.\r
-  @param  Checksum              If TRUE, indicates that the checksum should be\r
-                                calculated for this table.\r
-  @param  Version               Indicates to which version(s) of ACPI the table should be added.\r
-  @param  Handle                The pointer to the handle of the table to remove or update.\r
-\r
-  @retval EFI_SUCCESS           The function completed successfully.\r
-  @retval EFI_INVALID_PARAMETER *Handle was zero and Table was NULL.\r
-  @retval EFI_ABORTED           Could not complete the desired action.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_ACPI_SET_ACPI_TABLE)(\r
-  IN EFI_ACPI_SUPPORT_PROTOCOL            *This,\r
-  IN VOID                                 *Table OPTIONAL,\r
-  IN BOOLEAN                              Checksum,\r
-  IN EFI_ACPI_TABLE_VERSION               Version,\r
-  IN OUT UINTN                            *Handle\r
-  );\r
-\r
-/**\r
-  Causes one or more versions of the ACPI tables to be published in\r
-  the EFI system configuration tables.\r
-\r
-  The PublishTables() function installs the ACPI tables for the versions that are specified in\r
-  Version. No tables are published for Version equal to EFI_ACPI_VERSION_NONE. Once\r
-  published, tables will continue to be updated as tables are modified with\r
-  EFI_ACPI_SUPPORT_PROTOCOL.SetAcpiTable().\r
-\r
-  @param  This                  A pointer to the EFI_ACPI_SUPPORT_PROTOCOL instance.\r
-  @param  Version               Indicates to which version(s) of ACPI the table should be published.\r
-\r
-  @retval EFI_SUCCESS           The function completed successfully.\r
-  @retval EFI_ABORTED           An error occurred and the function could not complete successfully.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_ACPI_PUBLISH_TABLES)(\r
-  IN EFI_ACPI_SUPPORT_PROTOCOL            *This,\r
-  IN EFI_ACPI_TABLE_VERSION               Version\r
-  );\r
-\r
-//\r
-// ACPI Support Protocol\r
-//\r
-/**\r
-  This protocol provides some basic services to support publishing ACPI system\r
-  tables. The services handle many of the more mundane tasks that are required\r
-  to publish a set of tables.\r
-**/\r
-struct _EFI_ACPI_SUPPORT_PROTOCOL {\r
-  ///\r
-  /// Returns a table specified by an index if it exists.\r
-  ///\r
-  EFI_ACPI_GET_ACPI_TABLE GetAcpiTable;\r
-\r
-  ///\r
-  /// Adds, removes, or updates ACPI tables.\r
-  ///\r
-  EFI_ACPI_SET_ACPI_TABLE SetAcpiTable;\r
-\r
-  ///\r
-  /// Publishes the ACPI tables.\r
-  ///\r
-  EFI_ACPI_PUBLISH_TABLES PublishTables;\r
-};\r
-\r
-//\r
-// Extern the GUID for protocol users.\r
-//\r
-extern EFI_GUID gEfiAcpiSupportProtocolGuid;\r
-\r
-#endif\r
-\r
diff --git a/IntelFrameworkPkg/Include/Protocol/BootScriptSave.h b/IntelFrameworkPkg/Include/Protocol/BootScriptSave.h
deleted file mode 100644 (file)
index 0a9976f..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-/** @file\r
-  This protocol is used to store or record various boot scripts into boot\r
-  script tables.\r
-\r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  This protocol defined in the Boot Script Specification, Version 0.91.\r
-\r
-**/\r
-\r
-#ifndef _BOOT_SCRIPT_SAVE_PROTOCOL_H_\r
-#define _BOOT_SCRIPT_SAVE_PROTOCOL_H_\r
-\r
-///\r
-/// S3 Save Protocol GUID.\r
-///\r
-#define EFI_BOOT_SCRIPT_SAVE_PROTOCOL_GUID \\r
-  { \\r
-    0x470e1529, 0xb79e, 0x4e32, {0xa0, 0xfe, 0x6a, 0x15, 0x6d, 0x29, 0xf9, 0xb2 } \\r
-  }\r
-\r
-typedef struct _EFI_BOOT_SCRIPT_SAVE_PROTOCOL EFI_BOOT_SCRIPT_SAVE_PROTOCOL;\r
-\r
-/**\r
-  Adds a record into a specified Framework boot script table.\r
-\r
-  @param  This                  A pointer to the EFI_BOOT_SCRIPT_SAVE_PROTOCOL instance.\r
-  @param  TableName             The name of the script table. Currently, the only meaningful\r
-                                value is EFI_ACPI_S3_RESUME_SCRIPT_TABLE.\r
-  @param  OpCode                The operation code (opcode) number.\r
-  @param  ...                   The argument list that is specific to each opcode.\r
-\r
-  @retval EFI_SUCCESS           The operation succeeded. A record was added into the specified script table.\r
-  @retval EFI_INVALID_PARAMETER The parameter is illegal, or the given boot script is not supported.\r
-  @retval EFI_OUT_OF_RESOURCES  There is insufficient memory to store the boot script.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_BOOT_SCRIPT_WRITE)(\r
-  IN EFI_BOOT_SCRIPT_SAVE_PROTOCOL            *This,\r
-  IN UINT16                                   TableName,\r
-  IN UINT16                                   OpCode,\r
-  ...\r
-  );\r
-\r
-/**\r
-  Closes the specified script table.\r
-\r
-  @param  This                  A pointer to the EFI_BOOT_SCRIPT_SAVE_PROTOCOL instance.\r
-  @param  TableName             The name of the script table.\r
-  @param  Address               A pointer to the physical address where the table begins.\r
-\r
-  @retval EFI_SUCCESS           The table was successfully returned.\r
-  @retval EFI_NOT_FOUND         The specified table was not created previously.\r
-  @retval EFI_OUT_OF_RESOURCES  Memory is insufficient to hold the reorganized boot script table.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_BOOT_SCRIPT_CLOSE_TABLE)(\r
-  IN EFI_BOOT_SCRIPT_SAVE_PROTOCOL            *This,\r
-  IN UINT16                                   TableName,\r
-  OUT EFI_PHYSICAL_ADDRESS                    *Address\r
-  );\r
-\r
-///\r
-/// The EFI_BOOT_SCRIPT_SAVE_PROTOCOL publishes the Framework boot script abstractions\r
-/// to store or record various boot scripts into boot script tables.\r
-///\r
-struct _EFI_BOOT_SCRIPT_SAVE_PROTOCOL {\r
-  EFI_BOOT_SCRIPT_WRITE        Write;      ///< Writes various boot scripts to a boot script table.\r
-  EFI_BOOT_SCRIPT_CLOSE_TABLE  CloseTable; ///< Retrieves and closes a script table.\r
-};\r
-\r
-extern EFI_GUID gEfiBootScriptSaveProtocolGuid;\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Protocol/CpuIo.h b/IntelFrameworkPkg/Include/Protocol/CpuIo.h
deleted file mode 100644 (file)
index 18741df..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/** @file\r
-  This code abstracts the CPU IO Protocol which installed by some platform or chipset-specific\r
-  PEIM that abstracts the processor-visible I/O operations.\r
-\r
-  Note: This is a runtime protocol and can be used by runtime drivers after ExitBootServices().\r
-  It is different from the PI 1.2 CPU I/O 2 Protocol, which is a boot services only protocol\r
-  and may not be used by runtime drivers after ExitBootServices().\r
-\r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  CPU IO Protocol is defined in Framework of EFI CPU IO Protocol Spec\r
-  Version 0.9.\r
-\r
-**/\r
-\r
-#ifndef _CPUIO_H_\r
-#define _CPUIO_H_\r
-\r
-#include <Protocol/CpuIo2.h>\r
-\r
-#define EFI_CPU_IO_PROTOCOL_GUID \\r
-  { \\r
-    0xB0732526, 0x38C8, 0x4b40, {0x88, 0x77, 0x61, 0xC7, 0xB0, 0x6A, 0xAC, 0x45 } \\r
-  }\r
-\r
-//\r
-// Framework CPU IO protocol structure is the same as CPU IO 2 protocol defined in PI 1.2 spec.\r
-// However, there is a significant different between the Framework CPU I/O\r
-// Protocol and the PI 1.2 CPU I/O 2 Protocol.  The Framework one is a runtime\r
-// protocol, which means it can be used by runtime drivers after ExitBootServices().\r
-// The PI one is not runtime safe, so it is a boot services only protocol and may\r
-// not be used by runtime drivers after ExitBootServices().\r
-//\r
-typedef EFI_CPU_IO2_PROTOCOL EFI_CPU_IO_PROTOCOL;\r
-\r
-extern EFI_GUID gEfiCpuIoProtocolGuid;\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Protocol/DataHub.h b/IntelFrameworkPkg/Include/Protocol/DataHub.h
deleted file mode 100644 (file)
index 56bbcdd..0000000
+++ /dev/null
@@ -1,216 +0,0 @@
-/** @file\r
-  The data hub protocol is used both by agents wishing to log\r
-  data and those wishing to be made aware of all information that\r
-  has been logged.  This protocol may only be called <= TPL_NOTIFY.\r
-\r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  The Data Hub Protocol is defined in Framework for EFI Data Hub Specification\r
-  Version 0.9.\r
-\r
-**/\r
-\r
-#ifndef __DATA_HUB_H__\r
-#define __DATA_HUB_H__\r
-\r
-#define EFI_DATA_HUB_PROTOCOL_GUID \\r
-  { \\r
-    0xae80d021, 0x618e, 0x11d4, {0xbc, 0xd7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } \\r
-  }\r
-\r
-//\r
-// EFI generic Data Hub Header\r
-//\r
-// A Data Record is an EFI_DATA_RECORD_HEADER followed by RecordSize bytes of\r
-//  data. The format of the data is defined by the DataRecordGuid.\r
-//\r
-// If EFI_DATA_RECORD_HEADER is extended in the future, the Version number and HeaderSize must\r
-//  change.\r
-//\r
-// The logger is responcible for initializing:\r
-//  Version, HeaderSize, RecordSize, DataRecordGuid, DataRecordClass\r
-//\r
-// The Data Hub driver is responcible for initializing:\r
-//   LogTime and LogMonotonicCount.\r
-//\r
-#define EFI_DATA_RECORD_HEADER_VERSION  0x0100\r
-typedef struct {\r
-  UINT16    Version;\r
-  UINT16    HeaderSize;\r
-  UINT32    RecordSize;\r
-  EFI_GUID  DataRecordGuid;\r
-  EFI_GUID  ProducerName;\r
-  UINT64    DataRecordClass;\r
-  EFI_TIME  LogTime;\r
-  UINT64    LogMonotonicCount;\r
-} EFI_DATA_RECORD_HEADER;\r
-\r
-//\r
-// Definition of DataRecordClass. These are used to filter out class types\r
-// at a very high level. The DataRecordGuid still defines the format of\r
-// the data. See the Data Hub Specification for rules on what can and can not be a\r
-// new DataRecordClass\r
-//\r
-#define EFI_DATA_RECORD_CLASS_DEBUG         0x0000000000000001\r
-#define EFI_DATA_RECORD_CLASS_ERROR         0x0000000000000002\r
-#define EFI_DATA_RECORD_CLASS_DATA          0x0000000000000004\r
-#define EFI_DATA_RECORD_CLASS_PROGRESS_CODE 0x0000000000000008\r
-\r
-//\r
-// Forward reference for pure ANSI compatability\r
-//\r
-typedef struct _EFI_DATA_HUB_PROTOCOL EFI_DATA_HUB_PROTOCOL;\r
-\r
-/**\r
-  Logs a data record to the system event log.\r
-\r
-  @param  This                  The EFI_DATA_HUB_PROTOCOL instance.\r
-  @param  DataRecordGuid        A GUID that indicates the format of the data passed into RawData.\r
-  @param  ProducerName          A GUID that indicates the identity of the caller to this API.\r
-  @param  DataRecordClass       This class indicates the generic type of the data record.\r
-  @param  RawData               The DataRecordGuid-defined data to be logged.\r
-  @param  RawDataSize           The size in bytes of RawData.\r
-\r
-  @retval EFI_SUCCESS           Data was logged.\r
-  @retval EFI_OUT_OF_RESOURCES  Data was not logged due to lack of system resources.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_DATA_HUB_LOG_DATA)(\r
-  IN  EFI_DATA_HUB_PROTOCOL   *This,\r
-  IN  EFI_GUID                *DataRecordGuid,\r
-  IN  EFI_GUID                *ProducerName,\r
-  IN  UINT64                  DataRecordClass,\r
-  IN  VOID                    *RawData,\r
-  IN  UINT32                  RawDataSize\r
-  );\r
-\r
-/**\r
-  Allows the system data log to be searched.\r
-\r
-  @param  This                  The EFI_DATA_HUB_PROTOCOL instance.\r
-  @param  MonotonicCount        On input, it specifies the Record to return.\r
-                                An input of zero means to return the first record,\r
-                                as does an input of one.\r
-  @param  FilterDriver          If FilterDriver is not passed in a MonotonicCount\r
-                                of zero, it means to return the first data record.\r
-                                If FilterDriver is passed in, then a MonotonicCount\r
-                                of zero means to return the first data not yet read\r
-                                by FilterDriver.\r
-  @param  Record                Returns a dynamically allocated memory buffer with\r
-                                a data record that matches MonotonicCount.\r
-\r
-  @retval EFI_SUCCESS           Data was returned in Record.\r
-  @retval EFI_INVALID_PARAMETER FilterDriver was passed in but does not exist.\r
-  @retval EFI_NOT_FOUND         MonotonicCount does not match any data record\r
-                                in the system. If a MonotonicCount of zero was\r
-                                passed in, then no data records exist in the system.\r
-  @retval EFI_OUT_OF_RESOURCES  Record was not returned due to lack\r
-                                of system resources.\r
-  @note  Inconsistent with specification here:\r
-         In Framework for EFI Data Hub Specification, Version 0.9, This definition\r
-         is named as EFI_DATA_HUB_GET_NEXT_DATA_RECORD. The inconsistency is\r
-         maintained for backward compatibility.\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_DATA_HUB_GET_NEXT_RECORD)(\r
-  IN EFI_DATA_HUB_PROTOCOL    *This,\r
-  IN OUT  UINT64              *MonotonicCount,\r
-  IN  EFI_EVENT               *FilterDriver OPTIONAL,\r
-  OUT EFI_DATA_RECORD_HEADER  **Record\r
-  );\r
-\r
-/**\r
-  Registers an event to be signaled every time a data record is logged in the system.\r
-\r
-  @param  This                  The EFI_DATA_HUB_PROTOCOL instance.\r
-  @param  FilterEvent           The EFI_EVENT to signal whenever data that matches\r
-                                FilterClass is logged in the system.\r
-  @param  FilterTpl             The maximum EFI_TPL at which FilterEvent can be\r
-                                signaled. It is strongly recommended that you use\r
-                                the lowest EFI_TPL possible.\r
-  @param  FilterClass           FilterEvent will be signaled whenever a bit\r
-                                in EFI_DATA_RECORD_HEADER.DataRecordClass is also\r
-                                set in FilterClass. If FilterClass is zero, no\r
-                                class-based filtering will be performed.\r
-  @param  FilterDataRecordGuid  FilterEvent will be signaled whenever\r
-                                FilterDataRecordGuid matches\r
-                                EFI_DATA_RECORD_HEADER.DataRecordGuid.\r
-                                If FilterDataRecordGuid is NULL, then no GUID-based\r
-                                filtering will be performed.\r
-\r
-  @retval EFI_SUCCESS           The filter driver event was registered\r
-  @retval EFI_ALREADY_STARTED   FilterEvent was previously registered and cannot\r
-                                be registered again.\r
-  @retval EFI_OUT_OF_RESOURCES  The filter driver event was not registered\r
-                                due to lack of system resources.\r
-  @note  Inconsistent with specification here:\r
-         In Framework for EFI Data Hub Specification, Version 0.9, This definition\r
-         is named as EFI_DATA_HUB_REGISTER_DATA_FILTER_DRIVER. The inconsistency\r
-         is maintained for backward compatibility.\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_DATA_HUB_REGISTER_FILTER_DRIVER)(\r
-  IN EFI_DATA_HUB_PROTOCOL    *This,\r
-  IN EFI_EVENT                FilterEvent,\r
-  IN EFI_TPL                  FilterTpl,\r
-  IN UINT64                   FilterClass,\r
-  IN EFI_GUID                 *FilterDataRecordGuid OPTIONAL\r
-  );\r
-\r
-/**\r
-  Stops a filter driver from being notified when data records are logged.\r
-\r
-  @param  This                  The EFI_DATA_HUB_PROTOCOL instance.\r
-  @param  FilterEvent           The EFI_EVENT to remove from the list of events to be\r
-                                signaled every time errors are logged.\r
-\r
-  @retval EFI_SUCCESS           The filter driver represented by FilterEvent was shut off.\r
-  @retval EFI_NOT_FOUND         FilterEvent did not exist.\r
-  @note  Inconsistent with specification here:\r
-         In Framework for EFI Data Hub Specification, Version 0.9, This definition\r
-         is named as EFI_DATA_HUB_UNREGISTER_DATA_FILTER_DRIVER. The inconsistency\r
-         is maintained for backward compatibility.\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_DATA_HUB_UNREGISTER_FILTER_DRIVER)(\r
-  IN EFI_DATA_HUB_PROTOCOL    *This,\r
-  IN EFI_EVENT                FilterEvent\r
-  );\r
-\r
-/**\r
-  This protocol is used to log information and register filter drivers\r
-  to receive data records.\r
-**/\r
-struct _EFI_DATA_HUB_PROTOCOL {\r
-  ///\r
-  /// Logs a data record.\r
-  ///\r
-  EFI_DATA_HUB_LOG_DATA                 LogData;\r
-\r
-  ///\r
-  /// Gets a data record. Used both to view the memory-based log and to\r
-  /// get information about which data records have been consumed by a filter driver.\r
-  ///\r
-  EFI_DATA_HUB_GET_NEXT_RECORD          GetNextRecord;\r
-\r
-  ///\r
-  /// Allows the registration of an EFI event to act as a filter driver for all data records that are logged.\r
-  ///\r
-  EFI_DATA_HUB_REGISTER_FILTER_DRIVER   RegisterFilterDriver;\r
-\r
-  ///\r
-  /// Used to remove a filter driver that was added with RegisterFilterDriver().\r
-  ///\r
-  EFI_DATA_HUB_UNREGISTER_FILTER_DRIVER UnregisterFilterDriver;\r
-};\r
-\r
-extern EFI_GUID gEfiDataHubProtocolGuid;\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Protocol/FirmwareVolume.h b/IntelFrameworkPkg/Include/Protocol/FirmwareVolume.h
deleted file mode 100644 (file)
index 5e0216c..0000000
+++ /dev/null
@@ -1,340 +0,0 @@
-/** @file\r
-  This file declares the Firmware Volume Protocol.\r
-\r
-  The Firmware Volume Protocol provides file-level access to the firmware volume.\r
-  Each firmware volume driver must produce an instance of the Firmware Volume\r
-  Protocol if the firmware volume is to be visible to the system. The Firmware\r
-  Volume Protocol also provides mechanisms for determining and modifying some\r
-  attributes of the firmware volume.\r
-\r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  This protocol is defined in Firmware Volume specification.\r
-  Version 0.9.\r
-\r
-**/\r
-\r
-#ifndef _FIRMWARE_VOLUME_H_\r
-#define _FIRMWARE_VOLUME_H_\r
-\r
-\r
-//\r
-// Firmware Volume Protocol GUID definition\r
-//\r
-#define EFI_FIRMWARE_VOLUME_PROTOCOL_GUID \\r
-  { \\r
-    0x389F751F, 0x1838, 0x4388, {0x83, 0x90, 0xCD, 0x81, 0x54, 0xBD, 0x27, 0xF8 } \\r
-  }\r
-\r
-#define FV_DEVICE_SIGNATURE SIGNATURE_32 ('_', 'F', 'V', '_')\r
-\r
-typedef struct _EFI_FIRMWARE_VOLUME_PROTOCOL  EFI_FIRMWARE_VOLUME_PROTOCOL;\r
-\r
-//\r
-// FRAMEWORK_EFI_FV_ATTRIBUTES bit definitions\r
-//\r
-typedef UINT64  FRAMEWORK_EFI_FV_ATTRIBUTES;\r
-\r
-//\r
-// ************************************************************\r
-// FRAMEWORK_EFI_FV_ATTRIBUTES bit definitions\r
-// ************************************************************\r
-//\r
-#define EFI_FV_READ_DISABLE_CAP       0x0000000000000001ULL\r
-#define EFI_FV_READ_ENABLE_CAP        0x0000000000000002ULL\r
-#define EFI_FV_READ_STATUS            0x0000000000000004ULL\r
-\r
-#define EFI_FV_WRITE_DISABLE_CAP      0x0000000000000008ULL\r
-#define EFI_FV_WRITE_ENABLE_CAP       0x0000000000000010ULL\r
-#define EFI_FV_WRITE_STATUS           0x0000000000000020ULL\r
-\r
-#define EFI_FV_LOCK_CAP               0x0000000000000040ULL\r
-#define EFI_FV_LOCK_STATUS            0x0000000000000080ULL\r
-#define EFI_FV_WRITE_POLICY_RELIABLE  0x0000000000000100ULL\r
-\r
-#define EFI_FV_ALIGNMENT_CAP          0x0000000000008000ULL\r
-#define EFI_FV_ALIGNMENT_2            0x0000000000010000ULL\r
-#define EFI_FV_ALIGNMENT_4            0x0000000000020000ULL\r
-#define EFI_FV_ALIGNMENT_8            0x0000000000040000ULL\r
-#define EFI_FV_ALIGNMENT_16           0x0000000000080000ULL\r
-#define EFI_FV_ALIGNMENT_32           0x0000000000100000ULL\r
-#define EFI_FV_ALIGNMENT_64           0x0000000000200000ULL\r
-#define EFI_FV_ALIGNMENT_128          0x0000000000400000ULL\r
-#define EFI_FV_ALIGNMENT_256          0x0000000000800000ULL\r
-#define EFI_FV_ALIGNMENT_512          0x0000000001000000ULL\r
-#define EFI_FV_ALIGNMENT_1K           0x0000000002000000ULL\r
-#define EFI_FV_ALIGNMENT_2K           0x0000000004000000ULL\r
-#define EFI_FV_ALIGNMENT_4K           0x0000000008000000ULL\r
-#define EFI_FV_ALIGNMENT_8K           0x0000000010000000ULL\r
-#define EFI_FV_ALIGNMENT_16K          0x0000000020000000ULL\r
-#define EFI_FV_ALIGNMENT_32K          0x0000000040000000ULL\r
-#define EFI_FV_ALIGNMENT_64K          0x0000000080000000ULL\r
-\r
-//\r
-// Protocol API definitions\r
-//\r
-\r
-/**\r
-  Retrieves attributes, insures positive polarity of attribute bits, and returns\r
-  resulting attributes in an output parameter.\r
-\r
-  @param  This                  Indicates the EFI_FIRMWARE_VOLUME_PROTOCOL instance.\r
-  @param  Attributes            Output buffer containing attributes.\r
-\r
-  @retval EFI_SUCCESS           The firmware volume attributes were returned.\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *FRAMEWORK_EFI_FV_GET_ATTRIBUTES)(\r
-  IN  EFI_FIRMWARE_VOLUME_PROTOCOL            *This,\r
-  OUT FRAMEWORK_EFI_FV_ATTRIBUTES             *Attributes\r
-  );\r
-\r
-/**\r
-  Sets volume attributes\r
-\r
-  @param  This                  Indicates the EFI_FIRMWARE_VOLUME_PROTOCOL instance.\r
-  @param  Attributes            On input, Attributes is a pointer to an\r
-                                EFI_FV_ATTRIBUTES containing the desired firmware\r
-                                volume settings. On successful return, it contains\r
-                                the new settings of the firmware volume. On\r
-                                unsuccessful return, Attributes is not modified\r
-                                and the firmware volume settings are not changed.\r
-\r
-  @retval EFI_INVALID_PARAMETER A bit in Attributes was invalid.\r
-  @retval EFI_SUCCESS           The requested firmware volume attributes were set\r
-                                and the resulting EFI_FV_ATTRIBUTES is returned in\r
-                                Attributes.\r
-  @retval EFI_ACCESS_DENIED     The Device is locked and does not permit modification.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *FRAMEWORK_EFI_FV_SET_ATTRIBUTES)(\r
-  IN EFI_FIRMWARE_VOLUME_PROTOCOL       *This,\r
-  IN OUT FRAMEWORK_EFI_FV_ATTRIBUTES    *Attributes\r
-  );\r
-\r
-/**\r
-  Read the requested file (NameGuid) or file information from the firmware volume\r
-  and returns data in Buffer.\r
-\r
-  @param  This                  The EFI_FIRMWARE_VOLUME_PROTOCOL instance.\r
-  @param  NameGuid              The pointer to EFI_GUID, which is the filename of\r
-                                the file to read.\r
-  @param  Buffer                The pointer to pointer to buffer in which contents of file are returned.\r
-                                <br>\r
-                                If Buffer is NULL, only type, attributes, and size\r
-                                are returned as there is no output buffer.\r
-                                <br>\r
-                                If Buffer != NULL and *Buffer == NULL, the output\r
-                                buffer is allocated from BS pool by ReadFile.\r
-                                <br>\r
-                                If Buffer != NULL and *Buffer != NULL, the output\r
-                                buffer has been allocated by the caller and is being\r
-                                passed in.\r
-  @param  BufferSize            On input: The buffer size. On output: The size\r
-                                required to complete the read.\r
-  @param  FoundType             The pointer to the type of the file whose data\r
-                                is returned.\r
-  @param  FileAttributes        The pointer to attributes of the file whose data\r
-                                is returned.\r
-  @param  AuthenticationStatus  The pointer to the authentication status of the data.\r
-\r
-  @retval EFI_SUCCESS               The call completed successfully.\r
-  @retval EFI_WARN_BUFFER_TOO_SMALL The buffer is too small to contain the requested output.\r
-                                    The buffer filled, and the output is truncated.\r
-  @retval EFI_NOT_FOUND             NameGuid was not found in the firmware volume.\r
-  @retval EFI_DEVICE_ERROR          A hardware error occurred when attempting to\r
-                                    access the firmware volume.\r
-  @retval EFI_ACCESS_DENIED         The firmware volume is configured to disallow reads.\r
-  @retval EFI_OUT_OF_RESOURCES      An allocation failure occurred.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *FRAMEWORK_EFI_FV_READ_FILE)(\r
-  IN EFI_FIRMWARE_VOLUME_PROTOCOL   *This,\r
-  IN EFI_GUID                       *NameGuid,\r
-  IN OUT VOID                       **Buffer,\r
-  IN OUT UINTN                      *BufferSize,\r
-  OUT EFI_FV_FILETYPE               *FoundType,\r
-  OUT EFI_FV_FILE_ATTRIBUTES        *FileAttributes,\r
-  OUT UINT32                        *AuthenticationStatus\r
-  );\r
-\r
-/**\r
-  Read the requested section from the specified file and returns data in Buffer.\r
-\r
-  @param  This                  Indicates the EFI_FIRMWARE_VOLUME_PROTOCOL instance.\r
-  @param  NameGuid              Filename identifying the file from which to read.\r
-  @param  SectionType           The section type to retrieve.\r
-  @param  SectionInstance       The instance of SectionType to retrieve.\r
-  @param  Buffer                Pointer to pointer to buffer in which contents of\r
-                                a file are returned.\r
-                                <br>\r
-                                If Buffer is NULL, only type, attributes, and size\r
-                                are returned as there is no output buffer.\r
-                                <br>\r
-                                If Buffer != NULL and *Buffer == NULL, the output\r
-                                buffer is allocated from BS pool by ReadFile.\r
-                                <br>\r
-                                If Buffer != NULL and *Buffer != NULL, the output\r
-                                buffer has been allocated by the caller and is being\r
-                                passed in.\r
-  @param  BufferSize            The pointer to the buffer size passed in, and on\r
-                                output the size required to complete the read.\r
-  @param  AuthenticationStatus  The pointer to the authentication status of the data.\r
-\r
-  @retval EFI_SUCCESS                The call completed successfully.\r
-  @retval EFI_WARN_BUFFER_TOO_SMALL  The buffer is too small to contain the requested output.\r
-                                     The buffer is filled and the output is truncated.\r
-  @retval EFI_OUT_OF_RESOURCES       An allocation failure occurred.\r
-  @retval EFI_NOT_FOUND              The name was not found in the firmware volume.\r
-  @retval EFI_DEVICE_ERROR           A hardware error occurred when attempting to\r
-                                     access the firmware volume.\r
-  @retval EFI_ACCESS_DENIED          The firmware volume is configured to disallow reads.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *FRAMEWORK_EFI_FV_READ_SECTION)(\r
-  IN EFI_FIRMWARE_VOLUME_PROTOCOL   *This,\r
-  IN EFI_GUID                       *NameGuid,\r
-  IN EFI_SECTION_TYPE               SectionType,\r
-  IN UINTN                          SectionInstance,\r
-  IN OUT VOID                       **Buffer,\r
-  IN OUT UINTN                      *BufferSize,\r
-  OUT UINT32                        *AuthenticationStatus\r
-  );\r
-\r
-typedef UINT32  FRAMEWORK_EFI_FV_WRITE_POLICY;\r
-\r
-#define FRAMEWORK_EFI_FV_UNRELIABLE_WRITE 0x00000000\r
-#define FRAMEWORK_EFI_FV_RELIABLE_WRITE   0x00000001\r
-\r
-typedef struct {\r
-  EFI_GUID                *NameGuid;\r
-  EFI_FV_FILETYPE         Type;\r
-  EFI_FV_FILE_ATTRIBUTES  FileAttributes;\r
-  VOID                    *Buffer;\r
-  UINT32                  BufferSize;\r
-} FRAMEWORK_EFI_FV_WRITE_FILE_DATA;\r
-\r
-/**\r
-  Write the supplied file (NameGuid) to the FV.\r
-\r
-  @param  This                  Indicates the EFI_FIRMWARE_VOLUME_PROTOCOL instance.\r
-  @param  NumberOfFiles         Indicates the number of file records pointed to\r
-                                by FileData.\r
-  @param  WritePolicy           Indicates the level of reliability of the write\r
-                                with respect to things like power failure events.\r
-  @param  FileData              A pointer to an array of EFI_FV_WRITE_FILE_DATA\r
-                                structures. Each element in the array indicates\r
-                                a file to write, and there are NumberOfFiles\r
-                                elements in the input array.\r
-\r
-  @retval EFI_SUCCESS           The write completed successfully.\r
-  @retval EFI_OUT_OF_RESOURCES  The firmware volume does not have enough free\r
-                                space to store file(s).\r
-  @retval EFI_DEVICE_ERROR      A hardware error occurred when attempting to\r
-                                access the firmware volume.\r
-  @retval EFI_WRITE_PROTECTED   The firmware volume is configured to disallow writes.\r
-  @retval EFI_NOT_FOUND         A delete was requested, but the requested file was\r
-                                not found in the firmware volume.\r
-  @retval EFI_INVALID_PARAMETER A delete was requested with a multiple file write.\r
-                                An unsupported WritePolicy was requested.\r
-                                An unknown file type was specified.\r
-                                A file system specific error has occurred.\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *FRAMEWORK_EFI_FV_WRITE_FILE)(\r
-  IN EFI_FIRMWARE_VOLUME_PROTOCOL             *This,\r
-  IN UINT32                                   NumberOfFiles,\r
-  IN FRAMEWORK_EFI_FV_WRITE_POLICY            WritePolicy,\r
-  IN FRAMEWORK_EFI_FV_WRITE_FILE_DATA         *FileData\r
-  );\r
-\r
-/**\r
-  Given the input key, search for the next matching file in the volume.\r
-\r
-  @param  This                  Indicates the EFI_FIRMWARE_VOLUME_PROTOCOL instance.\r
-  @param  Key                   Pointer to a caller allocated buffer that contains\r
-                                an implementation-specific key that is used to track\r
-                                where to begin searching on successive calls.\r
-  @param  FileType              The pointer to the file type to filter for.\r
-  @param  NameGuid              The pointer to Guid filename of the file found.\r
-  @param  Attributes            The pointer to Attributes of the file found.\r
-  @param  Size                  The pointer to Size in bytes of the file found.\r
-\r
-  @retval EFI_SUCCESS           The output parameters are filled with data obtained from\r
-                                the first matching file that was found.\r
-  @retval EFI_NOT_FOUND         No files of type FileType were found.\r
-  @retval EFI_DEVICE_ERROR      A hardware error occurred when attempting to access\r
-                                the firmware volume.\r
-  @retval EFI_ACCESS_DENIED     The firmware volume is configured to disallow reads.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *FRAMEWORK_EFI_FV_GET_NEXT_FILE)(\r
-  IN EFI_FIRMWARE_VOLUME_PROTOCOL   *This,\r
-  IN OUT VOID                       *Key,\r
-  IN OUT EFI_FV_FILETYPE            *FileType,\r
-  OUT EFI_GUID                      *NameGuid,\r
-  OUT EFI_FV_FILE_ATTRIBUTES        *Attributes,\r
-  OUT UINTN                         *Size\r
-  );\r
-\r
-//\r
-// Protocol interface structure\r
-//\r
-struct _EFI_FIRMWARE_VOLUME_PROTOCOL {\r
-  ///\r
-  /// Retrieves volume capabilities and current settings.\r
-  ///\r
-  FRAMEWORK_EFI_FV_GET_ATTRIBUTES GetVolumeAttributes;\r
-\r
-  ///\r
-  /// Modifies the current settings of the firmware volume.\r
-  ///\r
-  FRAMEWORK_EFI_FV_SET_ATTRIBUTES SetVolumeAttributes;\r
-\r
-  ///\r
-  /// Reads an entire file from the firmware volume.\r
-  ///\r
-  FRAMEWORK_EFI_FV_READ_FILE      ReadFile;\r
-\r
-  ///\r
-  /// Reads a single section from a file into a buffer.\r
-  ///\r
-  FRAMEWORK_EFI_FV_READ_SECTION   ReadSection;\r
-\r
-  ///\r
-  /// Writes an entire file into the firmware volume.\r
-  ///\r
-  FRAMEWORK_EFI_FV_WRITE_FILE     WriteFile;\r
-\r
-  ///\r
-  /// Provides service to allow searching the firmware volume.\r
-  ///\r
-  FRAMEWORK_EFI_FV_GET_NEXT_FILE  GetNextFile;\r
-\r
-  ///\r
-  ///  Data field that indicates the size in bytes of the Key input buffer for\r
-  ///  the GetNextFile() API.\r
-  ///\r
-  UINT32                KeySize;\r
-\r
-  ///\r
-  ///  Handle of the parent firmware volume.\r
-  ///\r
-  EFI_HANDLE            ParentHandle;\r
-};\r
-\r
-extern EFI_GUID gEfiFirmwareVolumeProtocolGuid;\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Protocol/FrameworkFirmwareVolumeBlock.h b/IntelFrameworkPkg/Include/Protocol/FrameworkFirmwareVolumeBlock.h
deleted file mode 100644 (file)
index 8de76ef..0000000
+++ /dev/null
@@ -1,347 +0,0 @@
-/** @file\r
-  This file provides control over block-oriented firmware devices.\r
-\r
-Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  This protocol is defined in framework spec: Firmware Volume Block Specification.\r
-\r
-**/\r
-\r
-#ifndef __FRAMEWORK_FIRMWARE_VOLUME_BLOCK_H__\r
-#define __FRAMEWORK_FIRMWARE_VOLUME_BLOCK_H__\r
-\r
-#define FRAMEWORK_EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL_GUID \\r
-{ 0xDE28BC59, 0x6228, 0x41BD, {0xBD, 0xF6, 0xA3, 0xB9, 0xAD,0xB5, 0x8D, 0xA1 } }\r
-\r
-typedef struct _FRAMEWORK_EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL FRAMEWORK_EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL;\r
-///\r
-/// The type of EFI FVB attribute per the Framework specification.\r
-///\r
-typedef UINT32  EFI_FVB_ATTRIBUTES;\r
-\r
-/**\r
-  The GetAttributes() function retrieves the attributes and\r
-  current settings of the block.\r
-\r
-  @param This       Indicates the FRAMEWORK_EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL instance.\r
-\r
-  @param Attributes Pointer to EFI_FVB_ATTRIBUTES in which the\r
-                    attributes and current settings are\r
-                    returned.\r
-\r
-  @retval EFI_SUCCESS The firmware volume attributes were\r
-                      returned.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI * FRAMEWORK_EFI_FVB_GET_ATTRIBUTES)(\r
-  IN   FRAMEWORK_EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL  *This,\r
-  OUT  EFI_FVB_ATTRIBUTES                *Attributes\r
-);\r
-\r
-\r
-/**\r
-  The SetAttributes() function sets configurable firmware volume\r
-  attributes and returns the new settings of the firmware volume.\r
-\r
-  @param This         Indicates the FRAMEWORK_EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL instance.\r
-\r
-  @param Attributes   On input, Attributes is a pointer to\r
-                      EFI_FVB_ATTRIBUTES that contains the\r
-                      desired firmware volume settings. On\r
-                      successful return, it contains the new\r
-                      settings of the firmware volume.\r
-\r
-  @retval EFI_SUCCESS           The firmware volume attributes were returned.\r
-\r
-  @retval EFI_INVALID_PARAMETER The attributes requested are in\r
-                                conflict with the capabilities\r
-                                as declared in the firmware\r
-                                volume header.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI * FRAMEWORK_EFI_FVB_SET_ATTRIBUTES)(\r
-  IN      FRAMEWORK_EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL  *This,\r
-  IN OUT  EFI_FVB_ATTRIBUTES                *Attributes\r
-);\r
-\r
-\r
-/**\r
-  The GetPhysicalAddress() function retrieves the base address of\r
-  a memory-mapped firmware volume. This function should be called\r
-  only for memory-mapped firmware volumes.\r
-\r
-  @param This     Indicates the FRAMEWORK_EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL instance.\r
-\r
-  @param Address  Pointer to a caller-allocated\r
-                  EFI_PHYSICAL_ADDRESS that, on successful\r
-                  return from GetPhysicalAddress(), contains the\r
-                  base address of the firmware volume.\r
-\r
-  @retval EFI_SUCCESS       The firmware volume base address is returned.\r
-\r
-  @retval EFI_NOT_SUPPORTED The firmware volume is not memory mapped.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI * FRAMEWORK_EFI_FVB_GET_PHYSICAL_ADDRESS)(\r
-  IN    FRAMEWORK_EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL  *This,\r
-  OUT   EFI_PHYSICAL_ADDRESS                *Address\r
-);\r
-\r
-/**\r
-  The GetBlockSize() function retrieves the size of the requested\r
-  block. It also returns the number of additional blocks with\r
-  the identical size. The GetBlockSize() function is used to\r
-  retrieve the block map (see EFI_FIRMWARE_VOLUME_HEADER).\r
-\r
-\r
-  @param This           Indicates the FRAMEWORK_EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL instance.\r
-\r
-  @param Lba            Indicates the block for which to return the size.\r
-\r
-  @param BlockSize      The pointer to a caller-allocated UINTN in which\r
-                        the size of the block is returned.\r
-\r
-  @param NumberOfBlocks The pointer to a caller-allocated UINTN in\r
-                        which the number of consecutive blocks,\r
-                        starting with Lba, is returned. All\r
-                        blocks in this range have a size of\r
-                        BlockSize.\r
-\r
-\r
-  @retval EFI_SUCCESS             The firmware volume base address was returned.\r
-\r
-  @retval EFI_INVALID_PARAMETER   The requested LBA is out of range.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI * FRAMEWORK_EFI_FVB_GET_BLOCK_SIZE)(\r
-  IN  FRAMEWORK_EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL  *This,\r
-  IN  EFI_LBA                             Lba,\r
-  OUT UINTN                               *BlockSize,\r
-  OUT UINTN                               *NumberOfBlocks\r
-);\r
-\r
-\r
-/**\r
-  Reads the specified number of bytes into a buffer from the specified block.\r
-\r
-  The Read() function reads the requested number of bytes from the\r
-  requested block and stores them in the provided buffer.\r
-  Implementations should be mindful that the firmware volume\r
-  might be in the ReadDisabled state. If it is in this state,\r
-  the Read() function must return the status code\r
-  EFI_ACCESS_DENIED without modifying the contents of the\r
-  buffer. The Read() function must also prevent spanning block\r
-  boundaries. If a read is requested that would span a block\r
-  boundary, the read must read up to the boundary but not\r
-  beyond. The output parameter NumBytes must be set to correctly\r
-  indicate the number of bytes actually read. The caller must be\r
-  aware that a read may be partially completed.\r
-\r
-  @param This     Indicates the FRAMEWORK_EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL instance.\r
-\r
-  @param Lba      The starting logical block index\r
-                  from which to read.\r
-\r
-  @param Offset   Offset into the block at which to begin reading.\r
-\r
-  @param NumBytes The pointer to a UINTN. At entry, *NumBytes\r
-                  contains the total size of the buffer. At\r
-                  exit, *NumBytes contains the total number of\r
-                  bytes read.\r
-\r
-  @param Buffer   The pointer to a caller-allocated buffer that will\r
-                  be used to hold the data that is read.\r
-\r
-  @retval EFI_SUCCESS         The firmware volume was read successfully\r
-                              and contents are in Buffer.\r
-\r
-  @retval EFI_BAD_BUFFER_SIZE A read was attempted across an LBA\r
-                              boundary. On output, NumBytes\r
-                              contains the total number of bytes\r
-                              returned in Buffer.\r
-\r
-  @retval EFI_ACCESS_DENIED   The firmware volume is in the\r
-                              ReadDisabled state.\r
-\r
-  @retval EFI_DEVICE_ERROR    The block device is not\r
-                              functioning correctly and could\r
-                              not be read.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *FRAMEWORK_EFI_FVB_READ)(\r
-  IN       FRAMEWORK_EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL  *This,\r
-  IN       EFI_LBA                             Lba,\r
-  IN       UINTN                               Offset,\r
-  IN OUT   UINTN                               *NumBytes,\r
-  IN OUT   UINT8                               *Buffer\r
-);\r
-\r
-/**\r
-  Writes the specified number of bytes from the input buffer to the block.\r
-\r
-  The Write() function writes the specified number of bytes from\r
-  the provided buffer to the specified block and offset. If the\r
-  firmware volume is sticky write, the caller must ensure that\r
-  all the bits of the specified range to write are in the\r
-  EFI_FVB_ERASE_POLARITY state before calling the Write()\r
-  function, or else the result will be unpredictable. This\r
-  unpredictability arises because, for a sticky-write firmware\r
-  volume, a write may negate a bit in the EFI_FVB_ERASE_POLARITY\r
-  state but cannot flip it back again. In general, before\r
-  calling the Write() function, the caller should call the\r
-  EraseBlocks() function first to erase the specified block to\r
-  write. A block erase cycle will transition bits from the\r
-  (NOT)EFI_FVB_ERASE_POLARITY state back to the\r
-  EFI_FVB_ERASE_POLARITY state. Implementors should note\r
-  that the firmware volume might be in the WriteDisabled\r
-  state. If it is in this state, the Write() function must\r
-  return the status code EFI_ACCESS_DENIED without modifying the\r
-  contents of the firmware volume. The Write() function must\r
-  also prevent spanning block boundaries. If a write is\r
-  requested that spans a block boundary, the write must store up\r
-  to the boundary but not beyond. The output parameter NumBytes\r
-  must be set to correctly indicate the number of bytes actually\r
-  written. The caller must be aware that a write may be\r
-  partially completed. All writes, partial or otherwise, must be\r
-  fully flushed to the hardware before the Write() service\r
-  returns.\r
-\r
-  @param This     Indicates the FRAMEWORK_EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL instance.\r
-\r
-  @param Lba      The starting logical block index to write to.\r
-\r
-  @param Offset   Offset into the block at which to begin writing.\r
-\r
-  @param NumBytes The pointer to a UINTN. Input: the total size of the buffer.\r
-                  Output: the total number of bytes actually written.\r
-\r
-  @param Buffer   The pointer to a caller-allocated buffer that\r
-                  contains the source for the write.\r
-\r
-  @retval EFI_SUCCESS         The firmware volume was written successfully.\r
-\r
-  @retval EFI_BAD_BUFFER_SIZE The write was attempted across an\r
-                              LBA boundary. On output, NumBytes\r
-                              contains the total number of bytes\r
-                              actually written.\r
-\r
-  @retval EFI_ACCESS_DENIED   The firmware volume is in the\r
-                              WriteDisabled state.\r
-\r
-  @retval EFI_DEVICE_ERROR    The block device is malfunctioning\r
-                              and could not be written.\r
-\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI * FRAMEWORK_EFI_FVB_WRITE)(\r
-  IN       FRAMEWORK_EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL  *This,\r
-  IN       EFI_LBA                             Lba,\r
-  IN       UINTN                               Offset,\r
-  IN OUT   UINTN                               *NumBytes,\r
-  IN       UINT8                               *Buffer\r
-);\r
-\r
-\r
-\r
-\r
-///\r
-/// EFI_LBA_LIST_TERMINATOR.\r
-///\r
-#define FRAMEWORK_EFI_LBA_LIST_TERMINATOR   0xFFFFFFFFFFFFFFFFULL\r
-\r
-\r
-/**\r
-  Erases and initializes a firmware volume block.\r
-\r
-  The EraseBlocks() function erases one or more blocks as denoted\r
-  by the variable argument list. The entire parameter list of\r
-  blocks must be verified before erasing any blocks. If a block is\r
-  requested that does not exist within the associated firmware\r
-  volume (it has a larger index than the last block of the\r
-  firmware volume), the EraseBlocks() function must return the\r
-  status code EFI_INVALID_PARAMETER without modifying the contents\r
-  of the firmware volume. Implementors should note that\r
-  the firmware volume might be in the WriteDisabled state. If it\r
-  is in this state, the EraseBlocks() function must return the\r
-  status code EFI_ACCESS_DENIED without modifying the contents of\r
-  the firmware volume. All calls to EraseBlocks() must be fully\r
-  flushed to the hardware before the EraseBlocks() service\r
-  returns.\r
-\r
-  @param This   Indicates the FRAMEWORK_EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL\r
-                instance.\r
-\r
-  @param ...    A list of tuples.\r
-                Each tuple describes a range of LBAs to erase\r
-                and consists of the following:\r
-                - An EFI_LBA that indicates the starting LBA\r
-                - A UINTN that indicates the number of blocks to\r
-                  erase\r
-\r
-                The list is terminated with an\r
-                EFI_LBA_LIST_TERMINATOR. For example, the\r
-                following indicates that two ranges of blocks\r
-                (5-7 and 10-11) are to be erased: EraseBlocks\r
-                (This, 5, 3, 10, 2, EFI_LBA_LIST_TERMINATOR);\r
-\r
-  @retval EFI_SUCCESS The erase request successfully\r
-                      completed.\r
-\r
-  @retval EFI_ACCESS_DENIED   The firmware volume is in the\r
-                              WriteDisabled state.\r
-  @retval EFI_DEVICE_ERROR  The block device is not functioning\r
-                            correctly and could not be written.\r
-                            The firmware device may have been\r
-                            partially erased.\r
-  @retval EFI_INVALID_PARAMETER One or more of the LBAs listed\r
-                                in the variable argument list do\r
-                                not exist in the firmware volume.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI * FRAMEWORK_EFI_FVB_ERASE_BLOCKS)(\r
-  IN   FRAMEWORK_EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL  *This,\r
-  ...\r
-);\r
-\r
-///\r
-/// The Firmware Volume Block Protocol is the low-level interface\r
-/// to a firmware volume. File-level access to a firmware volume\r
-/// should not be done using the Firmware Volume Block Protocol.\r
-/// Normal access to a firmware volume must use the Firmware\r
-/// Volume Protocol. Typically, only the file system driver that\r
-/// produces the Firmware Volume Protocol will bind to the\r
-/// Firmware Volume Block Protocol.\r
-///\r
-struct _FRAMEWORK_EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL {\r
-  FRAMEWORK_EFI_FVB_GET_ATTRIBUTES        GetAttributes;\r
-  FRAMEWORK_EFI_FVB_SET_ATTRIBUTES        SetAttributes;\r
-  FRAMEWORK_EFI_FVB_GET_PHYSICAL_ADDRESS  GetPhysicalAddress;\r
-  FRAMEWORK_EFI_FVB_GET_BLOCK_SIZE        GetBlockSize;\r
-  FRAMEWORK_EFI_FVB_READ                  Read;\r
-  FRAMEWORK_EFI_FVB_WRITE                 Write;\r
-  FRAMEWORK_EFI_FVB_ERASE_BLOCKS          EraseBlocks;\r
-  ///\r
-  /// The handle of the parent firmware volume.\r
-  ///\r
-  EFI_HANDLE                    ParentHandle;\r
-};\r
-\r
-extern EFI_GUID gFramerworkEfiFirmwareVolumeBlockProtocolGuid;\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Protocol/FrameworkFormBrowser.h b/IntelFrameworkPkg/Include/Protocol/FrameworkFormBrowser.h
deleted file mode 100644 (file)
index fa9bbf1..0000000
+++ /dev/null
@@ -1,169 +0,0 @@
-/** @file\r
-  The EFI_FORM_BROWSER_PROTOCOL is the interface to the EFI\r
-  Configuration Driver.  This interface enables the caller to direct the\r
-  configuration driver to use either the HII database or the passed-in\r
-  packet of data.  This will also allow the caller to post messages\r
-  into the configuration drivers internal mailbox.\r
-\r
-Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  Module Name:  FrameworkFormBrowser.h\r
-\r
-  @par Revision Reference:\r
-  This protocol is defined in HII spec 0.92.\r
-\r
-**/\r
-\r
-#ifndef __FRAMEWORK_FORM_BROWSER_H__\r
-#define __FRAMEWORK_FORM_BROWSER_H__\r
-\r
-#include <Protocol/FrameworkHii.h>\r
-\r
-\r
-#define EFI_FORM_BROWSER_PROTOCOL_GUID \\r
-  { \\r
-    0xe5a1333e, 0xe1b4, 0x4d55, {0xce, 0xeb, 0x35, 0xc3, 0xef, 0x13, 0x34, 0x43 } \\r
-  }\r
-\r
-#define EFI_FORM_BROWSER_COMPATIBILITY_PROTOCOL_GUID \\r
-  { \\r
-    0xfb7c852, 0xadca, 0x4853, { 0x8d, 0xf, 0xfb, 0xa7, 0x1b, 0x1c, 0xe1, 0x1a } \\r
-  }\r
-\r
-typedef struct _EFI_FORM_BROWSER_PROTOCOL EFI_FORM_BROWSER_PROTOCOL;\r
-\r
-typedef struct {\r
-  UINT32  Length;\r
-  UINT16  Type;\r
-  UINT8   Data[1];\r
-} EFI_HII_PACKET;\r
-\r
-typedef struct {\r
-  EFI_HII_IFR_PACK    *IfrData;\r
-  EFI_HII_STRING_PACK *StringData;\r
-} EFI_IFR_PACKET;\r
-\r
-typedef struct {\r
-  UINTN LeftColumn;\r
-  UINTN RightColumn;\r
-  UINTN TopRow;\r
-  UINTN BottomRow;\r
-} FRAMEWORK_EFI_SCREEN_DESCRIPTOR;\r
-\r
-/**\r
-  Provides direction to the configuration driver whether to use the HII\r
-  database or a passed-in set of data. This function also establishes a\r
-  pointer to the calling driver's callback interface.\r
-\r
-  @param  This                  A pointer to the EFI_FORM_BROWSER_PROTOCOL instance.\r
-  @param  UseDatabase           Determines whether the HII database is to be\r
-                                used to gather information. If the value is FALSE,\r
-                                the configuration driver will get the information\r
-                                provided in the passed-in Packet parameters.\r
-  @param  Handle                A pointer to an array of HII handles to display.\r
-                                This value should correspond to the value of the\r
-                                HII form package that is required to be displayed.\r
-  @param  HandleCount           The number of handles in the array specified by Handle.\r
-  @param  Packet                A pointer to a set of data containing pointers to IFR\r
-                                and/or string data.\r
-  @param  CallbackHandle        The handle to the driver's callback interface.\r
-                                This parameter is used only when the UseDatabase\r
-                                parameter is FALSE and an application wants to\r
-                                register a callback with the browser.\r
-  @param  NvMapOverride         This buffer is used only when there is no NV variable\r
-                                to define the current settings and the caller needs\r
-                                to provide to the browser the current settings for\r
-                                the "fake" NV variable.\r
-  @param  ScreenDimensions      Allows the browser to be called so that it occupies\r
-                                a portion of the physical screen instead of dynamically\r
-                                determining the screen dimensions.\r
-  @param  ResetRequired         This BOOLEAN value denotes whether a reset is required\r
-                                based on the data that might have been changed.\r
-                                The ResetRequired parameter is primarily applicable\r
-                                for configuration applications, and is an\r
-                                optional parameter.\r
-\r
-  @retval EFI_SUCCESS           The function completed successfully.\r
-  @retval EFI_NOT_FOUND         The variable was not found.\r
-  @retval EFI_BUFFER_TOO_SMALL  The DataSize is too small for the result.\r
-                                DataSize has been updated with the size needed to\r
-                                complete the request.\r
-  @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value.\r
-  @retval EFI_DEVICE_ERROR      The variable could not be saved due to a hardware failure.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SEND_FORM)(\r
-  IN  EFI_FORM_BROWSER_PROTOCOL       *This,\r
-  IN  BOOLEAN                         UseDatabase,\r
-  IN  FRAMEWORK_EFI_HII_HANDLE        *Handle,\r
-  IN  UINTN                           HandleCount,\r
-  IN  EFI_IFR_PACKET                  *Packet, OPTIONAL\r
-  IN  EFI_HANDLE                      CallbackHandle, OPTIONAL\r
-  IN  UINT8                           *NvMapOverride, OPTIONAL\r
-  IN  FRAMEWORK_EFI_SCREEN_DESCRIPTOR *ScreenDimensions, OPTIONAL\r
-  OUT BOOLEAN                         *ResetRequired OPTIONAL\r
-  );\r
-\r
-/**\r
-  Routine used to abstract a generic dialog interface and return the selected\r
-  key or string.\r
-\r
-  @param  NumberOfLines         The number of lines for the dialog box.\r
-  @param  HotKey                Defines whether a single character is parsed (TRUE)\r
-                                and returned in KeyValue, or if a string is returned\r
-                                in StringBuffer.\r
-  @param  MaximumStringSize     The maximum size in bytes of a typed-in string.\r
-                                Because each character is a CHAR16, the minimum\r
-                                string returned is two bytes.\r
-  @param  StringBuffer          The passed-in pointer to the buffer that will hold\r
-                                the typed in string if HotKey is FALSE.\r
-  @param  KeyValue              The EFI_INPUT_KEY value returned if HotKey is TRUE.\r
-  @param  String                The pointer to the first string in the list of strings\r
-                                that comprise the dialog box.\r
-  @param  ...                   A series of NumberOfLines text strings that will be used\r
-                                to construct the dialog box.\r
-\r
-  @retval EFI_SUCCESS           The dialog was displayed and user interaction was received.\r
-  @retval EFI_DEVICE_ERROR      The user typed in an ESC character to exit the routine.\r
-  @retval EFI_INVALID_PARAMETER One of the parameters was invalid\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_CREATE_POP_UP)(\r
-  IN  UINTN                           NumberOfLines,\r
-  IN  BOOLEAN                         HotKey,\r
-  IN  UINTN                           MaximumStringSize,\r
-  OUT CHAR16                          *StringBuffer,\r
-  OUT EFI_INPUT_KEY                   *KeyValue,\r
-  IN  CHAR16                          *String,\r
-  ...\r
-  );\r
-\r
-/**\r
-  The EFI_FORM_BROWSER_PROTOCOL is the interface to call for drivers to\r
-  leverage the EFI configuration driver interface.\r
-**/\r
-struct _EFI_FORM_BROWSER_PROTOCOL {\r
-  ///\r
-  /// Provides direction to the configuration driver whether to use the HII\r
-  /// database or to use a passed-in set of data. This function also establishes\r
-  /// a pointer to the calling driver's callback interface.\r
-  ///\r
-  EFI_SEND_FORM     SendForm;\r
-\r
-  ///\r
-  /// Routine used to abstract a generic dialog interface and return the\r
-  /// selected key or string.\r
-  ///\r
-  EFI_CREATE_POP_UP CreatePopUp;\r
-};\r
-\r
-extern EFI_GUID gEfiFormBrowserProtocolGuid;\r
-extern EFI_GUID gEfiFormBrowserCompatibilityProtocolGuid;\r
-\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Protocol/FrameworkFormCallback.h b/IntelFrameworkPkg/Include/Protocol/FrameworkFormCallback.h
deleted file mode 100644 (file)
index a679b15..0000000
+++ /dev/null
@@ -1,216 +0,0 @@
-/** @file\r
-  The EFI_FORM_CALLBACK_PROTOCOL is the defined interface for access to custom\r
-  NV storage devices and for communication of user selections in a more\r
-  interactive environment.  This protocol should be published by hardware\r
-  specific drivers that want to export access to custom hardware storage or\r
-  publish IFR that need to call back the original driver.\r
-\r
-Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  This protocol is defined in HII spec 0.92.\r
-\r
-**/\r
-\r
-#ifndef __FRAMEWORK_FORM_CALLBACK_H__\r
-#define __FRAMEWORK_FORM_CALLBACK_H__\r
-\r
-#include <Protocol/FrameworkHii.h>\r
-#include <Protocol/FrameworkFormBrowser.h>\r
-\r
-#define EFI_FORM_CALLBACK_PROTOCOL_GUID \\r
-  { \\r
-    0xf3e4543d, 0xcf35, 0x6cef, {0x35, 0xc4, 0x4f, 0xe6, 0x34, 0x4d, 0xfc, 0x54 } \\r
-  }\r
-\r
-//\r
-// Forward reference for pure ANSI compatability\r
-//\r
-typedef struct _EFI_FORM_CALLBACK_PROTOCOL  EFI_FORM_CALLBACK_PROTOCOL;\r
-\r
-///\r
-///  Inconsistent with specification here:\r
-///  RESET_REQUIRED, EXIT_REQUIRED, SAVE_REQUIRED, NV_CHANGED and NV_NOT_CHANGED are not\r
-///  defined in HII specification. These Flags of EFI_IFR_DATA_ENTRY should be defined\r
-///  to describe the standard behavior of the browser after the callback.\r
-///\r
-/// If this flag is set, the browser will exit and reset after processing callback results.\r
-///\r
-#define RESET_REQUIRED  1\r
-///\r
-/// If this flag is set, the browser will exit after processing callback results.\r
-///\r
-#define EXIT_REQUIRED   2\r
-///\r
-/// If this flag is set, the browser will save the NV data after processing callback results.\r
-///\r
-#define SAVE_REQUIRED   4\r
-///\r
-/// If this flag is set, the browser will turn the NV flag on after processing callback results.\r
-///\r
-#define NV_CHANGED      8\r
-///\r
-/// If this flag is set, the browser will turn the NV flag off after processing callback results.\r
-///\r
-#define NV_NOT_CHANGED  16\r
-\r
-#pragma pack(1)\r
-typedef struct {\r
-  UINT8   OpCode;           ///< Likely a string, numeric, or one-of\r
-  UINT8   Length;           ///< Length of the EFI_IFR_DATA_ENTRY packet.\r
-  UINT16  Flags;            ///< Flags settings to determine what behavior is desired from the browser after the callback.\r
-  VOID    *Data;            ///< The data in the form based on the op-code type. This is not a pointer to the data; the data follows immediately.\r
-  ///\r
-  /// If the OpCode is a OneOf or Numeric type - Data is a UINT16 value.\r
-  /// If the OpCode is a String type - Data is a CHAR16[x] type.\r
-  /// If the OpCode is a Checkbox type - Data is a UINT8 value.\r
-  /// If the OpCode is a NV Access type - Data is a EFI_IFR_NV_DATA structure.\r
-  ///\r
-} EFI_IFR_DATA_ENTRY;\r
-\r
-typedef struct {\r
-  VOID                *NvRamMap;  ///< If the flag of the op-code specified retrieval of a copy of the NVRAM map.\r
-  //\r
-  // this is a pointer to a buffer copy\r
-  //\r
-  UINT32              EntryCount; ///< Number of EFI_IFR_DATA_ENTRY entries.\r
-  //\r
-  // EFI_IFR_DATA_ENTRY  Data[1];    // The in-line Data entries.\r
-  //\r
-} EFI_IFR_DATA_ARRAY;\r
-\r
-\r
-typedef union {\r
-  EFI_IFR_DATA_ARRAY  DataArray;  ///< Primarily used by those that call back to their drivers and use HII as a repository.\r
-  EFI_IFR_PACKET      DataPacket; ///< Primarily used by those that do not use HII as a repository.\r
-  CHAR16              String[1];  ///< If returning an error - fill the string with null-terminated contents.\r
-} EFI_HII_CALLBACK_PACKET;\r
-\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
-  UINT16            QuestionId;   ///< Offset into the map.\r
-  UINT8             StorageWidth; ///< Width of the value.\r
-  //\r
-  // CHAR8             Data[1];      // The Data itself\r
-  //\r
-} EFI_IFR_NV_DATA;\r
-\r
-#pragma pack()\r
-//\r
-// The following types are currently defined:\r
-//\r
-/**\r
-  Returns the value of a variable.\r
-\r
-  @param  This                  A pointer to the EFI_FORM_CALLBACK_PROTOCOL instance.\r
-  @param  VariableName          A NULL-terminated Unicode string that is the\r
-                                name of the vendor's variable.\r
-  @param  VendorGuid            A unique identifier for the vendor.\r
-  @param  Attributes            If not NULL, a pointer to the memory location to\r
-                                return the attribute's bit-mask for the variable.\r
-  @param  DataSize              The size in bytes of the Buffer. A size of zero causes\r
-                                the variable to be deleted.\r
-  @param  Buffer                The buffer to return the contents of the variable.\r
-\r
-  @retval EFI_SUCCESS           The function completed successfully.\r
-  @retval EFI_NOT_FOUND         The variable was not found.\r
-  @retval EFI_BUFFER_TOO_SMALL  The DataSize is too small for the result.\r
-                                DataSize has been updated with the size needed to complete the request.\r
-  @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value.\r
-  @retval EFI_DEVICE_ERROR      The variable could not be saved due to a hardware failure.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_NV_READ)(\r
-  IN     EFI_FORM_CALLBACK_PROTOCOL    *This,\r
-  IN     CHAR16                        *VariableName,\r
-  IN     EFI_GUID                      *VendorGuid,\r
-  OUT    UINT32                        *Attributes OPTIONAL,\r
-  IN OUT UINTN                         *DataSize,\r
-  OUT    VOID                          *Buffer\r
-  );\r
-\r
-/**\r
-  Sets the value of a variable.\r
-\r
-  @param  This                  A pointer to the EFI_FORM_CALLBACK_PROTOCOL instance.\r
-  @param  VariableName          A NULL-terminated Unicode string that is the\r
-                                name of the vendor's variable. Each VariableName\r
-                                is unique for each VendorGuid.\r
-  @param  VendorGuid            A unique identifier for the vendor.\r
-  @param  Attributes            Attributes bit-mask to set for the variable.\r
-                                Inconsistent with specification here:\r
-                                Attributes data type has been changed from\r
-                                UINT32 * to UINT32, because the input parameter is\r
-                                not necessary to use a pointer date type.\r
-  @param  DataSize              The size in bytes of the Buffer. A size of zero causes\r
-                                the variable to be deleted.\r
-  @param  Buffer                The buffer containing the contents of the variable.\r
-  @param  ResetRequired         Returns a value from the driver that abstracts this\r
-                                information and will enable a system to know if a\r
-                                system reset is required to achieve the configuration\r
-                                changes being enabled through this function.\r
-\r
-  @retval EFI_SUCCESS           The firmware has successfully stored the variable and\r
-                                its data as defined by the Attributes.\r
-  @retval EFI_OUT_OF_RESOURCES  Not enough storage is available to hold\r
-                                the variable and its data.\r
-  @retval EFI_INVALID_PARAMETER An invalid combination of Attributes bits\r
-                                was supplied, or the DataSize exceeds the maximum allowed.\r
-  @retval EFI_DEVICE_ERROR      The variable could not be saved due to a hardware failure.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_NV_WRITE)(\r
-  IN     EFI_FORM_CALLBACK_PROTOCOL    *This,\r
-  IN     CHAR16                        *VariableName,\r
-  IN     EFI_GUID                      *VendorGuid,\r
-  IN     UINT32                        Attributes,\r
-  IN     UINTN                         DataSize,\r
-  IN     VOID                          *Buffer,\r
-  OUT    BOOLEAN                       *ResetRequired\r
-  );\r
-\r
-/**\r
-  This function is called to provide results data to the driver.\r
-\r
-  @param  This                  A pointer to the EFI_FORM_CALLBACK_PROTOCOL instance.\r
-  @param  KeyValue              A unique value which is sent to the original exporting\r
-                                driver so that it can identify the type of data\r
-                                to expect. The format of the data tends to vary based\r
-                                on the opcode that generated the callback.\r
-  @param  Data                  A pointer to the data being sent to the original exporting driver.\r
-  @param  Packet                A pointer to a packet of information that a driver passes\r
-                                back to the browser.\r
-\r
-  @return Status Code\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_FORM_CALLBACK)(\r
-  IN     EFI_FORM_CALLBACK_PROTOCOL    *This,\r
-  IN     UINT16                        KeyValue,\r
-  IN     EFI_IFR_DATA_ARRAY  *Data,\r
-  OUT    EFI_HII_CALLBACK_PACKET       **Packet\r
-  );\r
-\r
-/**\r
-  The EFI_FORM_CALLBACK_PROTOCOL is the defined interface for access to\r
-  custom NVS devices as well as communication of user selections in a more\r
-  interactive environment. This protocol should be published by platform-specific\r
-  drivers that want to export access to custom hardware storage or publish IFR\r
-  that has a requirement to call back the original driver.\r
-**/\r
-struct _EFI_FORM_CALLBACK_PROTOCOL {\r
-  EFI_NV_READ       NvRead;     ///< The read operation to access the NV data serviced by a hardware-specific driver.\r
-  EFI_NV_WRITE      NvWrite;    ///< The write operation to access the NV data serviced by a hardware-specific driver.\r
-  EFI_FORM_CALLBACK Callback;   ///< The function that is called from the configuration browser to communicate key value pairs.\r
-};\r
-\r
-extern EFI_GUID gEfiFormCallbackProtocolGuid;\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Protocol/FrameworkHii.h b/IntelFrameworkPkg/Include/Protocol/FrameworkHii.h
deleted file mode 100644 (file)
index 7b833f7..0000000
+++ /dev/null
@@ -1,1026 +0,0 @@
-/** @file\r
-  This file defines the Human Interface Infrastructure protocol, which is\r
-  used by resources that want to publish IFR/Font/String data and have it\r
-  collected by the Configuration engine.\r
-\r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  This protocol is defined in Framework for EFI Human Interface Infrastructure\r
-  Specification Version 0.92.\r
-\r
-**/\r
-\r
-#ifndef _FRAMEWORK_HII_H_\r
-#define _FRAMEWORK_HII_H_\r
-\r
-//\r
-// EFI_GRAPHICS_OUTPUT_BLT_PIXEL is defined in MdePkg/Protocol/GraphicsOutput.h\r
-//\r
-#include <Protocol/GraphicsOutput.h>\r
-///\r
-/// In both EDK and EDK II, there is an incompatbile change in the Framework HII protocol.\r
-/// This change should cause a change of GUID in both of code and HII specification. But we\r
-/// updated the GUID in code in EDK and EDK II. The 0.92 specification is not updated. This\r
-/// is a known issue.\r
-///\r
-///\r
-/// Note that EFI_HII_PROTOCOL_GUID is different from that defined in the Framework HII\r
-/// 0.92 specification because the specification changed part of HII interfaces but did not update the protocol\r
-/// GUID.\r
-///\r
-#define EFI_HII_PROTOCOL_GUID \\r
-  { \\r
-    0xd7ad636e, 0xb997, 0x459b, {0xbf, 0x3f, 0x88, 0x46, 0x89, 0x79, 0x80, 0xe1} \\r
-  }\r
-\r
-#define EFI_HII_COMPATIBILITY_PROTOCOL_GUID \\r
-  { \\r
-    0x5542cce1, 0xdf5c, 0x4d1b, { 0xab, 0xca, 0x36, 0x4f, 0x77, 0xd3, 0x99, 0xfb } \\r
-  }\r
-\r
-typedef UINT32                    RELOFST;\r
-\r
-typedef struct _EFI_HII_PROTOCOL  EFI_HII_PROTOCOL;\r
-\r
-///\r
-/// Note: Name difference between code and the Framework HII 0.92 specificaiton.\r
-///       Add FRAMEWORK_ prefix to avoid a name confict with EFI_HII_HANDLE, defined in the\r
-///       UEFI 2.1d specification.\r
-///\r
-typedef UINT16                    FRAMEWORK_EFI_HII_HANDLE;\r
-\r
-///\r
-/// HII package type values\r
-///\r
-#define EFI_HII_FONT        1\r
-#define EFI_HII_STRING      2\r
-#define EFI_HII_IFR         3\r
-#define EFI_HII_KEYBOARD    4\r
-#define EFI_HII_HANDLES     5\r
-#define EFI_HII_VARIABLE    6\r
-#define EFI_HII_DEVICE_PATH 7\r
-\r
-//\r
-// References to string tokens must use this macro to enable scanning for\r
-// token usages.\r
-//\r
-#define STRING_TOKEN(t) t\r
-\r
-//\r
-// The following types are currently defined:\r
-// EFI_FORM_ID has been defined in UEFI spec.\r
-//\r
-typedef UINT16  EFI_FORM_LABEL;\r
-\r
-#pragma pack(1)\r
-\r
-///\r
-/// The header found at the start of each package.\r
-///\r
-typedef struct {\r
-  UINT32  Length;  ///< The size of the package in bytes.\r
-  UINT16  Type;    ///< The type of the package.\r
-} EFI_HII_PACK_HEADER;\r
-\r
-///\r
-/// The IFR package structure.\r
-/// Immediately following the EFI_HII_IFR_PACK structure will be a series of IFR opcodes.\r
-///\r
-typedef struct {\r
-  EFI_HII_PACK_HEADER Header; ///< Header of the IFR package.\r
-} EFI_HII_IFR_PACK;\r
-\r
-///\r
-/// HII Handle package structure.\r
-///\r
-typedef struct {\r
-  ///\r
-  /// Header of the package.\r
-  ///\r
-  EFI_HII_PACK_HEADER Header;           ///< Must be filled in.\r
-  ///\r
-  /// The image handle of the driver to which the package is referring.\r
-  ///\r
-  EFI_HANDLE          ImageHandle;      ///< Must be filled in.\r
-  ///\r
-  /// The handle of the device that is being described by this package.\r
-  ///\r
-  EFI_HANDLE          DeviceHandle;     ///< Optional.\r
-  ///\r
-  /// The handle of the parent of the device that is being described by this package.\r
-  ///\r
-  EFI_HANDLE          ControllerHandle; ///< Optional.\r
-  ///\r
-  /// The handle that was registered to receive EFI_FORM_CALLBACK_PROTOCOL calls from other drivers.\r
-  ///\r
-  EFI_HANDLE          CallbackHandle;   ///< Optional.\r
-  ///\r
-  /// Note this field is not defined in the Framework HII 0.92 specificaiton.\r
-  /// Unused. Reserved for source code compatibility.\r
-  ///\r
-  EFI_HANDLE          COBExportHandle;  ///< Optional.\r
-} EFI_HII_HANDLE_PACK;\r
-\r
-///\r
-/// The variable package structure.\r
-///\r
-typedef struct {\r
-  ///\r
-  /// The header of the package.\r
-  ///\r
-  EFI_HII_PACK_HEADER Header;\r
-  ///\r
-  /// The GUID of the EFI variable.\r
-  ///\r
-  EFI_GUID            VariableGuid;\r
-  ///\r
-  /// The length in bytes of the EFI variable.\r
-  ///\r
-  UINT32              VariableNameLength;\r
-  ///\r
-  /// The unique value for this variable.\r
-  ///\r
-  UINT16              VariableId;\r
-  //\r
-  //  CHAR16                VariableName[]; //Null-terminated\r
-  //\r
-} EFI_HII_VARIABLE_PACK;\r
-\r
-///\r
-/// The device path package structure.\r
-///\r
-typedef struct {\r
-  ///\r
-  /// The header of the package.\r
-  ///\r
-  EFI_HII_PACK_HEADER Header;\r
-  //\r
-  //  EFI_DEVICE_PATH       DevicePath[];\r
-  //\r
-} EFI_HII_DEVICE_PATH_PACK;\r
-\r
-typedef struct {\r
-  ///\r
-  /// A unique value that correlates to the original HII handle.\r
-  ///\r
-  FRAMEWORK_EFI_HII_HANDLE  HiiHandle;\r
-  ///\r
-  /// If an IFR pack exists in a data table that does not contain strings,\r
-  /// then the strings for that IFR pack are located in another data table\r
-  /// that contains a string pack and has a matching HiiDataTable.PackageGuid.\r
-  ///\r
-  EFI_GUID                  PackageGuid;\r
-  ///\r
-  /// The size of the EFI_HII_DATA_TABLE in bytes.\r
-  ///\r
-  UINT32                    DataTableSize;\r
-  ///\r
-  /// The byte offset from the start of this structure to the IFR data.\r
-  /// If the offset value is 0, then no IFR data is enclosed.\r
-  ///\r
-  UINT32                    IfrDataOffset;\r
-  ///\r
-  /// The byte offset from the start of this structure to the string data.\r
-  /// If the offset value is 0, then no string data is enclosed.\r
-  ///\r
-  UINT32                    StringDataOffset;\r
-  ///\r
-  /// The byte offset from the start of this structure to the variable data.\r
-  /// If the offset value is 0, then no variable data is enclosed.\r
-  ///\r
-  UINT32                    VariableDataOffset;\r
-  ///\r
-  /// The byte offset from the start of this structure to the device path data.\r
-  /// If the offset value is 0, then no DevicePath data is enclosed.\r
-  ///\r
-  UINT32                    DevicePathOffset;\r
-  ///\r
-  /// The number of VariableData[] elements in the array.\r
-  ///\r
-  UINT32                    NumberOfVariableData;\r
-  ///\r
-  /// The number of language string packages.\r
-  ///\r
-  UINT32                    NumberOfLanguages;\r
-  //\r
-  // EFI_HII_DEVICE_PATH_PACK DevicePath[];\r
-  // EFI_HII_VARIABLE_PACK VariableData[];\r
-  // EFI_HII_IFR_PACK IfrData;\r
-  // EFI_HII_STRING_PACK StringData[];\r
-  //\r
-} EFI_HII_DATA_TABLE;\r
-\r
-///\r
-/// The structure defining the format for exporting data from the HII Database.\r
-///\r
-typedef struct {\r
-  ///\r
-  /// Number of EFI_HII_DATA_TABLE entries.\r
-  ///\r
-  UINT32    NumberOfHiiDataTables;\r
-  ///\r
-  /// Defines the revision of the EFI_HII_DATA_TABLE structure.\r
-  ///\r
-  EFI_GUID  Revision;\r
-  //\r
-  // EFI_HII_DATA_TABLE HiiDataTable[];\r
-  //\r
-} EFI_HII_EXPORT_TABLE;\r
-\r
-///\r
-/// The structure used to pass data to update a form or form package\r
-/// that has previously been registered with the EFI HII database.\r
-///\r
-typedef struct {\r
-  ///\r
-  /// If TRUE, indicates that the FormCallbackHandle value will\r
-  /// be used to update the contents of the CallBackHandle entry in the form set.\r
-  ///\r
-  BOOLEAN               FormSetUpdate;\r
-  ///\r
-  /// This parameter is valid only when FormSetUpdate is TRUE.\r
-  /// The value in this parameter will be used to update the contents\r
-  /// of the CallbackHandle entry in the form set.\r
-  ///\r
-  EFI_PHYSICAL_ADDRESS  FormCallbackHandle;\r
-  ///\r
-  /// If TRUE, indicates that the FormTitle contents will be\r
-  /// used to update the FormValue's title.\r
-  ///\r
-  BOOLEAN               FormUpdate;\r
-  ///\r
-  /// Specifies which form is to be updated if the FormUpdate value is TRUE.\r
-  ///\r
-  UINT16                FormValue;\r
-  ///\r
-  /// This parameter is valid only when the FormUpdate parameter is TRUE.\r
-  /// The value in this parameter will be used to update the contents of the form title.\r
-  ///\r
-  STRING_REF            FormTitle;\r
-  ///\r
-  /// The number of Data entries in this structure.\r
-  UINT16                DataCount;\r
-  ///\r
-  /// An array of 1+ opcodes, specified by DataCount.\r
-  ///\r
-  UINT8                 *Data;\r
-} EFI_HII_UPDATE_DATA;\r
-\r
-//\r
-// String attributes\r
-//\r
-#define LANG_RIGHT_TO_LEFT  0x00000001\r
-\r
-///\r
-/// A string package is used to localize strings to a particular\r
-/// language.  The package is associated with a particular driver\r
-/// or set of drivers.  Tools are used to associate tokens with\r
-/// string references in forms and in programs.  These tokens are\r
-/// language agnostic.  When paired with a language pack (directly\r
-/// or indirectly), the string token resolves into an actual\r
-/// UNICODE string.  NumStringPointers determines how many\r
-/// StringPointers (offset values) there are, as well as the total\r
-/// number of Strings that are defined.\r
-///\r
-typedef struct {\r
-  ///\r
-  /// The header of the package.\r
-  ///\r
-  EFI_HII_PACK_HEADER Header;\r
-  ///\r
-  /// The string containing one or more ISO 639-2 three-character designator(s)\r
-  /// of the language or languages whose translations are contained in this language pack.\r
-  /// The first designator indicates the primary language, while the others are secondary languages.\r
-  ///\r
-  RELOFST             LanguageNameString;\r
-  ///\r
-  /// Contains the offset into this structure of a printable name of the language\r
-  /// for use when prompting the user. The language printed is to be the primary language.\r
-  ///\r
-  RELOFST             PrintableLanguageName;\r
-  ///\r
-  /// The number of Strings and StringPointers contained within the string package.\r
-  ///\r
-  UINT32              NumStringPointers;\r
-  ///\r
-  /// Indicates the direction the language is to be printed.\r
-  ///\r
-  UINT32              Attributes;\r
-  //\r
-  //  RELOFST               StringPointers[];\r
-  //  EFI_STRING            Strings[];\r
-  //\r
-} EFI_HII_STRING_PACK;\r
-\r
-\r
-///\r
-/// A font list consists of a font header followed by a series\r
-/// of glyph structures.  Note that fonts are not language specific.\r
-///\r
-typedef struct {\r
-  ///\r
-  /// The header of the package.\r
-  ///\r
-  EFI_HII_PACK_HEADER Header;\r
-  ///\r
-  /// The number of NarrowGlyphs that are included in the font package.\r
-  ///\r
-  UINT16              NumberOfNarrowGlyphs;\r
-  ///\r
-  /// The number of WideGlyphs that are included in the font package.\r
-  ///\r
-  UINT16              NumberOfWideGlyphs;\r
-  //EFI_NARROW_GLYPH  NarrowGlyphs[];\r
-  //EFI_WIDE_GLYPH    WideGlyphs[];\r
-} EFI_HII_FONT_PACK;\r
-\r
-///\r
-/// The definition of a specific physical key\r
-///\r
-/// Note: The name difference between code and the Framework HII 0.92 specification.\r
-///       Add FRAMEWORK_ prefix to avoid name confict with EFI_KEY_DESCRIPTOR defined in the\r
-///       UEFI 2.1d specification.\r
-///\r
-typedef struct {\r
-  ///\r
-  /// Used to describe a physical key on a keyboard.\r
-  ///\r
-  EFI_KEY Key;\r
-  ///\r
-  /// The Unicode value for the Key.\r
-  CHAR16  Unicode;\r
-  ///\r
-  /// The Unicode value for the key with the shift key being held down.\r
-  ///\r
-  CHAR16  ShiftedUnicode;\r
-  ///\r
-  /// The Unicode value for the key with the Alt-GR being held down.\r
-  ///\r
-  CHAR16  AltGrUnicode;\r
-  ///\r
-  /// The Unicode value for the key with the Alt-GR and shift keys being held down.\r
-  ///\r
-  CHAR16  ShiftedAltGrUnicode;\r
-  ///\r
-  /// Modifier keys are defined to allow for special functionality that\r
-  /// is not necessarily accomplished by a printable character.\r
-  ///\r
-  UINT16  Modifier;\r
-} FRAMEWORK_EFI_KEY_DESCRIPTOR;\r
-\r
-///\r
-/// This structure allows a sparse set of keys to be redefined\r
-/// or a complete redefinition of the keyboard layout.  Most\r
-/// keyboards have a lot of commonality in their layouts, therefore\r
-/// only defining those keys that need to change from the default\r
-/// minimizes the passed in information.\r
-///\r
-/// Additionally, when an update occurs, the active keyboard layout\r
-/// will be switched to the newly updated keyboard layout.  This\r
-/// allows for situations that when a keyboard layout driver is\r
-/// loaded as part of system initialization, the system will default\r
-/// the keyboard behavior to the new layout.\r
-///\r
-typedef struct {\r
-  ///\r
-  /// The header of the package.\r
-  EFI_HII_PACK_HEADER           Header;\r
-  ///\r
-  /// A pointer to a buffer containing an array of EFI_KEY_DESCRIPTOR entries.\r
-  /// Each entry will reflect the definition of a specific physical key.\r
-  ///\r
-  FRAMEWORK_EFI_KEY_DESCRIPTOR  *Descriptor;\r
-  ///\r
-  /// The number of Descriptor entries being described.\r
-  ///\r
-  UINT8                         DescriptorCount;\r
-} EFI_HII_KEYBOARD_PACK;\r
-\r
-///\r
-/// The packages structure that will be used to pass contents into the HII database.\r
-///\r
-/// The EFI_HII_PACKAGES can contain various number of packages of different types just\r
-/// after the structure as inline data.\r
-///\r
-typedef struct {\r
-  ///\r
-  /// The number of packages being defined in this structure.\r
-  ///\r
-  UINTN     NumberOfPackages;\r
-  ///\r
-  /// The GUID to be used to identify this set of packages that are being exported\r
-  /// to the HII database.\r
-  ///\r
-  EFI_GUID  *GuidId;\r
-  //\r
-  // EFI_HII_HANDLE_PACK    *HandlePack;        // Only one pack.\r
-  // EFI_HII_IFR_PACK       *IfrPack;           // Only one pack.\r
-  // EFI_HII_FONT_PACK      *FontPack[];        // Multiple packs ok\r
-  // EFI_HII_STRING_PACK    *StringPack[];      // Multiple packs ok\r
-  // EFI_HII_KEYBOARD_PACK  *KeyboardPack[];    // Multiple packs ok\r
-  //\r
-} EFI_HII_PACKAGES;\r
-\r
-///\r
-/// The packed link list that contains all the discernable defaults of variables\r
-/// for the opcodes that are defined in this Handle's domain of data.\r
-///\r
-typedef struct _EFI_HII_VARIABLE_PACK_LIST {\r
-  ///\r
-  /// A pointer points to the next data structure of type\r
-  /// EFI_HII_VARIABLE_PACK_LIST in the packed link list.\r
-  ///\r
-  struct _EFI_HII_VARIABLE_PACK_LIST   *NextVariablePack;\r
-  ///\r
-  /// A pointer points to the content of the variable entry defined by GUID/name/data.\r
-  ///\r
-  EFI_HII_VARIABLE_PACK                *VariablePack;\r
-  //EFI_HII_VARIABLE_PACK              Content\r
-} EFI_HII_VARIABLE_PACK_LIST;\r
-\r
-\r
-#pragma pack()\r
-\r
-/**\r
-  Registers the various packs that are passed in via the Packages parameter.\r
-\r
-  @param  This                  A pointer to the EFI_HII_PROTOCOL instance.\r
-  @param  Packages              A pointer to an EFI_HII_PACKAGES package instance.\r
-  @param  Handle                A pointer to the FRAMEWORK_EFI_HII_HANDLE instance.\r
-\r
-  @retval EFI_SUCCESS           Data was extracted from Packages, the database\r
-                                was updated with the data, and Handle returned successfully.\r
-  @retval EFI_INVALID_PARAMETER The content of Packages was invalid.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_HII_NEW_PACK)(\r
-  IN  EFI_HII_PROTOCOL          *This,\r
-  IN  EFI_HII_PACKAGES          *Packages,\r
-  OUT FRAMEWORK_EFI_HII_HANDLE  *Handle\r
-  );\r
-\r
-/**\r
-  Removes a package from the HII database.\r
-\r
-  @param  This                  A pointer to the EFI_HII_PROTOCOL instance.\r
-  @param  Handle                The handle that was registered to the data that\r
-                                is requested for removal.\r
-\r
-  @retval EFI_SUCCESS           The data associated with the Handle was removed\r
-                                from the HII database.\r
-  @retval EFI_INVALID_PARAMETER The Handle was not valid.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_HII_REMOVE_PACK)(\r
-  IN EFI_HII_PROTOCOL          *This,\r
-  IN FRAMEWORK_EFI_HII_HANDLE  Handle\r
-  );\r
-\r
-/**\r
-  Determines the handles that are currently active in the database.\r
-\r
-  @param  This                  A pointer to the EFI_HII_PROTOCOL instance.\r
-  @param  HandleBufferLength    On input, a pointer to the length of the handle\r
-                                buffer. On output, the length of the handle buffer that is required\r
-                                for the handles found.\r
-  @param  Handle                An array of FRAMEWORK_EFI_HII_HANDLE  instances returned.\r
-\r
-  @retval EFI_SUCCESS           Handle was updated successfully.\r
-  @retval EFI_BUFFER_TOO_SMALL  The HandleBufferLength parameter indicates\r
-                                that Handle is too small to support the number of handles.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_HII_FIND_HANDLES)(\r
-  IN     EFI_HII_PROTOCOL          *This,\r
-  IN OUT UINT16                    *HandleBufferLength,\r
-  OUT    FRAMEWORK_EFI_HII_HANDLE  *Handle\r
-  );\r
-\r
-/**\r
-  Exports the contents of the database into a buffer.\r
-\r
-  @param  This                  A pointer to the EFI_HII_PROTOCOL instance.\r
-  @param  Handle                A FRAMEWORK_EFI_HII_HANDLE that corresponds to the desired\r
-                                handle to export. If the value is 0, the entire database will be exported.\r
-                                The data is exported in a format described by the\r
-                                structure definition of EFI_HII_EXPORT_TABLE.\r
-  @param  BufferSize\r
-  On input, a pointer to the length of the buffer. On output, the length\r
-  of the buffer that is required for the export data.\r
-  @param  Buffer                A pointer to a buffer that will contain the results of the export function.\r
-\r
-  @retval EFI_SUCCESS           The buffer was successfully filled with BufferSize amount of data.\r
-  @retval EFI_BUFFER_TOO_SMALL  The value in BufferSize was too small to contain the export data.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_HII_EXPORT)(\r
-  IN     EFI_HII_PROTOCOL          *This,\r
-  IN     FRAMEWORK_EFI_HII_HANDLE  Handle,\r
-  IN OUT UINTN                     *BufferSize,\r
-  OUT    VOID                      *Buffer\r
-  );\r
-\r
-/**\r
-  Remove any new strings that were added after the initial string export\r
-  for this handle.\r
-\r
-  @param  This                  A pointer to the EFI_HII_PROTOCOL instance.\r
-  @param  Handle                The handle on which the string resides.\r
-\r
-  @retval EFI_SUCCESS           Successfully removed strings from the handle.\r
-  @retval EFI_INVALID_PARAMETER The Handle was unknown.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_HII_RESET_STRINGS)(\r
-  IN EFI_HII_PROTOCOL          *This,\r
-  IN FRAMEWORK_EFI_HII_HANDLE  Handle\r
-  );\r
-\r
-/**\r
-  Tests if all of the characters in a string have corresponding font characters.\r
-\r
-  @param  This                  A pointer to the EFI_HII_PROTOCOL instance.\r
-  @param  StringToTest          A pointer to a Unicode string.\r
-  @param  FirstMissing          A pointer to an index into the string. On input,\r
-                                the index of the first character in the StringToTest\r
-                                to examine. On exit, the index of the first character\r
-                                encountered for which a glyph is unavailable.\r
-                                If all glyphs in the string are available, the\r
-                                index is the index of the terminator of the string.\r
-  @param  GlyphBufferSize       A pointer to a value. On output, if the function\r
-                                returns EFI_SUCCESS, it contains the amount of\r
-                                memory that is required to store the string's\r
-                                glyph equivalent.\r
-\r
-  @retval EFI_SUCCESS           All glyphs are available. Note that an empty string\r
-                                always returns this value.\r
-  @retval EFI_NOT_FOUND         A glyph was not found for a character.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_HII_TEST_STRING)(\r
-  IN     EFI_HII_PROTOCOL  *This,\r
-  IN     CHAR16            *StringToTest,\r
-  IN OUT UINT32            *FirstMissing,\r
-  OUT    UINT32            *GlyphBufferSize\r
-  );\r
-\r
-/**\r
-  Translates a Unicode character into the corresponding font glyph.\r
-\r
-  Note that this function prototype name is different from that in the Framework HII 0.92 specification\r
-  to avoid name confict with EFI_HII_GET_GLYPH defined in the UEFI 2.1d specification.\r
-\r
-  @param  This                  A pointer to the EFI_HII_PROTOCOL instance.\r
-  @param  Source                A pointer to a Unicode string.\r
-  @param  Index                 On input, the offset into the string from which to\r
-                                fetch the character. On successful completion, the\r
-                                index is updated to the first character past the\r
-                                character(s) making up the just extracted glyph.\r
-  @param  GlyphBuffer           Pointer to an array where the glyphs corresponding\r
-                                to the characters in the source may be stored.\r
-                                GlyphBuffer is assumed to be wide enough to accept\r
-                                a wide glyph character.\r
-  @param  BitWidth              If EFI_SUCCESS was returned, the UINT16 pointed to by\r
-                                this value is filled with the length of the glyph in\r
-                                pixels. It is unchanged if the call was unsuccessful.\r
-  @param  InternalStatus        The cell pointed to by this parameter must be\r
-                                initialized to zero prior to invoking the call the\r
-                                first time for any string.\r
-\r
-  @retval EFI_SUCCESS           Found the corresponding font glyph for a Unicode\r
-                                character.\r
-  @retval EFI_NOT_FOUND         A glyph for a character was not found.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *FRAMEWORK_EFI_HII_GET_GLYPH)(\r
-  IN     EFI_HII_PROTOCOL  *This,\r
-  IN     CHAR16            *Source,\r
-  IN OUT UINT16            *Index,\r
-  OUT    UINT8             **GlyphBuffer,\r
-  OUT    UINT16            *BitWidth,\r
-  IN OUT UINT32            *InternalStatus\r
-  );\r
-\r
-/**\r
-  Translates a glyph into the format required for input to the Universal\r
-  Graphics Adapter (UGA) Block Transfer (BLT) routines.\r
-\r
-  @param  This                  A pointer to the EFI_HII_PROTOCOL instance.\r
-  @param  GlyphBuffer           A pointer to the buffer that contains glyph data.\r
-  @param  Foreground            The foreground setting requested to be used for the\r
-                                generated BltBuffer data.\r
-  @param  Background            The background setting requested to be used for the\r
-                                generated BltBuffer data.\r
-  @param  Count                 The entry in the BltBuffer upon which to act.\r
-  @param  Width                 The width in bits of the glyph being converted.\r
-  @param  Height                The height in bits of the glyph being converted\r
-  @param  BltBuffer             A pointer to the buffer that contains the data that is\r
-                                ready to be used by the UGA BLT routines.\r
-\r
-  @retval EFI_SUCCESS           Successfully translated a glyph into the required\r
-                                format for input to UGA BLT routines.\r
-  @retval EFI_NOT_FOUND         A glyph for a character was not found.\r
-  @note  Inconsistent with specification here:\r
-         In Framework Spec, HII specification 0.92. The type of 3rd, 4th and 8th parameter is EFI_UGA_PIXEL.\r
-         Here the definition uses the EFI_GRAPHICS_OUTPUT_BLT_PIXEL, which is defined in UEFI 2.1 specification.\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_HII_GLYPH_TO_BLT)(\r
-  IN     EFI_HII_PROTOCOL             *This,\r
-  IN     UINT8                        *GlyphBuffer,\r
-  IN     EFI_GRAPHICS_OUTPUT_BLT_PIXEL Foreground,\r
-  IN     EFI_GRAPHICS_OUTPUT_BLT_PIXEL Background,\r
-  IN     UINTN                         Count,\r
-  IN     UINTN                         Width,\r
-  IN     UINTN                         Height,\r
-  IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer\r
-  );\r
-\r
-/**\r
-  Allows a new string to be added to an already existing string package.\r
-\r
-  Note that this function prototype name is different from that in the Framework HII 0.92 specification\r
-  to avoid name confict with EFI_HII_NEW_STRING defined in the UEFI 2.1d specification.\r
-\r
-  @param  This                  A pointer to the EFI_HII_PROTOCOL instance.\r
-  @param  Pointer               to a NULL-terminated string containing a single\r
-                                ISO 639-2 language identifier, indicating the language\r
-                                in which the string is translated.\r
-  @param  Handle                The handle of the language pack to which the string\r
-                                is to be added.\r
-  @param  Reference             The identifier of the string to be added. If the\r
-                                reference value is zero, then the string will be\r
-                                assigned a new identifier on that handle for\r
-                                the language specified. Otherwise, the string will\r
-                                be updated with the NewString Value.\r
-  @param  NewString             The string to be added.\r
-\r
-  @retval EFI_SUCCESS           The string was effectively registered.\r
-  @retval EFI_INVALID_PARAMETER The Handle was unknown.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *FRAMEWORK_EFI_HII_NEW_STRING)(\r
-  IN     EFI_HII_PROTOCOL          *This,\r
-  IN     CHAR16                    *Language,\r
-  IN     FRAMEWORK_EFI_HII_HANDLE  Handle,\r
-  IN OUT STRING_REF                *Reference,\r
-  IN     CHAR16                    *NewString\r
-  );\r
-\r
-/**\r
-  Allows a program to determine the primary languages that are supported\r
-  on a given handle.\r
-\r
-  @param  This                  A pointer to the EFI_HII_PROTOCOL instance.\r
-  @param  Handle                The handle on which the strings reside.\r
-  @param  LanguageString        A string allocated by GetPrimaryLanguages() that\r
-                                contains a list of all primary languages registered\r
-                                on the handle.\r
-\r
-  @retval EFI_SUCCESS           LanguageString was correctly returned.\r
-  @retval EFI_INVALID_PARAMETER The Handle was unknown.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_HII_GET_PRI_LANGUAGES)(\r
-  IN  EFI_HII_PROTOCOL          *This,\r
-  IN  FRAMEWORK_EFI_HII_HANDLE  Handle,\r
-  OUT EFI_STRING                *LanguageString\r
-  );\r
-\r
-/**\r
-  Allows a program to determine which secondary languages are supported\r
-  on a given handle for a given primary language.\r
-\r
-  @param  This                  A pointer to the EFI_HII_PROTOCOL instance.\r
-  @param  Handle                The handle on which the strings reside.\r
-  @param  PrimaryLanguage       Pointer to a NULL-terminated string containing a\r
-                                single ISO 639-2 language identifier, indicating\r
-                                the primary language.\r
-  @param  LanguageString        A string allocated by GetSecondaryLanguages()\r
-                                containing a list of all secondary languages\r
-                                registered on the handle.\r
-\r
-  @retval EFI_SUCCESS           LanguageString was correctly returned.\r
-  @retval EFI_INVALID_PARAMETER The Handle was unknown.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_HII_GET_SEC_LANGUAGES)(\r
-  IN  EFI_HII_PROTOCOL          *This,\r
-  IN  FRAMEWORK_EFI_HII_HANDLE  Handle,\r
-  IN  CHAR16                    *PrimaryLanguage,\r
-  OUT EFI_STRING                *LanguageString\r
-  );\r
-\r
-/**\r
-  Extracts a string from a package already registered with the EFI HII database.\r
-\r
-  Note that this function prototype name is different from that in the Framework HII 0.92 specification\r
-  to avoid name confict with EFI_HII_GET_STRING defined in the UEFI 2.1d specification.\r
-\r
-  @param  This                  A pointer to the EFI_HII_PROTOCOL instance.\r
-  @param  Handle                The handle on which the string resides.\r
-  @param  Token                 The string token assigned to the string.\r
-  @param  Raw                   If TRUE, the string is returned unedited in the\r
-                                internal storage format. If false, the string\r
-                                returned is edited by replacing <cr> with <space>\r
-                                and by removing special characters such as the\r
-                                <wide> prefix.\r
-  @param  LanguageString        Pointer to a NULL-terminated string containing a\r
-                                single ISO 639-2 language identifier, indicating\r
-                                the language to print. If the LanguageString is\r
-                                empty (starts with a NULL), the default system\r
-                                language will be used to determine the language.\r
-  @param  BufferLength          Length of the StringBuffer.\r
-  @param  StringBuffer          The buffer designed to receive the characters in the string.\r
-\r
-  @retval EFI_SUCCESS           StringBuffer is filled with a NULL-terminated string.\r
-  @retval EFI_INVALID_PARAMETER The handle or string token is unknown.\r
-  @retval EFI_BUFFER_TOO_SMALL  The buffer provided was not large enough to\r
-                                allow the entire string to be stored.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *FRAMEWORK_EFI_HII_GET_STRING)(\r
-  IN     EFI_HII_PROTOCOL          *This,\r
-  IN     FRAMEWORK_EFI_HII_HANDLE  Handle,\r
-  IN     STRING_REF                Token,\r
-  IN     BOOLEAN                   Raw,\r
-  IN     CHAR16                    *LanguageString,\r
-  IN OUT UINTN                     *BufferLength,\r
-  OUT    EFI_STRING                StringBuffer\r
-  );\r
-\r
-/**\r
-  Allows a program to extract a part of a string of not more than a given width.\r
-\r
-  @param  This                  A pointer to the EFI_HII_PROTOCOL instance.\r
-  @param  Handle                The handle on which the string resides.\r
-  @param  Token                 The string token assigned to the string.\r
-  @param  Index                 On input, the offset into the string where the\r
-                                line is to start. On output, the index is updated\r
-                                to point beyond the last character returned in\r
-                                the call.\r
-  @param  LineWidth             The maximum width of the line in units of narrow glyphs.\r
-  @param  LanguageString        The pointer to a NULL-terminated string containing a\r
-                                single ISO 639-2 language identifier, indicating\r
-                                the language to print.\r
-  @param  BufferLength          The pointer to the length of the StringBuffer.\r
-  @param  StringBuffer          The buffer designed to receive the characters in\r
-                                the string.\r
-\r
-  @retval EFI_SUCCESS           StringBuffer filled with characters that will fit\r
-                                on the line.\r
-  @retval EFI_NOT_FOUND         The font glyph for at least one of the characters in\r
-                                the string is not in the font database.\r
-  @retval EFI_BUFFER_TOO_SMALL  The buffer provided was not large enough\r
-                                to allow the entire string to be stored.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_HII_GET_LINE)(\r
-  IN     EFI_HII_PROTOCOL          *This,\r
-  IN     FRAMEWORK_EFI_HII_HANDLE  Handle,\r
-  IN     STRING_REF                Token,\r
-  IN OUT UINT16                    *Index,\r
-  IN     UINT16                    LineWidth,\r
-  IN     CHAR16                    *LanguageString,\r
-  IN OUT UINT16                    *BufferLength,\r
-  OUT    EFI_STRING                StringBuffer\r
-  );\r
-\r
-/**\r
-  Allows a program to extract a form or form package that has previously\r
-  been registered with the HII database.\r
-\r
-  @param  This                  A pointer to the EFI_HII_PROTOCOL instance.\r
-  @param  Handle                Handle on which the form resides.\r
-  @param  FormId                The ID of the form to return. If the ID is zero,\r
-                                the entire form package is returned.\r
-  @param  BufferLength          On input, the length of the Buffer. On output,\r
-                                the length of the returned buffer,\r
-  @param  Buffer                The buffer designed to receive the form(s).\r
-\r
-  @retval EFI_SUCCESS           Buffer filled with the requested forms. BufferLength\r
-                                was updated.\r
-  @retval EFI_INVALID_PARAMETER The handle is unknown.\r
-  @retval EFI_NOT_FOUND         A form on the requested handle cannot be found with\r
-                                the requested FormId.\r
-  @retval EFI_BUFFER_TOO_SMALL  The buffer provided was not large enough\r
-                                to allow the form to be stored.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_HII_GET_FORMS)(\r
-  IN     EFI_HII_PROTOCOL          *This,\r
-  IN     FRAMEWORK_EFI_HII_HANDLE  Handle,\r
-  IN     EFI_FORM_ID               FormId,\r
-  IN OUT UINTN                     *BufferLength,\r
-  OUT    UINT8                     *Buffer\r
-  );\r
-\r
-/**\r
-  Extracts the defaults that are associated with a given handle in the HII database.\r
-\r
-  @param  This                  A pointer to the EFI_HII_PROTOCOL instance.\r
-  @param  Handle                The HII handle from which will have default data retrieved.\r
-  @param  DefaultMask           The mask used to specify some type of default\r
-                                override when extracting the default image data.\r
-  @param  VariablePackList      An indirect pointer to the first entry of a link\r
-                                list with type EFI_HII_VARIABLE_PACK_LIST.\r
-\r
-  @retval EFI_SUCCESS           The VariablePackList was populated with the appropriate\r
-                                default setting data.\r
-  @retval EFI_NOT_FOUND         The IFR does not have any explicit or default map(s).\r
-  @retval EFI_INVALID_PARAMETER The HII database entry associated with Handle\r
-                                contains invalid data.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_HII_GET_DEFAULT_IMAGE)(\r
-  IN     EFI_HII_PROTOCOL           *This,\r
-  IN     FRAMEWORK_EFI_HII_HANDLE   Handle,\r
-  IN     UINTN                      DefaultMask,\r
-  OUT    EFI_HII_VARIABLE_PACK_LIST **VariablePackList\r
-  );\r
-\r
-/**\r
-  Allows the caller to update a form or form package that has previously been\r
-  registered with the EFI HII database.\r
-\r
-  @param  This                  A pointer to the EFI_HII_PROTOCOL instance.\r
-  @param  Handle                Handle of the package where the form to be updated resides.\r
-  @param  Label                 The label inside the form package where the update is to take place.\r
-  @param  AddData               If TRUE, adding data at a given Label; otherwise,\r
-                                if FALSE, removing data at a given Label.\r
-  @param  Data                  The buffer containing the new tags to insert after the Label\r
-\r
-  @retval EFI_SUCCESS           The form was updated with the new tags.\r
-  @retval EFI_INVALID_PARAMETER The buffer for the buffer length does not\r
-                                contain an integral number of tags.\r
-  @retval EFI_NOT_FOUND         The Handle, Label, or FormId was not found.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_HII_UPDATE_FORM)(\r
-  IN EFI_HII_PROTOCOL          *This,\r
-  IN FRAMEWORK_EFI_HII_HANDLE  Handle,\r
-  IN EFI_FORM_LABEL            Label,\r
-  IN BOOLEAN                   AddData,\r
-  IN EFI_HII_UPDATE_DATA       *Data\r
-  );\r
-\r
-/**\r
-  Retrieves the current keyboard layout.\r
-\r
-  Note that this function prototype name is different from that in the Framework HII 0.92 specification\r
-  to avoid name confict with EFI_HII_GET_KEYBOARD_LAYOUT defined in the UEFI 2.1d specification.\r
-\r
-  @param  This                  A pointer to the EFI_HII_PROTOCOL instance.\r
-  @param  DescriptorCount       A pointer to the number of Descriptor entries being\r
-                                described in the keyboard layout being retrieved.\r
-  @param  Descriptor            A pointer to a buffer containing an array of\r
-                                FRAMEWORK_EFI_KEY_DESCRIPTOR entries. Each entry\r
-                                will reflect the definition of a specific physical key.\r
-\r
-  @retval EFI_SUCCESS           The keyboard layout was retrieved successfully.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *FRAMEWORK_EFI_HII_GET_KEYBOARD_LAYOUT)(\r
-  IN     EFI_HII_PROTOCOL              *This,\r
-  OUT    UINT16                        *DescriptorCount,\r
-  OUT    FRAMEWORK_EFI_KEY_DESCRIPTOR  *Descriptor\r
-  );\r
-\r
-///\r
-///  The HII Protocol manages the HII database, which is a repository for data\r
-///  having to do with fonts, strings, forms, keyboards, and other future human\r
-///  interface items.\r
-///\r
-struct _EFI_HII_PROTOCOL {\r
-  ///\r
-  /// Extracts the various packs from a package list.\r
-  ///\r
-  EFI_HII_NEW_PACK                      NewPack;\r
-\r
-  ///\r
-  /// Removes a package from the HII database.\r
-  ///\r
-  EFI_HII_REMOVE_PACK                   RemovePack;\r
-\r
-  ///\r
-  /// Determines the handles that are currently active in the database.\r
-  ///\r
-  EFI_HII_FIND_HANDLES                  FindHandles;\r
-\r
-  ///\r
-  /// Exports the entire contents of the database to a buffer.\r
-  ///\r
-  EFI_HII_EXPORT                        ExportDatabase;\r
-\r
-  ///\r
-  /// Tests if all of the characters in a string have corresponding font characters.\r
-  ///\r
-  EFI_HII_TEST_STRING                   TestString;\r
-\r
-  ///\r
-  /// Translates a Unicode character into the corresponding font glyph.\r
-  ///\r
-  FRAMEWORK_EFI_HII_GET_GLYPH           GetGlyph;\r
-\r
-  ///\r
-  /// Converts a glyph value into a format that is ready for a UGA BLT command.\r
-  ///\r
-  EFI_HII_GLYPH_TO_BLT                  GlyphToBlt;\r
-\r
-  ///\r
-  /// Allows a new string to be added to an already existing string package.\r
-  ///\r
-  FRAMEWORK_EFI_HII_NEW_STRING          NewString;\r
-\r
-  ///\r
-  /// Allows a program to determine the primary languages that are supported\r
-  /// on a given handle.\r
-  ///\r
-  EFI_HII_GET_PRI_LANGUAGES             GetPrimaryLanguages;\r
-\r
-  ///\r
-  /// Allows a program to determine which secondary languages are supported\r
-  /// on a given handle for a given primary language.\r
-  ///\r
-  EFI_HII_GET_SEC_LANGUAGES             GetSecondaryLanguages;\r
-\r
-  ///\r
-  /// Extracts a string from a package that is already registered with the\r
-  /// EFI HII database.\r
-  ///\r
-  FRAMEWORK_EFI_HII_GET_STRING          GetString;\r
-\r
-  ///\r
-  /// Removes any new strings that were added after the initial string export\r
-  /// for this handle.\r
-  ///\r
-  /// Note this function is not defined in the Framework HII 0.92 specification.\r
-  ///\r
-  EFI_HII_RESET_STRINGS                 ResetStrings;\r
-\r
-  ///\r
-  /// Allows a program to extract a part of a string of not more than a given width.\r
-  ///\r
-  EFI_HII_GET_LINE                      GetLine;\r
-\r
-  ///\r
-  /// Allows a program to extract a form or form package that has been previously registered.\r
-  ///\r
-  EFI_HII_GET_FORMS                     GetForms;\r
-\r
-  ///\r
-  /// Allows a program to extract the nonvolatile image that represents the default storage image.\r
-  ///\r
-  EFI_HII_GET_DEFAULT_IMAGE             GetDefaultImage;\r
-\r
-  ///\r
-  /// Allows a program to update a previously registered form.\r
-  ///\r
-  EFI_HII_UPDATE_FORM                   UpdateForm;\r
-\r
-  ///\r
-  /// Allows a program to extract the current keyboard layout.\r
-  ///\r
-  FRAMEWORK_EFI_HII_GET_KEYBOARD_LAYOUT GetKeyboardLayout;\r
-};\r
-\r
-extern EFI_GUID gEfiHiiProtocolGuid;\r
-extern EFI_GUID gEfiHiiCompatibilityProtocolGuid;\r
-\r
-#endif\r
-\r
diff --git a/IntelFrameworkPkg/Include/Protocol/FrameworkMpService.h b/IntelFrameworkPkg/Include/Protocol/FrameworkMpService.h
deleted file mode 100644 (file)
index 3f9a6c9..0000000
+++ /dev/null
@@ -1,656 +0,0 @@
-/** @file\r
-  When installed, the Framework MP Services Protocol produces a collection of\r
-  services that are needed for MP management, such as initialization and management\r
-  of application processors.\r
-\r
-  @par Note:\r
-    This protocol has been deprecated and has been replaced by the MP Services\r
-    Protocol from the UEFI Platform Initialization Specification 1.2, Volume 2:\r
-    Driver Execution Environment Core Interface.\r
-\r
-  The MP Services Protocol provides a generalized way of performing following tasks:\r
-    - Retrieving information of multi-processor environment and MP-related status of\r
-      specific processors.\r
-    - Dispatching user-provided function to APs.\r
-    - Maintain MP-related processor status.\r
-\r
-  The MP Services Protocol must be produced on any system with more than one logical\r
-  processor.\r
-\r
-  The Protocol is available only during boot time.\r
-\r
-  MP Services Protocol is hardware-independent. Most of the logic of this protocol\r
-  is architecturally neutral. It abstracts the multi-processor environment and\r
-  status of processors, and provides interfaces to retrieve information, maintain,\r
-  and dispatch.\r
-\r
-  MP Services Protocol may be consumed by ACPI module. The ACPI module may use this\r
-  protocol to retrieve data that are needed for an MP platform and report them to OS.\r
-  MP Services Protocol may also be used to program and configure processors, such\r
-  as MTRR synchronization for memory space attributes setting in DXE Services.\r
-  MP Services Protocol may be used by non-CPU DXE drivers to speed up platform boot\r
-  by taking advantage of the processing capabilities of the APs, for example, using\r
-  APs to help test system memory in parallel with other device initialization.\r
-  Diagnostics applications may also use this protocol for multi-processor.\r
-\r
-Copyright (c) 1999 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-**/\r
-\r
-#ifndef _FRAMEWORK_MP_SERVICE_PROTOCOL_H_\r
-#define _FRAMEWORK_MP_SERVICE_PROTOCOL_H_\r
-\r
-#include <FrameworkDxe.h>\r
-\r
-///\r
-/// Global ID for the FRAMEWORK_EFI_MP_SERVICES_PROTOCOL.\r
-///\r
-#define FRAMEWORK_EFI_MP_SERVICES_PROTOCOL_GUID \\r
-  { \\r
-    0xf33261e7, 0x23cb, 0x11d5, {0xbd, 0x5c, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81} \\r
-  }\r
-\r
-///\r
-/// Forward declaration for the EFI_MP_SERVICES_PROTOCOL.\r
-///\r
-typedef struct _FRAMEWORK_EFI_MP_SERVICES_PROTOCOL FRAMEWORK_EFI_MP_SERVICES_PROTOCOL;\r
-\r
-///\r
-/// Fixed delivery mode that may be used as the DeliveryMode parameter in SendIpi().\r
-///\r
-#define DELIVERY_MODE_FIXED           0x0\r
-\r
-///\r
-/// Lowest priority delivery mode that may be used as the DeliveryMode parameter in SendIpi().\r
-///\r
-#define DELIVERY_MODE_LOWEST_PRIORITY 0x1\r
-\r
-///\r
-/// SMI delivery mode that may be used as the DeliveryMode parameter in SendIpi().\r
-///\r
-#define DELIVERY_MODE_SMI             0x2\r
-\r
-///\r
-/// Remote read delivery mode that may be used as the DeliveryMode parameter in SendIpi().\r
-///\r
-#define DELIVERY_MODE_REMOTE_READ     0x3\r
-\r
-///\r
-/// NMI delivery mode that may be used as the DeliveryMode parameter in SendIpi().\r
-///\r
-#define DELIVERY_MODE_NMI             0x4\r
-\r
-///\r
-/// INIT delivery mode that may be used as the DeliveryMode parameter in SendIpi().\r
-///\r
-#define DELIVERY_MODE_INIT            0x5\r
-\r
-///\r
-/// Startup IPI delivery mode that may be used as the DeliveryMode parameter in SendIpi().\r
-///\r
-#define DELIVERY_MODE_SIPI            0x6\r
-\r
-///\r
-/// The DeliveryMode parameter in SendIpi() must be less than this maximum value.\r
-///\r
-#define DELIVERY_MODE_MAX             0x7\r
-\r
-///\r
-/// IPF specific value for the state field of the Self Test State Parameter.\r
-///\r
-#define EFI_MP_HEALTH_FLAGS_STATUS_HEALTHY                  0x0\r
-\r
-///\r
-/// IPF specific value for the state field of the Self Test State Parameter.\r
-///\r
-#define EFI_MP_HEALTH_FLAGS_STATUS_PERFORMANCE_RESTRICTED   0x1\r
-\r
-///\r
-/// IPF specific value for the state field of the Self Test State Parameter.\r
-///\r
-#define EFI_MP_HEALTH_FLAGS_STATUS_FUNCTIONALLY_RESTRICTED  0x2\r
-\r
-typedef union {\r
-  ///\r
-  /// Bitfield structure for the IPF Self Test State Parameter.\r
-  ///\r
-  struct {\r
-    UINT32  Status:2;\r
-    UINT32  Tested:1;\r
-    UINT32  Reserved1:13;\r
-    UINT32  VirtualMemoryUnavailable:1;\r
-    UINT32  Ia32ExecutionUnavailable:1;\r
-    UINT32  FloatingPointUnavailable:1;\r
-    UINT32  MiscFeaturesUnavailable:1;\r
-    UINT32  Reserved2:12;\r
-  } Bits;\r
-  ///\r
-  /// IA32 and X64 BIST data of the processor.\r
-  ///\r
-  UINT32  Uint32;\r
-} EFI_MP_HEALTH_FLAGS;\r
-\r
-typedef struct {\r
-  ///\r
-  /// @par IA32, X64:\r
-  ///   BIST (built-in self-test) data of the processor.\r
-  ///\r
-  /// @par IPF:\r
-  ///   Lower 32 bits of the self-test state parameter. For definition of self-test\r
-  ///   state parameter, please refer to Intel(R) Itanium(R) Architecture Software\r
-  ///   Developer's Manual, Volume 2: System Architecture.\r
-  ///\r
-  EFI_MP_HEALTH_FLAGS  Flags;\r
-  ///\r
-  /// @par IA32, X64:\r
-  ///   Not used.\r
-  ///\r
-  /// @par IPF:\r
-  ///   Higher 32 bits of self test state parameter.\r
-  ///\r
-  UINT32               TestStatus;\r
-} EFI_MP_HEALTH;\r
-\r
-typedef enum {\r
-  EfiCpuAP                = 0,  ///< The CPU is an AP (Application Processor).\r
-  EfiCpuBSP,                    ///< The CPU is the BSP (Boot-Strap Processor).\r
-  EfiCpuDesignationMaximum\r
-} EFI_CPU_DESIGNATION;\r
-\r
-typedef struct {\r
-  ///\r
-  /// @par IA32, X64:\r
-  ///   The lower 8 bits contains local APIC ID, and higher bits are reserved.\r
-  ///\r
-  /// @par IPF:\r
-  ///   The lower 16 bits contains id/eid as physical address of local SAPIC\r
-  ///   unit, and higher bits are reserved.\r
-  ///\r
-  UINT32               ApicID;\r
-  ///\r
-  /// This field indicates whether the processor is enabled.  If the value is\r
-  /// TRUE, then the processor is enabled. Otherwise, it is disabled.\r
-  ///\r
-  BOOLEAN              Enabled;\r
-  ///\r
-  /// This field indicates whether the processor is playing the role of BSP.\r
-  /// If the value is EfiCpuAP, then the processor is AP. If the value is\r
-  /// EfiCpuBSP, then the processor is BSP.\r
-  ///\r
-  EFI_CPU_DESIGNATION  Designation;\r
-  ///\r
-  /// @par IA32, X64:\r
-  ///   The Flags field of this EFI_MP_HEALTH data structure holds BIST (built-in\r
-  ///   self test) data of the processor. The TestStatus field is not used, and\r
-  ///   the value is always zero.\r
-  ///\r
-  /// @par IPF:\r
-  ///   Bit format of this field is the same as the definition of self-test state\r
-  ///   parameter, in Intel(R) Itanium(R) Architecture Software Developer's Manual,\r
-  ///   Volume 2: System Architecture.\r
-  ///\r
-  EFI_MP_HEALTH        Health;\r
-  ///\r
-  /// Zero-based physical package number that identifies the cartridge of the\r
-  /// processor.\r
-  ///\r
-  UINTN                PackageNumber;\r
-  ///\r
-  /// Zero-based physical core number within package of the processor.\r
-  ///\r
-  UINTN                NumberOfCores;\r
-  ///\r
-  /// Zero-based logical thread number within core of the processor.\r
-  ///\r
-  UINTN                NumberOfThreads;\r
-  ///\r
-  /// This field is reserved.\r
-  ///\r
-  UINT64               ProcessorPALCompatibilityFlags;\r
-  ///\r
-  /// @par IA32, X64:\r
-  ///   This field is not used, and the value is always zero.\r
-  ///\r
-  /// @par IPF:\r
-  ///   This field is a mask number that is handed off by the PAL about which\r
-  ///   processor tests are performed and which are masked.\r
-  ///\r
-  UINT64               ProcessorTestMask;\r
-} EFI_MP_PROC_CONTEXT;\r
-\r
-/**\r
-  This service retrieves general information of multiprocessors in the system.\r
-\r
-  This function is used to get the following information:\r
-    - Number of logical processors in system\r
-    - Maximal number of logical processors supported by system\r
-    - Number of enabled logical processors.\r
-    - Rendezvous interrupt number (IPF-specific)\r
-    - Length of the rendezvous procedure.\r
-\r
-  @param[in]  This                   The pointer to the FRAMEWORK_EFI_MP_SERVICES_PROTOCOL\r
-                                     instance.\r
-  @param[out] NumberOfCPUs           The pointer to the total number of logical processors\r
-                                     in the system, including the BSP and disabled\r
-                                     APs.  If NULL, this parameter is ignored.\r
-  @param[out] MaximumNumberOfCPUs    Pointer to the maximum number of processors\r
-                                     supported by the system.  If NULL, this\r
-                                     parameter is ignored.\r
-  @param[out] NumberOfEnabledCPUs    The pointer to the number of enabled logical\r
-                                     processors that exist in system, including\r
-                                     the BSP.  If NULL, this parameter is ignored.\r
-  @param[out] RendezvousIntNumber    This parameter is only meaningful for IPF.\r
-                                     - IA32, X64: The returned value is zero.\r
-                                     If NULL, this parameter is ignored.\r
-                                     - IPF: Pointer to the rendezvous interrupt\r
-                                     number that is used for AP wake-up.\r
-  @param[out] RendezvousProcLength   The pointer to the length of rendezvous procedure.\r
-                                     - IA32, X64: The returned value is 0x1000.\r
-                                     If NULL, this parameter is ignored.\r
-                                     - IPF: The returned value is zero.\r
-\r
-  @retval EFI_SUCCESS   Multiprocessor general information was successfully retrieved.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_MP_SERVICES_GET_GENERAL_MP_INFO)(\r
-  IN  FRAMEWORK_EFI_MP_SERVICES_PROTOCOL  *This,\r
-  OUT UINTN                               *NumberOfCPUs          OPTIONAL,\r
-  OUT UINTN                               *MaximumNumberOfCPUs   OPTIONAL,\r
-  OUT UINTN                               *NumberOfEnabledCPUs   OPTIONAL,\r
-  OUT UINTN                               *RendezvousIntNumber   OPTIONAL,\r
-  OUT UINTN                               *RendezvousProcLength  OPTIONAL\r
-  );\r
-\r
-/**\r
-  This service gets detailed MP-related information of the requested processor.\r
-\r
-  This service gets detailed MP-related information of the requested processor\r
-  at the instant this call is made. Note the following:\r
-    - The processor information may change during the course of a boot session.\r
-    - The data of information presented here is entirely MP related.\r
-  Information regarding the number of caches and their sizes, frequency of operation,\r
-  slot numbers is all considered platform-related information and will not be\r
-  presented here.\r
-\r
-  @param[in]  This                     The pointer to the FRAMEWORK_EFI_MP_SERVICES_PROTOCOL\r
-                                       instance.\r
-  @param[in]  ProcessorNumber          The handle number of the processor. The range\r
-                                       is from 0 to the total number of logical\r
-                                       processors minus 1. The total number of\r
-                                       logical processors can be retrieved by\r
-                                       GetGeneralMPInfo().\r
-  @param[in,out] BufferLength          On input, pointer to the size in bytes of\r
-                                       ProcessorContextBuffer.  On output, if the\r
-                                       size of ProcessorContextBuffer is not large\r
-                                       enough, the value pointed by this parameter\r
-                                       is updated to size in bytes that is needed.\r
-                                       If the size of ProcessorContextBuffer is\r
-                                       sufficient, the value is not changed from\r
-                                       input.\r
-  @param[out] ProcessorContextBuffer   The pointer to the buffer where the data of\r
-                                       requested processor will be deposited.\r
-                                       The buffer is allocated by caller.\r
-\r
-  @retval EFI_SUCCESS             Processor information was successfully returned.\r
-  @retval EFI_BUFFER_TOO_SMALL    The size of ProcessorContextBuffer is too small.\r
-                                  The value pointed by BufferLength has been updated\r
-                                  to size in bytes that is needed.\r
-  @retval EFI_INVALID_PARAMETER   IA32, X64:BufferLength is NULL.\r
-  @retval EFI_INVALID_PARAMETER   IA32, X64:ProcessorContextBuffer is NULL.\r
-  @retval EFI_INVALID_PARAMETER   IA32, X64:Processor with the handle specified by\r
-                                  ProcessorNumber does not exist.\r
-  @retval EFI_NOT_FOUND           IPF: Processor with the handle specified by\r
-                                  ProcessorNumber does not exist.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_MP_SERVICES_GET_PROCESSOR_CONTEXT)(\r
-  IN     FRAMEWORK_EFI_MP_SERVICES_PROTOCOL  *This,\r
-  IN     UINTN                               ProcessorNumber,\r
-  IN OUT UINTN                               *BufferLength,\r
-  OUT    EFI_MP_PROC_CONTEXT                 *ProcessorContextBuffer\r
-  );\r
-\r
-/**\r
-  This function is used to dispatch all enabled APs to the function specified\r
-  by Procedure. APs can run either simultaneously or one by one. The caller can\r
-  also configure the BSP to either wait for APs or just proceed with the next\r
-  task.  It is the responsibility of the caller of the StartupAllAPs() to make\r
-  sure that the nature of the code that will be run on the BSP and the dispatched\r
-  APs is well controlled. The MP Services Protocol does not guarantee that the\r
-  function that either processor is executing is MP-safe. Hence, the tasks that\r
-  can be run in parallel are limited to certain independent tasks and well-\r
-  controlled exclusive code. EFI services and protocols may not be called by APs\r
-  unless otherwise specified.\r
-\r
-  @param[in]  This                    The pointer to the FRAMEWORK_EFI_MP_SERVICES_PROTOCOL\r
-                                      instance.\r
-  @param[in]  Procedure               A pointer to the function to be run on enabled\r
-                                      APs of the system.\r
-  @param[in]  SingleThread            Flag that requests APs to execute one at a\r
-                                      time or simultaneously.\r
-                                      - IA32, X64:\r
-                                      If TRUE, then all the enabled APs execute\r
-                                      the function specified by Procedure one by\r
-                                      one, in ascending order of processor handle\r
-                                      number.  If FALSE, then all the enabled APs\r
-                                      execute the function specified by Procedure\r
-                                      simultaneously.\r
-                                      - IPF:\r
-                                      If TRUE, then all the enabled APs execute\r
-                                      the function specified by Procedure simultaneously.\r
-                                      If FALSE, then all the enabled APs execute the\r
-                                      function specified by Procedure one by one, in\r
-                                      ascending order of processor handle number. The\r
-                                      time interval of AP dispatching is determined\r
-                                      by WaitEvent and TimeoutInMicrosecs.\r
-  @param[in]  WaitEvent               Event to signal when APs have finished.\r
-                                      - IA32, X64:\r
-                                      If not NULL, when all APs finish after timeout\r
-                                      expires, the event will be signaled.  If NULL,\r
-                                      the parameter is ignored.\r
-                                      - IPF:\r
-                                      If SingleThread is TRUE, this parameter\r
-                                      is ignored.  If SingleThread is FALSE (i.e.\r
-                                      dispatch APs one by one), this parameter\r
-                                      determines whether the BSP waits after each\r
-                                      AP is dispatched. If it is NULL, the BSP\r
-                                      does not wait after each AP is dispatched.\r
-                                      If it is not NULL, the BSP waits after each\r
-                                      AP is dispatched, and the time interval is\r
-                                      determined by TimeoutInMicrosecs.  Type\r
-                                      EFI_EVENT is defined in CreateEvent() in\r
-                                      the Unified Extensible Firmware Interface\r
-                                      Specification.\r
-  @param[in]  TimeoutInMicrosecsond   Time to wait for APs to finish.\r
-                                      - IA32, X64:\r
-                                      If the value is zero, it means no timeout\r
-                                      limit. The BSP waits until all APs finish.\r
-                                      If the value is not zero, the BSP waits\r
-                                      until all APs finish or timeout expires.\r
-                                      If timeout expires, EFI_TIMEOUT is returned,\r
-                                      and the BSP will then check APs?status\r
-                                      periodically, with time interval of 16\r
-                                      microseconds.\r
-                                      - IPF:\r
-                                      If SingleThread is TRUE and FailedCPUList\r
-                                      is NULL, this parameter is ignored.  If\r
-                                      SingleThread is TRUE and FailedCPUList is\r
-                                      not NULL, this parameter determines whether\r
-                                      the BSP waits until all APs finish their\r
-                                      procedure. If it is zero, the BSP does not\r
-                                      wait for APs. If it is non-zero, it waits\r
-                                      until all APs finish.  If SingleThread is\r
-                                      FALSE and WaitEvent is NULL, this parameter\r
-                                      is ignored.  If SingleThread is FALSE and\r
-                                      WaitEvent is not NULL, the BSP waits after\r
-                                      each AP is dispatched and this value\r
-                                      determines time interval. If the value is\r
-                                      zero, the length of time interval is 10ms.\r
-                                      If the value is non-zero, the BSP waits\r
-                                      until dispatched AP finishes and then\r
-                                      dispatch the next.\r
-  @param[in]  ProcedureArgument       The pointer to the optional parameter of the\r
-                                      function specified by Procedure.\r
-  @param[out] FailedCPUList           List of APs that did not finish.\r
-                                      - IA32, X64:\r
-                                      If not NULL, it records handle numbers of\r
-                                      all logical processors that fail to accept\r
-                                      caller-provided function (busy or disabled).\r
-                                      If NULL, this parameter is ignored.\r
-                                      - IPF:\r
-                                      If not NULL, it records status of all\r
-                                      logical processors, with processor handle\r
-                                      number as index. If a logical processor\r
-                                      fails to accept caller-provided function\r
-                                      because it is busy, the status is EFI_NOT_READY.\r
-                                      If it fails to accept function due to other\r
-                                      reasons, the status is EFI_NOT_AVAILABLE_YET.\r
-                                      If timeout expires, the status is EFI_TIMEOUT.\r
-                                      Otherwise, the value is EFI_SUCCESS.  If NULL,\r
-                                      this parameter is ignored.\r
-\r
-  @retval EFI_SUCCESS              IA32, X64: All dispatched APs have finished\r
-                                  before the timeout expires.\r
-  @retval EFI_SUCCESS              IA32, X64: Only 1 logical processor exists\r
-                                  in system.\r
-  @retval EFI_INVALID_PARAMETER      IA32, X64: Procedure is NULL.\r
-  @retval EFI_TIMEOUT              IA32, X64: The timeout expires before all\r
-                                  dispatched APs have finished.\r
-  @retval EFI_SUCCESS              IPF: This function always returns EFI_SUCCESS.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *FRAMEWORK_EFI_MP_SERVICES_STARTUP_ALL_APS)(\r
-  IN  FRAMEWORK_EFI_MP_SERVICES_PROTOCOL  *This,\r
-  IN  FRAMEWORK_EFI_AP_PROCEDURE          Procedure,\r
-  IN  BOOLEAN                             SingleThread,\r
-  IN  EFI_EVENT                           WaitEvent           OPTIONAL,\r
-  IN  UINTN                               TimeoutInMicroSecs,\r
-  IN  VOID                                *ProcArguments      OPTIONAL,\r
-  OUT UINTN                               *FailedCPUList      OPTIONAL\r
-  );\r
-\r
-/**\r
-  This function is used to dispatch one enabled AP to the function provided by\r
-  the caller. The caller can request the BSP to either wait for the AP or just\r
-  proceed with the next task.\r
-\r
-  @param[in] This                    The pointer to the FRAMEWORK_EFI_MP_SERVICES_PROTOCOL\r
-                                     instance.\r
-  @param[in] Procedure               A pointer to the function to be run on the\r
-                                     designated AP.\r
-  @param[in] ProcessorNumber         The handle number of AP. The range is from\r
-                                     0 to the total number of logical processors\r
-                                     minus 1.  The total number of logical\r
-                                     processors can be retrieved by GetGeneralMPInfo().\r
-  @param[in] WaitEvent               Event to signal when APs have finished.\r
-                                     - IA32, X64:\r
-                                     If not NULL, when the AP finishes after timeout\r
-                                     expires, the event will be signaled.  If NULL,\r
-                                     the parameter is ignored.\r
-                                     - IPF:\r
-                                     This parameter determines whether the BSP\r
-                                     waits after the AP is dispatched. If it is\r
-                                     NULL, the BSP does not wait after the AP\r
-                                     is dispatched. If it is not NULL, the BSP\r
-                                     waits after the AP is dispatched, and the\r
-                                     time interval is determined by TimeoutInMicrosecs.\r
-                                     Type EFI_EVENT is defined in CreateEvent()\r
-                                     in the Unified Extensible Firmware Interface\r
-                                     Specification.\r
-  @param[in] TimeoutInMicrosecsond   Time to wait for APs to finish.\r
-                                     - IA32, X64:\r
-                                     If the value is zero, it means no timeout\r
-                                     limit. The BSP waits until the AP finishes.\r
-                                     If the value is not zero, the BSP waits until\r
-                                     the AP finishes or timeout expires. If timeout\r
-                                     expires, EFI_TIMEOUT is returned, and the\r
-                                     BSP will then check the AP's status periodically,\r
-                                     with time interval of 16 microseconds.\r
-                                     - IPF:\r
-                                     If WaitEvent is NULL, this parameter is ignored.\r
-                                     If WaitEvent is not NULL, the BSP waits after\r
-                                     the AP is dispatched and this value determines\r
-                                     time interval. If the value is zero, the length\r
-                                     of time interval is 10ms. If the value is\r
-                                     non-zero, the BSP waits until the AP finishes.\r
-  @param[in] ProcedureArgument       The pointer to the optional parameter of the\r
-                                     function specified by Procedure.\r
-\r
-  @retval EFI_SUCCESS             Specified AP has finished before the timeout\r
-                                  expires.\r
-  @retval EFI_TIMEOUT             The timeout expires before specified AP has\r
-                                  finished.\r
-  @retval EFI_INVALID_PARAMETER   IA32, X64: Processor with the handle specified\r
-                                  by ProcessorNumber does not exist.\r
-  @retval EFI_INVALID_PARAMETER   IA32, X64: Specified AP is busy or disabled.\r
-  @retval EFI_INVALID_PARAMETER   IA32, X64: Procedure is NULL.\r
-  @retval EFI_INVALID_PARAMETER   IA32, X64: ProcessorNumber specifies the BSP\r
-  @retval EFI_NOT_READY           IPF: Specified AP is busy\r
-  @retval EFI_NOT_AVAILABLE_YET   IPF: ProcessorNumber specifies the BSP\r
-  @retval EFI_NOT_AVAILABLE_YET   IPF: Specified AP is disabled.\r
-  @retval EFI_NOT_AVAILABLE_YET   IPF: Specified AP is unhealthy or untested.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *FRAMEWORK_EFI_MP_SERVICES_STARTUP_THIS_AP)(\r
-  IN FRAMEWORK_EFI_MP_SERVICES_PROTOCOL  *This,\r
-  IN FRAMEWORK_EFI_AP_PROCEDURE          Procedure,\r
-  IN UINTN                               ProcessorNumber,\r
-  IN EFI_EVENT                           WaitEvent            OPTIONAL,\r
-  IN UINTN                               TimeoutInMicroSecs,\r
-  IN OUT VOID                            *ProcArguments       OPTIONAL\r
-  );\r
-\r
-/**\r
-  This service switches the requested AP to be the BSP from that point onward.\r
-  The new BSP can take over the execution of the old BSP and continue seamlessly\r
-  from where the old one left off.  This call can only be performed by the\r
-  current BSP.\r
-\r
-  @param[in] This              The pointer to the FRAMEWORK_EFI_MP_SERVICES_PROTOCOL\r
-                               instance.\r
-  @param[in] ProcessorNumber   The handle number of AP. The range is from 0 to\r
-                               the total number of logical processors minus 1.\r
-                               The total number of logical processors can be\r
-                               retrieved by GetGeneralMPInfo().\r
-  @param[in] EnableOldBSP      If TRUE, then the old BSP will be listed as an\r
-                               enabled AP. Otherwise, it will be disabled.\r
-\r
-  @retval EFI_SUCCESS             BSP successfully switched.\r
-  @retval EFI_INVALID_PARAMETER   The processor with the handle specified by\r
-                                  ProcessorNumber does not exist.\r
-  @retval EFI_INVALID_PARAMETER   ProcessorNumber specifies the BSP.\r
-  @retval EFI_NOT_READY           IA32, X64: Specified AP is busy or disabled.\r
-  @retval EFI_INVALID_PARAMETER   IPF: Specified AP is disabled.\r
-  @retval EFI_INVALID_PARAMETER   IPF: Specified AP is unhealthy or untested.\r
-  @retval EFI_NOT_READY           IPF: Specified AP is busy.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *FRAMEWORK_EFI_MP_SERVICES_SWITCH_BSP)(\r
-  IN FRAMEWORK_EFI_MP_SERVICES_PROTOCOL  *This,\r
-  IN UINTN                               ProcessorNumber,\r
-  IN BOOLEAN                             EnableOldBSP\r
-  );\r
-\r
-/**\r
-  This service sends an IPI to a specified AP. Caller can specify vector number\r
-  and delivery mode of the interrupt.\r
-\r
-  @param[in] This              The pointer to the FRAMEWORK_EFI_MP_SERVICES_PROTOCOL\r
-                               instance.\r
-  @param[in] ProcessorNumber   The handle number of AP. The range is from 0 to\r
-                               the total number of logical processors minus 1.\r
-                               The total number of logical processors can be\r
-                               retrieved by GetGeneralMPInfo().\r
-  @param[in] VectorNumber      The vector number of the interrupt.\r
-  @param[in] DeliveryMode      The delivery mode of the interrupt.\r
-\r
-  @retval EFI_SUCCESS             IPI was successfully sent.\r
-  @retval EFI_INVALID_PARAMETER   ProcessorNumber specifies the BSP.\r
-  @retval EFI_INVALID_PARAMETER   IA32, X64: Processor with the handle specified\r
-                                  by ProcessorNumber does not exist.\r
-  @retval EFI_INVALID_PARAMETER   IA32, X64: VectorNumber is greater than 255.\r
-  @retval EFI_INVALID_PARAMETER   IA32, X64: DeliveryMode is greater than or equal\r
-                                  to DELIVERY_MODE_MAX.\r
-  @retval EFI_NOT_READY           IA32, X64: IPI is not accepted by the target\r
-                                  processor within 10 microseconds.\r
-  @retval EFI_INVALID_PARAMETER   IPF: Specified AP is disabled.\r
-  @retval EFI_INVALID_PARAMETER   IPF: Specified AP is unhealthy or untested.\r
-  @retval EFI_NOT_READY           IPF: Specified AP is busy.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_MP_SERVICES_SEND_IPI)(\r
-  IN FRAMEWORK_EFI_MP_SERVICES_PROTOCOL  *This,\r
-  IN UINTN                               ProcessorNumber,\r
-  IN UINTN                               VectorNumber,\r
-  IN UINTN                               DeliveryMode\r
-  );\r
-\r
-/**\r
-  This service lets the caller enable or disable an AP.  The caller can optionally\r
-  specify the health status of the AP by Health. It is usually used to update the\r
-  health status of the processor after some processor test.\r
-\r
-  @param[in] This              The pointer to the FRAMEWORK_EFI_MP_SERVICES_PROTOCOL\r
-                               instance.\r
-  @param[in] ProcessorNumber   The handle number of AP. The range is from 0 to\r
-                               the total number of logical processors minus 1.\r
-                               The total number of logical processors can be\r
-                               retrieved by GetGeneralMPInfo().\r
-  @param[in] NewAPState        Indicates whether the new, desired state of the\r
-                               AP is enabled or disabled. TRUE for enabling,\r
-                               FALSE otherwise.\r
-  @param[in] HealthState       If not NULL, it points to the value that specifies\r
-                               the new health status of the AP.  If it is NULL,\r
-                               this parameter is ignored.\r
-\r
-  @retval EFI_SUCCESS             AP successfully enabled or disabled.\r
-  @retval EFI_INVALID_PARAMETER   ProcessorNumber specifies the BSP.\r
-  @retval EFI_INVALID_PARAMETER   IA32, X64: Processor with the handle specified\r
-                                  by ProcessorNumber does not exist.\r
-  @retval EFI_INVALID_PARAMETER   IPF: If an unhealthy or untested AP is to be\r
-                                  enabled.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *FRAMEWORK_EFI_MP_SERVICES_ENABLEDISABLEAP)(\r
-  IN FRAMEWORK_EFI_MP_SERVICES_PROTOCOL  *This,\r
-  IN UINTN                               ProcessorNumber,\r
-  IN BOOLEAN                             NewAPState,\r
-  IN EFI_MP_HEALTH                       *HealthState  OPTIONAL\r
-  );\r
-\r
-/**\r
-  This service lets the caller processor get its handle number, with which any\r
-  processor in the system can be uniquely identified. The range is from 0 to the\r
-  total number of logical processors minus 1. The total number of logical\r
-  processors can be retrieved by GetGeneralMPInfo(). This service may be called\r
-  from the BSP and APs.\r
-\r
-  @param[in]  This              The pointer to the FRAMEWORK_EFI_MP_SERVICES_PROTOCOL\r
-                                instance.\r
-  @param[out] ProcessorNumber   A pointer to the handle number of AP. The range is\r
-                                from 0 to the total number of logical processors\r
-                                minus 1. The total number of logical processors\r
-                                can be retrieved by GetGeneralMPInfo().\r
-\r
-@retval EFI_SUCCESS   This function always returns EFI_SUCCESS.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *FRAMEWORK_EFI_MP_SERVICES_WHOAMI)(\r
-  IN  FRAMEWORK_EFI_MP_SERVICES_PROTOCOL  *This,\r
-  OUT UINTN                               *ProcessorNumber\r
-  );\r
-\r
-///\r
-/// Framework MP Services Protocol structure.\r
-///\r
-struct _FRAMEWORK_EFI_MP_SERVICES_PROTOCOL {\r
-  EFI_MP_SERVICES_GET_GENERAL_MP_INFO              GetGeneralMPInfo;\r
-  EFI_MP_SERVICES_GET_PROCESSOR_CONTEXT            GetProcessorContext;\r
-  FRAMEWORK_EFI_MP_SERVICES_STARTUP_ALL_APS        StartupAllAPs;\r
-  FRAMEWORK_EFI_MP_SERVICES_STARTUP_THIS_AP        StartupThisAP;\r
-  FRAMEWORK_EFI_MP_SERVICES_SWITCH_BSP             SwitchBSP;\r
-  EFI_MP_SERVICES_SEND_IPI                         SendIPI;\r
-  FRAMEWORK_EFI_MP_SERVICES_ENABLEDISABLEAP        EnableDisableAP;\r
-  FRAMEWORK_EFI_MP_SERVICES_WHOAMI                 WhoAmI;\r
-};\r
-\r
-extern EFI_GUID gFrameworkEfiMpServiceProtocolGuid;\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Protocol/Legacy8259.h b/IntelFrameworkPkg/Include/Protocol/Legacy8259.h
deleted file mode 100644 (file)
index 74bbb67..0000000
+++ /dev/null
@@ -1,291 +0,0 @@
-/** @file\r
-  This protocol abstracts the 8259 interrupt controller. This includes\r
-  PCI IRQ routing needed to program the PCI Interrupt Line register.\r
-\r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  This protocol is defined in Framework for EFI Compatibility Support Module spec\r
-  Version 0.97.\r
-\r
-**/\r
-\r
-#ifndef _EFI_LEGACY_8259_H_\r
-#define _EFI_LEGACY_8259_H_\r
-\r
-\r
-#define EFI_LEGACY_8259_PROTOCOL_GUID \\r
-  { \\r
-    0x38321dba, 0x4fe0, 0x4e17, {0x8a, 0xec, 0x41, 0x30, 0x55, 0xea, 0xed, 0xc1 } \\r
-  }\r
-\r
-typedef struct _EFI_LEGACY_8259_PROTOCOL EFI_LEGACY_8259_PROTOCOL;\r
-\r
-typedef enum {\r
-  Efi8259Irq0,\r
-  Efi8259Irq1,\r
-  Efi8259Irq2,\r
-  Efi8259Irq3,\r
-  Efi8259Irq4,\r
-  Efi8259Irq5,\r
-  Efi8259Irq6,\r
-  Efi8259Irq7,\r
-  Efi8259Irq8,\r
-  Efi8259Irq9,\r
-  Efi8259Irq10,\r
-  Efi8259Irq11,\r
-  Efi8259Irq12,\r
-  Efi8259Irq13,\r
-  Efi8259Irq14,\r
-  Efi8259Irq15,\r
-  Efi8259IrqMax\r
-} EFI_8259_IRQ;\r
-\r
-typedef enum {\r
-  Efi8259LegacyMode,\r
-  Efi8259ProtectedMode,\r
-  Efi8259MaxMode\r
-} EFI_8259_MODE;\r
-\r
-/**\r
-  Get the 8259 interrupt masks for Irq0 - Irq15. A different mask exists for\r
-  the legacy mode mask and the protected mode mask. The base address for the 8259\r
-  is different for legacy and protected mode, so two masks are required.\r
-\r
-  @param  This                  The protocol instance pointer.\r
-  @param  MasterBase            The base vector for the Master PIC in the 8259 controller.\r
-  @param  SlaveBase             The base vector for the Slave PIC in the 8259 controller.\r
-\r
-  @retval EFI_SUCCESS           The new bases were programmed.\r
-  @retval EFI_DEVICE_ERROR      A device error occured programming the vector bases.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_LEGACY_8259_SET_VECTOR_BASE)(\r
-  IN EFI_LEGACY_8259_PROTOCOL           *This,\r
-  IN  UINT8                             MasterBase,\r
-  IN  UINT8                             SlaveBase\r
-  );\r
-\r
-/**\r
-  Get the 8259 interrupt masks for Irq0 - Irq15. A different mask exists for\r
-  the legacy mode mask and the protected mode mask. The base address for the 8259\r
-  is different for legacy and protected mode, so two masks are required.\r
-\r
-  @param  This                  The protocol instance pointer.\r
-  @param  LegacyMask            Bit 0 is Irq0 - Bit 15 is Irq15.\r
-  @param  LegacyEdgeLevel       Bit 0 is Irq0 - Bit 15 is Irq15.\r
-  @param  ProtectedMask         Bit 0 is Irq0 - Bit 15 is Irq15.\r
-  @param  ProtectedEdgeLevel    Bit 0 is Irq0 - Bit 15 is Irq15.\r
-\r
-  @retval EFI_SUCCESS           8259 status returned.\r
-  @retval EFI_DEVICE_ERROR      Error reading 8259.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_LEGACY_8259_GET_MASK)(\r
-  IN EFI_LEGACY_8259_PROTOCOL           *This,\r
-  OUT UINT16                            *LegacyMask, OPTIONAL\r
-  OUT UINT16                            *LegacyEdgeLevel, OPTIONAL\r
-  OUT UINT16                            *ProtectedMask, OPTIONAL\r
-  OUT UINT16                            *ProtectedEdgeLevel OPTIONAL\r
-  );\r
-\r
-/**\r
-  Set the 8259 interrupt masks for Irq0 - Irq15. A different mask exists for\r
-  the legacy mode mask and the protected mode mask. The base address for the 8259\r
-  is different for legacy and protected mode, so two masks are required.\r
-  Also set the edge/level masks.\r
-\r
-  @param  This                  The protocol instance pointer.\r
-  @param  LegacyMask            Bit 0 is Irq0 - Bit 15 is Irq15.\r
-  @param  LegacyEdgeLevel       Bit 0 is Irq0 - Bit 15 is Irq15.\r
-  @param  ProtectedMask         Bit 0 is Irq0 - Bit 15 is Irq15.\r
-  @param  ProtectedEdgeLevel    Bit 0 is Irq0 - Bit 15 is Irq15.\r
-\r
-  @retval EFI_SUCCESS           8259 status returned.\r
-  @retval EFI_DEVICE_ERROR      Error writing 8259.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_LEGACY_8259_SET_MASK)(\r
-  IN EFI_LEGACY_8259_PROTOCOL           *This,\r
-  IN  UINT16                            *LegacyMask, OPTIONAL\r
-  IN  UINT16                            *LegacyEdgeLevel, OPTIONAL\r
-  IN  UINT16                            *ProtectedMask, OPTIONAL\r
-  IN  UINT16                            *ProtectedEdgeLevel OPTIONAL\r
-  );\r
-\r
-/**\r
-  Set the 8259 mode of operation. The base address for the 8259 is different for\r
-  legacy and protected mode. The legacy mode requires the master 8259 to have a\r
-  master base of 0x08 and the slave base of 0x70. The protected mode base locations\r
-  are not defined. Interrupts must be masked by the caller before this function\r
-  is called. The interrupt mask from the current mode is saved. The interrupt\r
-  mask for the new mode is Mask, or if Mask does not exist the previously saved\r
-  mask is used.\r
-\r
-  @param  This                  The protocol instance pointer.\r
-  @param  Mode                  The mode of operation. i.e. the real mode or protected mode.\r
-  @param  Mask                  Optional interupt mask for the new mode.\r
-  @param  EdgeLevel             Optional trigger mask for the new mode.\r
-\r
-  @retval EFI_SUCCESS           8259 programmed.\r
-  @retval EFI_DEVICE_ERROR      Error writing to 8259.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_LEGACY_8259_SET_MODE)(\r
-  IN EFI_LEGACY_8259_PROTOCOL         *This,\r
-  IN  EFI_8259_MODE                   Mode,\r
-  IN  UINT16                          *Mask, OPTIONAL\r
-  IN  UINT16                          *EdgeLevel OPTIONAL\r
-  );\r
-\r
-/**\r
-  Convert from IRQ to processor interrupt vector number.\r
-\r
-  @param  This                  The protocol instance pointer.\r
-  @param  Irq                   8259 IRQ0 - IRQ15.\r
-  @param  Vector                The processor vector number that matches an Irq.\r
-\r
-  @retval EFI_SUCCESS           The Vector matching Irq is returned.\r
-  @retval EFI_INVALID_PARAMETER The Irq not valid.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_LEGACY_8259_GET_VECTOR)(\r
-  IN EFI_LEGACY_8259_PROTOCOL           *This,\r
-  IN  EFI_8259_IRQ                      Irq,\r
-  OUT UINT8                             *Vector\r
-  );\r
-\r
-/**\r
-  Enable Irq by unmasking interrupt in 8259\r
-\r
-  @param  This                  The protocol instance pointer.\r
-  @param  Irq                   8259 IRQ0 - IRQ15.\r
-  @param  LevelTriggered        TRUE if level triggered. FALSE if edge triggered.\r
-\r
-  @retval EFI_SUCCESS           The Irq was enabled on 8259.\r
-  @retval EFI_INVALID_PARAMETER The Irq is not valid.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_LEGACY_8259_ENABLE_IRQ)(\r
-  IN EFI_LEGACY_8259_PROTOCOL           *This,\r
-  IN  EFI_8259_IRQ                      Irq,\r
-  IN  BOOLEAN                           LevelTriggered\r
-  );\r
-\r
-/**\r
-  Disable Irq by masking interrupt in 8259\r
-\r
-  @param  This                  The protocol instance pointer.\r
-  @param  Irq                   8259 IRQ0 - IRQ15.\r
-\r
-  @retval EFI_SUCCESS           The Irq was disabled on 8259.\r
-  @retval EFI_INVALID_PARAMETER The Irq is not valid.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_LEGACY_8259_DISABLE_IRQ)(\r
-  IN EFI_LEGACY_8259_PROTOCOL           *This,\r
-  IN  EFI_8259_IRQ                      Irq\r
-  );\r
-\r
-/**\r
-  PciHandle represents a PCI config space of a PCI function. Vector\r
-  represents Interrupt Pin (from PCI config space) and it is the data\r
-  that is programmed into the Interrupt Line (from the PCI config space)\r
-  register.\r
-\r
-  @param  This                  The protocol instance pointer.\r
-  @param  PciHandle             The PCI function to return the vector for.\r
-  @param  Vector                The vector for the function it matches.\r
-\r
-  @retval EFI_SUCCESS           A valid Vector was returned.\r
-  @retval EFI_INVALID_PARAMETER PciHandle not valid.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_LEGACY_8259_GET_INTERRUPT_LINE)(\r
-  IN EFI_LEGACY_8259_PROTOCOL           *This,\r
-  IN  EFI_HANDLE                        PciHandle,\r
-  OUT UINT8                             *Vector\r
-  );\r
-\r
-/**\r
-  Send an EOI to 8259\r
-\r
-  @param  This                  The protocol instance pointer.\r
-  @param  Irq                   8259 IRQ0 - IRQ15.\r
-\r
-  @retval EFI_SUCCESS           EOI was successfully sent to 8259.\r
-  @retval EFI_INVALID_PARAMETER The Irq isnot valid.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_LEGACY_8259_END_OF_INTERRUPT)(\r
-  IN EFI_LEGACY_8259_PROTOCOL           *This,\r
-  IN  EFI_8259_IRQ                      Irq\r
-  );\r
-\r
-/**\r
-  @par Protocol Description:\r
-  Abstracts the 8259 and APIC hardware control between EFI usage and\r
-  Compatibility16 usage.\r
-\r
-  @param SetVectorBase\r
-  Sets the vector bases for master and slave PICs.\r
-\r
-  @param GetMask\r
-  Gets IRQ and edge/level masks for 16-bit real mode and 32-bit protected mode.\r
-\r
-  @param SetMask\r
-  Sets the IRQ and edge\level masks for 16-bit real mode and 32-bit protected mode.\r
-\r
-  @param SetMode\r
-  Sets PIC mode to 16-bit real mode or 32-bit protected mode.\r
-\r
-  @param GetVector\r
-  Gets the base vector assigned to an IRQ.\r
-\r
-  @param EnableIrq\r
-  Enables an IRQ.\r
-\r
-  @param DisableIrq\r
-  Disables an IRQ.\r
-\r
-  @param GetInterruptLine\r
-  Gets an IRQ that is assigned to a PCI device.\r
-\r
-  @param EndOfInterrupt\r
-  Issues the end of interrupt command.\r
-\r
-**/\r
-struct _EFI_LEGACY_8259_PROTOCOL {\r
-  EFI_LEGACY_8259_SET_VECTOR_BASE     SetVectorBase;\r
-  EFI_LEGACY_8259_GET_MASK            GetMask;\r
-  EFI_LEGACY_8259_SET_MASK            SetMask;\r
-  EFI_LEGACY_8259_SET_MODE            SetMode;\r
-  EFI_LEGACY_8259_GET_VECTOR          GetVector;\r
-  EFI_LEGACY_8259_ENABLE_IRQ          EnableIrq;\r
-  EFI_LEGACY_8259_DISABLE_IRQ         DisableIrq;\r
-  EFI_LEGACY_8259_GET_INTERRUPT_LINE  GetInterruptLine;\r
-  EFI_LEGACY_8259_END_OF_INTERRUPT    EndOfInterrupt;\r
-};\r
-\r
-extern EFI_GUID gEfiLegacy8259ProtocolGuid;\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Protocol/LegacyBios.h b/IntelFrameworkPkg/Include/Protocol/LegacyBios.h
deleted file mode 100644 (file)
index 36761da..0000000
+++ /dev/null
@@ -1,1553 +0,0 @@
-/** @file\r
-  The EFI Legacy BIOS Protocol is used to abstract legacy Option ROM usage\r
-  under EFI and Legacy OS boot.  This file also includes all the related\r
-  COMPATIBILIY16 structures and defintions.\r
-\r
-  Note: The names for EFI_IA32_REGISTER_SET elements were picked to follow\r
-  well known naming conventions.\r
-\r
-  Thunk is the code that switches from 32-bit protected environment into the 16-bit real-mode\r
-  environment. Reverse thunk is the code that does the opposite.\r
-\r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  This protocol is defined in Framework for EFI Compatibility Support Module spec\r
-  Version 0.98.\r
-\r
-**/\r
-\r
-#ifndef _EFI_LEGACY_BIOS_H_\r
-#define _EFI_LEGACY_BIOS_H_\r
-\r
-///\r
-///\r
-///\r
-#pragma pack(1)\r
-\r
-typedef UINT8                       SERIAL_MODE;\r
-typedef UINT8                       PARALLEL_MODE;\r
-\r
-#define EFI_COMPATIBILITY16_TABLE_SIGNATURE SIGNATURE_32 ('I', 'F', 'E', '$')\r
-\r
-///\r
-/// There is a table located within the traditional BIOS in either the 0xF000:xxxx or 0xE000:xxxx\r
-/// physical address range. It is located on a 16-byte boundary and provides the physical address of the\r
-/// entry point for the Compatibility16 functions. These functions provide the platform-specific\r
-/// information that is required by the generic EfiCompatibility code. The functions are invoked via\r
-/// thunking by using EFI_LEGACY_BIOS_PROTOCOL.FarCall86() with the 32-bit physical\r
-/// entry point.\r
-///\r
-typedef struct {\r
-  ///\r
-  /// The string "$EFI" denotes the start of the EfiCompatibility table. Byte 0 is "I," byte\r
-  /// 1 is "F," byte 2 is "E," and byte 3 is "$" and is normally accessed as a DWORD or UINT32.\r
-  ///\r
-  UINT32                            Signature;\r
-\r
-  ///\r
-  /// The value required such that byte checksum of TableLength equals zero.\r
-  ///\r
-  UINT8                             TableChecksum;\r
-\r
-  ///\r
-  /// The length of this table.\r
-  ///\r
-  UINT8                             TableLength;\r
-\r
-  ///\r
-  /// The major EFI revision for which this table was generated.\r
-  ///\r
-  UINT8                             EfiMajorRevision;\r
-\r
-  ///\r
-  /// The minor EFI revision for which this table was generated.\r
-  ///\r
-  UINT8                             EfiMinorRevision;\r
-\r
-  ///\r
-  /// The major revision of this table.\r
-  ///\r
-  UINT8                             TableMajorRevision;\r
-\r
-  ///\r
-  /// The minor revision of this table.\r
-  ///\r
-  UINT8                             TableMinorRevision;\r
-\r
-  ///\r
-  /// Reserved for future usage.\r
-  ///\r
-  UINT16                            Reserved;\r
-\r
-  ///\r
-  /// The segment of the entry point within the traditional BIOS for Compatibility16 functions.\r
-  ///\r
-  UINT16                            Compatibility16CallSegment;\r
-\r
-  ///\r
-  /// The offset of the entry point within the traditional BIOS for Compatibility16 functions.\r
-  ///\r
-  UINT16                            Compatibility16CallOffset;\r
-\r
-  ///\r
-  /// The segment of the entry point within the traditional BIOS for EfiCompatibility\r
-  /// to invoke the PnP installation check.\r
-  ///\r
-  UINT16                            PnPInstallationCheckSegment;\r
-\r
-  ///\r
-  /// The Offset of the entry point within the traditional BIOS for EfiCompatibility\r
-  /// to invoke the PnP installation check.\r
-  ///\r
-  UINT16                            PnPInstallationCheckOffset;\r
-\r
-  ///\r
-  /// EFI system resources table. Type EFI_SYSTEM_TABLE is defined in the IntelPlatform\r
-  ///Innovation Framework for EFI Driver Execution Environment Core Interface Specification (DXE CIS).\r
-  ///\r
-  UINT32                            EfiSystemTable;\r
-\r
-  ///\r
-  /// The address of an OEM-provided identifier string. The string is null terminated.\r
-  ///\r
-  UINT32                            OemIdStringPointer;\r
-\r
-  ///\r
-  /// The 32-bit physical address where ACPI RSD PTR is stored within the traditional\r
-  /// BIOS. The remained of the ACPI tables are located at their EFI addresses. The size\r
-  /// reserved is the maximum for ACPI 2.0. The EfiCompatibility will fill in the ACPI\r
-  /// RSD PTR with either the ACPI 1.0b or 2.0 values.\r
-  ///\r
-  UINT32                            AcpiRsdPtrPointer;\r
-\r
-  ///\r
-  /// The OEM revision number. Usage is undefined but provided for OEM module usage.\r
-  ///\r
-  UINT16                            OemRevision;\r
-\r
-  ///\r
-  /// The 32-bit physical address where INT15 E820 data is stored within the traditional\r
-  /// BIOS. The EfiCompatibility code will fill in the E820Pointer value and copy the\r
-  /// data to the indicated area.\r
-  ///\r
-  UINT32                            E820Pointer;\r
-\r
-  ///\r
-  /// The length of the E820 data and is filled in by the EfiCompatibility code.\r
-  ///\r
-  UINT32                            E820Length;\r
-\r
-  ///\r
-  /// The 32-bit physical address where the $PIR table is stored in the traditional BIOS.\r
-  /// The EfiCompatibility code will fill in the IrqRoutingTablePointer value and\r
-  /// copy the data to the indicated area.\r
-  ///\r
-  UINT32                            IrqRoutingTablePointer;\r
-\r
-  ///\r
-  /// The length of the $PIR table and is filled in by the EfiCompatibility code.\r
-  ///\r
-  UINT32                            IrqRoutingTableLength;\r
-\r
-  ///\r
-  /// The 32-bit physical address where the MP table is stored in the traditional BIOS.\r
-  /// The EfiCompatibility code will fill in the MpTablePtr value and copy the data\r
-  /// to the indicated area.\r
-  ///\r
-  UINT32                            MpTablePtr;\r
-\r
-  ///\r
-  /// The length of the MP table and is filled in by the EfiCompatibility code.\r
-  ///\r
-  UINT32                            MpTableLength;\r
-\r
-  ///\r
-  /// The segment of the OEM-specific INT table/code.\r
-  ///\r
-  UINT16                            OemIntSegment;\r
-\r
-  ///\r
-  /// The offset of the OEM-specific INT table/code.\r
-  ///\r
-  UINT16                            OemIntOffset;\r
-\r
-  ///\r
-  /// The segment of the OEM-specific 32-bit table/code.\r
-  ///\r
-  UINT16                            Oem32Segment;\r
-\r
-  ///\r
-  /// The offset of the OEM-specific 32-bit table/code.\r
-  ///\r
-  UINT16                            Oem32Offset;\r
-\r
-  ///\r
-  /// The segment of the OEM-specific 16-bit table/code.\r
-  ///\r
-  UINT16                            Oem16Segment;\r
-\r
-  ///\r
-  /// The offset of the OEM-specific 16-bit table/code.\r
-  ///\r
-  UINT16                            Oem16Offset;\r
-\r
-  ///\r
-  /// The segment of the TPM binary passed to 16-bit CSM.\r
-  ///\r
-  UINT16                            TpmSegment;\r
-\r
-  ///\r
-  /// The offset of the TPM binary passed to 16-bit CSM.\r
-  ///\r
-  UINT16                            TpmOffset;\r
-\r
-  ///\r
-  /// A pointer to a string identifying the independent BIOS vendor.\r
-  ///\r
-  UINT32                            IbvPointer;\r
-\r
-  ///\r
-  /// This field is NULL for all systems not supporting PCI Express. This field is the base\r
-  /// value of the start of the PCI Express memory-mapped configuration registers and\r
-  /// must be filled in prior to EfiCompatibility code issuing the Compatibility16 function\r
-  /// Compatibility16InitializeYourself().\r
-  /// Compatibility16InitializeYourself() is defined in Compatability16\r
-  /// Functions.\r
-  ///\r
-  UINT32                            PciExpressBase;\r
-\r
-  ///\r
-  /// Maximum PCI bus number assigned.\r
-  ///\r
-  UINT8                             LastPciBus;\r
-\r
-  ///\r
-  /// Start Address of Upper Memory Area (UMA) to be set as Read/Write. If\r
-  /// UmaAddress is a valid address in the shadow RAM, it also indicates that the region\r
-  /// from 0xC0000 to (UmaAddress - 1) can be used for Option ROM.\r
-  ///\r
-  UINT32                            UmaAddress;\r
-\r
-  ///\r
-  /// Upper Memory Area size in bytes to be set as Read/Write. If zero, no UMA region\r
-  /// will be set as Read/Write (i.e. all Shadow RAM is set as Read-Only).\r
-  ///\r
-  UINT32                            UmaSize;\r
-\r
-  ///\r
-  /// Start Address of high memory that can be used for permanent allocation. If zero,\r
-  /// high memory is not available for permanent allocation.\r
-  ///\r
-  UINT32                            HiPermanentMemoryAddress;\r
-\r
-  ///\r
-  /// Size of high memory that can be used for permanent allocation in bytes. If zero,\r
-  /// high memory is not available for permanent allocation.\r
-  ///\r
-  UINT32                            HiPermanentMemorySize;\r
-} EFI_COMPATIBILITY16_TABLE;\r
-\r
-///\r
-/// Functions provided by the CSM binary which communicate between the EfiCompatibility\r
-/// and Compatability16 code.\r
-///\r
-/// Inconsistent with the specification here:\r
-/// The member's name started with "Compatibility16" [defined in Intel Framework\r
-/// Compatibility Support Module Specification / 0.97 version]\r
-/// has been changed to "Legacy16" since keeping backward compatible.\r
-///\r
-typedef enum {\r
-  ///\r
-  /// Causes the Compatibility16 code to do any internal initialization required.\r
-  /// Input:\r
-  ///   AX = Compatibility16InitializeYourself\r
-  ///   ES:BX = Pointer to EFI_TO_COMPATIBILITY16_INIT_TABLE\r
-  /// Return:\r
-  ///   AX = Return Status codes\r
-  ///\r
-  Legacy16InitializeYourself    = 0x0000,\r
-\r
-  ///\r
-  /// Causes the Compatibility16 BIOS to perform any drive number translations to match the boot sequence.\r
-  /// Input:\r
-  ///   AX = Compatibility16UpdateBbs\r
-  ///   ES:BX = Pointer to EFI_TO_COMPATIBILITY16_BOOT_TABLE\r
-  /// Return:\r
-  ///   AX = Returned status codes\r
-  ///\r
-  Legacy16UpdateBbs             = 0x0001,\r
-\r
-  ///\r
-  /// Allows the Compatibility16 code to perform any final actions before booting. The Compatibility16\r
-  /// code is read/write.\r
-  /// Input:\r
-  ///   AX = Compatibility16PrepareToBoot\r
-  ///   ES:BX = Pointer to EFI_TO_COMPATIBILITY16_BOOT_TABLE structure\r
-  /// Return:\r
-  ///   AX = Returned status codes\r
-  ///\r
-  Legacy16PrepareToBoot         = 0x0002,\r
-\r
-  ///\r
-  /// Causes the Compatibility16 BIOS to boot. The Compatibility16 code is Read/Only.\r
-  /// Input:\r
-  ///   AX = Compatibility16Boot\r
-  /// Output:\r
-  ///   AX = Returned status codes\r
-  ///\r
-  Legacy16Boot                  = 0x0003,\r
-\r
-  ///\r
-  /// Allows the Compatibility16 code to get the last device from which a boot was attempted. This is\r
-  /// stored in CMOS and is the priority number of the last attempted boot device.\r
-  /// Input:\r
-  ///   AX = Compatibility16RetrieveLastBootDevice\r
-  /// Output:\r
-  ///   AX = Returned status codes\r
-  ///   BX = Priority number of the boot device.\r
-  ///\r
-  Legacy16RetrieveLastBootDevice = 0x0004,\r
-\r
-  ///\r
-  /// Allows the Compatibility16 code rehook INT13, INT18, and/or INT19 after dispatching a legacy OpROM.\r
-  /// Input:\r
-  ///   AX = Compatibility16DispatchOprom\r
-  ///   ES:BX = Pointer to EFI_DISPATCH_OPROM_TABLE\r
-  /// Output:\r
-  ///   AX = Returned status codes\r
-  ///   BX = Number of non-BBS-compliant devices found. Equals 0 if BBS compliant.\r
-  ///\r
-  Legacy16DispatchOprom         = 0x0005,\r
-\r
-  ///\r
-  /// Finds a free area in the 0xFxxxx or 0xExxxx region of the specified length and returns the address\r
-  /// of that region.\r
-  /// Input:\r
-  ///   AX = Compatibility16GetTableAddress\r
-  ///   BX = Allocation region\r
-  ///       00 = Allocate from either 0xE0000 or 0xF0000 64 KB blocks.\r
-  ///       Bit 0 = 1 Allocate from 0xF0000 64 KB block\r
-  ///       Bit 1 = 1 Allocate from 0xE0000 64 KB block\r
-  ///   CX = Requested length in bytes.\r
-  ///   DX = Required address alignment. Bit mapped. First non-zero bit from the right is the alignment.\r
-  /// Output:\r
-  ///   AX = Returned status codes\r
-  ///   DS:BX = Address of the region\r
-  ///\r
-  Legacy16GetTableAddress       = 0x0006,\r
-\r
-  ///\r
-  /// Enables the EfiCompatibility module to do any nonstandard processing of keyboard LEDs or state.\r
-  /// Input:\r
-  ///   AX = Compatibility16SetKeyboardLeds\r
-  ///   CL = LED status.\r
-  ///     Bit 0  Scroll Lock 0 = Off\r
-  ///     Bit 1  NumLock\r
-  ///     Bit 2  Caps Lock\r
-  /// Output:\r
-  ///     AX = Returned status codes\r
-  ///\r
-  Legacy16SetKeyboardLeds       = 0x0007,\r
-\r
-  ///\r
-  /// Enables the EfiCompatibility module to install an interrupt handler for PCI mass media devices that\r
-  /// do not have an OpROM associated with them. An example is SATA.\r
-  /// Input:\r
-  ///   AX = Compatibility16InstallPciHandler\r
-  ///   ES:BX = Pointer to EFI_LEGACY_INSTALL_PCI_HANDLER structure\r
-  /// Output:\r
-  ///   AX = Returned status codes\r
-  ///\r
-  Legacy16InstallPciHandler     = 0x0008\r
-} EFI_COMPATIBILITY_FUNCTIONS;\r
-\r
-\r
-///\r
-/// EFI_DISPATCH_OPROM_TABLE\r
-///\r
-typedef struct {\r
-  UINT16  PnPInstallationCheckSegment;  ///< A pointer to the PnpInstallationCheck data structure.\r
-  UINT16  PnPInstallationCheckOffset;   ///< A pointer to the PnpInstallationCheck data structure.\r
-  UINT16  OpromSegment;                 ///< The segment where the OpROM was placed. Offset is assumed to be 3.\r
-  UINT8   PciBus;                       ///< The PCI bus.\r
-  UINT8   PciDeviceFunction;            ///< The PCI device * 0x08 | PCI function.\r
-  UINT8   NumberBbsEntries;             ///< The number of valid BBS table entries upon entry and exit. The IBV code may\r
-                                        ///< increase this number, if BBS-compliant devices also hook INTs in order to force the\r
-                                        ///< OpROM BIOS Setup to be executed.\r
-  UINT32  BbsTablePointer;              ///< A pointer to the BBS table.\r
-  UINT16  RuntimeSegment;               ///< The segment where the OpROM can be relocated to. If this value is 0x0000, this\r
-                                        ///< means that the relocation of this run time code is not supported.\r
-                                        ///< Inconsistent with specification here:\r
-                                        ///< The member's name "OpromDestinationSegment" [defined in Intel Framework Compatibility Support Module Specification / 0.97 version]\r
-                                        ///< has been changed to "RuntimeSegment" since keeping backward compatible.\r
-\r
-} EFI_DISPATCH_OPROM_TABLE;\r
-\r
-///\r
-/// EFI_TO_COMPATIBILITY16_INIT_TABLE\r
-///\r
-typedef struct {\r
-  ///\r
-  /// Starting address of memory under 1 MB. The ending address is assumed to be 640 KB or 0x9FFFF.\r
-  ///\r
-  UINT32                            BiosLessThan1MB;\r
-\r
-  ///\r
-  /// The starting address of the high memory block.\r
-  ///\r
-  UINT32                            HiPmmMemory;\r
-\r
-  ///\r
-  /// The length of high memory block.\r
-  ///\r
-  UINT32                            HiPmmMemorySizeInBytes;\r
-\r
-  ///\r
-  /// The segment of the reverse thunk call code.\r
-  ///\r
-  UINT16                            ReverseThunkCallSegment;\r
-\r
-  ///\r
-  /// The offset of the reverse thunk call code.\r
-  ///\r
-  UINT16                            ReverseThunkCallOffset;\r
-\r
-  ///\r
-  /// The number of E820 entries copied to the Compatibility16 BIOS.\r
-  ///\r
-  UINT32                            NumberE820Entries;\r
-\r
-  ///\r
-  /// The amount of usable memory above 1 MB, e.g., E820 type 1 memory.\r
-  ///\r
-  UINT32                            OsMemoryAbove1Mb;\r
-\r
-  ///\r
-  /// The start of thunk code in main memory. Memory cannot be used by BIOS or PMM.\r
-  ///\r
-  UINT32                            ThunkStart;\r
-\r
-  ///\r
-  /// The size of the thunk code.\r
-  ///\r
-  UINT32                            ThunkSizeInBytes;\r
-\r
-  ///\r
-  /// Starting address of memory under 1 MB.\r
-  ///\r
-  UINT32                            LowPmmMemory;\r
-\r
-  ///\r
-  /// The length of low Memory block.\r
-  ///\r
-  UINT32                            LowPmmMemorySizeInBytes;\r
-} EFI_TO_COMPATIBILITY16_INIT_TABLE;\r
-\r
-///\r
-/// DEVICE_PRODUCER_SERIAL.\r
-///\r
-typedef struct {\r
-  UINT16                            Address;    ///< I/O address assigned to the serial port.\r
-  UINT8                             Irq;        ///< IRQ assigned to the serial port.\r
-  SERIAL_MODE                       Mode;       ///< Mode of serial port. Values are defined below.\r
-} DEVICE_PRODUCER_SERIAL;\r
-\r
-///\r
-/// DEVICE_PRODUCER_SERIAL's modes.\r
-///@{\r
-#define DEVICE_SERIAL_MODE_NORMAL               0x00\r
-#define DEVICE_SERIAL_MODE_IRDA                 0x01\r
-#define DEVICE_SERIAL_MODE_ASK_IR               0x02\r
-#define DEVICE_SERIAL_MODE_DUPLEX_HALF          0x00\r
-#define DEVICE_SERIAL_MODE_DUPLEX_FULL          0x10\r
-///@)\r
-\r
-///\r
-/// DEVICE_PRODUCER_PARALLEL.\r
-///\r
-typedef struct {\r
-  UINT16                            Address;  ///< I/O address assigned to the parallel port.\r
-  UINT8                             Irq;      ///< IRQ assigned to the parallel port.\r
-  UINT8                             Dma;      ///< DMA assigned to the parallel port.\r
-  PARALLEL_MODE                     Mode;     ///< Mode of the parallel port. Values are defined below.\r
-} DEVICE_PRODUCER_PARALLEL;\r
-\r
-///\r
-/// DEVICE_PRODUCER_PARALLEL's modes.\r
-///@{\r
-#define DEVICE_PARALLEL_MODE_MODE_OUTPUT_ONLY   0x00\r
-#define DEVICE_PARALLEL_MODE_MODE_BIDIRECTIONAL 0x01\r
-#define DEVICE_PARALLEL_MODE_MODE_EPP           0x02\r
-#define DEVICE_PARALLEL_MODE_MODE_ECP           0x03\r
-///@}\r
-\r
-///\r
-/// DEVICE_PRODUCER_FLOPPY\r
-///\r
-typedef struct {\r
-  UINT16                            Address;          ///< I/O address assigned to the floppy.\r
-  UINT8                             Irq;              ///< IRQ assigned to the floppy.\r
-  UINT8                             Dma;              ///< DMA assigned to the floppy.\r
-  UINT8                             NumberOfFloppy;   ///< Number of floppies in the system.\r
-} DEVICE_PRODUCER_FLOPPY;\r
-\r
-///\r
-/// LEGACY_DEVICE_FLAGS\r
-///\r
-typedef struct {\r
-  UINT32                            A20Kybd : 1;      ///< A20 controller by keyboard controller.\r
-  UINT32                            A20Port90 : 1;    ///< A20 controlled by port 0x92.\r
-  UINT32                            Reserved : 30;    ///< Reserved for future usage.\r
-} LEGACY_DEVICE_FLAGS;\r
-\r
-///\r
-/// DEVICE_PRODUCER_DATA_HEADER\r
-///\r
-typedef struct {\r
-  DEVICE_PRODUCER_SERIAL            Serial[4];      ///< Data for serial port x. Type DEVICE_PRODUCER_SERIAL is defined below.\r
-  DEVICE_PRODUCER_PARALLEL          Parallel[3];    ///< Data for parallel port x. Type DEVICE_PRODUCER_PARALLEL is defined below.\r
-  DEVICE_PRODUCER_FLOPPY            Floppy;         ///< Data for floppy. Type DEVICE_PRODUCER_FLOPPY is defined below.\r
-  UINT8                             MousePresent;   ///< Flag to indicate if mouse is present.\r
-  LEGACY_DEVICE_FLAGS               Flags;          ///< Miscellaneous Boolean state information passed to CSM.\r
-} DEVICE_PRODUCER_DATA_HEADER;\r
-\r
-///\r
-/// ATAPI_IDENTIFY\r
-///\r
-typedef struct {\r
-  UINT16                            Raw[256];     ///< Raw data from the IDE IdentifyDrive command.\r
-} ATAPI_IDENTIFY;\r
-\r
-///\r
-/// HDD_INFO\r
-///\r
-typedef struct {\r
-  ///\r
-  /// Status of IDE device. Values are defined below. There is one HDD_INFO structure\r
-  /// per IDE controller. The IdentifyDrive is per drive. Index 0 is master and index\r
-  /// 1 is slave.\r
-  ///\r
-  UINT16                            Status;\r
-\r
-  ///\r
-  /// PCI bus of IDE controller.\r
-  ///\r
-  UINT32                            Bus;\r
-\r
-  ///\r
-  /// PCI device of IDE controller.\r
-  ///\r
-  UINT32                            Device;\r
-\r
-  ///\r
-  /// PCI function of IDE controller.\r
-  ///\r
-  UINT32                            Function;\r
-\r
-  ///\r
-  /// Command ports base address.\r
-  ///\r
-  UINT16                            CommandBaseAddress;\r
-\r
-  ///\r
-  /// Control ports base address.\r
-  ///\r
-  UINT16                            ControlBaseAddress;\r
-\r
-  ///\r
-  /// Bus master address.\r
-  ///\r
-  UINT16                            BusMasterAddress;\r
-\r
-  UINT8                             HddIrq;\r
-\r
-  ///\r
-  /// Data that identifies the drive data; one per possible attached drive.\r
-  ///\r
-  ATAPI_IDENTIFY                    IdentifyDrive[2];\r
-} HDD_INFO;\r
-\r
-///\r
-/// HDD_INFO status bits\r
-///\r
-#define HDD_PRIMARY               0x01\r
-#define HDD_SECONDARY             0x02\r
-#define HDD_MASTER_ATAPI_CDROM    0x04\r
-#define HDD_SLAVE_ATAPI_CDROM     0x08\r
-#define HDD_MASTER_IDE            0x20\r
-#define HDD_SLAVE_IDE             0x40\r
-#define HDD_MASTER_ATAPI_ZIPDISK  0x10\r
-#define HDD_SLAVE_ATAPI_ZIPDISK   0x80\r
-\r
-///\r
-/// BBS_STATUS_FLAGS;\.\r
-///\r
-typedef struct {\r
-  UINT16                            OldPosition : 4;    ///< Prior priority.\r
-  UINT16                            Reserved1 : 4;      ///< Reserved for future use.\r
-  UINT16                            Enabled : 1;        ///< If 0, ignore this entry.\r
-  UINT16                            Failed : 1;         ///< 0 = Not known if boot failure occurred.\r
-                                                        ///< 1 = Boot attempted failed.\r
-\r
-  ///\r
-  /// State of media present.\r
-  ///   00 = No bootable media is present in the device.\r
-  ///   01 = Unknown if a bootable media present.\r
-  ///   10 = Media is present and appears bootable.\r
-  ///   11 = Reserved.\r
-  ///\r
-  UINT16                            MediaPresent : 2;\r
-  UINT16                            Reserved2 : 4;      ///< Reserved for future use.\r
-} BBS_STATUS_FLAGS;\r
-\r
-///\r
-/// BBS_TABLE, device type values & boot priority values.\r
-///\r
-typedef struct {\r
-  ///\r
-  /// The boot priority for this boot device. Values are defined below.\r
-  ///\r
-  UINT16                            BootPriority;\r
-\r
-  ///\r
-  /// The PCI bus for this boot device.\r
-  ///\r
-  UINT32                            Bus;\r
-\r
-  ///\r
-  /// The PCI device for this boot device.\r
-  ///\r
-  UINT32                            Device;\r
-\r
-  ///\r
-  /// The PCI function for the boot device.\r
-  ///\r
-  UINT32                            Function;\r
-\r
-  ///\r
-  /// The PCI class for this boot device.\r
-  ///\r
-  UINT8                             Class;\r
-\r
-  ///\r
-  /// The PCI Subclass for this boot device.\r
-  ///\r
-  UINT8                             SubClass;\r
-\r
-  ///\r
-  /// Segment:offset address of an ASCIIZ description string describing the manufacturer.\r
-  ///\r
-  UINT16                            MfgStringOffset;\r
-\r
-  ///\r
-  /// Segment:offset address of an ASCIIZ description string describing the manufacturer.\r
-  ///\r
-  UINT16                            MfgStringSegment;\r
-\r
-  ///\r
-  /// BBS device type. BBS device types are defined below.\r
-  ///\r
-  UINT16                            DeviceType;\r
-\r
-  ///\r
-  /// Status of this boot device. Type BBS_STATUS_FLAGS is defined below.\r
-  ///\r
-  BBS_STATUS_FLAGS                  StatusFlags;\r
-\r
-  ///\r
-  /// Segment:Offset address of boot loader for IPL devices or install INT13 handler for\r
-  /// BCV devices.\r
-  ///\r
-  UINT16                            BootHandlerOffset;\r
-\r
-  ///\r
-  /// Segment:Offset address of boot loader for IPL devices or install INT13 handler for\r
-  /// BCV devices.\r
-  ///\r
-  UINT16                            BootHandlerSegment;\r
-\r
-  ///\r
-  /// Segment:offset address of an ASCIIZ description string describing this device.\r
-  ///\r
-  UINT16                            DescStringOffset;\r
-\r
-  ///\r
-  /// Segment:offset address of an ASCIIZ description string describing this device.\r
-  ///\r
-  UINT16                            DescStringSegment;\r
-\r
-  ///\r
-  /// Reserved.\r
-  ///\r
-  UINT32                            InitPerReserved;\r
-\r
-  ///\r
-  /// The use of these fields is IBV dependent. They can be used to flag that an OpROM\r
-  /// has hooked the specified IRQ. The OpROM may be BBS compliant as some SCSI\r
-  /// BBS-compliant OpROMs also hook IRQ vectors in order to run their BIOS Setup\r
-  ///\r
-  UINT32                            AdditionalIrq13Handler;\r
-\r
-  ///\r
-  /// The use of these fields is IBV dependent. They can be used to flag that an OpROM\r
-  /// has hooked the specified IRQ. The OpROM may be BBS compliant as some SCSI\r
-  /// BBS-compliant OpROMs also hook IRQ vectors in order to run their BIOS Setup\r
-  ///\r
-  UINT32                            AdditionalIrq18Handler;\r
-\r
-  ///\r
-  /// The use of these fields is IBV dependent. They can be used to flag that an OpROM\r
-  /// has hooked the specified IRQ. The OpROM may be BBS compliant as some SCSI\r
-  /// BBS-compliant OpROMs also hook IRQ vectors in order to run their BIOS Setup\r
-  ///\r
-  UINT32                            AdditionalIrq19Handler;\r
-\r
-  ///\r
-  /// The use of these fields is IBV dependent. They can be used to flag that an OpROM\r
-  /// has hooked the specified IRQ. The OpROM may be BBS compliant as some SCSI\r
-  /// BBS-compliant OpROMs also hook IRQ vectors in order to run their BIOS Setup\r
-  ///\r
-  UINT32                            AdditionalIrq40Handler;\r
-  UINT8                             AssignedDriveNumber;\r
-  UINT32                            AdditionalIrq41Handler;\r
-  UINT32                            AdditionalIrq46Handler;\r
-  UINT32                            IBV1;\r
-  UINT32                            IBV2;\r
-} BBS_TABLE;\r
-\r
-///\r
-/// BBS device type values\r
-///@{\r
-#define BBS_FLOPPY              0x01\r
-#define BBS_HARDDISK            0x02\r
-#define BBS_CDROM               0x03\r
-#define BBS_PCMCIA              0x04\r
-#define BBS_USB                 0x05\r
-#define BBS_EMBED_NETWORK       0x06\r
-#define BBS_BEV_DEVICE          0x80\r
-#define BBS_UNKNOWN             0xff\r
-///@}\r
-\r
-///\r
-/// BBS boot priority values\r
-///@{\r
-#define BBS_DO_NOT_BOOT_FROM    0xFFFC\r
-#define BBS_LOWEST_PRIORITY     0xFFFD\r
-#define BBS_UNPRIORITIZED_ENTRY 0xFFFE\r
-#define BBS_IGNORE_ENTRY        0xFFFF\r
-///@}\r
-\r
-///\r
-/// SMM_ATTRIBUTES\r
-///\r
-typedef struct {\r
-  ///\r
-  /// Access mechanism used to generate the soft SMI. Defined types are below. The other\r
-  /// values are reserved for future usage.\r
-  ///\r
-  UINT16                            Type : 3;\r
-\r
-  ///\r
-  /// The size of "port" in bits. Defined values are below.\r
-  ///\r
-  UINT16                            PortGranularity : 3;\r
-\r
-  ///\r
-  /// The size of data in bits. Defined values are below.\r
-  ///\r
-  UINT16                            DataGranularity : 3;\r
-\r
-  ///\r
-  /// Reserved for future use.\r
-  ///\r
-  UINT16                            Reserved : 7;\r
-} SMM_ATTRIBUTES;\r
-\r
-///\r
-/// SMM_ATTRIBUTES type values.\r
-///@{\r
-#define STANDARD_IO       0x00\r
-#define STANDARD_MEMORY   0x01\r
-///@}\r
-\r
-///\r
-/// SMM_ATTRIBUTES port size constants.\r
-///@{\r
-#define PORT_SIZE_8       0x00\r
-#define PORT_SIZE_16      0x01\r
-#define PORT_SIZE_32      0x02\r
-#define PORT_SIZE_64      0x03\r
-///@}\r
-\r
-///\r
-/// SMM_ATTRIBUTES data size constants.\r
-///@{\r
-#define DATA_SIZE_8       0x00\r
-#define DATA_SIZE_16      0x01\r
-#define DATA_SIZE_32      0x02\r
-#define DATA_SIZE_64      0x03\r
-///@}\r
-\r
-///\r
-/// SMM_FUNCTION & relating constants.\r
-///\r
-typedef struct {\r
-  UINT16                            Function : 15;\r
-  UINT16                            Owner : 1;\r
-} SMM_FUNCTION;\r
-\r
-///\r
-/// SMM_FUNCTION Function constants.\r
-///@{\r
-#define INT15_D042        0x0000\r
-#define GET_USB_BOOT_INFO 0x0001\r
-#define DMI_PNP_50_57     0x0002\r
-///@}\r
-\r
-///\r
-/// SMM_FUNCTION Owner constants.\r
-///@{\r
-#define STANDARD_OWNER    0x0\r
-#define OEM_OWNER         0x1\r
-///@}\r
-\r
-///\r
-/// This structure assumes both port and data sizes are 1. SmmAttribute must be\r
-/// properly to reflect that assumption.\r
-///\r
-typedef struct {\r
-  ///\r
-  /// Describes the access mechanism, SmmPort, and SmmData sizes. Type\r
-  /// SMM_ATTRIBUTES is defined below.\r
-  ///\r
-  SMM_ATTRIBUTES                    SmmAttributes;\r
-\r
-  ///\r
-  /// Function Soft SMI is to perform. Type SMM_FUNCTION is defined below.\r
-  ///\r
-  SMM_FUNCTION                      SmmFunction;\r
-\r
-  ///\r
-  /// SmmPort size depends upon SmmAttributes and ranges from2 bytes to 16 bytes.\r
-  ///\r
-  UINT8                             SmmPort;\r
-\r
-  ///\r
-  /// SmmData size depends upon SmmAttributes and ranges from2 bytes to 16 bytes.\r
-  ///\r
-  UINT8                             SmmData;\r
-} SMM_ENTRY;\r
-\r
-///\r
-/// SMM_TABLE\r
-///\r
-typedef struct {\r
-  UINT16                            NumSmmEntries;    ///< Number of entries represented by SmmEntry.\r
-  SMM_ENTRY                         SmmEntry;         ///< One entry per function. Type SMM_ENTRY is defined below.\r
-} SMM_TABLE;\r
-\r
-///\r
-/// UDC_ATTRIBUTES\r
-///\r
-typedef struct {\r
-  ///\r
-  /// This bit set indicates that the ServiceAreaData is valid.\r
-  ///\r
-  UINT8                             DirectoryServiceValidity : 1;\r
-\r
-  ///\r
-  /// This bit set indicates to use the Reserve Area Boot Code Address (RACBA) only if\r
-  /// DirectoryServiceValidity is 0.\r
-  ///\r
-  UINT8                             RabcaUsedFlag : 1;\r
-\r
-  ///\r
-  /// This bit set indicates to execute hard disk diagnostics.\r
-  ///\r
-  UINT8                             ExecuteHddDiagnosticsFlag : 1;\r
-\r
-  ///\r
-  /// Reserved for future use. Set to 0.\r
-  ///\r
-  UINT8                             Reserved : 5;\r
-} UDC_ATTRIBUTES;\r
-\r
-///\r
-/// UD_TABLE\r
-///\r
-typedef struct {\r
-  ///\r
-  /// This field contains the bit-mapped attributes of the PARTIES information. Type\r
-  /// UDC_ATTRIBUTES is defined below.\r
-  ///\r
-  UDC_ATTRIBUTES                    Attributes;\r
-\r
-  ///\r
-  /// This field contains the zero-based device on which the selected\r
-  /// ServiceDataArea is present. It is 0 for master and 1 for the slave device.\r
-  ///\r
-  UINT8                             DeviceNumber;\r
-\r
-  ///\r
-  /// This field contains the zero-based index into the BbsTable for the parent device.\r
-  /// This index allows the user to reference the parent device information such as PCI\r
-  /// bus, device function.\r
-  ///\r
-  UINT8                             BbsTableEntryNumberForParentDevice;\r
-\r
-  ///\r
-  /// This field contains the zero-based index into the BbsTable for the boot entry.\r
-  ///\r
-  UINT8                             BbsTableEntryNumberForBoot;\r
-\r
-  ///\r
-  /// This field contains the zero-based index into the BbsTable for the HDD diagnostics entry.\r
-  ///\r
-  UINT8                             BbsTableEntryNumberForHddDiag;\r
-\r
-  ///\r
-  /// The raw Beer data.\r
-  ///\r
-  UINT8                             BeerData[128];\r
-\r
-  ///\r
-  /// The raw data of selected service area.\r
-  ///\r
-  UINT8                             ServiceAreaData[64];\r
-} UD_TABLE;\r
-\r
-#define EFI_TO_LEGACY_MAJOR_VERSION 0x02\r
-#define EFI_TO_LEGACY_MINOR_VERSION 0x00\r
-#define MAX_IDE_CONTROLLER          8\r
-\r
-///\r
-/// EFI_TO_COMPATIBILITY16_BOOT_TABLE\r
-///\r
-typedef struct {\r
-  UINT16                            MajorVersion;                 ///< The EfiCompatibility major version number.\r
-  UINT16                            MinorVersion;                 ///< The EfiCompatibility minor version number.\r
-  UINT32                            AcpiTable;                    ///< The location of the RSDT ACPI table. < 4G range.\r
-  UINT32                            SmbiosTable;                  ///< The location of the SMBIOS table in EFI memory. < 4G range.\r
-  UINT32                            SmbiosTableLength;\r
-  //\r
-  // Legacy SIO state\r
-  //\r
-  DEVICE_PRODUCER_DATA_HEADER       SioData;                      ///< Standard traditional device information.\r
-  UINT16                            DevicePathType;               ///< The default boot type.\r
-  UINT16                            PciIrqMask;                   ///< Mask of which IRQs have been assigned to PCI.\r
-  UINT32                            NumberE820Entries;            ///< Number of E820 entries. The number can change from the\r
-                                                                  ///< Compatibility16InitializeYourself() function.\r
-  //\r
-  // Controller & Drive Identify[2] per controller information\r
-  //\r
-  HDD_INFO                          HddInfo[MAX_IDE_CONTROLLER];  ///< Hard disk drive information, including raw Identify Drive data.\r
-  UINT32                            NumberBbsEntries;             ///< Number of entries in the BBS table\r
-  UINT32                            BbsTable;                     ///< A pointer to the BBS table. Type BBS_TABLE is defined below.\r
-  UINT32                            SmmTable;                     ///< A pointer to the SMM table. Type SMM_TABLE is defined below.\r
-  UINT32                            OsMemoryAbove1Mb;             ///< The amount of usable memory above 1 MB, i.e. E820 type 1 memory. This value can\r
-                                                                  ///< differ from the value in EFI_TO_COMPATIBILITY16_INIT_TABLE as more\r
-                                                                  ///< memory may have been discovered.\r
-  UINT32                            UnconventionalDeviceTable;    ///< Information to boot off an unconventional device like a PARTIES partition. Type\r
-                                                                  ///< UD_TABLE is defined below.\r
-} EFI_TO_COMPATIBILITY16_BOOT_TABLE;\r
-\r
-///\r
-/// EFI_LEGACY_INSTALL_PCI_HANDLER\r
-///\r
-typedef struct {\r
-  UINT8                             PciBus;             ///< The PCI bus of the device.\r
-  UINT8                             PciDeviceFun;       ///< The PCI device in bits 7:3 and function in bits 2:0.\r
-  UINT8                             PciSegment;         ///< The PCI segment of the device.\r
-  UINT8                             PciClass;           ///< The PCI class code of the device.\r
-  UINT8                             PciSubclass;        ///< The PCI subclass code of the device.\r
-  UINT8                             PciInterface;       ///< The PCI interface code of the device.\r
-  //\r
-  // Primary section\r
-  //\r
-  UINT8                             PrimaryIrq;         ///< The primary device IRQ.\r
-  UINT8                             PrimaryReserved;    ///< Reserved.\r
-  UINT16                            PrimaryControl;     ///< The primary device control I/O base.\r
-  UINT16                            PrimaryBase;        ///< The primary device I/O base.\r
-  UINT16                            PrimaryBusMaster;   ///< The primary device bus master I/O base.\r
-  //\r
-  // Secondary Section\r
-  //\r
-  UINT8                             SecondaryIrq;       ///< The secondary device IRQ.\r
-  UINT8                             SecondaryReserved;  ///< Reserved.\r
-  UINT16                            SecondaryControl;   ///< The secondary device control I/O base.\r
-  UINT16                            SecondaryBase;      ///< The secondary device I/O base.\r
-  UINT16                            SecondaryBusMaster; ///< The secondary device bus master I/O base.\r
-} EFI_LEGACY_INSTALL_PCI_HANDLER;\r
-\r
-//\r
-// Restore default pack value\r
-//\r
-#pragma pack()\r
-\r
-#define EFI_LEGACY_BIOS_PROTOCOL_GUID \\r
-  { \\r
-    0xdb9a1e3d, 0x45cb, 0x4abb, {0x85, 0x3b, 0xe5, 0x38, 0x7f, 0xdb, 0x2e, 0x2d } \\r
-  }\r
-\r
-typedef struct _EFI_LEGACY_BIOS_PROTOCOL EFI_LEGACY_BIOS_PROTOCOL;\r
-\r
-///\r
-/// Flags returned by CheckPciRom().\r
-///\r
-#define NO_ROM            0x00\r
-#define ROM_FOUND         0x01\r
-#define VALID_LEGACY_ROM  0x02\r
-#define ROM_WITH_CONFIG   0x04     ///< Not defined in the Framework CSM Specification.\r
-\r
-///\r
-/// The following macros do not appear in the Framework CSM Specification and\r
-/// are kept for backward compatibility only.  They convert 32-bit address (_Adr)\r
-/// to Segment:Offset 16-bit form.\r
-///\r
-///@{\r
-#define EFI_SEGMENT(_Adr)     (UINT16) ((UINT16) (((UINTN) (_Adr)) >> 4) & 0xf000)\r
-#define EFI_OFFSET(_Adr)      (UINT16) (((UINT16) ((UINTN) (_Adr))) & 0xffff)\r
-///@}\r
-\r
-#define CARRY_FLAG            0x01\r
-\r
-///\r
-/// EFI_EFLAGS_REG\r
-///\r
-typedef struct {\r
-  UINT32 CF:1;\r
-  UINT32 Reserved1:1;\r
-  UINT32 PF:1;\r
-  UINT32 Reserved2:1;\r
-  UINT32 AF:1;\r
-  UINT32 Reserved3:1;\r
-  UINT32 ZF:1;\r
-  UINT32 SF:1;\r
-  UINT32 TF:1;\r
-  UINT32 IF:1;\r
-  UINT32 DF:1;\r
-  UINT32 OF:1;\r
-  UINT32 IOPL:2;\r
-  UINT32 NT:1;\r
-  UINT32 Reserved4:2;\r
-  UINT32 VM:1;\r
-  UINT32 Reserved5:14;\r
-} EFI_EFLAGS_REG;\r
-\r
-///\r
-/// EFI_DWORD_REGS\r
-///\r
-typedef struct {\r
-    UINT32           EAX;\r
-    UINT32           EBX;\r
-    UINT32           ECX;\r
-    UINT32           EDX;\r
-    UINT32           ESI;\r
-    UINT32           EDI;\r
-    EFI_EFLAGS_REG   EFlags;\r
-    UINT16           ES;\r
-    UINT16           CS;\r
-    UINT16           SS;\r
-    UINT16           DS;\r
-    UINT16           FS;\r
-    UINT16           GS;\r
-    UINT32           EBP;\r
-    UINT32           ESP;\r
-} EFI_DWORD_REGS;\r
-\r
-///\r
-/// EFI_FLAGS_REG\r
-///\r
-typedef struct {\r
-  UINT16     CF:1;\r
-  UINT16     Reserved1:1;\r
-  UINT16     PF:1;\r
-  UINT16     Reserved2:1;\r
-  UINT16     AF:1;\r
-  UINT16     Reserved3:1;\r
-  UINT16     ZF:1;\r
-  UINT16     SF:1;\r
-  UINT16     TF:1;\r
-  UINT16     IF:1;\r
-  UINT16     DF:1;\r
-  UINT16     OF:1;\r
-  UINT16     IOPL:2;\r
-  UINT16     NT:1;\r
-  UINT16     Reserved4:1;\r
-} EFI_FLAGS_REG;\r
-\r
-///\r
-/// EFI_WORD_REGS\r
-///\r
-typedef struct {\r
-    UINT16           AX;\r
-    UINT16           ReservedAX;\r
-    UINT16           BX;\r
-    UINT16           ReservedBX;\r
-    UINT16           CX;\r
-    UINT16           ReservedCX;\r
-    UINT16           DX;\r
-    UINT16           ReservedDX;\r
-    UINT16           SI;\r
-    UINT16           ReservedSI;\r
-    UINT16           DI;\r
-    UINT16           ReservedDI;\r
-    EFI_FLAGS_REG    Flags;\r
-    UINT16           ReservedFlags;\r
-    UINT16           ES;\r
-    UINT16           CS;\r
-    UINT16           SS;\r
-    UINT16           DS;\r
-    UINT16           FS;\r
-    UINT16           GS;\r
-    UINT16           BP;\r
-    UINT16           ReservedBP;\r
-    UINT16           SP;\r
-    UINT16           ReservedSP;\r
-} EFI_WORD_REGS;\r
-\r
-///\r
-/// EFI_BYTE_REGS\r
-///\r
-typedef struct {\r
-    UINT8   AL, AH;\r
-    UINT16  ReservedAX;\r
-    UINT8   BL, BH;\r
-    UINT16  ReservedBX;\r
-    UINT8   CL, CH;\r
-    UINT16  ReservedCX;\r
-    UINT8   DL, DH;\r
-    UINT16  ReservedDX;\r
-} EFI_BYTE_REGS;\r
-\r
-///\r
-/// EFI_IA32_REGISTER_SET\r
-///\r
-typedef union {\r
-  EFI_DWORD_REGS  E;\r
-  EFI_WORD_REGS   X;\r
-  EFI_BYTE_REGS   H;\r
-} EFI_IA32_REGISTER_SET;\r
-\r
-/**\r
-  Thunk to 16-bit real mode and execute a software interrupt with a vector\r
-  of BiosInt. Regs will contain the 16-bit register context on entry and\r
-  exit.\r
-\r
-  @param[in]     This      The protocol instance pointer.\r
-  @param[in]     BiosInt   The processor interrupt vector to invoke.\r
-  @param[in,out] Reg       Register contexted passed into (and returned) from thunk to\r
-                           16-bit mode.\r
-\r
-  @retval TRUE                Thunk completed with no BIOS errors in the target code. See Regs for status.\r
-  @retval FALSE                  There was a BIOS error in the target code.\r
-**/\r
-typedef\r
-BOOLEAN\r
-(EFIAPI *EFI_LEGACY_BIOS_INT86)(\r
-  IN     EFI_LEGACY_BIOS_PROTOCOL  *This,\r
-  IN     UINT8                     BiosInt,\r
-  IN OUT EFI_IA32_REGISTER_SET     *Regs\r
-  );\r
-\r
-/**\r
-  Thunk to 16-bit real mode and call Segment:Offset. Regs will contain the\r
-  16-bit register context on entry and exit. Arguments can be passed on\r
-  the Stack argument\r
-\r
-  @param[in] This        The protocol instance pointer.\r
-  @param[in] Segment     The segemnt of 16-bit mode call.\r
-  @param[in] Offset      The offset of 16-bit mdoe call.\r
-  @param[in] Reg         Register contexted passed into (and returned) from thunk to\r
-                         16-bit mode.\r
-  @param[in] Stack       The caller allocated stack used to pass arguments.\r
-  @param[in] StackSize   The size of Stack in bytes.\r
-\r
-  @retval FALSE                 Thunk completed with no BIOS errors in the target code.                                See Regs for status.  @retval TRUE                  There was a BIOS error in the target code.\r
-**/\r
-typedef\r
-BOOLEAN\r
-(EFIAPI *EFI_LEGACY_BIOS_FARCALL86)(\r
-  IN EFI_LEGACY_BIOS_PROTOCOL  *This,\r
-  IN UINT16                    Segment,\r
-  IN UINT16                    Offset,\r
-  IN EFI_IA32_REGISTER_SET     *Regs,\r
-  IN VOID                      *Stack,\r
-  IN UINTN                     StackSize\r
-  );\r
-\r
-/**\r
-  Test to see if a legacy PCI ROM exists for this device. Optionally return\r
-  the Legacy ROM instance for this PCI device.\r
-\r
-  @param[in]  This        The protocol instance pointer.\r
-  @param[in]  PciHandle   The PCI PC-AT OPROM from this devices ROM BAR will be loaded\r
-  @param[out] RomImage    Return the legacy PCI ROM for this device.\r
-  @param[out] RomSize     The size of ROM Image.\r
-  @param[out] Flags       Indicates if ROM found and if PC-AT. Multiple bits can be set as follows:\r
-                            - 00 = No ROM.\r
-                            - 01 = ROM Found.\r
-                            - 02 = ROM is a valid legacy ROM.\r
-\r
-  @retval EFI_SUCCESS       The Legacy Option ROM available for this device\r
-  @retval EFI_UNSUPPORTED   The Legacy Option ROM is not supported.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_LEGACY_BIOS_CHECK_ROM)(\r
-  IN  EFI_LEGACY_BIOS_PROTOCOL  *This,\r
-  IN  EFI_HANDLE                PciHandle,\r
-  OUT VOID                      **RomImage, OPTIONAL\r
-  OUT UINTN                     *RomSize, OPTIONAL\r
-  OUT UINTN                     *Flags\r
-  );\r
-\r
-/**\r
-  Load a legacy PC-AT OPROM on the PciHandle device. Return information\r
-  about how many disks were added by the OPROM and the shadow address and\r
-  size. DiskStart & DiskEnd are INT 13h drive letters. Thus 0x80 is C:\r
-\r
-  @param[in]  This               The protocol instance pointer.\r
-  @param[in]  PciHandle          The PCI PC-AT OPROM from this devices ROM BAR will be loaded.\r
-                                 This value is NULL if RomImage is non-NULL. This is the normal\r
-                                 case.\r
-  @param[in]  RomImage           A PCI PC-AT ROM image. This argument is non-NULL if there is\r
-                                 no hardware associated with the ROM and thus no PciHandle,\r
-                                 otherwise is must be NULL.\r
-                                 Example is PXE base code.\r
-  @param[out] Flags              The type of ROM discovered. Multiple bits can be set, as follows:\r
-                                   - 00 = No ROM.\r
-                                   - 01 = ROM found.\r
-                                   - 02 = ROM is a valid legacy ROM.\r
-  @param[out] DiskStart          The disk number of first device hooked by the ROM. If DiskStart\r
-                                 is the same as DiskEnd no disked were hooked.\r
-  @param[out] DiskEnd            disk number of the last device hooked by the ROM.\r
-  @param[out] RomShadowAddress   Shadow address of PC-AT ROM.\r
-  @param[out] RomShadowSize      Size of RomShadowAddress in bytes.\r
-\r
-  @retval EFI_SUCCESS             Thunk completed, see Regs for status.\r
-  @retval EFI_INVALID_PARAMETER   PciHandle not found\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_LEGACY_BIOS_INSTALL_ROM)(\r
-  IN  EFI_LEGACY_BIOS_PROTOCOL  *This,\r
-  IN  EFI_HANDLE                PciHandle,\r
-  IN  VOID                      **RomImage,\r
-  OUT UINTN                     *Flags,\r
-  OUT UINT8                     *DiskStart, OPTIONAL\r
-  OUT UINT8                     *DiskEnd, OPTIONAL\r
-  OUT VOID                      **RomShadowAddress, OPTIONAL\r
-  OUT UINT32                    *ShadowedRomSize OPTIONAL\r
-  );\r
-\r
-/**\r
-  This function attempts to traditionally boot the specified BootOption. If the EFI context has\r
-  been compromised, this function will not return. This procedure is not used for loading an EFI-aware\r
-  OS off a traditional device. The following actions occur:\r
-  - Get EFI SMBIOS data structures, convert them to a traditional format, and copy to\r
-    Compatibility16.\r
-  - Get a pointer to ACPI data structures and copy the Compatibility16 RSD PTR to F0000 block.\r
-  - Find the traditional SMI handler from a firmware volume and register the traditional SMI\r
-    handler with the EFI SMI handler.\r
-  - Build onboard IDE information and pass this information to the Compatibility16 code.\r
-  - Make sure all PCI Interrupt Line registers are programmed to match 8259.\r
-  - Reconfigure SIO devices from EFI mode (polled) into traditional mode (interrupt driven).\r
-  - Shadow all PCI ROMs.\r
-  - Set up BDA and EBDA standard areas before the legacy boot.\r
-  - Construct the Compatibility16 boot memory map and pass it to the Compatibility16 code.\r
-  - Invoke the Compatibility16 table function Compatibility16PrepareToBoot(). This\r
-    invocation causes a thunk into the Compatibility16 code, which sets all appropriate internal\r
-    data structures. The boot device list is a parameter.\r
-  - Invoke the Compatibility16 Table function Compatibility16Boot(). This invocation\r
-    causes a thunk into the Compatibility16 code, which does an INT19.\r
-  - If the Compatibility16Boot() function returns, then the boot failed in a graceful\r
-    manner--meaning that the EFI code is still valid. An ungraceful boot failure causes a reset because the state\r
-    of EFI code is unknown.\r
-\r
-  @param[in] This             The protocol instance pointer.\r
-  @param[in] BootOption       The EFI Device Path from BootXXXX variable.\r
-  @param[in] LoadOptionSize   The size of LoadOption in size.\r
-  @param[in] LoadOption       LThe oadOption from BootXXXX variable.\r
-\r
-  @retval EFI_DEVICE_ERROR      Failed to boot from any boot device and memory is uncorrupted.                                Note: This function normally does not returns. It will either boot the                                OS or reset the system if memory has been "corrupted" by loading                                a boot sector and passing control to it.\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_LEGACY_BIOS_BOOT)(\r
-  IN EFI_LEGACY_BIOS_PROTOCOL  *This,\r
-  IN BBS_BBS_DEVICE_PATH       *BootOption,\r
-  IN UINT32                    LoadOptionsSize,\r
-  IN VOID                      *LoadOptions\r
-  );\r
-\r
-/**\r
-  This function takes the Leds input parameter and sets/resets the BDA accordingly.\r
-  Leds is also passed to Compatibility16 code, in case any special processing is required.\r
-  This function is normally called from EFI Setup drivers that handle user-selectable\r
-  keyboard options such as boot with NUM LOCK on/off. This function does not\r
-  touch the keyboard or keyboard LEDs but only the BDA.\r
-\r
-  @param[in] This   The protocol instance pointer.\r
-  @param[in] Leds   The status of current Scroll, Num & Cap lock LEDS:\r
-                      - Bit 0 is Scroll Lock 0 = Not locked.\r
-                      - Bit 1 is Num Lock.\r
-                      - Bit 2 is Caps Lock.\r
-\r
-  @retval EFI_SUCCESS   The BDA was updated successfully.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_LEGACY_BIOS_UPDATE_KEYBOARD_LED_STATUS)(\r
-  IN EFI_LEGACY_BIOS_PROTOCOL  *This,\r
-  IN UINT8                     Leds\r
-  );\r
-\r
-/**\r
-  Retrieve legacy BBS info and assign boot priority.\r
-\r
-  @param[in]     This       The protocol instance pointer.\r
-  @param[out]    HddCount   The number of HDD_INFO structures.\r
-  @param[out]    HddInfo    Onboard IDE controller information.\r
-  @param[out]    BbsCount   The number of BBS_TABLE structures.\r
-  @param[in,out] BbsTable   Points to List of BBS_TABLE.\r
-\r
-  @retval EFI_SUCCESS   Tables were returned.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_LEGACY_BIOS_GET_BBS_INFO)(\r
-  IN     EFI_LEGACY_BIOS_PROTOCOL  *This,\r
-  OUT    UINT16                    *HddCount,\r
-  OUT    HDD_INFO                  **HddInfo,\r
-  OUT    UINT16                    *BbsCount,\r
-  IN OUT BBS_TABLE                 **BbsTable\r
-  );\r
-\r
-/**\r
-  Assign drive number to legacy HDD drives prior to booting an EFI\r
-  aware OS so the OS can access drives without an EFI driver.\r
-\r
-  @param[in]  This       The protocol instance pointer.\r
-  @param[out] BbsCount   The number of BBS_TABLE structures\r
-  @param[out] BbsTable   List of BBS entries\r
-\r
-  @retval EFI_SUCCESS   Drive numbers assigned.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_LEGACY_BIOS_PREPARE_TO_BOOT_EFI)(\r
-  IN  EFI_LEGACY_BIOS_PROTOCOL  *This,\r
-  OUT UINT16                    *BbsCount,\r
-  OUT BBS_TABLE                 **BbsTable\r
-  );\r
-\r
-/**\r
-  To boot from an unconventional device like parties and/or execute\r
-  HDD diagnostics.\r
-\r
-  @param[in]  This              The protocol instance pointer.\r
-  @param[in]  Attributes        How to interpret the other input parameters.\r
-  @param[in]  BbsEntry          The 0-based index into the BbsTable for the parent\r
-                                device.\r
-  @param[in]  BeerData          A pointer to the 128 bytes of ram BEER data.\r
-  @param[in]  ServiceAreaData   A pointer to the 64 bytes of raw Service Area data. The\r
-                                caller must provide a pointer to the specific Service\r
-                                Area and not the start all Service Areas.\r
-\r
-  @retval EFI_INVALID_PARAMETER   If error. Does NOT return if no error.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_LEGACY_BIOS_BOOT_UNCONVENTIONAL_DEVICE)(\r
-  IN EFI_LEGACY_BIOS_PROTOCOL  *This,\r
-  IN UDC_ATTRIBUTES            Attributes,\r
-  IN UINTN                     BbsEntry,\r
-  IN VOID                      *BeerData,\r
-  IN VOID                      *ServiceAreaData\r
-  );\r
-\r
-/**\r
-  Shadow all legacy16 OPROMs that haven't been shadowed.\r
-  Warning: Use this with caution. This routine disconnects all EFI\r
-  drivers. If used externally, then  the caller must re-connect EFI\r
-  drivers.\r
-\r
-  @param[in]  This   The protocol instance pointer.\r
-\r
-  @retval EFI_SUCCESS   OPROMs were shadowed.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_LEGACY_BIOS_SHADOW_ALL_LEGACY_OPROMS)(\r
-  IN EFI_LEGACY_BIOS_PROTOCOL  *This\r
-  );\r
-\r
-/**\r
-  Get a region from the LegacyBios for S3 usage.\r
-\r
-  @param[in]  This                  The protocol instance pointer.\r
-  @param[in]  LegacyMemorySize      The size of required region.\r
-  @param[in]  Region                The region to use.\r
-                                    00 = Either 0xE0000 or 0xF0000 block.\r
-                                      - Bit0 = 1 0xF0000 block.\r
-                                      - Bit1 = 1 0xE0000 block.\r
-  @param[in]  Alignment             Address alignment. Bit mapped. The first non-zero\r
-                                    bit from right is alignment.\r
-  @param[out] LegacyMemoryAddress   The Region Assigned\r
-\r
-  @retval EFI_SUCCESS           The Region was assigned.\r
-  @retval EFI_ACCESS_DENIED     The function was previously invoked.\r
-  @retval Other                 The Region was not assigned.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_LEGACY_BIOS_GET_LEGACY_REGION)(\r
-  IN  EFI_LEGACY_BIOS_PROTOCOL  *This,\r
-  IN  UINTN                     LegacyMemorySize,\r
-  IN  UINTN                     Region,\r
-  IN  UINTN                     Alignment,\r
-  OUT VOID                      **LegacyMemoryAddress\r
-  );\r
-\r
-/**\r
-  Get a region from the LegacyBios for Tiano usage. Can only be invoked once.\r
-\r
-  @param[in]  This                        The protocol instance pointer.\r
-  @param[in]  LegacyMemorySize            The size of data to copy.\r
-  @param[in]  LegacyMemoryAddress         The Legacy Region destination address.\r
-                                          Note: must be in region assigned by\r
-                                          LegacyBiosGetLegacyRegion.\r
-  @param[in]  LegacyMemorySourceAddress   The source of the data to copy.\r
-\r
-  @retval EFI_SUCCESS           The Region assigned.\r
-  @retval EFI_ACCESS_DENIED     Destination was outside an assigned region.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_LEGACY_BIOS_COPY_LEGACY_REGION)(\r
-  IN EFI_LEGACY_BIOS_PROTOCOL  *This,\r
-  IN UINTN                     LegacyMemorySize,\r
-  IN VOID                      *LegacyMemoryAddress,\r
-  IN VOID                      *LegacyMemorySourceAddress\r
-  );\r
-\r
-///\r
-/// Abstracts the traditional BIOS from the rest of EFI. The LegacyBoot()\r
-/// member function allows the BDS to support booting a traditional OS.\r
-/// EFI thunks drivers that make EFI bindings for BIOS INT services use\r
-/// all the other member functions.\r
-///\r
-struct _EFI_LEGACY_BIOS_PROTOCOL {\r
-  ///\r
-  /// Performs traditional software INT. See the Int86() function description.\r
-  ///\r
-  EFI_LEGACY_BIOS_INT86                       Int86;\r
-\r
-  ///\r
-  /// Performs a far call into Compatibility16 or traditional OpROM code.\r
-  ///\r
-  EFI_LEGACY_BIOS_FARCALL86                   FarCall86;\r
-\r
-  ///\r
-  /// Checks if a traditional OpROM exists for this device.\r
-  ///\r
-  EFI_LEGACY_BIOS_CHECK_ROM                   CheckPciRom;\r
-\r
-  ///\r
-  /// Loads a traditional OpROM in traditional OpROM address space.\r
-  ///\r
-  EFI_LEGACY_BIOS_INSTALL_ROM                 InstallPciRom;\r
-\r
-  ///\r
-  /// Boots a traditional OS.\r
-  ///\r
-  EFI_LEGACY_BIOS_BOOT                        LegacyBoot;\r
-\r
-  ///\r
-  /// Updates BDA to reflect the current EFI keyboard LED status.\r
-  ///\r
-  EFI_LEGACY_BIOS_UPDATE_KEYBOARD_LED_STATUS  UpdateKeyboardLedStatus;\r
-\r
-  ///\r
-  /// Allows an external agent, such as BIOS Setup, to get the BBS data.\r
-  ///\r
-  EFI_LEGACY_BIOS_GET_BBS_INFO                GetBbsInfo;\r
-\r
-  ///\r
-  /// Causes all legacy OpROMs to be shadowed.\r
-  ///\r
-  EFI_LEGACY_BIOS_SHADOW_ALL_LEGACY_OPROMS    ShadowAllLegacyOproms;\r
-\r
-  ///\r
-  /// Performs all actions prior to boot. Used when booting an EFI-aware OS\r
-  /// rather than a legacy OS.\r
-  ///\r
-  EFI_LEGACY_BIOS_PREPARE_TO_BOOT_EFI         PrepareToBootEfi;\r
-\r
-  ///\r
-  /// Allows EFI to reserve an area in the 0xE0000 or 0xF0000 block.\r
-  ///\r
-  EFI_LEGACY_BIOS_GET_LEGACY_REGION           GetLegacyRegion;\r
-\r
-  ///\r
-  /// Allows EFI to copy data to the area specified by GetLegacyRegion.\r
-  ///\r
-  EFI_LEGACY_BIOS_COPY_LEGACY_REGION          CopyLegacyRegion;\r
-\r
-  ///\r
-  /// Allows the user to boot off an unconventional device such as a PARTIES partition.\r
-  ///\r
-  EFI_LEGACY_BIOS_BOOT_UNCONVENTIONAL_DEVICE  BootUnconventionalDevice;\r
-};\r
-\r
-//\r
-// Legacy BIOS needs to access memory in page 0 (0-4095), which is disabled if\r
-// NULL pointer detection feature is enabled. Following macro can be used to\r
-// enable/disable page 0 before/after accessing it.\r
-//\r
-#define ACCESS_PAGE0_CODE(statements)                           \\r
-  do {                                                          \\r
-    EFI_STATUS                            Status_;              \\r
-    EFI_GCD_MEMORY_SPACE_DESCRIPTOR       Desc_;                \\r
-                                                                \\r
-    Desc_.Attributes = 0;                                       \\r
-    Status_ = gDS->GetMemorySpaceDescriptor (0, &Desc_);        \\r
-    ASSERT_EFI_ERROR (Status_);                                 \\r
-    if ((Desc_.Attributes & EFI_MEMORY_RP) != 0) {              \\r
-      Status_ = gDS->SetMemorySpaceAttributes (                 \\r
-                      0,                                        \\r
-                      EFI_PAGES_TO_SIZE(1),                     \\r
-                      Desc_.Attributes & ~(UINT64)EFI_MEMORY_RP \\r
-                      );                                        \\r
-      ASSERT_EFI_ERROR (Status_);                               \\r
-    }                                                           \\r
-                                                                \\r
-    {                                                           \\r
-      statements;                                               \\r
-    }                                                           \\r
-                                                                \\r
-    if ((Desc_.Attributes & EFI_MEMORY_RP) != 0) {              \\r
-      Status_ = gDS->SetMemorySpaceAttributes (                 \\r
-                      0,                                        \\r
-                      EFI_PAGES_TO_SIZE(1),                     \\r
-                      Desc_.Attributes                          \\r
-                      );                                        \\r
-      ASSERT_EFI_ERROR (Status_);                               \\r
-    }                                                           \\r
-  } while (FALSE)\r
-\r
-extern EFI_GUID gEfiLegacyBiosProtocolGuid;\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Protocol/LegacyBiosPlatform.h b/IntelFrameworkPkg/Include/Protocol/LegacyBiosPlatform.h
deleted file mode 100644 (file)
index 0a164da..0000000
+++ /dev/null
@@ -1,755 +0,0 @@
-/** @file\r
-  The EFI Legacy BIOS Patform Protocol is used to mate a Legacy16\r
-  implementation with this EFI code. The EFI driver that produces\r
-  the Legacy BIOS protocol is generic and consumes this protocol.\r
-  A driver that matches the Legacy16 produces this protocol\r
-\r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  This protocol is defined in Framework for EFI Compatibility Support Module spec\r
-  Version 0.97.\r
-\r
-**/\r
-\r
-#ifndef _EFI_LEGACY_BIOS_PLATFORM_H_\r
-#define _EFI_LEGACY_BIOS_PLATFORM_H_\r
-\r
-///\r
-/// Legacy BIOS Platform depends on HDD_INFO and EFI_COMPATIBILITY16_TABLE that\r
-/// are defined with the Legacy BIOS Protocol\r
-///\r
-#include <Protocol/LegacyBios.h>\r
-\r
-#define EFI_LEGACY_BIOS_PLATFORM_PROTOCOL_GUID \\r
-  { \\r
-    0x783658a3, 0x4172, 0x4421, {0xa2, 0x99, 0xe0, 0x9, 0x7, 0x9c, 0xc, 0xb4 } \\r
-  }\r
-\r
-typedef struct _EFI_LEGACY_BIOS_PLATFORM_PROTOCOL EFI_LEGACY_BIOS_PLATFORM_PROTOCOL;\r
-\r
-/**\r
-  This enum specifies the Mode param values for GetPlatformInfo()\r
-**/\r
-typedef enum {\r
-  ///\r
-  /// This mode is invoked twice. The first invocation has LegacySegment and\r
-  /// LegacyOffset set to 0. The mode returns the MP table address in EFI memory, along with its size.\r
-  /// The second invocation has LegacySegment and LegacyOffset set to the location\r
-  /// in the 0xF0000 or 0xE0000 block to which the MP table is to be copied. The second\r
-  /// invocation allows any MP table address fixes to occur in the EFI memory copy of the\r
-  /// MP table. The caller, not EfiGetPlatformBinaryMpTable, copies the modified MP\r
-  /// table to the allocated region in 0xF0000 or 0xE0000 block after the second invocation.\r
-  ///\r
-  /// The function parameters associated with this mode are:\r
-  ///\r
-  ///   Table Pointer to the MP table.\r
-  ///\r
-  ///   TableSize Size in bytes of the MP table.\r
-  ///\r
-  ///   Location Location to place table. 0x00. Either 0xE0000 or 0xF0000 64 KB blocks.\r
-  ///     Bit 0 = 1 0xF0000 64 KB block.\r
-  ///     Bit 1 = 1 0xE0000 64 KB block.\r
-  ///     Multiple bits can be set.\r
-  ///\r
-  ///   Alignment Bit-mapped address alignment granularity.\r
-  ///     The first nonzero bit from the right is the address granularity.\r
-  ///\r
-  //    LegacySegment Segment in which EfiCompatibility code will place the MP table.\r
-  ///\r
-  ///   LegacyOffset Offset in which EfiCompatibility code will place the MP table.\r
-  ///\r
-  /// The return values associated with this mode are:\r
-  ///\r
-  ///   EFI_SUCCESS The MP table was returned.\r
-  ///\r
-  ///   EFI_UNSUPPORTED The MP table is not supported on this platform.\r
-  ///\r
-  EfiGetPlatformBinaryMpTable      = 0,\r
-  ///\r
-  /// This mode returns a block of data. The content and usage is IBV or OEM defined.\r
-  /// OEMs or IBVs normally use this function for nonstandard Compatibility16 runtime soft\r
-  /// INTs. It is the responsibility of this routine to coalesce multiple OEM 16 bit functions, if\r
-  /// they exist, into one coherent package that is understandable by the Compatibility16 code.\r
-  /// This function is invoked twice. The first invocation has LegacySegment and\r
-  /// LegacyOffset set to 0. The function returns the table address in EFI memory, as well as its size.\r
-  /// The second invocation has LegacySegment and LegacyOffset set to the location\r
-  /// in the 0xF0000 or 0xE0000 block to which the data (table) is to be copied. The second\r
-  /// invocation allows any data (table) address fixes to occur in the EFI memory copy of\r
-  /// the table. The caller, not GetOemIntData(), copies the modified data (table) to the\r
-  /// allocated region in 0xF0000 or 0xE0000 block after the second invocation.\r
-  ///\r
-  /// The function parameters associated with this mode are:\r
-  ///\r
-  ///   Table Pointer to OEM legacy 16 bit code or data.\r
-  ///\r
-  ///   TableSize Size of data.\r
-  ///\r
-  ///   Location Location to place table. 0x00. Either 0xE0000 or 0xF0000 64 KB blocks.\r
-  ///       Bit 0 = 1 0xF0000 64 KB block.\r
-  ///       Bit 1 = 1 0xE0000 64 KB block.\r
-  ///       Multiple bits can be set.\r
-  ///\r
-  ///   Alignment Bit mapped address alignment granularity.\r
-  ///     The first nonzero bit from the right is the address granularity.\r
-  ///\r
-  ///   LegacySegment Segment in which EfiCompatibility code will place the table or data.\r
-  ///\r
-  ///   LegacyOffset Offset in which EfiCompatibility code will place the table or data.\r
-  ///\r
-  /// The return values associated with this mode are:\r
-  ///\r
-  ///   EFI_SUCCESS The data was returned successfully.\r
-  ///\r
-  ///   EFI_UNSUPPORTED Oem INT is not supported on this platform.\r
-  ///\r
-  EfiGetPlatformBinaryOemIntData   = 1,\r
-  ///\r
-  /// This mode returns a block of data. The content and usage is IBV defined. OEMs or\r
-  /// IBVs normally use this mode for nonstandard Compatibility16 runtime 16 bit routines. It\r
-  /// is the responsibility of this routine to coalesce multiple OEM 16 bit functions, if they\r
-  /// exist, into one coherent package that is understandable by the Compatibility16 code.\r
-  ///\r
-  /// Example usage: A legacy mobile BIOS that has a pre-existing runtime\r
-  /// interface to return the battery status to calling applications.\r
-  ///\r
-  /// This mode is invoked twice. The first invocation has LegacySegment and\r
-  /// LegacyOffset set to 0. The mode returns the table address in EFI memory and its size.\r
-  /// The second invocation has LegacySegment and LegacyOffset set to the location\r
-  /// in the 0xF0000 or 0xE0000 block to which the table is to be copied. The second\r
-  /// invocation allows any table address fixes to occur in the EFI memory copy of the table.\r
-  /// The caller, not EfiGetPlatformBinaryOem16Data, copies the modified table to\r
-  /// the allocated region in 0xF0000 or 0xE0000 block after the second invocation.\r
-  ///\r
-  /// The function parameters associated with this mode are:\r
-  ///\r
-  ///   Table Pointer to OEM legacy 16 bit code or data.\r
-  ///\r
-  ///   TableSize Size of data.\r
-  ///\r
-  ///   Location Location to place the table. 0x00. Either 0xE0000 or 0xF0000 64 KB blocks.\r
-  ///      Bit 0 = 1 0xF0000 64 KB block.\r
-  ///      Bit 1 = 1 0xE0000 64 KB block.\r
-  ///      Multiple bits can be set.\r
-  ///\r
-  ///   Alignment Bit mapped address alignment granularity.\r
-  ///     The first nonzero bit from the right is the address granularity.\r
-  ///\r
-  ///   LegacySegment Segment in which EfiCompatibility code will place the table or data.\r
-  ///\r
-  ///   LegacyOffset Offset in which EfiCompatibility code will place the table or data.\r
-  ///\r
-  /// The return values associated with this mode are:\r
-  ///\r
-  ///   EFI_SUCCESS The data was returned successfully.\r
-  ///\r
-  ///   EFI_UNSUPPORTED Oem16 is not supported on this platform.\r
-  ///\r
-  EfiGetPlatformBinaryOem16Data    = 2,\r
-///\r
-/// This mode returns a block of data. The content and usage are IBV defined. OEMs or\r
-/// IBVs normally use this mode for nonstandard Compatibility16 runtime 32 bit routines. It\r
-/// is the responsibility of this routine to coalesce multiple OEM 32 bit functions, if they\r
-/// exist, into one coherent package that is understandable by the Compatibility16 code.\r
-///\r
-/// Example usage: A legacy mobile BIOS that has a pre existing runtime\r
-/// interface to return the battery status to calling applications.\r
-///\r
-/// This mode is invoked twice. The first invocation has LegacySegment and\r
-/// LegacyOffset set to 0. The mode returns the table address in EFI memory and its size.\r
-///\r
-/// The second invocation has LegacySegment and LegacyOffset set to the location\r
-/// in the 0xF0000 or 0xE0000 block to which the table is to be copied. The second\r
-/// invocation allows any table address fix ups to occur in the EFI memory copy of the table.\r
-/// The caller, not EfiGetPlatformBinaryOem32Data, copies the modified table to\r
-/// the allocated region in 0xF0000 or 0xE0000 block after the second invocation..\r
-///\r
-/// Note: There are two generic mechanisms by which this mode can be used.\r
-/// Mechanism 1: This mode returns the data and the Legacy BIOS Protocol copies\r
-/// the data into the F0000 or E0000 block in the Compatibility16 code. The\r
-/// EFI_COMPATIBILITY16_TABLE entries Oem32Segment and Oem32Offset can\r
-/// be viewed as two UINT16 entries.\r
-/// Mechanism 2: This mode directly fills in the EFI_COMPATIBILITY16_TABLE with\r
-/// a pointer to the INT15 E820 region containing the 32 bit code. It returns\r
-/// EFI_UNSUPPORTED. The EFI_COMPATIBILITY16_TABLE entries,\r
-/// Oem32Segment and Oem32Offset, can be viewed as two UINT16 entries or\r
-/// as a single UINT32 entry as determined by the IBV.\r
-///\r
-/// The function parameters associated with this mode are:\r
-///\r
-///   TableSize Size of data.\r
-///\r
-///   Location Location to place the table. 0x00 or 0xE0000 or 0xF0000 64 KB blocks.\r
-///       Bit 0 = 1 0xF0000 64 KB block.\r
-///       Bit 1 = 1 0xE0000 64 KB block.\r
-///       Multiple bits can be set.\r
-///\r
-///   Alignment Bit mapped address alignment granularity.\r
-///       The first nonzero bit from the right is the address granularity.\r
-///\r
-///   LegacySegment Segment in which EfiCompatibility code will place the table or data.\r
-///\r
-///   LegacyOffset Offset in which EfiCompatibility code will place the table or data.\r
-///\r
-/// The return values associated with this mode are:\r
-///   EFI_SUCCESS The data was returned successfully.\r
-///   EFI_UNSUPPORTED Oem32 is not supported on this platform.\r
-///\r
-EfiGetPlatformBinaryOem32Data    = 3,\r
-  ///\r
-  /// This mode returns a TPM binary image for the onboard TPM device.\r
-  ///\r
-  /// The function parameters associated with this mode are:\r
-  ///\r
-  ///   Table TPM binary image for the onboard TPM device.\r
-  ///\r
-  ///   TableSize Size of BinaryImage in bytes.\r
-  ///\r
-  ///   Location Location to place the table. 0x00. Either 0xE0000 or 0xF0000 64 KB blocks.\r
-  ///      Bit 0 = 1 0xF0000 64 KB block.\r
-  ///      Bit 1 = 1 0xE0000 64 KB block.\r
-  ///      Multiple bits can be set.\r
-  ///\r
-  ///   Alignment Bit mapped address alignment granularity.\r
-  ///     The first nonzero bit from the right is the address granularity.\r
-  ///\r
-  ///   LegacySegment Segment in which EfiCompatibility code will place the table or data.\r
-  ///\r
-  ///   LegacyOffset Offset in which EfiCompatibility code will place the table or data.\r
-  ///\r
-  /// The return values associated with this mode are:\r
-  ///\r
-  ///   EFI_SUCCESS BinaryImage is valid.\r
-  ///\r
-  ///   EFI_UNSUPPORTED Mode is not supported on this platform.\r
-  ///\r
-  ///   EFI_NOT_FOUND No BinaryImage was found.\r
-  ///\r
-  EfiGetPlatformBinaryTpmBinary    = 4,\r
-  ///\r
-  /// The mode finds the Compatibility16 Rom Image.\r
-  ///\r
-  /// The function parameters associated with this mode are:\r
-  ///\r
-  ///    System ROM image for the platform.\r
-  ///\r
-  ///    TableSize Size of Table in bytes.\r
-  ///\r
-  ///    Location Ignored.\r
-  ///\r
-  ///    Alignment Ignored.\r
-  ///\r
-  ///    LegacySegment Ignored.\r
-  ///\r
-  ///    LegacyOffset Ignored.\r
-  ///\r
-  /// The return values associated with this mode are:\r
-  ///\r
-  ///    EFI_SUCCESS ROM image found.\r
-  ///\r
-  ///    EFI_NOT_FOUND ROM not found.\r
-  ///\r
-  EfiGetPlatformBinarySystemRom    = 5,\r
-  ///\r
-  /// This mode returns the Base address of PciExpress memory mapped configuration\r
-  /// address space.\r
-  ///\r
-  /// The function parameters associated with this mode are:\r
-  ///\r
-  ///    Table System ROM image for the platform.\r
-  ///\r
-  ///    TableSize Size of Table in bytes.\r
-  ///\r
-  ///    Location Ignored.\r
-  ///\r
-  ///    Alignment Ignored.\r
-  ///\r
-  ///    LegacySegment Ignored.\r
-  ///\r
-  ///    LegacyOffset Ignored.\r
-  ///\r
-  /// The return values associated with this mode are:\r
-  ///\r
-  ///   EFI_SUCCESS Address is valid.\r
-  ///\r
-  ///   EFI_UNSUPPORTED System does not PciExpress.\r
-  ///\r
-  EfiGetPlatformPciExpressBase     = 6,\r
-  ///\r
-  EfiGetPlatformPmmSize            = 7,\r
-  ///\r
-  EfiGetPlatformEndOpromShadowAddr = 8,\r
-  ///\r
-} EFI_GET_PLATFORM_INFO_MODE;\r
-\r
-/**\r
-  This enum specifies the Mode param values for GetPlatformHandle().\r
-**/\r
-typedef enum {\r
-  ///\r
-  /// This mode returns the Compatibility16 policy for the device that should be the VGA\r
-  /// controller used during a Compatibility16 boot.\r
-  ///\r
-  /// The function parameters associated with this mode are:\r
-  ///\r
-  ///   Type 0x00.\r
-  ///\r
-  ///   HandleBuffer Buffer of all VGA handles found.\r
-  ///\r
-  ///   HandleCount Number of VGA handles found.\r
-  ///\r
-  ///   AdditionalData NULL.\r
-  ///\r
-  EfiGetPlatformVgaHandle       = 0,\r
-  ///\r
-  /// This mode returns the Compatibility16 policy for the device that should be the IDE\r
-  /// controller used during a Compatibility16 boot.\r
-  ///\r
-  /// The function parameters associated with this mode are:\r
-  ///\r
-  ///   Type 0x00.\r
-  ///\r
-  ///   HandleBuffer Buffer of all IDE handles found.\r
-  ///\r
-  ///   HandleCount Number of IDE handles found.\r
-  ///\r
-  ///   AdditionalData Pointer to HddInfo.\r
-  ///     Information about all onboard IDE controllers.\r
-  ///\r
-  EfiGetPlatformIdeHandle       = 1,\r
-  ///\r
-  /// This mode returns the Compatibility16 policy for the device that should be the ISA bus\r
-  /// controller used during a Compatibility16 boot.\r
-  ///\r
-  /// The function parameters associated with this mode are:\r
-  ///\r
-  ///   Type 0x00.\r
-  ///\r
-  ///   HandleBuffer Buffer of all ISA bus handles found.\r
-  ///\r
-  ///   HandleCount Number of ISA bus handles found.\r
-  ///\r
-  ///   AdditionalData NULL.\r
-  ///\r
-  EfiGetPlatformIsaBusHandle    = 2,\r
-  ///\r
-  /// This mode returns the Compatibility16 policy for the device that should be the USB\r
-  /// device used during a Compatibility16 boot.\r
-  ///\r
-  /// The function parameters associated with this mode are:\r
-  ///\r
-  ///   Type 0x00.\r
-  ///\r
-  ///   HandleBuffer Buffer of all USB handles found.\r
-  ///\r
-  ///   HandleCount Number of USB bus handles found.\r
-  ///\r
-  ///   AdditionalData NULL.\r
-  ///\r
-  EfiGetPlatformUsbHandle       = 3\r
-} EFI_GET_PLATFORM_HANDLE_MODE;\r
-\r
-/**\r
-  This enum specifies the Mode param values for PlatformHooks().\r
-  Note: Any OEM defined hooks start with 0x8000.\r
-**/\r
-typedef enum {\r
-  ///\r
-  /// This mode allows any preprocessing before scanning OpROMs.\r
-  ///\r
-  /// The function parameters associated with this mode are:\r
-  ///\r
-  ///     Type 0.\r
-  ///\r
-  ///     DeviceHandle Handle of device OpROM is associated with.\r
-  ///\r
-  ///     ShadowAddress Address where OpROM is shadowed.\r
-  ///\r
-  ///     Compatibility16Table NULL.\r
-  ///\r
-  ///     AdditionalData NULL.\r
-  ///\r
-  EfiPlatformHookPrepareToScanRom = 0,\r
-  ///\r
-  /// This mode shadows legacy OpROMS that may not have a physical device associated with\r
-  /// them. It returns EFI_SUCCESS if the ROM was shadowed.\r
-  ///\r
-  /// The function parameters associated with this mode are:\r
-  ///\r
-  ///     Type 0.\r
-  ///\r
-  ///     DeviceHandle 0.\r
-  ///\r
-  ///     ShadowAddress First free OpROM area, after other OpROMs have been dispatched..\r
-  ///\r
-  ///     Compatibility16Table Pointer to the Compatability16 Table.\r
-  ///\r
-  ///       AdditionalData NULL.\r
-  ///\r
-  EfiPlatformHookShadowServiceRoms= 1,\r
-  ///\r
-  /// This mode allows platform to perform any required operation after an OpROM has\r
-  /// completed its initialization.\r
-  ///\r
-  /// The function parameters associated with this mode are:\r
-  ///\r
-  ///       Type 0.\r
-  ///\r
-  ///       DeviceHandle Handle of device OpROM is associated with.\r
-  ///\r
-  ///       ShadowAddress Address where OpROM is shadowed.\r
-  ///\r
-  ///       Compatibility16Table NULL.\r
-  ///\r
-  ///       AdditionalData NULL.\r
-  ///\r
-  EfiPlatformHookAfterRomInit     = 2\r
-} EFI_GET_PLATFORM_HOOK_MODE;\r
-\r
-///\r
-/// This IRQ has not been assigned to PCI.\r
-///\r
-#define PCI_UNUSED        0x00\r
-///\r
-/// This IRQ has been assigned to PCI.\r
-///\r
-#define PCI_USED          0xFF\r
-///\r
-/// This IRQ has been used by an SIO legacy device and cannot be used by PCI.\r
-///\r
-#define LEGACY_USED       0xFE\r
-\r
-#pragma pack(1)\r
-\r
-typedef struct {\r
-  ///\r
-  /// IRQ for this entry.\r
-  ///\r
-  UINT8 Irq;\r
-  ///\r
-  /// Status of this IRQ.\r
-  ///\r
-  /// PCI_UNUSED 0x00. This IRQ has not been assigned to PCI.\r
-  ///\r
-  /// PCI_USED 0xFF. This IRQ has been assigned to PCI.\r
-  ///\r
-  /// LEGACY_USED 0xFE. This IRQ has been used by an SIO legacy\r
-  /// device and cannot be used by PCI.\r
-  ///\r
-  UINT8 Used;\r
-} EFI_LEGACY_IRQ_PRIORITY_TABLE_ENTRY;\r
-\r
-//\r
-// Define PIR table structures\r
-//\r
-#define EFI_LEGACY_PIRQ_TABLE_SIGNATURE SIGNATURE_32 ('$', 'P', 'I', 'R')\r
-\r
-typedef struct {\r
-  ///\r
-  /// $PIR.\r
-  ///\r
-  UINT32  Signature;\r
-  ///\r
-  /// 0x00.\r
-  ///\r
-  UINT8   MinorVersion;\r
-  ///\r
-  /// 0x01 for table version 1.0.\r
-  ///\r
-  UINT8   MajorVersion;\r
-  ///\r
-  /// 0x20 + RoutingTableEntries * 0x10.\r
-  ///\r
-  UINT16  TableSize;\r
-  ///\r
-  /// PCI interrupt router bus.\r
-  ///\r
-  UINT8   Bus;\r
-  ///\r
-  /// PCI interrupt router device/function.\r
-  ///\r
-  UINT8   DevFun;\r
-  ///\r
-  /// If nonzero, bit map of IRQs reserved for PCI.\r
-  ///\r
-  UINT16  PciOnlyIrq;\r
-  ///\r
-  /// Vendor ID of a compatible PCI interrupt router.\r
-  ///\r
-  UINT16  CompatibleVid;\r
-  ///\r
-  /// Device ID of a compatible PCI interrupt router.\r
-  ///\r
-  UINT16  CompatibleDid;\r
-  ///\r
-  /// If nonzero, a value passed directly to the IRQ miniport's Initialize function.\r
-  ///\r
-  UINT32  Miniport;\r
-  ///\r
-  /// Reserved for future usage.\r
-  ///\r
-  UINT8   Reserved[11];\r
-  ///\r
-  /// This byte plus the sum of all other bytes in the LocalPirqTable equal 0x00.\r
-  ///\r
-  UINT8   Checksum;\r
-} EFI_LEGACY_PIRQ_TABLE_HEADER;\r
-\r
-\r
-typedef struct {\r
-  ///\r
-  /// If nonzero, a value assigned by the IBV.\r
-  ///\r
-  UINT8   Pirq;\r
-  ///\r
-  /// If nonzero, the IRQs that can be assigned to this device.\r
-  ///\r
-  UINT16  IrqMask;\r
-} EFI_LEGACY_PIRQ_ENTRY;\r
-\r
-typedef struct {\r
-  ///\r
-  /// PCI bus of the entry.\r
-  ///\r
-  UINT8                 Bus;\r
-  ///\r
-  /// PCI device of this entry.\r
-  ///\r
-  UINT8                 Device;\r
-  ///\r
-  /// An IBV value and IRQ mask for PIRQ pins A through D.\r
-  ///\r
-  EFI_LEGACY_PIRQ_ENTRY PirqEntry[4];\r
-  ///\r
-  /// If nonzero, the slot number assigned by the board manufacturer.\r
-  ///\r
-  UINT8                 Slot;\r
-  ///\r
-  /// Reserved for future use.\r
-  ///\r
-  UINT8                 Reserved;\r
-} EFI_LEGACY_IRQ_ROUTING_ENTRY;\r
-\r
-#pragma pack()\r
-\r
-\r
-/**\r
-  Finds the binary data or other platform information.\r
-\r
-  @param  This                  The protocol instance pointer.\r
-  @param  Mode                  Specifies what data to return. See See EFI_GET_PLATFORM_INFO_MODE enum.\r
-  @param  Table                 Mode specific.  See EFI_GET_PLATFORM_INFO_MODE enum.\r
-  @param  TableSize              Mode specific.  See EFI_GET_PLATFORM_INFO_MODE enum.\r
-  @param  Location               Mode specific.  See EFI_GET_PLATFORM_INFO_MODE enum.\r
-  @param  Alignment             Mode specific.  See EFI_GET_PLATFORM_INFO_MODE enum.\r
-  @param  LegacySegment         Mode specific.  See EFI_GET_PLATFORM_INFO_MODE enum.\r
-  @param  LegacyOffset          Mode specific.  See EFI_GET_PLATFORM_INFO_MODE enum.\r
-\r
-  @retval EFI_SUCCESS           Data returned successfully.\r
-  @retval EFI_UNSUPPORTED       Mode is not supported on the platform.\r
-  @retval EFI_NOT_FOUND         Binary image or table not found.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_LEGACY_BIOS_PLATFORM_GET_PLATFORM_INFO)(\r
-  IN EFI_LEGACY_BIOS_PLATFORM_PROTOCOL   *This,\r
-  IN EFI_GET_PLATFORM_INFO_MODE          Mode,\r
-  OUT VOID                               **Table,\r
-  OUT UINTN                              *TableSize,\r
-  OUT UINTN                              *Location,\r
-  OUT UINTN                              *Alignment,\r
-  IN  UINT16                             LegacySegment,\r
-  IN  UINT16                             LegacyOffset\r
-  );\r
-\r
-/**\r
-  Returns a buffer of handles for the requested subfunction.\r
-\r
-  @param  This                  The protocol instance pointer.\r
-  @param  Mode                  Specifies what handle to return. See EFI_GET_PLATFORM_HANDLE_MODE enum.\r
-  @param  Type                  Mode specific. See EFI_GET_PLATFORM_HANDLE_MODE enum.\r
-  @param  HandleBuffer          Mode specific. See EFI_GET_PLATFORM_HANDLE_MODE enum.\r
-  @param  HandleCount           Mode specific. See EFI_GET_PLATFORM_HANDLE_MODE enum.\r
-  @param  AdditionalData        Mode specific. See EFI_GET_PLATFORM_HANDLE_MODE enum.\r
-\r
-  @retval EFI_SUCCESS           Handle is valid.\r
-  @retval EFI_UNSUPPORTED       Mode is not supported on the platform.\r
-  @retval EFI_NOT_FOUND         Handle is not known.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_LEGACY_BIOS_PLATFORM_GET_PLATFORM_HANDLE)(\r
-  IN EFI_LEGACY_BIOS_PLATFORM_PROTOCOL   *This,\r
-  IN EFI_GET_PLATFORM_HANDLE_MODE        Mode,\r
-  IN UINT16                              Type,\r
-  OUT EFI_HANDLE                         **HandleBuffer,\r
-  OUT UINTN                              *HandleCount,\r
-  IN  VOID                               **AdditionalData OPTIONAL\r
-  );\r
-\r
-/**\r
-  Load and initialize the Legacy BIOS SMM handler.\r
-\r
-  @param  This                   The protocol instance pointer.\r
-  @param  EfiToLegacy16BootTable A pointer to Legacy16 boot table.\r
-\r
-  @retval EFI_SUCCESS           SMM code loaded.\r
-  @retval EFI_DEVICE_ERROR      SMM code failed to load\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_LEGACY_BIOS_PLATFORM_SMM_INIT)(\r
-  IN EFI_LEGACY_BIOS_PLATFORM_PROTOCOL   *This,\r
-  IN  VOID                               *EfiToLegacy16BootTable\r
-  );\r
-\r
-/**\r
-  Allows platform to perform any required action after a LegacyBios operation.\r
-  Invokes the specific sub function specified by Mode.\r
-\r
-  @param  This                  The protocol instance pointer.\r
-  @param  Mode                  Specifies what handle to return. See EFI_GET_PLATFORM_HOOK_MODE enum.\r
-  @param  Type                  Mode specific.  See EFI_GET_PLATFORM_HOOK_MODE enum.\r
-  @param  DeviceHandle          Mode specific.  See EFI_GET_PLATFORM_HOOK_MODE enum.\r
-  @param  ShadowAddress         Mode specific.  See EFI_GET_PLATFORM_HOOK_MODE enum.\r
-  @param  Compatibility16Table  Mode specific.  See EFI_GET_PLATFORM_HOOK_MODE enum.\r
-  @param  AdditionalData        Mode specific.  See EFI_GET_PLATFORM_HOOK_MODE enum.\r
-\r
-  @retval EFI_SUCCESS           The operation performed successfully. Mode specific.\r
-  @retval EFI_UNSUPPORTED       Mode is not supported on the platform.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_LEGACY_BIOS_PLATFORM_HOOKS)(\r
-  IN EFI_LEGACY_BIOS_PLATFORM_PROTOCOL   *This,\r
-  IN EFI_GET_PLATFORM_HOOK_MODE          Mode,\r
-  IN UINT16                              Type,\r
-  IN  EFI_HANDLE                         DeviceHandle, OPTIONAL\r
-  IN  OUT UINTN                          *ShadowAddress, OPTIONAL\r
-  IN  EFI_COMPATIBILITY16_TABLE          *Compatibility16Table, OPTIONAL\r
-  OUT  VOID                               **AdditionalData OPTIONAL\r
-  );\r
-\r
-/**\r
-  Returns information associated with PCI IRQ routing.\r
-  This function returns the following information associated with PCI IRQ routing:\r
-    * An IRQ routing table and number of entries in the table.\r
-    * The $PIR table and its size.\r
-    * A list of PCI IRQs and the priority order to assign them.\r
-\r
-  @param  This                    The protocol instance pointer.\r
-  @param  RoutingTable            The pointer to PCI IRQ Routing table.\r
-                                  This location is the $PIR table minus the header.\r
-  @param  RoutingTableEntries     The number of entries in table.\r
-  @param  LocalPirqTable          $PIR table.\r
-  @param  PirqTableSize           $PIR table size.\r
-  @param  LocalIrqPriorityTable   A list of interrupts in priority order to assign.\r
-  @param  IrqPriorityTableEntries The number of entries in the priority table.\r
-\r
-  @retval EFI_SUCCESS           Data was successfully returned.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_LEGACY_BIOS_PLATFORM_GET_ROUTING_TABLE)(\r
-  IN EFI_LEGACY_BIOS_PLATFORM_PROTOCOL   *This,\r
-  OUT VOID                               **RoutingTable,\r
-  OUT UINTN                              *RoutingTableEntries,\r
-  OUT VOID                               **LocalPirqTable, OPTIONAL\r
-  OUT UINTN                              *PirqTableSize, OPTIONAL\r
-  OUT VOID                               **LocalIrqPriorityTable, OPTIONAL\r
-  OUT UINTN                              *IrqPriorityTableEntries OPTIONAL\r
-  );\r
-\r
-/**\r
-  Translates the given PIRQ accounting for bridge.\r
-  This function translates the given PIRQ back through all buses, if required,\r
-  and returns the true PIRQ and associated IRQ.\r
-\r
-  @param  This                  The protocol instance pointer.\r
-  @param  PciBus                The PCI bus number for this device.\r
-  @param  PciDevice             The PCI device number for this device.\r
-  @param  PciFunction           The PCI function number for this device.\r
-  @param  Pirq                  Input is PIRQ reported by device, and output is true PIRQ.\r
-  @param  PciIrq                The IRQ already assigned to the PIRQ, or the IRQ to be\r
-                                assigned to the PIRQ.\r
-\r
-  @retval EFI_SUCCESS           The PIRQ was translated.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_LEGACY_BIOS_PLATFORM_TRANSLATE_PIRQ)(\r
-  IN EFI_LEGACY_BIOS_PLATFORM_PROTOCOL   *This,\r
-  IN  UINTN                              PciBus,\r
-  IN  UINTN                              PciDevice,\r
-  IN  UINTN                              PciFunction,\r
-  IN  OUT UINT8                          *Pirq,\r
-  OUT UINT8                              *PciIrq\r
-  );\r
-\r
-/**\r
-  Attempt to legacy boot the BootOption. If the EFI contexted has been\r
-  compromised this function will not return.\r
-\r
-  @param  This                   The protocol instance pointer.\r
-  @param  BbsDevicePath          The EFI Device Path from BootXXXX variable.\r
-  @param  BbsTable               The Internal BBS table.\r
-  @param  LoadOptionSize         The size of LoadOption in size.\r
-  @param  LoadOption             The LoadOption from BootXXXX variable\r
-  @param  EfiToLegacy16BootTable A pointer to BootTable structure\r
-\r
-  @retval EFI_SUCCESS           Ready to boot.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_LEGACY_BIOS_PLATFORM_PREPARE_TO_BOOT)(\r
-  IN EFI_LEGACY_BIOS_PLATFORM_PROTOCOL   *This,\r
-  IN  BBS_BBS_DEVICE_PATH                *BbsDevicePath,\r
-  IN  VOID                               *BbsTable,\r
-  IN  UINT32                             LoadOptionsSize,\r
-  IN  VOID                               *LoadOptions,\r
-  IN  VOID                               *EfiToLegacy16BootTable\r
-  );\r
-\r
-/**\r
-  This protocol abstracts the platform portion of the traditional BIOS.\r
-**/\r
-struct _EFI_LEGACY_BIOS_PLATFORM_PROTOCOL {\r
-  ///\r
-  ///  Gets binary data or other platform information.\r
-  ///\r
-  EFI_LEGACY_BIOS_PLATFORM_GET_PLATFORM_INFO    GetPlatformInfo;\r
-  ///\r
-  ///  Returns a buffer of all handles matching the requested subfunction.\r
-  ///\r
-  EFI_LEGACY_BIOS_PLATFORM_GET_PLATFORM_HANDLE  GetPlatformHandle;\r
-  ///\r
-  ///  Loads and initializes the traditional BIOS SMM handler.\r
-  EFI_LEGACY_BIOS_PLATFORM_SMM_INIT             SmmInit;\r
-  ///\r
-  ///  Allows platform to perform any required actions after a LegacyBios operation.\r
-  ///\r
-  EFI_LEGACY_BIOS_PLATFORM_HOOKS                PlatformHooks;\r
-  ///\r
-  ///  Gets $PIR table.\r
-  EFI_LEGACY_BIOS_PLATFORM_GET_ROUTING_TABLE    GetRoutingTable;\r
-  ///\r
-  ///  Translates the given PIRQ to the final value after traversing any PCI bridges.\r
-  ///\r
-  EFI_LEGACY_BIOS_PLATFORM_TRANSLATE_PIRQ       TranslatePirq;\r
-  ///\r
-  ///  Final platform function before the system attempts to boot to a traditional OS.\r
-  ///\r
-  EFI_LEGACY_BIOS_PLATFORM_PREPARE_TO_BOOT      PrepareToBoot;\r
-};\r
-\r
-extern EFI_GUID gEfiLegacyBiosPlatformProtocolGuid;\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Protocol/LegacyInterrupt.h b/IntelFrameworkPkg/Include/Protocol/LegacyInterrupt.h
deleted file mode 100644 (file)
index b3ad2ff..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-/** @file\r
-  This protocol abstracts the PIRQ programming from the generic EFI Compatibility Support Modules (CSMs).\r
-\r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  This protocol is defined in Framework for the EFI Compatibility Support Module specification.\r
-  Version 0.97.\r
-\r
-**/\r
-\r
-#ifndef _EFI_LEGACY_INTERRUPT_H_\r
-#define _EFI_LEGACY_INTERRUPT_H_\r
-\r
-\r
-#define EFI_LEGACY_INTERRUPT_PROTOCOL_GUID \\r
-  { \\r
-    0x31ce593d, 0x108a, 0x485d, {0xad, 0xb2, 0x78, 0xf2, 0x1f, 0x29, 0x66, 0xbe } \\r
-  }\r
-\r
-typedef struct _EFI_LEGACY_INTERRUPT_PROTOCOL EFI_LEGACY_INTERRUPT_PROTOCOL;\r
-\r
-/**\r
-  Get the number of PIRQs this hardware supports.\r
-\r
-  @param  This                  The protocol instance pointer.\r
-  @param  NumberPirsq           The number of PIRQs that are supported.\r
-\r
-  @retval EFI_SUCCESS           The number of PIRQs was returned successfully.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_LEGACY_INTERRUPT_GET_NUMBER_PIRQS)(\r
-  IN EFI_LEGACY_INTERRUPT_PROTOCOL            *This,\r
-  OUT UINT8                                   *NumberPirqs\r
-  );\r
-\r
-/**\r
-  Gets the PCI location associated with this protocol.\r
-\r
-  @param  This                  The Protocol instance pointer.\r
-  @param  Bus                   The PCI Bus.\r
-  @param  Device                The PCI Device.\r
-  @param  Function              The PCI Function.\r
-\r
-  @retval EFI_SUCCESS           The Bus, Device, and Function were returned successfully.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_LEGACY_INTERRUPT_GET_LOCATION)(\r
-  IN EFI_LEGACY_INTERRUPT_PROTOCOL            *This,\r
-  OUT UINT8                                   *Bus,\r
-  OUT UINT8                                   *Device,\r
-  OUT UINT8                                   *Function\r
-  );\r
-\r
-/**\r
-  Read the PIRQ register and return the data\r
-\r
-  @param  This                  The protocol instance pointer.\r
-  @param  PirqNumber            The PIRQ register to read.\r
-  @param  PirqData              The data read.\r
-\r
-  @retval EFI_SUCCESS           The data was read.\r
-  @retval EFI_INVALID_PARAMETER Invalid PIRQ number.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_LEGACY_INTERRUPT_READ_PIRQ)(\r
-  IN EFI_LEGACY_INTERRUPT_PROTOCOL           *This,\r
-  IN  UINT8                                  PirqNumber,\r
-  OUT UINT8                                  *PirqData\r
-  );\r
-\r
-/**\r
-  Write the specified PIRQ register with the given data.\r
-\r
-  @param  This                  The protocol instance pointer.\r
-  @param  PirqNumber            A PIRQ register to read.\r
-  @param  PirqData              The data to write.\r
-\r
-  @retval EFI_SUCCESS           The PIRQ was programmed.\r
-  @retval EFI_INVALID_PARAMETER Invalid PIRQ number.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_LEGACY_INTERRUPT_WRITE_PIRQ)(\r
-  IN EFI_LEGACY_INTERRUPT_PROTOCOL           *This,\r
-  IN  UINT8                                  PirqNumber,\r
-  IN UINT8                                   PirqData\r
-  );\r
-\r
-struct _EFI_LEGACY_INTERRUPT_PROTOCOL {\r
-  ///\r
-  ///   Gets the number of PIRQs supported.\r
-  ///\r
-  EFI_LEGACY_INTERRUPT_GET_NUMBER_PIRQS GetNumberPirqs;\r
-\r
-  ///\r
-  /// Gets the PCI bus, device, and function that is associated with this protocol.\r
-  ///\r
-  EFI_LEGACY_INTERRUPT_GET_LOCATION     GetLocation;\r
-\r
-  ///\r
-  /// Reads the indicated PIRQ register.\r
-  ///\r
-  EFI_LEGACY_INTERRUPT_READ_PIRQ        ReadPirq;\r
-\r
-  ///\r
-  /// Writes to the indicated PIRQ register.\r
-  ///\r
-  EFI_LEGACY_INTERRUPT_WRITE_PIRQ       WritePirq;\r
-};\r
-\r
-extern EFI_GUID gEfiLegacyInterruptProtocolGuid;\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Protocol/LegacyRegion.h b/IntelFrameworkPkg/Include/Protocol/LegacyRegion.h
deleted file mode 100644 (file)
index 01a411d..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-/** @file\r
-  This protocol manages the legacy memory regions between 0xc0000 - 0xfffff.\r
-\r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  This protocol is defined in Framework for EFI Compatibility Support Module spec\r
-  Version 0.97.\r
-\r
-**/\r
-\r
-#ifndef _EFI_LEGACY_REGION_H_\r
-#define _EFI_LEGACY_REGION_H_\r
-\r
-\r
-#define EFI_LEGACY_REGION_PROTOCOL_GUID \\r
-  { \\r
-    0xfc9013a, 0x568, 0x4ba9, {0x9b, 0x7e, 0xc9, 0xc3, 0x90, 0xa6, 0x60, 0x9b } \\r
-  }\r
-\r
-typedef struct _EFI_LEGACY_REGION_PROTOCOL EFI_LEGACY_REGION_PROTOCOL;\r
-\r
-/**\r
-  Sets hardware to decode or not decode a region.\r
-\r
-  @param  This                  Indicates the EFI_LEGACY_REGION_PROTOCOL instance\r
-  @param  Start                 The start of the region to decode.\r
-  @param  Length                The size in bytes of the region.\r
-  @param  On                    The decode/nondecode flag.\r
-\r
-  @retval EFI_SUCCESS           The decode range successfully changed.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_LEGACY_REGION_DECODE)(\r
-  IN EFI_LEGACY_REGION_PROTOCOL           *This,\r
-  IN  UINT32                              Start,\r
-  IN  UINT32                              Length,\r
-  IN  BOOLEAN                             *On\r
-  );\r
-\r
-/**\r
-  Sets a region to read only.\r
-\r
-  @param  This                  Indicates the EFI_LEGACY_REGION_PROTOCOL instance.\r
-  @param  Start                 The start of region to lock.\r
-  @param  Length                The size in bytes of the region.\r
-  @param  Granularity           Lock attribute affects this granularity in bytes.\r
-\r
-  @retval EFI_SUCCESS           The region was made read only.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_LEGACY_REGION_LOCK)(\r
-  IN EFI_LEGACY_REGION_PROTOCOL           *This,\r
-  IN  UINT32                              Start,\r
-  IN  UINT32                              Length,\r
-  OUT UINT32                              *Granularity OPTIONAL\r
-  );\r
-\r
-/**\r
-  Sets a region to read only and ensures that flash is locked from being\r
-  inadvertently modified.\r
-\r
-  @param  This                  Indicates the EFI_LEGACY_REGION_PROTOCOL instance\r
-  @param  Start                 The start of region to lock.\r
-  @param  Length                The size in bytes of the region.\r
-  @param  Granularity           Lock attribute affects this granularity in bytes.\r
-\r
-  @retval EFI_SUCCESS           The region was made read only and flash is locked.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_LEGACY_REGION_BOOT_LOCK)(\r
-  IN EFI_LEGACY_REGION_PROTOCOL           *This,\r
-  IN  UINT32                              Start,\r
-  IN  UINT32                              Length,\r
-  OUT UINT32                              *Granularity OPTIONAL\r
-  );\r
-\r
-/**\r
-  Sets a region to read-write.\r
-\r
-  @param  This                  Indicates the EFI_LEGACY_REGION_PROTOCOL instance\r
-  @param  Start                 The start of region to lock.\r
-  @param  Length                The size in bytes of the region.\r
-  @param  Granularity           Lock attribute affects this granularity in bytes.\r
-\r
-  @retval EFI_SUCCESS           The region was successfully made read-write.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_LEGACY_REGION_UNLOCK)(\r
-  IN EFI_LEGACY_REGION_PROTOCOL           *This,\r
-  IN  UINT32                              Start,\r
-  IN  UINT32                              Length,\r
-  OUT UINT32                              *Granularity OPTIONAL\r
-  );\r
-\r
-/**\r
-  Abstracts the hardware control of the physical address region 0xC0000-C0xFFFFF\r
-  for the traditional BIOS.\r
-**/\r
-struct _EFI_LEGACY_REGION_PROTOCOL {\r
-  EFI_LEGACY_REGION_DECODE    Decode;     ///< Specifies a region for the chipset to decode.\r
-  EFI_LEGACY_REGION_LOCK      Lock;       ///< Makes the specified OpROM region read only or locked.\r
-  EFI_LEGACY_REGION_BOOT_LOCK BootLock;   ///< Sets a region to read only and ensures tat flash is locked from.\r
-                                          ///< inadvertent modification.\r
-  EFI_LEGACY_REGION_UNLOCK    UnLock;     ///< Makes the specified OpROM region read-write or unlocked.\r
-};\r
-\r
-extern EFI_GUID gEfiLegacyRegionProtocolGuid;\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Protocol/SectionExtraction.h b/IntelFrameworkPkg/Include/Protocol/SectionExtraction.h
deleted file mode 100644 (file)
index 8773981..0000000
+++ /dev/null
@@ -1,155 +0,0 @@
-/** @file\r
-  This file declares Section Extraction Protocol.\r
-\r
-  This interface provides a means of decoding a set of sections into a linked list of\r
-  leaf sections.  This provides for an extensible and flexible file format.\r
-\r
-Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  This protocol is defined in Firmware Volume Specification.\r
-  Version 0.9.\r
-\r
-**/\r
-\r
-#ifndef _SECTION_EXTRACTION_PROTOCOL_H_\r
-#define _SECTION_EXTRACTION_PROTOCOL_H_\r
-\r
-//\r
-// Protocol GUID definition\r
-//\r
-#define EFI_SECTION_EXTRACTION_PROTOCOL_GUID \\r
-  { \\r
-    0x448F5DA4, 0x6DD7, 0x4FE1, {0x93, 0x07, 0x69, 0x22, 0x41, 0x92, 0x21, 0x5D } \\r
-  }\r
-\r
-typedef struct _EFI_SECTION_EXTRACTION_PROTOCOL EFI_SECTION_EXTRACTION_PROTOCOL;\r
-\r
-//\r
-// Protocol member functions\r
-//\r
-/**\r
-  Creates and returns a new section stream handle to represent the new section stream.\r
-\r
-  @param  This                  Indicates the EFI_SECTION_EXTRACTION_PROTOCOL instance.\r
-  @param  SectionStreamLength   The size in bytes of the section stream.\r
-  @param  SectionStream         A buffer containing the new section stream.\r
-  @param  SectionStreamHandle   A pointer to a caller-allocated UINTN that,\r
-                                on output, contains the new section stream handle.\r
-\r
-  @retval EFI_SUCCESS           The SectionStream was successfully processed, and\r
-                                the section stream handle was returned.\r
-  @retval EFI_OUT_OF_RESOURCES  The system has insufficient resources to\r
-                                process the request.\r
-  @retval EFI_INVALID_PARAMETER The section stream may be corrupt or the value\r
-                                of SectionStreamLength may be incorrect.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_OPEN_SECTION_STREAM)(\r
-  IN  EFI_SECTION_EXTRACTION_PROTOCOL                   *This,\r
-  IN  UINTN                                             SectionStreamLength,\r
-  IN  VOID                                              *SectionStream,\r
-  OUT UINTN                                             *SectionStreamHandle\r
-  );\r
-\r
-/**\r
-  Reads and returns a single section from a section stream.\r
-\r
-  @param  This                  Indicates the EFI_SECTION_EXTRACTION_PROTOCOL instance.\r
-  @param  SectionStreamHandle   Indicates from which section stream to read.\r
-  @param  SectionType           The pointer to an EFI_SECTION_TYPE. If SectionType == NULL,\r
-                                the contents of the entire section stream are returned\r
-                                in Buffer. If SectionType is not NULL, only the\r
-                                requested section is returned. EFI_SECTION_ALL\r
-                                matches all section types and can be used as a\r
-                                wild card to extract all sections in order.\r
-  @param  SectionDefinitionGuid The pointer to an EFI_GUID. If SectionType ==\r
-                                EFI_SECTION_GUID_DEFINED, SectionDefinitionGuid\r
-                                indicates what section GUID to search for. If\r
-                                SectionType !=EFI_SECTION_GUID_DEFINED, then\r
-                                SectionDefinitionGuid is unused and is ignored.\r
-  @param  SectionInstance       Indicates which instance of the requested section\r
-                                type to return when SectionType is not NULL.\r
-  @param  SectionStreamHandle   A pointer to a caller-allocated UINTN that, on output,\r
-                                contains the new section stream handle.\r
-  @param  Buffer                Pointer to a pointer to a buffer in which the section\r
-                                contents are returned.\r
-  @param  BufferSize            A pointer to a caller-allocated UINTN.\r
-  @param  AuthenticationStatus  A pointer to a caller-allocated UINT32 in\r
-                                which any meta-data from encapsulation GUID-defined\r
-                                sections is returned.\r
-\r
-  @retval EFI_SUCCESS           The SectionStream was successfully processed and\r
-                                the section contents were returned in Buffer.\r
-  @retval EFI_PROTOCOL_ERROR    A GUID-defined section was encountered inthe section\r
-                                stream with its EFI_GUIDED_SECTION_PROCESSING_REQUIRED\r
-                                bit set, but there was no corresponding GUIDed\r
-                                Section Extraction Protocol in the handle database.\r
-  @retval EFI_NOT_FOUND         An error was encountered when parsing the SectionStream,\r
-                                which indicates that the SectionStream is not\r
-                                correctly formatted. Or, the requested section does not exist.\r
-  @retval EFI_OUT_OF_RESOURCES  The system has insufficient resources to process\r
-                                the request.\r
-  @retval EFI_INVALID_PARAMETER The SectionStreamHandle does not exist.\r
-  @retval EFI_WARN_BUFFER_TOO_SMALL The size of the input buffer is insufficient\r
-                                    to contain the requested section. The input\r
-                                    buffer is filled and section contents are truncated.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_GET_SECTION)(\r
-  IN EFI_SECTION_EXTRACTION_PROTOCOL                    *This,\r
-  IN UINTN                                              SectionStreamHandle,\r
-  IN EFI_SECTION_TYPE                                   *SectionType,\r
-  IN EFI_GUID                                           *SectionDefinitionGuid,\r
-  IN UINTN                                              SectionInstance,\r
-  IN VOID                                               **Buffer,\r
-  IN OUT UINTN                                          *BufferSize,\r
-  OUT UINT32                                            *AuthenticationStatus\r
-  );\r
-\r
-/**\r
-  Deletes a section stream handle and returns all associated resources to the system.\r
-\r
-  @param  This                  Indicates the EFI_SECTION_EXTRACTION_PROTOCOL instance.\r
-  @param  SectionStreamHandle   Indicates the section stream to close.\r
-  @retval EFI_SUCCESS           The SectionStream was successfully processed and\r
-                                the section stream handle was returned.\r
-  @retval EFI_INVALID_PARAMETER The SectionStreamHandle does not exist.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_CLOSE_SECTION_STREAM)(\r
-  IN EFI_SECTION_EXTRACTION_PROTOCOL                    *This,\r
-  IN UINTN                                              SectionStreamHandle\r
-  );\r
-\r
-//\r
-// Protocol definition\r
-//\r
-struct _EFI_SECTION_EXTRACTION_PROTOCOL {\r
-  ///\r
-  ///  Takes a bounded stream of sections and returns a section stream handle.\r
-  ///\r
-  EFI_OPEN_SECTION_STREAM   OpenSectionStream;\r
-\r
-  ///\r
-  ///  Given a section stream handle, retrieves the requested section and\r
-  ///  meta-data from the section stream.\r
-  ///\r
-  EFI_GET_SECTION           GetSection;\r
-\r
-  ///\r
-  ///  Given a section stream handle, closes the section stream.\r
-  ///\r
-  EFI_CLOSE_SECTION_STREAM  CloseSectionStream;\r
-};\r
-\r
-extern EFI_GUID gEfiSectionExtractionProtocolGuid;\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Protocol/SmmAccess.h b/IntelFrameworkPkg/Include/Protocol/SmmAccess.h
deleted file mode 100644 (file)
index df19758..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-/** @file\r
-  This file declares the SMM SMRAM Access abstraction protocol, which is used to control\r
-  the visibility of the SMRAM on the platform. The expectation is\r
-  that the north bridge or memory controller would publish this protocol.\r
-  For example, the Memory Controller Hub (MCH) has the hardware provision for this\r
-  type of control. Because of the protected, distinguished class of memory for IA-32\r
-  systems, the expectation is that this protocol would be supported only on IA-32 systems.\r
-\r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  This Protocol is defined in Framework of EFI SMM Core Interface Spec\r
-  Version 0.9.\r
-**/\r
-\r
-#ifndef _SMM_ACCESS_H_\r
-#define _SMM_ACCESS_H_\r
-\r
-#include <Guid/SmramMemoryReserve.h>\r
-\r
-typedef struct _EFI_SMM_ACCESS_PROTOCOL  EFI_SMM_ACCESS_PROTOCOL;\r
-\r
-#define EFI_SMM_ACCESS_PROTOCOL_GUID \\r
-  { \\r
-    0x3792095a, 0xe309, 0x4c1e, {0xaa, 0x01, 0x85, 0xf5, 0x65, 0x5a, 0x17, 0xf1 } \\r
-  }\r
-\r
-//\r
-// SMM Access specification Member Function\r
-//\r
-/**\r
-  Opens the SMRAM area to be accessible by a boot-service driver.\r
-\r
-  @param  This                  The EFI_SMM_ACCESS_PROTOCOL instance.\r
-  @param  DescriptorIndex       Indicates that the driver wishes to open\r
-                                the memory tagged by this index.\r
-\r
-  @retval EFI_SUCCESS           The operation was successful.\r
-  @retval EFI_INVALID_PARAMETER The given DescriptorIndex is not supported.\r
-  @retval EFI_NOT_STARTED       The SMM base service has not been initialized.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_OPEN)(\r
-  IN EFI_SMM_ACCESS_PROTOCOL         *This,\r
-  UINTN                              DescriptorIndex\r
-  );\r
-\r
-/**\r
-  Inhibits access to the SMRAM.\r
-\r
-  @param  This                  The EFI_SMM_ACCESS_PROTOCOL instance.\r
-  @param  DescriptorIndex       Indicates that the driver wishes to close\r
-                                the memory tagged by this index.\r
-\r
-  @retval EFI_SUCCESS           The operation was successful.\r
-  @retval EFI_DEVICE_ERROR      The given DescriptorIndex is not open.\r
-  @retval EFI_INVALID_PARAMETER The given DescriptorIndex is not supported.\r
-  @retval EFI_NOT_STARTED       The SMM base service has not been initialized.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_CLOSE)(\r
-  IN EFI_SMM_ACCESS_PROTOCOL          *This,\r
-  UINTN                               DescriptorIndex\r
-  );\r
-\r
-/**\r
-  Inhibits access to the SMRAM.\r
-\r
-  @param  This                  The EFI_SMM_ACCESS_PROTOCOL instance.\r
-  @param  DescriptorIndex       Indicates that the driver wishes to lock\r
-                                the memory tagged by this index.\r
-\r
-  @retval EFI_SUCCESS           The operation was successful.\r
-  @retval EFI_DEVICE_ERROR      The given DescriptorIndex is not open.\r
-  @retval EFI_INVALID_PARAMETER The given DescriptorIndex is not supported.\r
-  @retval EFI_NOT_STARTED       The SMM base service has not been initialized.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_LOCK)(\r
-  IN EFI_SMM_ACCESS_PROTOCOL         *This,\r
-  UINTN                              DescriptorIndex\r
-  );\r
-\r
-/**\r
-  Queries the memory controller for the possible regions that will support SMRAM.\r
-\r
-  @param  This                  The EFI_SMM_ACCESS_PROTOCOL instance.\r
-  @param  SmramMapSize          A pointer to the size, in bytes, of the SmramMemoryMap buffer.\r
-  @param  SmramMap              A pointer to the buffer in which firmware places the current memory map.\r
-\r
-  @retval EFI_SUCCESS           The chipset supported the given resource.\r
-  @retval EFI_BUFFER_TOO_SMALL  The SmramMap parameter was too small.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_CAPABILITIES)(\r
-  IN EFI_SMM_ACCESS_PROTOCOL             *This,\r
-  IN OUT UINTN                           *SmramMapSize,\r
-  IN OUT EFI_SMRAM_DESCRIPTOR            *SmramMap\r
-  );\r
-\r
-/**\r
-  This protocol is used to control the visibility of the SMRAM on the platform.\r
-**/\r
-struct _EFI_SMM_ACCESS_PROTOCOL {\r
-  EFI_SMM_OPEN          Open;             ///< Opens the SMRAM.\r
-  EFI_SMM_CLOSE         Close;            ///< Closes the SMRAM.\r
-  EFI_SMM_LOCK          Lock;             ///< Locks the SMRAM.\r
-  EFI_SMM_CAPABILITIES  GetCapabilities;  ///< Gets information on possible SMRAM regions.\r
-  BOOLEAN               LockState;        ///< Indicates the current state of the SMRAM. Set to TRUE if any region is locked.\r
-  BOOLEAN               OpenState;        ///< Indicates the current state of the SMRAM. Set to TRUE if any region is open.\r
-};\r
-\r
-extern EFI_GUID gEfiSmmAccessProtocolGuid;\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Protocol/SmmBase.h b/IntelFrameworkPkg/Include/Protocol/SmmBase.h
deleted file mode 100644 (file)
index d2d476d..0000000
+++ /dev/null
@@ -1,304 +0,0 @@
-/** @file\r
-  This file declares SMM Base abstraction protocol.\r
-  This protocol is used to install SMM handlers for support of subsequent SMI/PMI activations. This\r
-  protocol is available on both IA-32 and Itanium-based systems.\r
-\r
-  The EFI_SMM_BASE_PROTOCOL is a set of services that is exported by a processor device. It is\r
-  a required protocol for the platform processor. This protocol can be used in both boot services and\r
-  runtime mode. However, only the following member functions need to exist during runtime:\r
-  - InSmm()\r
-  - Communicate()\r
-  This protocol is responsible for registering the handler services. The order in which the handlers are\r
-  executed is prescribed only with respect to the MakeLast flag in the RegisterCallback()\r
-  service. The driver exports these registration and unregistration services in boot services mode, but\r
-  the registered handlers will execute through the preboot and runtime. The only way to change the\r
-  behavior of a registered driver after ExitBootServices() has been invoked is to use some\r
-  private communication mechanism with the driver to order it to quiesce. This model permits typical\r
-  use cases, such as invoking the handler to enter ACPI mode, where the OS loader would make this\r
-  call before boot services are terminated. On the other hand, handlers for services such as chipset\r
-  workarounds for the century rollover in CMOS should provide commensurate services throughout\r
-  preboot and OS runtime.\r
-\r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  This Protocol is defined in Framework of EFI SMM Core Interface Spec\r
-  Version 0.9.\r
-\r
-**/\r
-\r
-#ifndef _SMM_BASE_H_\r
-#define _SMM_BASE_H_\r
-\r
-//\r
-// Share some common definitions with PI SMM\r
-//\r
-#include <Framework/SmmCis.h>\r
-#include <Protocol/SmmCommunication.h>\r
-\r
-///\r
-/// Global ID for the EFI_SMM_BASE_PROTOCOL.\r
-///\r
-#define EFI_SMM_BASE_PROTOCOL_GUID \\r
-  { \\r
-    0x1390954D, 0xda95, 0x4227, {0x93, 0x28, 0x72, 0x82, 0xc2, 0x17, 0xda, 0xa8 } \\r
-  }\r
-\r
-///\r
-/// Forward declaration for EFI_SMM_BASE_PROTOCOL.\r
-///\r
-typedef struct _EFI_SMM_BASE_PROTOCOL  EFI_SMM_BASE_PROTOCOL;\r
-\r
-///\r
-/// EFI SMM Handler return codes\r
-///\r
-///@{\r
-#define EFI_HANDLER_SUCCESS         0x0000\r
-#define EFI_HANDLER_CRITICAL_EXIT   0x0001\r
-#define EFI_HANDLER_SOURCE_QUIESCED 0x0002\r
-#define EFI_HANDLER_SOURCE_PENDING  0x0003\r
-///@}\r
-\r
-/**\r
-  Entry Point to Callback service\r
-\r
-  @param[in]  SmmImageHandle        A handle allocated by the SMM infrastructure code\r
-                                    to uniquely designate a specific DXE SMM driver.\r
-  @param[in]  CommunicationBuffer   A pointer to a collection of data in memory\r
-                                    that will be conveyed from a non-SMM environment\r
-                                    into an SMM environment. The buffer must be\r
-                                    contiguous and physically mapped, and must be\r
-                                    a physical address.\r
-  @param[in]  SourceSize            The size of the CommunicationBuffer.\r
-\r
-  @return     Status code\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_CALLBACK_ENTRY_POINT)(\r
-  IN EFI_HANDLE             SmmImageHandle,\r
-  IN OUT VOID               *CommunicationBuffer OPTIONAL,\r
-  IN OUT UINTN              *SourceSize OPTIONAL\r
-  );\r
-\r
-//\r
-// SMM Base Protocol Definition\r
-//\r
-/**\r
-  Register a given driver into SMRAM. This is the equivalent of performing\r
-  the LoadImage/StartImage into System Management Mode.\r
-\r
-  @param[in]   This                  The protocol instance pointer.\r
-  @param[in]   FilePath              The location of the image to be installed as the handler.\r
-  @param[in]   SourceBuffer          An optional source buffer in case the image file\r
-                                     is in memory.\r
-  @param[in]   SourceSize            The size of the source image file, if in memory.\r
-  @param[out]  ImageHandle           The handle that the base driver uses to decode\r
-                                     the handler. Unique among SMM handlers only;\r
-                                     not unique across DXE/EFI.\r
-  @param[in]   LegacyIA32Binary      An optional parameter specifying that the associated\r
-                                     file is a real-mode IA-32 binary.\r
-\r
-  @retval      EFI_SUCCESS           The operation was successful.\r
-  @retval      EFI_OUT_OF_RESOURCES  There were no additional SMRAM resources to load the handler\r
-  @retval      EFI_UNSUPPORTED       This platform does not support 16-bit handlers.\r
-  @retval      EFI_UNSUPPORTED       The platform is in runtime.\r
-  @retval      EFI_INVALID_PARAMETER The handlers were not the correct image type.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_REGISTER_HANDLER)(\r
-  IN  EFI_SMM_BASE_PROTOCOL                          *This,\r
-  IN  EFI_DEVICE_PATH_PROTOCOL                       *FilePath,\r
-  IN  VOID                                           *SourceBuffer OPTIONAL,\r
-  IN  UINTN                                          SourceSize,\r
-  OUT EFI_HANDLE                                     *ImageHandle,\r
-  IN  BOOLEAN                                        LegacyIA32Binary OPTIONAL\r
-  );\r
-\r
-/**\r
-  Removes a handler from execution within SMRAM.  This is the equivalent of performing\r
-  the UnloadImage in System Management Mode.\r
-\r
-  @param[in]  This                  The protocol instance pointer.\r
-  @param[in]  ImageHandle           The handler to be removed.\r
-\r
-  @retval     EFI_SUCCESS           The operation was successful.\r
-  @retval     EFI_INVALID_PARAMETER The handler did not exist.\r
-  @retval     EFI_UNSUPPORTED       The platform is in runtime.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_UNREGISTER_HANDLER)(\r
-  IN EFI_SMM_BASE_PROTOCOL          *This,\r
-  IN EFI_HANDLE                     ImageHandle\r
-  );\r
-\r
-/**\r
-  The SMM Inter-module Communicate Service Communicate() function\r
-  provides a service to send/receive messages from a registered\r
-  EFI service.  The BASE protocol driver is responsible for doing\r
-  any of the copies such that the data lives in boot-service-accessible RAM.\r
-\r
-  @param[in]      This                  The protocol instance pointer.\r
-  @param[in]      ImageHandle           The handle of the registered driver.\r
-  @param[in,out]  CommunicationBuffer   The pointer to the buffer to convey into SMRAM.\r
-  @param[in,out]  SourceSize            The size of the data buffer being passed in.\r
-                                        On exit, the size of data being returned.\r
-                                        Zero if the handler does not wish to reply with any data.\r
-\r
-  @retval         EFI_SUCCESS           The message was successfully posted.\r
-  @retval         EFI_INVALID_PARAMETER The buffer was NULL.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_COMMUNICATE)(\r
-  IN EFI_SMM_BASE_PROTOCOL          *This,\r
-  IN EFI_HANDLE                     ImageHandle,\r
-  IN OUT VOID                       *CommunicationBuffer,\r
-  IN OUT UINTN                      *SourceSize\r
-  );\r
-\r
-/**\r
-  Register a callback to execute within SMM.\r
-  This allows receipt of messages created with EFI_SMM_BASE_PROTOCOL.Communicate().\r
-\r
-  @param[in]  This                  Protocol instance pointer.\r
-  @param[in]  SmmImageHandle        Handle of the callback service.\r
-  @param[in]  CallbackAddress       Address of the callback service.\r
-  @param[in]  MakeLast              If present, will stipulate that the handler is posted to\r
-                                    be executed last in the dispatch table.\r
-  @param[in]  FloatingPointSave     An optional parameter that informs the\r
-                                    EFI_SMM_ACCESS_PROTOCOL Driver core if it needs to save\r
-                                    the floating point register state. If any handler\r
-                                    require this, the state will be saved for all handlers.\r
-\r
-  @retval     EFI_SUCCESS           The operation was successful.\r
-  @retval     EFI_OUT_OF_RESOURCES  Not enough space in the dispatch queue.\r
-  @retval     EFI_UNSUPPORTED       The platform is in runtime.\r
-  @retval     EFI_UNSUPPORTED       The caller is not in SMM.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_CALLBACK_SERVICE)(\r
-  IN EFI_SMM_BASE_PROTOCOL                            *This,\r
-  IN EFI_HANDLE                                       SmmImageHandle,\r
-  IN EFI_SMM_CALLBACK_ENTRY_POINT                     CallbackAddress,\r
-  IN BOOLEAN                                          MakeLast OPTIONAL,\r
-  IN BOOLEAN                                          FloatingPointSave OPTIONAL\r
-  );\r
-\r
-/**\r
-  The SmmAllocatePool() function allocates a memory region of Size bytes from memory of\r
-  type PoolType and returns the address of the allocated memory in the location referenced\r
-  by Buffer.  This function allocates pages from EFI SMRAM Memory as needed to grow the\r
-  requested pool type.  All allocations are eight-byte aligned.\r
-\r
-  @param[in]   This                  Protocol instance pointer.\r
-  @param[in]   PoolType              The type of pool to allocate.\r
-                                     The only supported type is EfiRuntimeServicesData;\r
-                                     the interface will internally map this runtime request to\r
-                                     SMRAM for IA-32 and leave as this type for the Itanium\r
-                                     processor family. Other types can be ignored.\r
-  @param[in]   Size                  The number of bytes to allocate from the pool.\r
-  @param[out]  Buffer                A pointer to a pointer to the allocated buffer if the call\r
-                                     succeeds; undefined otherwise.\r
-\r
-  @retval      EFI_SUCCESS           The requested number of bytes was allocated.\r
-  @retval      EFI_OUT_OF_RESOURCES  The pool requested could not be allocated.\r
-  @retval      EFI_UNSUPPORTED       The platform is in runtime.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_ALLOCATE_POOL)(\r
-  IN EFI_SMM_BASE_PROTOCOL          *This,\r
-  IN EFI_MEMORY_TYPE                PoolType,\r
-  IN UINTN                          Size,\r
-  OUT VOID                          **Buffer\r
-  );\r
-\r
-/**\r
-  The SmmFreePool() function returns the memory specified by Buffer to the system.\r
-  On return, the memory's type is EFI SMRAM Memory.  The Buffer that is freed must\r
-  have been allocated by SmmAllocatePool().\r
-\r
-  @param[in]  This                  The protocol instance pointer.\r
-  @param[in]  Buffer                The pointer to the buffer allocation.\r
-\r
-  @retval     EFI_SUCCESS           The memory was returned to the system.\r
-  @retval     EFI_INVALID_PARAMETER The buffer was invalid.\r
-  @retval     EFI_UNSUPPORTED       The platform is in runtime.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_FREE_POOL)(\r
-  IN EFI_SMM_BASE_PROTOCOL          *This,\r
-  IN VOID                           *Buffer\r
-  );\r
-\r
-/**\r
-  This routine tells caller if execution context is SMM or not.\r
-\r
-  @param[in]   This                   The protocol instance pointer.\r
-  @param[out]  InSmm                  Whether the caller is inside SMM for IA-32\r
-                                      or servicing a PMI for the Itanium processor\r
-                                      family.\r
-\r
-  @retval      EFI_SUCCESS            The operation was successful.\r
-  @retval      EFI_INVALID_PARAMETER  InSmm was NULL.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_INSIDE_OUT)(\r
-  IN EFI_SMM_BASE_PROTOCOL          *This,\r
-  OUT BOOLEAN                       *InSmm\r
-  );\r
-\r
-/**\r
-  The GetSmstLocation() function returns the location of the System Management\r
-  Service Table.  The use of the API is such that a driver can discover the\r
-  location of the SMST in its entry point and then cache it in some driver\r
-  global variable so that the SMST can be invoked in subsequent callbacks.\r
-\r
-  @param[in]  This                  The protocol instance pointer.\r
-  @param[in]  Smst                  The pointer to the SMST.\r
-\r
-  @retval     EFI_SUCCESS           The operation was successful\r
-  @retval     EFI_INVALID_PARAMETER Smst was invalid.\r
-  @retval     EFI_UNSUPPORTED       Not in SMM.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_GET_SMST_LOCATION)(\r
-  IN EFI_SMM_BASE_PROTOCOL          *This,\r
-  IN OUT EFI_SMM_SYSTEM_TABLE       **Smst\r
-  );\r
-\r
-///\r
-/// This protocol is used to install SMM handlers for support of subsequent SMI/PMI\r
-/// activations. This protocol is available on both IA-32 and Itanium-based systems.\r
-///\r
-struct _EFI_SMM_BASE_PROTOCOL {\r
-  EFI_SMM_REGISTER_HANDLER    Register;\r
-  EFI_SMM_UNREGISTER_HANDLER  UnRegister;\r
-  EFI_SMM_COMMUNICATE         Communicate;\r
-  EFI_SMM_CALLBACK_SERVICE    RegisterCallback;\r
-  EFI_SMM_INSIDE_OUT          InSmm;\r
-  EFI_SMM_ALLOCATE_POOL       SmmAllocatePool;\r
-  EFI_SMM_FREE_POOL           SmmFreePool;\r
-  EFI_SMM_GET_SMST_LOCATION   GetSmstLocation;\r
-};\r
-\r
-extern EFI_GUID gEfiSmmBaseProtocolGuid;\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Protocol/SmmControl.h b/IntelFrameworkPkg/Include/Protocol/SmmControl.h
deleted file mode 100644 (file)
index 2d0884c..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-/** @file\r
-  This file declares the SMM Control abstraction protocol.\r
-  This protocol is used to initiate SMI/PMI activations. This protocol could be published by either:\r
-  - A processor driver to abstract the SMI/PMI IPI\r
-  - The driver that abstracts the ASIC that is supporting the APM port, such as the ICH in an\r
-  Intel chipset\r
-  Because of the possibility of performing SMI or PMI IPI transactions, the ability to generate this\r
-  event from a platform chipset agent is an optional capability for both IA-32 and Itanium-based\r
-  systems.\r
-\r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  This Protocol is defined in Framework of EFI SMM Core Interface Spec\r
-  Version 0.9.\r
-\r
-**/\r
-\r
-#ifndef _SMM_CONTROL_H_\r
-#define _SMM_CONTROL_H_\r
-\r
-\r
-typedef struct _EFI_SMM_CONTROL_PROTOCOL              EFI_SMM_CONTROL_PROTOCOL;\r
-\r
-#define EFI_SMM_CONTROL_PROTOCOL_GUID \\r
-  { \\r
-    0x8d12e231, 0xc667, 0x4fd1, {0x98, 0xf2, 0x24, 0x49, 0xa7, 0xe7, 0xb2, 0xe5 } \\r
-  }\r
-//\r
-// SMM Access specification Data Structures\r
-//\r
-typedef struct {\r
-  ///\r
-  ///  Describes the I/O location of the particular port that engendered the synchronous\r
-  ///  SMI. For example, this location can include but is not limited to the traditional\r
-  ///  PCAT* APM port of 0B2h.\r
-  ///\r
-  UINT8 SmiTriggerRegister;\r
-  ///\r
-  ///  Describes the value that was written to the respective activation port.\r
-  ///\r
-  UINT8 SmiDataRegister;\r
-} EFI_SMM_CONTROL_REGISTER;\r
-\r
-//\r
-// SMM Control specification member function\r
-//\r
-/**\r
-  Invokes SMI activation from either the preboot or runtime environment.\r
-\r
-  @param  This                  The EFI_SMM_CONTROL_PROTOCOL instance.\r
-  @param  ArgumentBuffer        The optional sized data to pass into the protocol activation.\r
-  @param  ArgumentBufferSize    The optional size of the data.\r
-  @param  Periodic              An optional mechanism to periodically repeat activation.\r
-  @param  ActivationInterval    An optional parameter to repeat at this period one\r
-                                time or, if the Periodic Boolean is set, periodically.\r
-\r
-  @retval EFI_SUCCESS           The SMI/PMI has been engendered.\r
-  @retval EFI_DEVICE_ERROR      The timing is unsupported.\r
-  @retval EFI_INVALID_PARAMETER The activation period is unsupported.\r
-  @retval EFI_NOT_STARTED       The SMM base service has not been initialized.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_ACTIVATE)(\r
-  IN EFI_SMM_CONTROL_PROTOCOL                             *This,\r
-  IN OUT INT8                                             *ArgumentBuffer OPTIONAL,\r
-  IN OUT UINTN                                            *ArgumentBufferSize OPTIONAL,\r
-  IN BOOLEAN                                              Periodic OPTIONAL,\r
-  IN UINTN                                                ActivationInterval OPTIONAL\r
-  );\r
-\r
-/**\r
-  Clears any system state that was created in response to the Active call.\r
-\r
-  @param  This                  The EFI_SMM_CONTROL_PROTOCOL instance.\r
-  @param  Periodic              Optional parameter to repeat at this period one\r
-                                time or, if the Periodic Boolean is set, periodically.\r
-\r
-  @retval EFI_SUCCESS           The SMI/PMI has been engendered.\r
-  @retval EFI_DEVICE_ERROR      The source could not be cleared.\r
-  @retval EFI_INVALID_PARAMETER The service did not support the Periodic input argument.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_DEACTIVATE)(\r
-  IN EFI_SMM_CONTROL_PROTOCOL                   *This,\r
-  IN BOOLEAN                                    Periodic OPTIONAL\r
-  );\r
-\r
-/**\r
-  Provides information on the source register used to generate the SMI.\r
-\r
-  @param  This                  The EFI_SMM_CONTROL_PROTOCOL instance.\r
-  @param  SmiRegister           A pointer to the SMI register description structure.\r
-\r
-  @retval EFI_SUCCESS           The register structure has been returned.\r
-  @retval EFI_DEVICE_ERROR      The source could not be cleared.\r
-  @retval EFI_INVALID_PARAMETER The service did not support the Periodic input argument.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_GET_REGISTER_INFO)(\r
-  IN EFI_SMM_CONTROL_PROTOCOL           *This,\r
-  IN OUT EFI_SMM_CONTROL_REGISTER       *SmiRegister\r
-  );\r
-\r
-/**\r
-  @par Protocol Description:\r
-  This protocol is used to initiate SMI/PMI activations.\r
-\r
-  @param Trigger\r
-  Initiates the SMI/PMI activation.\r
-\r
-  @param Clear\r
-  Quiesces the SMI/PMI activation.\r
-\r
-  @param GetRegisterInfo\r
-  Provides data on the register used as the source of the SMI.\r
-\r
-  @param MinimumTriggerPeriod\r
-  Minimum interval at which the platform can set the period.\r
-\r
-  @retval EFI_SUCCESS The register structure has been returned.\r
-**/\r
-\r
-//\r
-// SMM Control Protocol\r
-//\r
-/**\r
-  This protocol is used to initiate SMI/PMI activations.\r
-  This protocol could be published by either:\r
-    - A processor driver to abstract the SMI/PMI IPI.\r
-    - The driver that abstracts the ASIC that is supporting the APM port, such as the ICH in an Intel chipset.\r
-  Because of the possibility of performing SMI or PMI IPI transactions, the ability to generate this.\r
-\r
-  The EFI_SMM_CONTROL_PROTOCOL is used by the platform chipset or processor driver. This\r
-  protocol is usable both in boot services and at runtime. The runtime aspect enables an\r
-  implementation of EFI_SMM_BASE_PROTOCOL.Communicate() to layer upon this service\r
-  and provide an SMI callback from a general EFI runtime driver.\r
-  This protocol provides an abstraction to the platform hardware that generates an\r
-  SMI or PMI. There are often I/O ports that, when accessed, will engender the SMI or PMI.\r
-  Also, this hardware optionally supports the periodic genearation of these signals.\r
-\r
-**/\r
-struct _EFI_SMM_CONTROL_PROTOCOL {\r
-  ///\r
-  ///  Initiates the SMI/PMI activation.\r
-  ///\r
-  EFI_SMM_ACTIVATE          Trigger;\r
-  ///\r
-  ///  Quiesces the SMI/PMI activation.\r
-  ///\r
-  EFI_SMM_DEACTIVATE        Clear;\r
-  ///\r
-  /// Provides data on the register used as the source of the SMI.\r
-  ///\r
-  EFI_SMM_GET_REGISTER_INFO GetRegisterInfo;\r
-  ///\r
-  /// Minimum interval at which the platform can set the period. A maximum is not\r
-  /// specified in that the SMM infrastructure code can emulate a maximum interval that is\r
-  /// greater than the hardware capabilities by using software emulation in the SMM\r
-  /// infrastructure code.\r
-  ///\r
-  UINTN                     MinimumTriggerPeriod;\r
-};\r
-\r
-extern EFI_GUID gEfiSmmControlProtocolGuid;\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Protocol/SmmCpuIo.h b/IntelFrameworkPkg/Include/Protocol/SmmCpuIo.h
deleted file mode 100644 (file)
index d3dfe7c..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-/** @file\r
-  SMM CPU I/O protocol as defined in the Intel Framework specification.\r
-\r
-  This protocol provides CPU I/O and memory access within SMM.\r
-\r
-Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-**/\r
-\r
-#ifndef _SMM_CPU_IO_H_\r
-#define _SMM_CPU_IO_H_\r
-\r
-#include <Protocol/SmmCpuIo2.h>\r
-\r
-#define EFI_SMM_CPU_IO_GUID \\r
-  { \\r
-    0x5f439a0b, 0x45d8, 0x4682, {0xa4, 0xf4, 0xf0, 0x57, 0x6b, 0x51, 0x34, 0x41} \\r
-  }\r
-\r
-typedef struct _EFI_SMM_CPU_IO_INTERFACE EFI_SMM_CPU_IO_INTERFACE;\r
-\r
-/**\r
-  Provides the basic memory and I/O interfaces used to abstract accesses to devices.\r
-\r
-  The I/O operations are carried out exactly as requested.  The caller is\r
-  responsible for any alignment and I/O width issues that the bus, device,\r
-  platform, or type of I/O might require.\r
-\r
-  @param[in]      This     The EFI_SMM_CPU_IO_INTERFACE instance.\r
-  @param[in]      Width    Signifies the width of the I/O operations.\r
-  @param[in]      Address  The base address of the I/O operations.  The caller is\r
-                           responsible for aligning the Address, if required.\r
-  @param[in]      Count    The number of I/O operations to perform.\r
-  @param[in,out]  Buffer   For read operations, the destination buffer to store\r
-                           the results.  For write operations, the source buffer\r
-                           from which to write data.\r
-\r
-  @retval EFI_SUCCESS            The data was read from or written to the device.\r
-  @retval EFI_UNSUPPORTED        The Address is not valid for this system.\r
-  @retval EFI_INVALID_PARAMETER  Width or Count, or both, were invalid.\r
-  @retval EFI_OUT_OF_RESOURCES   The request could not be completed due to a lack\r
-                                 of resources.\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_CPU_IO)(\r
-  IN     EFI_SMM_CPU_IO_INTERFACE       *This,\r
-  IN     EFI_SMM_IO_WIDTH               Width,\r
-  IN     UINT64                         Address,\r
-  IN     UINTN                          Count,\r
-  IN OUT VOID                           *Buffer\r
-  );\r
-\r
-typedef struct {\r
-  ///\r
-  /// This service provides the various modalities of memory and I/O read.\r
-  ///\r
-  EFI_SMM_CPU_IO  Read;\r
-  ///\r
-  /// This service provides the various modalities of memory and I/O write.\r
-  ///\r
-  EFI_SMM_CPU_IO  Write;\r
-} EFI_SMM_IO_ACCESS;\r
-\r
-///\r
-/// SMM CPU I/O Protocol provides CPU I/O and memory access within SMM.\r
-///\r
-struct _EFI_SMM_CPU_IO_INTERFACE {\r
-  ///\r
-  /// Allows reads and writes to memory-mapped I/O space.\r
-  ///\r
-  EFI_SMM_IO_ACCESS Mem;\r
-  ///\r
-  /// Allows reads and writes to I/O space.\r
-  ///\r
-  EFI_SMM_IO_ACCESS Io;\r
-};\r
-\r
-extern EFI_GUID gEfiSmmCpuIoGuid;\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Protocol/SmmCpuSaveState.h b/IntelFrameworkPkg/Include/Protocol/SmmCpuSaveState.h
deleted file mode 100644 (file)
index ccf3e85..0000000
+++ /dev/null
@@ -1,169 +0,0 @@
-/** @file\r
-  This file declares the SMM CPU Save State protocol, which provides the processor\r
-  save-state information for IA-32 and Itanium processors.\r
-\r
-Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  This Protocol is defined in Framework of EFI SMM Core Interface Spec\r
-  Version 0.91.\r
-**/\r
-\r
-#ifndef _SMM_CPU_SAVE_STATE_H_\r
-#define _SMM_CPU_SAVE_STATE_H_\r
-\r
-#define EFI_SMM_CPU_SAVE_STATE_PROTOCOL_GUID \\r
-  { \\r
-    0x21f302ad, 0x6e94, 0x471b, {0x84, 0xbc, 0xb1, 0x48, 0x0, 0x40, 0x3a, 0x1d} \\r
-  }\r
-\r
-typedef struct _EFI_SMM_CPU_SAVE_STATE_PROTOCOL  EFI_SMM_CPU_SAVE_STATE_PROTOCOL;\r
-\r
-#define EFI_SMM_MIN_REV_ID_x64  0x30006\r
-\r
-#pragma pack (1)\r
-\r
-///\r
-/// CPU save-state strcuture for IA32 and X64.\r
-///\r
-/// This struct declaration does not exctly match the Framework SMM CIS 0.91 because the\r
-/// union in the Framework SMM CIS 0.91 contains an unnamed union member that causes build\r
-/// breaks on many compilers with high warning levels.  Instead, the UINT8 Reserved[0x200]\r
-/// field has been moved into EFI_SMM_CPU_STATE32.  This maintains binary compatibility for\r
-/// the layout and also maintains source comaptibility for access of all fields in this\r
-/// union.\r
-///\r
-/// This struct declaration does not exctly match the Framework SMM CIS 0.91 because\r
-/// the Framework SMM CIS 0.91 uses ASM_XXX for base types in this structure.  These\r
-/// have been changed to use the base types defined in the UEFI Specification.\r
-///\r
-typedef struct {\r
-  UINT8   Reserved[0x200];\r
-  UINT8   Reserved1[0xf8];  // fe00h\r
-  UINT32  SMBASE;           // fef8h\r
-  UINT32  SMMRevId;         // fefch\r
-  UINT16  IORestart;        // ff00h\r
-  UINT16  AutoHALTRestart;  // ff02h\r
-  UINT32  IEDBASE;          // ff04h\r
-  UINT8   Reserved2[0x98];  // ff08h\r
-  UINT32  IOMemAddr;        // ffa0h\r
-  UINT32  IOMisc;           // ffa4h\r
-  UINT32  _ES;\r
-  UINT32  _CS;\r
-  UINT32  _SS;\r
-  UINT32  _DS;\r
-  UINT32  _FS;\r
-  UINT32  _GS;\r
-  UINT32  _LDTBase;\r
-  UINT32  _TR;\r
-  UINT32  _DR7;\r
-  UINT32  _DR6;\r
-  UINT32  _EAX;\r
-  UINT32  _ECX;\r
-  UINT32  _EDX;\r
-  UINT32  _EBX;\r
-  UINT32  _ESP;\r
-  UINT32  _EBP;\r
-  UINT32  _ESI;\r
-  UINT32  _EDI;\r
-  UINT32  _EIP;\r
-  UINT32  _EFLAGS;\r
-  UINT32  _CR3;\r
-  UINT32  _CR0;\r
-} EFI_SMM_CPU_STATE32;\r
-\r
-///\r
-/// This struct declaration does not exctly match the Framework SMM CIS 0.91 because\r
-/// the Framework SMM CIS 0.91 uses ASM_XXX for base types in this structure.  These\r
-/// have been changed to use the base types defined in the UEFI Specification.\r
-///\r
-typedef struct {\r
-  UINT8   Reserved1[0x1d0];  // fc00h\r
-  UINT32  GdtBaseHiDword;    // fdd0h\r
-  UINT32  LdtBaseHiDword;    // fdd4h\r
-  UINT32  IdtBaseHiDword;    // fdd8h\r
-  UINT8   Reserved2[0xc];    // fddch\r
-  UINT64  IO_EIP;            // fde8h\r
-  UINT8   Reserved3[0x50];   // fdf0h\r
-  UINT32  _CR4;              // fe40h\r
-  UINT8   Reserved4[0x48];   // fe44h\r
-  UINT32  GdtBaseLoDword;    // fe8ch\r
-  UINT32  GdtLimit;          // fe90h\r
-  UINT32  IdtBaseLoDword;    // fe94h\r
-  UINT32  IdtLimit;          // fe98h\r
-  UINT32  LdtBaseLoDword;    // fe9ch\r
-  UINT32  LdtLimit;          // fea0h\r
-  UINT32  LdtInfo;           // fea4h\r
-  UINT8   Reserved5[0x50];   // fea8h\r
-  UINT32  SMBASE;            // fef8h\r
-  UINT32  SMMRevId;          // fefch\r
-  UINT16  AutoHALTRestart;   // ff00h\r
-  UINT16  IORestart;         // ff02h\r
-  UINT32  IEDBASE;           // ff04h\r
-  UINT8   Reserved6[0x14];   // ff08h\r
-  UINT64  _R15;              // ff1ch\r
-  UINT64  _R14;\r
-  UINT64  _R13;\r
-  UINT64  _R12;\r
-  UINT64  _R11;\r
-  UINT64  _R10;\r
-  UINT64  _R9;\r
-  UINT64  _R8;\r
-  UINT64  _RAX;              // ff5ch\r
-  UINT64  _RCX;\r
-  UINT64  _RDX;\r
-  UINT64  _RBX;\r
-  UINT64  _RSP;\r
-  UINT64  _RBP;\r
-  UINT64  _RSI;\r
-  UINT64  _RDI;\r
-  UINT64  IOMemAddr;         // ff9ch\r
-  UINT32  IOMisc;            // ffa4h\r
-  UINT32  _ES;               // ffa8h\r
-  UINT32  _CS;\r
-  UINT32  _SS;\r
-  UINT32  _DS;\r
-  UINT32  _FS;\r
-  UINT32  _GS;\r
-  UINT32  _LDTR;             // ffc0h\r
-  UINT32  _TR;\r
-  UINT64  _DR7;              // ffc8h\r
-  UINT64  _DR6;\r
-  UINT64  _RIP;              // ffd8h\r
-  UINT64  IA32_EFER;         // ffe0h\r
-  UINT64  _RFLAGS;           // ffe8h\r
-  UINT64  _CR3;              // fff0h\r
-  UINT64  _CR0;              // fff8h\r
-} EFI_SMM_CPU_STATE64;\r
-\r
-///\r
-/// Union of CPU save-state strcutures for IA32 and X64.\r
-///\r
-/// This union declaration does not exctly match the Framework SMM CIS 0.91 because the\r
-/// union in the Framework SMM CIS 0.91 contains an unnamed union member that causes build\r
-/// breaks on many compilers with high warning levels.  Instead, the UINT8 Reserved[0x200]\r
-/// field has been moved into EFI_SMM_CPU_STATE32.  This maintains binary compatibility for\r
-/// the layout and also maintains source comaptibility for access of all fields in this\r
-/// union.\r
-///\r
-typedef union  {\r
-  EFI_SMM_CPU_STATE32  x86;\r
-  EFI_SMM_CPU_STATE64  x64;\r
-} EFI_SMM_CPU_STATE;\r
-\r
-#pragma pack ()\r
-\r
-///\r
-/// Provides a programatic means to access SMM save state.\r
-///\r
-struct _EFI_SMM_CPU_SAVE_STATE_PROTOCOL {\r
-  ///\r
-  /// Reference to a list of save states.\r
-  ///\r
-  EFI_SMM_CPU_STATE  **CpuSaveState;\r
-};\r
-\r
-extern EFI_GUID gEfiSmmCpuSaveStateProtocolGuid;\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Protocol/SmmGpiDispatch.h b/IntelFrameworkPkg/Include/Protocol/SmmGpiDispatch.h
deleted file mode 100644 (file)
index 8acd6c5..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-/** @file\r
-  This file declares the Smm Gpi Smi Child Protocol.\r
-\r
-  The EFI_SMM_GPI_DISPATCH_PROTOCOL is defined in Framework of EFI SMM Core Interface Spec\r
-  Version 0.9. It provides the ability to install child handlers for the given event types.\r
-  Several inputs can be enabled. This purpose of this interface is to generate an\r
-  SMI in response to any of these inputs having a true value provided.\r
-\r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-**/\r
-\r
-#ifndef _SMM_GPI_DISPATCH_H_\r
-#define _SMM_GPI_DISPATCH_H_\r
-\r
-\r
-//\r
-// Global ID for the GPI SMI Protocol\r
-//\r
-#define EFI_SMM_GPI_DISPATCH_PROTOCOL_GUID \\r
-  { \\r
-    0xe0744b81, 0x9513, 0x49cd, {0x8c, 0xea, 0xe9, 0x24, 0x5e, 0x70, 0x39, 0xda } \\r
-  }\r
-\r
-typedef struct _EFI_SMM_GPI_DISPATCH_PROTOCOL  EFI_SMM_GPI_DISPATCH_PROTOCOL;\r
-\r
-//\r
-// Related Definitions\r
-//\r
-\r
-//\r
-// GpiMask is a bit mask of 32 possible general purpose inputs that can generate\r
-// an SMI. Bit 0 corresponds to logical GPI[0], 1 corresponds to logical GPI[1], and so on.\r
-//\r
-// The logical GPI index to physical pin on device is described by the GPI device name\r
-// found on the same handle as the GpiSmi child dispatch protocol.  The GPI device name\r
-// is defined as protocol with a GUID name and NULL protocol pointer.\r
-//\r
-typedef struct {\r
-  UINTN GpiNum;\r
-} EFI_SMM_GPI_DISPATCH_CONTEXT;\r
-\r
-//\r
-// Member functions\r
-//\r
-\r
-/**\r
-  Dispatch function for a GPI SMI handler.\r
-\r
-  @param  DispatchHandle        The handle of this dispatch function.\r
-  @param  DispatchContext       The pointer to the dispatch function's context.\r
-                                The DispatchContext fields are filled in by the\r
-                                dispatching driver prior to invoking this dispatch\r
-                                function.\r
-**/\r
-typedef\r
-VOID\r
-(EFIAPI *EFI_SMM_GPI_DISPATCH)(\r
-  IN  EFI_HANDLE                    DispatchHandle,\r
-  IN  EFI_SMM_GPI_DISPATCH_CONTEXT  *DispatchContext\r
-  );\r
-\r
-/**\r
-  Register a child SMI source dispatch function with a parent SMM driver\r
-\r
-  @param  This                  The pointer to the EFI_SMM_GPI_DISPATCH_PROTOCOL instance.\r
-  @param  DispatchFunction      Function to install.\r
-  @param  DispatchContext       The pointer to the dispatch function's context.\r
-                                Indicates to the register\r
-                                function the GPI(s) for which the dispatch function\r
-                                should be invoked.\r
-  @param  DispatchHandle        The handle generated by the dispatcher to track the\r
-                                function instance.\r
-\r
-  @retval EFI_SUCCESS           The dispatch function has been successfully\r
-                                registered, and the SMI source has been enabled.\r
-  @retval EFI_DEVICE_ERROR      The driver was unable to enable the SMI source.\r
-  @retval EFI_OUT_OF_RESOURCES  Not enough memory (system or SMM) to manage this\r
-                                child.\r
-  @retval EFI_INVALID_PARAMETER DispatchContext is invalid. The GPI input value\r
-                                is not within valid range.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_GPI_REGISTER)(\r
-  IN EFI_SMM_GPI_DISPATCH_PROTOCOL           *This,\r
-  IN EFI_SMM_GPI_DISPATCH                    DispatchFunction,\r
-  IN EFI_SMM_GPI_DISPATCH_CONTEXT            *DispatchContext,\r
-  OUT EFI_HANDLE                             *DispatchHandle\r
-  );\r
-\r
-/**\r
-  Unregisters a General Purpose Input (GPI) service.\r
-\r
-  @param  This                  The pointer to the EFI_SMM_GPI_DISPATCH_PROTOCOL instance.\r
-  @param  DispatchHandle        The handle of the service to remove.\r
-\r
-  @retval EFI_SUCCESS           The dispatch function has been successfully\r
-                                unregistered, and the SMI source has been disabled,\r
-                                if there are no other registered child dispatch\r
-                                functions for this SMI source.\r
-  @retval EFI_INVALID_PARAMETER DispatchHandle is invalid.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_GPI_UNREGISTER)(\r
-  IN EFI_SMM_GPI_DISPATCH_PROTOCOL           *This,\r
-  IN EFI_HANDLE                              DispatchHandle\r
-  );\r
-\r
-//\r
-// Interface structure for the SMM GPI SMI Dispatch Protocol\r
-//\r
-struct _EFI_SMM_GPI_DISPATCH_PROTOCOL {\r
-  EFI_SMM_GPI_REGISTER    Register;\r
-  EFI_SMM_GPI_UNREGISTER  UnRegister;\r
-\r
-  ///\r
-  /// Denotes the maximum value of inputs that can have handlers attached.\r
-  ///\r
-  UINTN                   NumSupportedGpis;\r
-};\r
-\r
-extern EFI_GUID gEfiSmmGpiDispatchProtocolGuid;\r
-\r
-#endif\r
-\r
diff --git a/IntelFrameworkPkg/Include/Protocol/SmmIchnDispatch.h b/IntelFrameworkPkg/Include/Protocol/SmmIchnDispatch.h
deleted file mode 100644 (file)
index 3cf86c0..0000000
+++ /dev/null
@@ -1,183 +0,0 @@
-/** @file\r
-  Provides the parent dispatch service for a given SMI source generator.\r
-  The EFI_SMM_ICHN_DISPATCH_PROTOCOL provides the ability to install child handlers for\r
-  the given event types.\r
-\r
-Copyright (c) 2008 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  This Protocol is defined in Framework of EFI SMM Core Interface Spec\r
-  Version 0.9.\r
-\r
-**/\r
-\r
-#ifndef _EFI_SMM_ICHN_DISPATCH_H_\r
-#define _EFI_SMM_ICHN_DISPATCH_H_\r
-\r
-\r
-//\r
-// Global ID for the ICH SMI Protocol\r
-//\r
-#define EFI_SMM_ICHN_DISPATCH_PROTOCOL_GUID \\r
-  { \\r
-    0xc50b323e, 0x9075, 0x4f2a, {0xac, 0x8e, 0xd2, 0x59, 0x6a, 0x10, 0x85, 0xcc } \\r
-  }\r
-\r
-typedef struct _EFI_SMM_ICHN_DISPATCH_PROTOCOL  EFI_SMM_ICHN_DISPATCH_PROTOCOL;\r
-\r
-//\r
-// Related Definitions\r
-//\r
-//\r
-// ICHN Specific SMIs.  These are miscellaneous SMI sources that are supported by the\r
-// ICHN specific SMI implementation.  These may change over time.  TrapNumber is only\r
-// valid if the Type is Trap.\r
-//\r
-typedef enum {\r
-  //\r
-  // NOTE: NEVER delete items from this list/enumeration!  Doing so will prevent other versions\r
-  // of the code from compiling.  If the ICH version your driver is written for doesn't support\r
-  // some of these SMIs, then simply return EFI_UNSUPPORTED when a child/client tries to register\r
-  // for them.\r
-  //\r
-  IchnMch,\r
-  IchnPme,\r
-  IchnRtcAlarm,\r
-  IchnRingIndicate,\r
-  IchnAc97Wake,\r
-  IchnSerialIrq,\r
-  IchnY2KRollover,\r
-  IchnTcoTimeout,\r
-  IchnOsTco,\r
-  IchnNmi,\r
-  IchnIntruderDetect,\r
-  IchnBiosWp,\r
-  IchnMcSmi,\r
-  IchnPmeB0,\r
-  IchnThrmSts,\r
-  IchnSmBus,\r
-  IchnIntelUsb2,\r
-  IchnMonSmi7,\r
-  IchnMonSmi6,\r
-  IchnMonSmi5,\r
-  IchnMonSmi4,\r
-  IchnDevTrap13,\r
-  IchnDevTrap12,\r
-  IchnDevTrap11,\r
-  IchnDevTrap10,\r
-  IchnDevTrap9,\r
-  IchnDevTrap8,\r
-  IchnDevTrap7,\r
-  IchnDevTrap6,\r
-  IchnDevTrap5,\r
-  IchnDevTrap3,\r
-  IchnDevTrap2,\r
-  IchnDevTrap1,\r
-  IchnDevTrap0,\r
-  IchnIoTrap3,\r
-  IchnIoTrap2,\r
-  IchnIoTrap1,\r
-  IchnIoTrap0,\r
-  IchnPciExpress,\r
-  IchnMonitor,\r
-  IchnSpi,\r
-  IchnQRT,\r
-  IchnGpioUnlock,\r
-  //\r
-  // INSERT NEW ITEMS JUST BEFORE THIS LINE\r
-  //\r
-  NUM_ICHN_TYPES  // the number of items in this enumeration\r
-} EFI_SMM_ICHN_SMI_TYPE;\r
-\r
-typedef struct {\r
-  EFI_SMM_ICHN_SMI_TYPE Type;\r
-} EFI_SMM_ICHN_DISPATCH_CONTEXT;\r
-\r
-//\r
-// Member functions\r
-//\r
-/**\r
-  Dispatch function for a ICHN specific SMI handler.\r
-\r
-  @param  DispatchHandle        The handle of this dispatch function.\r
-  @param  DispatchContext       The pointer to the dispatch function's context.\r
-                                The DispatchContext fields are filled in\r
-                                by the dispatching driver prior to\r
-                                invoking this dispatch function.\r
-\r
-  @return None\r
-\r
-**/\r
-typedef\r
-VOID\r
-(EFIAPI *EFI_SMM_ICHN_DISPATCH)(\r
-  IN  EFI_HANDLE                      DispatchHandle,\r
-  IN  EFI_SMM_ICHN_DISPATCH_CONTEXT   *DispatchContext\r
-  );\r
-\r
-/**\r
-  Register a child SMI source dispatch function with a parent SMM driver.\r
-\r
-  @param  This                  The pointer to the EFI_SMM_ICHN_DISPATCH_PROTOCOL instance.\r
-  @param  DispatchFunction      The function to install.\r
-  @param  DispatchContext       The pointer to the dispatch function's context.\r
-                                The caller fills in this context before calling\r
-                                the register function to indicate to the register\r
-                                function the ICHN SMI source for which the dispatch\r
-                                function should be invoked.\r
-  @param  DispatchHandle        The handle generated by the dispatcher to track the function\r
-                                instance.\r
-\r
-  @retval EFI_SUCCESS           The dispatch function has been successfully\r
-                                registered and the SMI source has been enabled.\r
-  @retval EFI_DEVICE_ERROR      The driver could not enable the SMI source.\r
-  @retval EFI_OUT_OF_RESOURCES  Not enough memory (system or SMM) to manage this\r
-                                child.\r
-  @retval EFI_INVALID_PARAMETER DispatchContext is invalid. The ICHN input value\r
-                                is not within valid range.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_ICHN_REGISTER)(\r
-  IN EFI_SMM_ICHN_DISPATCH_PROTOCOL            *This,\r
-  IN EFI_SMM_ICHN_DISPATCH                     DispatchFunction,\r
-  IN EFI_SMM_ICHN_DISPATCH_CONTEXT             *DispatchContext,\r
-  OUT EFI_HANDLE                               *DispatchHandle\r
-  );\r
-\r
-/**\r
-  Unregister a child SMI source dispatch function with a parent SMM driver\r
-\r
-  @param  This                  The pointer to the EFI_SMM_ICHN_DISPATCH_PROTOCOL instance.\r
-  @param  DispatchHandle        The handle of the service to remove.\r
-\r
-  @retval EFI_SUCCESS           The dispatch function has been successfully\r
-                                unregistered, and the SMI source has been disabled,\r
-                                if there are no other registered child dispatch\r
-                                functions for this SMI source.\r
-  @retval EFI_INVALID_PARAMETER The handle is invalid.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_ICHN_UNREGISTER)(\r
-  IN EFI_SMM_ICHN_DISPATCH_PROTOCOL            *This,\r
-  IN EFI_HANDLE                                DispatchHandle\r
-  );\r
-\r
-//\r
-// Interface structure for the SMM ICHN specific SMI Dispatch Protocol\r
-//\r
-/**\r
-  Provides the parent dispatch service for a given SMI source generator.\r
-**/\r
-struct _EFI_SMM_ICHN_DISPATCH_PROTOCOL {\r
-  EFI_SMM_ICHN_REGISTER   Register;     ///< Installs a child service to be dispatched by this protocol.\r
-  EFI_SMM_ICHN_UNREGISTER UnRegister;   ///< Removes a child service dispatched by this protocol.\r
-};\r
-\r
-extern EFI_GUID gEfiSmmIchnDispatchProtocolGuid;\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Protocol/SmmPeriodicTimerDispatch.h b/IntelFrameworkPkg/Include/Protocol/SmmPeriodicTimerDispatch.h
deleted file mode 100644 (file)
index 8cda37c..0000000
+++ /dev/null
@@ -1,170 +0,0 @@
-/** @file\r
-  Provides the parent dispatch service for the periodical timer SMI source generator.\r
-\r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  This Protocol is defined in Framework of EFI SMM Core Interface Spec\r
-  Version 0.9.\r
-\r
-**/\r
-\r
-#ifndef _EFI_SMM_PERIODIC_TIMER_DISPATCH_H_\r
-#define _EFI_SMM_PERIODIC_TIMER_DISPATCH_H_\r
-\r
-\r
-//\r
-// Global ID for the Periodic Timer SMI Protocol\r
-//\r
-#define EFI_SMM_PERIODIC_TIMER_DISPATCH_PROTOCOL_GUID \\r
-  { \\r
-    0x9cca03fc, 0x4c9e, 0x4a19, {0x9b, 0x6, 0xed, 0x7b, 0x47, 0x9b, 0xde, 0x55 } \\r
-  }\r
-\r
-typedef struct _EFI_SMM_PERIODIC_TIMER_DISPATCH_PROTOCOL  EFI_SMM_PERIODIC_TIMER_DISPATCH_PROTOCOL;\r
-\r
-//\r
-// Related Definitions\r
-//\r
-\r
-typedef struct {\r
-  ///\r
-  /// The minimum period of time that the child gets called, in 100 nanosecond units.\r
-  /// The child will be called back after a time greater than the time Period.\r
-  ///\r
-  UINT64  Period;\r
-  ///\r
-  /// The period of time interval between SMIs.  Children of this interface\r
-  /// should use this field when registering for periodic timer intervals when a finer\r
-  /// granularity periodic SMI is desired.  Valid values for this field are those returned\r
-  /// by GetNextInterval.  A value of 0 indicates the parent is allowed to use any SMI\r
-  /// interval period to satisfy the requested period.\r
-  ///\r
-  UINT64  SmiTickInterval;\r
-  ///\r
-  /// The actual time in 100 nanosecond units elapsed since last called. A\r
-  /// value of 0 indicates an unknown amount of time.\r
-  ///\r
-  UINT64  ElapsedTime;\r
-} EFI_SMM_PERIODIC_TIMER_DISPATCH_CONTEXT;\r
-\r
-//\r
-// Member functions\r
-//\r
-/**\r
-  Dispatch function for a Periodic Timer SMI handler.\r
-\r
-  @param  DispatchHandle        The handle of this dispatch function.\r
-  @param  DispatchContext       The pointer to the dispatch function's context.\r
-                                The DispatchContext fields are filled in\r
-                                by the dispatching driver prior to\r
-                                invoking this dispatch function.\r
-\r
-  @return None\r
-\r
-**/\r
-typedef\r
-VOID\r
-(EFIAPI *EFI_SMM_PERIODIC_TIMER_DISPATCH)(\r
-  IN EFI_HANDLE                                DispatchHandle,\r
-  IN EFI_SMM_PERIODIC_TIMER_DISPATCH_CONTEXT   *DispatchContext\r
-  );\r
-\r
-/**\r
-  Returns the next SMI tick period supported by the chipset.  The order\r
-  returned is from longest to shortest interval period.\r
-\r
-  @param  This                  The protocol instance pointer.\r
-  @param  SmiTickInterval       The pointer to pointer of next shorter SMI interval\r
-                                period supported by the child. This parameter works as a get-first,\r
-                                get-next field. The first time this function is called, *SmiTickInterval\r
-                                should be set to NULL to get the longest SMI interval. The returned\r
-                                *SmiTickInterval should be passed in on subsequent calls to get the\r
-                                next shorter interval period until *SmiTickInterval = NULL.\r
-\r
-  @retval EFI_SUCCESS           The service returned successfully.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_PERIODIC_TIMER_INTERVAL)(\r
-  IN EFI_SMM_PERIODIC_TIMER_DISPATCH_PROTOCOL           *This,\r
-  IN OUT UINT64                                         **SmiTickInterval\r
-  );\r
-\r
-/**\r
-  Register a child SMI source dispatch function with a parent SMM driver\r
-\r
-  @param  This                  The pointer to the EFI_SMM_PERIODIC_TIMER_DISPATCH_PROTOCOL instance.\r
-  @param  DispatchFunction      The function to install.\r
-  @param  DispatchContext       The pointer to the dispatch function's context.\r
-                                Indicates to the register\r
-                                function the period at which the dispatch function\r
-                                should be invoked.\r
-  @param  DispatchHandle        The handle generated by the dispatcher to track the function instance.\r
-\r
-  @retval EFI_SUCCESS           The dispatch function has been successfully\r
-                                registered, and the SMI source has been enabled.\r
-  @retval EFI_DEVICE_ERROR      The driver was unable to enable the SMI source.\r
-  @retval EFI_OUT_OF_RESOURCES  Not enough memory (system or SMM) to manage this\r
-                                child.\r
-  @retval EFI_INVALID_PARAMETER DispatchContext is invalid. The period input value\r
-                                is not within valid range.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_PERIODIC_TIMER_REGISTER)(\r
-  IN EFI_SMM_PERIODIC_TIMER_DISPATCH_PROTOCOL          *This,\r
-  IN EFI_SMM_PERIODIC_TIMER_DISPATCH                   DispatchFunction,\r
-  IN EFI_SMM_PERIODIC_TIMER_DISPATCH_CONTEXT           *DispatchContext,\r
-  OUT EFI_HANDLE                                       *DispatchHandle\r
-  );\r
-\r
-/**\r
-  Unregisters a periodic timer service.\r
-\r
-  @param  This                  The pointer to the EFI_SMM_PERIODIC_TIMER_DISPATCH_PROTOCOL instance.\r
-  @param  DispatchHandle        The handle of the service to remove.\r
-\r
-  @retval EFI_SUCCESS           The dispatch function has been successfully\r
-                                unregistered, and the SMI source has been disabled\r
-                                if there are no other registered child dispatch\r
-                                functions for this SMI source.\r
-  @retval EFI_INVALID_PARAMETER The handle is invalid.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_PERIODIC_TIMER_UNREGISTER)(\r
-  IN EFI_SMM_PERIODIC_TIMER_DISPATCH_PROTOCOL          *This,\r
-  IN EFI_HANDLE                                        DispatchHandle\r
-  );\r
-\r
-//\r
-// Interface structure for the SMM Periodic Timer Dispatch Protocol\r
-//\r
-/**\r
-  Provides the parent dispatch service for the periodical timer SMI source generator.\r
-**/\r
-struct _EFI_SMM_PERIODIC_TIMER_DISPATCH_PROTOCOL {\r
-  ///\r
-  /// Installs a child service to be dispatched by this protocol.\r
-  ///\r
-  EFI_SMM_PERIODIC_TIMER_REGISTER   Register;\r
-\r
-  ///\r
-  /// Removes a child service dispatched by this protocol.\r
-  ///\r
-  EFI_SMM_PERIODIC_TIMER_UNREGISTER UnRegister;\r
-\r
-  ///\r
-  /// Returns the next SMI tick period that is supported by the chipset.\r
-  ///\r
-  EFI_SMM_PERIODIC_TIMER_INTERVAL   GetNextShorterInterval;\r
-};\r
-\r
-extern EFI_GUID gEfiSmmPeriodicTimerDispatchProtocolGuid;\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Protocol/SmmPowerButtonDispatch.h b/IntelFrameworkPkg/Include/Protocol/SmmPowerButtonDispatch.h
deleted file mode 100644 (file)
index df14fb9..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-/** @file\r
-  Provides the parent dispatch service for the power button SMI source generator.\r
-\r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  This Protocol is defined in Framework of EFI SMM Core Interface Spec\r
-  Version 0.9.\r
-\r
-**/\r
-\r
-#ifndef _EFI_SMM_POWER_BUTTON_DISPATCH_H_\r
-#define _EFI_SMM_POWER_BUTTON_DISPATCH_H_\r
-\r
-\r
-//\r
-// Global ID for the Power Button SMI Protocol\r
-//\r
-#define EFI_SMM_POWER_BUTTON_DISPATCH_PROTOCOL_GUID \\r
-  { \\r
-    0xb709efa0, 0x47a6, 0x4b41, {0xb9, 0x31, 0x12, 0xec, 0xe7, 0xa8, 0xee, 0x56 } \\r
-  }\r
-\r
-typedef struct _EFI_SMM_POWER_BUTTON_DISPATCH_PROTOCOL  EFI_SMM_POWER_BUTTON_DISPATCH_PROTOCOL;\r
-\r
-//\r
-// Related Definitions\r
-//\r
-//\r
-// Power Button. Example, Use for changing LEDs before ACPI OS is on.\r
-//    - DXE/BDS Phase\r
-//    - OS Install Phase\r
-//\r
-typedef enum {\r
-  PowerButtonEntry,\r
-  PowerButtonExit\r
-} EFI_POWER_BUTTON_PHASE;\r
-\r
-typedef struct {\r
-  EFI_POWER_BUTTON_PHASE  Phase;\r
-} EFI_SMM_POWER_BUTTON_DISPATCH_CONTEXT;\r
-\r
-//\r
-// Member functions\r
-//\r
-/**\r
-  Dispatch function for a Power Button SMI handler.\r
-\r
-  @param[in]  DispatchHandle        The handle of this dispatch function.\r
-  @param[in]  DispatchContext       The pointer to the dispatch function's context.\r
-                                    The DispatchContext fields are filled in\r
-                                    by the dispatching driver prior to\r
-                                    invoking this dispatch function.\r
-\r
-**/\r
-typedef\r
-VOID\r
-(EFIAPI *EFI_SMM_POWER_BUTTON_DISPATCH)(\r
-  IN  EFI_HANDLE                             DispatchHandle,\r
-  IN  EFI_SMM_POWER_BUTTON_DISPATCH_CONTEXT  *DispatchContext\r
-  );\r
-\r
-/**\r
-  Provides the parent dispatch service for a given SMI source generator\r
-\r
-  @param[in]   This                  The pointer to the\r
-                                     EFI_SMM_POWER_BUTTON_DISPATCH_PROTOCOL instance.\r
-  @param[in]   DispatchFunction      The function to install.\r
-  @param[in]   DispatchContext       The pointer to the dispatch function's context.\r
-                                     Indicates to the register\r
-                                     function the Power Button SMI phase for which\r
-                                     to invoke the dispatch function.\r
-  @param[out]  DispatchHandle        Handle generated by the dispatcher to track\r
-                                     the function instance.\r
-\r
-  @retval      EFI_SUCCESS           The dispatch function has been successfully\r
-                                     registered and the SMI source has been enabled.\r
-  @retval      EFI_DEVICE_ERROR      The driver was unable to enable the SMI source.\r
-  @retval      EFI_OUT_OF_RESOURCES  Not enough memory (system or SMM) to manage this\r
-                                     child.\r
-  @retval      EFI_INVALID_PARAMETER DispatchContext is invalid. The Power Button SMI\r
-                                     phase is not within valid range.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_POWER_BUTTON_REGISTER)(\r
-  IN EFI_SMM_POWER_BUTTON_DISPATCH_PROTOCOL           *This,\r
-  IN EFI_SMM_POWER_BUTTON_DISPATCH                    DispatchFunction,\r
-  IN EFI_SMM_POWER_BUTTON_DISPATCH_CONTEXT            *DispatchContext,\r
-  OUT EFI_HANDLE                                      *DispatchHandle\r
-  );\r
-\r
-/**\r
-  Unregisters a power-button service.\r
-\r
-  @param[in]  This                  The pointer to the EFI_SMM_POWER_BUTTON_DISPATCH_PROTOCOL instance.\r
-  @param[in]  DispatchHandle        The handle of the service to remove.\r
-\r
-  @retval     EFI_SUCCESS           The dispatch function has been successfully\r
-                                    unregistered, and the SMI source has been\r
-            disabled, if there are no other registered\r
-            child dispatch functions for this SMI\r
-            source.\r
-  @retval     EFI_INVALID_PARAMETER The handle is invalid.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_POWER_BUTTON_UNREGISTER)(\r
-  IN EFI_SMM_POWER_BUTTON_DISPATCH_PROTOCOL            *This,\r
-  IN EFI_HANDLE                                        DispatchHandle\r
-  );\r
-\r
-/**\r
-  @par Protocol Description:\r
-  Provides the parent dispatch service for the SMM power button SMI source generator.\r
-\r
-**/\r
-struct _EFI_SMM_POWER_BUTTON_DISPATCH_PROTOCOL {\r
-  ///\r
-  ///  Installs a child service to be dispatched by this protocol.\r
-  ///\r
-  EFI_SMM_POWER_BUTTON_REGISTER   Register;\r
-\r
-  ///\r
-  ///  Removes a child service dispatched by this protocol.\r
-  ///\r
-  EFI_SMM_POWER_BUTTON_UNREGISTER UnRegister;\r
-};\r
-\r
-extern EFI_GUID gEfiSmmPowerButtonDispatchProtocolGuid;\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Protocol/SmmStandbyButtonDispatch.h b/IntelFrameworkPkg/Include/Protocol/SmmStandbyButtonDispatch.h
deleted file mode 100644 (file)
index 1b5a988..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-/** @file\r
-  Provides the parent dispatch service for the standby button SMI source generator.\r
-\r
-  The SMM Standby Button Dispatch Protocol is defined in\r
-  the Intel Platform Innovation Framework for EFI SMM Core Interface Specification\r
-  (SMM CIS) Version 0.9.\r
-\r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  This Protocol is defined in Framework of EFI SMM Core Interface Spec\r
-  Version 0.9.\r
-\r
-**/\r
-\r
-#ifndef _EFI_SMM_STANDBY_BUTTON_DISPATCH_H_\r
-#define _EFI_SMM_STANDBY_BUTTON_DISPATCH_H_\r
-\r
-//\r
-// Share some common definitions with PI SMM\r
-//\r
-#include <Protocol/SmmStandbyButtonDispatch2.h>\r
-\r
-//\r
-// Global ID for the Standby Button SMI Protocol\r
-//\r
-#define EFI_SMM_STANDBY_BUTTON_DISPATCH_PROTOCOL_GUID \\r
-  { \\r
-    0x78965b98, 0xb0bf, 0x449e, {0x8b, 0x22, 0xd2, 0x91, 0x4e, 0x49, 0x8a, 0x98 } \\r
-  }\r
-\r
-typedef struct _EFI_SMM_STANDBY_BUTTON_DISPATCH_PROTOCOL  EFI_SMM_STANDBY_BUTTON_DISPATCH_PROTOCOL;\r
-\r
-//\r
-// Related Definitions\r
-//\r
-\r
-typedef struct {\r
-  ///  Describes whether the child handler should be invoked upon the entry to the button\r
-  ///  activation or upon exit (i.e., upon receipt of the button press event or upon release of\r
-  ///  the event).\r
-  EFI_STANDBY_BUTTON_PHASE  Phase;\r
-} EFI_SMM_STANDBY_BUTTON_DISPATCH_CONTEXT;\r
-\r
-//\r
-// Member functions\r
-//\r
-\r
-/**\r
-  Dispatch function for a Standby Button SMI handler.\r
-\r
-  @param  DispatchHandle        The handle of this dispatch function.\r
-  @param  DispatchContext       The pointer to the dispatch function's context.\r
-                                The DispatchContext fields are filled in\r
-                                by the dispatching driver prior to\r
-                                invoking this dispatch function.\r
-\r
-**/\r
-typedef\r
-VOID\r
-(EFIAPI *EFI_SMM_STANDBY_BUTTON_DISPATCH)(\r
-  IN  EFI_HANDLE                                DispatchHandle,\r
-  IN  EFI_SMM_STANDBY_BUTTON_DISPATCH_CONTEXT   *DispatchContext\r
-  );\r
-\r
-/**\r
-  Provides the parent dispatch service for a given SMI source generator\r
-\r
-  @param  This                  The pointer to the EFI_SMM_STANDBY_BUTTON_DISPATCH_PROTOCOL instance.\r
-  @param  DispatchFunction      The function to install.\r
-  @param  DispatchContext       The pointer to the dispatch function's context.\r
-                                Indicates to the register function the Standby\r
-                                Button SMI phase for which to invoke the dispatch\r
-                                function.\r
-  @param  DispatchHandle        The handle generated by the dispatcher to track the\r
-                                function instance.\r
-\r
-  @retval EFI_SUCCESS           The dispatch function has been successfully\r
-                                registered, and the SMI source has been enabled.\r
-  @retval EFI_DEVICE_ERROR      The driver could not enable the SMI source.\r
-  @retval EFI_OUT_OF_RESOURCES  Not enough memory (system or SMM) to manage this\r
-                                child.\r
-  @retval EFI_INVALID_PARAMETER DispatchContext is invalid. The Standby Button SMI\r
-                                phase is not within valid range.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_STANDBY_BUTTON_REGISTER)(\r
-  IN EFI_SMM_STANDBY_BUTTON_DISPATCH_PROTOCOL          *This,\r
-  IN EFI_SMM_STANDBY_BUTTON_DISPATCH                   DispatchFunction,\r
-  IN EFI_SMM_STANDBY_BUTTON_DISPATCH_CONTEXT           *DispatchContext,\r
-  OUT EFI_HANDLE                                       *DispatchHandle\r
-  );\r
-\r
-/**\r
-  Unregister a child SMI source dispatch function with a parent SMM driver.\r
-\r
-  @param  This                   The pointer to the EFI_SMM_STANDBY_BUTTON_DISPATCH_PROTOCOL instance.\r
-  @param  DispatchHandle         The handle of the service to remove.\r
-\r
-  @retval EFI_SUCCESS            The dispatch function has been successfully\r
-                                 unregistered, and the SMI source has been disabled,\r
-                                 if there are no other registered child dispatch\r
-                                 functions for this SMI source.\r
-  @retval EFI_INVALID_PARAMETER  The handle is invalid.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_STANDBY_BUTTON_UNREGISTER)(\r
-  IN EFI_SMM_STANDBY_BUTTON_DISPATCH_PROTOCOL  *This,\r
-  IN EFI_HANDLE                                DispatchHandle\r
-  );\r
-\r
-//\r
-// Interface structure for the SMM Standby Button SMI Dispatch Protocol\r
-//\r
-/**\r
-  This protocol  provices the parent dispatch service for the standby button SMI source generator.\r
-  Provides the ability to install child handlers for the given event types.\r
- **/\r
-struct _EFI_SMM_STANDBY_BUTTON_DISPATCH_PROTOCOL {\r
-  ///\r
-  /// Installs a child service to be dispatched by this protocol.\r
-  ///\r
-  EFI_SMM_STANDBY_BUTTON_REGISTER   Register;\\r
-  ///\r
-  /// Removes a child service dispatched by this protocol.\r
-  ///\r
-  EFI_SMM_STANDBY_BUTTON_UNREGISTER UnRegister;\r
-};\r
-\r
-extern EFI_GUID gEfiSmmStandbyButtonDispatchProtocolGuid;\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Protocol/SmmSwDispatch.h b/IntelFrameworkPkg/Include/Protocol/SmmSwDispatch.h
deleted file mode 100644 (file)
index eff188f..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-/** @file\r
-  Provides the parent dispatch service for a given SMI source generator.\r
-\r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  This Protocol is defined in Framework for EFI SMM Core Interface Spec\r
-  Version 0.9.\r
-\r
-**/\r
-\r
-#ifndef _EFI_SMM_SW_DISPATCH_H_\r
-#define _EFI_SMM_SW_DISPATCH_H_\r
-\r
-\r
-//\r
-// Global ID for the SW SMI Protocol\r
-//\r
-#define EFI_SMM_SW_DISPATCH_PROTOCOL_GUID \\r
-  { \\r
-    0xe541b773, 0xdd11, 0x420c, {0xb0, 0x26, 0xdf, 0x99, 0x36, 0x53, 0xf8, 0xbf } \\r
-  }\r
-\r
-typedef struct _EFI_SMM_SW_DISPATCH_PROTOCOL  EFI_SMM_SW_DISPATCH_PROTOCOL;\r
-\r
-//\r
-// Related Definitions\r
-//\r
-//\r
-// A particular chipset may not support all possible software SMI input values.\r
-// For example, the ICH supports only values 00h to 0FFh.  The parent only allows a single\r
-// child registration for each SwSmiInputValue.\r
-//\r
-typedef struct {\r
-  UINTN SwSmiInputValue;\r
-} EFI_SMM_SW_DISPATCH_CONTEXT;\r
-\r
-//\r
-// Member functions\r
-//\r
-/**\r
-  Dispatch function for a Software SMI handler.\r
-\r
-  @param  DispatchHandle        The handle of this dispatch function.\r
-  @param  DispatchContext       The pointer to the dispatch function's context.\r
-                                The SwSmiInputValue field is filled in\r
-                                by the software dispatch driver prior to\r
-                                invoking this dispatch function.\r
-                                The dispatch function will only be called\r
-                                for input values for which it is registered.\r
-\r
-  @return None\r
-\r
-**/\r
-typedef\r
-VOID\r
-(EFIAPI *EFI_SMM_SW_DISPATCH)(\r
-  IN  EFI_HANDLE                    DispatchHandle,\r
-  IN  EFI_SMM_SW_DISPATCH_CONTEXT   *DispatchContext\r
-  );\r
-\r
-/**\r
-  Register a child SMI source dispatch function with a parent SMM driver.\r
-\r
-  @param  This                  The pointer to the EFI_SMM_SW_DISPATCH_PROTOCOL instance.\r
-  @param  DispatchFunction      The function to install.\r
-  @param  DispatchContext       The pointer to the dispatch function's context.\r
-                                Indicates to the register\r
-                                function the Software SMI input value for which\r
-                                to invoke the dispatch function.\r
-  @param  DispatchHandle        The handle generated by the dispatcher to track\r
-                                the function instance.\r
-\r
-  @retval EFI_SUCCESS           The dispatch function has been successfully\r
-                                registered and the SMI source has been enabled.\r
-  @retval EFI_DEVICE_ERROR      The SW driver could not enable the SMI source.\r
-  @retval EFI_OUT_OF_RESOURCES  Not enough memory (system or SMM) to manage this\r
-                                child.\r
-  @retval EFI_INVALID_PARAMETER DispatchContext is invalid. The SW SMI input value\r
-                                is not within valid range.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_SW_REGISTER)(\r
-  IN EFI_SMM_SW_DISPATCH_PROTOCOL          *This,\r
-  IN EFI_SMM_SW_DISPATCH                   DispatchFunction,\r
-  IN EFI_SMM_SW_DISPATCH_CONTEXT           *DispatchContext,\r
-  OUT EFI_HANDLE                           *DispatchHandle\r
-  );\r
-\r
-/**\r
-  Unregister a child SMI source dispatch function with a parent SMM driver\r
-\r
-  @param  This                  The pointer to the EFI_SMM_SW_DISPATCH_PROTOCOL instance.\r
-  @param  DispatchHandle        The handle of the service to remove.\r
-\r
-  @retval EFI_SUCCESS           The dispatch function has been successfully\r
-                                unregistered and the SMI source has been disabled\r
-                                if there are no other registered child dispatch\r
-                                functions for this SMI source.\r
-  @retval EFI_INVALID_PARAMETER The handle is invalid.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_SW_UNREGISTER)(\r
-  IN EFI_SMM_SW_DISPATCH_PROTOCOL          *This,\r
-  IN EFI_HANDLE                            DispatchHandle\r
-  );\r
-\r
-\r
-//\r
-// Interface structure for the SMM Software SMI Dispatch Protocol\r
-//\r
-/**\r
-  Provides the parent dispatch service for a given SMI source generator.\r
-**/\r
-///\r
-/// Inconsistent with the specification here:\r
-/// In The Framework specification SmmCis, this definition is named as\r
-/// _EFI_SMM_ICHN_DISPATCH_PROTOCOL by mistake.\r
-///\r
-struct _EFI_SMM_SW_DISPATCH_PROTOCOL {\r
-  ///\r
-  /// Installs a child service to be dispatched by this protocol.\r
-  ///\r
-  EFI_SMM_SW_REGISTER   Register;\r
-\r
-  ///\r
-  /// Removes a child service dispatched by this protocol.\r
-  ///\r
-  EFI_SMM_SW_UNREGISTER UnRegister;\r
-\r
-  ///\r
-  /// A read-only field that describes the maximum value that can be used\r
-  /// in the EFI_SMM_SW_DISPATCH_PROTOCOL.Register() service.\r
-  ///\r
-  UINTN                 MaximumSwiValue;\r
-};\r
-\r
-extern EFI_GUID gEfiSmmSwDispatchProtocolGuid;\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Protocol/SmmSxDispatch.h b/IntelFrameworkPkg/Include/Protocol/SmmSxDispatch.h
deleted file mode 100644 (file)
index 6f2bb7f..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-/** @file\r
-  Provides the parent dispatch service for a given Sx-state source generator.\r
-\r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  This Protocol is defined in Framework of EFI SMM Core Interface Spec\r
-  Version 0.9.\r
-\r
-**/\r
-\r
-#ifndef _EFI_SMM_SX_DISPATCH_H_\r
-#define _EFI_SMM_SX_DISPATCH_H_\r
-\r
-//\r
-// Share some common definitions with PI SMM\r
-//\r
-#include <Protocol/SmmSxDispatch2.h>\r
-\r
-//\r
-// Global ID for the Sx SMI Protocol\r
-//\r
-#define EFI_SMM_SX_DISPATCH_PROTOCOL_GUID \\r
-  { \\r
-    0x14fc52be, 0x1dc, 0x426c, {0x91, 0xae, 0xa2, 0x3c, 0x3e, 0x22, 0xa, 0xe8 } \\r
-  }\r
-\r
-typedef struct _EFI_SMM_SX_DISPATCH_PROTOCOL  EFI_SMM_SX_DISPATCH_PROTOCOL;\r
-\r
-typedef struct {\r
-  EFI_SLEEP_TYPE  Type;\r
-  EFI_SLEEP_PHASE Phase;\r
-} EFI_SMM_SX_DISPATCH_CONTEXT;\r
-\r
-//\r
-// Member functions\r
-//\r
-/**\r
-  Dispatch function for a Sx state SMI handler.\r
-\r
-  @param  DispatchHandle        The handle of this dispatch function.\r
-  @param  DispatchContext       The pointer to the dispatch function's context.\r
-                                The Type and Phase fields are filled in by the Sx dispatch driver\r
-                                prior to invoking this dispatch function. For this interface,\r
-                                the Sx driver will call the dispatch function for all Sx type\r
-                                and phases, so the Sx state handler(s) must check the Type and\r
-                                Phase field of EFI_SMM_SX_DISPATCH_CONTEXT, and act accordingly.\r
-\r
-  @return None\r
-\r
-**/\r
-typedef\r
-VOID\r
-(EFIAPI *EFI_SMM_SX_DISPATCH)(\r
-  IN  EFI_HANDLE                    DispatchHandle,\r
-  IN  EFI_SMM_SX_DISPATCH_CONTEXT   *DispatchContext\r
-  );\r
-\r
-/**\r
-  Register a child SMI source dispatch function with a parent SMM driver.\r
-\r
-  @param  This                  The pointer to the EFI_SMM_SX_DISPATCH_PROTOCOL instance.\r
-  @param  DispatchFunction      The function to install.\r
-  @param  DispatchContext       The pointer to the dispatch function's context.\r
-                                The caller fills in this context before calling\r
-                                the register function to indicates to the register\r
-                                function which Sx state type and phase the caller\r
-                                wishes to be called back on. For this interface,\r
-                                the Sx driver will call the registered handlers for\r
-                                all Sx type and phases, so the Sx state handler(s)\r
-                                must check the Type and Phase field of the Dispatch\r
-                                context, and act accordingly.\r
-  @param  DispatchHandle        The handle of dispatch function, for interfacing\r
-                                with the parent Sx state SMM driver.\r
-\r
-  @retval EFI_SUCCESS           The dispatch function has been successfully\r
-                                registered and the SMI source has been enabled.\r
-  @retval EFI_UNSUPPORTED       The Sx driver or hardware does not support that\r
-                                Sx Type/Phase.\r
-  @retval EFI_DEVICE_ERROR      The Sx driver was unable to enable the SMI source.\r
-  @retval EFI_OUT_OF_RESOURCES  Not enough memory (system or SMM) to manage this\r
-                                child.\r
-  @retval EFI_INVALID_PARAMETER DispatchContext is invalid. Type & Phase are not\r
-                                within a valid range.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_SX_REGISTER)(\r
-  IN EFI_SMM_SX_DISPATCH_PROTOCOL          *This,\r
-  IN EFI_SMM_SX_DISPATCH                   DispatchFunction,\r
-  IN EFI_SMM_SX_DISPATCH_CONTEXT           *DispatchContext,\r
-  OUT EFI_HANDLE                           *DispatchHandle\r
-  );\r
-\r
-/**\r
-  Unregisters an Sx-state service\r
-\r
-  @param  This                  The pointer to the EFI_SMM_SX_DISPATCH_PROTOCOL instance.\r
-  @param  DispatchHandle        The handle of the service to remove.\r
-\r
-  @retval EFI_SUCCESS           The dispatch function has been successfully unregistered, and the\r
-                                SMI source has been disabled, if there are no other registered child\r
-                                dispatch functions for this SMI source.\r
-  @retval EFI_INVALID_PARAMETER Handle is invalid.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_SX_UNREGISTER)(\r
-  IN EFI_SMM_SX_DISPATCH_PROTOCOL          *This,\r
-  IN EFI_HANDLE                            DispatchHandle\r
-  );\r
-\r
-//\r
-// Interface structure for the SMM Child Dispatch Protocol\r
-//\r
-/**\r
-  Provides the parent dispatch service for a given Sx-state source generator.\r
-**/\r
-struct _EFI_SMM_SX_DISPATCH_PROTOCOL {\r
-  EFI_SMM_SX_REGISTER   Register;     ///< Installs a child service to be dispatched by this protocol.\r
-  EFI_SMM_SX_UNREGISTER UnRegister;   ///< Removes a child service dispatched by this protocol.\r
-};\r
-\r
-extern EFI_GUID gEfiSmmSxDispatchProtocolGuid;\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Include/Protocol/SmmUsbDispatch.h b/IntelFrameworkPkg/Include/Protocol/SmmUsbDispatch.h
deleted file mode 100644 (file)
index 8cfc8da..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-/** @file\r
-  Provides the parent dispatch service for the USB SMI source generator.\r
-\r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  @par Revision Reference:\r
-  This Protocol is defined in Framework of EFI SMM Core Interface Spec\r
-  Version 0.9.\r
-\r
-**/\r
-\r
-#ifndef _EFI_SMM_USB_DISPATCH_H_\r
-#define _EFI_SMM_USB_DISPATCH_H_\r
-\r
-//\r
-// Share some common definitions with PI SMM\r
-//\r
-#include <Protocol/SmmUsbDispatch2.h>\r
-\r
-//\r
-// Global ID for the USB Protocol\r
-//\r
-#define EFI_SMM_USB_DISPATCH_PROTOCOL_GUID \\r
-  { \\r
-    0xa05b6ffd, 0x87af, 0x4e42, {0x95, 0xc9, 0x62, 0x28, 0xb6, 0x3c, 0xf3, 0xf3 } \\r
-  }\r
-\r
-typedef struct _EFI_SMM_USB_DISPATCH_PROTOCOL  EFI_SMM_USB_DISPATCH_PROTOCOL;\r
-\r
-typedef struct {\r
-  ///\r
-  /// Describes whether this child handler will be invoked in response to a USB legacy\r
-  /// emulation event, such as port-trap on the PS/2* keyboard control registers, or to a\r
-  /// USB wake event, such as resumption from a sleep state.\r
-  ///\r
-  EFI_USB_SMI_TYPE          Type;\r
-  ///\r
-  /// The device path is part of the context structure and describes the location of the\r
-  /// particular USB host controller in the system for which this register event will occur.\r
-  /// This location is important because of the possible integration of several USB host\r
-  /// controllers in a system.\r
-  ///\r
-  EFI_DEVICE_PATH_PROTOCOL  *Device;\r
-} EFI_SMM_USB_DISPATCH_CONTEXT;\r
-\r
-//\r
-// Member functions\r
-//\r
-/**\r
-  Dispatch function for a USB SMI handler.\r
-\r
-  @param[in]  DispatchHandle    Handle of this dispatch function.\r
-  @param[in]  DispatchContext   Pointer to the dispatch function's context.\r
-                                The DispatchContext fields are filled in\r
-                                by the dispatching driver prior to\r
-                                invoking this dispatch function.\r
-\r
-**/\r
-typedef\r
-VOID\r
-(EFIAPI *EFI_SMM_USB_DISPATCH)(\r
-  IN  EFI_HANDLE                    DispatchHandle,\r
-  IN  EFI_SMM_USB_DISPATCH_CONTEXT  *DispatchContext\r
-  );\r
-\r
-/**\r
-  Register a child SMI source dispatch function with a parent SMM driver.\r
-\r
-  @param[in]  This              The pointer to the EFI_SMM_USB_DISPATCH_PROTOCOL instance.\r
-  @param[in]  DispatchFunction  The pointer to dispatch function to be invoked\r
-                                for this SMI source.\r
-  @param[in]  DispatchContext   The pointer to the dispatch function's context.\r
-                                The caller fills this context in before calling\r
-                                the register function to indicate to the register\r
-                                function the USB SMI types for which the dispatch\r
-                                function should be invoked.\r
-  @param[out] DispatchHandle    The handle generated by the dispatcher to track the\r
-                                function instance.\r
-\r
-  @retval EFI_SUCCESS           The dispatch function has been successfully\r
-                                registered and the SMI source has been enabled.\r
-  @retval EFI_DEVICE_ERROR      The driver was unable to enable the SMI source.\r
-  @retval EFI_OUT_OF_RESOURCES  Not enough memory (system or SMM) to manage this\r
-                                child.\r
-  @retval EFI_INVALID_PARAMETER DispatchContext is invalid. The USB SMI type\r
-                                is not within valid range.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_USB_REGISTER)(\r
-  IN  EFI_SMM_USB_DISPATCH_PROTOCOL           *This,\r
-  IN  EFI_SMM_USB_DISPATCH                    DispatchFunction,\r
-  IN  EFI_SMM_USB_DISPATCH_CONTEXT            *DispatchContext,\r
-  OUT EFI_HANDLE                              *DispatchHandle\r
-  );\r
-\r
-/**\r
-  Unregisters a USB service.\r
-\r
-  @param[in]  This              The pointer to the EFI_SMM_USB_DISPATCH_PROTOCOL instance.\r
-  @param[in]  DispatchHandle    Handle of the service to remove.\r
-\r
-  @retval EFI_SUCCESS           The dispatch function has been successfully\r
-                                unregistered and the SMI source has been disabled\r
-                                if there are no other registered child dispatch\r
-                                functions for this SMI source.\r
-  @retval EFI_INVALID_PARAMETER The DispatchHandle was not valid.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_USB_UNREGISTER)(\r
-  IN EFI_SMM_USB_DISPATCH_PROTOCOL            *This,\r
-  IN EFI_HANDLE                               DispatchHandle\r
-  );\r
-\r
-///\r
-/// The EFI_SMM_USB_DISPATCH_PROTOCOL provides the ability to install child handlers for the\r
-/// given event types.\r
-///\r
-struct _EFI_SMM_USB_DISPATCH_PROTOCOL {\r
-  EFI_SMM_USB_REGISTER    Register;\r
-  EFI_SMM_USB_UNREGISTER  UnRegister;\r
-};\r
-\r
-extern EFI_GUID gEfiSmmUsbDispatchProtocolGuid;\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/IntelFrameworkPkg.dec b/IntelFrameworkPkg/IntelFrameworkPkg.dec
deleted file mode 100644 (file)
index af4e35c..0000000
+++ /dev/null
@@ -1,182 +0,0 @@
-## @file\r
-# Intel Framework Package Reference Implementations\r
-#\r
-# This package provides definitions and libraries that comply to Intel Framework Specifications.\r
-# Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-#\r
-#    SPDX-License-Identifier: BSD-2-Clause-Patent\r
-#\r
-##\r
-\r
-[Defines]\r
-  DEC_SPECIFICATION              = 0x00010005\r
-  PACKAGE_NAME                   = IntelFrameworkPkg\r
-  PACKAGE_UNI_FILE               = IntelFrameworkPkg.uni\r
-  PACKAGE_GUID                   = 2759ded5-bb57-4b06-af4f-c398fa552719\r
-  PACKAGE_VERSION                = 0.96\r
-\r
-[Includes]\r
-  Include                        # Root include for the package\r
-\r
-[Guids]\r
-  ## Include/Guid/DataHubRecords.h\r
-  gEfiCacheSubClassGuid          = { 0x7f0013a7, 0xdc79, 0x4b22, { 0x80, 0x99, 0x11, 0xf7, 0x5f, 0xdc, 0x82, 0x9d }}\r
-\r
-  ## Include/Guid/DataHubRecords.h\r
-  gEfiMemorySubClassGuid         = { 0x4E8F4EBB, 0x64B9, 0x4e05, { 0x9b, 0x18, 0x4c, 0xfe, 0x49, 0x23, 0x50, 0x97 }}\r
-\r
-  ## Include/Guid/DataHubRecords.h\r
-  gEfiMiscSubClassGuid           = { 0x772484B2, 0x7482, 0x4b91, { 0x9f, 0x9a, 0xad, 0x43, 0xf8, 0x1c, 0x58, 0x81 }}\r
-\r
-  ## Include/Guid/DataHubRecords.h\r
-  gEfiProcessorSubClassGuid      = { 0x26fdeb7e, 0xb8af, 0x4ccf, { 0xaa, 0x97, 0x02, 0x63, 0x3c, 0xe4, 0x8c, 0xa7 }}\r
-\r
-  ## Include/Guid/Capsule.h\r
-  gEfiCapsuleGuid                = { 0x3B6686BD, 0x0D76, 0x4030, { 0xB7, 0x0E, 0xB5, 0x51, 0x9E, 0x2F, 0xC5, 0xA0 }}\r
-\r
-  ## Include/Guid/Capsule.h\r
-  gEfiConfigFileNameGuid         = { 0x98B8D59B, 0xE8BA, 0x48EE, { 0x98, 0xDD, 0xC2, 0x95, 0x39, 0x2F, 0x1E, 0xDB }}\r
-\r
-  ## Include/Guid/SmramMemoryReserve.h\r
-  gEfiSmmPeiSmramMemoryReserveGuid = { 0x6dadf1d1, 0xd4cc, 0x4910, { 0xbb, 0x6e, 0x82, 0xb1, 0xfd, 0x80, 0xff, 0x3d }}\r
-\r
-  ## Include/Guid/SmmCommunicate.h\r
-  gSmmCommunicateHeaderGuid      = { 0xf328e36c, 0x23b6, 0x4a95, { 0x85, 0x4b, 0x32, 0xe1, 0x95, 0x34, 0xcd, 0x75 }}\r
-\r
-  ## Include/Guid/FirmwareFileSystem.h\r
-  gEfiFirmwareFileSystemGuid     = { 0x7A9354D9, 0x0468, 0x444a, {0x81, 0xCE, 0x0B, 0xF6, 0x17, 0xD8, 0x90, 0xDF }}\r
-\r
-  ## Include/Guid/BlockIo.h\r
-  gEfiPeiIdeBlockIoPpiGuid       = { 0x964e5b22, 0x6459, 0x11d2, { 0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b }}\r
-\r
-  ## Include/Guid/BlockIo.h\r
-  gEfiPei144FloppyBlockIoPpiGuid = { 0xda6855bd, 0x07b7, 0x4c05, { 0x9e, 0xd8, 0xe2, 0x59, 0xfd, 0x36, 0x0e, 0x22 }}\r
-\r
-[Ppis]\r
-  ## Include/Ppi/BootScriptExecuter.h\r
-  gEfiPeiBootScriptExecuterPpiGuid  = { 0xabd42895, 0x78cf, 0x4872, { 0x84, 0x44, 0x1b, 0x5c, 0x18, 0x0b, 0xfb, 0xff }}\r
-\r
-  ## Include/Ppi/Security.h\r
-  gEfiPeiSecurityPpiGuid            = { 0x1388066E, 0x3A57, 0x4EFA, { 0x98, 0xF3, 0xC1, 0x2F, 0x3A, 0x95, 0x8A, 0x29 }}\r
-\r
-  ## Include/Ppi/Smbus.h\r
-  gEfiPeiSmbusPpiGuid               = { 0xabd42895, 0x78cf, 0x4872, { 0x84, 0x44, 0x1b, 0x5c, 0x18, 0x0b, 0xfb, 0xda }}\r
-\r
-  ## Include/Ppi/PciCfg.h\r
-  gEfiPciCfgPpiInServiceTableGuid   = { 0xe1f2eba0, 0xf7b9, 0x4a26, { 0x86, 0x20, 0x13, 0x12, 0x21, 0x64, 0x2a, 0x90 }}\r
-\r
-  ## Include/Ppi/ReadOnlyVariable.h\r
-  gEfiPeiReadOnlyVariablePpiGuid    = { 0x3CDC90C6, 0x13FB, 0x4A75, { 0x9E, 0x79, 0x59, 0xE9, 0xDD, 0x78, 0xB9, 0xFA }}\r
-\r
-  ## Include/Ppi/SectionExtraction.h\r
-  gEfiPeiSectionExtractionPpiGuid   = { 0x4F89E208, 0xE144, 0x4804, { 0x9E, 0xC8, 0x0F, 0x89, 0x4F, 0x7E, 0x36, 0xD7 }}\r
-\r
-  ## Include/Ppi/FvLoadFile.h\r
-  gEfiPeiFvFileLoaderPpiGuid        = { 0x7e1f0d85, 0x4ff,  0x4bb2, { 0x86, 0x6a, 0x31, 0xa2, 0x99, 0x6a, 0x48, 0xa8 }}\r
-\r
-  ## Include/Ppi/FindFv.h\r
-  gEfiFindFvPpiGuid                 = { 0x36164812, 0xa023, 0x44e5, { 0xbd, 0x85, 0x05, 0xbf, 0x3c, 0x77, 0x00, 0xaa }}\r
-\r
-  ## Include/Ppi/S3Resume.h\r
-  gEfiPeiS3ResumePpiGuid            = { 0x4426CCB2, 0xE684, 0x4a8a, { 0xae, 0x40, 0x20, 0xd4, 0xb0, 0x25, 0xb7, 0x10 }}\r
-\r
-[Protocols]\r
-  ## Include/Protocol/AcpiS3Save.h\r
-  gEfiAcpiS3SaveProtocolGuid     = { 0x125F2DE1, 0xFB85, 0x440C, { 0xA5, 0x4C, 0x4D, 0x99, 0x35, 0x8A, 0x8D, 0x38 }}\r
-\r
-  ## Include/Protocol/AcpiSupport.h\r
-  gEfiAcpiSupportProtocolGuid    = { 0xdbff9d55, 0x89b7, 0x46da, { 0xbd, 0xdf, 0x67, 0x7d, 0x3d, 0xc0, 0x24, 0x1d }}\r
-\r
-  ## Include/Protocol/BootScriptSave.h\r
-  gEfiBootScriptSaveProtocolGuid = { 0x470e1529, 0xb79e, 0x4e32, { 0xa0, 0xfe, 0x6a, 0x15, 0x6d, 0x29, 0xf9, 0xb2 }}\r
-\r
-  ## Include/Protocol/LegacyBios.h\r
-  gEfiLegacyBiosProtocolGuid     = { 0xdb9a1e3d, 0x45cb, 0x4abb, { 0x85, 0x3b, 0xe5, 0x38, 0x7f, 0xdb, 0x2e, 0x2d }}\r
-\r
-  ## Include/Protocol/LegacyBiosPlatform.h\r
-  gEfiLegacyBiosPlatformProtocolGuid = { 0x783658a3, 0x4172, 0x4421, { 0xa2, 0x99, 0xe0, 0x09, 0x07, 0x9c, 0x0c, 0xb4 }}\r
-\r
-  ## Include/Protocol/LegacyInterrupt.h\r
-  gEfiLegacyInterruptProtocolGuid = { 0x31ce593d, 0x108a, 0x485d, { 0xad, 0xb2, 0x78, 0xf2, 0x1f, 0x29, 0x66, 0xbe }}\r
-\r
-  ## Include/Protocol/LegacyRegion.h\r
-  gEfiLegacyRegionProtocolGuid   = { 0x0fc9013a, 0x0568, 0x4ba9, { 0x9b, 0x7e, 0xc9, 0xc3, 0x90, 0xa6, 0x60, 0x9b }}\r
-\r
-  ## Include/Protocol/Legacy8259.h\r
-  gEfiLegacy8259ProtocolGuid     = { 0x38321dba, 0x4fe0, 0x4e17, { 0x8a, 0xec, 0x41, 0x30, 0x55, 0xea, 0xed, 0xc1 }}\r
-\r
-  ## Include/Protocol/CpuIo.h\r
-  gEfiCpuIoProtocolGuid          = { 0xB0732526, 0x38C8, 0x4b40, { 0x88, 0x77, 0x61, 0xc7, 0xb0, 0x6a, 0xac, 0x45 }}\r
-\r
-  ## Include/Protocol/DataHub.h\r
-  gEfiDataHubProtocolGuid        = { 0xae80d021, 0x618e, 0x11d4, { 0xbc, 0xd7, 0x00, 0x80, 0xc7, 0x3c, 0x88, 0x81 }}\r
-\r
-  ## Include/Protocol/FirmwareVolume.h\r
-  gEfiFirmwareVolumeProtocolGuid = { 0x389F751F, 0x1838, 0x4388, { 0x83, 0x90, 0xcd, 0x81, 0x54, 0xbd, 0x27, 0xf8 }}\r
-\r
-  ## Include/Protocol/SectionExtraction.h\r
-  gEfiSectionExtractionProtocolGuid = { 0x448F5DA4, 0x6DD7, 0x4FE1, { 0x93, 0x07, 0x69, 0x22, 0x41, 0x92, 0x21, 0x5D }}\r
-\r
-  ## Include/Protocol/FrameworkHii.h\r
-  gEfiHiiProtocolGuid            = { 0xd7ad636e, 0xb997, 0x459b, { 0xbf, 0x3f, 0x88, 0x46, 0x89, 0x79, 0x80, 0xe1 }}\r
-\r
-  ## Include/Protocol/FrameworkHii.h\r
-  gEfiHiiCompatibilityProtocolGuid = { 0x5542cce1, 0xdf5c, 0x4d1b, { 0xab, 0xca, 0x36, 0x4f, 0x77, 0xd3, 0x99, 0xfb }}\r
-\r
-  ## Include/Protocol/FrameworkMpService.h\r
-  gFrameworkEfiMpServiceProtocolGuid = { 0xf33261e7, 0x23cb, 0x11d5, {0xbd, 0x5c, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81}}\r
-\r
-  ## Include/Protocol/SmmBase.h\r
-  gEfiSmmBaseProtocolGuid        = { 0x1390954D, 0xda95, 0x4227, { 0x93, 0x28, 0x72, 0x82, 0xc2, 0x17, 0xda, 0xa8 }}\r
-\r
-  ## Include/Protocol/SmmAccess.h\r
-  gEfiSmmAccessProtocolGuid      = { 0x3792095a, 0xe309, 0x4c1e, { 0xaa, 0x01, 0x85, 0xf5, 0x65, 0x5a, 0x17, 0xf1 }}\r
-\r
-  ## Include/Protocol/SmmControl.h\r
-  gEfiSmmControlProtocolGuid     = { 0x8d12e231, 0xc667, 0x4fd1, { 0x98, 0xf2, 0x24, 0x49, 0xa7, 0xe7, 0xb2, 0xe5 }}\r
-\r
-  ## Include/Protocol/SmmSwDispatch.h\r
-  gEfiSmmSwDispatchProtocolGuid  = { 0xe541b773, 0xdd11, 0x420c, { 0xb0, 0x26, 0xdf, 0x99, 0x36, 0x53, 0xf8, 0xbf }}\r
-\r
-  ## Include/Protocol/SmmSxDispatch.h\r
-  gEfiSmmSxDispatchProtocolGuid  = { 0x14fc52be, 0x01dc, 0x426c, { 0x91, 0xae, 0xa2, 0x3c, 0x3e, 0x22, 0x0a, 0xe8 }}\r
-\r
-  ## Include/Protocol/SmmPeriodicTimerDispatch.h\r
-  gEfiSmmPeriodicTimerDispatchProtocolGuid = { 0x9cca03fc, 0x4c9e, 0x4a19, { 0x9b, 0x06, 0xed, 0x7b, 0x47, 0x9b, 0xde, 0x55 }}\r
-\r
-  ## Include/Protocol/SmmUsbDispatch.h\r
-  gEfiSmmUsbDispatchProtocolGuid = { 0xa05b6ffd, 0x87af, 0x4e42, { 0x95, 0xc9, 0x62, 0x28, 0xb6, 0x3c, 0xf3, 0xf3 }}\r
-\r
-  ## Include/Protocol/SmmGpiDispatch.h\r
-  gEfiSmmGpiDispatchProtocolGuid = { 0xe0744b81, 0x9513, 0x49cd, { 0x8c, 0xea, 0xe9, 0x24, 0x5e, 0x70, 0x39, 0xda }}\r
-\r
-  ## Include/Protocol/SmmStandbyButtonDispatch.h\r
-  gEfiSmmStandbyButtonDispatchProtocolGuid = { 0x78965b98, 0xb0bf, 0x449e, { 0x8b, 0x22, 0xd2, 0x91, 0x4e, 0x49, 0x8a, 0x98 }}\r
-\r
-  ## Include/Protocol/SmmPowerButtonDispatch.h\r
-  gEfiSmmPowerButtonDispatchProtocolGuid = { 0xb709efa0, 0x47a6, 0x4b41, { 0xb9, 0x31, 0x12, 0xec, 0xe7, 0xa8, 0xee, 0x56 }}\r
-\r
-  ## Include/Protocol/SmmIchnDispatch.h\r
-  gEfiSmmIchnDispatchProtocolGuid = { 0xc50b323e, 0x9075, 0x4f2a, { 0xac, 0x8e, 0xd2, 0x59, 0x6a, 0x10, 0x85, 0xcc }}\r
-\r
-  ## Include/Protocol/SmmCpuIo.h\r
-  gEfiSmmCpuIoGuid  = { 0x5f439a0b, 0x45d8, 0x4682, {0xa4, 0xf4, 0xf0, 0x57, 0x6b, 0x51, 0x34, 0x41}}\r
-\r
-  ## Include/Protocol/FrameworkFormCallback.h\r
-  gEfiFormCallbackProtocolGuid   = { 0xF3E4543D, 0xCF35, 0x6CEF, { 0x35, 0xC4, 0x4F, 0xE6, 0x34, 0x4D, 0xFC, 0x54 }}\r
-\r
-  ## Include/Protocol/FrameworkFormBrowser.h\r
-  gEfiFormBrowserProtocolGuid    = { 0xE5A1333E, 0xE1B4, 0x4D55, { 0xCE, 0xEB, 0x35, 0xC3, 0xEF, 0x13, 0x34, 0x43 }}\r
-\r
-  ## Include/Protocol/FrameworkFormBrowser.h\r
-  gEfiFormBrowserCompatibilityProtocolGuid    = { 0xfb7c852, 0xadca, 0x4853, { 0x8d, 0xf, 0xfb, 0xa7, 0x1b, 0x1c, 0xe1, 0x1a }}\r
-\r
-  ## Include/Protocol/FrameworkFirmwareVolumeBlock.h\r
-  gFramerworkEfiFirmwareVolumeBlockProtocolGuid = { 0xDE28BC59, 0x6228, 0x41BD, { 0xBD, 0xF6, 0xA3, 0xB9, 0xAD, 0xB5, 0x8D, 0xA1 }}\r
-\r
-  ## Include/Protocol/SmmCpuSaveState.h\r
-  gEfiSmmCpuSaveStateProtocolGuid = { 0x21f302ad, 0x6e94, 0x471b, {0x84, 0xbc, 0xb1, 0x48, 0x0, 0x40, 0x3a, 0x1d}}\r
-\r
-\r
-[UserExtensions.TianoCore."ExtraFiles"]\r
-  IntelFrameworkPkgExtra.uni\r
diff --git a/IntelFrameworkPkg/IntelFrameworkPkg.dsc b/IntelFrameworkPkg/IntelFrameworkPkg.dsc
deleted file mode 100644 (file)
index 7a72a8c..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-## @file\r
-# Intel Framework Package Reference Implementations\r
-#\r
-# This DSC file is used for Package Level build.\r
-#\r
-# Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-#\r
-#    SPDX-License-Identifier: BSD-2-Clause-Patent\r
-#\r
-##\r
-\r
-################################################################################\r
-#\r
-# Defines Section - statements that will be processed to create a Makefile.\r
-#\r
-################################################################################\r
-[Defines]\r
-  PLATFORM_NAME                  = IntelFramework\r
-  PLATFORM_GUID                  = E76EB141-6EDB-43f3-A455-EF24A79673DD\r
-  PLATFORM_VERSION               = 0.96\r
-  DSC_SPECIFICATION              = 0x00010005\r
-  OUTPUT_DIRECTORY               = Build/IntelFramework\r
-  SUPPORTED_ARCHITECTURES        = IA32|X64|EBC|ARM|AARCH64\r
-  BUILD_TARGETS                  = DEBUG|RELEASE|NOOPT\r
-  SKUID_IDENTIFIER               = DEFAULT\r
-\r
-################################################################################\r
-#\r
-# Pcd Section - list of all EDK II PCD Entries defined by this Platform\r
-#\r
-################################################################################\r
-[PcdsFixedAtBuild]\r
-  gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x0f\r
-\r
-[PcdsPatchableInModule]\r
-  gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x80000000\r
-\r
-[PcdsFeatureFlag]\r
-  gEfiMdePkgTokenSpaceGuid.PcdComponentNameDisable|FALSE\r
-  gEfiMdePkgTokenSpaceGuid.PcdDriverDiagnosticsDisable|FALSE\r
-\r
-###################################################################################################\r
-#\r
-# Components Section - list of the modules and components that will be processed by compilation\r
-#                      tools and the EDK II tools to generate PE32/PE32+/Coff image files.\r
-#\r
-# Note: The EDK II DSC file is not used to specify how compiled binary images get placed\r
-#       into firmware volume images. This section is just a list of modules to compile from\r
-#       source into UEFI-compliant binaries.\r
-#       It is the FDF file that contains information on combining binary files into firmware\r
-#       volume images, whose concept is beyond UEFI and is described in PI specification.\r
-#       Binary modules do not need to be listed in this section, as they should be\r
-#       specified in the FDF file. For example: Shell binary (Shell_Full.efi), FAT binary (Fat.efi),\r
-#       Logo (Logo.bmp), and etc.\r
-#       There may also be modules listed in this section that are not required in the FDF file,\r
-#       When a module listed here is excluded from FDF file, then UEFI-compliant binary will be\r
-#       generated for it, but the binary will not be put into any firmware volume.\r
-#\r
-###################################################################################################\r
-[Components]\r
-  IntelFrameworkPkg/Library/DxeIoLibCpuIo/DxeIoLibCpuIo.inf\r
-  IntelFrameworkPkg/Library/FrameworkUefiLib/FrameworkUefiLib.inf\r
-  IntelFrameworkPkg/Library/DxeSmmDriverEntryPoint/DxeSmmDriverEntryPoint.inf\r
-  IntelFrameworkPkg/Library/PeiSmbusLibSmbusPpi/PeiSmbusLibSmbusPpi.inf\r
-  IntelFrameworkPkg/Library/PeiHobLibFramework/PeiHobLibFramework.inf\r
-\r
-[BuildOptions]\r
-  *_*_*_CC_FLAGS = -D DISABLE_NEW_DEPRECATED_INTERFACES\r
-\r
diff --git a/IntelFrameworkPkg/IntelFrameworkPkg.uni b/IntelFrameworkPkg/IntelFrameworkPkg.uni
deleted file mode 100644 (file)
index 0fde6da..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-// /** @file\r
-// Intel Framework Package Reference Implementations\r
-//\r
-// This package provides definitions and libraries that comply to Intel Framework Specifications.\r
-//\r
-// Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>\r
-//\r
-// SPDX-License-Identifier: BSD-2-Clause-Patent\r
-//\r
-// **/\r
-\r
-\r
-#string STR_PACKAGE_ABSTRACT            #language en-US "Intel Framework Package Reference Implementations"\r
-\r
-#string STR_PACKAGE_DESCRIPTION         #language en-US "This package provides definitions and libraries that comply to Intel Framework specifications."\r
-\r
-\r
-\r
diff --git a/IntelFrameworkPkg/IntelFrameworkPkgExtra.uni b/IntelFrameworkPkg/IntelFrameworkPkgExtra.uni
deleted file mode 100644 (file)
index e176f70..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-// /** @file\r
-// IntelFramework Package Localized Strings and Content.\r
-//\r
-// Copyright (c) 2013 - 2018, Intel Corporation. All rights reserved.<BR>\r
-//\r
-// SPDX-License-Identifier: BSD-2-Clause-Patent\r
-//\r
-// **/\r
-\r
-#string STR_PROPERTIES_PACKAGE_NAME\r
-#language en-US\r
-"IntelFramework package"\r
-\r
-\r
diff --git a/IntelFrameworkPkg/Library/DxeIoLibCpuIo/DxeCpuIoLibInternal.h b/IntelFrameworkPkg/Library/DxeIoLibCpuIo/DxeCpuIoLibInternal.h
deleted file mode 100644 (file)
index dd4a541..0000000
+++ /dev/null
@@ -1,172 +0,0 @@
-/** @file\r
-  Internal include file of DXE CPU IO Library.\r
-  It includes all necessary protocol/library class's header file\r
-  for implementation of IoLib library instance. It is included\r
-  all source code of this library instance.\r
-\r
-  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
-  Copyright (c) 2017, AMD Incorporated. All rights reserved.<BR>\r
-\r
-  SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  Module Name:  DxeCpuIoLibInternal.h\r
-\r
-**/\r
-\r
-#ifndef _DXE_CPUIO_LIB_INTERNAL_H_\r
-#define _DXE_CPUIO_LIB_INTERNAL_H_\r
-\r
-\r
-#include <FrameworkDxe.h>\r
-\r
-#include <Protocol/CpuIo.h>\r
-\r
-#include <Library/IoLib.h>\r
-#include <Library/UefiBootServicesTableLib.h>\r
-#include <Library/DebugLib.h>\r
-#include <Library/BaseLib.h>\r
-\r
-\r
-/**\r
-  Reads registers in the EFI CPU I/O space.\r
-\r
-  Reads the I/O port specified by Port with registers width specified by Width.\r
-  The read value is returned.\r
-\r
-  This function must guarantee that all I/O read and write operations are serialized.\r
-  If such operations are not supported, then ASSERT().\r
-\r
-  @param  Port          The base address of the I/O operation.\r
-                        The caller is responsible for aligning the Address if required.\r
-  @param  Width         The width of the I/O operation.\r
-\r
-  @return Data read from registers in the EFI CPU I/O space.\r
-\r
-**/\r
-UINT64\r
-EFIAPI\r
-IoReadWorker (\r
-  IN      UINTN                      Port,\r
-  IN      EFI_CPU_IO_PROTOCOL_WIDTH  Width\r
-  );\r
-\r
-/**\r
-  Writes registers in the EFI CPU I/O space.\r
-\r
-  Writes the I/O port specified by Port with registers width and value specified by Width\r
-  and Data respectively. Data is returned.\r
-\r
-  This function must guarantee that all I/O read and write operations are serialized.\r
-  If such operations are not supported, then ASSERT().\r
-\r
-  @param  Port          The base address of the I/O operation.\r
-                        The caller is responsible for aligning the Address if required.\r
-  @param  Width         The width of the I/O operation.\r
-  @param  Data          The value to write to the I/O port.\r
-\r
-  @return The parameter of Data.\r
-\r
-**/\r
-UINT64\r
-EFIAPI\r
-IoWriteWorker (\r
-  IN      UINTN                      Port,\r
-  IN      EFI_CPU_IO_PROTOCOL_WIDTH  Width,\r
-  IN      UINT64                     Data\r
-  );\r
-\r
-/**\r
-  Reads registers in the EFI CPU I/O space.\r
-\r
-  Reads the I/O port specified by Port with registers width specified by Width.\r
-  The port is read Count times, and the read data is stored in the provided Buffer.\r
-\r
-  This function must guarantee that all I/O read and write operations are serialized.\r
-  If such operations are not supported, then ASSERT().\r
-\r
-  @param  Port          The base address of the I/O operation.\r
-                        The caller is responsible for aligning the Address if required.\r
-  @param  Width         The width of the I/O operation.\r
-  @param  Count         The number of times to read I/O port.\r
-  @param  Buffer        The buffer to store the read data into.\r
-\r
-**/\r
-VOID\r
-EFIAPI\r
-IoReadFifoWorker (\r
-  IN      UINTN                      Port,\r
-  IN      EFI_CPU_IO_PROTOCOL_WIDTH  Width,\r
-  IN      UINTN                      Count,\r
-  IN      VOID                       *Buffer\r
-  );\r
-\r
-/**\r
-  Writes registers in the EFI CPU I/O space.\r
-\r
-  Writes the I/O port specified by Port with registers width specified by Width.\r
-  The port is written Count times, and the write data is retrieved from the provided Buffer.\r
-\r
-  This function must guarantee that all I/O read and write operations are serialized.\r
-  If such operations are not supported, then ASSERT().\r
-\r
-  @param  Port          The base address of the I/O operation.\r
-                        The caller is responsible for aligning the Address if required.\r
-  @param  Width         The width of the I/O operation.\r
-  @param  Count         The number of times to write I/O port.\r
-  @param  Buffer        The buffer to store the read data into.\r
-\r
-**/\r
-VOID\r
-EFIAPI\r
-IoWriteFifoWorker (\r
-  IN      UINTN                      Port,\r
-  IN      EFI_CPU_IO_PROTOCOL_WIDTH  Width,\r
-  IN      UINTN                      Count,\r
-  IN      VOID                       *Buffer\r
-  );\r
-\r
-/**\r
-  Reads memory-mapped registers in the EFI system memory space.\r
-\r
-  Reads the MMIO registers specified by Address with registers width specified by Width.\r
-  The read value is returned. If such operations are not supported, then ASSERT().\r
-  This function must guarantee that all MMIO read and write operations are serialized.\r
-\r
-  @param  Address       The MMIO register to read.\r
-                        The caller is responsible for aligning the Address if required.\r
-  @param  Width         The width of the I/O operation.\r
-\r
-  @return Data read from registers in the EFI system memory space.\r
-\r
-**/\r
-UINT64\r
-EFIAPI\r
-MmioReadWorker (\r
-  IN      UINTN                     Address,\r
-  IN      EFI_CPU_IO_PROTOCOL_WIDTH Width\r
-  );\r
-\r
-/**\r
-  Writes memory-mapped registers in the EFI system memory space.\r
-\r
-  Writes the MMIO registers specified by Address with registers width and value specified by Width\r
-  and Data respectively. Data is returned. If such operations are not supported, then ASSERT().\r
-  This function must guarantee that all MMIO read and write operations are serialized.\r
-\r
-  @param  Address       The MMIO register to read.\r
-                        The caller is responsible for aligning the Address if required.\r
-  @param  Width         The width of the I/O operation.\r
-  @param  Data          The value to write to the I/O port.\r
-\r
-  @return Data read from registers in the EFI system memory space.\r
-\r
-**/\r
-UINT64\r
-EFIAPI\r
-MmioWriteWorker (\r
-  IN      UINTN                     Address,\r
-  IN      EFI_CPU_IO_PROTOCOL_WIDTH Width,\r
-  IN      UINT64                    Data\r
-  );\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Library/DxeIoLibCpuIo/DxeIoLibCpuIo.inf b/IntelFrameworkPkg/Library/DxeIoLibCpuIo/DxeIoLibCpuIo.inf
deleted file mode 100644 (file)
index 5908bc5..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-## @file\r
-# I/O Library implementation that uses the CPU I/O Protocol for I/O and MMIO operations.\r
-#\r
-# Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
-#\r
-#  SPDX-License-Identifier: BSD-2-Clause-Patent\r
-#\r
-#\r
-##\r
-\r
-[Defines]\r
-  INF_VERSION                    = 0x00010005\r
-  BASE_NAME                      = DxeIoLibCpuIo\r
-  MODULE_UNI_FILE                = DxeIoLibCpuIo.uni\r
-  FILE_GUID                      = e94cd42a-3aad-4ea0-9b09-945891c60ccd\r
-  MODULE_TYPE                    = DXE_DRIVER\r
-  VERSION_STRING                 = 1.0\r
-  LIBRARY_CLASS                  = IoLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER\r
-  CONSTRUCTOR                    = IoLibConstructor\r
-\r
-#\r
-# The following information is for reference only and not required by the build tools.\r
-#\r
-#  VALID_ARCHITECTURES           = IA32 X64 EBC\r
-#\r
-\r
-[Sources]\r
-  IoLibMmioBuffer.c\r
-  DxeCpuIoLibInternal.h\r
-  IoHighLevel.c\r
-  IoLib.c\r
-\r
-[Packages]\r
-  MdePkg/MdePkg.dec\r
-  IntelFrameworkPkg/IntelFrameworkPkg.dec\r
-\r
-[LibraryClasses]\r
-  BaseLib\r
-  DebugLib\r
-  UefiBootServicesTableLib\r
-\r
-[Protocols]\r
-  gEfiCpuIoProtocolGuid                         ## CONSUMES\r
-\r
-[Depex.common.DXE_DRIVER, Depex.common.DXE_RUNTIME_DRIVER, Depex.common.DXE_SAL_DRIVER, Depex.common.DXE_SMM_DRIVER]\r
-  gEfiCpuIoProtocolGuid\r
-\r
diff --git a/IntelFrameworkPkg/Library/DxeIoLibCpuIo/DxeIoLibCpuIo.uni b/IntelFrameworkPkg/Library/DxeIoLibCpuIo/DxeIoLibCpuIo.uni
deleted file mode 100644 (file)
index 704ce8b..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-// /** @file\r
-// I/O Library implementation that uses the CPU I/O Protocol for I/O and MMIO operations.\r
-//\r
-// The I/O Library implementation that uses the CPU I/O Protocol for I/O and MMIO operations.\r
-//\r
-// Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>\r
-//\r
-// SPDX-License-Identifier: BSD-2-Clause-Patent\r
-//\r
-// **/\r
-\r
-\r
-#string STR_MODULE_ABSTRACT             #language en-US "Uses the CPU I/O Protocol for I/O and MMIO operations"\r
-\r
-#string STR_MODULE_DESCRIPTION          #language en-US "The I/O Library implementation that uses the CPU I/O Protocol for I/O and MMIO operations."\r
-\r
diff --git a/IntelFrameworkPkg/Library/DxeIoLibCpuIo/IoHighLevel.c b/IntelFrameworkPkg/Library/DxeIoLibCpuIo/IoHighLevel.c
deleted file mode 100644 (file)
index 53352c1..0000000
+++ /dev/null
@@ -1,2309 +0,0 @@
-/** @file\r
-  High-level Io/Mmio functions.\r
-\r
-  All assertions for bit field operations are handled bit field functions in the\r
-  Base Library.\r
-\r
-  Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>\r
-  SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  Module Name:  IoHighLevel.c\r
-\r
-  The following IoLib instances share the same version of this file:\r
-\r
-    BaseIoLibIntrinsic\r
-    DxeIoLibCpuIo\r
-    PeiIoLibCpuIo\r
-\r
-**/\r
-\r
-\r
-#include "DxeCpuIoLibInternal.h"\r
-\r
-/**\r
-  Reads an 8-bit I/O port, performs a bitwise OR, and writes the\r
-  result back to the 8-bit I/O port.\r
-\r
-  Reads the 8-bit I/O port specified by Port, performs a bitwise OR\r
-  between the read result and the value specified by OrData, and writes the\r
-  result to the 8-bit I/O port specified by Port. The value written to the I/O\r
-  port is returned. This function must guarantee that all I/O read and write\r
-  operations are serialized.\r
-\r
-  If 8-bit I/O port operations are not supported, then ASSERT().\r
-\r
-  @param  Port    The I/O port to write.\r
-  @param  OrData  The value to OR with the read value from the I/O port.\r
-\r
-  @return The value written back to the I/O port.\r
-\r
-**/\r
-UINT8\r
-EFIAPI\r
-IoOr8 (\r
-  IN      UINTN                     Port,\r
-  IN      UINT8                     OrData\r
-  )\r
-{\r
-  return IoWrite8 (Port, (UINT8) (IoRead8 (Port) | OrData));\r
-}\r
-\r
-/**\r
-  Reads an 8-bit I/O port, performs a bitwise AND, and writes the result back\r
-  to the 8-bit I/O port.\r
-\r
-  Reads the 8-bit I/O port specified by Port, performs a bitwise AND between\r
-  the read result and the value specified by AndData, and writes the result to\r
-  the 8-bit I/O port specified by Port. The value written to the I/O port is\r
-  returned. This function must guarantee that all I/O read and write operations\r
-  are serialized.\r
-\r
-  If 8-bit I/O port operations are not supported, then ASSERT().\r
-\r
-  @param  Port    The I/O port to write.\r
-  @param  AndData The value to AND with the read value from the I/O port.\r
-\r
-  @return The value written back to the I/O port.\r
-\r
-**/\r
-UINT8\r
-EFIAPI\r
-IoAnd8 (\r
-  IN      UINTN                     Port,\r
-  IN      UINT8                     AndData\r
-  )\r
-{\r
-  return IoWrite8 (Port, (UINT8) (IoRead8 (Port) & AndData));\r
-}\r
-\r
-/**\r
-  Reads an 8-bit I/O port, performs a bitwise AND followed by a bitwise\r
-  inclusive OR, and writes the result back to the 8-bit I/O port.\r
-\r
-  Reads the 8-bit I/O port specified by Port, performs a bitwise AND between\r
-  the read result and the value specified by AndData, performs a bitwise OR\r
-  between the result of the AND operation and the value specified by OrData,\r
-  and writes the result to the 8-bit I/O port specified by Port. The value\r
-  written to the I/O port is returned. This function must guarantee that all\r
-  I/O read and write operations are serialized.\r
-\r
-  If 8-bit I/O port operations are not supported, then ASSERT().\r
-\r
-  @param  Port    The I/O port to write.\r
-  @param  AndData The value to AND with the read value from the I/O port.\r
-  @param  OrData  The value to OR with the result of the AND operation.\r
-\r
-  @return The value written back to the I/O port.\r
-\r
-**/\r
-UINT8\r
-EFIAPI\r
-IoAndThenOr8 (\r
-  IN      UINTN                     Port,\r
-  IN      UINT8                     AndData,\r
-  IN      UINT8                     OrData\r
-  )\r
-{\r
-  return IoWrite8 (Port, (UINT8) ((IoRead8 (Port) & AndData) | OrData));\r
-}\r
-\r
-/**\r
-  Reads a bit field of an I/O register.\r
-\r
-  Reads the bit field in an 8-bit I/O register. The bit field is specified by\r
-  the StartBit and the EndBit. The value of the bit field is returned.\r
-\r
-  If 8-bit I/O port operations are not supported, then ASSERT().\r
-  If StartBit is greater than 7, then ASSERT().\r
-  If EndBit is greater than 7, then ASSERT().\r
-  If EndBit is less than StartBit, then ASSERT().\r
-\r
-  @param  Port      The I/O port to read.\r
-  @param  StartBit  The ordinal of the least significant bit in the bit field.\r
-                    Range 0..7.\r
-  @param  EndBit    The ordinal of the most significant bit in the bit field.\r
-                    Range 0..7.\r
-\r
-  @return The value read.\r
-\r
-**/\r
-UINT8\r
-EFIAPI\r
-IoBitFieldRead8 (\r
-  IN      UINTN                     Port,\r
-  IN      UINTN                     StartBit,\r
-  IN      UINTN                     EndBit\r
-  )\r
-{\r
-  return BitFieldRead8 (IoRead8 (Port), StartBit, EndBit);\r
-}\r
-\r
-/**\r
-  Writes a bit field to an I/O register.\r
-\r
-  Writes Value to the bit field of the I/O register. The bit field is specified\r
-  by the StartBit and the EndBit. All other bits in the destination I/O\r
-  register are preserved. The value written to the I/O port is returned. Extra\r
-  left bits in Value are stripped.\r
-\r
-  If 8-bit I/O port operations are not supported, then ASSERT().\r
-  If StartBit is greater than 7, then ASSERT().\r
-  If EndBit is greater than 7, then ASSERT().\r
-  If EndBit is less than StartBit, then ASSERT().\r
-  If Value is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
-\r
-  @param  Port      The I/O port to write.\r
-  @param  StartBit  The ordinal of the least significant bit in the bit field.\r
-                    Range 0..7.\r
-  @param  EndBit    The ordinal of the most significant bit in the bit field.\r
-                    Range 0..7.\r
-  @param  Value     New value of the bit field.\r
-\r
-  @return The value written back to the I/O port.\r
-\r
-**/\r
-UINT8\r
-EFIAPI\r
-IoBitFieldWrite8 (\r
-  IN      UINTN                     Port,\r
-  IN      UINTN                     StartBit,\r
-  IN      UINTN                     EndBit,\r
-  IN      UINT8                     Value\r
-  )\r
-{\r
-  return IoWrite8 (\r
-           Port,\r
-           BitFieldWrite8 (IoRead8 (Port), StartBit, EndBit, Value)\r
-           );\r
-}\r
-\r
-/**\r
-  Reads a bit field in an 8-bit port, performs a bitwise OR, and writes the\r
-  result back to the bit field in the 8-bit port.\r
-\r
-  Reads the 8-bit I/O port specified by Port, performs a bitwise OR\r
-  between the read result and the value specified by OrData, and writes the\r
-  result to the 8-bit I/O port specified by Port. The value written to the I/O\r
-  port is returned. This function must guarantee that all I/O read and write\r
-  operations are serialized. Extra left bits in OrData are stripped.\r
-\r
-  If 8-bit I/O port operations are not supported, then ASSERT().\r
-  If StartBit is greater than 7, then ASSERT().\r
-  If EndBit is greater than 7, then ASSERT().\r
-  If EndBit is less than StartBit, then ASSERT().\r
-  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
-\r
-  @param  Port      The I/O port to write.\r
-  @param  StartBit  The ordinal of the least significant bit in the bit field.\r
-                    Range 0..7.\r
-  @param  EndBit    The ordinal of the most significant bit in the bit field.\r
-                    Range 0..7.\r
-  @param  OrData    The value to OR with the read value from the I/O port.\r
-\r
-  @return The value written back to the I/O port.\r
-\r
-**/\r
-UINT8\r
-EFIAPI\r
-IoBitFieldOr8 (\r
-  IN      UINTN                     Port,\r
-  IN      UINTN                     StartBit,\r
-  IN      UINTN                     EndBit,\r
-  IN      UINT8                     OrData\r
-  )\r
-{\r
-  return IoWrite8 (\r
-           Port,\r
-           BitFieldOr8 (IoRead8 (Port), StartBit, EndBit, OrData)\r
-           );\r
-}\r
-\r
-/**\r
-  Reads a bit field in an 8-bit port, performs a bitwise AND, and writes the\r
-  result back to the bit field in the 8-bit port.\r
-\r
-  Reads the 8-bit I/O port specified by Port, performs a bitwise AND between\r
-  the read result and the value specified by AndData, and writes the result to\r
-  the 8-bit I/O port specified by Port. The value written to the I/O port is\r
-  returned. This function must guarantee that all I/O read and write operations\r
-  are serialized. Extra left bits in AndData are stripped.\r
-\r
-  If 8-bit I/O port operations are not supported, then ASSERT().\r
-  If StartBit is greater than 7, then ASSERT().\r
-  If EndBit is greater than 7, then ASSERT().\r
-  If EndBit is less than StartBit, then ASSERT().\r
-  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
-\r
-  @param  Port      The I/O port to write.\r
-  @param  StartBit  The ordinal of the least significant bit in the bit field.\r
-                    Range 0..7.\r
-  @param  EndBit    The ordinal of the most significant bit in the bit field.\r
-                    Range 0..7.\r
-  @param  AndData   The value to AND with the read value from the I/O port.\r
-\r
-  @return The value written back to the I/O port.\r
-\r
-**/\r
-UINT8\r
-EFIAPI\r
-IoBitFieldAnd8 (\r
-  IN      UINTN                     Port,\r
-  IN      UINTN                     StartBit,\r
-  IN      UINTN                     EndBit,\r
-  IN      UINT8                     AndData\r
-  )\r
-{\r
-  return IoWrite8 (\r
-           Port,\r
-           BitFieldAnd8 (IoRead8 (Port), StartBit, EndBit, AndData)\r
-           );\r
-}\r
-\r
-/**\r
-  Reads a bit field in an 8-bit port, performs a bitwise AND followed by a\r
-  bitwise OR, and writes the result back to the bit field in the\r
-  8-bit port.\r
-\r
-  Reads the 8-bit I/O port specified by Port, performs a bitwise AND followed\r
-  by a bitwise OR between the read result and the value specified by\r
-  AndData, and writes the result to the 8-bit I/O port specified by Port. The\r
-  value written to the I/O port is returned. This function must guarantee that\r
-  all I/O read and write operations are serialized. Extra left bits in both\r
-  AndData and OrData are stripped.\r
-\r
-  If 8-bit I/O port operations are not supported, then ASSERT().\r
-  If StartBit is greater than 7, then ASSERT().\r
-  If EndBit is greater than 7, then ASSERT().\r
-  If EndBit is less than StartBit, then ASSERT().\r
-  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
-  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
-\r
-  @param  Port      The I/O port to write.\r
-  @param  StartBit  The ordinal of the least significant bit in the bit field.\r
-                    Range 0..7.\r
-  @param  EndBit    The ordinal of the most significant bit in the bit field.\r
-                    Range 0..7.\r
-  @param  AndData   The value to AND with the read value from the I/O port.\r
-  @param  OrData    The value to OR with the result of the AND operation.\r
-\r
-  @return The value written back to the I/O port.\r
-\r
-**/\r
-UINT8\r
-EFIAPI\r
-IoBitFieldAndThenOr8 (\r
-  IN      UINTN                     Port,\r
-  IN      UINTN                     StartBit,\r
-  IN      UINTN                     EndBit,\r
-  IN      UINT8                     AndData,\r
-  IN      UINT8                     OrData\r
-  )\r
-{\r
-  return IoWrite8 (\r
-           Port,\r
-           BitFieldAndThenOr8 (IoRead8 (Port), StartBit, EndBit, AndData, OrData)\r
-           );\r
-}\r
-\r
-/**\r
-  Reads a 16-bit I/O port, performs a bitwise OR, and writes the\r
-  result back to the 16-bit I/O port.\r
-\r
-  Reads the 16-bit I/O port specified by Port, performs a bitwise OR\r
-  between the read result and the value specified by OrData, and writes the\r
-  result to the 16-bit I/O port specified by Port. The value written to the I/O\r
-  port is returned. This function must guarantee that all I/O read and write\r
-  operations are serialized.\r
-\r
-  If 16-bit I/O port operations are not supported, then ASSERT().\r
-\r
-  @param  Port    The I/O port to write.\r
-  @param  OrData  The value to OR with the read value from the I/O port.\r
-\r
-  @return The value written back to the I/O port.\r
-\r
-**/\r
-UINT16\r
-EFIAPI\r
-IoOr16 (\r
-  IN      UINTN                     Port,\r
-  IN      UINT16                    OrData\r
-  )\r
-{\r
-  return IoWrite16 (Port, (UINT16) (IoRead16 (Port) | OrData));\r
-}\r
-\r
-/**\r
-  Reads a 16-bit I/O port, performs a bitwise AND, and writes the result back\r
-  to the 16-bit I/O port.\r
-\r
-  Reads the 16-bit I/O port specified by Port, performs a bitwise AND between\r
-  the read result and the value specified by AndData, and writes the result to\r
-  the 16-bit I/O port specified by Port. The value written to the I/O port is\r
-  returned. This function must guarantee that all I/O read and write operations\r
-  are serialized.\r
-\r
-  If 16-bit I/O port operations are not supported, then ASSERT().\r
-\r
-  @param  Port    The I/O port to write.\r
-  @param  AndData The value to AND with the read value from the I/O port.\r
-\r
-  @return The value written back to the I/O port.\r
-\r
-**/\r
-UINT16\r
-EFIAPI\r
-IoAnd16 (\r
-  IN      UINTN                     Port,\r
-  IN      UINT16                    AndData\r
-  )\r
-{\r
-  return IoWrite16 (Port, (UINT16) (IoRead16 (Port) & AndData));\r
-}\r
-\r
-/**\r
-  Reads a 16-bit I/O port, performs a bitwise AND followed by a bitwise\r
-  inclusive OR, and writes the result back to the 16-bit I/O port.\r
-\r
-  Reads the 16-bit I/O port specified by Port, performs a bitwise AND between\r
-  the read result and the value specified by AndData, performs a bitwise OR\r
-  between the result of the AND operation and the value specified by OrData,\r
-  and writes the result to the 16-bit I/O port specified by Port. The value\r
-  written to the I/O port is returned. This function must guarantee that all\r
-  I/O read and write operations are serialized.\r
-\r
-  If 16-bit I/O port operations are not supported, then ASSERT().\r
-\r
-  @param  Port    The I/O port to write.\r
-  @param  AndData The value to AND with the read value from the I/O port.\r
-  @param  OrData  The value to OR with the result of the AND operation.\r
-\r
-  @return The value written back to the I/O port.\r
-\r
-**/\r
-UINT16\r
-EFIAPI\r
-IoAndThenOr16 (\r
-  IN      UINTN                     Port,\r
-  IN      UINT16                    AndData,\r
-  IN      UINT16                    OrData\r
-  )\r
-{\r
-  return IoWrite16 (Port, (UINT16) ((IoRead16 (Port) & AndData) | OrData));\r
-}\r
-\r
-/**\r
-  Reads a bit field of an I/O register.\r
-\r
-  Reads the bit field in a 16-bit I/O register. The bit field is specified by\r
-  the StartBit and the EndBit. The value of the bit field is returned.\r
-\r
-  If 16-bit I/O port operations are not supported, then ASSERT().\r
-  If StartBit is greater than 15, then ASSERT().\r
-  If EndBit is greater than 15, then ASSERT().\r
-  If EndBit is less than StartBit, then ASSERT().\r
-\r
-  @param  Port      The I/O port to read.\r
-  @param  StartBit  The ordinal of the least significant bit in the bit field.\r
-                    Range 0..15.\r
-  @param  EndBit    The ordinal of the most significant bit in the bit field.\r
-                    Range 0..15.\r
-\r
-  @return The value read.\r
-\r
-**/\r
-UINT16\r
-EFIAPI\r
-IoBitFieldRead16 (\r
-  IN      UINTN                     Port,\r
-  IN      UINTN                     StartBit,\r
-  IN      UINTN                     EndBit\r
-  )\r
-{\r
-  return BitFieldRead16 (IoRead16 (Port), StartBit, EndBit);\r
-}\r
-\r
-/**\r
-  Writes a bit field to an I/O register.\r
-\r
-  Writes Value to the bit field of the I/O register. The bit field is specified\r
-  by the StartBit and the EndBit. All other bits in the destination I/O\r
-  register are preserved. The value written to the I/O port is returned. Extra\r
-  left bits in Value are stripped.\r
-\r
-  If 16-bit I/O port operations are not supported, then ASSERT().\r
-  If StartBit is greater than 15, then ASSERT().\r
-  If EndBit is greater than 15, then ASSERT().\r
-  If EndBit is less than StartBit, then ASSERT().\r
-  If Value is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
-\r
-  @param  Port      The I/O port to write.\r
-  @param  StartBit  The ordinal of the least significant bit in the bit field.\r
-                    Range 0..15.\r
-  @param  EndBit    The ordinal of the most significant bit in the bit field.\r
-                    Range 0..15.\r
-  @param  Value     New value of the bit field.\r
-\r
-  @return The value written back to the I/O port.\r
-\r
-**/\r
-UINT16\r
-EFIAPI\r
-IoBitFieldWrite16 (\r
-  IN      UINTN                     Port,\r
-  IN      UINTN                     StartBit,\r
-  IN      UINTN                     EndBit,\r
-  IN      UINT16                    Value\r
-  )\r
-{\r
-  return IoWrite16 (\r
-           Port,\r
-           BitFieldWrite16 (IoRead16 (Port), StartBit, EndBit, Value)\r
-           );\r
-}\r
-\r
-/**\r
-  Reads a bit field in a 16-bit port, performs a bitwise OR, and writes the\r
-  result back to the bit field in the 16-bit port.\r
-\r
-  Reads the 16-bit I/O port specified by Port, performs a bitwise OR\r
-  between the read result and the value specified by OrData, and writes the\r
-  result to the 16-bit I/O port specified by Port. The value written to the I/O\r
-  port is returned. This function must guarantee that all I/O read and write\r
-  operations are serialized. Extra left bits in OrData are stripped.\r
-\r
-  If 16-bit I/O port operations are not supported, then ASSERT().\r
-  If StartBit is greater than 15, then ASSERT().\r
-  If EndBit is greater than 15, then ASSERT().\r
-  If EndBit is less than StartBit, then ASSERT().\r
-  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
-\r
-  @param  Port      The I/O port to write.\r
-  @param  StartBit  The ordinal of the least significant bit in the bit field.\r
-                    Range 0..15.\r
-  @param  EndBit    The ordinal of the most significant bit in the bit field.\r
-                    Range 0..15.\r
-  @param  OrData    The value to OR with the read value from the I/O port.\r
-\r
-  @return The value written back to the I/O port.\r
-\r
-**/\r
-UINT16\r
-EFIAPI\r
-IoBitFieldOr16 (\r
-  IN      UINTN                     Port,\r
-  IN      UINTN                     StartBit,\r
-  IN      UINTN                     EndBit,\r
-  IN      UINT16                    OrData\r
-  )\r
-{\r
-  return IoWrite16 (\r
-           Port,\r
-           BitFieldOr16 (IoRead16 (Port), StartBit, EndBit, OrData)\r
-           );\r
-}\r
-\r
-/**\r
-  Reads a bit field in a 16-bit port, performs a bitwise AND, and writes the\r
-  result back to the bit field in the 16-bit port.\r
-\r
-  Reads the 16-bit I/O port specified by Port, performs a bitwise AND between\r
-  the read result and the value specified by AndData, and writes the result to\r
-  the 16-bit I/O port specified by Port. The value written to the I/O port is\r
-  returned. This function must guarantee that all I/O read and write operations\r
-  are serialized. Extra left bits in AndData are stripped.\r
-\r
-  If 16-bit I/O port operations are not supported, then ASSERT().\r
-  If StartBit is greater than 15, then ASSERT().\r
-  If EndBit is greater than 15, then ASSERT().\r
-  If EndBit is less than StartBit, then ASSERT().\r
-  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
-\r
-  @param  Port      The I/O port to write.\r
-  @param  StartBit  The ordinal of the least significant bit in the bit field.\r
-                    Range 0..15.\r
-  @param  EndBit    The ordinal of the most significant bit in the bit field.\r
-                    Range 0..15.\r
-  @param  AndData   The value to AND with the read value from the I/O port.\r
-\r
-  @return The value written back to the I/O port.\r
-\r
-**/\r
-UINT16\r
-EFIAPI\r
-IoBitFieldAnd16 (\r
-  IN      UINTN                     Port,\r
-  IN      UINTN                     StartBit,\r
-  IN      UINTN                     EndBit,\r
-  IN      UINT16                    AndData\r
-  )\r
-{\r
-  return IoWrite16 (\r
-           Port,\r
-           BitFieldAnd16 (IoRead16 (Port), StartBit, EndBit, AndData)\r
-           );\r
-}\r
-\r
-/**\r
-  Reads a bit field in a 16-bit port, performs a bitwise AND followed by a\r
-  bitwise OR, and writes the result back to the bit field in the\r
-  16-bit port.\r
-\r
-  Reads the 16-bit I/O port specified by Port, performs a bitwise AND followed\r
-  by a bitwise OR between the read result and the value specified by\r
-  AndData, and writes the result to the 16-bit I/O port specified by Port. The\r
-  value written to the I/O port is returned. This function must guarantee that\r
-  all I/O read and write operations are serialized. Extra left bits in both\r
-  AndData and OrData are stripped.\r
-\r
-  If 16-bit I/O port operations are not supported, then ASSERT().\r
-  If StartBit is greater than 15, then ASSERT().\r
-  If EndBit is greater than 15, then ASSERT().\r
-  If EndBit is less than StartBit, then ASSERT().\r
-  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
-  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
-\r
-  @param  Port      The I/O port to write.\r
-  @param  StartBit  The ordinal of the least significant bit in the bit field.\r
-                    Range 0..15.\r
-  @param  EndBit    The ordinal of the most significant bit in the bit field.\r
-                    Range 0..15.\r
-  @param  AndData   The value to AND with the read value from the I/O port.\r
-  @param  OrData    The value to OR with the result of the AND operation.\r
-\r
-  @return The value written back to the I/O port.\r
-\r
-**/\r
-UINT16\r
-EFIAPI\r
-IoBitFieldAndThenOr16 (\r
-  IN      UINTN                     Port,\r
-  IN      UINTN                     StartBit,\r
-  IN      UINTN                     EndBit,\r
-  IN      UINT16                    AndData,\r
-  IN      UINT16                    OrData\r
-  )\r
-{\r
-  return IoWrite16 (\r
-           Port,\r
-           BitFieldAndThenOr16 (IoRead16 (Port), StartBit, EndBit, AndData, OrData)\r
-           );\r
-}\r
-\r
-/**\r
-  Reads a 32-bit I/O port, performs a bitwise OR, and writes the\r
-  result back to the 32-bit I/O port.\r
-\r
-  Reads the 32-bit I/O port specified by Port, performs a bitwise OR\r
-  between the read result and the value specified by OrData, and writes the\r
-  result to the 32-bit I/O port specified by Port. The value written to the I/O\r
-  port is returned. This function must guarantee that all I/O read and write\r
-  operations are serialized.\r
-\r
-  If 32-bit I/O port operations are not supported, then ASSERT().\r
-\r
-  @param  Port    The I/O port to write.\r
-  @param  OrData  The value to OR with the read value from the I/O port.\r
-\r
-  @return The value written back to the I/O port.\r
-\r
-**/\r
-UINT32\r
-EFIAPI\r
-IoOr32 (\r
-  IN      UINTN                     Port,\r
-  IN      UINT32                    OrData\r
-  )\r
-{\r
-  return IoWrite32 (Port, IoRead32 (Port) | OrData);\r
-}\r
-\r
-/**\r
-  Reads a 32-bit I/O port, performs a bitwise AND, and writes the result back\r
-  to the 32-bit I/O port.\r
-\r
-  Reads the 32-bit I/O port specified by Port, performs a bitwise AND between\r
-  the read result and the value specified by AndData, and writes the result to\r
-  the 32-bit I/O port specified by Port. The value written to the I/O port is\r
-  returned. This function must guarantee that all I/O read and write operations\r
-  are serialized.\r
-\r
-  If 32-bit I/O port operations are not supported, then ASSERT().\r
-\r
-  @param  Port    The I/O port to write.\r
-  @param  AndData The value to AND with the read value from the I/O port.\r
-\r
-  @return The value written back to the I/O port.\r
-\r
-**/\r
-UINT32\r
-EFIAPI\r
-IoAnd32 (\r
-  IN      UINTN                     Port,\r
-  IN      UINT32                    AndData\r
-  )\r
-{\r
-  return IoWrite32 (Port, IoRead32 (Port) & AndData);\r
-}\r
-\r
-/**\r
-  Reads a 32-bit I/O port, performs a bitwise AND followed by a bitwise\r
-  inclusive OR, and writes the result back to the 32-bit I/O port.\r
-\r
-  Reads the 32-bit I/O port specified by Port, performs a bitwise AND between\r
-  the read result and the value specified by AndData, performs a bitwise OR\r
-  between the result of the AND operation and the value specified by OrData,\r
-  and writes the result to the 32-bit I/O port specified by Port. The value\r
-  written to the I/O port is returned. This function must guarantee that all\r
-  I/O read and write operations are serialized.\r
-\r
-  If 32-bit I/O port operations are not supported, then ASSERT().\r
-\r
-  @param  Port    The I/O port to write.\r
-  @param  AndData The value to AND with the read value from the I/O port.\r
-  @param  OrData  The value to OR with the result of the AND operation.\r
-\r
-  @return The value written back to the I/O port.\r
-\r
-**/\r
-UINT32\r
-EFIAPI\r
-IoAndThenOr32 (\r
-  IN      UINTN                     Port,\r
-  IN      UINT32                    AndData,\r
-  IN      UINT32                    OrData\r
-  )\r
-{\r
-  return IoWrite32 (Port, (IoRead32 (Port) & AndData) | OrData);\r
-}\r
-\r
-/**\r
-  Reads a bit field of an I/O register.\r
-\r
-  Reads the bit field in a 32-bit I/O register. The bit field is specified by\r
-  the StartBit and the EndBit. The value of the bit field is returned.\r
-\r
-  If 32-bit I/O port operations are not supported, then ASSERT().\r
-  If StartBit is greater than 31, then ASSERT().\r
-  If EndBit is greater than 31, then ASSERT().\r
-  If EndBit is less than StartBit, then ASSERT().\r
-\r
-  @param  Port      The I/O port to read.\r
-  @param  StartBit  The ordinal of the least significant bit in the bit field.\r
-                    Range 0..31.\r
-  @param  EndBit    The ordinal of the most significant bit in the bit field.\r
-                    Range 0..31.\r
-\r
-  @return The value read.\r
-\r
-**/\r
-UINT32\r
-EFIAPI\r
-IoBitFieldRead32 (\r
-  IN      UINTN                     Port,\r
-  IN      UINTN                     StartBit,\r
-  IN      UINTN                     EndBit\r
-  )\r
-{\r
-  return BitFieldRead32 (IoRead32 (Port), StartBit, EndBit);\r
-}\r
-\r
-/**\r
-  Writes a bit field to an I/O register.\r
-\r
-  Writes Value to the bit field of the I/O register. The bit field is specified\r
-  by the StartBit and the EndBit. All other bits in the destination I/O\r
-  register are preserved. The value written to the I/O port is returned. Extra\r
-  left bits in Value are stripped.\r
-\r
-  If 32-bit I/O port operations are not supported, then ASSERT().\r
-  If StartBit is greater than 31, then ASSERT().\r
-  If EndBit is greater than 31, then ASSERT().\r
-  If EndBit is less than StartBit, then ASSERT().\r
-  If Value is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
-\r
-  @param  Port      The I/O port to write.\r
-  @param  StartBit  The ordinal of the least significant bit in the bit field.\r
-                    Range 0..31.\r
-  @param  EndBit    The ordinal of the most significant bit in the bit field.\r
-                    Range 0..31.\r
-  @param  Value     New value of the bit field.\r
-\r
-  @return The value written back to the I/O port.\r
-\r
-**/\r
-UINT32\r
-EFIAPI\r
-IoBitFieldWrite32 (\r
-  IN      UINTN                     Port,\r
-  IN      UINTN                     StartBit,\r
-  IN      UINTN                     EndBit,\r
-  IN      UINT32                    Value\r
-  )\r
-{\r
-  return IoWrite32 (\r
-           Port,\r
-           BitFieldWrite32 (IoRead32 (Port), StartBit, EndBit, Value)\r
-           );\r
-}\r
-\r
-/**\r
-  Reads a bit field in a 32-bit port, performs a bitwise OR, and writes the\r
-  result back to the bit field in the 32-bit port.\r
-\r
-  Reads the 32-bit I/O port specified by Port, performs a bitwise OR\r
-  between the read result and the value specified by OrData, and writes the\r
-  result to the 32-bit I/O port specified by Port. The value written to the I/O\r
-  port is returned. This function must guarantee that all I/O read and write\r
-  operations are serialized. Extra left bits in OrData are stripped.\r
-\r
-  If 32-bit I/O port operations are not supported, then ASSERT().\r
-  If StartBit is greater than 31, then ASSERT().\r
-  If EndBit is greater than 31, then ASSERT().\r
-  If EndBit is less than StartBit, then ASSERT().\r
-  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
-\r
-  @param  Port      The I/O port to write.\r
-  @param  StartBit  The ordinal of the least significant bit in the bit field.\r
-                    Range 0..31.\r
-  @param  EndBit    The ordinal of the most significant bit in the bit field.\r
-                    Range 0..31.\r
-  @param  OrData    The value to OR with the read value from the I/O port.\r
-\r
-  @return The value written back to the I/O port.\r
-\r
-**/\r
-UINT32\r
-EFIAPI\r
-IoBitFieldOr32 (\r
-  IN      UINTN                     Port,\r
-  IN      UINTN                     StartBit,\r
-  IN      UINTN                     EndBit,\r
-  IN      UINT32                    OrData\r
-  )\r
-{\r
-  return IoWrite32 (\r
-           Port,\r
-           BitFieldOr32 (IoRead32 (Port), StartBit, EndBit, OrData)\r
-           );\r
-}\r
-\r
-/**\r
-  Reads a bit field in a 32-bit port, performs a bitwise AND, and writes the\r
-  result back to the bit field in the 32-bit port.\r
-\r
-  Reads the 32-bit I/O port specified by Port, performs a bitwise AND between\r
-  the read result and the value specified by AndData, and writes the result to\r
-  the 32-bit I/O port specified by Port. The value written to the I/O port is\r
-  returned. This function must guarantee that all I/O read and write operations\r
-  are serialized. Extra left bits in AndData are stripped.\r
-\r
-  If 32-bit I/O port operations are not supported, then ASSERT().\r
-  If StartBit is greater than 31, then ASSERT().\r
-  If EndBit is greater than 31, then ASSERT().\r
-  If EndBit is less than StartBit, then ASSERT().\r
-  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
-\r
-  @param  Port      The I/O port to write.\r
-  @param  StartBit  The ordinal of the least significant bit in the bit field.\r
-                    Range 0..31.\r
-  @param  EndBit    The ordinal of the most significant bit in the bit field.\r
-                    Range 0..31.\r
-  @param  AndData   The value to AND with the read value from the I/O port.\r
-\r
-  @return The value written back to the I/O port.\r
-\r
-**/\r
-UINT32\r
-EFIAPI\r
-IoBitFieldAnd32 (\r
-  IN      UINTN                     Port,\r
-  IN      UINTN                     StartBit,\r
-  IN      UINTN                     EndBit,\r
-  IN      UINT32                    AndData\r
-  )\r
-{\r
-  return IoWrite32 (\r
-           Port,\r
-           BitFieldAnd32 (IoRead32 (Port), StartBit, EndBit, AndData)\r
-           );\r
-}\r
-\r
-/**\r
-  Reads a bit field in a 32-bit port, performs a bitwise AND followed by a\r
-  bitwise OR, and writes the result back to the bit field in the\r
-  32-bit port.\r
-\r
-  Reads the 32-bit I/O port specified by Port, performs a bitwise AND followed\r
-  by a bitwise OR between the read result and the value specified by\r
-  AndData, and writes the result to the 32-bit I/O port specified by Port. The\r
-  value written to the I/O port is returned. This function must guarantee that\r
-  all I/O read and write operations are serialized. Extra left bits in both\r
-  AndData and OrData are stripped.\r
-\r
-  If 32-bit I/O port operations are not supported, then ASSERT().\r
-  If StartBit is greater than 31, then ASSERT().\r
-  If EndBit is greater than 31, then ASSERT().\r
-  If EndBit is less than StartBit, then ASSERT().\r
-  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
-  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
-\r
-  @param  Port      The I/O port to write.\r
-  @param  StartBit  The ordinal of the least significant bit in the bit field.\r
-                    Range 0..31.\r
-  @param  EndBit    The ordinal of the most significant bit in the bit field.\r
-                    Range 0..31.\r
-  @param  AndData   The value to AND with the read value from the I/O port.\r
-  @param  OrData    The value to OR with the result of the AND operation.\r
-\r
-  @return The value written back to the I/O port.\r
-\r
-**/\r
-UINT32\r
-EFIAPI\r
-IoBitFieldAndThenOr32 (\r
-  IN      UINTN                     Port,\r
-  IN      UINTN                     StartBit,\r
-  IN      UINTN                     EndBit,\r
-  IN      UINT32                    AndData,\r
-  IN      UINT32                    OrData\r
-  )\r
-{\r
-  return IoWrite32 (\r
-           Port,\r
-           BitFieldAndThenOr32 (IoRead32 (Port), StartBit, EndBit, AndData, OrData)\r
-           );\r
-}\r
-\r
-/**\r
-  Reads a 64-bit I/O port, performs a bitwise OR, and writes the\r
-  result back to the 64-bit I/O port.\r
-\r
-  Reads the 64-bit I/O port specified by Port, performs a bitwise OR\r
-  between the read result and the value specified by OrData, and writes the\r
-  result to the 64-bit I/O port specified by Port. The value written to the I/O\r
-  port is returned. This function must guarantee that all I/O read and write\r
-  operations are serialized.\r
-\r
-  If 64-bit I/O port operations are not supported, then ASSERT().\r
-\r
-  @param  Port    The I/O port to write.\r
-  @param  OrData  The value to OR with the read value from the I/O port.\r
-\r
-  @return The value written back to the I/O port.\r
-\r
-**/\r
-UINT64\r
-EFIAPI\r
-IoOr64 (\r
-  IN      UINTN                     Port,\r
-  IN      UINT64                    OrData\r
-  )\r
-{\r
-  return IoWrite64 (Port, IoRead64 (Port) | OrData);\r
-}\r
-\r
-/**\r
-  Reads a 64-bit I/O port, performs a bitwise AND, and writes the result back\r
-  to the 64-bit I/O port.\r
-\r
-  Reads the 64-bit I/O port specified by Port, performs a bitwise AND between\r
-  the read result and the value specified by AndData, and writes the result to\r
-  the 64-bit I/O port specified by Port. The value written to the I/O port is\r
-  returned. This function must guarantee that all I/O read and write operations\r
-  are serialized.\r
-\r
-  If 64-bit I/O port operations are not supported, then ASSERT().\r
-\r
-  @param  Port    The I/O port to write.\r
-  @param  AndData The value to AND with the read value from the I/O port.\r
-\r
-  @return The value written back to the I/O port.\r
-\r
-**/\r
-UINT64\r
-EFIAPI\r
-IoAnd64 (\r
-  IN      UINTN                     Port,\r
-  IN      UINT64                    AndData\r
-  )\r
-{\r
-  return IoWrite64 (Port, IoRead64 (Port) & AndData);\r
-}\r
-\r
-/**\r
-  Reads a 64-bit I/O port, performs a bitwise AND followed by a bitwise\r
-  inclusive OR, and writes the result back to the 64-bit I/O port.\r
-\r
-  Reads the 64-bit I/O port specified by Port, performs a bitwise AND between\r
-  the read result and the value specified by AndData, performs a bitwise OR\r
-  between the result of the AND operation and the value specified by OrData,\r
-  and writes the result to the 64-bit I/O port specified by Port. The value\r
-  written to the I/O port is returned. This function must guarantee that all\r
-  I/O read and write operations are serialized.\r
-\r
-  If 64-bit I/O port operations are not supported, then ASSERT().\r
-\r
-  @param  Port    The I/O port to write.\r
-  @param  AndData The value to AND with the read value from the I/O port.\r
-  @param  OrData  The value to OR with the result of the AND operation.\r
-\r
-  @return The value written back to the I/O port.\r
-\r
-**/\r
-UINT64\r
-EFIAPI\r
-IoAndThenOr64 (\r
-  IN      UINTN                     Port,\r
-  IN      UINT64                    AndData,\r
-  IN      UINT64                    OrData\r
-  )\r
-{\r
-  return IoWrite64 (Port, (IoRead64 (Port) & AndData) | OrData);\r
-}\r
-\r
-/**\r
-  Reads a bit field of an I/O register.\r
-\r
-  Reads the bit field in a 64-bit I/O register. The bit field is specified by\r
-  the StartBit and the EndBit. The value of the bit field is returned.\r
-\r
-  If 64-bit I/O port operations are not supported, then ASSERT().\r
-  If StartBit is greater than 63, then ASSERT().\r
-  If EndBit is greater than 63, then ASSERT().\r
-  If EndBit is less than StartBit, then ASSERT().\r
-\r
-  @param  Port      The I/O port to read.\r
-  @param  StartBit  The ordinal of the least significant bit in the bit field.\r
-                    Range 0..63.\r
-  @param  EndBit    The ordinal of the most significant bit in the bit field.\r
-                    Range 0..63.\r
-\r
-  @return The value read.\r
-\r
-**/\r
-UINT64\r
-EFIAPI\r
-IoBitFieldRead64 (\r
-  IN      UINTN                     Port,\r
-  IN      UINTN                     StartBit,\r
-  IN      UINTN                     EndBit\r
-  )\r
-{\r
-  return BitFieldRead64 (IoRead64 (Port), StartBit, EndBit);\r
-}\r
-\r
-/**\r
-  Writes a bit field to an I/O register.\r
-\r
-  Writes Value to the bit field of the I/O register. The bit field is specified\r
-  by the StartBit and the EndBit. All other bits in the destination I/O\r
-  register are preserved. The value written to the I/O port is returned. Extra\r
-  left bits in Value are stripped.\r
-\r
-  If 64-bit I/O port operations are not supported, then ASSERT().\r
-  If StartBit is greater than 63, then ASSERT().\r
-  If EndBit is greater than 63, then ASSERT().\r
-  If EndBit is less than StartBit, then ASSERT().\r
-  If Value is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
-\r
-  @param  Port      The I/O port to write.\r
-  @param  StartBit  The ordinal of the least significant bit in the bit field.\r
-                    Range 0..63.\r
-  @param  EndBit    The ordinal of the most significant bit in the bit field.\r
-                    Range 0..63.\r
-  @param  Value     New value of the bit field.\r
-\r
-  @return The value written back to the I/O port.\r
-\r
-**/\r
-UINT64\r
-EFIAPI\r
-IoBitFieldWrite64 (\r
-  IN      UINTN                     Port,\r
-  IN      UINTN                     StartBit,\r
-  IN      UINTN                     EndBit,\r
-  IN      UINT64                    Value\r
-  )\r
-{\r
-  return IoWrite64 (\r
-           Port,\r
-           BitFieldWrite64 (IoRead64 (Port), StartBit, EndBit, Value)\r
-           );\r
-}\r
-\r
-/**\r
-  Reads a bit field in a 64-bit port, performs a bitwise OR, and writes the\r
-  result back to the bit field in the 64-bit port.\r
-\r
-  Reads the 64-bit I/O port specified by Port, performs a bitwise OR\r
-  between the read result and the value specified by OrData, and writes the\r
-  result to the 64-bit I/O port specified by Port. The value written to the I/O\r
-  port is returned. This function must guarantee that all I/O read and write\r
-  operations are serialized. Extra left bits in OrData are stripped.\r
-\r
-  If 64-bit I/O port operations are not supported, then ASSERT().\r
-  If StartBit is greater than 63, then ASSERT().\r
-  If EndBit is greater than 63, then ASSERT().\r
-  If EndBit is less than StartBit, then ASSERT().\r
-  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
-\r
-  @param  Port      The I/O port to write.\r
-  @param  StartBit  The ordinal of the least significant bit in the bit field.\r
-                    Range 0..63.\r
-  @param  EndBit    The ordinal of the most significant bit in the bit field.\r
-                    Range 0..63.\r
-  @param  OrData    The value to OR with the read value from the I/O port.\r
-\r
-  @return The value written back to the I/O port.\r
-\r
-**/\r
-UINT64\r
-EFIAPI\r
-IoBitFieldOr64 (\r
-  IN      UINTN                     Port,\r
-  IN      UINTN                     StartBit,\r
-  IN      UINTN                     EndBit,\r
-  IN      UINT64                    OrData\r
-  )\r
-{\r
-  return IoWrite64 (\r
-           Port,\r
-           BitFieldOr64 (IoRead64 (Port), StartBit, EndBit, OrData)\r
-           );\r
-}\r
-\r
-/**\r
-  Reads a bit field in a 64-bit port, performs a bitwise AND, and writes the\r
-  result back to the bit field in the 64-bit port.\r
-\r
-  Reads the 64-bit I/O port specified by Port, performs a bitwise AND between\r
-  the read result and the value specified by AndData, and writes the result to\r
-  the 64-bit I/O port specified by Port. The value written to the I/O port is\r
-  returned. This function must guarantee that all I/O read and write operations\r
-  are serialized. Extra left bits in AndData are stripped.\r
-\r
-  If 64-bit I/O port operations are not supported, then ASSERT().\r
-  If StartBit is greater than 63, then ASSERT().\r
-  If EndBit is greater than 63, then ASSERT().\r
-  If EndBit is less than StartBit, then ASSERT().\r
-  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
-\r
-  @param  Port      The I/O port to write.\r
-  @param  StartBit  The ordinal of the least significant bit in the bit field.\r
-                    Range 0..63.\r
-  @param  EndBit    The ordinal of the most significant bit in the bit field.\r
-                    Range 0..63.\r
-  @param  AndData   The value to AND with the read value from the I/O port.\r
-\r
-  @return The value written back to the I/O port.\r
-\r
-**/\r
-UINT64\r
-EFIAPI\r
-IoBitFieldAnd64 (\r
-  IN      UINTN                     Port,\r
-  IN      UINTN                     StartBit,\r
-  IN      UINTN                     EndBit,\r
-  IN      UINT64                    AndData\r
-  )\r
-{\r
-  return IoWrite64 (\r
-           Port,\r
-           BitFieldAnd64 (IoRead64 (Port), StartBit, EndBit, AndData)\r
-           );\r
-}\r
-\r
-/**\r
-  Reads a bit field in a 64-bit port, performs a bitwise AND followed by a\r
-  bitwise OR, and writes the result back to the bit field in the\r
-  64-bit port.\r
-\r
-  Reads the 64-bit I/O port specified by Port, performs a bitwise AND followed\r
-  by a bitwise OR between the read result and the value specified by\r
-  AndData, and writes the result to the 64-bit I/O port specified by Port. The\r
-  value written to the I/O port is returned. This function must guarantee that\r
-  all I/O read and write operations are serialized. Extra left bits in both\r
-  AndData and OrData are stripped.\r
-\r
-  If 64-bit I/O port operations are not supported, then ASSERT().\r
-  If StartBit is greater than 63, then ASSERT().\r
-  If EndBit is greater than 63, then ASSERT().\r
-  If EndBit is less than StartBit, then ASSERT().\r
-  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
-  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
-\r
-  @param  Port      The I/O port to write.\r
-  @param  StartBit  The ordinal of the least significant bit in the bit field.\r
-                    Range 0..63.\r
-  @param  EndBit    The ordinal of the most significant bit in the bit field.\r
-                    Range 0..63.\r
-  @param  AndData   The value to AND with the read value from the I/O port.\r
-  @param  OrData    The value to OR with the result of the AND operation.\r
-\r
-  @return The value written back to the I/O port.\r
-\r
-**/\r
-UINT64\r
-EFIAPI\r
-IoBitFieldAndThenOr64 (\r
-  IN      UINTN                     Port,\r
-  IN      UINTN                     StartBit,\r
-  IN      UINTN                     EndBit,\r
-  IN      UINT64                    AndData,\r
-  IN      UINT64                    OrData\r
-  )\r
-{\r
-  return IoWrite64 (\r
-           Port,\r
-           BitFieldAndThenOr64 (IoRead64 (Port), StartBit, EndBit, AndData, OrData)\r
-           );\r
-}\r
-\r
-/**\r
-  Reads an 8-bit MMIO register, performs a bitwise OR, and writes the\r
-  result back to the 8-bit MMIO register.\r
-\r
-  Reads the 8-bit MMIO register specified by Address, performs a bitwise\r
-  inclusive OR between the read result and the value specified by OrData, and\r
-  writes the result to the 8-bit MMIO register specified by Address. The value\r
-  written to the MMIO register is returned. This function must guarantee that\r
-  all MMIO read and write operations are serialized.\r
-\r
-  If 8-bit MMIO register operations are not supported, then ASSERT().\r
-\r
-  @param  Address The MMIO register to write.\r
-  @param  OrData  The value to OR with the read value from the MMIO register.\r
-\r
-  @return The value written back to the MMIO register.\r
-\r
-**/\r
-UINT8\r
-EFIAPI\r
-MmioOr8 (\r
-  IN      UINTN                     Address,\r
-  IN      UINT8                     OrData\r
-  )\r
-{\r
-  return MmioWrite8 (Address, (UINT8) (MmioRead8 (Address) | OrData));\r
-}\r
-\r
-/**\r
-  Reads an 8-bit MMIO register, performs a bitwise AND, and writes the result\r
-  back to the 8-bit MMIO register.\r
-\r
-  Reads the 8-bit MMIO register specified by Address, performs a bitwise AND\r
-  between the read result and the value specified by AndData, and writes the\r
-  result to the 8-bit MMIO register specified by Address. The value written to\r
-  the MMIO register is returned. This function must guarantee that all MMIO\r
-  read and write operations are serialized.\r
-\r
-  If 8-bit MMIO register operations are not supported, then ASSERT().\r
-\r
-  @param  Address The MMIO register to write.\r
-  @param  AndData The value to AND with the read value from the MMIO register.\r
-\r
-  @return The value written back to the MMIO register.\r
-\r
-**/\r
-UINT8\r
-EFIAPI\r
-MmioAnd8 (\r
-  IN      UINTN                     Address,\r
-  IN      UINT8                     AndData\r
-  )\r
-{\r
-  return MmioWrite8 (Address, (UINT8) (MmioRead8 (Address) & AndData));\r
-}\r
-\r
-/**\r
-  Reads an 8-bit MMIO register, performs a bitwise AND followed by a bitwise\r
-  inclusive OR, and writes the result back to the 8-bit MMIO register.\r
-\r
-  Reads the 8-bit MMIO register specified by Address, performs a bitwise AND\r
-  between the read result and the value specified by AndData, performs a\r
-  bitwise OR between the result of the AND operation and the value specified by\r
-  OrData, and writes the result to the 8-bit MMIO register specified by\r
-  Address. The value written to the MMIO register is returned. This function\r
-  must guarantee that all MMIO read and write operations are serialized.\r
-\r
-  If 8-bit MMIO register operations are not supported, then ASSERT().\r
-\r
-\r
-  @param  Address The MMIO register to write.\r
-  @param  AndData The value to AND with the read value from the MMIO register.\r
-  @param  OrData  The value to OR with the result of the AND operation.\r
-\r
-  @return The value written back to the MMIO register.\r
-\r
-**/\r
-UINT8\r
-EFIAPI\r
-MmioAndThenOr8 (\r
-  IN      UINTN                     Address,\r
-  IN      UINT8                     AndData,\r
-  IN      UINT8                     OrData\r
-  )\r
-{\r
-  return MmioWrite8 (Address, (UINT8) ((MmioRead8 (Address) & AndData) | OrData));\r
-}\r
-\r
-/**\r
-  Reads a bit field of a MMIO register.\r
-\r
-  Reads the bit field in an 8-bit MMIO register. The bit field is specified by\r
-  the StartBit and the EndBit. The value of the bit field is returned.\r
-\r
-  If 8-bit MMIO register operations are not supported, then ASSERT().\r
-  If StartBit is greater than 7, then ASSERT().\r
-  If EndBit is greater than 7, then ASSERT().\r
-  If EndBit is less than StartBit, then ASSERT().\r
-\r
-  @param  Address   MMIO register to read.\r
-  @param  StartBit  The ordinal of the least significant bit in the bit field.\r
-                    Range 0..7.\r
-  @param  EndBit    The ordinal of the most significant bit in the bit field.\r
-                    Range 0..7.\r
-\r
-  @return The value read.\r
-\r
-**/\r
-UINT8\r
-EFIAPI\r
-MmioBitFieldRead8 (\r
-  IN      UINTN                     Address,\r
-  IN      UINTN                     StartBit,\r
-  IN      UINTN                     EndBit\r
-  )\r
-{\r
-  return BitFieldRead8 (MmioRead8 (Address), StartBit, EndBit);\r
-}\r
-\r
-/**\r
-  Writes a bit field to a MMIO register.\r
-\r
-  Writes Value to the bit field of the MMIO register. The bit field is\r
-  specified by the StartBit and the EndBit. All other bits in the destination\r
-  MMIO register are preserved. The new value of the 8-bit register is returned.\r
-\r
-  If 8-bit MMIO register operations are not supported, then ASSERT().\r
-  If StartBit is greater than 7, then ASSERT().\r
-  If EndBit is greater than 7, then ASSERT().\r
-  If EndBit is less than StartBit, then ASSERT().\r
-  If Value is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
-\r
-  @param  Address   MMIO register to write.\r
-  @param  StartBit  The ordinal of the least significant bit in the bit field.\r
-                    Range 0..7.\r
-  @param  EndBit    The ordinal of the most significant bit in the bit field.\r
-                    Range 0..7.\r
-  @param  Value     New value of the bit field.\r
-\r
-  @return The value written back to the MMIO register.\r
-\r
-**/\r
-UINT8\r
-EFIAPI\r
-MmioBitFieldWrite8 (\r
-  IN      UINTN                     Address,\r
-  IN      UINTN                     StartBit,\r
-  IN      UINTN                     EndBit,\r
-  IN      UINT8                     Value\r
-  )\r
-{\r
-  return MmioWrite8 (\r
-           Address,\r
-           BitFieldWrite8 (MmioRead8 (Address), StartBit, EndBit, Value)\r
-           );\r
-}\r
-\r
-/**\r
-  Reads a bit field in an 8-bit MMIO register, performs a bitwise OR, and\r
-  writes the result back to the bit field in the 8-bit MMIO register.\r
-\r
-  Reads the 8-bit MMIO register specified by Address, performs a bitwise\r
-  inclusive OR between the read result and the value specified by OrData, and\r
-  writes the result to the 8-bit MMIO register specified by Address. The value\r
-  written to the MMIO register is returned. This function must guarantee that\r
-  all MMIO read and write operations are serialized. Extra left bits in OrData\r
-  are stripped.\r
-\r
-  If 8-bit MMIO register operations are not supported, then ASSERT().\r
-  If StartBit is greater than 7, then ASSERT().\r
-  If EndBit is greater than 7, then ASSERT().\r
-  If EndBit is less than StartBit, then ASSERT().\r
-  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
-\r
-  @param  Address   MMIO register to write.\r
-  @param  StartBit  The ordinal of the least significant bit in the bit field.\r
-                    Range 0..7.\r
-  @param  EndBit    The ordinal of the most significant bit in the bit field.\r
-                    Range 0..7.\r
-  @param  OrData    The value to OR with read value from the MMIO register.\r
-\r
-  @return The value written back to the MMIO register.\r
-\r
-**/\r
-UINT8\r
-EFIAPI\r
-MmioBitFieldOr8 (\r
-  IN      UINTN                     Address,\r
-  IN      UINTN                     StartBit,\r
-  IN      UINTN                     EndBit,\r
-  IN      UINT8                     OrData\r
-  )\r
-{\r
-  return MmioWrite8 (\r
-           Address,\r
-           BitFieldOr8 (MmioRead8 (Address), StartBit, EndBit, OrData)\r
-           );\r
-}\r
-\r
-/**\r
-  Reads a bit field in an 8-bit MMIO register, performs a bitwise AND, and\r
-  writes the result back to the bit field in the 8-bit MMIO register.\r
-\r
-  Reads the 8-bit MMIO register specified by Address, performs a bitwise AND\r
-  between the read result and the value specified by AndData, and writes the\r
-  result to the 8-bit MMIO register specified by Address. The value written to\r
-  the MMIO register is returned. This function must guarantee that all MMIO\r
-  read and write operations are serialized. Extra left bits in AndData are\r
-  stripped.\r
-\r
-  If 8-bit MMIO register operations are not supported, then ASSERT().\r
-  If StartBit is greater than 7, then ASSERT().\r
-  If EndBit is greater than 7, then ASSERT().\r
-  If EndBit is less than StartBit, then ASSERT().\r
-  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
-\r
-  @param  Address   MMIO register to write.\r
-  @param  StartBit  The ordinal of the least significant bit in the bit field.\r
-                    Range 0..7.\r
-  @param  EndBit    The ordinal of the most significant bit in the bit field.\r
-                    Range 0..7.\r
-  @param  AndData   The value to AND with read value from the MMIO register.\r
-\r
-  @return The value written back to the MMIO register.\r
-\r
-**/\r
-UINT8\r
-EFIAPI\r
-MmioBitFieldAnd8 (\r
-  IN      UINTN                     Address,\r
-  IN      UINTN                     StartBit,\r
-  IN      UINTN                     EndBit,\r
-  IN      UINT8                     AndData\r
-  )\r
-{\r
-  return MmioWrite8 (\r
-           Address,\r
-           BitFieldAnd8 (MmioRead8 (Address), StartBit, EndBit, AndData)\r
-           );\r
-}\r
-\r
-/**\r
-  Reads a bit field in an 8-bit MMIO register, performs a bitwise AND followed\r
-  by a bitwise OR, and writes the result back to the bit field in the\r
-  8-bit MMIO register.\r
-\r
-  Reads the 8-bit MMIO register specified by Address, performs a bitwise AND\r
-  followed by a bitwise OR between the read result and the value\r
-  specified by AndData, and writes the result to the 8-bit MMIO register\r
-  specified by Address. The value written to the MMIO register is returned.\r
-  This function must guarantee that all MMIO read and write operations are\r
-  serialized. Extra left bits in both AndData and OrData are stripped.\r
-\r
-  If 8-bit MMIO register operations are not supported, then ASSERT().\r
-  If StartBit is greater than 7, then ASSERT().\r
-  If EndBit is greater than 7, then ASSERT().\r
-  If EndBit is less than StartBit, then ASSERT().\r
-  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
-  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
-\r
-  @param  Address   MMIO register to write.\r
-  @param  StartBit  The ordinal of the least significant bit in the bit field.\r
-                    Range 0..7.\r
-  @param  EndBit    The ordinal of the most significant bit in the bit field.\r
-                    Range 0..7.\r
-  @param  AndData   The value to AND with read value from the MMIO register.\r
-  @param  OrData    The value to OR with the result of the AND operation.\r
-\r
-  @return The value written back to the MMIO register.\r
-\r
-**/\r
-UINT8\r
-EFIAPI\r
-MmioBitFieldAndThenOr8 (\r
-  IN      UINTN                     Address,\r
-  IN      UINTN                     StartBit,\r
-  IN      UINTN                     EndBit,\r
-  IN      UINT8                     AndData,\r
-  IN      UINT8                     OrData\r
-  )\r
-{\r
-  return MmioWrite8 (\r
-           Address,\r
-           BitFieldAndThenOr8 (MmioRead8 (Address), StartBit, EndBit, AndData, OrData)\r
-           );\r
-}\r
-\r
-/**\r
-  Reads a 16-bit MMIO register, performs a bitwise OR, and writes the\r
-  result back to the 16-bit MMIO register.\r
-\r
-  Reads the 16-bit MMIO register specified by Address, performs a bitwise\r
-  inclusive OR between the read result and the value specified by OrData, and\r
-  writes the result to the 16-bit MMIO register specified by Address. The value\r
-  written to the MMIO register is returned. This function must guarantee that\r
-  all MMIO read and write operations are serialized.\r
-\r
-  If 16-bit MMIO register operations are not supported, then ASSERT().\r
-\r
-  @param  Address The MMIO register to write.\r
-  @param  OrData  The value to OR with the read value from the MMIO register.\r
-\r
-  @return The value written back to the MMIO register.\r
-\r
-**/\r
-UINT16\r
-EFIAPI\r
-MmioOr16 (\r
-  IN      UINTN                     Address,\r
-  IN      UINT16                    OrData\r
-  )\r
-{\r
-  return MmioWrite16 (Address, (UINT16) (MmioRead16 (Address) | OrData));\r
-}\r
-\r
-/**\r
-  Reads a 16-bit MMIO register, performs a bitwise AND, and writes the result\r
-  back to the 16-bit MMIO register.\r
-\r
-  Reads the 16-bit MMIO register specified by Address, performs a bitwise AND\r
-  between the read result and the value specified by AndData, and writes the\r
-  result to the 16-bit MMIO register specified by Address. The value written to\r
-  the MMIO register is returned. This function must guarantee that all MMIO\r
-  read and write operations are serialized.\r
-\r
-  If 16-bit MMIO register operations are not supported, then ASSERT().\r
-\r
-  @param  Address The MMIO register to write.\r
-  @param  AndData The value to AND with the read value from the MMIO register.\r
-\r
-  @return The value written back to the MMIO register.\r
-\r
-**/\r
-UINT16\r
-EFIAPI\r
-MmioAnd16 (\r
-  IN      UINTN                     Address,\r
-  IN      UINT16                    AndData\r
-  )\r
-{\r
-  return MmioWrite16 (Address, (UINT16) (MmioRead16 (Address) & AndData));\r
-}\r
-\r
-/**\r
-  Reads a 16-bit MMIO register, performs a bitwise AND followed by a bitwise\r
-  inclusive OR, and writes the result back to the 16-bit MMIO register.\r
-\r
-  Reads the 16-bit MMIO register specified by Address, performs a bitwise AND\r
-  between the read result and the value specified by AndData, performs a\r
-  bitwise OR between the result of the AND operation and the value specified by\r
-  OrData, and writes the result to the 16-bit MMIO register specified by\r
-  Address. The value written to the MMIO register is returned. This function\r
-  must guarantee that all MMIO read and write operations are serialized.\r
-\r
-  If 16-bit MMIO register operations are not supported, then ASSERT().\r
-\r
-\r
-  @param  Address The MMIO register to write.\r
-  @param  AndData The value to AND with the read value from the MMIO register.\r
-  @param  OrData  The value to OR with the result of the AND operation.\r
-\r
-  @return The value written back to the MMIO register.\r
-\r
-**/\r
-UINT16\r
-EFIAPI\r
-MmioAndThenOr16 (\r
-  IN      UINTN                     Address,\r
-  IN      UINT16                    AndData,\r
-  IN      UINT16                    OrData\r
-  )\r
-{\r
-  return MmioWrite16 (Address, (UINT16) ((MmioRead16 (Address) & AndData) | OrData));\r
-}\r
-\r
-/**\r
-  Reads a bit field of a MMIO register.\r
-\r
-  Reads the bit field in a 16-bit MMIO register. The bit field is specified by\r
-  the StartBit and the EndBit. The value of the bit field is returned.\r
-\r
-  If 16-bit MMIO register operations are not supported, then ASSERT().\r
-  If StartBit is greater than 15, then ASSERT().\r
-  If EndBit is greater than 15, then ASSERT().\r
-  If EndBit is less than StartBit, then ASSERT().\r
-\r
-  @param  Address   MMIO register to read.\r
-  @param  StartBit  The ordinal of the least significant bit in the bit field.\r
-                    Range 0..15.\r
-  @param  EndBit    The ordinal of the most significant bit in the bit field.\r
-                    Range 0..15.\r
-\r
-  @return The value read.\r
-\r
-**/\r
-UINT16\r
-EFIAPI\r
-MmioBitFieldRead16 (\r
-  IN      UINTN                     Address,\r
-  IN      UINTN                     StartBit,\r
-  IN      UINTN                     EndBit\r
-  )\r
-{\r
-  return BitFieldRead16 (MmioRead16 (Address), StartBit, EndBit);\r
-}\r
-\r
-/**\r
-  Writes a bit field to a MMIO register.\r
-\r
-  Writes Value to the bit field of the MMIO register. The bit field is\r
-  specified by the StartBit and the EndBit. All other bits in the destination\r
-  MMIO register are preserved. The new value of the 16-bit register is returned.\r
-\r
-  If 16-bit MMIO register operations are not supported, then ASSERT().\r
-  If StartBit is greater than 15, then ASSERT().\r
-  If EndBit is greater than 15, then ASSERT().\r
-  If EndBit is less than StartBit, then ASSERT().\r
-  If Value is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
-\r
-  @param  Address   MMIO register to write.\r
-  @param  StartBit  The ordinal of the least significant bit in the bit field.\r
-                    Range 0..15.\r
-  @param  EndBit    The ordinal of the most significant bit in the bit field.\r
-                    Range 0..15.\r
-  @param  Value     New value of the bit field.\r
-\r
-  @return The value written back to the MMIO register.\r
-\r
-**/\r
-UINT16\r
-EFIAPI\r
-MmioBitFieldWrite16 (\r
-  IN      UINTN                     Address,\r
-  IN      UINTN                     StartBit,\r
-  IN      UINTN                     EndBit,\r
-  IN      UINT16                    Value\r
-  )\r
-{\r
-  return MmioWrite16 (\r
-           Address,\r
-           BitFieldWrite16 (MmioRead16 (Address), StartBit, EndBit, Value)\r
-           );\r
-}\r
-\r
-/**\r
-  Reads a bit field in a 16-bit MMIO register, performs a bitwise OR, and\r
-  writes the result back to the bit field in the 16-bit MMIO register.\r
-\r
-  Reads the 16-bit MMIO register specified by Address, performs a bitwise\r
-  inclusive OR between the read result and the value specified by OrData, and\r
-  writes the result to the 16-bit MMIO register specified by Address. The value\r
-  written to the MMIO register is returned. This function must guarantee that\r
-  all MMIO read and write operations are serialized. Extra left bits in OrData\r
-  are stripped.\r
-\r
-  If 16-bit MMIO register operations are not supported, then ASSERT().\r
-  If StartBit is greater than 15, then ASSERT().\r
-  If EndBit is greater than 15, then ASSERT().\r
-  If EndBit is less than StartBit, then ASSERT().\r
-  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
-\r
-  @param  Address   MMIO register to write.\r
-  @param  StartBit  The ordinal of the least significant bit in the bit field.\r
-                    Range 0..15.\r
-  @param  EndBit    The ordinal of the most significant bit in the bit field.\r
-                    Range 0..15.\r
-  @param  OrData    The value to OR with read value from the MMIO register.\r
-\r
-  @return The value written back to the MMIO register.\r
-\r
-**/\r
-UINT16\r
-EFIAPI\r
-MmioBitFieldOr16 (\r
-  IN      UINTN                     Address,\r
-  IN      UINTN                     StartBit,\r
-  IN      UINTN                     EndBit,\r
-  IN      UINT16                    OrData\r
-  )\r
-{\r
-  return MmioWrite16 (\r
-           Address,\r
-           BitFieldOr16 (MmioRead16 (Address), StartBit, EndBit, OrData)\r
-           );\r
-}\r
-\r
-/**\r
-  Reads a bit field in a 16-bit MMIO register, performs a bitwise AND, and\r
-  writes the result back to the bit field in the 16-bit MMIO register.\r
-\r
-  Reads the 16-bit MMIO register specified by Address, performs a bitwise AND\r
-  between the read result and the value specified by AndData, and writes the\r
-  result to the 16-bit MMIO register specified by Address. The value written to\r
-  the MMIO register is returned. This function must guarantee that all MMIO\r
-  read and write operations are serialized. Extra left bits in AndData are\r
-  stripped.\r
-\r
-  If 16-bit MMIO register operations are not supported, then ASSERT().\r
-  If StartBit is greater than 15, then ASSERT().\r
-  If EndBit is greater than 15, then ASSERT().\r
-  If EndBit is less than StartBit, then ASSERT().\r
-  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
-\r
-  @param  Address   MMIO register to write.\r
-  @param  StartBit  The ordinal of the least significant bit in the bit field.\r
-                    Range 0..15.\r
-  @param  EndBit    The ordinal of the most significant bit in the bit field.\r
-                    Range 0..15.\r
-  @param  AndData   The value to AND with read value from the MMIO register.\r
-\r
-  @return The value written back to the MMIO register.\r
-\r
-**/\r
-UINT16\r
-EFIAPI\r
-MmioBitFieldAnd16 (\r
-  IN      UINTN                     Address,\r
-  IN      UINTN                     StartBit,\r
-  IN      UINTN                     EndBit,\r
-  IN      UINT16                    AndData\r
-  )\r
-{\r
-  return MmioWrite16 (\r
-           Address,\r
-           BitFieldAnd16 (MmioRead16 (Address), StartBit, EndBit, AndData)\r
-           );\r
-}\r
-\r
-/**\r
-  Reads a bit field in a 16-bit MMIO register, performs a bitwise AND followed\r
-  by a bitwise OR, and writes the result back to the bit field in the\r
-  16-bit MMIO register.\r
-\r
-  Reads the 16-bit MMIO register specified by Address, performs a bitwise AND\r
-  followed by a bitwise OR between the read result and the value\r
-  specified by AndData, and writes the result to the 16-bit MMIO register\r
-  specified by Address. The value written to the MMIO register is returned.\r
-  This function must guarantee that all MMIO read and write operations are\r
-  serialized. Extra left bits in both AndData and OrData are stripped.\r
-\r
-  If 16-bit MMIO register operations are not supported, then ASSERT().\r
-  If StartBit is greater than 15, then ASSERT().\r
-  If EndBit is greater than 15, then ASSERT().\r
-  If EndBit is less than StartBit, then ASSERT().\r
-  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
-  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
-\r
-  @param  Address   MMIO register to write.\r
-  @param  StartBit  The ordinal of the least significant bit in the bit field.\r
-                    Range 0..15.\r
-  @param  EndBit    The ordinal of the most significant bit in the bit field.\r
-                    Range 0..15.\r
-  @param  AndData   The value to AND with read value from the MMIO register.\r
-  @param  OrData    The value to OR with the result of the AND operation.\r
-\r
-  @return The value written back to the MMIO register.\r
-\r
-**/\r
-UINT16\r
-EFIAPI\r
-MmioBitFieldAndThenOr16 (\r
-  IN      UINTN                     Address,\r
-  IN      UINTN                     StartBit,\r
-  IN      UINTN                     EndBit,\r
-  IN      UINT16                    AndData,\r
-  IN      UINT16                    OrData\r
-  )\r
-{\r
-  return MmioWrite16 (\r
-           Address,\r
-           BitFieldAndThenOr16 (MmioRead16 (Address), StartBit, EndBit, AndData, OrData)\r
-           );\r
-}\r
-\r
-/**\r
-  Reads a 32-bit MMIO register, performs a bitwise OR, and writes the\r
-  result back to the 32-bit MMIO register.\r
-\r
-  Reads the 32-bit MMIO register specified by Address, performs a bitwise\r
-  inclusive OR between the read result and the value specified by OrData, and\r
-  writes the result to the 32-bit MMIO register specified by Address. The value\r
-  written to the MMIO register is returned. This function must guarantee that\r
-  all MMIO read and write operations are serialized.\r
-\r
-  If 32-bit MMIO register operations are not supported, then ASSERT().\r
-\r
-  @param  Address The MMIO register to write.\r
-  @param  OrData  The value to OR with the read value from the MMIO register.\r
-\r
-  @return The value written back to the MMIO register.\r
-\r
-**/\r
-UINT32\r
-EFIAPI\r
-MmioOr32 (\r
-  IN      UINTN                     Address,\r
-  IN      UINT32                    OrData\r
-  )\r
-{\r
-  return MmioWrite32 (Address, MmioRead32 (Address) | OrData);\r
-}\r
-\r
-/**\r
-  Reads a 32-bit MMIO register, performs a bitwise AND, and writes the result\r
-  back to the 32-bit MMIO register.\r
-\r
-  Reads the 32-bit MMIO register specified by Address, performs a bitwise AND\r
-  between the read result and the value specified by AndData, and writes the\r
-  result to the 32-bit MMIO register specified by Address. The value written to\r
-  the MMIO register is returned. This function must guarantee that all MMIO\r
-  read and write operations are serialized.\r
-\r
-  If 32-bit MMIO register operations are not supported, then ASSERT().\r
-\r
-  @param  Address The MMIO register to write.\r
-  @param  AndData The value to AND with the read value from the MMIO register.\r
-\r
-  @return The value written back to the MMIO register.\r
-\r
-**/\r
-UINT32\r
-EFIAPI\r
-MmioAnd32 (\r
-  IN      UINTN                     Address,\r
-  IN      UINT32                    AndData\r
-  )\r
-{\r
-  return MmioWrite32 (Address, MmioRead32 (Address) & AndData);\r
-}\r
-\r
-/**\r
-  Reads a 32-bit MMIO register, performs a bitwise AND followed by a bitwise\r
-  inclusive OR, and writes the result back to the 32-bit MMIO register.\r
-\r
-  Reads the 32-bit MMIO register specified by Address, performs a bitwise AND\r
-  between the read result and the value specified by AndData, performs a\r
-  bitwise OR between the result of the AND operation and the value specified by\r
-  OrData, and writes the result to the 32-bit MMIO register specified by\r
-  Address. The value written to the MMIO register is returned. This function\r
-  must guarantee that all MMIO read and write operations are serialized.\r
-\r
-  If 32-bit MMIO register operations are not supported, then ASSERT().\r
-\r
-\r
-  @param  Address The MMIO register to write.\r
-  @param  AndData The value to AND with the read value from the MMIO register.\r
-  @param  OrData  The value to OR with the result of the AND operation.\r
-\r
-  @return The value written back to the MMIO register.\r
-\r
-**/\r
-UINT32\r
-EFIAPI\r
-MmioAndThenOr32 (\r
-  IN      UINTN                     Address,\r
-  IN      UINT32                    AndData,\r
-  IN      UINT32                    OrData\r
-  )\r
-{\r
-  return MmioWrite32 (Address, (MmioRead32 (Address) & AndData) | OrData);\r
-}\r
-\r
-/**\r
-  Reads a bit field of a MMIO register.\r
-\r
-  Reads the bit field in a 32-bit MMIO register. The bit field is specified by\r
-  the StartBit and the EndBit. The value of the bit field is returned.\r
-\r
-  If 32-bit MMIO register operations are not supported, then ASSERT().\r
-  If StartBit is greater than 31, then ASSERT().\r
-  If EndBit is greater than 31, then ASSERT().\r
-  If EndBit is less than StartBit, then ASSERT().\r
-\r
-  @param  Address   MMIO register to read.\r
-  @param  StartBit  The ordinal of the least significant bit in the bit field.\r
-                    Range 0..31.\r
-  @param  EndBit    The ordinal of the most significant bit in the bit field.\r
-                    Range 0..31.\r
-\r
-  @return The value read.\r
-\r
-**/\r
-UINT32\r
-EFIAPI\r
-MmioBitFieldRead32 (\r
-  IN      UINTN                     Address,\r
-  IN      UINTN                     StartBit,\r
-  IN      UINTN                     EndBit\r
-  )\r
-{\r
-  return BitFieldRead32 (MmioRead32 (Address), StartBit, EndBit);\r
-}\r
-\r
-/**\r
-  Writes a bit field to a MMIO register.\r
-\r
-  Writes Value to the bit field of the MMIO register. The bit field is\r
-  specified by the StartBit and the EndBit. All other bits in the destination\r
-  MMIO register are preserved. The new value of the 32-bit register is returned.\r
-\r
-  If 32-bit MMIO register operations are not supported, then ASSERT().\r
-  If StartBit is greater than 31, then ASSERT().\r
-  If EndBit is greater than 31, then ASSERT().\r
-  If EndBit is less than StartBit, then ASSERT().\r
-  If Value is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
-\r
-  @param  Address   MMIO register to write.\r
-  @param  StartBit  The ordinal of the least significant bit in the bit field.\r
-                    Range 0..31.\r
-  @param  EndBit    The ordinal of the most significant bit in the bit field.\r
-                    Range 0..31.\r
-  @param  Value     New value of the bit field.\r
-\r
-  @return The value written back to the MMIO register.\r
-\r
-**/\r
-UINT32\r
-EFIAPI\r
-MmioBitFieldWrite32 (\r
-  IN      UINTN                     Address,\r
-  IN      UINTN                     StartBit,\r
-  IN      UINTN                     EndBit,\r
-  IN      UINT32                    Value\r
-  )\r
-{\r
-  return MmioWrite32 (\r
-           Address,\r
-           BitFieldWrite32 (MmioRead32 (Address), StartBit, EndBit, Value)\r
-           );\r
-}\r
-\r
-/**\r
-  Reads a bit field in a 32-bit MMIO register, performs a bitwise OR, and\r
-  writes the result back to the bit field in the 32-bit MMIO register.\r
-\r
-  Reads the 32-bit MMIO register specified by Address, performs a bitwise\r
-  inclusive OR between the read result and the value specified by OrData, and\r
-  writes the result to the 32-bit MMIO register specified by Address. The value\r
-  written to the MMIO register is returned. This function must guarantee that\r
-  all MMIO read and write operations are serialized. Extra left bits in OrData\r
-  are stripped.\r
-\r
-  If 32-bit MMIO register operations are not supported, then ASSERT().\r
-  If StartBit is greater than 31, then ASSERT().\r
-  If EndBit is greater than 31, then ASSERT().\r
-  If EndBit is less than StartBit, then ASSERT().\r
-  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
-\r
-  @param  Address   MMIO register to write.\r
-  @param  StartBit  The ordinal of the least significant bit in the bit field.\r
-                    Range 0..31.\r
-  @param  EndBit    The ordinal of the most significant bit in the bit field.\r
-                    Range 0..31.\r
-  @param  OrData    The value to OR with read value from the MMIO register.\r
-\r
-  @return The value written back to the MMIO register.\r
-\r
-**/\r
-UINT32\r
-EFIAPI\r
-MmioBitFieldOr32 (\r
-  IN      UINTN                     Address,\r
-  IN      UINTN                     StartBit,\r
-  IN      UINTN                     EndBit,\r
-  IN      UINT32                    OrData\r
-  )\r
-{\r
-  return MmioWrite32 (\r
-           Address,\r
-           BitFieldOr32 (MmioRead32 (Address), StartBit, EndBit, OrData)\r
-           );\r
-}\r
-\r
-/**\r
-  Reads a bit field in a 32-bit MMIO register, performs a bitwise AND, and\r
-  writes the result back to the bit field in the 32-bit MMIO register.\r
-\r
-  Reads the 32-bit MMIO register specified by Address, performs a bitwise AND\r
-  between the read result and the value specified by AndData, and writes the\r
-  result to the 32-bit MMIO register specified by Address. The value written to\r
-  the MMIO register is returned. This function must guarantee that all MMIO\r
-  read and write operations are serialized. Extra left bits in AndData are\r
-  stripped.\r
-\r
-  If 32-bit MMIO register operations are not supported, then ASSERT().\r
-  If StartBit is greater than 31, then ASSERT().\r
-  If EndBit is greater than 31, then ASSERT().\r
-  If EndBit is less than StartBit, then ASSERT().\r
-  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
-\r
-  @param  Address   MMIO register to write.\r
-  @param  StartBit  The ordinal of the least significant bit in the bit field.\r
-                    Range 0..31.\r
-  @param  EndBit    The ordinal of the most significant bit in the bit field.\r
-                    Range 0..31.\r
-  @param  AndData   The value to AND with read value from the MMIO register.\r
-\r
-  @return The value written back to the MMIO register.\r
-\r
-**/\r
-UINT32\r
-EFIAPI\r
-MmioBitFieldAnd32 (\r
-  IN      UINTN                     Address,\r
-  IN      UINTN                     StartBit,\r
-  IN      UINTN                     EndBit,\r
-  IN      UINT32                    AndData\r
-  )\r
-{\r
-  return MmioWrite32 (\r
-           Address,\r
-           BitFieldAnd32 (MmioRead32 (Address), StartBit, EndBit, AndData)\r
-           );\r
-}\r
-\r
-/**\r
-  Reads a bit field in a 32-bit MMIO register, performs a bitwise AND followed\r
-  by a bitwise OR, and writes the result back to the bit field in the\r
-  32-bit MMIO register.\r
-\r
-  Reads the 32-bit MMIO register specified by Address, performs a bitwise AND\r
-  followed by a bitwise OR between the read result and the value\r
-  specified by AndData, and writes the result to the 32-bit MMIO register\r
-  specified by Address. The value written to the MMIO register is returned.\r
-  This function must guarantee that all MMIO read and write operations are\r
-  serialized. Extra left bits in both AndData and OrData are stripped.\r
-\r
-  If 32-bit MMIO register operations are not supported, then ASSERT().\r
-  If StartBit is greater than 31, then ASSERT().\r
-  If EndBit is greater than 31, then ASSERT().\r
-  If EndBit is less than StartBit, then ASSERT().\r
-  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
-  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
-\r
-  @param  Address   MMIO register to write.\r
-  @param  StartBit  The ordinal of the least significant bit in the bit field.\r
-                    Range 0..31.\r
-  @param  EndBit    The ordinal of the most significant bit in the bit field.\r
-                    Range 0..31.\r
-  @param  AndData   The value to AND with read value from the MMIO register.\r
-  @param  OrData    The value to OR with the result of the AND operation.\r
-\r
-  @return The value written back to the MMIO register.\r
-\r
-**/\r
-UINT32\r
-EFIAPI\r
-MmioBitFieldAndThenOr32 (\r
-  IN      UINTN                     Address,\r
-  IN      UINTN                     StartBit,\r
-  IN      UINTN                     EndBit,\r
-  IN      UINT32                    AndData,\r
-  IN      UINT32                    OrData\r
-  )\r
-{\r
-  return MmioWrite32 (\r
-           Address,\r
-           BitFieldAndThenOr32 (MmioRead32 (Address), StartBit, EndBit, AndData, OrData)\r
-           );\r
-}\r
-\r
-/**\r
-  Reads a 64-bit MMIO register, performs a bitwise OR, and writes the\r
-  result back to the 64-bit MMIO register.\r
-\r
-  Reads the 64-bit MMIO register specified by Address, performs a bitwise\r
-  inclusive OR between the read result and the value specified by OrData, and\r
-  writes the result to the 64-bit MMIO register specified by Address. The value\r
-  written to the MMIO register is returned. This function must guarantee that\r
-  all MMIO read and write operations are serialized.\r
-\r
-  If 64-bit MMIO register operations are not supported, then ASSERT().\r
-\r
-  @param  Address The MMIO register to write.\r
-  @param  OrData  The value to OR with the read value from the MMIO register.\r
-\r
-  @return The value written back to the MMIO register.\r
-\r
-**/\r
-UINT64\r
-EFIAPI\r
-MmioOr64 (\r
-  IN      UINTN                     Address,\r
-  IN      UINT64                    OrData\r
-  )\r
-{\r
-  return MmioWrite64 (Address, MmioRead64 (Address) | OrData);\r
-}\r
-\r
-/**\r
-  Reads a 64-bit MMIO register, performs a bitwise AND, and writes the result\r
-  back to the 64-bit MMIO register.\r
-\r
-  Reads the 64-bit MMIO register specified by Address, performs a bitwise AND\r
-  between the read result and the value specified by AndData, and writes the\r
-  result to the 64-bit MMIO register specified by Address. The value written to\r
-  the MMIO register is returned. This function must guarantee that all MMIO\r
-  read and write operations are serialized.\r
-\r
-  If 64-bit MMIO register operations are not supported, then ASSERT().\r
-\r
-  @param  Address The MMIO register to write.\r
-  @param  AndData The value to AND with the read value from the MMIO register.\r
-\r
-  @return The value written back to the MMIO register.\r
-\r
-**/\r
-UINT64\r
-EFIAPI\r
-MmioAnd64 (\r
-  IN      UINTN                     Address,\r
-  IN      UINT64                    AndData\r
-  )\r
-{\r
-  return MmioWrite64 (Address, MmioRead64 (Address) & AndData);\r
-}\r
-\r
-/**\r
-  Reads a 64-bit MMIO register, performs a bitwise AND followed by a bitwise\r
-  inclusive OR, and writes the result back to the 64-bit MMIO register.\r
-\r
-  Reads the 64-bit MMIO register specified by Address, performs a bitwise AND\r
-  between the read result and the value specified by AndData, performs a\r
-  bitwise OR between the result of the AND operation and the value specified by\r
-  OrData, and writes the result to the 64-bit MMIO register specified by\r
-  Address. The value written to the MMIO register is returned. This function\r
-  must guarantee that all MMIO read and write operations are serialized.\r
-\r
-  If 64-bit MMIO register operations are not supported, then ASSERT().\r
-\r
-\r
-  @param  Address The MMIO register to write.\r
-  @param  AndData The value to AND with the read value from the MMIO register.\r
-  @param  OrData  The value to OR with the result of the AND operation.\r
-\r
-  @return The value written back to the MMIO register.\r
-\r
-**/\r
-UINT64\r
-EFIAPI\r
-MmioAndThenOr64 (\r
-  IN      UINTN                     Address,\r
-  IN      UINT64                    AndData,\r
-  IN      UINT64                    OrData\r
-  )\r
-{\r
-  return MmioWrite64 (Address, (MmioRead64 (Address) & AndData) | OrData);\r
-}\r
-\r
-/**\r
-  Reads a bit field of a MMIO register.\r
-\r
-  Reads the bit field in a 64-bit MMIO register. The bit field is specified by\r
-  the StartBit and the EndBit. The value of the bit field is returned.\r
-\r
-  If 64-bit MMIO register operations are not supported, then ASSERT().\r
-  If StartBit is greater than 63, then ASSERT().\r
-  If EndBit is greater than 63, then ASSERT().\r
-  If EndBit is less than StartBit, then ASSERT().\r
-\r
-  @param  Address   MMIO register to read.\r
-  @param  StartBit  The ordinal of the least significant bit in the bit field.\r
-                    Range 0..63.\r
-  @param  EndBit    The ordinal of the most significant bit in the bit field.\r
-                    Range 0..63.\r
-\r
-  @return The value read.\r
-\r
-**/\r
-UINT64\r
-EFIAPI\r
-MmioBitFieldRead64 (\r
-  IN      UINTN                     Address,\r
-  IN      UINTN                     StartBit,\r
-  IN      UINTN                     EndBit\r
-  )\r
-{\r
-  return BitFieldRead64 (MmioRead64 (Address), StartBit, EndBit);\r
-}\r
-\r
-/**\r
-  Writes a bit field to a MMIO register.\r
-\r
-  Writes Value to the bit field of the MMIO register. The bit field is\r
-  specified by the StartBit and the EndBit. All other bits in the destination\r
-  MMIO register are preserved. The new value of the 64-bit register is returned.\r
-\r
-  If 64-bit MMIO register operations are not supported, then ASSERT().\r
-  If StartBit is greater than 63, then ASSERT().\r
-  If EndBit is greater than 63, then ASSERT().\r
-  If EndBit is less than StartBit, then ASSERT().\r
-  If Value is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
-\r
-  @param  Address   MMIO register to write.\r
-  @param  StartBit  The ordinal of the least significant bit in the bit field.\r
-                    Range 0..63.\r
-  @param  EndBit    The ordinal of the most significant bit in the bit field.\r
-                    Range 0..63.\r
-  @param  Value     New value of the bit field.\r
-\r
-  @return The value written back to the MMIO register.\r
-\r
-**/\r
-UINT64\r
-EFIAPI\r
-MmioBitFieldWrite64 (\r
-  IN      UINTN                     Address,\r
-  IN      UINTN                     StartBit,\r
-  IN      UINTN                     EndBit,\r
-  IN      UINT64                    Value\r
-  )\r
-{\r
-  return MmioWrite64 (\r
-           Address,\r
-           BitFieldWrite64 (MmioRead64 (Address), StartBit, EndBit, Value)\r
-           );\r
-}\r
-\r
-/**\r
-  Reads a bit field in a 64-bit MMIO register, performs a bitwise OR, and\r
-  writes the result back to the bit field in the 64-bit MMIO register.\r
-\r
-  Reads the 64-bit MMIO register specified by Address, performs a bitwise\r
-  inclusive OR between the read result and the value specified by OrData, and\r
-  writes the result to the 64-bit MMIO register specified by Address. The value\r
-  written to the MMIO register is returned. This function must guarantee that\r
-  all MMIO read and write operations are serialized. Extra left bits in OrData\r
-  are stripped.\r
-\r
-  If 64-bit MMIO register operations are not supported, then ASSERT().\r
-  If StartBit is greater than 63, then ASSERT().\r
-  If EndBit is greater than 63, then ASSERT().\r
-  If EndBit is less than StartBit, then ASSERT().\r
-  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
-\r
-  @param  Address   MMIO register to write.\r
-  @param  StartBit  The ordinal of the least significant bit in the bit field.\r
-                    Range 0..63.\r
-  @param  EndBit    The ordinal of the most significant bit in the bit field.\r
-                    Range 0..63.\r
-  @param  OrData    The value to OR with read value from the MMIO register.\r
-\r
-  @return The value written back to the MMIO register.\r
-\r
-**/\r
-UINT64\r
-EFIAPI\r
-MmioBitFieldOr64 (\r
-  IN      UINTN                     Address,\r
-  IN      UINTN                     StartBit,\r
-  IN      UINTN                     EndBit,\r
-  IN      UINT64                    OrData\r
-  )\r
-{\r
-  return MmioWrite64 (\r
-           Address,\r
-           BitFieldOr64 (MmioRead64 (Address), StartBit, EndBit, OrData)\r
-           );\r
-}\r
-\r
-/**\r
-  Reads a bit field in a 64-bit MMIO register, performs a bitwise AND, and\r
-  writes the result back to the bit field in the 64-bit MMIO register.\r
-\r
-  Reads the 64-bit MMIO register specified by Address, performs a bitwise AND\r
-  between the read result and the value specified by AndData, and writes the\r
-  result to the 64-bit MMIO register specified by Address. The value written to\r
-  the MMIO register is returned. This function must guarantee that all MMIO\r
-  read and write operations are serialized. Extra left bits in AndData are\r
-  stripped.\r
-\r
-  If 64-bit MMIO register operations are not supported, then ASSERT().\r
-  If StartBit is greater than 63, then ASSERT().\r
-  If EndBit is greater than 63, then ASSERT().\r
-  If EndBit is less than StartBit, then ASSERT().\r
-  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
-\r
-  @param  Address   MMIO register to write.\r
-  @param  StartBit  The ordinal of the least significant bit in the bit field.\r
-                    Range 0..63.\r
-  @param  EndBit    The ordinal of the most significant bit in the bit field.\r
-                    Range 0..63.\r
-  @param  AndData   The value to AND with read value from the MMIO register.\r
-\r
-  @return The value written back to the MMIO register.\r
-\r
-**/\r
-UINT64\r
-EFIAPI\r
-MmioBitFieldAnd64 (\r
-  IN      UINTN                     Address,\r
-  IN      UINTN                     StartBit,\r
-  IN      UINTN                     EndBit,\r
-  IN      UINT64                    AndData\r
-  )\r
-{\r
-  return MmioWrite64 (\r
-           Address,\r
-           BitFieldAnd64 (MmioRead64 (Address), StartBit, EndBit, AndData)\r
-           );\r
-}\r
-\r
-/**\r
-  Reads a bit field in a 64-bit MMIO register, performs a bitwise AND followed\r
-  by a bitwise OR, and writes the result back to the bit field in the\r
-  64-bit MMIO register.\r
-\r
-  Reads the 64-bit MMIO register specified by Address, performs a bitwise AND\r
-  followed by a bitwise OR between the read result and the value\r
-  specified by AndData, and writes the result to the 64-bit MMIO register\r
-  specified by Address. The value written to the MMIO register is returned.\r
-  This function must guarantee that all MMIO read and write operations are\r
-  serialized. Extra left bits in both AndData and OrData are stripped.\r
-\r
-  If 64-bit MMIO register operations are not supported, then ASSERT().\r
-  If StartBit is greater than 63, then ASSERT().\r
-  If EndBit is greater than 63, then ASSERT().\r
-  If EndBit is less than StartBit, then ASSERT().\r
-  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
-  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
-\r
-  @param  Address   MMIO register to write.\r
-  @param  StartBit  The ordinal of the least significant bit in the bit field.\r
-                    Range 0..63.\r
-  @param  EndBit    The ordinal of the most significant bit in the bit field.\r
-                    Range 0..63.\r
-  @param  AndData   The value to AND with read value from the MMIO register.\r
-  @param  OrData    The value to OR with the result of the AND operation.\r
-\r
-  @return The value written back to the MMIO register.\r
-\r
-**/\r
-UINT64\r
-EFIAPI\r
-MmioBitFieldAndThenOr64 (\r
-  IN      UINTN                     Address,\r
-  IN      UINTN                     StartBit,\r
-  IN      UINTN                     EndBit,\r
-  IN      UINT64                    AndData,\r
-  IN      UINT64                    OrData\r
-  )\r
-{\r
-  return MmioWrite64 (\r
-           Address,\r
-           BitFieldAndThenOr64 (MmioRead64 (Address), StartBit, EndBit, AndData, OrData)\r
-           );\r
-}\r
diff --git a/IntelFrameworkPkg/Library/DxeIoLibCpuIo/IoLib.c b/IntelFrameworkPkg/Library/DxeIoLibCpuIo/IoLib.c
deleted file mode 100644 (file)
index eed26ce..0000000
+++ /dev/null
@@ -1,864 +0,0 @@
-/** @file\r
-  I/O Library.\r
-  The implementation of I/O operation for this library instance\r
-  are based on EFI_CPU_IO_PROTOCOL.\r
-\r
-  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
-  Copyright (c) 2017, AMD Incorporated. All rights reserved.<BR>\r
-\r
-  SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  Module Name:  IoLib.c\r
-\r
-**/\r
-\r
-\r
-#include "DxeCpuIoLibInternal.h"\r
-\r
-//\r
-// Globle varible to cache pointer to CpuIo protocol.\r
-//\r
-EFI_CPU_IO_PROTOCOL  *mCpuIo = NULL;\r
-\r
-/**\r
-  The constructor function caches the pointer to CpuIo protocol.\r
-\r
-  The constructor function locates CpuIo protocol from protocol database.\r
-  It will ASSERT() if that operation fails and it will always return EFI_SUCCESS.\r
-\r
-  @param  ImageHandle   The firmware allocated handle for the EFI image.\r
-  @param  SystemTable   A pointer to the EFI System Table.\r
-\r
-  @retval EFI_SUCCESS   The constructor always returns EFI_SUCCESS.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-IoLibConstructor (\r
-  IN      EFI_HANDLE                ImageHandle,\r
-  IN      EFI_SYSTEM_TABLE          *SystemTable\r
-  )\r
-{\r
-  EFI_STATUS  Status;\r
-\r
-  Status = gBS->LocateProtocol (&gEfiCpuIoProtocolGuid, NULL, (VOID **) &mCpuIo);\r
-  ASSERT_EFI_ERROR (Status);\r
-\r
-  return Status;\r
-}\r
-\r
-/**\r
-  Reads registers in the EFI CPU I/O space.\r
-\r
-  Reads the I/O port specified by Port with registers width specified by Width.\r
-  The read value is returned. If such operations are not supported, then ASSERT().\r
-  This function must guarantee that all I/O read and write operations are serialized.\r
-\r
-  @param  Port          The base address of the I/O operation.\r
-                        The caller is responsible for aligning the Address if required.\r
-  @param  Width         The width of the I/O operation.\r
-\r
-  @return Data read from registers in the EFI CPU I/O space.\r
-\r
-**/\r
-UINT64\r
-EFIAPI\r
-IoReadWorker (\r
-  IN      UINTN                      Port,\r
-  IN      EFI_CPU_IO_PROTOCOL_WIDTH  Width\r
-  )\r
-{\r
-  EFI_STATUS                        Status;\r
-  UINT64                            Data;\r
-\r
-  Status = mCpuIo->Io.Read (mCpuIo, Width, Port, 1, &Data);\r
-  ASSERT_EFI_ERROR (Status);\r
-\r
-  return Data;\r
-}\r
-\r
-/**\r
-  Writes registers in the EFI CPU I/O space.\r
-\r
-  Writes the I/O port specified by Port with registers width and value specified by Width\r
-  and Data respectively.  Data is returned. If such operations are not supported, then ASSERT().\r
-  This function must guarantee that all I/O read and write operations are serialized.\r
-\r
-  @param  Port          The base address of the I/O operation.\r
-                        The caller is responsible for aligning the Address if required.\r
-  @param  Width         The width of the I/O operation.\r
-  @param  Data          The value to write to the I/O port.\r
-\r
-  @return The parameter of Data.\r
-\r
-**/\r
-UINT64\r
-EFIAPI\r
-IoWriteWorker (\r
-  IN      UINTN                      Port,\r
-  IN      EFI_CPU_IO_PROTOCOL_WIDTH  Width,\r
-  IN      UINT64                     Data\r
-  )\r
-{\r
-  EFI_STATUS  Status;\r
-\r
-  Status = mCpuIo->Io.Write (mCpuIo, Width, Port, 1, &Data);\r
-  ASSERT_EFI_ERROR (Status);\r
-\r
-  return Data;\r
-}\r
-\r
-/**\r
-  Reads registers in the EFI CPU I/O space.\r
-\r
-  Reads the I/O port specified by Port with registers width specified by Width.\r
-  The port is read Count times, and the read data is stored in the provided Buffer.\r
-\r
-  This function must guarantee that all I/O read and write operations are serialized.\r
-  If such operations are not supported, then ASSERT().\r
-\r
-  @param  Port          The base address of the I/O operation.\r
-                        The caller is responsible for aligning the Address if required.\r
-  @param  Width         The width of the I/O operation.\r
-  @param  Count         The number of times to read I/O port.\r
-  @param  Buffer        The buffer to store the read data into.\r
-\r
-**/\r
-VOID\r
-EFIAPI\r
-IoReadFifoWorker (\r
-  IN      UINTN                      Port,\r
-  IN      EFI_CPU_IO_PROTOCOL_WIDTH  Width,\r
-  IN      UINTN                      Count,\r
-  IN      VOID                       *Buffer\r
-  )\r
-{\r
-  EFI_STATUS  Status;\r
-\r
-  Status = mCpuIo->Io.Read (mCpuIo, Width, Port, Count, Buffer);\r
-  ASSERT_EFI_ERROR (Status);\r
-}\r
-\r
-/**\r
-  Writes registers in the EFI CPU I/O space.\r
-\r
-  Writes the I/O port specified by Port with registers width specified by Width.\r
-  The port is written Count times, and the write data is retrieved from the provided Buffer.\r
-\r
-  This function must guarantee that all I/O read and write operations are serialized.\r
-  If such operations are not supported, then ASSERT().\r
-\r
-  @param  Port          The base address of the I/O operation.\r
-                        The caller is responsible for aligning the Address if required.\r
-  @param  Width         The width of the I/O operation.\r
-  @param  Count         The number of times to write I/O port.\r
-  @param  Buffer        The buffer to store the read data into.\r
-\r
-**/\r
-VOID\r
-EFIAPI\r
-IoWriteFifoWorker (\r
-  IN      UINTN                      Port,\r
-  IN      EFI_CPU_IO_PROTOCOL_WIDTH  Width,\r
-  IN      UINTN                      Count,\r
-  IN      VOID                       *Buffer\r
-  )\r
-{\r
-  EFI_STATUS  Status;\r
-\r
-  Status = mCpuIo->Io.Write (mCpuIo, Width, Port, Count, Buffer);\r
-  ASSERT_EFI_ERROR (Status);\r
-}\r
-\r
-/**\r
-  Reads memory-mapped registers in the EFI system memory space.\r
-\r
-  Reads the MMIO registers specified by Address with registers width specified by Width.\r
-  The read value is returned. If such operations are not supported, then ASSERT().\r
-  This function must guarantee that all MMIO read and write operations are serialized.\r
-\r
-  @param  Address       The MMIO register to read.\r
-                        The caller is responsible for aligning the Address if required.\r
-  @param  Width         The width of the I/O operation.\r
-\r
-  @return Data read from registers in the EFI system memory space.\r
-\r
-**/\r
-UINT64\r
-EFIAPI\r
-MmioReadWorker (\r
-  IN      UINTN                      Address,\r
-  IN      EFI_CPU_IO_PROTOCOL_WIDTH  Width\r
-  )\r
-{\r
-  EFI_STATUS  Status;\r
-  UINT64      Data;\r
-\r
-  Status = mCpuIo->Mem.Read (mCpuIo, Width, Address, 1, &Data);\r
-  ASSERT_EFI_ERROR (Status);\r
-\r
-  return Data;\r
-}\r
-\r
-/**\r
-  Writes memory-mapped registers in the EFI system memory space.\r
-\r
-  Writes the MMIO registers specified by Address with registers width and value specified by Width\r
-  and Data respectively. Data is returned. If such operations are not supported, then ASSERT().\r
-  This function must guarantee that all MMIO read and write operations are serialized.\r
-\r
-  @param  Address       The MMIO register to read.\r
-                        The caller is responsible for aligning the Address if required.\r
-  @param  Width         The width of the I/O operation.\r
-  @param  Data          The value to write to the I/O port.\r
-\r
-  @return Data read from registers in the EFI system memory space.\r
-\r
-**/\r
-UINT64\r
-EFIAPI\r
-MmioWriteWorker (\r
-  IN      UINTN                      Address,\r
-  IN      EFI_CPU_IO_PROTOCOL_WIDTH  Width,\r
-  IN      UINT64                     Data\r
-  )\r
-{\r
-  EFI_STATUS  Status;\r
-\r
-  Status = mCpuIo->Mem.Write (mCpuIo, Width, Address, 1, &Data);\r
-  ASSERT_EFI_ERROR (Status);\r
-\r
-  return Data;\r
-}\r
-\r
-/**\r
-  Reads an 8-bit I/O port.\r
-\r
-  Reads the 8-bit I/O port specified by Port. The 8-bit read value is returned.\r
-  This function must guarantee that all I/O read and write operations are\r
-  serialized.\r
-\r
-  If 8-bit I/O port operations are not supported, then ASSERT().\r
-\r
-  @param  Port  The I/O port to read.\r
-\r
-  @return The value read.\r
-\r
-**/\r
-UINT8\r
-EFIAPI\r
-IoRead8 (\r
-  IN      UINTN                     Port\r
-  )\r
-{\r
-  return (UINT8)IoReadWorker (Port, EfiCpuIoWidthUint8);\r
-}\r
-\r
-/**\r
-  Writes an 8-bit I/O port.\r
-\r
-  Writes the 8-bit I/O port specified by Port with the value specified by Value\r
-  and returns Value. This function must guarantee that all I/O read and write\r
-  operations are serialized.\r
-\r
-  If 8-bit I/O port operations are not supported, then ASSERT().\r
-\r
-  @param  Port  The I/O port to write.\r
-  @param  Value The value to write to the I/O port.\r
-\r
-  @return The value written the I/O port.\r
-\r
-**/\r
-UINT8\r
-EFIAPI\r
-IoWrite8 (\r
-  IN      UINTN                     Port,\r
-  IN      UINT8                     Value\r
-  )\r
-{\r
-  return (UINT8)IoWriteWorker (Port, EfiCpuIoWidthUint8, Value);\r
-}\r
-\r
-/**\r
-  Reads a 16-bit I/O port.\r
-\r
-  Reads the 16-bit I/O port specified by Port. The 16-bit read value is returned.\r
-  This function must guarantee that all I/O read and write operations are\r
-  serialized.\r
-\r
-  If Port is not aligned on a 16-bit boundary, then ASSERT().\r
-\r
-  If 16-bit I/O port operations are not supported, then ASSERT().\r
-\r
-  @param  Port  The I/O port to read.\r
-\r
-  @return The value read.\r
-\r
-**/\r
-UINT16\r
-EFIAPI\r
-IoRead16 (\r
-  IN      UINTN                     Port\r
-  )\r
-{\r
-  //\r
-  // Make sure Port is aligned on a 16-bit boundary.\r
-  //\r
-  ASSERT ((Port & 1) == 0);\r
-  return (UINT16)IoReadWorker (Port, EfiCpuIoWidthUint16);\r
-}\r
-\r
-/**\r
-  Writes a 16-bit I/O port.\r
-\r
-  Writes the 16-bit I/O port specified by Port with the value specified by Value\r
-  and returns Value. This function must guarantee that all I/O read and write\r
-  operations are serialized.\r
-\r
-  If Port is not aligned on a 16-bit boundary, then ASSERT().\r
-\r
-  If 16-bit I/O port operations are not supported, then ASSERT().\r
-\r
-  @param  Port  The I/O port to write.\r
-  @param  Value The value to write to the I/O port.\r
-\r
-  @return The value written the I/O port.\r
-\r
-**/\r
-UINT16\r
-EFIAPI\r
-IoWrite16 (\r
-  IN      UINTN                     Port,\r
-  IN      UINT16                    Value\r
-  )\r
-{\r
-  //\r
-  // Make sure Port is aligned on a 16-bit boundary.\r
-  //\r
-  ASSERT ((Port & 1) == 0);\r
-  return (UINT16)IoWriteWorker (Port, EfiCpuIoWidthUint16, Value);\r
-}\r
-\r
-/**\r
-  Reads a 32-bit I/O port.\r
-\r
-  Reads the 32-bit I/O port specified by Port. The 32-bit read value is returned.\r
-  This function must guarantee that all I/O read and write operations are\r
-  serialized.\r
-\r
-  If Port is not aligned on a 32-bit boundary, then ASSERT().\r
-\r
-  If 32-bit I/O port operations are not supported, then ASSERT().\r
-\r
-  @param  Port  The I/O port to read.\r
-\r
-  @return The value read.\r
-\r
-**/\r
-UINT32\r
-EFIAPI\r
-IoRead32 (\r
-  IN      UINTN                     Port\r
-  )\r
-{\r
-  //\r
-  // Make sure Port is aligned on a 32-bit boundary.\r
-  //\r
-  ASSERT ((Port & 3) == 0);\r
-  return (UINT32)IoReadWorker (Port, EfiCpuIoWidthUint32);\r
-}\r
-\r
-/**\r
-  Writes a 32-bit I/O port.\r
-\r
-  Writes the 32-bit I/O port specified by Port with the value specified by Value\r
-  and returns Value. This function must guarantee that all I/O read and write\r
-  operations are serialized.\r
-\r
-  If Port is not aligned on a 32-bit boundary, then ASSERT().\r
-\r
-  If 32-bit I/O port operations are not supported, then ASSERT().\r
-\r
-  @param  Port  The I/O port to write.\r
-  @param  Value The value to write to the I/O port.\r
-\r
-  @return The value written the I/O port.\r
-\r
-**/\r
-UINT32\r
-EFIAPI\r
-IoWrite32 (\r
-  IN      UINTN                     Port,\r
-  IN      UINT32                    Value\r
-  )\r
-{\r
-  //\r
-  // Make sure Port is aligned on a 32-bit boundary.\r
-  //\r
-  ASSERT ((Port & 3) == 0);\r
-  return (UINT32)IoWriteWorker (Port, EfiCpuIoWidthUint32, Value);\r
-}\r
-\r
-/**\r
-  Reads a 64-bit I/O port.\r
-\r
-  Reads the 64-bit I/O port specified by Port. The 64-bit read value is returned.\r
-  This function must guarantee that all I/O read and write operations are\r
-  serialized.\r
-\r
-  If Port is not aligned on a 64-bit boundary, then ASSERT().\r
-\r
-  If 64-bit I/O port operations are not supported, then ASSERT().\r
-\r
-  @param  Port  The I/O port to read.\r
-\r
-  @return The value read.\r
-\r
-**/\r
-UINT64\r
-EFIAPI\r
-IoRead64 (\r
-  IN      UINTN                     Port\r
-  )\r
-{\r
-  //\r
-  // Make sure Port is aligned on a 64-bit boundary.\r
-  //\r
-  ASSERT ((Port & 7) == 0);\r
-  return IoReadWorker (Port, EfiCpuIoWidthUint64);\r
-}\r
-\r
-/**\r
-  Writes a 64-bit I/O port.\r
-\r
-  Writes the 64-bit I/O port specified by Port with the value specified by Value\r
-  and returns Value. This function must guarantee that all I/O read and write\r
-  operations are serialized.\r
-\r
-  If Port is not aligned on a 64-bit boundary, then ASSERT().\r
-\r
-  If 64-bit I/O port operations are not supported, then ASSERT().\r
-\r
-  @param  Port  The I/O port to write.\r
-  @param  Value The value to write to the I/O port.\r
-\r
-  @return The value written the I/O port.\r
-\r
-**/\r
-UINT64\r
-EFIAPI\r
-IoWrite64 (\r
-  IN      UINTN                     Port,\r
-  IN      UINT64                    Value\r
-  )\r
-{\r
-  //\r
-  // Make sure Port is aligned on a 64-bit boundary.\r
-  //\r
-  ASSERT ((Port & 7) == 0);\r
-  return IoWriteWorker (Port, EfiCpuIoWidthUint64, Value);\r
-}\r
-\r
-/**\r
-  Reads an 8-bit I/O port fifo into a block of memory.\r
-\r
-  Reads the 8-bit I/O fifo port specified by Port.\r
-  The port is read Count times, and the read data is\r
-  stored in the provided Buffer.\r
-\r
-  This function must guarantee that all I/O read and write operations are\r
-  serialized.\r
-\r
-  If 8-bit I/O port operations are not supported, then ASSERT().\r
-\r
-  @param  Port    The I/O port to read.\r
-  @param  Count   The number of times to read I/O port.\r
-  @param  Buffer  The buffer to store the read data into.\r
-\r
-**/\r
-VOID\r
-EFIAPI\r
-IoReadFifo8 (\r
-  IN      UINTN                     Port,\r
-  IN      UINTN                     Count,\r
-  OUT     VOID                      *Buffer\r
-  )\r
-{\r
-  IoReadFifoWorker (Port, EfiCpuIoWidthFifoUint8, Count, Buffer);\r
-}\r
-\r
-/**\r
-  Writes a block of memory into an 8-bit I/O port fifo.\r
-\r
-  Writes the 8-bit I/O fifo port specified by Port.\r
-  The port is written Count times, and the write data is\r
-  retrieved from the provided Buffer.\r
-\r
-  This function must guarantee that all I/O write and write operations are\r
-  serialized.\r
-\r
-  If 8-bit I/O port operations are not supported, then ASSERT().\r
-\r
-  @param  Port    The I/O port to write.\r
-  @param  Count   The number of times to write I/O port.\r
-  @param  Buffer  The buffer to retrieve the write data from.\r
-\r
-**/\r
-VOID\r
-EFIAPI\r
-IoWriteFifo8 (\r
-  IN      UINTN                     Port,\r
-  IN      UINTN                     Count,\r
-  IN      VOID                      *Buffer\r
-  )\r
-{\r
-  IoWriteFifoWorker (Port, EfiCpuIoWidthFifoUint8, Count, Buffer);\r
-}\r
-\r
-/**\r
-  Reads a 16-bit I/O port fifo into a block of memory.\r
-\r
-  Reads the 16-bit I/O fifo port specified by Port.\r
-  The port is read Count times, and the read data is\r
-  stored in the provided Buffer.\r
-\r
-  This function must guarantee that all I/O read and write operations are\r
-  serialized.\r
-\r
-  If 16-bit I/O port operations are not supported, then ASSERT().\r
-\r
-  @param  Port    The I/O port to read.\r
-  @param  Count   The number of times to read I/O port.\r
-  @param  Buffer  The buffer to store the read data into.\r
-\r
-**/\r
-VOID\r
-EFIAPI\r
-IoReadFifo16 (\r
-  IN      UINTN                     Port,\r
-  IN      UINTN                     Count,\r
-  OUT     VOID                      *Buffer\r
-  )\r
-{\r
-  //\r
-  // Make sure Port is aligned on a 16-bit boundary.\r
-  //\r
-  ASSERT ((Port & 1) == 0);\r
-  IoReadFifoWorker (Port, EfiCpuIoWidthFifoUint16, Count, Buffer);\r
-}\r
-\r
-/**\r
-  Writes a block of memory into a 16-bit I/O port fifo.\r
-\r
-  Writes the 16-bit I/O fifo port specified by Port.\r
-  The port is written Count times, and the write data is\r
-  retrieved from the provided Buffer.\r
-\r
-  This function must guarantee that all I/O write and write operations are\r
-  serialized.\r
-\r
-  If 16-bit I/O port operations are not supported, then ASSERT().\r
-\r
-  @param  Port    The I/O port to write.\r
-  @param  Count   The number of times to write I/O port.\r
-  @param  Buffer  The buffer to retrieve the write data from.\r
-\r
-**/\r
-VOID\r
-EFIAPI\r
-IoWriteFifo16 (\r
-  IN      UINTN                     Port,\r
-  IN      UINTN                     Count,\r
-  IN      VOID                      *Buffer\r
-  )\r
-{\r
-  //\r
-  // Make sure Port is aligned on a 16-bit boundary.\r
-  //\r
-  ASSERT ((Port & 1) == 0);\r
-  IoWriteFifoWorker (Port, EfiCpuIoWidthFifoUint16, Count, Buffer);\r
-}\r
-\r
-/**\r
-  Reads a 32-bit I/O port fifo into a block of memory.\r
-\r
-  Reads the 32-bit I/O fifo port specified by Port.\r
-  The port is read Count times, and the read data is\r
-  stored in the provided Buffer.\r
-\r
-  This function must guarantee that all I/O read and write operations are\r
-  serialized.\r
-\r
-  If 32-bit I/O port operations are not supported, then ASSERT().\r
-\r
-  @param  Port    The I/O port to read.\r
-  @param  Count   The number of times to read I/O port.\r
-  @param  Buffer  The buffer to store the read data into.\r
-\r
-**/\r
-VOID\r
-EFIAPI\r
-IoReadFifo32 (\r
-  IN      UINTN                     Port,\r
-  IN      UINTN                     Count,\r
-  OUT     VOID                      *Buffer\r
-  )\r
-{\r
-  //\r
-  // Make sure Port is aligned on a 32-bit boundary.\r
-  //\r
-  ASSERT ((Port & 3) == 0);\r
-  IoReadFifoWorker (Port, EfiCpuIoWidthFifoUint32, Count, Buffer);\r
-}\r
-\r
-/**\r
-  Writes a block of memory into a 32-bit I/O port fifo.\r
-\r
-  Writes the 32-bit I/O fifo port specified by Port.\r
-  The port is written Count times, and the write data is\r
-  retrieved from the provided Buffer.\r
-\r
-  This function must guarantee that all I/O write and write operations are\r
-  serialized.\r
-\r
-  If 32-bit I/O port operations are not supported, then ASSERT().\r
-\r
-  @param  Port    The I/O port to write.\r
-  @param  Count   The number of times to write I/O port.\r
-  @param  Buffer  The buffer to retrieve the write data from.\r
-\r
-**/\r
-VOID\r
-EFIAPI\r
-IoWriteFifo32 (\r
-  IN      UINTN                     Port,\r
-  IN      UINTN                     Count,\r
-  IN      VOID                      *Buffer\r
-  )\r
-{\r
-  //\r
-  // Make sure Port is aligned on a 32-bit boundary.\r
-  //\r
-  ASSERT ((Port & 3) == 0);\r
-  IoWriteFifoWorker (Port, EfiCpuIoWidthFifoUint32, Count, Buffer);\r
-}\r
-\r
-/**\r
-  Reads an 8-bit MMIO register.\r
-\r
-  Reads the 8-bit MMIO register specified by Address. The 8-bit read value is\r
-  returned. This function must guarantee that all MMIO read and write\r
-  operations are serialized.\r
-\r
-  If 8-bit MMIO register operations are not supported, then ASSERT().\r
-\r
-  @param  Address The MMIO register to read.\r
-\r
-  @return The value read.\r
-\r
-**/\r
-UINT8\r
-EFIAPI\r
-MmioRead8 (\r
-  IN      UINTN                     Address\r
-  )\r
-{\r
-  return (UINT8)MmioReadWorker (Address, EfiCpuIoWidthUint8);\r
-}\r
-\r
-/**\r
-  Writes an 8-bit MMIO register.\r
-\r
-  Writes the 8-bit MMIO register specified by Address with the value specified\r
-  by Value and returns Value. This function must guarantee that all MMIO read\r
-  and write operations are serialized.\r
-\r
-  If 8-bit MMIO register operations are not supported, then ASSERT().\r
-\r
-  @param  Address The MMIO register to write.\r
-  @param  Value   The value to write to the MMIO register.\r
-\r
-**/\r
-UINT8\r
-EFIAPI\r
-MmioWrite8 (\r
-  IN      UINTN                     Address,\r
-  IN      UINT8                     Value\r
-  )\r
-{\r
-  return (UINT8)MmioWriteWorker (Address, EfiCpuIoWidthUint8, Value);\r
-}\r
-\r
-/**\r
-  Reads a 16-bit MMIO register.\r
-\r
-  Reads the 16-bit MMIO register specified by Address. The 16-bit read value is\r
-  returned. This function must guarantee that all MMIO read and write\r
-  operations are serialized.\r
-\r
-  If Address is not aligned on a 16-bit boundary, then ASSERT().\r
-\r
-  If 16-bit MMIO register operations are not supported, then ASSERT().\r
-\r
-  @param  Address The MMIO register to read.\r
-\r
-  @return The value read.\r
-\r
-**/\r
-UINT16\r
-EFIAPI\r
-MmioRead16 (\r
-  IN      UINTN                     Address\r
-  )\r
-{\r
-  //\r
-  // Make sure Address is aligned on a 16-bit boundary.\r
-  //\r
-  ASSERT ((Address & 1) == 0);\r
-  return (UINT16)MmioReadWorker (Address, EfiCpuIoWidthUint16);\r
-}\r
-\r
-/**\r
-  Writes a 16-bit MMIO register.\r
-\r
-  Writes the 16-bit MMIO register specified by Address with the value specified\r
-  by Value and returns Value. This function must guarantee that all MMIO read\r
-  and write operations are serialized.\r
-\r
-  If Address is not aligned on a 16-bit boundary, then ASSERT().\r
-\r
-  If 16-bit MMIO register operations are not supported, then ASSERT().\r
-\r
-  @param  Address The MMIO register to write.\r
-  @param  Value   The value to write to the MMIO register.\r
-\r
-**/\r
-UINT16\r
-EFIAPI\r
-MmioWrite16 (\r
-  IN      UINTN                     Address,\r
-  IN      UINT16                    Value\r
-  )\r
-{\r
-  //\r
-  // Make sure Address is aligned on a 16-bit boundary.\r
-  //\r
-  ASSERT ((Address & 1) == 0);\r
-  return (UINT16)MmioWriteWorker (Address, EfiCpuIoWidthUint16, Value);\r
-}\r
-\r
-/**\r
-  Reads a 32-bit MMIO register.\r
-\r
-  Reads the 32-bit MMIO register specified by Address. The 32-bit read value is\r
-  returned. This function must guarantee that all MMIO read and write\r
-  operations are serialized.\r
-\r
-  If Address is not aligned on a 32-bit boundary, then ASSERT().\r
-\r
-  If 32-bit MMIO register operations are not supported, then ASSERT().\r
-\r
-  @param  Address The MMIO register to read.\r
-\r
-  @return The value read.\r
-\r
-**/\r
-UINT32\r
-EFIAPI\r
-MmioRead32 (\r
-  IN      UINTN                     Address\r
-  )\r
-{\r
-  //\r
-  // Make sure Address is aligned on a 32-bit boundary.\r
-  //\r
-  ASSERT ((Address & 3) == 0);\r
-  return (UINT32)MmioReadWorker (Address, EfiCpuIoWidthUint32);\r
-}\r
-\r
-/**\r
-  Writes a 32-bit MMIO register.\r
-\r
-  Writes the 32-bit MMIO register specified by Address with the value specified\r
-  by Value and returns Value. This function must guarantee that all MMIO read\r
-  and write operations are serialized.\r
-\r
-  If Address is not aligned on a 32-bit boundary, then ASSERT().\r
-\r
-  If 32-bit MMIO register operations are not supported, then ASSERT().\r
-\r
-  @param  Address The MMIO register to write.\r
-  @param  Value   The value to write to the MMIO register.\r
-\r
-**/\r
-UINT32\r
-EFIAPI\r
-MmioWrite32 (\r
-  IN      UINTN                     Address,\r
-  IN      UINT32                    Value\r
-  )\r
-{\r
-  //\r
-  // Make sure Address is aligned on a 32-bit boundary.\r
-  //\r
-  ASSERT ((Address & 3) == 0);\r
-  return (UINT32)MmioWriteWorker (Address, EfiCpuIoWidthUint32, Value);\r
-}\r
-\r
-/**\r
-  Reads a 64-bit MMIO register.\r
-\r
-  Reads the 64-bit MMIO register specified by Address. The 64-bit read value is\r
-  returned. This function must guarantee that all MMIO read and write\r
-  operations are serialized.\r
-\r
-  If Address is not aligned on a 64-bit boundary, then ASSERT().\r
-\r
-  If 64-bit MMIO register operations are not supported, then ASSERT().\r
-\r
-  @param  Address The MMIO register to read.\r
-\r
-  @return The value read.\r
-\r
-**/\r
-UINT64\r
-EFIAPI\r
-MmioRead64 (\r
-  IN      UINTN                     Address\r
-  )\r
-{\r
-  //\r
-  // Make sure Address is aligned on a 64-bit boundary.\r
-  //\r
-  ASSERT ((Address & 7) == 0);\r
-  return (UINT64)MmioReadWorker (Address, EfiCpuIoWidthUint64);\r
-}\r
-\r
-/**\r
-  Writes a 64-bit MMIO register.\r
-\r
-  Writes the 64-bit MMIO register specified by Address with the value specified\r
-  by Value and returns Value. This function must guarantee that all MMIO read\r
-  and write operations are serialized.\r
-\r
-  If Address is not aligned on a 64-bit boundary, then ASSERT().\r
-\r
-  If 64-bit MMIO register operations are not supported, then ASSERT().\r
-\r
-  @param  Address The MMIO register to write.\r
-  @param  Value   The value to write to the MMIO register.\r
-\r
-**/\r
-UINT64\r
-EFIAPI\r
-MmioWrite64 (\r
-  IN      UINTN                     Address,\r
-  IN      UINT64                    Value\r
-  )\r
-{\r
-  //\r
-  // Make sure Address is aligned on a 64-bit boundary.\r
-  //\r
-  ASSERT ((Address & 7) == 0);\r
-  return (UINT64)MmioWriteWorker (Address, EfiCpuIoWidthUint64, Value);\r
-}\r
diff --git a/IntelFrameworkPkg/Library/DxeIoLibCpuIo/IoLibMmioBuffer.c b/IntelFrameworkPkg/Library/DxeIoLibCpuIo/IoLibMmioBuffer.c
deleted file mode 100644 (file)
index a42a1d0..0000000
+++ /dev/null
@@ -1,410 +0,0 @@
-/** @file\r
-  I/O Library MMIO Buffer Functions.\r
-\r
-  Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-  SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-  Module Name:  IoLibMmioBuffer.c\r
-\r
-**/\r
-\r
-\r
-#include "DxeCpuIoLibInternal.h"\r
-\r
-/**\r
-  Copy data from MMIO region to system memory by using 8-bit access.\r
-\r
-  Copy data from MMIO region specified by starting address StartAddress\r
-  to system memory specified by Buffer by using 8-bit access. The total\r
-  number of byte to be copied is specified by Length. Buffer is returned.\r
-\r
-  If Length is greater than (MAX_ADDRESS - StartAddress + 1), then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().\r
-\r
-\r
-  @param  StartAddress    Starting address for the MMIO region to be copied from.\r
-  @param  Length          Size in bytes of the copy.\r
-  @param  Buffer          Pointer to a system memory buffer receiving the data read.\r
-\r
-  @return Buffer\r
-\r
-**/\r
-UINT8 *\r
-EFIAPI\r
-MmioReadBuffer8 (\r
-  IN  UINTN       StartAddress,\r
-  IN  UINTN       Length,\r
-  OUT UINT8       *Buffer\r
-  )\r
-{\r
-  UINT8   *ReturnBuffer;\r
-\r
-  ASSERT ((Length - 1) <=  (MAX_ADDRESS - StartAddress));\r
-  ASSERT ((Length - 1) <=  (MAX_ADDRESS - (UINTN) Buffer));\r
-\r
-  ReturnBuffer = Buffer;\r
-\r
-  while (Length-- > 0) {\r
-    *(Buffer++) = MmioRead8 (StartAddress++);\r
-  }\r
-\r
-  return ReturnBuffer;\r
-}\r
-\r
-/**\r
-  Copy data from MMIO region to system memory by using 16-bit access.\r
-\r
-  Copy data from MMIO region specified by starting address StartAddress\r
-  to system memory specified by Buffer by using 16-bit access. The total\r
-  number of byte to be copied is specified by Length. Buffer is returned.\r
-\r
-  If StartAddress is not aligned on a 16-bit boundary, then ASSERT().\r
-\r
-  If Length is greater than (MAX_ADDRESS - StartAddress + 1), then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().\r
-\r
-  If Length is not aligned on a 16-bit boundary, then ASSERT().\r
-\r
-  If Buffer is not aligned on a 16-bit boundary, then ASSERT().\r
-\r
-  @param  StartAddress    Starting address for the MMIO region to be copied from.\r
-  @param  Length          Size in bytes of the copy.\r
-  @param  Buffer          Pointer to a system memory buffer receiving the data read.\r
-\r
-  @return Buffer\r
-\r
-**/\r
-UINT16 *\r
-EFIAPI\r
-MmioReadBuffer16 (\r
-  IN  UINTN       StartAddress,\r
-  IN  UINTN       Length,\r
-  OUT UINT16      *Buffer\r
-  )\r
-{\r
-  UINT16    *ReturnBuffer;\r
-\r
-  ASSERT ((StartAddress & (sizeof (UINT16) - 1)) == 0);\r
-\r
-  ASSERT ((Length - 1) <=  (MAX_ADDRESS - StartAddress));\r
-  ASSERT ((Length - 1) <=  (MAX_ADDRESS - (UINTN) Buffer));\r
-\r
-  ASSERT ((Length & (sizeof (UINT16) - 1)) == 0);\r
-  ASSERT (((UINTN) Buffer & (sizeof (UINT16) - 1)) == 0);\r
-\r
-  ReturnBuffer = Buffer;\r
-\r
-  while (Length > 0) {\r
-    *(Buffer++) = MmioRead16 (StartAddress);\r
-    StartAddress += sizeof (UINT16);\r
-    Length -= sizeof (UINT16);\r
-  }\r
-\r
-  return ReturnBuffer;\r
-}\r
-\r
-/**\r
-  Copy data from MMIO region to system memory by using 32-bit access.\r
-\r
-  Copy data from MMIO region specified by starting address StartAddress\r
-  to system memory specified by Buffer by using 32-bit access. The total\r
-  number of byte to be copied is specified by Length. Buffer is returned.\r
-\r
-  If StartAddress is not aligned on a 32-bit boundary, then ASSERT().\r
-\r
-  If Length is greater than (MAX_ADDRESS - StartAddress + 1), then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().\r
-\r
-  If Length is not aligned on a 32-bit boundary, then ASSERT().\r
-  If Buffer is not aligned on a 32-bit boundary, then ASSERT().\r
-\r
-  @param  StartAddress    Starting address for the MMIO region to be copied from.\r
-  @param  Length          Size in bytes of the copy.\r
-  @param  Buffer          Pointer to a system memory buffer receiving the data read.\r
-\r
-  @return Buffer\r
-\r
-**/\r
-UINT32 *\r
-EFIAPI\r
-MmioReadBuffer32 (\r
-  IN  UINTN       StartAddress,\r
-  IN  UINTN       Length,\r
-  OUT UINT32      *Buffer\r
-  )\r
-{\r
-  UINT32    *ReturnBuffer;\r
-\r
-  ASSERT ((StartAddress & (sizeof (UINT32) - 1)) == 0);\r
-\r
-  ASSERT ((Length - 1) <=  (MAX_ADDRESS - StartAddress));\r
-  ASSERT ((Length - 1) <=  (MAX_ADDRESS - (UINTN) Buffer));\r
-\r
-  ASSERT ((Length & (sizeof (UINT32) - 1)) == 0);\r
-  ASSERT (((UINTN) Buffer & (sizeof (UINT32) - 1)) == 0);\r
-\r
-  ReturnBuffer = Buffer;\r
-\r
-  while (Length > 0) {\r
-    *(Buffer++) = MmioRead32 (StartAddress);\r
-    StartAddress += sizeof (UINT32);\r
-    Length -= sizeof (UINT32);\r
-  }\r
-\r
-  return ReturnBuffer;\r
-}\r
-\r
-/**\r
-  Copy data from MMIO region to system memory by using 64-bit access.\r
-\r
-  Copy data from MMIO region specified by starting address StartAddress\r
-  to system memory specified by Buffer by using 64-bit access. The total\r
-  number of byte to be copied is specified by Length. Buffer is returned.\r
-\r
-  If StartAddress is not aligned on a 64-bit boundary, then ASSERT().\r
-\r
-  If Length is greater than (MAX_ADDRESS - StartAddress + 1), then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().\r
-\r
-  If Length is not aligned on a 64-bit boundary, then ASSERT().\r
-\r
-  If Buffer is not aligned on a 64-bit boundary, then ASSERT().\r
-\r
-  @param  StartAddress    Starting address for the MMIO region to be copied from.\r
-  @param  Length          Size in bytes of the copy.\r
-  @param  Buffer          Pointer to a system memory buffer receiving the data read.\r
-\r
-  @return Buffer\r
-\r
-**/\r
-UINT64 *\r
-EFIAPI\r
-MmioReadBuffer64 (\r
-  IN  UINTN       StartAddress,\r
-  IN  UINTN       Length,\r
-  OUT UINT64      *Buffer\r
-  )\r
-{\r
-  UINT64    *ReturnBuffer;\r
-\r
-  ASSERT ((StartAddress & (sizeof (UINT64) - 1)) == 0);\r
-\r
-  ASSERT ((Length - 1) <=  (MAX_ADDRESS - StartAddress));\r
-  ASSERT ((Length - 1) <=  (MAX_ADDRESS - (UINTN) Buffer));\r
-\r
-  ASSERT ((Length & (sizeof (UINT64) - 1)) == 0);\r
-  ASSERT (((UINTN) Buffer & (sizeof (UINT64) - 1)) == 0);\r
-\r
-  ReturnBuffer = Buffer;\r
-\r
-  while (Length > 0) {\r
-    *(Buffer++) = MmioRead64 (StartAddress);\r
-    StartAddress += sizeof (UINT64);\r
-    Length -= sizeof (UINT64);\r
-  }\r
-\r
-  return ReturnBuffer;\r
-}\r
-\r
-\r
-/**\r
-  Copy data from system memory to MMIO region by using 8-bit access.\r
-\r
-  Copy data from system memory specified by Buffer to MMIO region specified\r
-  by starting address StartAddress by using 8-bit access. The total number\r
-  of byte to be copied is specified by Length. Buffer is returned.\r
-\r
-  If Length is greater than (MAX_ADDRESS - StartAddress + 1), then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS -Buffer + 1), then ASSERT().\r
-\r
-\r
-  @param  StartAddress    Starting address for the MMIO region to be copied to.\r
-  @param  Length     Size in bytes of the copy.\r
-  @param  Buffer          Pointer to a system memory buffer containing the data to write.\r
-\r
-  @return Buffer\r
-\r
-**/\r
-UINT8 *\r
-EFIAPI\r
-MmioWriteBuffer8 (\r
-  IN  UINTN         StartAddress,\r
-  IN  UINTN         Length,\r
-  IN  CONST UINT8   *Buffer\r
-  )\r
-{\r
-  VOID* ReturnBuffer;\r
-\r
-  ASSERT ((Length - 1) <=  (MAX_ADDRESS - StartAddress));\r
-  ASSERT ((Length - 1) <=  (MAX_ADDRESS - (UINTN) Buffer));\r
-\r
-  ReturnBuffer = (UINT8 *) Buffer;\r
-\r
-  while (Length-- > 0) {\r
-     MmioWrite8 (StartAddress++, *(Buffer++));\r
-  }\r
-\r
-  return ReturnBuffer;\r
-\r
-}\r
-\r
-/**\r
-  Copy data from system memory to MMIO region by using 16-bit access.\r
-\r
-  Copy data from system memory specified by Buffer to MMIO region specified\r
-  by starting address StartAddress by using 16-bit access. The total number\r
-  of byte to be copied is specified by Length. Buffer is returned.\r
-\r
-  If StartAddress is not aligned on a 16-bit boundary, then ASSERT().\r
-\r
-  If Length is greater than (MAX_ADDRESS - StartAddress + 1), then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS -Buffer + 1), then ASSERT().\r
-\r
-  If Length is not aligned on a 16-bit boundary, then ASSERT().\r
-\r
-  If Buffer is not aligned on a 16-bit boundary, then ASSERT().\r
-\r
-  @param  StartAddress    Starting address for the MMIO region to be copied to.\r
-  @param  Length     Size in bytes of the copy.\r
-  @param  Buffer          Pointer to a system memory buffer containing the data to write.\r
-\r
-  @return Buffer\r
-\r
-**/\r
-UINT16 *\r
-EFIAPI\r
-MmioWriteBuffer16 (\r
-  IN  UINTN        StartAddress,\r
-  IN  UINTN        Length,\r
-  IN  CONST UINT16 *Buffer\r
-  )\r
-{\r
-  UINT16    *ReturnBuffer;\r
-\r
-  ASSERT ((StartAddress & (sizeof (UINT16) - 1)) == 0);\r
-\r
-  ASSERT ((Length - 1) <=  (MAX_ADDRESS - StartAddress));\r
-  ASSERT ((Length - 1) <=  (MAX_ADDRESS - (UINTN) Buffer));\r
-\r
-  ASSERT ((Length & (sizeof (UINT16) - 1)) == 0);\r
-  ASSERT (((UINTN) Buffer & (sizeof (UINT16) - 1)) == 0);\r
-\r
-  ReturnBuffer = (UINT16 *) Buffer;\r
-\r
-  while (Length > 0) {\r
-    MmioWrite16 (StartAddress, *(Buffer++));\r
-\r
-    StartAddress += sizeof (UINT16);\r
-    Length -= sizeof (UINT16);\r
-  }\r
-\r
-  return ReturnBuffer;\r
-}\r
-\r
-\r
-/**\r
-  Copy data from system memory to MMIO region by using 32-bit access.\r
-\r
-  Copy data from system memory specified by Buffer to MMIO region specified\r
-  by starting address StartAddress by using 32-bit access. The total number\r
-  of byte to be copied is specified by Length. Buffer is returned.\r
-\r
-  If StartAddress is not aligned on a 32-bit boundary, then ASSERT().\r
-\r
-  If Length is greater than (MAX_ADDRESS - StartAddress + 1), then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS -Buffer + 1), then ASSERT().\r
-\r
-  If Length is not aligned on a 32-bit boundary, then ASSERT().\r
-\r
-  If Buffer is not aligned on a 32-bit boundary, then ASSERT().\r
-\r
-  @param  StartAddress    Starting address for the MMIO region to be copied to.\r
-  @param  Length     Size in bytes of the copy.\r
-  @param  Buffer          Pointer to a system memory buffer containing the data to write.\r
-\r
-  @return Buffer\r
-\r
-**/\r
-UINT32 *\r
-EFIAPI\r
-MmioWriteBuffer32 (\r
-  IN  UINTN        StartAddress,\r
-  IN  UINTN        Length,\r
-  IN  CONST UINT32 *Buffer\r
-  )\r
-{\r
-  UINT32    *ReturnBuffer;\r
-\r
-  ASSERT ((StartAddress & (sizeof (UINT32) - 1)) == 0);\r
-\r
-  ASSERT ((Length - 1) <=  (MAX_ADDRESS - StartAddress));\r
-  ASSERT ((Length - 1) <=  (MAX_ADDRESS - (UINTN) Buffer));\r
-\r
-  ASSERT ((Length & (sizeof (UINT32) - 1)) == 0);\r
-  ASSERT (((UINTN) Buffer & (sizeof (UINT32) - 1)) == 0);\r
-\r
-  ReturnBuffer = (UINT32 *) Buffer;\r
-\r
-  while (Length > 0) {\r
-    MmioWrite32 (StartAddress, *(Buffer++));\r
-\r
-    StartAddress += sizeof (UINT32);\r
-    Length -= sizeof (UINT32);\r
-  }\r
-\r
-  return ReturnBuffer;\r
-}\r
-\r
-/**\r
-  Copy data from system memory to MMIO region by using 64-bit access.\r
-\r
-  Copy data from system memory specified by Buffer to MMIO region specified\r
-  by starting address StartAddress by using 64-bit access. The total number\r
-  of byte to be copied is specified by Length. Buffer is returned.\r
-\r
-  If StartAddress is not aligned on a 64-bit boundary, then ASSERT().\r
-\r
-  If Length is greater than (MAX_ADDRESS - StartAddress + 1), then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS -Buffer + 1), then ASSERT().\r
-\r
-  If Length is not aligned on a 64-bit boundary, then ASSERT().\r
-\r
-  If Buffer is not aligned on a 64-bit boundary, then ASSERT().\r
-\r
-  @param  StartAddress    Starting address for the MMIO region to be copied to.\r
-  @param  Length     Size in bytes of the copy.\r
-  @param  Buffer          Pointer to a system memory buffer containing the data to write.\r
-\r
-  @return Buffer\r
-\r
-**/\r
-UINT64 *\r
-EFIAPI\r
-MmioWriteBuffer64 (\r
-  IN  UINTN        StartAddress,\r
-  IN  UINTN        Length,\r
-  IN  CONST UINT64 *Buffer\r
-  )\r
-{\r
-  UINT64    *ReturnBuffer;\r
-\r
-  ASSERT ((StartAddress & (sizeof (UINT64) - 1)) == 0);\r
-\r
-  ASSERT ((Length - 1) <=  (MAX_ADDRESS - StartAddress));\r
-  ASSERT ((Length - 1) <=  (MAX_ADDRESS - (UINTN) Buffer));\r
-\r
-  ASSERT ((Length & (sizeof (UINT64) - 1)) == 0);\r
-  ASSERT (((UINTN) Buffer & (sizeof (UINT64) - 1)) == 0);\r
-\r
-  ReturnBuffer = (UINT64 *) Buffer;\r
-\r
-  while (Length > 0) {\r
-    MmioWrite64 (StartAddress, *(Buffer++));\r
-\r
-    StartAddress += sizeof (UINT64);\r
-    Length -= sizeof (UINT64);\r
-  }\r
-\r
-  return ReturnBuffer;\r
-}\r
-\r
diff --git a/IntelFrameworkPkg/Library/DxeSmmDriverEntryPoint/DriverEntryPoint.c b/IntelFrameworkPkg/Library/DxeSmmDriverEntryPoint/DriverEntryPoint.c
deleted file mode 100644 (file)
index 2b3a480..0000000
+++ /dev/null
@@ -1,270 +0,0 @@
-/** @file\r
-  This file implement EfiMain() for library class DxeSmmDriverEntryPoint.\r
-  EfiMain() is common driver entry point for all SMM driver who uses DxeSmmDriverEntryPoint\r
-  library class.\r
-\r
-Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-**/\r
-\r
-\r
-#include <FrameworkSmm.h>\r
-\r
-#include <Protocol/LoadedImage.h>\r
-#include <Protocol/SmmBase.h>\r
-#include <Protocol/DevicePath.h>\r
-\r
-#include <Library/UefiDriverEntryPoint.h>\r
-#include <Library/UefiBootServicesTableLib.h>\r
-#include <Library/DebugLib.h>\r
-#include <Library/DevicePathLib.h>\r
-\r
-/**\r
-  This function returns the size, in bytes,\r
-  of the device path data structure specified by DevicePath.\r
-  If DevicePath is NULL, then 0 is returned.\r
-\r
-  @param  DevicePath A pointer to a device path data structure.\r
-\r
-  @return The size of a device path in bytes.\r
-\r
-**/\r
-UINTN\r
-EFIAPI\r
-SmmGetDevicePathSize (\r
-  IN CONST EFI_DEVICE_PATH_PROTOCOL  *DevicePath\r
-  )\r
-{\r
-  CONST EFI_DEVICE_PATH_PROTOCOL  *Start;\r
-\r
-  if (DevicePath == NULL) {\r
-    return 0;\r
-  }\r
-\r
-  //\r
-  // Search for the end of the device path structure\r
-  //\r
-  Start = DevicePath;\r
-  while (!IsDevicePathEnd (DevicePath)) {\r
-    DevicePath = NextDevicePathNode (DevicePath);\r
-  }\r
-\r
-  //\r
-  // Compute the size and add back in the size of the end device path structure\r
-  //\r
-  return ((UINTN) DevicePath - (UINTN) Start) + sizeof (EFI_DEVICE_PATH_PROTOCOL);\r
-}\r
-\r
-/**\r
-  This function appends the device path SecondDevicePath\r
-  to every device path instance in FirstDevicePath.\r
-\r
-  @param  FirstDevicePath A pointer to a device path data structure.\r
-\r
-  @param  SecondDevicePath A pointer to a device path data structure.\r
-\r
-  @return A pointer to the new device path is returned.\r
-          NULL is returned if space for the new device path could not be allocated from pool.\r
-          It is up to the caller to free the memory used by FirstDevicePath and SecondDevicePath\r
-          if they are no longer needed.\r
-\r
-**/\r
-EFI_DEVICE_PATH_PROTOCOL *\r
-EFIAPI\r
-SmmAppendDevicePath (\r
-  IN CONST EFI_DEVICE_PATH_PROTOCOL  *FirstDevicePath,\r
-  IN CONST EFI_DEVICE_PATH_PROTOCOL  *SecondDevicePath\r
-  )\r
-{\r
-  EFI_STATUS                Status;\r
-  UINTN                     Size;\r
-  UINTN                     Size1;\r
-  UINTN                     Size2;\r
-  EFI_DEVICE_PATH_PROTOCOL  *NewDevicePath;\r
-  EFI_DEVICE_PATH_PROTOCOL  *DevicePath2;\r
-\r
-  ASSERT (FirstDevicePath != NULL && SecondDevicePath != NULL);\r
-\r
-  //\r
-  // Allocate space for the combined device path. It only has one end node of\r
-  // length EFI_DEVICE_PATH_PROTOCOL\r
-  //\r
-  Size1         = SmmGetDevicePathSize (FirstDevicePath);\r
-  Size2         = SmmGetDevicePathSize (SecondDevicePath);\r
-  Size          = Size1 + Size2 - sizeof (EFI_DEVICE_PATH_PROTOCOL);\r
-\r
-  Status = gBS->AllocatePool (EfiBootServicesData, Size, (VOID **) &NewDevicePath);\r
-\r
-  if (EFI_SUCCESS == Status) {\r
-    //\r
-    // CopyMem in gBS is used as this service should always be ready. We didn't choose\r
-    // to use a BaseMemoryLib function as such library instance may have constructor.\r
-    //\r
-    gBS->CopyMem ((VOID *) NewDevicePath, (VOID *) FirstDevicePath, Size1);\r
-    //\r
-    // Over write Src1 EndNode and do the copy\r
-    //\r
-    DevicePath2 = (EFI_DEVICE_PATH_PROTOCOL *) ((CHAR8 *) NewDevicePath + (Size1 - sizeof (EFI_DEVICE_PATH_PROTOCOL)));\r
-    gBS->CopyMem ((VOID *) DevicePath2, (VOID *) SecondDevicePath, Size2);\r
-  }\r
-\r
-  return NewDevicePath;\r
-}\r
-\r
-/**\r
-  Unload function that is registered in the LoadImage protocol.  It un-installs\r
-  protocols produced and deallocates pool used by the driver.  Called by the core\r
-  when unloading the driver.\r
-\r
-  @param  ImageHandle   ImageHandle of the unloaded driver\r
-\r
-  @return Status of the ProcessModuleUnloadList.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-_DriverUnloadHandler (\r
-  EFI_HANDLE ImageHandle\r
-  )\r
-{\r
-  //\r
-  // Call the unload handlers for all the modules.\r
-  //\r
-  // Note: All libraries were constructed in SMM space,\r
-  // therefore we can not destruct them in Unload\r
-  // handler.\r
-  //\r
-  return ProcessModuleUnloadList (ImageHandle);\r
-}\r
-\r
-/**\r
-  Enrty point to DXE SMM Driver.\r
-\r
-  @param  ImageHandle ImageHandle of the loaded driver.\r
-  @param  SystemTable Pointer to the EFI System Table.\r
-\r
-  @retval  EFI_SUCCESS One or more of the drivers returned a success code.\r
-  @retval  !EFI_SUCESS The return status from the last driver entry point in the list.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-_ModuleEntryPoint (\r
-  IN EFI_HANDLE        ImageHandle,\r
-  IN EFI_SYSTEM_TABLE  *SystemTable\r
-  )\r
-{\r
-  EFI_STATUS                 Status;\r
-  EFI_LOADED_IMAGE_PROTOCOL  *LoadedImage;\r
-  EFI_SMM_BASE_PROTOCOL      *SmmBase;\r
-  BOOLEAN                    InSmm;\r
-  EFI_DEVICE_PATH_PROTOCOL   *CompleteFilePath;\r
-  EFI_DEVICE_PATH_PROTOCOL   *ImageDevicePath;\r
-  EFI_HANDLE                 Handle;\r
-\r
-  //\r
-  // Cache a pointer to the Boot Services Table\r
-  //\r
-  gBS = SystemTable->BootServices;\r
-\r
-  //\r
-  // Retrieve SMM Base Protocol\r
-  //\r
-  Status = gBS->LocateProtocol (\r
-                  &gEfiSmmBaseProtocolGuid,\r
-                  NULL,\r
-                  (VOID **) &SmmBase\r
-                  );\r
-  ASSERT_EFI_ERROR (Status);\r
-\r
-  //\r
-  // Check to see if we are already in SMM\r
-  //\r
-  SmmBase->InSmm (SmmBase, &InSmm);\r
-\r
-  //\r
-  //\r
-  //\r
-  if (!InSmm) {\r
-    //\r
-    // Retrieve the Loaded Image Protocol\r
-    //\r
-    Status = gBS->HandleProtocol (\r
-                  ImageHandle,\r
-                  &gEfiLoadedImageProtocolGuid,\r
-                  (VOID*)&LoadedImage\r
-                  );\r
-    ASSERT_EFI_ERROR (Status);\r
-    //\r
-    // Retrieve the Device Path Protocol from the DeviceHandle from which this driver was loaded\r
-    //\r
-    Status = gBS->HandleProtocol (\r
-                    LoadedImage->DeviceHandle,\r
-                    &gEfiDevicePathProtocolGuid,\r
-                    (VOID*)&ImageDevicePath\r
-                    );\r
-    ASSERT_EFI_ERROR (Status);\r
-\r
-    //\r
-    // Build the full device path to the currently execuing image\r
-    //\r
-    CompleteFilePath = SmmAppendDevicePath (ImageDevicePath, LoadedImage->FilePath);\r
-\r
-    //\r
-    // Load the image in memory to SMRAM; it will automatically generate the\r
-    // SMI.\r
-    //\r
-    Status = SmmBase->Register (SmmBase, CompleteFilePath, LoadedImage->ImageBase, 0, &Handle, FALSE);\r
-    ASSERT_EFI_ERROR (Status);\r
-    //\r
-    // Optionally install the unload handler\r
-    //\r
-    if (_gDriverUnloadImageCount > 0) {\r
-      Status = gBS->HandleProtocol (\r
-                      ImageHandle,\r
-                      &gEfiLoadedImageProtocolGuid,\r
-                      (VOID **)&LoadedImage\r
-                      );\r
-      ASSERT_EFI_ERROR (Status);\r
-      LoadedImage->Unload = _DriverUnloadHandler;\r
-    }\r
-\r
-    return Status;\r
-  }\r
-\r
-  //\r
-  // Call constructor for all libraries\r
-  //\r
-  ProcessLibraryConstructorList (ImageHandle, SystemTable);\r
-\r
-  //\r
-  // Call the list of driver entry points\r
-  //\r
-  Status = ProcessModuleEntryPointList (ImageHandle, SystemTable);\r
-  if (EFI_ERROR (Status)) {\r
-    ProcessLibraryDestructorList (ImageHandle, SystemTable);\r
-  }\r
-\r
-  return Status;\r
-}\r
-\r
-/**\r
-  Enrty point wrapper of DXE SMM Driver.\r
-\r
-  @param  ImageHandle ImageHandle of the loaded driver.\r
-  @param  SystemTable Pointer to the EFI System Table.\r
-\r
-  @retval  EFI_SUCCESS One or more of the drivers returned a success code.\r
-  @retval  !EFI_SUCESS The return status from the last driver entry point in the list.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-EfiMain (\r
-  IN EFI_HANDLE        ImageHandle,\r
-  IN EFI_SYSTEM_TABLE  *SystemTable\r
-  )\r
-{\r
-  return _ModuleEntryPoint (ImageHandle, SystemTable);\r
-}\r
diff --git a/IntelFrameworkPkg/Library/DxeSmmDriverEntryPoint/DxeSmmDriverEntryPoint.inf b/IntelFrameworkPkg/Library/DxeSmmDriverEntryPoint/DxeSmmDriverEntryPoint.inf
deleted file mode 100644 (file)
index 63e6788..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-## @file\r
-# Framework SMM driver entry point library.\r
-#\r
-# Register driver in SMRAM and wrapper driver's library constructors and entry point.\r
-#\r
-# Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
-#\r
-#  SPDX-License-Identifier: BSD-2-Clause-Patent\r
-#\r
-#\r
-##\r
-\r
-[Defines]\r
-  INF_VERSION                    = 0x00010005\r
-  BASE_NAME                      = DxeSmmDriverEntryPoint\r
-  MODULE_UNI_FILE                = DxeSmmDriverEntryPoint.uni\r
-  FILE_GUID                      = 79C5C7B7-1083-42a6-AD15-2A4E7C4274D7\r
-  MODULE_TYPE                    = DXE_SMM_DRIVER\r
-  VERSION_STRING                 = 1.0\r
-  LIBRARY_CLASS                  = UefiDriverEntryPoint|DXE_SMM_DRIVER\r
-\r
-\r
-#\r
-# The following information is for reference only and not required by the build tools.\r
-#\r
-#  VALID_ARCHITECTURES           = IA32 X64\r
-#\r
-\r
-[Sources]\r
-  DriverEntryPoint.c\r
-\r
-\r
-[Packages]\r
-  MdePkg/MdePkg.dec\r
-  IntelFrameworkPkg/IntelFrameworkPkg.dec\r
-\r
-\r
-[LibraryClasses]\r
-  DebugLib\r
-  UefiBootServicesTableLib\r
-  DevicePathLib\r
-\r
-[Protocols]\r
-  gEfiLoadedImageProtocolGuid                   ## CONSUMES\r
-  gEfiSmmBaseProtocolGuid                       ## CONSUMES\r
-  gEfiDevicePathProtocolGuid                    ## CONSUMES\r
-\r
-[Depex]\r
-  gEfiSmmBaseProtocolGuid\r
-\r
diff --git a/IntelFrameworkPkg/Library/DxeSmmDriverEntryPoint/DxeSmmDriverEntryPoint.uni b/IntelFrameworkPkg/Library/DxeSmmDriverEntryPoint/DxeSmmDriverEntryPoint.uni
deleted file mode 100644 (file)
index d434d9b..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-// /** @file\r
-// Framework SMM driver entry point library.\r
-//\r
-// Register driver in SMRAM and wrapper driver's library constructors and entry point.\r
-//\r
-// Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>\r
-//\r
-// SPDX-License-Identifier: BSD-2-Clause-Patent\r
-//\r
-// **/\r
-\r
-\r
-#string STR_MODULE_ABSTRACT             #language en-US "SMM Driver Entry Point Library"\r
-\r
-#string STR_MODULE_DESCRIPTION          #language en-US "Registers a driver in SMRAM, and wrappers the driver's library constructors and entry point."\r
-\r
diff --git a/IntelFrameworkPkg/Library/FrameworkUefiLib/Acpi.c b/IntelFrameworkPkg/Library/FrameworkUefiLib/Acpi.c
deleted file mode 100644 (file)
index f575afa..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-/** @file\r
-  This module provides help function for finding ACPI table.\r
-\r
-  Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>\r
-  SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-**/\r
-\r
-#include "UefiLibInternal.h"\r
-#include <IndustryStandard/Acpi.h>\r
-\r
-/**\r
-  This function locates next ACPI table in XSDT/RSDT based on Signature and\r
-  previous returned Table.\r
-\r
-  If PreviousTable is NULL:\r
-  This function will locate the first ACPI table in XSDT/RSDT based on\r
-  Signature in gEfiAcpi20TableGuid system configuration table first, and then\r
-  gEfiAcpi10TableGuid system configuration table.\r
-  This function will locate in XSDT first, and then RSDT.\r
-  For DSDT, this function will locate XDsdt in FADT first, and then Dsdt in\r
-  FADT.\r
-  For FACS, this function will locate XFirmwareCtrl in FADT first, and then\r
-  FirmwareCtrl in FADT.\r
-\r
-  If PreviousTable is not NULL:\r
-  1. If it could be located in XSDT in gEfiAcpi20TableGuid system configuration\r
-     table, then this function will just locate next table in XSDT in\r
-     gEfiAcpi20TableGuid system configuration table.\r
-  2. If it could be located in RSDT in gEfiAcpi20TableGuid system configuration\r
-     table, then this function will just locate next table in RSDT in\r
-     gEfiAcpi20TableGuid system configuration table.\r
-  3. If it could be located in RSDT in gEfiAcpi10TableGuid system configuration\r
-     table, then this function will just locate next table in RSDT in\r
-     gEfiAcpi10TableGuid system configuration table.\r
-\r
-  It's not supported that PreviousTable is not NULL but PreviousTable->Signature\r
-  is not same with Signature, NULL will be returned.\r
-\r
-  @param Signature          ACPI table signature.\r
-  @param PreviousTable      Pointer to previous returned table to locate next\r
-                            table, or NULL to locate first table.\r
-\r
-  @return Next ACPI table or NULL if not found.\r
-\r
-**/\r
-EFI_ACPI_COMMON_HEADER *\r
-EFIAPI\r
-EfiLocateNextAcpiTable (\r
-  IN UINT32                     Signature,\r
-  IN EFI_ACPI_COMMON_HEADER     *PreviousTable OPTIONAL\r
-  )\r
-{\r
-  ASSERT (FALSE);\r
-  return NULL;\r
-}\r
-\r
-/**\r
-  This function locates first ACPI table in XSDT/RSDT based on Signature.\r
-\r
-  This function will locate the first ACPI table in XSDT/RSDT based on\r
-  Signature in gEfiAcpi20TableGuid system configuration table first, and then\r
-  gEfiAcpi10TableGuid system configuration table.\r
-  This function will locate in XSDT first, and then RSDT.\r
-  For DSDT, this function will locate XDsdt in FADT first, and then Dsdt in\r
-  FADT.\r
-  For FACS, this function will locate XFirmwareCtrl in FADT first, and then\r
-  FirmwareCtrl in FADT.\r
-\r
-  @param Signature          ACPI table signature.\r
-\r
-  @return First ACPI table or NULL if not found.\r
-\r
-**/\r
-EFI_ACPI_COMMON_HEADER *\r
-EFIAPI\r
-EfiLocateFirstAcpiTable (\r
-  IN UINT32                     Signature\r
-  )\r
-{\r
-  return EfiLocateNextAcpiTable (Signature, NULL);\r
-}\r
diff --git a/IntelFrameworkPkg/Library/FrameworkUefiLib/Console.c b/IntelFrameworkPkg/Library/FrameworkUefiLib/Console.c
deleted file mode 100644 (file)
index 74ce192..0000000
+++ /dev/null
@@ -1,470 +0,0 @@
-/** @file\r
-  This module provide help function for displaying unicode string.\r
-\r
-  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
-  SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-**/\r
-\r
-\r
-\r
-\r
-#include "UefiLibInternal.h"\r
-\r
-typedef struct {\r
-  CHAR16  WChar;\r
-  UINT32  Width;\r
-} UNICODE_WIDTH_ENTRY;\r
-\r
-GLOBAL_REMOVE_IF_UNREFERENCED CONST UNICODE_WIDTH_ENTRY mUnicodeWidthTable[] = {\r
-  //\r
-  // General script area\r
-  //\r
-  {(CHAR16)0x1FFF,  1},\r
-  /*\r
-   * Merge the blocks and replace them with the above entry as they fall to\r
-   * the same category and they are all narrow glyph. This will reduce search\r
-   * time and table size. The merge will omit the reserved code.\r
-   *\r
-   * Remove the above item if below is un-commented.\r
-   *\r
-  {(CHAR16)0x007F,  1},       // C0 controls and basic Latin. 0x0000-0x007F\r
-  {(CHAR16)0x00FF,  1},       // C1 controls and Latin-1 support. 0x0080-0x00FF\r
-  {(CHAR16)0x017F,  1},       // Latin extended-A. 0x0100-0x017F\r
-  {(CHAR16)0x024F,  1},       // Latin extended-B. 0x0180-0x024F\r
-  {(CHAR16)0x02AF,  1},       // IPA extensions. 0x0250-0x02AF\r
-  {(CHAR16)0x02FF,  1},       // Spacing modifier letters. 0x02B0-0x02FF\r
-  {(CHAR16)0x036F,  1},       // Combining diacritical marks. 0x0300-0x036F\r
-  {(CHAR16)0x03FF,  1},       // Greek. 0x0370-0x03FF\r
-  {(CHAR16)0x04FF,  1},       // Cyrillic. 0x0400-0x04FF\r
-  {(CHAR16)0x052F,  0},       // Unassigned. As Armenian in ver3.0. 0x0500-0x052F\r
-  {(CHAR16)0x058F,  1},       // Armenian. 0x0530-0x058F\r
-  {(CHAR16)0x05FF,  1},       // Hebrew. 0x0590-0x05FF\r
-  {(CHAR16)0x06FF,  1},       // Arabic. 0x0600-0x06FF\r
-  {(CHAR16)0x08FF,  0},       // Unassigned. 0x0700-0x08FF\r
-  {(CHAR16)0x097F,  1},       // Devanagari. 0x0900-0x097F\r
-  {(CHAR16)0x09FF,  1},       // Bengali. 0x0980-0x09FF\r
-  {(CHAR16)0x0A7F,  1},       // Gurmukhi. 0x0A00-0x0A7F\r
-  {(CHAR16)0x0AFF,  1},       // Gujarati. 0x0A80-0x0AFF\r
-  {(CHAR16)0x0B7F,  1},       // Oriya. 0x0B00-0x0B7F\r
-  {(CHAR16)0x0BFF,  1},       // Tamil. (See page 7-92). 0x0B80-0x0BFF\r
-  {(CHAR16)0x0C7F,  1},       // Telugu. 0x0C00-0x0C7F\r
-  {(CHAR16)0x0CFF,  1},       // Kannada. (See page 7-100). 0x0C80-0x0CFF\r
-  {(CHAR16)0x0D7F,  1},       // Malayalam (See page 7-104). 0x0D00-0x0D7F\r
-  {(CHAR16)0x0DFF,  0},       // Unassigned. 0x0D80-0x0DFF\r
-  {(CHAR16)0x0E7F,  1},       // Thai. 0x0E00-0x0E7F\r
-  {(CHAR16)0x0EFF,  1},       // Lao. 0x0E80-0x0EFF\r
-  {(CHAR16)0x0FBF,  1},       // Tibetan. 0x0F00-0x0FBF\r
-  {(CHAR16)0x109F,  0},       // Unassigned. 0x0FC0-0x109F\r
-  {(CHAR16)0x10FF,  1},       // Georgian. 0x10A0-0x10FF\r
-  {(CHAR16)0x11FF,  1},       // Hangul Jamo. 0x1100-0x11FF\r
-  {(CHAR16)0x1DFF,  0},       // Unassigned. 0x1200-0x1DFF\r
-  {(CHAR16)0x1EFF,  1},       // Latin extended additional. 0x1E00-0x1EFF\r
-  {(CHAR16)0x1FFF,  1},       // Greek extended. 0x1F00-0x1FFF\r
-  *\r
-  */\r
-\r
-  //\r
-  // Symbol area\r
-  //\r
-  {(CHAR16)0x2FFF,  1},\r
-  /*\r
-   * Merge the blocks and replace them with the above entry as they fall to\r
-   * the same category and they are all narrow glyph. This will reduce search\r
-   * time and table size. The merge will omit the reserved code.\r
-   *\r
-   * Remove the above item if below is un-commented.\r
-   *\r
-  {(CHAR16)0x206F,  1},       // General punctuation. (See page7-154). 0x200-0x206F\r
-  {(CHAR16)0x209F,  1},       // Superscripts and subscripts. 0x2070-0x209F\r
-  {(CHAR16)0x20CF,  1},       // Currency symbols. 0x20A0-0x20CF\r
-  {(CHAR16)0x20FF,  1},       // Combining diacritical marks for symbols. 0x20D0-0x20FF\r
-  {(CHAR16)0x214F,  1},       // Letterlike sympbols. 0x2100-0x214F\r
-  {(CHAR16)0x218F,  1},       // Number forms. 0x2150-0x218F\r
-  {(CHAR16)0x21FF,  1},       // Arrows. 0x2190-0x21FF\r
-  {(CHAR16)0x22FF,  1},       // Mathematical operators. 0x2200-0x22FF\r
-  {(CHAR16)0x23FF,  1},       // Miscellaneous technical. 0x2300-0x23FF\r
-  {(CHAR16)0x243F,  1},       // Control pictures. 0x2400-0x243F\r
-  {(CHAR16)0x245F,  1},       // Optical character recognition. 0x2440-0x245F\r
-  {(CHAR16)0x24FF,  1},       // Enclosed alphanumerics. 0x2460-0x24FF\r
-  {(CHAR16)0x257F,  1},       // Box drawing. 0x2500-0x257F\r
-  {(CHAR16)0x259F,  1},       // Block elements. 0x2580-0x259F\r
-  {(CHAR16)0x25FF,  1},       // Geometric shapes. 0x25A0-0x25FF\r
-  {(CHAR16)0x26FF,  1},       // Miscellaneous symbols. 0x2600-0x26FF\r
-  {(CHAR16)0x27BF,  1},       // Dingbats. 0x2700-0x27BF\r
-  {(CHAR16)0x2FFF,  0},       // Reserved. 0x27C0-0x2FFF\r
-  *\r
-  */\r
-\r
-  //\r
-  // CJK phonetics and symbol area\r
-  //\r
-  {(CHAR16)0x33FF,  2},\r
-  /*\r
-   * Merge the blocks and replace them with the above entry as they fall to\r
-   * the same category and they are all wide glyph. This will reduce search\r
-   * time and table size. The merge will omit the reserved code.\r
-   *\r
-   * Remove the above item if below is un-commented.\r
-   *\r
-  {(CHAR16)0x303F,  2},       // CJK symbols and punctuation. 0x3000-0x303F\r
-  {(CHAR16)0x309F,  2},       // Hiragana. 0x3040-0x309F\r
-  {(CHAR16)0x30FF,  2},       // Katakana. 0x30A0-0x30FF\r
-  {(CHAR16)0x312F,  2},       // Bopomofo. 0x3100-0x312F\r
-  {(CHAR16)0x318F,  2},       // Hangul compatibility jamo. 0x3130-0x318F\r
-  {(CHAR16)0x319F,  2},       // Kanbun. 0x3190-0x319F\r
-  {(CHAR16)0x31FF,  0},       // Reserved. As Bopomofo extended in ver3.0. 0x31A0-0x31FF\r
-  {(CHAR16)0x32FF,  2},       // Enclosed CJK letters and months. 0x3200-0x32FF\r
-  {(CHAR16)0x33FF,  2},       // CJK compatibility. 0x3300-0x33FF\r
-  *\r
-  */\r
-\r
-  //\r
-  // CJK ideograph area\r
-  //\r
-  {(CHAR16)0x9FFF,  2},\r
-  /*\r
-   * Merge the blocks and replace them with the above entry as they fall to\r
-   * the same category and they are all wide glyph. This will reduce search\r
-   * time and table size. The merge will omit the reserved code.\r
-   *\r
-   * Remove the above item if below is un-commented.\r
-   *\r
-  {(CHAR16)0x4DFF,  0},       // Reserved. 0x3400-0x4DBF as CJK unified ideographs\r
-                      // extension A in ver3.0. 0x3400-0x4DFF\r
-  {(CHAR16)0x9FFF,  2},       // CJK unified ideographs. 0x4E00-0x9FFF\r
-  *\r
-  */\r
-\r
-  //\r
-  // Reserved\r
-  //\r
-  {(CHAR16)0xABFF,  0},       // Reserved. 0xA000-0xA490 as Yi syllables. 0xA490-0xA4D0\r
-  // as Yi radicals in ver3.0. 0xA000-0xABFF\r
-  //\r
-  // Hangul syllables\r
-  //\r
-  {(CHAR16)0xD7FF,  2},\r
-  /*\r
-   * Merge the blocks and replace them with the above entry as they fall to\r
-   * the same category and they are all wide glyph. This will reduce search\r
-   * time and table size. The merge will omit the reserved code.\r
-   *\r
-   * Remove the above item if below is un-commented.\r
-   *\r
-  {(CHAR16)0xD7A3,  2},       // Hangul syllables. 0xAC00-0xD7A3\r
-  {(CHAR16)0xD7FF,  0},       // Reserved. 0xD7A3-0xD7FF\r
-  *\r
-  */\r
-\r
-  //\r
-  // Surrogates area\r
-  //\r
-  {(CHAR16)0xDFFF,  0},       // Surrogates, not used now. 0xD800-0xDFFF\r
-\r
-  //\r
-  // Private use area\r
-  //\r
-  {(CHAR16)0xF8FF,  0},       // Private use area. 0xE000-0xF8FF\r
-\r
-  //\r
-  // Compatibility area and specials\r
-  //\r
-  {(CHAR16)0xFAFF,  2},       // CJK compatibility ideographs. 0xF900-0xFAFF\r
-  {(CHAR16)0xFB4F,  1},       // Alphabetic presentation forms. 0xFB00-0xFB4F\r
-  {(CHAR16)0xFDFF,  1},       // Arabic presentation forms-A. 0xFB50-0xFDFF\r
-  {(CHAR16)0xFE1F,  0},       // Reserved. As variation selectors in ver3.0. 0xFE00-0xFE1F\r
-  {(CHAR16)0xFE2F,  1},       // Combining half marks. 0xFE20-0xFE2F\r
-  {(CHAR16)0xFE4F,  2},       // CJK compatibility forms. 0xFE30-0xFE4F\r
-  {(CHAR16)0xFE6F,  1},       // Small Form Variants. 0xFE50-0xFE6F\r
-  {(CHAR16)0xFEFF,  1},       // Arabic presentation forms-B. 0xFE70-0xFEFF\r
-  {(CHAR16)0xFFEF,  1},       // Half width and full width forms. 0xFF00-0xFFEF\r
-  {(CHAR16)0xFFFF,  0},       // Speicials. 0xFFF0-0xFFFF\r
-};\r
-\r
-/**\r
-  Retrieves the width of a Unicode character.\r
-\r
-  This function computes and returns the width of the Unicode character specified\r
-  by UnicodeChar.\r
-\r
-  @param  UnicodeChar   A Unicode character.\r
-\r
-  @retval 0             The width if UnicodeChar could not be determined.\r
-  @retval 1             UnicodeChar is a narrow glyph.\r
-  @retval 2             UnicodeChar is a wide glyph.\r
-\r
-**/\r
-UINTN\r
-EFIAPI\r
-GetGlyphWidth (\r
-  IN CHAR16                         UnicodeChar\r
-  )\r
-{\r
-  UINTN                             Index;\r
-  UINTN                             Low;\r
-  UINTN                             High;\r
-  CONST UNICODE_WIDTH_ENTRY         *Item;\r
-\r
-  Item  = NULL;\r
-  Low   = 0;\r
-  High  = (sizeof (mUnicodeWidthTable)) / (sizeof (UNICODE_WIDTH_ENTRY)) - 1;\r
-  while (Low <= High) {\r
-    Index = (Low + High) >> 1;\r
-    Item  = &(mUnicodeWidthTable[Index]);\r
-    if (Index == 0) {\r
-      if (UnicodeChar <= Item->WChar) {\r
-        break;\r
-      }\r
-\r
-      return 0;\r
-    }\r
-\r
-    if (UnicodeChar > Item->WChar) {\r
-      Low = Index + 1;\r
-    } else if (UnicodeChar <= mUnicodeWidthTable[Index - 1].WChar) {\r
-      High = Index - 1;\r
-    } else {\r
-      //\r
-      // Index - 1 < UnicodeChar <= Index. Found\r
-      //\r
-      break;\r
-    }\r
-  }\r
-\r
-  if (Low <= High) {\r
-    return Item->Width;\r
-  }\r
-\r
-  return 0;\r
-}\r
-\r
-/**\r
-  Computes the display length of a Null-terminated Unicode String.\r
-\r
-  This function computes and returns the display length of the Null-terminated Unicode\r
-  string specified by String.  If String is NULL then 0 is returned. If any of the widths\r
-  of the Unicode characters in String can not be determined, then 0 is returned. The display\r
-  width of String can be computed by summing the display widths of each Unicode character\r
-  in String.  Unicode characters that are narrow glyphs have a width of 1, and Unicode\r
-  characters that are width glyphs have a width of 2.\r
-  If String is not aligned on a 16-bit boundary, then ASSERT().\r
-\r
-  @param  String   A pointer to a Null-terminated Unicode string.\r
-\r
-  @return          The display length of the Null-terminated Unicode string specified by String.\r
-\r
-**/\r
-UINTN\r
-EFIAPI\r
-UnicodeStringDisplayLength (\r
-  IN CONST CHAR16                   *String\r
-  )\r
-{\r
-  UINTN                             Length;\r
-  UINTN                             Width;\r
-\r
-  if (String == NULL) {\r
-    return 0;\r
-  }\r
-\r
-  Length = 0;\r
-  while (*String != 0) {\r
-    Width = GetGlyphWidth (*String);\r
-    if (Width == 0) {\r
-      return 0;\r
-    }\r
-\r
-    Length += Width;\r
-    String++;\r
-  }\r
-\r
-  return Length;\r
-}\r
-\r
-/**\r
-  Draws a dialog box to the console output device specified by\r
-  ConOut defined in the EFI_SYSTEM_TABLE and waits for a keystroke\r
-  from the console input device specified by ConIn defined in the\r
-  EFI_SYSTEM_TABLE.\r
-\r
-  If there are no strings in the variable argument list, then ASSERT().\r
-  If all the strings in the variable argument list are empty, then ASSERT().\r
-\r
-  @param[in]   Attribute  Specifies the foreground and background color of the popup.\r
-  @param[out]  Key        A pointer to the EFI_KEY value of the key that was\r
-                          pressed.  This is an optional parameter that may be NULL.\r
-                          If it is NULL then no wait for a keypress will be performed.\r
-  @param[in]  ...         The variable argument list that contains pointers to Null-\r
-                          terminated Unicode strings to display in the dialog box.\r
-                          The variable argument list is terminated by a NULL.\r
-\r
-**/\r
-VOID\r
-EFIAPI\r
-CreatePopUp (\r
-  IN  UINTN          Attribute,\r
-  OUT EFI_INPUT_KEY  *Key,      OPTIONAL\r
-  ...\r
-  )\r
-{\r
-  EFI_STATUS                       Status;\r
-  VA_LIST                          Args;\r
-  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL  *ConOut;\r
-  EFI_SIMPLE_TEXT_OUTPUT_MODE      SavedConsoleMode;\r
-  UINTN                            Columns;\r
-  UINTN                            Rows;\r
-  UINTN                            Column;\r
-  UINTN                            Row;\r
-  UINTN                            NumberOfLines;\r
-  UINTN                            MaxLength;\r
-  CHAR16                           *String;\r
-  UINTN                            Length;\r
-  CHAR16                           *Line;\r
-  UINTN                            EventIndex;\r
-\r
-  //\r
-  // Determine the length of the longest line in the popup and the the total\r
-  // number of lines in the popup\r
-  //\r
-  VA_START (Args, Key);\r
-  MaxLength = 0;\r
-  NumberOfLines = 0;\r
-  while ((String = VA_ARG (Args, CHAR16 *)) != NULL) {\r
-    MaxLength = MAX (MaxLength, StrLen (String));\r
-    NumberOfLines++;\r
-  }\r
-  VA_END (Args);\r
-\r
-  //\r
-  // If the total number of lines in the popup is zero, then ASSERT()\r
-  //\r
-  ASSERT (NumberOfLines != 0);\r
-\r
-  //\r
-  // If the maximum length of all the strings is zero, then ASSERT()\r
-  //\r
-  ASSERT (MaxLength != 0);\r
-\r
-  //\r
-  // Cache a pointer to the Simple Text Output Protocol in the EFI System Table\r
-  //\r
-  ConOut = gST->ConOut;\r
-\r
-  //\r
-  // Save the current console cursor position and attributes\r
-  //\r
-  CopyMem (&SavedConsoleMode, ConOut->Mode, sizeof (SavedConsoleMode));\r
-\r
-  //\r
-  // Retrieve the number of columns and rows in the current console mode\r
-  //\r
-  ConOut->QueryMode (ConOut, SavedConsoleMode.Mode, &Columns, &Rows);\r
-\r
-  //\r
-  // Disable cursor and set the foreground and background colors specified by Attribute\r
-  //\r
-  ConOut->EnableCursor (ConOut, FALSE);\r
-  ConOut->SetAttribute (ConOut, Attribute);\r
-\r
-  //\r
-  // Limit NumberOfLines to height of the screen minus 3 rows for the box itself\r
-  //\r
-  NumberOfLines = MIN (NumberOfLines, Rows - 3);\r
-\r
-  //\r
-  // Limit MaxLength to width of the screen minus 2 columns for the box itself\r
-  //\r
-  MaxLength = MIN (MaxLength, Columns - 2);\r
-\r
-  //\r
-  // Compute the starting row and starting column for the popup\r
-  //\r
-  Row    = (Rows - (NumberOfLines + 3)) / 2;\r
-  Column = (Columns - (MaxLength + 2)) / 2;\r
-\r
-  //\r
-  // Allocate a buffer for a single line of the popup with borders and a Null-terminator\r
-  //\r
-  Line = AllocateZeroPool ((MaxLength + 3) * sizeof (CHAR16));\r
-  ASSERT (Line != NULL);\r
-\r
-  //\r
-  // Draw top of popup box\r
-  //\r
-  SetMem16 (Line, (MaxLength + 2) * 2, BOXDRAW_HORIZONTAL);\r
-  Line[0]             = BOXDRAW_DOWN_RIGHT;\r
-  Line[MaxLength + 1] = BOXDRAW_DOWN_LEFT;\r
-  Line[MaxLength + 2] = L'\0';\r
-  ConOut->SetCursorPosition (ConOut, Column, Row++);\r
-  ConOut->OutputString (ConOut, Line);\r
-\r
-  //\r
-  // Draw middle of the popup with strings\r
-  //\r
-  VA_START (Args, Key);\r
-  while ((String = VA_ARG (Args, CHAR16 *)) != NULL && NumberOfLines > 0) {\r
-    Length = StrLen (String);\r
-    SetMem16 (Line, (MaxLength + 2) * 2, L' ');\r
-    if (Length <= MaxLength) {\r
-      //\r
-      // Length <= MaxLength\r
-      //\r
-      CopyMem (Line + 1 + (MaxLength - Length) / 2, String , Length * sizeof (CHAR16));\r
-    } else {\r
-      //\r
-      // Length > MaxLength\r
-      //\r
-      CopyMem (Line + 1, String + (Length - MaxLength) / 2 , MaxLength * sizeof (CHAR16));\r
-    }\r
-    Line[0]             = BOXDRAW_VERTICAL;\r
-    Line[MaxLength + 1] = BOXDRAW_VERTICAL;\r
-    Line[MaxLength + 2] = L'\0';\r
-    ConOut->SetCursorPosition (ConOut, Column, Row++);\r
-    ConOut->OutputString (ConOut, Line);\r
-    NumberOfLines--;\r
-  }\r
-  VA_END (Args);\r
-\r
-  //\r
-  // Draw bottom of popup box\r
-  //\r
-  SetMem16 (Line, (MaxLength + 2) * 2, BOXDRAW_HORIZONTAL);\r
-  Line[0]             = BOXDRAW_UP_RIGHT;\r
-  Line[MaxLength + 1] = BOXDRAW_UP_LEFT;\r
-  Line[MaxLength + 2] = L'\0';\r
-  ConOut->SetCursorPosition (ConOut, Column, Row++);\r
-  ConOut->OutputString (ConOut, Line);\r
-\r
-  //\r
-  // Free the allocated line buffer\r
-  //\r
-  FreePool (Line);\r
-\r
-  //\r
-  // Restore the cursor visibility, position, and attributes\r
-  //\r
-  ConOut->EnableCursor      (ConOut, SavedConsoleMode.CursorVisible);\r
-  ConOut->SetCursorPosition (ConOut, SavedConsoleMode.CursorColumn, SavedConsoleMode.CursorRow);\r
-  ConOut->SetAttribute      (ConOut, SavedConsoleMode.Attribute);\r
-\r
-  //\r
-  // Wait for a keystroke\r
-  //\r
-  if (Key != NULL) {\r
-    while (TRUE) {\r
-      Status = gST->ConIn->ReadKeyStroke (gST->ConIn, Key);\r
-      if (!EFI_ERROR (Status)) {\r
-        break;\r
-      }\r
-\r
-      //\r
-      // If we encounter error, continue to read another key in.\r
-      //\r
-      if (Status != EFI_NOT_READY) {\r
-        continue;\r
-      }\r
-      gBS->WaitForEvent (1, &gST->ConIn->WaitForKey, &EventIndex);\r
-    }\r
-  }\r
-}\r
diff --git a/IntelFrameworkPkg/Library/FrameworkUefiLib/FrameworkUefiLib.inf b/IntelFrameworkPkg/Library/FrameworkUefiLib/FrameworkUefiLib.inf
deleted file mode 100644 (file)
index 9d195d3..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-## @file\r
-#  Library to abstract Framework extensions that conflict with UEFI 2.0 Specification.\r
-#\r
-#  This library is helpful to port Framework/Tinao code that has conflicts with UEFI 2.0.\r
-#  It hides the old conflicts with library functions and supporting implementations of\r
-#  the old (EDK/EFI 1.10) and new (EDK II/UEFI 2.0) way.\r
-#\r
-#  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
-#\r
-#  SPDX-License-Identifier: BSD-2-Clause-Patent\r
-#\r
-#\r
-##\r
-\r
-[Defines]\r
-  INF_VERSION                    = 0x00010005\r
-  BASE_NAME                      = FrameworkUefiLib\r
-  MODULE_UNI_FILE                = FrameworkUefiLib.uni\r
-  FILE_GUID                      = B2F0D71A-A39F-4094-854B-0C6BA6910CCE\r
-  MODULE_TYPE                    = UEFI_DRIVER\r
-  VERSION_STRING                 = 1.0\r
-  LIBRARY_CLASS                  = UefiLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER\r
-\r
-#\r
-#  VALID_ARCHITECTURES           = IA32 X64 EBC\r
-#\r
-\r
-[Sources]\r
-  UefiLibPrint.c\r
-  UefiNotTiano.c\r
-  UefiDriverModel.c\r
-  Console.c\r
-  UefiLib.c\r
-  UefiLibInternal.h\r
-  Acpi.c\r
-\r
-[Packages]\r
-  MdePkg/MdePkg.dec\r
-  IntelFrameworkPkg/IntelFrameworkPkg.dec\r
-\r
-[LibraryClasses]\r
-  PrintLib\r
-  PcdLib\r
-  MemoryAllocationLib\r
-  DebugLib\r
-  BaseMemoryLib\r
-  BaseLib\r
-  UefiBootServicesTableLib\r
-  DevicePathLib\r
-\r
-[Guids]\r
-  gEfiEventReadyToBootGuid                      ## SOMETIMES_CONSUMES  ## Event\r
-  gEfiEventLegacyBootGuid                       ## SOMETIMES_CONSUMES  ## Event\r
-\r
-[Protocols]\r
-  gEfiDriverBindingProtocolGuid                 ## SOMETIMES_PRODUCES\r
-  gEfiSimpleTextOutProtocolGuid                 ## SOMETIMES_CONSUMES\r
-  gEfiGraphicsOutputProtocolGuid                ## SOMETIMES_CONSUMES\r
-  gEfiHiiFontProtocolGuid                       ## SOMETIMES_CONSUMES\r
-  gEfiSimpleFileSystemProtocolGuid              ## SOMETIMES_CONSUMES\r
-  gEfiComponentNameProtocolGuid                 ## SOMETIMES_PRODUCES\r
-  gEfiComponentName2ProtocolGuid                ## SOMETIMES_PRODUCES\r
-  gEfiDriverConfigurationProtocolGuid           ## SOMETIMES_PRODUCES\r
-  gEfiDriverConfiguration2ProtocolGuid          ## SOMETIMES_PRODUCES\r
-  gEfiDriverDiagnosticsProtocolGuid             ## SOMETIMES_PRODUCES\r
-  gEfiDriverDiagnostics2ProtocolGuid            ## SOMETIMES_PRODUCES\r
-  gEfiUgaDrawProtocolGuid                       ## SOMETIMES_CONSUMES\r
-\r
-\r
-[Pcd]\r
-  gEfiMdePkgTokenSpaceGuid.PcdUefiLibMaxPrintBufferSize ## SOMETIMES_CONSUMES\r
-\r
-[FeaturePcd]\r
-  gEfiMdePkgTokenSpaceGuid.PcdDriverDiagnosticsDisable    ## CONSUMES\r
-  gEfiMdePkgTokenSpaceGuid.PcdComponentNameDisable        ## CONSUMES\r
-  gEfiMdePkgTokenSpaceGuid.PcdDriverDiagnostics2Disable   ## CONSUMES\r
-  gEfiMdePkgTokenSpaceGuid.PcdComponentName2Disable       ## CONSUMES\r
-  gEfiMdePkgTokenSpaceGuid.PcdUgaConsumeSupport           ## CONSUMES\r
-\r
diff --git a/IntelFrameworkPkg/Library/FrameworkUefiLib/FrameworkUefiLib.uni b/IntelFrameworkPkg/Library/FrameworkUefiLib/FrameworkUefiLib.uni
deleted file mode 100644 (file)
index c0b5d15..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-// /** @file\r
-// Library to abstract Framework extensions that conflict with UEFI 2.0 Specification.\r
-//\r
-// This library is helpful to port Framework/Tinao code that has conflicts with UEFI 2.0.\r
-// It hides the old conflicts with library functions and supporting implementations of\r
-// the old (EDK/EFI 1.10) and new (EDK II/UEFI 2.0) way.\r
-//\r
-// Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>\r
-//\r
-// SPDX-License-Identifier: BSD-2-Clause-Patent\r
-//\r
-// **/\r
-\r
-\r
-#string STR_MODULE_ABSTRACT             #language en-US "Library to abstract Framework extensions that conflict with the UEFI 2.0 Specification"\r
-\r
-#string STR_MODULE_DESCRIPTION          #language en-US "This library is helpful to port Framework/Tiano code that has conflicts with UEFI 2.0. It hides the old conflicts with library functions and supporting implementations of the old (EDK/EFI 1.10) and new (EDK II/UEFI 2.0) methods."\r
-\r
diff --git a/IntelFrameworkPkg/Library/FrameworkUefiLib/UefiDriverModel.c b/IntelFrameworkPkg/Library/FrameworkUefiLib/UefiDriverModel.c
deleted file mode 100644 (file)
index 643fb11..0000000
+++ /dev/null
@@ -1,1050 +0,0 @@
-/** @file\r
-  Library functions that abstract driver model protocols\r
-  installation.\r
-\r
-  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
-  SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-**/\r
-\r
-\r
-#include "UefiLibInternal.h"\r
-\r
-/**\r
-  Installs and completes the initialization of a Driver Binding Protocol instance.\r
-\r
-  Installs the Driver Binding Protocol specified by DriverBinding onto the handle\r
-  specified by DriverBindingHandle. If DriverBindingHandle is NULL, then DriverBinding\r
-  is installed onto a newly created handle. DriverBindingHandle is typically the same\r
-  as the driver's ImageHandle, but it can be different if the driver produces multiple\r
-  Driver Binding Protocols.\r
-  If DriverBinding is NULL, then ASSERT().\r
-  If DriverBinding can not be installed onto a handle, then ASSERT().\r
-\r
-  @param  ImageHandle          The image handle of the driver.\r
-  @param  SystemTable          The EFI System Table that was passed to the driver's entry point.\r
-  @param  DriverBinding        A Driver Binding Protocol instance that this driver is producing.\r
-  @param  DriverBindingHandle  The handle that DriverBinding is to be installed onto.  If this\r
-                               parameter is NULL, then a new handle is created.\r
-\r
-  @retval EFI_SUCCESS           The protocol installation is completed successfully.\r
-  @retval EFI_OUT_OF_RESOURCES  There was not enough system resources to install the protocol.\r
-  @retval Others                Status from gBS->InstallMultipleProtocolInterfaces().\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-EfiLibInstallDriverBinding (\r
-  IN CONST EFI_HANDLE               ImageHandle,\r
-  IN CONST EFI_SYSTEM_TABLE         *SystemTable,\r
-  IN EFI_DRIVER_BINDING_PROTOCOL    *DriverBinding,\r
-  IN EFI_HANDLE                     DriverBindingHandle\r
-  )\r
-{\r
-  EFI_STATUS                        Status;\r
-\r
-  ASSERT (DriverBinding != NULL);\r
-\r
-  //\r
-  // Update the ImageHandle and DriverBindingHandle fields of the Driver Binding Protocol\r
-  //\r
-  DriverBinding->ImageHandle         = ImageHandle;\r
-  DriverBinding->DriverBindingHandle = DriverBindingHandle;\r
-\r
-  Status = gBS->InstallMultipleProtocolInterfaces (\r
-                  &DriverBinding->DriverBindingHandle,\r
-                  &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                  NULL\r
-                  );\r
-  //\r
-  // ASSERT if the call to InstallMultipleProtocolInterfaces() failed\r
-  //\r
-  ASSERT_EFI_ERROR (Status);\r
-\r
-  return Status;\r
-}\r
-\r
-\r
-/**\r
-  Installs and completes the initialization of a Driver Binding Protocol instance and\r
-  optionally installs the Component Name, Driver Configuration and Driver Diagnostics Protocols.\r
-\r
-  Initializes a driver by installing the Driver Binding Protocol together with the\r
-  optional Component Name, optional Driver Configure and optional Driver Diagnostic\r
-  Protocols onto the driver's DriverBindingHandle. If DriverBindingHandle is NULL,\r
-  then the protocols are  installed onto a newly created handle. DriverBindingHandle\r
-  is typically the same as the driver's ImageHandle, but it can be different if the\r
-  driver produces multiple Driver Binding Protocols.\r
-  If DriverBinding is NULL, then ASSERT().\r
-  If the installation fails, then ASSERT().\r
-\r
-  @param  ImageHandle          The image handle of the driver.\r
-  @param  SystemTable          The EFI System Table that was passed to the driver's entry point.\r
-  @param  DriverBinding        A Driver Binding Protocol instance that this driver is producing.\r
-  @param  DriverBindingHandle  The handle that DriverBinding is to be installed onto.  If this\r
-                               parameter is NULL, then a new handle is created.\r
-  @param  ComponentName        A Component Name Protocol instance that this driver is producing.\r
-  @param  DriverConfiguration  A Driver Configuration Protocol instance that this driver is producing.\r
-  @param  DriverDiagnostics    A Driver Diagnostics Protocol instance that this driver is producing.\r
-\r
-  @retval EFI_SUCCESS           The protocol installation is completed successfully.\r
-  @retval EFI_OUT_OF_RESOURCES  There was not enough memory in pool to install all the protocols.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-EfiLibInstallAllDriverProtocols (\r
-  IN CONST EFI_HANDLE                         ImageHandle,\r
-  IN CONST EFI_SYSTEM_TABLE                   *SystemTable,\r
-  IN EFI_DRIVER_BINDING_PROTOCOL              *DriverBinding,\r
-  IN EFI_HANDLE                               DriverBindingHandle,\r
-  IN CONST EFI_COMPONENT_NAME_PROTOCOL        *ComponentName,       OPTIONAL\r
-  IN CONST EFI_DRIVER_CONFIGURATION_PROTOCOL  *DriverConfiguration, OPTIONAL\r
-  IN CONST EFI_DRIVER_DIAGNOSTICS_PROTOCOL    *DriverDiagnostics    OPTIONAL\r
-  )\r
-{\r
-  EFI_STATUS                                  Status;\r
-\r
-  ASSERT (DriverBinding != NULL);\r
-\r
-  //\r
-  // Update the ImageHandle and DriverBindingHandle fields of the Driver Binding Protocol\r
-  //\r
-  DriverBinding->ImageHandle         = ImageHandle;\r
-  DriverBinding->DriverBindingHandle = DriverBindingHandle;\r
-\r
-  if (DriverDiagnostics == NULL || FeaturePcdGet(PcdDriverDiagnosticsDisable)) {\r
-    if (DriverConfiguration == NULL) {\r
-      if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
-        Status = gBS->InstallMultipleProtocolInterfaces (\r
-                        &DriverBinding->DriverBindingHandle,\r
-                        &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                        NULL\r
-                        );\r
-      } else {\r
-        Status = gBS->InstallMultipleProtocolInterfaces (\r
-                        &DriverBinding->DriverBindingHandle,\r
-                        &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                        &gEfiComponentNameProtocolGuid, ComponentName,\r
-                        NULL\r
-                        );\r
-      }\r
-    } else {\r
-      if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
-        Status = gBS->InstallMultipleProtocolInterfaces (\r
-                        &DriverBinding->DriverBindingHandle,\r
-                        &gEfiDriverBindingProtocolGuid,       DriverBinding,\r
-                        &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                        NULL\r
-                        );\r
-      } else {\r
-        Status = gBS->InstallMultipleProtocolInterfaces (\r
-                        &DriverBinding->DriverBindingHandle,\r
-                        &gEfiDriverBindingProtocolGuid,       DriverBinding,\r
-                        &gEfiComponentNameProtocolGuid,       ComponentName,\r
-                        &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                        NULL\r
-                        );\r
-      }\r
-    }\r
-  } else {\r
-    if (DriverConfiguration == NULL) {\r
-      if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
-        Status = gBS->InstallMultipleProtocolInterfaces (\r
-                        &DriverBinding->DriverBindingHandle,\r
-                        &gEfiDriverBindingProtocolGuid,     DriverBinding,\r
-                        &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                        NULL\r
-                        );\r
-      } else {\r
-        Status = gBS->InstallMultipleProtocolInterfaces (\r
-                        &DriverBinding->DriverBindingHandle,\r
-                        &gEfiDriverBindingProtocolGuid,     DriverBinding,\r
-                        &gEfiComponentNameProtocolGuid,     ComponentName,\r
-                        &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                        NULL\r
-                        );\r
-      }\r
-    } else {\r
-      if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
-       Status = gBS->InstallMultipleProtocolInterfaces (\r
-                        &DriverBinding->DriverBindingHandle,\r
-                        &gEfiDriverBindingProtocolGuid,       DriverBinding,\r
-                        &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                        &gEfiDriverDiagnosticsProtocolGuid,   DriverDiagnostics,\r
-                        NULL\r
-                        );\r
-      } else {\r
-        Status = gBS->InstallMultipleProtocolInterfaces (\r
-                        &DriverBinding->DriverBindingHandle,\r
-                        &gEfiDriverBindingProtocolGuid,       DriverBinding,\r
-                        &gEfiComponentNameProtocolGuid,       ComponentName,\r
-                        &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                        &gEfiDriverDiagnosticsProtocolGuid,   DriverDiagnostics,\r
-                        NULL\r
-                        );\r
-      }\r
-    }\r
-  }\r
-\r
-  //\r
-  // ASSERT if the call to InstallMultipleProtocolInterfaces() failed\r
-  //\r
-  ASSERT_EFI_ERROR (Status);\r
-\r
-  return Status;\r
-}\r
-\r
-\r
-\r
-/**\r
-  Installs Driver Binding Protocol with optional Component Name and Component Name 2 Protocols.\r
-\r
-  Initializes a driver by installing the Driver Binding Protocol together with the\r
-  optional Component Name and optional Component Name 2 protocols onto the driver's\r
-  DriverBindingHandle.  If DriverBindingHandle is NULL, then the protocols are installed\r
-  onto a newly created handle.  DriverBindingHandle is typically the same as the driver's\r
-  ImageHandle, but it can be different if the driver produces multiple Driver Binding Protocols.\r
-  If DriverBinding is NULL, then ASSERT().\r
-  If the installation fails, then ASSERT().\r
-\r
-  @param  ImageHandle          The image handle of the driver.\r
-  @param  SystemTable          The EFI System Table that was passed to the driver's entry point.\r
-  @param  DriverBinding        A Driver Binding Protocol instance that this driver is producing.\r
-  @param  DriverBindingHandle  The handle that DriverBinding is to be installed onto.  If this\r
-                               parameter is NULL, then a new handle is created.\r
-  @param  ComponentName        A Component Name Protocol instance that this driver is producing.\r
-  @param  ComponentName2       A Component Name 2 Protocol instance that this driver is producing.\r
-\r
-  @retval EFI_SUCCESS           The protocol installation is completed successfully.\r
-  @retval EFI_OUT_OF_RESOURCES  There was not enough memory in pool to install all the protocols.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-EfiLibInstallDriverBindingComponentName2 (\r
-  IN CONST EFI_HANDLE                    ImageHandle,\r
-  IN CONST EFI_SYSTEM_TABLE              *SystemTable,\r
-  IN EFI_DRIVER_BINDING_PROTOCOL         *DriverBinding,\r
-  IN EFI_HANDLE                          DriverBindingHandle,\r
-  IN CONST EFI_COMPONENT_NAME_PROTOCOL   *ComponentName,  OPTIONAL\r
-  IN CONST EFI_COMPONENT_NAME2_PROTOCOL  *ComponentName2  OPTIONAL\r
-  )\r
-{\r
-  EFI_STATUS                             Status;\r
-\r
-  ASSERT (DriverBinding != NULL);\r
-\r
-  //\r
-  // Update the ImageHandle and DriverBindingHandle fields of the Driver Binding Protocol\r
-  //\r
-  DriverBinding->ImageHandle         = ImageHandle;\r
-  DriverBinding->DriverBindingHandle = DriverBindingHandle;\r
-\r
-  if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
-    if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-      Status = gBS->InstallMultipleProtocolInterfaces (\r
-                      &DriverBinding->DriverBindingHandle,\r
-                      &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                      NULL\r
-                      );\r
-      } else {\r
-      Status = gBS->InstallMultipleProtocolInterfaces (\r
-                      &DriverBinding->DriverBindingHandle,\r
-                      &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                      &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                      NULL\r
-                      );\r
-     }\r
-  } else {\r
-     if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-       Status = gBS->InstallMultipleProtocolInterfaces (\r
-                       &DriverBinding->DriverBindingHandle,\r
-                       &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                       &gEfiComponentNameProtocolGuid, ComponentName,\r
-                       NULL\r
-                       );\r
-     } else {\r
-       Status = gBS->InstallMultipleProtocolInterfaces (\r
-                       &DriverBinding->DriverBindingHandle,\r
-                       &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                       &gEfiComponentNameProtocolGuid, ComponentName,\r
-                       &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                       NULL\r
-                       );\r
-    }\r
-  }\r
-\r
-  //\r
-  // ASSERT if the call to InstallMultipleProtocolInterfaces() failed\r
-  //\r
-  ASSERT_EFI_ERROR (Status);\r
-\r
-  return Status;\r
-}\r
-\r
-\r
-\r
-/**\r
-  Installs Driver Binding Protocol with optional Component Name, Component Name 2, Driver\r
-  Configuration, Driver Configuration 2, Driver Diagnostics, and Driver Diagnostics 2 Protocols.\r
-\r
-  Initializes a driver by installing the Driver Binding Protocol together with the optional\r
-  Component Name, optional Component Name 2, optional Driver Configuration, optional Driver Configuration 2,\r
-  optional Driver Diagnostic, and optional Driver Diagnostic 2 Protocols onto the driver's DriverBindingHandle.\r
-  DriverBindingHandle is typically the same as the driver's ImageHandle, but it can be different if the driver\r
-  produces multiple Driver Binding Protocols.\r
-  If DriverBinding is NULL, then ASSERT().\r
-  If the installation fails, then ASSERT().\r
-\r
-\r
-  @param  ImageHandle           The image handle of the driver.\r
-  @param  SystemTable           The EFI System Table that was passed to the driver's entry point.\r
-  @param  DriverBinding         A Driver Binding Protocol instance that this driver is producing.\r
-  @param  DriverBindingHandle   The handle that DriverBinding is to be installed onto.  If this\r
-                                parameter is NULL, then a new handle is created.\r
-  @param  ComponentName         A Component Name Protocol instance that this driver is producing.\r
-  @param  ComponentName2        A Component Name 2 Protocol instance that this driver is producing.\r
-  @param  DriverConfiguration   A Driver Configuration Protocol instance that this driver is producing.\r
-  @param  DriverConfiguration2  A Driver Configuration Protocol 2 instance that this driver is producing.\r
-  @param  DriverDiagnostics     A Driver Diagnostics Protocol instance that this driver is producing.\r
-  @param  DriverDiagnostics2    A Driver Diagnostics Protocol 2 instance that this driver is producing.\r
-\r
-  @retval EFI_SUCCESS           The protocol installation is completed successfully.\r
-  @retval EFI_OUT_OF_RESOURCES  There was not enough memory in pool to install all the protocols.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-EfiLibInstallAllDriverProtocols2 (\r
-  IN CONST EFI_HANDLE                         ImageHandle,\r
-  IN CONST EFI_SYSTEM_TABLE                   *SystemTable,\r
-  IN EFI_DRIVER_BINDING_PROTOCOL              *DriverBinding,\r
-  IN EFI_HANDLE                               DriverBindingHandle,\r
-  IN CONST EFI_COMPONENT_NAME_PROTOCOL        *ComponentName,        OPTIONAL\r
-  IN CONST EFI_COMPONENT_NAME2_PROTOCOL       *ComponentName2,       OPTIONAL\r
-  IN CONST EFI_DRIVER_CONFIGURATION_PROTOCOL  *DriverConfiguration,  OPTIONAL\r
-  IN CONST EFI_DRIVER_CONFIGURATION2_PROTOCOL *DriverConfiguration2, OPTIONAL\r
-  IN CONST EFI_DRIVER_DIAGNOSTICS_PROTOCOL    *DriverDiagnostics,    OPTIONAL\r
-  IN CONST EFI_DRIVER_DIAGNOSTICS2_PROTOCOL   *DriverDiagnostics2    OPTIONAL\r
-  )\r
-{\r
-  EFI_STATUS  Status;\r
-\r
-  ASSERT (DriverBinding != NULL);\r
-\r
-  //\r
-  // Update the ImageHandle and DriverBindingHandle fields of the Driver Binding Protocol\r
-  //\r
-  DriverBinding->ImageHandle         = ImageHandle;\r
-  DriverBinding->DriverBindingHandle = DriverBindingHandle;\r
-\r
-  if (DriverConfiguration2 == NULL) {\r
-    if (DriverConfiguration == NULL) {\r
-      if (DriverDiagnostics == NULL || FeaturePcdGet(PcdDriverDiagnosticsDisable)) {\r
-        if (DriverDiagnostics2 == NULL || FeaturePcdGet(PcdDriverDiagnostics2Disable)) {\r
-          if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
-            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              NULL\r
-                              );\r
-            } else {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                              NULL\r
-                              );\r
-            }\r
-          } else {\r
-            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentNameProtocolGuid, ComponentName,\r
-                              NULL\r
-                              );\r
-            } else {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentNameProtocolGuid, ComponentName,\r
-                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                              NULL\r
-                              );\r
-            }\r
-          }\r
-        } else {\r
-          if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
-            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                              NULL\r
-                              );\r
-            } else {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                              NULL\r
-                              );\r
-            }\r
-          } else {\r
-            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentNameProtocolGuid, ComponentName,\r
-                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                              NULL\r
-                              );\r
-            } else {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentNameProtocolGuid, ComponentName,\r
-                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                              NULL\r
-                              );\r
-            }\r
-          }\r
-        }\r
-      } else {\r
-        if (DriverDiagnostics2 == NULL || FeaturePcdGet(PcdDriverDiagnostics2Disable)) {\r
-          if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
-            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                              NULL\r
-                              );\r
-            } else {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                              NULL\r
-                              );\r
-            }\r
-          } else {\r
-            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentNameProtocolGuid, ComponentName,\r
-                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                              NULL\r
-                              );\r
-            } else {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentNameProtocolGuid, ComponentName,\r
-                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                              NULL\r
-                              );\r
-            }\r
-          }\r
-        } else {\r
-          if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
-            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                              NULL\r
-                              );\r
-            } else {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                              NULL\r
-                              );\r
-            }\r
-          } else {\r
-            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentNameProtocolGuid, ComponentName,\r
-                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                              NULL\r
-                              );\r
-            } else {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentNameProtocolGuid, ComponentName,\r
-                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                              NULL\r
-                              );\r
-            }\r
-          }\r
-        }\r
-      }\r
-    } else {\r
-      if (DriverDiagnostics == NULL || FeaturePcdGet(PcdDriverDiagnosticsDisable)) {\r
-        if (DriverDiagnostics2 == NULL || FeaturePcdGet(PcdDriverDiagnostics2Disable)) {\r
-          if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
-            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                              NULL\r
-                              );\r
-            } else {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                              NULL\r
-                              );\r
-            }\r
-          } else {\r
-            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentNameProtocolGuid, ComponentName,\r
-                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                              NULL\r
-                              );\r
-            } else {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentNameProtocolGuid, ComponentName,\r
-                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                              NULL\r
-                              );\r
-            }\r
-          }\r
-        } else {\r
-          if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
-            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                              NULL\r
-                              );\r
-            } else {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                              NULL\r
-                              );\r
-            }\r
-          } else {\r
-            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentNameProtocolGuid, ComponentName,\r
-                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                              NULL\r
-                              );\r
-            } else {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentNameProtocolGuid, ComponentName,\r
-                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                              NULL\r
-                              );\r
-            }\r
-          }\r
-        }\r
-      } else {\r
-        if (DriverDiagnostics2 == NULL || FeaturePcdGet(PcdDriverDiagnostics2Disable)) {\r
-          if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
-            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                              NULL\r
-                              );\r
-            } else {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                              NULL\r
-                              );\r
-            }\r
-          } else {\r
-            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentNameProtocolGuid, ComponentName,\r
-                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                              NULL\r
-                              );\r
-            } else {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentNameProtocolGuid, ComponentName,\r
-                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                              NULL\r
-                              );\r
-            }\r
-          }\r
-        } else {\r
-          if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
-            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                              NULL\r
-                              );\r
-            } else {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                              NULL\r
-                              );\r
-            }\r
-          } else {\r
-            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentNameProtocolGuid, ComponentName,\r
-                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                              NULL\r
-                              );\r
-            } else {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentNameProtocolGuid, ComponentName,\r
-                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                              NULL\r
-                              );\r
-            }\r
-          }\r
-        }\r
-      }\r
-    }\r
-  } else {\r
-    if (DriverConfiguration == NULL) {\r
-      if (DriverDiagnostics == NULL || FeaturePcdGet(PcdDriverDiagnosticsDisable)) {\r
-        if (DriverDiagnostics2 == NULL || FeaturePcdGet(PcdDriverDiagnostics2Disable)) {\r
-          if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
-            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
-                              NULL\r
-                              );\r
-            } else {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
-                              NULL\r
-                              );\r
-            }\r
-          } else {\r
-            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentNameProtocolGuid, ComponentName,\r
-                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
-                              NULL\r
-                              );\r
-            } else {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentNameProtocolGuid, ComponentName,\r
-                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
-                              NULL\r
-                              );\r
-            }\r
-          }\r
-        } else {\r
-          if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
-            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
-                              NULL\r
-                              );\r
-            } else {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
-                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                              NULL\r
-                              );\r
-            }\r
-          } else {\r
-            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentNameProtocolGuid, ComponentName,\r
-                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
-                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                              NULL\r
-                              );\r
-            } else {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentNameProtocolGuid, ComponentName,\r
-                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
-                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                              NULL\r
-                              );\r
-            }\r
-          }\r
-        }\r
-      } else {\r
-        if (DriverDiagnostics2 == NULL || FeaturePcdGet(PcdDriverDiagnostics2Disable)) {\r
-          if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
-            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
-                              NULL\r
-                              );\r
-            } else {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
-                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                              NULL\r
-                              );\r
-            }\r
-          } else {\r
-            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentNameProtocolGuid, ComponentName,\r
-                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
-                              NULL\r
-                              );\r
-            } else {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentNameProtocolGuid, ComponentName,\r
-                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
-                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                              NULL\r
-                              );\r
-            }\r
-          }\r
-        } else {\r
-          if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
-            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
-                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                              NULL\r
-                              );\r
-            } else {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
-                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                              NULL\r
-                              );\r
-            }\r
-          } else {\r
-            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentNameProtocolGuid, ComponentName,\r
-                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
-                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                              NULL\r
-                              );\r
-            } else {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentNameProtocolGuid, ComponentName,\r
-                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
-                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                              NULL\r
-                              );\r
-            }\r
-          }\r
-        }\r
-      }\r
-    } else {\r
-      if (DriverDiagnostics == NULL || FeaturePcdGet(PcdDriverDiagnosticsDisable)) {\r
-        if (DriverDiagnostics2 == NULL || FeaturePcdGet(PcdDriverDiagnostics2Disable)) {\r
-          if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
-            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
-                              NULL\r
-                              );\r
-            } else {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
-                              NULL\r
-                              );\r
-            }\r
-          } else {\r
-            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentNameProtocolGuid, ComponentName,\r
-                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
-                              NULL\r
-                              );\r
-            } else {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentNameProtocolGuid, ComponentName,\r
-                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
-                              NULL\r
-                              );\r
-            }\r
-          }\r
-        } else {\r
-          if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
-            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
-                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                              NULL\r
-                              );\r
-            } else {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
-                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                              NULL\r
-                              );\r
-            }\r
-          } else {\r
-            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentNameProtocolGuid, ComponentName,\r
-                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
-                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                              NULL\r
-                              );\r
-            } else {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentNameProtocolGuid, ComponentName,\r
-                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
-                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                              NULL\r
-                              );\r
-            }\r
-          }\r
-        }\r
-      } else {\r
-        if (DriverDiagnostics2 == NULL || FeaturePcdGet(PcdDriverDiagnostics2Disable)) {\r
-          if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
-            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
-                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                              NULL\r
-                              );\r
-            } else {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
-                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                              NULL\r
-                              );\r
-            }\r
-          } else {\r
-            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentNameProtocolGuid, ComponentName,\r
-                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
-                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                              NULL\r
-                              );\r
-            } else {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentNameProtocolGuid, ComponentName,\r
-                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
-                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                              NULL\r
-                              );\r
-            }\r
-          }\r
-        } else {\r
-          if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
-            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
-                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                              NULL\r
-                              );\r
-            } else {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
-                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                              NULL\r
-                              );\r
-            }\r
-          } else {\r
-            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentNameProtocolGuid, ComponentName,\r
-                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
-                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                              NULL\r
-                              );\r
-            } else {\r
-              Status = gBS->InstallMultipleProtocolInterfaces (\r
-                              &DriverBinding->DriverBindingHandle,\r
-                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                              &gEfiComponentNameProtocolGuid, ComponentName,\r
-                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
-                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                              NULL\r
-                              );\r
-            }\r
-          }\r
-        }\r
-      }\r
-    }\r
-  }\r
-\r
-  //\r
-  // ASSERT if the call to InstallMultipleProtocolInterfaces() failed\r
-  //\r
-  ASSERT_EFI_ERROR (Status);\r
-\r
-  return Status;\r
-}\r
diff --git a/IntelFrameworkPkg/Library/FrameworkUefiLib/UefiLib.c b/IntelFrameworkPkg/Library/FrameworkUefiLib/UefiLib.c
deleted file mode 100644 (file)
index 9dc7735..0000000
+++ /dev/null
@@ -1,1886 +0,0 @@
-/** @file\r
-  The UEFI Library provides functions and macros that simplify the development of\r
-  UEFI Drivers and UEFI Applications.  These functions and macros help manage EFI\r
-  events, build simple locks utilizing EFI Task Priority Levels (TPLs), install\r
-  EFI Driver Model related protocols, manage Unicode string tables for UEFI Drivers,\r
-  and print messages on the console output and standard error devices.\r
-\r
-  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
-  SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-**/\r
-\r
-\r
-#include "UefiLibInternal.h"\r
-\r
-/**\r
-  Compare whether two names of languages are identical.\r
-\r
-  @param  Language1 Name of language 1.\r
-  @param  Language2 Name of language 2.\r
-\r
-  @retval TRUE      Language 1 and language 2 are the same.\r
-  @retval FALSE     Language 1 and language 2 are not the same.\r
-\r
-**/\r
-BOOLEAN\r
-CompareIso639LanguageCode (\r
-  IN CONST CHAR8  *Language1,\r
-  IN CONST CHAR8  *Language2\r
-  )\r
-{\r
-  UINT32  Name1;\r
-  UINT32  Name2;\r
-\r
-  Name1 = ReadUnaligned24 ((CONST UINT32 *) Language1);\r
-  Name2 = ReadUnaligned24 ((CONST UINT32 *) Language2);\r
-\r
-  return (BOOLEAN) (Name1 == Name2);\r
-}\r
-\r
-/**\r
-  Retrieves a pointer to the system configuration table from the EFI System Table\r
-  based on a specified GUID.\r
-\r
-  This function searches the list of configuration tables stored in the EFI System Table\r
-  for a table with a GUID that matches TableGuid.  If a match is found, then a pointer to\r
-  the configuration table is returned in Table., and EFI_SUCCESS is returned. If a matching GUID\r
-  is not found, then EFI_NOT_FOUND is returned.\r
-  If TableGuid is NULL, then ASSERT().\r
-  If Table is NULL, then ASSERT().\r
-\r
-  @param  TableGuid       Pointer to table's GUID type..\r
-  @param  Table           Pointer to the table associated with TableGuid in the EFI System Table.\r
-\r
-  @retval EFI_SUCCESS     A configuration table matching TableGuid was found.\r
-  @retval EFI_NOT_FOUND   A configuration table matching TableGuid could not be found.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-EfiGetSystemConfigurationTable (\r
-  IN  EFI_GUID  *TableGuid,\r
-  OUT VOID      **Table\r
-  )\r
-{\r
-  EFI_SYSTEM_TABLE  *SystemTable;\r
-  UINTN             Index;\r
-\r
-  ASSERT (TableGuid != NULL);\r
-  ASSERT (Table != NULL);\r
-\r
-  SystemTable = gST;\r
-  *Table = NULL;\r
-  for (Index = 0; Index < SystemTable->NumberOfTableEntries; Index++) {\r
-    if (CompareGuid (TableGuid, &(SystemTable->ConfigurationTable[Index].VendorGuid))) {\r
-      *Table = SystemTable->ConfigurationTable[Index].VendorTable;\r
-      return EFI_SUCCESS;\r
-    }\r
-  }\r
-\r
-  return EFI_NOT_FOUND;\r
-}\r
-\r
-/**\r
-  Creates and returns a notification event and registers that event with all the protocol\r
-  instances specified by ProtocolGuid.\r
-\r
-  This function causes the notification function to be executed for every protocol of type\r
-  ProtocolGuid instance that exists in the system when this function is invoked. If there are\r
-  no instances of ProtocolGuid in the handle database at the time this function is invoked,\r
-  then the notification function is still executed one time. In addition, every time a protocol\r
-  of type ProtocolGuid instance is installed or reinstalled, the notification function is also\r
-  executed. This function returns the notification event that was created.\r
-  If ProtocolGuid is NULL, then ASSERT().\r
-  If NotifyTpl is not a legal TPL value, then ASSERT().\r
-  If NotifyFunction is NULL, then ASSERT().\r
-  If Registration is NULL, then ASSERT().\r
-\r
-\r
-  @param  ProtocolGuid    Supplies GUID of the protocol upon whose installation the event is fired.\r
-  @param  NotifyTpl       Supplies the task priority level of the event notifications.\r
-  @param  NotifyFunction  Supplies the function to notify when the event is signaled.\r
-  @param  NotifyContext   The context parameter to pass to NotifyFunction.\r
-  @param  Registration    A pointer to a memory location to receive the registration value.\r
-                          This value is passed to LocateHandle() to obtain new handles that\r
-                          have been added that support the ProtocolGuid-specified protocol.\r
-\r
-  @return The notification event that was created.\r
-\r
-**/\r
-EFI_EVENT\r
-EFIAPI\r
-EfiCreateProtocolNotifyEvent(\r
-  IN  EFI_GUID          *ProtocolGuid,\r
-  IN  EFI_TPL           NotifyTpl,\r
-  IN  EFI_EVENT_NOTIFY  NotifyFunction,\r
-  IN  VOID              *NotifyContext,  OPTIONAL\r
-  OUT VOID              **Registration\r
-  )\r
-{\r
-  EFI_STATUS  Status;\r
-  EFI_EVENT   Event;\r
-\r
-  ASSERT (ProtocolGuid != NULL);\r
-  ASSERT (NotifyFunction != NULL);\r
-  ASSERT (Registration != NULL);\r
-\r
-  //\r
-  // Create the event\r
-  //\r
-\r
-  Status = gBS->CreateEvent (\r
-                  EVT_NOTIFY_SIGNAL,\r
-                  NotifyTpl,\r
-                  NotifyFunction,\r
-                  NotifyContext,\r
-                  &Event\r
-                  );\r
-  ASSERT_EFI_ERROR (Status);\r
-\r
-  //\r
-  // Register for protocol notifications on this event\r
-  //\r
-\r
-  Status = gBS->RegisterProtocolNotify (\r
-                  ProtocolGuid,\r
-                  Event,\r
-                  Registration\r
-                  );\r
-\r
-  ASSERT_EFI_ERROR (Status);\r
-\r
-  //\r
-  // Kick the event so we will perform an initial pass of\r
-  // current installed drivers\r
-  //\r
-\r
-  gBS->SignalEvent (Event);\r
-  return Event;\r
-}\r
-\r
-/**\r
-  Creates a named event that can be signaled with EfiNamedEventSignal().\r
-\r
-  This function creates an event using NotifyTpl, NoifyFunction, and NotifyContext.\r
-  This event is signaled with EfiNamedEventSignal(). This provides the ability for one or more\r
-  listeners on the same event named by the GUID specified by Name.\r
-  If Name is NULL, then ASSERT().\r
-  If NotifyTpl is not a legal TPL value, then ASSERT().\r
-  If NotifyFunction is NULL, then ASSERT().\r
-\r
-  @param  Name                  Supplies GUID name of the event.\r
-  @param  NotifyTpl             Supplies the task priority level of the event notifications.\r
-  @param  NotifyFunction        Supplies the function to notify when the event is signaled.\r
-  @param  NotifyContext         The context parameter to pass to NotifyFunction.\r
-  @param  Registration          A pointer to a memory location to receive the registration value.\r
-\r
-  @retval EFI_SUCCESS           A named event was created.\r
-  @retval EFI_OUT_OF_RESOURCES  There are not enough resource to create the named event.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-EfiNamedEventListen (\r
-  IN CONST EFI_GUID    *Name,\r
-  IN EFI_TPL           NotifyTpl,\r
-  IN EFI_EVENT_NOTIFY  NotifyFunction,\r
-  IN CONST VOID        *NotifyContext,  OPTIONAL\r
-  OUT VOID             *Registration OPTIONAL\r
-  )\r
-{\r
-  EFI_STATUS  Status;\r
-  EFI_EVENT   Event;\r
-  VOID        *RegistrationLocal;\r
-\r
-  ASSERT (Name != NULL);\r
-  ASSERT (NotifyFunction != NULL);\r
-  ASSERT (NotifyTpl <= TPL_HIGH_LEVEL);\r
-\r
-  //\r
-  // Create event\r
-  //\r
-  Status = gBS->CreateEvent (\r
-                  EVT_NOTIFY_SIGNAL,\r
-                  NotifyTpl,\r
-                  NotifyFunction,\r
-                  (VOID *) NotifyContext,\r
-                  &Event\r
-                  );\r
-  ASSERT_EFI_ERROR (Status);\r
-\r
-  //\r
-  // The Registration is not optional to RegisterProtocolNotify().\r
-  // To make it optional to EfiNamedEventListen(), may need to substitute with a local.\r
-  //\r
-  if (Registration != NULL) {\r
-    RegistrationLocal = Registration;\r
-  } else {\r
-    RegistrationLocal = &RegistrationLocal;\r
-  }\r
-\r
-  //\r
-  // Register for an installation of protocol interface\r
-  //\r
-\r
-  Status = gBS->RegisterProtocolNotify (\r
-                  (EFI_GUID *) Name,\r
-                  Event,\r
-                  RegistrationLocal\r
-                  );\r
-  ASSERT_EFI_ERROR (Status);\r
-\r
-  return Status;\r
-}\r
-\r
-/**\r
-  Signals a named event created with EfiNamedEventListen().\r
-\r
-  This function signals the named event specified by Name. The named event must have been\r
-  created with EfiNamedEventListen().\r
-  If Name is NULL, then ASSERT().\r
-\r
-  @param  Name                  Supplies GUID name of the event.\r
-\r
-  @retval EFI_SUCCESS           A named event was signaled.\r
-  @retval EFI_OUT_OF_RESOURCES  There are not enough resource to signal the named event.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-EfiNamedEventSignal (\r
-  IN CONST EFI_GUID  *Name\r
-  )\r
-{\r
-  EFI_STATUS  Status;\r
-  EFI_HANDLE  Handle;\r
-\r
-  ASSERT(Name != NULL);\r
-\r
-  Handle = NULL;\r
-  Status = gBS->InstallProtocolInterface (\r
-                  &Handle,\r
-                  (EFI_GUID *) Name,\r
-                  EFI_NATIVE_INTERFACE,\r
-                  NULL\r
-                  );\r
-  ASSERT_EFI_ERROR (Status);\r
-\r
-  Status = gBS->UninstallProtocolInterface (\r
-                  Handle,\r
-                  (EFI_GUID *) Name,\r
-                  NULL\r
-                  );\r
-  ASSERT_EFI_ERROR (Status);\r
-\r
-  return Status;\r
-}\r
-\r
-/**\r
-  Signals an event group by placing a new event in the group temporarily and\r
-  signaling it.\r
-\r
-  @param[in] EventGroup          Supplies the unique identifier of the event\r
-                                 group to signal.\r
-\r
-  @retval EFI_SUCCESS            The event group was signaled successfully.\r
-  @retval EFI_INVALID_PARAMETER  EventGroup is NULL.\r
-  @return                        Error codes that report problems about event\r
-                                 creation or signaling.\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-EfiEventGroupSignal (\r
-  IN CONST EFI_GUID *EventGroup\r
-  )\r
-{\r
-  EFI_STATUS Status;\r
-  EFI_EVENT  Event;\r
-\r
-  if (EventGroup == NULL) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  Status = gBS->CreateEventEx (\r
-                  EVT_NOTIFY_SIGNAL,\r
-                  TPL_CALLBACK,\r
-                  EfiEventEmptyFunction,\r
-                  NULL,\r
-                  EventGroup,\r
-                  &Event\r
-                  );\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  Status = gBS->SignalEvent (Event);\r
-  gBS->CloseEvent (Event);\r
-\r
-  return Status;\r
-}\r
-\r
-/**\r
-  An empty function that can be used as NotifyFunction parameter of\r
-  CreateEvent() or CreateEventEx().\r
-\r
-  @param Event              Event whose notification function is being invoked.\r
-  @param Context            The pointer to the notification function's context,\r
-                            which is implementation-dependent.\r
-\r
-**/\r
-VOID\r
-EFIAPI\r
-EfiEventEmptyFunction (\r
-  IN EFI_EVENT              Event,\r
-  IN VOID                   *Context\r
-  )\r
-{\r
-}\r
-\r
-/**\r
-  Returns the current TPL.\r
-\r
-  This function returns the current TPL.  There is no EFI service to directly\r
-  retrieve the current TPL. Instead, the RaiseTPL() function is used to raise\r
-  the TPL to TPL_HIGH_LEVEL.  This will return the current TPL.  The TPL level\r
-  can then immediately be restored back to the current TPL level with a call\r
-  to RestoreTPL().\r
-\r
-  @return The current TPL.\r
-\r
-**/\r
-EFI_TPL\r
-EFIAPI\r
-EfiGetCurrentTpl (\r
-  VOID\r
-  )\r
-{\r
-  EFI_TPL Tpl;\r
-\r
-  Tpl = gBS->RaiseTPL (TPL_HIGH_LEVEL);\r
-  gBS->RestoreTPL (Tpl);\r
-\r
-  return Tpl;\r
-}\r
-\r
-\r
-/**\r
-  Initializes a basic mutual exclusion lock.\r
-\r
-  This function initializes a basic mutual exclusion lock to the released state\r
-  and returns the lock.  Each lock provides mutual exclusion access at its task\r
-  priority level.  Since there is no preemption or multiprocessor support in EFI,\r
-  acquiring the lock only consists of raising to the locks TPL.\r
-  If Lock is NULL, then ASSERT().\r
-  If Priority is not a valid TPL value, then ASSERT().\r
-\r
-  @param  Lock       A pointer to the lock data structure to initialize.\r
-  @param  Priority   EFI TPL associated with the lock.\r
-\r
-  @return The lock.\r
-\r
-**/\r
-EFI_LOCK *\r
-EFIAPI\r
-EfiInitializeLock (\r
-  IN OUT EFI_LOCK  *Lock,\r
-  IN EFI_TPL        Priority\r
-  )\r
-{\r
-  ASSERT (Lock != NULL);\r
-  ASSERT (Priority <= TPL_HIGH_LEVEL);\r
-\r
-  Lock->Tpl       = Priority;\r
-  Lock->OwnerTpl  = TPL_APPLICATION;\r
-  Lock->Lock      = EfiLockReleased ;\r
-  return Lock;\r
-}\r
-\r
-/**\r
-  Acquires ownership of a lock.\r
-\r
-  This function raises the system's current task priority level to the task\r
-  priority level of the mutual exclusion lock.  Then, it places the lock in the\r
-  acquired state.\r
-  If Lock is NULL, then ASSERT().\r
-  If Lock is not initialized, then ASSERT().\r
-  If Lock is already in the acquired state, then ASSERT().\r
-\r
-  @param  Lock              A pointer to the lock to acquire.\r
-\r
-**/\r
-VOID\r
-EFIAPI\r
-EfiAcquireLock (\r
-  IN EFI_LOCK  *Lock\r
-  )\r
-{\r
-  ASSERT (Lock != NULL);\r
-  ASSERT (Lock->Lock == EfiLockReleased);\r
-\r
-  Lock->OwnerTpl = gBS->RaiseTPL (Lock->Tpl);\r
-  Lock->Lock     = EfiLockAcquired;\r
-}\r
-\r
-/**\r
-  Acquires ownership of a lock.\r
-\r
-  This function raises the system's current task priority level to the task priority\r
-  level of the mutual exclusion lock.  Then, it attempts to place the lock in the acquired state.\r
-  If the lock is already in the acquired state, then EFI_ACCESS_DENIED is returned.\r
-  Otherwise, EFI_SUCCESS is returned.\r
-  If Lock is NULL, then ASSERT().\r
-  If Lock is not initialized, then ASSERT().\r
-\r
-  @param  Lock              A pointer to the lock to acquire.\r
-\r
-  @retval EFI_SUCCESS       The lock was acquired.\r
-  @retval EFI_ACCESS_DENIED The lock could not be acquired because it is already owned.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-EfiAcquireLockOrFail (\r
-  IN EFI_LOCK  *Lock\r
-  )\r
-{\r
-\r
-  ASSERT (Lock != NULL);\r
-  ASSERT (Lock->Lock != EfiLockUninitialized);\r
-\r
-  if (Lock->Lock == EfiLockAcquired) {\r
-    //\r
-    // Lock is already owned, so bail out\r
-    //\r
-    return EFI_ACCESS_DENIED;\r
-  }\r
-\r
-  Lock->OwnerTpl = gBS->RaiseTPL (Lock->Tpl);\r
-\r
-  Lock->Lock = EfiLockAcquired;\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
-  Releases ownership of a lock.\r
-\r
-  This function transitions a mutual exclusion lock from the acquired state to\r
-  the released state, and restores the system's task priority level to its\r
-  previous level.\r
-  If Lock is NULL, then ASSERT().\r
-  If Lock is not initialized, then ASSERT().\r
-  If Lock is already in the released state, then ASSERT().\r
-\r
-  @param  Lock  A pointer to the lock to release.\r
-\r
-**/\r
-VOID\r
-EFIAPI\r
-EfiReleaseLock (\r
-  IN EFI_LOCK  *Lock\r
-  )\r
-{\r
-  EFI_TPL Tpl;\r
-\r
-  ASSERT (Lock != NULL);\r
-  ASSERT (Lock->Lock == EfiLockAcquired);\r
-\r
-  Tpl = Lock->OwnerTpl;\r
-\r
-  Lock->Lock = EfiLockReleased;\r
-\r
-  gBS->RestoreTPL (Tpl);\r
-}\r
-\r
-/**\r
-  Tests whether a controller handle is being managed by a specific driver.\r
-\r
-  This function tests whether the driver specified by DriverBindingHandle is\r
-  currently managing the controller specified by ControllerHandle.  This test\r
-  is performed by evaluating if the the protocol specified by ProtocolGuid is\r
-  present on ControllerHandle and is was opened by DriverBindingHandle with an\r
-  attribute of EFI_OPEN_PROTOCOL_BY_DRIVER.\r
-  If ProtocolGuid is NULL, then ASSERT().\r
-\r
-  @param  ControllerHandle     A handle for a controller to test.\r
-  @param  DriverBindingHandle  Specifies the driver binding handle for the\r
-                               driver.\r
-  @param  ProtocolGuid         Specifies the protocol that the driver specified\r
-                               by DriverBindingHandle opens in its Start()\r
-                               function.\r
-\r
-  @retval EFI_SUCCESS          ControllerHandle is managed by the driver\r
-                               specified by DriverBindingHandle.\r
-  @retval EFI_UNSUPPORTED      ControllerHandle is not managed by the driver\r
-                               specified by DriverBindingHandle.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-EfiTestManagedDevice (\r
-  IN CONST EFI_HANDLE       ControllerHandle,\r
-  IN CONST EFI_HANDLE       DriverBindingHandle,\r
-  IN CONST EFI_GUID         *ProtocolGuid\r
-  )\r
-{\r
-  EFI_STATUS     Status;\r
-  VOID           *ManagedInterface;\r
-\r
-  ASSERT (ProtocolGuid != NULL);\r
-\r
-  Status = gBS->OpenProtocol (\r
-                  ControllerHandle,\r
-                  (EFI_GUID *) ProtocolGuid,\r
-                  &ManagedInterface,\r
-                  DriverBindingHandle,\r
-                  ControllerHandle,\r
-                  EFI_OPEN_PROTOCOL_BY_DRIVER\r
-                  );\r
-  if (!EFI_ERROR (Status)) {\r
-    gBS->CloseProtocol (\r
-           ControllerHandle,\r
-           (EFI_GUID *) ProtocolGuid,\r
-           DriverBindingHandle,\r
-           ControllerHandle\r
-           );\r
-    return EFI_UNSUPPORTED;\r
-  }\r
-\r
-  if (Status != EFI_ALREADY_STARTED) {\r
-    return EFI_UNSUPPORTED;\r
-  }\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
-  Tests whether a child handle is a child device of the controller.\r
-\r
-  This function tests whether ChildHandle is one of the children of\r
-  ControllerHandle.  This test is performed by checking to see if the protocol\r
-  specified by ProtocolGuid is present on ControllerHandle and opened by\r
-  ChildHandle with an attribute of EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER.\r
-  If ProtocolGuid is NULL, then ASSERT().\r
-\r
-  @param  ControllerHandle     A handle for a (parent) controller to test.\r
-  @param  ChildHandle          A child handle to test.\r
-  @param  ProtocolGuid         Supplies the protocol that the child controller\r
-                               opens on its parent controller.\r
-\r
-  @retval EFI_SUCCESS          ChildHandle is a child of the ControllerHandle.\r
-  @retval EFI_UNSUPPORTED      ChildHandle is not a child of the\r
-                               ControllerHandle.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-EfiTestChildHandle (\r
-  IN CONST EFI_HANDLE       ControllerHandle,\r
-  IN CONST EFI_HANDLE       ChildHandle,\r
-  IN CONST EFI_GUID         *ProtocolGuid\r
-  )\r
-{\r
-  EFI_STATUS                            Status;\r
-  EFI_OPEN_PROTOCOL_INFORMATION_ENTRY   *OpenInfoBuffer;\r
-  UINTN                                 EntryCount;\r
-  UINTN                                 Index;\r
-\r
-  ASSERT (ProtocolGuid != NULL);\r
-\r
-  //\r
-  // Retrieve the list of agents that are consuming the specific protocol\r
-  // on ControllerHandle.\r
-  //\r
-  Status = gBS->OpenProtocolInformation (\r
-                  ControllerHandle,\r
-                  (EFI_GUID *) ProtocolGuid,\r
-                  &OpenInfoBuffer,\r
-                  &EntryCount\r
-                  );\r
-  if (EFI_ERROR (Status)) {\r
-    return EFI_UNSUPPORTED;\r
-  }\r
-\r
-  //\r
-  // Inspect if ChildHandle is one of the agents.\r
-  //\r
-  Status = EFI_UNSUPPORTED;\r
-  for (Index = 0; Index < EntryCount; Index++) {\r
-    if ((OpenInfoBuffer[Index].ControllerHandle == ChildHandle) &&\r
-        (OpenInfoBuffer[Index].Attributes & EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER) != 0) {\r
-      Status = EFI_SUCCESS;\r
-      break;\r
-    }\r
-  }\r
-\r
-  FreePool (OpenInfoBuffer);\r
-  return Status;\r
-}\r
-\r
-/**\r
-  This function looks up a Unicode string in UnicodeStringTable.\r
-\r
-  If Language is a member of SupportedLanguages and a Unicode string is found in\r
-  UnicodeStringTable that matches the language code specified by Language, then it\r
-  is returned in UnicodeString.\r
-\r
-  @param  Language                A pointer to the ISO 639-2 language code for the\r
-                                  Unicode string to look up and return.\r
-  @param  SupportedLanguages      A pointer to the set of ISO 639-2 language codes\r
-                                  that the Unicode string table supports.  Language\r
-                                  must be a member of this set.\r
-  @param  UnicodeStringTable      A pointer to the table of Unicode strings.\r
-  @param  UnicodeString           A pointer to the Unicode string from UnicodeStringTable\r
-                                  that matches the language specified by Language.\r
-\r
-  @retval EFI_SUCCESS             The Unicode string that matches the language\r
-                                  specified by Language was found\r
-                                  in the table of Unicode strings UnicodeStringTable,\r
-                                  and it was returned in UnicodeString.\r
-  @retval EFI_INVALID_PARAMETER   Language is NULL.\r
-  @retval EFI_INVALID_PARAMETER   UnicodeString is NULL.\r
-  @retval EFI_UNSUPPORTED         SupportedLanguages is NULL.\r
-  @retval EFI_UNSUPPORTED         UnicodeStringTable is NULL.\r
-  @retval EFI_UNSUPPORTED         The language specified by Language is not a\r
-                                  member of SupportedLanguages.\r
-  @retval EFI_UNSUPPORTED         The language specified by Language is not\r
-                                  supported by UnicodeStringTable.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-LookupUnicodeString (\r
-  IN CONST CHAR8                     *Language,\r
-  IN CONST CHAR8                     *SupportedLanguages,\r
-  IN CONST EFI_UNICODE_STRING_TABLE  *UnicodeStringTable,\r
-  OUT CHAR16                         **UnicodeString\r
-  )\r
-{\r
-  //\r
-  // Make sure the parameters are valid\r
-  //\r
-  if (Language == NULL || UnicodeString == NULL) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  //\r
-  // If there are no supported languages, or the Unicode String Table is empty, then the\r
-  // Unicode String specified by Language is not supported by this Unicode String Table\r
-  //\r
-  if (SupportedLanguages == NULL || UnicodeStringTable == NULL) {\r
-    return EFI_UNSUPPORTED;\r
-  }\r
-\r
-  //\r
-  // Make sure Language is in the set of Supported Languages\r
-  //\r
-  while (*SupportedLanguages != 0) {\r
-    if (CompareIso639LanguageCode (Language, SupportedLanguages)) {\r
-\r
-      //\r
-      // Search the Unicode String Table for the matching Language specifier\r
-      //\r
-      while (UnicodeStringTable->Language != NULL) {\r
-        if (CompareIso639LanguageCode (Language, UnicodeStringTable->Language)) {\r
-\r
-          //\r
-          // A matching string was found, so return it\r
-          //\r
-          *UnicodeString = UnicodeStringTable->UnicodeString;\r
-          return EFI_SUCCESS;\r
-        }\r
-\r
-        UnicodeStringTable++;\r
-      }\r
-\r
-      return EFI_UNSUPPORTED;\r
-    }\r
-\r
-    SupportedLanguages += 3;\r
-  }\r
-\r
-  return EFI_UNSUPPORTED;\r
-}\r
-\r
-\r
-\r
-/**\r
-  This function looks up a Unicode string in UnicodeStringTable.\r
-\r
-  If Language is a member of SupportedLanguages and a Unicode string is found in\r
-  UnicodeStringTable that matches the language code specified by Language, then\r
-  it is returned in UnicodeString.\r
-\r
-  @param  Language             A pointer to an ASCII string containing the ISO 639-2 or the\r
-                               RFC 4646 language code for the Unicode string to look up and\r
-                               return. If Iso639Language is TRUE, then this ASCII string is\r
-                               not assumed to be Null-terminated, and only the first three\r
-                               characters are used. If Iso639Language is FALSE, then this ASCII\r
-                               string must be Null-terminated.\r
-  @param  SupportedLanguages   A pointer to a Null-terminated ASCII string that contains a\r
-                               set of ISO 639-2 or RFC 4646 language codes that the Unicode\r
-                               string table supports.  Language must be a member of this set.\r
-                               If Iso639Language is TRUE, then this string contains one or more\r
-                               ISO 639-2 language codes with no separator characters. If Iso639Language\r
-                               is FALSE, then is string contains one or more RFC 4646 language\r
-                               codes separated by ';'.\r
-  @param  UnicodeStringTable   A pointer to the table of Unicode strings. Type EFI_UNICODE_STRING_TABLE\r
-                               is defined in "Related Definitions".\r
-  @param  UnicodeString        A pointer to the Null-terminated Unicode string from UnicodeStringTable\r
-                               that matches the language specified by Language.\r
-  @param  Iso639Language       Specifies the supported language code format. If it is TRUE, then\r
-                               Language and SupportedLanguages follow ISO 639-2 language code format.\r
-                               Otherwise, they follow RFC 4646 language code format.\r
-\r
-\r
-  @retval  EFI_SUCCESS            The Unicode string that matches the language specified by Language\r
-                                  was found in the table of Unicode strings UnicodeStringTable, and\r
-                                  it was returned in UnicodeString.\r
-  @retval  EFI_INVALID_PARAMETER  Language is NULL.\r
-  @retval  EFI_INVALID_PARAMETER  UnicodeString is NULL.\r
-  @retval  EFI_UNSUPPORTED        SupportedLanguages is NULL.\r
-  @retval  EFI_UNSUPPORTED        UnicodeStringTable is NULL.\r
-  @retval  EFI_UNSUPPORTED        The language specified by Language is not a member of SupportedLanguages.\r
-  @retval  EFI_UNSUPPORTED        The language specified by Language is not supported by UnicodeStringTable.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-LookupUnicodeString2 (\r
-  IN CONST CHAR8                     *Language,\r
-  IN CONST CHAR8                     *SupportedLanguages,\r
-  IN CONST EFI_UNICODE_STRING_TABLE  *UnicodeStringTable,\r
-  OUT CHAR16                         **UnicodeString,\r
-  IN BOOLEAN                         Iso639Language\r
-  )\r
-{\r
-  BOOLEAN   Found;\r
-  UINTN     Index;\r
-  CHAR8     *LanguageString;\r
-\r
-  //\r
-  // Make sure the parameters are valid\r
-  //\r
-  if (Language == NULL || UnicodeString == NULL) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  //\r
-  // If there are no supported languages, or the Unicode String Table is empty, then the\r
-  // Unicode String specified by Language is not supported by this Unicode String Table\r
-  //\r
-  if (SupportedLanguages == NULL || UnicodeStringTable == NULL) {\r
-    return EFI_UNSUPPORTED;\r
-  }\r
-\r
-  //\r
-  // Make sure Language is in the set of Supported Languages\r
-  //\r
-  Found = FALSE;\r
-  while (*SupportedLanguages != 0) {\r
-    if (Iso639Language) {\r
-      if (CompareIso639LanguageCode (Language, SupportedLanguages)) {\r
-        Found = TRUE;\r
-        break;\r
-      }\r
-      SupportedLanguages += 3;\r
-    } else {\r
-      for (Index = 0; SupportedLanguages[Index] != 0 && SupportedLanguages[Index] != ';'; Index++);\r
-      if ((AsciiStrnCmp(SupportedLanguages, Language, Index) == 0) && (Language[Index] == 0)) {\r
-        Found = TRUE;\r
-        break;\r
-      }\r
-      SupportedLanguages += Index;\r
-      for (; *SupportedLanguages != 0 && *SupportedLanguages == ';'; SupportedLanguages++);\r
-    }\r
-  }\r
-\r
-  //\r
-  // If Language is not a member of SupportedLanguages, then return EFI_UNSUPPORTED\r
-  //\r
-  if (!Found) {\r
-    return EFI_UNSUPPORTED;\r
-  }\r
-\r
-  //\r
-  // Search the Unicode String Table for the matching Language specifier\r
-  //\r
-  while (UnicodeStringTable->Language != NULL) {\r
-    LanguageString = UnicodeStringTable->Language;\r
-    while (0 != *LanguageString) {\r
-      for (Index = 0 ;LanguageString[Index] != 0 && LanguageString[Index] != ';'; Index++);\r
-      if (AsciiStrnCmp(LanguageString, Language, Index) == 0) {\r
-        *UnicodeString = UnicodeStringTable->UnicodeString;\r
-        return EFI_SUCCESS;\r
-      }\r
-      LanguageString += Index;\r
-      for (Index = 0 ;LanguageString[Index] != 0 && LanguageString[Index] == ';'; Index++);\r
-    }\r
-    UnicodeStringTable++;\r
-  }\r
-\r
-  return EFI_UNSUPPORTED;\r
-}\r
-\r
-\r
-/**\r
-  This function adds a Unicode string to UnicodeStringTable.\r
-\r
-  If Language is a member of SupportedLanguages then UnicodeString is added to\r
-  UnicodeStringTable.  New buffers are allocated for both Language and\r
-  UnicodeString.  The contents of Language and UnicodeString are copied into\r
-  these new buffers.  These buffers are automatically freed when\r
-  FreeUnicodeStringTable() is called.\r
-\r
-  @param  Language                A pointer to the ISO 639-2 language code for the Unicode\r
-                                  string to add.\r
-  @param  SupportedLanguages      A pointer to the set of ISO 639-2 language codes\r
-                                  that the Unicode string table supports.\r
-                                  Language must be a member of this set.\r
-  @param  UnicodeStringTable      A pointer to the table of Unicode strings.\r
-  @param  UnicodeString           A pointer to the Unicode string to add.\r
-\r
-  @retval EFI_SUCCESS             The Unicode string that matches the language\r
-                                  specified by Language was found in the table of\r
-                                  Unicode strings UnicodeStringTable, and it was\r
-                                  returned in UnicodeString.\r
-  @retval EFI_INVALID_PARAMETER   Language is NULL.\r
-  @retval EFI_INVALID_PARAMETER   UnicodeString is NULL.\r
-  @retval EFI_INVALID_PARAMETER   UnicodeString is an empty string.\r
-  @retval EFI_UNSUPPORTED         SupportedLanguages is NULL.\r
-  @retval EFI_ALREADY_STARTED     A Unicode string with language Language is\r
-                                  already present in UnicodeStringTable.\r
-  @retval EFI_OUT_OF_RESOURCES    There is not enough memory to add another\r
-                                  Unicode string to UnicodeStringTable.\r
-  @retval EFI_UNSUPPORTED         The language specified by Language is not a\r
-                                  member of SupportedLanguages.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-AddUnicodeString (\r
-  IN     CONST CHAR8               *Language,\r
-  IN     CONST CHAR8               *SupportedLanguages,\r
-  IN OUT EFI_UNICODE_STRING_TABLE  **UnicodeStringTable,\r
-  IN     CONST CHAR16              *UnicodeString\r
-  )\r
-{\r
-  UINTN                     NumberOfEntries;\r
-  EFI_UNICODE_STRING_TABLE  *OldUnicodeStringTable;\r
-  EFI_UNICODE_STRING_TABLE  *NewUnicodeStringTable;\r
-  UINTN                     UnicodeStringLength;\r
-\r
-  //\r
-  // Make sure the parameter are valid\r
-  //\r
-  if (Language == NULL || UnicodeString == NULL || UnicodeStringTable == NULL) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  //\r
-  // If there are no supported languages, then a Unicode String can not be added\r
-  //\r
-  if (SupportedLanguages == NULL) {\r
-    return EFI_UNSUPPORTED;\r
-  }\r
-\r
-  //\r
-  // If the Unicode String is empty, then a Unicode String can not be added\r
-  //\r
-  if (UnicodeString[0] == 0) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  //\r
-  // Make sure Language is a member of SupportedLanguages\r
-  //\r
-  while (*SupportedLanguages != 0) {\r
-    if (CompareIso639LanguageCode (Language, SupportedLanguages)) {\r
-\r
-      //\r
-      // Determine the size of the Unicode String Table by looking for a NULL Language entry\r
-      //\r
-      NumberOfEntries = 0;\r
-      if (*UnicodeStringTable != NULL) {\r
-        OldUnicodeStringTable = *UnicodeStringTable;\r
-        while (OldUnicodeStringTable->Language != NULL) {\r
-          if (CompareIso639LanguageCode (Language, OldUnicodeStringTable->Language)) {\r
-            return EFI_ALREADY_STARTED;\r
-          }\r
-\r
-          OldUnicodeStringTable++;\r
-          NumberOfEntries++;\r
-        }\r
-      }\r
-\r
-      //\r
-      // Allocate space for a new Unicode String Table.  It must hold the current number of\r
-      // entries, plus 1 entry for the new Unicode String, plus 1 entry for the end of table\r
-      // marker\r
-      //\r
-      NewUnicodeStringTable = AllocatePool ((NumberOfEntries + 2) * sizeof (EFI_UNICODE_STRING_TABLE));\r
-      if (NewUnicodeStringTable == NULL) {\r
-        return EFI_OUT_OF_RESOURCES;\r
-      }\r
-\r
-      //\r
-      // If the current Unicode String Table contains any entries, then copy them to the\r
-      // newly allocated Unicode String Table.\r
-      //\r
-      if (*UnicodeStringTable != NULL) {\r
-        CopyMem (\r
-           NewUnicodeStringTable,\r
-           *UnicodeStringTable,\r
-           NumberOfEntries * sizeof (EFI_UNICODE_STRING_TABLE)\r
-           );\r
-      }\r
-\r
-      //\r
-      // Allocate space for a copy of the Language specifier\r
-      //\r
-      NewUnicodeStringTable[NumberOfEntries].Language = AllocateCopyPool (3, Language);\r
-      if (NewUnicodeStringTable[NumberOfEntries].Language == NULL) {\r
-        gBS->FreePool (NewUnicodeStringTable);\r
-        return EFI_OUT_OF_RESOURCES;\r
-      }\r
-\r
-      //\r
-      // Compute the length of the Unicode String\r
-      //\r
-      for (UnicodeStringLength = 0; UnicodeString[UnicodeStringLength] != 0; UnicodeStringLength++)\r
-        ;\r
-\r
-      //\r
-      // Allocate space for a copy of the Unicode String\r
-      //\r
-      NewUnicodeStringTable[NumberOfEntries].UnicodeString = AllocateCopyPool (\r
-                                                              (UnicodeStringLength + 1) * sizeof (CHAR16),\r
-                                                              UnicodeString\r
-                                                              );\r
-      if (NewUnicodeStringTable[NumberOfEntries].UnicodeString == NULL) {\r
-        gBS->FreePool (NewUnicodeStringTable[NumberOfEntries].Language);\r
-        gBS->FreePool (NewUnicodeStringTable);\r
-        return EFI_OUT_OF_RESOURCES;\r
-      }\r
-\r
-      //\r
-      // Mark the end of the Unicode String Table\r
-      //\r
-      NewUnicodeStringTable[NumberOfEntries + 1].Language       = NULL;\r
-      NewUnicodeStringTable[NumberOfEntries + 1].UnicodeString  = NULL;\r
-\r
-      //\r
-      // Free the old Unicode String Table\r
-      //\r
-      if (*UnicodeStringTable != NULL) {\r
-        gBS->FreePool (*UnicodeStringTable);\r
-      }\r
-\r
-      //\r
-      // Point UnicodeStringTable at the newly allocated Unicode String Table\r
-      //\r
-      *UnicodeStringTable = NewUnicodeStringTable;\r
-\r
-      return EFI_SUCCESS;\r
-    }\r
-\r
-    SupportedLanguages += 3;\r
-  }\r
-\r
-  return EFI_UNSUPPORTED;\r
-}\r
-\r
-\r
-/**\r
-  This function adds the Null-terminated Unicode string specified by UnicodeString\r
-  to UnicodeStringTable.\r
-\r
-  If Language is a member of SupportedLanguages then UnicodeString is added to\r
-  UnicodeStringTable.  New buffers are allocated for both Language and UnicodeString.\r
-  The contents of Language and UnicodeString are copied into these new buffers.\r
-  These buffers are automatically freed when EfiLibFreeUnicodeStringTable() is called.\r
-\r
-  @param  Language            A pointer to an ASCII string containing the ISO 639-2 or\r
-                              the RFC 4646 language code for the Unicode string to add.\r
-                              If Iso639Language is TRUE, then this ASCII string is not\r
-                              assumed to be Null-terminated, and only the first three\r
-                              chacters are used. If Iso639Language is FALSE, then this\r
-                              ASCII string must be Null-terminated.\r
-  @param  SupportedLanguages  A pointer to a Null-terminated ASCII string that contains\r
-                              a set of ISO 639-2 or RFC 4646 language codes that the Unicode\r
-                              string table supports.  Language must be a member of this set.\r
-                              If Iso639Language is TRUE, then this string contains one or more\r
-                              ISO 639-2 language codes with no separator characters.\r
-                              If Iso639Language is FALSE, then is string contains one or more\r
-                              RFC 4646 language codes separated by ';'.\r
-  @param  UnicodeStringTable  A pointer to the table of Unicode strings. Type EFI_UNICODE_STRING_TABLE\r
-                              is defined in "Related Definitions".\r
-  @param  UnicodeString       A pointer to the Unicode string to add.\r
-  @param  Iso639Language      Specifies the supported language code format. If it is TRUE,\r
-                              then Language and SupportedLanguages follow ISO 639-2 language code format.\r
-                              Otherwise, they follow RFC 4646 language code format.\r
-\r
-  @retval EFI_SUCCESS            The Unicode string that matches the language specified by\r
-                                 Language was found in the table of Unicode strings UnicodeStringTable,\r
-                                 and it was returned in UnicodeString.\r
-  @retval EFI_INVALID_PARAMETER  Language is NULL.\r
-  @retval EFI_INVALID_PARAMETER  UnicodeString is NULL.\r
-  @retval EFI_INVALID_PARAMETER  UnicodeString is an empty string.\r
-  @retval EFI_UNSUPPORTED        SupportedLanguages is NULL.\r
-  @retval EFI_ALREADY_STARTED    A Unicode string with language Language is already present in\r
-                                 UnicodeStringTable.\r
-  @retval EFI_OUT_OF_RESOURCES   There is not enough memory to add another Unicode string UnicodeStringTable.\r
-  @retval EFI_UNSUPPORTED        The language specified by Language is not a member of SupportedLanguages.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-AddUnicodeString2 (\r
-  IN     CONST CHAR8               *Language,\r
-  IN     CONST CHAR8               *SupportedLanguages,\r
-  IN OUT EFI_UNICODE_STRING_TABLE  **UnicodeStringTable,\r
-  IN     CONST CHAR16              *UnicodeString,\r
-  IN     BOOLEAN                   Iso639Language\r
-  )\r
-{\r
-  UINTN                     NumberOfEntries;\r
-  EFI_UNICODE_STRING_TABLE  *OldUnicodeStringTable;\r
-  EFI_UNICODE_STRING_TABLE  *NewUnicodeStringTable;\r
-  UINTN                     UnicodeStringLength;\r
-  BOOLEAN                   Found;\r
-  UINTN                     Index;\r
-  CHAR8                     *LanguageString;\r
-\r
-  //\r
-  // Make sure the parameter are valid\r
-  //\r
-  if (Language == NULL || UnicodeString == NULL || UnicodeStringTable == NULL) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  //\r
-  // If there are no supported languages, then a Unicode String can not be added\r
-  //\r
-  if (SupportedLanguages == NULL) {\r
-    return EFI_UNSUPPORTED;\r
-  }\r
-\r
-  //\r
-  // If the Unicode String is empty, then a Unicode String can not be added\r
-  //\r
-  if (UnicodeString[0] == 0) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  //\r
-  // Make sure Language is a member of SupportedLanguages\r
-  //\r
-  Found = FALSE;\r
-  while (*SupportedLanguages != 0) {\r
-    if (Iso639Language) {\r
-      if (CompareIso639LanguageCode (Language, SupportedLanguages)) {\r
-        Found = TRUE;\r
-        break;\r
-      }\r
-      SupportedLanguages += 3;\r
-    } else {\r
-      for (Index = 0; SupportedLanguages[Index] != 0 && SupportedLanguages[Index] != ';'; Index++);\r
-      if (AsciiStrnCmp(SupportedLanguages, Language, Index) == 0) {\r
-        Found = TRUE;\r
-        break;\r
-      }\r
-      SupportedLanguages += Index;\r
-      for (; *SupportedLanguages != 0 && *SupportedLanguages == ';'; SupportedLanguages++);\r
-    }\r
-  }\r
-\r
-  //\r
-  // If Language is not a member of SupportedLanguages, then return EFI_UNSUPPORTED\r
-  //\r
-  if (!Found) {\r
-    return EFI_UNSUPPORTED;\r
-  }\r
-\r
-  //\r
-  // Determine the size of the Unicode String Table by looking for a NULL Language entry\r
-  //\r
-  NumberOfEntries = 0;\r
-  if (*UnicodeStringTable != NULL) {\r
-    OldUnicodeStringTable = *UnicodeStringTable;\r
-    while (OldUnicodeStringTable->Language != NULL) {\r
-      LanguageString = OldUnicodeStringTable->Language;\r
-\r
-      while (*LanguageString != 0) {\r
-        for (Index = 0; LanguageString[Index] != 0 && LanguageString[Index] != ';'; Index++);\r
-\r
-        if (AsciiStrnCmp (Language, LanguageString, Index) == 0) {\r
-          return EFI_ALREADY_STARTED;\r
-        }\r
-        LanguageString += Index;\r
-        for (; *LanguageString != 0 && *LanguageString == ';'; LanguageString++);\r
-      }\r
-      OldUnicodeStringTable++;\r
-      NumberOfEntries++;\r
-    }\r
-  }\r
-\r
-  //\r
-  // Allocate space for a new Unicode String Table.  It must hold the current number of\r
-  // entries, plus 1 entry for the new Unicode String, plus 1 entry for the end of table\r
-  // marker\r
-  //\r
-  NewUnicodeStringTable = AllocatePool ((NumberOfEntries + 2) * sizeof (EFI_UNICODE_STRING_TABLE));\r
-  if (NewUnicodeStringTable == NULL) {\r
-    return EFI_OUT_OF_RESOURCES;\r
-  }\r
-\r
-  //\r
-  // If the current Unicode String Table contains any entries, then copy them to the\r
-  // newly allocated Unicode String Table.\r
-  //\r
-  if (*UnicodeStringTable != NULL) {\r
-    CopyMem (\r
-      NewUnicodeStringTable,\r
-      *UnicodeStringTable,\r
-      NumberOfEntries * sizeof (EFI_UNICODE_STRING_TABLE)\r
-      );\r
-  }\r
-\r
-  //\r
-  // Allocate space for a copy of the Language specifier\r
-  //\r
-  NewUnicodeStringTable[NumberOfEntries].Language = AllocateCopyPool (AsciiStrSize(Language), Language);\r
-  if (NewUnicodeStringTable[NumberOfEntries].Language == NULL) {\r
-    gBS->FreePool (NewUnicodeStringTable);\r
-    return EFI_OUT_OF_RESOURCES;\r
-  }\r
-\r
-  //\r
-  // Compute the length of the Unicode String\r
-  //\r
-  for (UnicodeStringLength = 0; UnicodeString[UnicodeStringLength] != 0; UnicodeStringLength++);\r
-\r
-  //\r
-  // Allocate space for a copy of the Unicode String\r
-  //\r
-  NewUnicodeStringTable[NumberOfEntries].UnicodeString = AllocateCopyPool (StrSize (UnicodeString), UnicodeString);\r
-  if (NewUnicodeStringTable[NumberOfEntries].UnicodeString == NULL) {\r
-    gBS->FreePool (NewUnicodeStringTable[NumberOfEntries].Language);\r
-    gBS->FreePool (NewUnicodeStringTable);\r
-    return EFI_OUT_OF_RESOURCES;\r
-  }\r
-\r
-  //\r
-  // Mark the end of the Unicode String Table\r
-  //\r
-  NewUnicodeStringTable[NumberOfEntries + 1].Language       = NULL;\r
-  NewUnicodeStringTable[NumberOfEntries + 1].UnicodeString  = NULL;\r
-\r
-  //\r
-  // Free the old Unicode String Table\r
-  //\r
-  if (*UnicodeStringTable != NULL) {\r
-    gBS->FreePool (*UnicodeStringTable);\r
-  }\r
-\r
-  //\r
-  // Point UnicodeStringTable at the newly allocated Unicode String Table\r
-  //\r
-  *UnicodeStringTable = NewUnicodeStringTable;\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
-  This function frees the table of Unicode strings in UnicodeStringTable.\r
-\r
-  If UnicodeStringTable is NULL, then EFI_SUCCESS is returned.\r
-  Otherwise, each language code, and each Unicode string in the Unicode string\r
-  table are freed, and EFI_SUCCESS is returned.\r
-\r
-  @param  UnicodeStringTable  A pointer to the table of Unicode strings.\r
-\r
-  @retval EFI_SUCCESS         The Unicode string table was freed.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-FreeUnicodeStringTable (\r
-  IN EFI_UNICODE_STRING_TABLE  *UnicodeStringTable\r
-  )\r
-{\r
-  UINTN Index;\r
-\r
-  //\r
-  // If the Unicode String Table is NULL, then it is already freed\r
-  //\r
-  if (UnicodeStringTable == NULL) {\r
-    return EFI_SUCCESS;\r
-  }\r
-\r
-  //\r
-  // Loop through the Unicode String Table until we reach the end of table marker\r
-  //\r
-  for (Index = 0; UnicodeStringTable[Index].Language != NULL; Index++) {\r
-\r
-    //\r
-    // Free the Language string from the Unicode String Table\r
-    //\r
-    gBS->FreePool (UnicodeStringTable[Index].Language);\r
-\r
-    //\r
-    // Free the Unicode String from the Unicode String Table\r
-    //\r
-    if (UnicodeStringTable[Index].UnicodeString != NULL) {\r
-      gBS->FreePool (UnicodeStringTable[Index].UnicodeString);\r
-    }\r
-  }\r
-\r
-  //\r
-  // Free the Unicode String Table itself\r
-  //\r
-  gBS->FreePool (UnicodeStringTable);\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
-  Returns a pointer to an allocated buffer that contains the contents of a\r
-  variable retrieved through the UEFI Runtime Service GetVariable().  The\r
-  returned buffer is allocated using AllocatePool().  The caller is responsible\r
-  for freeing this buffer with FreePool().\r
-\r
-  If Name is NULL, then ASSERT().\r
-  If Guid is NULL, then ASSERT().\r
-\r
-  @param[in]  Name  Pointer to a Null-terminated Unicode string.\r
-  @param[in]  Guid  Pointer to an EFI_GUID structure\r
-\r
-  @retval NULL   The variable could not be retrieved.\r
-  @retval NULL   There are not enough resources available for the variable contents.\r
-  @retval Other  A pointer to allocated buffer containing the variable contents.\r
-\r
-**/\r
-VOID *\r
-EFIAPI\r
-GetVariable (\r
-  IN CONST CHAR16    *Name,\r
-  IN CONST EFI_GUID  *Guid\r
-  )\r
-{\r
-  EFI_STATUS  Status;\r
-  UINTN       Size;\r
-  VOID        *Value;\r
-\r
-  ASSERT (Name != NULL);\r
-  ASSERT (Guid != NULL);\r
-\r
-  //\r
-  // Try to get the variable size.\r
-  //\r
-  Value = NULL;\r
-  Size = 0;\r
-  Status = gRT->GetVariable ((CHAR16 *) Name, (EFI_GUID *) Guid, NULL, &Size, Value);\r
-  if (Status != EFI_BUFFER_TOO_SMALL) {\r
-    return NULL;\r
-  }\r
-\r
-  //\r
-  // Allocate buffer to get the variable.\r
-  //\r
-  Value = AllocatePool (Size);\r
-  if (Value == NULL) {\r
-    return NULL;\r
-  }\r
-\r
-  //\r
-  // Get the variable data.\r
-  //\r
-  Status = gRT->GetVariable ((CHAR16 *) Name, (EFI_GUID *) Guid, NULL, &Size, Value);\r
-  if (EFI_ERROR (Status)) {\r
-    FreePool(Value);\r
-    return NULL;\r
-  }\r
-\r
-  return Value;\r
-}\r
-\r
-\r
-/**\r
-  Returns a pointer to an allocated buffer that contains the contents of a\r
-  variable retrieved through the UEFI Runtime Service GetVariable().  This\r
-  function always uses the EFI_GLOBAL_VARIABLE GUID to retrieve variables.\r
-  The returned buffer is allocated using AllocatePool().  The caller is\r
-  responsible for freeing this buffer with FreePool().\r
-\r
-  If Name is NULL, then ASSERT().\r
-\r
-  @param[in]  Name  Pointer to a Null-terminated Unicode string.\r
-\r
-  @retval NULL   The variable could not be retrieved.\r
-  @retval NULL   There are not enough resources available for the variable contents.\r
-  @retval Other  A pointer to allocated buffer containing the variable contents.\r
-\r
-**/\r
-VOID *\r
-EFIAPI\r
-GetEfiGlobalVariable (\r
-  IN CONST CHAR16  *Name\r
-  )\r
-{\r
-  return GetVariable (Name, &gEfiGlobalVariableGuid);\r
-}\r
-\r
-/**\r
-  Returns the status whether get the variable success. The function retrieves\r
-  variable  through the UEFI Runtime Service GetVariable().  The\r
-  returned buffer is allocated using AllocatePool().  The caller is responsible\r
-  for freeing this buffer with FreePool().\r
-\r
-  If Name  is NULL, then ASSERT().\r
-  If Guid  is NULL, then ASSERT().\r
-  If Value is NULL, then ASSERT().\r
-\r
-  @param[in]  Name  The pointer to a Null-terminated Unicode string.\r
-  @param[in]  Guid  The pointer to an EFI_GUID structure\r
-  @param[out] Value The buffer point saved the variable info.\r
-  @param[out] Size  The buffer size of the variable.\r
-\r
-  @return EFI_OUT_OF_RESOURCES      Allocate buffer failed.\r
-  @return EFI_SUCCESS               Find the specified variable.\r
-  @return Others Errors             Return errors from call to gRT->GetVariable.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-GetVariable2 (\r
-  IN CONST CHAR16    *Name,\r
-  IN CONST EFI_GUID  *Guid,\r
-  OUT VOID           **Value,\r
-  OUT UINTN          *Size OPTIONAL\r
-  )\r
-{\r
-  EFI_STATUS  Status;\r
-  UINTN       BufferSize;\r
-\r
-  ASSERT (Name != NULL && Guid != NULL && Value != NULL);\r
-\r
-  //\r
-  // Try to get the variable size.\r
-  //\r
-  BufferSize = 0;\r
-  *Value     = NULL;\r
-  if (Size != NULL) {\r
-    *Size  = 0;\r
-  }\r
-\r
-  Status = gRT->GetVariable ((CHAR16 *) Name, (EFI_GUID *) Guid, NULL, &BufferSize, *Value);\r
-  if (Status != EFI_BUFFER_TOO_SMALL) {\r
-    return Status;\r
-  }\r
-\r
-  //\r
-  // Allocate buffer to get the variable.\r
-  //\r
-  *Value = AllocatePool (BufferSize);\r
-  ASSERT (*Value != NULL);\r
-  if (*Value == NULL) {\r
-    return EFI_OUT_OF_RESOURCES;\r
-  }\r
-\r
-  //\r
-  // Get the variable data.\r
-  //\r
-  Status = gRT->GetVariable ((CHAR16 *) Name, (EFI_GUID *) Guid, NULL, &BufferSize, *Value);\r
-  if (EFI_ERROR (Status)) {\r
-    FreePool(*Value);\r
-    *Value = NULL;\r
-  }\r
-\r
-  if (Size != NULL) {\r
-    *Size = BufferSize;\r
-  }\r
-\r
-  return Status;\r
-}\r
-\r
-/**\r
-  Returns a pointer to an allocated buffer that contains the contents of a\r
-  variable retrieved through the UEFI Runtime Service GetVariable().  This\r
-  function always uses the EFI_GLOBAL_VARIABLE GUID to retrieve variables.\r
-  The returned buffer is allocated using AllocatePool().  The caller is\r
-  responsible for freeing this buffer with FreePool().\r
-\r
-  If Name is NULL, then ASSERT().\r
-  If Value is NULL, then ASSERT().\r
-\r
-  @param[in]  Name  The pointer to a Null-terminated Unicode string.\r
-  @param[out] Value The buffer point saved the variable info.\r
-  @param[out] Size  The buffer size of the variable.\r
-\r
-  @return EFI_OUT_OF_RESOURCES      Allocate buffer failed.\r
-  @return EFI_SUCCESS               Find the specified variable.\r
-  @return Others Errors             Return errors from call to gRT->GetVariable.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-GetEfiGlobalVariable2 (\r
-  IN CONST CHAR16    *Name,\r
-  OUT VOID           **Value,\r
-  OUT UINTN          *Size OPTIONAL\r
-  )\r
-{\r
-  return GetVariable2 (Name, &gEfiGlobalVariableGuid, Value, Size);\r
-}\r
-\r
-/**\r
-  Returns a pointer to an allocated buffer that contains the best matching language\r
-  from a set of supported languages.\r
-\r
-  This function supports both ISO 639-2 and RFC 4646 language codes, but language\r
-  code types may not be mixed in a single call to this function.  The language\r
-  code returned is allocated using AllocatePool().  The caller is responsible for\r
-  freeing the allocated buffer using FreePool().  This function supports a variable\r
-  argument list that allows the caller to pass in a prioritized list of language\r
-  codes to test against all the language codes in SupportedLanguages.\r
-\r
-  If SupportedLanguages is NULL, then ASSERT().\r
-\r
-  @param[in]  SupportedLanguages  A pointer to a Null-terminated ASCII string that\r
-                                  contains a set of language codes in the format\r
-                                  specified by Iso639Language.\r
-  @param[in]  Iso639Language      If not zero, then all language codes are assumed to be\r
-                                  in ISO 639-2 format.  If zero, then all language\r
-                                  codes are assumed to be in RFC 4646 language format\r
-  @param[in]  ...                 A variable argument list that contains pointers to\r
-                                  Null-terminated ASCII strings that contain one or more\r
-                                  language codes in the format specified by Iso639Language.\r
-                                  The first language code from each of these language\r
-                                  code lists is used to determine if it is an exact or\r
-                                  close match to any of the language codes in\r
-                                  SupportedLanguages.  Close matches only apply to RFC 4646\r
-                                  language codes, and the matching algorithm from RFC 4647\r
-                                  is used to determine if a close match is present.  If\r
-                                  an exact or close match is found, then the matching\r
-                                  language code from SupportedLanguages is returned.  If\r
-                                  no matches are found, then the next variable argument\r
-                                  parameter is evaluated.  The variable argument list\r
-                                  is terminated by a NULL.\r
-\r
-  @retval NULL   The best matching language could not be found in SupportedLanguages.\r
-  @retval NULL   There are not enough resources available to return the best matching\r
-                 language.\r
-  @retval Other  A pointer to a Null-terminated ASCII string that is the best matching\r
-                 language in SupportedLanguages.\r
-\r
-**/\r
-CHAR8 *\r
-EFIAPI\r
-GetBestLanguage (\r
-  IN CONST CHAR8  *SupportedLanguages,\r
-  IN UINTN        Iso639Language,\r
-  ...\r
-  )\r
-{\r
-  VA_LIST      Args;\r
-  CHAR8        *Language;\r
-  UINTN        CompareLength;\r
-  UINTN        LanguageLength;\r
-  CONST CHAR8  *Supported;\r
-  CHAR8        *BestLanguage;\r
-\r
-  ASSERT (SupportedLanguages != NULL);\r
-\r
-  VA_START (Args, Iso639Language);\r
-  while ((Language = VA_ARG (Args, CHAR8 *)) != NULL) {\r
-    //\r
-    // Default to ISO 639-2 mode\r
-    //\r
-    CompareLength  = 3;\r
-    LanguageLength = MIN (3, AsciiStrLen (Language));\r
-\r
-    //\r
-    // If in RFC 4646 mode, then determine the length of the first RFC 4646 language code in Language\r
-    //\r
-    if (Iso639Language == 0) {\r
-      for (LanguageLength = 0; Language[LanguageLength] != 0 && Language[LanguageLength] != ';'; LanguageLength++);\r
-    }\r
-\r
-    //\r
-    // Trim back the length of Language used until it is empty\r
-    //\r
-    while (LanguageLength > 0) {\r
-      //\r
-      // Loop through all language codes in SupportedLanguages\r
-      //\r
-      for (Supported = SupportedLanguages; *Supported != '\0'; Supported += CompareLength) {\r
-        //\r
-        // In RFC 4646 mode, then Loop through all language codes in SupportedLanguages\r
-        //\r
-        if (Iso639Language == 0) {\r
-          //\r
-          // Skip ';' characters in Supported\r
-          //\r
-          for (; *Supported != '\0' && *Supported == ';'; Supported++);\r
-          //\r
-          // Determine the length of the next language code in Supported\r
-          //\r
-          for (CompareLength = 0; Supported[CompareLength] != 0 && Supported[CompareLength] != ';'; CompareLength++);\r
-          //\r
-          // If Language is longer than the Supported, then skip to the next language\r
-          //\r
-          if (LanguageLength > CompareLength) {\r
-            continue;\r
-          }\r
-        }\r
-        //\r
-        // See if the first LanguageLength characters in Supported match Language\r
-        //\r
-        if (AsciiStrnCmp (Supported, Language, LanguageLength) == 0) {\r
-          VA_END (Args);\r
-          //\r
-          // Allocate, copy, and return the best matching language code from SupportedLanguages\r
-          //\r
-          BestLanguage = AllocateZeroPool (CompareLength + 1);\r
-          if (BestLanguage == NULL) {\r
-            return NULL;\r
-          }\r
-          return CopyMem (BestLanguage, Supported, CompareLength);\r
-        }\r
-      }\r
-\r
-      if (Iso639Language != 0) {\r
-        //\r
-        // If ISO 639 mode, then each language can only be tested once\r
-        //\r
-        LanguageLength = 0;\r
-      } else {\r
-        //\r
-        // If RFC 4646 mode, then trim Language from the right to the next '-' character\r
-        //\r
-        for (LanguageLength--; LanguageLength > 0 && Language[LanguageLength] != '-'; LanguageLength--);\r
-      }\r
-    }\r
-  }\r
-  VA_END (Args);\r
-\r
-  //\r
-  // No matches were found\r
-  //\r
-  return NULL;\r
-}\r
-\r
-/**\r
-  Returns an array of protocol instance that matches the given protocol.\r
-\r
-  @param[in]  Protocol      Provides the protocol to search for.\r
-  @param[out] NoProtocols   The number of protocols returned in Buffer.\r
-  @param[out] Buffer        A pointer to the buffer to return the requested\r
-                            array of protocol instances that match Protocol.\r
-                            The returned buffer is allocated using\r
-                            EFI_BOOT_SERVICES.AllocatePool().  The caller is\r
-                            responsible for freeing this buffer with\r
-                            EFI_BOOT_SERVICES.FreePool().\r
-\r
-  @retval EFI_SUCCESS            The array of protocols was returned in Buffer,\r
-                                 and the number of protocols in Buffer was\r
-                                 returned in NoProtocols.\r
-  @retval EFI_NOT_FOUND          No protocols found.\r
-  @retval EFI_OUT_OF_RESOURCES   There is not enough pool memory to store the\r
-                                 matching results.\r
-  @retval EFI_INVALID_PARAMETER  Protocol is NULL.\r
-  @retval EFI_INVALID_PARAMETER  NoProtocols is NULL.\r
-  @retval EFI_INVALID_PARAMETER  Buffer is NULL.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-EfiLocateProtocolBuffer (\r
-  IN  EFI_GUID  *Protocol,\r
-  OUT UINTN     *NoProtocols,\r
-  OUT VOID      ***Buffer\r
-  )\r
-{\r
-  EFI_STATUS  Status;\r
-  UINTN       NoHandles;\r
-  EFI_HANDLE  *HandleBuffer;\r
-  UINTN       Index;\r
-\r
-  //\r
-  // Check input parameters\r
-  //\r
-  if (Protocol == NULL || NoProtocols == NULL || Buffer == NULL) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  //\r
-  // Initialze output parameters\r
-  //\r
-  *NoProtocols = 0;\r
-  *Buffer = NULL;\r
-\r
-  //\r
-  // Retrieve the array of handles that support Protocol\r
-  //\r
-  Status = gBS->LocateHandleBuffer (\r
-                  ByProtocol,\r
-                  Protocol,\r
-                  NULL,\r
-                  &NoHandles,\r
-                  &HandleBuffer\r
-                  );\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  //\r
-  // Allocate array of protocol instances\r
-  //\r
-  Status = gBS->AllocatePool (\r
-                  EfiBootServicesData,\r
-                  NoHandles * sizeof (VOID *),\r
-                  (VOID **)Buffer\r
-                  );\r
-  if (EFI_ERROR (Status)) {\r
-    //\r
-    // Free the handle buffer\r
-    //\r
-    gBS->FreePool (HandleBuffer);\r
-    return EFI_OUT_OF_RESOURCES;\r
-  }\r
-  ZeroMem (*Buffer, NoHandles * sizeof (VOID *));\r
-\r
-  //\r
-  // Lookup Protocol on each handle in HandleBuffer to fill in the array of\r
-  // protocol instances.  Handle case where protocol instance was present when\r
-  // LocateHandleBuffer() was called, but is not present when HandleProtocol()\r
-  // is called.\r
-  //\r
-  for (Index = 0, *NoProtocols = 0; Index < NoHandles; Index++) {\r
-    Status = gBS->HandleProtocol (\r
-                    HandleBuffer[Index],\r
-                    Protocol,\r
-                    &((*Buffer)[*NoProtocols])\r
-                    );\r
-    if (!EFI_ERROR (Status)) {\r
-      (*NoProtocols)++;\r
-    }\r
-  }\r
-\r
-  //\r
-  // Free the handle buffer\r
-  //\r
-  gBS->FreePool (HandleBuffer);\r
-\r
-  //\r
-  // Make sure at least one protocol instance was found\r
-  //\r
-  if (*NoProtocols == 0) {\r
-    gBS->FreePool (*Buffer);\r
-    *Buffer = NULL;\r
-    return EFI_NOT_FOUND;\r
-  }\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
-  Open or create a file or directory, possibly creating the chain of\r
-  directories leading up to the directory.\r
-\r
-  EfiOpenFileByDevicePath() first locates EFI_SIMPLE_FILE_SYSTEM_PROTOCOL on\r
-  FilePath, and opens the root directory of that filesystem with\r
-  EFI_SIMPLE_FILE_SYSTEM_PROTOCOL.OpenVolume().\r
-\r
-  On the remaining device path, the longest initial sequence of\r
-  FILEPATH_DEVICE_PATH nodes is node-wise traversed with\r
-  EFI_FILE_PROTOCOL.Open().\r
-\r
-  (As a consequence, if OpenMode includes EFI_FILE_MODE_CREATE, and Attributes\r
-  includes EFI_FILE_DIRECTORY, and each FILEPATH_DEVICE_PATH specifies a single\r
-  pathname component, then EfiOpenFileByDevicePath() ensures that the specified\r
-  series of subdirectories exist on return.)\r
-\r
-  The EFI_FILE_PROTOCOL identified by the last FILEPATH_DEVICE_PATH node is\r
-  output to the caller; intermediate EFI_FILE_PROTOCOL instances are closed. If\r
-  there are no FILEPATH_DEVICE_PATH nodes past the node that identifies the\r
-  filesystem, then the EFI_FILE_PROTOCOL of the root directory of the\r
-  filesystem is output to the caller. If a device path node that is different\r
-  from FILEPATH_DEVICE_PATH is encountered relative to the filesystem, the\r
-  traversal is stopped with an error, and a NULL EFI_FILE_PROTOCOL is output.\r
-\r
-  @param[in,out] FilePath  On input, the device path to the file or directory\r
-                           to open or create. The caller is responsible for\r
-                           ensuring that the device path pointed-to by FilePath\r
-                           is well-formed. On output, FilePath points one past\r
-                           the last node in the original device path that has\r
-                           been successfully processed. FilePath is set on\r
-                           output even if EfiOpenFileByDevicePath() returns an\r
-                           error.\r
-\r
-  @param[out] File         On error, File is set to NULL. On success, File is\r
-                           set to the EFI_FILE_PROTOCOL of the root directory\r
-                           of the filesystem, if there are no\r
-                           FILEPATH_DEVICE_PATH nodes in FilePath; otherwise,\r
-                           File is set to the EFI_FILE_PROTOCOL identified by\r
-                           the last node in FilePath.\r
-\r
-  @param[in] OpenMode      The OpenMode parameter to pass to\r
-                           EFI_FILE_PROTOCOL.Open().\r
-\r
-  @param[in] Attributes    The Attributes parameter to pass to\r
-                           EFI_FILE_PROTOCOL.Open().\r
-\r
-  @retval EFI_SUCCESS            The file or directory has been opened or\r
-                                 created.\r
-\r
-  @retval EFI_INVALID_PARAMETER  FilePath is NULL; or File is NULL; or FilePath\r
-                                 contains a device path node, past the node\r
-                                 that identifies\r
-                                 EFI_SIMPLE_FILE_SYSTEM_PROTOCOL, that is not a\r
-                                 FILEPATH_DEVICE_PATH node.\r
-\r
-  @retval EFI_OUT_OF_RESOURCES   Memory allocation failed.\r
-\r
-  @return                        Error codes propagated from the\r
-                                 LocateDevicePath() and OpenProtocol() boot\r
-                                 services, and from the\r
-                                 EFI_SIMPLE_FILE_SYSTEM_PROTOCOL.OpenVolume()\r
-                                 and EFI_FILE_PROTOCOL.Open() member functions.\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-EfiOpenFileByDevicePath (\r
-  IN OUT EFI_DEVICE_PATH_PROTOCOL  **FilePath,\r
-  OUT    EFI_FILE_PROTOCOL         **File,\r
-  IN     UINT64                    OpenMode,\r
-  IN     UINT64                    Attributes\r
-  )\r
-{\r
-  EFI_STATUS                      Status;\r
-  EFI_HANDLE                      FileSystemHandle;\r
-  EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *FileSystem;\r
-  EFI_FILE_PROTOCOL               *LastFile;\r
-  FILEPATH_DEVICE_PATH            *FilePathNode;\r
-  CHAR16                          *AlignedPathName;\r
-  CHAR16                          *PathName;\r
-  EFI_FILE_PROTOCOL               *NextFile;\r
-\r
-  if (File == NULL) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-  *File = NULL;\r
-\r
-  if (FilePath == NULL) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  //\r
-  // Look up the filesystem.\r
-  //\r
-  Status = gBS->LocateDevicePath (\r
-                  &gEfiSimpleFileSystemProtocolGuid,\r
-                  FilePath,\r
-                  &FileSystemHandle\r
-                  );\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-  Status = gBS->OpenProtocol (\r
-                  FileSystemHandle,\r
-                  &gEfiSimpleFileSystemProtocolGuid,\r
-                  (VOID **)&FileSystem,\r
-                  gImageHandle,\r
-                  NULL,\r
-                  EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
-                  );\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  //\r
-  // Open the root directory of the filesystem. After this operation succeeds,\r
-  // we have to release LastFile on error.\r
-  //\r
-  Status = FileSystem->OpenVolume (FileSystem, &LastFile);\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  //\r
-  // Traverse the device path nodes relative to the filesystem.\r
-  //\r
-  while (!IsDevicePathEnd (*FilePath)) {\r
-    if (DevicePathType (*FilePath) != MEDIA_DEVICE_PATH ||\r
-        DevicePathSubType (*FilePath) != MEDIA_FILEPATH_DP) {\r
-      Status = EFI_INVALID_PARAMETER;\r
-      goto CloseLastFile;\r
-    }\r
-    FilePathNode = (FILEPATH_DEVICE_PATH *)*FilePath;\r
-\r
-    //\r
-    // FilePathNode->PathName may be unaligned, and the UEFI specification\r
-    // requires pointers that are passed to protocol member functions to be\r
-    // aligned. Create an aligned copy of the pathname if necessary.\r
-    //\r
-    if ((UINTN)FilePathNode->PathName % sizeof *FilePathNode->PathName == 0) {\r
-      AlignedPathName = NULL;\r
-      PathName = FilePathNode->PathName;\r
-    } else {\r
-      AlignedPathName = AllocateCopyPool (\r
-                          (DevicePathNodeLength (FilePathNode) -\r
-                           SIZE_OF_FILEPATH_DEVICE_PATH),\r
-                          FilePathNode->PathName\r
-                          );\r
-      if (AlignedPathName == NULL) {\r
-        Status = EFI_OUT_OF_RESOURCES;\r
-        goto CloseLastFile;\r
-      }\r
-      PathName = AlignedPathName;\r
-    }\r
-\r
-    //\r
-    // Open or create the file corresponding to the next pathname fragment.\r
-    //\r
-    Status = LastFile->Open (\r
-                         LastFile,\r
-                         &NextFile,\r
-                         PathName,\r
-                         OpenMode,\r
-                         Attributes\r
-                         );\r
-\r
-    //\r
-    // Release any AlignedPathName on both error and success paths; PathName is\r
-    // no longer needed.\r
-    //\r
-    if (AlignedPathName != NULL) {\r
-      FreePool (AlignedPathName);\r
-    }\r
-    if (EFI_ERROR (Status)) {\r
-      goto CloseLastFile;\r
-    }\r
-\r
-    //\r
-    // Advance to the next device path node.\r
-    //\r
-    LastFile->Close (LastFile);\r
-    LastFile = NextFile;\r
-    *FilePath = NextDevicePathNode (FilePathNode);\r
-  }\r
-\r
-  *File = LastFile;\r
-  return EFI_SUCCESS;\r
-\r
-CloseLastFile:\r
-  LastFile->Close (LastFile);\r
-\r
-  //\r
-  // We are on the error path; we must have set an error Status for returning\r
-  // to the caller.\r
-  //\r
-  ASSERT (EFI_ERROR (Status));\r
-  return Status;\r
-}\r
diff --git a/IntelFrameworkPkg/Library/FrameworkUefiLib/UefiLibInternal.h b/IntelFrameworkPkg/Library/FrameworkUefiLib/UefiLibInternal.h
deleted file mode 100644 (file)
index 87c5a51..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-/** @file\r
-  Internal include file for UefiLib.\r
-\r
-  Copyright (c) 2007 - 2017, Intel Corporation. All rights reserved.<BR>\r
-   SPDX-License-Identifier: BSD-2-Clause-Patent\r
-**/\r
-\r
-#ifndef __UEFI_LIB_INTERNAL_H_\r
-#define __UEFI_LIB_INTERNAL_H_\r
-\r
-\r
-#include <FrameworkDxe.h>\r
-#include <Protocol/DriverBinding.h>\r
-#include <Protocol/ComponentName.h>\r
-#include <Protocol/ComponentName2.h>\r
-#include <Protocol/DriverConfiguration.h>\r
-#include <Protocol/DriverConfiguration2.h>\r
-#include <Protocol/DriverDiagnostics.h>\r
-#include <Protocol/DriverDiagnostics2.h>\r
-#include <Protocol/LoadedImage.h>\r
-#include <Protocol/GraphicsOutput.h>\r
-#include <Protocol/UgaDraw.h>\r
-#include <Protocol/HiiFont.h>\r
-\r
-#include <Guid/EventGroup.h>\r
-#include <Guid/EventLegacyBios.h>\r
-#include <Guid/GlobalVariable.h>\r
-#include <Library/UefiLib.h>\r
-#include <Library/UefiBootServicesTableLib.h>\r
-#include <Library/UefiRuntimeServicesTableLib.h>\r
-#include <Library/BaseLib.h>\r
-#include <Library/BaseMemoryLib.h>\r
-#include <Library/DebugLib.h>\r
-#include <Library/MemoryAllocationLib.h>\r
-#include <Library/PcdLib.h>\r
-#include <Library/PrintLib.h>\r
-#include <Library/DevicePathLib.h>\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Library/FrameworkUefiLib/UefiLibPrint.c b/IntelFrameworkPkg/Library/FrameworkUefiLib/UefiLibPrint.c
deleted file mode 100644 (file)
index 681dfdf..0000000
+++ /dev/null
@@ -1,816 +0,0 @@
-/** @file\r
-  Mde UEFI library API implementation.\r
-  Print to StdErr or ConOut defined in EFI_SYSTEM_TABLE\r
-\r
-  Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-  SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-**/\r
-\r
-#include "UefiLibInternal.h"\r
-\r
-GLOBAL_REMOVE_IF_UNREFERENCED EFI_GRAPHICS_OUTPUT_BLT_PIXEL mEfiColors[16] = {\r
-  { 0x00, 0x00, 0x00, 0x00 },\r
-  { 0x98, 0x00, 0x00, 0x00 },\r
-  { 0x00, 0x98, 0x00, 0x00 },\r
-  { 0x98, 0x98, 0x00, 0x00 },\r
-  { 0x00, 0x00, 0x98, 0x00 },\r
-  { 0x98, 0x00, 0x98, 0x00 },\r
-  { 0x00, 0x98, 0x98, 0x00 },\r
-  { 0x98, 0x98, 0x98, 0x00 },\r
-  { 0x10, 0x10, 0x10, 0x00 },\r
-  { 0xff, 0x10, 0x10, 0x00 },\r
-  { 0x10, 0xff, 0x10, 0x00 },\r
-  { 0xff, 0xff, 0x10, 0x00 },\r
-  { 0x10, 0x10, 0xff, 0x00 },\r
-  { 0xf0, 0x10, 0xff, 0x00 },\r
-  { 0x10, 0xff, 0xff, 0x00 },\r
-  { 0xff, 0xff, 0xff, 0x00 }\r
-};\r
-\r
-/**\r
-  Internal function which prints a formatted Unicode string to the console output device\r
-  specified by Console\r
-\r
-  This function prints a formatted Unicode string to the console output device\r
-  specified by Console and returns the number of Unicode characters that printed\r
-  to it.  If the length of the formatted Unicode string is greater than PcdUefiLibMaxPrintBufferSize,\r
-  then only the first PcdUefiLibMaxPrintBufferSize characters are sent to Console.\r
-  If Format is NULL, then ASSERT().\r
-  If Format is not aligned on a 16-bit boundary, then ASSERT().\r
-\r
-  @param Format   Null-terminated Unicode format string.\r
-  @param Console  The output console.\r
-  @param Marker   VA_LIST marker for the variable argument list.\r
-\r
-  @return The number of Unicode characters in the produced\r
-          output buffer not including the Null-terminator.\r
-**/\r
-UINTN\r
-InternalPrint (\r
-  IN  CONST CHAR16                     *Format,\r
-  IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL  *Console,\r
-  IN  VA_LIST                          Marker\r
-  )\r
-{\r
-  EFI_STATUS  Status;\r
-  UINTN   Return;\r
-  CHAR16  *Buffer;\r
-  UINTN   BufferSize;\r
-\r
-  ASSERT (Format != NULL);\r
-  ASSERT (((UINTN) Format & BIT0) == 0);\r
-  ASSERT (Console != NULL);\r
-\r
-  BufferSize = (PcdGet32 (PcdUefiLibMaxPrintBufferSize) + 1) * sizeof (CHAR16);\r
-\r
-  Buffer = (CHAR16 *) AllocatePool(BufferSize);\r
-  ASSERT (Buffer != NULL);\r
-\r
-  Return = UnicodeVSPrint (Buffer, BufferSize, Format, Marker);\r
-\r
-  if (Console != NULL && Return > 0) {\r
-    //\r
-    // To be extra safe make sure Console has been initialized\r
-    //\r
-    Status = Console->OutputString (Console, Buffer);\r
-    if (EFI_ERROR (Status)) {\r
-      Return = 0;\r
-    }\r
-  }\r
-\r
-  FreePool (Buffer);\r
-\r
-  return Return;\r
-}\r
-\r
-/**\r
-  Prints a formatted Unicode string to the console output device specified by\r
-  ConOut defined in the EFI_SYSTEM_TABLE.\r
-\r
-  This function prints a formatted Unicode string to the console output device\r
-  specified by ConOut in EFI_SYSTEM_TABLE and returns the number of Unicode\r
-  characters that printed to ConOut.  If the length of the formatted Unicode\r
-  string is greater than PcdUefiLibMaxPrintBufferSize, then only the first\r
-  PcdUefiLibMaxPrintBufferSize characters are sent to ConOut.\r
-  If Format is NULL, then ASSERT().\r
-  If Format is not aligned on a 16-bit boundary, then ASSERT().\r
-  If gST->ConOut is NULL, then ASSERT().\r
-\r
-  @param Format   Null-terminated Unicode format string.\r
-  @param ...      Variable argument list whose contents are accessed based\r
-                  on the format string specified by Format.\r
-\r
-  @return Number of Unicode characters printed to ConOut.\r
-\r
-**/\r
-UINTN\r
-EFIAPI\r
-Print (\r
-  IN CONST CHAR16  *Format,\r
-  ...\r
-  )\r
-{\r
-  VA_LIST Marker;\r
-  UINTN   Return;\r
-\r
-  VA_START (Marker, Format);\r
-\r
-  Return = InternalPrint (Format, gST->ConOut, Marker);\r
-\r
-  VA_END (Marker);\r
-\r
-  return Return;\r
-}\r
-\r
-/**\r
-  Prints a formatted Unicode string to the console output device specified by\r
-  StdErr defined in the EFI_SYSTEM_TABLE.\r
-\r
-  This function prints a formatted Unicode string to the console output device\r
-  specified by StdErr in EFI_SYSTEM_TABLE and returns the number of Unicode\r
-  characters that printed to StdErr.  If the length of the formatted Unicode\r
-  string is greater than PcdUefiLibMaxPrintBufferSize, then only the first\r
-  PcdUefiLibMaxPrintBufferSize characters are sent to StdErr.\r
-  If Format is NULL, then ASSERT().\r
-  If Format is not aligned on a 16-bit boundary, then ASSERT().\r
-  If gST->StdErr is NULL, then ASSERT().\r
-\r
-  @param Format   Null-terminated Unicode format string.\r
-  @param ...      Variable argument list whose contents are accessed based\r
-                  on the format string specified by Format.\r
-\r
-  @return Number of Unicode characters printed to StdErr.\r
-\r
-**/\r
-UINTN\r
-EFIAPI\r
-ErrorPrint (\r
-  IN CONST CHAR16  *Format,\r
-  ...\r
-  )\r
-{\r
-  VA_LIST Marker;\r
-  UINTN   Return;\r
-\r
-  VA_START (Marker, Format);\r
-\r
-  Return = InternalPrint( Format, gST->StdErr, Marker);\r
-\r
-  VA_END (Marker);\r
-\r
-  return Return;\r
-}\r
-\r
-\r
-/**\r
-  Internal function which prints a formatted ASCII string to the console output device\r
-  specified by Console\r
-\r
-  This function prints a formatted ASCII string to the console output device\r
-  specified by Console and returns the number of ASCII characters that printed\r
-  to it.  If the length of the formatted ASCII string is greater than PcdUefiLibMaxPrintBufferSize,\r
-  then only the first PcdUefiLibMaxPrintBufferSize characters are sent to Console.\r
-\r
-  If Format is NULL, then ASSERT().\r
-\r
-  @param Format   Null-terminated ASCII format string.\r
-  @param Console  The output console.\r
-  @param Marker   VA_LIST marker for the variable argument list.\r
-\r
-  @return The number of Unicode characters in the produced\r
-          output buffer not including the Null-terminator.\r
-\r
-**/\r
-UINTN\r
-AsciiInternalPrint (\r
-  IN  CONST CHAR8                      *Format,\r
-  IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL  *Console,\r
-  IN  VA_LIST                          Marker\r
-  )\r
-{\r
-  EFI_STATUS  Status;\r
-  UINTN   Return;\r
-  CHAR16  *Buffer;\r
-  UINTN   BufferSize;\r
-\r
-  ASSERT (Format != NULL);\r
-  ASSERT (Console != NULL);\r
-\r
-  BufferSize = (PcdGet32 (PcdUefiLibMaxPrintBufferSize) + 1) * sizeof (CHAR16);\r
-\r
-  Buffer = (CHAR16 *) AllocatePool(BufferSize);\r
-  ASSERT (Buffer != NULL);\r
-\r
-  Return = UnicodeVSPrintAsciiFormat (Buffer, BufferSize, Format, Marker);\r
-\r
-  if (Console != NULL) {\r
-    //\r
-    // To be extra safe make sure Console has been initialized\r
-    //\r
-    Status = Console->OutputString (Console, Buffer);\r
-    if (EFI_ERROR (Status)) {\r
-      Return = 0;\r
-    }\r
-  }\r
-\r
-  FreePool (Buffer);\r
-\r
-  return Return;\r
-}\r
-\r
-/**\r
-  Prints a formatted ASCII string to the console output device specified by\r
-  ConOut defined in the EFI_SYSTEM_TABLE.\r
-\r
-  This function prints a formatted ASCII string to the console output device\r
-  specified by ConOut in EFI_SYSTEM_TABLE and returns the number of ASCII\r
-  characters that printed to ConOut.  If the length of the formatted ASCII\r
-  string is greater than PcdUefiLibMaxPrintBufferSize, then only the first\r
-  PcdUefiLibMaxPrintBufferSize characters are sent to ConOut.\r
-  If Format is NULL, then ASSERT().\r
-  If gST->ConOut is NULL, then ASSERT().\r
-\r
-  @param Format   Null-terminated ASCII format string.\r
-  @param ...      Variable argument list whose contents are accessed based\r
-                  on the format string specified by Format.\r
-\r
-  @return Number of ASCII characters printed to ConOut.\r
-\r
-**/\r
-UINTN\r
-EFIAPI\r
-AsciiPrint (\r
-  IN CONST CHAR8  *Format,\r
-  ...\r
-  )\r
-{\r
-  VA_LIST Marker;\r
-  UINTN   Return;\r
-  ASSERT (Format != NULL);\r
-\r
-  VA_START (Marker, Format);\r
-\r
-  Return = AsciiInternalPrint( Format, gST->ConOut, Marker);\r
-\r
-  VA_END (Marker);\r
-\r
-  return Return;\r
-}\r
-\r
-/**\r
-  Prints a formatted ASCII string to the console output device specified by\r
-  StdErr defined in the EFI_SYSTEM_TABLE.\r
-\r
-  This function prints a formatted ASCII string to the console output device\r
-  specified by StdErr in EFI_SYSTEM_TABLE and returns the number of ASCII\r
-  characters that printed to StdErr.  If the length of the formatted ASCII\r
-  string is greater than PcdUefiLibMaxPrintBufferSize, then only the first\r
-  PcdUefiLibMaxPrintBufferSize characters are sent to StdErr.\r
-  If Format is NULL, then ASSERT().\r
-  If gST->StdErr is NULL, then ASSERT().\r
-\r
-  @param Format   Null-terminated ASCII format string.\r
-  @param ...      Variable argument list whose contents are accessed based\r
-                  on the format string specified by Format.\r
-\r
-  @return Number of ASCII characters printed to ConErr.\r
-\r
-**/\r
-UINTN\r
-EFIAPI\r
-AsciiErrorPrint (\r
-  IN CONST CHAR8  *Format,\r
-  ...\r
-  )\r
-{\r
-  VA_LIST Marker;\r
-  UINTN   Return;\r
-\r
-  ASSERT (Format != NULL);\r
-\r
-  VA_START (Marker, Format);\r
-\r
-  Return = AsciiInternalPrint( Format, gST->StdErr, Marker);\r
-\r
-  VA_END (Marker);\r
-\r
-  return Return;\r
-}\r
-\r
-/**\r
-  Internal function to print a formatted Unicode string to a graphics console device specified by\r
-  ConsoleOutputHandle defined in the EFI_SYSTEM_TABLE at the given (X,Y) coordinates.\r
-\r
-  This function prints a formatted Unicode string to the graphics console device\r
-  specified by ConsoleOutputHandle in EFI_SYSTEM_TABLE and returns the number of\r
-  Unicode characters printed. The EFI_HII_FONT_PROTOCOL is used to convert the\r
-  string to a bitmap using the glyphs registered with the\r
-  HII database.  No wrapping is performed, so any portions of the string the fall\r
-  outside the active display region will not be displayed.\r
-\r
-  If a graphics console device is not associated with the ConsoleOutputHandle\r
-  defined in the EFI_SYSTEM_TABLE then no string is printed, and 0 is returned.\r
-  If the EFI_HII_FONT_PROTOCOL is not present in the handle database, then no\r
-  string is printed, and 0 is returned.\r
-\r
-  @param  PointX       X coordinate to print the string.\r
-  @param  PointY       Y coordinate to print the string.\r
-  @param  Foreground   The foreground color of the string being printed.  This is\r
-                       an optional parameter that may be NULL.  If it is NULL,\r
-                       then the foreground color of the current ConOut device\r
-                       in the EFI_SYSTEM_TABLE is used.\r
-  @param  Background   The background color of the string being printed.  This is\r
-                       an optional parameter that may be NULL.  If it is NULL,\r
-                       then the background color of the current ConOut device\r
-                       in the EFI_SYSTEM_TABLE is used.\r
-  @param  Buffer       Null-terminated Unicode formatted string.\r
-  @param  PrintNum     The number of Unicode formatted string to be printed.\r
-\r
-  @return  Number of Unicode Characters printed. Zero means no any character\r
-           displayed successfully.\r
-\r
-**/\r
-UINTN\r
-InternalPrintGraphic (\r
-  IN UINTN                            PointX,\r
-  IN UINTN                            PointY,\r
-  IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL    *Foreground,\r
-  IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL    *Background,\r
-  IN CHAR16                           *Buffer,\r
-  IN UINTN                            PrintNum\r
-  )\r
-{\r
-  EFI_STATUS                          Status;\r
-  UINT32                              HorizontalResolution;\r
-  UINT32                              VerticalResolution;\r
-  UINT32                              ColorDepth;\r
-  UINT32                              RefreshRate;\r
-  EFI_HII_FONT_PROTOCOL               *HiiFont;\r
-  EFI_IMAGE_OUTPUT                    *Blt;\r
-  EFI_FONT_DISPLAY_INFO               FontInfo;\r
-  EFI_HII_ROW_INFO                    *RowInfoArray;\r
-  UINTN                               RowInfoArraySize;\r
-  EFI_GRAPHICS_OUTPUT_PROTOCOL        *GraphicsOutput;\r
-  EFI_UGA_DRAW_PROTOCOL               *UgaDraw;\r
-  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL     *Sto;\r
-  EFI_HANDLE                          ConsoleHandle;\r
-  UINTN                               Width;\r
-  UINTN                               Height;\r
-  UINTN                               Delta;\r
-\r
-  HorizontalResolution  = 0;\r
-  VerticalResolution    = 0;\r
-  Blt                   = NULL;\r
-  RowInfoArray          = NULL;\r
-\r
-  ConsoleHandle = gST->ConsoleOutHandle;\r
-\r
-  ASSERT( ConsoleHandle != NULL);\r
-\r
-  Status = gBS->HandleProtocol (\r
-                  ConsoleHandle,\r
-                  &gEfiGraphicsOutputProtocolGuid,\r
-                  (VOID **) &GraphicsOutput\r
-                  );\r
-\r
-  UgaDraw = NULL;\r
-  if (EFI_ERROR (Status) && FeaturePcdGet (PcdUgaConsumeSupport)) {\r
-    //\r
-    // If no GOP available, try to open UGA Draw protocol if supported.\r
-    //\r
-    GraphicsOutput = NULL;\r
-\r
-    Status = gBS->HandleProtocol (\r
-                    ConsoleHandle,\r
-                    &gEfiUgaDrawProtocolGuid,\r
-                    (VOID **) &UgaDraw\r
-                    );\r
-  }\r
-  if (EFI_ERROR (Status)) {\r
-    goto Error;\r
-  }\r
-\r
-  Status = gBS->HandleProtocol (\r
-                  ConsoleHandle,\r
-                  &gEfiSimpleTextOutProtocolGuid,\r
-                  (VOID **) &Sto\r
-                  );\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    goto Error;\r
-  }\r
-\r
-  if (GraphicsOutput != NULL) {\r
-    HorizontalResolution = GraphicsOutput->Mode->Info->HorizontalResolution;\r
-    VerticalResolution = GraphicsOutput->Mode->Info->VerticalResolution;\r
-  } else if (UgaDraw != NULL && FeaturePcdGet (PcdUgaConsumeSupport)) {\r
-    UgaDraw->GetMode (UgaDraw, &HorizontalResolution, &VerticalResolution, &ColorDepth, &RefreshRate);\r
-  } else {\r
-    goto Error;\r
-  }\r
-\r
-  ASSERT ((HorizontalResolution != 0) && (VerticalResolution !=0));\r
-\r
-  Status = gBS->LocateProtocol (&gEfiHiiFontProtocolGuid, NULL, (VOID **) &HiiFont);\r
-  if (EFI_ERROR (Status)) {\r
-    goto Error;\r
-  }\r
-\r
-  Blt = (EFI_IMAGE_OUTPUT *) AllocateZeroPool (sizeof (EFI_IMAGE_OUTPUT));\r
-  ASSERT (Blt != NULL);\r
-\r
-  Blt->Width        = (UINT16) (HorizontalResolution);\r
-  Blt->Height       = (UINT16) (VerticalResolution);\r
-\r
-  ZeroMem (&FontInfo, sizeof (EFI_FONT_DISPLAY_INFO));\r
-\r
-  if (Foreground != NULL) {\r
-    CopyMem (&FontInfo.ForegroundColor, Foreground, sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL));\r
-  } else {\r
-    CopyMem (\r
-      &FontInfo.ForegroundColor,\r
-      &mEfiColors[Sto->Mode->Attribute & 0x0f],\r
-      sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL)\r
-      );\r
-  }\r
-  if (Background != NULL) {\r
-    CopyMem (&FontInfo.BackgroundColor, Background, sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL));\r
-  } else {\r
-    CopyMem (\r
-      &FontInfo.BackgroundColor,\r
-      &mEfiColors[Sto->Mode->Attribute >> 4],\r
-      sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL)\r
-      );\r
-  }\r
-\r
-  if (GraphicsOutput != NULL) {\r
-    Blt->Image.Screen = GraphicsOutput;\r
-\r
-    Status = HiiFont->StringToImage (\r
-                         HiiFont,\r
-                         EFI_HII_IGNORE_IF_NO_GLYPH | EFI_HII_OUT_FLAG_CLIP |\r
-                         EFI_HII_OUT_FLAG_CLIP_CLEAN_X | EFI_HII_OUT_FLAG_CLIP_CLEAN_Y |\r
-                         EFI_HII_IGNORE_LINE_BREAK | EFI_HII_DIRECT_TO_SCREEN,\r
-                         Buffer,\r
-                         &FontInfo,\r
-                         &Blt,\r
-                         PointX,\r
-                         PointY,\r
-                         &RowInfoArray,\r
-                         &RowInfoArraySize,\r
-                         NULL\r
-                         );\r
-    if (EFI_ERROR (Status)) {\r
-      goto Error;\r
-    }\r
-\r
-  } else if (FeaturePcdGet (PcdUgaConsumeSupport)) {\r
-    ASSERT (UgaDraw!= NULL);\r
-\r
-    //\r
-    // Ensure Width * Height * sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL) doesn't overflow.\r
-    //\r
-    if (Blt->Width > DivU64x32 (MAX_UINTN, Blt->Height * sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL))) {\r
-      goto Error;\r
-    }\r
-\r
-    Blt->Image.Bitmap = AllocateZeroPool ((UINT32) Blt->Width * Blt->Height * sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL));\r
-    ASSERT (Blt->Image.Bitmap != NULL);\r
-\r
-    //\r
-    //  StringToImage only support blt'ing image to device using GOP protocol. If GOP is not supported in this platform,\r
-    //  we ask StringToImage to print the string to blt buffer, then blt to device using UgaDraw.\r
-    //\r
-    Status = HiiFont->StringToImage (\r
-                         HiiFont,\r
-                         EFI_HII_IGNORE_IF_NO_GLYPH | EFI_HII_OUT_FLAG_CLIP |\r
-                         EFI_HII_OUT_FLAG_CLIP_CLEAN_X | EFI_HII_OUT_FLAG_CLIP_CLEAN_Y |\r
-                         EFI_HII_IGNORE_LINE_BREAK,\r
-                         Buffer,\r
-                         &FontInfo,\r
-                         &Blt,\r
-                         PointX,\r
-                         PointY,\r
-                         &RowInfoArray,\r
-                         &RowInfoArraySize,\r
-                         NULL\r
-                         );\r
-\r
-    if (!EFI_ERROR (Status)) {\r
-      ASSERT (RowInfoArray != NULL);\r
-      //\r
-      // Explicit Line break characters are ignored, so the updated parameter RowInfoArraySize by StringToImage will\r
-      // always be 1 or 0 (if there is no valid Unicode Char can be printed). ASSERT here to make sure.\r
-      //\r
-      ASSERT (RowInfoArraySize <= 1);\r
-\r
-      if (RowInfoArraySize != 0) {\r
-        Width  = RowInfoArray[0].LineWidth;\r
-        Height = RowInfoArray[0].LineHeight;\r
-        Delta  = Blt->Width * sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL);\r
-      } else {\r
-        Width  = 0;\r
-        Height = 0;\r
-        Delta  = 0;\r
-      }\r
-      Status = UgaDraw->Blt (\r
-                          UgaDraw,\r
-                          (EFI_UGA_PIXEL *) Blt->Image.Bitmap,\r
-                          EfiUgaBltBufferToVideo,\r
-                          PointX,\r
-                          PointY,\r
-                          PointX,\r
-                          PointY,\r
-                          Width,\r
-                          Height,\r
-                          Delta\r
-                          );\r
-    } else {\r
-      goto Error;\r
-    }\r
-    FreePool (Blt->Image.Bitmap);\r
-  } else {\r
-    goto Error;\r
-  }\r
-  //\r
-  // Calculate the number of actual printed characters\r
-  //\r
-  if (RowInfoArraySize != 0) {\r
-  PrintNum = RowInfoArray[0].EndIndex - RowInfoArray[0].StartIndex + 1;\r
-  } else {\r
-    PrintNum = 0;\r
-  }\r
-\r
-  FreePool (RowInfoArray);\r
-  FreePool (Blt);\r
-  return PrintNum;\r
-\r
-Error:\r
-  if (Blt != NULL) {\r
-    FreePool (Blt);\r
-  }\r
-  return 0;\r
-}\r
-\r
-/**\r
-  Prints a formatted Unicode string to a graphics console device specified by\r
-  ConsoleOutputHandle defined in the EFI_SYSTEM_TABLE at the given (X,Y) coordinates.\r
-\r
-  This function prints a formatted Unicode string to the graphics console device\r
-  specified by ConsoleOutputHandle in EFI_SYSTEM_TABLE and returns the number of\r
-  Unicode characters displayed, not including partial characters that may be clipped\r
-  by the right edge of the display.  If the length of the formatted Unicode string is\r
-  greater than PcdUefiLibMaxPrintBufferSize, then at most the first\r
-  PcdUefiLibMaxPrintBufferSize characters are printed.The EFI_HII_FONT_PROTOCOL\r
-  StringToImage() service is used to convert the string to a bitmap using the glyphs\r
-  registered with the HII database. No wrapping is performed, so any portions of the\r
-  string the fall outside the active display region will not be displayed. Please see\r
-  Section 27.2.6 of the UEFI Specification for a description of the supported string\r
-  format including the set of control codes supported by the StringToImage() service.\r
-\r
-  If a graphics console device is not associated with the ConsoleOutputHandle\r
-  defined in the EFI_SYSTEM_TABLE then no string is printed, and 0 is returned.\r
-  If the EFI_HII_FONT_PROTOCOL is not present in the handle database, then no\r
-  string is printed, and 0 is returned.\r
-  If Format is NULL, then ASSERT().\r
-  If Format is not aligned on a 16-bit boundary, then ASSERT().\r
-  If gST->ConsoleOutputHandle is NULL, then ASSERT().\r
-\r
-  @param  PointX       X coordinate to print the string.\r
-  @param  PointY       Y coordinate to print the string.\r
-  @param  ForeGround   The foreground color of the string being printed.  This is\r
-                       an optional parameter that may be NULL.  If it is NULL,\r
-                       then the foreground color of the current ConOut device\r
-                       in the EFI_SYSTEM_TABLE is used.\r
-  @param  BackGround   The background color of the string being printed.  This is\r
-                       an optional parameter that may be NULL.  If it is NULL,\r
-                       then the background color of the current ConOut device\r
-                       in the EFI_SYSTEM_TABLE is used.\r
-  @param  Format       Null-terminated Unicode format string.  See Print Library\r
-                       for the supported format string syntax.\r
-  @param  ...          Variable argument list whose contents are accessed based on\r
-                       the format string specified by Format.\r
-\r
-  @return  The number of Unicode characters printed.\r
-\r
-**/\r
-UINTN\r
-EFIAPI\r
-PrintXY (\r
-  IN UINTN                            PointX,\r
-  IN UINTN                            PointY,\r
-  IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL    *ForeGround, OPTIONAL\r
-  IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL    *BackGround, OPTIONAL\r
-  IN CONST CHAR16                     *Format,\r
-  ...\r
-  )\r
-{\r
-  VA_LIST                             Marker;\r
-  CHAR16                              *Buffer;\r
-  UINTN                               BufferSize;\r
-  UINTN                               PrintNum;\r
-  UINTN                               ReturnNum;\r
-\r
-  ASSERT (Format != NULL);\r
-  ASSERT (((UINTN) Format & BIT0) == 0);\r
-\r
-  VA_START (Marker, Format);\r
-\r
-  BufferSize = (PcdGet32 (PcdUefiLibMaxPrintBufferSize) + 1) * sizeof (CHAR16);\r
-\r
-  Buffer = (CHAR16 *) AllocatePool (BufferSize);\r
-  ASSERT (Buffer != NULL);\r
-\r
-  PrintNum = UnicodeVSPrint (Buffer, BufferSize, Format, Marker);\r
-\r
-  VA_END (Marker);\r
-\r
-  ReturnNum = InternalPrintGraphic (PointX, PointY, ForeGround, BackGround, Buffer, PrintNum);\r
-\r
-  FreePool (Buffer);\r
-\r
-  return ReturnNum;\r
-}\r
-\r
-/**\r
-  Prints a formatted ASCII string to a graphics console device specified by\r
-  ConsoleOutputHandle defined in the EFI_SYSTEM_TABLE at the given (X,Y) coordinates.\r
-\r
-  This function prints a formatted ASCII string to the graphics console device\r
-  specified by ConsoleOutputHandle in EFI_SYSTEM_TABLE and returns the number of\r
-  ASCII characters displayed, not including partial characters that may be clipped\r
-  by the right edge of the display.  If the length of the formatted ASCII string is\r
-  greater than PcdUefiLibMaxPrintBufferSize, then at most the first\r
-  PcdUefiLibMaxPrintBufferSize characters are printed.The EFI_HII_FONT_PROTOCOL\r
-  StringToImage() service is used to convert the string to a bitmap using the glyphs\r
-  registered with the HII database. No wrapping is performed, so any portions of the\r
-  string the fall outside the active display region will not be displayed. Please see\r
-  Section 27.2.6 of the UEFI Specification for a description of the supported string\r
-  format including the set of control codes supported by the StringToImage() service.\r
-\r
-  If a graphics console device is not associated with the ConsoleOutputHandle\r
-  defined in the EFI_SYSTEM_TABLE then no string is printed, and 0 is returned.\r
-  If the EFI_HII_FONT_PROTOCOL is not present in the handle database, then no\r
-  string is printed, and 0 is returned.\r
-  If Format is NULL, then ASSERT().\r
-  If gST->ConsoleOutputHandle is NULL, then ASSERT().\r
-\r
-  @param  PointX       X coordinate to print the string.\r
-  @param  PointY       Y coordinate to print the string.\r
-  @param  ForeGround   The foreground color of the string being printed.  This is\r
-                       an optional parameter that may be NULL.  If it is NULL,\r
-                       then the foreground color of the current ConOut device\r
-                       in the EFI_SYSTEM_TABLE is used.\r
-  @param  BackGround   The background color of the string being printed.  This is\r
-                       an optional parameter that may be NULL.  If it is NULL,\r
-                       then the background color of the current ConOut device\r
-                       in the EFI_SYSTEM_TABLE is used.\r
-  @param  Format       Null-terminated ASCII format string.  See Print Library\r
-                       for the supported format string syntax.\r
-  @param  ...          Variable argument list whose contents are accessed based on\r
-                       the format string specified by Format.\r
-\r
-  @return  The number of ASCII characters printed.\r
-\r
-**/\r
-UINTN\r
-EFIAPI\r
-AsciiPrintXY (\r
-  IN UINTN                            PointX,\r
-  IN UINTN                            PointY,\r
-  IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL    *ForeGround, OPTIONAL\r
-  IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL    *BackGround, OPTIONAL\r
-  IN CONST CHAR8                      *Format,\r
-  ...\r
-  )\r
-{\r
-  VA_LIST                             Marker;\r
-  CHAR16                              *Buffer;\r
-  UINTN                               BufferSize;\r
-  UINTN                               PrintNum;\r
-  UINTN                               ReturnNum;\r
-\r
-  ASSERT (Format != NULL);\r
-\r
-  VA_START (Marker, Format);\r
-\r
-  BufferSize = (PcdGet32 (PcdUefiLibMaxPrintBufferSize) + 1) * sizeof (CHAR16);\r
-\r
-  Buffer = (CHAR16 *) AllocatePool (BufferSize);\r
-  ASSERT (Buffer != NULL);\r
-\r
-  PrintNum = UnicodeSPrintAsciiFormat (Buffer, BufferSize, Format, Marker);\r
-\r
-  VA_END (Marker);\r
-\r
-  ReturnNum = InternalPrintGraphic (PointX, PointY, ForeGround, BackGround, Buffer, PrintNum);\r
-\r
-  FreePool (Buffer);\r
-\r
-  return ReturnNum;\r
-}\r
-\r
-/**\r
-  Appends a formatted Unicode string to a Null-terminated Unicode string\r
-\r
-  This function appends a formatted Unicode string to the Null-terminated\r
-  Unicode string specified by String.   String is optional and may be NULL.\r
-  Storage for the formatted Unicode string returned is allocated using\r
-  AllocatePool().  The pointer to the appended string is returned.  The caller\r
-  is responsible for freeing the returned string.\r
-\r
-  If String is not NULL and not aligned on a 16-bit boundary, then ASSERT().\r
-  If FormatString is NULL, then ASSERT().\r
-  If FormatString is not aligned on a 16-bit boundary, then ASSERT().\r
-\r
-  @param[in] String         A Null-terminated Unicode string.\r
-  @param[in] FormatString   A Null-terminated Unicode format string.\r
-  @param[in]  Marker        VA_LIST marker for the variable argument list.\r
-\r
-  @retval NULL    There was not enough available memory.\r
-  @return         Null-terminated Unicode string is that is the formatted\r
-                  string appended to String.\r
-**/\r
-CHAR16*\r
-EFIAPI\r
-CatVSPrint (\r
-  IN  CHAR16  *String, OPTIONAL\r
-  IN  CONST CHAR16  *FormatString,\r
-  IN  VA_LIST       Marker\r
-  )\r
-{\r
-  UINTN   CharactersRequired;\r
-  UINTN   SizeRequired;\r
-  CHAR16  *BufferToReturn;\r
-  VA_LIST ExtraMarker;\r
-\r
-  VA_COPY (ExtraMarker, Marker);\r
-  CharactersRequired = SPrintLength(FormatString, ExtraMarker);\r
-  VA_END (ExtraMarker);\r
-\r
-  if (String != NULL) {\r
-    SizeRequired = StrSize(String) + (CharactersRequired * sizeof(CHAR16));\r
-  } else {\r
-    SizeRequired = sizeof(CHAR16) + (CharactersRequired * sizeof(CHAR16));\r
-  }\r
-\r
-  BufferToReturn = AllocatePool(SizeRequired);\r
-\r
-  if (BufferToReturn == NULL) {\r
-    return NULL;\r
-  } else {\r
-    BufferToReturn[0] = L'\0';\r
-  }\r
-\r
-  if (String != NULL) {\r
-    StrCpyS(BufferToReturn, SizeRequired / sizeof(CHAR16), String);\r
-  }\r
-\r
-  UnicodeVSPrint(BufferToReturn + StrLen(BufferToReturn), (CharactersRequired+1) * sizeof(CHAR16), FormatString, Marker);\r
-\r
-  ASSERT(StrSize(BufferToReturn)==SizeRequired);\r
-\r
-  return (BufferToReturn);\r
-}\r
-\r
-/**\r
-  Appends a formatted Unicode string to a Null-terminated Unicode string\r
-\r
-  This function appends a formatted Unicode string to the Null-terminated\r
-  Unicode string specified by String.   String is optional and may be NULL.\r
-  Storage for the formatted Unicode string returned is allocated using\r
-  AllocatePool().  The pointer to the appended string is returned.  The caller\r
-  is responsible for freeing the returned string.\r
-\r
-  If String is not NULL and not aligned on a 16-bit boundary, then ASSERT().\r
-  If FormatString is NULL, then ASSERT().\r
-  If FormatString is not aligned on a 16-bit boundary, then ASSERT().\r
-\r
-  @param[in] String         A Null-terminated Unicode string.\r
-  @param[in] FormatString   A Null-terminated Unicode format string.\r
-  @param[in] ...            The variable argument list whose contents are\r
-                            accessed based on the format string specified by\r
-                            FormatString.\r
-\r
-  @retval NULL    There was not enough available memory.\r
-  @return         Null-terminated Unicode string is that is the formatted\r
-                  string appended to String.\r
-**/\r
-CHAR16 *\r
-EFIAPI\r
-CatSPrint (\r
-  IN  CHAR16  *String, OPTIONAL\r
-  IN  CONST CHAR16  *FormatString,\r
-  ...\r
-  )\r
-{\r
-  VA_LIST   Marker;\r
-  CHAR16    *NewString;\r
-\r
-  VA_START (Marker, FormatString);\r
-  NewString = CatVSPrint(String, FormatString, Marker);\r
-  VA_END (Marker);\r
-  return NewString;\r
-}\r
-\r
diff --git a/IntelFrameworkPkg/Library/FrameworkUefiLib/UefiNotTiano.c b/IntelFrameworkPkg/Library/FrameworkUefiLib/UefiNotTiano.c
deleted file mode 100644 (file)
index 019fc02..0000000
+++ /dev/null
@@ -1,321 +0,0 @@
-/** @file\r
-  Library functions that abstract areas of conflict between framework and UEFI 2.0.\r
-\r
-  Help Port Framework code that has conflicts with UEFI 2.0 by hiding the\r
-  old conflicts with library functions and supporting implementations of the old\r
-  (EDK/EFI 1.10) and new (EDK II/UEFI 2.0) way. This module is a DXE driver as\r
-  it contains DXE enum extensions for EFI event services.\r
-\r
-Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-**/\r
-\r
-\r
-\r
-#include "UefiLibInternal.h"\r
-\r
-/**\r
-  Create a Legacy Boot Event.\r
-\r
-  Tiano extended the CreateEvent Type enum to add a legacy boot event type.\r
-  This was bad as Tiano did not own the enum. In UEFI 2.0 CreateEventEx was\r
-  added and now it's possible to not voilate the UEFI specification by\r
-  declaring a GUID for the legacy boot event class. This library supports\r
-  the EDK/EFI 1.10 form and EDK II/UEFI 2.0 form and allows common code to\r
-  work both ways.\r
-\r
-  @param  LegacyBootEvent   Returns the EFI event returned from gBS->CreateEvent(Ex).\r
-\r
-  @retval EFI_SUCCESS       Event was created.\r
-  @retval Other             Event was not created.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-EfiCreateEventLegacyBoot (\r
-  OUT EFI_EVENT  *LegacyBootEvent\r
-  )\r
-{\r
-  return EfiCreateEventLegacyBootEx (\r
-           TPL_CALLBACK,\r
-           EfiEventEmptyFunction,\r
-           NULL,\r
-           LegacyBootEvent\r
-           );\r
-}\r
-\r
-/**\r
-  Create an EFI event in the Legacy Boot Event Group and allows\r
-  the caller to specify a notification function.\r
-\r
-  This function abstracts the creation of the Legacy Boot Event.\r
-  The Framework moved from a proprietary to UEFI 2.0 based mechanism.\r
-  This library abstracts the caller from how this event is created to prevent\r
-  to code form having to change with the version of the specification supported.\r
-  If LegacyBootEvent is NULL, then ASSERT().\r
-\r
-  @param  NotifyTpl         The task priority level of the event.\r
-  @param  NotifyFunction    The notification function to call when the event is signaled.\r
-  @param  NotifyContext     The content to pass to NotifyFunction when the event is signaled.\r
-  @param  LegacyBootEvent   Returns the EFI event returned from gBS->CreateEvent(Ex).\r
-\r
-  @retval EFI_SUCCESS       Event was created.\r
-  @retval Other             Event was not created.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-EfiCreateEventLegacyBootEx (\r
-  IN  EFI_TPL           NotifyTpl,\r
-  IN  EFI_EVENT_NOTIFY  NotifyFunction,  OPTIONAL\r
-  IN  VOID              *NotifyContext,  OPTIONAL\r
-  OUT EFI_EVENT         *LegacyBootEvent\r
-  )\r
-{\r
-  EFI_STATUS    Status;\r
-\r
-  ASSERT (LegacyBootEvent != NULL);\r
-\r
-  if (gST->Hdr.Revision < 0x00020000) {\r
-    //\r
-    // prior to UEFI 2.0 use Tiano extension to EFI\r
-    //\r
-    Status = gBS->CreateEvent (\r
-                    EFI_EVENT_SIGNAL_LEGACY_BOOT | EVT_NOTIFY_SIGNAL,\r
-                    NotifyTpl,\r
-                    NotifyFunction,\r
-                    NotifyContext,\r
-                    LegacyBootEvent\r
-                    );\r
-  } else {\r
-    //\r
-    // For UEFI 2.0 and the future use an Event Group\r
-    //\r
-    Status = gBS->CreateEventEx (\r
-                    EVT_NOTIFY_SIGNAL,\r
-                    NotifyTpl,\r
-                    NotifyFunction,\r
-                    NotifyContext,\r
-                    &gEfiEventLegacyBootGuid,\r
-                    LegacyBootEvent\r
-                    );\r
-  }\r
-\r
-  return Status;\r
-}\r
-\r
-/**\r
-  Create a Read to Boot Event.\r
-\r
-  Tiano extended the CreateEvent Type enum to add a ready to boot event type.\r
-  This was bad as Tiano did not own the enum. In UEFI 2.0 CreateEventEx was\r
-  added and now it's possible to not voilate the UEFI specification and use\r
-  the ready to boot event class defined in UEFI 2.0. This library supports\r
-  the EDK/EFI 1.10 form and EDK II/UEFI 2.0 form and allows common code to\r
-  work both ways.\r
-\r
-  @param  ReadyToBootEvent   Returns the EFI event returned from gBS->CreateEvent(Ex).\r
-\r
-  @retval EFI_SUCCESS       Event was created.\r
-  @retval Other             Event was not created.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-EfiCreateEventReadyToBoot (\r
-  OUT EFI_EVENT  *ReadyToBootEvent\r
-  )\r
-{\r
-  return EfiCreateEventReadyToBootEx (\r
-           TPL_CALLBACK,\r
-           EfiEventEmptyFunction,\r
-           NULL,\r
-           ReadyToBootEvent\r
-           );\r
-}\r
-\r
-/**\r
-  Create an EFI event in the Ready To Boot Event Group and allows\r
-  the caller to specify a notification function.\r
-\r
-  This function abstracts the creation of the Ready to Boot Event.\r
-  The Framework moved from a proprietary to UEFI 2.0 based mechanism.\r
-  This library abstracts the caller from how this event is created to prevent\r
-  to code form having to change with the version of the specification supported.\r
-  If ReadyToBootEvent is NULL, then ASSERT().\r
-\r
-  @param  NotifyTpl         The task priority level of the event.\r
-  @param  NotifyFunction    The notification function to call when the event is signaled.\r
-  @param  NotifyContext     The content to pass to NotifyFunction when the event is signaled.\r
-  @param  ReadyToBootEvent  Returns the EFI event returned from gBS->CreateEvent(Ex).\r
-\r
-  @retval EFI_SUCCESS       Event was created.\r
-  @retval Other             Event was not created.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-EfiCreateEventReadyToBootEx (\r
-  IN  EFI_TPL           NotifyTpl,\r
-  IN  EFI_EVENT_NOTIFY  NotifyFunction,  OPTIONAL\r
-  IN  VOID              *NotifyContext,  OPTIONAL\r
-  OUT EFI_EVENT         *ReadyToBootEvent\r
-  )\r
-{\r
-  EFI_STATUS    Status;\r
-\r
-  ASSERT (ReadyToBootEvent != NULL);\r
-\r
-  if (gST->Hdr.Revision < 0x00020000) {\r
-    //\r
-    // prior to UEFI 2.0 use Tiano extension to EFI\r
-    //\r
-    Status = gBS->CreateEvent (\r
-                    EFI_EVENT_SIGNAL_READY_TO_BOOT | EFI_EVENT_NOTIFY_SIGNAL_ALL,\r
-                    NotifyTpl,\r
-                    NotifyFunction,\r
-                    NotifyContext,\r
-                    ReadyToBootEvent\r
-                    );\r
-  } else {\r
-    //\r
-    // For UEFI 2.0 and the future use an Event Group\r
-    //\r
-    Status = gBS->CreateEventEx (\r
-                    EVT_NOTIFY_SIGNAL,\r
-                    NotifyTpl,\r
-                    NotifyFunction,\r
-                    NotifyContext,\r
-                    &gEfiEventReadyToBootGuid,\r
-                    ReadyToBootEvent\r
-                    );\r
-  }\r
-\r
-  return Status;\r
-}\r
-\r
-\r
-/**\r
-  Signal a Ready to Boot Event.\r
-\r
-  Create a Ready to Boot Event. Signal it and close it. This causes other\r
-  events of the same event group to be signaled in other modules.\r
-\r
-**/\r
-VOID\r
-EFIAPI\r
-EfiSignalEventReadyToBoot (\r
-  VOID\r
-  )\r
-{\r
-  EFI_STATUS    Status;\r
-  EFI_EVENT     ReadyToBootEvent;\r
-\r
-  Status = EfiCreateEventReadyToBoot (&ReadyToBootEvent);\r
-  if (!EFI_ERROR (Status)) {\r
-    gBS->SignalEvent (ReadyToBootEvent);\r
-    gBS->CloseEvent (ReadyToBootEvent);\r
-  }\r
-}\r
-\r
-/**\r
-  Signal a Legacy Boot Event.\r
-\r
-  Create a legacy Boot Event. Signal it and close it. This causes other\r
-  events of the same event group to be signaled in other modules.\r
-\r
-**/\r
-VOID\r
-EFIAPI\r
-EfiSignalEventLegacyBoot (\r
-  VOID\r
-  )\r
-{\r
-  EFI_STATUS    Status;\r
-  EFI_EVENT     LegacyBootEvent;\r
-\r
-  Status = EfiCreateEventLegacyBoot (&LegacyBootEvent);\r
-  if (!EFI_ERROR (Status)) {\r
-    gBS->SignalEvent (LegacyBootEvent);\r
-    gBS->CloseEvent (LegacyBootEvent);\r
-  }\r
-}\r
-\r
-\r
-/**\r
-  Check to see if the Firmware Volume (FV) Media Device Path is valid\r
-\r
-  Tiano extended the EFI 1.10 device path nodes. Tiano does not own this enum\r
-  so as we move to UEFI 2.0 support we must use a mechanism that conforms with\r
-  the UEFI 2.0 specification to define the FV device path. An UEFI GUIDed\r
-  device path is defined for Tiano extensions of device path. If the code\r
-  is compiled to conform with the UEFI 2.0 specification use the new device path\r
-  else use the old form for backwards compatability. The return value to this\r
-  function points to a location in FvDevicePathNode and it does not allocate\r
-  new memory for the GUID pointer that is returned.\r
-\r
-  @param  FvDevicePathNode  Pointer to FV device path to check.\r
-\r
-  @retval NULL              FvDevicePathNode is not valid.\r
-  @retval Other             FvDevicePathNode is valid and pointer to NameGuid was returned.\r
-\r
-**/\r
-EFI_GUID *\r
-EFIAPI\r
-EfiGetNameGuidFromFwVolDevicePathNode (\r
-  IN CONST MEDIA_FW_VOL_FILEPATH_DEVICE_PATH  *FvDevicePathNode\r
-  )\r
-{\r
-  ASSERT (FvDevicePathNode != NULL);\r
-\r
-  //\r
-  // EFI Specification extension on Media Device Path. MEDIA_FW_VOL_FILEPATH_DEVICE_PATH is adopted by UEFI later and added in UEFI2.10.\r
-  // In EdkCompatibility Package, we only support MEDIA_FW_VOL_FILEPATH_DEVICE_PATH that complies with\r
-  // EFI 1.10 and UEFI 2.10.\r
-  //\r
-  if (DevicePathType (&FvDevicePathNode->Header) == MEDIA_DEVICE_PATH &&\r
-      DevicePathSubType (&FvDevicePathNode->Header) == MEDIA_PIWG_FW_FILE_DP) {\r
-    return (EFI_GUID *) &FvDevicePathNode->FvFileName;\r
-  }\r
-\r
-  return NULL;\r
-}\r
-\r
-\r
-/**\r
-  Initialize a Firmware Volume (FV) Media Device Path node.\r
-\r
-  Tiano extended the EFI 1.10 device path nodes. Tiano does not own this enum\r
-  so as we move to UEFI 2.0 support we must use a mechanism that conforms with\r
-  the UEFI 2.0 specification to define the FV device path. An UEFI GUIDed\r
-  device path is defined for Tiano extensions of device path. If the code\r
-  is compiled to conform with the UEFI 2.0 specification use the new device path\r
-  else use the old form for backwards compatability.\r
-\r
-  @param  FvDevicePathNode  Pointer to a FV device path node to initialize\r
-  @param  NameGuid          FV file name to use in FvDevicePathNode\r
-\r
-**/\r
-VOID\r
-EFIAPI\r
-EfiInitializeFwVolDevicepathNode (\r
-  IN OUT MEDIA_FW_VOL_FILEPATH_DEVICE_PATH  *FvDevicePathNode,\r
-  IN CONST EFI_GUID                         *NameGuid\r
-  )\r
-{\r
-  ASSERT (FvDevicePathNode  != NULL);\r
-  ASSERT (NameGuid          != NULL);\r
-\r
-  //\r
-  // EFI Specification extension on Media Device Path. MEDIA_FW_VOL_FILEPATH_DEVICE_PATH is adopted by UEFI later and added in UEFI2.10.\r
-  // In EdkCompatibility Package, we only support MEDIA_FW_VOL_FILEPATH_DEVICE_PATH that complies with\r
-  // EFI 1.10 and UEFI 2.10.\r
-  //\r
-  FvDevicePathNode->Header.Type     = MEDIA_DEVICE_PATH;\r
-  FvDevicePathNode->Header.SubType  = MEDIA_PIWG_FW_FILE_DP;\r
-  SetDevicePathNodeLength (&FvDevicePathNode->Header, sizeof (MEDIA_FW_VOL_FILEPATH_DEVICE_PATH));\r
-\r
-  CopyGuid (&FvDevicePathNode->FvFileName, NameGuid);\r
-}\r
-\r
diff --git a/IntelFrameworkPkg/Library/PeiHobLibFramework/HobLib.c b/IntelFrameworkPkg/Library/PeiHobLibFramework/HobLib.c
deleted file mode 100644 (file)
index 3aea298..0000000
+++ /dev/null
@@ -1,854 +0,0 @@
-/** @file\r
- Instance of HOB Library using PEI Services.\r
-\r
- HOB Library implementation that uses PEI Services to retrieve the HOB List.\r
- This library instance uses EFI_HOB_TYPE_CV defined in Intel framework HOB specification v0.9\r
- to implement HobLib BuildCvHob() API.\r
-\r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-**/\r
-\r
-#include <FrameworkPei.h>\r
-\r
-#include <Guid/MemoryAllocationHob.h>\r
-\r
-#include <Library/HobLib.h>\r
-#include <Library/DebugLib.h>\r
-#include <Library/PeiServicesLib.h>\r
-#include <Library/BaseMemoryLib.h>\r
-\r
-/**\r
-  Returns the pointer to the HOB list.\r
-\r
-  This function returns the pointer to first HOB in the list.\r
-  For PEI phase, the PEI service GetHobList() can be used to retrieve the pointer\r
-  to the HOB list.  For the DXE phase, the HOB list pointer can be retrieved through\r
-  the EFI System Table by looking up theHOB list GUID in the System Configuration Table.\r
-  Since the System Configuration Table does not exist that the time the DXE Core is\r
-  launched, the DXE Core uses a global variable from the DXE Core Entry Point Library\r
-  to manage the pointer to the HOB list.\r
-\r
-  If the pointer to the HOB list is NULL, then ASSERT().\r
-\r
-  @return The pointer to the HOB list.\r
-\r
-**/\r
-VOID *\r
-EFIAPI\r
-GetHobList (\r
-  VOID\r
-  )\r
-{\r
-  EFI_STATUS            Status;\r
-  VOID                  *HobList;\r
-\r
-  Status = PeiServicesGetHobList (&HobList);\r
-  ASSERT_EFI_ERROR (Status);\r
-  ASSERT (HobList != NULL);\r
-\r
-  return HobList;\r
-}\r
-\r
-/**\r
-  Returns the next instance of a HOB type from the starting HOB.\r
-\r
-  This function searches the first instance of a HOB type from the starting HOB pointer.\r
-  If there does not exist such HOB type from the starting HOB pointer, it will return NULL.\r
-  In contrast with macro GET_NEXT_HOB(), this function does not skip the starting HOB pointer\r
-  unconditionally: it returns HobStart back if HobStart itself meets the requirement;\r
-  caller is required to use GET_NEXT_HOB() if it wishes to skip current HobStart.\r
-\r
-  If HobStart is NULL, then ASSERT().\r
-\r
-  @param  Type          The HOB type to return.\r
-  @param  HobStart      The starting HOB pointer to search from.\r
-\r
-  @return The next instance of a HOB type from the starting HOB.\r
-\r
-**/\r
-VOID *\r
-EFIAPI\r
-GetNextHob (\r
-  IN UINT16                 Type,\r
-  IN CONST VOID             *HobStart\r
-  )\r
-{\r
-  EFI_PEI_HOB_POINTERS  Hob;\r
-\r
-  ASSERT (HobStart != NULL);\r
-\r
-  Hob.Raw = (UINT8 *) HobStart;\r
-  //\r
-  // Parse the HOB list until end of list or matching type is found.\r
-  //\r
-  while (!END_OF_HOB_LIST (Hob)) {\r
-    if (Hob.Header->HobType == Type) {\r
-      return Hob.Raw;\r
-    }\r
-    Hob.Raw = GET_NEXT_HOB (Hob);\r
-  }\r
-  return NULL;\r
-}\r
-\r
-/**\r
-  Returns the first instance of a HOB type among the whole HOB list.\r
-\r
-  This function searches the first instance of a HOB type among the whole HOB list.\r
-  If there does not exist such HOB type in the HOB list, it will return NULL.\r
-\r
-  If the pointer to the HOB list is NULL, then ASSERT().\r
-\r
-  @param  Type          The HOB type to return.\r
-\r
-  @return The next instance of a HOB type from the starting HOB.\r
-\r
-**/\r
-VOID *\r
-EFIAPI\r
-GetFirstHob (\r
-  IN UINT16                 Type\r
-  )\r
-{\r
-  VOID      *HobList;\r
-\r
-  HobList = GetHobList ();\r
-  return GetNextHob (Type, HobList);\r
-}\r
-\r
-/**\r
-  Returns the next instance of the matched GUID HOB from the starting HOB.\r
-\r
-  This function searches the first instance of a HOB from the starting HOB pointer.\r
-  Such HOB should satisfy two conditions:\r
-  its HOB type is EFI_HOB_TYPE_GUID_EXTENSION and its GUID Name equals to the input Guid.\r
-  If there does not exist such HOB from the starting HOB pointer, it will return NULL.\r
-  Caller is required to apply GET_GUID_HOB_DATA () and GET_GUID_HOB_DATA_SIZE ()\r
-  to extract the data section and its size info respectively.\r
-  In contrast with macro GET_NEXT_HOB(), this function does not skip the starting HOB pointer\r
-  unconditionally: it returns HobStart back if HobStart itself meets the requirement;\r
-  caller is required to use GET_NEXT_HOB() if it wishes to skip current HobStart.\r
-\r
-  If Guid is NULL, then ASSERT().\r
-  If HobStart is NULL, then ASSERT().\r
-\r
-  @param  Guid          The GUID to match with in the HOB list.\r
-  @param  HobStart      A pointer to a Guid.\r
-\r
-  @return The next instance of the matched GUID HOB from the starting HOB.\r
-\r
-**/\r
-VOID *\r
-EFIAPI\r
-GetNextGuidHob (\r
-  IN CONST EFI_GUID         *Guid,\r
-  IN CONST VOID             *HobStart\r
-  )\r
-{\r
-  EFI_PEI_HOB_POINTERS  GuidHob;\r
-\r
-  GuidHob.Raw = (UINT8 *) HobStart;\r
-  while ((GuidHob.Raw = GetNextHob (EFI_HOB_TYPE_GUID_EXTENSION, GuidHob.Raw)) != NULL) {\r
-    if (CompareGuid (Guid, &GuidHob.Guid->Name)) {\r
-      break;\r
-    }\r
-    GuidHob.Raw = GET_NEXT_HOB (GuidHob);\r
-  }\r
-  return GuidHob.Raw;\r
-}\r
-\r
-/**\r
-  Returns the first instance of the matched GUID HOB among the whole HOB list.\r
-\r
-  This function searches the first instance of a HOB among the whole HOB list.\r
-  Such HOB should satisfy two conditions:\r
-  its HOB type is EFI_HOB_TYPE_GUID_EXTENSION and its GUID Name equals to the input Guid.\r
-  If there does not exist such HOB from the starting HOB pointer, it will return NULL.\r
-  Caller is required to apply GET_GUID_HOB_DATA () and GET_GUID_HOB_DATA_SIZE ()\r
-  to extract the data section and its size info respectively.\r
-\r
-  If the pointer to the HOB list is NULL, then ASSERT().\r
-  If Guid is NULL, then ASSERT().\r
-\r
-  @param  Guid          The GUID to match with in the HOB list.\r
-\r
-  @return The first instance of the matched GUID HOB among the whole HOB list.\r
-\r
-**/\r
-VOID *\r
-EFIAPI\r
-GetFirstGuidHob (\r
-  IN CONST EFI_GUID         *Guid\r
-  )\r
-{\r
-  VOID      *HobList;\r
-\r
-  HobList = GetHobList ();\r
-  return GetNextGuidHob (Guid, HobList);\r
-}\r
-\r
-/**\r
-  Get the system boot mode from the HOB list.\r
-\r
-  This function returns the system boot mode information from the\r
-  PHIT HOB in HOB list.\r
-\r
-  If the pointer to the HOB list is NULL, then ASSERT().\r
-\r
-  @param  VOID\r
-\r
-  @return The Boot Mode.\r
-\r
-**/\r
-EFI_BOOT_MODE\r
-EFIAPI\r
-GetBootModeHob (\r
-  VOID\r
-  )\r
-{\r
-  EFI_STATUS             Status;\r
-  EFI_BOOT_MODE          BootMode;\r
-\r
-  Status = PeiServicesGetBootMode (&BootMode);\r
-  ASSERT_EFI_ERROR (Status);\r
-\r
-  return BootMode;\r
-}\r
-\r
-/**\r
-  Adds a new HOB to the HOB List.\r
-\r
-  This internal function enables PEIMs to create various types of HOBs.\r
-\r
-  @param  Type          Type of the new HOB.\r
-  @param  Length        Length of the new HOB to allocate.\r
-\r
-  @retval  NULL         The HOB could not be allocated.\r
-  @retval  others       The address of new HOB.\r
-\r
-**/\r
-VOID *\r
-EFIAPI\r
-InternalPeiCreateHob (\r
-  IN UINT16                      Type,\r
-  IN UINT16                      Length\r
-  )\r
-{\r
-  EFI_STATUS        Status;\r
-  VOID              *Hob;\r
-\r
-  Status = PeiServicesCreateHob (Type, Length, &Hob);\r
-  if (EFI_ERROR (Status)) {\r
-    Hob = NULL;\r
-  }\r
-  //\r
-  // Assume the process of HOB building is always successful.\r
-  //\r
-  ASSERT (Hob != NULL);\r
-  return Hob;\r
-}\r
-\r
-/**\r
-  Builds a HOB for a loaded PE32 module.\r
-\r
-  This function builds a HOB for a loaded PE32 module.\r
-  It can only be invoked during PEI phase;\r
-  for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.\r
-\r
-  If ModuleName is NULL, then ASSERT().\r
-  If there is no additional space for HOB creation, then ASSERT().\r
-\r
-  @param  ModuleName              The GUID File Name of the module.\r
-  @param  MemoryAllocationModule  The 64 bit physical address of the module.\r
-  @param  ModuleLength            The length of the module in bytes.\r
-  @param  EntryPoint              The 64 bit physical address of the module entry point.\r
-\r
-**/\r
-VOID\r
-EFIAPI\r
-BuildModuleHob (\r
-  IN CONST EFI_GUID         *ModuleName,\r
-  IN EFI_PHYSICAL_ADDRESS   MemoryAllocationModule,\r
-  IN UINT64                 ModuleLength,\r
-  IN EFI_PHYSICAL_ADDRESS   EntryPoint\r
-  )\r
-{\r
-  EFI_HOB_MEMORY_ALLOCATION_MODULE  *Hob;\r
-\r
-  ASSERT (((MemoryAllocationModule & (EFI_PAGE_SIZE - 1)) == 0) &&\r
-          ((ModuleLength & (EFI_PAGE_SIZE - 1)) == 0));\r
-\r
-  Hob = InternalPeiCreateHob (EFI_HOB_TYPE_MEMORY_ALLOCATION, (UINT16) sizeof (EFI_HOB_MEMORY_ALLOCATION_MODULE));\r
-  if (Hob == NULL) {\r
-    return;\r
-  }\r
-\r
-  CopyGuid (&(Hob->MemoryAllocationHeader.Name), &gEfiHobMemoryAllocModuleGuid);\r
-  Hob->MemoryAllocationHeader.MemoryBaseAddress = MemoryAllocationModule;\r
-  Hob->MemoryAllocationHeader.MemoryLength      = ModuleLength;\r
-  Hob->MemoryAllocationHeader.MemoryType        = EfiBootServicesCode;\r
-\r
-  //\r
-  // Zero the reserved space to match HOB spec\r
-  //\r
-  ZeroMem (Hob->MemoryAllocationHeader.Reserved, sizeof (Hob->MemoryAllocationHeader.Reserved));\r
-\r
-  CopyGuid (&Hob->ModuleName, ModuleName);\r
-  Hob->EntryPoint = EntryPoint;\r
-}\r
-\r
-/**\r
-  Builds a HOB that describes a chunk of system memory with Owner GUID.\r
-\r
-  This function builds a HOB that describes a chunk of system memory.\r
-  It can only be invoked during PEI phase;\r
-  for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.\r
-\r
-  If there is no additional space for HOB creation, then ASSERT().\r
-\r
-  @param  ResourceType        The type of resource described by this HOB.\r
-  @param  ResourceAttribute   The resource attributes of the memory described by this HOB.\r
-  @param  PhysicalStart       The 64 bit physical address of memory described by this HOB.\r
-  @param  NumberOfBytes       The length of the memory described by this HOB in bytes.\r
-  @param  OwnerGUID           GUID for the owner of this resource.\r
-\r
-**/\r
-VOID\r
-EFIAPI\r
-BuildResourceDescriptorWithOwnerHob (\r
-  IN EFI_RESOURCE_TYPE            ResourceType,\r
-  IN EFI_RESOURCE_ATTRIBUTE_TYPE  ResourceAttribute,\r
-  IN EFI_PHYSICAL_ADDRESS         PhysicalStart,\r
-  IN UINT64                       NumberOfBytes,\r
-  IN EFI_GUID                     *OwnerGUID\r
-  )\r
-{\r
-  EFI_HOB_RESOURCE_DESCRIPTOR  *Hob;\r
-\r
-  Hob = InternalPeiCreateHob (EFI_HOB_TYPE_RESOURCE_DESCRIPTOR, (UINT16) sizeof (EFI_HOB_RESOURCE_DESCRIPTOR));\r
-  if (Hob == NULL) {\r
-    return;\r
-  }\r
-\r
-  Hob->ResourceType      = ResourceType;\r
-  Hob->ResourceAttribute = ResourceAttribute;\r
-  Hob->PhysicalStart     = PhysicalStart;\r
-  Hob->ResourceLength    = NumberOfBytes;\r
-\r
-  CopyGuid (&Hob->Owner, OwnerGUID);\r
-}\r
-\r
-/**\r
-  Builds a HOB that describes a chunk of system memory.\r
-\r
-  This function builds a HOB that describes a chunk of system memory.\r
-  It can only be invoked during PEI phase;\r
-  for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.\r
-\r
-  If there is no additional space for HOB creation, then ASSERT().\r
-\r
-  @param  ResourceType        The type of resource described by this HOB.\r
-  @param  ResourceAttribute   The resource attributes of the memory described by this HOB.\r
-  @param  PhysicalStart       The 64 bit physical address of memory described by this HOB.\r
-  @param  NumberOfBytes       The length of the memory described by this HOB in bytes.\r
-\r
-**/\r
-VOID\r
-EFIAPI\r
-BuildResourceDescriptorHob (\r
-  IN EFI_RESOURCE_TYPE            ResourceType,\r
-  IN EFI_RESOURCE_ATTRIBUTE_TYPE  ResourceAttribute,\r
-  IN EFI_PHYSICAL_ADDRESS         PhysicalStart,\r
-  IN UINT64                       NumberOfBytes\r
-  )\r
-{\r
-  EFI_HOB_RESOURCE_DESCRIPTOR  *Hob;\r
-\r
-  Hob = InternalPeiCreateHob (EFI_HOB_TYPE_RESOURCE_DESCRIPTOR, (UINT16) sizeof (EFI_HOB_RESOURCE_DESCRIPTOR));\r
-  if (Hob == NULL) {\r
-    return;\r
-  }\r
-\r
-  Hob->ResourceType      = ResourceType;\r
-  Hob->ResourceAttribute = ResourceAttribute;\r
-  Hob->PhysicalStart     = PhysicalStart;\r
-  Hob->ResourceLength    = NumberOfBytes;\r
-  ZeroMem (&(Hob->Owner), sizeof (EFI_GUID));\r
-}\r
-\r
-/**\r
-  Builds a customized HOB tagged with a GUID for identification and returns\r
-  the start address of GUID HOB data.\r
-\r
-  This function builds a customized HOB tagged with a GUID for identification\r
-  and returns the start address of GUID HOB data so that caller can fill the customized data.\r
-  The HOB Header and Name field is already stripped.\r
-  It can only be invoked during PEI phase;\r
-  for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.\r
-\r
-  If Guid is NULL, then ASSERT().\r
-  If there is no additional space for HOB creation, then ASSERT().\r
-  If DataLength >= (0x10000 - sizeof (EFI_HOB_GUID_TYPE)), then ASSERT().\r
-\r
-  @param  Guid          The GUID to tag the customized HOB.\r
-  @param  DataLength    The size of the data payload for the GUID HOB.\r
-\r
-  @retval  NULL         The GUID HOB could not be allocated.\r
-  @retval  others       The start address of GUID HOB data.\r
-\r
-**/\r
-VOID *\r
-EFIAPI\r
-BuildGuidHob (\r
-  IN CONST EFI_GUID              *Guid,\r
-  IN UINTN                       DataLength\r
-  )\r
-{\r
-  EFI_HOB_GUID_TYPE *Hob;\r
-\r
-  //\r
-  // Make sure Guid is valid\r
-  //\r
-  ASSERT (Guid != NULL);\r
-\r
-  //\r
-  // Make sure that data length is not too long.\r
-  //\r
-  ASSERT (DataLength <= (0xffff - sizeof (EFI_HOB_GUID_TYPE)));\r
-\r
-  Hob = InternalPeiCreateHob (EFI_HOB_TYPE_GUID_EXTENSION, (UINT16) (sizeof (EFI_HOB_GUID_TYPE) + DataLength));\r
-  if (Hob == NULL) {\r
-    return Hob;\r
-  }\r
-  CopyGuid (&Hob->Name, Guid);\r
-  return Hob + 1;\r
-}\r
-\r
-/**\r
-  Builds a customized HOB tagged with a GUID for identification, copies the input data to the HOB\r
-  data field, and returns the start address of the GUID HOB data.\r
-\r
-  This function builds a customized HOB tagged with a GUID for identification and copies the input\r
-  data to the HOB data field and returns the start address of the GUID HOB data.  It can only be\r
-  invoked during PEI phase; for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.\r
-  The HOB Header and Name field is already stripped.\r
-  It can only be invoked during PEI phase;\r
-  for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.\r
-\r
-  If Guid is NULL, then ASSERT().\r
-  If Data is NULL and DataLength > 0, then ASSERT().\r
-  If there is no additional space for HOB creation, then ASSERT().\r
-  If DataLength >= (0x10000 - sizeof (EFI_HOB_GUID_TYPE)), then ASSERT().\r
-\r
-  @param  Guid          The GUID to tag the customized HOB.\r
-  @param  Data          The data to be copied into the data field of the GUID HOB.\r
-  @param  DataLength    The size of the data payload for the GUID HOB.\r
-\r
-  @retval  NULL         The GUID HOB could not be allocated.\r
-  @retval  others       The start address of GUID HOB data.\r
-\r
-**/\r
-VOID *\r
-EFIAPI\r
-BuildGuidDataHob (\r
-  IN CONST EFI_GUID              *Guid,\r
-  IN VOID                        *Data,\r
-  IN UINTN                       DataLength\r
-  )\r
-{\r
-  VOID  *HobData;\r
-\r
-  ASSERT (Data != NULL || DataLength == 0);\r
-\r
-  HobData = BuildGuidHob (Guid, DataLength);\r
-  if (HobData == NULL) {\r
-    return HobData;\r
-  }\r
-\r
-  return CopyMem (HobData, Data, DataLength);\r
-}\r
-\r
-/**\r
-  Check FV alignment.\r
-\r
-  @param  BaseAddress   The base address of the Firmware Volume.\r
-  @param  Length        The size of the Firmware Volume in bytes.\r
-\r
-  @retval TRUE          FvImage buffer is at its required alignment.\r
-  @retval FALSE         FvImage buffer is not at its required alignment.\r
-\r
-**/\r
-BOOLEAN\r
-InternalCheckFvAlignment (\r
-  IN EFI_PHYSICAL_ADDRESS       BaseAddress,\r
-  IN UINT64                     Length\r
-  )\r
-{\r
-  EFI_FIRMWARE_VOLUME_HEADER    *FwVolHeader;\r
-  UINT32                        FvAlignment;\r
-\r
-  FvAlignment = 0;\r
-  FwVolHeader = (EFI_FIRMWARE_VOLUME_HEADER *) (UINTN) BaseAddress;\r
-\r
-  //\r
-  // If EFI_FVB2_WEAK_ALIGNMENT is set in the volume header then the first byte of the volume\r
-  // can be aligned on any power-of-two boundary. A weakly aligned volume can not be moved from\r
-  // its initial linked location and maintain its alignment.\r
-  //\r
-  if ((FwVolHeader->Attributes & EFI_FVB2_WEAK_ALIGNMENT) != EFI_FVB2_WEAK_ALIGNMENT) {\r
-    //\r
-    // Get FvHeader alignment\r
-    //\r
-    FvAlignment = 1 << ((FwVolHeader->Attributes & EFI_FVB2_ALIGNMENT) >> 16);\r
-    //\r
-    // FvAlignment must be greater than or equal to 8 bytes of the minimum FFS alignment value.\r
-    //\r
-    if (FvAlignment < 8) {\r
-      FvAlignment = 8;\r
-    }\r
-    if ((UINTN)BaseAddress % FvAlignment != 0) {\r
-      //\r
-      // FvImage buffer is not at its required alignment.\r
-      //\r
-      DEBUG ((\r
-        DEBUG_ERROR,\r
-        "Unaligned FvImage found at 0x%lx:0x%lx, the required alignment is 0x%x\n",\r
-        BaseAddress,\r
-        Length,\r
-        FvAlignment\r
-        ));\r
-      return FALSE;\r
-    }\r
-  }\r
-\r
-  return TRUE;\r
-}\r
-\r
-/**\r
-  Builds a Firmware Volume HOB.\r
-\r
-  This function builds a Firmware Volume HOB.\r
-  It can only be invoked during PEI phase;\r
-  for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.\r
-\r
-  If there is no additional space for HOB creation, then ASSERT().\r
-  If the FvImage buffer is not at its required alignment, then ASSERT().\r
-\r
-  @param  BaseAddress   The base address of the Firmware Volume.\r
-  @param  Length        The size of the Firmware Volume in bytes.\r
-\r
-**/\r
-VOID\r
-EFIAPI\r
-BuildFvHob (\r
-  IN EFI_PHYSICAL_ADDRESS        BaseAddress,\r
-  IN UINT64                      Length\r
-  )\r
-{\r
-  EFI_HOB_FIRMWARE_VOLUME  *Hob;\r
-\r
-  if (!InternalCheckFvAlignment (BaseAddress, Length)) {\r
-    ASSERT (FALSE);\r
-    return;\r
-  }\r
-\r
-  Hob = InternalPeiCreateHob (EFI_HOB_TYPE_FV, (UINT16) sizeof (EFI_HOB_FIRMWARE_VOLUME));\r
-  if (Hob == NULL) {\r
-    return;\r
-  }\r
-\r
-  Hob->BaseAddress = BaseAddress;\r
-  Hob->Length      = Length;\r
-}\r
-\r
-/**\r
-  Builds a EFI_HOB_TYPE_FV2 HOB.\r
-\r
-  This function builds a EFI_HOB_TYPE_FV2 HOB.\r
-  It can only be invoked during PEI phase;\r
-  for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.\r
-\r
-  If there is no additional space for HOB creation, then ASSERT().\r
-  If the FvImage buffer is not at its required alignment, then ASSERT().\r
-\r
-  @param  BaseAddress   The base address of the Firmware Volume.\r
-  @param  Length        The size of the Firmware Volume in bytes.\r
-  @param  FvName        The name of the Firmware Volume.\r
-  @param  FileName      The name of the file.\r
-\r
-**/\r
-VOID\r
-EFIAPI\r
-BuildFv2Hob (\r
-  IN          EFI_PHYSICAL_ADDRESS        BaseAddress,\r
-  IN          UINT64                      Length,\r
-  IN CONST    EFI_GUID                    *FvName,\r
-  IN CONST    EFI_GUID                    *FileName\r
-  )\r
-{\r
-  EFI_HOB_FIRMWARE_VOLUME2  *Hob;\r
-\r
-  if (!InternalCheckFvAlignment (BaseAddress, Length)) {\r
-    ASSERT (FALSE);\r
-    return;\r
-  }\r
-\r
-  Hob = InternalPeiCreateHob (EFI_HOB_TYPE_FV2, (UINT16) sizeof (EFI_HOB_FIRMWARE_VOLUME2));\r
-  if (Hob == NULL) {\r
-    return;\r
-  }\r
-\r
-  Hob->BaseAddress = BaseAddress;\r
-  Hob->Length      = Length;\r
-  CopyGuid (&Hob->FvName, FvName);\r
-  CopyGuid (&Hob->FileName, FileName);\r
-}\r
-\r
-/**\r
-  Builds a EFI_HOB_TYPE_FV3 HOB.\r
-\r
-  This function builds a EFI_HOB_TYPE_FV3 HOB.\r
-  It can only be invoked during PEI phase;\r
-  for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.\r
-\r
-  If there is no additional space for HOB creation, then ASSERT().\r
-  If the FvImage buffer is not at its required alignment, then ASSERT().\r
-\r
-  @param BaseAddress            The base address of the Firmware Volume.\r
-  @param Length                 The size of the Firmware Volume in bytes.\r
-  @param AuthenticationStatus   The authentication status.\r
-  @param ExtractedFv            TRUE if the FV was extracted as a file within\r
-                                another firmware volume. FALSE otherwise.\r
-  @param FvName                 The name of the Firmware Volume.\r
-                                Valid only if IsExtractedFv is TRUE.\r
-  @param FileName               The name of the file.\r
-                                Valid only if IsExtractedFv is TRUE.\r
-\r
-**/\r
-VOID\r
-EFIAPI\r
-BuildFv3Hob (\r
-  IN          EFI_PHYSICAL_ADDRESS        BaseAddress,\r
-  IN          UINT64                      Length,\r
-  IN          UINT32                      AuthenticationStatus,\r
-  IN          BOOLEAN                     ExtractedFv,\r
-  IN CONST    EFI_GUID                    *FvName, OPTIONAL\r
-  IN CONST    EFI_GUID                    *FileName OPTIONAL\r
-  )\r
-{\r
-  EFI_HOB_FIRMWARE_VOLUME3  *Hob;\r
-\r
-  if (!InternalCheckFvAlignment (BaseAddress, Length)) {\r
-    ASSERT (FALSE);\r
-    return;\r
-  }\r
-\r
-  Hob = InternalPeiCreateHob (EFI_HOB_TYPE_FV3, (UINT16) sizeof (EFI_HOB_FIRMWARE_VOLUME3));\r
-  if (Hob == NULL) {\r
-    return;\r
-  }\r
-\r
-  Hob->BaseAddress          = BaseAddress;\r
-  Hob->Length               = Length;\r
-  Hob->AuthenticationStatus = AuthenticationStatus;\r
-  Hob->ExtractedFv          = ExtractedFv;\r
-  if (ExtractedFv) {\r
-    CopyGuid (&Hob->FvName, FvName);\r
-    CopyGuid (&Hob->FileName, FileName);\r
-  }\r
-}\r
-\r
-/**\r
-  Builds a Capsule Volume HOB.\r
-\r
-  This function builds a Capsule Volume HOB.\r
-  It can only be invoked during PEI phase;\r
-  for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.\r
-\r
-  If the platform does not support Capsule Volume HOBs, then ASSERT().\r
-  If there is no additional space for HOB creation, then ASSERT().\r
-\r
-  @param  BaseAddress   The base address of the Capsule Volume.\r
-  @param  Length        The size of the Capsule Volume in bytes.\r
-\r
-**/\r
-VOID\r
-EFIAPI\r
-BuildCvHob (\r
-  IN EFI_PHYSICAL_ADDRESS        BaseAddress,\r
-  IN UINT64                      Length\r
-  )\r
-{\r
-  EFI_HOB_CAPSULE_VOLUME     *Hob;\r
-\r
-  Hob = InternalPeiCreateHob (EFI_HOB_TYPE_CV, (UINT16) sizeof (EFI_HOB_CAPSULE_VOLUME));\r
-  if (Hob == NULL) {\r
-    return;\r
-  }\r
-\r
-  Hob->BaseAddress = BaseAddress;\r
-  Hob->Length      = Length;\r
-}\r
-\r
-/**\r
-  Builds a HOB for the CPU.\r
-\r
-  This function builds a HOB for the CPU.\r
-  It can only be invoked during PEI phase;\r
-  for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.\r
-\r
-  If there is no additional space for HOB creation, then ASSERT().\r
-\r
-  @param  SizeOfMemorySpace   The maximum physical memory addressability of the processor.\r
-  @param  SizeOfIoSpace       The maximum physical I/O addressability of the processor.\r
-\r
-**/\r
-VOID\r
-EFIAPI\r
-BuildCpuHob (\r
-  IN UINT8                       SizeOfMemorySpace,\r
-  IN UINT8                       SizeOfIoSpace\r
-  )\r
-{\r
-  EFI_HOB_CPU  *Hob;\r
-\r
-  Hob = InternalPeiCreateHob (EFI_HOB_TYPE_CPU, (UINT16) sizeof (EFI_HOB_CPU));\r
-  if (Hob == NULL) {\r
-    return;\r
-  }\r
-\r
-  Hob->SizeOfMemorySpace = SizeOfMemorySpace;\r
-  Hob->SizeOfIoSpace     = SizeOfIoSpace;\r
-\r
-  //\r
-  // Zero the reserved space to match HOB spec\r
-  //\r
-  ZeroMem (Hob->Reserved, sizeof (Hob->Reserved));\r
-}\r
-\r
-/**\r
-  Builds a HOB for the Stack.\r
-\r
-  This function builds a HOB for the stack.\r
-  It can only be invoked during PEI phase;\r
-  for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.\r
-\r
-  If there is no additional space for HOB creation, then ASSERT().\r
-\r
-  @param  BaseAddress   The 64 bit physical address of the Stack.\r
-  @param  Length        The length of the stack in bytes.\r
-\r
-**/\r
-VOID\r
-EFIAPI\r
-BuildStackHob (\r
-  IN EFI_PHYSICAL_ADDRESS        BaseAddress,\r
-  IN UINT64                      Length\r
-  )\r
-{\r
-  EFI_HOB_MEMORY_ALLOCATION_STACK  *Hob;\r
-\r
-  ASSERT (((BaseAddress & (EFI_PAGE_SIZE - 1)) == 0) &&\r
-          ((Length & (EFI_PAGE_SIZE - 1)) == 0));\r
-\r
-  Hob = InternalPeiCreateHob (EFI_HOB_TYPE_MEMORY_ALLOCATION, (UINT16) sizeof (EFI_HOB_MEMORY_ALLOCATION_STACK));\r
-  if (Hob == NULL) {\r
-    return;\r
-  }\r
-\r
-  CopyGuid (&(Hob->AllocDescriptor.Name), &gEfiHobMemoryAllocStackGuid);\r
-  Hob->AllocDescriptor.MemoryBaseAddress = BaseAddress;\r
-  Hob->AllocDescriptor.MemoryLength      = Length;\r
-  Hob->AllocDescriptor.MemoryType        = EfiBootServicesData;\r
-\r
-  //\r
-  // Zero the reserved space to match HOB spec\r
-  //\r
-  ZeroMem (Hob->AllocDescriptor.Reserved, sizeof (Hob->AllocDescriptor.Reserved));\r
-}\r
-\r
-/**\r
-  Builds a HOB for the BSP store.\r
-\r
-  This function builds a HOB for BSP store.\r
-  It can only be invoked during PEI phase;\r
-  for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.\r
-\r
-  If there is no additional space for HOB creation, then ASSERT().\r
-\r
-  @param  BaseAddress   The 64 bit physical address of the BSP.\r
-  @param  Length        The length of the BSP store in bytes.\r
-  @param  MemoryType    Type of memory allocated by this HOB.\r
-\r
-**/\r
-VOID\r
-EFIAPI\r
-BuildBspStoreHob (\r
-  IN EFI_PHYSICAL_ADDRESS        BaseAddress,\r
-  IN UINT64                      Length,\r
-  IN EFI_MEMORY_TYPE             MemoryType\r
-  )\r
-{\r
-  EFI_HOB_MEMORY_ALLOCATION_BSP_STORE  *Hob;\r
-\r
-  ASSERT (((BaseAddress & (EFI_PAGE_SIZE - 1)) == 0) &&\r
-          ((Length & (EFI_PAGE_SIZE - 1)) == 0));\r
-\r
-  Hob = InternalPeiCreateHob (EFI_HOB_TYPE_MEMORY_ALLOCATION, (UINT16) sizeof (EFI_HOB_MEMORY_ALLOCATION_BSP_STORE));\r
-  if (Hob == NULL) {\r
-    return;\r
-  }\r
-\r
-  CopyGuid (&(Hob->AllocDescriptor.Name), &gEfiHobMemoryAllocBspStoreGuid);\r
-  Hob->AllocDescriptor.MemoryBaseAddress = BaseAddress;\r
-  Hob->AllocDescriptor.MemoryLength      = Length;\r
-  Hob->AllocDescriptor.MemoryType        = MemoryType;\r
-\r
-  //\r
-  // Zero the reserved space to match HOB spec\r
-  //\r
-  ZeroMem (Hob->AllocDescriptor.Reserved, sizeof (Hob->AllocDescriptor.Reserved));\r
-}\r
-\r
-/**\r
-  Builds a HOB for the memory allocation.\r
-\r
-  This function builds a HOB for the memory allocation.\r
-  It can only be invoked during PEI phase;\r
-  for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.\r
-\r
-  If there is no additional space for HOB creation, then ASSERT().\r
-\r
-  @param  BaseAddress   The 64 bit physical address of the memory.\r
-  @param  Length        The length of the memory allocation in bytes.\r
-  @param  MemoryType    Type of memory allocated by this HOB.\r
-\r
-**/\r
-VOID\r
-EFIAPI\r
-BuildMemoryAllocationHob (\r
-  IN EFI_PHYSICAL_ADDRESS        BaseAddress,\r
-  IN UINT64                      Length,\r
-  IN EFI_MEMORY_TYPE             MemoryType\r
-  )\r
-{\r
-  EFI_HOB_MEMORY_ALLOCATION  *Hob;\r
-\r
-  ASSERT (((BaseAddress & (EFI_PAGE_SIZE - 1)) == 0) &&\r
-          ((Length & (EFI_PAGE_SIZE - 1)) == 0));\r
-\r
-  Hob = InternalPeiCreateHob (EFI_HOB_TYPE_MEMORY_ALLOCATION, (UINT16) sizeof (EFI_HOB_MEMORY_ALLOCATION));\r
-  if (Hob == NULL) {\r
-    return;\r
-  }\r
-\r
-  ZeroMem (&(Hob->AllocDescriptor.Name), sizeof (EFI_GUID));\r
-  Hob->AllocDescriptor.MemoryBaseAddress = BaseAddress;\r
-  Hob->AllocDescriptor.MemoryLength      = Length;\r
-  Hob->AllocDescriptor.MemoryType        = MemoryType;\r
-  //\r
-  // Zero the reserved space to match HOB spec\r
-  //\r
-  ZeroMem (Hob->AllocDescriptor.Reserved, sizeof (Hob->AllocDescriptor.Reserved));\r
-}\r
diff --git a/IntelFrameworkPkg/Library/PeiHobLibFramework/PeiHobLib.uni b/IntelFrameworkPkg/Library/PeiHobLibFramework/PeiHobLib.uni
deleted file mode 100644 (file)
index 0be9147..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-// /** @file\r
-// Instance of HOB Library using PEI Services.\r
-//\r
-// HOB Library implementation that uses PEI Services to retrieve the HOB List.\r
-// This library instance uses EFI_HOB_TYPE_CV defined in Intel framework HOB specification v0.9\r
-// to implement HobLib BuildCvHob() API.\r
-//\r
-// Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>\r
-//\r
-// SPDX-License-Identifier: BSD-2-Clause-Patent\r
-//\r
-// **/\r
-\r
-\r
-#string STR_MODULE_ABSTRACT             #language en-US "Instance of HOB Library using PEI Services"\r
-\r
-#string STR_MODULE_DESCRIPTION          #language en-US "The HOB Library implementation that uses PEI Services to retrieve the HOB List. This library instance uses EFI_HOB_TYPE_CV defined in Intel Framework HOB Specification v0.9 to implement the HobLib BuildCvHob() API."\r
-\r
diff --git a/IntelFrameworkPkg/Library/PeiHobLibFramework/PeiHobLibFramework.inf b/IntelFrameworkPkg/Library/PeiHobLibFramework/PeiHobLibFramework.inf
deleted file mode 100644 (file)
index dac5a03..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-## @file\r
-# Instance of HOB Library using PEI Services.\r
-#\r
-# HOB Library implementation that uses PEI Services to retrieve the HOB List.\r
-# This library instance uses EFI_HOB_TYPE_CV defined in Intel framework HOB specification v0.9\r
-# to implement HobLib BuildCvHob() API.\r
-#\r
-# Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
-#\r
-#  SPDX-License-Identifier: BSD-2-Clause-Patent\r
-#\r
-#\r
-##\r
-\r
-[Defines]\r
-  INF_VERSION                    = 0x00010005\r
-  BASE_NAME                      = PeiHobLib\r
-  MODULE_UNI_FILE                = PeiHobLib.uni\r
-  FILE_GUID                      = B6684612-6F5D-425d-952C-F462792EC00B\r
-  MODULE_TYPE                    = PEIM\r
-  VERSION_STRING                 = 1.0\r
-  LIBRARY_CLASS                  = HobLib|PEIM PEI_CORE SEC\r
-\r
-\r
-#\r
-#  VALID_ARCHITECTURES           = IA32 X64 EBC (EBC is for build only)\r
-#\r
-\r
-[Sources]\r
-  HobLib.c\r
-\r
-\r
-[Packages]\r
-  MdePkg/MdePkg.dec\r
-  IntelFrameworkPkg/IntelFrameworkPkg.dec\r
-\r
-[LibraryClasses]\r
-  BaseMemoryLib\r
-  PeiServicesLib\r
-  DebugLib\r
-\r
-[Guids]\r
-  gEfiHobMemoryAllocStackGuid                   ## SOMETIMES_PRODUCES ## HOB # MemoryAllocation StackHob\r
-  gEfiHobMemoryAllocBspStoreGuid                ## SOMETIMES_PRODUCES ## HOB # MemoryAllocation BspStoreHob\r
-  gEfiHobMemoryAllocModuleGuid                  ## SOMETIMES_PRODUCES ## HOB # MemoryAllocation ModuleHob\r
-\r
-#\r
-# [Hob]\r
-#   MEMORY_ALLOCATION     ## SOMETIMES_PRODUCES\r
-#   RESOURCE_DESCRIPTOR   ## SOMETIMES_PRODUCES\r
-#   FIRMWARE_VOLUME       ## SOMETIMES_PRODUCES\r
-#\r
-\r
diff --git a/IntelFrameworkPkg/Library/PeiSmbusLibSmbusPpi/InternalSmbusLib.h b/IntelFrameworkPkg/Library/PeiSmbusLibSmbusPpi/InternalSmbusLib.h
deleted file mode 100644 (file)
index b3bbc35..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-/** @file\r
-  Internal header file for Smbus library.\r
-\r
-Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-**/\r
-\r
-#ifndef _INTERNAL_SMBUS_LIB_H_\r
-#define _INTERNAL_SMBUS_LIB_H_\r
-\r
-\r
-#include <FrameworkPei.h>\r
-\r
-#include <Ppi/Smbus.h>\r
-\r
-#include <Library/SmbusLib.h>\r
-#include <Library/DebugLib.h>\r
-#include <Library/PeiServicesLib.h>\r
-#include <Library/BaseMemoryLib.h>\r
-#include <Library/PeiServicesTablePointerLib.h>\r
-\r
-//\r
-// Declaration for internal functions\r
-//\r
-\r
-/**\r
-  Gets Smbus PPIs.\r
-\r
-  This internal function retrieves Smbus PPI from PPI database.\r
-\r
-  @param  VOID\r
-\r
-  @return The pointer to Smbus PPI.\r
-\r
-**/\r
-EFI_PEI_SMBUS_PPI *\r
-InternalGetSmbusPpi (\r
-  VOID\r
-  );\r
-\r
-/**\r
-  Executes an SMBus operation to an SMBus controller.\r
-\r
-  This function provides a standard way to execute Smbus script\r
-  as defined in the SmBus Specification. The data can either be of\r
-  the Length byte, word, or a block of data.\r
-\r
-  @param  SmbusOperation  Signifies which particular SMBus hardware protocol instance that it will use to\r
-                          execute the SMBus transactions.\r
-  @param  SmBusAddress    Address that encodes the SMBUS Slave Address,\r
-                          SMBUS Command, SMBUS Data Length, and PEC.\r
-  @param  Length          Signifies the number of bytes that this operation will do. The maximum number of\r
-                          bytes can be revision specific and operation specific.\r
-  @param  Buffer          Contains the value of data to execute to the SMBus slave device. Not all operations\r
-                          require this argument. The length of this buffer is identified by Length.\r
-  @param  Status          Return status for the executed command.\r
-                          This is an optional parameter and may be NULL.\r
-\r
-  @return The actual number of bytes that are executed for this operation.\r
-\r
-**/\r
-UINTN\r
-InternalSmBusExec (\r
-  IN     EFI_SMBUS_OPERATION        SmbusOperation,\r
-  IN     UINTN                      SmBusAddress,\r
-  IN     UINTN                      Length,\r
-  IN OUT VOID                       *Buffer,\r
-     OUT RETURN_STATUS              *Status        OPTIONAL\r
-  );\r
-\r
-#endif\r
diff --git a/IntelFrameworkPkg/Library/PeiSmbusLibSmbusPpi/PeiSmbusLib.c b/IntelFrameworkPkg/Library/PeiSmbusLibSmbusPpi/PeiSmbusLib.c
deleted file mode 100644 (file)
index 5a93371..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-/** @file\r
-  Implementation of SmBusLib class library for PEI phase.\r
-\r
-Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-**/\r
-\r
-#include "InternalSmbusLib.h"\r
-\r
-/**\r
-  Gets Smbus PPIs.\r
-\r
-  This internal function retrieves Smbus PPI from PPI database.\r
-  If gEfiPeiSmbusPpiGuid can not be located, then ASSERT()\r
-\r
-  @return The pointer to Smbus PPI.\r
-\r
-**/\r
-EFI_PEI_SMBUS_PPI *\r
-InternalGetSmbusPpi (\r
-  VOID\r
-  )\r
-{\r
-  EFI_STATUS            Status;\r
-  EFI_PEI_SMBUS_PPI     *SmbusPpi;\r
-\r
-  Status = PeiServicesLocatePpi (&gEfiPeiSmbusPpiGuid, 0, NULL, (VOID **) &SmbusPpi);\r
-  ASSERT_EFI_ERROR (Status);\r
-  ASSERT (SmbusPpi != NULL);\r
-\r
-  return SmbusPpi;\r
-}\r
-\r
-/**\r
-  Executes an SMBus operation to an SMBus controller.\r
-\r
-  This function provides a standard way to execute Smbus script\r
-  as defined in the SmBus Specification. The data can either be of\r
-  the Length byte, word, or a block of data.\r
-\r
-  @param  SmbusOperation  Signifies which particular SMBus hardware protocol instance that it will use to\r
-                          execute the SMBus transactions.\r
-  @param  SmBusAddress    Address that encodes the SMBUS Slave Address,\r
-                          SMBUS Command, SMBUS Data Length, and PEC.\r
-  @param  Length          Signifies the number of bytes that this operation will do. The maximum number of\r
-                          bytes can be revision specific and operation specific.\r
-  @param  Buffer          Contains the value of data to execute to the SMBus slave device. Not all operations\r
-                          require this argument. The length of this buffer is identified by Length.\r
-  @param  Status          Return status for the executed command.\r
-                          This is an optional parameter and may be NULL.\r
-\r
-  @return The actual number of bytes that are executed for this operation..\r
-\r
-**/\r
-UINTN\r
-InternalSmBusExec (\r
-  IN     EFI_SMBUS_OPERATION        SmbusOperation,\r
-  IN     UINTN                      SmBusAddress,\r
-  IN     UINTN                      Length,\r
-  IN OUT VOID                       *Buffer,\r
-     OUT RETURN_STATUS              *Status        OPTIONAL\r
-  )\r
-{\r
-  EFI_PEI_SMBUS_PPI         *SmbusPpi;\r
-  CONST EFI_PEI_SERVICES    **PeiServices;\r
-  RETURN_STATUS             ReturnStatus;\r
-  EFI_SMBUS_DEVICE_ADDRESS  SmbusDeviceAddress;\r
-\r
-  PeiServices = GetPeiServicesTablePointer ();\r
-  SmbusPpi    = InternalGetSmbusPpi ();\r
-  SmbusDeviceAddress.SmbusDeviceAddress = SMBUS_LIB_SLAVE_ADDRESS (SmBusAddress);\r
-\r
-  ReturnStatus = SmbusPpi->Execute (\r
-                             (EFI_PEI_SERVICES  **) PeiServices,\r
-                             SmbusPpi,\r
-                             SmbusDeviceAddress,\r
-                             SMBUS_LIB_COMMAND (SmBusAddress),\r
-                             SmbusOperation,\r
-                             SMBUS_LIB_PEC (SmBusAddress),\r
-                             &Length,\r
-                             Buffer\r
-                             );\r
-  if (Status != NULL) {\r
-    *Status = ReturnStatus;\r
-  }\r
-\r
-  return Length;\r
-}\r
diff --git a/IntelFrameworkPkg/Library/PeiSmbusLibSmbusPpi/PeiSmbusLibSmbusPpi.inf b/IntelFrameworkPkg/Library/PeiSmbusLibSmbusPpi/PeiSmbusLibSmbusPpi.inf
deleted file mode 100644 (file)
index d961310..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-## @file\r
-# SMBUS library that layers on top of the SMBUS PPI.\r
-#\r
-# Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
-#\r
-#  SPDX-License-Identifier: BSD-2-Clause-Patent\r
-#\r
-#\r
-##\r
-\r
-[Defines]\r
-  INF_VERSION                    = 0x00010005\r
-  BASE_NAME                      = PeiSmbusLibSmbusPpi\r
-  MODULE_UNI_FILE                = PeiSmbusLibSmbusPpi.uni\r
-  FILE_GUID                      = 51C4C059-67F0-4e3c-9A55-FF42A8291C8C\r
-  MODULE_TYPE                    = PEIM\r
-  VERSION_STRING                 = 1.0\r
-  LIBRARY_CLASS                  = SmbusLib|PEIM\r
-\r
-\r
-#\r
-# The following information is for reference only and not required by the build tools.\r
-#\r
-#  VALID_ARCHITECTURES           = IA32 X64 EBC\r
-#\r
-\r
-[Sources]\r
-  SmbusLib.c\r
-  PeiSmbusLib.c\r
-  InternalSmbusLib.h\r
-\r
-\r
-[Packages]\r
-  MdePkg/MdePkg.dec\r
-  IntelFrameworkPkg/IntelFrameworkPkg.dec\r
-\r
-\r
-[LibraryClasses]\r
-  BaseMemoryLib\r
-  PeiServicesLib\r
-  DebugLib\r
-  PeiServicesTablePointerLib\r
-\r
-[Ppis]\r
-  gEfiPeiSmbusPpiGuid                           ## CONSUMES\r
-\r
-[Depex]\r
-  gEfiPeiSmbusPpiGuid\r
diff --git a/IntelFrameworkPkg/Library/PeiSmbusLibSmbusPpi/PeiSmbusLibSmbusPpi.uni b/IntelFrameworkPkg/Library/PeiSmbusLibSmbusPpi/PeiSmbusLibSmbusPpi.uni
deleted file mode 100644 (file)
index 06817f4..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-// /** @file\r
-// SMBUS library that layers on top of the SMBUS PPI.\r
-//\r
-// The SMBUS library that layers on top of the SMBUS PPI.\r
-//\r
-// Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>\r
-//\r
-// SPDX-License-Identifier: BSD-2-Clause-Patent\r
-//\r
-// **/\r
-\r
-\r
-#string STR_MODULE_ABSTRACT             #language en-US "Layers on top of the SMBUS PPI"\r
-\r
-#string STR_MODULE_DESCRIPTION          #language en-US "The SMBUS library that layers on top of the SMBUS PPI."\r
-\r
diff --git a/IntelFrameworkPkg/Library/PeiSmbusLibSmbusPpi/SmbusLib.c b/IntelFrameworkPkg/Library/PeiSmbusLibSmbusPpi/SmbusLib.c
deleted file mode 100644 (file)
index 8d8e30e..0000000
+++ /dev/null
@@ -1,464 +0,0 @@
-/** @file\r
-Implementation of SmBusLib class library for PEI phase.\r
-\r
-Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-\r
-Module Name: SmbusLib.c\r
-\r
-**/\r
-\r
-#include "InternalSmbusLib.h"\r
-\r
-/**\r
-  Executes an SMBUS quick read command.\r
-\r
-  Executes an SMBUS quick read command on the SMBUS device specified by SmBusAddress.\r
-  Only the SMBUS slave address field of SmBusAddress is required.\r
-  If Status is not NULL, then the status of the executed command is returned in Status.\r
-  If PEC is set in SmBusAddress, then ASSERT().\r
-  If Command in SmBusAddress is not zero, then ASSERT().\r
-  If Length in SmBusAddress is not zero, then ASSERT().\r
-  If any reserved bits of SmBusAddress are set, then ASSERT().\r
-\r
-  @param  SmBusAddress    Address that encodes the SMBUS Slave Address,\r
-                          SMBUS Command, SMBUS Data Length, and PEC.\r
-  @param  Status          Return status for the executed command.\r
-                          This is an optional parameter and may be NULL.\r
-\r
-**/\r
-VOID\r
-EFIAPI\r
-SmBusQuickRead (\r
-  IN  UINTN                     SmBusAddress,\r
-  OUT RETURN_STATUS             *Status       OPTIONAL\r
-  )\r
-{\r
-  ASSERT (!SMBUS_LIB_PEC (SmBusAddress));\r
-  ASSERT (SMBUS_LIB_COMMAND (SmBusAddress)   == 0);\r
-  ASSERT (SMBUS_LIB_LENGTH (SmBusAddress)    == 0);\r
-  ASSERT (SMBUS_LIB_RESERVED (SmBusAddress)  == 0);\r
-\r
-  InternalSmBusExec (EfiSmbusQuickRead, SmBusAddress, 0, NULL, Status);\r
-}\r
-\r
-/**\r
-  Executes an SMBUS quick write command.\r
-\r
-  Executes an SMBUS quick write command on the SMBUS device specified by SmBusAddress.\r
-  Only the SMBUS slave address field of SmBusAddress is required.\r
-  If Status is not NULL, then the status of the executed command is returned in Status.\r
-  If PEC is set in SmBusAddress, then ASSERT().\r
-  If Command in SmBusAddress is not zero, then ASSERT().\r
-  If Length in SmBusAddress is not zero, then ASSERT().\r
-  If any reserved bits of SmBusAddress are set, then ASSERT().\r
-\r
-  @param  SmBusAddress    Address that encodes the SMBUS Slave Address,\r
-                          SMBUS Command, SMBUS Data Length, and PEC.\r
-  @param  Status          Return status for the executed command.\r
-                          This is an optional parameter and may be NULL.\r
-\r
-**/\r
-VOID\r
-EFIAPI\r
-SmBusQuickWrite (\r
-  IN  UINTN                     SmBusAddress,\r
-  OUT RETURN_STATUS             *Status       OPTIONAL\r
-  )\r
-{\r
-  ASSERT (!SMBUS_LIB_PEC (SmBusAddress));\r
-  ASSERT (SMBUS_LIB_COMMAND (SmBusAddress)   == 0);\r
-  ASSERT (SMBUS_LIB_LENGTH (SmBusAddress)    == 0);\r
-  ASSERT (SMBUS_LIB_RESERVED (SmBusAddress)  == 0);\r
-\r
-  InternalSmBusExec (EfiSmbusQuickWrite, SmBusAddress, 0, NULL, Status);\r
-}\r
-\r
-/**\r
-  Executes an SMBUS receive byte command.\r
-\r
-  Executes an SMBUS receive byte command on the SMBUS device specified by SmBusAddress.\r
-  Only the SMBUS slave address field of SmBusAddress is required.\r
-  The byte received from the SMBUS is returned.\r
-  If Status is not NULL, then the status of the executed command is returned in Status.\r
-  If Command in SmBusAddress is not zero, then ASSERT().\r
-  If Length in SmBusAddress is not zero, then ASSERT().\r
-  If any reserved bits of SmBusAddress are set, then ASSERT().\r
-\r
-  @param  SmBusAddress    Address that encodes the SMBUS Slave Address,\r
-                          SMBUS Command, SMBUS Data Length, and PEC.\r
-  @param  Status          Return status for the executed command.\r
-                          This is an optional parameter and may be NULL.\r
-\r
-  @return The byte received from the SMBUS.\r
-\r
-**/\r
-UINT8\r
-EFIAPI\r
-SmBusReceiveByte (\r
-  IN  UINTN          SmBusAddress,\r
-  OUT RETURN_STATUS  *Status        OPTIONAL\r
-  )\r
-{\r
-  UINT8   Byte;\r
-\r
-  ASSERT (SMBUS_LIB_COMMAND (SmBusAddress) == 0);\r
-  ASSERT (SMBUS_LIB_LENGTH (SmBusAddress)  == 0);\r
-  ASSERT (SMBUS_LIB_RESERVED (SmBusAddress) == 0);\r
-\r
-  InternalSmBusExec (EfiSmbusReceiveByte, SmBusAddress, 1, &Byte, Status);\r
-\r
-  return Byte;\r
-}\r
-\r
-/**\r
-  Executes an SMBUS send byte command.\r
-\r
-  Executes an SMBUS send byte command on the SMBUS device specified by SmBusAddress.\r
-  The byte specified by Value is sent.\r
-  Only the SMBUS slave address field of SmBusAddress is required.  Value is returned.\r
-  If Status is not NULL, then the status of the executed command is returned in Status.\r
-  If Command in SmBusAddress is not zero, then ASSERT().\r
-  If Length in SmBusAddress is not zero, then ASSERT().\r
-  If any reserved bits of SmBusAddress are set, then ASSERT().\r
-\r
-  @param  SmBusAddress    Address that encodes the SMBUS Slave Address,\r
-                          SMBUS Command, SMBUS Data Length, and PEC.\r
-  @param  Value           The 8-bit value to send.\r
-  @param  Status          Return status for the executed command.\r
-                          This is an optional parameter and may be NULL.\r
-\r
-  @return The parameter of Value.\r
-\r
-**/\r
-UINT8\r
-EFIAPI\r
-SmBusSendByte (\r
-  IN  UINTN          SmBusAddress,\r
-  IN  UINT8          Value,\r
-  OUT RETURN_STATUS  *Status        OPTIONAL\r
-  )\r
-{\r
-  UINT8   Byte;\r
-\r
-  ASSERT (SMBUS_LIB_COMMAND (SmBusAddress)   == 0);\r
-  ASSERT (SMBUS_LIB_LENGTH (SmBusAddress)    == 0);\r
-  ASSERT (SMBUS_LIB_RESERVED (SmBusAddress) == 0);\r
-\r
-  Byte   = Value;\r
-  InternalSmBusExec (EfiSmbusSendByte, SmBusAddress, 1, &Byte, Status);\r
-\r
-  return Value;\r
-}\r
-\r
-/**\r
-  Executes an SMBUS read data byte command.\r
-\r
-  Executes an SMBUS read data byte command on the SMBUS device specified by SmBusAddress.\r
-  Only the SMBUS slave address and SMBUS command fields of SmBusAddress are required.\r
-  The 8-bit value read from the SMBUS is returned.\r
-  If Status is not NULL, then the status of the executed command is returned in Status.\r
-  If Length in SmBusAddress is not zero, then ASSERT().\r
-  If any reserved bits of SmBusAddress are set, then ASSERT().\r
-\r
-  @param  SmBusAddress    Address that encodes the SMBUS Slave Address,\r
-                          SMBUS Command, SMBUS Data Length, and PEC.\r
-  @param  Status          Return status for the executed command.\r
-                          This is an optional parameter and may be NULL.\r
-\r
-  @return The byte read from the SMBUS.\r
-\r
-**/\r
-UINT8\r
-EFIAPI\r
-SmBusReadDataByte (\r
-  IN  UINTN          SmBusAddress,\r
-  OUT RETURN_STATUS  *Status        OPTIONAL\r
-  )\r
-{\r
-  UINT8   Byte;\r
-\r
-  ASSERT (SMBUS_LIB_LENGTH (SmBusAddress)    == 0);\r
-  ASSERT (SMBUS_LIB_RESERVED (SmBusAddress) == 0);\r
-\r
-  InternalSmBusExec (EfiSmbusReadByte, SmBusAddress, 1, &Byte, Status);\r
-\r
-  return Byte;\r
-}\r
-\r
-/**\r
-  Executes an SMBUS write data byte command.\r
-\r
-  Executes an SMBUS write data byte command on the SMBUS device specified by SmBusAddress.\r
-  The 8-bit value specified by Value is written.\r
-  Only the SMBUS slave address and SMBUS command fields of SmBusAddress are required.\r
-  Value is returned.\r
-  If Status is not NULL, then the status of the executed command is returned in Status.\r
-  If Length in SmBusAddress is not zero, then ASSERT().\r
-  If any reserved bits of SmBusAddress are set, then ASSERT().\r
-\r
-  @param  SmBusAddress    Address that encodes the SMBUS Slave Address,\r
-                          SMBUS Command, SMBUS Data Length, and PEC.\r
-  @param  Value           The 8-bit value to write.\r
-  @param  Status          Return status for the executed command.\r
-                          This is an optional parameter and may be NULL.\r
-\r
-  @return The parameter of Value.\r
-\r
-**/\r
-UINT8\r
-EFIAPI\r
-SmBusWriteDataByte (\r
-  IN  UINTN          SmBusAddress,\r
-  IN  UINT8          Value,\r
-  OUT RETURN_STATUS  *Status        OPTIONAL\r
-  )\r
-{\r
-  UINT8   Byte;\r
-\r
-  ASSERT (SMBUS_LIB_LENGTH (SmBusAddress)    == 0);\r
-  ASSERT (SMBUS_LIB_RESERVED (SmBusAddress) == 0);\r
-\r
-  Byte = Value;\r
-  InternalSmBusExec (EfiSmbusWriteByte, SmBusAddress, 1, &Byte, Status);\r
-\r
-  return Value;\r
-}\r
-\r
-/**\r
-  Executes an SMBUS read data word command.\r
-\r
-  Executes an SMBUS read data word command on the SMBUS device specified by SmBusAddress.\r
-  Only the SMBUS slave address and SMBUS command fields of SmBusAddress are required.\r
-  The 16-bit value read from the SMBUS is returned.\r
-  If Status is not NULL, then the status of the executed command is returned in Status.\r
-  If Length in SmBusAddress is not zero, then ASSERT().\r
-  If any reserved bits of SmBusAddress are set, then ASSERT().\r
-\r
-  @param  SmBusAddress    Address that encodes the SMBUS Slave Address,\r
-                          SMBUS Command, SMBUS Data Length, and PEC.\r
-  @param  Status          Return status for the executed command.\r
-                          This is an optional parameter and may be NULL.\r
-\r
-  @return The byte read from the SMBUS.\r
-\r
-**/\r
-UINT16\r
-EFIAPI\r
-SmBusReadDataWord (\r
-  IN  UINTN          SmBusAddress,\r
-  OUT RETURN_STATUS  *Status        OPTIONAL\r
-  )\r
-{\r
-  UINT16  Word;\r
-\r
-  ASSERT (SMBUS_LIB_LENGTH (SmBusAddress)    == 0);\r
-  ASSERT (SMBUS_LIB_RESERVED (SmBusAddress) == 0);\r
-\r
-  InternalSmBusExec (EfiSmbusReadWord, SmBusAddress, 2, &Word, Status);\r
-\r
-  return Word;\r
-}\r
-\r
-/**\r
-  Executes an SMBUS write data word command.\r
-\r
-  Executes an SMBUS write data word command on the SMBUS device specified by SmBusAddress.\r
-  The 16-bit value specified by Value is written.\r
-  Only the SMBUS slave address and SMBUS command fields of SmBusAddress are required.\r
-  Value is returned.\r
-  If Status is not NULL, then the status of the executed command is returned in Status.\r
-  If Length in SmBusAddress is not zero, then ASSERT().\r
-  If any reserved bits of SmBusAddress are set, then ASSERT().\r
-\r
-  @param  SmBusAddress    Address that encodes the SMBUS Slave Address,\r
-                          SMBUS Command, SMBUS Data Length, and PEC.\r
-  @param  Value           The 16-bit value to write.\r
-  @param  Status          Return status for the executed command.\r
-                          This is an optional parameter and may be NULL.\r
-\r
-  @return The parameter of Value.\r
-\r
-**/\r
-UINT16\r
-EFIAPI\r
-SmBusWriteDataWord (\r
-  IN  UINTN          SmBusAddress,\r
-  IN  UINT16         Value,\r
-  OUT RETURN_STATUS  *Status        OPTIONAL\r
-  )\r
-{\r
-  UINT16  Word;\r
-\r
-  ASSERT (SMBUS_LIB_LENGTH (SmBusAddress)    == 0);\r
-  ASSERT (SMBUS_LIB_RESERVED (SmBusAddress) == 0);\r
-\r
-  Word = Value;\r
-  InternalSmBusExec (EfiSmbusWriteWord, SmBusAddress, 2, &Word, Status);\r
-\r
-  return Value;\r
-}\r
-\r
-/**\r
-  Executes an SMBUS process call command.\r
-\r
-  Executes an SMBUS process call command on the SMBUS device specified by SmBusAddress.\r
-  The 16-bit value specified by Value is written.\r
-  Only the SMBUS slave address and SMBUS command fields of SmBusAddress are required.\r
-  The 16-bit value returned by the process call command is returned.\r
-  If Status is not NULL, then the status of the executed command is returned in Status.\r
-  If Length in SmBusAddress is not zero, then ASSERT().\r
-  If any reserved bits of SmBusAddress are set, then ASSERT().\r
-\r
-  @param  SmBusAddress    Address that encodes the SMBUS Slave Address,\r
-                          SMBUS Command, SMBUS Data Length, and PEC.\r
-  @param  Value           The 16-bit value to write.\r
-  @param  Status          Return status for the executed command.\r
-                          This is an optional parameter and may be NULL.\r
-\r
-  @return The 16-bit value returned by the process call command.\r
-\r
-**/\r
-UINT16\r
-EFIAPI\r
-SmBusProcessCall (\r
-  IN  UINTN          SmBusAddress,\r
-  IN  UINT16         Value,\r
-  OUT RETURN_STATUS  *Status        OPTIONAL\r
-  )\r
-{\r
-  ASSERT (SMBUS_LIB_LENGTH (SmBusAddress)    == 0);\r
-  ASSERT (SMBUS_LIB_RESERVED (SmBusAddress) == 0);\r
-\r
-  InternalSmBusExec (EfiSmbusProcessCall, SmBusAddress, 2, &Value, Status);\r
-\r
-  return Value;\r
-}\r
-\r
-/**\r
-  Executes an SMBUS read block command.\r
-\r
-  Executes an SMBUS read block command on the SMBUS device specified by SmBusAddress.\r
-  Only the SMBUS slave address and SMBUS command fields of SmBusAddress are required.\r
-  Bytes are read from the SMBUS and stored in Buffer.\r
-  The number of bytes read is returned, and will never return a value larger than 32-bytes.\r
-  If Status is not NULL, then the status of the executed command is returned in Status.\r
-  It is the caller's responsibility to make sure Buffer is large enough for the total number of bytes read.\r
-  SMBUS supports a maximum transfer size of 32 bytes, so Buffer does not need to be any larger than 32 bytes.\r
-  If Length in SmBusAddress is not zero, then ASSERT().\r
-  If Buffer is NULL, then ASSERT().\r
-  If any reserved bits of SmBusAddress are set, then ASSERT().\r
-\r
-  @param  SmBusAddress    Address that encodes the SMBUS Slave Address,\r
-                          SMBUS Command, SMBUS Data Length, and PEC.\r
-  @param  Buffer          Pointer to the buffer to store the bytes read from the SMBUS.\r
-  @param  Status          Return status for the executed command.\r
-                          This is an optional parameter and may be NULL.\r
-\r
-  @return The number of bytes read.\r
-\r
-**/\r
-UINTN\r
-EFIAPI\r
-SmBusReadBlock (\r
-  IN  UINTN          SmBusAddress,\r
-  OUT VOID           *Buffer,\r
-  OUT RETURN_STATUS  *Status        OPTIONAL\r
-  )\r
-{\r
-  ASSERT (Buffer != NULL);\r
-  ASSERT (SMBUS_LIB_LENGTH (SmBusAddress)    == 0);\r
-  ASSERT (SMBUS_LIB_RESERVED (SmBusAddress) == 0);\r
-\r
-  return InternalSmBusExec (EfiSmbusReadBlock, SmBusAddress, 0x20, Buffer, Status);\r
-}\r
-\r
-/**\r
-  Executes an SMBUS write block command.\r
-\r
-  Executes an SMBUS write block command on the SMBUS device specified by SmBusAddress.\r
-  The SMBUS slave address, SMBUS command, and SMBUS length fields of SmBusAddress are required.\r
-  Bytes are written to the SMBUS from Buffer.\r
-  The number of bytes written is returned, and will never return a value larger than 32-bytes.\r
-  If Status is not NULL, then the status of the executed command is returned in Status.\r
-  If Length in SmBusAddress is zero or greater than 32, then ASSERT().\r
-  If Buffer is NULL, then ASSERT().\r
-  If any reserved bits of SmBusAddress are set, then ASSERT().\r
-\r
-  @param  SmBusAddress    Address that encodes the SMBUS Slave Address,\r
-                          SMBUS Command, SMBUS Data Length, and PEC.\r
-  @param  Buffer          Pointer to the buffer to store the bytes read from the SMBUS.\r
-  @param  Status          Return status for the executed command.\r
-                          This is an optional parameter and may be NULL.\r
-\r
-  @return The number of bytes written.\r
-\r
-**/\r
-UINTN\r
-EFIAPI\r
-SmBusWriteBlock (\r
-  IN  UINTN          SmBusAddress,\r
-  OUT VOID           *Buffer,\r
-  OUT RETURN_STATUS  *Status        OPTIONAL\r
-  )\r
-{\r
-  UINTN  Length;\r
-\r
-  ASSERT (Buffer != NULL);\r
-  ASSERT (SMBUS_LIB_LENGTH (SmBusAddress) >= 1);\r
-  ASSERT (SMBUS_LIB_LENGTH (SmBusAddress) <= 32);\r
-  ASSERT (SMBUS_LIB_RESERVED (SmBusAddress) == 0);\r
-\r
-  Length = SMBUS_LIB_LENGTH (SmBusAddress);\r
-  return InternalSmBusExec (EfiSmbusWriteBlock, SmBusAddress, Length, Buffer, Status);\r
-}\r
-\r
-/**\r
-  Executes an SMBUS block process call command.\r
-\r
-  Executes an SMBUS block process call command on the SMBUS device specified by SmBusAddress.\r
-  The SMBUS slave address, SMBUS command, and SMBUS length fields of SmBusAddress are required.\r
-  Bytes are written to the SMBUS from WriteBuffer.  Bytes are then read from the SMBUS into ReadBuffer.\r
-  If Status is not NULL, then the status of the executed command is returned in Status.\r
-  It is the caller's responsibility to make sure ReadBuffer is large enough for the total number of bytes read.\r
-  SMBUS supports a maximum transfer size of 32 bytes, so Buffer does not need to be any larger than 32 bytes.\r
-  If Length in SmBusAddress is zero or greater than 32, then ASSERT().\r
-  If WriteBuffer is NULL, then ASSERT().\r
-  If ReadBuffer is NULL, then ASSERT().\r
-  If any reserved bits of SmBusAddress are set, then ASSERT().\r
-\r
-  @param  SmBusAddress    Address that encodes the SMBUS Slave Address,\r
-                          SMBUS Command, SMBUS Data Length, and PEC.\r
-  @param  WriteBuffer     Pointer to the buffer of bytes to write to the SMBUS.\r
-  @param  ReadBuffer      Pointer to the buffer of bytes to read from the SMBUS.\r
-  @param  Status          Return status for the executed command.\r
-                          This is an optional parameter and may be NULL.\r
-\r
-  @return The number of bytes written.\r
-\r
-**/\r
-UINTN\r
-EFIAPI\r
-SmBusBlockProcessCall (\r
-  IN  UINTN          SmBusAddress,\r
-  IN  VOID           *WriteBuffer,\r
-  OUT VOID           *ReadBuffer,\r
-  OUT RETURN_STATUS  *Status        OPTIONAL\r
-  )\r
-{\r
-  UINTN   Length;\r
-\r
-  ASSERT (WriteBuffer != NULL);\r
-  ASSERT (ReadBuffer  != NULL);\r
-  ASSERT (SMBUS_LIB_LENGTH (SmBusAddress) >= 1);\r
-  ASSERT (SMBUS_LIB_LENGTH (SmBusAddress) <= 32);\r
-  ASSERT (SMBUS_LIB_RESERVED (SmBusAddress) == 0);\r
-\r
-  Length = SMBUS_LIB_LENGTH (SmBusAddress);\r
-  //\r
-  // Assuming that ReadBuffer is large enough to save another memory copy.\r
-  //\r
-  ReadBuffer = CopyMem (ReadBuffer, WriteBuffer, Length);\r
-  return InternalSmBusExec (EfiSmbusBWBRProcessCall, SmBusAddress, Length, ReadBuffer, Status);\r
-}\r