From 9ed272fe950029c88189ba24d4b3594cd52c176c Mon Sep 17 00:00:00 2001 From: Joan Moreau Date: Sun, 31 Mar 2019 04:26:22 +0000 Subject: [PATCH] ath79: add support for Comfast WR650AC v1/v2 This is a dual band 11a/11n router with 1x wan and 4x gig lan ports. There are two versions of this router which can be identified through the factory web interface, v1 has 128mb ram and a uboot size of 128k, v2 has 256mb ram and a uboot size of 256k, the remaining hardware and PCB markings are the same. Short specification: SoC: Qualcomm Atheros QCA9558 - 720 MHz Switch: Atheros AR8327 Second radio : Qualcomm Atheros QCA9880 802.11ac 4 LAN/1 WAN 1000Mps Ethernet 256 MB of RAM (DDR2) 16 MB of FLASH 3x2.4 GHz, 3x5GHz antennas Steps to install : Option A : Use vendor UI Option B (if A is not working) : (a) Download 'backup' from vendor UI and rename it backup.tar.gz (b) Open the archive, and update the root password in /etc/shadow by '$1$9wX3HGfB$X5Sb3kqzzBLdKRUR2kfFd0' (c) 'Restore' from the archive using the vendor UI. Root password is now 'aaa' (d) Scp the firwmware to the device: $ scp .bin root@192.168.1.1:/ (d) ssh to the device and flash the firmware: $ cd / $ mtd -e firmware -r write .bin firmware Signed-off-by: Gareth Parker Signed-off-by: Ding Tengfei Signed-off-by: Joan Moreau [reformatted commit message] Signed-off-by: David Bauer --- .../ath79/base-files/etc/board.d/02_network | 6 ++ .../etc/hotplug.d/firmware/11-ath10k-caldata | 8 +- .../dts/qca9558_comfast_cf-wr650ac-v1.dts | 80 +++++++++++++++ .../dts/qca9558_comfast_cf-wr650ac-v2.dts | 80 +++++++++++++++ .../ath79/dts/qca9558_comfast_cf-wr650ac.dtsi | 98 +++++++++++++++++++ target/linux/ath79/image/generic.mk | 18 ++++ 6 files changed, 287 insertions(+), 3 deletions(-) create mode 100644 target/linux/ath79/dts/qca9558_comfast_cf-wr650ac-v1.dts create mode 100644 target/linux/ath79/dts/qca9558_comfast_cf-wr650ac-v2.dts create mode 100644 target/linux/ath79/dts/qca9558_comfast_cf-wr650ac.dtsi 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 dd9fa3c36b..466a0ee684 100755 --- a/target/linux/ath79/base-files/etc/board.d/02_network +++ b/target/linux/ath79/base-files/etc/board.d/02_network @@ -111,6 +111,12 @@ ath79_setup_interfaces() ubnt,routerstation) ucidef_set_interfaces_lan_wan "eth1" "eth0" ;; + comfast,cf-wr650ac-v1|\ + comfast,cf-wr650ac-v2) + ucidef_set_interfaces_lan_wan "eth0" "eth1" + ucidef_add_switch "switch0" \ + "0@eth0" "1:lan" "2:lan" "3:lan" "4:lan" "5:wan" "6@eth1" + ;; devolo,dvl1200e|\ devolo,dvl1750e|\ ocedo,ursus) diff --git a/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata index 501053e9d7..6f50a47271 100644 --- a/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata +++ b/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata @@ -87,6 +87,11 @@ board=$(board_name) case "$FIRMWARE" in "ath10k/cal-pci-0000:00:00.0.bin") case $board in + comfast,cf-wr650ac-v1|\ + comfast,cf-wr650ac-v2|\ + yuncore,a770) + ath10kcal_extract "art" 20480 2116 + ;; devolo,dvl1200e|\ devolo,dvl1200i|\ devolo,dvl1750c|\ @@ -182,9 +187,6 @@ case "$FIRMWARE" in ubnt,unifiac-pro) ath10kcal_extract "EEPROM" 20480 2116 ;; - yuncore,a770) - ath10kcal_extract "art" 20480 2116 - ;; esac ;; "ath10k/pre-cal-pci-0000:00:00.0.bin") diff --git a/target/linux/ath79/dts/qca9558_comfast_cf-wr650ac-v1.dts b/target/linux/ath79/dts/qca9558_comfast_cf-wr650ac-v1.dts new file mode 100644 index 0000000000..ff0fc0fe33 --- /dev/null +++ b/target/linux/ath79/dts/qca9558_comfast_cf-wr650ac-v1.dts @@ -0,0 +1,80 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/dts-v1/; + +#include +#include + +#include "qca9558_comfast_cf-wr650ac.dtsi" + +/ { + compatible = "comfast,cf-wr650ac-v1", "qca,qca9558"; + model = "Comfast CF-WR650AC v1"; + + leds { + compatible = "gpio-leds"; + + wps { + label = "cf-wr650ac-v1:blue:wps"; + gpios = <&gpio 20 GPIO_ACTIVE_LOW>; + }; + + network { + label = "cf-wr650ac-v1:blue:network"; + gpios = <&gpio 4 GPIO_ACTIVE_LOW>; + }; + + wlan2g { + label = "cf-wr650ac-v1:blue:wlan2"; + gpios = <&gpio 13 GPIO_ACTIVE_LOW>; + linux,default-trigger = "phy1tpt"; + }; + + wlan5g { + label = "cf-wr650ac-v1:blue:wlan5"; + gpios = <&gpio 2 GPIO_ACTIVE_LOW>; + linux,default-trigger = "phy0tpt"; + }; + }; + +}; + +&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 = "u-boot"; + reg = <0x000000 0x020000>; + read-only; + }; + + art: partition@20000 { + label = "art"; + reg = <0x020000 0x010000>; + read-only; + }; + + partition@30000 { + label = "firmware"; + compatible = "denx,uimage"; + reg = <0x030000 0xfc0000>; + }; + + partition@ff0000 { + label = "nvram"; + reg = <0xff0000 0x010000>; + read-only; + }; + }; + }; +}; diff --git a/target/linux/ath79/dts/qca9558_comfast_cf-wr650ac-v2.dts b/target/linux/ath79/dts/qca9558_comfast_cf-wr650ac-v2.dts new file mode 100644 index 0000000000..fc461d16d0 --- /dev/null +++ b/target/linux/ath79/dts/qca9558_comfast_cf-wr650ac-v2.dts @@ -0,0 +1,80 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/dts-v1/; + +#include +#include + +#include "qca9558_comfast_cf-wr650ac.dtsi" + +/ { + compatible = "comfast,cf-wr650ac-v2", "qca,qca9558"; + model = "Comfast CF-WR650AC v2"; + + leds { + compatible = "gpio-leds"; + + wps { + label = "cf-wr650ac-v2:blue:wps"; + gpios = <&gpio 20 GPIO_ACTIVE_LOW>; + }; + + network { + label = "cf-wr650ac-v2:blue:network"; + gpios = <&gpio 4 GPIO_ACTIVE_LOW>; + }; + + wlan2g { + label = "cf-wr650ac-v2:blue:wlan2"; + gpios = <&gpio 13 GPIO_ACTIVE_LOW>; + linux,default-trigger = "phy1tpt"; + }; + + wlan5g { + label = "cf-wr650ac-v2:blue:wlan5"; + gpios = <&gpio 2 GPIO_ACTIVE_LOW>; + linux,default-trigger = "phy0tpt"; + }; + }; + +}; + +&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 = "u-boot"; + reg = <0x000000 0x040000>; + read-only; + }; + + art: partition@40000 { + label = "art"; + reg = <0x040000 0x010000>; + read-only; + }; + + partition@50000 { + label = "firmware"; + compatible = "denx,uimage"; + reg = <0x050000 0xfa0000>; + }; + + partition@ff0000 { + label = "nvram"; + reg = <0xff0000 0x010000>; + read-only; + }; + }; + }; +}; diff --git a/target/linux/ath79/dts/qca9558_comfast_cf-wr650ac.dtsi b/target/linux/ath79/dts/qca9558_comfast_cf-wr650ac.dtsi new file mode 100644 index 0000000000..5f7498a06e --- /dev/null +++ b/target/linux/ath79/dts/qca9558_comfast_cf-wr650ac.dtsi @@ -0,0 +1,98 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/dts-v1/; + +#include +#include + +#include "qca9557.dtsi" + +/ { + chosen { + bootargs = "console=ttyS0,115200n8"; + }; + + keys { + compatible = "gpio-keys"; + + button0 { + label = "reset"; + linux,code = ; + gpios = <&gpio 19 GPIO_ACTIVE_LOW>; + debounce-interval = <60>; + }; + }; + + watchdog { + compatible = "linux,wdt-gpio"; + gpios = <&gpio 17 GPIO_ACTIVE_LOW>; + hw_algo = "toggle"; + hw_margin_ms = <500>; + always-running; + }; +}; + +&pcie0 { + status = "okay"; +}; + +&uart { + status = "okay"; +}; + +&usb_phy0 { + status = "okay"; +}; + +&usb0 { + status = "okay"; +}; + +&mdio0 { + status = "okay"; + + switch0@1f { + compatible = "qca,ar8327"; + reg = <0x1f>; + qca,ar8327-initvals = < + 0x04 0x87600000 /* PORT0 PAD MODE CTRL */ + 0x0c 0x00080080 /* PORT6 PAD MODE CTRL */ + 0x10 0x81000080 /* POWER_ON_STRIP */ + 0x7c 0x0000007e /* PORT0_STATUS */ + 0x94 0x0000007e /* PORT6 STATUS */ + >; + }; +}; + +ð0 { + status = "okay"; + + pll-data = <0xa6000000 0x00000101 0x00001616>; + mtd-mac-address = <&art 0x0>; + fixed-link { + speed = <1000>; + full-duplex; + }; +}; + +ð1 { + status = "okay"; + + pll-data = <0x03000101 0x00000101 0x00001616>; + mtd-mac-address = <&art 0x6>; + fixed-link { + speed = <1000>; + full-duplex; + }; +}; + +&wmac { + status = "okay"; + + mtd-cal-data = <&art 0x1000>; + mtd-mac-address = <&art 0x18>; +}; + +// This node is required for the Ethernet ports to work correctly. +&gpio { + status = "okay"; +}; diff --git a/target/linux/ath79/image/generic.mk b/target/linux/ath79/image/generic.mk index 7ceb5a8867..149e4ed300 100644 --- a/target/linux/ath79/image/generic.mk +++ b/target/linux/ath79/image/generic.mk @@ -275,6 +275,24 @@ define Device/comfast_cf-e5 endef TARGET_DEVICES += comfast_cf-e5 +define Device/comfast_cf-wr650ac-v1 + ATH_SOC := qca9558 + DEVICE_VENDOR := COMFAST + DEVICE_MODEL := CF-WR650AC + DEVICE_VARIANT := v1 + DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca988x-ct +endef +TARGET_DEVICES += comfast_cf-wr650ac-v1 + +define Device/comfast_cf-wr650ac-v2 + ATH_SOC := qca9558 + DEVICE_VENDOR := COMFAST + DEVICE_MODEL := CF-WR650AC + DEVICE_VARIANT := v2 + DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca988x-ct +endef +TARGET_DEVICES += comfast_cf-wr650ac-v2 + define Device/devolo_dvl1200e ATH_SOC := qca9558 DEVICE_VENDOR := devolo