From 9f7ef8d5f0199f12abfd4b1c50d0bfe8484471d7 Mon Sep 17 00:00:00 2001
From: Jonas Gorski <jogo@openwrt.org>
Date: Wed, 5 Jun 2013 20:58:03 +0000
Subject: [PATCH] target: split jffs2 NAND out of jffs2

Make jffs2_nand a separate option so this can be triggered without forcing
jffs2 images for nor targets.

Adds a new NAND_BLOCKSIZE variable that allows setting the generated layout
in <page_size>:<block_size> pairs.

Signed-off-by: Jonas Gorski <jogo@openwrt.org>

SVN-Revision: 36860
---
 Config.in           |  7 +++++++
 include/image.mk    | 26 +++++++++++++++++++-------
 scripts/metadata.pl |  3 ++-
 target/Config.in    |  3 +++
 4 files changed, 31 insertions(+), 8 deletions(-)

diff --git a/Config.in b/Config.in
index b79a26e871..8dd73cc258 100644
--- a/Config.in
+++ b/Config.in
@@ -97,6 +97,13 @@ menu "Target Images"
 		help
 		  Build a jffs2 root filesystem
 
+	config TARGET_ROOTFS_JFFS2_NAND
+		bool "jffs2 for NAND"
+		default y if USES_JFFS2_NAND
+		depends on !TARGET_ROOTFS_INITRAMFS && USES_JFFS2_NAND
+		help
+		  Build a jffs2 root filesystem for NAND flash
+
 	config TARGET_ROOTFS_SQUASHFS
 		bool "squashfs"
 		default y if USES_SQUASHFS
diff --git a/include/image.mk b/include/image.mk
index 302228816e..60cde014de 100644
--- a/include/image.mk
+++ b/include/image.mk
@@ -77,15 +77,25 @@ ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
 
 else
 
-  ifneq ($(CONFIG_TARGET_ROOTFS_JFFS2),)
-    define Image/mkfs/jffs2/sub
+  define Image/mkfs/jffs2/sub
 		# FIXME: removing this line will cause strange behaviour in the foreach loop below
-		$(STAGING_DIR_HOST)/bin/mkfs.jffs2 $(JFFS2OPTS) -e $(patsubst %k,%KiB,$(1)) -o $(KDIR)/root.jffs2-$(1) -d $(TARGET_DIR) -v 2>&1 1>/dev/null | awk '/^.+$$$$/'
-		$(call add_jffs2_mark,$(KDIR)/root.jffs2-$(1))
-		$(call Image/Build,jffs2-$(1))
-    endef
+		$(STAGING_DIR_HOST)/bin/mkfs.jffs2 $(3) -e $(patsubst %k,%KiB,$(1)) -o $(KDIR)/root.jffs2-$(2) -d $(TARGET_DIR) -v 2>&1 1>/dev/null | awk '/^.+$$$$/'
+		$(call add_jffs2_mark,$(KDIR)/root.jffs2-$(2))
+		$(call Image/Build,jffs2-$(2))
+  endef
+
+  ifneq ($(CONFIG_TARGET_ROOTFS_JFFS2),)
     define Image/mkfs/jffs2
-		$(foreach SZ,$(JFFS2_BLOCKSIZE),$(call Image/mkfs/jffs2/sub,$(SZ)))
+		$(foreach SZ,$(JFFS2_BLOCKSIZE),$(call Image/mkfs/jffs2/sub,$(SZ),$(SZ),$(JFFS2OPS)))
+    endef
+  endif
+
+  ifneq ($(CONFIG_TARGET_ROOTFS_JFFS2_NAND),)
+    define Image/mkfs/jffs2_nand
+		$(foreach SZ,$(NAND_BLOCKSIZE), $(call Image/mkfs/jffs2/sub, \
+			$(word 2,$(subst :, ,$(SZ))),nand-$(subst :,-,$(SZ)), \
+			$(JFFS2OPTS) --no-cleanmarkers --pagesize=$(word 1,$(subst :, ,$(SZ)))) \
+		)
     endef
   endif
 
@@ -188,6 +198,7 @@ define BuildImage
 		$(call Image/mkfs/ext4)
 		$(call Image/mkfs/iso)
 		$(call Image/mkfs/jffs2)
+		$(call Image/mkfs/jffs2_nand)
 		$(call Image/mkfs/squashfs)
 		$(call Image/mkfs/ubifs)
 		$(call Image/Checksum)
@@ -199,6 +210,7 @@ define BuildImage
 		$(call Image/mkfs/ext4)
 		$(call Image/mkfs/iso)
 		$(call Image/mkfs/jffs2)
+		$(call Image/mkfs/jffs2_nand)
 		$(call Image/mkfs/squashfs)
 		$(call Image/mkfs/ubifs)
 		$(call Image/Checksum)
diff --git a/scripts/metadata.pl b/scripts/metadata.pl
index 13abcb2937..ade86c867c 100755
--- a/scripts/metadata.pl
+++ b/scripts/metadata.pl
@@ -165,7 +165,8 @@ sub target_config_features(@) {
 		/pcmcia/ and $ret .= "\tselect PCMCIA_SUPPORT\n";
 		/rtc/ and $ret .= "\tselect RTC_SUPPORT\n";
 		/squashfs/ and $ret .= "\tselect USES_SQUASHFS\n";
-		/jffs2/ and $ret .= "\tselect USES_JFFS2\n";
+		/jffs2$/ and $ret .= "\tselect USES_JFFS2\n";
+		/jffs2_nand/ and $ret .= "\tselect USES_JFFS2_NAND\n";
 		/ext4/ and $ret .= "\tselect USES_EXT4\n";
 		/targz/ and $ret .= "\tselect USES_TARGZ\n";
 		/cpiogz/ and $ret .= "\tselect USES_CPIOGZ\n";
diff --git a/target/Config.in b/target/Config.in
index 947e80ca4a..a7951aaf3b 100644
--- a/target/Config.in
+++ b/target/Config.in
@@ -48,6 +48,9 @@ config USES_SQUASHFS
 config USES_JFFS2
 	bool
 
+config USES_JFFS2_NAND
+	bool
+
 config USES_EXT4
 	bool
 
-- 
GitLab