bcm53xx: Add support for D-Link DIR-890L
authorLinus Walleij <linus.walleij@linaro.org>
Mon, 19 Jun 2023 06:36:16 +0000 (08:36 +0200)
committerRafał Miłecki <rafal@milecki.pl>
Mon, 28 Aug 2023 06:13:39 +0000 (08:13 +0200)
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>
target/linux/bcm53xx/base-files/etc/uci-defaults/09_fix_crc
target/linux/bcm53xx/base-files/lib/upgrade/platform.sh
target/linux/bcm53xx/image/Makefile

index 89ce8970d75ab7e539fcf71dc812a9dd2864cf75..c39625b8653664b2f93f92c747e7e3abe9382825 100644 (file)
@@ -13,7 +13,8 @@ fixseama() {
 }
 
 case "$board" in
-dlink,dir-885l)
+dlink,dir-885l | \
+dlink,dir-890l)
        fixseama
        ;;
 *)
index d9dc497cdac360e4c11ddc47fadc86b18c1f7423..0697d3dc80bb6472f24001b99df8e2d7fbc515bc 100644 (file)
@@ -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;;
index 5158b432b3b1db937d28b5eddffb3ebfc20a1c7d..39b7efbef789f8428e5b58a07a3554ec953dbf9d 100644 (file)
@@ -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