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