From 6dd727ac24fa36ac3f23e9a5cf6781a7d1c6b797 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
Date: Wed, 24 Mar 2021 18:20:13 +0100
Subject: [PATCH] kernel: create bootfs partition when parsing on BCM4908
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

It's helpful for accessing booting data (DTS, kernel, etc.). It has to
be used carefully as CFE's JFFS2 support is quite dumb. It doesn't
recognize deleted files and has problems handling 0 inode.

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
---
 .../drivers/mtd/mtdsplit/mtdsplit_cfe_bootfs.c     | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_cfe_bootfs.c b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_cfe_bootfs.c
index 5c8a5e1b9b3..a3474c9dc27 100644
--- a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_cfe_bootfs.c
+++ b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_cfe_bootfs.c
@@ -17,7 +17,7 @@
 #define je16_to_cpu(x) ((x).v16)
 #define je32_to_cpu(x) ((x).v32)
 
-#define NR_PARTS		1
+#define NR_PARTS		2
 
 static int mtdsplit_cfe_bootfs_parse(struct mtd_info *mtd,
 				     const struct mtd_partition **pparts,
@@ -58,12 +58,16 @@ static int mtdsplit_cfe_bootfs_parse(struct mtd_info *mtd,
 	if (!parts)
 		return -ENOMEM;
 
+	parts[0].name = "bootfs";
+	parts[0].offset = 0;
+	parts[0].size = rootfs_offset;
+
 	if (type == MTDSPLIT_PART_TYPE_UBI)
-		parts[0].name = UBI_PART_NAME;
+		parts[1].name = UBI_PART_NAME;
 	else
-		parts[0].name = ROOTFS_PART_NAME;
-	parts[0].offset = rootfs_offset;
-	parts[0].size = mtd->size - rootfs_offset;
+		parts[1].name = ROOTFS_PART_NAME;
+	parts[1].offset = rootfs_offset;
+	parts[1].size = mtd->size - rootfs_offset;
 
 	*pparts = parts;