Skip to content

Commit

Permalink
bcm53xx: Add support for D-Link DIR-890L
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
linusw authored and Rafał Miłecki committed Aug 28, 2023
1 parent 1611c21 commit ef76b6f
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 1 deletion.
3 changes: 2 additions & 1 deletion target/linux/bcm53xx/base-files/etc/uci-defaults/09_fix_crc
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ fixseama() {
}

case "$board" in
dlink,dir-885l)
dlink,dir-885l | \
dlink,dir-890l)
fixseama
;;
*)
Expand Down
1 change: 1 addition & 0 deletions target/linux/bcm53xx/base-files/lib/upgrade/platform.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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;;
Expand Down
21 changes: 21 additions & 0 deletions target/linux/bcm53xx/image/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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 \
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit ef76b6f

Please sign in to comment.