• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#
2#  Copyright (c) 2011-2015, ARM Limited. All rights reserved.
3#
4#  This program and the accompanying materials
5#  are licensed and made available under the terms and conditions of the BSD License
6#  which accompanies this distribution.  The full text of the license may be found at
7#  http://opensource.org/licenses/bsd-license.php
8#
9#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10#  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
11#
12#
13
14################################################################################
15#
16# Defines Section - statements that will be processed to create a Makefile.
17#
18################################################################################
19[Defines]
20  PLATFORM_NAME                  = ArmVExpress-FVP-AArch64
21  PLATFORM_GUID                  = 0de70077-9b3b-43bf-ba38-0ea37d77141b
22  PLATFORM_VERSION               = 0.1
23  DSC_SPECIFICATION              = 0x00010005
24!ifdef $(EDK2_OUT_DIR)
25  OUTPUT_DIRECTORY               = $(EDK2_OUT_DIR)
26!else
27  OUTPUT_DIRECTORY               = Build/ArmVExpress-FVP-AArch64
28!endif
29  SUPPORTED_ARCHITECTURES        = AARCH64
30  BUILD_TARGETS                  = DEBUG|RELEASE
31  SKUID_IDENTIFIER               = DEFAULT
32  FLASH_DEFINITION               = OpenPlatformPkg/Platforms/ARM/VExpress/ArmVExpress-FVP-AArch64.fdf
33
34!ifndef ARM_FVP_RUN_NORFLASH
35  DEFINE EDK2_SKIP_PEICORE=1
36!endif
37
38
39!include OpenPlatformPkg/Platforms/ARM/VExpress/ArmVExpress.dsc.inc
40
41[LibraryClasses.common]
42  ArmLib|ArmPkg/Library/ArmLib/ArmBaseLib.inf
43  ArmCpuLib|ArmPkg/Drivers/ArmCpuLib/ArmCortexAEMv8Lib/ArmCortexAEMv8Lib.inf
44  ArmPlatformLib|ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/ArmVExpressLib.inf
45  ArmMmuLib|ArmPkg/Library/ArmMmuLib/ArmMmuBaseLib.inf
46
47  ArmPlatformSysConfigLib|ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressSysConfigLib/ArmVExpressSysConfigLib.inf
48  NorFlashPlatformLib|ArmPlatformPkg/ArmVExpressPkg/Library/NorFlashArmVExpressLib/NorFlashArmVExpressLib.inf
49!ifdef EDK2_ENABLE_PL111
50  LcdPlatformLib|ArmPlatformPkg/ArmVExpressPkg/Library/PL111LcdArmVExpressLib/PL111LcdArmVExpressLib.inf
51!endif
52
53  TimerLib|ArmPkg/Library/ArmArchTimerLib/ArmArchTimerLib.inf
54
55  # Virtio Support
56  VirtioLib|OvmfPkg/Library/VirtioLib/VirtioLib.inf
57  VirtioMmioDeviceLib|OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDeviceLib.inf
58!if $(SECURE_BOOT_ENABLE) == TRUE
59  FileExplorerLib|MdeModulePkg/Library/FileExplorerLib/FileExplorerLib.inf
60!endif
61
62[LibraryClasses.common.SEC]
63  ArmPlatformSecLib|ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressSecLibRTSM/ArmVExpressSecLib.inf
64  ArmPlatformLib|ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/ArmVExpressLibSec.inf
65
66[LibraryClasses.common.UEFI_DRIVER, LibraryClasses.common.UEFI_APPLICATION, LibraryClasses.common.DXE_RUNTIME_DRIVER, LibraryClasses.common.DXE_DRIVER]
67  PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
68
69[BuildOptions]
70  GCC:*_*_AARCH64_PLATFORM_FLAGS == -I$(WORKSPACE)/ArmPlatformPkg/ArmVExpressPkg/Include -I$(WORKSPACE)/ArmPlatformPkg/ArmVExpressPkg/Include/Platform/RTSM
71
72
73################################################################################
74#
75# Pcd Section - list of all EDK II PCD Entries defined by this Platform
76#
77################################################################################
78
79[PcdsFeatureFlag.common]
80
81  ## If TRUE, Graphics Output Protocol will be installed on virtual handle created by ConsplitterDxe.
82  #  It could be set FALSE to save size.
83  gEfiMdeModulePkgTokenSpaceGuid.PcdConOutGopSupport|TRUE
84
85[PcdsFixedAtBuild.common]
86  gArmPlatformTokenSpaceGuid.PcdFirmwareVendor|"ARM Fixed Virtual Platform"
87  gEmbeddedTokenSpaceGuid.PcdEmbeddedPrompt|"ARM-FVP"
88
89  # Only one core enters UEFI, and PSCI is implemented in EL3 by ATF
90  gArmPlatformTokenSpaceGuid.PcdCoreCount|1
91
92  #
93  # NV Storage PCDs. Use base of 0x0C000000 for NOR1
94  #
95  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase|0x0FFC0000
96  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize|0x00010000
97  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase|0x0FFD0000
98  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize|0x00010000
99  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|0x0FFE0000
100  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize|0x00010000
101
102  gArmTokenSpaceGuid.PcdVFPEnabled|1
103
104  # Stacks for MPCores in Normal World
105  # Non-Trusted SRAM
106  gArmPlatformTokenSpaceGuid.PcdCPUCoresStackBase|0x2E000000
107  gArmPlatformTokenSpaceGuid.PcdCPUCorePrimaryStackSize|0x4000
108  gArmPlatformTokenSpaceGuid.PcdCPUCoreSecondaryStackSize|0x0
109
110  # System Memory (2GB - 16MB of Trusted DRAM at the top of the 32bit address space)
111  gArmTokenSpaceGuid.PcdSystemMemoryBase|0x80000000
112  gArmTokenSpaceGuid.PcdSystemMemorySize|0x7F000000
113
114  # Size of the region used by UEFI in permanent memory (Reserved 64MB)
115  gArmPlatformTokenSpaceGuid.PcdSystemMemoryUefiRegionSize|0x04000000
116
117  #
118  # ARM Pcds
119  #
120  gArmTokenSpaceGuid.PcdArmUncachedMemoryMask|0x0000000040000000
121
122  ## Trustzone enable (to make the transition from EL3 to NS EL2 in ArmPlatformPkg/Sec)
123  gArmTokenSpaceGuid.PcdTrustzoneSupport|TRUE
124
125  #
126  # ARM PrimeCell
127  #
128
129  ## SP805 Watchdog - Motherboard Watchdog at 24MHz
130  gArmPlatformTokenSpaceGuid.PcdSP805WatchdogBase|0x1C0F0000
131  gArmPlatformTokenSpaceGuid.PcdSP805WatchdogClockFrequencyInHz|24000000
132
133  ## PL011 - Serial Terminal
134  gEfiMdeModulePkgTokenSpaceGuid.PcdSerialRegisterBase|0x1c090000
135  gEfiMdePkgTokenSpaceGuid.PcdUartDefaultBaudRate|115200
136  gEfiMdePkgTokenSpaceGuid.PcdUartDefaultReceiveFifoDepth|0
137
138  ## PL031 RealTimeClock
139  gArmPlatformTokenSpaceGuid.PcdPL031RtcBase|0x1C170000
140
141!ifdef EDK2_ENABLE_PL111
142  ## PL111 Versatile Express Motherboard controller
143  gArmPlatformTokenSpaceGuid.PcdPL111LcdBase|0x1C1F0000
144!endif
145
146  ## PL180 MMC/SD card controller
147  gArmPlatformTokenSpaceGuid.PcdPL180SysMciRegAddress|0x1C010048
148  gArmPlatformTokenSpaceGuid.PcdPL180MciBaseAddress|0x1C050000
149
150  #
151  # ARM General Interrupt Controller
152  #
153  gArmTokenSpaceGuid.PcdGicDistributorBase|0x2f000000
154  gArmTokenSpaceGuid.PcdGicRedistributorsBase|0x2f100000
155  gArmTokenSpaceGuid.PcdGicInterruptInterfaceBase|0x2C000000
156
157  #
158  # ARM OS Loader
159  #
160  gArmPlatformTokenSpaceGuid.PcdDefaultBootDescription|L"Linux from SemiHosting"
161  gArmPlatformTokenSpaceGuid.PcdDefaultBootDevicePath|L"VenHw(C5B9C74A-6D72-4719-99AB-C59F199091EB)/Image"
162  gArmPlatformTokenSpaceGuid.PcdDefaultBootArgument|L"console=ttyAMA0 earlycon=pl011,0x1c090000 debug user_debug=31 loglevel=9"
163
164  # Use the serial console (ConIn & ConOut) and the Graphic driver (ConOut)
165!ifdef EDK2_ENABLE_PL111
166  gArmPlatformTokenSpaceGuid.PcdDefaultConOutPaths|L"VenHw(D3987D4B-971A-435F-8CAF-4967EB627241)/Uart(115200,8,N,1)/VenMsg(7D916D80-5BB1-458C-A48F-E25FDD51EF94);VenHw(407B4008-BF5B-11DF-9547-CF16E0D72085)"
167!else
168  gArmPlatformTokenSpaceGuid.PcdDefaultConOutPaths|L"VenHw(D3987D4B-971A-435F-8CAF-4967EB627241)/Uart(115200,8,N,1)/VenMsg(7D916D80-5BB1-458C-A48F-E25FDD51EF94)"
169!endif
170  gArmPlatformTokenSpaceGuid.PcdDefaultConInPaths|L"VenHw(D3987D4B-971A-435F-8CAF-4967EB627241)/Uart(115200,8,N,1)/VenMsg(7D916D80-5BB1-458C-A48F-E25FDD51EF94)"
171
172  #
173  # ARM Architectural Timer Frequency
174  #
175  # Set tick frequency value to 100Mhz
176  gArmTokenSpaceGuid.PcdArmArchTimerFreqInHz|100000000
177
178  # the entire FVP address space can be covered by 36 bit VAs
179  gEmbeddedTokenSpaceGuid.PcdPrePiCpuMemorySize|36
180
181[PcdsDynamicDefault.common]
182  #
183  # The size of a dynamic PCD of the (VOID*) type can not be increased at run
184  # time from its size at build time. Set the "PcdFdtDevicePaths" PCD to a 128
185  # character "empty" string, to allow to be able to set FDT text device paths
186  # up to 128 characters long.
187  #
188  gEmbeddedTokenSpaceGuid.PcdFdtDevicePaths|L"                                                                                                                                "
189
190################################################################################
191#
192# Components Section - list of all EDK II Modules needed by this Platform
193#
194################################################################################
195[Components.common]
196
197  #
198  # PEI Phase modules
199  #
200!ifdef EDK2_SKIP_PEICORE
201  # UEFI is placed in RAM by bootloader
202  ArmPlatformPkg/PrePi/PeiUniCore.inf {
203    <LibraryClasses>
204      ArmPlatformLib|ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/ArmVExpressLib.inf
205  }
206!else
207  # UEFI lives in FLASH and copies itself to RAM
208  ArmPlatformPkg/PrePeiCore/PrePeiCoreUniCore.inf
209  MdeModulePkg/Core/Pei/PeiMain.inf
210  MdeModulePkg/Universal/PCD/Pei/Pcd.inf  {
211    <LibraryClasses>
212      PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
213  }
214  ArmPlatformPkg/PlatformPei/PlatformPeim.inf
215  ArmPlatformPkg/MemoryInitPei/MemoryInitPeim.inf
216  ArmPkg/Drivers/CpuPei/CpuPei.inf
217  IntelFrameworkModulePkg/Universal/StatusCode/Pei/StatusCodePei.inf
218  Nt32Pkg/BootModePei/BootModePei.inf
219  MdeModulePkg/Universal/Variable/Pei/VariablePei.inf
220  MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf {
221    <LibraryClasses>
222      NULL|MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf
223  }
224!endif
225
226  #
227  # DXE
228  #
229  MdeModulePkg/Core/Dxe/DxeMain.inf {
230    <LibraryClasses>
231      PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
232      NULL|MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.inf
233  }
234
235  #
236  # Architectural Protocols
237  #
238  ArmPkg/Drivers/CpuDxe/CpuDxe.inf
239  MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
240!if $(SECURE_BOOT_ENABLE) == TRUE
241  MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf {
242    <LibraryClasses>
243      NULL|SecurityPkg/Library/DxeImageVerificationLib/DxeImageVerificationLib.inf
244  }
245  SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigDxe.inf
246!else
247  MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
248!endif
249  MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf
250  MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf {
251    <LibraryClasses>
252      NULL|MdeModulePkg/Library/VarCheckUefiLib/VarCheckUefiLib.inf
253  }
254  MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf
255  MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf
256  EmbeddedPkg/ResetRuntimeDxe/ResetRuntimeDxe.inf
257  EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf
258  EmbeddedPkg/MetronomeDxe/MetronomeDxe.inf
259
260  MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf
261  MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf
262  MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf
263  MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
264  MdeModulePkg/Universal/SerialDxe/SerialDxe.inf
265
266  MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf
267
268  #
269  # ACPI Support
270  #
271  MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf
272  MdeModulePkg/Universal/Acpi/AcpiPlatformDxe/AcpiPlatformDxe.inf
273  OpenPlatformPkg/Platforms/ARM/VExpress/AcpiTables/AcpiTables.inf
274
275  ArmPkg/Drivers/ArmGic/ArmGicDxe.inf
276  ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe.inf
277  ArmPkg/Drivers/TimerDxe/TimerDxe.inf
278!ifdef EDK2_ENABLE_PL111
279  ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/PL111LcdGraphicsOutputDxe.inf
280!endif
281  ArmPlatformPkg/Drivers/SP805WatchdogDxe/SP805WatchdogDxe.inf
282
283  # SMBIOS Support
284
285  MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf
286
287  #
288  # Semi-hosting filesystem
289  #
290  ArmPkg/Filesystem/SemihostFs/SemihostFs.inf
291
292  #
293  # Multimedia Card Interface
294  #
295  EmbeddedPkg/Universal/MmcDxe/MmcDxe.inf
296  ArmPlatformPkg/Drivers/PL180MciDxe/PL180MciDxe.inf
297
298  #
299  # Platform Driver
300  #
301  ArmPlatformPkg/ArmVExpressPkg/ArmVExpressDxe/ArmFvpDxe.inf {
302    <LibraryClasses>
303      BdsLib|ArmPkg/Library/BdsLib/BdsLib.inf
304  }
305  OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
306
307  #
308  # FAT filesystem + GPT/MBR partitioning
309  #
310  MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf
311  MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf
312  MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf
313
314  #
315  # Bds
316  #
317  MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf
318  MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf
319  MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf
320  MdeModulePkg/Universal/BdsDxe/BdsDxe.inf
321  MdeModulePkg/Application/UiApp/UiApp.inf {
322    <LibraryClasses>
323      NULL|MdeModulePkg/Library/DeviceManagerUiLib/DeviceManagerUiLib.inf
324      NULL|MdeModulePkg/Library/BootManagerUiLib/BootManagerUiLib.inf
325      NULL|MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenanceManagerUiLib.inf
326  }
327