From 5998c8f059dbd64c5391e4caec2c07d434ffe146 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com>
Date: Thu, 21 May 2020 15:04:23 +0200
Subject: [PATCH] bcm63xx: nand: support CFE partition tags
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Introduce support for generating JFFS2 CFE partition tags.
This is used in NAND devices in order to verify the integrity of the JFFS2
partition.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
---
 target/linux/bcm63xx/image/Makefile        | 19 +++++++++++++++++++
 target/linux/bcm63xx/image/bcm63xx_nand.mk |  3 +++
 2 files changed, 22 insertions(+)

diff --git a/target/linux/bcm63xx/image/Makefile b/target/linux/bcm63xx/image/Makefile
index 7c3091fb668..5fbe8ea4701 100644
--- a/target/linux/bcm63xx/image/Makefile
+++ b/target/linux/bcm63xx/image/Makefile
@@ -168,6 +168,9 @@ define Build/cfe-jffs2-cferam
 	# Some devices need padding between CFE RAM and kernel
 	$(if $(CFE_RAM_JFFS2_PAD),$(call Build/pad-to,$(CFE_RAM_JFFS2_PAD)))
 
+	# Add CFE partition tag
+	$(if $(CFE_PART_ID),$(call Build/cfe-part-tag))
+
 	# Append kernel
 	dd if=$@.kernel >> $@
 	rm -f $@.kernel
@@ -204,6 +207,22 @@ define Build/cfe-jffs2-kernel
 	$(call Build/cfe-jffs2,$@-kernel)
 endef
 
+define Build/cfe-part-tag
+	mv $@ $@.part
+
+	$(TOPDIR)/scripts/cfe-partition-tag.py \
+		--input-file $@.part \
+		--output-file $@ \
+		--flags $(CFE_PART_FLAGS) \
+		--id $(CFE_PART_ID) \
+		--name $(VERSION_CODE) \
+		--version $(DEVICE_NAME)
+
+	$(call Build/pad-to,$(BLOCKSIZE))
+
+	dd if=$@.part >> $@
+endef
+
 define Build/cfe-old-bin
 	$(TOPDIR)/scripts/brcmImage.pl -t -p \
 		-o $@ -b $(CFE_BOARD_ID) -c $(CHIP_ID) \
diff --git a/target/linux/bcm63xx/image/bcm63xx_nand.mk b/target/linux/bcm63xx/image/bcm63xx_nand.mk
index aeaf6f2ae59..c70fdf8b2f5 100644
--- a/target/linux/bcm63xx/image/bcm63xx_nand.mk
+++ b/target/linux/bcm63xx/image/bcm63xx_nand.mk
@@ -2,6 +2,7 @@
 # BCM63XX NAND Profiles
 #
 
+DEVICE_VARS += CFE_PART_FLAGS CFE_PART_ID
 DEVICE_VARS += CFE_RAM_FILE
 DEVICE_VARS += CFE_RAM_JFFS2_NAME CFE_RAM_JFFS2_PAD
 DEVICE_VARS += CFE_WFI_CHIP_ID CFE_WFI_FLASH_TYPE
@@ -21,6 +22,8 @@ define Device/bcm63xx-nand
   IMAGE/cfe.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | cfe-jffs2-cferam | append-ubi | cfe-wfi-tag
   IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
   KERNEL_SIZE := 5120k
+  CFE_PART_FLAGS :=
+  CFE_PART_ID :=
   CFE_RAM_FILE :=
   CFE_RAM_JFFS2_NAME :=
   CFE_RAM_JFFS2_PAD :=
-- 
GitLab