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)
committerMathias Kresin <dev@kresin.me>
Thu, 29 Nov 2018 23:20:28 +0000 (00:20 +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>
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 4330254..b2c69d4 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 0d8855c..3af836a 100755 (executable)
@@ -102,6 +102,7 @@ ramips_setup_interfaces()
        miwifi-nano|\
        mt7621|\
        mt7628|\
+       mtc,wr1201|\
        mzk-750dhp|\
        mzk-w300nh2|\
        netgear,r6120|\
index e28f066..120cf83 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 d0cf51f..6a04cd0 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