Home | History | Annotate | Download | only in HiKey
      1 #
      2 #  Copyright (c) 2014-2015, Linaro Limited. All rights reserved.
      3 #  Copyright (c) 2014-2015, Hisilicon Limited. All rights reserved.
      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 # FD Section
     17 # The [FD] Section is made up of the definition statements and a
     18 # description of what goes into  the Flash Device Image.  Each FD section
     19 # defines one flash "device" image.  A flash device image may be one of
     20 # the following: Removable media bootable image (like a boot floppy
     21 # image,) an Option ROM image (that would be "flashed" into an add-in
     22 # card,) a System "Flash"  image (that would be burned into a system's
     23 # flash) or an Update ("Capsule") image that will be used to update and
     24 # existing system flash.
     25 #
     26 ################################################################################
     27 
     28 [FD.BL33_AP_UEFI]
     29 BaseAddress   = 0x35000000|gArmTokenSpaceGuid.PcdFdBaseAddress  # The base address of the Firmware in NOR Flash.
     30 Size          = 0x000F0000|gArmTokenSpaceGuid.PcdFdSize         # The size in bytes of the FLASH Device
     31 ErasePolarity = 1
     32 
     33 # This one is tricky, it must be: BlockSize * NumBlocks = Size
     34 BlockSize     = 0x00001000
     35 NumBlocks     = 0xF0
     36 
     37 ################################################################################
     38 #
     39 # Following are lists of FD Region layout which correspond to the locations of different
     40 # images within the flash device.
     41 #
     42 # Regions must be defined in ascending order and may not overlap.
     43 #
     44 # A Layout Region start with a eight digit hex offset (leading "0x" required) followed by
     45 # the pipe "|" character, followed by the size of the region, also in hex with the leading
     46 # "0x" characters. Like:
     47 # Offset|Size
     48 # PcdOffsetCName|PcdSizeCName
     49 # RegionType <FV, DATA, or FILE>
     50 #
     51 ################################################################################
     52 
     53 0x00000000|0x000F0000
     54 gArmTokenSpaceGuid.PcdFvBaseAddress|gArmTokenSpaceGuid.PcdFvSize
     55 FV = FVMAIN_COMPACT
     56 
     57 
     58 ################################################################################
     59 #
     60 # FV Section
     61 #
     62 # [FV] section is used to define what components or modules are placed within a flash
     63 # device file.  This section also defines order the components and modules are positioned
     64 # within the image.  The [FV] section consists of define statements, set statements and
     65 # module statements.
     66 #
     67 ################################################################################
     68 
     69 [FV.FvMain]
     70 BlockSize          = 0x40
     71 NumBlocks          = 0         # This FV gets compressed so make it just big enough
     72 FvAlignment        = 8         # FV alignment and FV attributes setting.
     73 ERASE_POLARITY     = 1
     74 MEMORY_MAPPED      = TRUE
     75 STICKY_WRITE       = TRUE
     76 LOCK_CAP           = TRUE
     77 LOCK_STATUS        = TRUE
     78 WRITE_DISABLED_CAP = TRUE
     79 WRITE_ENABLED_CAP  = TRUE
     80 WRITE_STATUS       = TRUE
     81 WRITE_LOCK_CAP     = TRUE
     82 WRITE_LOCK_STATUS  = TRUE
     83 READ_DISABLED_CAP  = TRUE
     84 READ_ENABLED_CAP   = TRUE
     85 READ_STATUS        = TRUE
     86 READ_LOCK_CAP      = TRUE
     87 READ_LOCK_STATUS   = TRUE
     88 
     89   INF MdeModulePkg/Core/Dxe/DxeMain.inf
     90 
     91   #
     92   # PI DXE Drivers producing Architectural Protocols (EFI Services)
     93   #
     94   INF ArmPkg/Drivers/CpuDxe/CpuDxe.inf
     95   INF MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
     96   INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
     97   INF MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf
     98   INF EmbeddedPkg/EmbeddedMonotonicCounter/EmbeddedMonotonicCounter.inf
     99   INF EmbeddedPkg/ResetRuntimeDxe/ResetRuntimeDxe.inf
    100   INF EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf
    101   INF EmbeddedPkg/MetronomeDxe/MetronomeDxe.inf
    102 
    103   #
    104   # Multiple Console IO support
    105   #
    106   INF MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf
    107   INF MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
    108   INF MdeModulePkg/Universal/SerialDxe/SerialDxe.inf
    109 
    110   INF ArmPkg/Drivers/ArmGic/ArmGicDxe.inf
    111   INF ArmPkg/Drivers/TimerDxe/TimerDxe.inf
    112 
    113   INF MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf
    114 
    115   #
    116   # GPIO
    117   #
    118   INF ArmPlatformPkg/Drivers/PL061GpioDxe/PL061GpioDxe.inf
    119   INF OpenPlatformPkg/Platforms/Hisilicon/HiKey/HiKeyGpio/HiKeyGpio.inf
    120 
    121   #
    122   # Multimedia Card Interface
    123   #
    124   INF EmbeddedPkg/Universal/MmcDxe/MmcDxe.inf
    125   INF OpenPlatformPkg/Drivers/Mmc/DwEmmcDxe/DwEmmcDxe.inf
    126   INF OpenPlatformPkg/Drivers/Mmc/DwSdDxe/DwSdDxe.inf
    127 
    128   #
    129   # USB Host Support
    130   #
    131   INF OpenPlatformPkg/Drivers/Usb/DwUsbHostDxe/DwUsbHostDxe.inf
    132   INF MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf
    133 
    134   #
    135   # USB Mass Storage Support
    136   #
    137   INF MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf
    138 
    139   #
    140   # USB Peripheral Support
    141   #
    142   INF EmbeddedPkg/Drivers/AndroidFastbootTransportUsbDxe/FastbootTransportUsbDxe.inf
    143   INF OpenPlatformPkg/Drivers/Usb/DwUsbDxe/DwUsbDxe.inf
    144 
    145   #
    146   # Fastboot
    147   #
    148   INF EmbeddedPkg/Application/AndroidFastboot/AndroidFastbootApp.inf
    149   INF OpenPlatformPkg/Platforms/Hisilicon/HiKey/HiKeyFastbootDxe/HiKeyFastbootDxe.inf
    150 
    151   #
    152   # UEFI Network Stack
    153   #
    154   INF MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.inf
    155   INF MdeModulePkg/Universal/Network/MnpDxe/MnpDxe.inf
    156   INF MdeModulePkg/Universal/Network/ArpDxe/ArpDxe.inf
    157   INF MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Dxe.inf
    158   INF MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Dxe.inf
    159   INF MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Dxe.inf
    160   INF MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Dxe.inf
    161   INF MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Dxe.inf
    162   INF MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf
    163 
    164   #
    165   # AX88772 Ethernet Driver for Apple Ethernet Adapter
    166   #
    167   INF OptionRomPkg/Bus/Usb/UsbNetworking/Ax88772b/Ax88772b.inf
    168 
    169   #
    170   # FAT filesystem + GPT/MBR partitioning
    171   #
    172   INF MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf
    173   INF MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf
    174   INF FatBinPkg/EnhancedFatDxe/Fat.inf
    175   INF MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf
    176 
    177   INF MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf
    178   INF MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf
    179   INF OpenPlatformPkg/Drivers/Variable/BlockVariableDxe/BlockVariableDxe.inf
    180 
    181   INF MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf
    182 
    183   #
    184   # UEFI applications
    185   #
    186   INF ShellBinPkg/UefiShell/UefiShell.inf
    187 
    188   #
    189   # Bds
    190   #
    191   INF MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf
    192   INF ArmPlatformPkg/Bds/Bds.inf
    193 
    194   # add Device Tree to the Firmware Volume
    195   FILE FREEFORM = 91148425-CDD2-4830-8BD0-C61C6DEA3621 {
    196     SECTION RAW = OpenPlatformPkg/Platforms/Hisilicon/HiKey/DeviceTree/hi6220-hikey.dtb
    197   }
    198 
    199   #
    200   # Legacy Linux Loader
    201   #
    202   INF ArmPkg/Application/LinuxLoader/LinuxLoader.inf
    203 
    204   #
    205   # HiKey Platform
    206   #
    207   INF OpenPlatformPkg/Platforms/Hisilicon/HiKey/HiKeyDxe/HiKeyDxe.inf
    208 
    209 [FV.FVMAIN_COMPACT]
    210 FvAlignment        = 8
    211 ERASE_POLARITY     = 1
    212 MEMORY_MAPPED      = TRUE
    213 STICKY_WRITE       = TRUE
    214 LOCK_CAP           = TRUE
    215 LOCK_STATUS        = TRUE
    216 WRITE_DISABLED_CAP = TRUE
    217 WRITE_ENABLED_CAP  = TRUE
    218 WRITE_STATUS       = TRUE
    219 WRITE_LOCK_CAP     = TRUE
    220 WRITE_LOCK_STATUS  = TRUE
    221 READ_DISABLED_CAP  = TRUE
    222 READ_ENABLED_CAP   = TRUE
    223 READ_STATUS        = TRUE
    224 READ_LOCK_CAP      = TRUE
    225 READ_LOCK_STATUS   = TRUE
    226 
    227   INF ArmPlatformPkg/PrePi/PeiMPCore.inf
    228 
    229   FILE FV_IMAGE = 9E21FD93-9C72-4c15-8C4B-E77F1DB2D792 {
    230     SECTION GUIDED EE4E5898-3914-4259-9D6E-DC7BD79403CF PROCESSING_REQUIRED = TRUE {
    231       SECTION FV_IMAGE = FVMAIN
    232     }
    233   }
    234 
    235 
    236 ################################################################################
    237 #
    238 # Rules are use with the [FV] section's module INF type to define
    239 # how an FFS file is created for a given INF file. The following Rule are the default
    240 # rules for the different module type. User can add the customized rules to define the
    241 # content of the FFS file.
    242 #
    243 ################################################################################
    244 
    245 
    246 ############################################################################
    247 # Example of a DXE_DRIVER FFS file with a Checksum encapsulation section   #
    248 ############################################################################
    249 #
    250 #[Rule.Common.DXE_DRIVER]
    251 #  FILE DRIVER = $(NAMED_GUID) {
    252 #    DXE_DEPEX    DXE_DEPEX               Optional $(INF_OUTPUT)/$(MODULE_NAME).depex
    253 #    COMPRESS PI_STD {
    254 #      GUIDED {
    255 #        PE32     PE32                    $(INF_OUTPUT)/$(MODULE_NAME).efi
    256 #        UI       STRING="$(MODULE_NAME)" Optional
    257 #        VERSION  STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
    258 #      }
    259 #    }
    260 #  }
    261 #
    262 ############################################################################
    263 
    264 #
    265 # These SEC rules are used for ArmPlatformPkg/PrePi module.
    266 # ArmPlatformPkg/PrePi is declared as a SEC module to make GenFv patch the
    267 # UEFI Firmware to jump to ArmPlatformPkg/PrePi entrypoint
    268 #
    269 [Rule.ARM.SEC]
    270   FILE SEC = $(NAMED_GUID) RELOCS_STRIPPED {
    271     TE  TE    Align = 32                $(INF_OUTPUT)/$(MODULE_NAME).efi
    272   }
    273 
    274 [Rule.AARCH64.SEC]
    275   FILE SEC = $(NAMED_GUID) RELOCS_STRIPPED {
    276     TE  TE    Align = 4K                $(INF_OUTPUT)/$(MODULE_NAME).efi
    277   }
    278 
    279 # A shim specific rule is required to ensure the alignment is 4K.
    280 # Otherwise BaseTools pick up the AArch32 alignment (ie: 32)
    281 [Rule.ARM.SEC.SHIM]
    282   FILE SEC = $(NAMED_GUID) RELOCS_STRIPPED {
    283     TE  TE    Align = 4K                $(INF_OUTPUT)/$(MODULE_NAME).efi
    284   }
    285 
    286 [Rule.Common.PEI_CORE]
    287   FILE PEI_CORE = $(NAMED_GUID) {
    288     TE     TE                           $(INF_OUTPUT)/$(MODULE_NAME).efi
    289     UI     STRING ="$(MODULE_NAME)" Optional
    290   }
    291 
    292 [Rule.Common.PEIM]
    293   FILE PEIM = $(NAMED_GUID) {
    294      PEI_DEPEX PEI_DEPEX Optional       $(INF_OUTPUT)/$(MODULE_NAME).depex
    295      TE       TE                        $(INF_OUTPUT)/$(MODULE_NAME).efi
    296      UI       STRING="$(MODULE_NAME)" Optional
    297   }
    298 
    299 [Rule.Common.PEIM.TIANOCOMPRESSED]
    300   FILE PEIM = $(NAMED_GUID) DEBUG_MYTOOLS_IA32 {
    301     PEI_DEPEX PEI_DEPEX Optional        $(INF_OUTPUT)/$(MODULE_NAME).depex
    302     GUIDED A31280AD-481E-41B6-95E8-127F4C984779 PROCESSING_REQUIRED = TRUE {
    303       PE32      PE32                    $(INF_OUTPUT)/$(MODULE_NAME).efi
    304       UI        STRING="$(MODULE_NAME)" Optional
    305     }
    306   }
    307 
    308 [Rule.Common.DXE_CORE]
    309   FILE DXE_CORE = $(NAMED_GUID) {
    310     PE32     PE32                       $(INF_OUTPUT)/$(MODULE_NAME).efi
    311     UI       STRING="$(MODULE_NAME)" Optional
    312   }
    313 
    314 [Rule.Common.UEFI_DRIVER]
    315   FILE DRIVER = $(NAMED_GUID) {
    316     DXE_DEPEX    DXE_DEPEX              Optional $(INF_OUTPUT)/$(MODULE_NAME).depex
    317     PE32         PE32                   $(INF_OUTPUT)/$(MODULE_NAME).efi
    318     UI           STRING="$(MODULE_NAME)" Optional
    319   }
    320 
    321 [Rule.Common.DXE_DRIVER]
    322   FILE DRIVER = $(NAMED_GUID) {
    323     DXE_DEPEX    DXE_DEPEX              Optional $(INF_OUTPUT)/$(MODULE_NAME).depex
    324     PE32         PE32                   $(INF_OUTPUT)/$(MODULE_NAME).efi
    325     UI           STRING="$(MODULE_NAME)" Optional
    326   }
    327 
    328 [Rule.Common.DXE_DRIVER.BINARY]
    329   FILE DRIVER = $(NAMED_GUID) {
    330   DXE_DEPEX    DXE_DEPEX              Optional |.depex
    331   PE32         PE32                   |.efi
    332   UI           STRING="$(MODULE_NAME)" Optional
    333   }
    334 
    335 [Rule.Common.DXE_RUNTIME_DRIVER]
    336   FILE DRIVER = $(NAMED_GUID) {
    337     DXE_DEPEX    DXE_DEPEX              Optional $(INF_OUTPUT)/$(MODULE_NAME).depex
    338     PE32         PE32                   $(INF_OUTPUT)/$(MODULE_NAME).efi
    339     UI           STRING="$(MODULE_NAME)" Optional
    340   }
    341 
    342 [Rule.Common.UEFI_APPLICATION]
    343   FILE APPLICATION = $(NAMED_GUID) {
    344     UI     STRING ="$(MODULE_NAME)" Optional
    345     PE32   PE32                         $(INF_OUTPUT)/$(MODULE_NAME).efi
    346   }
    347 
    348 [Rule.Common.UEFI_DRIVER.BINARY]
    349   FILE DRIVER = $(NAMED_GUID) {
    350     DXE_DEPEX DXE_DEPEX Optional      |.depex
    351     PE32      PE32                    |.efi
    352     UI        STRING="$(MODULE_NAME)" Optional
    353     VERSION   STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
    354   }
    355 
    356 [Rule.Common.UEFI_APPLICATION.BINARY]
    357   FILE APPLICATION = $(NAMED_GUID) {
    358     PE32      PE32                    |.efi
    359     UI        STRING="$(MODULE_NAME)" Optional
    360     VERSION   STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
    361   }
    362 
    363 [Rule.Common.USER_DEFINED.ACPITABLE]
    364   FILE FREEFORM = $(NAMED_GUID) {
    365     RAW ACPI               |.acpi
    366     RAW ASL                |.aml
    367   }
    368