diff options
author | raywu <raywu0301@gmail.com> | 2018-06-15 00:00:50 +0800 |
---|---|---|
committer | raywu <raywu0301@gmail.com> | 2018-06-15 00:00:50 +0800 |
commit | b7c51c9cf4864df6aabb99a1ae843becd577237c (patch) | |
tree | eebe9b0d0ca03062955223097e57da84dd618b9a /Board/EM/Pfat | |
download | zprj-b7c51c9cf4864df6aabb99a1ae843becd577237c.tar.xz |
Diffstat (limited to 'Board/EM/Pfat')
36 files changed, 2924 insertions, 0 deletions
diff --git a/Board/EM/Pfat/HandlePfatLegacy/HandlePfatLegacy.c b/Board/EM/Pfat/HandlePfatLegacy/HandlePfatLegacy.c new file mode 100644 index 0000000..42818b4 --- /dev/null +++ b/Board/EM/Pfat/HandlePfatLegacy/HandlePfatLegacy.c @@ -0,0 +1,148 @@ +//************************************************************************* +//************************************************************************* +//** ** +//** (C)Copyright 1985-2009, American Megatrends, Inc. ** +//** ** +//** All Rights Reserved. ** +//** ** +//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +//** ** +//** Phone: (770)-246-8600 ** +//** ** +//************************************************************************* +//************************************************************************* + +//********************************************************************** +// $Header: /Alaska/SOURCE/Modules/SharkBayRefCodes/IntelPfat/Pfatflashlib/HandlePfatLegacy/HandlePfatLegacy.c 2 11/08/12 3:24a Fredericko $ +// +// $Revision: 2 $ +// +// $Date: 11/08/12 3:24a $ +// +// $Log: /Alaska/SOURCE/Modules/SharkBayRefCodes/IntelPfat/Pfatflashlib/HandlePfatLegacy/HandlePfatLegacy.c $ +// +// 2 11/08/12 3:24a Fredericko +// +// 1 11/02/12 8:23p Fredericko +// [TAG] EIP105153 +// [Files] HandlePfatLegacy.cif +// HandlePfatLegacy.sdl +// HandlePfatLegacy.mak +// HandlePfatLegacy.c +// +//********************************************************************** +//<AMI_FHDR_START> +// +// Name: HandlePfatLegacy.c +// +// Description: Code listing file for HandlePfatLegacy +// +//<AMI_FHDR_END> +//********************************************************************** + +//---------------------------------------------------------------------- +// Includes +#include <efi.h> +#include "token.h" +#include <AmiDxeLib.h> + +EFI_EVENT PfatLegacyBootEvent; + +#define PFAT_VAR_GUID \ + { \ + 0x6aae75ee, 0xa4bc, 0x40c8, 0x81, 0x3b, 0x8, 0x4e, 0x28, 0x53, 0x5e, 0x79 \ + } + +//********************************************************************** +//<AMI_PHDR_START> +// +// Procedure: HandlePfatOnLegacyBoot +// +// Description: Callback on LegacyBoot Event +// +// Input: IN EFI_EVENT efiev +// IN VOID *ctx +// +// Output: EFI_STATUS +// +// Modified: +// +// Referrals: +// +// Notes: +//<AMI_PHDR_END> +//********************************************************************** +void HandlePfatOnLegacyBoot( + IN EFI_EVENT efiev, + IN VOID *ctx ) +{ + EFI_STATUS Status; + UINT32 PfatVar=0; + UINTN PfatVarSize = sizeof(UINT32); + EFI_GUID PfatVarGuid = PFAT_VAR_GUID ; + + Status = pRS->GetVariable(L"PfatVariable", &PfatVarGuid, NULL, &PfatVarSize, &PfatVar); + + PfatVar+=1; + + Status = pRS->SetVariable(L"PfatVariable", + &PfatVarGuid, + (EFI_VARIABLE_BOOTSERVICE_ACCESS | + EFI_VARIABLE_RUNTIME_ACCESS | + EFI_VARIABLE_NON_VOLATILE), + PfatVarSize, + &PfatVar); + + pBS->CloseEvent (PfatLegacyBootEvent); +} + + +//********************************************************************** +//<AMI_PHDR_START> +// +// Procedure: HandlePfatLegacyBoot +// +// Description: Entry point for subcomponent +// +// Input: IN EFI_HANDLE ImageHandle, +// IN EFI_SYSTEM_TABLE *SystemTable +// +// Output: EFI_STATUS +// +// Modified: +// +// Referrals: +// +// Notes: +// +//<AMI_PHDR_END> +//********************************************************************** +EFI_STATUS HandlePfatLegacyBoot( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable ) +{ + EFI_STATUS Status; + + InitAmiLib( ImageHandle, SystemTable ); + + Status = CreateReadyToBootEvent( TPL_CALLBACK, + HandlePfatOnLegacyBoot, + NULL, + &PfatLegacyBootEvent ); + + return Status; +} + +//************************************************************************* +//************************************************************************* +//** ** +//** (C)Copyright 1985-2012, American Megatrends, Inc. ** +//** ** +//** All Rights Reserved. ** +//** ** +//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +//** ** +//** Phone: (770)-246-8600 ** +//** ** +//************************************************************************* +//************************************************************************* diff --git a/Board/EM/Pfat/HandlePfatLegacy/HandlePfatLegacy.cif b/Board/EM/Pfat/HandlePfatLegacy/HandlePfatLegacy.cif new file mode 100644 index 0000000..ea7449d --- /dev/null +++ b/Board/EM/Pfat/HandlePfatLegacy/HandlePfatLegacy.cif @@ -0,0 +1,10 @@ +<component> + name = "HandlePfatLegacy" + category = ModulePart + LocalRoot = "Board\EM\Pfat\HandlePfatLegacy" + RefName = "HandlePfatLegacy" +[files] +"HandlePfatLegacy.sdl" +"HandlePfatLegacy.mak" +"HandlePfatLegacy.c" +<endComponent> diff --git a/Board/EM/Pfat/HandlePfatLegacy/HandlePfatLegacy.mak b/Board/EM/Pfat/HandlePfatLegacy/HandlePfatLegacy.mak new file mode 100644 index 0000000..73db816 --- /dev/null +++ b/Board/EM/Pfat/HandlePfatLegacy/HandlePfatLegacy.mak @@ -0,0 +1,71 @@ +#********************************************************************** +#********************************************************************** +#** ** +#** (C)Copyright 1985-2012, American Megatrends, Inc. ** +#** ** +#** All Rights Reserved. ** +#** ** +#** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 ** +#** ** +#** Phone: (770)-246-8600 ** +#** ** +#********************************************************************** +#********************************************************************** +# $Header: /Alaska/SOURCE/Modules/SharkBayRefCodes/IntelPfat/Pfatflashlib/HandlePfatLegacy/HandlePfatLegacy.mak 1 11/02/12 8:23p Fredericko $ +# +# $Revision: 1 $ +# +# $Date: 11/02/12 8:23p $ +# +# $Log: /Alaska/SOURCE/Modules/SharkBayRefCodes/IntelPfat/Pfatflashlib/HandlePfatLegacy/HandlePfatLegacy.mak $ +# +# 1 11/02/12 8:23p Fredericko +# [TAG] EIP105153 +# [Files] HandlePfatLegacy.cif +# HandlePfatLegacy.sdl +# HandlePfatLegacy.mak +# HandlePfatLegacy.c +# +# +#********************************************************************** +#<AMI_FHDR_START> +# +# Name: HandlePfatLegacy.mak +# +# Description: Make file for HandlePfatLegacy +# +#<AMI_FHDR_END> +#********************************************************************** +all : HandlePfatLegacy + +HandlePfatLegacy : $(BUILD_DIR)\HandlePfatLegacy.mak HandlePfatLegacyBin + +#--------------------------------------------------------------------------- +# +#--------------------------------------------------------------------------- +$(BUILD_DIR)\HandlePfatLegacy.mak : $(HandlePfatLegacy_DIR)\$(@B).cif $(HandlePfatLegacy_DIR)\$(@B).mak $(BUILD_RULES) + $(CIF2MAK) $(HandlePfatLegacy_DIR)\$(@B).cif $(CIF2MAK_DEFAULTS) + +#--------------------------------------------------------------------------- +# +#--------------------------------------------------------------------------- +HandlePfatLegacyBin : $(AMIDXELIB) + $(MAKE) /$(MAKEFLAGS) $(BUILD_DEFAULTS)\ + /f $(BUILD_DIR)\HandlePfatLegacy.mak all\ + GUID=767BECBC-7E71-4c1e-B9BD-89193022E64E\ + ENTRY_POINT=HandlePfatLegacyBoot\ + TYPE=BS_DRIVER \ + COMPRESS=1\ +#----------------------------------------------------------------------- +#********************************************************************** +#** ** +#** (C)Copyright 1985-2012, American Megatrends, Inc. ** +#** ** +#** All Rights Reserved. ** +#** ** +#** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 ** +#** ** +#** Phone: (770)-246-8600 ** +#** ** +#********************************************************************** +#********************************************************************** diff --git a/Board/EM/Pfat/HandlePfatLegacy/HandlePfatLegacy.sdl b/Board/EM/Pfat/HandlePfatLegacy/HandlePfatLegacy.sdl new file mode 100644 index 0000000..0c6d246 --- /dev/null +++ b/Board/EM/Pfat/HandlePfatLegacy/HandlePfatLegacy.sdl @@ -0,0 +1,77 @@ +#********************************************************************** +#********************************************************************** +#** ** +#** (C)Copyright 1985-2012, American Megatrends, Inc. ** +#** ** +#** All Rights Reserved. ** +#** ** +#** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 ** +#** ** +#** Phone: (770)-246-8600 ** +#** ** +#********************************************************************** +#********************************************************************** +# $Header: /Alaska/SOURCE/Modules/SharkBayRefCodes/IntelPfat/Pfatflashlib/HandlePfatLegacy/HandlePfatLegacy.sdl 2 11/19/12 5:30p Fredericko $ +# +# $Revision: 2 $ +# +# $Date: 11/19/12 5:30p $ +# +# $Log: /Alaska/SOURCE/Modules/SharkBayRefCodes/IntelPfat/Pfatflashlib/HandlePfatLegacy/HandlePfatLegacy.sdl $ +# +# 2 11/19/12 5:30p Fredericko +# +# 1 11/02/12 8:23p Fredericko +# [TAG] EIP105153 +# [Files] HandlePfatLegacy.cif +# HandlePfatLegacy.sdl +# HandlePfatLegacy.mak +# HandlePfatLegacy.c +# +# +#********************************************************************** +#<AMI_FHDR_START> +# +# Name: HandlePfatLegacy.sdl +# +# Description: SDL file for HandlePfatLegacy +# +#<AMI_FHDR_END> +#********************************************************************** +TOKEN + Name = "HandlePfatLegacy_SUPPORT" + Value = "1" + Help = "Main switch to enable HandlePfatLegacy support in Project" + TokenType = Boolean + TargetEQU = Yes + TargetMAK = Yes + Master = Yes +End + +PATH + Name = "HandlePfatLegacy_DIR" + Help = "HandlePfatLegacy files source directory" +End + +MODULE + Help = "Includes HandlePfatLegacy.mak to Project" + File = "HandlePfatLegacy.mak" +End + +ELINK + Name = "$(BUILD_DIR)\HandlePfatLegacy.ffs" + Parent = "FV_MAIN" + InvokeOrder = AfterParent +End +#********************************************************************** +#********************************************************************** +#** ** +#** (C)Copyright 1985-2012, American Megatrends, Inc. ** +#** ** +#** All Rights Reserved. ** +#** ** +#** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 ** +#** ** +#** Phone: (770)-246-8600 ** +#** ** +#**********************************************************************
\ No newline at end of file diff --git a/Board/EM/Pfat/PfatCpuPolicyOverride/OpensslLib.lib b/Board/EM/Pfat/PfatCpuPolicyOverride/OpensslLib.lib Binary files differnew file mode 100644 index 0000000..290a4fa --- /dev/null +++ b/Board/EM/Pfat/PfatCpuPolicyOverride/OpensslLib.lib diff --git a/Board/EM/Pfat/PfatCpuPolicyOverride/PeiCryptLib.lib b/Board/EM/Pfat/PfatCpuPolicyOverride/PeiCryptLib.lib Binary files differnew file mode 100644 index 0000000..b05426c --- /dev/null +++ b/Board/EM/Pfat/PfatCpuPolicyOverride/PeiCryptLib.lib diff --git a/Board/EM/Pfat/PfatCpuPolicyOverride/PfatCpuPolicyOverride.c b/Board/EM/Pfat/PfatCpuPolicyOverride/PfatCpuPolicyOverride.c new file mode 100644 index 0000000..6eeb851 --- /dev/null +++ b/Board/EM/Pfat/PfatCpuPolicyOverride/PfatCpuPolicyOverride.c @@ -0,0 +1,387 @@ +//************************************************************************* +//************************************************************************* +//** ** +//** (C)Copyright 1985-2012, American Megatrends, Inc. ** +//** ** +//** All Rights Reserved. ** +//** ** +//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +//** ** +//** Phone: (770)-246-8600 ** +//** ** +//************************************************************************* +//************************************************************************* +//************************************************************************* +// $Header: /Alaska/SOURCE/Modules/SharkBayRefCodes/IntelPfat/PfatCpuPolicyOverride/PfatCpuPolicyOverride.c 3 10/29/12 4:09p Fredericko $ +// +// $Revision: 3 $ +// +// $Date: 10/29/12 4:09p $ +// +// +// +//************************************************************************* +//<AMI_FHDR_START> +// +// Name: PfatCpuPolicyOverride.c +// +// Description: Code listing file for PfatCpuPolicyOverride +// +//<AMI_FHDR_END> +//************************************************************************* + +#include "PfatCpuPolicyOverride.h" + +EFI_GUID pFatFileGuid = PFAT_PUB_KEY_FFS_FILE_RAW_GUID; + +STATIC EFI_PEI_NOTIFY_DESCRIPTOR mPfatCpuPolicyOverrideNotifyDesc = { + (EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST), + &gPeiCpuPlatformPolicyPpiGuid, + PfatCpuPolicyOverrideEndOfPeiCpuPlatformPolicy +}; + +//********************************************************************** +//<AMI_PHDR_START> +// +// Procedure: CryptoGetRawImage +// +// Description: Loads binary from RAW section of X firwmare volume +// +// +// Output: Buffer - returns a pointer to allocated memory. Caller +// must free it when done. +// Size - returns the size of the binary loaded into the +// buffer. +// +//<AMI_PHDR_END> +//********************************************************************** +EFI_STATUS +LocatPfatPubKey (IN EFI_PEI_SERVICES **PpSv, IN OUT VOID **Buffer) +{ + EFI_STATUS Status; + EFI_FIRMWARE_VOLUME_HEADER *pFV; + UINTN FvNum=0; + EFI_FFS_FILE_HEADER *ppFile=NULL; + BOOLEAN Found = FALSE; + + Status = (*PpSv)->FfsFindNextVolume (PpSv, FvNum, &pFV); + + while ( TRUE ) + { + Status = (*PpSv)->FfsFindNextVolume( PpSv, FvNum, &pFV ); + if ( EFI_ERROR( Status )) + { + return Status; + } + + ppFile = NULL; + + while ( TRUE ) + { + Status = (*PpSv)->FfsFindNextFile( PpSv, + EFI_FV_FILETYPE_FREEFORM, + pFV, + &ppFile ); + + if ( Status == EFI_NOT_FOUND ) + { + break; + } + + DEBUG ((EFI_D_INFO, " ppFile guid:: %x \n", ppFile->Name)); + + if (CompareGuid( &ppFile->Name, &pFatFileGuid )) + { + Found = TRUE; + break; + } + } + + if ( Found ) + { + break; + } + else { + FvNum++; + } + } + + Status = (*PpSv)->FfsFindSectionData( PpSv, + EFI_SECTION_RAW, + ppFile, + Buffer ); + + if (EFI_ERROR( Status )) { + return EFI_NOT_FOUND; + } + + return Status; +} + + + + +//********************************************************************** +//<AMI_PHDR_START> +// +// Procedure: CpuPolicy Override for Pfat +// +// Description: PfatCpuPolicyOverride at end of PeiCpuPlatformPolicy +// handler. +// +// Output: PeiServices - Pointer to PEI Services Table. +// NotifyDesc - Pointer to the descriptor for the Notification +// event that caused this function to execute. +// Ppi - Pointer to the PPI data associated with +// this function. +// +//<AMI_PHDR_END> +//********************************************************************** +STATIC +EFI_STATUS +PfatCpuPolicyOverrideEndOfPeiCpuPlatformPolicy ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDesc, + IN VOID *Ppi +) +{ + EFI_STATUS Status; + PEI_CPU_PLATFORM_POLICY_PPI *CpuPlatformPolicyPpi; + PFAT_CONFIG *PfatConfig; + CPU_CONFIG_PPI *CpuConfig; + UINT32 TotalROMSize = 0; + UINTN pFatHashDataSize = 0; + UINT8 pFatHash256Val[32]; + UINT8 *Sha256PubKeyDigest; + VOID *pFatSha256Context; + VOID *pFatData; + + Status = PeiServicesLocatePpi (&gPeiCpuPlatformPolicyPpiGuid, 0, NULL, &CpuPlatformPolicyPpi); + if ( EFI_ERROR( Status ) ) { + return Status; + } + + PfatConfig = CpuPlatformPolicyPpi->SecurityConfig->PfatConfig; + CpuConfig = CpuPlatformPolicyPpi->CpuConfig; + + CpuConfig->Pfat = CPU_FEATURE_ENABLE; + pFatHashDataSize = Sha256GetContextSize (); + Status = ((*PeiServices)->AllocatePool) (PeiServices, pFatHashDataSize, &pFatSha256Context); + if ( EFI_ERROR( Status ) ) { + return Status; + } + + Status = LocatPfatPubKey(PeiServices ,&Sha256PubKeyDigest); + // + // If it fails it might be in non PUPC mode + // + if ( !EFI_ERROR( Status ) ) { + PfatConfig->PupHeader.PkgAttributes = 0; + CopyMem (&PfatConfig->Ppdt.PkeySlot0, Sha256PubKeyDigest, 32); + } + + /// + /// Select to Flash Map 0 Register to get the number of flash Component + /// + MmioAndThenOr32 ( + SB_RCBA + R_PCH_SPI_FDOC, + (UINT32) (~(B_PCH_SPI_FDOC_FDSS_MASK | B_PCH_SPI_FDOC_FDSI_MASK)), + (UINT32) (V_PCH_SPI_FDOC_FDSS_FSDM | R_PCH_SPI_FDBAR_FLASH_MAP0) + ); + + switch ( MmioRead16 (SB_RCBA + R_PCH_SPI_FDOD) & B_PCH_SPI_FDBAR_NC ) { + case V_PCH_SPI_FDBAR_NC_1: + PfatConfig->NumSpiComponents = 1; + break; + case V_PCH_SPI_FDBAR_NC_2: + PfatConfig->NumSpiComponents = 2; + break; + default: + break; + } + + /// + /// Select to Flash Components Register to get the Component 1 Density + /// + MmioAndThenOr32 ( + SB_RCBA + R_PCH_SPI_FDOC, + (UINT32) (~(B_PCH_SPI_FDOC_FDSS_MASK | B_PCH_SPI_FDOC_FDSI_MASK)), + (UINT32) (V_PCH_SPI_FDOC_FDSS_COMP | R_PCH_SPI_FCBA_FLCOMP) + ); + + /// + /// Copy Component 1 Density + /// + switch ( (UINT8) MmioRead32 (SB_RCBA + R_PCH_SPI_FDOD) & B_PCH_SPI_FLCOMP_COMP1_MASK ) { + case V_PCH_SPI_FLCOMP_COMP1_512KB: + PfatConfig->ComponentSize[0] = EnumSpiCompSize512KB; + TotalROMSize += (UINT32) LShiftU64(512, KBShift); + break; + case V_PCH_SPI_FLCOMP_COMP1_1MB: + PfatConfig->ComponentSize[0] = EnumSpiCompSize1MB; + TotalROMSize += (UINT32) LShiftU64(1, MBShift); + break; + case V_PCH_SPI_FLCOMP_COMP1_2MB: + PfatConfig->ComponentSize[0] = EnumSpiCompSize2MB; + TotalROMSize += (UINT32) LShiftU64(2, MBShift); + break; + case V_PCH_SPI_FLCOMP_COMP1_4MB: + PfatConfig->ComponentSize[0] = EnumSpiCompSize4MB; + TotalROMSize += (UINT32) LShiftU64(4, MBShift); + break; + case V_PCH_SPI_FLCOMP_COMP1_8MB: + PfatConfig->ComponentSize[0] = EnumSpiCompSize8MB; + TotalROMSize += (UINT32) LShiftU64(8, MBShift); + break; + case V_PCH_SPI_FLCOMP_COMP1_16MB: + PfatConfig->ComponentSize[0] = EnumSpiCompSize16MB; + TotalROMSize += (UINT32) LShiftU64(16, MBShift); + break; + case V_PCH_SPI_FLCOMP_COMP1_32MB: + PfatConfig->ComponentSize[0] = EnumSpiCompSize32MB; + TotalROMSize += (UINT32) LShiftU64(32, MBShift); + break; + case V_PCH_SPI_FLCOMP_COMP1_64MB: + PfatConfig->ComponentSize[0] = EnumSpiCompSize64MB; + TotalROMSize += (UINT32) LShiftU64(64, MBShift); + break; + default: + break; + } + + /// + /// Copy Component 2 Density + /// + if ( PfatConfig->NumSpiComponents == 2 ) { + switch ( (UINT8) MmioRead32 (SB_RCBA + R_PCH_SPI_FDOD) & B_PCH_SPI_FLCOMP_COMP2_MASK ) { + case V_PCH_SPI_FLCOMP_COMP2_512KB: + PfatConfig->ComponentSize[1] = EnumSpiCompSize512KB; + TotalROMSize += (UINT32) LShiftU64(512, KBShift); + break; + case V_PCH_SPI_FLCOMP_COMP2_1MB: + PfatConfig->ComponentSize[1] = EnumSpiCompSize1MB; + TotalROMSize += (UINT32) LShiftU64(1, MBShift); + break; + case V_PCH_SPI_FLCOMP_COMP2_2MB: + PfatConfig->ComponentSize[1] = EnumSpiCompSize2MB; + TotalROMSize += (UINT32) LShiftU64(2, MBShift); + break; + case V_PCH_SPI_FLCOMP_COMP2_4MB: + PfatConfig->ComponentSize[1] = EnumSpiCompSize4MB; + TotalROMSize += (UINT32) LShiftU64(4, MBShift); + break; + case V_PCH_SPI_FLCOMP_COMP2_8MB: + PfatConfig->ComponentSize[1] = EnumSpiCompSize8MB; + TotalROMSize += (UINT32) LShiftU64(8, MBShift); + break; + case V_PCH_SPI_FLCOMP_COMP2_16MB: + PfatConfig->ComponentSize[1] = EnumSpiCompSize16MB; + TotalROMSize += (UINT32) LShiftU64(16, MBShift); + break; + case V_PCH_SPI_FLCOMP_COMP2_32MB: + PfatConfig->ComponentSize[1] = EnumSpiCompSize32MB; + TotalROMSize += (UINT32) LShiftU64(32, MBShift); + break; + case V_PCH_SPI_FLCOMP_COMP2_64MB: + PfatConfig->ComponentSize[1] = EnumSpiCompSize64MB; + TotalROMSize += (UINT32) LShiftU64(64, MBShift); + break; + default: + break; + } + } + + // + // LastSfam : Number of SfamData - 1 + // + PfatConfig->Ppdt.LastSfam = PFAT_COUNT - 1; + if (PfatConfig->Ppdt.LastSfam > (MAX_SFAM_COUNT - 1)) { + PfatConfig->Ppdt.LastSfam = MAX_SFAM_COUNT - 1; + } + + // + // SfamData[0] : BIOS Region only skip NVRAM + // + PfatConfig->Ppdt.SfamData[0].FirstByte = TotalROMSize - (0xFFFFFFFF - FV_MAIN_BASE + 1); + PfatConfig->Ppdt.SfamData[0].LastByte = TotalROMSize - 1; + + // + // SfamData[1] : ME Region + GBE Region + Description Region + // + PfatConfig->Ppdt.SfamData[1].FirstByte = 0x00; + PfatConfig->Ppdt.SfamData[1].LastByte = TotalROMSize - FLASH_SIZE -1; + PfatConfig->Ppdt.PpdtSize = (sizeof (PPDT) - sizeof (PfatConfig->Ppdt.SfamData) + ((PfatConfig->Ppdt.LastSfam + 1) * sizeof (SFAM_DATA))); + + // + // Defined values in the token + // + PfatConfig->Ppdt.BiosSvn = BIOS_SVN; + PfatConfig->PfatMemSize = (UINT8) RShiftU64(PfatMaxSectionSize, MBShift) + 1; + + // + // Hash the PPDT to PfatConfig->PpdtHash + // + pFatHashDataSize = PfatConfig->Ppdt.PpdtSize; + pFatData = (VOID *) &PfatConfig->Ppdt; + Sha256Init (pFatSha256Context); + Sha256Update (pFatSha256Context, pFatData, pFatHashDataSize); + Sha256Final (pFatSha256Context, pFatHash256Val); + CopyMem (&PfatConfig->PpdtHash[0], &pFatHash256Val[0], 8); + CopyMem (&PfatConfig->PpdtHash[1], &pFatHash256Val[8], 8); + CopyMem (&PfatConfig->PpdtHash[2], &pFatHash256Val[16], 8); + CopyMem (&PfatConfig->PpdtHash[3], &pFatHash256Val[24], 8); + return Status; +} + +EFI_STATUS +PfatCpuPolicyOverrideEntryPoint ( + IN EFI_FFS_FILE_HEADER *FfsHeader, + IN EFI_PEI_SERVICES **PeiServices +) +{ + EFI_STATUS Status; + EFI_PEI_READ_ONLY_VARIABLE_PPI *ReadOnlyVariable; + SETUP_DATA SetupData; + EFI_GUID SetupGuid = SYSTEM_CONFIGURATION_GUID; + UINTN VariableSize= sizeof (SETUP_DATA); + + Status = PeiServicesLocatePpi (&gEfiPeiReadOnlyVariablePpiGuid, 0, NULL, &ReadOnlyVariable); + if ( EFI_ERROR( Status ) ) { + return Status; + } + + Status = ReadOnlyVariable->PeiGetVariable ( + PeiServices, + L"Setup", + &SetupGuid, + NULL, + &VariableSize, + &SetupData + ); + if ( EFI_ERROR( Status ) ) { + return Status; + } + + if ( SetupData.Pfatstate == Enable ) { + Status = PeiServicesNotifyPpi (&mPfatCpuPolicyOverrideNotifyDesc); + if ( EFI_ERROR( Status ) ) { + return Status; + } + } + + return Status; +} + +//************************************************************************* +//************************************************************************* +//** ** +//** (C)Copyright 1985-2012, American Megatrends, Inc. ** +//** ** +//** All Rights Reserved. ** +//** ** +//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +//** ** +//** Phone: (770)-246-8600 ** +//** ** +//************************************************************************* +//************************************************************************* diff --git a/Board/EM/Pfat/PfatCpuPolicyOverride/PfatCpuPolicyOverride.cif b/Board/EM/Pfat/PfatCpuPolicyOverride/PfatCpuPolicyOverride.cif new file mode 100644 index 0000000..96b5b2b --- /dev/null +++ b/Board/EM/Pfat/PfatCpuPolicyOverride/PfatCpuPolicyOverride.cif @@ -0,0 +1,14 @@ +<component> + name = "PfatCpuPolicyOverride" + category = ModulePart + LocalRoot = "Board\EM\Pfat\PfatCpuPolicyOverride" + RefName = "PfatCpuPolicyOverride" +[files] +"PfatCpuPolicyOverride.c" +"PfatCpuPolicyOverride.h" +"PfatCpuPolicyOverride.dxs" +"PfatCpuPolicyOverride.sdl" +"PfatCpuPolicyOverride.mak" +"PeiCryptLib.lib" +"OpensslLib.lib" +<endComponent> diff --git a/Board/EM/Pfat/PfatCpuPolicyOverride/PfatCpuPolicyOverride.dxs b/Board/EM/Pfat/PfatCpuPolicyOverride/PfatCpuPolicyOverride.dxs new file mode 100644 index 0000000..db14387 --- /dev/null +++ b/Board/EM/Pfat/PfatCpuPolicyOverride/PfatCpuPolicyOverride.dxs @@ -0,0 +1,55 @@ +//************************************************************************* +//************************************************************************* +//** ** +//** (C)Copyright 1985-2012, American Megatrends, Inc. ** +//** ** +//** All Rights Reserved. ** +//** ** +//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +//** ** +//** Phone: (770)-246-8600 ** +//** ** +//************************************************************************* +//************************************************************************* +//************************************************************************* +//************************************************************************* +// $Header: /Alaska/SOURCE/Modules/SharkBayRefCodes/IntelPfat/PfatCpuPolicyOverride/PfatCpuPolicyOverride.dxs 2 9/25/12 6:16p Fredericko $Revision: +// +// $Date: +// +// +// +//************************************************************************* +//<AMI_FHDR_START> +// +// Name: PfatCpuPolicyOverride.dxs +// +// Description: PfatCpuPolicyOverride dependency file +// +//<AMI_FHDR_END> +//************************************************************************* + +#include "AutoGen.h" +#include "PeimDepex.h" +#if defined (BUILD_WITH_GLUELIB) || defined (BUILD_WITH_EDKII_GLUE_LIB) +#include "EfiDepex.h" +#include EFI_PPI_DEPENDENCY (Variable) +#endif + +DEPENDENCY_START + PEI_READ_ONLY_VARIABLE_ACCESS_PPI_GUID +DEPENDENCY_END + +//************************************************************************* +//************************************************************************* +//** ** +//** (C)Copyright 1985-2012, 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/Board/EM/Pfat/PfatCpuPolicyOverride/PfatCpuPolicyOverride.h b/Board/EM/Pfat/PfatCpuPolicyOverride/PfatCpuPolicyOverride.h new file mode 100644 index 0000000..c14735d --- /dev/null +++ b/Board/EM/Pfat/PfatCpuPolicyOverride/PfatCpuPolicyOverride.h @@ -0,0 +1,133 @@ +//************************************************************************* +//************************************************************************* +//** ** +//** (C)Copyright 1985-2012, American Megatrends, Inc. ** +//** ** +//** All Rights Reserved. ** +//** ** +//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +//** ** +//** Phone: (770)-246-8600 ** +//** ** +//************************************************************************* +//************************************************************************* +//************************************************************************* +//************************************************************************* +// $Header: /Alaska/SOURCE/Modules/SharkBayRefCodes/IntelPfat/PfatCpuPolicyOverride/PfatCpuPolicyOverride.h 1 9/17/12 4:47p Fredericko $ +// +// $Revision: 1 $ +// +// $Date: 9/17/12 4:47p $ +// +// +// +//************************************************************************* +//<AMI_FHDR_START> +// +// Name: PfatCpuPolicyOverride.h +// +// Description: Header file for PfatCpuPolicyOverride sub-component +// +//<AMI_FHDR_END> +//************************************************************************* + +#ifndef _PFAT_CPU_POLICY_OVERRIDE_H_ +#define _PFAT_CPU_POLICY_OVERRIDE_H_ + +#if !defined(EDK_RELEASE_VERSION) || (EDK_RELEASE_VERSION < 0x00020000) +#include "EdkIIGluePeim.h" + +#include <Token.h> +#include <SetupDataDefinition.h> +#include "PchRegs.h" +#include EFI_PPI_PRODUCER (CpuPlatformPolicy) +#endif + +#define SYSTEM_CONFIGURATION_GUID { 0xEC87D643, 0xEBA4, 0x4BB5, 0xA1, 0xE5, 0x3F, 0x3E, 0x36, 0xB2, 0x0D, 0xA9 } + +#define PFAT_PUB_KEY_FFS_FILE_RAW_GUID \ + {0x8e295870, 0xd377, 0x4b75, 0xbf, 0xdc, 0x9a, 0xe2, 0xf6, 0xdb, 0xde, 0x22} + +#define KBShift 10 +#define MBShift 20 +#define Disable 0 +#define Enable 1 + +#if defined(BUILD_WITH_GLUELIB) +#undef SetMem +VOID * +SetMem ( + OUT VOID *Buffer, + IN UINTN Length, + IN UINT8 Value + ) +{ + return GlueSetMem (Buffer, Length, Value); +} + +#undef CopyMem +VOID * +EFIAPI +CopyMem ( + OUT VOID *DestinationBuffer, + IN CONST VOID *SourceBuffer, + IN UINTN Length + ) +{ + return GlueCopyMem (DestinationBuffer, SourceBuffer, Length); +} +#endif + +STATIC +EFI_STATUS +PfatCpuPolicyOverrideEndOfPeiCpuPlatformPolicy ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDesc, + IN VOID *Ppi +); + +// +// Hash functions definitions for pfat +// +UINTN +EFIAPI +Sha256GetContextSize ( + VOID + ); + +BOOLEAN +EFIAPI +Sha256Init ( + IN OUT VOID *Sha256Context + ); + +BOOLEAN +EFIAPI +Sha256Update ( + IN OUT VOID *Sha256Context, + IN CONST VOID *Data, + IN UINTN DataLength + ); + +BOOLEAN +EFIAPI +Sha256Final ( + IN OUT VOID *Sha256Context, + OUT UINT8 *HashValue + ); + +#endif + +//************************************************************************* +//************************************************************************* +//** ** +//** (C)Copyright 1985-2012, 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/Board/EM/Pfat/PfatCpuPolicyOverride/PfatCpuPolicyOverride.mak b/Board/EM/Pfat/PfatCpuPolicyOverride/PfatCpuPolicyOverride.mak new file mode 100644 index 0000000..4656d93 --- /dev/null +++ b/Board/EM/Pfat/PfatCpuPolicyOverride/PfatCpuPolicyOverride.mak @@ -0,0 +1,116 @@ +#********************************************************************** +#********************************************************************** +#** ** +#** (C)Copyright 1985-2012, American Megatrends, Inc. ** +#** ** +#** All Rights Reserved. ** +#** ** +#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +#** ** +#** Phone: (770)-246-8600 ** +#** ** +#********************************************************************** +#********************************************************************** +#********************************************************************** +# $Header: /Alaska/SOURCE/Modules/SharkBayRefCodes/IntelPfat/PfatCpuPolicyOverride/PfatCpuPolicyOverride.mak 4 10/29/12 4:10p Fredericko $ +# +# $Revision: 4 $ +# +# $Date: 10/29/12 4:10p $ +#********************************************************************** +# Revision History +# ---------------- +# $Log: /Alaska/SOURCE/Modules/SharkBayRefCodes/IntelPfat/PfatCpuPolicyOverride/PfatCpuPolicyOverride.mak $ +# +# 4 10/29/12 4:10p Fredericko +# [TAG] EIP84115 +# [Category] Improvement +# [Description] Implementing PFAT function for Shark Bay +# +# 3 10/05/12 6:28p Fredericko +# Make Pfat build with Debug Mode Turned On. +# +# 2 9/25/12 6:16p Fredericko +# +# 1 9/17/12 4:47p Fredericko +# Initial Check in for PfatCpuPolicyOverride +# +#********************************************************************** +#<AMI_FHDR_START> +# +# Name: PfatCpuPolicyOverride.mak +# +# Description: Make file for PfatCpuPolicyOverride +# +# +#<AMI_FHDR_END> +#********************************************************************** + +all : PfatCpuPolicyOverride + +PfatCpuPolicyOverride : $(BUILD_DIR)\PfatCpuPolicyOverride.mak PfatCpuPolicyOverrideBin + +$(BUILD_DIR)\PfatCpuPolicyOverride.mak : $(PFAT_CPU_POLICY_OVERRIDE_PATH)\PfatCpuPolicyOverride.cif $(PFAT_CPU_POLICY_OVERRIDE_PATH)\PfatCpuPolicyOverride.mak $(BUILD_RULES) + $(CIF2MAK) $(PFAT_CPU_POLICY_OVERRIDE_PATH)\PfatCpuPolicyOverride.cif $(CIF2MAK_DEFAULTS) + +PFAT_CPU_POLICY_OVERRIDE_INCLUDES = \ + $(EdkIIGlueLib_INCLUDES)\ + /I$(INTEL_COUGAR_POINT_INCLUDE_DIR)\ + /I$(PROJECT_CPU_ROOT)\ + /I$(PROJECT_CPU_ROOT)\Include \ + +PFAT_CPU_POLICY_OVERRIDE_DEFINES=\ + $(MY_DEFINES)\ + /D"__EDKII_GLUE_MODULE_ENTRY_POINT__=PfatCpuPolicyOverrideEntryPoint"\ + /D __EDKII_GLUE_BASE_LIB__ \ + /D __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__ \ + /D __EDKII_GLUE_BASE_MEMORY_LIB__\ + /D __EDKII_GLUE_PEI_SERVICES_LIB__ \ + /D __EDKII_GLUE_PEI_MEMORY_ALLOCATION_LIB__ \ + /D __EDKII_GLUE_BASE_PCI_LIB_PCI_EXPRESS__ \ + +PFAT_CPU_POLICY_OVERRIDE_LIBS = \ + $(EDKFRAMEWORKGUIDLIB)\ + $(EDKPPILIB)\ + $(EdkIIGlueBaseLibIA32_LIB)\ + $(EdkIIGlueBaseIoLibIntrinsic_LIB)\ + $(EdkIIGlueBaseMemoryLib_LIB)\ + $(EdkIIGluePeiDebugLibReportStatusCode_LIB)\ + $(EdkIIGluePeiReportStatusCodeLib_LIB)\ + $(EdkIIGluePeiServicesLib_LIB)\ + $(EdkIIGluePeiMemoryAllocationLib_LIB)\ + $(EdkIIGlueBasePciLibPciExpress_LIB)\ + $(EdkIIGlueBasePciExpressLib_LIB)\ + $(EdkIIGluePeiHobLib_LIB)\ + $(INTEL_SA_PPI_LIB)\ + $(CPU_PPI_LIB)\ + +PfatCpuPolicyOverrideBin : $(PFAT_CPU_POLICY_OVERRIDE_LIBS) + $(MAKE) /$(MAKEFLAGS) $(EDKIIGLUE_DEFAULTS)\ + /f $(BUILD_DIR)\PfatCpuPolicyOverride.mak all\ + NAME=PfatCpuPolicyOverride \ + MAKEFILE=$(BUILD_DIR)\PfatCpuPolicyOverride.mak \ + "MY_INCLUDES=$(PFAT_CPU_POLICY_OVERRIDE_INCLUDES)"\ + "MY_DEFINES = $(PFAT_CPU_POLICY_OVERRIDE_DEFINES)" \ + OBJECTS="$(BUILD_DIR)\$(PFAT_CPU_POLICY_OVERRIDE_PATH)\PfatCpuPolicyOverride.obj" \ + GUID=FAF79E9F-4D40-4F02-8AC9-4B5512708F7F \ + ENTRY_POINT=_ModuleEntryPoint "EXT_HEADERS=$(BUILD_DIR)\token.h"\ + TYPE=PEIM \ + EDKIIModule=PEIM\ + DEPEX1=$(PFAT_CPU_POLICY_OVERRIDE_PATH)\PfatCpuPolicyOverride.dxs \ + DEPEX1_TYPE=EFI_SECTION_PEI_DEPEX \ + COMPRESS=0 + +#********************************************************************** +#********************************************************************** +#** ** +#** (C)Copyright 1985-2012, American Megatrends, Inc. ** +#** ** +#** All Rights Reserved. ** +#** ** +#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +#** ** +#** Phone: (770)-246-8600 ** +#** ** +#********************************************************************** +#********************************************************************** diff --git a/Board/EM/Pfat/PfatCpuPolicyOverride/PfatCpuPolicyOverride.sdl b/Board/EM/Pfat/PfatCpuPolicyOverride/PfatCpuPolicyOverride.sdl new file mode 100644 index 0000000..9fd801e --- /dev/null +++ b/Board/EM/Pfat/PfatCpuPolicyOverride/PfatCpuPolicyOverride.sdl @@ -0,0 +1,98 @@ +#********************************************************************** +#********************************************************************** +#** ** +#** (C)Copyright 1985-2012, American Megatrends, Inc. ** +#** ** +#** All Rights Reserved. ** +#** ** +#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +#** ** +#** Phone: (770)-246-8600 ** +#** ** +#********************************************************************** +#********************************************************************** +#********************************************************************** +# $Header: /Alaska/SOURCE/Modules/SharkBayRefCodes/IntelPfat/PfatCpuPolicyOverride/PfatCpuPolicyOverride.sdl 3 10/02/12 4:12p Fredericko $ +# +# $Revision: 3 $ +# +# $Date: 10/02/12 4:12p $ +#********************************************************************** +# Revision History +# ---------------- +# $Log: /Alaska/SOURCE/Modules/SharkBayRefCodes/IntelPfat/PfatCpuPolicyOverride/PfatCpuPolicyOverride.sdl $ +# +# 3 10/02/12 4:12p Fredericko +# BIOS_SVN token added +# +# 2 9/25/12 6:16p Fredericko +# +# 1 9/17/12 4:47p Fredericko +# Initial Check in for PfatCpuPolicyOverride +# +#********************************************************************** +#<AMI_FHDR_START> +# +# Name: PfatCpuPolicyOverride.sdl +# +# Description: SDL file for PfatCpuPolicyOverride +# +#<AMI_FHDR_END> +#********************************************************************** + +TOKEN + Name = "PFAT_CPU_POLICY_OVERRIDE_SUPPORT" + Value = "1" + Help = "Main switch to enable PFAT_CPU_POLICY_OVERRIDE_SUPPORT support in Project" + TokenType = Boolean + TargetMAK = Yes + TargetH = Yes + Master = Yes +End + +MODULE + Help = "Includes PfatCpuPolicyOverride.mak to Project" + File = "PfatCpuPolicyOverride.mak" +End + +PATH + Name = "PFAT_CPU_POLICY_OVERRIDE_PATH" +End + +TOKEN + Name = "PFAT_COUNT" + Value = "2" + Help = "" + TokenType = Integer + TargetEQU = Yes + TargetH = Yes +End + +TOKEN + Name = "BIOS_SVN" + Value = "9502720" + Help = "This token must to be decimal because Intel's PPB.exe only supported decimal. The definition is 0x910000(9502720) in PEI_CPU_PLATFORM_POLICY_PPI_REVISION_5." + TokenType = Integer + TargetMAK = Yes + TargetH = Yes +End + +ELINK + Name = "$(BUILD_DIR)\PfatCpuPolicyOverride.ffs" + Parent = "FV_BB" + InvokeOrder = AfterParent +End + +#********************************************************************** +#********************************************************************** +#** ** +#** (C)Copyright 1985-2012, American Megatrends, Inc. ** +#** ** +#** All Rights Reserved. ** +#** ** +#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +#** ** +#** Phone: (770)-246-8600 ** +#** ** +#********************************************************************** +#********************************************************************** diff --git a/Board/EM/Pfat/PfatPubKeysAndBuildPSL/.VkeyExp b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/.VkeyExp Binary files differnew file mode 100644 index 0000000..a356872 --- /dev/null +++ b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/.VkeyExp diff --git a/Board/EM/Pfat/PfatPubKeysAndBuildPSL/BuildAmiPfatHeader.exe b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/BuildAmiPfatHeader.exe Binary files differnew file mode 100644 index 0000000..0bb57ac --- /dev/null +++ b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/BuildAmiPfatHeader.exe diff --git a/Board/EM/Pfat/PfatPubKeysAndBuildPSL/BuildPSL.bat b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/BuildPSL.bat new file mode 100644 index 0000000..8337d0c --- /dev/null +++ b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/BuildPSL.bat @@ -0,0 +1,315 @@ +echo off +Set AMI_PFAT_FLASH_CONFIGURATIONS=Flash.ini +echo AMI_PFAT_Flash_Configurations>%AMI_PFAT_FLASH_CONFIGURATIONS% +Set FITC_OUTIMAGE_MAP=%1 +Set BuildBIOSMap=%2 +Set WORKING_PATH=%3 +Set BIOS_SVN=%4 +Set /a FlashSectionSize=%5 +if not exist %FITC_OUTIMAGE_MAP% ( + echo Error:OutImage.map isn't found, please check the eModule of RomImgae + goto END +) +if not exist %BuildBIOSMap% ( + echo Error:BuildBIOS.map isn't found, please check the PfatPubKeysAndBuildPSL.sdl + goto END +) +if not exist ForPfatName.txt ( + echo Error:ForPfatName.txt isn't found, please check the eModule of RomImgae + goto END +) +FOR /F "usebackq tokens=1" %%G IN ("ForPfatName.txt") DO ( + Set INPUT_BIOS_IMAGE=%%G +) +del ForPfatName.txt +FOR /F "skip=2 usebackq tokens=1,2,3,4-6" %%G IN ("%FITC_OUTIMAGE_MAP%") DO ( + if "%%J %%K %%L" EQU "Flash Image " ( + Set /a TOTAL_ROM_SIZE=0x%%I + )else if "%%J %%K %%L" EQU "Descriptor Region " ( + Set /a DescriptorRegionStartingAddress=0x%%G + Set /a DescriptorRegionLength=0x%%I + )else if "%%J %%K %%L" EQU "GbE Region " ( + Set /a GbERegionStartingAddress=0x%%G + Set /a GbERegionLength=0x%%I + )else if "%%J %%K %%L" EQU "ME Region " ( + Set /a MERegionStartingAddress=0x%%G + Set /a MERegionLength=0x%%I + )else if "%%J %%K %%L" EQU "BIOS Region " ( + Set /a BIOSRegionStartingAddress=0x%%G + Set /a BIOSRegionLength=0x%%I + ) +) +goto Define_Flash_Type + +:Define_Flash_Type +Set MeType=0 +Set BiosType=1 +Set EcType=2 +Set OthersType=3 +goto Prepare_Definitions + +:Prepare_Definitions +Set DESCRIPTOR_REGION_ROM=DescriptorRegion.bin +Set GBE_REGION_ROM=GbERegion.bin +Set ME_REGION_ROM=MERegion.bin +Set PUBLIC_KEY_FILENAME=%WORKING_PATH%\PfatPublic.key +Set PRIVATE_KEY_FILENAME=%WORKING_PATH%\PfatPrivate.key +Set PFAT_VKEY_EXP=%WORKING_PATH%\.VkeyExp +Set PUBLIC_KEY_FILENAME_HASH=%WORKING_PATH%\PubKeyhash.bin +Set PFATCRYPTCON=%WORKING_PATH%\PfatCryptoCon.exe +Set KEYGEN=%WORKING_PATH%\Keygen.exe +Set CUTROM=%WORKING_PATH%\CutRom.exe +Set PSL2BIN=%WORKING_PATH%\psl2bin.exe +Set PPB=%WORKING_PATH%\PPB.exe +Set PSL_FILE=AmiPfatBiosPSL +Set PFAT_SCRIPT_HDR=%WORKING_PATH%\PfatCertHeader.bin +Set PFAT_UPDATEPKG_FILENAME=UpdatePkg.pfat +Set PFAT_SIGNATURE_FILENAME=.out_PfatCer +Set PFAT_INTREGRATION_ROM=AMIPFAT.bin +Set AMI_PFAT_HEADER=%WORKING_PATH%\AMIPFATHeader.bin +%WORKING_PATH%\BuildAmiPfatHeader.exe /Empty %AMI_PFAT_HEADER% +copy %AMI_PFAT_HEADER% %PFAT_INTREGRATION_ROM% +goto BUILD_DESCRIPTOR_REGION_ROM + +:BUILD_DESCRIPTOR_REGION_ROM + Set ROM_PRIORITY=%DESCRIPTOR_REGION_ROM% + Set /a FV_StartingAddress=%DescriptorRegionStartingAddress% + Set /a FV_Length=%DescriptorRegionLength% + goto SETUP_PARAMETERS + +:BUILD_GBE_REGION_ROM + Set ROM_PRIORITY=%GBE_REGION_ROM% + Set /a FV_StartingAddress=%GbERegionStartingAddress% + Set /a FV_Length=%GbERegionLength% + goto SETUP_PARAMETERS + +:BUILD_ME_REGION_ROM + Set ROM_PRIORITY=%ME_REGION_ROM% + Set /a FV_StartingAddress=%MERegionStartingAddress% + Set /a FV_Length=%MERegionLength% + goto SETUP_PARAMETERS + +:BUILD_BIOS_REGION_ROM_FIRST_FV + Set /a BIOS_FV_Number=0 + FOR /F "usebackq tokens=1-4" %%G IN ("%BuildBIOSMap%") DO ( + Set ROM_PRIORITY=%%G + Set FlashCMD=%%H + Set /a FV_StartingAddress=%BIOSRegionStartingAddress%+%%I + Set /a FV_Length=%%J + goto SETUP_PARAMETERS + ) + goto BuildAmiPfatHeader + +:BUILD_BIOS_REGION_ROM_REMAINDER + Set /a BIOS_FV_Number+=1 + FOR /F "skip=%BIOS_FV_Number% usebackq tokens=1-4" %%G IN ("%BuildBIOSMap%") DO ( + Set ROM_PRIORITY=%%G + Set FlashCMD=%%H + Set /a FV_StartingAddress=%BIOSRegionStartingAddress%+%%I + Set /a FV_Length=%%J + goto SETUP_PARAMETERS + ) + goto BuildAmiPfatHeader + +:SETUP_PARAMETERS + %CUTROM% %INPUT_BIOS_IMAGE% %ROM_PRIORITY% %FV_StartingAddress% %FV_Length% + Set /a FlashRemainderSize=%FV_Length%%%FlashSectionSize% + Set /a SUBTRACT_BLOCK_SIZE_FROM_DATA_SIZE=%FlashSectionSize%-0x1000 + Set /a START_COUNT=0 + Set /a NoRemainderCount=%FV_Length%/%FlashSectionSize% + if %NoRemainderCount% GTR 0 ( + Set /a NoRemainderCount-=1 + Set /a SKIP_CUT_ROM=1 + ) else ( + Set /a SKIP_CUT_ROM=0 + ) + if %FlashRemainderSize% EQU 0 ( + Set /a END_COUNT=%FV_Length%/%FlashSectionSize%-1 + ) else ( + Set /a END_COUNT=%FV_Length%/%FlashSectionSize% + ) + Set /a END_OF_SIZE=%FV_StartingAddress%+%FV_Length% + goto AutoBuildPSL + +:AutoBuildPSL + Set /a START_FLASH_SECTION=%START_COUNT%*%FlashSectionSize% + Set /a START_FLASH_SECTION_IN_MB=%START_FLASH_SECTION%/%FlashSectionSize% + Set FLASH_ROM=AMI_%START_FLASH_SECTION_IN_MB%M.rom + Set PSL_OUT_FILENAME=AmiPfatBiosPSLOutput_%START_FLASH_SECTION_IN_MB%M.bin + Set FLASH_ROM_OUTPUT_FILENAME=APFAT%START_FLASH_SECTION_IN_MB%M.bin + Set /a SUBTRACT_BLOCK_SIZE_FROM_TOTAL_ROM_SIZE=%FV_StartingAddress% + Set /a CURRENT_SIZE=%START_COUNT%+1 + Set /a CURRENT_SIZE*=%FlashSectionSize% + Set /a CURRENT_SIZE-=0x1000 + if %SKIP_CUT_ROM% EQU 1 ( + if %NoRemainderCount% GEQ %START_COUNT% ( + %CUTROM% %ROM_PRIORITY% %FLASH_ROM% %START_FLASH_SECTION% %FlashSectionSize% + Set /a SUBTRACT_BLOCK_SIZE_FROM_TOTAL_ROM_SIZE+=%CURRENT_SIZE% + ) else ( + %CUTROM% %ROM_PRIORITY% %FLASH_ROM% %START_FLASH_SECTION% %FlashRemainderSize% + Set /a SUBTRACT_BLOCK_SIZE_FROM_TOTAL_ROM_SIZE=%END_OF_SIZE%-0x1000 + Set /a SUBTRACT_BLOCK_SIZE_FROM_DATA_SIZE=%FlashRemainderSize%-0x1000 + ) + ) else ( + Set FLASH_ROM=%ROM_PRIORITY% + Set /a SUBTRACT_BLOCK_SIZE_FROM_TOTAL_ROM_SIZE=%END_OF_SIZE%-0x1000 + Set /a SUBTRACT_BLOCK_SIZE_FROM_DATA_SIZE=%FlashRemainderSize%-0x1000 + ) + echo begin > %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo // Set up initial values for update process >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo set F0 %SUBTRACT_BLOCK_SIZE_FROM_TOTAL_ROM_SIZE%; Total ROM size >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo set B0 %SUBTRACT_BLOCK_SIZE_FROM_DATA_SIZE%; Data size >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo set I0 0; the offset count >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo set I1 0x1000; the FLASH BLOCK SIZE >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo set I2 0; Erase error count >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo set I3 0; Write error count >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo set I4 3; Max errors >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo set I5 0; Error Code Buffer >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo set I6 0; Read error count >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo jmp _read; >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + + echo.>> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo _read_retry_label: >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo add I6 1; increment the read retries count >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo compare I6 I4; compare read retries count to max retries >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo jge _read_error_label >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo jmp _read; if error START_COUNT is smaller than Max errors jump to read>> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + + echo.>> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo _erase_retry_label: >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo add I2 1; increment the erase retries count >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo compare I2 I4; compare erase retries count to max retries >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo jge _erase_error_label >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo jmp _erase; if error START_COUNT is smaller than Max errors jump to erase >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + + echo.>> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo _write_retry_label: >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo add I3 1; increment the write retries count >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo compare I3 I4; compare write retries count to max retries >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo jge _write_error_label >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo jmp _write; if error START_COUNT is smaller than Max errors jump to weite>> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + + echo.>> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo _loop: >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + + echo.>> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo _read: >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo read B1 F0 I1; read block 4KB >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo rdsts I5; read the HW status into I5 >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo compare I5 0; >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo jne _read_retry_label; if HW status != 0 jump to retry >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo compare B0 B1 I1; compare B0 vs B1 >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo je _skip_erase_and_write; if B0 == B1 skip erase and write >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + + echo.>> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo _erase: >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo eraseblk F0; erase block 4KB >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo rdsts I5; read the HW status into I5 >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo compare I5 0; >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo jne _erase_retry_label; if HW status != 0 jump to retry >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + + echo.>> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo _write: >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo write F0 B0 I1; write block >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo rdsts I5; read the HW status into I5 >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo compare I5 0; >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo jne _write_retry_label; if HW status != 0 jump to retry >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + + echo.>> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo _skip_erase_and_write: >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo add I0 I1; increment offset >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + + echo.>> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo // check if we reached the end of the buffer. We can't increment F0.offset and B0.offset to be more than BIOS size. >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + if %SKIP_CUT_ROM% EQU 1 ( + if %NoRemainderCount% GEQ %START_COUNT% ( + echo compare I0 %FlashSectionSize%; compare count with BIOS image size >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo jge _end; if the count is greater or equal to %FlashSectionSize% then complete >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + ) else ( + echo compare I0 %FlashRemainderSize%; compare count with BIOS image size >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo jge _end; if the count is greater or equal to %FlashRemainderSize% then complete >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + ) + ) else ( + echo compare I0 %FlashRemainderSize%; compare count with BIOS image size >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo jge _end; if the count is greater or equal to %FlashRemainderSize% then complete >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + ) + echo.>> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo //Sub 4KB to offsets >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo sub F0 I1; Decrement flash offset >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo sub B0 I1; Decrement buffer offset >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo jmp _loop; work on the next block >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + + echo.>> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo _read_error_label: >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo set If 1; set error in If >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo jmp _end; >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + + echo.>> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo _erase_error_label: >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo set If 2; set error in If >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo jmp _end; >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + + echo.>> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo _write_error_label: >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo set If 3; set error in If >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + + echo.>> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo _end: >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo set If 0; set error = 0 if success >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + + echo.>> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + echo end >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl + + %PSL2BIN% %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl %PSL_OUT_FILENAME% + %PPB% -script %PSL_OUT_FILENAME% -data %FLASH_ROM% -package %PFAT_UPDATEPKG_FILENAME% -use_sfam true -bios_svn %BIOS_SVN% + %PFATCRYPTCON% -z -k %PRIVATE_KEY_FILENAME% -f %PFAT_UPDATEPKG_FILENAME% -s + copy /b %PFAT_UPDATEPKG_FILENAME% + %PFAT_SCRIPT_HDR% + %PFAT_SIGNATURE_FILENAME% %FLASH_ROM_OUTPUT_FILENAME% + if exist .out_key ( + del .out_key + ) + del .out_PfatCer + del %PFAT_UPDATEPKG_FILENAME% + if %START_COUNT% EQU %END_COUNT% goto FinishedAutoBuildPSL + Set /a START_COUNT+=1 + goto AutoBuildPSL + +:FinishedAutoBuildPSL + Set /a START_COUNT=0 +:IntegrateAllROMs + Set /a START_FLASH_SECTION=%START_COUNT%*%FlashSectionSize% + Set /a START_FLASH_SECTION_IN_MB=%START_FLASH_SECTION%/%FlashSectionSize% + copy /b %PFAT_INTREGRATION_ROM%+APFAT%START_FLASH_SECTION_IN_MB%M.bin %PFAT_INTREGRATION_ROM% + del APFAT%START_FLASH_SECTION_IN_MB%M.bin + del AmiPfatBiosPSLOutput_%START_FLASH_SECTION_IN_MB%M.bin + if exist AMI_%START_FLASH_SECTION_IN_MB%M.rom ( + del AMI_%START_FLASH_SECTION_IN_MB%M.rom + ) + if %START_COUNT% EQU %END_COUNT% goto FinishedIntegrateAllROMs + Set /a START_COUNT+=1 + goto IntegrateAllROMs + +:FinishedIntegrateAllROMs + del *.psl + Set /a END_COUNT+=1 + del %ROM_PRIORITY% + if "%ROM_PRIORITY%" EQU "%DESCRIPTOR_REGION_ROM%" ( + echo %MeType% /DESC %END_COUNT% ;%ROM_PRIORITY%>>%AMI_PFAT_FLASH_CONFIGURATIONS% + goto BUILD_GBE_REGION_ROM + ) + if "%ROM_PRIORITY%" EQU "%GBE_REGION_ROM%" ( + echo %MeType% /GBE %END_COUNT% ;%ROM_PRIORITY%>>%AMI_PFAT_FLASH_CONFIGURATIONS% + goto BUILD_ME_REGION_ROM + ) + if "%ROM_PRIORITY%" EQU "%ME_REGION_ROM%" ( + echo %MeType% /ME %END_COUNT% ;%ROM_PRIORITY%>>%AMI_PFAT_FLASH_CONFIGURATIONS% + goto BUILD_BIOS_REGION_ROM_FIRST_FV + ) + echo %BiosType% %FlashCMD% %END_COUNT% ;%ROM_PRIORITY%>>%AMI_PFAT_FLASH_CONFIGURATIONS% + goto BUILD_BIOS_REGION_ROM_REMAINDER + +:BuildAmiPfatHeader + %WORKING_PATH%\BuildAmiPfatHeader.exe %AMI_PFAT_FLASH_CONFIGURATIONS% %AMI_PFAT_HEADER% + copy /b %AMI_PFAT_HEADER%+%PFAT_INTREGRATION_ROM% AMIPFAT_%INPUT_BIOS_IMAGE% + del %AMI_PFAT_HEADER% + del %PFAT_INTREGRATION_ROM% +:END
\ No newline at end of file diff --git a/Board/EM/Pfat/PfatPubKeysAndBuildPSL/CutRom.exe b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/CutRom.exe Binary files differnew file mode 100644 index 0000000..910e46c --- /dev/null +++ b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/CutRom.exe diff --git a/Board/EM/Pfat/PfatPubKeysAndBuildPSL/PPB.exe b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/PPB.exe Binary files differnew file mode 100644 index 0000000..a7f27a9 --- /dev/null +++ b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/PPB.exe diff --git a/Board/EM/Pfat/PfatPubKeysAndBuildPSL/PfatCertHeader.bin b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/PfatCertHeader.bin Binary files differnew file mode 100644 index 0000000..1d9374d --- /dev/null +++ b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/PfatCertHeader.bin diff --git a/Board/EM/Pfat/PfatPubKeysAndBuildPSL/PfatCryptoCon.exe b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/PfatCryptoCon.exe Binary files differnew file mode 100644 index 0000000..8914a6f --- /dev/null +++ b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/PfatCryptoCon.exe diff --git a/Board/EM/Pfat/PfatPubKeysAndBuildPSL/PfatPubKeysAndBuildPSL.cif b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/PfatPubKeysAndBuildPSL.cif new file mode 100644 index 0000000..1dfa1b8 --- /dev/null +++ b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/PfatPubKeysAndBuildPSL.cif @@ -0,0 +1,19 @@ +<component> + name = "PfatPubKeysAndBuildPSL" + category = ModulePart + LocalRoot = "Board\EM\Pfat\PfatPubKeysAndBuildPSL" + RefName = "PfatPubKeysAndBuildPSL" +[files] +"PfatPubKeysAndBuildPSL.sdl" +"PfatPubKeysAndBuildPSL.mak" +"dummy.bin" +"PfatCertHeader.bin" +"BuildPSL.bat" +"BuildAmiPfatHeader.exe" +"CutRom.exe" +"keygen.exe" +"PfatCryptoCon.exe" +"PPB.exe" +"psl2bin.exe" +".VkeyExp" +<endComponent> diff --git a/Board/EM/Pfat/PfatPubKeysAndBuildPSL/PfatPubKeysAndBuildPSL.mak b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/PfatPubKeysAndBuildPSL.mak new file mode 100644 index 0000000..16fad9e --- /dev/null +++ b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/PfatPubKeysAndBuildPSL.mak @@ -0,0 +1,105 @@ +#************************************************************************* +#************************************************************************* +#** ** +#** (C)Copyright 1985-2012, American Megatrends, Inc. ** +#** ** +#** All Rights Reserved. ** +#** ** +#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +#** ** +#** Phone: (770)-246-8600 ** +#** ** +#************************************************************************* +#************************************************************************* + +#************************************************************************* +# $Header: /Alaska/SOURCE/Modules/SharkBayRefCodes/IntelPfat/PfatUtilsandScripts/PfatPubKeysAndBuildPSL.mak 1 10/29/12 4:04p Fredericko $ +# +# $Revision: 1 $ +# +# $Date: 10/29/12 4:04p $ +#************************************************************************* +# Revision History +# ---------------- +# $Log: /Alaska/SOURCE/Modules/SharkBayRefCodes/IntelPfat/PfatUtilsandScripts/PfatPubKeysAndBuildPSL.mak $ +# +# 1 10/29/12 4:04p Fredericko +# [TAG] EIP844115 +# [Category] Improvement +# [Description] Added PfatPubKeysAndBuildPSL. Added Tools CutRom for +# stiching PfatImage, BuildAmiPfatHeader for creating Apfatdos header for +# PFAT. +# [Files] PfatPubKeysAndBuildPSL.cif +# PfatPubKeysAndBuildPSL.sdl +# PfatPubKeysAndBuildPSL.mak +# dummy.bin +# BuildPSL.bat +# BuildAmiPfatHeader.exe +# CutRom.exe +# +# 7 9/21/12 5:08p Fredericko +# Modified to use cryptocon and keygen +# +# 4 9/17/12 4:34p Fredericko +# Changes to create PSL at build time. Changes for SignPfat utility error +# during build. +# +# 3 9/10/12 10:52p Fredericko +# +# 2 9/10/12 9:55p Fredericko +# +# 1 9/01/12 2:22a Fredericko +# +#************************************************************************* +#************************************************************************* +#<AMI_FHDR_START> +# +# Name: PfatPubKey.mak +# +# Description: Make for for PfatPubKey +# +# +#<AMI_FHDR_END> +#************************************************************************* +all: PfatPubKeyModule + +PfatPubKeyModule : SETPFATPUBKEY + +PFAT_PUB_KEY_FFS_FILE_GUID = 8E295870-D377-4b75-BFDC-9AE2F6DBDE22 + +SETPFATPUBKEY: $(BUILD_DIR)\PfatPubKey.ffs + +PUBLIC_KEY_FILENAME = $(PFATPUB_DIR)\PfatPublic.key +PRIVATE_KEY_FILENAME = $(PFATPUB_DIR)\PfatPrivate.key +PFAT_VKEY_EXP = $(PFATPUB_DIR)\.VkeyExp +PUBLIC_KEY_FILENAME_HASH = $(PFATPUB_DIR)\PubKeyhash.bin + +PFAT_GENERATE_KEYS: + del $(PUBLIC_KEY_FILENAME_HASH) + if not exist $(PUBLIC_KEY_FILENAME) $(KEYGEN) $(PRIVATE_KEY_FILENAME) $(PUBLIC_KEY_FILENAME) + $(PFATCRYPTCON) -z -w -k $(PRIVATE_KEY_FILENAME) -f $(PFATPUB_DIR)\dummy.bin -s + copy /b .out_key + $(PFAT_VKEY_EXP) $(PUBLIC_KEY_FILENAME_HASH) + $(PFATCRYPTCON) -h2 -f $(PUBLIC_KEY_FILENAME_HASH) -o $(PUBLIC_KEY_FILENAME_HASH) + +PREPARE : PFAT_GENERATE_KEYS + +$(BUILD_DIR)\PfatPubKey.ffs : $(PUBLIC_KEY_FILENAME_HASH) + $(MAKE) /f Core\FFS.mak \ + BUILD_DIR=$(BUILD_DIR) \ + GUID=$(PFAT_PUB_KEY_FFS_FILE_GUID) \ + TYPE=EFI_FV_FILETYPE_FREEFORM \ + BINFILE=$** FFSFILE=$@ COMPRESS=0 NAME=PfatPubKey + +#************************************************************************* +#************************************************************************* +#** ** +#** (C)Copyright 1985-2012, American Megatrends, Inc. ** +#** ** +#** All Rights Reserved. ** +#** ** +#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +#** ** +#** Phone: (770)-246-8600 ** +#** ** +#************************************************************************* +#************************************************************************* diff --git a/Board/EM/Pfat/PfatPubKeysAndBuildPSL/PfatPubKeysAndBuildPSL.sdl b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/PfatPubKeysAndBuildPSL.sdl new file mode 100644 index 0000000..21bdb8f --- /dev/null +++ b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/PfatPubKeysAndBuildPSL.sdl @@ -0,0 +1,265 @@ +#********************************************************************** +#********************************************************************** +#** ** +#** (C)Copyright 1985-2012, American Megatrends, Inc. ** +#** ** +#** All Rights Reserved. ** +#** ** +#** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 ** +#** ** +#** Phone: (770)-246-8600 ** +#** ** +#********************************************************************** + +TOKEN + Name = "PfatPubKey_SUPPORT" + Value = "1" + Help = "" + TokenType = Boolean + TargetEQU = Yes + TargetMAK = Yes + Master = Yes +End + +MODULE + File = "PfatPubKeysAndBuildPSL.mak" +End + +TOKEN + Name = "PFATCRYPTCON" + Value = "$(PFATPUB_DIR)\PfatCryptoCon.exe" + TokenType = Expression + TargetMAK = Yes +End + +TOKEN + Name = "KEYGEN" + Value = "$(PFATPUB_DIR)\Keygen.exe" + TokenType = Expression + TargetMAK = Yes +End + +ELINK + Name = "$(BUILD_DIR)\PfatPubKey.ffs" + Parent = "FV_BB" + InvokeOrder = AfterParent +End + +TOKEN + Name = "PfatMaxSectionSize" + Help = "Mega Byte is a unit of section size" + Value = "0x100000" + TokenType = Integer + TargetEQU = Yes + TargetMAK = Yes + TargetH = Yes +End + +TOKEN + Name = "BIOSStartingAddress" + Help = "" + Value = "0xFFFFFFFF - $(FLASH_SIZE) + 1" + TokenType = Integer + TargetEQU = Yes + TargetMAK = Yes + TargetH = Yes +End + +TOKEN + Name = "FV_NvRamStartingAddress" + Help = "ROM address" + Value = "$(NVRAM_ADDRESS) - $(BIOSStartingAddress)" + TokenType = Integer + TargetEQU = Yes + TargetMAK = Yes + TargetH = Yes +End + +TOKEN + Name = "FV_NvRamLength" + Help = "ROM address" + Value = "($(NVRAM_BLOCKS)*$(FLASH_BLOCK_SIZE))*2" + TokenType = Integer + TargetEQU = Yes + TargetMAK = Yes + TargetH = Yes +End + +TOKEN + Name = "FV_OAStartingAddress" + Help = "ROM address" + Value = "$(OEM_ACTIVATION_TABLE_ADDRESS) - $(BIOSStartingAddress)" + TokenType = Integer + TargetEQU = Yes + TargetMAK = Yes + TargetH = Yes + Token = "OEM_ACTIVATION_TABLE_LOCATION" "=" "1" +End + +TOKEN + Name = "FV_OA_Length" + Help = "ROM address" + Value = "$(OEM_ACTIVATION_TABLE_SIZE)" + TokenType = Integer + TargetEQU = Yes + TargetMAK = Yes + TargetH = Yes + Token = "OEM_ACTIVATION_TABLE_LOCATION" "=" "1" +End + +TOKEN + Name = "FV_DataStartingAddress" + Help = "ROM address" + Value = "$(FV_DATA_BASE) - $(BIOSStartingAddress)" + TokenType = Integer + TargetEQU = Yes + TargetMAK = Yes + TargetH = Yes +End + +TOKEN + Name = "FV_DataLength" + Help = "ROM address" + Value = "$(FV_DATA_SIZE)" + TokenType = Integer + TargetEQU = Yes + TargetMAK = Yes + TargetH = Yes +End + +TOKEN + Name = "FV_MainStartingAddress" + Help = "ROM address" + Value = "$(FV_MAIN_BASE) - $(BIOSStartingAddress)" + TokenType = Integer + TargetEQU = Yes + TargetMAK = Yes + TargetH = Yes +End + +TOKEN + Name = "FV_MainLength" + Help = "ROM address" + Value = "$(FV_MAIN_BLOCKS)*$(FLASH_BLOCK_SIZE)" + TokenType = Integer + TargetEQU = Yes + TargetMAK = Yes + TargetH = Yes +End + +TOKEN + Name = "FV_BBStartingAddress" + Help = "ROM address" + Value = "$(FV_BB_BASE) - $(BIOSStartingAddress)" + TokenType = Integer + TargetEQU = Yes + TargetMAK = Yes + TargetH = Yes +End + +TOKEN + Name = "FV_BBLength" + Help = "ROM address" + Value = "$(FV_BB_BLOCKS)*$(FLASH_BLOCK_SIZE)" + TokenType = Integer + TargetEQU = Yes + TargetMAK = Yes + TargetH = Yes +End + +TOKEN + Name = "BUILD_PSL_BATCH" + Value = "$(PFATPUB_DIR)\\BuildPSL.bat" + TokenType = Expression + TargetMAK = Yes +End + +TOKEN + Name = "FITC_OUTIMAGE_MAP" + Value = "$(ROM_IMAGE_DIR)\Build\OutImage.map" + TokenType = Expression + TargetMAK = Yes +End + +TOKEN + Name = "BUILD_BIOS_MAP" + Value = "$(PFATPUB_DIR)\BuildBIOS.map" + TokenType = Expression + TargetMAK = Yes +End + +TOKEN + Name = "BUILD_BIOS_FV_NVRAM" + Value = "echo BIOS_FV_NVRAM.bin /N $(FV_NvRamStartingAddress) $(FV_NvRamLength)>$(BUILD_BIOS_MAP)" + TokenType = Expression + TargetMAK = Yes +End + +TOKEN + Name = "BUILD_BIOS_FV_OA" + Value = "echo BIOS_FV_OA.bin /OA $(FV_OAStartingAddress) $(FV_OA_Length)>>$(BUILD_BIOS_MAP)" + TokenType = Expression + TargetMAK = Yes + Token = "OEM_ACTIVATION_TABLE_LOCATION" "=" "1" +End + +TOKEN + Name = "BUILD_BIOS_FV_DATA" + Value = "echo BIOS_FV_DATA.bin /DATA $(FV_DataStartingAddress) $(FV_DataLength)>>$(BUILD_BIOS_MAP)" + TokenType = Expression + TargetMAK = Yes +End + +TOKEN + Name = "BUILD_BIOS_FV_MAIN" + Value = "echo BIOS_FV_MAIN.bin /P $(FV_MainStartingAddress) $(FV_MainLength)>>$(BUILD_BIOS_MAP)" + TokenType = Expression + TargetMAK = Yes +End + +TOKEN + Name = "BUILD_BIOS_FV_BB" + Value = "echo BIOS_FV_BB.bin /B $(FV_BBStartingAddress) $(FV_BBLength)>>$(BUILD_BIOS_MAP)" + TokenType = Expression + TargetMAK = Yes +End + +TOKEN + Name = "BUILD_BIOS_MAP_SET" + Value = "$(BUILD_BIOS_FV_NVRAM) && $(BUILD_BIOS_FV_MAIN) && $(BUILD_BIOS_FV_DATA) && $(BUILD_BIOS_FV_BB)" + TokenType = Expression + TargetMAK = Yes +End + +TOKEN + Name = "BUILD_BIOS_MAP_SET" + Value = "$(BUILD_BIOS_FV_NVRAM) && $(BUILD_BIOS_FV_OA) && $(BUILD_BIOS_FV_MAIN) && $(BUILD_BIOS_FV_DATA) && $(BUILD_BIOS_FV_BB)" + TokenType = Expression + TargetMAK = Yes + Token = "OEM_ACTIVATION_TABLE_LOCATION" "=" "1" +End + +TOKEN + Name = "BUILD_PSL_SET" + Value = "$(BUILD_PSL_BATCH) $(FITC_OUTIMAGE_MAP) $(BUILD_BIOS_MAP) $(PFATPUB_DIR) $(BIOS_SVN) $(PfatMaxSectionSize)" + TokenType = Expression + TargetMAK = Yes +End + +PATH + Name = "PFATPUB_DIR" +End + +#********************************************************************** +#********************************************************************** +#** ** +#** (C)Copyright 1985-2012, American Megatrends, Inc. ** +#** ** +#** All Rights Reserved. ** +#** ** +#** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 ** +#** ** +#** Phone: (770)-246-8600 ** +#** ** +#********************************************************************** + diff --git a/Board/EM/Pfat/PfatPubKeysAndBuildPSL/dummy.bin b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/dummy.bin new file mode 100644 index 0000000..9613d45 --- /dev/null +++ b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/dummy.bin @@ -0,0 +1 @@ +«Ê¼«Ê¼«Ê¼«Ê¼«Ê¼«Ê¼«Ê¼«Ê¼«Ê¼«Ê¼«Ê¼«Ê¼«Ê¼«Ê¼«Ê«Ê¼«
\ No newline at end of file diff --git a/Board/EM/Pfat/PfatPubKeysAndBuildPSL/keygen.exe b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/keygen.exe Binary files differnew file mode 100644 index 0000000..e81033b --- /dev/null +++ b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/keygen.exe diff --git a/Board/EM/Pfat/PfatPubKeysAndBuildPSL/psl2bin.exe b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/psl2bin.exe Binary files differnew file mode 100644 index 0000000..b095917 --- /dev/null +++ b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/psl2bin.exe diff --git a/Board/EM/Pfat/PfatRecovery/PfatRecovery.c b/Board/EM/Pfat/PfatRecovery/PfatRecovery.c new file mode 100644 index 0000000..590b70d --- /dev/null +++ b/Board/EM/Pfat/PfatRecovery/PfatRecovery.c @@ -0,0 +1,287 @@ +//************************************************************************* +//************************************************************************* +//** ** +//** (C)Copyright 1985-2010, American Megatrends, Inc. ** +//** ** +//** All Rights Reserved. ** +//** ** +//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +//** ** +//** Phone: (770)-246-8600 ** +//** ** +//************************************************************************* +//************************************************************************* + +//********************************************************************** +// $Header: /Alaska/SOURCE/Modules/SharkBayRefCodes/IntelPfat/PfatRecovery/PfatRecovery.c 1 4/05/13 5:36p Fredericko $ +// +// $Revision: 1 $ +// +// $Date: 4/05/13 5:36p $ +//********************************************************************** +// Revision History +// ---------------- +// $Log: /Alaska/SOURCE/Modules/SharkBayRefCodes/IntelPfat/PfatRecovery/PfatRecovery.c $ +// +// 1 4/05/13 5:36p Fredericko +// [TAG] EIP119706 +// [Category] Improvement +// [Description] Support Recovery in pfat module +// [Files] PfatRecovery.cif +// PfatRecovery.sdl +// PfatRecovery.mak +// PfatRecovery.dxs +// PfatRecovery.c +// PfatRecoveryHook.c +// +// +//********************************************************************** +//<AMI_FHDR_START> +// +// Name: +// +// Description: +// +//<AMI_FHDR_END> +//********************************************************************** +//---------------------------------------------------------------------------- +// Includes +// Statements that include other files +#include <PEI.h> +#include <AmiPeiLib.h> +#include <token.h> +#include <PPI\stall.h> +#include <PPI\DeviceRecoveryModule.h> +#include <HOB.h> +#include <AmiHobs.h> +#include <PfatDefinitions.h> + +#define PFAT_PACKAGE_CERT 524 +//---------------------------------------------------------------------------- +// Function Externs + +//---------------------------------------------------------------------------- +// Local prototypes +typedef struct +{ + EFI_PEI_DEVICE_RECOVERY_MODULE_PPI *pDRM_Ppi; + EFI_PEI_DEVICE_LOAD_RECOVERY_CAPSULE SavedLoadCapsule; + +} DEVICE_RECOVERY_MODULE_INFO; + +//---------------------------------------------------------------------------- +// Local Variables +DEVICE_RECOVERY_MODULE_INFO gDeviceRecoveryModuleInfo[MAX_DEVICE_RECOVERY_MODULE]; + + +//---------------------------------------------------------------------------- +// Function Definitions +//<AMI_PHDR_START> +//---------------------------------------------------------------------------- +// +// Procedure: FindAvailableMemory +// +// Description: +// +// Input: +// IN EFI_PEI_SERVICES **PeiServices, +// +// Output: +// EFI_PHYSICAL_ADDRESS +// +//---------------------------------------------------------------------------- +//<AMI_PHDR_END> +EFI_PHYSICAL_ADDRESS +FindAvailableMemory ( + IN EFI_PEI_SERVICES **PeiServices +) +{ + VOID *p; + UINT8 i; + EFI_PHYSICAL_ADDRESS TopOfMemory = 0xffffffff; + + for ((*PeiServices)->GetHobList(PeiServices, &p), i = 0; \ + !(FindNextHobByType(EFI_HOB_TYPE_MEMORY_ALLOCATION, &p)); i++) { + if (TopOfMemory > ((EFI_HOB_MEMORY_ALLOCATION*)p)->AllocDescriptor.MemoryBaseAddress) + TopOfMemory = ((EFI_HOB_MEMORY_ALLOCATION*)p)->AllocDescriptor.MemoryBaseAddress; + } + return (TopOfMemory - (PFAT_RECOVERY_IMAGE_SIZE & 0xFFF00000)); +} +//<AMI_PHDR_START> +//---------------------------------------------------------------------------- +// +// Procedure: PfatRecoveryFileLoaded +// +// Description: Call this function at end of Pei. This currently +// check recovery file. +// +// Input: +// IN EFI_PEI_SERVICES **PeiServices, +// IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor, +// IN VOID *Ppi +// +// +// Output: +// EFI_STATUS +// +//---------------------------------------------------------------------------- +//<AMI_PHDR_END> +EFI_STATUS PfatRecoveryFileLoaded ( + IN EFI_PEI_SERVICES **PeiServices, + IN RECOVERY_IMAGE_HOB *RecoveryHob +) +{ + UINT8 *p; + UINT32 i = 0, j = 0; + PUP_HEADER *PupHdr; + EFI_STATUS Status; + EFI_PHYSICAL_ADDRESS Buffer = NULL; + EFI_BOOT_MODE BootMode; + UINT8 pAmiPfatSign[] = "_AMIPFAT"; + EFI_GUID PfatHobGuid = PFAT_HOB_GUID; + PFAT_HOB *PfatHob; + + Status = (*PeiServices)->GetBootMode(PeiServices, &BootMode); + if ((EFI_ERROR(Status)) || (BootMode != BOOT_IN_RECOVERY_MODE)) + return EFI_SUCCESS; + + // To avoid out of memory resource with AllocatePages in PEI phase, find + // out the top of available memory to re-collate rom image w/o PAT headers. + Buffer = FindAvailableMemory(PeiServices); + + p = (UINT8*)RecoveryHob->Address; + + // Verify AMIPFAT Header. + if (MemCmp (p + 8, pAmiPfatSign, 8)) return Status; + + i = *(UINT32*)p; + PupHdr = (PUP_HEADER*)(p + i); + do { + // skip ScriptSection and PUP Header + i += (PupHdr->ScriptSectionSize + sizeof(PUP_HEADER)); + // collect DataSection only to buffer. + (*PeiServices)->CopyMem ((UINT8*)Buffer + j, \ + (UINT8*)p + i, PupHdr->DataSectionSize); + // pointer to next PUP block. + i += (PupHdr->DataSectionSize + PFAT_PACKAGE_CERT); + j += PupHdr->DataSectionSize; + PupHdr = (PUP_HEADER*)(p + i); + + } while (i < PFAT_RECOVERY_IMAGE_SIZE); + + // Skip ME Region if needed (j = Original image size). + (*PeiServices)->CopyMem ((UINT8*)RecoveryHob->Address, \ + (UINT8*)Buffer + (j - FLASH_SIZE), \ + FLASH_SIZE ); + + // Invalidate PfatHob for disabling PFAT during DXE. + (*PeiServices)->GetHobList(PeiServices, &PfatHob); + Status = FindNextHobByGuid(&PfatHobGuid, &PfatHob); + if(!EFI_ERROR(Status)) { + PfatHob->EfiHobGuidType.Header.HobType = EFI_HOB_TYPE_UNUSED; + } + return EFI_SUCCESS; +} +//<AMI_PHDR_START> +//---------------------------------------------------------------------------- +// +// Procedure: LoadRecoveryCapsuleHook +// +// Description: +// +// Input: IN EFI_PEI_SERVICES **PeiServices, +// IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor, +// +// Output: EFI_STATUS +// +//---------------------------------------------------------------------------- +//<AMI_PHDR_END> +EFI_STATUS +LoadRecoveryCapsuleHook ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_PEI_DEVICE_RECOVERY_MODULE_PPI *This, + IN UINTN CapsuleInstance, + OUT VOID *Buffer ) +{ + UINT8 i = 0; + RECOVERY_IMAGE_HOB RecoveryHob; + EFI_STATUS Status; + + // All the LoadRecoveryCapsule calls come here + for (i = 0; gDeviceRecoveryModuleInfo[i].pDRM_Ppi != NULL; i++) { + // Check "This" for identfiy the LoadRecoveryCapsule call. + if (This != gDeviceRecoveryModuleInfo[i].pDRM_Ppi) continue; + + // Invoke the Original LoadRecoveryCapsule procedure + Status = gDeviceRecoveryModuleInfo[i].SavedLoadCapsule ( \ + PeiServices, This, CapsuleInstance, Buffer ); + if (EFI_ERROR(Status)) return Status; + + // Recovery image loaded, check if PFAT image then reconstruct the + // BIOS image. + RecoveryHob.Address = (EFI_PHYSICAL_ADDRESS)Buffer; + Status = PfatRecoveryFileLoaded (PeiServices, &RecoveryHob); + break; + } + return EFI_SUCCESS; +} +//<AMI_PHDR_START> +//---------------------------------------------------------------------------- +// +// Procedure: PfatRecoveryEntry +// +// Description: +// +// Input: EFI_HANDLE - ImageHandle +// EFI_SYSTEM_TABLE* - SystemTable +// +// Output: EFI_STATUS +// +//---------------------------------------------------------------------------- +//<AMI_PHDR_END> +EFI_STATUS +PfatRecoveryEntry ( + IN EFI_FFS_FILE_HEADER *FfsHeader, + IN EFI_PEI_SERVICES **PeiServices +) +{ + UINTN i = 0; + EFI_STATUS Status; + EFI_PEI_DEVICE_RECOVERY_MODULE_PPI *pRecoveryDevice; + EFI_GUID guidRecoveryDevice = EFI_PEI_DEVICE_RECOVERY_MODULE_PPI_GUID; + EFI_PEI_PPI_DESCRIPTOR *pDummy; + + // Initialize gDeviceRecoveryModuleInfo structure + for(i = 0; i < MAX_DEVICE_RECOVERY_MODULE; i++) { + gDeviceRecoveryModuleInfo[i].pDRM_Ppi = NULL; + gDeviceRecoveryModuleInfo[i].SavedLoadCapsule = NULL; + } + i = 0; + do { + // Discover the Device Recovery Module PPIs for hooking the + // LoadRecoveryCapule procedure. + Status = (*PeiServices)->LocatePpi(PeiServices, \ + &guidRecoveryDevice, i, &pDummy, &pRecoveryDevice); + if (!EFI_ERROR(Status)) { + // Save Ppi pointer and LoadRecoveryCapsule procedure for Hook used. + gDeviceRecoveryModuleInfo[i].pDRM_Ppi = pRecoveryDevice; + gDeviceRecoveryModuleInfo[i++].SavedLoadCapsule = pRecoveryDevice->LoadRecoveryCapsule; + // Hook the LaodRecoveryCapsule procedure. + pRecoveryDevice->LoadRecoveryCapsule = LoadRecoveryCapsuleHook; + } + } while(!EFI_ERROR(Status)); + return EFI_SUCCESS; +} +//************************************************************************* +//************************************************************************* +//** ** +//** (C)Copyright 1985-2010, 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/Board/EM/Pfat/PfatRecovery/PfatRecovery.cif b/Board/EM/Pfat/PfatRecovery/PfatRecovery.cif new file mode 100644 index 0000000..263e558 --- /dev/null +++ b/Board/EM/Pfat/PfatRecovery/PfatRecovery.cif @@ -0,0 +1,12 @@ +<component> + name = "PfatRecovery" + category = ModulePart + LocalRoot = "Board\EM\Pfat\PfatRecovery" + RefName = "PfatRecovery" +[files] +"PfatRecovery.sdl" +"PfatRecovery.mak" +"PfatRecovery.dxs" +"PfatRecovery.c" +"PfatRecoveryHook.c" +<endComponent> diff --git a/Board/EM/Pfat/PfatRecovery/PfatRecovery.dxs b/Board/EM/Pfat/PfatRecovery/PfatRecovery.dxs new file mode 100644 index 0000000..3c9e8b5 --- /dev/null +++ b/Board/EM/Pfat/PfatRecovery/PfatRecovery.dxs @@ -0,0 +1,58 @@ +//************************************************************************* +//************************************************************************* +//** ** +//** (C)Copyright 1985-2010, American Megatrends, Inc. ** +//** ** +//** All Rights Reserved. ** +//** ** +//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +//** ** +//** Phone: (770)-246-8600 ** +//** ** +//************************************************************************* +//************************************************************************* + +//********************************************************************** +// $Header: /Alaska/SOURCE/Modules/SharkBayRefCodes/IntelPfat/PfatRecovery/PfatRecovery.dxs 1 4/05/13 5:36p Fredericko $ +// +// $Revision: 1 $ +// +// $Date: 4/05/13 5:36p $ +//********************************************************************** +// Revision History +// ---------------- +// $Log: /Alaska/SOURCE/Modules/SharkBayRefCodes/IntelPfat/PfatRecovery/PfatRecovery.dxs $ +// +// 1 4/05/13 5:36p Fredericko +// [TAG] EIP119706 +// [Category] Improvement +// [Description] Support Recovery in pfat module +// [Files] PfatRecovery.cif +// PfatRecovery.sdl +// PfatRecovery.mak +// PfatRecovery.dxs +// PfatRecovery.c +// PfatRecoveryHook.c +// +// +//********************************************************************** +#include <PEI.h> +#include <PPI\RecoveryModule.h> + +DEPENDENCY_START + EFI_PEI_BOOT_IN_RECOVERY_MODE_PEIM_PPI AND + EFI_PEI_RECOVERY_MODULE_PPI_GUID +DEPENDENCY_END +//************************************************************************* +//************************************************************************* +//** ** +//** (C)Copyright 1985-2010, American Megatrends, Inc. ** +//** ** +//** All Rights Reserved. ** +//** ** +//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +//** ** +//** Phone: (770)-246-8600 ** +//** ** +//************************************************************************* +//************************************************************************* diff --git a/Board/EM/Pfat/PfatRecovery/PfatRecovery.mak b/Board/EM/Pfat/PfatRecovery/PfatRecovery.mak new file mode 100644 index 0000000..ebded82 --- /dev/null +++ b/Board/EM/Pfat/PfatRecovery/PfatRecovery.mak @@ -0,0 +1,113 @@ +#********************************************************************** +#********************************************************************** +#** ** +#** (C)Copyright 1985-2012, American Megatrends, Inc. ** +#** ** +#** All Rights Reserved. ** +#** ** +#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +#** ** +#** Phone: (770)-246-8600 ** +#** ** +#********************************************************************** +#********************************************************************** + +#********************************************************************** +# $Header: /Alaska/SOURCE/Modules/SharkBayRefCodes/IntelPfat/PfatRecovery/PfatRecovery.mak 1 4/05/13 5:36p Fredericko $ +# +# $Revision: 1 $ +# +# $Date: 4/05/13 5:36p $ +#********************************************************************** +# Revision History +# ---------------- +# $Log: /Alaska/SOURCE/Modules/SharkBayRefCodes/IntelPfat/PfatRecovery/PfatRecovery.mak $ +# +# 1 4/05/13 5:36p Fredericko +# [TAG] EIP119706 +# [Category] Improvement +# [Description] Support Recovery in pfat module +# [Files] PfatRecovery.cif +# PfatRecovery.sdl +# PfatRecovery.mak +# PfatRecovery.dxs +# PfatRecovery.c +# PfatRecoveryHook.c +# +# +# +#********************************************************************** +#<AMI_FHDR_START> +# +# Name: PfatRecovery.mak +# +# Description: Make file for PfatRecovery module part +# +#<AMI_FHDR_END> +#********************************************************************** +all : PfatRecovery + +PFAT_RECOVERY_BUILD_DIR = $(BUILD_DIR)\$(PFAT_RECOVERY_PATH) +#--------------------------------------------------------------------------- +# Create Fault Tolerant BootBlock Update dependencies +#--------------------------------------------------------------------------- +$(BUILD_DIR)\PfatRecovery.mak : $(PFAT_RECOVERY_PATH)\$(@B).cif $(PFAT_RECOVERY_PATH)\$(@B).mak $(BUILD_RULES) + $(CIF2MAK) $(PFAT_RECOVERY_PATH)\$(@B).cif $(CIF2MAK_DEFAULTS) +#--------------------------------------------------------------------------- +# Create Fault Tolerant BootBlock Update DXE Component +#--------------------------------------------------------------------------- +PfatRecovery: $(BUILD_DIR)\PfatRecovery.mak PfatRecoveryBin + +PfatRecoveryIncludes =\ +/I$(PROJECT_CPU_ROOT)\Include + +PfatRecoveryObjs = \ +$(PFAT_RECOVERY_BUILD_DIR)\PfatRecovery.obj + +PfatRecoveryBin : $(AMIPEILIB) + $(MAKE) /$(MAKEFLAGS) $(BUILD_DEFAULTS)\ + /f $(BUILD_DIR)\PfatRecovery.mak all\ + OBJECTS="$(PfatRecoveryObjs)" \ + NAME=PfatRecovery\ + MAKEFILE=$(BUILD_DIR)\PfatRecovery.mak \ + "CFLAGS=$(CFLAGS) $(PfatRecoveryIncludes)"\ + GUID=c2bcc635-779e-46f0-9e1b-b83db1ca4690 \ + ENTRY_POINT=PfatRecoveryEntry \ + TYPE=PEIM \ + DEPEX1=$(PFAT_RECOVERY_PATH)\PfatRecovery.DXS \ + DEPEX1_TYPE=EFI_SECTION_PEI_DEPEX \ + COMPRESS=1 + +#--------------------------------------------------------------------------- +# Create Launch SCLEAN Pei Component +#--------------------------------------------------------------------------- +PfatRecoveryHook : $(BUILD_DIR)\PfatRecovery.mak PfatRecoveryHookBin + +PfatRecoveryHookObjs = \ +$(PFAT_RECOVERY_BUILD_DIR)\PfatRecoveryHook.obj + +PfatRecoveryHookBin : + $(MAKE) /$(MAKEFLAGS) $(BUILD_DEFAULTS)\ + /f $(BUILD_DIR)\PfatRecovery.mak all\ + OBJECTS="$(PfatRecoveryHookObjs)" \ + NAME=PfatRecovery \ + TYPE=PEI_LIBRARY LIBRARY_NAME=$(PfatRecoveryPeiLib) + +$(PfatRecoveryPeiLib) : PfatRecoveryHook + +RecoveryBin : $(PfatRecoveryPeiLib) +FwCapsuleRecoveryPPIBin : $(PfatRecoveryPeiLib) + +#************************************************************************* +#************************************************************************* +#** ** +#** (C)Copyright 1985-2012, American Megatrends, Inc. ** +#** ** +#** All Rights Reserved. ** +#** ** +#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +#** ** +#** Phone: (770)-246-8600 ** +#** ** +#************************************************************************* +#************************************************************************* diff --git a/Board/EM/Pfat/PfatRecovery/PfatRecovery.sdl b/Board/EM/Pfat/PfatRecovery/PfatRecovery.sdl new file mode 100644 index 0000000..a12b5e2 --- /dev/null +++ b/Board/EM/Pfat/PfatRecovery/PfatRecovery.sdl @@ -0,0 +1,169 @@ +#********************************************************************** +#********************************************************************** +#** ** +#** (C)Copyright 1985-2012, American Megatrends, Inc. ** +#** ** +#** All Rights Reserved. ** +#** ** +#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +#** ** +#** Phone: (770)-246-8600 ** +#** ** +#********************************************************************** +#********************************************************************** + +#********************************************************************** +# $Header: /Alaska/SOURCE/Modules/SharkBayRefCodes/IntelPfat/PfatRecovery/PfatRecovery.sdl 3 7/15/13 8:17p Fredericko $ +# +# $Revision: 3 $ +# +# $Date: 7/15/13 8:17p $ +#********************************************************************** +# Revision History +# ---------------- +# $Log: /Alaska/SOURCE/Modules/SharkBayRefCodes/IntelPfat/PfatRecovery/PfatRecovery.sdl $ +# +# 3 7/15/13 8:17p Fredericko +# EIP 124189: Secure Flash failure with Pfat +# +# 2 5/29/13 5:44p Fredericko +# [TAG] EIP124189 +# [Description] [PFAT] Secure Flash is fail using +# 4.6.5.1_INTEL_PFAT_2_6 or 2_7 +# [Files] PfatPubKeysAndBuildPsl.sdl +# Pfatrecovery.sdl +# PfatRecoveryHook.c +# Recovery.mak +# +# 1 4/05/13 5:36p Fredericko +# [TAG] EIP119706 +# [Category] Improvement +# [Description] Support Recovery in pfat module +# [Files] PfatRecovery.cif +# PfatRecovery.sdl +# PfatRecovery.mak +# PfatRecovery.dxs +# PfatRecovery.c +# PfatRecoveryHook.c +# +# +#********************************************************************** +#<AMI_FHDR_START> +# +# Name: PfatSetup.sdl +# +# Description: SDL file for PfatSetup +# +# +#<AMI_FHDR_END> +#********************************************************************** + +TOKEN + Name = "PFAT_RECOVERY_SUPPORT" + Value = "1" + Help = "" + TokenType = Boolean + TargetMAK = Yes + TargetH = Yes + Master = Yes + Token = "PfatServices_SUPPORT" "=" "1" +End + +PATH + Name = "PFAT_RECOVERY_PATH" +End + +MODULE + Help = "Includes PfatRecovery.mak to Project" + File = "PfatRecovery.mak" +End + +TOKEN + Name = "MAX_DEVICE_RECOVERY_MODULE" + Value = "8" + TokenType = Integer + TargetH = Yes +End + +TOKEN + Name = "PFAT_RECOVERY_FILE" + Value = "AMIPFAT.BIN" + TokenType = Expression + TargetMAK = Yes + TargetH = Yes +End + +TOKEN + Name = "PFAT_RECOVERY_IMAGE_SIZE" + Value = "0xFF4CE0" + TokenType = Integer + TargetH = Yes +End + +TOKEN + Name = "PFAT_RECOVERY_IMAGE_SIZE" + Value = "0x10050c5" + TokenType = Integer + TargetH = Yes + Token = "OEM_ACTIVATION_TABLE_LOCATION" "=" "1" +End + +TOKEN + Name = "PfatRecoveryPeiLib" + Value = "$(BUILD_DIR)\PfatRecoveryPeiLib.lib" + TokenType = Expression + TargetMAK = Yes +End + +#-ELINK +#- Name = "$(BUILD_DIR)\PfatRecoveryPeiLib.lib" +#- Parent = "AMIPEILIB" +#- InvokeOrder = AfterParent +#-End + +ELINK + Name = "$(BUILD_DIR)\PfatRecovery.ffs" + Parent = "FV_BB" + InvokeOrder = AfterParent +End + +TOKEN + Name = "FwCapsuleInfo_enable" + Value = "0" + TokenType = Boolean +End + +TOKEN + Name = "FwCapsuleInfo_enable" + Value = "1" + TokenType = Boolean + Token = "SecureMod_SUPPORT" "=" "1" +End + +ELINK + Name = "PfatRecoveryFileInfo" + Parent = "AmiGetRecoveryFileInfo" + InvokeOrder = ReplaceParent + Token = "FwCapsuleInfo_enable" "=" "0" +End + +ELINK + Name = "PfatImageInfo" + Parent = "FwCapsuleInfo" + InvokeOrder = ReplaceParent + Token = "FwCapsuleInfo_enable" "=" "1" +End + +#************************************************************************* +#************************************************************************* +#** ** +#** (C)Copyright 1985-2012, American Megatrends, Inc. ** +#** ** +#** All Rights Reserved. ** +#** ** +#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +#** ** +#** Phone: (770)-246-8600 ** +#** ** +#************************************************************************* +#************************************************************************* diff --git a/Board/EM/Pfat/PfatRecovery/PfatRecoveryHook.c b/Board/EM/Pfat/PfatRecovery/PfatRecoveryHook.c new file mode 100644 index 0000000..e0a0bbe --- /dev/null +++ b/Board/EM/Pfat/PfatRecovery/PfatRecoveryHook.c @@ -0,0 +1,187 @@ +//************************************************************************* +//************************************************************************* +//** ** +//** (C)Copyright 1985-2012, American Megatrends, Inc. ** +//** ** +//** All Rights Reserved. ** +//** ** +//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +//** ** +//** Phone: (770)-246-8600 ** +//** ** +//************************************************************************* +//************************************************************************* + +//********************************************************************** +// $Header: /Alaska/SOURCE/Modules/SharkBayRefCodes/IntelPfat/PfatRecovery/PfatRecoveryHook.c 2 5/29/13 5:45p Fredericko $ +// +// $Revision: 2 $ +// +// $Date: 5/29/13 5:45p $ +//********************************************************************** +// Revision History +// ---------------- +// $Log: /Alaska/SOURCE/Modules/SharkBayRefCodes/IntelPfat/PfatRecovery/PfatRecoveryHook.c $ +// +// 2 5/29/13 5:45p Fredericko +// [TAG] EIP124189 +// [Description] [PFAT] Secure Flash is fail using +// 4.6.5.1_INTEL_PFAT_2_6 or 2_7 +// [Files] PfatPubKeysAndBuildPsl.sdl +// Pfatrecovery.sdl +// PfatRecoveryHook.c +// Recovery.mak +// +// 1 4/05/13 5:37p Fredericko +// [TAG] EIP119706 +// [Category] Improvement +// [Description] Support Recovery in pfat module +// [Files] PfatRecovery.cif +// PfatRecovery.sdl +// PfatRecovery.mak +// PfatRecovery.dxs +// PfatRecovery.c +// PfatRecoveryHook.c +// +// +//********************************************************************** +//<AMI_FHDR_START> +//---------------------------------------------------------------------- +// +// Name: +// +// Description: +// +//---------------------------------------------------------------------- +//<AMI_FHDR_END> + +//---------------------------------------------------------------------------- +// Includes +#include <AmiPeiLib.h> +#include <token.h> +#include <Setup.h> +#include <ppi\ReadOnlyVariable.h> + +// Statements that include other files + +//---------------------------------------------------------------------------- +// Function Externs + +//---------------------------------------------------------------------------- +// Local prototypes +#if defined(SecFlashUpd_SUPPORT) && SecFlashUpd_SUPPORT == 1 +EFI_STATUS +FwCapsuleInfo ( + IN EFI_PEI_SERVICES **PeiServices, + IN OUT VOID **pCapsuleName, + IN OUT UINTN *pCapsuleSize, + OUT BOOLEAN *ExtendedVerification +); +#else +AmiGetRecoveryFileInfo ( + IN EFI_PEI_SERVICES **PeiServices, + IN OUT VOID **pCapsuleName, + IN OUT UINTN *pCapsuleSize, + OUT BOOLEAN *ExtendedVerification +); +#endif + +//---------------------------------------------------------------------------- + +//---------------------------------------------------------------------------- +// Local Variables +const char *RecoveryPfatFileName = CONVERT_TO_STRING(PFAT_RECOVERY_FILE); +const UINTN RecoveryPfatImageSize = PFAT_RECOVERY_IMAGE_SIZE; // 8k should be enough to cover Sec Capsule Hdr overhead + +//---------------------------------------------------------------------------- +// Function Definitions + +//---------------------------------------------------------------------------- +// Local Variables + +//---------------------------------------------------------------------------- +// Function Definitions +//<AMI_PHDR_START> +//---------------------------------------------------------------------- +// +// Procedure: PfatImageInfo +// +// Description: +// +// Input: EFI_PEI_SERVICES** PeiServices +// VOID** pPfatImageName +// UINTN* pPfatImageSize +// BOOLEAN* ExtendedVerification +// +// Output: EFI_STATUS +// +//---------------------------------------------------------------------- +//<AMI_PHDR_END> +EFI_STATUS +PfatImageInfo ( + IN EFI_PEI_SERVICES **PeiServices, + IN OUT VOID **pPfatImageName, + IN OUT UINTN *pPfatImageSize, + OUT BOOLEAN *ExtendedVerification +){ + EFI_GUID gEfiPeiReadOnlyVariablePpiGuid = EFI_PEI_READ_ONLY_VARIABLE_PPI_GUID; + EFI_PEI_READ_ONLY_VARIABLE_PPI *ReadOnlyVar = NULL; + EFI_GUID SetupGuid = SETUP_GUID; + UINTN VariableSize= sizeof (SETUP_DATA); + SETUP_DATA SetupData; + EFI_STATUS Status; + + Status = (*PeiServices)->LocatePpi ( PeiServices, \ + &gEfiPeiReadOnlyVariablePpiGuid, \ + 0, \ + NULL, \ + &ReadOnlyVar ); + if ( !EFI_ERROR(Status) ) { + Status = ReadOnlyVar->GetVariable ( + PeiServices, + L"Setup", + &SetupGuid, + NULL, + &VariableSize, + &SetupData + ); + if ( EFI_ERROR( Status ) ) { + return Status; + } + } else { + return Status; + } + + if ( SetupData.Pfatstate == 0 ) { +#if defined(SecFlashUpd_SUPPORT) && SecFlashUpd_SUPPORT == 1 + Status = FwCapsuleInfo(PeiServices, pPfatImageName, pPfatImageSize, ExtendedVerification); +#else + Status = AmiGetRecoveryFileInfo(PeiServices, pPfatImageName, pPfatImageSize, ExtendedVerification); +#endif + return Status; + } else { + if(!pPfatImageName && !pPfatImageSize && !ExtendedVerification ) + return EFI_UNSUPPORTED; + + if(ExtendedVerification != NULL) + *ExtendedVerification = FALSE; + + *pPfatImageSize = RecoveryPfatImageSize; + *pPfatImageName = (VOID*)RecoveryPfatFileName; + } + return EFI_SUCCESS; +} + +//************************************************************************* +//************************************************************************* +//** ** +//** (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/Board/EM/Pfat/PfatSetup/PfatSetup.cif b/Board/EM/Pfat/PfatSetup/PfatSetup.cif new file mode 100644 index 0000000..4f8c466 --- /dev/null +++ b/Board/EM/Pfat/PfatSetup/PfatSetup.cif @@ -0,0 +1,11 @@ +<component> + name = "PfatSetup" + category = ModulePart + LocalRoot = "Board\EM\Pfat\PfatSetup" + RefName = "PfatSetup" +[files] +"PfatSetup.sd" +"PfatSetup.uni" +"PfatSetup.sdl" +"PfatSetup.mak" +<endComponent> diff --git a/Board/EM/Pfat/PfatSetup/PfatSetup.mak b/Board/EM/Pfat/PfatSetup/PfatSetup.mak new file mode 100644 index 0000000..a1936f1 --- /dev/null +++ b/Board/EM/Pfat/PfatSetup/PfatSetup.mak @@ -0,0 +1,69 @@ +#********************************************************************** +#********************************************************************** +#** ** +#** (C)Copyright 1985-2012, American Megatrends, Inc. ** +#** ** +#** All Rights Reserved. ** +#** ** +#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +#** ** +#** Phone: (770)-246-8600 ** +#** ** +#********************************************************************** +#********************************************************************** + +#********************************************************************** +# $Header: /Alaska/SOURCE/Modules/SharkBayRefCodes/IntelPfat/PfatSetup/PfatSetup.mak 1 9/17/12 4:49p Fredericko $ +# +# $Revision: 1 $ +# +# $Date: 9/17/12 4:49p $ +#********************************************************************** +# Revision History +# ---------------- +# $Log: /Alaska/SOURCE/Modules/SharkBayRefCodes/IntelPfat/PfatSetup/PfatSetup.mak $ +# +# 1 9/17/12 4:49p Fredericko +# Added PfatSetup Module-part +# +# +#********************************************************************** +#<AMI_FHDR_START> +# +# Name: PfatSetup.mak +# +# Description: Make file for PfatSetup module part +# +#<AMI_FHDR_END> +#********************************************************************** +all : PfatSetupSDB + +#--------------------------------------------------------------------------- +# Generic AcpiPlatform dependencies +#--------------------------------------------------------------------------- +$(BUILD_DIR)\PfatSetup.mak : $(PFAT_SETUP_PATH)\PfatSetup.cif $(BUILD_RULES) + $(CIF2MAK) $(PFAT_SETUP_PATH)\PfatSetup.cif $(CIF2MAK_DEFAULTS) + +#--------------------------------------------------------------------------- +# Create PfatSetup Setup Screens +#--------------------------------------------------------------------------- +SetupSdbs : $(BUILD_DIR)\PfatSetup.mak PfatSetupSDB + +PfatSetupSDB : + $(MAKE) /$(MAKEFLAGS) $(BUILD_DEFAULTS)\ + /f $(BUILD_DIR)\PfatSetup.mak all \ + TYPE=SDB NAME=PfatSetup STRING_CONSUMERS=$(PFAT_SETUP_PATH)\PfatSetup.sd + +#************************************************************************* +#************************************************************************* +#** ** +#** (C)Copyright 1985-2012, American Megatrends, Inc. ** +#** ** +#** All Rights Reserved. ** +#** ** +#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +#** ** +#** Phone: (770)-246-8600 ** +#** ** +#************************************************************************* +#************************************************************************* diff --git a/Board/EM/Pfat/PfatSetup/PfatSetup.sd b/Board/EM/Pfat/PfatSetup/PfatSetup.sd new file mode 100644 index 0000000..a610378 --- /dev/null +++ b/Board/EM/Pfat/PfatSetup/PfatSetup.sd @@ -0,0 +1,119 @@ +//********************************************************************** +//********************************************************************** +//** ** +//** (C)Copyright 1985-2012, American Megatrends, Inc. ** +//** ** +//** All Rights Reserved. ** +//** ** +//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +//** ** +//** Phone: (770)-246-8600 ** +//** ** +//********************************************************************** +//********************************************************************** + +//********************************************************************** +// $Header: /Alaska/SOURCE/Modules/SharkBayRefCodes/IntelPfat/PfatSetup/PfatSetup.sd 1 9/17/12 4:49p Fredericko $ +// +// $Revision: 1 $ +// +// $Date: 9/17/12 4:49p $ +//********************************************************************** +// Revision History +// ---------------- +// $Log: /Alaska/SOURCE/Modules/SharkBayRefCodes/IntelPfat/PfatSetup/PfatSetup.sd $ +// +// 1 9/17/12 4:49p Fredericko +// Added PfatSetup Module-part +// +// +//********************************************************************** +//<AMI_FHDR_START> +// +// Name: PfatSetup.sd +// +// Description: Create the setup item for PFAT. +// +//<AMI_FHDR_END> +//********************************************************************** + +#ifdef SETUP_DATA_DEFINITION +//--------------------------------------------------------------------------- +// Put NVRAM data definitions here. +// For example: UINT8 Data1; +// These definitions will be converted by the build process +// to a definitions of SETUP_DATA fields. +//--------------------------------------------------------------------------- + UINT8 Pfatstate; +#endif + +#if defined(VFRCOMPILE) && !defined(CONTROLS_ARE_DEFINED) +#define CONTROL_DEFINITION +#endif +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +#ifdef CONTROL_DEFINITION + +#define PFAT_ONEOF_STATEENABLE\ + oneof varid = SETUP_DATA.Pfatstate,\ + prompt = STRING_TOKEN(STR_PFAT_CONFIGURATION_PROMPT),\ + help = STRING_TOKEN(STR_PFAT_CONFIGURATION_HELP),\ + option text = STRING_TOKEN(STR_DISABLED), value = 0, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED, key = 0;\ + option text = STRING_TOKEN(STR_ENABLED), value = 1, flags = RESET_REQUIRED, key = 0;\ + endoneof; + +#endif // CONTROL_DEFINITION + +#ifdef CONTROLS_WITH_DEFAULTS + PFAT_ONEOF_STATEENABLE +#endif // CONTROLS_WITH_DEFAULTS + +//--------------------------------------------------------------------------- +// ADVANCED - CRB Configuration Form +//--------------------------------------------------------------------------- +#ifdef ADVANCED_FORM_SET + + #ifndef SUPPRESS_GRAYOUT_ENDIF //old Core + #define SUPPRESS_GRAYOUT_ENDIF endif; + #endif + + #ifdef FORM_SET_GOTO + // Define goto commands for the forms defined in this file + goto PFAT_CONFIGURATION_FORM_ID, + prompt = STRING_TOKEN(STR_PFAT_CONFIGURATION_FORM), + help = STRING_TOKEN(STR_PFAT_CONFIGURATION_HELP); + #endif + + #ifdef FORM_SET_FORM + // Define forms + #ifndef PFAT_CONFIGURATION_FORM_SETUP + #define PFAT_CONFIGURATION_FORM_SETUP + + form formid = AUTO_ID(PFAT_CONFIGURATION_FORM_ID), + title = STRING_TOKEN(STR_PFAT_CONFIGURATION_FORM); + + grayoutif ideqval SYSTEM_ACCESS.Access == SYSTEM_PASSWORD_USER; + PFAT_ONEOF_STATEENABLE + endif; + + endform; // PFAT_FORM_ID + + #endif // PFAT_CONFIGURATION_FORM_SETUP + #endif // FORM_SET_FORM + +#endif // ADVANCED_FORM_SET + +//************************************************************************* +//************************************************************************* +//** ** +//** (C)Copyright 1985-2012, American Megatrends, Inc. ** +//** ** +//** All Rights Reserved. ** +//** ** +//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +//** ** +//** Phone: (770)-246-8600 ** +//** ** +//************************************************************************* +//************************************************************************* diff --git a/Board/EM/Pfat/PfatSetup/PfatSetup.sdl b/Board/EM/Pfat/PfatSetup/PfatSetup.sdl new file mode 100644 index 0000000..7c42e9a --- /dev/null +++ b/Board/EM/Pfat/PfatSetup/PfatSetup.sdl @@ -0,0 +1,85 @@ +#********************************************************************** +#********************************************************************** +#** ** +#** (C)Copyright 1985-2012, American Megatrends, Inc. ** +#** ** +#** All Rights Reserved. ** +#** ** +#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +#** ** +#** Phone: (770)-246-8600 ** +#** ** +#********************************************************************** +#********************************************************************** + +#********************************************************************** +# $Header: /Alaska/SOURCE/Modules/SharkBayRefCodes/IntelPfat/PfatSetup/PfatSetup.sdl 1 9/17/12 4:49p Fredericko $ +# +# $Revision: 1 $ +# +# $Date: 9/17/12 4:49p $ +#********************************************************************** +# Revision History +# ---------------- +# $Log: /Alaska/SOURCE/Modules/SharkBayRefCodes/IntelPfat/PfatSetup/PfatSetup.sdl $ +# +# 1 9/17/12 4:49p Fredericko +# Added PfatSetup Module-part +# +#********************************************************************** +#<AMI_FHDR_START> +# +# Name: PfatSetup.sdl +# +# Description: SDL file for PfatSetup +# +# +#<AMI_FHDR_END> +#********************************************************************** + +TOKEN + Name = "PFAT_SETUP_SUPPORT" + Value = "1" + Help = "Always On Always Connected" + TokenType = Boolean + TargetMAK = Yes + TargetH = Yes + Master = Yes +End + +PATH + Name = "PFAT_SETUP_PATH" +End + +MODULE + Help = "Includes PfatSetup.mak to Project" + File = "PfatSetup.mak" +End + +ELINK + Name = "$(BUILD_DIR)\PfatSetup.sdb" + Parent = "SETUP_SDBS" + Priority = 40 + InvokeOrder = AfterParent +End + +ELINK + Name = "$(PFAT_SETUP_PATH)\PfatSetup.sd" + Parent = "SETUP_DEFINITIONS" + Priority = 40 + InvokeOrder = AfterParent +End + +#************************************************************************* +#************************************************************************* +#** ** +#** (C)Copyright 1985-2012, American Megatrends, Inc. ** +#** ** +#** All Rights Reserved. ** +#** ** +#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +#** ** +#** Phone: (770)-246-8600 ** +#** ** +#************************************************************************* +#************************************************************************* diff --git a/Board/EM/Pfat/PfatSetup/PfatSetup.uni b/Board/EM/Pfat/PfatSetup/PfatSetup.uni Binary files differnew file mode 100644 index 0000000..f325289 --- /dev/null +++ b/Board/EM/Pfat/PfatSetup/PfatSetup.uni |