You've already forked PlatformBuildLab_FW
mirror of
https://github.com/Dasharo/PlatformBuildLab_FW.git
synced 2026-03-06 15:00:40 -08:00
Compare commits
16 Commits
master
...
minnowboar
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2db9c66ac1 | ||
|
|
d932fd287c | ||
|
|
e37ff7e97a | ||
|
|
0988477a9e | ||
|
|
6529a9dbf7 | ||
|
|
352c885d27 | ||
|
|
e1c5cc9169 | ||
|
|
62c60f9206 | ||
|
|
62d9069c39 | ||
|
|
7d31ce69bb | ||
|
|
fdb8a55886 | ||
|
|
86f67c315e | ||
|
|
1bd1d19998 | ||
|
|
32f59cbab0 | ||
|
|
c74eb5da1e | ||
|
|
928a6306ac |
11
.gitignore
vendored
Normal file
11
.gitignore
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
FW/PlatformBuildLab/Max/edk2/Conf
|
||||
FW/PlatformBuildLab/Max/Build
|
||||
FW/PlatformBuildLab/Max/edk2-platforms/Vlv2TbltDevicePkg/AutoPlatformCFG.txt
|
||||
FW/PlatformBuildLab/Max/ipxe/
|
||||
FW/PlatformBuildLab/Max/silicon/Vlv2MiscBinariesPkg/SEC/Ia32/
|
||||
FW/PlatformBuildLab/Max/silicon/Vlv2MiscBinariesPkg/SEC/X64/
|
||||
.bash_history
|
||||
*.rom
|
||||
*.ROM
|
||||
*.bin
|
||||
|
||||
@@ -427,7 +427,7 @@ Scope(\_SB)
|
||||
|
||||
// Check for a specific OS which supports _OSI.
|
||||
|
||||
If(CondRefOf(\_OSI,Local0))
|
||||
If(CondRefOf(\_OSI))
|
||||
{
|
||||
// Linux returns _OSI = TRUE for numerous Windows
|
||||
// strings so that it is fully compatible with
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
DEFINE X64_CONFIG = TRUE
|
||||
DEFINE ENBDT_PF_BUILD = TRUE
|
||||
DEFINE X64_CONFIG = TRUE
|
||||
DEFINE ENBDT_PF_BUILD = TRUE
|
||||
|
||||
43
FW/PlatformBuildLab/Max/edk2-platforms/Vlv2TbltDevicePkg/Build_IFWI.sh
Normal file → Executable file
43
FW/PlatformBuildLab/Max/edk2-platforms/Vlv2TbltDevicePkg/Build_IFWI.sh
Normal file → Executable file
@@ -33,6 +33,7 @@ Build_Flags=
|
||||
Stitch_Flags=
|
||||
Arch=X64
|
||||
PLATFORM_PACKAGE=Vlv2TbltDevicePkg
|
||||
CleanBuild=0
|
||||
|
||||
## Parse Optional arguments
|
||||
if [ "$1" == "/?" ]; then
|
||||
@@ -50,6 +51,7 @@ for (( i=1; i<=$#; ))
|
||||
shift
|
||||
elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/C" ]; then
|
||||
Build_Flags="$Build_Flags /c"
|
||||
CleanBuild=1
|
||||
shift
|
||||
elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/ECP" ]; then
|
||||
Build_Flags="$Build_Flags /ecp"
|
||||
@@ -64,6 +66,10 @@ for (( i=1; i<=$#; ))
|
||||
Arch=X64
|
||||
Build_Flags="$Build_Flags /x64"
|
||||
shift
|
||||
elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/IA32" ]; then
|
||||
Arch=IA32
|
||||
Build_Flags="$Build_Flags /IA32"
|
||||
shift
|
||||
elif [ "$1" == "/nG" ]; then
|
||||
Stitch_Flags="$Stitch_Flags /nG"
|
||||
shift
|
||||
@@ -79,11 +85,15 @@ for (( i=1; i<=$#; ))
|
||||
elif [ "$1" == "/yL" ]; then
|
||||
Build_Flags="$Build_Flags /yL"
|
||||
shift
|
||||
elif [ "$1" == "/16M" ]; then
|
||||
Build_Flags="$Build_Flags /16M"
|
||||
shift
|
||||
else
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
## Require 2 input parameters
|
||||
if [ "$2" == "" ]; then
|
||||
echo "Not Enough Arguments Provided"
|
||||
@@ -104,6 +114,39 @@ else
|
||||
IFWI_Suffix="/S $3"
|
||||
fi
|
||||
|
||||
if [ $Arch == "X64" ]; then
|
||||
|
||||
## Build iPXE
|
||||
if [ ! -d ../../ipxe ]; then
|
||||
git clone http://git.ipxe.org/ipxe.git ../../ipxe
|
||||
if [ $? != 0 ];then
|
||||
echo "Failed to clone ipxe"
|
||||
exit
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ! -f ../../ipxe/src/bin-x86_64-efi-sb/ipxe.efi ]; then
|
||||
cd ../../ipxe || exit 1
|
||||
git reset --hard HEAD || exit 1
|
||||
git clean -df || exit 1
|
||||
git checkout 77b07ea4fdc259d7253c6f9df2beda6e6c7a9d85 || exit 1
|
||||
if [ $CleanBuild == "1" ]; then
|
||||
make clean || exit 1
|
||||
fi
|
||||
sed -i 's|//#define\s*IMAGE_SCRIPT.*|#define IMAGE_SCRIPT|' "src/config/general.h"
|
||||
if [ ! -f dasharo.ipxe ]; then
|
||||
wget http://raw.githubusercontent.com/Dasharo/dasharo-blobs/main/dasharo/dasharo.ipxe || exit 1
|
||||
fi
|
||||
sed -i 's|.*DOWNLOAD_PROTO_HTTPS|#define DOWNLOAD_PROTO_HTTPS|g' "src/config/general.h"
|
||||
make -C src bin-x86_64-efi-sb/ipxe.efi EMBED=$PWD/dasharo.ipxe BUILD_ID_CMD="echo 0x1234567890"
|
||||
if [ ! -f src/bin-x86_64-efi-sb/ipxe.efi ]; then
|
||||
echo "Failed to build ipxe"
|
||||
exit 1
|
||||
fi
|
||||
cd ../edk2-platforms/$PLATFORM_PACKAGE
|
||||
fi
|
||||
fi
|
||||
|
||||
## Go to root directory
|
||||
cd ..
|
||||
|
||||
|
||||
@@ -3,15 +3,24 @@
|
||||
These data is intent to decouple FVB driver with FV header.
|
||||
|
||||
Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
|
||||
|
||||
|
||||
This program and the accompanying materials are licensed and made available under
|
||||
|
||||
the terms and conditions of the BSD License that accompanies this distribution.
|
||||
|
||||
The full text of the license may be found at
|
||||
|
||||
http://opensource.org/licenses/bsd-license.php.
|
||||
|
||||
|
||||
This program and the accompanying materials are licensed and made available under
|
||||
|
||||
the terms and conditions of the BSD License that accompanies this distribution.
|
||||
|
||||
The full text of the license may be found at
|
||||
|
||||
http://opensource.org/licenses/bsd-license.php.
|
||||
|
||||
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
|
||||
|
||||
|
||||
**/
|
||||
|
||||
@@ -35,6 +44,9 @@ Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
|
||||
#define NV_STORAGE_BASE_ADDRESS FixedPcdGet32(PcdFlashNvStorageVariableBase)
|
||||
#define SYSTEM_NV_BLOCK_NUM ((FixedPcdGet32(PcdFlashNvStorageVariableSize)+ FixedPcdGet32(PcdFlashNvStorageFtwWorkingSize) + FixedPcdGet32(PcdFlashNvStorageFtwSpareSize))/ FVB_MEDIA_BLOCK_SIZE)
|
||||
|
||||
#define FV_TXE_TOOLS_BASE_ADDRESS FixedPcdGet32(PcdFlashTxeToolsBase)
|
||||
#define TXE_TOOLS_BLOCK_NUM (FixedPcdGet32(PcdFlashTxeToolsSize) / FVB_MEDIA_BLOCK_SIZE)
|
||||
|
||||
typedef struct {
|
||||
EFI_PHYSICAL_ADDRESS BaseAddress;
|
||||
EFI_FIRMWARE_VOLUME_HEADER FvbInfo;
|
||||
@@ -137,6 +149,36 @@ EFI_FVB2_MEDIA_INFO mPlatformFvbMediaInfo[] = {
|
||||
0
|
||||
}
|
||||
}
|
||||
},
|
||||
//
|
||||
// TXE Tools FVB
|
||||
//
|
||||
{
|
||||
FV_TXE_TOOLS_BASE_ADDRESS,
|
||||
{
|
||||
{0,}, //ZeroVector[16]
|
||||
EFI_FIRMWARE_FILE_SYSTEM2_GUID,
|
||||
FVB_MEDIA_BLOCK_SIZE * TXE_TOOLS_BLOCK_NUM,
|
||||
EFI_FVH_SIGNATURE,
|
||||
0x0004feff, // check MdePkg/Include/Pi/PiFirmwareVolume.h for details on EFI_FVB_ATTRIBUTES_2
|
||||
sizeof (EFI_FIRMWARE_VOLUME_HEADER) + sizeof (EFI_FV_BLOCK_MAP_ENTRY),
|
||||
0, //CheckSum which will be calucated dynamically.
|
||||
0, //ExtHeaderOffset
|
||||
{0,}, //Reserved[1]
|
||||
2, //Revision
|
||||
{
|
||||
{
|
||||
TXE_TOOLS_BLOCK_NUM,
|
||||
FVB_MEDIA_BLOCK_SIZE,
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
{
|
||||
0,
|
||||
0
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -2,15 +2,24 @@
|
||||
# This driver implement the EFI_FIRMWARE_VOLUMEN_PROTOCOL.
|
||||
#
|
||||
# Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
|
||||
#
|
||||
|
||||
# This program and the accompanying materials are licensed and made available under
|
||||
|
||||
# the terms and conditions of the BSD License that accompanies this distribution.
|
||||
|
||||
# The full text of the license may be found at
|
||||
|
||||
# http://opensource.org/licenses/bsd-license.php.
|
||||
#
|
||||
|
||||
# This program and the accompanying materials are licensed and made available under
|
||||
|
||||
# the terms and conditions of the BSD License that accompanies this distribution.
|
||||
|
||||
# The full text of the license may be found at
|
||||
|
||||
# http://opensource.org/licenses/bsd-license.php.
|
||||
|
||||
#
|
||||
|
||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
|
||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
#
|
||||
|
||||
#
|
||||
#
|
||||
#
|
||||
@@ -72,7 +81,9 @@
|
||||
gPlatformModuleTokenSpaceGuid.PcdFlashFvMainBase
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase
|
||||
gPlatformModuleTokenSpaceGuid.PcdFlashFvRecoveryBase
|
||||
|
||||
gPlatformModuleTokenSpaceGuid.PcdFlashTxeToolsBase
|
||||
gPlatformModuleTokenSpaceGuid.PcdFlashTxeToolsSize
|
||||
|
||||
[FeaturePcd]
|
||||
gPlatformModuleTokenSpaceGuid.PcdFeatureRecoveryDisabled
|
||||
|
||||
|
||||
@@ -5,15 +5,24 @@
|
||||
It depends on which Flash Device Library to be linked with this driver.
|
||||
|
||||
Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
|
||||
|
||||
|
||||
This program and the accompanying materials are licensed and made available under
|
||||
|
||||
the terms and conditions of the BSD License that accompanies this distribution.
|
||||
|
||||
The full text of the license may be found at
|
||||
|
||||
http://opensource.org/licenses/bsd-license.php.
|
||||
|
||||
|
||||
This program and the accompanying materials are licensed and made available under
|
||||
|
||||
the terms and conditions of the BSD License that accompanies this distribution.
|
||||
|
||||
The full text of the license may be found at
|
||||
|
||||
http://opensource.org/licenses/bsd-license.php.
|
||||
|
||||
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
|
||||
|
||||
|
||||
**/
|
||||
|
||||
@@ -1008,7 +1017,7 @@ FvbInitialize (
|
||||
UINTN Idx;
|
||||
UINT32 MaxLbaSize;
|
||||
EFI_BOOT_MODE BootMode;
|
||||
EFI_FIRMWARE_VOLUME_HEADER *FvHeader;
|
||||
UINT32 PlatformFvBaseAddress[4];
|
||||
UINT32 PlatformFvBaseAddressCount;
|
||||
|
||||
//
|
||||
@@ -1023,10 +1032,11 @@ FvbInitialize (
|
||||
PlatformFvBaseAddressCount = 1;
|
||||
PlatformFvBaseAddress[0] = PcdGet32 (PcdFlashNvStorageVariableBase);
|
||||
} else {
|
||||
//
|
||||
PlatformFvBaseAddressCount = 4;
|
||||
PlatformFvBaseAddress[0] = PcdGet32 (PcdFlashFvMainBase);
|
||||
PlatformFvBaseAddress[1] = PcdGet32 (PcdFlashNvStorageVariableBase);
|
||||
PlatformFvBaseAddress[2] = PcdGet32 (PcdFlashFvRecoveryBase);
|
||||
PlatformFvBaseAddress[3] = PcdGet32 (PcdFlashTxeToolsBase);
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
@@ -2,15 +2,24 @@
|
||||
# This driver implement the EFI_SMM_FIRMWARE_VOLUMEN_PROTOCOL.
|
||||
#
|
||||
# Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.<BR>
|
||||
#
|
||||
|
||||
# This program and the accompanying materials are licensed and made available under
|
||||
|
||||
# the terms and conditions of the BSD License that accompanies this distribution.
|
||||
|
||||
# The full text of the license may be found at
|
||||
|
||||
# http://opensource.org/licenses/bsd-license.php.
|
||||
#
|
||||
|
||||
# This program and the accompanying materials are licensed and made available under
|
||||
|
||||
# the terms and conditions of the BSD License that accompanies this distribution.
|
||||
|
||||
# The full text of the license may be found at
|
||||
|
||||
# http://opensource.org/licenses/bsd-license.php.
|
||||
|
||||
#
|
||||
|
||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
|
||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
#
|
||||
|
||||
#
|
||||
#
|
||||
#
|
||||
@@ -75,7 +84,10 @@
|
||||
gPlatformModuleTokenSpaceGuid.PcdFlashFvMainBase
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase
|
||||
gPlatformModuleTokenSpaceGuid.PcdFlashFvRecoveryBase
|
||||
|
||||
gPlatformModuleTokenSpaceGuid.PcdFlashTxeToolsBase
|
||||
gPlatformModuleTokenSpaceGuid.PcdFlashTxeToolsSize
|
||||
|
||||
|
||||
[FeaturePcd]
|
||||
gPlatformModuleTokenSpaceGuid.PcdFeatureRecoveryDisabled
|
||||
|
||||
|
||||
0
FW/PlatformBuildLab/Max/edk2-platforms/Vlv2TbltDevicePkg/GenBiosId
Normal file → Executable file
0
FW/PlatformBuildLab/Max/edk2-platforms/Vlv2TbltDevicePkg/GenBiosId
Normal file → Executable file
@@ -0,0 +1,66 @@
|
||||
## @file
|
||||
# This driver implement the EFI_FIRMWARE_VOLUMEN_PROTOCOL.
|
||||
#
|
||||
# Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
|
||||
#
|
||||
|
||||
# This program and the accompanying materials are licensed and made available under
|
||||
|
||||
# the terms and conditions of the BSD License that accompanies this distribution.
|
||||
|
||||
# The full text of the license may be found at
|
||||
|
||||
# http://opensource.org/licenses/bsd-license.php.
|
||||
|
||||
#
|
||||
|
||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
|
||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
#
|
||||
|
||||
#
|
||||
#
|
||||
#
|
||||
##
|
||||
|
||||
[Defines]
|
||||
INF_VERSION = 0x00010005
|
||||
BASE_NAME = HeciOverrideDxe
|
||||
FILE_GUID = 62FC58DD-9D9F-42B8-8378-3F8FB2F006CE
|
||||
MODULE_TYPE = DXE_DRIVER
|
||||
VERSION_STRING = 1.0
|
||||
ENTRY_POINT = ReinstallHeciProtocol
|
||||
|
||||
#
|
||||
# The following information is for reference only and not required by the build tools.
|
||||
#
|
||||
# VALID_ARCHITECTURES = IA32 X64
|
||||
#
|
||||
|
||||
[Sources]
|
||||
HeciProtocol.h
|
||||
HeciProtocol.c
|
||||
|
||||
[Packages]
|
||||
MdePkg/MdePkg.dec
|
||||
MdeModulePkg/MdeModulePkg.dec
|
||||
Vlv2TbltDevicePkg/PlatformPkg.dec
|
||||
Vlv2DeviceRefCodePkg/Vlv2DeviceRefCodePkg.dec
|
||||
|
||||
[LibraryClasses]
|
||||
MemoryAllocationLib
|
||||
IoLib
|
||||
BaseMemoryLib
|
||||
DebugLib
|
||||
BaseLib
|
||||
UefiLib
|
||||
UefiBootServicesTableLib
|
||||
UefiDriverEntryPoint
|
||||
|
||||
[Protocols]
|
||||
gEfiHeciProtocolGuid # PROTOCOL CONSUMES AND PRODUCES
|
||||
|
||||
[Depex]
|
||||
gEfiHeciProtocolGuid
|
||||
@@ -0,0 +1,204 @@
|
||||
|
||||
#include <Uefi/UefiBaseType.h>
|
||||
#include <Uefi/UefiSpec.h>
|
||||
#include <Library/DebugLib.h>
|
||||
#include <Library/BaseMemoryLib.h>
|
||||
#include <Library/UefiBootServicesTableLib.h>
|
||||
#include <Library/UefiRuntimeServicesTableLib.h>
|
||||
#include <Library/MemoryAllocationLib.h>
|
||||
#include <Library/BaseLib.h>
|
||||
#include <Library/UefiLib.h>
|
||||
|
||||
#include "HeciProtocol.h"
|
||||
|
||||
#if defined(SEC_DEBUG_INFO) && SEC_DEBUG_INFO
|
||||
#define PRINT(x...) DEBUG ((EFI_D_INFO, x))
|
||||
#else
|
||||
#define PRINT(x...) Print (L ## x)
|
||||
#endif
|
||||
|
||||
EFI_HECI_PROTOCOL mHeciProtocolOld;
|
||||
EFI_HECI_PROTOCOL mHeciProtocolNew;
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI HeciSendWithAck (
|
||||
IN OUT UINT32 *Message,
|
||||
IN OUT UINT32 Length,
|
||||
IN OUT UINT32 *RecLength,
|
||||
IN UINT8 HostAddress,
|
||||
IN UINT8 SECAddress
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
UINT8 *Buf = (UINT8 *)Message;
|
||||
|
||||
PRINT ("HeciSendWithAck: Length %x, RecLength %s, HostAddr %x, SeCAddr %x\n", Length, *RecLength, HostAddress, SECAddress);
|
||||
PRINT ("HeciSendWithAck: Message:\n");
|
||||
|
||||
for (UINT32 i = 0; i < Length; i++)
|
||||
PRINT ("%02x ", Buf[i]);
|
||||
|
||||
PRINT ("\n");
|
||||
|
||||
Status = mHeciProtocolOld.SendwACK(Message, Length, RecLength, HostAddress, SECAddress);
|
||||
|
||||
if (!EFI_ERROR (Status)) {
|
||||
|
||||
PRINT ("HeciSendWithAck: Response:\n");
|
||||
|
||||
Buf = (UINT8 *)Message;
|
||||
|
||||
for (UINT32 i = 0; i < *RecLength; i++)
|
||||
PRINT ("%02x ", Buf[i]);
|
||||
|
||||
PRINT ("\n");
|
||||
} else {
|
||||
PRINT ("HECI SendwACK failed %r\n", Status);
|
||||
}
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI HeciSend (
|
||||
IN UINT32 *Message,
|
||||
IN UINT32 Length,
|
||||
IN UINT8 HostAddress,
|
||||
IN UINT8 SECAddress
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
UINT8 *Buf = (UINT8 *)Message;
|
||||
|
||||
PRINT ("HeciSend: Length %x, HostAddr %x, SeCAddr %x\n", Length, HostAddress, SECAddress);
|
||||
PRINT ("HeciSend: Message:\n");
|
||||
|
||||
for (UINT32 i = 0; i < Length; i++)
|
||||
PRINT ("%02x ", Buf[i]);
|
||||
|
||||
PRINT ("\n");
|
||||
|
||||
Status = mHeciProtocolOld.SendMsg(Message, Length, HostAddress, SECAddress);
|
||||
|
||||
if (EFI_ERROR (Status)) {
|
||||
PRINT ("HECI SendMsg failed %r\n", Status);
|
||||
}
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI HeciReceive (
|
||||
IN UINT32 Blocking,
|
||||
IN UINT32 *MessageBody,
|
||||
IN OUT UINT32 *Length
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
UINT8 *Buf;
|
||||
|
||||
PRINT ("HeciReceive: Length %x, Blocking %x\n", *Length, Blocking);
|
||||
|
||||
Status = mHeciProtocolOld.ReadMsg(Blocking, MessageBody, Length);
|
||||
|
||||
if (!EFI_ERROR (Status)) {
|
||||
|
||||
PRINT ("HeciReceive: Response:\n");
|
||||
|
||||
Buf = (UINT8 *)MessageBody;
|
||||
|
||||
for (UINT32 i = 0; i < *Length; i++)
|
||||
PRINT ("%02x ", Buf[i]);
|
||||
|
||||
PRINT ("\n");
|
||||
} else {
|
||||
PRINT ("HECI Receive failed %r\n", Status);
|
||||
}
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ReinstallHeciProtocol(
|
||||
IN EFI_HANDLE ImageHandle,
|
||||
IN EFI_SYSTEM_TABLE *SystemTable
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_HECI_PROTOCOL *ProtocolOld;
|
||||
EFI_HANDLE HeciHandle;
|
||||
EFI_HANDLE *HandleBuffer;
|
||||
UINTN BufferSize = 0;
|
||||
|
||||
|
||||
DEBUG ((EFI_D_INFO, ">>>>ReinstallHeciProtocol\n"));
|
||||
|
||||
//
|
||||
// Run memory test code at this point.
|
||||
//
|
||||
Status = gBS->LocateProtocol (
|
||||
&gEfiHeciProtocolGuid,
|
||||
NULL,
|
||||
(VOID **) &ProtocolOld
|
||||
);
|
||||
|
||||
if (EFI_ERROR (Status)) {
|
||||
DEBUG ((EFI_D_INFO, "gEfiHeciProtocolGuid not found: %r\n", Status));
|
||||
return Status;
|
||||
}
|
||||
|
||||
gBS->CopyMem((VOID *)&mHeciProtocolOld, (VOID *)ProtocolOld, sizeof(EFI_HECI_PROTOCOL));
|
||||
|
||||
BufferSize = sizeof (EFI_HANDLE);
|
||||
HandleBuffer = AllocateZeroPool (BufferSize);
|
||||
|
||||
Status = gBS->LocateHandle(
|
||||
ByProtocol,
|
||||
&gEfiHeciProtocolGuid,
|
||||
NULL,
|
||||
&BufferSize,
|
||||
HandleBuffer
|
||||
);
|
||||
|
||||
if (EFI_ERROR (Status)) {
|
||||
DEBUG ((EFI_D_INFO, "gEfiHeciProtocolGuid handles not found %r\n", Status));
|
||||
return Status;
|
||||
}
|
||||
|
||||
if (BufferSize > sizeof (EFI_HANDLE)) {
|
||||
DEBUG ((EFI_D_INFO, "gEfiHeciProtocolGuid handles found %d\n", BufferSize));
|
||||
return EFI_BAD_BUFFER_SIZE;
|
||||
}
|
||||
|
||||
HeciHandle = *HandleBuffer;
|
||||
FreePool (HandleBuffer);
|
||||
|
||||
mHeciProtocolNew.SendwACK = HeciSendWithAck;
|
||||
mHeciProtocolNew.ReadMsg = HeciReceive;
|
||||
mHeciProtocolNew.SendMsg = HeciSend;
|
||||
mHeciProtocolNew.ResetHeci = mHeciProtocolOld.ResetHeci;
|
||||
mHeciProtocolNew.InitHeci = mHeciProtocolOld.InitHeci;
|
||||
mHeciProtocolNew.SeCResetWait = mHeciProtocolOld.SeCResetWait;
|
||||
mHeciProtocolNew.ReInitHeci = mHeciProtocolOld.ReInitHeci;
|
||||
mHeciProtocolNew.GetSeCStatus = mHeciProtocolOld.GetSeCStatus;
|
||||
mHeciProtocolNew.GetSeCMode = mHeciProtocolOld.GetSeCMode;
|
||||
|
||||
|
||||
Status = gBS->ReinstallProtocolInterface (
|
||||
HeciHandle,
|
||||
&gEfiHeciProtocolGuid,
|
||||
ProtocolOld,
|
||||
&mHeciProtocolNew
|
||||
);
|
||||
|
||||
if (EFI_ERROR (Status)) {
|
||||
DEBUG ((EFI_D_INFO, "Could not reinstall gEfiHeciProtocolGuid: %r\n", Status));
|
||||
return Status;
|
||||
}
|
||||
|
||||
DEBUG ((EFI_D_INFO, "gEfiHeciProtocolGuid reinstalled successfully\n"));
|
||||
|
||||
return Status;
|
||||
}
|
||||
@@ -0,0 +1,102 @@
|
||||
/**@file
|
||||
EFI HECI Protocol
|
||||
|
||||
@copyright
|
||||
Copyright (c) 1999 - 2014 Intel Corporation. All rights reserved
|
||||
This software and associated documentation (if any) is furnished
|
||||
under a license and may only be used or copied in accordance
|
||||
with the terms of the license. Except as permitted by the
|
||||
license, no part of this software or documentation may be
|
||||
reproduced, stored in a retrieval system, or transmitted in any
|
||||
form or by any means without the express written consent of
|
||||
Intel Corporation.
|
||||
This file contains an 'Intel Peripheral Driver' and is uniquely
|
||||
identified as "Intel Reference Module" and is licensed for Intel
|
||||
CPUs and chipsets under the terms of your license agreement with
|
||||
Intel or your vendor. This file may be modified by the user, subject
|
||||
to additional terms of the license agreement.
|
||||
|
||||
@par Specification
|
||||
**/
|
||||
#ifndef _EFI_HECI_H
|
||||
#define _EFI_HECI_H
|
||||
|
||||
typedef struct _EFI_HECI_PROTOCOL EFI_HECI_PROTOCOL;
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_HECI_SENDWACK) (
|
||||
IN OUT UINT32 *Message,
|
||||
IN OUT UINT32 Length,
|
||||
IN OUT UINT32 *RecLength,
|
||||
IN UINT8 HostAddress,
|
||||
IN UINT8 SECAddress
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_HECI_READ_MESSAGE) (
|
||||
IN UINT32 Blocking,
|
||||
IN UINT32 *MessageBody,
|
||||
IN OUT UINT32 *Length
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_HECI_SEND_MESSAGE) (
|
||||
IN UINT32 *Message,
|
||||
IN UINT32 Length,
|
||||
IN UINT8 HostAddress,
|
||||
IN UINT8 SECAddress
|
||||
);
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_HECI_RESET) (
|
||||
VOID
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_HECI_INIT) (
|
||||
VOID
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_HECI_REINIT) (
|
||||
VOID
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_HECI_RESET_WAIT) (
|
||||
IN UINT32 Delay
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_HECI_GET_SEC_STATUS) (
|
||||
IN UINT32 *Status
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_HECI_GET_SEC_MODE) (
|
||||
IN UINT32 *Mode
|
||||
);
|
||||
|
||||
typedef struct _EFI_HECI_PROTOCOL {
|
||||
EFI_HECI_SENDWACK SendwACK;
|
||||
EFI_HECI_READ_MESSAGE ReadMsg;
|
||||
EFI_HECI_SEND_MESSAGE SendMsg;
|
||||
EFI_HECI_RESET ResetHeci;
|
||||
EFI_HECI_INIT InitHeci;
|
||||
EFI_HECI_RESET_WAIT SeCResetWait;
|
||||
EFI_HECI_REINIT ReInitHeci;
|
||||
EFI_HECI_GET_SEC_STATUS GetSeCStatus;
|
||||
EFI_HECI_GET_SEC_MODE GetSeCMode;
|
||||
} EFI_HECI_PROTOCOL;
|
||||
|
||||
extern EFI_GUID gEfiHeciProtocolGuid;
|
||||
|
||||
#endif // _EFI_HECI_H
|
||||
@@ -1,15 +1,24 @@
|
||||
/*++
|
||||
|
||||
Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR>
|
||||
|
||||
|
||||
This program and the accompanying materials are licensed and made available under
|
||||
|
||||
the terms and conditions of the BSD License that accompanies this distribution.
|
||||
|
||||
The full text of the license may be found at
|
||||
|
||||
http://opensource.org/licenses/bsd-license.php.
|
||||
|
||||
|
||||
This program and the accompanying materials are licensed and made available under
|
||||
|
||||
the terms and conditions of the BSD License that accompanies this distribution.
|
||||
|
||||
The full text of the license may be found at
|
||||
|
||||
http://opensource.org/licenses/bsd-license.php.
|
||||
|
||||
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
|
||||
|
||||
**/
|
||||
|
||||
#ifndef _SPIFlash_H_
|
||||
@@ -22,6 +31,7 @@
|
||||
|
||||
typedef enum {
|
||||
EnumSpiFlashW25Q64,
|
||||
EnumSpiFlashW25Q128_W,
|
||||
EnumSpiFlashAT25DF321A,
|
||||
EnumSpiFlashAT26DF321,
|
||||
EnumSpiFlashAT25DF641,
|
||||
@@ -67,6 +77,7 @@ typedef enum {
|
||||
#define SF_DEVICE_ID1_W25X32 0x16
|
||||
#define SF_DEVICE_ID1_W25X64 0x17
|
||||
#define SF_DEVICE_ID0_W25QXX 0x40
|
||||
#define SF_DEVICE_ID0_W25QXX_W 0x60
|
||||
#define SF_DEVICE_ID1_W25Q16 0x15
|
||||
#define SF_DEVICE_ID1_W25Q32 0x16
|
||||
#define SF_DEVICE_ID1_W25Q64 0x17
|
||||
|
||||
@@ -1,15 +1,24 @@
|
||||
#
|
||||
#
|
||||
# Copyright (c) 1999 - 2014, Intel Corporation. All rights reserved
|
||||
#
|
||||
|
||||
# This program and the accompanying materials are licensed and made available under
|
||||
|
||||
# the terms and conditions of the BSD License that accompanies this distribution.
|
||||
|
||||
# The full text of the license may be found at
|
||||
|
||||
# http://opensource.org/licenses/bsd-license.php.
|
||||
#
|
||||
|
||||
# This program and the accompanying materials are licensed and made available under
|
||||
|
||||
# the terms and conditions of the BSD License that accompanies this distribution.
|
||||
|
||||
# The full text of the license may be found at
|
||||
|
||||
# http://opensource.org/licenses/bsd-license.php.
|
||||
|
||||
#
|
||||
|
||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
|
||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
#
|
||||
|
||||
#
|
||||
#
|
||||
# Module Name:
|
||||
@@ -35,11 +44,13 @@
|
||||
EfiCpuVersion.c
|
||||
|
||||
[Sources.IA32]
|
||||
MODULE_TYPE = BASE
|
||||
IA32/CpuIA32.c | MSFT
|
||||
IA32/CpuIA32.asm | INTEL
|
||||
IA32/CpuIA32.S | GCC
|
||||
|
||||
[Sources.X64]
|
||||
PI_SPECIFICATION_VERSION = 0x0001000A
|
||||
|
||||
X64/Cpu.asm | INTEL
|
||||
X64/Cpu.S | GCC
|
||||
|
||||
[Packages]
|
||||
MdePkg/MdePkg.dec
|
||||
|
||||
@@ -1,15 +1,24 @@
|
||||
#
|
||||
#
|
||||
# Copyright (c) 1999 - 2014, Intel Corporation. All rights reserved
|
||||
#
|
||||
|
||||
# This program and the accompanying materials are licensed and made available under
|
||||
|
||||
# the terms and conditions of the BSD License that accompanies this distribution.
|
||||
|
||||
# The full text of the license may be found at
|
||||
|
||||
# http://opensource.org/licenses/bsd-license.php.
|
||||
#
|
||||
|
||||
# This program and the accompanying materials are licensed and made available under
|
||||
|
||||
# the terms and conditions of the BSD License that accompanies this distribution.
|
||||
|
||||
# The full text of the license may be found at
|
||||
|
||||
# http://opensource.org/licenses/bsd-license.php.
|
||||
|
||||
#
|
||||
|
||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
|
||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
#
|
||||
|
||||
#
|
||||
#
|
||||
#Module Name:
|
||||
|
||||
@@ -0,0 +1,315 @@
|
||||
/*++
|
||||
|
||||
Copyright (c) 2004 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
Module Name:
|
||||
|
||||
EfiBind.h
|
||||
|
||||
Abstract:
|
||||
|
||||
Processor or Compiler specific defines and types for IA-32.
|
||||
We are using the ANSI C 2000 _t type definitions for basic types.
|
||||
This it technically a violation of the coding standard, but they
|
||||
are used to make EfiTypes.h portable. Code other than EfiTypes.h
|
||||
should never use any ANSI C 2000 _t integer types.
|
||||
|
||||
--*/
|
||||
|
||||
#ifndef _EFI_BIND_H_
|
||||
#define _EFI_BIND_H_
|
||||
|
||||
#ifdef EFI_DEBUG
|
||||
|
||||
#ifdef EFI_NT_EMULATOR
|
||||
|
||||
#define EFI_DRIVER_ENTRY_POINT(InitFunction) \
|
||||
EFI_STATUS \
|
||||
EFIAPI \
|
||||
InitFunction ( \
|
||||
EFI_HANDLE ImageHandle, \
|
||||
EFI_SYSTEM_TABLE *SystemTable \
|
||||
); \
|
||||
\
|
||||
UINTN \
|
||||
__stdcall \
|
||||
_DllMainCRTStartup ( \
|
||||
UINTN Inst, \
|
||||
UINTN reason_for_call, \
|
||||
VOID *rserved \
|
||||
) \
|
||||
{ \
|
||||
return 1; \
|
||||
} \
|
||||
\
|
||||
EFI_STATUS \
|
||||
__declspec( dllexport ) \
|
||||
__cdecl \
|
||||
InitializeDriver ( \
|
||||
EFI_HANDLE ImageHandle, \
|
||||
EFI_SYSTEM_TABLE *SystemTable \
|
||||
) \
|
||||
{ \
|
||||
return InitFunction(ImageHandle, SystemTable); \
|
||||
}
|
||||
|
||||
#define EFI_APPLICATION_ENTRY_POINT EFI_DRIVER_ENTRY_POINT
|
||||
|
||||
#else
|
||||
|
||||
#define EFI_DRIVER_ENTRY_POINT(InitFunction)
|
||||
#define EFI_APPLICATION_ENTRY_POINT EFI_DRIVER_ENTRY_POINT
|
||||
|
||||
#endif
|
||||
|
||||
#else
|
||||
|
||||
#define EFI_DRIVER_ENTRY_POINT(InitFunction)
|
||||
#define EFI_APPLICATION_ENTRY_POINT EFI_DRIVER_ENTRY_POINT
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//
|
||||
// Make sure we are useing the correct packing rules per EFI specification
|
||||
//
|
||||
#ifndef __GNUC__
|
||||
#pragma pack()
|
||||
#endif
|
||||
|
||||
#if __INTEL_COMPILER
|
||||
//
|
||||
// Disable ICC's warning: trailing comma is nonstandard
|
||||
//
|
||||
//#pragma warning ( disable : 271 )
|
||||
|
||||
//
|
||||
// Disable ICC's warning: extra ";" ignored
|
||||
//
|
||||
#pragma warning ( disable : 424 )
|
||||
|
||||
//
|
||||
// Disable ICC's warning: : variable "foo" was set but never used
|
||||
//
|
||||
#pragma warning ( disable : 593 )
|
||||
|
||||
//
|
||||
// Disable ICC's remark #1418: external function definition with no prior declaration.
|
||||
// This is legal ANSI C code so we disable the remark that is turned on with /W4
|
||||
//
|
||||
#pragma warning ( disable : 1418 )
|
||||
|
||||
|
||||
//
|
||||
// Disable ICC's remark #1419: external declaration in primary source file
|
||||
// This is legal ANSI C code so we disable the remark that is turned on with /W4
|
||||
//
|
||||
#pragma warning ( disable : 1419 )
|
||||
|
||||
//
|
||||
// Disable ICC's remark #869: "Parameter" was never referenced warning.
|
||||
// This is legal ANSI C code so we disable the remark that is turned on with -Wall
|
||||
//
|
||||
#pragma warning ( disable : 869 )
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#if _MSC_EXTENSIONS
|
||||
|
||||
//
|
||||
// Disable warning that make it impossible to compile at /W4
|
||||
// This only works for Microsoft* tools
|
||||
//
|
||||
|
||||
//
|
||||
// Disabling bitfield type checking warnings.
|
||||
//
|
||||
#pragma warning ( disable : 4214 )
|
||||
|
||||
//
|
||||
// Disabling the unreferenced formal parameter warnings.
|
||||
//
|
||||
#pragma warning ( disable : 4100 )
|
||||
|
||||
//
|
||||
// Disable slightly different base types warning as CHAR8 * can not be set
|
||||
// to a constant string.
|
||||
//
|
||||
#pragma warning ( disable : 4057 )
|
||||
|
||||
//
|
||||
// ASSERT(FALSE) or while (TRUE) are legal constructes so supress this warning
|
||||
//
|
||||
#pragma warning ( disable : 4127 )
|
||||
|
||||
//
|
||||
// Int64ShllMod32 unreferenced inline function
|
||||
//
|
||||
#pragma warning ( disable : 4514 )
|
||||
|
||||
//
|
||||
// Unreferenced formal parameter - We are object oriented, so we pass This even
|
||||
// if we don't need them.
|
||||
//
|
||||
#pragma warning ( disable : 4100 )
|
||||
|
||||
//
|
||||
// This warning is caused by empty (after preprocessing) souce file.
|
||||
//
|
||||
#pragma warning ( disable : 4206 )
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#if defined(_MSC_EXTENSIONS)
|
||||
|
||||
//
|
||||
// use Microsoft C complier dependent integer width types
|
||||
//
|
||||
|
||||
typedef unsigned __int64 uint64_t;
|
||||
typedef __int64 int64_t;
|
||||
typedef unsigned __int32 uint32_t;
|
||||
typedef __int32 int32_t;
|
||||
typedef unsigned short uint16_t;
|
||||
typedef short int16_t;
|
||||
typedef unsigned char uint8_t;
|
||||
typedef signed char int8_t;
|
||||
#else
|
||||
typedef unsigned long long uint64_t;
|
||||
typedef long long int64_t;
|
||||
typedef unsigned int uint32_t;
|
||||
typedef int int32_t;
|
||||
typedef unsigned short uint16_t;
|
||||
typedef short int16_t;
|
||||
typedef unsigned char uint8_t;
|
||||
typedef signed char int8_t;
|
||||
#endif
|
||||
|
||||
//
|
||||
// Native integer size in stdint.h
|
||||
//
|
||||
typedef uint32_t uintn_t;
|
||||
typedef int32_t intn_t;
|
||||
|
||||
//
|
||||
// Processor specific defines
|
||||
//
|
||||
#define EFI_MAX_BIT 0x80000000
|
||||
#define MAX_2_BITS 0xC0000000
|
||||
|
||||
//
|
||||
// Maximum legal IA-32 address
|
||||
//
|
||||
#define EFI_MAX_ADDRESS 0xFFFFFFFF
|
||||
|
||||
//
|
||||
// Bad pointer value to use in check builds.
|
||||
// if you see this value you are using uninitialized or free'ed data
|
||||
//
|
||||
#define EFI_BAD_POINTER 0xAFAFAFAF
|
||||
#define EFI_BAD_POINTER_AS_BYTE 0xAF
|
||||
|
||||
//
|
||||
// Inject a break point in the code to assist debugging for NT Emulation Environment
|
||||
// For real hardware, just put in a halt loop. Don't do a while(1) because the
|
||||
// compiler will optimize away the rest of the function following, so that you run out in
|
||||
// the weeds if you skip over it with a debugger.
|
||||
//
|
||||
#ifdef _MSC_EXTENSIONS
|
||||
#define EFI_BREAKPOINT() __asm { int 3 }
|
||||
#elif __GNUC__
|
||||
#define EFI_BREAKPOINT() asm(" int $3");
|
||||
#endif
|
||||
|
||||
#define EFI_DEADLOOP() { volatile UINTN __iii; __iii = 1; while (__iii); }
|
||||
|
||||
//
|
||||
// Memory Fence forces serialization, and is needed to support out of order
|
||||
// memory transactions. The Memory Fence is mainly used to make sure IO
|
||||
// transactions complete in a deterministic sequence, and to syncronize locks
|
||||
// an other MP code. Currently no memory fencing is required.
|
||||
//
|
||||
#define MEMORY_FENCE()
|
||||
|
||||
//
|
||||
// Some compilers don't support the forward reference construct:
|
||||
// typedef struct XXXXX. The forward reference is required for
|
||||
// ANSI compatibility.
|
||||
//
|
||||
// The following macro provide a workaround for such cases.
|
||||
//
|
||||
|
||||
|
||||
#ifdef EFI_NO_INTERFACE_DECL
|
||||
#define EFI_FORWARD_DECLARATION(x)
|
||||
#else
|
||||
#define EFI_FORWARD_DECLARATION(x) typedef struct _##x x
|
||||
#endif
|
||||
|
||||
|
||||
//
|
||||
// Some C compilers optimize the calling conventions to increase performance.
|
||||
// _EFIAPI is used to make all public APIs follow the standard C calling
|
||||
// convention.
|
||||
//
|
||||
#if _MSC_EXTENSIONS
|
||||
//
|
||||
// Microsoft* compiler requires _EFIAPI useage, __cdecl is Microsoft* specific C.
|
||||
//
|
||||
|
||||
#define _EFIAPI __cdecl
|
||||
#else
|
||||
#define _EFIAPI
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef _EFI_WINNT
|
||||
|
||||
#define EFI_SUPPRESS_BENIGN_REDEFINITION_OF_TYPE_WARNING() \
|
||||
warning ( disable : 4142 )
|
||||
|
||||
#define EFI_DEFAULT_BENIGN_REDEFINITION_OF_TYPE_WARNING() \
|
||||
warning ( default : 4142 )
|
||||
#else
|
||||
|
||||
#define EFI_SUPPRESS_BENIGN_REDEFINITION_OF_TYPE_WARNING() \
|
||||
warning ( disable : 4068 )
|
||||
|
||||
#define EFI_DEFAULT_BENIGN_REDEFINITION_OF_TYPE_WARNING() \
|
||||
warning ( default : 4068 )
|
||||
|
||||
#endif
|
||||
|
||||
//
|
||||
// For symbol name in GNU assembly code, an extra "_" is necessary
|
||||
//
|
||||
#if defined(__GNUC__)
|
||||
///
|
||||
/// Private worker functions for ASM_PFX()
|
||||
///
|
||||
#define _CONCATENATE(a, b) __CONCATENATE(a, b)
|
||||
#define __CONCATENATE(a, b) a ## b
|
||||
|
||||
///
|
||||
/// The __USER_LABEL_PREFIX__ macro predefined by GNUC represents the prefix
|
||||
/// on symbols in assembly language.
|
||||
///
|
||||
#define ASM_PFX(name) _CONCATENATE (__USER_LABEL_PREFIX__, name)
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,15 +1,24 @@
|
||||
/** @file
|
||||
|
||||
Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR>
|
||||
|
||||
|
||||
This program and the accompanying materials are licensed and made available under
|
||||
|
||||
the terms and conditions of the BSD License that accompanies this distribution.
|
||||
|
||||
The full text of the license may be found at
|
||||
|
||||
http://opensource.org/licenses/bsd-license.php.
|
||||
|
||||
|
||||
This program and the accompanying materials are licensed and made available under
|
||||
|
||||
the terms and conditions of the BSD License that accompanies this distribution.
|
||||
|
||||
The full text of the license may be found at
|
||||
|
||||
http://opensource.org/licenses/bsd-license.php.
|
||||
|
||||
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
**/
|
||||
@@ -442,6 +451,7 @@ LibFvbFlashDeviceSupportInit (
|
||||
SpiNotMatchError++;
|
||||
}
|
||||
} else {
|
||||
DEBUG ((EFI_D_ERROR, "SPI flash transaction error: %r\n", Status));
|
||||
SpiReadError++;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,22 +1,35 @@
|
||||
/*++
|
||||
|
||||
Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR>
|
||||
|
||||
|
||||
This program and the accompanying materials are licensed and made available under
|
||||
|
||||
the terms and conditions of the BSD License that accompanies this distribution.
|
||||
|
||||
The full text of the license may be found at
|
||||
|
||||
http://opensource.org/licenses/bsd-license.php.
|
||||
|
||||
|
||||
This program and the accompanying materials are licensed and made available under
|
||||
|
||||
the terms and conditions of the BSD License that accompanies this distribution.
|
||||
|
||||
The full text of the license may be found at
|
||||
|
||||
http://opensource.org/licenses/bsd-license.php.
|
||||
|
||||
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
**/
|
||||
|
||||
#include <Library/SpiFlash.H>
|
||||
|
||||
|
||||
#ifdef BUILD_16M
|
||||
#define FLASH_SIZE 0xC00000
|
||||
#else
|
||||
#define FLASH_SIZE 0x600000
|
||||
#endif
|
||||
#define FLASH_DEVICE_BASE_ADDRESS (0xFFFFFFFF-FLASH_SIZE+1)
|
||||
|
||||
//
|
||||
@@ -49,6 +62,36 @@ SPI_INIT_TABLE mInitTable[] = {
|
||||
//
|
||||
((WINBOND_W25Q64_SIZE >= FLASH_SIZE) ? WINBOND_W25Q64_SIZE - FLASH_SIZE : (UINTN) (-1)),
|
||||
|
||||
//
|
||||
// The size of the BIOS image in flash. This value is platform specific and depends on the system flash map.
|
||||
//
|
||||
FLASH_SIZE
|
||||
},
|
||||
{
|
||||
SF_VENDOR_ID_WINBOND, // VendorId
|
||||
SF_DEVICE_ID0_W25QXX_W, // DeviceId 0
|
||||
SF_DEVICE_ID1_W25Q128, // DeviceId 1
|
||||
{
|
||||
SF_INST_WREN, // Prefix Opcode 0: Write Enable
|
||||
SF_INST_EWSR // Prefix Opcode 1: Enable Write Status Register
|
||||
},
|
||||
{
|
||||
{EnumSpiOpcodeReadNoAddr, SF_INST_JEDEC_READ_ID, EnumSpiCycle50MHz, EnumSpiOperationJedecId }, // Opcode 0: Read ID
|
||||
{EnumSpiOpcodeRead, SF_INST_READ, EnumSpiCycle50MHz, EnumSpiOperationReadData }, // Opcode 1: Read
|
||||
{EnumSpiOpcodeReadNoAddr, SF_INST_RDSR, EnumSpiCycle50MHz, EnumSpiOperationReadStatus }, // Opcode 2: Read Status Register
|
||||
{EnumSpiOpcodeRead, SF_INST_SFDP, EnumSpiCycle50MHz, EnumSpiOperationDiscoveryParameters}, // Opcode 3: Serial Flash Discovery Parameters
|
||||
{EnumSpiOpcodeWrite, SF_INST_SERASE, EnumSpiCycle50MHz, EnumSpiOperationErase_4K_Byte }, // Opcode 4: Sector Erase (4KB)
|
||||
{EnumSpiOpcodeWrite, SF_INST_64KB_ERASE, EnumSpiCycle50MHz, EnumSpiOperationErase_64K_Byte }, // Opcode 5: Block Erase (64KB
|
||||
{EnumSpiOpcodeWrite, SF_INST_PROG, EnumSpiCycle50MHz, EnumSpiOperationProgramData_1_Byte}, // Opcode 6: Byte Program
|
||||
{EnumSpiOpcodeWriteNoAddr, SF_INST_WRSR, EnumSpiCycle50MHz, EnumSpiOperationWriteStatus }, // Opcode 7: Write Status Register
|
||||
},
|
||||
|
||||
//
|
||||
// The offset of the start of the BIOS image in flash. This value is platform specific
|
||||
// and depends on the system flash map. If BIOS size is bigger than flash return -1.
|
||||
//
|
||||
((WINBOND_W25Q128_SIZE >= FLASH_SIZE) ? WINBOND_W25Q128_SIZE - FLASH_SIZE : (UINTN) (-1)),
|
||||
|
||||
//
|
||||
// The size of the BIOS image in flash. This value is platform specific and depends on the system flash map.
|
||||
//
|
||||
|
||||
@@ -1,15 +1,24 @@
|
||||
/** @file
|
||||
|
||||
Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.<BR>
|
||||
|
||||
|
||||
This program and the accompanying materials are licensed and made available under
|
||||
|
||||
the terms and conditions of the BSD License that accompanies this distribution.
|
||||
|
||||
The full text of the license may be found at
|
||||
|
||||
http://opensource.org/licenses/bsd-license.php.
|
||||
|
||||
|
||||
This program and the accompanying materials are licensed and made available under
|
||||
|
||||
the terms and conditions of the BSD License that accompanies this distribution.
|
||||
|
||||
The full text of the license may be found at
|
||||
|
||||
http://opensource.org/licenses/bsd-license.php.
|
||||
|
||||
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Module Name:
|
||||
@@ -2553,7 +2562,7 @@ ShowProgressHotKey (
|
||||
IN UINT16 TimeoutDefault
|
||||
)
|
||||
{
|
||||
|
||||
|
||||
UINT16 TimeoutRemain;
|
||||
EFI_STATUS Status;
|
||||
EFI_INPUT_KEY Key;
|
||||
@@ -2567,19 +2576,7 @@ ShowProgressHotKey (
|
||||
}
|
||||
|
||||
gST->ConOut->SetAttribute(gST->ConOut, EFI_TEXT_ATTR (EFI_LIGHTGRAY, EFI_BLACK));
|
||||
EFI_GRAPHICS_OUTPUT_BLT_PIXEL Background;
|
||||
EFI_GRAPHICS_OUTPUT_BLT_PIXEL Color;
|
||||
UINT32 GpioValue;
|
||||
|
||||
if (TimeoutDefault == 0) {
|
||||
return EFI_TIMEOUT;
|
||||
}
|
||||
|
||||
gST->ConOut->SetAttribute(gST->ConOut, EFI_TEXT_ATTR (EFI_LIGHTGRAY, EFI_BLACK));
|
||||
|
||||
if (DebugAssertEnabled())
|
||||
{
|
||||
DEBUG ((EFI_D_INFO, "\n\nStart showing progress bar... Press any key to stop it, or press <F2> or <DEL> to enter setup page! ...Zzz....\n"));
|
||||
|
||||
SetMem (&Foreground, sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL), 0xff);
|
||||
SetMem (&Background, sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL), 0x0);
|
||||
SetMem (&Color, sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL), 0xff);
|
||||
@@ -2587,8 +2584,7 @@ ShowProgressHotKey (
|
||||
//
|
||||
// Clear the progress status bar first
|
||||
//
|
||||
#endif
|
||||
}
|
||||
PlatformBdsShowProgress (Foreground, Background, L"", Color, 0, 0);
|
||||
|
||||
TimeoutRemain = TimeoutDefault;
|
||||
while (TimeoutRemain != 0) {
|
||||
@@ -2609,29 +2605,20 @@ ShowProgressHotKey (
|
||||
//
|
||||
// Show progress
|
||||
//
|
||||
Status = WaitForSingleEvent (gST->ConIn->WaitForKey, ONE_SECOND);
|
||||
if (Status != EFI_TIMEOUT) {
|
||||
break;
|
||||
}
|
||||
TimeoutRemain--;
|
||||
|
||||
//
|
||||
// Show progress
|
||||
//
|
||||
if (TmpStr != NULL) {
|
||||
PlatformBdsShowProgress (
|
||||
Foreground,
|
||||
Background,
|
||||
L"",
|
||||
Color,
|
||||
((TimeoutDefault - TimeoutRemain) * 100 / TimeoutDefault),
|
||||
0
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
// Timeout expired
|
||||
//
|
||||
if (TimeoutRemain == 0) {
|
||||
0
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Timeout expired
|
||||
return EFI_TIMEOUT;
|
||||
}
|
||||
|
||||
|
||||
@@ -47,7 +47,8 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID *mLibTerminalType[] = {
|
||||
&gEfiPcAnsiGuid,
|
||||
&gEfiVT100Guid,
|
||||
&gEfiVT100PlusGuid,
|
||||
&gEfiVTUTF8Guid
|
||||
&gEfiVTUTF8Guid,
|
||||
&gEfiTtyTermGuid
|
||||
};
|
||||
|
||||
//
|
||||
@@ -651,7 +652,6 @@ BootCurrentIsInternalShell (
|
||||
CHAR16 BootOptionName[16];
|
||||
UINT8 *BootOption;
|
||||
UINT8 *Ptr;
|
||||
EFI_DEVICE_PATH_PROTOCOL *BootDevicePath;
|
||||
BOOLEAN Result;
|
||||
EFI_STATUS Status;
|
||||
EFI_DEVICE_PATH_PROTOCOL *TempDevicePath;
|
||||
@@ -659,7 +659,6 @@ BootCurrentIsInternalShell (
|
||||
EFI_GUID *GuidPoint;
|
||||
|
||||
BootOption = NULL;
|
||||
BootDevicePath = NULL;
|
||||
Result = FALSE;
|
||||
|
||||
//
|
||||
@@ -892,9 +891,9 @@ PlatformBootManagerBeforeConsole (
|
||||
//
|
||||
// Get default Terminal Type.
|
||||
//
|
||||
TerminalGuid = &gEfiPcAnsiGuid;
|
||||
TerminalGuid = &gEfiTtyTermGuid;
|
||||
TerminalType = PcdGet8 (PcdDefaultTerminalType);
|
||||
if (TerminalType < 4) {
|
||||
if (TerminalType < 5) {
|
||||
TerminalGuid = mLibTerminalType[TerminalType];
|
||||
}
|
||||
|
||||
@@ -910,6 +909,7 @@ PlatformBootManagerBeforeConsole (
|
||||
//
|
||||
// Restoring default serial device path.
|
||||
//
|
||||
CopyGuid (&((VENDOR_DEVICE_PATH *)Next)->Guid, TerminalGuid);
|
||||
EfiBootManagerUpdateConsoleVariable (ConIn, NULL, Instance);
|
||||
EfiBootManagerUpdateConsoleVariable (ConOut, NULL, Instance);
|
||||
}
|
||||
@@ -977,7 +977,7 @@ IsNeedSortBootOption (
|
||||
// If setup is the first priority in boot option, we need to sort boot option.
|
||||
//
|
||||
if ((BootOptionCount > 1) &&
|
||||
(((StrnCmp (BootOptions->Description, L"Enter Setup", StrLen (L"Enter Setup"))) == 0) ||
|
||||
(((StrnCmp (BootOptions->Description, L"Setup", StrLen (L"Setup"))) == 0) ||
|
||||
((StrnCmp (BootOptions->Description, L"BootManagerMenuApp", StrLen (L"BootManagerMenuApp"))) == 0))) {
|
||||
return TRUE;
|
||||
}
|
||||
@@ -1067,4 +1067,9 @@ PlatformBootManagerAfterConsole (
|
||||
if (IsNeedSortBootOption()) {
|
||||
EfiBootManagerSortLoadOptionVariable (LoadOptionTypeBoot, (SORT_COMPARE)CompareBootOption);
|
||||
}
|
||||
|
||||
|
||||
Print (L"F2 to enter Setup\n");
|
||||
Print (L"F7 to enter Boot Manager Menu\n");
|
||||
Print (L"ENTER to boot directly\n");
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user