diff options
Diffstat (limited to 'Chipset/NB/SystemAgentWrap/MiscSubclass')
-rw-r--r-- | Chipset/NB/SystemAgentWrap/MiscSubclass/MiscSubclass.c | 80 | ||||
-rw-r--r-- | Chipset/NB/SystemAgentWrap/MiscSubclass/MiscSubclass.cif | 13 | ||||
-rw-r--r-- | Chipset/NB/SystemAgentWrap/MiscSubclass/MiscSubclass.mak | 106 | ||||
-rw-r--r-- | Chipset/NB/SystemAgentWrap/MiscSubclass/MiscSubclass.sdl | 69 | ||||
-rw-r--r-- | Chipset/NB/SystemAgentWrap/MiscSubclass/MiscSubclassDxe.c | 483 | ||||
-rw-r--r-- | Chipset/NB/SystemAgentWrap/MiscSubclass/MiscSubclassDxe.dxs | 70 | ||||
-rw-r--r-- | Chipset/NB/SystemAgentWrap/MiscSubclass/MiscSubclassStrings.uni | bin | 0 -> 3242 bytes |
7 files changed, 821 insertions, 0 deletions
diff --git a/Chipset/NB/SystemAgentWrap/MiscSubclass/MiscSubclass.c b/Chipset/NB/SystemAgentWrap/MiscSubclass/MiscSubclass.c new file mode 100644 index 0000000..275b297 --- /dev/null +++ b/Chipset/NB/SystemAgentWrap/MiscSubclass/MiscSubclass.c @@ -0,0 +1,80 @@ +//************************************************************************* +//************************************************************************* +//** ** +//** (C)Copyright 1985-2011, American Megatrends, Inc. ** +//** ** +//** All Rights Reserved. ** +//** ** +//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +//** ** +//** Phone: (770)-246-8600 ** +//** ** +//************************************************************************* +//************************************************************************* + +//************************************************************************* +// $Header: /Alaska/BIN/Chipset/Intel/NorthBridge/Haswell/Intel SystemAgent NB Chipset/SystemAgentWrap/MiscSubclass/MiscSubclass.c 1 2/08/12 4:36a Yurenlai $ +// +// $Revision: 1 $ +// +// $Date: 2/08/12 4:36a $ +//************************************************************************* +// Revision History +// ---------------- +// $Log: /Alaska/BIN/Chipset/Intel/NorthBridge/Haswell/Intel SystemAgent NB Chipset/SystemAgentWrap/MiscSubclass/MiscSubclass.c $ +// +// 1 2/08/12 4:36a Yurenlai +// Intel Haswell/NB eChipset initially releases. +// +//************************************************************************* +//<AMI_FHDR_START> +// +// Name: MiscSubclass.c +// +// Description: This file for BIOS id Build in to Hii data base. +// +//<AMI_FHDR_END> +//********************************************************************** + +#include <AmiLib.h> +#include <AmiDxeLib.h> +#include <Setup.h> +#include <SetupStrTokens.h> + +//<AMI_PHDR_START> +//---------------------------------------------------------------------------- +// +// Procedure: InitiMiscStrings +// +// Description: Create BIOS id string. +// +// Input: HiiHandle - Handle to HII database +// Class - Indicates the setup class +// +// Output: None +// +//---------------------------------------------------------------------------- +//<AMI_PHDR_END> +VOID +InitiMiscStrings ( + IN EFI_HII_HANDLE HiiHandle, + IN UINT16 Class +) +{ + STRING_REF Dummy [] = { STRING_TOKEN (STR_BIOS_ID)} + return; +} + +//************************************************************************* +//************************************************************************* +//** ** +//** (C)Copyright 1985-2011, American Megatrends, Inc. ** +//** ** +//** All Rights Reserved. ** +//** ** +//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +//** ** +//** Phone: (770)-246-8600 ** +//** ** +//************************************************************************* +//*************************************************************************
\ No newline at end of file diff --git a/Chipset/NB/SystemAgentWrap/MiscSubclass/MiscSubclass.cif b/Chipset/NB/SystemAgentWrap/MiscSubclass/MiscSubclass.cif new file mode 100644 index 0000000..e105399 --- /dev/null +++ b/Chipset/NB/SystemAgentWrap/MiscSubclass/MiscSubclass.cif @@ -0,0 +1,13 @@ +<component> + name = "MiscSubclass" + category = ModulePart + LocalRoot = "Chipset\NB\SystemAgentWrap\MiscSubclass" + RefName = "MiscSubclass" +[files] +"MiscSubclass.sdl" +"MiscSubclass.mak" +"MiscSubclassStrings.uni" +"MiscSubclass.c" +"MiscSubclassDxe.c" +"MiscSubclassDxe.dxs" +<endComponent> diff --git a/Chipset/NB/SystemAgentWrap/MiscSubclass/MiscSubclass.mak b/Chipset/NB/SystemAgentWrap/MiscSubclass/MiscSubclass.mak new file mode 100644 index 0000000..66c165d --- /dev/null +++ b/Chipset/NB/SystemAgentWrap/MiscSubclass/MiscSubclass.mak @@ -0,0 +1,106 @@ +#************************************************************************* +#************************************************************************* +#** ** +#** (C)Copyright 1985-2011, American Megatrends, Inc. ** +#** ** +#** All Rights Reserved. ** +#** ** +#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +#** ** +#** Phone: (770)-246-8600 ** +#** ** +#************************************************************************* +#************************************************************************* + +#************************************************************************* +# $Header: /Alaska/BIN/Chipset/Intel/NorthBridge/Haswell/Intel SystemAgent NB Chipset/SystemAgentWrap/MiscSubclass/MiscSubclass.mak 1 2/08/12 4:36a Yurenlai $ +# +# $Revision: 1 $ +# +# $Date: 2/08/12 4:36a $ +#************************************************************************* +# Revision History +# ---------------- +# $Log: /Alaska/BIN/Chipset/Intel/NorthBridge/Haswell/Intel SystemAgent NB Chipset/SystemAgentWrap/MiscSubclass/MiscSubclass.mak $ +# +# 1 2/08/12 4:36a Yurenlai +# Intel Haswell/NB eChipset initially releases. +# +#************************************************************************* + +#--------------------------------------------------------------------------- +# Create SmBiosMemory DXE driver +#--------------------------------------------------------------------------- +all: MiscSubclass MiscSubclassSDB MiscSubclassDxe + +#MiscSubclass: $(BUILD_DIR)\MiscSubclass.mak MiscSubclassBin +MiscSubclass: $(BUILD_DIR)\MiscSubclass.mak + +$(BUILD_DIR)\MiscSubclass.mak : $(MiscSubclass_DIR)\$(@B).cif $(MiscSubclass_DIR)\$(@B).mak $(BUILD_RULES) + $(CIF2MAK) $(MiscSubclass_DIR)\$(@B).cif $(CIF2MAK_DEFAULTS) + +MiscSubclass_OBJECTS = \ +$(BUILD_DIR)\$(MiscSubclass_DIR)\MiscSubclass.obj \ +$(BUILD_DIR)\MiscSubclassStrings.obj \ + +#MiscSubclassBin : $(PRINTLIB) $(EFIDRIVERLIB) $(EDKGUIDLIB) $(EFIPROTOCOLLIB) $(EFIIFRSUPPORTLIB) +# $(MAKE) /$(MAKEFLAGS) $(BUILD_DEFAULTS)\ +# /f $(BUILD_DIR)\MiscSubclass.mak all\ +# GUID=EDA39402-F375-4496-92D3-83B43CB8A76A\ +# "MY_INCLUDES=$(SmBiosMemory_INCLUDES)" \ +# ENTRY_POINT=MiscSubclass\ +# TYPE=BS_DRIVER\ +# "OBJECTS=$(MiscSubclass_OBJECTS)"\ +# DEPEX1=$(SmBiosMemory_DIR)\SmBiosMemory.dxs\ +# DEPEX1_TYPE=EFI_SECTION_DXE_DEPEX\ +# COMPRESS=1 + +#--------------------------------------------------------------------------- +# Create MiscSubclass Setup Screens +#--------------------------------------------------------------------------- +MiscSubclassSDB : $(BUILD_DIR)\MiscSubclass.mak + $(MAKE) /$(MAKEFLAGS) $(BUILD_DEFAULTS)\ + /f $(BUILD_DIR)\MiscSubclass.mak all\ + TYPE=SDB NAME=MiscSubclass + $(STRGATHER) -dump -lang $(SUPPORTED_LANGUAGES: = -lang )\ + -db $(BUILD_DIR)\MiscSubclass.sdb\ + -bn MiscSubclass\ + -oh $(BUILD_DIR)\MiscSubclassStrings.h\ + -oc $(BUILD_DIR)\MiscSubclassStrings.c + $(CC) $(CFLAGS) /Fo$(BUILD_DIR)\ $(BUILD_DIR)\MiscSubclassStrings.c + +#---------------------------------------------------------------------------- +# Create MiscSubclass DXE Component +#---------------------------------------------------------------------------- +MiscSubclassDxe : $(BUILD_DIR)\MiscSubclass.mak MiscSubclassDxeBin + +MiscSubclass_DXE_OBJECTS = $(BUILD_DIR)\$(MiscSubclass_DIR)\MiscSubclassDxe.obj \ +$(BUILD_DIR)\MiscSubclassStrings.obj \ + +MiscSubclassDxeBin : $(AMICSPLib) $(AMIDXELIB) + $(MAKE) /$(MAKEFLAGS) $(BUILD_DEFAULTS)\ + /f $(BUILD_DIR)\MiscSubclass.mak all\ + NAME=MiscSubclassDxe\ + MAKEFILE=$(BUILD_DIR)\MiscSubclass.mak \ + OBJECTS="$(MiscSubclass_DXE_OBJECTS)" \ + GUID=16271FCA-55D9-4a33-93FC-5A3EB128DE21 \ + ENTRY_POINT=MiscSubclassDxe_Init \ + "CFLAGS=$(CFLAGS) /I$(NB_CHIPSET_DIR) /I$(NB_BOARD_DIR) /I$(SB_CHIPSET_DIR) /I$(SB_BOARD_DIR)"\ + "EXT_HEADERS=$(BUILD_DIR)\token.h"\ + TYPE=BS_DRIVER \ + DEPEX1=$(MiscSubclass_DIR)\MiscSubclassDxe.dxs DEPEX1_TYPE=EFI_SECTION_DXE_DEPEX \ + COMPRESS=1 + +#************************************************************************* +#************************************************************************* +#** ** +#** (C)Copyright 1985-2011, American Megatrends, Inc. ** +#** ** +#** All Rights Reserved. ** +#** ** +#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +#** ** +#** Phone: (770)-246-8600 ** +#** ** +#************************************************************************* +#*************************************************************************
\ No newline at end of file diff --git a/Chipset/NB/SystemAgentWrap/MiscSubclass/MiscSubclass.sdl b/Chipset/NB/SystemAgentWrap/MiscSubclass/MiscSubclass.sdl new file mode 100644 index 0000000..df10827 --- /dev/null +++ b/Chipset/NB/SystemAgentWrap/MiscSubclass/MiscSubclass.sdl @@ -0,0 +1,69 @@ +#************************************************************************* +#************************************************************************* +#** ** +#** (C)Copyright 1985-2011, American Megatrends, Inc. ** +#** ** +#** All Rights Reserved. ** +#** ** +#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +#** ** +#** Phone: (770)-246-8600 ** +#** ** +#************************************************************************* +#************************************************************************* + +#************************************************************************* +# $Header: /Alaska/BIN/Chipset/Intel/NorthBridge/Haswell/Intel SystemAgent NB Chipset/SystemAgentWrap/MiscSubclass/MiscSubclass.sdl 1 2/08/12 4:36a Yurenlai $ +# +# $Revision: 1 $ +# +# $Date: 2/08/12 4:36a $ +#************************************************************************* +# Revision History +# ---------------- +# $Log: /Alaska/BIN/Chipset/Intel/NorthBridge/Haswell/Intel SystemAgent NB Chipset/SystemAgentWrap/MiscSubclass/MiscSubclass.sdl $ +# +# 1 2/08/12 4:36a Yurenlai +# Intel Haswell/NB eChipset initially releases. +# +#************************************************************************* +TOKEN + Name = "MISC_SUBCLASS_SUPPORT" + Value = "1" + TokenType = Boolean + TargetEQU = Yes + TargetMAK = Yes + TargetH = Yes + Master = Yes + Help = "Main switch to enable MiscSubclass support in Project" +End + +MODULE + Help = "Includes MiscSubclass.mak to Project" + File = "MiscSubclass.mak" +End + +PATH + Name = "MiscSubclass_DIR" +End + +ELINK + Name = "$(BUILD_DIR)\MiscSubclassDxe.ffs" + Parent = "FV_MAIN" + Help = "Add Intel MiscSubclass Dxe driver" + InvokeOrder = AfterParent +End + +#************************************************************************* +#************************************************************************* +#** ** +#** (C)Copyright 1985-2011, American Megatrends, Inc. ** +#** ** +#** All Rights Reserved. ** +#** ** +#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +#** ** +#** Phone: (770)-246-8600 ** +#** ** +#************************************************************************* +#*************************************************************************
\ No newline at end of file diff --git a/Chipset/NB/SystemAgentWrap/MiscSubclass/MiscSubclassDxe.c b/Chipset/NB/SystemAgentWrap/MiscSubclass/MiscSubclassDxe.c new file mode 100644 index 0000000..8f87be9 --- /dev/null +++ b/Chipset/NB/SystemAgentWrap/MiscSubclass/MiscSubclassDxe.c @@ -0,0 +1,483 @@ +//************************************************************************* +//************************************************************************* +//** ** +//** (C)Copyright 1985-2011, American Megatrends, Inc. ** +//** ** +//** All Rights Reserved. ** +//** ** +//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +//** ** +//** Phone: (770)-246-8600 ** +//** ** +//************************************************************************* +//************************************************************************* + +//************************************************************************* +// $Header: /Alaska/BIN/Chipset/Intel/NorthBridge/Haswell/Intel SystemAgent NB Chipset/SystemAgentWrap/MiscSubclass/MiscSubclassDxe.c 1 2/08/12 4:36a Yurenlai $ +// +// $Revision: 1 $ +// +// $Date: 2/08/12 4:36a $ +//************************************************************************* +// Revision History +// ---------------- +// $Log: /Alaska/BIN/Chipset/Intel/NorthBridge/Haswell/Intel SystemAgent NB Chipset/SystemAgentWrap/MiscSubclass/MiscSubclassDxe.c $ +// +// 1 2/08/12 4:36a Yurenlai +// Intel Haswell/NB eChipset initially releases. +// +//************************************************************************* +//<AMI_FHDR_START> +// +// Name: MiscSubclassDxe.c +// +// Description: This file for init Hii data base in BIOS id. +// +//<AMI_FHDR_END> +//************************************************************************* + +//--------------------------------------------------------------------------- +// Include(s) +//--------------------------------------------------------------------------- + +#include <Efi.h> +#include <token.h> +#include <AmiLib.h> +#include <AmiDxeLib.h> +#include <Setup.h> +#include <Dxe.h> +#include <PCI.h> +#include <AmiHobs.h> +#include <AmiCspLib.h> + +// Produced Protocols + +// Consumed Protocols + +#include <Protocol\DataHub.h> +#include <Include\DataHubSubClass.h> + +#if EFI_SPECIFICATION_VERSION >= 0x2000A +#include "Include\UefiHii.h" +#include "Protocol\HiiDatabase.h" +#include "Protocol\HiiString.h" +#else +#include <Protocol/Hii.h> +#endif + +//--------------------------------------------------------------------------- +// Constant, Macro and Type Definition(s) +//--------------------------------------------------------------------------- +// Constant Definition(s) + +// Macro Definition(s) +#define EFI_MISC_SUBCLASS_GUID \ +{ 0x772484B2, 0x7482, 0x4b91, 0x9F, 0x9A, 0xAD, 0x43, 0xF8, 0x1C, 0x58, 0x81 } + +#define EFI_MISC_SUBCLASS_DRIVER_GUID \ + { 0xF50E702C, 0x8653, 0x4CDE, 0xBB, 0xCE, 0x43, 0xB4, 0xD5, 0x5B, 0x34, 0xB8 } + +// Type Definition(s) + +#define EFI_MISC_SUBCLASS_VERSION 0x0100 +#define EFI_DATA_RECORD_CLASS_DATA 0x0000000000000004 +#define EFI_MISC_BIOS_VENDOR_RECORD_NUMBER 0x00000002 + +#define EFI_SUBCLASS_INSTANCE_NON_APPLICABLE 0xFFFF //16 bit +// Function Prototype(s) + +//--------------------------------------------------------------------------- +// Variable and External Declaration(s) +//--------------------------------------------------------------------------- +// Variable Declaration(s) + +// GUID Definition(s) +EFI_GUID gEfiMiscSubClassGuid = EFI_MISC_SUBCLASS_GUID; +EFI_GUID gEfiMiscSubClassDriverGuid = EFI_MISC_SUBCLASS_DRIVER_GUID; +EFI_GUID gEfiDataHubProtocolGuid = EFI_DATA_HUB_PROTOCOL_GUID; + +// Protocol Definition(s) + +// External Declaration(s) + +// Function Definition(s) +EFI_STATUS InstallMiscSubClassData ( + IN EFI_HANDLE ImageHandle +); + + +typedef struct { + UINT8 LastPciBus; +} EFI_MISC_LAST_PCI_BUS; + +typedef struct { + UINT32 Reserved1 :2; + UINT32 Unknown :1; + UINT32 BiosCharacteristicsNotSupported :1; + UINT32 IsaIsSupported :1; + UINT32 McaIsSupported :1; + UINT32 EisaIsSupported :1; + UINT32 PciIsSupported :1; + UINT32 PcmciaIsSupported :1; + UINT32 PlugAndPlayIsSupported :1; + UINT32 ApmIsSupported :1; + UINT32 BiosIsUpgradable :1; + UINT32 BiosShadowingAllowed :1; + UINT32 VlVesaIsSupported :1; + UINT32 EscdSupportIsAvailable :1; + UINT32 BootFromCdIsSupported :1; + UINT32 SelectableBootIsSupported :1; + UINT32 RomBiosIsSocketed :1; + UINT32 BootFromPcmciaIsSupported :1; + UINT32 EDDSpecificationIsSupported :1; + UINT32 JapaneseNecFloppyIsSupported :1; + UINT32 JapaneseToshibaFloppyIsSupported :1; + UINT32 Floppy525_360IsSupported :1; + UINT32 Floppy525_12IsSupported :1; + UINT32 Floppy35_720IsSupported :1; + UINT32 Floppy35_288IsSupported :1; + UINT32 PrintScreenIsSupported :1; + UINT32 Keyboard8042IsSupported :1; + UINT32 SerialIsSupported :1; + UINT32 PrinterIsSupported :1; + UINT32 CgaMonoIsSupported :1; + UINT32 NecPc98 :1; + UINT32 AcpiIsSupported :1; + UINT32 UsbLegacyIsSupported :1; + UINT32 AgpIsSupported :1; + UINT32 I20BootIsSupported :1; + UINT32 Ls120BootIsSupported :1; + UINT32 AtapiZipDriveBootIsSupported :1; + UINT32 Boot1394IsSupported :1; + UINT32 SmartBatteryIsSupported :1; + UINT32 BiosBootSpecIsSupported :1; + UINT32 FunctionKeyNetworkBootIsSupported :1; + UINT32 TargetContentDistributionEnabled :1; + UINT32 Reserved :21; +} EFI_MISC_BIOS_CHARACTERISTICS; + +typedef struct { + UINT32 BiosReserved :16; + UINT32 SystemReserved :16; + UINT32 Reserved :32; +} EFI_MISC_BIOS_CHARACTERISTICS_EXTENSION; + +typedef struct { + STRING_REF BiosVendor; + STRING_REF BiosVersion; + STRING_REF BiosReleaseDate; + EFI_PHYSICAL_ADDRESS BiosStartingAddress; + EFI_EXP_BASE2_DATA BiosPhysicalDeviceSize; + EFI_MISC_BIOS_CHARACTERISTICS BiosCharacteristics1; + EFI_MISC_BIOS_CHARACTERISTICS_EXTENSION BiosCharacteristics2; + UINT8 BiosMajorRelease; + UINT8 BiosMinorRelease; + UINT8 BiosEmbeddedFirmwareMajorRelease; + UINT8 BiosEmbeddedFirmwareMinorRelease; +} EFI_MISC_BIOS_VENDOR; + +typedef union { + EFI_MISC_LAST_PCI_BUS LastPciBus; + EFI_MISC_BIOS_VENDOR MiscBiosVendor; +} EFI_MISC_SUBCLASS_RECORDS; + +typedef struct { + EFI_SUBCLASS_TYPE1_HEADER Header; + EFI_MISC_SUBCLASS_RECORDS Record; +} EFI_MISC_SUBCLASS_DRIVER_DATA; + +extern UINT8 MiscSubclass[]; + +//--------------------------------------------------------------------------- + +//<AMI_PHDR_START> +//---------------------------------------------------------------------------- +// +// Procedure: MiscSubclassDxe_Init +// +// Description: This function is the entry point for MiscSubclass DXE driver. +// This function initializes the MiscSubclass in DXE phase. +// +// Input: ImageHandle - Image handle +// SystemTable - Pointer to the system table +// +// Output: EFI_SUCCESS +// +// Notes: +//---------------------------------------------------------------------------- +//<AMI_PHDR_END> + +EFI_STATUS MiscSubclassDxe_Init ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable ) +{ + EFI_STATUS Status = EFI_SUCCESS; + + InitAmiLib(ImageHandle, SystemTable); + + Status = InstallMiscSubClassData (ImageHandle); + ASSERT_EFI_ERROR(Status); + + return EFI_SUCCESS; +} + + +#if EFI_SPECIFICATION_VERSION >= 0x2000A +//<AMI_PHDR_START> +//---------------------------------------------------------------------------- +// +// Procedure: PreparePackageList +// +// Description: +// Assemble EFI_HII_PACKAGE_LIST according to the passed in packages. +// +// Input: NumberOfPackages - Number of packages. +// GuidId - Package GUID. +// +// +// Output: Pointer of EFI_HII_PACKAGE_LIST_HEADER. +// +// Notes: +//---------------------------------------------------------------------------- +//<AMI_PHDR_END> +EFI_HII_PACKAGE_LIST_HEADER * +PreparePackageList ( + IN UINTN NumberOfPackages, + IN EFI_GUID *GuidId, + IN ... +) +{ + va_list Marker; + EFI_HII_PACKAGE_LIST_HEADER *PackageListHeader = NULL; + UINT8 *PackageListData; + UINT32 PackageListLength; + UINT32 PackageLength; + EFI_HII_PACKAGE_HEADER PackageHeader; + UINT8 *PackageArray; + UINTN Index; + + PackageListLength = sizeof (EFI_HII_PACKAGE_LIST_HEADER); + + va_start (Marker, GuidId); + for (Index = 0; Index < NumberOfPackages; Index++) { + pBS->CopyMem (&PackageLength, va_arg (Marker, VOID *), sizeof (UINT32)); + PackageListLength += (PackageLength - sizeof (UINT32)); + } + va_end (Marker); + + // + // Include the lenght of EFI_HII_PACKAGE_END + // + PackageListLength += sizeof (EFI_HII_PACKAGE_HEADER); + //PackageListHeader = EfiLibAllocateZeroPool (PackageListLength); + + // PackageListHeader = EfiLibAllocatePool (PackageListLength); + pBS->AllocatePool (EfiBootServicesData, PackageListLength, &PackageListHeader); + + if (PackageListHeader != NULL) { + pBS->SetMem (PackageListHeader, PackageListLength, 0); + } + + ASSERT (PackageListHeader != NULL); + pBS->CopyMem (&PackageListHeader->PackageListGuid, GuidId, sizeof (EFI_GUID)); + PackageListHeader->PackageLength = PackageListLength; + + PackageListData = ((UINT8 *) PackageListHeader) + sizeof (EFI_HII_PACKAGE_LIST_HEADER); + + va_start (Marker, GuidId); + for (Index = 0; Index < NumberOfPackages; Index++) { + PackageArray = (UINT8 *) va_arg (Marker, VOID *); + pBS->CopyMem (&PackageLength, PackageArray, sizeof (UINT32)); + PackageLength -= sizeof (UINT32); + PackageArray += sizeof (UINT32); + pBS->CopyMem (PackageListData, PackageArray, PackageLength); + PackageListData += PackageLength; + } + va_end (Marker); + + // + // Append EFI_HII_PACKAGE_END + // + PackageHeader.Type = EFI_HII_PACKAGE_END; + PackageHeader.Length = sizeof (EFI_HII_PACKAGE_HEADER); + pBS->CopyMem (PackageListData, &PackageHeader, PackageHeader.Length); + + return PackageListHeader; +} + +#else +//<AMI_PHDR_START> +//---------------------------------------------------------------------------- +// +// Procedure: PreparePackages +// +// Description: +// Assemble EFI_HII_PACKAGE_LIST according to the passed in packages. +// +// Input: NumberOfPackages - Number of packages. +// GuidId - Package GUID. +// +// +// Output: Pointer of EFI_HII_PACKAGE_LIST_HEADER. +// +// Notes: +//---------------------------------------------------------------------------- +//<AMI_PHDR_END> +EFI_HII_PACKAGES * +PreparePackages ( + IN UINTN NumberOfPackages, + IN EFI_GUID *GuidId, + IN ... +) +{ + va_list args; + EFI_HII_PACKAGES *HiiPackages; + VOID **Package; + UINTN Index; + EFI_STATUS Status; + ASSERT (NumberOfPackages > 0); + + Status = pBS->AllocatePool(EfiBootServicesData, (sizeof (EFI_HII_PACKAGES)) + NumberOfPackages * sizeof (VOID *), &HiiPackages); + HiiPackages->GuidId = GuidId; + HiiPackages->NumberOfPackages = NumberOfPackages; + Package = (VOID **) (((UINT8 *) HiiPackages) + sizeof (EFI_HII_PACKAGES)); + + va_start (args, GuidId); + + for (Index = 0; Index < NumberOfPackages; Index++) { + *Package = va_arg (args, VOID *); + Package++; + } + + va_end (args); + + return HiiPackages; +} + +#endif + +//<AMI_PHDR_START> +//---------------------------------------------------------------------------- +// +// Procedure: InstallMiscSubClassData +// +// Description: +// Install MiscSubClassData for IgdOpRegion. +// +// Input: ImageHandle +// +// +// Output: Status. +// +// Notes: +//---------------------------------------------------------------------------- +//<AMI_PHDR_END> +EFI_STATUS InstallMiscSubClassData ( + IN EFI_HANDLE ImageHandle +) +{ + EFI_STATUS Status; + EFI_DATA_HUB_PROTOCOL *DataHub; + EFI_MISC_SUBCLASS_DRIVER_DATA MiscSubClassData; + EFI_STRING StringBuffer; + EFI_HII_HANDLE HiiHandle; +#if EFI_SPECIFICATION_VERSION >= 0x2000A + CHAR8 Language[]="en-US"; + EFI_HII_DATABASE_PROTOCOL *HiiDatabase; + EFI_HII_STRING_PROTOCOL *HiiString; + EFI_HII_PACKAGE_LIST_HEADER *PackageList; +#else + EFI_HII_PROTOCOL *Hii; + EFI_HII_PACKAGES *PackageList; +#endif + + Status = pBS->LocateProtocol (&gEfiDataHubProtocolGuid, NULL, &DataHub); + ASSERT_EFI_ERROR (Status); + +#if EFI_SPECIFICATION_VERSION >= 0x2000A + // There should only be one HII Database protocol + Status = pBS->LocateProtocol (&gEfiHiiDatabaseProtocolGuid, NULL, &HiiDatabase); + ASSERT_EFI_ERROR (Status); + + Status = pBS->LocateProtocol (&gEfiHiiStringProtocolGuid, NULL, &HiiString); + ASSERT_EFI_ERROR (Status); + +#else + // There should only be one HII protocol + Status = pBS->LocateProtocol (&gEfiHiiProtocolGuid, NULL, &Hii); + ASSERT_EFI_ERROR (Status); +#endif + + MiscSubClassData.Header.Version = EFI_MISC_SUBCLASS_VERSION; + MiscSubClassData.Header.HeaderSize = sizeof (EFI_SUBCLASS_TYPE1_HEADER); + MiscSubClassData.Header.Instance = 1; + MiscSubClassData.Header.SubInstance = EFI_SUBCLASS_INSTANCE_NON_APPLICABLE; + MiscSubClassData.Header.RecordType = EFI_MISC_BIOS_VENDOR_RECORD_NUMBER; + + Status = pBS->AllocatePool(EfiBootServicesData, (sizeof (CHAR16)) * 100, &StringBuffer); + pBS->SetMem(StringBuffer, (sizeof(CHAR16)) * 100, 0); + + Strcpy ((char*)StringBuffer, CONVERT_TO_STRING(BIOSID)); + +#if EFI_SPECIFICATION_VERSION >= 0x2000A + + PackageList = PreparePackageList (1, &gEfiMiscSubClassDriverGuid, MiscSubclass); + + Status = HiiDatabase->NewPackageList ( + HiiDatabase, + PackageList, + ImageHandle, + &HiiHandle + ); + +#else + PackageList = PreparePackages (1, &gEfiMiscSubClassDriverGuid, MiscSubclass); + Status = Hii->NewPack (Hii, PackageList, &HiiHandle); +#endif + ASSERT_EFI_ERROR (Status); + pBS->FreePool (PackageList); + + MiscSubClassData.Record.MiscBiosVendor.BiosVersion = (STRING_REF)0; +#if EFI_SPECIFICATION_VERSION >= 0x2000A + Status = HiiString->NewString (HiiString, HiiHandle, &MiscSubClassData.Record.MiscBiosVendor.BiosVersion, Language, NULL, StringBuffer, NULL); + +// Status = HiiLibSetString(HiiHandle, MiscSubClassData.Record.MiscBiosVendor.BiosVersion, StringBuffer); + if (EFI_ERROR(Status)) return Status; +#else + Hii->NewString ( + Hii, + NULL, + HiiHandle, + &MiscSubClassData.Record.MiscBiosVendor.BiosVersion, + StringBuffer + ); +#endif + + + Status = DataHub->LogData ( + DataHub, + &gEfiMiscSubClassGuid, + &gEfiMiscSubClassDriverGuid, + EFI_DATA_RECORD_CLASS_DATA, + &MiscSubClassData, + sizeof (EFI_SUBCLASS_TYPE1_HEADER) + sizeof (EFI_MISC_BIOS_VENDOR) + ); + + pBS->FreePool(StringBuffer); + + return Status; +} + +//************************************************************************* +//************************************************************************* +//** ** +//** (C)Copyright 1985-2011, American Megatrends, Inc. ** +//** ** +//** All Rights Reserved. ** +//** ** +//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +//** ** +//** Phone: (770)-246-8600 ** +//** ** +//************************************************************************* +//************************************************************************* diff --git a/Chipset/NB/SystemAgentWrap/MiscSubclass/MiscSubclassDxe.dxs b/Chipset/NB/SystemAgentWrap/MiscSubclass/MiscSubclassDxe.dxs new file mode 100644 index 0000000..aa12ec3 --- /dev/null +++ b/Chipset/NB/SystemAgentWrap/MiscSubclass/MiscSubclassDxe.dxs @@ -0,0 +1,70 @@ +//************************************************************************* +//************************************************************************* +//** ** +//** (C)Copyright 1985-2011, American Megatrends, Inc. ** +//** ** +//** All Rights Reserved. ** +//** ** +//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +//** ** +//** Phone: (770)-246-8600 ** +//** ** +//************************************************************************* +//************************************************************************* + +//************************************************************************* +// $Header: /Alaska/BIN/Chipset/Intel/NorthBridge/Haswell/Intel SystemAgent NB Chipset/SystemAgentWrap/MiscSubclass/MiscSubclassDxe.dxs 1 2/08/12 4:37a Yurenlai $ +// +// $Revision: 1 $ +// +// $Date: 2/08/12 4:37a $ +//************************************************************************* +// Revision History +// ---------------- +// $Log: /Alaska/BIN/Chipset/Intel/NorthBridge/Haswell/Intel SystemAgent NB Chipset/SystemAgentWrap/MiscSubclass/MiscSubclassDxe.dxs $ +// +// 1 2/08/12 4:37a Yurenlai +// Intel Haswell/NB eChipset initially releases. +// +//************************************************************************* +//<AMI_FHDR_START> +// +// Name: MiscSubclassDxe.DXS +// +// Description: This file is the dependency file for the MiscSubclass DXE driver. +// +//<AMI_FHDR_END> +//************************************************************************* +#include <Protocol\DataHub.h> + +#if EFI_SPECIFICATION_VERSION >= 0x2000A +#include "Include\UefiHii.h" +#include "Protocol\HiiDatabase.h" +#include "Protocol\HiiString.h" +#else +#include <Protocol/Hii.h> +#endif + +DEPENDENCY_START + EFI_DATA_HUB_PROTOCOL_GUID AND +#if EFI_SPECIFICATION_VERSION >= 0x2000A + EFI_HII_DATABASE_PROTOCOL_GUID AND + EFI_HII_STRING_PROTOCOL_GUID +#else + EFI_HII_PROTOCOL_GUID +#endif +DEPENDENCY_END + +//************************************************************************* +//************************************************************************* +//** ** +//** (C)Copyright 1985-2011, American Megatrends, Inc. ** +//** ** +//** All Rights Reserved. ** +//** ** +//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +//** ** +//** Phone: (770)-246-8600 ** +//** ** +//************************************************************************* +//************************************************************************* diff --git a/Chipset/NB/SystemAgentWrap/MiscSubclass/MiscSubclassStrings.uni b/Chipset/NB/SystemAgentWrap/MiscSubclass/MiscSubclassStrings.uni Binary files differnew file mode 100644 index 0000000..508d5e6 --- /dev/null +++ b/Chipset/NB/SystemAgentWrap/MiscSubclass/MiscSubclassStrings.uni |