util/supermicro: Add and use new tool smcbiosinfo

The BMC and tools interacting with it depend on metadata placed inside
the ROM in order the flash the BIOS.

Add a new tool smcbiosinfo, integrate it into the build system, and
generate a 128byte metadata file called smcbiosinfo.bin on build.

You need to provide the BoardID for every SMC mainboard through a new
Kconfig symbol: SUPERMICRO_BOARDID

Some fields are unknown, but it's sufficient to flash it using SMC
vendor tools.

Tested on Supermicro X11SSH:
* Flashing using the WebUI works
* Flashing using SMCIPMITool works

No further validation is done on the firmware.

Change-Id: Id608c2ce78614b45a2fd0b26d97d666f02223998
Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/35484
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Philipp Deppenwiese <zaolin.daisuki@gmail.com>
Reviewed-by: Nico Huber <nico.h@gmx.de>
This commit is contained in:
Patrick Rudolph
2019-09-20 12:53:09 +02:00
committed by Nico Huber
parent 9b5447b781
commit 9e877ec60d
7 changed files with 342 additions and 1 deletions

View File

@@ -0,0 +1,21 @@
ifeq ($(CONFIG_VENDOR_SUPERMICRO),y)
ifneq ($(call strip_quotes, $(CONFIG_SUPERMICRO_BOARDID)),)
SMCBIOSINFOTOOL:= $(objutil)/supermicro/smcbiosinfo
$(SMCBIOSINFOTOOL): $(dir)/smcbiosinfo/smcbiosinfo.c
printf " HOSTCC Creating SMCBIOSINFO tool\n"
mkdir -p $(objutil)/supermicro
$(HOSTCC) $< -o $@
cbfs-files-y += smcbiosinfo.bin
smcbiosinfo.bin-file := $(obj)/mainboard/$(MAINBOARDDIR)/smcbiosinfo.bin
smcbiosinfo.bin-type := raw
smcbiosinfo.bin-compression := none
$(obj)/mainboard/$(MAINBOARDDIR)/smcbiosinfo.bin: $(SMCBIOSINFOTOOL) $(build_h)
printf " TOOL Creating SMC BIOSINFO metadata\n"
$(SMCBIOSINFOTOOL) -i $(build_h) -b $(CONFIG_SUPERMICRO_BOARDID) -o $@
endif
endif