soc/intel/apollolake: add support for IFWI region

On apollolake, the boot media layout is different in that the traditional
"BIOS" region contains another data structure with the boot assets such
as CSE firmware, PMC microcode, CPU microcode, and boot firmware to name
a few. This region is referred to as the IFWI. Add support for writing
the IFWI to a specified FMAP region to accommodate such platforms.

Change-Id: Ia61f12a77893c3dd3256a9bd4e0f5eca0065de26
Signed-off-by: Furquan Shaikh <furquan@google.com>
Reviewed-on: https://review.coreboot.org/14999
Tested-by: build bot (Jenkins)
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
This commit is contained in:
Furquan Shaikh 2016-05-28 12:57:05 -07:00
parent 3ac9d4cbb0
commit 7043bf353a
2 changed files with 39 additions and 0 deletions

View File

@ -160,4 +160,25 @@ config LBP2_FILE_NAME
help help
Name of file to store in the logical boot partition 2 region. Name of file to store in the logical boot partition 2 region.
config NEED_IFWI
bool "Write content into IFWI region"
default n
help
Write the content from a file into IFWI region defined by
IFWI_FMAP_NAME.
config IFWI_FMAP_NAME
string "Name of FMAP region to pull IFWI into"
depends on NEED_IFWI
default "IFWI"
help
Name of FMAP region to write IFWI.
config IFWI_FILE_NAME
string "Path of file to write to IFWI region"
depends on NEED_IFWI
default "3rdparty/blobs/mainboard/$(CONFIG_MAINBOARD_DIR)/ifwi.bin"
help
Name of file to store in the IFWI region.
endif endif

View File

@ -75,4 +75,22 @@ files_added::
$(CBFSTOOL) $(obj)/coreboot.rom write -r $(CONFIG_LBP2_FMAP_NAME) -f $(CONFIG_LBP2_FILE_NAME) --fill-upward $(CBFSTOOL) $(obj)/coreboot.rom write -r $(CONFIG_LBP2_FMAP_NAME) -f $(CONFIG_LBP2_FILE_NAME) --fill-upward
endif endif
# Bootblock on Apollolake platform lies in the IFWI region. In order to place
# the bootblock at the right location in IFWI image -
# a. Using ifwitool:
# 1. Create IFWI image (ifwi.bin.tmp) from input image
# (CONFIG_IFWI_FILE_NAME).
# 2. Delete OBBP sub-partition, if present.
# 3. Replace IBBL directory entry in IBBP sub-partition with currently
# generated bootblock.bin.
# b. Using cbfstool:
# 1. Write ifwi.bin.tmp to coreboot.rom using CONFIG_IFWI_FMAP_NAME.
ifeq ($(CONFIG_NEED_IFWI),y)
files_added:: $(IFWITOOL)
$(IFWITOOL) $(CONFIG_IFWI_FILE_NAME) create -f $(objcbfs)/ifwi.bin.tmp
$(IFWITOOL) $(objcbfs)/ifwi.bin.tmp delete -n OBBP
$(IFWITOOL) $(objcbfs)/ifwi.bin.tmp replace -n IBBP -f $(objcbfs)/bootblock.bin -d -e IBBL
$(CBFSTOOL) $(obj)/coreboot.rom write -r $(CONFIG_IFWI_FMAP_NAME) -f $(objcbfs)/ifwi.bin.tmp --fill-upward
endif
endif endif