From cd510e775bc7c806b3ad6981221258385554b9e8 Mon Sep 17 00:00:00 2001 From: Roman Hampel Date: Fri, 20 Mar 2020 17:32:30 +0100 Subject: [PATCH] ath79: add support for Comfast CF-WR752AC v1 Specifications: - Qualcomm QCA9531 + QCA9886 - dual band, antenna 2*3dBi - Output power 50mW (17dBm) - 1x 10/100 Mbps LAN RJ45 - 128 MB RAM / 16 MB FLASH (w25q128) - 3 LEDs (red/green/blue) incorporated in "color wheel reset switch" - UART 115200 8N1 Flashing instructions: The U-boot bootloader contains a recovery HTTP server to upload the firmware. Push the reset button while powering the device on and keep it pressed for ~10 seconds. The device's LEDs will blink several times and the recovery page will be at http://192.168.1.1; use it to upload the sysupgrade image. Alternatively, the original firmware is based on OpenWrt so a sysupgrade image can be installed via the stock web GUI. Settings from the original firmware will be saved and restored on the new one, so a factory reset will be needed. To do so, once the new firmware is flashed, enter into failsafe mode by pressing the reset button several times during the boot process, until it starts flashing. Once in failsafe mode, perform a factory reset as usual. LED-Info: The LEDs on the Comfast stock fw have a very proprietary behaviour, corresponding to the user selected working mode (AP, ROUTER or REPEATER). In the first two cases, only blue is used for status and LAN signaling. When using the latter, blue is always off (except for sysupgrade), either red signals bad rssi on master-link, or green good. Since the default working mode of OpenWrt resembles that of a router/AP, the default behavior is implemented accordingly. MAC addresses (art partition): location address (example) use in vendor firmware 0x0 xx:xx:xx:xx:xc:f8 -> eth0 0x6 xx:xx:xx:xx:xc:fa -> wlan5g (+2) 0x1002 xx:xx:xx:xx:xc:f9 -> not used 0x5006 xx:xx:xx:xx:xc:fb -> not used --- xx:xx:xx:xx:xd:02 -> wlan2g (+10) The same strange situation has already been observed and documented for COMFAST CF-E560AC. Signed-off-by: Roman Hampel Co-developed-by: Joao Albuquerque Signed-off-by: Joao Albuquerque [adjust and extend commit message, rebase, minor DTS adjustments, add correct MAC address for wmac, change RSSI LED names and behavior] Signed-off-by: Adrian Schmutzler --- .../dts/qca9531_comfast_cf-wr752ac-v1.dts | 133 ++++++++++++++++++ .../generic/base-files/etc/board.d/01_leds | 7 +- .../generic/base-files/etc/board.d/02_network | 1 + .../etc/hotplug.d/firmware/11-ath10k-caldata | 3 +- target/linux/ath79/image/generic.mk | 11 ++ 5 files changed, 151 insertions(+), 4 deletions(-) create mode 100644 target/linux/ath79/dts/qca9531_comfast_cf-wr752ac-v1.dts diff --git a/target/linux/ath79/dts/qca9531_comfast_cf-wr752ac-v1.dts b/target/linux/ath79/dts/qca9531_comfast_cf-wr752ac-v1.dts new file mode 100644 index 0000000000..4530c59031 --- /dev/null +++ b/target/linux/ath79/dts/qca9531_comfast_cf-wr752ac-v1.dts @@ -0,0 +1,133 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/dts-v1/; + +#include +#include + +#include "qca953x.dtsi" + +/ { + compatible = "comfast,cf-wr752ac-v1", "qca,qca9531"; + model = "COMFAST CF-WR752AC v1"; + + aliases { + serial0 = &uart; + led-boot = &led_lan; + led-failsafe = &led_lan; + led-upgrade = &led_lan; + }; + + leds { + compatible = "gpio-leds"; + + pinctrl-names = "default"; + pinctrl-0 = <&jtag_disable_pins &pinmux_led_rssihigh &pinmux_led_rssilow>; + + led_lan: lan { + label = "cf-wr752ac-v1:blue:lan"; + gpios = <&gpio 12 GPIO_ACTIVE_LOW>; + }; + + rssihigh { + label = "cf-wr752ac-v1:green:rssihigh"; + gpios = <&gpio 15 GPIO_ACTIVE_LOW>; + }; + + rssilow { + label = "cf-wr752ac-v1:red:rssilow"; + gpios = <&gpio 11 GPIO_ACTIVE_LOW>; + }; + }; + + keys { + compatible = "gpio-keys"; + + button { + label = "reset"; + linux,code = ; + gpios = <&gpio 17 GPIO_ACTIVE_LOW>; + debounce-interval = <60>; + }; + }; +}; + +&pinmux { + pinmux_led_rssihigh: pinmux_led_rssihigh { + pinctrl-single,bits = <0xc 0x0 0xff000000>; + }; + + pinmux_led_rssilow: pinmux_led_rssilow { + pinctrl-single,bits = <0x8 0x0 0xff000000>; + }; +}; + +&pcie0 { + status = "okay"; +}; + +&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 0x010000>; + read-only; + }; + + art: partition@10000 { + label = "art"; + reg = <0x010000 0x010000>; + read-only; + }; + + partition@20000 { + compatible = "denx,uimage"; + label = "firmware"; + reg = <0x020000 0xfd0000>; + }; + + partition@ff0000 { + label = "nvram"; + reg = <0xff0000 0x010000>; + read-only; + }; + }; + }; +}; + +&uart { + status = "okay"; +}; + +ð0 { + status = "okay"; + + phy-handle = <&swphy4>; + + mtd-mac-address = <&art 0x0>; +}; + +ð1 { + compatible = "syscon", "simple-mfd"; +}; + +&wmac { + status = "okay"; + + mtd-cal-data = <&art 0x1000>; + + mtd-mac-address = <&art 0x0>; + mtd-mac-address-increment = <10>; +}; diff --git a/target/linux/ath79/generic/base-files/etc/board.d/01_leds b/target/linux/ath79/generic/base-files/etc/board.d/01_leds index 8e84ca25bf..b946d0c63b 100755 --- a/target/linux/ath79/generic/base-files/etc/board.d/01_leds +++ b/target/linux/ath79/generic/base-files/etc/board.d/01_leds @@ -84,6 +84,10 @@ comfast,cf-ew72) ucidef_set_led_switch "lan" "LAN" "$boardname:blue:lan" "switch0" "0x02" ucidef_set_led_netdev "wan" "WAN" "$boardname:blue:wan" "eth1" ;; +comfast,cf-wr752ac-v1|\ +engenius,ecb1750) + ucidef_set_led_netdev "lan" "LAN" "$boardname:blue:lan" "eth0" + ;; devolo,magic-2-wifi) ucidef_set_led_netdev "plcw" "dLAN" "devolo:white:dlan" "eth0.1" "rx" ;; @@ -93,9 +97,6 @@ dlink,dir-842-c3|\ dlink,dir-859-a1) ucidef_set_led_switch "internet" "WAN" "$boardname:green:internet" "switch0" "0x20" ;; -engenius,ecb1750) - ucidef_set_led_netdev "lan" "LAN" "$boardname:blue:lan" "eth0" - ;; engenius,ews511ap) ucidef_set_led_netdev "lan1" "LAN1" "$boardname:blue:lan1" "eth1" ucidef_set_led_netdev "lan2" "LAN2" "$boardname:blue:lan2" "eth0" 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 48bdf657d0..77855d7ab7 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 @@ -14,6 +14,7 @@ ath79_setup_interfaces() alfa-network,ap121f|\ aruba,ap-105|\ avm,fritz300e|\ + comfast,cf-wr752ac-v1|\ devolo,dvl1200i|\ devolo,dvl1750c|\ devolo,dvl1750i|\ 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 18bdfa2b22..c126d9df6a 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 @@ -141,7 +141,8 @@ case "$FIRMWARE" in rm /lib/firmware/ath10k/QCA9888/hw2.0/board-2.bin ;; comfast,cf-e560ac|\ - comfast,cf-ew72) + comfast,cf-ew72|\ + comfast,cf-wr752ac-v1) caldata_extract "art" 0x5000 0x2f20 ath10k_patch_mac $(macaddr_add $(mtd_get_mac_binary art 0x0) +2) ln -sf /lib/firmware/ath10k/pre-cal-pci-0000\:00\:00.0.bin \ diff --git a/target/linux/ath79/image/generic.mk b/target/linux/ath79/image/generic.mk index 87586492be..69067c9de0 100644 --- a/target/linux/ath79/image/generic.mk +++ b/target/linux/ath79/image/generic.mk @@ -356,6 +356,17 @@ define Device/comfast_cf-wr650ac-v2 endef TARGET_DEVICES += comfast_cf-wr650ac-v2 +define Device/comfast_cf-wr752ac-v1 + SOC := qca9531 + DEVICE_VENDOR := COMFAST + DEVICE_MODEL := CF-WR752AC + DEVICE_VARIANT := v1 + DEVICE_PACKAGES := kmod-usb2 kmod-ath10k-ct ath10k-firmware-qca9888-ct \ + -uboot-envtools + IMAGE_SIZE := 16192k +endef +TARGET_DEVICES += comfast_cf-wr752ac-v1 + define Device/devolo_dvl1200e SOC := qca9558 DEVICE_VENDOR := devolo -- 2.30.2