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