diff mbox series

ramips: add support for Wavlink WL-WN576A2

Message ID 20210705161201.9670-1-dev.aldrian@gmail.com
State Changes Requested
Delegated to: Adrian Schmutzler
Headers show
Series ramips: add support for Wavlink WL-WN576A2 | expand

Commit Message

Thomas Aldrian July 5, 2021, 4:12 p.m. UTC
From: Thomas Aldrian <dev.aldrian@gmail.com>

This commit adds support for the Wavlink WL-WN576A2 wall-plug wireles
repeater / router. It is also sold under the name SilverCrest SWV 733 B1.

Device specs:

- CPU: MediaTek MT7628AN
- Flash: 8MB
- RAM: 64MB
- Bootloader: U-Boot
- Ethernet: 1x 10/100 Mbps
- 2.4 GHz: b/g/n SoC
- 5 GHz: a/n/ac MT7610EN
- Buttons: WPS, reset, sliding switch (ap/repeater)
- LEDs: 5x wifi status, 1x LAN/WAN, 1x WPS

Flashing:

U-Boot launches a TFTP client if WPS button is held during boot.

- Server IP: 192.168.10.100
- Firmware file name: firmware.bin

Device will reboot automatically. First boot takes about 90s.

Coelner is the original author, but I have made some fixes. He does not
wish to sign off using his real name.

Signed-off-by: Thomas Aldrian <dev.aldrian@gmail.com>
Co-authored-by: coelner <waenger@gmail.com>
---
 .../dts/mt7628an_wavlink_wl-wn576a2.dts       | 171 ++++++++++++++++++
 target/linux/ramips/image/mt76x8.mk           |  10 +
 .../mt76x8/base-files/etc/board.d/01_leds     |   3 +
 .../mt76x8/base-files/etc/board.d/02_network  |   2 +
 4 files changed, 186 insertions(+)
 create mode 100644 target/linux/ramips/dts/mt7628an_wavlink_wl-wn576a2.dts

Comments

Birger Koblitz July 15, 2021, 8:32 a.m. UTC | #1
Hi,

I tested this on a Renkforce WS-WN575A2 and it works nicely.
What I looked at was partitioning, GPIOs, WiFi and Switch setup.
Would it be possible to add an ALT1_VENDOR for this Renkforce device?
You may add a "Tested-by".

Cheers,
   Birger

On 05/07/2021 18:12, dev.aldrian@gmail.com wrote:
> From: Thomas Aldrian <dev.aldrian@gmail.com>
> 
> This commit adds support for the Wavlink WL-WN576A2 wall-plug wireles
> repeater / router. It is also sold under the name SilverCrest SWV 733 B1.
> 
> Device specs:
> 
> - CPU: MediaTek MT7628AN
> - Flash: 8MB
> - RAM: 64MB
> - Bootloader: U-Boot
> - Ethernet: 1x 10/100 Mbps
> - 2.4 GHz: b/g/n SoC
> - 5 GHz: a/n/ac MT7610EN
> - Buttons: WPS, reset, sliding switch (ap/repeater)
> - LEDs: 5x wifi status, 1x LAN/WAN, 1x WPS
> 
> Flashing:
> 
> U-Boot launches a TFTP client if WPS button is held during boot.
> 
> - Server IP: 192.168.10.100
> - Firmware file name: firmware.bin
> 
> Device will reboot automatically. First boot takes about 90s.
> 
> Coelner is the original author, but I have made some fixes. He does not
> wish to sign off using his real name.
> 
> Signed-off-by: Thomas Aldrian <dev.aldrian@gmail.com>
> Co-authored-by: coelner <waenger@gmail.com>
> ---
>   .../dts/mt7628an_wavlink_wl-wn576a2.dts       | 171 ++++++++++++++++++
>   target/linux/ramips/image/mt76x8.mk           |  10 +
>   .../mt76x8/base-files/etc/board.d/01_leds     |   3 +
>   .../mt76x8/base-files/etc/board.d/02_network  |   2 +
>   4 files changed, 186 insertions(+)
>   create mode 100644 target/linux/ramips/dts/mt7628an_wavlink_wl-wn576a2.dts
> 
> diff --git a/target/linux/ramips/dts/mt7628an_wavlink_wl-wn576a2.dts b/target/linux/ramips/dts/mt7628an_wavlink_wl-wn576a2.dts
> new file mode 100644
> index 0000000000..333a7dc950
> --- /dev/null
> +++ b/target/linux/ramips/dts/mt7628an_wavlink_wl-wn576a2.dts
> @@ -0,0 +1,171 @@
> +// 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-wn576a2", "mediatek,mt7628an-soc";
> +	model = "Wavlink WL-WN576A2";
> +
> +	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 = "blue:wifi-high";
> +			gpios = <&gpio 37 GPIO_ACTIVE_LOW>;
> +		};
> +
> +		wifi-mediumhigh {
> +			label = "blue:wifi-mediumhigh";
> +			gpios = <&gpio 11 GPIO_ACTIVE_LOW>;
> +		};
> +
> +		wifi-medium {
> +			label = "blue:wifi-medium";
> +			gpios = <&gpio 44 GPIO_ACTIVE_LOW>;
> +		};
> +
> +		wifi-mediumlow {
> +			label = "blue:wifi-mediumlow";
> +			gpios = <&gpio 39 GPIO_ACTIVE_LOW>;
> +		};
> +
> +		wifi-low {
> +			label = "blue:wifi-low";
> +			gpios = <&gpio 40 GPIO_ACTIVE_LOW>;
> +		};
> +
> +		lan {
> +			label = "blue:lan";
> +			gpios = <&gpio 2 GPIO_ACTIVE_LOW>;
> +		};
> +
> +		led_wps: wps {
> +			label = "blue:wps";
> +			gpios = <&gpio 4 GPIO_ACTIVE_LOW>;
> +		};
> +	};
> +};
> +
> +&state_default {
> +	gpio {
> +		groups = "i2c", "i2s", "wdt", "wled_an", "p0led_an", "p1led_an",
> +			"p2led_an", "p3led_an", "p4led_an", "refclk", "gpio";
> +		function = "gpio";
> +	};
> +};
> +
> +&pcie {
> +	status = "okay";
> +};
> +
> +&pcie0 {
> +	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";
> +};
> +
> +&ethernet {
> +	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 3ba4d658be..00cca7c9f1 100644
> --- a/target/linux/ramips/image/mt76x8.mk
> +++ b/target/linux/ramips/image/mt76x8.mk
> @@ -724,6 +724,16 @@ define Device/wavlink_wl-wn575a3
>   endef
>   TARGET_DEVICES += wavlink_wl-wn575a3
>   
> +define Device/wavlink_wl-wn576a2
> +  IMAGE_SIZE := 7872k
> +  DEVICE_VENDOR := Wavlink
> +  DEVICE_MODEL := WL-WN576A2
> +  DEVICE_ALT0_VENDOR := Silvercrest
> +  DEVICE_ALT0_MODEL := SWV 733 B1
> +  DEVICE_PACKAGES := kmod-mt76x0e
> +endef
> +TARGET_DEVICES += wavlink_wl-wn576a2
> +
>   define Device/wavlink_wl-wn577a2
>     IMAGE_SIZE := 7872k
>     DEVICE_VENDOR := Wavlink
> 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 e2fb44c81e..a426715dab 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
> @@ -129,6 +129,9 @@ wavlink,wl-wn575a3)
>   	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"
>   	;;
> +wavlink,wl-wn576a2)
> +	ucidef_set_led_switch "lan" "lan" "blue:lan" "switch0" "0x10"
> +	;;
>   wavlink,wl-wn577a2|\
>   wavlink,wl-wn578a2)
>   	ucidef_set_led_switch "lan" "lan" "green:lan" "switch0" "0x8"
> 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 703936f217..faae347f66 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
> @@ -122,6 +122,7 @@ ramips_setup_interfaces()
>   		ucidef_add_switch "switch0" \
>   			"0:lan" "1:lan" "2:lan" "3:wan" "6@eth0"
>   		;;
> +	wavlink,wl-wn576a2|\
>   	tplink,tl-wr902ac-v3)
>   		ucidef_add_switch "switch0" \
>   			"4:lan" "6@eth0"
> @@ -170,6 +171,7 @@ ramips_setup_macs()
>   	cudy,wr1000|\
>   	hilink,hlk-7628n|\
>   	hilink,hlk-7688a|\
> +	wavlink,wl-wn576a2|\
>   	wavlink,wl-wn577a2|\
>   	wavlink,wl-wn578a2)
>   		wan_mac=$(mtd_get_mac_binary factory 0x2e)
>
Thomas Aldrian July 16, 2021, 5:37 p.m. UTC | #2
The WN575A2 shares many of the same internals with the WN576A2 (same
SoC and same wifi chip). However, I do not think it would be
appropriate to add it as an alternative vendor as the default
configuration would be suboptimal.

The WN576A2 has only one ethernet port, while I believe your device has
two. Also, I cannot imagine the GPIOs to be correct. The WN576A2 has
more LEDs, and probably uses them for different purposes. Ofc this does
not necessarily make an image incompatible, it just may lead to
slightly unexpected behaviour. Maybe the WN578A2 profile would be
better suited?

At least that's my oppinion. If anyone else wants to advise, go ahead.

Regards,
Thomas 

On Thu, 2021-07-15 at 10:32 +0200, Birger Koblitz wrote:
> Hi,
> 
> I tested this on a Renkforce WS-WN575A2 and it works nicely.
> What I looked at was partitioning, GPIOs, WiFi and Switch setup.
> Would it be possible to add an ALT1_VENDOR for this Renkforce device?
> You may add a "Tested-by".
> 
> Cheers,
>    Birger
> 
> On 05/07/2021 18:12, dev.aldrian@gmail.com wrote:
> > From: Thomas Aldrian <dev.aldrian@gmail.com>
> > 
> > This commit adds support for the Wavlink WL-WN576A2 wall-plug
> > wireles
> > repeater / router. It is also sold under the name SilverCrest SWV
> > 733 B1.
> > 
> > Device specs:
> > 
> > - CPU: MediaTek MT7628AN
> > - Flash: 8MB
> > - RAM: 64MB
> > - Bootloader: U-Boot
> > - Ethernet: 1x 10/100 Mbps
> > - 2.4 GHz: b/g/n SoC
> > - 5 GHz: a/n/ac MT7610EN
> > - Buttons: WPS, reset, sliding switch (ap/repeater)
> > - LEDs: 5x wifi status, 1x LAN/WAN, 1x WPS
> > 
> > Flashing:
> > 
> > U-Boot launches a TFTP client if WPS button is held during boot.
> > 
> > - Server IP: 192.168.10.100
> > - Firmware file name: firmware.bin
> > 
> > Device will reboot automatically. First boot takes about 90s.
> > 
> > Coelner is the original author, but I have made some fixes. He does
> > not
> > wish to sign off using his real name.
> > 
> > Signed-off-by: Thomas Aldrian <dev.aldrian@gmail.com>
> > Co-authored-by: coelner <waenger@gmail.com>
> > ---
> >   .../dts/mt7628an_wavlink_wl-wn576a2.dts       | 171
> > ++++++++++++++++++
> >   target/linux/ramips/image/mt76x8.mk           |  10 +
> >   .../mt76x8/base-files/etc/board.d/01_leds     |   3 +
> >   .../mt76x8/base-files/etc/board.d/02_network  |   2 +
> >   4 files changed, 186 insertions(+)
> >   create mode 100644 target/linux/ramips/dts/mt7628an_wavlink_wl-
> > wn576a2.dts
> > 
> > diff --git a/target/linux/ramips/dts/mt7628an_wavlink_wl-
> > wn576a2.dts b/target/linux/ramips/dts/mt7628an_wavlink_wl-
> > wn576a2.dts
> > new file mode 100644
> > index 0000000000..333a7dc950
> > --- /dev/null
> > +++ b/target/linux/ramips/dts/mt7628an_wavlink_wl-wn576a2.dts
> > @@ -0,0 +1,171 @@
> > +// 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-wn576a2", "mediatek,mt7628an-soc";
> > +       model = "Wavlink WL-WN576A2";
> > +
> > +       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 = "blue:wifi-high";
> > +                       gpios = <&gpio 37 GPIO_ACTIVE_LOW>;
> > +               };
> > +
> > +               wifi-mediumhigh {
> > +                       label = "blue:wifi-mediumhigh";
> > +                       gpios = <&gpio 11 GPIO_ACTIVE_LOW>;
> > +               };
> > +
> > +               wifi-medium {
> > +                       label = "blue:wifi-medium";
> > +                       gpios = <&gpio 44 GPIO_ACTIVE_LOW>;
> > +               };
> > +
> > +               wifi-mediumlow {
> > +                       label = "blue:wifi-mediumlow";
> > +                       gpios = <&gpio 39 GPIO_ACTIVE_LOW>;
> > +               };
> > +
> > +               wifi-low {
> > +                       label = "blue:wifi-low";
> > +                       gpios = <&gpio 40 GPIO_ACTIVE_LOW>;
> > +               };
> > +
> > +               lan {
> > +                       label = "blue:lan";
> > +                       gpios = <&gpio 2 GPIO_ACTIVE_LOW>;
> > +               };
> > +
> > +               led_wps: wps {
> > +                       label = "blue:wps";
> > +                       gpios = <&gpio 4 GPIO_ACTIVE_LOW>;
> > +               };
> > +       };
> > +};
> > +
> > +&state_default {
> > +       gpio {
> > +               groups = "i2c", "i2s", "wdt", "wled_an",
> > "p0led_an", "p1led_an",
> > +                       "p2led_an", "p3led_an", "p4led_an",
> > "refclk", "gpio";
> > +               function = "gpio";
> > +       };
> > +};
> > +
> > +&pcie {
> > +       status = "okay";
> > +};
> > +
> > +&pcie0 {
> > +       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";
> > +};
> > +
> > +&ethernet {
> > +       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 3ba4d658be..00cca7c9f1 100644
> > --- a/target/linux/ramips/image/mt76x8.mk
> > +++ b/target/linux/ramips/image/mt76x8.mk
> > @@ -724,6 +724,16 @@ define Device/wavlink_wl-wn575a3
> >   endef
> >   TARGET_DEVICES += wavlink_wl-wn575a3
> >   
> > +define Device/wavlink_wl-wn576a2
> > +  IMAGE_SIZE := 7872k
> > +  DEVICE_VENDOR := Wavlink
> > +  DEVICE_MODEL := WL-WN576A2
> > +  DEVICE_ALT0_VENDOR := Silvercrest
> > +  DEVICE_ALT0_MODEL := SWV 733 B1
> > +  DEVICE_PACKAGES := kmod-mt76x0e
> > +endef
> > +TARGET_DEVICES += wavlink_wl-wn576a2
> > +
> >   define Device/wavlink_wl-wn577a2
> >     IMAGE_SIZE := 7872k
> >     DEVICE_VENDOR := Wavlink
> > 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 e2fb44c81e..a426715dab 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
> > @@ -129,6 +129,9 @@ wavlink,wl-wn575a3)
> >         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"
> >         ;;
> > +wavlink,wl-wn576a2)
> > +       ucidef_set_led_switch "lan" "lan" "blue:lan" "switch0"
> > "0x10"
> > +       ;;
> >   wavlink,wl-wn577a2|\
> >   wavlink,wl-wn578a2)
> >         ucidef_set_led_switch "lan" "lan" "green:lan" "switch0"
> > "0x8"
> > 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 703936f217..faae347f66 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
> > @@ -122,6 +122,7 @@ ramips_setup_interfaces()
> >                 ucidef_add_switch "switch0" \
> >                         "0:lan" "1:lan" "2:lan" "3:wan" "6@eth0"
> >                 ;;
> > +       wavlink,wl-wn576a2|\
> >         tplink,tl-wr902ac-v3)
> >                 ucidef_add_switch "switch0" \
> >                         "4:lan" "6@eth0"
> > @@ -170,6 +171,7 @@ ramips_setup_macs()
> >         cudy,wr1000|\
> >         hilink,hlk-7628n|\
> >         hilink,hlk-7688a|\
> > +       wavlink,wl-wn576a2|\
> >         wavlink,wl-wn577a2|\
> >         wavlink,wl-wn578a2)
> >                 wan_mac=$(mtd_get_mac_binary factory 0x2e)
> >
Birger Koblitz July 16, 2021, 5:59 p.m. UTC | #3
Hi Thomas,

you are right, in the meantime I noticed that the reset button does not work.
I had overlooked the difference in the 5/6 of the name, but still, your image
made the device work nicely as an AP just like that. I'll look at the LEDs, too and
maybe submit a separate patch. Sorry for the confusion!

Cheers,
   Birger

On 16/07/2021 19:37, Thomas Aldrian wrote:
> The WN575A2 shares many of the same internals with the WN576A2 (same
> SoC and same wifi chip). However, I do not think it would be
> appropriate to add it as an alternative vendor as the default
> configuration would be suboptimal.
> 
> The WN576A2 has only one ethernet port, while I believe your device has
> two. Also, I cannot imagine the GPIOs to be correct. The WN576A2 has
> more LEDs, and probably uses them for different purposes. Ofc this does
> not necessarily make an image incompatible, it just may lead to
> slightly unexpected behaviour. Maybe the WN578A2 profile would be
> better suited?
> 
> At least that's my oppinion. If anyone else wants to advise, go ahead.
> 
> Regards,
> Thomas
> 
> On Thu, 2021-07-15 at 10:32 +0200, Birger Koblitz wrote:
>> Hi,
>>
>> I tested this on a Renkforce WS-WN575A2 and it works nicely.
>> What I looked at was partitioning, GPIOs, WiFi and Switch setup.
>> Would it be possible to add an ALT1_VENDOR for this Renkforce device?
>> You may add a "Tested-by".
>>
>> Cheers,
>>     Birger
>>
>> On 05/07/2021 18:12, dev.aldrian@gmail.com wrote:
>>> From: Thomas Aldrian <dev.aldrian@gmail.com>
>>>
>>> This commit adds support for the Wavlink WL-WN576A2 wall-plug
>>> wireles
>>> repeater / router. It is also sold under the name SilverCrest SWV
>>> 733 B1.
>>>
>>> Device specs:
>>>
>>> - CPU: MediaTek MT7628AN
>>> - Flash: 8MB
>>> - RAM: 64MB
>>> - Bootloader: U-Boot
>>> - Ethernet: 1x 10/100 Mbps
>>> - 2.4 GHz: b/g/n SoC
>>> - 5 GHz: a/n/ac MT7610EN
>>> - Buttons: WPS, reset, sliding switch (ap/repeater)
>>> - LEDs: 5x wifi status, 1x LAN/WAN, 1x WPS
>>>
>>> Flashing:
>>>
>>> U-Boot launches a TFTP client if WPS button is held during boot.
>>>
>>> - Server IP: 192.168.10.100
>>> - Firmware file name: firmware.bin
>>>
>>> Device will reboot automatically. First boot takes about 90s.
>>>
>>> Coelner is the original author, but I have made some fixes. He does
>>> not
>>> wish to sign off using his real name.
>>>
>>> Signed-off-by: Thomas Aldrian <dev.aldrian@gmail.com>
>>> Co-authored-by: coelner <waenger@gmail.com>
>>> ---
>>>    .../dts/mt7628an_wavlink_wl-wn576a2.dts       | 171
>>> ++++++++++++++++++
>>>    target/linux/ramips/image/mt76x8.mk           |  10 +
>>>    .../mt76x8/base-files/etc/board.d/01_leds     |   3 +
>>>    .../mt76x8/base-files/etc/board.d/02_network  |   2 +
>>>    4 files changed, 186 insertions(+)
>>>    create mode 100644 target/linux/ramips/dts/mt7628an_wavlink_wl-
>>> wn576a2.dts
>>>
>>> diff --git a/target/linux/ramips/dts/mt7628an_wavlink_wl-
>>> wn576a2.dts b/target/linux/ramips/dts/mt7628an_wavlink_wl-
>>> wn576a2.dts
>>> new file mode 100644
>>> index 0000000000..333a7dc950
>>> --- /dev/null
>>> +++ b/target/linux/ramips/dts/mt7628an_wavlink_wl-wn576a2.dts
>>> @@ -0,0 +1,171 @@
>>> +// 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-wn576a2", "mediatek,mt7628an-soc";
>>> +       model = "Wavlink WL-WN576A2";
>>> +
>>> +       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 = "blue:wifi-high";
>>> +                       gpios = <&gpio 37 GPIO_ACTIVE_LOW>;
>>> +               };
>>> +
>>> +               wifi-mediumhigh {
>>> +                       label = "blue:wifi-mediumhigh";
>>> +                       gpios = <&gpio 11 GPIO_ACTIVE_LOW>;
>>> +               };
>>> +
>>> +               wifi-medium {
>>> +                       label = "blue:wifi-medium";
>>> +                       gpios = <&gpio 44 GPIO_ACTIVE_LOW>;
>>> +               };
>>> +
>>> +               wifi-mediumlow {
>>> +                       label = "blue:wifi-mediumlow";
>>> +                       gpios = <&gpio 39 GPIO_ACTIVE_LOW>;
>>> +               };
>>> +
>>> +               wifi-low {
>>> +                       label = "blue:wifi-low";
>>> +                       gpios = <&gpio 40 GPIO_ACTIVE_LOW>;
>>> +               };
>>> +
>>> +               lan {
>>> +                       label = "blue:lan";
>>> +                       gpios = <&gpio 2 GPIO_ACTIVE_LOW>;
>>> +               };
>>> +
>>> +               led_wps: wps {
>>> +                       label = "blue:wps";
>>> +                       gpios = <&gpio 4 GPIO_ACTIVE_LOW>;
>>> +               };
>>> +       };
>>> +};
>>> +
>>> +&state_default {
>>> +       gpio {
>>> +               groups = "i2c", "i2s", "wdt", "wled_an",
>>> "p0led_an", "p1led_an",
>>> +                       "p2led_an", "p3led_an", "p4led_an",
>>> "refclk", "gpio";
>>> +               function = "gpio";
>>> +       };
>>> +};
>>> +
>>> +&pcie {
>>> +       status = "okay";
>>> +};
>>> +
>>> +&pcie0 {
>>> +       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";
>>> +};
>>> +
>>> +&ethernet {
>>> +       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 3ba4d658be..00cca7c9f1 100644
>>> --- a/target/linux/ramips/image/mt76x8.mk
>>> +++ b/target/linux/ramips/image/mt76x8.mk
>>> @@ -724,6 +724,16 @@ define Device/wavlink_wl-wn575a3
>>>    endef
>>>    TARGET_DEVICES += wavlink_wl-wn575a3
>>>    
>>> +define Device/wavlink_wl-wn576a2
>>> +  IMAGE_SIZE := 7872k
>>> +  DEVICE_VENDOR := Wavlink
>>> +  DEVICE_MODEL := WL-WN576A2
>>> +  DEVICE_ALT0_VENDOR := Silvercrest
>>> +  DEVICE_ALT0_MODEL := SWV 733 B1
>>> +  DEVICE_PACKAGES := kmod-mt76x0e
>>> +endef
>>> +TARGET_DEVICES += wavlink_wl-wn576a2
>>> +
>>>    define Device/wavlink_wl-wn577a2
>>>      IMAGE_SIZE := 7872k
>>>      DEVICE_VENDOR := Wavlink
>>> 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 e2fb44c81e..a426715dab 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
>>> @@ -129,6 +129,9 @@ wavlink,wl-wn575a3)
>>>          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"
>>>          ;;
>>> +wavlink,wl-wn576a2)
>>> +       ucidef_set_led_switch "lan" "lan" "blue:lan" "switch0"
>>> "0x10"
>>> +       ;;
>>>    wavlink,wl-wn577a2|\
>>>    wavlink,wl-wn578a2)
>>>          ucidef_set_led_switch "lan" "lan" "green:lan" "switch0"
>>> "0x8"
>>> 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 703936f217..faae347f66 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
>>> @@ -122,6 +122,7 @@ ramips_setup_interfaces()
>>>                  ucidef_add_switch "switch0" \
>>>                          "0:lan" "1:lan" "2:lan" "3:wan" "6@eth0"
>>>                  ;;
>>> +       wavlink,wl-wn576a2|\
>>>          tplink,tl-wr902ac-v3)
>>>                  ucidef_add_switch "switch0" \
>>>                          "4:lan" "6@eth0"
>>> @@ -170,6 +171,7 @@ ramips_setup_macs()
>>>          cudy,wr1000|\
>>>          hilink,hlk-7628n|\
>>>          hilink,hlk-7688a|\
>>> +       wavlink,wl-wn576a2|\
>>>          wavlink,wl-wn577a2|\
>>>          wavlink,wl-wn578a2)
>>>                  wan_mac=$(mtd_get_mac_binary factory 0x2e)
>>>
> 
> 
>
Adrian Schmutzler Oct. 30, 2021, 7:04 p.m. UTC | #4
Hi,

> -----Original Message-----
> From: openwrt-devel [mailto:openwrt-devel-bounces@lists.openwrt.org]
> On Behalf Of dev.aldrian@gmail.com
> Sent: Montag, 5. Juli 2021 18:12
> To: openwrt-devel@lists.openwrt.org
> Cc: mail@adrianschmutzler.de; Thomas Aldrian <dev.aldrian@gmail.com>;
> coelner <waenger@gmail.com>
> Subject: [PATCH] ramips: add support for Wavlink WL-WN576A2
> 
> From: Thomas Aldrian <dev.aldrian@gmail.com>
> 
> This commit adds support for the Wavlink WL-WN576A2 wall-plug wireles
> repeater / router. It is also sold under the name SilverCrest SWV 733 B1.

Generally fine, a few remarks below.

Should be good to merge after those are resolved.

> 
> Device specs:
> 
> - CPU: MediaTek MT7628AN
> - Flash: 8MB
> - RAM: 64MB
> - Bootloader: U-Boot
> - Ethernet: 1x 10/100 Mbps
> - 2.4 GHz: b/g/n SoC
> - 5 GHz: a/n/ac MT7610EN
> - Buttons: WPS, reset, sliding switch (ap/repeater)
> - LEDs: 5x wifi status, 1x LAN/WAN, 1x WPS
> 
> Flashing:
> 
> U-Boot launches a TFTP client if WPS button is held during boot.
> 
> - Server IP: 192.168.10.100
> - Firmware file name: firmware.bin
> 
> Device will reboot automatically. First boot takes about 90s.
> 
> Coelner is the original author, but I have made some fixes. He does not
wish
> to sign off using his real name.
> 
> Signed-off-by: Thomas Aldrian <dev.aldrian@gmail.com>
> Co-authored-by: coelner <waenger@gmail.com>

Just add the e-mail address in the text above and remove the non-standard
Co-authored-by tag.
You may add Birger's Tested-by here.

> ---
>  .../dts/mt7628an_wavlink_wl-wn576a2.dts       | 171 ++++++++++++++++++
>  target/linux/ramips/image/mt76x8.mk           |  10 +
>  .../mt76x8/base-files/etc/board.d/01_leds     |   3 +
>  .../mt76x8/base-files/etc/board.d/02_network  |   2 +
>  4 files changed, 186 insertions(+)
>  create mode 100644 target/linux/ramips/dts/mt7628an_wavlink_wl-
> wn576a2.dts
> 
> diff --git a/target/linux/ramips/dts/mt7628an_wavlink_wl-wn576a2.dts
> b/target/linux/ramips/dts/mt7628an_wavlink_wl-wn576a2.dts
> new file mode 100644
> index 0000000000..333a7dc950
> --- /dev/null
> +++ b/target/linux/ramips/dts/mt7628an_wavlink_wl-wn576a2.dts
> @@ -0,0 +1,171 @@
> +// 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-wn576a2", "mediatek,mt7628an-soc";
> +	model = "Wavlink WL-WN576A2";
> +
> +	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 = "blue:wifi-high";
> +			gpios = <&gpio 37 GPIO_ACTIVE_LOW>;
> +		};
> +
> +		wifi-mediumhigh {
> +			label = "blue:wifi-mediumhigh";
> +			gpios = <&gpio 11 GPIO_ACTIVE_LOW>;
> +		};
> +
> +		wifi-medium {
> +			label = "blue:wifi-medium";
> +			gpios = <&gpio 44 GPIO_ACTIVE_LOW>;
> +		};
> +
> +		wifi-mediumlow {
> +			label = "blue:wifi-mediumlow";
> +			gpios = <&gpio 39 GPIO_ACTIVE_LOW>;
> +		};
> +
> +		wifi-low {
> +			label = "blue:wifi-low";
> +			gpios = <&gpio 40 GPIO_ACTIVE_LOW>;
> +		};
> +
> +		lan {
> +			label = "blue:lan";
> +			gpios = <&gpio 2 GPIO_ACTIVE_LOW>;
> +		};
> +
> +		led_wps: wps {
> +			label = "blue:wps";
> +			gpios = <&gpio 4 GPIO_ACTIVE_LOW>;
> +		};
> +	};
> +};
> +
> +&state_default {
> +	gpio {
> +		groups = "i2c", "i2s", "wdt", "wled_an", "p0led_an",
> "p1led_an",
> +			"p2led_an", "p3led_an", "p4led_an", "refclk",
"gpio";
> +		function = "gpio";
> +	};
> +};
> +
> +&pcie {
> +	status = "okay";
> +};
> +
> +&pcie0 {
> +	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";

Add
	mediatek,mtd-eeprom = <&factory 0x0>;
here

> +};
> +
> +&ethernet {
> +	mtd-mac-address = <&factory 0x28>;

Convert to nvmem here. (You will also need to add the corresponding node at
the end of the file; just look at recent versions of the other wavlink
devices)

> +};
> +
> +&esw {
> +	mediatek,portmap = <0x2f>;

This means port 4 would be wan. You configure it as lan.
You should probably choose a different portmap here.

> +};
> +
> +&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 3ba4d658be..00cca7c9f1 100644
> --- a/target/linux/ramips/image/mt76x8.mk
> +++ b/target/linux/ramips/image/mt76x8.mk
> @@ -724,6 +724,16 @@ define Device/wavlink_wl-wn575a3  endef
> TARGET_DEVICES += wavlink_wl-wn575a3
> 
> +define Device/wavlink_wl-wn576a2
> +  IMAGE_SIZE := 7872k
> +  DEVICE_VENDOR := Wavlink
> +  DEVICE_MODEL := WL-WN576A2
> +  DEVICE_ALT0_VENDOR := Silvercrest
> +  DEVICE_ALT0_MODEL := SWV 733 B1
> +  DEVICE_PACKAGES := kmod-mt76x0e
> +endef
> +TARGET_DEVICES += wavlink_wl-wn576a2
> +
>  define Device/wavlink_wl-wn577a2
>    IMAGE_SIZE := 7872k
>    DEVICE_VENDOR := Wavlink
> 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 e2fb44c81e..a426715dab 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
> @@ -129,6 +129,9 @@ wavlink,wl-wn575a3)
>  	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"
>  	;;
> +wavlink,wl-wn576a2)
> +	ucidef_set_led_switch "lan" "lan" "blue:lan" "switch0" "0x10"
> +	;;
>  wavlink,wl-wn577a2|\
>  wavlink,wl-wn578a2)
>  	ucidef_set_led_switch "lan" "lan" "green:lan" "switch0" "0x8"
> 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 703936f217..faae347f66 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
> @@ -122,6 +122,7 @@ ramips_setup_interfaces()
>  		ucidef_add_switch "switch0" \
>  			"0:lan" "1:lan" "2:lan" "3:wan" "6@eth0"
>  		;;
> +	wavlink,wl-wn576a2|\
>  	tplink,tl-wr902ac-v3)

Switch the two lines here to have proper alphabetic sorting.

>  		ucidef_add_switch "switch0" \
>  			"4:lan" "6@eth0"
> @@ -170,6 +171,7 @@ ramips_setup_macs()
>  	cudy,wr1000|\
>  	hilink,hlk-7628n|\
>  	hilink,hlk-7688a|\
> +	wavlink,wl-wn576a2|\

This should be dropped, the device only has one port set as LAN by default.

Best

Adrian

>  	wavlink,wl-wn577a2|\
>  	wavlink,wl-wn578a2)
>  		wan_mac=$(mtd_get_mac_binary factory 0x2e)
> --
> 2.32.0
> 
> 
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel@lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
Thomas Aldrian Nov. 2, 2021, 5:53 p.m. UTC | #5
Hi,

Sorry for the delay, I will send the updated patch ASAP.

Regards,
Thomas

On Sat, 2021-10-30 at 21:04 +0200, Adrian Schmutzler wrote:
> Hi,
> 
> Generally fine, a few remarks below.
> 
> Should be good to merge after those are resolved.
> 
> [..]
> 
> Best
> 
> Adrian
> 

>
diff mbox series

Patch

diff --git a/target/linux/ramips/dts/mt7628an_wavlink_wl-wn576a2.dts b/target/linux/ramips/dts/mt7628an_wavlink_wl-wn576a2.dts
new file mode 100644
index 0000000000..333a7dc950
--- /dev/null
+++ b/target/linux/ramips/dts/mt7628an_wavlink_wl-wn576a2.dts
@@ -0,0 +1,171 @@ 
+// 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-wn576a2", "mediatek,mt7628an-soc";
+	model = "Wavlink WL-WN576A2";
+
+	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 = "blue:wifi-high";
+			gpios = <&gpio 37 GPIO_ACTIVE_LOW>;
+		};
+
+		wifi-mediumhigh {
+			label = "blue:wifi-mediumhigh";
+			gpios = <&gpio 11 GPIO_ACTIVE_LOW>;
+		};
+
+		wifi-medium {
+			label = "blue:wifi-medium";
+			gpios = <&gpio 44 GPIO_ACTIVE_LOW>;
+		};
+
+		wifi-mediumlow {
+			label = "blue:wifi-mediumlow";
+			gpios = <&gpio 39 GPIO_ACTIVE_LOW>;
+		};
+
+		wifi-low {
+			label = "blue:wifi-low";
+			gpios = <&gpio 40 GPIO_ACTIVE_LOW>;
+		};
+
+		lan {
+			label = "blue:lan";
+			gpios = <&gpio 2 GPIO_ACTIVE_LOW>;
+		};
+
+		led_wps: wps {
+			label = "blue:wps";
+			gpios = <&gpio 4 GPIO_ACTIVE_LOW>;
+		};
+	};
+};
+
+&state_default {
+	gpio {
+		groups = "i2c", "i2s", "wdt", "wled_an", "p0led_an", "p1led_an",
+			"p2led_an", "p3led_an", "p4led_an", "refclk", "gpio";
+		function = "gpio";
+	};
+};
+
+&pcie {
+	status = "okay";
+};
+
+&pcie0 {
+	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";
+};
+
+&ethernet {
+	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 3ba4d658be..00cca7c9f1 100644
--- a/target/linux/ramips/image/mt76x8.mk
+++ b/target/linux/ramips/image/mt76x8.mk
@@ -724,6 +724,16 @@  define Device/wavlink_wl-wn575a3
 endef
 TARGET_DEVICES += wavlink_wl-wn575a3
 
+define Device/wavlink_wl-wn576a2
+  IMAGE_SIZE := 7872k
+  DEVICE_VENDOR := Wavlink
+  DEVICE_MODEL := WL-WN576A2
+  DEVICE_ALT0_VENDOR := Silvercrest
+  DEVICE_ALT0_MODEL := SWV 733 B1
+  DEVICE_PACKAGES := kmod-mt76x0e
+endef
+TARGET_DEVICES += wavlink_wl-wn576a2
+
 define Device/wavlink_wl-wn577a2
   IMAGE_SIZE := 7872k
   DEVICE_VENDOR := Wavlink
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 e2fb44c81e..a426715dab 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
@@ -129,6 +129,9 @@  wavlink,wl-wn575a3)
 	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"
 	;;
+wavlink,wl-wn576a2)
+	ucidef_set_led_switch "lan" "lan" "blue:lan" "switch0" "0x10"
+	;;
 wavlink,wl-wn577a2|\
 wavlink,wl-wn578a2)
 	ucidef_set_led_switch "lan" "lan" "green:lan" "switch0" "0x8"
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 703936f217..faae347f66 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
@@ -122,6 +122,7 @@  ramips_setup_interfaces()
 		ucidef_add_switch "switch0" \
 			"0:lan" "1:lan" "2:lan" "3:wan" "6@eth0"
 		;;
+	wavlink,wl-wn576a2|\
 	tplink,tl-wr902ac-v3)
 		ucidef_add_switch "switch0" \
 			"4:lan" "6@eth0"
@@ -170,6 +171,7 @@  ramips_setup_macs()
 	cudy,wr1000|\
 	hilink,hlk-7628n|\
 	hilink,hlk-7688a|\
+	wavlink,wl-wn576a2|\
 	wavlink,wl-wn577a2|\
 	wavlink,wl-wn578a2)
 		wan_mac=$(mtd_get_mac_binary factory 0x2e)