diff --git a/include/image.mk b/include/image.mk index f2a85f6..11e32f8 100644 --- a/include/image.mk +++ b/include/image.mk @@ -84,7 +84,7 @@ ifeq ($(CONFIG_SQUASHFS_XZ),y) SQUASHFSCOMP := xz $(LZMA_XZ_OPTIONS) $(BCJ_FILTER) endif -JFFS2_BLOCKSIZE ?= 64k 128k +JFFS2_BLOCKSIZE ?= 4k 64k 128k fs-types-$(CONFIG_TARGET_ROOTFS_SQUASHFS) += squashfs fs-types-$(CONFIG_TARGET_ROOTFS_JFFS2) += $(addprefix jffs2-,$(JFFS2_BLOCKSIZE)) @@ -96,6 +96,7 @@ fs-subtypes-$(CONFIG_TARGET_ROOTFS_JFFS2) += $(addsuffix -raw,$(addprefix jffs2- TARGET_FILESYSTEMS := $(fs-types-y) +FS_4K := $(filter-out jffs2-%,$(TARGET_FILESYSTEMS)) jffs2-4k FS_64K := $(filter-out jffs2-%,$(TARGET_FILESYSTEMS)) jffs2-64k FS_128K := $(filter-out jffs2-%,$(TARGET_FILESYSTEMS)) jffs2-128k FS_256K := $(filter-out jffs2-%,$(TARGET_FILESYSTEMS)) jffs2-256k diff --git a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit.c b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit.c index b2e51dc..58e0b49 100644 --- a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit.c +++ b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit.c @@ -95,6 +95,10 @@ int mtd_check_rootfs_magic(struct mtd_info *mtd, size_t offset, if (type) *type = MTDSPLIT_PART_TYPE_JFFS2; return 0; + } else if (magic == 0x20031985) { + if (type) + *type = MTDSPLIT_PART_TYPE_JFFS2; + return 0; } else if (be32_to_cpu(magic) == UBI_EC_MAGIC) { if (type) *type = MTDSPLIT_PART_TYPE_UBI; diff --git a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_uimage.c b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_uimage.c index bd1c723..3efb0ff 100644 --- a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_uimage.c +++ b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_uimage.c @@ -127,6 +127,8 @@ static int __mtdsplit_parse_uimage(struct mtd_info *master, header = (struct uimage_header *)(buf + ret); uimage_size = sizeof(*header) + be32_to_cpu(header->ih_size) + ret; + uimage_offset = offset + ret; + if ((offset + uimage_size) > master->size) { pr_debug("uImage exceeds MTD device \"%s\"\n", master->name); @@ -141,9 +143,7 @@ static int __mtdsplit_parse_uimage(struct mtd_info *master, goto err_free_buf; } - uimage_offset = offset; - - if (uimage_offset == 0) { + if (offset == 0) { uimage_part = 0; rf_part = 1; @@ -181,8 +181,8 @@ static int __mtdsplit_parse_uimage(struct mtd_info *master, } parts[uimage_part].name = KERNEL_PART_NAME; - parts[uimage_part].offset = uimage_offset; - parts[uimage_part].size = uimage_size; + parts[uimage_part].offset = offset; + parts[uimage_part].size = uimage_size + uimage_offset; if (type == MTDSPLIT_PART_TYPE_UBI) parts[rf_part].name = UBI_PART_NAME; diff --git a/target/linux/ramips/Makefile b/target/linux/ramips/Makefile index 887b590..5fc6644 100644 --- a/target/linux/ramips/Makefile +++ b/target/linux/ramips/Makefile @@ -10,7 +10,7 @@ ARCH:=mipsel BOARD:=ramips BOARDNAME:=MediaTek Ralink MIPS SUBTARGETS:=mt7620 mt7621 mt76x8 rt288x rt305x rt3883 -FEATURES:=squashfs gpio +FEATURES:=squashfs gpio jffs2 MAINTAINER:=John Crispin KERNEL_PATCHVER:=4.14 diff --git a/target/linux/ramips/image/Makefile b/target/linux/ramips/image/Makefile index 5426226..46964cf 100644 --- a/target/linux/ramips/image/Makefile +++ b/target/linux/ramips/image/Makefile @@ -41,9 +41,13 @@ define Device/Default IMAGE_SIZE := $(ralink_default_fw_size_8M) SUPPORTED_DEVICES := $(subst _,$(comma),$(1)) sysupgrade_bin := append-kernel | append-rootfs | pad-rootfs - IMAGE/sysupgrade.bin := append-kernel | append-rootfs | pad-rootfs | append-metadata | check-size $$$$(IMAGE_SIZE) + BLOCKSIZE := 64k + IMAGE/sysupgrade.bin := append-kernel | pad-to $$$$(BLOCKSIZE) | append-rootfs | \ + pad-rootfs | append-metadata | check-size $$$$(IMAGE_SIZE) endef +#IMAGE/sysupgrade.bin := append-kernel | append-rootfs | pad-rootfs | append-metadata | check-size $$$$(IMAGE_SIZE) + define Build/patch-dtb $(call Image/BuildDTB,../dts/$(DTS).dts,$@.dtb) $(STAGING_DIR_HOST)/bin/patch-dtb $@ $@.dtb