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>;
+ };
+};
+
+ð0 {
+ 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