1#
2#  Copyright (c) 2013-2018, ARM Limited. All rights reserved.
3#
4#  SPDX-License-Identifier: BSD-2-Clause-Patent
5#
6
7################################################################################
8#
9# Defines Section - statements that will be processed to create a Makefile.
10#
11################################################################################
12[Defines]
13  PLATFORM_NAME                  = ArmJuno
14  PLATFORM_GUID                  = ca0722fd-7d3d-45ea-948c-d62b2199807d
15  PLATFORM_VERSION               = 0.1
16  DSC_SPECIFICATION              = 0x00010005
17!ifdef EDK2_OUT_DIR
18  OUTPUT_DIRECTORY               = $(EDK2_OUT_DIR)
19!else
20  OUTPUT_DIRECTORY               = Build/ArmJuno
21!endif
22  SUPPORTED_ARCHITECTURES        = AARCH64|ARM
23  BUILD_TARGETS                  = DEBUG|RELEASE
24  SKUID_IDENTIFIER               = DEFAULT
25  FLASH_DEFINITION               = Platform/ARM/JunoPkg/ArmJuno.fdf
26
27# On RTSM, most peripherals are VExpress Motherboard peripherals
28!include Platform/ARM/VExpressPkg/ArmVExpress.dsc.inc
29
30!ifdef DYNAMIC_TABLES_FRAMEWORK
31!include DynamicTablesPkg/DynamicTables.dsc.inc
32!include Platform/ARM/JunoPkg/ConfigurationManager/ConfigurationManager.dsc.inc
33!endif
34
35[LibraryClasses.common]
36  ArmLib|ArmPkg/Library/ArmLib/ArmBaseLib.inf
37  ArmMmuLib|ArmPkg/Library/ArmMmuLib/ArmMmuBaseLib.inf
38  ArmPlatformLib|Platform/ARM/JunoPkg/Library/ArmJunoLib/ArmJunoLib.inf
39  ArmSmcLib|ArmPkg/Library/ArmSmcLib/ArmSmcLib.inf
40
41  NorFlashPlatformLib|Platform/ARM/JunoPkg/Library/NorFlashJunoLib/NorFlashJunoLib.inf
42
43  CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf
44  CustomizedDisplayLib|MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf
45
46  # USB Requirements
47  UefiUsbLib|MdePkg/Library/UefiUsbLib/UefiUsbLib.inf
48
49  # SCMI Mailbox Transport Layer
50  ArmMtlLib|Platform/ARM/JunoPkg/Library/ArmJunoMtlLib/ArmJunoMtlLib.inf
51
52!ifndef HEADLESS_PLATFORM
53  LcdPlatformLib|Platform/ARM/JunoPkg/Library/HdLcdArmJunoLib/HdLcdArmJunoLib.inf
54  LcdHwLib|ArmPlatformPkg/Library/HdLcd/HdLcd.inf
55!endif
56
57[LibraryClasses.common.SEC]
58  PrePiLib|EmbeddedPkg/Library/PrePiLib/PrePiLib.inf
59  ExtractGuidedSectionLib|EmbeddedPkg/Library/PrePiExtractGuidedSectionLib/PrePiExtractGuidedSectionLib.inf
60  LzmaDecompressLib|MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf
61  MemoryAllocationLib|EmbeddedPkg/Library/PrePiMemoryAllocationLib/PrePiMemoryAllocationLib.inf
62  HobLib|EmbeddedPkg/Library/PrePiHobLib/PrePiHobLib.inf
63  PrePiHobListPointerLib|ArmPlatformPkg/Library/PrePiHobListPointerLib/PrePiHobListPointerLib.inf
64  PerformanceLib|MdeModulePkg/Library/PeiPerformanceLib/PeiPerformanceLib.inf
65  PlatformPeiLib|ArmPlatformPkg/PlatformPei/PlatformPeiLib.inf
66
67[LibraryClasses.common.SEC, LibraryClasses.common.PEIM]
68  MemoryInitPeiLib|ArmPlatformPkg/MemoryInitPei/MemoryInitPeiLib.inf
69
70[LibraryClasses.common.UEFI_DRIVER, LibraryClasses.common.UEFI_APPLICATION, LibraryClasses.common.DXE_RUNTIME_DRIVER, LibraryClasses.common.DXE_DRIVER]
71  PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
72  NonDiscoverableDeviceRegistrationLib|MdeModulePkg/Library/NonDiscoverableDeviceRegistrationLib/NonDiscoverableDeviceRegistrationLib.inf
73  PciHostBridgeLib|Platform/ARM/JunoPkg/Library/JunoPciHostBridgeLib/JunoPciHostBridgeLib.inf
74  PciSegmentLib|MdePkg/Library/BasePciSegmentLibPci/BasePciSegmentLibPci.inf
75  PciLib|MdePkg/Library/BasePciLibPciExpress/BasePciLibPciExpress.inf
76  PciExpressLib|MdePkg/Library/BasePciExpressLib/BasePciExpressLib.inf
77
78[BuildOptions]
79  GCC:*_*_ARM_PLATFORM_FLAGS = -march=armv8-a
80
81!ifdef DYNAMIC_TABLES_FRAMEWORK
82  *_*_*_PLATFORM_FLAGS = -DDYNAMIC_TABLES_FRAMEWORK
83!endif
84
85################################################################################
86#
87# Pcd Section - list of all EDK II PCD Entries defined by this Platform
88#
89################################################################################
90
91[PcdsFeatureFlag.common]
92  ## If TRUE, Graphics Output Protocol will be installed on virtual handle created by ConsplitterDxe.
93  #  It could be set FALSE to save size.
94  gEfiMdeModulePkgTokenSpaceGuid.PcdConOutGopSupport|TRUE
95
96  gEfiMdeModulePkgTokenSpaceGuid.PcdTurnOffUsbLegacySupport|TRUE
97
98[PcdsFixedAtBuild.common]
99  #
100  # NV Storage PCDs. Use base of 0x08000000 for NOR0
101  #
102  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase|0x0BFC0000
103  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize|0x00010000
104  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase|0x0BFD0000
105  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize|0x00010000
106  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|0x0BFE0000
107  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize|0x00010000
108
109  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize|0x2000
110
111  # System Memory (2GB - 16MB of Trusted DRAM at the top of the 32bit address space)
112  gArmTokenSpaceGuid.PcdSystemMemoryBase|0x80000000
113
114!ifdef HEADLESS_PLATFORM
115  gArmTokenSpaceGuid.PcdSystemMemorySize|0x7F000000
116!else
117  # Default framebuffer size is 0x7E9000, reduce system memory size for framebuffer.
118  gArmTokenSpaceGuid.PcdSystemMemorySize|0x7E817000
119  gArmPlatformTokenSpaceGuid.PcdArmLcdDdrFrameBufferBase|0xFE817000
120  gArmPlatformTokenSpaceGuid.PcdArmHdLcdSwapBlueRedSelect|TRUE
121!endif
122
123  # Juno Dual-Cluster profile
124  gArmPlatformTokenSpaceGuid.PcdCoreCount|6
125  gArmPlatformTokenSpaceGuid.PcdClusterCount|2
126
127  gArmTokenSpaceGuid.PcdVFPEnabled|1
128
129  #
130  # ARM PrimeCell
131  #
132
133  ## PL011 - Serial Terminal
134  gEfiMdeModulePkgTokenSpaceGuid.PcdSerialRegisterBase|0x7FF80000
135  gEfiMdePkgTokenSpaceGuid.PcdUartDefaultReceiveFifoDepth|0
136  gArmPlatformTokenSpaceGuid.PL011UartClkInHz|7372800
137  gArmPlatformTokenSpaceGuid.PL011UartInterrupt|115
138
139  ## PL011 - Serial Debug UART
140  gArmPlatformTokenSpaceGuid.PcdSerialDbgRegisterBase|0x7FF80000
141  gArmPlatformTokenSpaceGuid.PcdSerialDbgUartClkInHz|7372800
142  gArmPlatformTokenSpaceGuid.PcdSerialDbgUartBaudRate|115200
143
144  ## PL031 RealTimeClock
145  gArmPlatformTokenSpaceGuid.PcdPL031RtcBase|0x1C170000
146
147  ## SBSA Watchdog Count
148!ifndef DISABLE_SBSA_WATCHDOG
149  gArmPlatformTokenSpaceGuid.PcdWatchdogCount|2
150!endif
151
152  # LAN9118 Ethernet Driver
153  gArmVExpressTokenSpaceGuid.PcdLan9118DxeBaseAddress|0x18000000
154  gArmVExpressTokenSpaceGuid.PcdLan9118DefaultMacAddress|0x1215161822242628
155  gArmVExpressTokenSpaceGuid.PcdLan9118DefaultNegotiationTimeout|40000
156
157  #
158  # ARM Generic Interrupt Controller
159  #
160  gArmTokenSpaceGuid.PcdGicDistributorBase|0x2C010000
161  gArmTokenSpaceGuid.PcdGicInterruptInterfaceBase|0x2C02F000
162
163!ifndef HEADLESS_PLATFORM
164  # ARM Juno HDLCD Base
165  gArmPlatformTokenSpaceGuid.PcdArmHdLcdBase|0x7FF60000
166!endif
167
168  #
169  # PLDA PCI Root Complex
170  #
171  gArmTokenSpaceGuid.PcdPciBusMax|255
172  gArmTokenSpaceGuid.PcdPciIoBase|0x0
173  gArmTokenSpaceGuid.PcdPciIoSize|0x00800000
174  gArmTokenSpaceGuid.PcdPciMmio32Base|0x50000000
175  gArmTokenSpaceGuid.PcdPciMmio32Size|0x08000000
176  gArmTokenSpaceGuid.PcdPciMmio64Base|0x4000000000
177  gArmTokenSpaceGuid.PcdPciMmio64Size|0x100000000
178
179  gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress|0x40000000
180  gArmTokenSpaceGuid.PcdPciIoTranslation|0x5f800000
181  gEmbeddedTokenSpaceGuid.PcdPrePiCpuIoSize|24
182
183  # List of Device Paths that support BootMonFs
184  gArmBootMonFsTokenSpaceGuid.PcdBootMonFsSupportedDevicePaths|L"VenHw(93E34C7E-B50E-11DF-9223-2443DFD72085,00)"
185
186  #
187  # ARM Architectural Timer Frequency
188  #
189  gArmTokenSpaceGuid.PcdArmArchTimerFreqInHz|50000000
190  gEmbeddedTokenSpaceGuid.PcdMetronomeTickPeriod|1000
191
192  gEfiMdeModulePkgTokenSpaceGuid.PcdResetOnMemoryTypeInformationChange|FALSE
193
194  #
195  # SMBIOS entry point version
196  #
197  gEfiMdeModulePkgTokenSpaceGuid.PcdSmbiosVersion|0x0300
198  gEfiMdeModulePkgTokenSpaceGuid.PcdSmbiosDocRev|0x0
199  #
200  # ACPI Table Version
201  #
202  gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiExposedTableVersions|0x20
203
204[PcdsPatchableInModule]
205  # Console Resolution (Full HD)
206  gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution|1920
207  gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution|1080
208
209[PcdsDynamicDefault.common]
210  #
211  # The size of a dynamic PCD of the (VOID*) type can not be increased at run
212  # time from its size at build time. Set the "PcdFdtDevicePaths" PCD to a 128
213  # character "empty" string, to allow to be able to set FDT text device paths
214  # up to 128 characters long.
215  #
216  gFdtPlatformDxeTokenSpaceGuid.PcdFdtDevicePaths|L"                                                                                                                                "
217
218  # Not all Juno platforms support PCI. This dynamic PCD disables or enable
219  # PCI support.
220  gEfiMdeModulePkgTokenSpaceGuid.PcdPciDisableBusEnumeration|TRUE
221
222################################################################################
223#
224# Components Section - list of all EDK II Modules needed by this Platform
225#
226################################################################################
227[Components.common]
228  #
229  # PEI Phase modules
230  #
231  ArmPlatformPkg/PrePi/PeiUniCore.inf
232
233  #
234  # DXE
235  #
236  MdeModulePkg/Core/Dxe/DxeMain.inf {
237    <LibraryClasses>
238      PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
239      NULL|MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.inf
240  }
241
242  #
243  # Architectural Protocols
244  #
245  ArmPkg/Drivers/CpuDxe/CpuDxe.inf
246  MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
247  MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
248  MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf
249  MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf
250  MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe.inf
251  EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf
252  EmbeddedPkg/MetronomeDxe/MetronomeDxe.inf
253
254  MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf
255  MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf
256  MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf
257  MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
258  MdeModulePkg/Universal/SerialDxe/SerialDxe.inf
259
260  MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf {
261    <LibraryClasses>
262      NULL|EmbeddedPkg/Library/NvVarStoreFormattedLib/NvVarStoreFormattedLib.inf
263      NULL|MdeModulePkg/Library/VarCheckUefiLib/VarCheckUefiLib.inf
264      BaseMemoryLib|MdePkg/Library/BaseMemoryLib/BaseMemoryLib.inf
265  }
266  MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf
267
268  #
269  # ACPI Support
270  #
271  MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf
272!ifndef DYNAMIC_TABLES_FRAMEWORK
273  Platform/ARM/JunoPkg/AcpiTables/AcpiTables.inf
274!endif
275  MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf
276
277  ArmPkg/Drivers/ArmGic/ArmGicDxe.inf
278  ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe.inf
279  ArmPkg/Drivers/TimerDxe/TimerDxe.inf
280  ArmPkg/Drivers/GenericWatchdogDxe/GenericWatchdogDxe.inf
281
282  #
283  # Firmware Performance Data Table (FPDT)
284  #
285  MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCodeRouterRuntimeDxe.inf
286  MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableDxe/FirmwarePerformanceDxe.inf {
287    <LibraryClasses>
288      LockBoxLib|MdeModulePkg/Library/LockBoxNullLib/LockBoxNullLib.inf
289  }
290
291  #
292  # Semi-hosting filesystem
293  #
294  ArmPkg/Filesystem/SemihostFs/SemihostFs.inf
295
296  #
297  # FAT filesystem + GPT/MBR partitioning
298  #
299  MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf
300  MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf
301  MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf
302  FatPkg/EnhancedFatDxe/Fat.inf
303
304  # Required by PCI
305  ArmPkg/Drivers/ArmPciCpuIo2Dxe/ArmPciCpuIo2Dxe.inf
306
307  #
308  # PCI Support
309  #
310  MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf
311  MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf
312
313  #
314  # SATA Controller
315  #
316  MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf
317  Platform/ARM/JunoPkg/Drivers/SataSiI3132Dxe/SataSiI3132Dxe.inf
318
319  #
320  # NVMe boot devices
321  #
322  MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf
323
324  #
325  # Networking stack
326  #
327  Platform/ARM/VExpressPkg/Drivers/Lan9118Dxe/Lan9118Dxe.inf
328!if 0
329  OptionRomPkg/MarvellYukonDxe/MarvellYukonDxe.inf
330!endif
331
332  #
333  # Usb Support
334  #
335  MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf
336  MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe.inf
337  MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf
338  MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf
339  MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf
340  MdeModulePkg/Bus/Usb/UsbMouseDxe/UsbMouseDxe.inf
341  MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf
342  MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceDxe.inf
343
344!ifndef HEADLESS_PLATFORM
345  # Graphic Output Protocol
346  ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/LcdGraphicsOutputDxe.inf
347!endif
348
349  #
350  # Juno platform driver
351  #
352  Platform/ARM/JunoPkg/Drivers/ArmJunoDxe/ArmJunoDxe.inf
353
354  #
355  # SMBIOS/DMI
356  #
357  MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf
358  Platform/ARM/JunoPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.inf
359
360  #
361  # Bds
362  #
363  MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf
364  MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf
365  MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf
366  MdeModulePkg/Universal/BdsDxe/BdsDxe.inf
367  MdeModulePkg/Application/UiApp/UiApp.inf {
368    <LibraryClasses>
369      NULL|MdeModulePkg/Library/DeviceManagerUiLib/DeviceManagerUiLib.inf
370      NULL|MdeModulePkg/Library/BootManagerUiLib/BootManagerUiLib.inf
371      NULL|MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenanceManagerUiLib.inf
372  }
373
374  #
375  # FDT installation
376  #
377  Platform/ARM/Drivers/FdtPlatformDxe/FdtPlatformDxe.inf {
378    <LibraryClasses>
379      BdsLib|Platform/ARM/Library/BdsLib/BdsLib.inf
380  }
381
382  # SCMI Driver
383  ArmPkg/Drivers/ArmScmiDxe/ArmScmiDxe.inf
384
385[Components.AARCH64]
386  #
387  # EBC
388  #
389  MdeModulePkg/Universal/EbcDxe/EbcDxe.inf
390