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]
29BaseAddress   = 0x35000000|gArmTokenSpaceGuid.PcdFdBaseAddress  # The base address of the Firmware in NOR Flash.
30Size          = 0x000F0000|gArmTokenSpaceGuid.PcdFdSize         # The size in bytes of the FLASH Device
31ErasePolarity = 1
32
33# This one is tricky, it must be: BlockSize * NumBlocks = Size
34BlockSize     = 0x00001000
35NumBlocks     = 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
530x00000000|0x000F0000
54gArmTokenSpaceGuid.PcdFvBaseAddress|gArmTokenSpaceGuid.PcdFvSize
55FV = 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]
70BlockSize          = 0x40
71NumBlocks          = 0         # This FV gets compressed so make it just big enough
72FvAlignment        = 8         # FV alignment and FV attributes setting.
73ERASE_POLARITY     = 1
74MEMORY_MAPPED      = TRUE
75STICKY_WRITE       = TRUE
76LOCK_CAP           = TRUE
77LOCK_STATUS        = TRUE
78WRITE_DISABLED_CAP = TRUE
79WRITE_ENABLED_CAP  = TRUE
80WRITE_STATUS       = TRUE
81WRITE_LOCK_CAP     = TRUE
82WRITE_LOCK_STATUS  = TRUE
83READ_DISABLED_CAP  = TRUE
84READ_ENABLED_CAP   = TRUE
85READ_STATUS        = TRUE
86READ_LOCK_CAP      = TRUE
87READ_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]
210FvAlignment        = 8
211ERASE_POLARITY     = 1
212MEMORY_MAPPED      = TRUE
213STICKY_WRITE       = TRUE
214LOCK_CAP           = TRUE
215LOCK_STATUS        = TRUE
216WRITE_DISABLED_CAP = TRUE
217WRITE_ENABLED_CAP  = TRUE
218WRITE_STATUS       = TRUE
219WRITE_LOCK_CAP     = TRUE
220WRITE_LOCK_STATUS  = TRUE
221READ_DISABLED_CAP  = TRUE
222READ_ENABLED_CAP   = TRUE
223READ_STATUS        = TRUE
224READ_LOCK_CAP      = TRUE
225READ_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