build system: Build Chrome EC firmware on request

With the Chrome EC's "board" name set in Kconfig, the build system will
build and add the EC firmware, too. Available for the EC and the USB
PD controller.

Change-Id: I017d3a44d6ab8a540fcd198b4b09c35e4b98a8cf
Signed-off-by: Patrick Georgi <pgeorgi@chromium.org>
Reviewed-on: https://review.coreboot.org/13547
Tested-by: build bot (Jenkins)
Reviewed-by: Martin Roth <martinroth@google.com>
This commit is contained in:
Patrick Georgi 2016-02-01 15:26:26 +01:00 committed by Patrick Georgi
parent 08ec1ae2c2
commit e995dad2e1
2 changed files with 63 additions and 0 deletions

View File

@ -73,3 +73,28 @@ config EC_GOOGLE_CHROMEEC_SPI_CHIP
depends on EC_GOOGLE_CHROMEEC_SPI
hex
default 0
config EC_EXTERNAL_FIRMWARE
depends on EC_GOOGLE_CHROMEEC
def_bool n
help
Disable building EC firmware if it's already built externally (and
added manually.)
config EC_GOOGLE_CHROMEEC_BOARDNAME
depends on EC_GOOGLE_CHROMEEC && !EC_EXTERNAL_FIRMWARE
string "Chrome EC board name for EC"
default ""
help
The board name used in the Chrome EC code base to build
the EC firmware. If set, the coreboot build with also
build the EC firmware and add it to the image.
config EC_GOOGLE_CHROMEEC_PD_BOARDNAME
depends on EC_GOOGLE_CHROMEEC_PD && !EC_EXTERNAL_FIRMWARE
string "Chrome EC board name for PD"
default ""
help
The board name used in the Chrome EC code base to build
the PD firmware. If set, the coreboot build with also
build the EC firmware and add it to the image.

View File

@ -26,4 +26,42 @@ smm-$(CONFIG_VBOOT_VERIFY_FIRMWARE) += vboot_storage.c
romstage-$(CONFIG_VBOOT_VERIFY_FIRMWARE) += vboot_storage.c
verstage-$(CONFIG_VBOOT_VERIFY_FIRMWARE) += vboot_storage.c
# These are Chrome EC firmware images that a payload (such as depthcharge) can
# use to update the EC. ecrw is the main embedded controller's firmware,
# pdrw is for a USB PD controller.
CONFIG_EC_GOOGLE_CHROMEEC_BOARDNAME := $(call strip_quotes,$(CONFIG_EC_GOOGLE_CHROMEEC_BOARDNAME))
CONFIG_EC_GOOGLE_CHROMEEC_PD_BOARDNAME := $(call strip_quotes,$(CONFIG_EC_GOOGLE_CHROMEEC_PD_BOARDNAME))
cbfs-files-$(if $(CONFIG_EC_GOOGLE_CHROMEEC_BOARDNAME),y) += ecrw
ecrw-file := $(obj)/mainboard/$(MAINBOARDDIR)/ecrw
ecrw-name := ecrw
ecrw-type := raw
ecrw-options := -A sha256
cbfs-files-$(if $(CONFIG_EC_GOOGLE_CHROMEEC_PD_BOARDNAME),y) += pdrw
pdrw-file := $(obj)/mainboard/$(MAINBOARDDIR)/pdrw
pdrw-name := pdrw
pdrw-type := raw
pdrw-options := -A sha256
$(obj)/mainboard/$(MAINBOARDDIR)/ecrw:
$(MAKE) -C $(top)/3rdparty/chromeec \
out=$(abspath $(obj)/external/chromeec/$(CONFIG_EC_GOOGLE_CHROMEEC_BOARDNAME)) \
CROSS_COMPILE=$(subst -cpp,-,$(CPP_arm)) \
HOST_CROSS_COMPILE= \
BOARD=$(CONFIG_EC_GOOGLE_CHROMEEC_BOARDNAME) \
rw
cp $(obj)/external/chromeec/$(CONFIG_EC_GOOGLE_CHROMEEC_BOARDNAME)/RW/ec.RW.flat $@
$(obj)/mainboard/$(MAINBOARDDIR)/pdrw:
$(MAKE) -C $(top)/3rdparty/chromeec \
out=$(abspath $(obj)/external/chromeec/$(CONFIG_EC_GOOGLE_CHROMEEC_PD_BOARDNAME)) \
CROSS_COMPILE=$(subst -cpp,-,$(CPP_arm)) \
HOST_CROSS_COMPILE= \
BOARD=$(CONFIG_EC_GOOGLE_CHROMEEC_PD_BOARDNAME) \
rw
cp $(obj)/external/chromeec/$(CONFIG_EC_GOOGLE_CHROMEEC_PD_BOARDNAME)/RW/ec.RW.flat $@
.PHONY: $(obj)/mainboard/$(MAINBOARDDIR)/ecrw $(obj)/mainboard/$(MAINBOARDDIR)/pdrw
endif