From a92c64e8ae38f6a221823610c4a2f454c813c484 Mon Sep 17 00:00:00 2001 From: Oliver Fleischmann Date: Thu, 20 Jul 2017 21:02:33 +0200 Subject: [PATCH] ramips: add support for Loewe WMDR-143N 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 [remove pinctrl node from dts, no pin is used as GPIO] Signed-off-by: Mathias Kresin --- .../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 | 64 +++++++++++++++++++ target/linux/ramips/image/rt3883.mk | 8 +++ 5 files changed, 79 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 ee769b5a0f..cd9e08a3c2 100755 --- a/target/linux/ramips/base-files/etc/board.d/02_network +++ b/target/linux/ramips/base-files/etc/board.d/02_network @@ -230,6 +230,7 @@ ramips_setup_interfaces() na930|\ pbr-d1|\ wli-tx4-ag300n|\ + wmdr-143n|\ wmr-300|\ wn3000rpv3|\ wrh-300cr) @@ -345,7 +346,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 685ba070da..0267c9df3f 100755 --- a/target/linux/ramips/base-files/lib/ramips.sh +++ b/target/linux/ramips/base-files/lib/ramips.sh @@ -598,6 +598,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 b087d993b7..14f5ec2cb3 100755 --- a/target/linux/ramips/base-files/lib/upgrade/platform.sh +++ b/target/linux/ramips/base-files/lib/upgrade/platform.sh @@ -170,6 +170,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..ccb1df3512 --- /dev/null +++ b/target/linux/ramips/dts/WMDR-143N.dts @@ -0,0 +1,64 @@ +/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>; + }; + }; +}; + +ðernet { + 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