mpc85xx: tl-wdr4900-v1: convert to mtdsplit image

Currently, the image creation process for the TP-Link tl-wdr4900-v1
needs a fixed sized kernel and places the rootfs partition at a
fixed offset. With the upcoming move to 4.19 the kernel will no
longer fit into the existing allocated space for the kernel
partition.

This patch converts the device to utilize the established
tplink,firmware mtdsplitter, which can deal with a dynamic
kernel/rootfs size.

Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
Signed-off-by: Christian Lamparter <chunkeey@gmail.com> [reworded commit]
This commit is contained in:
Pawel Dembicki 2019-01-03 16:08:51 +00:00 committed by Christian Lamparter
parent c8115167f9
commit 576c69938b
3 changed files with 57 additions and 47 deletions

View File

@ -35,49 +35,44 @@
spi0: spi@7000 {
flash@0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <25000000>;
u-boot@0 {
reg = <0x0 0x0050000>;
label = "u-boot";
read-only;
};
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
dtb@50000 {
reg = <0x00050000 0x00010000>;
label = "dtb";
read-only;
};
partition@0 {
reg = <0x0 0x0050000>;
label = "u-boot";
read-only;
};
kernel@60000 {
reg = <0x00060000 0x002a0000>;
label = "kernel";
};
partition@50000 {
reg = <0x00050000 0x00010000>;
label = "dtb";
read-only;
};
rootfs@300000 {
reg = <0x00300000 0x00ce0000>;
label = "rootfs";
};
partition@60000 {
compatible = "tplink,firmware";
reg = <0x00060000 0x00f80000>;
label = "firmware";
};
config: config@fe0000 {
reg = <0x00fe0000 0x00010000>;
label = "config";
read-only;
};
config: partition@fe0000 {
reg = <0x00fe0000 0x00010000>;
label = "config";
read-only;
};
caldata@ff0000 {
reg = <0x00ff0000 0x00010000>;
label = "caldata";
read-only;
};
firmware@60000 {
reg = <0x00060000 0x00f80000>;
label = "firmware";
partition@ff0000 {
reg = <0x00ff0000 0x00010000>;
label = "caldata";
read-only;
};
};
};
};

View File

@ -1 +1,3 @@
CONFIG_MTD_SPLIT_FIRMWARE=y
CONFIG_MTD_SPLIT_TPLINK_FW=y
CONFIG_TL_WDR4900_V1=y

View File

@ -7,6 +7,30 @@ include $(INCLUDE_DIR)/image.mk
DEVICE_VARS += TPLINK_HWID TPLINK_HWREV TPLINK_FLASHLAYOUT
define rootfs_align
$(patsubst %-256k,0x40000,$(patsubst %-128k,0x20000,$(patsubst %-64k,0x10000,$(patsubst squashfs%,0x4,$(patsubst root.%,%,$(1))))))
endef
# combine kernel and rootfs into one image
# mktplinkfw <type> <optional extra arguments to mktplinkfw binary>
# <type> is "sysupgrade" or "factory"
#
# -a align the rootfs start on an <align> bytes boundary
# -j add jffs2 end-of-filesystem markers
# -s strip padding from end of the image
# -X reserve <size> bytes in the firmware image (hexval prefixed with 0x)
define Build/mktplinkfw
-$(STAGING_DIR_HOST)/bin/mktplinkfw \
-H $(TPLINK_HWID) -W $(TPLINK_HWREV) -F $(TPLINK_FLASHLAYOUT) -N OpenWrt -V $(REVISION) \
-k $(IMAGE_KERNEL) \
-r $@ \
-o $@.new \
-j -X 0x40000 \
-a $(call rootfs_align,$(FILESYSTEM)) \
$(wordlist 2,$(words $(1)),$(1)) \
$(if $(findstring sysupgrade,$(word 1,$(1))),-s) && mv $@.new $@ || rm -f $@
endef
define Device/Default
PROFILES := Default
DEVICE_DTS := $(1)
@ -16,17 +40,6 @@ define Device/Default
KERNEL := kernel-bin
endef
define Build/tplink-v1-image
$(STAGING_DIR_HOST)/bin/mktplinkfw \
-H $(TPLINK_HWID) -W $(TPLINK_HWREV) -F $(TPLINK_FLASHLAYOUT) \
-N "$(VERSION_DIST)" -V $(REVISION) \
-k $(IMAGE_KERNEL) \
-r $(IMAGE_ROOTFS) \
-j \
$(1) \
-o $@
endef
ifeq ($(SUBTARGET),generic)
define Device/tl-wdr4900-v1
@ -39,8 +52,8 @@ define Device/tl-wdr4900-v1
SUPPORTED_DEVICES:=tl-wdr4900-v1 tplink,tl-wdr4900-v1
IMAGES := fdt.bin factory.bin sysupgrade.bin
IMAGE/fdt.bin := append-dtb
IMAGE/factory.bin := tplink-v1-image
IMAGE/sysupgrade.bin := tplink-v1-image -s | append-metadata
IMAGE/sysupgrade.bin := append-rootfs | mktplinkfw sysupgrade | append-metadata
IMAGE/factory.bin := append-rootfs | mktplinkfw factory
endef
TARGET_DEVICES += tl-wdr4900-v1