Message ID | 20210422192402.92782-1-dev.aldrian@gmail.com |
---|---|
State | Superseded |
Headers | show |
Series | ramips: add support for Wavlink WL-WN578A2 | expand |
Hi, comments inline. Nothing really serious ... > -----Original Message----- > From: openwrt-devel [mailto:openwrt-devel-bounces@lists.openwrt.org] > On Behalf Of dev.aldrian@gmail.com > Sent: Donnerstag, 22. April 2021 21:24 > To: openwrt-devel@lists.openwrt.org > Cc: Thomas Aldrian <dev.aldrian@gmail.com> > Subject: [PATCH] ramips: add support for Wavlink WL-WN578A2 > > From: Thomas Aldrian <dev.aldrian@gmail.com> > > This commit adds support for the Wavlink WL-WN578A2 dual-band wall-plug > wireless router. This device is also sold under the name SilverCrest SWV 733 > A2. > > Device Specifications: > > - CPU: MediaTek MT7628AN (580MHz) > - Flash: 8MB > - RAM: 64MB > - Bootloader: U-Boot > - Ethernet: 2x 10/100 Mbps > - 2.4 GHz: 802.11b/g/n SoC > - 5 GHz: 802.11a/n/ac MT7610E > - Antennas: internal > - 4 green LEDs: WPS/Power, LAN, WAN, wifi-low, wifi-med, wifi-high > - Buttons: Reset, WPS > - Sliding mode switch: AP, repeater, client > - Small sliding power switch > > Flashing instructions: > > U-Boot launches TFTP client if WPS button is pressed during power-on. > Configure as follows: > > - Server IP: 192.168.10.100 > - Filename (rename sysupgrade file to this): firmware.bin > > Flashing should not take more than a minute, device will reboot > automatically. > > Signed-off-by: Thomas Aldrian <dev.aldrian@gmail.com> > --- > .../dts/mt7628an_wavlink_wl-wn578a2.dts | 165 ++++++++++++++++++ > target/linux/ramips/image/mt76x8.mk | 10 ++ > .../mt76x8/base-files/etc/board.d/01_leds | 8 + > .../mt76x8/base-files/etc/board.d/02_network | 6 +- > 4 files changed, 187 insertions(+), 2 deletions(-) create mode 100644 > target/linux/ramips/dts/mt7628an_wavlink_wl-wn578a2.dts > > diff --git a/target/linux/ramips/dts/mt7628an_wavlink_wl-wn578a2.dts > b/target/linux/ramips/dts/mt7628an_wavlink_wl-wn578a2.dts > new file mode 100644 > index 0000000000..69a54c297b > --- /dev/null > +++ b/target/linux/ramips/dts/mt7628an_wavlink_wl-wn578a2.dts > @@ -0,0 +1,165 @@ > +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT > + > +#include "mt7628an.dtsi" > + > +#include <dt-bindings/input/input.h> > +#include <dt-bindings/gpio/gpio.h> > + > +/ { > + compatible = "wavlink,wl-wn578a2", "mediatek,mt7628an-soc"; > + model = "Wavlink WL-WN578A2"; > + > + aliases { > + led-boot = &led_wps; > + led-failsafe = &led_wps; > + led-running = &led_wps; > + led-upgrade = &led_wps; > + }; > + > + keys { > + compatible = "gpio-keys"; > + > + reset { > + label = "reset"; > + gpios = <&gpio 43 GPIO_ACTIVE_LOW>; > + linux,code = <KEY_RESTART>; > + }; > + > + wps { > + label = "wps"; > + gpios = <&gpio 38 GPIO_ACTIVE_LOW>; > + linux,code = <KEY_WPS_BUTTON>; > + }; > + > + ap { > + label = "ap"; > + gpios = <&gpio 41 GPIO_ACTIVE_LOW>; > + linux,code = <BTN_0>; > + linux,input-type = <EV_SW>; > + }; > + > + repeater { > + label = "repeater"; > + gpios = <&gpio 42 GPIO_ACTIVE_LOW>; > + linux,code = <BTN_1>; > + linux,input-type = <EV_SW>; > + }; > + }; > + > + leds { > + compatible = "gpio-leds"; > + > + wifi-high { > + label = "green:wifi-high"; > + gpios = <&gpio 37 GPIO_ACTIVE_LOW>; > + }; > + > + wifi-med { > + label = "green:wifi-med"; > + gpios = <&gpio 11 GPIO_ACTIVE_LOW>; > + }; > + > + wifi-low { > + label = "green:wifi-low"; > + gpios = <&gpio 44 GPIO_ACTIVE_LOW>; > + }; > + > + lan { > + label = "green:lan"; > + gpios = <&gpio 40 GPIO_ACTIVE_LOW>; > + }; > + > + wan { > + label = "green:wan"; > + gpios = <&gpio 39 GPIO_ACTIVE_LOW>; > + }; > + > + led_wps: wps { > + label = "green:wps"; > + gpios = <&gpio 4 GPIO_ACTIVE_LOW>; > + }; > + }; > +}; > + > +&state_default { > + gpio { > + groups = "i2c", "wdt", "wled_an", "p0led_an", "p1led_an", > "p2_led", "p3led_an", "p4led_an", "refclk"; > + function = "gpio"; > + }; p2led_an (typo) Apart from that, gpio 11 is missing ... And please wrap this long line. > +}; > + > +&pcie { > + status = "okay"; > +}; > + > +&pcie0 { > + mt76@0,0 { wifi@0,0 > + reg = <0x0000 0 0 0 0>; > + mediatek,mtd-eeprom = <&factory 0x8000>; > + ieee80211-freq-limit = <5000000 6000000>; > + }; > +}; > + > +&spi0 { > + status = "okay"; > + > + flash@0 { > + compatible = "jedec,spi-nor"; > + reg = <0>; > + spi-max-frequency = <40000000>; > + > + partitions { > + compatible = "fixed-partitions"; > + #address-cells = <1>; > + #size-cells = <1>; > + > + partition@0 { > + label = "u-boot"; > + reg = <0x0 0x30000>; > + read-only; > + }; > + > + partition@30000 { > + label = "u-boot-env"; > + reg = <0x30000 0x10000>; > + read-only; > + }; > + > + factory: partition@40000 { > + label = "factory"; > + reg = <0x40000 0x10000>; > + read-only; > + }; > + > + partition@50000 { > + compatible = "denx,uimage"; > + label = "firmware"; > + reg = <0x50000 0x7b0000>; > + }; > + }; > + }; > +}; > + > +&wmac { > + status = "okay"; > +}; > + > +ðernet { > + mtd-mac-address = <&factory 0x28>; > +}; > + > +&esw { > + mediatek,portmap = <0x2f>; > +}; > + > +&usbphy { > + status = "disabled"; > +}; > + > +&ehci { > + status = "disabled"; > +}; > + > +&ohci { > + status = "disabled"; > +}; > diff --git a/target/linux/ramips/image/mt76x8.mk > b/target/linux/ramips/image/mt76x8.mk > index d5a9684dba..79221239e9 100644 > --- a/target/linux/ramips/image/mt76x8.mk > +++ b/target/linux/ramips/image/mt76x8.mk > @@ -733,6 +733,16 @@ define Device/wavlink_wl-wn577a2 endef > TARGET_DEVICES += wavlink_wl-wn577a2 > > +define Device/wavlink_wl-wn578a2 > + IMAGE_SIZE := 7872k > + DEVICE_VENDOR := Wavlink > + DEVICE_MODEL := WL-WN578A2 > + DEVICE_ALT0_VENDOR := SilverCrest > + DEVICE_ALT0_MODEL := SWV 733 A2 > + DEVICE_PACKAGES := rssileds kmod-mt76x0e endef TARGET_DEVICES += > +wavlink_wl-wn578a2 > + > define Device/widora_neo-16m > IMAGE_SIZE := 16064k > DEVICE_VENDOR := Widora > diff --git a/target/linux/ramips/mt76x8/base-files/etc/board.d/01_leds > b/target/linux/ramips/mt76x8/base-files/etc/board.d/01_leds > index fdef158ea8..00093a7cd7 100644 > --- a/target/linux/ramips/mt76x8/base-files/etc/board.d/01_leds > +++ b/target/linux/ramips/mt76x8/base-files/etc/board.d/01_leds > @@ -133,6 +133,14 @@ wavlink,wl-wn577a2) > ucidef_set_led_switch "lan" "lan" "green:lan" "switch0" "0x8" > ucidef_set_led_switch "wan" "wan" "green:wan" "switch0" "0x10" > ;; > +wavlink,wl-wn578a2) > + ucidef_set_led_switch "lan" "lan" "green:lan" "switch0" "0x8" > + ucidef_set_led_switch "wan" "wan" "green:wan" "switch0" "0x10" > + ucidef_set_rssimon "wlan1" "200000" "1" > + ucidef_set_led_rssi "wifi-low" "wifi-low" "green:wifi-low" "wlan1" > "1" "49" > + ucidef_set_led_rssi "wifi-med" "wifi-med" "green:wifi-med" "wlan1" > "50" "84" > + ucidef_set_led_rssi "wifi-high" "wifi-high" "green:wifi-high" "wlan1" > "85" "100" > + ;; Why wlan1? Is this chosen arbitrarily (than please drop the default setup), or is the vendor really also using only one specific radio for the RSSI leds? Best Adrian > zbtlink,zbt-we1226) > ucidef_set_led_netdev "wifi_led" "wifi" "green:wlan" "wlan0" > ucidef_set_led_switch "lan1" "LAN1" "green:lan1" "switch0" "0x01" > diff --git a/target/linux/ramips/mt76x8/base-files/etc/board.d/02_network > b/target/linux/ramips/mt76x8/base-files/etc/board.d/02_network > index 5ce44d0e9b..d61a60591c 100644 > --- a/target/linux/ramips/mt76x8/base-files/etc/board.d/02_network > +++ b/target/linux/ramips/mt76x8/base-files/etc/board.d/02_network > @@ -46,7 +46,8 @@ ramips_setup_interfaces() > ;; > buffalo,wcr-1166ds|\ > elecom,wrc-1167fs|\ > - wavlink,wl-wn577a2) > + wavlink,wl-wn577a2|\ > + wavlink,wl-wn578a2) > ucidef_add_switch "switch0" \ > "3:lan" "4:wan" "6@eth0" > ;; > @@ -168,7 +169,8 @@ ramips_setup_macs() > ;; > cudy,wr1000|\ > hilink,hlk-7688a|\ > - wavlink,wl-wn577a2) > + wavlink,wl-wn577a2|\ > + wavlink,wl-wn578a2) > wan_mac=$(mtd_get_mac_binary factory 0x2e) > label_mac=$(mtd_get_mac_binary factory 0x4) > ;; > -- > 2.31.1 > > > _______________________________________________ > openwrt-devel mailing list > openwrt-devel@lists.openwrt.org > https://lists.openwrt.org/mailman/listinfo/openwrt-devel
On Sun, 2021-04-25 at 22:27 +0200, Adrian Schmutzler wrote: > Why wlan1? Is this chosen arbitrarily (than please drop the default > setup), or is the vendor really also using only one specific radio > for the RSSI leds? > > Best > > Adrian Hi Adrian, The stock firmware does use some sort of RSSI LEDs, but I was unable to properly test this. The choice of wlan1 is rather arbitrary, yes. I would have changed the default config to use both radios as this makes the most sense to me, but I am unsure how to do so. Is there a way to set both? or should I drop the rssileds setup entirely? As for the other changes, I will send a new patch soon. Best, Thomas >
Hi, > -----Original Message----- > From: Thomas Aldrian [mailto:dev.aldrian@gmail.com] > Sent: Montag, 26. April 2021 20:41 > To: Adrian Schmutzler <mail@adrianschmutzler.de>; openwrt- > devel@lists.openwrt.org > Subject: Re: [PATCH] ramips: add support for Wavlink WL-WN578A2 > > On Sun, 2021-04-25 at 22:27 +0200, Adrian Schmutzler wrote: > > Why wlan1? Is this chosen arbitrarily (than please drop the default > > setup), or is the vendor really also using only one specific radio for > > the RSSI leds? > > > > Best > > > > Adrian > > Hi Adrian, > > The stock firmware does use some sort of RSSI LEDs, but I was unable to > properly test this. The choice of wlan1 is rather arbitrary, yes. I would have > changed the default config to use both radios as this makes the most sense > to me, but I am unsure how to do so. Is there a way to set both? or should I > drop the rssileds setup entirely? Linking one set of LEDs to two interfaces is not possible (with usual means). In cases like this, I typically prefer to drop the setup, since anything else is likely to cause confusion to the users. Anybody who wants to configure rssileds can still do it, with the added benefit that he will know what he configured afterwards. Best Adrian > > As for the other changes, I will send a new patch soon. > > Best, > Thomas > >
diff --git a/target/linux/ramips/dts/mt7628an_wavlink_wl-wn578a2.dts b/target/linux/ramips/dts/mt7628an_wavlink_wl-wn578a2.dts new file mode 100644 index 0000000000..69a54c297b --- /dev/null +++ b/target/linux/ramips/dts/mt7628an_wavlink_wl-wn578a2.dts @@ -0,0 +1,165 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT + +#include "mt7628an.dtsi" + +#include <dt-bindings/input/input.h> +#include <dt-bindings/gpio/gpio.h> + +/ { + compatible = "wavlink,wl-wn578a2", "mediatek,mt7628an-soc"; + model = "Wavlink WL-WN578A2"; + + aliases { + led-boot = &led_wps; + led-failsafe = &led_wps; + led-running = &led_wps; + led-upgrade = &led_wps; + }; + + keys { + compatible = "gpio-keys"; + + reset { + label = "reset"; + gpios = <&gpio 43 GPIO_ACTIVE_LOW>; + linux,code = <KEY_RESTART>; + }; + + wps { + label = "wps"; + gpios = <&gpio 38 GPIO_ACTIVE_LOW>; + linux,code = <KEY_WPS_BUTTON>; + }; + + ap { + label = "ap"; + gpios = <&gpio 41 GPIO_ACTIVE_LOW>; + linux,code = <BTN_0>; + linux,input-type = <EV_SW>; + }; + + repeater { + label = "repeater"; + gpios = <&gpio 42 GPIO_ACTIVE_LOW>; + linux,code = <BTN_1>; + linux,input-type = <EV_SW>; + }; + }; + + leds { + compatible = "gpio-leds"; + + wifi-high { + label = "green:wifi-high"; + gpios = <&gpio 37 GPIO_ACTIVE_LOW>; + }; + + wifi-med { + label = "green:wifi-med"; + gpios = <&gpio 11 GPIO_ACTIVE_LOW>; + }; + + wifi-low { + label = "green:wifi-low"; + gpios = <&gpio 44 GPIO_ACTIVE_LOW>; + }; + + lan { + label = "green:lan"; + gpios = <&gpio 40 GPIO_ACTIVE_LOW>; + }; + + wan { + label = "green:wan"; + gpios = <&gpio 39 GPIO_ACTIVE_LOW>; + }; + + led_wps: wps { + label = "green:wps"; + gpios = <&gpio 4 GPIO_ACTIVE_LOW>; + }; + }; +}; + +&state_default { + gpio { + groups = "i2c", "wdt", "wled_an", "p0led_an", "p1led_an", "p2_led", "p3led_an", "p4led_an", "refclk"; + function = "gpio"; + }; +}; + +&pcie { + status = "okay"; +}; + +&pcie0 { + mt76@0,0 { + reg = <0x0000 0 0 0 0>; + mediatek,mtd-eeprom = <&factory 0x8000>; + ieee80211-freq-limit = <5000000 6000000>; + }; +}; + +&spi0 { + status = "okay"; + + flash@0 { + compatible = "jedec,spi-nor"; + reg = <0>; + spi-max-frequency = <40000000>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "u-boot"; + reg = <0x0 0x30000>; + read-only; + }; + + partition@30000 { + label = "u-boot-env"; + reg = <0x30000 0x10000>; + read-only; + }; + + factory: partition@40000 { + label = "factory"; + reg = <0x40000 0x10000>; + read-only; + }; + + partition@50000 { + compatible = "denx,uimage"; + label = "firmware"; + reg = <0x50000 0x7b0000>; + }; + }; + }; +}; + +&wmac { + status = "okay"; +}; + +ðernet { + mtd-mac-address = <&factory 0x28>; +}; + +&esw { + mediatek,portmap = <0x2f>; +}; + +&usbphy { + status = "disabled"; +}; + +&ehci { + status = "disabled"; +}; + +&ohci { + status = "disabled"; +}; diff --git a/target/linux/ramips/image/mt76x8.mk b/target/linux/ramips/image/mt76x8.mk index d5a9684dba..79221239e9 100644 --- a/target/linux/ramips/image/mt76x8.mk +++ b/target/linux/ramips/image/mt76x8.mk @@ -733,6 +733,16 @@ define Device/wavlink_wl-wn577a2 endef TARGET_DEVICES += wavlink_wl-wn577a2 +define Device/wavlink_wl-wn578a2 + IMAGE_SIZE := 7872k + DEVICE_VENDOR := Wavlink + DEVICE_MODEL := WL-WN578A2 + DEVICE_ALT0_VENDOR := SilverCrest + DEVICE_ALT0_MODEL := SWV 733 A2 + DEVICE_PACKAGES := rssileds kmod-mt76x0e +endef +TARGET_DEVICES += wavlink_wl-wn578a2 + define Device/widora_neo-16m IMAGE_SIZE := 16064k DEVICE_VENDOR := Widora diff --git a/target/linux/ramips/mt76x8/base-files/etc/board.d/01_leds b/target/linux/ramips/mt76x8/base-files/etc/board.d/01_leds index fdef158ea8..00093a7cd7 100644 --- a/target/linux/ramips/mt76x8/base-files/etc/board.d/01_leds +++ b/target/linux/ramips/mt76x8/base-files/etc/board.d/01_leds @@ -133,6 +133,14 @@ wavlink,wl-wn577a2) ucidef_set_led_switch "lan" "lan" "green:lan" "switch0" "0x8" ucidef_set_led_switch "wan" "wan" "green:wan" "switch0" "0x10" ;; +wavlink,wl-wn578a2) + ucidef_set_led_switch "lan" "lan" "green:lan" "switch0" "0x8" + ucidef_set_led_switch "wan" "wan" "green:wan" "switch0" "0x10" + ucidef_set_rssimon "wlan1" "200000" "1" + ucidef_set_led_rssi "wifi-low" "wifi-low" "green:wifi-low" "wlan1" "1" "49" + ucidef_set_led_rssi "wifi-med" "wifi-med" "green:wifi-med" "wlan1" "50" "84" + ucidef_set_led_rssi "wifi-high" "wifi-high" "green:wifi-high" "wlan1" "85" "100" + ;; zbtlink,zbt-we1226) ucidef_set_led_netdev "wifi_led" "wifi" "green:wlan" "wlan0" ucidef_set_led_switch "lan1" "LAN1" "green:lan1" "switch0" "0x01" diff --git a/target/linux/ramips/mt76x8/base-files/etc/board.d/02_network b/target/linux/ramips/mt76x8/base-files/etc/board.d/02_network index 5ce44d0e9b..d61a60591c 100644 --- a/target/linux/ramips/mt76x8/base-files/etc/board.d/02_network +++ b/target/linux/ramips/mt76x8/base-files/etc/board.d/02_network @@ -46,7 +46,8 @@ ramips_setup_interfaces() ;; buffalo,wcr-1166ds|\ elecom,wrc-1167fs|\ - wavlink,wl-wn577a2) + wavlink,wl-wn577a2|\ + wavlink,wl-wn578a2) ucidef_add_switch "switch0" \ "3:lan" "4:wan" "6@eth0" ;; @@ -168,7 +169,8 @@ ramips_setup_macs() ;; cudy,wr1000|\ hilink,hlk-7688a|\ - wavlink,wl-wn577a2) + wavlink,wl-wn577a2|\ + wavlink,wl-wn578a2) wan_mac=$(mtd_get_mac_binary factory 0x2e) label_mac=$(mtd_get_mac_binary factory 0x4) ;;