summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoricarus sparry <icarus.w.sparry@intel.com>2014-11-10 14:34:21 -0800
committerchrome-internal-fetch <chrome-internal-fetch@google.com>2014-11-12 23:08:17 +0000
commit27367a07c923c778941a5c1a0635e1694d51030a (patch)
tree8615cad735f38cbbb43f210feaf7f5a9703a4467
parent3bcc5673c9f3c1d82eee491b29befaeb5bd0bd1a (diff)
downloadchrome-ec-27367a07c923c778941a5c1a0635e1694d51030a.tar.gz
Strago: Automated build to generate ec.spi.bin.
Add another variable PROJECT_EXTRA which chips and boards can use to add additional prerequisites to the default all target Add rules for creating ec.spi.bin to package the ec firmware for strago BUG=None BRANCH=None TEST=Tested on Braswell Ref Design Board Signed-off-by: Divya Jyothi <divya.jyothi@intel.com> Signed-off-by: icarus sparry <icarus.w.sparry@intel.com> Change-Id: I4fb9f1275dc5bc2987b6abf5d45b0baf363c0d7a Reviewed-on: https://chromium-review.googlesource.com/226305 Reviewed-by: Vic Yang <victoryang@chromium.org> Reviewed-by: Icarus W Sparry <icarus.w.sparry@intel.com> Commit-Queue: Icarus W Sparry <icarus.w.sparry@intel.com> Tested-by: Icarus W Sparry <icarus.w.sparry@intel.com> Reviewed-by: Sheng-liang Song <ssl@chromium.org>
-rw-r--r--Makefile7
-rw-r--r--Makefile.rules4
l---------board/strago/Makefile1
-rw-r--r--board/strago/build.mk4
-rw-r--r--chip/mec1322/build.mk9
5 files changed, 24 insertions, 1 deletions
diff --git a/Makefile b/Makefile
index 321823a5d5..13c44d8b76 100644
--- a/Makefile
+++ b/Makefile
@@ -35,7 +35,10 @@ PEM ?= board/$(BOARD)/dev_key.pem
include Makefile.toolchain
-all: $(out)/$(PROJECT).bin utils
+# Define the traditional first target. The dependencies of this are near the bottom
+# as they can be altered by chip and board files.
+all:
+.PHONY: all
# The board makefile sets $CHIP and the chip makefile sets $CORE.
# Include those now, since they must be defined for _flag_cfg below.
@@ -128,6 +131,8 @@ all-y+=$(call objs_from_dir,test,$(PROJECT))
dirs=core/$(CORE) chip/$(CHIP) board/$(BOARD) private common power test util
dirs+=$(shell find driver -type d)
+all: $(out)/$(PROJECT).bin utils ${PROJECT_EXTRA}
+
include Makefile.rules
endif # SYMLINK
diff --git a/Makefile.rules b/Makefile.rules
index 3a1b415ad3..2c6cd7b4cd 100644
--- a/Makefile.rules
+++ b/Makefile.rules
@@ -151,6 +151,10 @@ $(out)/%.bin: $(out)/%.obj
$(call quiet,copyrw-y,COPY_RW))
$(call quiet,mv_from_tmp,MV )
+# Beware of ec.spi.spi.bin.
+$(out)/%.spi.bin: $(out)/%.bin
+ $(call quiet,pack_package,PACK )
+
flat-y = $(out)/$(PROJECT).RO.flat $(out)/$(PROJECT).RW.flat
$(out)/%.obj: common/firmware_image.S $(out)/firmware_image.lds $(flat-y)
diff --git a/board/strago/Makefile b/board/strago/Makefile
new file mode 120000
index 0000000000..94aaae2c4d
--- /dev/null
+++ b/board/strago/Makefile
@@ -0,0 +1 @@
+../../Makefile \ No newline at end of file
diff --git a/board/strago/build.mk b/board/strago/build.mk
index 91ce24af42..4a0bc00f08 100644
--- a/board/strago/build.mk
+++ b/board/strago/build.mk
@@ -8,5 +8,9 @@
# the IC is SMSC MEC1322 / external SPI is 4MB / external clock is crystal
CHIP:=mec1322
+CHIP_SPI_SIZE_MB:=4
board-y=board.o
+# As this file is read more than once, must put the rules
+# elsewhere (Makefile.rules) and just use variable to trigger them
+PROJECT_EXTRA+=${out}/ec.spi.bin
diff --git a/chip/mec1322/build.mk b/chip/mec1322/build.mk
index 7b1444dc6e..0c6284c420 100644
--- a/chip/mec1322/build.mk
+++ b/chip/mec1322/build.mk
@@ -22,3 +22,12 @@ chip-$(CONFIG_WATCHDOG)+=watchdog.o
chip-$(HAS_TASK_KEYSCAN)+=keyboard_raw.o
chip-$(CONFIG_DMA)+=dma.o
chip-$(CONFIG_SPI)+=spi.o
+
+# location of the scripts and keys used to pack the SPI flash image
+SCRIPTDIR:=./chip/${CHIP}/util
+
+# commands to package something
+cmd_pack_package = ${SCRIPTDIR}/pack_ec.py -o $@ -i $^ \
+ --payload_key ${SCRIPTDIR}/rsakey_sign_payload.pem \
+ --header_key ${SCRIPTDIR}/rsakey_sign_header.pem \
+ --spi_size ${CHIP_SPI_SIZE_MB}