summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Walleij <linus.walleij@linaro.org>2023-06-19 08:36:16 +0200
committerRafał Miłecki <rafal@milecki.pl>2023-08-28 08:13:39 +0200
commitef76b6ff3e8f93a719d9c88fb2ae1ee6d641b42e (patch)
tree383a7b68d4c93ac2a7d46d53391425b84833f0bf
parent1611c21ac60287c8c1b533118482d698c6495fbc (diff)
downloadopenwrt-ef76b6ff3e8f93a719d9c88fb2ae1ee6d641b42e.tar.gz
openwrt-ef76b6ff3e8f93a719d9c88fb2ae1ee6d641b42e.tar.bz2
openwrt-ef76b6ff3e8f93a719d9c88fb2ae1ee6d641b42e.zip
bcm53xx: Add support for D-Link DIR-890L
The DIR-890L is very similar to DIR-885L, but has both USB2 and USB3. The signature for the wrgac36 board was copied from DD-Wrt. The DIR-890L bootstrap will only load the first 2 MB after the SEAMA header in the NAND flash, uncompress it with LZMA and execute it. Since the compressed kernel will not fit in 2 MB we have a problem. Solve this by putting a LZMA compressed U-Boot into the first 128 KB of the flash followed by the kernel. The bootstrap will then uncompress and execute U-Boot and then we let U-Boot read the kernel from flash and execute it. Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
-rw-r--r--target/linux/bcm53xx/base-files/etc/uci-defaults/09_fix_crc3
-rw-r--r--target/linux/bcm53xx/base-files/lib/upgrade/platform.sh1
-rw-r--r--target/linux/bcm53xx/image/Makefile21
3 files changed, 24 insertions, 1 deletions
diff --git a/target/linux/bcm53xx/base-files/etc/uci-defaults/09_fix_crc b/target/linux/bcm53xx/base-files/etc/uci-defaults/09_fix_crc
index 89ce8970d7..c39625b865 100644
--- a/target/linux/bcm53xx/base-files/etc/uci-defaults/09_fix_crc
+++ b/target/linux/bcm53xx/base-files/etc/uci-defaults/09_fix_crc
@@ -13,7 +13,8 @@ fixseama() {
}
case "$board" in
-dlink,dir-885l)
+dlink,dir-885l | \
+dlink,dir-890l)
fixseama
;;
*)
diff --git a/target/linux/bcm53xx/base-files/lib/upgrade/platform.sh b/target/linux/bcm53xx/base-files/lib/upgrade/platform.sh
index d9dc497cda..0697d3dc80 100644
--- a/target/linux/bcm53xx/base-files/lib/upgrade/platform.sh
+++ b/target/linux/bcm53xx/base-files/lib/upgrade/platform.sh
@@ -37,6 +37,7 @@ platform_expected_image() {
case "$machine" in
"dlink,dir-885l") echo "seamaseal wrgac42_dlink.2015_dir885l"; return;;
+ "dlink,dir-890l") echo "seamaseal wrgac36_dlink.2013gui_dir890"; return;;
"luxul,abr-4500-v1") echo "lxl ABR-4500"; return;;
"luxul,xap-810-v1") echo "lxl XAP-810"; return;;
"luxul,xap-1410-v1") echo "lxl XAP-1410"; return;;
diff --git a/target/linux/bcm53xx/image/Makefile b/target/linux/bcm53xx/image/Makefile
index 5158b432b3..39b7efbef7 100644
--- a/target/linux/bcm53xx/image/Makefile
+++ b/target/linux/bcm53xx/image/Makefile
@@ -88,6 +88,12 @@ define Build/luxul-lxl
mv $@.new $@
endef
+# Outputs a lzma compressed U-Boot that start at 0x00008000
+# just like the D-Link boot loaders expect
+define Build/dlink-uboot-bin
+ $(STAGING_DIR_HOST)/bin/lzma e $(STAGING_DIR_IMAGE)/$(DEVICE_NAME)-u-boot.bin -d16 $@
+endef
+
define Build/seama-nand
# Seama entity
$(STAGING_DIR_HOST)/bin/oseama \
@@ -274,6 +280,21 @@ define Device/dlink_dir-885l
endef
TARGET_DEVICES += dlink_dir-885l
+define Device/dlink_dir-890l
+ DEVICE_VENDOR := D-Link
+ DEVICE_MODEL := DIR-890L
+ DEVICE_PACKAGES := $(BRCMFMAC_43602A1) $(USB2_PACKAGES) $(USB3_PACKAGES)
+ # Layout: U-boot (128kb max) followed by kernel and appended DTB.
+ # This is done because the boot loader will only read the first 2 MB
+ # from the flash and decompress the LZMA it finds there after the
+ # SEAMA header. Since the compressed kernel will not fit in 2 MB,
+ # we put U-Boot there and let U-Boot read and execute the kernel.
+ KERNEL := dlink-uboot-bin | pad-to 128k | append-kernel | append-dtb
+ $(Device/dlink)
+ SIGNATURE := wrgac36_dlink.2013gui_dir890
+endef
+TARGET_DEVICES += dlink_dir-890l
+
define Device/dlink_dwl-8610ap
DEVICE_VENDOR := D-Link
DEVICE_MODEL := DWL-8610AP