ath79: add support for Comfast CF-WR752AC v1
authorRoman Hampel <rhamp@arcor.de>
Fri, 20 Mar 2020 16:32:30 +0000 (17:32 +0100)
committerAdrian Schmutzler <freifunk@adrianschmutzler.de>
Wed, 8 Apr 2020 23:06:37 +0000 (01:06 +0200)
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 <rhamp@arcor.de>
Co-developed-by: Joao Albuquerque <joaohccalbu@gmail.com>
Signed-off-by: Joao Albuquerque <joaohccalbu@gmail.com>
[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 <freifunk@adrianschmutzler.de>
target/linux/ath79/dts/qca9531_comfast_cf-wr752ac-v1.dts [new file with mode: 0644]
target/linux/ath79/generic/base-files/etc/board.d/01_leds
target/linux/ath79/generic/base-files/etc/board.d/02_network
target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
target/linux/ath79/image/generic.mk

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 (file)
index 0000000..4530c59
--- /dev/null
@@ -0,0 +1,133 @@
+// 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 "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 = <KEY_RESTART>;
+                       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";
+};
+
+&eth0 {
+       status = "okay";
+
+       phy-handle = <&swphy4>;
+
+       mtd-mac-address = <&art 0x0>;
+};
+
+&eth1 {
+       compatible = "syscon", "simple-mfd";
+};
+
+&wmac {
+       status = "okay";
+
+       mtd-cal-data = <&art 0x1000>;
+
+       mtd-mac-address = <&art 0x0>;
+       mtd-mac-address-increment = <10>;
+};
index 8e84ca25bfb34f49721ec4ae29114c4b392a7bad..b946d0c63b3cc85a7bc803459d26ab5ba3ef612f 100755 (executable)
@@ -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"
index 48bdf657d03b61960b23dd4798c51f5c67281851..77855d7ab774adbfda9be3e8591e30f763bfa6de 100755 (executable)
@@ -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|\
index 18bdfa2b229af0d761e747764af54a153643e120..c126d9df6a8f81da3f9e64d3fa3dd808ba5cce6a 100644 (file)
@@ -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 \
index 87586492be0b64dbec356aa99e042094493b75c9..69067c9de0e933a6877939c0b5b27d16a7ba9e8c 100644 (file)
@@ -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