# # Copyright (c) 2013-2018, ARM Limited. All rights reserved. # (C) Copyright 2021 Hewlett Packard Enterprise Development LP
# # SPDX-License-Identifier: BSD-2-Clause-Patent # ################################################################################ # # Defines Section - statements that will be processed to create a Makefile. # ################################################################################ [Defines] PLATFORM_NAME = ArmJuno PLATFORM_GUID = ca0722fd-7d3d-45ea-948c-d62b2199807d PLATFORM_VERSION = 0.1 DSC_SPECIFICATION = 0x00010005 !ifdef EDK2_OUT_DIR OUTPUT_DIRECTORY = $(EDK2_OUT_DIR) !else OUTPUT_DIRECTORY = Build/ArmJuno !endif SUPPORTED_ARCHITECTURES = AARCH64|ARM BUILD_TARGETS = DEBUG|RELEASE|NOOPT SKUID_IDENTIFIER = DEFAULT FLASH_DEFINITION = Platform/ARM/JunoPkg/ArmJuno.fdf # On RTSM, most peripherals are VExpress Motherboard peripherals !include Platform/ARM/VExpressPkg/ArmVExpress.dsc.inc !include MdePkg/MdeLibs.dsc.inc !ifdef DYNAMIC_TABLES_FRAMEWORK !include DynamicTablesPkg/DynamicTables.dsc.inc !include Platform/ARM/JunoPkg/ConfigurationManager/ConfigurationManager.dsc.inc !endif [LibraryClasses.common] ArmLib|ArmPkg/Library/ArmLib/ArmBaseLib.inf ArmMmuLib|ArmPkg/Library/ArmMmuLib/ArmMmuBaseLib.inf ArmPlatformLib|Platform/ARM/JunoPkg/Library/ArmJunoLib/ArmJunoLib.inf ArmSmcLib|ArmPkg/Library/ArmSmcLib/ArmSmcLib.inf NorFlashPlatformLib|Platform/ARM/JunoPkg/Library/NorFlashJunoLib/NorFlashJunoLib.inf CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf CustomizedDisplayLib|MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf # USB Requirements UefiUsbLib|MdePkg/Library/UefiUsbLib/UefiUsbLib.inf # SCMI Mailbox Transport Layer ArmMtlLib|Platform/ARM/JunoPkg/Library/ArmJunoMtlLib/ArmJunoMtlLib.inf !ifndef HEADLESS_PLATFORM LcdPlatformLib|Platform/ARM/JunoPkg/Library/HdLcdArmJunoLib/HdLcdArmJunoLib.inf LcdHwLib|ArmPlatformPkg/Library/HdLcd/HdLcd.inf !endif [LibraryClasses.common.SEC] PrePiLib|EmbeddedPkg/Library/PrePiLib/PrePiLib.inf ExtractGuidedSectionLib|EmbeddedPkg/Library/PrePiExtractGuidedSectionLib/PrePiExtractGuidedSectionLib.inf LzmaDecompressLib|MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf MemoryAllocationLib|EmbeddedPkg/Library/PrePiMemoryAllocationLib/PrePiMemoryAllocationLib.inf HobLib|EmbeddedPkg/Library/PrePiHobLib/PrePiHobLib.inf PrePiHobListPointerLib|ArmPlatformPkg/Library/PrePiHobListPointerLib/PrePiHobListPointerLib.inf PerformanceLib|MdeModulePkg/Library/PeiPerformanceLib/PeiPerformanceLib.inf PlatformPeiLib|ArmPlatformPkg/PlatformPei/PlatformPeiLib.inf [LibraryClasses.common.SEC, LibraryClasses.common.PEIM] MemoryInitPeiLib|ArmPlatformPkg/MemoryInitPei/MemoryInitPeiLib.inf [LibraryClasses.common.UEFI_DRIVER, LibraryClasses.common.UEFI_APPLICATION, LibraryClasses.common.DXE_RUNTIME_DRIVER, LibraryClasses.common.DXE_DRIVER] PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf NonDiscoverableDeviceRegistrationLib|MdeModulePkg/Library/NonDiscoverableDeviceRegistrationLib/NonDiscoverableDeviceRegistrationLib.inf PciHostBridgeLib|Platform/ARM/JunoPkg/Library/JunoPciHostBridgeLib/JunoPciHostBridgeLib.inf PciSegmentLib|MdePkg/Library/BasePciSegmentLibPci/BasePciSegmentLibPci.inf PciLib|MdePkg/Library/BasePciLibPciExpress/BasePciLibPciExpress.inf PciExpressLib|MdePkg/Library/BasePciExpressLib/BasePciExpressLib.inf [BuildOptions] GCC:*_*_ARM_PLATFORM_FLAGS = -march=armv8-a !ifdef DYNAMIC_TABLES_FRAMEWORK *_*_*_PLATFORM_FLAGS = -DDYNAMIC_TABLES_FRAMEWORK !endif ################################################################################ # # Pcd Section - list of all EDK II PCD Entries defined by this Platform # ################################################################################ [PcdsFeatureFlag.common] ## If TRUE, Graphics Output Protocol will be installed on virtual handle created by ConsplitterDxe. # It could be set FALSE to save size. gEfiMdeModulePkgTokenSpaceGuid.PcdConOutGopSupport|TRUE gEfiMdeModulePkgTokenSpaceGuid.PcdTurnOffUsbLegacySupport|TRUE [PcdsFixedAtBuild.common] # # NV Storage PCDs. Use base of 0x08000000 for NOR0 # gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase|0x0BFC0000 gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize|0x00010000 gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase|0x0BFD0000 gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize|0x00010000 gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|0x0BFE0000 gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize|0x00010000 gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize|0x2000 # System Memory (2GB - 16MB of Trusted DRAM at the top of the 32bit address space) gArmTokenSpaceGuid.PcdSystemMemoryBase|0x80000000 !ifdef HEADLESS_PLATFORM gArmTokenSpaceGuid.PcdSystemMemorySize|0x7F000000 !else # Default framebuffer size is 0x7E9000, reduce system memory size for framebuffer. gArmTokenSpaceGuid.PcdSystemMemorySize|0x7E817000 gArmPlatformTokenSpaceGuid.PcdArmLcdDdrFrameBufferBase|0xFE817000 gArmPlatformTokenSpaceGuid.PcdArmHdLcdSwapBlueRedSelect|TRUE !endif # Juno Dual-Cluster profile gArmPlatformTokenSpaceGuid.PcdCoreCount|6 gArmPlatformTokenSpaceGuid.PcdClusterCount|2 gArmTokenSpaceGuid.PcdVFPEnabled|1 # # ARM PrimeCell # ## PL011 - Serial Terminal gEfiMdeModulePkgTokenSpaceGuid.PcdSerialRegisterBase|0x7FF80000 gEfiMdePkgTokenSpaceGuid.PcdUartDefaultReceiveFifoDepth|0 gArmPlatformTokenSpaceGuid.PL011UartClkInHz|7372800 gArmPlatformTokenSpaceGuid.PL011UartInterrupt|115 ## PL011 - Serial Debug UART gArmPlatformTokenSpaceGuid.PcdSerialDbgRegisterBase|0x7FF80000 gArmPlatformTokenSpaceGuid.PcdSerialDbgUartClkInHz|7372800 gArmPlatformTokenSpaceGuid.PcdSerialDbgUartBaudRate|115200 ## PL031 RealTimeClock gArmPlatformTokenSpaceGuid.PcdPL031RtcBase|0x1C170000 ## SBSA Watchdog Count !ifndef DISABLE_SBSA_WATCHDOG gArmPlatformTokenSpaceGuid.PcdWatchdogCount|2 !endif # LAN9118 Ethernet Driver gArmVExpressTokenSpaceGuid.PcdLan9118DxeBaseAddress|0x18000000 gArmVExpressTokenSpaceGuid.PcdLan9118DefaultMacAddress|0x1215161822242628 gArmVExpressTokenSpaceGuid.PcdLan9118DefaultNegotiationTimeout|40000 # # ARM Generic Interrupt Controller # gArmTokenSpaceGuid.PcdGicDistributorBase|0x2C010000 gArmTokenSpaceGuid.PcdGicInterruptInterfaceBase|0x2C02F000 !ifndef HEADLESS_PLATFORM # ARM Juno HDLCD Base gArmPlatformTokenSpaceGuid.PcdArmHdLcdBase|0x7FF60000 !endif # # PLDA PCI Root Complex # gArmTokenSpaceGuid.PcdPciBusMax|255 gArmTokenSpaceGuid.PcdPciIoBase|0x0 gArmTokenSpaceGuid.PcdPciIoSize|0x00800000 gArmTokenSpaceGuid.PcdPciMmio32Base|0x50000000 gArmTokenSpaceGuid.PcdPciMmio32Size|0x08000000 gArmTokenSpaceGuid.PcdPciMmio64Base|0x4000000000 gArmTokenSpaceGuid.PcdPciMmio64Size|0x100000000 gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress|0x40000000 gEfiMdePkgTokenSpaceGuid.PcdPciIoTranslation|0x5f800000 gEmbeddedTokenSpaceGuid.PcdPrePiCpuIoSize|24 # List of Device Paths that support BootMonFs gArmBootMonFsTokenSpaceGuid.PcdBootMonFsSupportedDevicePaths|L"VenHw(DE6AE758-D662-4E17-A97C-4C5964DA4C41,00)" # # ARM Architectural Timer Frequency # # Set to 0 so ArmArchTimerLib will read its value from CNTFRQ_EL0 gArmTokenSpaceGuid.PcdArmArchTimerFreqInHz|0 gEfiMdeModulePkgTokenSpaceGuid.PcdResetOnMemoryTypeInformationChange|FALSE # # SMBIOS entry point version # gEfiMdeModulePkgTokenSpaceGuid.PcdSmbiosVersion|0x0300 gEfiMdeModulePkgTokenSpaceGuid.PcdSmbiosDocRev|0x0 # # ACPI Table Version # gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiExposedTableVersions|0x20 [PcdsPatchableInModule] # Console Resolution (Full HD) gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution|1920 gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution|1080 [PcdsDynamicDefault.common] # # The size of a dynamic PCD of the (VOID*) type can not be increased at run # time from its size at build time. Set the "PcdFdtDevicePaths" PCD to a 128 # character "empty" string, to allow to be able to set FDT text device paths # up to 128 characters long. # gFdtPlatformDxeTokenSpaceGuid.PcdFdtDevicePaths|L" " # Not all Juno platforms support PCI. This dynamic PCD disables or enable # PCI support. gEfiMdeModulePkgTokenSpaceGuid.PcdPciDisableBusEnumeration|TRUE ################################################################################ # # Components Section - list of all EDK II Modules needed by this Platform # ################################################################################ [Components.common] # # PEI Phase modules # ArmPlatformPkg/PrePi/PeiUniCore.inf # # DXE # MdeModulePkg/Core/Dxe/DxeMain.inf { PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf NULL|MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.inf } # # Architectural Protocols # ArmPkg/Drivers/CpuDxe/CpuDxe.inf MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf MdeModulePkg/Universal/Metronome/Metronome.inf MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe.inf EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf MdeModulePkg/Universal/SerialDxe/SerialDxe.inf MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf { NULL|EmbeddedPkg/Library/NvVarStoreFormattedLib/NvVarStoreFormattedLib.inf NULL|MdeModulePkg/Library/VarCheckUefiLib/VarCheckUefiLib.inf BaseMemoryLib|MdePkg/Library/BaseMemoryLib/BaseMemoryLib.inf } MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf # # ACPI Support # MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf !ifndef DYNAMIC_TABLES_FRAMEWORK Platform/ARM/JunoPkg/AcpiTables/AcpiTables.inf !endif MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf ArmPkg/Drivers/ArmGic/ArmGicDxe.inf Platform/ARM/Drivers/NorFlashDxe/NorFlashDxe.inf ArmPkg/Drivers/TimerDxe/TimerDxe.inf ArmPkg/Drivers/GenericWatchdogDxe/GenericWatchdogDxe.inf # # Firmware Performance Data Table (FPDT) # MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCodeRouterRuntimeDxe.inf MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableDxe/FirmwarePerformanceDxe.inf { LockBoxLib|MdeModulePkg/Library/LockBoxNullLib/LockBoxNullLib.inf } # # Semi-hosting filesystem # ArmPkg/Filesystem/SemihostFs/SemihostFs.inf # # FAT filesystem + GPT/MBR partitioning # MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf FatPkg/EnhancedFatDxe/Fat.inf # Required by PCI ArmPkg/Drivers/ArmPciCpuIo2Dxe/ArmPciCpuIo2Dxe.inf # # PCI Support # MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf # # SATA Controller # MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf Platform/ARM/JunoPkg/Drivers/SataSiI3132Dxe/SataSiI3132Dxe.inf # # NVMe boot devices # MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf # # Networking stack # Platform/ARM/VExpressPkg/Drivers/Lan9118Dxe/Lan9118Dxe.inf !if 0 OptionRomPkg/MarvellYukonDxe/MarvellYukonDxe.inf !endif # # Usb Support # MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe.inf MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf MdeModulePkg/Bus/Usb/UsbMouseDxe/UsbMouseDxe.inf MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceDxe.inf !ifndef HEADLESS_PLATFORM # Graphic Output Protocol ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/LcdGraphicsOutputDxe.inf !endif # # Juno platform driver # Platform/ARM/JunoPkg/Drivers/ArmJunoDxe/ArmJunoDxe.inf # # SMBIOS/DMI # MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf Platform/ARM/JunoPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.inf # # Bds # MdeModulePkg/Universal/BootManagerPolicyDxe/BootManagerPolicyDxe.inf MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf MdeModulePkg/Universal/BdsDxe/BdsDxe.inf MdeModulePkg/Application/UiApp/UiApp.inf { NULL|MdeModulePkg/Library/BootDiscoveryPolicyUiLib/BootDiscoveryPolicyUiLib.inf NULL|MdeModulePkg/Library/DeviceManagerUiLib/DeviceManagerUiLib.inf NULL|MdeModulePkg/Library/BootManagerUiLib/BootManagerUiLib.inf NULL|MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenanceManagerUiLib.inf } # # FDT installation # Platform/ARM/Drivers/FdtPlatformDxe/FdtPlatformDxe.inf { BdsLib|Platform/ARM/Library/BdsLib/BdsLib.inf } # SCMI Driver ArmPkg/Drivers/ArmScmiDxe/ArmScmiDxe.inf [Components.AARCH64] # # EBC # MdeModulePkg/Universal/EbcDxe/EbcDxe.inf