summaryrefslogtreecommitdiffstats
path: root/fs/jffs2
diff options
context:
space:
mode:
Diffstat (limited to 'fs/jffs2')
-rw-r--r--fs/jffs2/Config.in117
-rw-r--r--fs/jffs2/jffs2.mk61
2 files changed, 178 insertions, 0 deletions
diff --git a/fs/jffs2/Config.in b/fs/jffs2/Config.in
new file mode 100644
index 000000000..b787ec9d1
--- /dev/null
+++ b/fs/jffs2/Config.in
@@ -0,0 +1,117 @@
+config BR2_TARGET_ROOTFS_JFFS2
+ bool "jffs2 root filesystem"
+ help
+ Build a jffs2 root filesystem
+
+if BR2_TARGET_ROOTFS_JFFS2
+
+choice
+ prompt "Flash Type"
+ default BR2_TARGET_ROOTFS_JFFS2_FLASH_128
+
+config BR2_TARGET_ROOTFS_JFFS2_DATAFLASH_1056
+ bool "AT45 dataflash with 1056 byte pagesize"
+ select BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER
+
+config BR2_TARGET_ROOTFS_JFFS2_DATAFLASH_528
+ bool "AT45 dataflash with 528 byte pagesize"
+ select BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER
+
+config BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_512_16K
+ bool "NAND flash with 512B Page and 16 kB erasesize"
+ select BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER
+
+config BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_2K_128K
+ bool "NAND flash with 2kB Page and 128 kB erasesize"
+ select BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER
+
+config BR2_TARGET_ROOTFS_JFFS2_FLASH_128
+ bool "Parallel flash with 4 kB pagesize and 128 kB erase size"
+
+config BR2_TARGET_ROOTFS_JFFS2_FLASH_64
+ bool "Parallel flash with 4 kB pagesize and 64 kB erase size"
+
+config BR2_TARGET_ROOTFS_JFFS2_CUSTOM
+ bool "Select custom page and erase size"
+
+endchoice
+
+config BR2_TARGET_ROOTFS_JFFS2_CUSTOM_PAGESIZE
+ hex "Page Size"
+ depends on BR2_TARGET_ROOTFS_JFFS2_CUSTOM
+ default 0x1000
+ help
+ Set to pagesize of memory
+
+config BR2_TARGET_ROOTFS_JFFS2_CUSTOM_EBSIZE
+ hex "Erase block size"
+ depends on BR2_TARGET_ROOTFS_JFFS2_CUSTOM
+ default 0x20000
+ help
+ Set to erase size of memory
+
+config BR2_TARGET_ROOTFS_JFFS2_PAGESIZE
+ hex
+ default 0x420 if BR2_TARGET_ROOTFS_JFFS2_DATAFLASH_1056
+ default 0x210 if BR2_TARGET_ROOTFS_JFFS2_DATAFLASH_528
+ default 0x200 if BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_512_16K
+ default 0x800 if BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_2K_128K
+ default 0x1000 if BR2_TARGET_ROOTFS_JFFS2_FLASH_128
+ default 0x1000 if BR2_TARGET_ROOTFS_JFFS2_FLASH_64
+ default $(BR2_TARGET_ROOTFS_JFFS2_CUSTOM_PAGESIZE) if BR2_TARGET_ROOTFS_JFFS2_CUSTOM
+
+config BR2_TARGET_ROOTFS_JFFS2_EBSIZE
+ hex
+ default 0x2100 if BR2_TARGET_ROOTFS_JFFS2_DATAFLASH_1056
+ default 0x1080 if BR2_TARGET_ROOTFS_JFFS2_DATAFLASH_528
+ default 0x4000 if BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_512_16K
+ default 0x20000 if BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_2K_128K
+ default 0x20000 if BR2_TARGET_ROOTFS_JFFS2_FLASH_128
+ default 0x10000 if BR2_TARGET_ROOTFS_JFFS2_FLASH_64
+ default $(BR2_TARGET_ROOTFS_JFFS2_CUSTOM_EBSIZE) if BR2_TARGET_ROOTFS_JFFS2_CUSTOM
+
+config BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER
+ bool "Do not use Cleanmarker"
+ default y if BR2_TARGET_ROOTFS_JFFS2_DATAFLASH_1056
+ default y if BR2_TARGET_ROOTFS_JFFS2_DATAFLASH_528
+ default y if BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_512_16K
+ default y if BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_2K_128K
+ help
+ Do not use cleanmarkers if using NAND flash or Dataflash where
+ the pagesize is not a power of 2
+
+config BR2_JFFS2_TARGET_SREC
+ bool "RootFS in SREC file formet"
+
+config BR2_TARGET_ROOTFS_JFFS2_PAD
+ bool "Pad output"
+
+config BR2_TARGET_ROOTFS_JFFS2_PADSIZE
+ hex "Pad output size (0x0 = to end of EB)"
+ depends on BR2_TARGET_ROOTFS_JFFS2_PAD
+ default 0x0
+ help
+ Set to 0x0 to pad to end of erase block.
+
+choice
+ prompt "Endianess"
+ default BR2_TARGET_ROOTFS_JFFS2_BE if BR2_alpha || BR2_armeb || \
+ BR2_avr32 || BR2_m68k || BR2_mips || \
+ BR2_powerpc || BR2_sh2a_nofpueb || BR2_sh2eb || \
+ BR2_sh3eb || BR2_sh4eb || BR2_sparc || BR2_sparc64
+
+config BR2_TARGET_ROOTFS_JFFS2_LE
+ bool "little-endian"
+
+config BR2_TARGET_ROOTFS_JFFS2_BE
+ bool "big-endian"
+
+endchoice
+
+config BR2_TARGET_ROOTFS_JFFS2_SUMMARY
+ bool "Produce a summarized JFFS2 image"
+ help
+ A summarised image can be mounted faster if support is
+ enabled in the kernel (CONFIG_JFFS2_SUMMARY)
+
+endif
diff --git a/fs/jffs2/jffs2.mk b/fs/jffs2/jffs2.mk
new file mode 100644
index 000000000..a0a563d18
--- /dev/null
+++ b/fs/jffs2/jffs2.mk
@@ -0,0 +1,61 @@
+#############################################################
+#
+# Build the jffs2 root filesystem image
+#
+#############################################################
+
+JFFS2_OPTS := -e $(BR2_TARGET_ROOTFS_JFFS2_EBSIZE)
+SUMTOOL_OPTS := $(JFFS2_OPTS)
+
+ifeq ($(BR2_TARGET_ROOTFS_JFFS2_PAD),y)
+ifneq ($(strip $(BR2_TARGET_ROOTFS_JFFS2_PADSIZE)),0x0)
+JFFS2_OPTS += --pad=$(strip $(BR2_TARGET_ROOTFS_JFFS2_PADSIZE))
+else
+JFFS2_OPTS += -p
+endif
+SUMTOOL_OPTS += -p
+endif
+
+ifeq ($(BR2_TARGET_ROOTFS_JFFS2_LE),y)
+JFFS2_OPTS += -l
+SUMTOOL_OPTS += -l
+endif
+
+ifeq ($(BR2_TARGET_ROOTFS_JFFS2_BE),y)
+JFFS2_OPTS += -b
+SUMTOOL_OPTS += -b
+endif
+
+JFFS2_OPTS += -s $(BR2_TARGET_ROOTFS_JFFS2_PAGESIZE)
+ifeq ($(BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER),y)
+JFFS2_OPTS += -n
+SUMTOOL_OPTS += -n
+endif
+
+ifneq ($(TARGET_DEVICE_TABLE),)
+JFFS2_OPTS += -D $(TARGET_DEVICE_TABLE)
+endif
+
+ROOTFS_JFFS2_DEPENDENCIES = host-mtd
+
+ifneq ($(BR2_TARGET_ROOTFS_JFFS2_SUMMARY),)
+define ROOTFS_JFFS2_CMD
+ $(MKFS_JFFS2) $(JFFS2_OPTS) -d $(TARGET_DIR) -o $$@.nosummary && \
+ $(SUMTOOL) $(SUMTOOL_OPTS) -i $$@.nosummary -o $$@ && \
+ rm $$@.nosummary
+endef
+else
+define ROOTFS_JFFS2_CMD
+ $(MKFS_JFFS2) $(JFFS2_OPTS) -d $(TARGET_DIR) -o $$@
+endef
+endif
+
+define JFFS2_GEN_SREC
+ $(TARGET_CROSS)objcopy -I binary -O srec --adjust-vma 0xa1000000 $$@ $$@.srec
+endef
+
+ifeq ($(BR2_JFFS2_TARGET_SREC),y)
+ROOTFS_JFFS2_POST_GEN_HOOKS += JFFS2_GEN_SREC
+endif
+
+$(eval $(call ROOTFS_TARGET,jffs2)) \ No newline at end of file