Home | History | Annotate | Download | only in VExpress
      1 #
      2 #  Copyright (c) 2011-2015, ARM Limited. All rights reserved.
      3 #
      4 #  This program and the accompanying materials
      5 #  are licensed and made available under the terms and conditions of the BSD License
      6 #  which accompanies this distribution.  The full text of the license may be found at
      7 #  http://opensource.org/licenses/bsd-license.php
      8 #
      9 #  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     10 #  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     11 #
     12 #
     13 
     14 ################################################################################
     15 #
     16 # Defines Section - statements that will be processed to create a Makefile.
     17 #
     18 ################################################################################
     19 [Defines]
     20   PLATFORM_NAME                  = ArmVExpressPkg-RTSM-A15_MPCore
     21   PLATFORM_GUID                  = 3a91a0f8-3af4-409d-a71d-a199dc134357
     22   PLATFORM_VERSION               = 0.1
     23   DSC_SPECIFICATION              = 0x00010005
     24   OUTPUT_DIRECTORY               = Build/ArmVExpress-RTSM-A15_MPCore
     25   SUPPORTED_ARCHITECTURES        = ARM
     26   BUILD_TARGETS                  = DEBUG|RELEASE
     27   SKUID_IDENTIFIER               = DEFAULT
     28   FLASH_DEFINITION               = OpenPlatformPkg/Platforms/ARM/VExpress/ArmVExpress-RTSM-A15_MPCore.fdf
     29 
     30 !include OpenPlatformPkg/Platforms/ARM/VExpress/ArmVExpress.dsc.inc
     31 
     32 [LibraryClasses.common]
     33   ArmLib|ArmPkg/Library/ArmLib/ArmV7/ArmV7Lib.inf
     34   ArmCpuLib|ArmPkg/Drivers/ArmCpuLib/ArmCortexA15Lib/ArmCortexA15Lib.inf
     35   ArmPlatformLib|ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/ArmVExpressLib.inf
     36 
     37   ArmPlatformSysConfigLib|ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressSysConfigLib/ArmVExpressSysConfigLib.inf
     38   NorFlashPlatformLib|ArmPlatformPkg/ArmVExpressPkg/Library/NorFlashArmVExpressLib/NorFlashArmVExpressLib.inf
     39   LcdPlatformLib|ArmPlatformPkg/ArmVExpressPkg/Library/PL111LcdArmVExpressLib/PL111LcdArmVExpressLib.inf
     40 
     41   #DebugAgentTimerLib|ArmPlatformPkg/ArmVExpressPkg/Library/DebugAgentTimerLib/DebugAgentTimerLib.inf
     42 
     43   TimerLib|ArmPkg/Library/ArmArchTimerLib/ArmArchTimerLib.inf
     44 
     45   # Virtio Support
     46   VirtioLib|OvmfPkg/Library/VirtioLib/VirtioLib.inf
     47   VirtioMmioDeviceLib|OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDeviceLib.inf
     48 
     49 [LibraryClasses.common.SEC]
     50   ArmLib|ArmPkg/Library/ArmLib/ArmV7/ArmV7LibSec.inf
     51   ArmPlatformSecLib|ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressSecLibRTSM/ArmVExpressSecLib.inf
     52   ArmPlatformLib|ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/ArmVExpressLibSec.inf
     53 
     54 [LibraryClasses.common.UEFI_DRIVER, LibraryClasses.common.UEFI_APPLICATION, LibraryClasses.common.DXE_RUNTIME_DRIVER, LibraryClasses.common.DXE_DRIVER]
     55   PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
     56 
     57 [BuildOptions]
     58   RVCT:*_*_ARM_PLATFORM_FLAGS == --cpu Cortex-A15 -I$(WORKSPACE)/ArmPlatformPkg/ArmVExpressPkg/Include -I$(WORKSPACE)/ArmPlatformPkg/ArmVExpressPkg/Include/Platform/RTSM
     59 
     60   GCC:*_*_ARM_PLATFORM_FLAGS == -mcpu=cortex-a15 -I$(WORKSPACE)/ArmPlatformPkg/ArmVExpressPkg/Include -I$(WORKSPACE)/ArmPlatformPkg/ArmVExpressPkg/Include/Platform/RTSM
     61 
     62   XCODE:*_*_ARM_PLATFORM_FLAGS = -I$(WORKSPACE)/ArmPlatformPkg/ArmVExpressPkg/Include -I$(WORKSPACE)/ArmPlatformPkg/ArmVExpressPkg/Include/Platform/RTSM
     63 
     64 ################################################################################
     65 #
     66 # Pcd Section - list of all EDK II PCD Entries defined by this Platform
     67 #
     68 ################################################################################
     69 
     70 [PcdsFeatureFlag.common]
     71 !ifdef EDK2_SKIP_PEICORE
     72   gArmPlatformTokenSpaceGuid.PcdSystemMemoryInitializeInSec|TRUE
     73   gArmPlatformTokenSpaceGuid.PcdSendSgiToBringUpSecondaryCores|TRUE
     74 !endif
     75 
     76   ## If TRUE, Graphics Output Protocol will be installed on virtual handle created by ConsplitterDxe.
     77   #  It could be set FALSE to save size.
     78   gEfiMdeModulePkgTokenSpaceGuid.PcdConOutGopSupport|TRUE
     79 
     80 [PcdsFixedAtBuild.common]
     81   gArmPlatformTokenSpaceGuid.PcdFirmwareVendor|"ARM Versatile Express"
     82   gEmbeddedTokenSpaceGuid.PcdEmbeddedPrompt|"ArmVExpress-RTSM"
     83 
     84   gArmPlatformTokenSpaceGuid.PcdCoreCount|2
     85 
     86   #
     87   # NV Storage PCDs. Use base of 0x0C000000 for NOR1
     88   #
     89 !if $(EDK2_ARMVE_SUPPORT_QEMU) == 1
     90   # QEMU only models a single flash block size, so use larger blocks
     91   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase|0x0FF00000
     92   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize|0x00040000
     93   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase|0x0FF40000
     94   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize|0x00040000
     95   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|0x0FF80000
     96   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize|0x00040000
     97 !else
     98   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase|0x0FFC0000
     99   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize|0x00010000
    100   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase|0x0FFD0000
    101   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize|0x00010000
    102   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|0x0FFE0000
    103   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize|0x00010000
    104 !endif
    105 
    106   gArmTokenSpaceGuid.PcdVFPEnabled|1
    107 
    108   # Stacks for MPCores in Secure World
    109   gArmPlatformTokenSpaceGuid.PcdCPUCoresSecStackBase|0x2E009000
    110   gArmPlatformTokenSpaceGuid.PcdCPUCoreSecPrimaryStackSize|0x1000
    111 
    112   # Stacks for MPCores in Monitor Mode
    113   gArmPlatformTokenSpaceGuid.PcdCPUCoresSecMonStackBase|0x2E008000
    114   gArmPlatformTokenSpaceGuid.PcdCPUCoreSecMonStackSize|0x100
    115 
    116   # Stacks for MPCores in Normal World
    117   gArmPlatformTokenSpaceGuid.PcdCPUCoresStackBase|0x2E000000
    118   gArmPlatformTokenSpaceGuid.PcdCPUCorePrimaryStackSize|0x4000
    119 
    120   # System Memory (1GB)
    121   gArmTokenSpaceGuid.PcdSystemMemoryBase|0x80000000
    122   gArmTokenSpaceGuid.PcdSystemMemorySize|0x40000000
    123 
    124   # Size of the region used by UEFI in permanent memory (Reserved 64MB)
    125   gArmPlatformTokenSpaceGuid.PcdSystemMemoryUefiRegionSize|0x04000000
    126 
    127   #
    128   # ARM Pcds
    129   #
    130   gArmTokenSpaceGuid.PcdArmUncachedMemoryMask|0x0000000040000000
    131 
    132   #
    133   # ARM PrimeCell
    134   #
    135 
    136   ## SP805 Watchdog - Motherboard Watchdog
    137   gArmPlatformTokenSpaceGuid.PcdSP805WatchdogBase|0x1C0F0000
    138 
    139   ## PL011 - Serial Terminal
    140   gEfiMdeModulePkgTokenSpaceGuid.PcdSerialRegisterBase|0x1c090000
    141   gEfiMdePkgTokenSpaceGuid.PcdUartDefaultBaudRate|38400
    142 
    143   ## PL031 RealTimeClock
    144   gArmPlatformTokenSpaceGuid.PcdPL031RtcBase|0x1C170000
    145 
    146   ## PL111 Versatile Express Motherboard controller
    147   gArmPlatformTokenSpaceGuid.PcdPL111LcdBase|0x1C1F0000
    148 
    149   ## PL180 MMC/SD card controller
    150   gArmPlatformTokenSpaceGuid.PcdPL180SysMciRegAddress|0x1C010048
    151   gArmPlatformTokenSpaceGuid.PcdPL180MciBaseAddress|0x1C050000
    152 
    153   #
    154   # ARM General Interrupt Controller
    155   #
    156   gArmTokenSpaceGuid.PcdGicDistributorBase|0x2C001000
    157   gArmTokenSpaceGuid.PcdGicInterruptInterfaceBase|0x2C002000
    158 
    159   #
    160   # ARM OS Loader
    161   #
    162   gArmPlatformTokenSpaceGuid.PcdDefaultBootDescription|L"Linux from SemiHosting"
    163   gArmPlatformTokenSpaceGuid.PcdDefaultBootDevicePath|L"Fv(12C68BE9-0996-49D3-8C5B-4957379027EE)/LinuxLoader.efi"
    164   gArmPlatformTokenSpaceGuid.PcdDefaultBootArgument|L"VenHw(C5B9C74A-6D72-4719-99AB-C59F199091EB)/Image -c \"console=ttyAMA0,38400 earlyprintk debug verbose\""
    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   gArmTokenSpaceGuid.PcdArmArchTimerFreqInHz|100000000
    174 
    175 [PcdsDynamicDefault.common]
    176   #
    177   # The size of a dynamic PCD of the (VOID*) type can not be increased at run
    178   # time from its size at build time. Set the "PcdFdtDevicePaths" PCD to a 128
    179   # character "empty" string, to allow to be able to set FDT text device paths
    180   # up to 128 characters long.
    181   #
    182   gEmbeddedTokenSpaceGuid.PcdFdtDevicePaths|L"                                                                                                                                "
    183 
    184 ################################################################################
    185 #
    186 # Components Section - list of all EDK II Modules needed by this Platform
    187 #
    188 ################################################################################
    189 [Components.common]
    190 
    191   #
    192   # SEC
    193   #
    194   ArmPlatformPkg/Sec/Sec.inf {
    195     <LibraryClasses>
    196       # Use the implementation which set the Secure bits
    197       ArmGicLib|ArmPkg/Drivers/ArmGic/ArmGicSecLib.inf
    198   }
    199 
    200   #
    201   # PEI Phase modules
    202   #
    203 !ifdef EDK2_SKIP_PEICORE
    204   ArmPlatformPkg/PrePi/PeiMPCore.inf {
    205     <LibraryClasses>
    206       ArmLib|ArmPkg/Library/ArmLib/ArmV7/ArmV7Lib.inf
    207       ArmPlatformLib|ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/ArmVExpressLib.inf
    208   }
    209 !else
    210   ArmPlatformPkg/PrePeiCore/PrePeiCoreMPCore.inf
    211   MdeModulePkg/Core/Pei/PeiMain.inf
    212   MdeModulePkg/Universal/PCD/Pei/Pcd.inf  {
    213     <LibraryClasses>
    214       PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
    215   }
    216   ArmPlatformPkg/PlatformPei/PlatformPeim.inf
    217   ArmPlatformPkg/MemoryInitPei/MemoryInitPeim.inf
    218   ArmPkg/Drivers/CpuPei/CpuPei.inf
    219   IntelFrameworkModulePkg/Universal/StatusCode/Pei/StatusCodePei.inf
    220   Nt32Pkg/BootModePei/BootModePei.inf
    221   MdeModulePkg/Universal/Variable/Pei/VariablePei.inf
    222   MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf {
    223     <LibraryClasses>
    224       NULL|MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf
    225   }
    226 !endif
    227 
    228   #
    229   # DXE
    230   #
    231   MdeModulePkg/Core/Dxe/DxeMain.inf {
    232     <LibraryClasses>
    233       PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
    234       NULL|MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.inf
    235   }
    236 
    237   #
    238   # Architectural Protocols
    239   #
    240   ArmPkg/Drivers/CpuDxe/CpuDxe.inf
    241   MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
    242   MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
    243   MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf
    244   MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf
    245   MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf
    246   MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf
    247   EmbeddedPkg/ResetRuntimeDxe/ResetRuntimeDxe.inf
    248   EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf
    249   EmbeddedPkg/MetronomeDxe/MetronomeDxe.inf
    250 
    251   MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf
    252   MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf
    253   MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf
    254   MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
    255   MdeModulePkg/Universal/SerialDxe/SerialDxe.inf
    256 
    257   MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf
    258 
    259   ArmPkg/Drivers/ArmGic/ArmGicDxe.inf
    260   ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe.inf
    261   ArmPkg/Drivers/TimerDxe/TimerDxe.inf
    262   ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/PL111LcdGraphicsOutputDxe.inf
    263   ArmPlatformPkg/Drivers/SP805WatchdogDxe/SP805WatchdogDxe.inf
    264 
    265   #
    266   # Semi-hosting filesystem
    267   #
    268   ArmPkg/Filesystem/SemihostFs/SemihostFs.inf
    269 
    270   #
    271   # Multimedia Card Interface
    272   #
    273   EmbeddedPkg/Universal/MmcDxe/MmcDxe.inf
    274   ArmPlatformPkg/Drivers/PL180MciDxe/PL180MciDxe.inf
    275 
    276   #
    277   # Platform Driver
    278   #
    279   ArmPlatformPkg/ArmVExpressPkg/ArmVExpressDxe/ArmFvpDxe.inf
    280   OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
    281 
    282   #
    283   # FAT filesystem + GPT/MBR partitioning
    284   #
    285   MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf
    286   MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf
    287   MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf
    288 
    289   #
    290   # Bds
    291   #
    292   MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf
    293   ArmPlatformPkg/Bds/Bds.inf
    294