diff --git a/src/ec/google/chromeec/Kconfig b/src/ec/google/chromeec/Kconfig index 10b92cbd40..76eef05dbe 100644 --- a/src/ec/google/chromeec/Kconfig +++ b/src/ec/google/chromeec/Kconfig @@ -74,16 +74,8 @@ config EC_GOOGLE_CHROMEEC_SPI_CHIP hex default 0x0 -config EC_EXTERNAL_FIRMWARE - depends on EC_GOOGLE_CHROMEEC - bool "Disable building EC firmware" - default 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 + depends on EC_GOOGLE_CHROMEEC string "Chrome EC board name for EC" default "" help @@ -92,7 +84,7 @@ config EC_GOOGLE_CHROMEEC_BOARDNAME 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 + depends on EC_GOOGLE_CHROMEEC_PD string "Chrome EC board name for PD" default "" help @@ -107,6 +99,66 @@ config EC_GOOGLE_CHROMEEC_RTC Enable support for the real-time clock on the Chrome OS EC. This uses the EC_CMD_RTC_GET_VALUE command to read the current time. +choice + prompt "Chrome EC firmware source" + depends on EC_GOOGLE_CHROMEEC + default EC_GOOGLE_CHROMEEC_FIRMWARE_BUILTIN if EC_GOOGLE_CHROMEEC_BOARDNAME != "" + default EC_GOOGLE_CHROMEEC_FIRMWARE_NONE + + config EC_GOOGLE_CHROMEEC_FIRMWARE_NONE + bool "No EC firmware is included" + help + Disable building and including any EC firmware in the image. + + config EC_GOOGLE_CHROMEEC_FIRMWARE_EXTERNAL + bool "External EC firmware is included" + help + Include EC firmware binary in the image from an external source. + It is expected to be built externally. + + config EC_GOOGLE_CHROMEEC_FIRMWARE_BUILTIN + bool "Builtin EC firmware is included" + help + Build and include EC firmware binary in the image. + +endchoice + +config EC_GOOGLE_CHROMEEC_FIRMWARE_FILE + string "Chrome EC firmware path and filename" + depends on EC_GOOGLE_CHROMEEC_FIRMWARE_EXTERNAL + help + The path and filename of the EC firmware file to use. + +choice + prompt "Chrome EC firmware source for PD" + depends on EC_GOOGLE_CHROMEEC_PD + default EC_GOOGLE_CHROMEEC_PD_FIRMWARE_BUILTIN if EC_GOOGLE_CHROMEEC_PD_BOARDNAME != "" + default EC_GOOGLE_CHROMEEC_PD_FIRMWARE_NONE + + config EC_GOOGLE_CHROMEEC_PD_FIRMWARE_NONE + bool "No PD firmware is included" + help + Disable building and including any PD firmware in the image. + + config EC_GOOGLE_CHROMEEC_PD_FIRMWARE_EXTERNAL + bool "External PD firmware is included" + help + Include PD firmware binary in the image from an external source. + It is expected to be built externally. + + config EC_GOOGLE_CHROMEEC_PD_FIRMWARE_BUILTIN + bool "Builtin PD firmware is included" + help + Build and include PD firmware binary in the image. + +endchoice + +config EC_GOOGLE_CHROMEEC_PD_FIRMWARE_FILE + string "Chrome EC firmware path and filename for PD" + depends on EC_GOOGLE_CHROMEEC_PD_FIRMWARE_EXTERNAL + help + The path and filename of the PD firmware file to use. + config EC_GOOGLE_CHROMEEC_SWITCHES depends on EC_GOOGLE_CHROMEEC && CHROMEOS bool diff --git a/src/ec/google/chromeec/Makefile.inc b/src/ec/google/chromeec/Makefile.inc index 149c44306f..2fe6994884 100644 --- a/src/ec/google/chromeec/Makefile.inc +++ b/src/ec/google/chromeec/Makefile.inc @@ -33,34 +33,31 @@ verstage-$(CONFIG_EC_GOOGLE_CHROMEEC_SWITCHES) += switches.c romstage-$(CONFIG_EC_GOOGLE_CHROMEEC_SWITCHES) += switches.c ramstage-$(CONFIG_EC_GOOGLE_CHROMEEC_SWITCHES) += switches.c -ifneq ($(CONFIG_EC_EXTERNAL_FIRMWARE),y) +CHROMEEC_SOURCE ?= $(top)/3rdparty/chromeec + # 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 +ifneq ($(CONFIG_EC_GOOGLE_CHROMEEC_FIRMWARE_NONE),y) + +cbfs-files-y += ecrw ecrw-file := $(obj)/mainboard/$(MAINBOARDDIR)/ecrw ecrw-name := ecrw ecrw-type := raw ecrw-compression := $(CBFS_COMPRESS_FLAG) -cbfs-files-$(if $(CONFIG_EC_GOOGLE_CHROMEEC_BOARDNAME),y) += ecrw.hash +cbfs-files-y += ecrw.hash ecrw.hash-file := $(obj)/mainboard/$(MAINBOARDDIR)/ecrw.hash ecrw.hash-name := ecrw.hash ecrw.hash-type := raw -cbfs-files-$(if $(CONFIG_EC_GOOGLE_CHROMEEC_PD_BOARDNAME),y) += pdrw -pdrw-file := $(obj)/mainboard/$(MAINBOARDDIR)/pdrw -pdrw-name := pdrw -pdrw-type := raw -pdrw-compression := $(CBFS_COMPRESS_FLAG) -cbfs-files-$(if $(CONFIG_EC_GOOGLE_CHROMEEC_PD_BOARDNAME),y) += pdrw.hash -pdrw.hash-file := $(obj)/mainboard/$(MAINBOARDDIR)/pdrw.hash -pdrw.hash-name := pdrw.hash -pdrw.hash-type := raw +ifeq ($(CONFIG_EC_GOOGLE_CHROMEEC_FIRMWARE_EXTERNAL),y) +CONFIG_EC_GOOGLE_CHROMEEC_FIRMWARE_FILE := $(call strip_quotes,$(CONFIG_EC_GOOGLE_CHROMEEC_FIRMWARE_FILE)) -CHROMEEC_SOURCE ?= $(top)/3rdparty/chromeec +$(obj)/mainboard/$(MAINBOARDDIR)/ecrw: $(CONFIG_EC_GOOGLE_CHROMEEC_FIRMWARE_FILE) + cp $(CONFIG_EC_GOOGLE_CHROMEEC_FIRMWARE_FILE) $@ +else +CONFIG_EC_GOOGLE_CHROMEEC_BOARDNAME := $(call strip_quotes,$(CONFIG_EC_GOOGLE_CHROMEEC_BOARDNAME)) $(obj)/mainboard/$(MAINBOARDDIR)/ecrw: $(MAKE) -C $(CHROMEEC_SOURCE) $(if $(CONFIG_CCACHE),,CCACHE=) \ @@ -70,6 +67,34 @@ $(obj)/mainboard/$(MAINBOARDDIR)/ecrw: BOARD=$(CONFIG_EC_GOOGLE_CHROMEEC_BOARDNAME) \ rw cp $(obj)/external/chromeec/$(CONFIG_EC_GOOGLE_CHROMEEC_BOARDNAME)/RW/ec.RW.flat $@ +endif + +$(obj)/mainboard/$(MAINBOARDDIR)/ecrw.hash: $(obj)/mainboard/$(MAINBOARDDIR)/ecrw + openssl dgst -sha256 -binary $< > $@ + +endif + +ifeq ($(EC_GOOGLE_CHROMEEC_PD),y) + +ifneq ($(CONFIG_EC_GOOGLE_CHROMEEC_PD_FIRMWARE_NONE),y) + +cbfs-files-y += pdrw +pdrw-file := $(obj)/mainboard/$(MAINBOARDDIR)/pdrw +pdrw-name := pdrw +pdrw-type := raw +pdrw-compression := $(CBFS_COMPRESS_FLAG) +cbfs-files-y += pdrw.hash +pdrw.hash-file := $(obj)/mainboard/$(MAINBOARDDIR)/pdrw.hash +pdrw.hash-name := pdrw.hash +pdrw.hash-type := raw + +ifeq ($(CONFIG_EC_GOOGLE_CHROMEEC_PD_FIRMWARE_EXTERNAL),y) +CONFIG_EC_GOOGLE_CHROMEEC_PD_FIRMWARE_FILE := $(call strip_quotes,$(CONFIG_EC_GOOGLE_CHROMEEC_PD_FIRMWARE_FILE)) + +$(obj)/mainboard/$(MAINBOARDDIR)/pdrw: $(CONFIG_EC_GOOGLE_CHROMEEC_PD_FIRMWARE_FILE) + cp $(CONFIG_EC_GOOGLE_CHROMEEC_PD_FIRMWARE_FILE) $@ +else +CONFIG_EC_GOOGLE_CHROMEEC_PD_BOARDNAME := $(call strip_quotes,$(CONFIG_EC_GOOGLE_CHROMEEC_PD_BOARDNAME)) $(obj)/mainboard/$(MAINBOARDDIR)/pdrw: $(MAKE) -C $(CHROMEEC_SOURCE) $(if $(CONFIG_CCACHE),,CCACHE=) \ @@ -79,11 +104,13 @@ $(obj)/mainboard/$(MAINBOARDDIR)/pdrw: BOARD=$(CONFIG_EC_GOOGLE_CHROMEEC_PD_BOARDNAME) \ rw cp $(obj)/external/chromeec/$(CONFIG_EC_GOOGLE_CHROMEEC_PD_BOARDNAME)/RW/ec.RW.flat $@ +endif -$(obj)/mainboard/$(MAINBOARDDIR)/%.hash: $(obj)/mainboard/$(MAINBOARDDIR)/% +$(obj)/mainboard/$(MAINBOARDDIR)/pdrw.hash: $(obj)/mainboard/$(MAINBOARDDIR)/pdrw openssl dgst -sha256 -binary $< > $@ -.PHONY: $(obj)/mainboard/$(MAINBOARDDIR)/ecrw $(obj)/mainboard/$(MAINBOARDDIR)/pdrw +endif + endif endif diff --git a/src/mainboard/google/lars/Kconfig b/src/mainboard/google/lars/Kconfig index 8ac3c4441f..30abfa9682 100644 --- a/src/mainboard/google/lars/Kconfig +++ b/src/mainboard/google/lars/Kconfig @@ -9,7 +9,6 @@ config BOARD_SPECIFIC_OPTIONS # dummy select EC_GOOGLE_CHROMEEC_LPC select EC_GOOGLE_CHROMEEC_MEC select EC_GOOGLE_CHROMEEC_PD - select EC_EXTERNAL_FIRMWARE select EXCLUDE_NATIVE_SD_INTERFACE select HAVE_ACPI_RESUME select HAVE_ACPI_TABLES diff --git a/src/mainboard/intel/kunimitsu/Kconfig b/src/mainboard/intel/kunimitsu/Kconfig index 2ff43feaa5..4433ee8579 100644 --- a/src/mainboard/intel/kunimitsu/Kconfig +++ b/src/mainboard/intel/kunimitsu/Kconfig @@ -9,7 +9,6 @@ config BOARD_SPECIFIC_OPTIONS # dummy select EC_GOOGLE_CHROMEEC_LPC select EC_GOOGLE_CHROMEEC_MEC select EC_GOOGLE_CHROMEEC_PD - select EC_EXTERNAL_FIRMWARE select HAVE_ACPI_RESUME select HAVE_ACPI_TABLES select HAVE_OPTION_TABLE