Home | History | Annotate | Download | only in ArmVExpressPkg
      1 #
      2 #  Copyright (c) 2011-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 #
     17 # Defines Section - statements that will be processed to create a Makefile.
     18 #
     19 ################################################################################
     20 [Defines]
     21   PLATFORM_NAME                  = ArmVExpress-FVP-AArch64
     22   PLATFORM_GUID                  = 0de70077-9b3b-43bf-ba38-0ea37d77141b
     23   PLATFORM_VERSION               = 0.1
     24   DSC_SPECIFICATION              = 0x00010005
     25   OUTPUT_DIRECTORY               = Build/ArmVExpress-FVP-AArch64
     26   SUPPORTED_ARCHITECTURES        = AARCH64
     27   BUILD_TARGETS                  = DEBUG|RELEASE
     28   SKUID_IDENTIFIER               = DEFAULT
     29   FLASH_DEFINITION               = ArmPlatformPkg/ArmVExpressPkg/ArmVExpress-FVP-AArch64.fdf
     30 
     31 !ifndef ARM_FVP_RUN_NORFLASH
     32   DEFINE EDK2_SKIP_PEICORE=1
     33 !endif
     34 
     35 
     36 !include ArmPlatformPkg/ArmVExpressPkg/ArmVExpress.dsc.inc
     37 
     38 [LibraryClasses.common]
     39   ArmLib|ArmPkg/Library/ArmLib/AArch64/AArch64Lib.inf
     40   ArmCpuLib|ArmPkg/Drivers/ArmCpuLib/ArmCortexAEMv8Lib/ArmCortexAEMv8Lib.inf
     41   ArmPlatformLib|ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/ArmVExpressLib.inf
     42 
     43   ArmPlatformSysConfigLib|ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressSysConfigLib/ArmVExpressSysConfigLib.inf
     44   NorFlashPlatformLib|ArmPlatformPkg/ArmVExpressPkg/Library/NorFlashArmVExpressLib/NorFlashArmVExpressLib.inf
     45   LcdPlatformLib|ArmPlatformPkg/ArmVExpressPkg/Library/PL111LcdArmVExpressLib/PL111LcdArmVExpressLib.inf
     46 
     47   TimerLib|ArmPkg/Library/ArmArchTimerLib/ArmArchTimerLib.inf
     48 
     49   # Virtio Support
     50   VirtioLib|OvmfPkg/Library/VirtioLib/VirtioLib.inf
     51   VirtioMmioDeviceLib|OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDeviceLib.inf
     52 
     53 [LibraryClasses.common.SEC]
     54   ArmLib|ArmPkg/Library/ArmLib/AArch64/AArch64LibSec.inf
     55   ArmPlatformSecLib|ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressSecLibRTSM/ArmVExpressSecLib.inf
     56   ArmPlatformLib|ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/ArmVExpressLibSec.inf
     57 
     58 [LibraryClasses.common.UEFI_DRIVER, LibraryClasses.common.UEFI_APPLICATION, LibraryClasses.common.DXE_RUNTIME_DRIVER, LibraryClasses.common.DXE_DRIVER]
     59   PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
     60 
     61 [BuildOptions]
     62   GCC:*_*_AARCH64_PLATFORM_FLAGS == -I$(WORKSPACE)/ArmPlatformPkg/ArmVExpressPkg/Include -I$(WORKSPACE)/ArmPlatformPkg/ArmVExpressPkg/Include/Platform/RTSM
     63 
     64 
     65 ################################################################################
     66 #
     67 # Pcd Section - list of all EDK II PCD Entries defined by this Platform
     68 #
     69 ################################################################################
     70 
     71 [PcdsFeatureFlag.common]
     72 
     73   ## If TRUE, Graphics Output Protocol will be installed on virtual handle created by ConsplitterDxe.
     74   #  It could be set FALSE to save size.
     75   gEfiMdeModulePkgTokenSpaceGuid.PcdConOutGopSupport|TRUE
     76 
     77 [PcdsFixedAtBuild.common]
     78   gArmPlatformTokenSpaceGuid.PcdFirmwareVendor|"ARM Fixed Virtual Platform"
     79   gEmbeddedTokenSpaceGuid.PcdEmbeddedPrompt|"ARM-FVP"
     80 
     81   # Up to 8 cores on Base models. This works fine if model happens to have less.
     82   gArmPlatformTokenSpaceGuid.PcdCoreCount|8
     83   gArmPlatformTokenSpaceGuid.PcdClusterCount|2
     84 
     85   #
     86   # NV Storage PCDs. Use base of 0x0C000000 for NOR1
     87   #
     88   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase|0x0FFC0000
     89   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize|0x00010000
     90   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase|0x0FFD0000
     91   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize|0x00010000
     92   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|0x0FFE0000
     93   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize|0x00010000
     94 
     95   gArmTokenSpaceGuid.PcdVFPEnabled|1
     96 
     97   # FVP models can have 2 clusters with 4 cpus each
     98   # Stacks for MPCores in Secure World
     99   # Trusted SRAM (DRAM on Foundation model)
    100   gArmPlatformTokenSpaceGuid.PcdCPUCoresSecStackBase|0x04000000
    101   gArmPlatformTokenSpaceGuid.PcdCPUCoreSecPrimaryStackSize|0x1000
    102   gArmPlatformTokenSpaceGuid.PcdCPUCoreSecSecondaryStackSize|0x800
    103 
    104   # Stacks for MPCores in Normal World
    105   # Non-Trusted SRAM
    106   gArmPlatformTokenSpaceGuid.PcdCPUCoresStackBase|0x2E000000
    107   gArmPlatformTokenSpaceGuid.PcdCPUCorePrimaryStackSize|0x4000
    108   gArmPlatformTokenSpaceGuid.PcdCPUCoreSecondaryStackSize|0x1000
    109 
    110   # System Memory (2GB - 16MB of Trusted DRAM at the top of the 32bit address space)
    111   gArmTokenSpaceGuid.PcdSystemMemoryBase|0x80000000
    112   gArmTokenSpaceGuid.PcdSystemMemorySize|0x7F000000
    113 
    114   # Size of the region used by UEFI in permanent memory (Reserved 64MB)
    115   gArmPlatformTokenSpaceGuid.PcdSystemMemoryUefiRegionSize|0x04000000
    116 
    117   #
    118   # ARM Pcds
    119   #
    120   gArmTokenSpaceGuid.PcdArmUncachedMemoryMask|0x0000000040000000
    121 
    122   ## Trustzone enable (to make the transition from EL3 to NS EL2 in ArmPlatformPkg/Sec)
    123   gArmTokenSpaceGuid.PcdTrustzoneSupport|TRUE
    124 
    125   #
    126   # ARM PrimeCell
    127   #
    128 
    129   ## SP805 Watchdog - Motherboard Watchdog at 24MHz
    130   gArmPlatformTokenSpaceGuid.PcdSP805WatchdogBase|0x1C0F0000
    131   gArmPlatformTokenSpaceGuid.PcdSP805WatchdogClockFrequencyInHz|24000000
    132 
    133   ## PL011 - Serial Terminal
    134   gEfiMdeModulePkgTokenSpaceGuid.PcdSerialRegisterBase|0x1c090000
    135   gEfiMdePkgTokenSpaceGuid.PcdUartDefaultBaudRate|38400
    136 
    137   ## PL031 RealTimeClock
    138   gArmPlatformTokenSpaceGuid.PcdPL031RtcBase|0x1C170000
    139 
    140   ## PL111 Versatile Express Motherboard controller
    141   gArmPlatformTokenSpaceGuid.PcdPL111LcdBase|0x1C1F0000
    142 
    143   ## PL180 MMC/SD card controller
    144   gArmPlatformTokenSpaceGuid.PcdPL180SysMciRegAddress|0x1C010048
    145   gArmPlatformTokenSpaceGuid.PcdPL180MciBaseAddress|0x1C050000
    146 
    147   #
    148   # ARM General Interrupt Controller
    149   #
    150 !ifdef ARM_FVP_LEGACY_GICV2_LOCATION
    151   gArmTokenSpaceGuid.PcdGicDistributorBase|0x2C001000
    152   gArmTokenSpaceGuid.PcdGicInterruptInterfaceBase|0x2C002000
    153 !else
    154   gArmTokenSpaceGuid.PcdGicDistributorBase|0x2f000000
    155   gArmTokenSpaceGuid.PcdGicRedistributorsBase|0x2f100000
    156   gArmTokenSpaceGuid.PcdGicInterruptInterfaceBase|0x2C000000
    157 !endif
    158 
    159   #
    160   # ARM OS Loader
    161   #
    162   gArmPlatformTokenSpaceGuid.PcdDefaultBootDescription|L"Linux from SemiHosting"
    163   gArmPlatformTokenSpaceGuid.PcdDefaultBootDevicePath|L"Fv(87940482-FC81-41C3-87E6-399CF85AC8A0)/LinuxLoader.efi"
    164   gArmPlatformTokenSpaceGuid.PcdDefaultBootArgument|L"VenHw(C5B9C74A-6D72-4719-99AB-C59F199091EB)/Image -f VenHw(C5B9C74A-6D72-4719-99AB-C59F199091EB)/filesystem.cpio.gz -c \"console=ttyAMA0 earlycon=pl011,0x1c090000 debug user_debug=31 loglevel=9\""
    165 
    166   # Use the serial console (ConIn & ConOut) and the Graphic driver (ConOut)
    167   gArmPlatformTokenSpaceGuid.PcdDefaultConOutPaths|L"VenHw(D3987D4B-971A-435F-8CAF-4967EB627241)/Uart(38400,8,N,1)/VenPcAnsi();VenHw(407B4008-BF5B-11DF-9547-CF16E0D72085)"
    168   gArmPlatformTokenSpaceGuid.PcdDefaultConInPaths|L"VenHw(D3987D4B-971A-435F-8CAF-4967EB627241)/Uart(38400,8,N,1)/VenPcAnsi()"
    169 
    170   #
    171   # ARM Architectural Timer Frequency
    172   #
    173   # Set tick frequency value to 100Mhz
    174   gArmTokenSpaceGuid.PcdArmArchTimerFreqInHz|100000000
    175 
    176 [PcdsDynamicDefault.common]
    177   #
    178   # The size of a dynamic PCD of the (VOID*) type can not be increased at run
    179   # time from its size at build time. Set the "PcdFdtDevicePaths" PCD to a 128
    180   # character "empty" string, to allow to be able to set FDT text device paths
    181   # up to 128 characters long.
    182   #
    183   gEmbeddedTokenSpaceGuid.PcdFdtDevicePaths|L"                                                                                                                                "
    184 
    185 ################################################################################
    186 #
    187 # Components Section - list of all EDK II Modules needed by this Platform
    188 #
    189 ################################################################################
    190 [Components.common]
    191 
    192   #
    193   # SEC
    194   #
    195   ArmPlatformPkg/Sec/Sec.inf {
    196     <LibraryClasses>
    197       # Use the implementation which set the Secure bits
    198       ArmGicLib|ArmPkg/Drivers/ArmGic/ArmGicSecLib.inf
    199   }
    200 
    201   #
    202   # PEI Phase modules
    203   #
    204 !ifdef EDK2_SKIP_PEICORE
    205   # UEFI is placed in RAM by bootloader
    206   ArmPlatformPkg/PrePi/PeiMPCore.inf {
    207     <LibraryClasses>
    208       ArmLib|ArmPkg/Library/ArmLib/AArch64/AArch64Lib.inf
    209       ArmPlatformLib|ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/ArmVExpressLib.inf
    210   }
    211 !else
    212   # UEFI lives in FLASH and copies itself to RAM
    213   ArmPlatformPkg/PrePeiCore/PrePeiCoreMPCore.inf
    214   MdeModulePkg/Core/Pei/PeiMain.inf
    215   MdeModulePkg/Universal/PCD/Pei/Pcd.inf  {
    216     <LibraryClasses>
    217       PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
    218   }
    219   ArmPlatformPkg/PlatformPei/PlatformPeim.inf
    220   ArmPlatformPkg/MemoryInitPei/MemoryInitPeim.inf
    221   ArmPkg/Drivers/CpuPei/CpuPei.inf
    222   IntelFrameworkModulePkg/Universal/StatusCode/Pei/StatusCodePei.inf
    223   Nt32Pkg/BootModePei/BootModePei.inf
    224   MdeModulePkg/Universal/Variable/Pei/VariablePei.inf
    225   MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf {
    226     <LibraryClasses>
    227       NULL|MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf
    228   }
    229 !endif
    230 
    231   #
    232   # DXE
    233   #
    234   MdeModulePkg/Core/Dxe/DxeMain.inf {
    235     <LibraryClasses>
    236       PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
    237       NULL|MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.inf
    238   }
    239 
    240   #
    241   # Architectural Protocols
    242   #
    243   ArmPkg/Drivers/CpuDxe/CpuDxe.inf
    244   MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
    245 !if $(SECURE_BOOT_ENABLE) == TRUE
    246   MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf {
    247     <LibraryClasses>
    248       NULL|SecurityPkg/Library/DxeImageVerificationLib/DxeImageVerificationLib.inf
    249   }
    250   SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigDxe.inf
    251 !else
    252   MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
    253 !endif
    254   MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf
    255   MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf {
    256     <LibraryClasses>
    257       NULL|MdeModulePkg/Library/VarCheckUefiLib/VarCheckUefiLib.inf
    258   }
    259   MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf
    260   MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf
    261   EmbeddedPkg/ResetRuntimeDxe/ResetRuntimeDxe.inf
    262   EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf
    263   EmbeddedPkg/MetronomeDxe/MetronomeDxe.inf
    264 
    265   MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf
    266   MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf
    267   MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf
    268   MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
    269   MdeModulePkg/Universal/SerialDxe/SerialDxe.inf
    270 
    271   MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf
    272 
    273   ArmPkg/Drivers/ArmGic/ArmGicDxe.inf
    274 !if $(SECURE_BOOT_ENABLE) == TRUE
    275   ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashAuthenticatedDxe.inf
    276 !else
    277   ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe.inf
    278 !endif
    279   ArmPkg/Drivers/TimerDxe/TimerDxe.inf
    280   ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/PL111LcdGraphicsOutputDxe.inf
    281   ArmPlatformPkg/Drivers/SP805WatchdogDxe/SP805WatchdogDxe.inf
    282 
    283   #
    284   # Semi-hosting filesystem
    285   #
    286   ArmPkg/Filesystem/SemihostFs/SemihostFs.inf
    287 
    288   #
    289   # Multimedia Card Interface
    290   #
    291   EmbeddedPkg/Universal/MmcDxe/MmcDxe.inf
    292   ArmPlatformPkg/Drivers/PL180MciDxe/PL180MciDxe.inf
    293 
    294   #
    295   # Platform Driver
    296   #
    297   ArmPlatformPkg/ArmVExpressPkg/ArmVExpressDxe/ArmFvpDxe.inf
    298   OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
    299 
    300   #
    301   # FAT filesystem + GPT/MBR partitioning
    302   #
    303   MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf
    304   MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf
    305   MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf
    306 
    307   #
    308   # Bds
    309   #
    310   MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf
    311 !if $(USE_ARM_BDS) == TRUE
    312   ArmPlatformPkg/Bds/Bds.inf
    313 !else
    314   MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf
    315   MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf
    316   IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe.inf
    317 !endif
    318