diff options
Diffstat (limited to 'src/ec/google')
-rw-r--r-- | src/ec/google/chromeec/Kconfig | 72 | ||||
-rw-r--r-- | src/ec/google/chromeec/Makefile.inc | 61 |
2 files changed, 106 insertions, 27 deletions
diff --git a/src/ec/google/chromeec/Kconfig b/src/ec/google/chromeec/Kconfig index 4d5de32929..f4ff30372c 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 0 -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 @@ -106,3 +98,63 @@ config EC_GOOGLE_CHROMEEC_RTC help 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. diff --git a/src/ec/google/chromeec/Makefile.inc b/src/ec/google/chromeec/Makefile.inc index 761ab7f587..66f3a887e1 100644 --- a/src/ec/google/chromeec/Makefile.inc +++ b/src/ec/google/chromeec/Makefile.inc @@ -29,34 +29,31 @@ smm-$(CONFIG_VBOOT) += vboot_storage.c romstage-$(CONFIG_VBOOT) += vboot_storage.c verstage-$(CONFIG_VBOOT) += vboot_storage.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) \ @@ -66,6 +63,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) \ @@ -75,11 +100,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 |