This patch ports over support for the device from ar71xx.

SOC:    AR7370 (Wasp - AR9344 rev2 0001974c)
RAM:    Winbond W9725G6KB-25 32MiB
FLASH:  Winbond 25Q64FVSIG 8MiB
WLAN:   AR9300 Dual-Band 802.11abgn 3x3:3
INPUT:  WPS, RESET button. (hardware Power button)
LED:    Power, LAN, WiFi, 3 RSSI-Leds (low, medium, high)
Serial: Header Next to the winbond flash chip (labeld JP1)
        Pinout is GND - NC - RX - TX - 3V3 (JP1)
        The Serial setting is 115200-8-N-1.

Tested and working:
        - LEDs
        - Buttons
        - Ethernet
        - Wi-Fi
        - Installation via uboot (see wiki)
        - OpenWRT sysupgrade
        - TFTP boot from ramdisk image
            => tftpboot 81000000 initramfs.bin
            => bootm

For flashing and debricking information see:
<https://openwrt.org/toh/wd/rext>

Users coming from ar71xx can use sysupgrade too. But I highly
advise to no save the old configuration and start from a clean
state.

Signed-off-by: Christian Lamparter <chunk...@gmail.com>
---

Note: back in the day, this device required a special 10/100Mbps
vs 1Gbit/s link speed fix: https://patchwork.ozlabs.org/patch/476713/.

But armed with a better understanding (and more importantly: docs), I
think it's possible to do away with the special fixup_rgmii_tx_delay
code and just set the right delay bits in the pll-data.
---
 .../ath79/base-files/etc/board.d/01_leds      |   7 +
 .../ath79/base-files/etc/board.d/02_network   |   6 +-
 .../etc/hotplug.d/firmware/10-ath9k-eeprom    |   5 +
 .../ar9344_wd_mynet-wifi-rangeextender.dts    | 168 ++++++++++++++++++
 target/linux/ath79/image/generic.mk           |  31 ++++
 5 files changed, 216 insertions(+), 1 deletion(-)
 create mode 100644 
target/linux/ath79/dts/ar9344_wd_mynet-wifi-rangeextender.dts

diff --git a/target/linux/ath79/base-files/etc/board.d/01_leds 
b/target/linux/ath79/base-files/etc/board.d/01_leds
index c3dc1bbe56..1dc66ce33f 100755
--- a/target/linux/ath79/base-files/etc/board.d/01_leds
+++ b/target/linux/ath79/base-files/etc/board.d/01_leds
@@ -83,6 +83,13 @@ tplink,tl-wr841n-v9)
        ucidef_set_led_switch "lan3" "LAN3" "tp-link:green:lan3" "switch0" 
"0x04"
        ucidef_set_led_switch "lan4" "LAN4" "tp-link:green:lan4" "switch0" 
"0x02"
        ;;
+wd,mynet-wifi-rangeextender)
+       ucidef_set_led_netdev "lan" "LAN" "$boardname:green:lan" "eth0"
+       ucidef_set_rssimon "wlan0" "200000" "1"
+       ucidef_set_led_rssi "rssilow" "RSSILOW" "$boardname:rssi-low" "wlan0" 
"1" "40" "0" "6"
+       ucidef_set_led_rssi "rssimedium" "RSSIMED" "$boardname:blue:rssi-med" 
"wlan0" "30" "80" "-29" "5"
+       ucidef_set_led_rssi "rssihigh" "RSSIMAX" "$boardname:blue:rssi-max" 
"wlan0" "70" "100" "-69" "8"
+       ;;
 esac
 
 board_config_flush
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 bbb30aa0cc..1755a8b5b7 100755
--- a/target/linux/ath79/base-files/etc/board.d/02_network
+++ b/target/linux/ath79/base-files/etc/board.d/02_network
@@ -19,7 +19,8 @@ ath79_setup_interfaces()
        tplink,tl-wr703n|\
        ubnt,unifiac-lite|\
        ubnt,unifiac-mesh|\
-       ubnt,unifi)
+       ubnt,unifi|\
+       wd,mynet-rangeextender)
                ucidef_set_interface_lan "eth0"
                ;;
        buffalo,wzr-hp-g450h)
@@ -150,6 +151,9 @@ ath79_setup_macs()
                base_mac=$(mtd_get_mac_binary product-info 8)
                wan_mac=$(macaddr_add "$base_mac" 1)
                ;;
+       wd,mynet-wifi-rangeextender)
+               lan_mac=$(nvram get et0macaddr)
+               ;;
        esac
 
        [ -n "$lan_mac" ] && ucidef_set_interface_macaddr "lan" $lan_mac
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 08151388cc..adc035cbd4 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
@@ -123,6 +123,11 @@ case "$FIRMWARE" in
        tplink,tl-wr941-v4)
                ath9k_eeprom_extract "art" 4096 3768
                ;;
+       wd,mynet-wifi-rangeextender)
+               ath9k_eeprom_extract "art" 4096 4096
+               mac=$(nvram get wl0_hwaddr)
+               [ -n "$mac" ] && ath9k_patch_fw_mac_crc "$mac" 2
+               ;;
        *)
                ath9k_eeprom_die "board $board is not supported yet"
                ;;
diff --git a/target/linux/ath79/dts/ar9344_wd_mynet-wifi-rangeextender.dts 
b/target/linux/ath79/dts/ar9344_wd_mynet-wifi-rangeextender.dts
new file mode 100644
index 0000000000..0e9245f59b
--- /dev/null
+++ b/target/linux/ath79/dts/ar9344_wd_mynet-wifi-rangeextender.dts
@@ -0,0 +1,168 @@
+// 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 "ar9344.dtsi"
+
+/ {
+       model = "Western Digital My Net Wi-Fi Range Extender";
+       compatible = "wd,mynet-wifi-rangeextender", "qca,ar9344";
+
+       chosen {
+               bootargs = "console=ttyS0,115200n8";
+       };
+
+       aliases {
+               led-status = &power;
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               power: power {
+                       label = "mynet-wifi-rangeextender:blue:power";
+                       gpios = <&gpio 11 GPIO_ACTIVE_HIGH>;
+               };
+
+               lan {
+                       label = "mynet-wifi-rangeextender:green:lan";
+                       gpios = <&gpio 12 GPIO_ACTIVE_LOW>;
+               };
+
+               wifi {
+                       label = "mynet-wifi-rangeextender:blue:wifi";
+                       gpios = <&gpio 19 GPIO_ACTIVE_LOW>;
+               };
+
+               wifi-rssi-low {
+                       label = "mynet-wifi-rangeextender:blue:rssi-low";
+                       gpios = <&gpio 20 GPIO_ACTIVE_LOW>;
+               };
+
+               wifi-rssi-med {
+                       label = "mynet-wifi-rangeextender:blue:rssi-med";
+                       gpios = <&gpio 21 GPIO_ACTIVE_LOW>;
+               };
+
+               wifi-rssi-max {
+                       label = "mynet-wifi-rangeextender:blue:rssi-max";
+                       gpios = <&gpio 22 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       keys {
+               compatible = "gpio-keys-polled";
+               poll-interval = <50>;
+
+               reset {
+                       linux,code = <KEY_RESTART>;
+                       gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
+                       debounce-interval = <60>;
+               };
+
+               wps {
+                       linux,code = <KEY_WPS_BUTTON>;
+                       gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
+                       debounce-interval = <60>;
+               };
+
+               band-switch {
+                       linux,code = <BTN_1>;
+                       gpios = <&gpio 14 GPIO_ACTIVE_HIGH>;
+                       linux,input-type = <EV_SW>;
+                       debounce-interval = <60>;
+               };
+       };
+};
+
+&ref {
+       clock-frequency = <25000000>;
+};
+
+&uart {
+       status = "okay";
+};
+
+&spi {
+       num-cs = <1>;
+
+       status = "okay";
+
+       flash@0 {
+               compatible = /* "s25fl064k", */ "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <25000000>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       uboot: partition@0 {
+                               label = "u-boot";
+                               reg = <0x0 0x040000>;
+                               read-only;
+                       };
+
+                       partition@40000 {
+                               label = "firmware";
+                               reg = <0x40000 0x7a0000>;
+                       };
+
+                       nvram: partition@7e0000 {
+                               label = "nvram";
+                               reg = <0x7e0000 0x10000>;
+                       };
+
+                       art: partition@7f0000 {
+                               label = "art";
+                               reg = <0x7f0000 0x10000>;
+                               read-only;
+                       };
+               };
+       };
+};
+
+&pcie {
+       status = "okay";
+
+       ath9k: wifi@0,0 {
+               compatible = "pci168c,0030";
+               reg = <0x0000 0 0 0 0>;
+               qca,no-eeprom;
+               /* wifi MAC is stored in nvram */
+       };
+};
+
+&mdio0 {
+       status = "okay";
+
+       phy-mask = <0x10>;
+
+       phy4: ethernet-phy@4 {
+               reg = <4>;
+       };
+};
+
+&eth0 {
+       status = "okay";
+
+       pll-data = <0x0e000000 0x3c000101 0x3c001313>;
+
+       /* ethernet MAC is stored in nvram */
+       phy-mode = "rgmii";
+       phy-handle = <&phy4>;
+
+       gmac-config {
+               device = <&gmac>;
+               rgmii-gmac0 = <1>;
+               rxd-delay = <3>;
+               rxdv-delay = <3>;
+       };
+};
+
+&mdio1 {
+       status = "disabled";
+};
diff --git a/target/linux/ath79/image/generic.mk 
b/target/linux/ath79/image/generic.mk
index 614b3371f3..14c09dc100 100644
--- a/target/linux/ath79/image/generic.mk
+++ b/target/linux/ath79/image/generic.mk
@@ -1,5 +1,7 @@
 include ./common-netgear.mk
 
+DEVICE_VARS += ADDPATTERN_ID ADDPATTERN_VERSION
+
 define Device/avm_fritz300e
   ATH_SOC := ar7242
   DEVICE_TITLE := AVM FRITZ!WLAN Repeater 300E
@@ -142,3 +144,32 @@ define Device/phicomm_k2t
   DEVICE_PACKAGES := kmod-leds-reset kmod-ath10k ath10k-firmware-qca9888
 endef
 TARGET_DEVICES += phicomm_k2t
+
+define Build/cybertan-trx
+       @echo -n '' > $@-empty.bin
+       -$(STAGING_DIR_HOST)/bin/trx -o $@.new \
+               -f $(IMAGE_KERNEL) -F $@-empty.bin \
+               -x 32 -a 0x10000 -x -32 -f $@
+       -mv "$@.new" "$@"
+       -rm $@-empty.bin
+endef
+
+define Build/addpattern
+       -$(STAGING_DIR_HOST)/bin/addpattern -B $(ADDPATTERN_ID) -v 
v$(ADDPATTERN_VERSION) -i $@ -o $@.new
+        -mv "$@.new" "$@"
+endef
+
+define Device/wd_mynet-wifi-rangeextender
+  ATH_SOC := ar9344
+  DEVICE_TITLE := Western Digital My Net Wi-Fi Range Extender
+  DEVICE_PACKAGES := rssileds nvram -swconfig
+  IMAGE_SIZE := 7808k
+  ADDPATTERN_ID := mynet-rext
+  ADDPATTERN_VERSION := 1.00.01
+  IMAGES := sysupgrade.bin factory.bin
+  IMAGE/default := append-rootfs | pad-rootfs | cybertan-trx | addpattern | 
check-size $$$$(IMAGE_SIZE)
+  IMAGE/sysupgrade.bin = $$(IMAGE/default) | append-metadata
+  IMAGE/factory.bin =  $$(IMAGE/default)
+  SUPPORTED_DEVICES += mynet-rext
+endef
+TARGET_DEVICES += wd_mynet-wifi-rangeextender
-- 
2.18.0


_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to