Hey Christian,

I found something to nitpick about. Find my comments inline.

Mathias

17.08.2018 14:06, Christian Lamparter:
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:   AR9380 Dual-Band 802.11abgn 3x3:3
INPUT:  WPS, RESET button (hardware on/off toggle 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.

- Installation via uboot's upgrade command
   0. attach serial adaptor cable for TTL/CMOS-logic
   1. interrupt uboot and enter "upgrade code.bin" into
       the u-boot prompt
        ar7240> upgrade code.bin

   2. rename openwrt...sysupgrade.bin to code.bin on PC
   3. run a tftp-client on the PC
         (shell)$ tftp 192.168.1.230
         binary
         put code.bin
   4. wait for the device to finish

        [...]
        Copy buff to Flash from 0x9f040000 length 0x79f000
        Copy to Flash... write addr: 9f040000
        done

   5.  enter "go" in the u-boot prompt
        ar7240> go

- TFTP ramdisk image boot from the uboot prompt
   (tftp server defaults to serverip 192.168.1.254)
        => tftpboot 81000000 initramfs.bin
        => bootm

Tested and working:
        - LEDs
        - Buttons
        - Ethernet
        - Wi-Fi
        - OpenWRT sysupgrade

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 <[email protected]>
---
  .../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 +
  .../ar7370_wd_mynet-wifi-rangeextender.dts    | 174 ++++++++++++++++++
  target/linux/ath79/image/generic.mk           |  28 +++
  5 files changed, 219 insertions(+), 1 deletion(-)
  create mode 100644 
target/linux/ath79/dts/ar7370_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 73f350cae2..065f2b90bf 100755
--- a/target/linux/ath79/base-files/etc/board.d/01_leds
+++ b/target/linux/ath79/base-files/etc/board.d/01_leds
@@ -88,6 +88,13 @@ tplink,tl-wr841-v11)
        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"

I'm quite sure the last two parameters are not really used on your boards. These are used to change the brightness of pwm leds. According to your dts it looks like the rssi leds are "normal" ones.

I'm not sure about the first two parameters either. They define the range for which the led should be bright. Where the min is 1% and the max is 100%. I would expect to see some kind of stacking used:

low: 1 to 100%
med: 33 to 100%
max: 66 to 100%


+       ;;
  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 603251954b..9e31be40f9 100755
--- a/target/linux/ath79/base-files/etc/board.d/02_network
+++ b/target/linux/ath79/base-files/etc/board.d/02_network
@@ -21,7 +21,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)
@@ -181,6 +182,9 @@ ath79_setup_macs()
                base_mac=$(mtd_get_mac_binary u-boot 130048)
                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 f668a82fa2..d158496418 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
@@ -137,6 +137,11 @@ case "$FIRMWARE" in
        ubnt,unifi)
                ath9k_eeprom_extract "art" 4096 2048
                ;;
+       wd,mynet-wifi-rangeextender)
+               ath9k_eeprom_extract "art" 4096 4096
+               mac=$(nvram get wl0_hwaddr)
+               [ -n "$mac" ] && ath9k_patch_fw_mac_crc "$mac" 2

Any reason why we can't assume that we got a mac address? Without having much though about it, I would prefer to see the sanity check in ath9k_patch_fw_mac_crc instead (param length, all params set or something like that).

+               ;;
        *)
                ath9k_eeprom_die "board $board is not supported yet"
                ;;
diff --git a/target/linux/ath79/dts/ar7370_wd_mynet-wifi-rangeextender.dts 
b/target/linux/ath79/dts/ar7370_wd_mynet-wifi-rangeextender.dts
new file mode 100644
index 0000000000..8c2a4b07cb
--- /dev/null
+++ b/target/linux/ath79/dts/ar7370_wd_mynet-wifi-rangeextender.dts
@@ -0,0 +1,174 @@
+// 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,ar7370", "qca,ar9344";

Does it really make sense to introduce an ar7370 compatible here. According to my google foo, the AR7370 is a AR9344 without wifi. I would expect they are identical beside the wifi block.

+
+       chosen {
+               bootargs = "console=ttyS0,115200n8";
+       };
+
+       aliases {
+               led-boot = &power;
+               led-failsafe = &power;
+               led-running = &power;
+               led-upgrade = &power;
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               power: power {
+                       label = "mynet-wifi-rangeextender:blue:power";
+                       gpios = <&gpio 11 GPIO_ACTIVE_HIGH>;
+                       /* LED has no off state. It's either on or it blinks */
+               };
+
+               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>;
+                       linux,default-trigger = "phy0tpt";
+               };
+
+               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>;
+               };
+
+               band-switch {
+                       linux,code = <BTN_1>;
+                       gpios = <&gpio 14 GPIO_ACTIVE_HIGH>;
+                       linux,input-type = <EV_SW>;
+                       debounce-interval = <60>;
+               };
+
+               wps {
+                       linux,code = <KEY_WPS_BUTTON>;
+                       gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
+                       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>;
+                               compatible = "cybertan,trx";
+                       };
+
+                       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 5c4079f23b..11102fbc78 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
@@ -213,3 +215,29 @@ 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 '' > [email protected]
+       -$(STAGING_DIR_HOST)/bin/trx -o [email protected] \
+               -f $(IMAGE_KERNEL) -F [email protected] \
+               -x 32 -a 0x10000 -x -32 -f $@
+       -mv "[email protected]" "$@"
+       -rm [email protected]
+endef
+
+define Build/addpattern
+       -$(STAGING_DIR_HOST)/bin/addpattern -B $(ADDPATTERN_ID) -v 
v$(ADDPATTERN_VERSION) -i $@ -o [email protected]
+       -mv "[email protected]" "$@"
+endef

AFAIK the common pattern is add build commands prior to board defines. Please do it here as well (rather looks like some rebase foo anyway)

+
+define Device/wd_mynet-wifi-rangeextender
+  ATH_SOC := ar7370
+  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
+  IMAGE/sysupgrade.bin := append-rootfs | pad-rootfs | cybertan-trx | 
addpattern | append-metadata
+  SUPPORTED_DEVICES += mynet-rext
+endef
+TARGET_DEVICES += wd_mynet-wifi-rangeextender



_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to