1#
2#  Copyright (c) 2011-2013, 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                  = ArmVExpressPkg-RTSM-AEMv8Ax4
21  PLATFORM_GUID                  = f7003abd-8809-4096-ac3d-a6a99ff52478
22  PLATFORM_VERSION               = 0.1
23  DSC_SPECIFICATION              = 0x00010005
24  OUTPUT_DIRECTORY               = Build/ArmVExpress-RTSM-AEMv8Ax4
25  SUPPORTED_ARCHITECTURES        = AARCH64
26  BUILD_TARGETS                  = DEBUG|RELEASE
27  SKUID_IDENTIFIER               = DEFAULT
28  FLASH_DEFINITION               = ArmPlatformPkg/ArmVExpressPkg/ArmVExpress-RTSM-AEMv8Ax4.fdf
29
30!include ArmPlatformPkg/ArmVExpressPkg/ArmVExpress.dsc.inc
31
32[LibraryClasses.common]
33  ArmLib|ArmPkg/Library/ArmLib/AArch64/AArch64Lib.inf
34  ArmCpuLib|ArmPkg/Drivers/ArmCpuLib/ArmCortexAEMv8Lib/ArmCortexAEMv8Lib.inf
35  ArmPlatformLib|ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/ArmVExpressLib.inf
36
37  ArmPlatformSysConfigLib|ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressSysConfigLib/ArmVExpressSysConfigLib.inf
38  NorFlashPlatformLib|ArmPlatformPkg/ArmVExpressPkg/Library/NorFlashArmVExpressLib/NorFlashArmVExpressLib.inf
39  LcdPlatformLib|ArmPlatformPkg/ArmVExpressPkg/Library/PL111LcdArmVExpressLib/PL111LcdArmVExpressLib.inf
40
41  TimerLib|ArmPkg/Library/ArmArchTimerLib/ArmArchTimerLib.inf
42
43  # VirtIo Support
44  VirtioLib|OvmfPkg/Library/VirtioLib/VirtioLib.inf
45  VirtioMmioDeviceLib|OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDeviceLib.inf
46
47[LibraryClasses.common.SEC]
48  ArmLib|ArmPkg/Library/ArmLib/AArch64/AArch64LibSec.inf
49  ArmPlatformSecLib|ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressSecLibRTSM/ArmVExpressSecLib.inf
50  ArmPlatformLib|ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/ArmVExpressLibSec.inf
51
52[BuildOptions]
53  GCC:*_*_AARCH64_PLATFORM_FLAGS == -I$(WORKSPACE)/ArmPlatformPkg/ArmVExpressPkg/Include -I$(WORKSPACE)/ArmPlatformPkg/ArmVExpressPkg/Include/Platform/RTSM
54
55
56################################################################################
57#
58# Pcd Section - list of all EDK II PCD Entries defined by this Platform
59#
60################################################################################
61
62[PcdsFeatureFlag.common]
63!ifdef $(EDK2_SKIP_PEICORE)
64  gArmPlatformTokenSpaceGuid.PcdSystemMemoryInitializeInSec|TRUE
65  gArmPlatformTokenSpaceGuid.PcdSendSgiToBringUpSecondaryCores|TRUE
66!endif
67
68  ## If TRUE, Graphics Output Protocol will be installed on virtual handle created by ConsplitterDxe.
69  #  It could be set FALSE to save size.
70  gEfiMdeModulePkgTokenSpaceGuid.PcdConOutGopSupport|TRUE
71
72  # UEFI firmware is responsible to park the secondary cores on this platform.
73  # This PCD ensures the secondary cores are parked into the AArch64 Linux parking protocol.
74  gArmTokenSpaceGuid.PcdArmLinuxSpinTable|TRUE
75
76[PcdsFixedAtBuild.common]
77  gArmPlatformTokenSpaceGuid.PcdFirmwareVendor|"ARM Versatile Express"
78  gEmbeddedTokenSpaceGuid.PcdEmbeddedPrompt|"ArmVExpress-RTSM"
79
80  gArmPlatformTokenSpaceGuid.PcdCoreCount|8
81
82  #
83  # NV Storage PCDs. Use base of 0x0C000000 for NOR1
84  #
85  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase|0x0FFC0000
86  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize|0x00010000
87  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase|0x0FFD0000
88  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize|0x00010000
89  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|0x0FFE0000
90  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize|0x00010000
91
92  gArmTokenSpaceGuid.PcdVFPEnabled|1
93
94  # FVP models can have 2 clusters with 4 cpus each
95  # Stacks for MPCores in Secure World
96  gArmPlatformTokenSpaceGuid.PcdCPUCoresSecStackBase|0x2E009000
97  gArmPlatformTokenSpaceGuid.PcdCPUCoreSecPrimaryStackSize|0x1000
98  gArmPlatformTokenSpaceGuid.PcdCPUCoreSecSecondaryStackSize|0x800
99
100  # Stacks for MPCores in Normal World
101  gArmPlatformTokenSpaceGuid.PcdCPUCoresStackBase|0x2E000000
102  gArmPlatformTokenSpaceGuid.PcdCPUCorePrimaryStackSize|0x4000
103  gArmPlatformTokenSpaceGuid.PcdCPUCoreSecondaryStackSize|0x800
104
105  # System Memory (2GB)
106  gArmTokenSpaceGuid.PcdSystemMemoryBase|0x80000000
107  gArmTokenSpaceGuid.PcdSystemMemorySize|0x80000000
108
109  # Size of the region used by UEFI in permanent memory (Reserved 64MB)
110  gArmPlatformTokenSpaceGuid.PcdSystemMemoryUefiRegionSize|0x04000000
111
112  #
113  # ARM Pcds
114  #
115  gArmTokenSpaceGuid.PcdArmUncachedMemoryMask|0x0000000040000000
116
117  ## Trustzone enable (to make the transition from EL3 to EL2 in ArmPlatformPkg/Sec)
118  gArmTokenSpaceGuid.PcdTrustzoneSupport|TRUE
119
120  #
121  # ARM PrimeCell
122  #
123
124  ## SP805 Watchdog - Motherboard Watchdog at 24MHz
125  gArmPlatformTokenSpaceGuid.PcdSP805WatchdogBase|0x1C0F0000
126  gArmPlatformTokenSpaceGuid.PcdSP805WatchdogClockFrequencyInHz|24000000
127
128  ## PL011 - Serial Terminal
129  gEfiMdeModulePkgTokenSpaceGuid.PcdSerialRegisterBase|0x1c090000
130  gEfiMdePkgTokenSpaceGuid.PcdUartDefaultBaudRate|38400
131
132  ## PL031 RealTimeClock
133  gArmPlatformTokenSpaceGuid.PcdPL031RtcBase|0x1C170000
134
135  ## PL111 Versatile Express Motherboard controller
136  gArmPlatformTokenSpaceGuid.PcdPL111LcdBase|0x1C1F0000
137
138  ## PL180 MMC/SD card controller
139  gArmPlatformTokenSpaceGuid.PcdPL180SysMciRegAddress|0x1C010048
140  gArmPlatformTokenSpaceGuid.PcdPL180MciBaseAddress|0x1C050000
141
142  #
143  # ARM General Interrupt Controller
144  #
145  gArmTokenSpaceGuid.PcdGicDistributorBase|0x2C001000
146  gArmTokenSpaceGuid.PcdGicInterruptInterfaceBase|0x2C002000
147
148  #
149  # ARM OS Loader
150  #
151  # Versatile Express machine type (ARM VERSATILE EXPRESS = 2272) required for ARM Linux:
152  gArmPlatformTokenSpaceGuid.PcdDefaultBootDescription|L"Linux from SemiHosting"
153  gArmPlatformTokenSpaceGuid.PcdDefaultBootDevicePath|L"VenHw(C5B9C74A-6D72-4719-99AB-C59F199091EB)/Image"
154  gArmPlatformTokenSpaceGuid.PcdDefaultBootArgument|"root=/dev/mmcblk0p2 console=ttyAMA0 earlyprintk=pl011,0x1c090000 debug user_debug=31 loglevel=9"
155  gArmPlatformTokenSpaceGuid.PcdDefaultBootType|2
156  gArmPlatformTokenSpaceGuid.PcdFdtDevicePath|L"VenHw(C5B9C74A-6D72-4719-99AB-C59F199091EB)/rtsm_ve-aemv8a.dtb"
157
158  # Use the serial console (ConIn & ConOut) and the Graphic driver (ConOut)
159  gArmPlatformTokenSpaceGuid.PcdDefaultConOutPaths|L"VenHw(D3987D4B-971A-435F-8CAF-4967EB627241)/Uart(38400,8,N,1)/VenPcAnsi();VenHw(407B4008-BF5B-11DF-9547-CF16E0D72085)"
160  gArmPlatformTokenSpaceGuid.PcdDefaultConInPaths|L"VenHw(D3987D4B-971A-435F-8CAF-4967EB627241)/Uart(38400,8,N,1)/VenPcAnsi()"
161
162  #
163  # ARM Architectural Timer Frequency
164  #
165  # Set model tick to 100Mhz. This depends a lot on workstation performance.
166  gArmTokenSpaceGuid.PcdArmArchTimerFreqInHz|100000000
167
168################################################################################
169#
170# Components Section - list of all EDK II Modules needed by this Platform
171#
172################################################################################
173[Components.common]
174
175  #
176  # SEC
177  #
178  ArmPlatformPkg/Sec/Sec.inf {
179    <LibraryClasses>
180      # Use the implementation which set the Secure bits
181      ArmGicLib|ArmPkg/Drivers/ArmGic/ArmGicSecLib.inf
182  }
183
184  #
185  # PEI Phase modules
186  #
187!ifdef $(EDK2_SKIP_PEICORE)
188  ArmPlatformPkg/PrePi/PeiMPCore.inf {
189    <LibraryClasses>
190      ArmLib|ArmPkg/Library/ArmLib/AArch64/AArch64Lib.inf
191      ArmPlatformLib|ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/ArmVExpressLib.inf
192      ArmPlatformGlobalVariableLib|ArmPlatformPkg/Library/ArmPlatformGlobalVariableLib/PrePi/PrePiArmPlatformGlobalVariableLib.inf
193  }
194!else
195  ArmPlatformPkg/PrePeiCore/PrePeiCoreMPCore.inf {
196    <LibraryClasses>
197      ArmPlatformGlobalVariableLib|ArmPlatformPkg/Library/ArmPlatformGlobalVariableLib/Pei/PeiArmPlatformGlobalVariableLib.inf
198  }
199  MdeModulePkg/Core/Pei/PeiMain.inf
200  MdeModulePkg/Universal/PCD/Pei/Pcd.inf  {
201    <LibraryClasses>
202      PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
203  }
204  ArmPlatformPkg/PlatformPei/PlatformPeim.inf
205  ArmPlatformPkg/MemoryInitPei/MemoryInitPeim.inf
206  ArmPkg/Drivers/CpuPei/CpuPei.inf
207  IntelFrameworkModulePkg/Universal/StatusCode/Pei/StatusCodePei.inf
208  Nt32Pkg/BootModePei/BootModePei.inf
209  MdeModulePkg/Universal/Variable/Pei/VariablePei.inf
210  MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf {
211    <LibraryClasses>
212      NULL|IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf
213  }
214!endif
215
216  #
217  # DXE
218  #
219  MdeModulePkg/Core/Dxe/DxeMain.inf {
220    <LibraryClasses>
221      PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
222      NULL|MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.inf
223  }
224
225  #
226  # Architectural Protocols
227  #
228  ArmPkg/Drivers/CpuDxe/CpuDxe.inf
229  MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
230  MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
231  MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf
232  MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf
233  MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf
234  MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf
235  EmbeddedPkg/ResetRuntimeDxe/ResetRuntimeDxe.inf
236  EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf
237  EmbeddedPkg/MetronomeDxe/MetronomeDxe.inf
238
239  MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf
240  MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf
241  MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf
242  MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
243  EmbeddedPkg/SerialDxe/SerialDxe.inf
244
245  MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf
246
247  ArmPkg/Drivers/ArmGic/ArmGicDxe.inf
248  ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe.inf
249  ArmPkg/Drivers/TimerDxe/TimerDxe.inf
250  ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/PL111LcdGraphicsOutputDxe.inf
251  ArmPlatformPkg/Drivers/SP805WatchdogDxe/SP805WatchdogDxe.inf
252
253  #
254  # Semi-hosting filesystem
255  #
256  ArmPkg/Filesystem/SemihostFs/SemihostFs.inf
257
258  #
259  # Multimedia Card Interface
260  #
261  EmbeddedPkg/Universal/MmcDxe/MmcDxe.inf
262  ArmPlatformPkg/Drivers/PL180MciDxe/PL180MciDxe.inf
263
264  #
265  # Platform Driver
266  #
267  ArmPlatformPkg/ArmVExpressPkg/ArmVExpressDxe/ArmFvpDxe.inf
268  OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
269
270  #
271  # FAT filesystem + GPT/MBR partitioning
272  #
273  MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf
274  MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf
275  MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf
276
277  #
278  # Bds
279  #
280  MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf
281  ArmPlatformPkg/Bds/Bds.inf
282