From 1deaf695ec02d765c9ae28b1bac264798ca54a05 Mon Sep 17 00:00:00 2001 From: Adrian Schmutzler Date: Mon, 3 Aug 2020 12:02:48 +0200 Subject: [PATCH] ramips: fix/tidy up 4M tplink-v2-image flash layouts For the TP-Link 4M devices with tplink-v2-image recipe (mktplinkfw2.c), there are two different flash layouts based on the size of the (u)boot partition: device uboot OEM firmware OpenWrt (incl. config) tl-wr840n-v5 0x20000 0x3c0000 0x3d0000 tl-wr841n-v14 0x10000 0x3d0000 0x3e0000 In both cases, the 0x10000 config partition is used for the firmware partition as well due to the limited space available and since it's recreated by the OEM firmware anyway. However, the TFTP flashing process will only copy data up to the size of the initial (OEM) firmware size. Therefore, while we can use the bigger partition to have additional erase blocks on the device, we have to limit the image sizes to the TFTP limits. So far, only one layout definition has been set up in mktplinkfw2.c for 4M mediatek devices. This adds a second one and assigns them to the devices so the image sizes are correctly restrained. Signed-off-by: Adrian Schmutzler --- target/linux/ramips/image/mt76x8.mk | 2 +- tools/firmware-utils/src/mktplinkfw2.c | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/target/linux/ramips/image/mt76x8.mk b/target/linux/ramips/image/mt76x8.mk index 00c8fbe43e..9ec469d32d 100644 --- a/target/linux/ramips/image/mt76x8.mk +++ b/target/linux/ramips/image/mt76x8.mk @@ -528,7 +528,7 @@ define Device/tplink_tl-wr841n-v14 IMAGE_SIZE := 3968k DEVICE_MODEL := TL-WR841N DEVICE_VARIANT := v14 - TPLINK_FLASHLAYOUT := 4Mmtk + TPLINK_FLASHLAYOUT := 4MLmtk TPLINK_HWID := 0x08410014 TPLINK_HWREVADD := 0x14 IMAGES := sysupgrade.bin tftp-recovery.bin diff --git a/tools/firmware-utils/src/mktplinkfw2.c b/tools/firmware-utils/src/mktplinkfw2.c index 102d72b1cc..e1c28e6347 100644 --- a/tools/firmware-utils/src/mktplinkfw2.c +++ b/tools/firmware-utils/src/mktplinkfw2.c @@ -124,6 +124,12 @@ char md5salt_boot[MD5SUM_LEN] = { static struct flash_layout layouts[] = { { .id = "4Mmtk", + .fw_max_len = 0x3c0000, + .kernel_la = 0x80000000, + .kernel_ep = 0x80000000, + .rootfs_ofs = 0x140000, + }, { + .id = "4MLmtk", .fw_max_len = 0x3d0000, .kernel_la = 0x80000000, .kernel_ep = 0x80000000,