diff --git a/include/image-commands.mk b/include/image-commands.mk index 63539bad08..4e93115963 100644 --- a/include/image-commands.mk +++ b/include/image-commands.mk @@ -56,6 +56,18 @@ define Build/cameo-factory mv $@.new $@ endef +# blow up binary to given size and put a given string at its end: +# cameo-factory +define Build/cameo-factory + factory_stamp=$(word 2,$(1)); \ + ((reduced_size=$(subst k,*1024,$(word 1,$(1)))-$${#factory_stamp})); \ + ( \ + dd if=$@ bs=$$reduced_size conv=sync; \ + echo -n $$factory_stamp; \ + ) > $@.new && \ + mv $@.new $@ +endef + define Build/eva-image $(STAGING_DIR_HOST)/bin/lzma2eva $(KERNEL_LOADADDR) $(KERNEL_LOADADDR) $@ $@.new mv $@.new $@ diff --git a/target/linux/ath79/base-files/etc/board.d/02_network b/target/linux/ath79/base-files/etc/board.d/02_network index 43b537835c..9363440438 100755 --- a/target/linux/ath79/base-files/etc/board.d/02_network +++ b/target/linux/ath79/base-files/etc/board.d/02_network @@ -63,6 +63,16 @@ ath79_setup_interfaces() ucidef_add_switch "switch0" \ "0:lan" "1:lan" "2:lan" "3:lan" "5@eth0" ;; + dlink,dir-825-c1|\ + dlink,dir-835-a1|\ + iodata,etg3-r|\ + iodata,wn-ac1167dgr|\ + iodata,wn-ac1600dgr2|\ + iodata,wn-ag300dgr|\ + pcs,cr5000) + ucidef_add_switch "switch0" \ + "0@eth0" "1:lan" "2:lan" "3:lan" "4:lan" "5:wan" + ;; elecom,wrc-300ghbk2-i) ucidef_add_switch "switch0" \ "0@eth0" "2:lan:4" "3:lan:3" "4:lan:2" "5:lan:1" "1:wan" @@ -79,14 +89,6 @@ ath79_setup_interfaces() glinet,gl-x750) ucidef_set_interfaces_lan_wan "eth1" "eth0" ;; - iodata,etg3-r|\ - iodata,wn-ac1167dgr|\ - iodata,wn-ac1600dgr2|\ - iodata,wn-ag300dgr|\ - pcs,cr5000) - ucidef_add_switch "switch0" \ - "0@eth0" "1:lan" "2:lan" "3:lan" "4:lan" "5:wan" - ;; netgear,wndr3700|\ netgear,wndr3700v2|\ netgear,wndr3800) @@ -217,6 +219,11 @@ ath79_setup_macs() lan_mac=$(mtd_get_mac_text "caldata" 65440) wan_mac=$(mtd_get_mac_text "caldata" 65460) ;; + dlink,dir-825-c1|\ + dlink,dir-835-a1) + lan_mac=$(mtd_get_mac_text "mac" 4) + wan_mac=$(mtd_get_mac_text "mac" 24) + ;; elecom,wrc-300ghbk2-i) wan_mac=$(macaddr_add "$(mtd_get_mac_binary ART 4098)" -2) ;; diff --git a/target/linux/ath79/base-files/etc/board.d/03_gpio_switches b/target/linux/ath79/base-files/etc/board.d/03_gpio_switches index 4af9845b65..4f08fab525 100755 --- a/target/linux/ath79/base-files/etc/board.d/03_gpio_switches +++ b/target/linux/ath79/base-files/etc/board.d/03_gpio_switches @@ -10,6 +10,10 @@ board_config_update board=$(board_name) case "$board" in +dlink,dir-825-c1|\ +dlink,dir-835-a1) + ucidef_add_gpio_switch "wan_led_auto" "WAN LED Auto" "20" "0" + ;; ubnt,nanostation-ac) ucidef_add_gpio_switch "poe_passthrough" "PoE Passthrough" "3" ;; diff --git a/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom b/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom index 68943b4eb0..bf61ecf5dd 100644 --- a/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom +++ b/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom @@ -100,6 +100,11 @@ case "$FIRMWARE" in avm,fritz4020) ath9k_eeprom_extract_reverse "urlader" 5441 1088 ;; + dlink,dir-825-c1|\ + dlink,dir-835-a1) + ath9k_eeprom_extract "art" 4096 1088 + ath9k_patch_fw_mac_crc $(mtd_get_mac_text "mac" 4) 2 + ;; iodata,wn-ac1167dgr|\ iodata,wn-ac1600dgr2|\ iodata,wn-ag300dgr) @@ -125,6 +130,11 @@ case "$FIRMWARE" in buffalo,wzr-hp-g450h) ath9k_eeprom_extract "ART" 4096 1088 ;; + dlink,dir-825-c1|\ + dlink,dir-835-a1) + ath9k_eeprom_extract "art" 20480 1088 + ath9k_patch_fw_mac_crc $(macaddr_add $(mtd_get_mac_text "mac" 24) 1) 2 + ;; ocedo,raccoon|\ tplink,tl-wdr3600|\ tplink,tl-wdr4300|\ diff --git a/target/linux/ath79/dts/ar9344_dlink_dir-825-c1.dts b/target/linux/ath79/dts/ar9344_dlink_dir-825-c1.dts new file mode 100644 index 0000000000..89603aaff6 --- /dev/null +++ b/target/linux/ath79/dts/ar9344_dlink_dir-825-c1.dts @@ -0,0 +1,79 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/dts-v1/; + +#include "ar9344_dlink_dir-8x5.dtsi" + +/ { + model = "D-LINK DIR-825 C1"; + compatible = "dlink,dir-825-c1", "qca,ar9344"; + + aliases { + led-boot = &orange_power; + led-failsafe = &orange_power; + led-running = &blue_power; + led-upgrade = &orange_power; + serial0 = &uart; + }; + + leds { + compatible = "gpio-leds"; + + pinctrl-names = "default"; + pinctrl-0 = <&enable_gpio_11>; + + blue_power: blue_power { + label = "d-link:blue:power"; + gpios = <&gpio 22 GPIO_ACTIVE_LOW>; + }; + + blue_usb { + label = "d-link:blue:usb"; + gpios = <&gpio 11 GPIO_ACTIVE_LOW>; + linux,default-trigger = "usbport"; + trigger-sources = <&hub_port1>; + }; + + blue_wan { + label = "d-link:blue:wan"; + gpios = <&gpio 18 GPIO_ACTIVE_LOW>; + }; + + blue_wlan2g { + label = "d-link:blue:wlan2g"; + gpios = <&gpio 13 GPIO_ACTIVE_LOW>; + linux,default-trigger = "phy0tpt"; + }; + + blue_wps { + label = "d-link:blue:wps"; + gpios = <&gpio 15 GPIO_ACTIVE_LOW>; + }; + + orange_power: orange_power { + label = "d-link:orange:power"; + gpios = <&gpio 14 GPIO_ACTIVE_LOW>; + }; + + orange_wan { + label = "d-link:orange:wan"; + gpios = <&gpio 19 GPIO_ACTIVE_LOW>; + }; + }; + + leds-ath9k { + compatible = "gpio-leds"; + + blue_wlan5g { + label = "d-link:blue:wlan5g"; + gpios = <&ath9k 0 GPIO_ACTIVE_LOW>; + linux,default-trigger = "phy1tpt"; + }; + }; +}; + +&pinmux { + enable_gpio_11: pinmux_enable_gpio_11 { + pinctrl-single,bits = <0x8 0x0 0xff000000>; + }; +}; + diff --git a/target/linux/ath79/dts/ar9344_dlink_dir-835-a1.dts b/target/linux/ath79/dts/ar9344_dlink_dir-835-a1.dts new file mode 100644 index 0000000000..4f0c1e58ee --- /dev/null +++ b/target/linux/ath79/dts/ar9344_dlink_dir-835-a1.dts @@ -0,0 +1,47 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/dts-v1/; + +#include "ar9344_dlink_dir-8x5.dtsi" + +/ { + model = "D-LINK DIR-835 A1"; + compatible = "dlink,dir-835-a1", "qca,ar9344"; + + aliases { + led-boot = &orange_power; + led-failsafe = &orange_power; + led-running = &green_power; + led-upgrade = &orange_power; + serial0 = &uart; + }; + + leds { + compatible = "gpio-leds"; + + green_power: green_power { + label = "d-link:green:power"; + gpios = <&gpio 22 GPIO_ACTIVE_LOW>; + }; + + green_wan { + label = "d-link:green:wan"; + gpios = <&gpio 18 GPIO_ACTIVE_LOW>; + }; + + green_wps { + label = "d-link:green:wps"; + gpios = <&gpio 15 GPIO_ACTIVE_LOW>; + }; + + orange_power: orange_power { + label = "d-link:orange:power"; + gpios = <&gpio 14 GPIO_ACTIVE_LOW>; + }; + + orange_wan { + label = "d-link:orange:wan"; + gpios = <&gpio 19 GPIO_ACTIVE_LOW>; + }; + }; +}; + diff --git a/target/linux/ath79/dts/ar9344_dlink_dir-8x5.dtsi b/target/linux/ath79/dts/ar9344_dlink_dir-8x5.dtsi new file mode 100644 index 0000000000..b49d3458fe --- /dev/null +++ b/target/linux/ath79/dts/ar9344_dlink_dir-8x5.dtsi @@ -0,0 +1,151 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/dts-v1/; + +#include +#include + +#include "ar9344.dtsi" + +/ { + chosen { + bootargs = "console=ttyS0,115200"; + }; + + keys { + compatible = "gpio-keys"; + + reset { + linux,code = ; + gpios = <&gpio 17 GPIO_ACTIVE_LOW>; + debounce-interval = <60>; + }; + + wps { + linux,code = ; + gpios = <&gpio 16 GPIO_ACTIVE_LOW>; + debounce-interval = <60>; + }; + }; +}; + +ð0 { + status = "okay"; + + /* default for ar934x, except for 1000M */ + pll-data = <0x06000000 0x00000101 0x00001616>; + + phy-mode = "rgmii"; + phy-handle = <&phy0>; +}; + +&mdio0 { + status = "okay"; + + phy-mask = <0>; + + phy0: ethernet-phy@0 { + reg = <0>; + qca,ar8327-initvals = < + /* GPL code drop (bsp.h & athrs17_phy.c) */ + 0x10 0xc1000000 /* PWS_REG_VALUE */ + 0x04 0x07600000 /* PORT0 PAD Mode */ + 0x0c 0x01000000 /* PORT6 PAD Mode */ + 0x7c 0x0000007e /* PORT0_STATUS */ + 0x94 0x0000007e /* PORT6_STATUS */ + >; + }; +}; + +&pcie { + status = "okay"; + + ath9k: wifi@0,0 { + compatible = "pci168c,0030"; + reg = <0x0000 0 0 0 0>; + qca,no-eeprom; + gpio-controller; + #gpio-cells = <2>; + }; +}; + +&ref { + clock-frequency = <40000000>; +}; + +&spi { + status = "okay"; + num-cs = <1>; + + flash@0 { + compatible = "jedec,spi-nor"; + reg = <0>; + spi-max-frequency = <25000000>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "uboot"; + reg = <0x000000 0x010000>; + read-only; + }; + + partition@10000 { + label = "nvram"; + reg = <0x010000 0x010000>; + read-only; + }; + + partition@20000 { + label = "firmware"; + reg = <0x020000 0xF90000>; + compatible = "denx,uimage"; + }; + + partition@fb0000 { + label = "lang"; + reg = <0xfb0000 0x030000>; + read-only; + }; + + partition@fe0000 { + label = "mac"; + reg = <0xfe0000 0x010000>; + read-only; + }; + + partition@ff0000 { + label = "art"; + reg = <0xff0000 0x010000>; + read-only; + }; + }; + }; +}; + +&uart { + status = "okay"; +}; + +&usb { + status = "okay"; + #address-cells = <1>; + #size-cells = <0>; + + hub_port1: port@1 { + reg = <1>; + #trigger-source-cells = <0>; + }; +}; + +&usb_phy { + status = "okay"; +}; + +&wmac { + status = "okay"; + qca,no-eeprom; +}; + diff --git a/target/linux/ath79/image/generic.mk b/target/linux/ath79/image/generic.mk index df91c91826..cf71cb30b8 100644 --- a/target/linux/ath79/image/generic.mk +++ b/target/linux/ath79/image/generic.mk @@ -138,6 +138,32 @@ define Device/dlink_dir-825-b1 endef TARGET_DEVICES += dlink_dir-825-b1 +define Device/dlink_dir-825-c1 + ATH_SOC := ar9344 + DEVICE_TITLE := D-LINK DIR-825 C1 + DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport kmod-leds-reset kmod-owl-loader + SUPPORTED_DEVICES += dir-825-c1 + IMAGE_SIZE := 15936k + IMAGES := factory.bin sysupgrade.bin + IMAGE/default := append-kernel | pad-to $$$$(BLOCKSIZE) | append-rootfs | pad-rootfs + IMAGE/factory.bin := $$(IMAGE/default) | cameo-factory $$$$(IMAGE_SIZE) 00DB120AR9344-RT-101214-00 | check-size $$$$(IMAGE_SIZE) + IMAGE/sysupgrade.bin := $$(IMAGE/default) | append-metadata | check-size $$$$(IMAGE_SIZE) +endef +TARGET_DEVICES += dlink_dir-825-c1 + +define Device/dlink_dir-835-a1 + ATH_SOC := ar9344 + DEVICE_TITLE := D-LINK DIR-835 A1 + DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-leds-reset kmod-owl-loader + SUPPORTED_DEVICES += dir-835-a1 + IMAGE_SIZE := 15936k + IMAGES := factory.bin sysupgrade.bin + IMAGE/default := append-kernel | pad-to $$$$(BLOCKSIZE) | append-rootfs | pad-rootfs + IMAGE/factory.bin := $$(IMAGE/default) | cameo-factory $$$$(IMAGE_SIZE) 00DB120AR9344-RT-101214-00 | check-size $$$$(IMAGE_SIZE) + IMAGE/sysupgrade.bin := $$(IMAGE/default) | append-metadata | check-size $$$$(IMAGE_SIZE) +endef +TARGET_DEVICES += dlink_dir-835-a1 + define Device/elecom_wrc-300ghbk2-i ATH_SOC := qca9563 DEVICE_TITLE := ELECOM WRC-300GHBK2-I