[LEDE-DEV] [PATCH] This patch adds support for the Netgear WN3000RPv3 N300 repeater.

Mathias Kresin dev at kresin.me
Wed Jan 18 00:05:47 PST 2017


Hey Thibaut,

see my comment inline.

Mathias

17.01.2017 23:12, hacks at slashdirt.org:
> From: Thibaut VARENE <hacks at slashdirt.org>
>
> It uses the same trick as for the EX2700 to pass the Second Part
> Magic Check from the bootloader (as described here
> https://forum.openwrt.org/viewtopic.php?pid=312577#p312577 )
>
> Specifications:
> - SoC: MediaTek MT7620A (580MHz, ramips)
> - RAM: 32MB
> - Storage: 8MB NOR SPI flash
> - Wireless: builtin MT7620A
> - Ethernet: 1x100M
>
> Stock firmware is based on OpenWRT Kamikaze snapshot. To install
> LEDE, use the factory.bin image. Once LEDE is installed, subsequent
> updates can use the sysupgrade.bin image.
>
> Signed-off-by: Thibaut VARENE <hacks at slashdirt.org>
> ---
>  target/linux/ramips/base-files/etc/board.d/01_leds |   3 +-
>  .../linux/ramips/base-files/etc/board.d/02_network |   1 +
>  target/linux/ramips/base-files/etc/diag.sh         |   3 +-
>  target/linux/ramips/base-files/lib/ramips.sh       |   3 +
>  .../ramips/base-files/lib/upgrade/platform.sh      |   1 +
>  target/linux/ramips/dts/WN3000RPV3.dts             | 148 +++++++++++++++++++++
>  target/linux/ramips/image/mt7620.mk                |  11 ++
>  7 files changed, 168 insertions(+), 2 deletions(-)
>  create mode 100644 target/linux/ramips/dts/WN3000RPV3.dts
>
> diff --git a/target/linux/ramips/base-files/etc/board.d/01_leds b/target/linux/ramips/base-files/etc/board.d/01_leds
> index 3d3aa0a..545d6a4 100755
> --- a/target/linux/ramips/base-files/etc/board.d/01_leds
> +++ b/target/linux/ramips/base-files/etc/board.d/01_leds
> @@ -155,7 +155,8 @@ vr500)
>  dir-860l-b1)
>  	ucidef_set_led_netdev "wan" "wan" "$board:green:net" "eth0.2"
>  	;;
> -ex2700)
> +ex2700|\
> +wn3000rpv3)
>  	ucidef_set_led_default "power_r" "POWER (red)" "$board:red:power" "0"
>  	set_wifi_led "$board:green:router"
>  	;;
> diff --git a/target/linux/ramips/base-files/etc/board.d/02_network b/target/linux/ramips/base-files/etc/board.d/02_network
> index baf619f..4c94fba 100755
> --- a/target/linux/ramips/base-files/etc/board.d/02_network
> +++ b/target/linux/ramips/base-files/etc/board.d/02_network
> @@ -58,6 +58,7 @@ ramips_setup_interfaces()
>  	timecloud|\
>  	w150m|\
>  	widora-neo|\
> +	wn3000rpv3|\
>  	wnce2001|\
>  	zbt-cpe102|\
>  	zte-q7)
> diff --git a/target/linux/ramips/base-files/etc/diag.sh b/target/linux/ramips/base-files/etc/diag.sh
> index 5367e65..9499833 100644
> --- a/target/linux/ramips/base-files/etc/diag.sh
> +++ b/target/linux/ramips/base-files/etc/diag.sh
> @@ -53,7 +53,8 @@ get_status_led() {
>  	jhr-n825r|\
>  	mpr-a1|\
>  	mpr-a2|\
> -	mzk-ex750np)
> +	mzk-ex750np|\
> +	wn3000rpv3)
>  		status_led="$board:red:power"

Any specific reason why you are using the red led here? I mean, you are 
switching on the green led already in the dts and red is at least for me 
some kind of warning signal, which I would not expect to see if 
everything is fine.

If you decide to use the green led, you can remove the red power off led 
from /etc/board.d/01_leds.


>  		;;
>  	ac1200pro|\
> diff --git a/target/linux/ramips/base-files/lib/ramips.sh b/target/linux/ramips/base-files/lib/ramips.sh
> index 6afe709..8292da1 100755
> --- a/target/linux/ramips/base-files/lib/ramips.sh
> +++ b/target/linux/ramips/base-files/lib/ramips.sh
> @@ -553,6 +553,9 @@ ramips_board_detect() {
>  	*"WMR-300")
>  		name="wmr-300"
>  		;;
> +	*"WN3000RPv3")
> +		name="wn3000rpv3"
> +		;;
>  	*"WNCE2001")
>  		name="wnce2001"
>  		;;
> diff --git a/target/linux/ramips/base-files/lib/upgrade/platform.sh b/target/linux/ramips/base-files/lib/upgrade/platform.sh
> index 0f2510c..c6ad8ca 100755
> --- a/target/linux/ramips/base-files/lib/upgrade/platform.sh
> +++ b/target/linux/ramips/base-files/lib/upgrade/platform.sh
> @@ -157,6 +157,7 @@ platform_check_image() {
>  	wli-tx4-ag300n|\
>  	wlr-6000|\
>  	wmr-300|\
> +	wn3000rpv3|\
>  	wnce2001|\
>  	wndr3700v5|\
>  	wr512-3gn|\
> diff --git a/target/linux/ramips/dts/WN3000RPV3.dts b/target/linux/ramips/dts/WN3000RPV3.dts
> new file mode 100644
> index 0000000..8dc4249
> --- /dev/null
> +++ b/target/linux/ramips/dts/WN3000RPV3.dts
> @@ -0,0 +1,148 @@
> +/dts-v1/;
> +
> +#include "mt7620a.dtsi"
> +

Please include <dt-bindings/gpio/gpio.h> here as well.

Use the GPIO_ACTIVE_LOW and GPIO_ACTIVE_HIGH macros afterwards in stead 
of 1 and 0 in the gpio parameters.

Check the recent ramips board additions for examples.

> +#include <dt-bindings/input/input.h>
> +
> +/ {
> +	compatible = "ralink,mt7620a-soc";
> +	model = "Netgear WN3000RPv3";
> +
> +	chosen {
> +		bootargs = "console=ttyS0,57600";
> +	};
> +
> +	gpio-leds {
> +		compatible = "gpio-leds";
> +
> +		power_g {
> +			label = "wn3000rpv3:green:power";
> +			gpios = <&gpio0 9 1>;
> +			default-state = "on";
> +		};
> +
> +		power_r {
> +			label = "wn3000rpv3:red:power";
> +			gpios = <&gpio0 11 1>;
> +		};
> +
> +		client_g {
> +			label = "wn3000rpv3:green:client";
> +			gpios = <&gpio0 13 1>;
> +		};
> +
> +		client_r {
> +			label = "wn3000rpv3:red:client";
> +			gpios = <&gpio0 10 1>;
> +		};
> +
> +		router_g {
> +			label = "wn3000rpv3:green:router";
> +			gpios = <&gpio0 12 1>;
> +		};
> +
> +		router_r {
> +			label = "wn3000rpv3:red:router";
> +			gpios = <&gpio0 14 1>;
> +		};
> +
> +		wps {
> +			label = "wn3000rpv3:green:wps";
> +			gpios = <&gpio1 15 1>;
> +		};
> +
> +		l_arrow {
> +			label = "wn3000rpv3:blue:l_arrow";

I guess it would be more clear to use leftarrow and rightarrow here 
instead of abbreviations.

> +			gpios = <&gpio0 7 1>;
> +		};
> +
> +		r_arrow {
> +			label = "wn3000rpv3:blue:r_arrow";
> +			gpios = <&gpio0 8 1>;
> +		};
> +	};
> +
> +	gpio-keys-polled {
> +		compatible = "gpio-keys-polled";
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +		poll-interval = <20>;
> +
> +		reset {
> +			label = "reset";
> +			gpios = <&gpio0 1 1>;
> +			linux,code = <KEY_RESTART>;
> +		};
> +
> +		wps {
> +			label = "wps";
> +			gpios = <&gpio0 2 1>;
> +			linux,code = <KEY_WPS_BUTTON>;
> +		};
> +	};
> +};
> +
> +&gpio0 {
> +	status = "okay";
> +};

It should be safe to drop the gpio0 node. It should be already enabled 
in the mt7620a.dtsi.

> +
> +&gpio1 {
> +	status = "okay";
> +};
> +
> +&spi0 {
> +	status = "okay";
> +
> +	m25p80 at 0 {
> +		#address-cells = <1>;
> +		#size-cells = <1>;
> +		compatible = "jedec,spi-nor";
> +		reg = <0>;
> +		linux,modalias = "m25p80", "mx25l6405d";

Drop the linux,modalias line. It was only required for kernel < 4.4.

> +		spi-max-frequency = <10000000>;
> +
> +		partition at 0 {
> +			label = "u-boot";
> +			reg = <0x0 0x30000>;
> +			read-only;
> +		};
> +
> +		partition at 30000 {
> +			label = "u-boot-env";
> +			reg = <0x30000 0x10000>;
> +			read-only;
> +		};
> +
> +		partition at 40000 {
> +			label = "firmware";
> +			reg = <0x40000 0x7b0000>;
> +		};
> +
> +		art: partition at 7f0000 {
> +			label = "art";
> +			reg = <0x7f0000 0x10000>;
> +			read-only;
> +		};
> +	};
> +};
> +
> +&ethernet {
> +	mtd-mac-address = <&art 0x0>;
> +};
> +
> +&wmac {
> +	mtd-mac-address = <&art 0x6>;
> +	ralink,mtd-eeprom = <&art 0x1000>;
> +};
> +
> +&pinctrl {
> +	state_default: pinctrl0 {
> +		default {
> +			//  spi refclk: pins 37, 38, 39
> +			//       uartf: pins 8, 9, 10, 11, 12, 13, 14
> +			//         i2c: pins 1, 2

Remove the comments. If they are important, add the information to the 
commit message.

> +			ralink,group = "i2c", "uartf", "spi refclk";
> +			ralink,function = "gpio";
> +		};
> +	};
> +};
> diff --git a/target/linux/ramips/image/mt7620.mk b/target/linux/ramips/image/mt7620.mk
> index 1889bcf..42e0ab6 100644
> --- a/target/linux/ramips/image/mt7620.mk
> +++ b/target/linux/ramips/image/mt7620.mk
> @@ -75,6 +75,17 @@ define Device/ex2700
>  endef
>  TARGET_DEVICES += ex2700
>
> +define Device/wn3000rpv3
> +  DTS := WN3000RPV3
> +  BLOCKSIZE := 4k
> +  IMAGES += factory.bin
> +  KERNEL := $(KERNEL_DTB) | uImage lzma | pad-kernel-ex2700
> +  IMAGE/factory.bin := $$(sysupgrade_bin) | check-size $$$$(IMAGE_SIZE) | \
> +	netgear-header -B WN3000RPv3 -H 29764836+8+0+32+2x2+0
> +  DEVICE_TITLE := Netgear WN3000RPv3
> +endef
> +TARGET_DEVICES += wn3000rpv3
> +
>  define Device/wt3020-4M
>    DTS := WT3020-4M
>    BLOCKSIZE := 4k
>




More information about the Lede-dev mailing list