From 0099bfe82ffab8ede63210ad20aa695b7a41125c Mon Sep 17 00:00:00 2001
From: Markus Gothe <markus.gothe@genexis.eu>
Date: Thu, 4 Jun 2020 10:48:53 +0200
Subject: [PATCH] Add ability to parse multiple values for 'boardid' and
 'voiceboardid'.

Change-Id: I06e625b224ace1abefcd4e31c2399a529c81f544
---
 iopsys-brcm63xx-arm/image/Makefile | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/iopsys-brcm63xx-arm/image/Makefile b/iopsys-brcm63xx-arm/image/Makefile
index 773d65be0..d0cd8d6d5 100644
--- a/iopsys-brcm63xx-arm/image/Makefile
+++ b/iopsys-brcm63xx-arm/image/Makefile
@@ -394,10 +394,39 @@ else
 TARGET_IMAGE_MAC_NUM=--numbermac=$(CONFIG_TARGET_IMAGE_PRODUCTION_NUM_MACADDR)
 endif
 
+BUILD_ECC_USE_BOARDIDS=0
+ifeq ($(CONFIG_TARGET_IMAGE_PRODUCTION_PARAMS),y)
+ifneq ($(CONFIG_TARGET_IMAGE_PRODUCTION_BOARD_ID),"")
+BUILD_ECC_USE_BOARDIDS=1
+endif
+endif
+
 define Production_image
 	#Copy cferom bootloader and ubi nand ecc image to bin directory.
 	echo "In Production Image"
 
+ifeq ($(BUILD_ECC_USE_BOARDIDS),1)
+	# This needs to be compact unfortunately!
+	@i=0; \
+	$(eval i=$(shell echo $$(($(i)+1)))) \
+	$(foreach boardid, $(subst ",,$(CONFIG_TARGET_IMAGE_PRODUCTION_BOARD_ID)), \
+		$(eval voice_boardid=$(shell echo $(word $(i), $(subst ",,$(subst \, ,$(CONFIG_TARGET_IMAGE_PRODUCTION_VOICEBOARD_ID)))))) \
+		cd $(KDIR) ; cp $(KDIR)/cfe$(CONFIG_BCM_CHIP_ID)_nand.v $(KDIR)/cfe$(CONFIG_BCM_CHIP_ID)_nand.v.tmp.$(boardid); \
+		cd $(KDIR) ; $(HOSTTOOLS_DIR)/editnvram $(TARGET_IMAGE_IS_LITTLE_ENDIAN) --boardid="$(boardid)" --voiceboardid="$(voice_boardid)" --production=$(TARGET_IMAGE_PRODUCTION_FLAG) $(TARGET_IMAGE_MAC_NUM) $(TARGET_IMAGE_BASE_MAC) -O $(CONFIG_TARGET_IMAGE_PRODUCTION_NVRAM_OFFSET) cfe$(CONFIG_BCM_CHIP_ID)_nand.v.tmp.$(boardid) cfe$(CONFIG_BCM_CHIP_ID)_nand.v.out && mv cfe$(CONFIG_BCM_CHIP_ID)_nand.v.out cfe$(CONFIG_BCM_CHIP_ID)_nand.v.tmp.$(boardid); \
+		cd $(KDIR) ; $(STAGING_DIR_HOST)/bin/nand-image-builder -i cfe$(CONFIG_BCM_CHIP_ID)_nand.v.tmp.$(boardid) -o cfe$(CONFIG_BCM_CHIP_ID)_nand.$(boardid).ecc -b $(CONFIG_TARGET_NAND_BLOCKSZ) -p $(CONFIG_TARGET_NAND_PAGESZ) -s $(CONFIG_TARGET_NAND_SPARE_SIZE) -e $(CONFIG_TARGET_NAND_BCH_LEVEL) -m $(FIELD_ORDER); \
+		cd $(KDIR) ; $(STAGING_DIR_HOST)/bin/nand-image-builder -i root.ubi -o root-nand.$(boardid).ecc -b $(CONFIG_TARGET_NAND_BLOCKSZ) -p $(CONFIG_TARGET_NAND_PAGESZ) -s $(CONFIG_TARGET_NAND_SPARE_SIZE) -e $(CONFIG_TARGET_NAND_BCH_LEVEL) -m $(FIELD_ORDER); \
+		cp $(KDIR)/cfe$(CONFIG_BCM_CHIP_ID)_nand.$(boardid).ecc $(BIN_DIR)/$(IHGSP_BUILD_VERSION)_cfe.$(boardid).ecc; \
+		cp $(KDIR)/root-nand.$(boardid).ecc $(BIN_DIR)/$(IHGSP_BUILD_VERSION)_root.$(boardid).ecc; \
+		echo -e "Part \tStart \tEnd \tProg \tBadBlock \tPart-Name" > $(BIN_DIR)/nand-partition.$(boardid).txt; \
+		echo -e "0 \t$(CFE_START_BLOCK) \t$(CFE_END_BLOCK) \t0 \t0 \t\tBootloader" >> $(BIN_DIR)/nand-partition.$(boardid).txt; \
+		echo -e "1 \t$(UBI_START_BLOCK) \t$(UBI_END_BLOCK) \t0 \t0 \t\tSystem" >> $(BIN_DIR)/nand-partition.$(boardid).txt; \
+		ln -sf $(BIN_DIR)/$(IHGSP_BUILD_VERSION)_cfe.$(boardid).ecc $(BIN_DIR)/cfe.$(boardid).ecc; \
+		ln -sf $(BIN_DIR)/$(IHGSP_BUILD_VERSION)_root.$(boardid).ecc $(BIN_DIR)/root.$(boardid).ecc; \
+		rm $(KDIR)/cfe$(CONFIG_BCM_CHIP_ID)_nand.v.tmp.$(boardid); \
+		$(eval i=$(shell echo $$(($(i)+1)))) \
+	)
+else
+
 	cp $(KDIR) ; cp $(KDIR)/cfe$(CONFIG_BCM_CHIP_ID)_nand.v $(KDIR)/cfe$(CONFIG_BCM_CHIP_ID)_nand.v.tmp
 
 ifeq ($(CONFIG_TARGET_IMAGE_PRODUCTION_PARAMS),y)
@@ -421,6 +450,7 @@ endif
 	ln -sf $(BIN_DIR)/$(IHGSP_BUILD_VERSION)_cfe.ecc $(BIN_DIR)/cfe.ecc
 	ln -sf $(BIN_DIR)/$(IHGSP_BUILD_VERSION)_root.ecc $(BIN_DIR)/root.ecc
 	rm $(KDIR)/cfe$(CONFIG_BCM_CHIP_ID)_nand.v.tmp
+endif
 endef
 
 define Image/Build/imgY3
-- 
GitLab