1673 lines
65 KiB
Diff
1673 lines
65 KiB
Diff
From cc615a10f1b597a6e8923df3bda450217cb320f3 Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Mario=20B=C4=83l=C4=83nic=C4=83?=
|
|
<mariobalanica02@gmail.com>
|
|
Date: Tue, 12 Dec 2023 02:15:17 +0200
|
|
Subject: [PATCH 03/16] Platform/RPi5: Add early support
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
Not too useful right now - just boots to the UEFI setup screen with
|
|
PL011 serial console at 115200, available on the special connector.
|
|
|
|
Signed-off-by: Mario Bălănică <mariobalanica02@gmail.com>
|
|
---
|
|
.../BoardRevisionHelperLib.c | 6 +
|
|
.../PlatformLib/AArch64/RaspberryPiHelper.S | 116 +++
|
|
.../RPi5/Library/PlatformLib/PlatformLib.inf | 65 ++
|
|
.../RPi5/Library/PlatformLib/RaspberryPi.c | 94 +++
|
|
.../RPi5/Library/PlatformLib/RaspberryPiMem.c | 178 +++++
|
|
Platform/RaspberryPi/RPi5/RPi5.dsc | 685 ++++++++++++++++++
|
|
Platform/RaspberryPi/RPi5/RPi5.fdf | 435 +++++++++++
|
|
7 files changed, 1579 insertions(+)
|
|
create mode 100644 Platform/RaspberryPi/RPi5/Library/PlatformLib/AArch64/RaspberryPiHelper.S
|
|
create mode 100644 Platform/RaspberryPi/RPi5/Library/PlatformLib/PlatformLib.inf
|
|
create mode 100644 Platform/RaspberryPi/RPi5/Library/PlatformLib/RaspberryPi.c
|
|
create mode 100644 Platform/RaspberryPi/RPi5/Library/PlatformLib/RaspberryPiMem.c
|
|
create mode 100644 Platform/RaspberryPi/RPi5/RPi5.dsc
|
|
create mode 100644 Platform/RaspberryPi/RPi5/RPi5.fdf
|
|
|
|
diff --git a/Platform/RaspberryPi/Library/BoardRevisionHelperLib/BoardRevisionHelperLib.c b/Platform/RaspberryPi/Library/BoardRevisionHelperLib/BoardRevisionHelperLib.c
|
|
index d120bb6d..032853aa 100644
|
|
--- a/Platform/RaspberryPi/Library/BoardRevisionHelperLib/BoardRevisionHelperLib.c
|
|
+++ b/Platform/RaspberryPi/Library/BoardRevisionHelperLib/BoardRevisionHelperLib.c
|
|
@@ -57,6 +57,8 @@ BoardRevisionGetModelFamily (
|
|
case 0x13: // Raspberry Pi 400
|
|
case 0x14: // Raspberry Pi Computer Module 4
|
|
return 4;
|
|
+ case 0x17: // Raspberry Pi 5 Model B
|
|
+ return 5;
|
|
}
|
|
}
|
|
return 0;
|
|
@@ -102,6 +104,8 @@ BoardRevisionGetModelName (
|
|
return "Raspberry Pi 400";
|
|
case 0x14:
|
|
return "Raspberry Pi Compute Module 4";
|
|
+ case 0x17:
|
|
+ return "Raspberry Pi 5 Model B";
|
|
}
|
|
}
|
|
return "Unknown Raspberry Pi Model";
|
|
@@ -147,6 +151,8 @@ BoardRevisionGetProcessorName (
|
|
return "BCM2837 (Arm Cortex-A53)";
|
|
case 0x03:
|
|
return "BCM2711 (Arm Cortex-A72)";
|
|
+ case 0x04:
|
|
+ return "BCM2712 (Arm Cortex-A76)";
|
|
}
|
|
}
|
|
return "Unknown CPU Model";
|
|
diff --git a/Platform/RaspberryPi/RPi5/Library/PlatformLib/AArch64/RaspberryPiHelper.S b/Platform/RaspberryPi/RPi5/Library/PlatformLib/AArch64/RaspberryPiHelper.S
|
|
new file mode 100644
|
|
index 00000000..5972fcdf
|
|
--- /dev/null
|
|
+++ b/Platform/RaspberryPi/RPi5/Library/PlatformLib/AArch64/RaspberryPiHelper.S
|
|
@@ -0,0 +1,116 @@
|
|
+/** @file
|
|
+ *
|
|
+ * Copyright (c) 2023, Mario Bălănică <mariobalanica02@gmail.com>
|
|
+ * Copyright (c) 2020, Andrei Warkentin <andrey.warkentin@gmail.com>
|
|
+ * Copyright (c) 2019-2020, Pete Batard <pete@akeo.ie>
|
|
+ * Copyright (c) 2016, Linaro Limited. All rights reserved.
|
|
+ * Copyright (c) 2011-2020, ARM Limited. All rights reserved.
|
|
+ *
|
|
+ * SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
+ *
|
|
+ **/
|
|
+
|
|
+#include <AsmMacroIoLibV8.h>
|
|
+#include <Library/ArmLib.h>
|
|
+#include <IndustryStandard/Bcm2836Mbox.h>
|
|
+#include <IndustryStandard/RpiMbox.h>
|
|
+
|
|
+ .macro drain
|
|
+ mov x5, #RPI_MBOX_MAX_TRIES
|
|
+0: ldr w6, [x4, #BCM2836_MBOX_STATUS_OFFSET]
|
|
+ tbnz w6, #BCM2836_MBOX_STATUS_EMPTY, 1f
|
|
+ dmb ld
|
|
+ ldr wzr, [x4, #BCM2836_MBOX_READ_OFFSET]
|
|
+ subs x5, x5, #1
|
|
+ b.ne 0b
|
|
+1:
|
|
+ .endm
|
|
+
|
|
+ .macro poll, status
|
|
+ mov x5, #RPI_MBOX_MAX_TRIES
|
|
+0: ldr w6, [x4, #BCM2836_MBOX_STATUS_OFFSET]
|
|
+ tbz w6, #\status, 1f
|
|
+ dmb ld
|
|
+ subs x5, x5, #1
|
|
+ b.ne 0b
|
|
+1:
|
|
+ .endm
|
|
+
|
|
+ .macro run, command_buffer
|
|
+ adr x0, \command_buffer
|
|
+ orr x0, x0, #RPI_MBOX_VC_CHANNEL
|
|
+ add x0, x0, x1
|
|
+
|
|
+ poll BCM2836_MBOX_STATUS_FULL
|
|
+ str w0, [x4, #BCM2836_MBOX_WRITE_OFFSET]
|
|
+ dmb sy
|
|
+ poll BCM2836_MBOX_STATUS_EMPTY
|
|
+ dmb sy
|
|
+ ldr wzr, [x4, #BCM2836_MBOX_READ_OFFSET]
|
|
+ dmb ld
|
|
+ .endm
|
|
+
|
|
+ASM_FUNC (ArmPlatformPeiBootAction)
|
|
+ mov x1, #FixedPcdGet64 (PcdDmaDeviceOffset)
|
|
+ orr x0, x0, #RPI_MBOX_VC_CHANNEL
|
|
+ // x1 holds the value of PcdDmaDeviceOffset throughout this function
|
|
+
|
|
+ MOV64 (x4, FixedPcdGet64 (PcdFwMailboxBaseAddress))
|
|
+
|
|
+ drain
|
|
+
|
|
+ run .Lmeminfo_buffer
|
|
+
|
|
+ ldr w0, .Lmembase
|
|
+ adr x2, mSystemMemoryBase
|
|
+ str x0, [x2]
|
|
+
|
|
+ ldr w0, .Lmemsize
|
|
+ sub x0, x0, #1
|
|
+ adr x2, mSystemMemoryEnd
|
|
+ str x0, [x2]
|
|
+
|
|
+ ret
|
|
+
|
|
+ .align 4
|
|
+.Lmeminfo_buffer:
|
|
+ .long .Lmeminfo_size
|
|
+ .long 0x0
|
|
+ .long RPI_MBOX_GET_ARM_MEMSIZE
|
|
+ .long 8 // buf size
|
|
+ .long 0 // input len
|
|
+.Lmembase:
|
|
+ .long 0 // mem base
|
|
+.Lmemsize:
|
|
+ .long 0 // mem size
|
|
+ .long 0 // end tag
|
|
+ .set .Lmeminfo_size, . - .Lmeminfo_buffer
|
|
+
|
|
+//UINTN
|
|
+//ArmPlatformGetPrimaryCoreMpId (
|
|
+// VOID
|
|
+// );
|
|
+ASM_FUNC (ArmPlatformGetPrimaryCoreMpId)
|
|
+ MOV32 (w0, FixedPcdGet32 (PcdArmPrimaryCore))
|
|
+ ret
|
|
+
|
|
+//UINTN
|
|
+//ArmPlatformIsPrimaryCore (
|
|
+// IN UINTN MpId
|
|
+// );
|
|
+ASM_FUNC (ArmPlatformIsPrimaryCore)
|
|
+ mov x0, #1
|
|
+ ret
|
|
+
|
|
+//UINTN
|
|
+//ArmPlatformGetCorePosition (
|
|
+// IN UINTN MpId
|
|
+// );
|
|
+// With this function: CorePos = (ClusterId * 4) + CoreId
|
|
+ASM_FUNC (ArmPlatformGetCorePosition)
|
|
+ and x1, x0, #ARM_CORE_MASK
|
|
+ and x0, x0, #ARM_CLUSTER_MASK
|
|
+ add x0, x1, x0, LSR #6
|
|
+ ret
|
|
+
|
|
+ASM_FUNCTION_REMOVE_IF_UNREFERENCED
|
|
diff --git a/Platform/RaspberryPi/RPi5/Library/PlatformLib/PlatformLib.inf b/Platform/RaspberryPi/RPi5/Library/PlatformLib/PlatformLib.inf
|
|
new file mode 100644
|
|
index 00000000..765a5807
|
|
--- /dev/null
|
|
+++ b/Platform/RaspberryPi/RPi5/Library/PlatformLib/PlatformLib.inf
|
|
@@ -0,0 +1,65 @@
|
|
+#/** @file
|
|
+#
|
|
+# Copyright (c) 2023, Mario Bălănică <mariobalanica02@gmail.com>
|
|
+# Copyright (c) 2017-2018, Andrei Warkentin <andrey.warkentin@gmail.com>
|
|
+# Copyright (c) 2014-2016, Linaro Limited. All rights reserved.
|
|
+# Copyright (c) 2011-2019, ARM Limited. All rights reserved.
|
|
+#
|
|
+# SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
+#
|
|
+#**/
|
|
+
|
|
+[Defines]
|
|
+ INF_VERSION = 0x0001001A
|
|
+ BASE_NAME = PlatformLib
|
|
+ FILE_GUID = db33b3d9-1c8c-4bd6-96bf-762e382e2b05
|
|
+ MODULE_TYPE = BASE
|
|
+ VERSION_STRING = 1.0
|
|
+ LIBRARY_CLASS = ArmPlatformLib|SEC PEIM
|
|
+
|
|
+[Packages]
|
|
+ MdePkg/MdePkg.dec
|
|
+ MdeModulePkg/MdeModulePkg.dec
|
|
+ EmbeddedPkg/EmbeddedPkg.dec
|
|
+ ArmPkg/ArmPkg.dec
|
|
+ ArmPlatformPkg/ArmPlatformPkg.dec
|
|
+ Silicon/Broadcom/Bcm283x/Bcm283x.dec
|
|
+ Platform/RaspberryPi/RaspberryPi.dec
|
|
+
|
|
+[LibraryClasses]
|
|
+ ArmLib
|
|
+ FdtLib
|
|
+ IoLib
|
|
+ MemoryAllocationLib
|
|
+ PcdLib
|
|
+ PrintLib
|
|
+ BoardInfoLib
|
|
+ BoardRevisionHelperLib
|
|
+
|
|
+[Sources.common]
|
|
+ RaspberryPi.c
|
|
+ RaspberryPiMem.c
|
|
+
|
|
+[Sources.AARCH64]
|
|
+ AArch64/RaspberryPiHelper.S
|
|
+
|
|
+[FixedPcd]
|
|
+ gArmTokenSpaceGuid.PcdFdBaseAddress
|
|
+ gArmTokenSpaceGuid.PcdFvBaseAddress
|
|
+ gRaspberryPiTokenSpaceGuid.PcdFdtBaseAddress
|
|
+ gRaspberryPiTokenSpaceGuid.PcdFdtSize
|
|
+ gArmPlatformTokenSpaceGuid.PcdCoreCount
|
|
+ gArmTokenSpaceGuid.PcdArmPrimaryCoreMask
|
|
+ gArmTokenSpaceGuid.PcdArmPrimaryCore
|
|
+ gArmTokenSpaceGuid.PcdFdSize
|
|
+ gEmbeddedTokenSpaceGuid.PcdDmaDeviceOffset
|
|
+ gArmTokenSpaceGuid.PcdSystemMemoryBase
|
|
+ gArmTokenSpaceGuid.PcdSystemMemorySize
|
|
+ gRaspberryPiTokenSpaceGuid.PcdNvStorageEventLogSize
|
|
+ gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize
|
|
+ gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize
|
|
+ gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize
|
|
+ gRaspberryPiTokenSpaceGuid.PcdFwMailboxBaseAddress
|
|
+
|
|
+[Ppis]
|
|
+ gArmMpCoreInfoPpiGuid
|
|
diff --git a/Platform/RaspberryPi/RPi5/Library/PlatformLib/RaspberryPi.c b/Platform/RaspberryPi/RPi5/Library/PlatformLib/RaspberryPi.c
|
|
new file mode 100644
|
|
index 00000000..1c0b88e8
|
|
--- /dev/null
|
|
+++ b/Platform/RaspberryPi/RPi5/Library/PlatformLib/RaspberryPi.c
|
|
@@ -0,0 +1,94 @@
|
|
+/** @file
|
|
+ *
|
|
+ * Copyright (c) 2023, Mario Bălănică <mariobalanica02@gmail.com>
|
|
+ * Copyright (c) 2014-2016, Linaro Limited. All rights reserved.
|
|
+ * Copyright (c) 2014, Red Hat, Inc.
|
|
+ * Copyright (c) 2011-2013, ARM Limited. All rights reserved.
|
|
+ *
|
|
+ *
|
|
+ * SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
+ *
|
|
+ **/
|
|
+
|
|
+#include <Library/IoLib.h>
|
|
+#include <Library/ArmPlatformLib.h>
|
|
+#include <Library/DebugLib.h>
|
|
+#include <Pi/PiBootMode.h>
|
|
+
|
|
+#include <Ppi/ArmMpCoreInfo.h>
|
|
+
|
|
+/**
|
|
+ Return the current Boot Mode
|
|
+
|
|
+ This function returns the boot reason on the platform
|
|
+
|
|
+ @return Return the current Boot Mode of the platform
|
|
+
|
|
+**/
|
|
+EFI_BOOT_MODE
|
|
+ArmPlatformGetBootMode (
|
|
+ VOID
|
|
+ )
|
|
+{
|
|
+ return BOOT_WITH_FULL_CONFIGURATION;
|
|
+}
|
|
+
|
|
+/**
|
|
+ This function is called by PrePeiCore, in the SEC phase.
|
|
+**/
|
|
+RETURN_STATUS
|
|
+ArmPlatformInitialize (
|
|
+ IN UINTN MpId
|
|
+ )
|
|
+{
|
|
+ return RETURN_SUCCESS;
|
|
+}
|
|
+
|
|
+VOID
|
|
+ArmPlatformInitializeSystemMemory (
|
|
+ VOID
|
|
+ )
|
|
+{
|
|
+}
|
|
+
|
|
+STATIC ARM_CORE_INFO mRpiInfoTable[] = {
|
|
+ { 0x000, }, // Cluster 0, Core 0
|
|
+ { 0x100, }, // Cluster 0, Core 1
|
|
+ { 0x200, }, // Cluster 0, Core 2
|
|
+ { 0x300, }, // Cluster 0, Core 3
|
|
+};
|
|
+
|
|
+STATIC
|
|
+EFI_STATUS
|
|
+PrePeiCoreGetMpCoreInfo (
|
|
+ OUT UINTN *CoreCount,
|
|
+ OUT ARM_CORE_INFO **ArmCoreTable
|
|
+ )
|
|
+{
|
|
+ // Only support one cluster
|
|
+ *CoreCount = sizeof (mRpiInfoTable) / sizeof (ARM_CORE_INFO);
|
|
+ *ArmCoreTable = mRpiInfoTable;
|
|
+
|
|
+ return EFI_SUCCESS;
|
|
+}
|
|
+
|
|
+STATIC ARM_MP_CORE_INFO_PPI mMpCoreInfoPpi = {
|
|
+ PrePeiCoreGetMpCoreInfo
|
|
+};
|
|
+STATIC EFI_PEI_PPI_DESCRIPTOR mPlatformPpiTable[] = {
|
|
+ {
|
|
+ EFI_PEI_PPI_DESCRIPTOR_PPI,
|
|
+ &gArmMpCoreInfoPpiGuid,
|
|
+ &mMpCoreInfoPpi
|
|
+ }
|
|
+};
|
|
+
|
|
+VOID
|
|
+ArmPlatformGetPlatformPpiList (
|
|
+ OUT UINTN *PpiListSize,
|
|
+ OUT EFI_PEI_PPI_DESCRIPTOR **PpiList
|
|
+ )
|
|
+{
|
|
+ *PpiListSize = sizeof (mPlatformPpiTable);
|
|
+ *PpiList = mPlatformPpiTable;
|
|
+}
|
|
diff --git a/Platform/RaspberryPi/RPi5/Library/PlatformLib/RaspberryPiMem.c b/Platform/RaspberryPi/RPi5/Library/PlatformLib/RaspberryPiMem.c
|
|
new file mode 100644
|
|
index 00000000..a31085d9
|
|
--- /dev/null
|
|
+++ b/Platform/RaspberryPi/RPi5/Library/PlatformLib/RaspberryPiMem.c
|
|
@@ -0,0 +1,178 @@
|
|
+/** @file
|
|
+ *
|
|
+ * Copyright (c) 2023, Mario Bălănică <mariobalanica02@gmail.com>
|
|
+ * Copyright (c) 2019, Pete Batard <pete@akeo.ie>
|
|
+ * Copyright (c) 2017-2018, Andrey Warkentin <andrey.warkentin@gmail.com>
|
|
+ * Copyright (c) 2014, Linaro Limited. All rights reserved.
|
|
+ * Copyright (c) 2013-2018, ARM Limited. All rights reserved.
|
|
+ *
|
|
+ * SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
+ *
|
|
+ **/
|
|
+
|
|
+#include <Library/ArmPlatformLib.h>
|
|
+#include <Library/DebugLib.h>
|
|
+#include <Library/MemoryAllocationLib.h>
|
|
+#include <Library/PcdLib.h>
|
|
+#include <Library/RPiMem.h>
|
|
+#include <Library/BoardInfoLib.h>
|
|
+#include <Library/BoardRevisionHelperLib.h>
|
|
+
|
|
+UINT64 mSystemMemoryBase;
|
|
+extern UINT64 mSystemMemoryEnd;
|
|
+
|
|
+// The total number of descriptors, including the final "end-of-table" descriptor.
|
|
+#define MAX_VIRTUAL_MEMORY_MAP_DESCRIPTORS 11
|
|
+
|
|
+STATIC BOOLEAN VirtualMemoryInfoInitialized = FALSE;
|
|
+STATIC RPI_MEMORY_REGION_INFO VirtualMemoryInfo[MAX_VIRTUAL_MEMORY_MAP_DESCRIPTORS];
|
|
+
|
|
+#define VariablesSize (FixedPcdGet32(PcdFlashNvStorageVariableSize) + \
|
|
+ FixedPcdGet32(PcdFlashNvStorageFtwWorkingSize) + \
|
|
+ FixedPcdGet32(PcdFlashNvStorageFtwSpareSize) + \
|
|
+ FixedPcdGet32(PcdNvStorageEventLogSize))
|
|
+
|
|
+#define VariablesBase (FixedPcdGet64(PcdFdBaseAddress) + \
|
|
+ FixedPcdGet32(PcdFdSize) - \
|
|
+ VariablesSize)
|
|
+
|
|
+/**
|
|
+ Return the Virtual Memory Map of your platform
|
|
+
|
|
+ This Virtual Memory Map is used by MemoryInitPei Module to initialize the MMU
|
|
+ on your platform.
|
|
+
|
|
+ @param[out] VirtualMemoryMap Array of ARM_MEMORY_REGION_DESCRIPTOR
|
|
+ describing a Physical-to-Virtual Memory
|
|
+ mapping. This array must be ended by a
|
|
+ zero-filled entry
|
|
+
|
|
+**/
|
|
+VOID
|
|
+ArmPlatformGetVirtualMemoryMap (
|
|
+ IN ARM_MEMORY_REGION_DESCRIPTOR** VirtualMemoryMap
|
|
+ )
|
|
+{
|
|
+ EFI_STATUS Status;
|
|
+ UINT32 RevisionCode = 0;
|
|
+ UINT64 TotalMemorySize;
|
|
+ UINTN Index = 0;
|
|
+ ARM_MEMORY_REGION_DESCRIPTOR *VirtualMemoryTable;
|
|
+
|
|
+ Status = BoardInfoGetRevisionCode (&RevisionCode);
|
|
+ if (EFI_ERROR (Status)) {
|
|
+ DEBUG ((DEBUG_ERROR, "%a: Failed to get board revision. Status=%r\n",
|
|
+ __func__, Status));
|
|
+ ASSERT (FALSE);
|
|
+ CpuDeadLoop ();
|
|
+ }
|
|
+
|
|
+ // Early output of the info we got from VideoCore can prove valuable.
|
|
+ DEBUG ((DEBUG_INFO, "Board Rev: 0x%lX\n", RevisionCode));
|
|
+ DEBUG ((DEBUG_INFO, "RAM < 1GB: 0x%ll08X (Size 0x%ll08X)\n", mSystemMemoryBase, mSystemMemoryEnd + 1));
|
|
+
|
|
+ ASSERT (mSystemMemoryBase == 0);
|
|
+ ASSERT (VirtualMemoryMap != NULL);
|
|
+
|
|
+ // Compute the total RAM size available on this platform
|
|
+ TotalMemorySize = BoardRevisionGetMemorySize (RevisionCode);
|
|
+ DEBUG ((DEBUG_INFO, "Total RAM: 0x%ll08X\n", TotalMemorySize));
|
|
+
|
|
+ VirtualMemoryTable = (ARM_MEMORY_REGION_DESCRIPTOR*)AllocatePages
|
|
+ (EFI_SIZE_TO_PAGES (sizeof (ARM_MEMORY_REGION_DESCRIPTOR) *
|
|
+ MAX_VIRTUAL_MEMORY_MAP_DESCRIPTORS));
|
|
+ if (VirtualMemoryTable == NULL) {
|
|
+ return;
|
|
+ }
|
|
+
|
|
+ // Firmware Volume
|
|
+ VirtualMemoryTable[Index].PhysicalBase = FixedPcdGet64 (PcdFdBaseAddress);
|
|
+ VirtualMemoryTable[Index].VirtualBase = VirtualMemoryTable[Index].PhysicalBase;
|
|
+ VirtualMemoryTable[Index].Length = FixedPcdGet32 (PcdFdSize) - VariablesSize;
|
|
+ VirtualMemoryTable[Index].Attributes = ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK;
|
|
+ VirtualMemoryInfo[Index].Type = RPI_MEM_RESERVED_REGION;
|
|
+ VirtualMemoryInfo[Index++].Name = L"FD";
|
|
+
|
|
+ // Variable Volume
|
|
+ VirtualMemoryTable[Index].PhysicalBase = VariablesBase;
|
|
+ VirtualMemoryTable[Index].VirtualBase = VirtualMemoryTable[Index].PhysicalBase;
|
|
+ VirtualMemoryTable[Index].Length = VariablesSize;
|
|
+ VirtualMemoryTable[Index].Attributes = ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK;
|
|
+ VirtualMemoryInfo[Index].Type = RPI_MEM_RUNTIME_REGION;
|
|
+ VirtualMemoryInfo[Index++].Name = L"FD Variables";
|
|
+
|
|
+ // DTB is expected to directly follow the FD.
|
|
+ VirtualMemoryTable[Index].PhysicalBase = FixedPcdGet32 (PcdFdtBaseAddress);
|
|
+ VirtualMemoryTable[Index].VirtualBase = VirtualMemoryTable[Index].PhysicalBase;
|
|
+ VirtualMemoryTable[Index].Length = FixedPcdGet32 (PcdFdtSize);
|
|
+ VirtualMemoryTable[Index].Attributes = ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK;
|
|
+ VirtualMemoryInfo[Index].Type = RPI_MEM_RESERVED_REGION;
|
|
+ VirtualMemoryInfo[Index++].Name = L"Flattened Device Tree";
|
|
+
|
|
+ // Base System RAM
|
|
+ VirtualMemoryTable[Index].PhysicalBase = FixedPcdGet64 (PcdSystemMemoryBase);
|
|
+ VirtualMemoryTable[Index].VirtualBase = VirtualMemoryTable[Index].PhysicalBase;
|
|
+ VirtualMemoryTable[Index].Length = mSystemMemoryEnd + 1 - FixedPcdGet64 (PcdSystemMemoryBase);
|
|
+ VirtualMemoryTable[Index].Attributes = ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK;
|
|
+ VirtualMemoryInfo[Index].Type = RPI_MEM_BASIC_REGION;
|
|
+ VirtualMemoryInfo[Index++].Name = L"System RAM < 1GB";
|
|
+
|
|
+ // GPU Reserved
|
|
+ VirtualMemoryTable[Index].PhysicalBase = mSystemMemoryEnd + 1;
|
|
+ VirtualMemoryTable[Index].VirtualBase = VirtualMemoryTable[Index].PhysicalBase;
|
|
+ VirtualMemoryTable[Index].Length = SIZE_1GB - VirtualMemoryTable[Index].PhysicalBase;
|
|
+ VirtualMemoryTable[Index].Attributes = ARM_MEMORY_REGION_ATTRIBUTE_DEVICE;
|
|
+ VirtualMemoryInfo[Index].Type = RPI_MEM_UNMAPPED_REGION;
|
|
+ VirtualMemoryInfo[Index++].Name = L"GPU Reserved";
|
|
+
|
|
+ // System RAM >= 1 GB
|
|
+ if (TotalMemorySize > SIZE_1GB) {
|
|
+ VirtualMemoryTable[Index].PhysicalBase = SIZE_1GB;
|
|
+ VirtualMemoryTable[Index].VirtualBase = VirtualMemoryTable[Index].PhysicalBase;
|
|
+ VirtualMemoryTable[Index].Length = TotalMemorySize - VirtualMemoryTable[Index].PhysicalBase;
|
|
+ VirtualMemoryTable[Index].Attributes = ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK;
|
|
+ VirtualMemoryInfo[Index].Type = RPI_MEM_BASIC_REGION;
|
|
+ VirtualMemoryInfo[Index++].Name = L"System RAM >= 1GB";
|
|
+ }
|
|
+
|
|
+ // SoC device registers
|
|
+ VirtualMemoryTable[Index].PhysicalBase = SIZE_64GB;
|
|
+ VirtualMemoryTable[Index].VirtualBase = VirtualMemoryTable[Index].PhysicalBase;
|
|
+ VirtualMemoryTable[Index].Length = SIZE_64GB;
|
|
+ VirtualMemoryTable[Index].Attributes = ARM_MEMORY_REGION_ATTRIBUTE_DEVICE;
|
|
+ VirtualMemoryInfo[Index].Type = RPI_MEM_UNMAPPED_REGION;
|
|
+ VirtualMemoryInfo[Index++].Name = L"MMIO";
|
|
+
|
|
+ // End of Table
|
|
+ VirtualMemoryTable[Index].PhysicalBase = 0;
|
|
+ VirtualMemoryTable[Index].VirtualBase = 0;
|
|
+ VirtualMemoryTable[Index].Length = 0;
|
|
+ VirtualMemoryTable[Index++].Attributes = (ARM_MEMORY_REGION_ATTRIBUTES)0;
|
|
+
|
|
+ ASSERT(Index <= MAX_VIRTUAL_MEMORY_MAP_DESCRIPTORS);
|
|
+
|
|
+ *VirtualMemoryMap = VirtualMemoryTable;
|
|
+ VirtualMemoryInfoInitialized = TRUE;
|
|
+}
|
|
+
|
|
+/**
|
|
+ Return additional memory info not populated by the above call.
|
|
+
|
|
+ This call should follow the one to ArmPlatformGetVirtualMemoryMap ().
|
|
+
|
|
+**/
|
|
+VOID
|
|
+RpiPlatformGetVirtualMemoryInfo (
|
|
+ IN RPI_MEMORY_REGION_INFO** MemoryInfo
|
|
+ )
|
|
+{
|
|
+ ASSERT (VirtualMemoryInfo != NULL);
|
|
+
|
|
+ if (!VirtualMemoryInfoInitialized) {
|
|
+ DEBUG ((DEBUG_ERROR,
|
|
+ "ArmPlatformGetVirtualMemoryMap must be called before RpiPlatformGetVirtualMemoryInfo.\n"));
|
|
+ return;
|
|
+ }
|
|
+
|
|
+ *MemoryInfo = VirtualMemoryInfo;
|
|
+}
|
|
diff --git a/Platform/RaspberryPi/RPi5/RPi5.dsc b/Platform/RaspberryPi/RPi5/RPi5.dsc
|
|
new file mode 100644
|
|
index 00000000..79aa4f1b
|
|
--- /dev/null
|
|
+++ b/Platform/RaspberryPi/RPi5/RPi5.dsc
|
|
@@ -0,0 +1,685 @@
|
|
+# @file
|
|
+#
|
|
+# Copyright (c) 2023, Mario Bălănică <mariobalanica02@gmail.com>
|
|
+# Copyright (c) 2011 - 2020, ARM Limited. All rights reserved.
|
|
+# Copyright (c) 2017 - 2018, Andrei Warkentin <andrey.warkentin@gmail.com>
|
|
+# Copyright (c) 2015 - 2021, Intel Corporation. All rights reserved.
|
|
+# Copyright (c) 2014, Linaro Limited. All rights reserved.
|
|
+#
|
|
+# SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
+#
|
|
+##
|
|
+
|
|
+################################################################################
|
|
+#
|
|
+# Defines Section - statements that will be processed to create a Makefile.
|
|
+#
|
|
+################################################################################
|
|
+[Defines]
|
|
+ PLATFORM_NAME = RPi5
|
|
+ PLATFORM_GUID = 4e8faa1b-1682-4dfc-8204-2e316a14b7ec
|
|
+ PLATFORM_VERSION = 1.0
|
|
+ DSC_SPECIFICATION = 0x0001001A
|
|
+ OUTPUT_DIRECTORY = Build/$(PLATFORM_NAME)
|
|
+ SUPPORTED_ARCHITECTURES = AARCH64
|
|
+ BUILD_TARGETS = DEBUG|RELEASE|NOOPT
|
|
+ SKUID_IDENTIFIER = DEFAULT
|
|
+ FLASH_DEFINITION = Platform/RaspberryPi/$(PLATFORM_NAME)/$(PLATFORM_NAME).fdf
|
|
+
|
|
+ #
|
|
+ # Defines for default states. These can be changed on the command line.
|
|
+ # -D FLAG=VALUE
|
|
+ #
|
|
+ DEFINE SECURE_BOOT_ENABLE = FALSE
|
|
+ DEFINE INCLUDE_TFTP_COMMAND = FALSE
|
|
+ DEFINE DEBUG_PRINT_ERROR_LEVEL = 0x8000004F
|
|
+
|
|
+!ifndef TFA_BUILD_ARTIFACTS
|
|
+ #
|
|
+ # Default TF-A binary checked into edk2-non-osi.
|
|
+ #
|
|
+ DEFINE TFA_BUILD_BL31 = Platform/RaspberryPi/$(PLATFORM_NAME)/TrustedFirmware/bl31.bin
|
|
+!else
|
|
+ #
|
|
+ # Usually we use the checked-in binaries, but for developers working
|
|
+ # on the firmware, being able to use a local TF-A build without extra copy
|
|
+ # operations ends up being very helpful.
|
|
+ #
|
|
+ DEFINE TFA_BUILD_BL31 = $(TFA_BUILD_ARTIFACTS)/bl31.bin
|
|
+!endif
|
|
+
|
|
+################################################################################
|
|
+#
|
|
+# Library Class section - list of all Library Classes needed by this Platform.
|
|
+#
|
|
+################################################################################
|
|
+
|
|
+!include MdePkg/MdeLibs.dsc.inc
|
|
+
|
|
+[LibraryClasses.common]
|
|
+!if $(TARGET) == RELEASE
|
|
+ DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf
|
|
+!else
|
|
+ DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
|
|
+!endif
|
|
+ DebugPrintErrorLevelLib|MdePkg/Library/BaseDebugPrintErrorLevelLib/BaseDebugPrintErrorLevelLib.inf
|
|
+
|
|
+ BaseLib|MdePkg/Library/BaseLib/BaseLib.inf
|
|
+ SafeIntLib|MdePkg/Library/BaseSafeIntLib/BaseSafeIntLib.inf
|
|
+ BmpSupportLib|MdeModulePkg/Library/BaseBmpSupportLib/BaseBmpSupportLib.inf
|
|
+ SynchronizationLib|MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf
|
|
+ PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf
|
|
+ ReportStatusCodeLib|MdePkg/Library/BaseReportStatusCodeLibNull/BaseReportStatusCodeLibNull.inf
|
|
+ PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf
|
|
+ PeCoffGetEntryPointLib|MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.inf
|
|
+ PeCoffLib|MdePkg/Library/BasePeCoffLib/BasePeCoffLib.inf
|
|
+ IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf
|
|
+ UefiDecompressLib|MdePkg/Library/BaseUefiDecompressLib/BaseUefiDecompressLib.inf
|
|
+ CpuLib|MdePkg/Library/BaseCpuLib/BaseCpuLib.inf
|
|
+
|
|
+ UefiLib|MdePkg/Library/UefiLib/UefiLib.inf
|
|
+ HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf
|
|
+ UefiRuntimeServicesTableLib|MdePkg/Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf
|
|
+ DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf
|
|
+ UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBootServicesTableLib.inf
|
|
+ DxeServicesTableLib|MdePkg/Library/DxeServicesTableLib/DxeServicesTableLib.inf
|
|
+ DxeServicesLib|MdePkg/Library/DxeServicesLib/DxeServicesLib.inf
|
|
+ UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntryPoint.inf
|
|
+ UefiApplicationEntryPoint|MdePkg/Library/UefiApplicationEntryPoint/UefiApplicationEntryPoint.inf
|
|
+ HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf
|
|
+ UefiHiiServicesLib|MdeModulePkg/Library/UefiHiiServicesLib/UefiHiiServicesLib.inf
|
|
+ SortLib|MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf
|
|
+ ImagePropertiesRecordLib|MdeModulePkg/Library/ImagePropertiesRecordLib/ImagePropertiesRecordLib.inf
|
|
+
|
|
+ UefiRuntimeLib|MdePkg/Library/UefiRuntimeLib/UefiRuntimeLib.inf
|
|
+ OrderedCollectionLib|MdePkg/Library/BaseOrderedCollectionRedBlackTreeLib/BaseOrderedCollectionRedBlackTreeLib.inf
|
|
+
|
|
+ #
|
|
+ # Ramdisk Requirements
|
|
+ #
|
|
+ FileExplorerLib|MdeModulePkg/Library/FileExplorerLib/FileExplorerLib.inf
|
|
+
|
|
+ # Allow dynamic PCDs
|
|
+ #
|
|
+ PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
|
|
+
|
|
+ # use the accelerated BaseMemoryLibOptDxe by default, overrides for SEC/PEI below
|
|
+ BaseMemoryLib|MdePkg/Library/BaseMemoryLibOptDxe/BaseMemoryLibOptDxe.inf
|
|
+
|
|
+ #
|
|
+ # It is not possible to prevent the ARM compiler from inserting calls to intrinsic functions.
|
|
+ # This library provides the instrinsic functions such a compiler may generate calls to.
|
|
+ #
|
|
+ NULL|ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf
|
|
+
|
|
+ # Add support for GCC stack protector
|
|
+ NULL|MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.inf
|
|
+
|
|
+ # ARM Architectural Libraries
|
|
+ CacheMaintenanceLib|ArmPkg/Library/ArmCacheMaintenanceLib/ArmCacheMaintenanceLib.inf
|
|
+ DefaultExceptionHandlerLib|ArmPkg/Library/DefaultExceptionHandlerLib/DefaultExceptionHandlerLib.inf
|
|
+ CpuExceptionHandlerLib|ArmPkg/Library/ArmExceptionLib/ArmExceptionLib.inf
|
|
+ ArmDisassemblerLib|ArmPkg/Library/ArmDisassemblerLib/ArmDisassemblerLib.inf
|
|
+ ArmGicLib|ArmPkg/Drivers/ArmGic/ArmGicLib.inf
|
|
+ ArmGicArchLib|ArmPkg/Library/ArmGicArchLib/ArmGicArchLib.inf
|
|
+ DmaLib|EmbeddedPkg/Library/NonCoherentDmaLib/NonCoherentDmaLib.inf
|
|
+ TimeBaseLib|EmbeddedPkg/Library/TimeBaseLib/TimeBaseLib.inf
|
|
+ ArmPlatformStackLib|ArmPlatformPkg/Library/ArmPlatformStackLib/ArmPlatformStackLib.inf
|
|
+ ArmSmcLib|ArmPkg/Library/ArmSmcLib/ArmSmcLib.inf
|
|
+ ArmHvcLib|ArmPkg/Library/ArmHvcLib/ArmHvcLib.inf
|
|
+ ArmGenericTimerCounterLib|ArmPkg/Library/ArmGenericTimerPhyCounterLib/ArmGenericTimerPhyCounterLib.inf
|
|
+
|
|
+ # Dual serial port library
|
|
+ PL011UartClockLib|ArmPlatformPkg/Library/PL011UartClockLib/PL011UartClockLib.inf
|
|
+ PL011UartLib|ArmPlatformPkg/Library/PL011UartLib/PL011UartLib.inf
|
|
+ SerialPortLib|ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortLib.inf
|
|
+
|
|
+ # Cryptographic libraries
|
|
+ RngLib|MdePkg/Library/DxeRngLib/DxeRngLib.inf
|
|
+ IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf
|
|
+ BaseCryptLib|CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf
|
|
+ OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf
|
|
+ TlsLib|CryptoPkg/Library/TlsLib/TlsLib.inf
|
|
+
|
|
+ #
|
|
+ # Uncomment (and comment out the next line) For RealView Debugger. The Standard IO window
|
|
+ # in the debugger will show load and unload commands for symbols. You can cut and paste this
|
|
+ # into the command window to load symbols. We should be able to use a script to do this, but
|
|
+ # the version of RVD I have does not support scripts accessing system memory.
|
|
+ #
|
|
+ #PeCoffExtraActionLib|ArmPkg/Library/RvdPeCoffExtraActionLib/RvdPeCoffExtraActionLib.inf
|
|
+ PeCoffExtraActionLib|ArmPkg/Library/DebugPeCoffExtraActionLib/DebugPeCoffExtraActionLib.inf
|
|
+ #PeCoffExtraActionLib|MdePkg/Library/BasePeCoffExtraActionLibNull/BasePeCoffExtraActionLibNull.inf
|
|
+
|
|
+ DebugAgentLib|MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.inf
|
|
+ DebugAgentTimerLib|EmbeddedPkg/Library/DebugAgentTimerLibNull/DebugAgentTimerLibNull.inf
|
|
+
|
|
+ # Flattened Device Tree (FDT) access library
|
|
+ FdtLib|EmbeddedPkg/Library/FdtLib/FdtLib.inf
|
|
+
|
|
+ # USB Libraries
|
|
+ UefiUsbLib|MdePkg/Library/UefiUsbLib/UefiUsbLib.inf
|
|
+
|
|
+ #
|
|
+ # Secure Boot dependencies
|
|
+ #
|
|
+!if $(SECURE_BOOT_ENABLE) == TRUE
|
|
+ TpmMeasurementLib|SecurityPkg/Library/DxeTpmMeasurementLib/DxeTpmMeasurementLib.inf
|
|
+ AuthVariableLib|SecurityPkg/Library/AuthVariableLib/AuthVariableLib.inf
|
|
+ SecureBootVariableLib|SecurityPkg/Library/SecureBootVariableLib/SecureBootVariableLib.inf
|
|
+ SecureBootVariableProvisionLib|SecurityPkg/Library/SecureBootVariableProvisionLib/SecureBootVariableProvisionLib.inf
|
|
+ PlatformPKProtectionLib|SecurityPkg/Library/PlatformPKProtectionLibVarPolicy/PlatformPKProtectionLibVarPolicy.inf
|
|
+
|
|
+ # re-use the UserPhysicalPresent() dummy implementation from the ovmf tree
|
|
+ PlatformSecureLib|OvmfPkg/Library/PlatformSecureLib/PlatformSecureLib.inf
|
|
+!else
|
|
+ TpmMeasurementLib|MdeModulePkg/Library/TpmMeasurementLibNull/TpmMeasurementLibNull.inf
|
|
+ AuthVariableLib|MdeModulePkg/Library/AuthVariableLibNull/AuthVariableLibNull.inf
|
|
+!endif
|
|
+ VarCheckLib|MdeModulePkg/Library/VarCheckLib/VarCheckLib.inf
|
|
+ VariableFlashInfoLib|MdeModulePkg/Library/BaseVariableFlashInfoLib/BaseVariableFlashInfoLib.inf
|
|
+ VariablePolicyLib|MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf
|
|
+ VariablePolicyHelperLib|MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf
|
|
+ GpioLib|Silicon/Broadcom/Bcm283x/Library/GpioLib/GpioLib.inf
|
|
+
|
|
+ FdtPlatformLib|Platform/RaspberryPi/Library/FdtPlatformLib/FdtPlatformLib.inf
|
|
+ BoardInfoLib|Platform/RaspberryPi/Library/BoardInfoLib/BoardInfoLib.inf
|
|
+ BoardRevisionHelperLib|Platform/RaspberryPi/Library/BoardRevisionHelperLib/BoardRevisionHelperLib.inf
|
|
+
|
|
+[LibraryClasses.common.SEC]
|
|
+ PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
|
|
+ BaseMemoryLib|MdePkg/Library/BaseMemoryLib/BaseMemoryLib.inf
|
|
+ MemoryInitPeiLib|Platform/RaspberryPi/Library/MemoryInitPeiLib/MemoryInitPeiLib.inf
|
|
+ PlatformPeiLib|ArmPlatformPkg/PlatformPei/PlatformPeiLib.inf
|
|
+ ExtractGuidedSectionLib|EmbeddedPkg/Library/PrePiExtractGuidedSectionLib/PrePiExtractGuidedSectionLib.inf
|
|
+ LzmaDecompressLib|MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf
|
|
+ PrePiLib|EmbeddedPkg/Library/PrePiLib/PrePiLib.inf
|
|
+ HobLib|EmbeddedPkg/Library/PrePiHobLib/PrePiHobLib.inf
|
|
+ PrePiHobListPointerLib|ArmPlatformPkg/Library/PrePiHobListPointerLib/PrePiHobListPointerLib.inf
|
|
+ MemoryAllocationLib|EmbeddedPkg/Library/PrePiMemoryAllocationLib/PrePiMemoryAllocationLib.inf
|
|
+
|
|
+[LibraryClasses.common.DXE_CORE]
|
|
+ HobLib|MdePkg/Library/DxeCoreHobLib/DxeCoreHobLib.inf
|
|
+ MemoryAllocationLib|MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationLib.inf
|
|
+ DxeCoreEntryPoint|MdePkg/Library/DxeCoreEntryPoint/DxeCoreEntryPoint.inf
|
|
+ ExtractGuidedSectionLib|MdePkg/Library/DxeExtractGuidedSectionLib/DxeExtractGuidedSectionLib.inf
|
|
+ PerformanceLib|MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf
|
|
+
|
|
+[LibraryClasses.common.DXE_DRIVER]
|
|
+ SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf
|
|
+ PerformanceLib|MdeModulePkg/Library/DxePerformanceLib/DxePerformanceLib.inf
|
|
+ MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf
|
|
+!if $(INCLUDE_TFTP_COMMAND) == TRUE
|
|
+ ShellLib|ShellPkg/Library/UefiShellLib/UefiShellLib.inf
|
|
+ FileHandleLib|MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.inf
|
|
+!endif
|
|
+
|
|
+[LibraryClasses.common.UEFI_APPLICATION]
|
|
+ PerformanceLib|MdeModulePkg/Library/DxePerformanceLib/DxePerformanceLib.inf
|
|
+ MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf
|
|
+ HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf
|
|
+ ShellLib|ShellPkg/Library/UefiShellLib/UefiShellLib.inf
|
|
+ FileHandleLib|MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.inf
|
|
+
|
|
+[LibraryClasses.common.UEFI_DRIVER]
|
|
+ ExtractGuidedSectionLib|MdePkg/Library/DxeExtractGuidedSectionLib/DxeExtractGuidedSectionLib.inf
|
|
+ PerformanceLib|MdeModulePkg/Library/DxePerformanceLib/DxePerformanceLib.inf
|
|
+ MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf
|
|
+
|
|
+[LibraryClasses.common.DXE_RUNTIME_DRIVER]
|
|
+ # Runtime debug messages may crash an OS unless serial output to MMIO mapped UARTs is inhibited
|
|
+ DebugLib|MdePkg/Library/DxeRuntimeDebugLibSerialPort/DxeRuntimeDebugLibSerialPort.inf
|
|
+ MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf
|
|
+ CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf
|
|
+ EfiResetSystemLib|Platform/RaspberryPi/Library/ResetLib/ResetLib.inf
|
|
+ ArmSmcLib|ArmPkg/Library/ArmSmcLib/ArmSmcLib.inf
|
|
+ VariablePolicyLib|MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf
|
|
+
|
|
+!if $(SECURE_BOOT_ENABLE) == TRUE
|
|
+ BaseCryptLib|CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf
|
|
+!endif
|
|
+
|
|
+###################################################################################################
|
|
+# BuildOptions Section - Define the module specific tool chain flags that should be used as
|
|
+# the default flags for a module. These flags are appended to any
|
|
+# standard flags that are defined by the build process.
|
|
+###################################################################################################
|
|
+
|
|
+[BuildOptions]
|
|
+ GCC:*_*_*_CC_FLAGS = -DRPI_MODEL=5
|
|
+ GCC:*_*_*_PP_FLAGS = -DRPI_MODEL=5
|
|
+ GCC:*_*_*_ASLPP_FLAGS = -DRPI_MODEL=5
|
|
+ GCC:*_*_*_ASLCC_FLAGS = -DRPI_MODEL=5
|
|
+ GCC:*_*_*_VFRPP_FLAGS = -DRPI_MODEL=5
|
|
+ GCC:RELEASE_*_*_CC_FLAGS = -DMDEPKG_NDEBUG -DNDEBUG
|
|
+
|
|
+[BuildOptions.common.EDKII.DXE_RUNTIME_DRIVER]
|
|
+ GCC:*_*_AARCH64_DLINK_FLAGS = -z common-page-size=0x10000
|
|
+
|
|
+################################################################################
|
|
+#
|
|
+# Pcd Section - list of all EDK II PCD Entries defined by this Platform
|
|
+#
|
|
+################################################################################
|
|
+
|
|
+[PcdsFeatureFlag.common]
|
|
+ # Use the Vector Table location in CpuDxe. We will not copy the Vector Table at PcdCpuVectorBaseAddress
|
|
+ gArmTokenSpaceGuid.PcdRelocateVectorTable|FALSE
|
|
+
|
|
+ gEmbeddedTokenSpaceGuid.PcdPrePiProduceMemoryTypeInformationHob|TRUE
|
|
+ gEfiMdeModulePkgTokenSpaceGuid.PcdTurnOffUsbLegacySupport|TRUE
|
|
+
|
|
+ ## If TRUE, Graphics Output Protocol will be installed on virtual handle created by ConsplitterDxe.
|
|
+ # It could be set FALSE to save size.
|
|
+ gEfiMdeModulePkgTokenSpaceGuid.PcdConOutGopSupport|TRUE
|
|
+ gEfiMdeModulePkgTokenSpaceGuid.PcdConOutUgaSupport|FALSE
|
|
+ gEfiMdePkgTokenSpaceGuid.PcdUgaConsumeSupport|FALSE
|
|
+
|
|
+[PcdsFixedAtBuild.common]
|
|
+ gEfiMdePkgTokenSpaceGuid.PcdMaximumUnicodeStringLength|1000000
|
|
+ gEfiMdePkgTokenSpaceGuid.PcdMaximumAsciiStringLength|1000000
|
|
+ gEfiMdePkgTokenSpaceGuid.PcdMaximumLinkedListLength|1000000
|
|
+ gEfiMdePkgTokenSpaceGuid.PcdSpinLockTimeout|10000000
|
|
+ gEfiMdePkgTokenSpaceGuid.PcdDebugClearMemoryValue|0xAF
|
|
+ gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask|1
|
|
+ gEfiMdePkgTokenSpaceGuid.PcdPostCodePropertyMask|0
|
|
+ gEfiMdePkgTokenSpaceGuid.PcdUefiLibMaxPrintBufferSize|320
|
|
+
|
|
+ # DEBUG_ASSERT_ENABLED 0x01
|
|
+ # DEBUG_PRINT_ENABLED 0x02
|
|
+ # DEBUG_CODE_ENABLED 0x04
|
|
+ # CLEAR_MEMORY_ENABLED 0x08
|
|
+ # ASSERT_BREAKPOINT_ENABLED 0x10
|
|
+ # ASSERT_DEADLOOP_ENABLED 0x20
|
|
+!if $(TARGET) == RELEASE
|
|
+ gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x21
|
|
+!else
|
|
+ gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x2f
|
|
+!endif
|
|
+
|
|
+ # DEBUG_INIT 0x00000001 // Initialization
|
|
+ # DEBUG_WARN 0x00000002 // Warnings
|
|
+ # DEBUG_LOAD 0x00000004 // Load events
|
|
+ # DEBUG_FS 0x00000008 // EFI File system
|
|
+ # DEBUG_POOL 0x00000010 // Alloc & Free (pool)
|
|
+ # DEBUG_PAGE 0x00000020 // Alloc & Free (page)
|
|
+ # DEBUG_INFO 0x00000040 // Informational debug messages
|
|
+ # DEBUG_DISPATCH 0x00000080 // PEI/DXE/SMM Dispatchers
|
|
+ # DEBUG_VARIABLE 0x00000100 // Variable
|
|
+ # DEBUG_BM 0x00000400 // Boot Manager
|
|
+ # DEBUG_BLKIO 0x00001000 // BlkIo Driver
|
|
+ # DEBUG_NET 0x00004000 // SNP Driver
|
|
+ # DEBUG_UNDI 0x00010000 // UNDI Driver
|
|
+ # DEBUG_LOADFILE 0x00020000 // LoadFile
|
|
+ # DEBUG_EVENT 0x00080000 // Event messages
|
|
+ # DEBUG_GCD 0x00100000 // Global Coherency Database changes
|
|
+ # DEBUG_CACHE 0x00200000 // Memory range cachability changes
|
|
+ # DEBUG_VERBOSE 0x00400000 // Detailed debug messages that may
|
|
+ # // significantly impact boot performance
|
|
+ # DEBUG_ERROR 0x80000000 // Error
|
|
+ gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|$(DEBUG_PRINT_ERROR_LEVEL)
|
|
+
|
|
+ gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x07
|
|
+
|
|
+ #
|
|
+ # Optional feature to help prevent EFI memory map fragments
|
|
+ # Turned on and off via: PcdPrePiProduceMemoryTypeInformationHob
|
|
+ # Values are in EFI Pages (4K). DXE Core will make sure that
|
|
+ # at least this much of each type of memory can be allocated
|
|
+ # from a single memory range. This way you only end up with
|
|
+ # maximum of two fragments for each type in the memory map
|
|
+ # (the memory used, and the free memory that was prereserved
|
|
+ # but not used).
|
|
+ #
|
|
+ gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiACPIReclaimMemory|0
|
|
+ gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiACPIMemoryNVS|0
|
|
+ gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiReservedMemoryType|0
|
|
+!if $(SECURE_BOOT_ENABLE) == TRUE
|
|
+ gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiRuntimeServicesData|600
|
|
+ gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiRuntimeServicesCode|400
|
|
+ gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiBootServicesCode|1500
|
|
+!else
|
|
+ gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiRuntimeServicesData|300
|
|
+ gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiRuntimeServicesCode|150
|
|
+ gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiBootServicesCode|1000
|
|
+!endif
|
|
+ gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiBootServicesData|12000
|
|
+ gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiLoaderCode|20
|
|
+ gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiLoaderData|0
|
|
+
|
|
+ gEmbeddedTokenSpaceGuid.PcdDmaDeviceOffset|0xc0000000
|
|
+ gEmbeddedTokenSpaceGuid.PcdDmaDeviceLimit|0xffffffff
|
|
+
|
|
+ gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareVersionString|L"EDK2-DEV"
|
|
+
|
|
+!if $(SECURE_BOOT_ENABLE) == TRUE
|
|
+ # override the default values from SecurityPkg to ensure images from all sources are verified in secure boot
|
|
+ gEfiSecurityPkgTokenSpaceGuid.PcdOptionRomImageVerificationPolicy|0x04
|
|
+ gEfiSecurityPkgTokenSpaceGuid.PcdFixedMediaImageVerificationPolicy|0x04
|
|
+ gEfiSecurityPkgTokenSpaceGuid.PcdRemovableMediaImageVerificationPolicy|0x04
|
|
+!endif
|
|
+
|
|
+ gEfiNetworkPkgTokenSpaceGuid.PcdAllowHttpConnections|TRUE
|
|
+
|
|
+ # Default platform supported RFC 4646 languages: (American) English
|
|
+ gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultPlatformLangCodes|"en-US"
|
|
+
|
|
+[LibraryClasses.common]
|
|
+ ArmLib|ArmPkg/Library/ArmLib/ArmBaseLib.inf
|
|
+ ArmMmuLib|ArmPkg/Library/ArmMmuLib/ArmMmuBaseLib.inf
|
|
+ ArmPlatformLib|Platform/RaspberryPi/RPi5/Library/PlatformLib/PlatformLib.inf
|
|
+ TimerLib|ArmPkg/Library/ArmArchTimerLib/ArmArchTimerLib.inf
|
|
+ CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf
|
|
+ UefiBootManagerLib|MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf
|
|
+ BootLogoLib|MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf
|
|
+ PlatformBootManagerLib|Platform/RaspberryPi/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
|
|
+ CustomizedDisplayLib|MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf
|
|
+ FileExplorerLib|MdeModulePkg/Library/FileExplorerLib/FileExplorerLib.inf
|
|
+ AcpiLib|EmbeddedPkg/Library/AcpiLib/AcpiLib.inf
|
|
+
|
|
+[LibraryClasses.common.UEFI_DRIVER]
|
|
+ UefiScsiLib|MdePkg/Library/UefiScsiLib/UefiScsiLib.inf
|
|
+
|
|
+################################################################################
|
|
+#
|
|
+# Pcd Section - list of all EDK II PCD Entries defined by this Platform
|
|
+#
|
|
+################################################################################
|
|
+
|
|
+[PcdsFeatureFlag.common]
|
|
+ gEfiMdeModulePkgTokenSpaceGuid.PcdConOutGopSupport|TRUE
|
|
+ gEfiMdeModulePkgTokenSpaceGuid.PcdConOutUgaSupport|FALSE
|
|
+ gEfiMdeModulePkgTokenSpaceGuid.PcdInstallAcpiSdtProtocol|TRUE
|
|
+
|
|
+[PcdsFixedAtBuild.common]
|
|
+ gArmPlatformTokenSpaceGuid.PcdCoreCount|4
|
|
+ gArmTokenSpaceGuid.PcdVFPEnabled|1
|
|
+
|
|
+ gArmPlatformTokenSpaceGuid.PcdCPUCorePrimaryStackSize|0x4000
|
|
+ gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize|0x2000
|
|
+ gEfiMdeModulePkgTokenSpaceGuid.PcdMaxAuthVariableSize|0x2800
|
|
+
|
|
+ # Size of the region used by UEFI in permanent memory (Reserved 64MB)
|
|
+ gArmPlatformTokenSpaceGuid.PcdSystemMemoryUefiRegionSize|0x04000000
|
|
+ #
|
|
+ # 0x00000000 - 0x001F0000 FD (PcdFdBaseAddress, PcdFdSize)
|
|
+ # 0x001F0000 - 0x00210000 DTB (PcdFdtBaseAddress, PcdFdtSize)
|
|
+ # 0x00210000 - ... RAM (PcdSystemMemoryBase, PcdSystemMemorySize)
|
|
+ #
|
|
+ gArmTokenSpaceGuid.PcdSystemMemoryBase|0x00210000
|
|
+ gArmTokenSpaceGuid.PcdSystemMemorySize|0x3fdf0000
|
|
+
|
|
+ gRaspberryPiTokenSpaceGuid.PcdFdtSize|0x20000
|
|
+
|
|
+ # UARTs
|
|
+ gArmPlatformTokenSpaceGuid.PL011UartClkInHz|44000000
|
|
+ gEfiMdePkgTokenSpaceGuid.PcdUartDefaultBaudRate|115200
|
|
+ gEfiMdeModulePkgTokenSpaceGuid.PcdSerialRegisterBase|0x107d001000
|
|
+
|
|
+ #
|
|
+ # ARM General Interrupt Controller
|
|
+ #
|
|
+ gArmTokenSpaceGuid.PcdGicDistributorBase|0x107fff9000
|
|
+ gArmTokenSpaceGuid.PcdGicInterruptInterfaceBase|0x107fffa000
|
|
+ gRaspberryPiTokenSpaceGuid.PcdGicInterruptInterfaceHBase|0x107fffc000
|
|
+ gRaspberryPiTokenSpaceGuid.PcdGicInterruptInterfaceVBase|0x107fffe000
|
|
+ gRaspberryPiTokenSpaceGuid.PcdGicGsivId|0x19
|
|
+ gRaspberryPiTokenSpaceGuid.PcdGicPmuIrq0|0x30
|
|
+ gRaspberryPiTokenSpaceGuid.PcdGicPmuIrq1|0x31
|
|
+ gRaspberryPiTokenSpaceGuid.PcdGicPmuIrq2|0x32
|
|
+ gRaspberryPiTokenSpaceGuid.PcdGicPmuIrq3|0x33
|
|
+
|
|
+ #
|
|
+ # Mailbox
|
|
+ #
|
|
+ gRaspberryPiTokenSpaceGuid.PcdFwMailboxBaseAddress|0x107c013880
|
|
+
|
|
+ ## Default Terminal Type
|
|
+ ## 0-PCANSI, 1-VT100, 2-VT00+, 3-UTF8, 4-TTYTERM
|
|
+ gEfiMdePkgTokenSpaceGuid.PcdDefaultTerminalType|4
|
|
+
|
|
+ gEfiMdeModulePkgTokenSpaceGuid.PcdResetOnMemoryTypeInformationChange|FALSE
|
|
+ gEfiMdeModulePkgTokenSpaceGuid.PcdBootManagerMenuFile|{ 0x21, 0xaa, 0x2c, 0x46, 0x14, 0x76, 0x03, 0x45, 0x83, 0x6e, 0x8a, 0xb6, 0xf4, 0x66, 0x23, 0x31 }
|
|
+
|
|
+ gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareVendor|L"EDK2"
|
|
+ gEfiMdeModulePkgTokenSpaceGuid.PcdSetNxForStack|TRUE
|
|
+
|
|
+[PcdsDynamicHii.common.DEFAULT]
|
|
+ #
|
|
+ # Display-related.
|
|
+ #
|
|
+
|
|
+ #
|
|
+ # Just enable native resolution by default.
|
|
+ #
|
|
+ gRaspberryPiTokenSpaceGuid.PcdDisplayEnableScaledVModes|L"DisplayEnableScaledVModes"|gConfigDxeFormSetGuid|0x0|0x20
|
|
+ gRaspberryPiTokenSpaceGuid.PcdDisplayEnableSShot|L"DisplayEnableSShot"|gConfigDxeFormSetGuid|0x0|1
|
|
+
|
|
+ #
|
|
+ # Reset-related.
|
|
+ #
|
|
+ gRaspberryPiTokenSpaceGuid.PcdPlatformResetDelay|L"ResetDelay"|gRaspberryPiTokenSpaceGuid|0x0|0
|
|
+
|
|
+ #
|
|
+ # Common UEFI ones.
|
|
+ #
|
|
+ gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut|L"Timeout"|gEfiGlobalVariableGuid|0x0|5
|
|
+ #
|
|
+ # This is silly, but by pointing SetupConXXX and ConXXX PCDs to
|
|
+ # the same variables, I can use the graphical configuration to
|
|
+ # change the mode used by ConSplitter.
|
|
+ #
|
|
+ gEfiMdeModulePkgTokenSpaceGuid.PcdSetupConOutColumn|L"Columns"|gRaspberryPiTokenSpaceGuid|0x0|80
|
|
+ gEfiMdeModulePkgTokenSpaceGuid.PcdConOutColumn|L"Columns"|gRaspberryPiTokenSpaceGuid|0x0|80
|
|
+ gEfiMdeModulePkgTokenSpaceGuid.PcdSetupConOutRow|L"Rows"|gRaspberryPiTokenSpaceGuid|0x0|25
|
|
+ gEfiMdeModulePkgTokenSpaceGuid.PcdConOutRow|L"Rows"|gRaspberryPiTokenSpaceGuid|0x0|25
|
|
+ gEfiMdeModulePkgTokenSpaceGuid.PcdBootDiscoveryPolicy|L"BootDiscoveryPolicy"|gBootDiscoveryPolicyMgrFormsetGuid|0
|
|
+
|
|
+[PcdsDynamicDefault.common]
|
|
+ #
|
|
+ # Set video resolution for boot options and for text setup.
|
|
+ #
|
|
+ gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution|0
|
|
+ gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution|0
|
|
+ gEfiMdeModulePkgTokenSpaceGuid.PcdSetupVideoHorizontalResolution|640
|
|
+ gEfiMdeModulePkgTokenSpaceGuid.PcdSetupVideoVerticalResolution|480
|
|
+ gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64|0
|
|
+ gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase|0
|
|
+ gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|0
|
|
+
|
|
+################################################################################
|
|
+#
|
|
+# Components Section - list of all EDK II Modules needed by this Platform
|
|
+#
|
|
+################################################################################
|
|
+[Components.common]
|
|
+ #
|
|
+ # PEI Phase modules
|
|
+ #
|
|
+ ArmPlatformPkg/PrePi/PeiUniCore.inf
|
|
+
|
|
+ #
|
|
+ # DXE
|
|
+ #
|
|
+ MdeModulePkg/Core/Dxe/DxeMain.inf {
|
|
+ <LibraryClasses>
|
|
+ NULL|MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.inf
|
|
+ }
|
|
+ MdeModulePkg/Universal/PCD/Dxe/Pcd.inf {
|
|
+ <LibraryClasses>
|
|
+ PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
|
|
+ }
|
|
+
|
|
+ #
|
|
+ # Architectural Protocols
|
|
+ #
|
|
+ ArmPkg/Drivers/CpuDxe/CpuDxe.inf
|
|
+ MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
|
|
+ Platform/RaspberryPi/Drivers/VarBlockServiceDxe/VarBlockServiceDxe.inf
|
|
+ MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf
|
|
+ MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf {
|
|
+ <LibraryClasses>
|
|
+ NULL|MdeModulePkg/Library/VarCheckUefiLib/VarCheckUefiLib.inf
|
|
+ DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf
|
|
+ }
|
|
+!if $(SECURE_BOOT_ENABLE) == TRUE
|
|
+ MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf {
|
|
+ <LibraryClasses>
|
|
+ NULL|SecurityPkg/Library/DxeImageVerificationLib/DxeImageVerificationLib.inf
|
|
+ }
|
|
+ SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigDxe.inf
|
|
+ SecurityPkg/EnrollFromDefaultKeysApp/EnrollFromDefaultKeysApp.inf
|
|
+ SecurityPkg/VariableAuthenticated/SecureBootDefaultKeysDxe/SecureBootDefaultKeysDxe.inf
|
|
+!else
|
|
+ MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
|
|
+!endif
|
|
+ MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf
|
|
+ MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf
|
|
+ EmbeddedPkg/ResetRuntimeDxe/ResetRuntimeDxe.inf
|
|
+ EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf {
|
|
+ <LibraryClasses>
|
|
+ RealTimeClockLib|EmbeddedPkg/Library/VirtualRealTimeClockLib/VirtualRealTimeClockLib.inf
|
|
+ }
|
|
+ EmbeddedPkg/MetronomeDxe/MetronomeDxe.inf
|
|
+
|
|
+ MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf
|
|
+ MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf
|
|
+ MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf
|
|
+ MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
|
|
+ MdeModulePkg/Universal/SerialDxe/SerialDxe.inf
|
|
+ Platform/RaspberryPi/Drivers/DisplayDxe/DisplayDxe.inf
|
|
+ EmbeddedPkg/Drivers/ConsolePrefDxe/ConsolePrefDxe.inf
|
|
+
|
|
+ MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf
|
|
+
|
|
+ ArmPkg/Drivers/ArmGic/ArmGicDxe.inf
|
|
+ Platform/RaspberryPi/Drivers/RpiFirmwareDxe/RpiFirmwareDxe.inf
|
|
+ # Platform/RaspberryPi/Drivers/FdtDxe/FdtDxe.inf
|
|
+ # Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxe.inf
|
|
+ ArmPkg/Drivers/TimerDxe/TimerDxe.inf
|
|
+ MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf
|
|
+ MdeModulePkg/Universal/EbcDxe/EbcDxe.inf
|
|
+
|
|
+ #
|
|
+ # FAT filesystem + GPT/MBR partitioning
|
|
+ #
|
|
+ MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf
|
|
+ MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf
|
|
+ MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf
|
|
+ FatPkg/EnhancedFatDxe/Fat.inf
|
|
+
|
|
+ #
|
|
+ # ACPI Support
|
|
+ #
|
|
+ MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf
|
|
+ MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxe.inf
|
|
+ # Platform/RaspberryPi/AcpiTables/AcpiTables.inf
|
|
+
|
|
+ #
|
|
+ # SMBIOS Support
|
|
+ #
|
|
+ Platform/RaspberryPi/Drivers/PlatformSmbiosDxe/PlatformSmbiosDxe.inf
|
|
+ MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf
|
|
+
|
|
+ #
|
|
+ # RAM Disk Support
|
|
+ #
|
|
+ MdeModulePkg/Universal/Disk/RamDiskDxe/RamDiskDxe.inf
|
|
+
|
|
+ #
|
|
+ # Bds
|
|
+ #
|
|
+ MdeModulePkg/Universal/BootManagerPolicyDxe/BootManagerPolicyDxe.inf
|
|
+ MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf
|
|
+ MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf
|
|
+ MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf
|
|
+ MdeModulePkg/Universal/DriverHealthManagerDxe/DriverHealthManagerDxe.inf
|
|
+ MdeModulePkg/Universal/BdsDxe/BdsDxe.inf
|
|
+ Platform/RaspberryPi/Drivers/LogoDxe/LogoDxe.inf
|
|
+ MdeModulePkg/Application/UiApp/UiApp.inf {
|
|
+ <LibraryClasses>
|
|
+ NULL|MdeModulePkg/Library/BootDiscoveryPolicyUiLib/BootDiscoveryPolicyUiLib.inf
|
|
+ NULL|MdeModulePkg/Library/DeviceManagerUiLib/DeviceManagerUiLib.inf
|
|
+ NULL|MdeModulePkg/Library/BootManagerUiLib/BootManagerUiLib.inf
|
|
+ NULL|MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenanceManagerUiLib.inf
|
|
+ }
|
|
+
|
|
+ #
|
|
+ # SCSI Bus and Disk Driver
|
|
+ #
|
|
+ MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf
|
|
+ MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf
|
|
+
|
|
+ #
|
|
+ # USB Support
|
|
+ #
|
|
+ MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf
|
|
+ MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf
|
|
+ MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf
|
|
+ MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf
|
|
+
|
|
+ #
|
|
+ # Networking stack
|
|
+ #
|
|
+!include NetworkPkg/Network.dsc.inc
|
|
+
|
|
+ #
|
|
+ # RNG
|
|
+ #
|
|
+ # Silicon/Broadcom/Bcm283x/Drivers/Bcm2838RngDxe/Bcm2838RngDxe.inf
|
|
+
|
|
+ #
|
|
+ # PCI Support
|
|
+ #
|
|
+ ArmPkg/Drivers/ArmPciCpuIo2Dxe/ArmPciCpuIo2Dxe.inf
|
|
+ # MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf
|
|
+ MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf
|
|
+ EmbeddedPkg/Drivers/NonCoherentIoMmuDxe/NonCoherentIoMmuDxe.inf {
|
|
+ <PcdsFixedAtBuild>
|
|
+ gEmbeddedTokenSpaceGuid.PcdDmaDeviceOffset|0x00000000
|
|
+ gEmbeddedTokenSpaceGuid.PcdDmaDeviceLimit|0xbfffffff
|
|
+ }
|
|
+
|
|
+ #
|
|
+ # NVMe boot devices
|
|
+ #
|
|
+ MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf
|
|
+
|
|
+ #
|
|
+ # UEFI application (Shell Embedded Boot Loader)
|
|
+ #
|
|
+ ShellPkg/Application/Shell/Shell.inf {
|
|
+ <LibraryClasses>
|
|
+ ShellCommandLib|ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.inf
|
|
+ NULL|ShellPkg/Library/UefiShellLevel2CommandsLib/UefiShellLevel2CommandsLib.inf
|
|
+ NULL|ShellPkg/Library/UefiShellLevel1CommandsLib/UefiShellLevel1CommandsLib.inf
|
|
+ NULL|ShellPkg/Library/UefiShellLevel3CommandsLib/UefiShellLevel3CommandsLib.inf
|
|
+ NULL|ShellPkg/Library/UefiShellDriver1CommandsLib/UefiShellDriver1CommandsLib.inf
|
|
+ NULL|ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.inf
|
|
+ NULL|ShellPkg/Library/UefiShellInstall1CommandsLib/UefiShellInstall1CommandsLib.inf
|
|
+ NULL|ShellPkg/Library/UefiShellNetwork1CommandsLib/UefiShellNetwork1CommandsLib.inf
|
|
+ NULL|ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib.inf
|
|
+ HandleParsingLib|ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.inf
|
|
+ PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf
|
|
+ BcfgCommandLib|ShellPkg/Library/UefiShellBcfgCommandLib/UefiShellBcfgCommandLib.inf
|
|
+
|
|
+ <PcdsFixedAtBuild>
|
|
+ gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0xFF
|
|
+ gEfiShellPkgTokenSpaceGuid.PcdShellLibAutoInitialize|FALSE
|
|
+ gEfiMdePkgTokenSpaceGuid.PcdUefiLibMaxPrintBufferSize|8000
|
|
+ gEfiShellPkgTokenSpaceGuid.PcdShellFileOperationSize|0x200000
|
|
+ }
|
|
+!if $(INCLUDE_TFTP_COMMAND) == TRUE
|
|
+ ShellPkg/DynamicCommand/TftpDynamicCommand/TftpDynamicCommand.inf {
|
|
+ <PcdsFixedAtBuild>
|
|
+ gEfiShellPkgTokenSpaceGuid.PcdShellLibAutoInitialize|FALSE
|
|
+ }
|
|
+!endif
|
|
+
|
|
+ ArmPkg/Drivers/ArmPsciMpServicesDxe/ArmPsciMpServicesDxe.inf
|
|
+ UefiCpuPkg/Test/UnitTest/EfiMpServicesPpiProtocol/EfiMpServiceProtocolShellUnitTest.inf {
|
|
+ <LibraryClasses>
|
|
+ UnitTestLib|UnitTestFrameworkPkg/Library/UnitTestLib/UnitTestLib.inf
|
|
+ UnitTestPersistenceLib|UnitTestFrameworkPkg/Library/UnitTestPersistenceLibNull/UnitTestPersistenceLibNull.inf
|
|
+ UnitTestResultReportLib|UnitTestFrameworkPkg/Library/UnitTestResultReportLib/UnitTestResultReportLibConOut.inf
|
|
+ }
|
|
diff --git a/Platform/RaspberryPi/RPi5/RPi5.fdf b/Platform/RaspberryPi/RPi5/RPi5.fdf
|
|
new file mode 100644
|
|
index 00000000..8391c195
|
|
--- /dev/null
|
|
+++ b/Platform/RaspberryPi/RPi5/RPi5.fdf
|
|
@@ -0,0 +1,435 @@
|
|
+## @file
|
|
+#
|
|
+# Copyright (c) 2023, Mario Bălănică <mariobalanica02@gmail.com>
|
|
+# Copyright (c) 2011 - 2019, ARM Limited. All rights reserved.
|
|
+# Copyright (c) 2017 - 2018, Andrei Warkentin <andrey.warkentin@gmail.com>
|
|
+# Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.
|
|
+# Copyright (c) 2014, Linaro Limited. All rights reserved.
|
|
+#
|
|
+# SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
+#
|
|
+##
|
|
+
|
|
+################################################################################
|
|
+#
|
|
+# FD Section
|
|
+# The [FD] Section is made up of the definition statements and a
|
|
+# description of what goes into the Flash Device Image. Each FD section
|
|
+# defines one flash "device" image. A flash device image may be one of
|
|
+# the following: Removable media bootable image (like a boot floppy
|
|
+# image,) an Option ROM image (that would be "flashed" into an add-in
|
|
+# card,) a System "Flash" image (that would be burned into a system's
|
|
+# flash) or an Update ("Capsule") image that will be used to update and
|
|
+# existing system flash.
|
|
+#
|
|
+################################################################################
|
|
+
|
|
+[FD.RPI_EFI]
|
|
+BaseAddress = 0x00000000|gArmTokenSpaceGuid.PcdFdBaseAddress
|
|
+Size = 0x001f0000|gArmTokenSpaceGuid.PcdFdSize
|
|
+ErasePolarity = 1
|
|
+
|
|
+BlockSize = 0x00001000|gRaspberryPiTokenSpaceGuid.PcdFirmwareBlockSize
|
|
+NumBlocks = 0x1f0
|
|
+
|
|
+################################################################################
|
|
+#
|
|
+# Following are lists of FD Region layout which correspond to the locations of different
|
|
+# images within the flash device.
|
|
+#
|
|
+# Regions must be defined in ascending order and may not overlap.
|
|
+#
|
|
+# A Layout Region start with a eight digit hex offset (leading "0x" required) followed by
|
|
+# the pipe "|" character, followed by the size of the region, also in hex with the leading
|
|
+# "0x" characters. Like:
|
|
+# Offset|Size
|
|
+# PcdOffsetCName|PcdSizeCName
|
|
+# RegionType <FV, DATA, or FILE>
|
|
+#
|
|
+################################################################################
|
|
+
|
|
+#
|
|
+# ATF primary boot image
|
|
+#
|
|
+0x00000000|0x00020000
|
|
+FILE = $(TFA_BUILD_BL31)
|
|
+
|
|
+#
|
|
+# UEFI image
|
|
+#
|
|
+0x00020000|0x001b0000
|
|
+gArmTokenSpaceGuid.PcdFvBaseAddress|gArmTokenSpaceGuid.PcdFvSize
|
|
+FV = FVMAIN_COMPACT
|
|
+
|
|
+#
|
|
+# Variables (0x20000 overall).
|
|
+#
|
|
+# 0x001e0000 - 0x001edfff EFI_FIRMWARE_VOLUME_HEADER
|
|
+# 0x001ee000 - 0x001eefff Event log
|
|
+# 0x001ef000 - 0x001effff EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER-
|
|
+# 0x001f0000 - 0x001fffff Data
|
|
+#
|
|
+
|
|
+# NV_VARIABLE_STORE
|
|
+0x001d0000|0x0000e000
|
|
+gRaspberryPiTokenSpaceGuid.PcdNvStorageVariableBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize
|
|
+
|
|
+DATA = {
|
|
+ ## This is the EFI_FIRMWARE_VOLUME_HEADER
|
|
+ # ZeroVector []
|
|
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
+ # FileSystemGuid: gEfiSystemNvDataFvGuid =
|
|
+ # { 0xFFF12B8D, 0x7696, 0x4C8B,
|
|
+ # { 0xA9, 0x85, 0x27, 0x47, 0x07, 0x5B, 0x4F, 0x50 }}
|
|
+ 0x8D, 0x2B, 0xF1, 0xFF, 0x96, 0x76, 0x8B, 0x4C,
|
|
+ 0xA9, 0x85, 0x27, 0x47, 0x07, 0x5B, 0x4F, 0x50,
|
|
+ # FvLength: 0x20000
|
|
+ 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
+ # Signature "_FVH" # Attributes
|
|
+ 0x5f, 0x46, 0x56, 0x48, 0xff, 0xfe, 0x04, 0x00,
|
|
+ # HeaderLength
|
|
+ 0x48, 0x00,
|
|
+ # CheckSum
|
|
+ 0x19, 0xF9,
|
|
+ # ExtHeaderOffset #Reserved #Revision
|
|
+ 0x00, 0x00, 0x00, 0x02,
|
|
+ # Blockmap[0]: 0x20 Blocks * 0x1000 Bytes / Block
|
|
+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
|
|
+ # Blockmap[1]: End
|
|
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
+ ## This is the VARIABLE_STORE_HEADER
|
|
+ # It is compatible with SECURE_BOOT_ENABLE == FALSE as well.
|
|
+ # Signature: gEfiAuthenticatedVariableGuid =
|
|
+ # { 0xaaf32c78, 0x947b, 0x439a,
|
|
+ # { 0xa1, 0x80, 0x2e, 0x14, 0x4e, 0xc3, 0x77, 0x92 }}
|
|
+ 0x78, 0x2c, 0xf3, 0xaa, 0x7b, 0x94, 0x9a, 0x43,
|
|
+ 0xa1, 0x80, 0x2e, 0x14, 0x4e, 0xc3, 0x77, 0x92,
|
|
+ # Size: 0xe000 (gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize) -
|
|
+ # 0x48 (size of EFI_FIRMWARE_VOLUME_HEADER) = 0xdfb8
|
|
+ # This can speed up the Variable Dispatch a bit.
|
|
+ 0xB8, 0xDF, 0x00, 0x00,
|
|
+ # FORMATTED: 0x5A #HEALTHY: 0xFE #Reserved: UINT16 #Reserved1: UINT32
|
|
+ 0x5A, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
+}
|
|
+
|
|
+# NV_EVENT_LOG
|
|
+0x001de000|0x00001000
|
|
+gRaspberryPiTokenSpaceGuid.PcdNvStorageEventLogBase|gRaspberryPiTokenSpaceGuid.PcdNvStorageEventLogSize
|
|
+
|
|
+# NV_FTW_WORKING header
|
|
+0x001df000|0x00001000
|
|
+gRaspberryPiTokenSpaceGuid.PcdNvStorageFtwWorkingBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize
|
|
+
|
|
+DATA = {
|
|
+ # EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER->Signature = gEdkiiWorkingBlockSignatureGuid =
|
|
+ # { 0x9e58292b, 0x7c68, 0x497d, { 0xa0, 0xce, 0x65, 0x0, 0xfd, 0x9f, 0x1b, 0x95 }}
|
|
+ 0x2b, 0x29, 0x58, 0x9e, 0x68, 0x7c, 0x7d, 0x49,
|
|
+ 0xa0, 0xce, 0x65, 0x0, 0xfd, 0x9f, 0x1b, 0x95,
|
|
+ # Crc:UINT32 #WorkingBlockValid:1, WorkingBlockInvalid:1, Reserved
|
|
+ 0x2c, 0xaf, 0x2c, 0x64, 0xFE, 0xFF, 0xFF, 0xFF,
|
|
+ # WriteQueueSize: UINT64
|
|
+ 0xE0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
+}
|
|
+
|
|
+# NV_FTW_WORKING data
|
|
+0x001e0000|0x00010000
|
|
+gRaspberryPiTokenSpaceGuid.PcdNvStorageFtwSpareBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize
|
|
+
|
|
+#
|
|
+# This is just for documentation purposes! The DTB reserved space is not part of the FD,
|
|
+# but this is exactly where it is expected to be.
|
|
+#
|
|
+# 0x001f0000|0x10000
|
|
+# gRaspberryPiTokenSpaceGuid.PcdFdtBaseAddress|gRaspberryPiTokenSpaceGuid.PcdFdtSize
|
|
+#
|
|
+
|
|
+################################################################################
|
|
+#
|
|
+# FV Section
|
|
+#
|
|
+# [FV] section is used to define what components or modules are placed within a flash
|
|
+# device file. This section also defines order the components and modules are positioned
|
|
+# within the image. The [FV] section consists of define statements, set statements and
|
|
+# module statements.
|
|
+#
|
|
+################################################################################
|
|
+
|
|
+[FV.FvMain]
|
|
+FvNameGuid = 9a15aa37-d555-4a4e-b541-86391ff68164
|
|
+BlockSize = 0x40
|
|
+NumBlocks = 0 # This FV gets compressed so make it just big enough
|
|
+FvAlignment = 16 # FV alignment and FV attributes setting.
|
|
+ERASE_POLARITY = 1
|
|
+MEMORY_MAPPED = TRUE
|
|
+STICKY_WRITE = TRUE
|
|
+LOCK_CAP = TRUE
|
|
+LOCK_STATUS = TRUE
|
|
+WRITE_DISABLED_CAP = TRUE
|
|
+WRITE_ENABLED_CAP = TRUE
|
|
+WRITE_STATUS = TRUE
|
|
+WRITE_LOCK_CAP = TRUE
|
|
+WRITE_LOCK_STATUS = TRUE
|
|
+READ_DISABLED_CAP = TRUE
|
|
+READ_ENABLED_CAP = TRUE
|
|
+READ_STATUS = TRUE
|
|
+READ_LOCK_CAP = TRUE
|
|
+READ_LOCK_STATUS = TRUE
|
|
+
|
|
+ INF MdeModulePkg/Core/Dxe/DxeMain.inf
|
|
+ INF MdeModulePkg/Universal/PCD/Dxe/Pcd.inf
|
|
+
|
|
+ #
|
|
+ # PI DXE Drivers producing Architectural Protocols (EFI Services)
|
|
+ #
|
|
+ INF ArmPkg/Drivers/CpuDxe/CpuDxe.inf
|
|
+ INF MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
|
|
+ INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
|
|
+ INF MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf
|
|
+ INF Platform/RaspberryPi/Drivers/VarBlockServiceDxe/VarBlockServiceDxe.inf
|
|
+ INF MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf
|
|
+ INF MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf
|
|
+!if $(SECURE_BOOT_ENABLE) == TRUE
|
|
+!include ArmPlatformPkg/SecureBootDefaultKeys.fdf.inc
|
|
+ INF SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigDxe.inf
|
|
+ INF SecurityPkg/VariableAuthenticated/SecureBootDefaultKeysDxe/SecureBootDefaultKeysDxe.inf
|
|
+!endif
|
|
+ INF MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf
|
|
+ INF EmbeddedPkg/ResetRuntimeDxe/ResetRuntimeDxe.inf
|
|
+ INF EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf
|
|
+ INF EmbeddedPkg/MetronomeDxe/MetronomeDxe.inf
|
|
+ INF MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf
|
|
+ INF ArmPkg/Drivers/ArmPsciMpServicesDxe/ArmPsciMpServicesDxe.inf
|
|
+
|
|
+ #
|
|
+ # Multiple Console IO support
|
|
+ #
|
|
+ INF MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf
|
|
+ INF MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf
|
|
+ INF MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf
|
|
+ INF MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
|
|
+ INF MdeModulePkg/Universal/SerialDxe/SerialDxe.inf
|
|
+ INF Platform/RaspberryPi/Drivers/DisplayDxe/DisplayDxe.inf
|
|
+ INF EmbeddedPkg/Drivers/ConsolePrefDxe/ConsolePrefDxe.inf
|
|
+
|
|
+ INF ArmPkg/Drivers/ArmGic/ArmGicDxe.inf
|
|
+ INF Platform/RaspberryPi/Drivers/RpiFirmwareDxe/RpiFirmwareDxe.inf
|
|
+ # INF Platform/RaspberryPi/Drivers/FdtDxe/FdtDxe.inf
|
|
+ # INF Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxe.inf
|
|
+ INF ArmPkg/Drivers/TimerDxe/TimerDxe.inf
|
|
+ INF MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf
|
|
+ INF MdeModulePkg/Universal/EbcDxe/EbcDxe.inf
|
|
+
|
|
+ #
|
|
+ # FAT filesystem + GPT/MBR partitioning
|
|
+ #
|
|
+ INF MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf
|
|
+ INF MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf
|
|
+ INF FatPkg/EnhancedFatDxe/Fat.inf
|
|
+ INF MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf
|
|
+
|
|
+ #
|
|
+ # UEFI application (Shell Embedded Boot Loader)
|
|
+ #
|
|
+ INF ShellPkg/Application/Shell/Shell.inf
|
|
+!if $(INCLUDE_TFTP_COMMAND) == TRUE
|
|
+ INF ShellPkg/DynamicCommand/TftpDynamicCommand/TftpDynamicCommand.inf
|
|
+!endif
|
|
+
|
|
+ #
|
|
+ # ACPI Support
|
|
+ #
|
|
+ INF MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf
|
|
+ INF MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxe.inf
|
|
+ # INF RuleOverride = ACPITABLE Platform/RaspberryPi/AcpiTables/AcpiTables.inf
|
|
+
|
|
+ #
|
|
+ # SMBIOS Support
|
|
+ #
|
|
+ INF Platform/RaspberryPi/Drivers/PlatformSmbiosDxe/PlatformSmbiosDxe.inf
|
|
+ INF MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf
|
|
+
|
|
+ #
|
|
+ # RAM Disk Support
|
|
+ #
|
|
+ INF MdeModulePkg/Universal/Disk/RamDiskDxe/RamDiskDxe.inf
|
|
+
|
|
+ #
|
|
+ # Bds
|
|
+ #
|
|
+ INF MdeModulePkg/Universal/BootManagerPolicyDxe/BootManagerPolicyDxe.inf
|
|
+ INF MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf
|
|
+ INF MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf
|
|
+ INF MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf
|
|
+ INF MdeModulePkg/Universal/DriverHealthManagerDxe/DriverHealthManagerDxe.inf
|
|
+ INF MdeModulePkg/Universal/BdsDxe/BdsDxe.inf
|
|
+ INF MdeModulePkg/Application/UiApp/UiApp.inf
|
|
+
|
|
+ #
|
|
+ # Networking stack
|
|
+ #
|
|
+!include NetworkPkg/Network.fdf.inc
|
|
+
|
|
+ #
|
|
+ # RNG
|
|
+ #
|
|
+ # INF Silicon/Broadcom/Bcm283x/Drivers/Bcm2838RngDxe/Bcm2838RngDxe.inf
|
|
+
|
|
+ #
|
|
+ # PCI Support
|
|
+ #
|
|
+ INF ArmPkg/Drivers/ArmPciCpuIo2Dxe/ArmPciCpuIo2Dxe.inf
|
|
+ # INF MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf
|
|
+ INF MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf
|
|
+ INF EmbeddedPkg/Drivers/NonCoherentIoMmuDxe/NonCoherentIoMmuDxe.inf
|
|
+
|
|
+ #
|
|
+ # NVMe boot devices
|
|
+ #
|
|
+ INF MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf
|
|
+
|
|
+ #
|
|
+ # SCSI Bus and Disk Driver
|
|
+ #
|
|
+ INF MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf
|
|
+ INF MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf
|
|
+
|
|
+ #
|
|
+ # USB Support
|
|
+ #
|
|
+ INF MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf
|
|
+ INF MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf
|
|
+ INF MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf
|
|
+ INF MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf
|
|
+
|
|
+ #
|
|
+ # Pi logo (splash screen)
|
|
+ #
|
|
+ INF Platform/RaspberryPi/Drivers/LogoDxe/LogoDxe.inf
|
|
+
|
|
+[FV.FVMAIN_COMPACT]
|
|
+FvAlignment = 16
|
|
+ERASE_POLARITY = 1
|
|
+MEMORY_MAPPED = TRUE
|
|
+STICKY_WRITE = TRUE
|
|
+LOCK_CAP = TRUE
|
|
+LOCK_STATUS = TRUE
|
|
+WRITE_DISABLED_CAP = TRUE
|
|
+WRITE_ENABLED_CAP = TRUE
|
|
+WRITE_STATUS = TRUE
|
|
+WRITE_LOCK_CAP = TRUE
|
|
+WRITE_LOCK_STATUS = TRUE
|
|
+READ_DISABLED_CAP = TRUE
|
|
+READ_ENABLED_CAP = TRUE
|
|
+READ_STATUS = TRUE
|
|
+READ_LOCK_CAP = TRUE
|
|
+READ_LOCK_STATUS = TRUE
|
|
+
|
|
+ INF ArmPlatformPkg/PrePi/PeiUniCore.inf
|
|
+ FILE FV_IMAGE = 9E21FD93-9C72-4c15-8C4B-E77F1DB2D792 {
|
|
+ SECTION GUIDED EE4E5898-3914-4259-9D6E-DC7BD79403CF PROCESSING_REQUIRED = TRUE {
|
|
+ SECTION FV_IMAGE = FVMAIN
|
|
+ }
|
|
+ }
|
|
+
|
|
+################################################################################
|
|
+#
|
|
+# Rules are use with the [FV] section's module INF type to define
|
|
+# how an FFS file is created for a given INF file. The following Rule are the default
|
|
+# rules for the different module type. User can add the customized rules to define the
|
|
+# content of the FFS file.
|
|
+#
|
|
+################################################################################
|
|
+
|
|
+
|
|
+############################################################################
|
|
+# Example of a DXE_DRIVER FFS file with a Checksum encapsulation section #
|
|
+############################################################################
|
|
+#
|
|
+#[Rule.Common.DXE_DRIVER]
|
|
+# FILE DRIVER = $(NAMED_GUID) {
|
|
+# DXE_DEPEX DXE_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex
|
|
+# COMPRESS PI_STD {
|
|
+# GUIDED {
|
|
+# PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi
|
|
+# UI STRING="$(MODULE_NAME)" Optional
|
|
+# VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
|
|
+# }
|
|
+# }
|
|
+# }
|
|
+#
|
|
+############################################################################
|
|
+
|
|
+[Rule.Common.SEC]
|
|
+ FILE SEC = $(NAMED_GUID) RELOCS_STRIPPED FIXED {
|
|
+ TE TE Align = Auto $(INF_OUTPUT)/$(MODULE_NAME).efi
|
|
+ }
|
|
+
|
|
+[Rule.Common.PEI_CORE]
|
|
+ FILE PEI_CORE = $(NAMED_GUID) FIXED {
|
|
+ TE TE Align = Auto $(INF_OUTPUT)/$(MODULE_NAME).efi
|
|
+ UI STRING ="$(MODULE_NAME)" Optional
|
|
+ }
|
|
+
|
|
+[Rule.Common.PEIM]
|
|
+ FILE PEIM = $(NAMED_GUID) FIXED {
|
|
+ PEI_DEPEX PEI_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex
|
|
+ TE TE Align = Auto $(INF_OUTPUT)/$(MODULE_NAME).efi
|
|
+ UI STRING="$(MODULE_NAME)" Optional
|
|
+ }
|
|
+
|
|
+[Rule.Common.DXE_CORE]
|
|
+ FILE DXE_CORE = $(NAMED_GUID) {
|
|
+ PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi
|
|
+ UI STRING="$(MODULE_NAME)" Optional
|
|
+ }
|
|
+
|
|
+[Rule.Common.UEFI_DRIVER]
|
|
+ FILE DRIVER = $(NAMED_GUID) {
|
|
+ DXE_DEPEX DXE_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex
|
|
+ PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi
|
|
+ UI STRING="$(MODULE_NAME)" Optional
|
|
+ }
|
|
+
|
|
+[Rule.Common.DXE_DRIVER]
|
|
+ FILE DRIVER = $(NAMED_GUID) {
|
|
+ DXE_DEPEX DXE_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex
|
|
+ PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi
|
|
+ UI STRING="$(MODULE_NAME)" Optional
|
|
+ RAW ACPI Optional |.acpi
|
|
+ RAW ASL Optional |.aml
|
|
+ }
|
|
+
|
|
+[Rule.Common.DXE_RUNTIME_DRIVER]
|
|
+ FILE DRIVER = $(NAMED_GUID) {
|
|
+ DXE_DEPEX DXE_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex
|
|
+ PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi
|
|
+ UI STRING="$(MODULE_NAME)" Optional
|
|
+ }
|
|
+
|
|
+[Rule.Common.UEFI_APPLICATION]
|
|
+ FILE APPLICATION = $(NAMED_GUID) {
|
|
+ UI STRING ="$(MODULE_NAME)" Optional
|
|
+ PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi
|
|
+ }
|
|
+
|
|
+[Rule.Common.UEFI_DRIVER.BINARY]
|
|
+ FILE DRIVER = $(NAMED_GUID) {
|
|
+ DXE_DEPEX DXE_DEPEX Optional |.depex
|
|
+ PE32 PE32 |.efi
|
|
+ UI STRING="$(MODULE_NAME)" Optional
|
|
+ VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
|
|
+ }
|
|
+
|
|
+[Rule.Common.UEFI_APPLICATION.BINARY]
|
|
+ FILE APPLICATION = $(NAMED_GUID) {
|
|
+ PE32 PE32 |.efi
|
|
+ UI STRING="$(MODULE_NAME)" Optional
|
|
+ VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
|
|
+ }
|
|
+
|
|
+[Rule.Common.USER_DEFINED.ACPITABLE]
|
|
+ FILE FREEFORM = $(NAMED_GUID) {
|
|
+ RAW ACPI |.acpi
|
|
+ RAW ASL |.aml
|
|
+ }
|
|
--
|
|
2.51.2
|
|
|