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 1a83d56cc7..14f6c59822 100755 --- a/target/linux/ath79/base-files/etc/board.d/02_network +++ b/target/linux/ath79/base-files/etc/board.d/02_network @@ -141,6 +141,14 @@ ath79_setup_interfaces() tplink,tl-wr941-v2) ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4" "wan" ;; + ubnt,routerstation) + ucidef_set_interfaces_lan_wan "eth1" "eth0" + ;; + ubnt,routerstation-pro) + ucidef_set_interface_wan "eth0" + ucidef_add_switch "switch0" \ + "0@eth1" "2:lan:3" "3:lan:2" "4:lan:1" + ;; ubnt,unifiac-mesh-pro|\ ubnt,unifiac-pro) ucidef_add_switch "switch0" \ @@ -194,6 +202,11 @@ ath79_setup_macs() base_mac=$(mtd_get_mac_binary u-boot 130048) wan_mac=$(macaddr_add "$base_mac" 1) ;; + ubnt,routerstation|\ + ubnt,routerstation-pro) + wan_mac=$(fconfig -s -r -d $(find_mtd_part "RedBoot config") -n ar7100_esa) + lan_mac=$(macaddr_add "$wan_mac" 1) + ;; esac [ -n "$lan_mac" ] && ucidef_set_interface_macaddr "lan" $lan_mac diff --git a/target/linux/ath79/base-files/lib/upgrade/platform.sh b/target/linux/ath79/base-files/lib/upgrade/platform.sh index 08039e0052..806b3f0787 100644 --- a/target/linux/ath79/base-files/lib/upgrade/platform.sh +++ b/target/linux/ath79/base-files/lib/upgrade/platform.sh @@ -5,6 +5,15 @@ PART_NAME=firmware REQUIRE_IMAGE_METADATA=1 +routerstation_do_upgrade() { + local append + local kern_length=0x$(dd if="$1" bs=2 skip=1 count=4 2>/dev/null) + + [ -f "$CONF_TAR" -a "$SAVE_CONFIG" -eq 1 ] && append="-j $CONF_TAR" + dd if="$1" bs=64k skip=1 2>/dev/null | \ + mtd -r $append -Fkernel:$kern_length:0x80060000,rootfs write - kernel:rootfs +} + platform_check_image() { return 0 } @@ -17,6 +26,10 @@ platform_do_upgrade() { PART_NAME="rootfs:kernel" default_do_upgrade "$ARGV" ;; + ubnt,routerstation|\ + ubnt,routerstation-pro) + routerstation_do_upgrade "$ARGV" + ;; *) default_do_upgrade "$ARGV" ;; diff --git a/target/linux/ath79/dts/ar7161_ubnt_routerstation-pro.dts b/target/linux/ath79/dts/ar7161_ubnt_routerstation-pro.dts new file mode 100644 index 0000000000..123d1efbf1 --- /dev/null +++ b/target/linux/ath79/dts/ar7161_ubnt_routerstation-pro.dts @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/dts-v1/; + +#include "ar7161_ubnt_routerstation.dtsi" + +/ { + compatible = "ubnt,routerstation-pro", "qca,ar7161"; + model = "Ubiquiti RouterStation Pro"; +}; + +&mdio0 { + status = "okay"; + + phy0: ethernet-phy@0 { + reg = <0>; + }; + + phy4: ethernet-phy@4 { + reg = <4>; + }; +}; + +ð0 { + compatible = "qca,ar7100-eth", "syscon"; + phy-mode = "rgmii"; + phy-handle = <&phy4>; +}; + +ð1 { + compatible = "qca,ar7100-eth", "syscon"; + phy-mode = "rgmii"; + phy-handle = <&phy0>; +}; diff --git a/target/linux/ath79/dts/ar7161_ubnt_routerstation.dts b/target/linux/ath79/dts/ar7161_ubnt_routerstation.dts new file mode 100644 index 0000000000..63b46b9c79 --- /dev/null +++ b/target/linux/ath79/dts/ar7161_ubnt_routerstation.dts @@ -0,0 +1,27 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/dts-v1/; + +#include "ar7161_ubnt_routerstation.dtsi" + +/ { + compatible = "ubnt,routerstation", "qca,ar7161"; + model = "Ubiquiti Networks RouterStation"; +}; + +ð0 { + phy-mode = "mii"; + + fixed-link { + speed = <100>; + full-duplex; + }; +}; + +ð1 { + phy-mode = "rmii"; + + fixed-link { + speed = <100>; + full-duplex; + }; +}; diff --git a/target/linux/ath79/dts/ar7161_ubnt_routerstation.dtsi b/target/linux/ath79/dts/ar7161_ubnt_routerstation.dtsi new file mode 100644 index 0000000000..143a4b7e80 --- /dev/null +++ b/target/linux/ath79/dts/ar7161_ubnt_routerstation.dtsi @@ -0,0 +1,106 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/dts-v1/; + +#include +#include + +#include "ar7100.dtsi" + +/ { + chosen { + bootargs = "console=ttyS0,115200"; + }; + + aliases { + led-boot = &rf; + led-failsafe = &rf; + led-running = &rf; + led-upgrade = &rf; + }; + + extosc: ref { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-output-names = "ref"; + clock-frequency = <40000000>; + }; + + gpio-leds { + compatible = "gpio-leds"; + + rf: rf_green { + label = "ubnt:green:rf"; + gpios = <&gpio 2 GPIO_ACTIVE_HIGH>; + default-state = "off"; + }; + }; + + gpio-keys-polled { + compatible = "gpio-keys-polled"; + poll-interval = <20>; + debounce-interval = <60>; + + wps { + label = "sw4"; + linux,code = ; + gpios = <&gpio 8 GPIO_ACTIVE_LOW>; + }; + }; +}; + +ð0 { + status = "okay"; +}; + +ð1 { + status = "okay"; +}; + +&pcie0 { + status = "okay"; +}; + +&spi { + status = "okay"; + num-cs = <1>; + + flash@0 { + compatible = "jedec,spi-nor"; + reg = <0>; + spi-max-frequency = <25000000>; + + partitions { + compatible = "ecoscentric,redboot-fis-partitions"; + }; + }; +}; + +&uart { + status = "okay"; +}; + +&usb_phy { + status = "okay"; +}; + +&usb1 { + status = "okay"; + #address-cells = <1>; + #size-cells = <0>; + + usb_ochi_port: port@1 { + reg = <1>; + #trigger-source-cells = <0>; + }; +}; + +&usb2 { + status = "okay"; + #address-cells = <1>; + #size-cells = <0>; + + usb_echi_port: port@1 { + reg = <1>; + #trigger-source-cells = <0>; + }; +}; diff --git a/target/linux/ath79/generic/config-default b/target/linux/ath79/generic/config-default index a7d0d89aa9..b2194a4132 100644 --- a/target/linux/ath79/generic/config-default +++ b/target/linux/ath79/generic/config-default @@ -5,6 +5,7 @@ CONFIG_IP17XX_PHY=y CONFIG_LEDS_RESET=y CONFIG_MARVELL_PHY=y CONFIG_MICREL_PHY=y +CONFIG_MTD_REDBOOT_PARTS=y CONFIG_MTD_SPLIT_EVA_FW=y CONFIG_OF_ADDRESS_PCI=y CONFIG_OF_PCI=y diff --git a/target/linux/ath79/image/generic-ubnt.mk b/target/linux/ath79/image/generic-ubnt.mk index 4681996a7b..49f5fcc4f2 100644 --- a/target/linux/ath79/image/generic-ubnt.mk +++ b/target/linux/ath79/image/generic-ubnt.mk @@ -117,3 +117,33 @@ define Device/ubnt_unifiac-pro SUPPORTED_DEVICES += ubnt-unifiac-pro endef TARGET_DEVICES += ubnt_unifiac-pro + +define Device/ubnt_routerstation_common + DEVICE_PACKAGES := -kmod-ath9k -wpad-mini -uboot-envtools kmod-usb-ohci kmod-usb2 fconfig + ATH_SOC := ar7161 + IMAGE_SIZE := 16128k + IMAGES := sysupgrade.bin factory.bin + IMAGE/factory.bin := append-rootfs | pad-rootfs | mkubntimage | check-size $$$$(IMAGE_SIZE) + IMAGE/sysupgrade.bin := append-rootfs | pad-rootfs | combined-image | check-size $$$$(IMAGE_SIZE) | append-metadata + KERNEL := kernel-bin | append-dtb | lzma | pad-to $$(BLOCKSIZE) + KERNEL_INITRAMFS := kernel-bin | append-dtb +endef + +define Device/ubnt_routerstation + $(Device/ubnt_routerstation_common) + DEVICE_TITLE := Ubiquiti RouterStation + UBNT_BOARD := RS + UBNT_TYPE := RSx + UBNT_CHIP := ar7100 + DEVICE_PACKAGES += -swconfig +endef +TARGET_DEVICES += ubnt_routerstation + +define Device/ubnt_routerstation-pro + $(Device/ubnt_routerstation_common) + DEVICE_TITLE := Ubiquiti RouterStation Pro + UBNT_BOARD := RSPRO + UBNT_TYPE := RSPRO + UBNT_CHIP := ar7100pro +endef +TARGET_DEVICES += ubnt_routerstation-pro