diff options
7 files changed, 235 insertions, 0 deletions
diff --git a/target/linux/ath79/dts/qca9558_dlink_dap-2695-a1.dts b/target/linux/ath79/dts/qca9558_dlink_dap-2695-a1.dts new file mode 100644 index 0000000000..4ae9ee2b47 --- /dev/null +++ b/target/linux/ath79/dts/qca9558_dlink_dap-2695-a1.dts @@ -0,0 +1,176 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/dts-v1/; + +#include <dt-bindings/gpio/gpio.h> +#include <dt-bindings/input/input.h> + +#include "qca955x.dtsi" + +/ { + compatible = "dlink,dap-2695-a1", "qca,qca9558"; + model = "D-link DAP-2695-A1"; + + chosen { + bootargs = "console=ttyS0,115200n8"; + }; + + aliases { + led-boot = &led_power_red; + led-failsafe = &led_power_red; + led-running = &led_power_green; + led-upgrade = &led_power_red; + }; + + leds { + compatible = "gpio-leds"; + + led_power_green: power_green { + label = "d-link:green:power"; + gpios = <&gpio 23 GPIO_ACTIVE_LOW>; + default-state = "on"; + }; + + led_power_red: power_red { + label = "d-link:red:power"; + gpios = <&gpio 14 GPIO_ACTIVE_LOW>; + }; + + wifi2g { + label = "d-link:green:wifi2g"; + gpios = <&gpio 13 GPIO_ACTIVE_LOW>; + linux,default-trigger = "phy1tpt"; + }; + }; + + keys { + compatible = "gpio-keys"; + + reset { + label = "reset"; + linux,code = <KEY_RESTART>; + gpios = <&gpio 17 GPIO_ACTIVE_LOW>; + }; + }; +}; + +&spi { + status = "okay"; + num-cs = <1>; + + flash@0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "mx25l12805d"; + reg = <0>; + spi-max-frequency = <25000000>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "u-boot"; + reg = <0x000000 0x040000>; + read-only; + }; + + partition@40000 { + label = "bdcfg"; + reg = <0x040000 0x010000>; + read-only; + }; + + partition@50000 { + label = "rgdb"; + reg = <0x050000 0x010000>; + read-only; + }; + + partition@60000 { + label = "langpack"; + reg = <0x060000 0x010000>; + read-only; + }; + + partition@70000 { + compatible = "wrg"; + label = "firmware"; + reg = <0x070000 0xf00000>; + }; + + partition@f70000 { + label = "captival"; + reg = <0xf70000 0x070000>; + read-only; + }; + + partition@fe0000 { + label = "certificate"; + reg = <0xfe0000 0x010000>; + read-only; + }; + + art: partition@ff0000 { + label = "art"; + reg = <0xff0000 0x010000>; + read-only; + }; + }; + }; +}; + +&mdio0 { + status = "okay"; + + phy0: ethernet-phy@0 { + reg = <0>; + + qca,ar8327-initvals = < + 0x04 0x07600000 /* PORT0_PAD_CTRL */ + 0x0c 0x00080080 /* PORT6_PAD_CTRL */ + 0x7c 0x0000007e /* PORT0_STATUS */ + 0x94 0x0000007e /* PORT6_STATUS */ + >; + }; +}; + +ð0 { + status = "okay"; + + phy-handle = <&phy0>; + phy-mode = "rgmii"; + pll-data = <0x56000000 0x00000101 0x00001616>; + + fixed-link { + speed = <1000>; + full-duplex; + }; +}; + +ð1 { + status = "okay"; + + phy-mask = <0>; + phy-mode = "sgmii"; + pll-data = <0x03000101 0x00000101 0x00001616>; + + fixed-link { + speed = <1000>; + full-duplex; + }; +}; + +&pcie0 { + status = "okay"; +}; + +&uart { + status = "okay"; +}; + +&wmac { + status = "okay"; + + qca,no-eeprom; +}; diff --git a/target/linux/ath79/generic/base-files/etc/board.d/02_network b/target/linux/ath79/generic/base-files/etc/board.d/02_network index 23a945aadc..283e510416 100755 --- a/target/linux/ath79/generic/base-files/etc/board.d/02_network +++ b/target/linux/ath79/generic/base-files/etc/board.d/02_network @@ -136,6 +136,9 @@ ath79_setup_interfaces() ucidef_add_switch "switch0" \ "0@eth0" "2:wan" "3:lan" "4:lan" ;; + dlink,dap-2695-a1) + ucidef_add_switch "switch0" "0@eth0" "2:lan" "3:wan" "6@eth1" + ;; dlink,dir-825-b1) ucidef_set_interface_wan "eth1" ucidef_add_switch "switch0" \ @@ -361,6 +364,9 @@ ath79_setup_macs() devolo,magic-2-wifi) label_mac=$(macaddr_add "$(mtd_get_mac_binary art 0x1002)" 3) ;; + dlink,dap-2695-a1) + label_mac=$(mtd_get_mac_ascii bdcfg "wlanmac") + ;; dlink,dir-825-b1) lan_mac=$(mtd_get_mac_text "caldata" 0xffa0) wan_mac=$(mtd_get_mac_text "caldata" 0xffb4) diff --git a/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom b/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom index fa36aab4fe..56d083b4bf 100644 --- a/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom +++ b/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom @@ -14,6 +14,10 @@ case "$FIRMWARE" in avm,fritz450e) caldata_extract_reverse "urlader" 0x1541 0x440 ;; + dlink,dap-2695-a1) + caldata_extract "art" 0x1000 0x440 + ath9k_patch_mac $(mtd_get_mac_ascii bdcfg "wlanmac") + ;; dlink,dir-505|\ dlink,dir-825-c1|\ dlink,dir-835-a1) diff --git a/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/11-ath10k-caldata index 29815a1ada..603557d6c2 100644 --- a/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/11-ath10k-caldata +++ b/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/11-ath10k-caldata @@ -40,6 +40,10 @@ case "$FIRMWARE" in caldata_extract "art" 0x5000 0x844 ath10k_patch_mac $(macaddr_add $(mtd_get_mac_binary art 0x0) -1) ;; + dlink,dap-2695-a1) + caldata_extract "art" 0x5000 0x844 + ath10k_patch_mac $(mtd_get_mac_ascii bdcfg wlanmac_a) + ;; dlink,dir-859-a1) caldata_extract "art" 0x5000 0x844 ath10k_patch_mac $(mtd_get_mac_ascii devdata "wlan5mac") diff --git a/target/linux/ath79/generic/base-files/etc/uci-defaults/09_fix-checksum b/target/linux/ath79/generic/base-files/etc/uci-defaults/09_fix-checksum index 22c9483e74..085ad2e925 100644 --- a/target/linux/ath79/generic/base-files/etc/uci-defaults/09_fix-checksum +++ b/target/linux/ath79/generic/base-files/etc/uci-defaults/09_fix-checksum @@ -6,9 +6,17 @@ fix_seama_header() { [ "$kernel_size" ] && mtd -c 0x$kernel_size fixseama firmware } +fixwrgg() { + local kernel_size=$(sed -n 's/mtd[0-9]*: \([0-9a-f]*\).*"kernel".*/\1/p' /proc/mtd) + [ "$kernel_size" ] && mtd -c 0x$kernel_size fixwrgg firmware +} + board=$(board_name) case "$board" in +dlink,dap-2695-a1) + fixwrgg + ;; qihoo,c301) fix_seama_header ;; diff --git a/target/linux/ath79/generic/base-files/lib/preinit/10_fix_eth_mac.sh b/target/linux/ath79/generic/base-files/lib/preinit/10_fix_eth_mac.sh index da1583a825..59fd36b2e9 100644 --- a/target/linux/ath79/generic/base-files/lib/preinit/10_fix_eth_mac.sh +++ b/target/linux/ath79/generic/base-files/lib/preinit/10_fix_eth_mac.sh @@ -8,6 +8,10 @@ preinit_set_mac_address() { avm,fritz450e) ip link set dev eth0 address $(fritz_tffs -n maca -i $(find_mtd_part "tffs (1)")) ;; + dlink,dap-2695-a1) + ip link set dev eth0 address $(mtd_get_mac_ascii bdcfg "lanmac") + ip link set dev eth1 address $(mtd_get_mac_ascii bdcfg "wanmac") + ;; enterasys,ws-ap3705i) ip link set dev eth0 address $(mtd_get_mac_ascii u-boot-env0 ethaddr) ;; diff --git a/target/linux/ath79/image/generic.mk b/target/linux/ath79/image/generic.mk index 05b769b9c3..e92dbc99d6 100644 --- a/target/linux/ath79/image/generic.mk +++ b/target/linux/ath79/image/generic.mk @@ -6,6 +6,7 @@ include ./common-yuncore.mk DEVICE_VARS += ADDPATTERN_ID ADDPATTERN_VERSION DEVICE_VARS += SEAMA_SIGNATURE SEAMA_MTDBLOCK DEVICE_VARS += KERNEL_INITRAMFS_PREFIX +DEVICE_VARS += DAP_SIGNATURE define Build/add-elecom-factory-initramfs $(eval edimax_model=$(word 1,$(1))) @@ -49,6 +50,14 @@ define Build/cybertan-trx -rm $@-empty.bin endef +define Build/mkwrggimg + $(STAGING_DIR_HOST)/bin/mkwrggimg -b \ + -i $@ -o $@.imghdr -d /dev/mtdblock/1 \ + -m $(DEVICE_MODEL)-$(DEVICE_VARIANT) -s $(DAP_SIGNATURE) \ + -v $(VERSION_DIST) -B $(REVISION) + mv $@.imghdr $@ +endef + define Build/nec-enc $(STAGING_DIR_HOST)/bin/nec-enc \ -i $@ -o $@.new -k $(1) @@ -88,6 +97,10 @@ define Build/teltonika-fw-fake-checksum dd of=$@ bs=1 count=16 seek=$$offs conv=notrunc endef +define Build/wrgg-pad-rootfs + $(STAGING_DIR_HOST)/bin/padjffs2 $(IMAGE_ROOTFS) -c 64 >>$@ +endef + define Device/seama KERNEL := kernel-bin | append-dtb | relocate-kernel | lzma KERNEL_INITRAMFS := $$(KERNEL) | seama @@ -458,6 +471,26 @@ define Device/devolo_magic-2-wifi endef TARGET_DEVICES += devolo_magic-2-wifi +define Device/dlink_dap-2695-a1 + SOC := qca9558 + DEVICE_PACKAGES := ath10k-firmware-qca988x-ct kmod-ath10k-ct + DEVICE_VENDOR := D-Link + DEVICE_MODEL := DAP-2965 + DEVICE_VARIANT := A1 + IMAGES := factory.img sysupgrade.bin + IMAGE_SIZE := 15360k + IMAGE/default := append-kernel | pad-offset 65536 160 + IMAGE/factory.img := $$(IMAGE/default) | append-rootfs | wrgg-pad-rootfs | \ + mkwrggimg | check-size + IMAGE/sysupgrade.bin := $$(IMAGE/default) | mkwrggimg | append-rootfs | \ + wrgg-pad-rootfs | append-metadata | check-size + KERNEL := kernel-bin | append-dtb | relocate-kernel | lzma + KERNEL_INITRAMFS := $$(KERNEL) | mkwrggimg + DAP_SIGNATURE := wapac02_dkbs_dap2695 + SUPPORTED_DEVICES += dap-2695-a1 +endef +TARGET_DEVICES += dlink_dap-2695-a1 + define Device/dlink_dir-505 SOC := ar9330 DEVICE_VENDOR := D-Link |