1#
2#  Copyright (c) 2013-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# Defines Section - statements that will be processed to create a Makefile.
17#
18################################################################################
19[Defines]
20  PLATFORM_NAME                  = ArmJuno
21  PLATFORM_GUID                  = ca0722fd-7d3d-45ea-948c-d62b2199807d
22  PLATFORM_VERSION               = 0.1
23  DSC_SPECIFICATION              = 0x00010005
24  OUTPUT_DIRECTORY               = Build/ArmJuno
25  SUPPORTED_ARCHITECTURES        = AARCH64|ARM
26  BUILD_TARGETS                  = DEBUG|RELEASE
27  SKUID_IDENTIFIER               = DEFAULT
28  FLASH_DEFINITION               = ArmPlatformPkg/ArmJunoPkg/ArmJuno.fdf
29
30# On RTSM, most peripherals are VExpress Motherboard peripherals
31!include ArmPlatformPkg/ArmVExpressPkg/ArmVExpress.dsc.inc
32
33[LibraryClasses.common]
34  ArmPlatformLib|ArmPlatformPkg/ArmJunoPkg/Library/ArmJunoLib/ArmJunoLib.inf
35  ArmSmcLib|ArmPkg/Library/ArmSmcLib/ArmSmcLib.inf
36
37  ArmPlatformSysConfigLib|ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressSysConfigLib/ArmVExpressSysConfigLib.inf
38  NorFlashPlatformLib|ArmPlatformPkg/ArmJunoPkg/Library/NorFlashJunoLib/NorFlashJunoLib.inf
39  EfiResetSystemLib|ArmPkg/Library/ArmPsciResetSystemLib/ArmPsciResetSystemLib.inf
40
41  TimerLib|ArmPkg/Library/ArmArchTimerLib/ArmArchTimerLib.inf
42
43  # USB Requirements
44  UefiUsbLib|MdePkg/Library/UefiUsbLib/UefiUsbLib.inf
45
46[LibraryClasses.ARM]
47  ArmLib|ArmPkg/Library/ArmLib/ArmV7/ArmV7Lib.inf
48
49[LibraryClasses.AARCH64]
50  ArmLib|ArmPkg/Library/ArmLib/AArch64/AArch64Lib.inf
51
52[LibraryClasses.common.SEC]
53  PrePiLib|EmbeddedPkg/Library/PrePiLib/PrePiLib.inf
54  ExtractGuidedSectionLib|EmbeddedPkg/Library/PrePiExtractGuidedSectionLib/PrePiExtractGuidedSectionLib.inf
55  LzmaDecompressLib|MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf
56  MemoryAllocationLib|EmbeddedPkg/Library/PrePiMemoryAllocationLib/PrePiMemoryAllocationLib.inf
57  HobLib|EmbeddedPkg/Library/PrePiHobLib/PrePiHobLib.inf
58  PrePiHobListPointerLib|ArmPlatformPkg/Library/PrePiHobListPointerLib/PrePiHobListPointerLib.inf
59  PerformanceLib|MdeModulePkg/Library/PeiPerformanceLib/PeiPerformanceLib.inf
60  PlatformPeiLib|ArmPlatformPkg/PlatformPei/PlatformPeiLib.inf
61
62[LibraryClasses.common.SEC, LibraryClasses.common.PEIM]
63  MemoryInitPeiLib|ArmPlatformPkg/MemoryInitPei/MemoryInitPeiLib.inf
64
65[LibraryClasses.common.UEFI_DRIVER, LibraryClasses.common.UEFI_APPLICATION, LibraryClasses.common.DXE_RUNTIME_DRIVER, LibraryClasses.common.DXE_DRIVER]
66  PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
67
68[BuildOptions]
69  *_*_*_PLATFORM_FLAGS == -I$(WORKSPACE)/ArmPlatformPkg/ArmVExpressPkg/Include -I$(WORKSPACE)/ArmPlatformPkg/ArmJunoPkg/Include
70
71################################################################################
72#
73# Pcd Section - list of all EDK II PCD Entries defined by this Platform
74#
75################################################################################
76
77[PcdsFeatureFlag.common]
78  gArmPlatformTokenSpaceGuid.PcdSystemMemoryInitializeInSec|TRUE
79
80  ## If TRUE, Graphics Output Protocol will be installed on virtual handle created by ConsplitterDxe.
81  #  It could be set FALSE to save size.
82  gEfiMdeModulePkgTokenSpaceGuid.PcdConOutGopSupport|TRUE
83
84  gEfiMdeModulePkgTokenSpaceGuid.PcdTurnOffUsbLegacySupport|TRUE
85
86[PcdsFixedAtBuild.common]
87  gArmPlatformTokenSpaceGuid.PcdFirmwareVendor|"ARM Juno"
88  gEmbeddedTokenSpaceGuid.PcdEmbeddedPrompt|"ArmJuno"
89
90  #
91  # NV Storage PCDs. Use base of 0x08000000 for NOR0
92  #
93  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase|0x0BFC0000
94  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize|0x00010000
95  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase|0x0BFD0000
96  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize|0x00010000
97  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|0x0BFE0000
98  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize|0x00010000
99
100  # System Memory (2GB - 16MB of Trusted DRAM at the top of the 32bit address space)
101  gArmTokenSpaceGuid.PcdSystemMemoryBase|0x80000000
102  gArmTokenSpaceGuid.PcdSystemMemorySize|0x7F000000
103
104  # Juno Dual-Cluster profile
105  gArmPlatformTokenSpaceGuid.PcdCoreCount|6
106  gArmPlatformTokenSpaceGuid.PcdClusterCount|2
107
108  gArmTokenSpaceGuid.PcdVFPEnabled|1
109
110  #
111  # ARM PrimeCell
112  #
113
114  ## PL011 - Serial Terminal
115  gEfiMdeModulePkgTokenSpaceGuid.PcdSerialRegisterBase|0x7FF80000
116  gEfiMdePkgTokenSpaceGuid.PcdUartDefaultBaudRate|115200
117  gArmPlatformTokenSpaceGuid.PL011UartInteger|4
118  gArmPlatformTokenSpaceGuid.PL011UartFractional|0
119
120  ## PL031 RealTimeClock
121  gArmPlatformTokenSpaceGuid.PcdPL031RtcBase|0x1C170000
122
123  # LAN9118 Ethernet Driver
124  gEmbeddedTokenSpaceGuid.PcdLan9118DxeBaseAddress|0x18000000
125  gEmbeddedTokenSpaceGuid.PcdLan9118DefaultMacAddress|0x1215161822242628
126
127  #
128  # ARM General Interrupt Controller
129  #
130  gArmTokenSpaceGuid.PcdGicDistributorBase|0x2C010000
131  gArmTokenSpaceGuid.PcdGicInterruptInterfaceBase|0x2C02F000
132
133  #
134  # PLDA PCI Root Complex
135  #
136  gArmPlatformTokenSpaceGuid.PcdPciBusMax|255
137  gArmPlatformTokenSpaceGuid.PcdPciIoBase|0x5f800000
138  gArmPlatformTokenSpaceGuid.PcdPciIoSize|0x00800000
139  gArmPlatformTokenSpaceGuid.PcdPciMmio32Base|0x50000000
140  gArmPlatformTokenSpaceGuid.PcdPciMmio32Size|0x08000000
141  gArmPlatformTokenSpaceGuid.PcdPciMmio64Base|0x4000000000
142  gArmPlatformTokenSpaceGuid.PcdPciMmio64Size|0x100000000
143
144  # List of Device Paths that support BootMonFs
145  gArmPlatformTokenSpaceGuid.PcdBootMonFsSupportedDevicePaths|L"VenHw(E7223039-5836-41E1-B542-D7EC736C5E59)"
146
147  #
148  # ARM OS Loader
149  #
150  # Support the Linux EFI stub by default
151  gArmPlatformTokenSpaceGuid.PcdDefaultBootDescription|L"EFI Linux from NOR Flash"
152  gArmPlatformTokenSpaceGuid.PcdDefaultBootDevicePath|L"VenHw(E7223039-5836-41E1-B542-D7EC736C5E59)/Image"
153  gArmPlatformTokenSpaceGuid.PcdDefaultBootArgument|L"console=ttyAMA0,115200 earlycon=pl011,0x7ff80000 root=/dev/sda1 rootwait verbose debug"
154
155  # Use the serial console (ConIn & ConOut) and the Graphic driver (ConOut)
156  gArmPlatformTokenSpaceGuid.PcdDefaultConOutPaths|L"VenHw(D3987D4B-971A-435F-8CAF-4967EB627241)/Uart(115200,8,N,1)/VenPcAnsi();VenHw(CE660500-824D-11E0-AC72-0002A5D5C51B)"
157  gArmPlatformTokenSpaceGuid.PcdDefaultConInPaths|L"VenHw(D3987D4B-971A-435F-8CAF-4967EB627241)/Uart(115200,8,N,1)/VenPcAnsi()"
158
159  #
160  # ARM Architectural Timer Frequency
161  #
162  gArmTokenSpaceGuid.PcdArmArchTimerFreqInHz|50000000
163  gEmbeddedTokenSpaceGuid.PcdMetronomeTickPeriod|1000
164
165[PcdsPatchableInModule]
166  # Console Resolution (Full HD)
167  gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution|1920
168  gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution|1080
169
170[PcdsDynamicDefault.common]
171  #
172  # The size of a dynamic PCD of the (VOID*) type can not be increased at run
173  # time from its size at build time. Set the "PcdFdtDevicePaths" PCD to a 128
174  # character "empty" string, to allow to be able to set FDT text device paths
175  # up to 128 characters long.
176  #
177  gEmbeddedTokenSpaceGuid.PcdFdtDevicePaths|L"                                                                                                                                "
178
179  # Not all Juno platforms support PCI. This dynamic PCD disables or enable
180  # PCI support.
181  gEfiMdeModulePkgTokenSpaceGuid.PcdPciDisableBusEnumeration|TRUE
182
183################################################################################
184#
185# Components Section - list of all EDK II Modules needed by this Platform
186#
187################################################################################
188[Components.common]
189  #
190  # PEI Phase modules
191  #
192  ArmPlatformPkg/PrePi/PeiMPCore.inf
193
194  #
195  # DXE
196  #
197  MdeModulePkg/Core/Dxe/DxeMain.inf {
198    <LibraryClasses>
199      PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
200      NULL|MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.inf
201  }
202
203  #
204  # Architectural Protocols
205  #
206  ArmPkg/Drivers/CpuDxe/CpuDxe.inf
207  MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
208  MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
209  MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf
210  MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf
211  EmbeddedPkg/ResetRuntimeDxe/ResetRuntimeDxe.inf
212  EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf
213  EmbeddedPkg/MetronomeDxe/MetronomeDxe.inf
214
215  MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf
216  MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf
217  MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf
218  MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
219  MdeModulePkg/Universal/SerialDxe/SerialDxe.inf
220
221  MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf {
222    <LibraryClasses>
223      NULL|MdeModulePkg/Library/VarCheckUefiLib/VarCheckUefiLib.inf
224  }
225  MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf
226
227  #
228  # ACPI Support
229  #
230  MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf
231  ArmPlatformPkg/ArmJunoPkg/AcpiTables/AcpiTables.inf
232
233  MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf
234
235  ArmPkg/Drivers/ArmGic/ArmGicDxe.inf
236  ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe.inf
237  ArmPkg/Drivers/TimerDxe/TimerDxe.inf
238  ArmPkg/Drivers/GenericWatchdogDxe/GenericWatchdogDxe.inf
239
240  #
241  # Semi-hosting filesystem
242  #
243  ArmPkg/Filesystem/SemihostFs/SemihostFs.inf
244
245  #
246  # FAT filesystem + GPT/MBR partitioning
247  #
248  MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf
249  MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf
250  MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf
251
252  # Required by PCI
253  UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf
254
255  #
256  # PCI Support
257  #
258  MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf
259  ArmPlatformPkg/ArmJunoPkg/Drivers/PciHostBridgeDxe/PciHostBridgeDxe.inf
260
261  #
262  # SATA Controller
263  #
264  MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf
265  EmbeddedPkg/Drivers/SataSiI3132Dxe/SataSiI3132Dxe.inf
266
267  #
268  # Networking stack
269  #
270  EmbeddedPkg/Drivers/Lan9118Dxe/Lan9118Dxe.inf
271
272  #
273  # Usb Support
274  #
275  MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe.inf
276  MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf
277  MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf
278  MdeModulePkg/Bus/Usb/UsbMouseDxe/UsbMouseDxe.inf
279  MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf
280
281  #
282  # Juno platform driver
283  #
284  ArmPlatformPkg/ArmJunoPkg/Drivers/ArmJunoDxe/ArmJunoDxe.inf
285
286  #
287  # Bds
288  #
289  MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf
290  ArmPlatformPkg/Bds/Bds.inf
291
292