ramips: add support for MTC Wireless Router WR1201
authorValentín Kivachuk <vk18496@gmail.com>
Thu, 29 Nov 2018 23:13:53 +0000 (00:13 +0100)
committerJo-Philipp Wich <jo@mein.io>
Tue, 18 Dec 2018 16:48:20 +0000 (17:48 +0100)
MTC Wireless Router WR1201 is the OEM name of the board. It is also sold
rebranded as STRONG Dual Band Gigabit Router 1200.

Specification:
- SoC: MediaTek MT7621A (880 MHz)
- Flash: 16 MiB
- RAM: 128 MiB
- Wireless: 2.4Ghz(MT7602EN) and 5Ghz (MT7612EN)
- Ethernet speed: 10/100/1000
- Ethernet ports: 4+1
- 1x USB 3.0
- 1x microSD reader
- Serial baud rate of Bootloader and factory firmware: 57600

The OEM webinterface writes only as much bytes as listed in the
uImage header field to the flash. Also, the OEM webinterface
evaluates the name field of uImage header before flashing (the
string "WR1201_8_128")

To flash via webinterface, is mandatory to use first initramfs.bin
and after (from the OpenWrt) the sysupgrade.bin

Some notes:
- Some microSD will not work:

  mtk-sd 1e130000.sdhci: no support for card's volts
  mmc0: error -22 whilst initialising SDIO card
  mtk-sd 1e130000.sdhci: no support for card's volts
  mmc0: error -22 whilst initialising MMC card
  mtk-sd 1e130000.sdhci: no support for card's volts
  mmc0: error -22 whilst initialising SDIO card
  mtk-sd 1e130000.sdhci: card claims to support voltages below defined range
  mtk-sd 1e130000.sdhci: no support for card's volts
  mmc0: error -22 whilst initialising MMC card
  mtk-sd 1e130000.sdhci: no support for card's volts
  mmc0: error -22 whilst initialising SDIO card
  mtk-sd 1e130000.sdhci: no support for card's volts
  mmc0: error -22 whilst initialising MMC card

Signed-off-by: Valentín Kivachuk <vk18496@gmail.com>
(backported from 30a7ab8f61c8a5f1a4428f8c7cf9a1d6a12b096b)

target/linux/ramips/base-files/etc/board.d/01_leds
target/linux/ramips/base-files/etc/board.d/02_network
target/linux/ramips/base-files/lib/upgrade/platform.sh
target/linux/ramips/dts/WR1201.dts [new file with mode: 0644]
target/linux/ramips/image/mt7621.mk

index 4330254c8f0e25d5ec62363055eb66b9d4d3ded1..b2c69d4b59165809d76bf0dd34edef708bebeaad 100755 (executable)
@@ -236,6 +236,9 @@ mr200)
        ucidef_set_led_netdev "wan" "wan" "$boardname:white:wan" "usb0"
        set_wifi_led "$boardname:white:wlan"
        ;;
+mtc,wr1201)
+       ucidef_set_led_switch "eth_link" "LAN link" "$boardname:green:eth_link" "switch0" "0x0f"
+       ;;
 mzk-ex750np)
        set_wifi_led "$boardname:red:wifi"
        ;;
index 0d8855c32489cbcd7b5938c3c3519fbba18799bd..3af836a6f39bf4c84dbb4fae92f9226b1ce0fdb0 100755 (executable)
@@ -102,6 +102,7 @@ ramips_setup_interfaces()
        miwifi-nano|\
        mt7621|\
        mt7628|\
+       mtc,wr1201|\
        mzk-750dhp|\
        mzk-w300nh2|\
        netgear,r6120|\
index e28f066658c89dd78b6f15be8222f5dfb1d39f3f..120cf8322a42af1cc7de5139a972b64ba8cd140b 100755 (executable)
@@ -110,6 +110,7 @@ platform_check_image() {
        mpr-a2|\
        mr-102n|\
        mt7628|\
+       mtc,wr1201|\
        mzk-750dhp|\
        mzk-dp150n|\
        mzk-ex300np|\
diff --git a/target/linux/ramips/dts/WR1201.dts b/target/linux/ramips/dts/WR1201.dts
new file mode 100644 (file)
index 0000000..be20717
--- /dev/null
@@ -0,0 +1,159 @@
+/dts-v1/;
+
+#include "mt7621.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+       compatible = "mtc,wr1201", "mediatek,mt7621-soc";
+       model = "MTC Wireless Router WR1201";
+
+       aliases {
+               led-boot = &led_power;
+               led-failsafe = &led_power;
+               led-running = &led_power;
+               led-upgrade = &led_power;
+       };
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x0 0x8000000>;
+       };
+
+       chosen {
+               bootargs = "console=ttyS0,57600";
+       };
+
+       gpio-leds {
+               compatible = "gpio-leds";
+
+               led_power: power {
+                       label = "wr1201:green:power";
+                       gpios = <&gpio0 24 GPIO_ACTIVE_LOW>;
+               };
+
+               usb {
+                       label = "wr1201:green:usb";
+                       gpios = <&gpio0 22 GPIO_ACTIVE_LOW>;
+                       trigger-sources = <&xhci_ehci_port1>, <&ehci_port2>;
+                       linux,default-trigger = "usbport";
+               };
+
+               eth_link {
+                       label = "wr1201:green:eth_link";
+                       gpios = <&gpio0 26 GPIO_ACTIVE_LOW>;
+               };
+
+               wps {
+                       label = "wr1201:green:wps";
+                       gpios = <&gpio0 23 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       gpio-keys-polled {
+               compatible = "gpio-keys-polled";
+               poll-interval = <20>;
+
+               reset {
+                       label = "reset";
+                       gpios = <&gpio0 25 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_RESTART>;
+               };
+       };
+};
+
+&spi0 {
+       status = "okay";
+
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <10000000>;
+               m25p,chunked-io = <32>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       partition@0 {
+                               label = "Bootloader";
+                               reg = <0x0 0x30000>;
+                               read-only;
+                       };
+
+                       partition@30000 {
+                               label = "Config";
+                               reg = <0x30000 0x10000>;
+                               read-only;
+                       };
+
+                       factory: partition@40000 {
+                               label = "Factory";
+                               reg = <0x40000 0x10000>;
+                               read-only;
+                       };
+
+                       partition@50000 {
+                               compatible = "denx,uimage";
+                               label = "firmware";
+                               reg = <0x50000 0xfa0000>;
+                       };
+
+                       partition@ff0000 {
+                               label = "Second_Config";
+                               reg = <0xff0000 0x10000>;
+                               read-only;
+                       };
+               };
+       };
+};
+
+&ethernet {
+       mtd-mac-address = <&factory 0x4>;
+};
+
+&sdhci {
+       status = "okay";
+};
+
+&pcie {
+       status = "okay";
+};
+
+&pcie0 {
+       wifi@0,0 {
+               reg = <0x0000 0 0 0 0>;
+               mediatek,mtd-eeprom = <&factory 0x8000>;
+               ieee80211-freq-limit = <5000000 6000000>;
+
+               led {
+                       led-sources = <2>;
+                       led-active-low;
+               };
+       };
+};
+
+&pcie1 {
+       wifi@0,0 {
+               reg = <0x0000 0 0 0 0>;
+               mediatek,mtd-eeprom = <&factory 0x0000>;
+               ieee80211-freq-limit = <2400000 2500000>;
+
+               led {
+                       led-sources = <2>;
+                       led-active-low;
+               };
+       };
+};
+
+
+&pinctrl {
+       state_default: pinctrl0 {
+               gpio {
+                       ralink,group = "rgmii2";
+                       ralink,function = "gpio";
+               };
+       };
+};
index d0cf51f7e97cec16bcbca8e055f2531b9cab26f5..6a04cd0e3804bdbd1a15f0c364ca2bac59eebbcb 100644 (file)
@@ -47,6 +47,19 @@ define Build/iodata-factory
        fi
 endef
 
+# The OEM webinterface expects an kernel with initramfs which has the uImage
+# header field ih_name.
+# We don't wan't to set the header name field for the kernel include in the
+# sysupgrade image as well, as this image shouldn't be accepted by the OEM
+# webinterface. It will soft-brick the board.
+define Build/wr1201-factory-header
+       mkimage -A $(LINUX_KARCH) \
+               -O linux -T kernel \
+               -C lzma -a $(KERNEL_LOADADDR) -e $(if $(KERNEL_ENTRY),$(KERNEL_ENTRY),$(KERNEL_LOADADDR)) \
+               -n 'WR1201_8_128' -d $@ $@.new
+       mv $@.new $@
+endef
+
 define Build/ubnt-erx-factory-image
        if [ -e $(KDIR)/tmp/$(KERNEL_INITRAMFS_IMAGE) -a "$$(stat -c%s $@)" -lt "$(KERNEL_SIZE)" ]; then \
                echo '21001:6' > $(1).compat; \
@@ -317,6 +330,16 @@ define Device/mikrotik_rbm11g
 endef
 TARGET_DEVICES += mikrotik_rbm11g
 
+define Device/mtc_wr1201
+       DTS := WR1201
+       IMAGE_SIZE := 16000k
+       DEVICE_TITLE := MTC Wireless Router WR1201
+       KERNEL_INITRAMFS := $(KERNEL_DTB) | wr1201-factory-header
+       DEVICE_PACKAGES := kmod-sdhci-mt7620 kmod-mt76x2 kmod-usb3 \
+               kmod-usb-ledtrig-usbport wpad-basic
+endef
+TARGET_DEVICES += mtc_wr1201
+
 define Device/re350-v1
   DTS := RE350
   DEVICE_TITLE := TP-LINK RE350 v1