diff mbox

[LEDE-DEV] ramips: add support for Loewe WMDR-143N

Message ID 20170720190233.13672-1-ogf@bnv-bamberg.de
State Accepted
Delegated to: Mathias Kresin
Headers show

Commit Message

Oliver Fleischmann July 20, 2017, 7:02 p.m. UTC
The WMDR-143N is a small module originally used as a Wifi client
in some Loewe smart TV sets. It is sold cheaply at german surplus
shops. The module contains a RT3662 SOC.

Specifications:

- 500 MHz CPU Clock
- 1x 10/100Mbps Ethernet (pin header)
- 32 MB of RAM
- 8 MB of FLASH
- 2T3R 2.4/5 GHz (SOC internal)
- 3 Antennas on PCB
- UART pads on PCB (J3: 1 = +3.3V, 2 = RX, 3 = TX, 4 = GND), TX
  and RX are 3,3V only! The square hole is pin 1
- Power supply pads on PCB (J6: 1 and 2 = +5V, 3 and 4 = GND)
  The square hole is pin 1

The original firmware has two identical kernel/rootfs images and
two "Factory" calibration data blocks in flash. The LEDE image
leaves only the first "Factory" block in place and uses both
"Kernel" blocks and the redundant "Factory" block together to gain
enough space for the jffs2 partition.

Flash instructions:

You need UART and Ethernet connections to flash the board. Use
the LEDE "sysupgrade.bin" image with tftp.

Apply power to the board and in the first 5 seconds, hit 2 to
select TFTP upload. The bootloader asks for board- and server IP
addresses and filename.

Alternate method: With the vendor firmware running, assign an IP
address to the ethernet port, tftp the firmware image to
/tmp and write to mtd4 ("KernelA").

Signed-off-by: Oliver Fleischmann <ogf@bnv-bamberg.de>
---
 .../linux/ramips/base-files/etc/board.d/02_network |  4 +-
 target/linux/ramips/base-files/lib/ramips.sh       |  3 +
 .../ramips/base-files/lib/upgrade/platform.sh      |  1 +
 target/linux/ramips/dts/WMDR-143N.dts              | 73 ++++++++++++++++++++++
 target/linux/ramips/image/rt3883.mk                |  8 +++
 5 files changed, 88 insertions(+), 1 deletion(-)
 create mode 100644 target/linux/ramips/dts/WMDR-143N.dts

Comments

Mathias Kresin July 26, 2017, 6:26 a.m. UTC | #1
20.07.2017 21:02, Oliver Fleischmann:
> The WMDR-143N is a small module originally used as a Wifi client
> in some Loewe smart TV sets. It is sold cheaply at german surplus
> shops. The module contains a RT3662 SOC.
> 
> Specifications:
> 
> - 500 MHz CPU Clock
> - 1x 10/100Mbps Ethernet (pin header)
> - 32 MB of RAM
> - 8 MB of FLASH
> - 2T3R 2.4/5 GHz (SOC internal)
> - 3 Antennas on PCB
> - UART pads on PCB (J3: 1 = +3.3V, 2 = RX, 3 = TX, 4 = GND), TX
>    and RX are 3,3V only! The square hole is pin 1
> - Power supply pads on PCB (J6: 1 and 2 = +5V, 3 and 4 = GND)
>    The square hole is pin 1
> 
> The original firmware has two identical kernel/rootfs images and
> two "Factory" calibration data blocks in flash. The LEDE image
> leaves only the first "Factory" block in place and uses both
> "Kernel" blocks and the redundant "Factory" block together to gain
> enough space for the jffs2 partition.
> 
> Flash instructions:
> 
> You need UART and Ethernet connections to flash the board. Use
> the LEDE "sysupgrade.bin" image with tftp.
> 
> Apply power to the board and in the first 5 seconds, hit 2 to
> select TFTP upload. The bootloader asks for board- and server IP
> addresses and filename.
> 
> Alternate method: With the vendor firmware running, assign an IP
> address to the ethernet port, tftp the firmware image to
> /tmp and write to mtd4 ("KernelA").
> 
> Signed-off-by: Oliver Fleischmann <ogf@bnv-bamberg.de>
> ---
>   .../linux/ramips/base-files/etc/board.d/02_network |  4 +-
>   target/linux/ramips/base-files/lib/ramips.sh       |  3 +
>   .../ramips/base-files/lib/upgrade/platform.sh      |  1 +
>   target/linux/ramips/dts/WMDR-143N.dts              | 73 ++++++++++++++++++++++
>   target/linux/ramips/image/rt3883.mk                |  8 +++
>   5 files changed, 88 insertions(+), 1 deletion(-)
>   create mode 100644 target/linux/ramips/dts/WMDR-143N.dts
> 
> 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 78ba10342b..fce754e295 100755
> --- a/target/linux/ramips/base-files/etc/board.d/02_network
> +++ b/target/linux/ramips/base-files/etc/board.d/02_network
> @@ -222,6 +222,7 @@ ramips_setup_interfaces()
>   	na930|\
>   	pbr-d1|\
>   	wli-tx4-ag300n|\
> +	wmdr-143n|\
>   	wmr-300|\
>   	wn3000rpv3|\
>   	wrh-300cr)
> @@ -333,7 +334,8 @@ ramips_setup_macs()
>   
>   	case $board in
>   	a5-v11|\
> -	ht-tm02)
> +	ht-tm02|\
> +	wmdr-143n)
>   		lan_mac=$(cat /sys/class/net/eth0/address)
>   		;;
>   	all0239-3g|\
> diff --git a/target/linux/ramips/base-files/lib/ramips.sh b/target/linux/ramips/base-files/lib/ramips.sh
> index 056fab9def..9b02d98ce2 100755
> --- a/target/linux/ramips/base-files/lib/ramips.sh
> +++ b/target/linux/ramips/base-files/lib/ramips.sh
> @@ -589,6 +589,9 @@ ramips_board_detect() {
>   	*"WLR-6000")
>   		name="wlr-6000"
>   		;;
> +	*"WMDR-143N")
> +		name="wmdr-143n"
> +		;;
>   	*"WMR-300")
>   		name="wmr-300"
>   		;;
> diff --git a/target/linux/ramips/base-files/lib/upgrade/platform.sh b/target/linux/ramips/base-files/lib/upgrade/platform.sh
> index e0a260216d..2a2625ca89 100755
> --- a/target/linux/ramips/base-files/lib/upgrade/platform.sh
> +++ b/target/linux/ramips/base-files/lib/upgrade/platform.sh
> @@ -168,6 +168,7 @@ platform_check_image() {
>   	wl-wn575a3|\
>   	wli-tx4-ag300n|\
>   	wlr-6000|\
> +	wmdr-143n|\
>   	wmr-300|\
>   	wn3000rpv3|\
>   	wnce2001|\
> diff --git a/target/linux/ramips/dts/WMDR-143N.dts b/target/linux/ramips/dts/WMDR-143N.dts
> new file mode 100644
> index 0000000000..291f46f856
> --- /dev/null
> +++ b/target/linux/ramips/dts/WMDR-143N.dts
> @@ -0,0 +1,73 @@
> +/dts-v1/;
> +
> +#include "rt3883.dtsi"
> +
> +/ {
> +	compatible = "loewe,wmdr-143n", "ralink,rt3883-soc";
> +	model = "Loewe WMDR-143N";
> +};
> +
> +&spi0 {
> +	status = "okay";
> +
> +	m25p80@0 {
> +		#address-cells = <1>;
> +		#size-cells = <1>;
> +		compatible = "jedec,spi-nor";
> +		reg = <0>;
> +		spi-max-frequency = <25000000>;
> +
> +		partition@0 {
> +			label = "u-boot";
> +			reg = <0x0 0x30000>;
> +			read-only;
> +		};
> +
> +		partition@30000 {
> +			label = "u-boot-env";
> +			reg = <0x30000 0x00010000>;
> +			read-only;
> +		};
> +
> +		factory: partition@40000 {
> +			label = "factory";
> +			reg = <0x40000 0x10000>;
> +			read-only;
> +		};
> +
> +		partition@50000 {
> +			label = "firmware";
> +			reg = <0x50000 0x7b0000>;
> +		};
> +	};
> +};
> +
> +&pinctrl {
> +	state_default: pinctrl0 {
> +		gpio {
> +			ralink,group = "i2c", "jtag", "uartf";
> +			ralink,function = "gpio";
> +		};
> +	};
> +};


I added a fix for the pinmux related hang you reported to my staging 
tree[0]. I've merge your patch with the removed pinmux on top.

Would you please build an image for the Loewe WMDR-143N from my staging 
tree and report back whether the issue is fixed!

Mathias

[0] https://git.lede-project.org/?p=lede/mkresin/staging.git;a=summary
Oliver Fleischmann July 26, 2017, 4:04 p.m. UTC | #2
Hello Mathias,

> I added a fix for the pinmux related hang you reported to my staging tree[0]. 
> I've merge your patch with the removed pinmux on top.
>
> Would you please build an image for the Loewe WMDR-143N from my staging tree 
> and report back whether the issue is fixed!

yes that seems to fix the issue. I built your staging tree and it boots 
and works like a charm!

Thanks!
Oliver
diff mbox

Patch

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 78ba10342b..fce754e295 100755
--- a/target/linux/ramips/base-files/etc/board.d/02_network
+++ b/target/linux/ramips/base-files/etc/board.d/02_network
@@ -222,6 +222,7 @@  ramips_setup_interfaces()
 	na930|\
 	pbr-d1|\
 	wli-tx4-ag300n|\
+	wmdr-143n|\
 	wmr-300|\
 	wn3000rpv3|\
 	wrh-300cr)
@@ -333,7 +334,8 @@  ramips_setup_macs()
 
 	case $board in
 	a5-v11|\
-	ht-tm02)
+	ht-tm02|\
+	wmdr-143n)
 		lan_mac=$(cat /sys/class/net/eth0/address)
 		;;
 	all0239-3g|\
diff --git a/target/linux/ramips/base-files/lib/ramips.sh b/target/linux/ramips/base-files/lib/ramips.sh
index 056fab9def..9b02d98ce2 100755
--- a/target/linux/ramips/base-files/lib/ramips.sh
+++ b/target/linux/ramips/base-files/lib/ramips.sh
@@ -589,6 +589,9 @@  ramips_board_detect() {
 	*"WLR-6000")
 		name="wlr-6000"
 		;;
+	*"WMDR-143N")
+		name="wmdr-143n"
+		;;
 	*"WMR-300")
 		name="wmr-300"
 		;;
diff --git a/target/linux/ramips/base-files/lib/upgrade/platform.sh b/target/linux/ramips/base-files/lib/upgrade/platform.sh
index e0a260216d..2a2625ca89 100755
--- a/target/linux/ramips/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ramips/base-files/lib/upgrade/platform.sh
@@ -168,6 +168,7 @@  platform_check_image() {
 	wl-wn575a3|\
 	wli-tx4-ag300n|\
 	wlr-6000|\
+	wmdr-143n|\
 	wmr-300|\
 	wn3000rpv3|\
 	wnce2001|\
diff --git a/target/linux/ramips/dts/WMDR-143N.dts b/target/linux/ramips/dts/WMDR-143N.dts
new file mode 100644
index 0000000000..291f46f856
--- /dev/null
+++ b/target/linux/ramips/dts/WMDR-143N.dts
@@ -0,0 +1,73 @@ 
+/dts-v1/;
+
+#include "rt3883.dtsi"
+
+/ {
+	compatible = "loewe,wmdr-143n", "ralink,rt3883-soc";
+	model = "Loewe WMDR-143N";
+};
+
+&spi0 {
+	status = "okay";
+
+	m25p80@0 {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		compatible = "jedec,spi-nor";
+		reg = <0>;
+		spi-max-frequency = <25000000>;
+
+		partition@0 {
+			label = "u-boot";
+			reg = <0x0 0x30000>;
+			read-only;
+		};
+
+		partition@30000 {
+			label = "u-boot-env";
+			reg = <0x30000 0x00010000>;
+			read-only;
+		};
+
+		factory: partition@40000 {
+			label = "factory";
+			reg = <0x40000 0x10000>;
+			read-only;
+		};
+
+		partition@50000 {
+			label = "firmware";
+			reg = <0x50000 0x7b0000>;
+		};
+	};
+};
+
+&pinctrl {
+	state_default: pinctrl0 {
+		gpio {
+			ralink,group = "i2c", "jtag", "uartf";
+			ralink,function = "gpio";
+		};
+	};
+};
+
+&ethernet {
+	port@0 {
+		phy-handle = <&phy0>;
+		phy-mode = "mii";
+	};
+	mdio-bus {
+		status = "okay";
+
+		phy0: ethernet-phy@0 {
+			reg = <0>;
+			phy-mode = "mii";
+		};
+	};
+};
+
+&wmac {
+	status = "okay";
+	ralink,mtd-eeprom = <&factory 0>;
+	mtd-mac-address = <&factory 0x4>;
+};
diff --git a/target/linux/ramips/image/rt3883.mk b/target/linux/ramips/image/rt3883.mk
index 2cd60f3858..f90fc6154f 100644
--- a/target/linux/ramips/image/rt3883.mk
+++ b/target/linux/ramips/image/rt3883.mk
@@ -114,3 +114,11 @@  define Device/wlr-6000
   DEVICE_PACKAGES := kmod-usb-core kmod-usb-ohci kmod-usb2 swconfig
 endef
 TARGET_DEVICES += wlr-6000
+
+
+define Device/wmdr-143n
+  DTS := WMDR-143N
+  BLOCKSIZE := 64k
+  DEVICE_TITLE := Loewe WMDR-143N
+endef
+TARGET_DEVICES += wmdr-143n