From 46ab81e405d238e95071d7d56a0f07bb51fc8cb3 Mon Sep 17 00:00:00 2001 From: Piotr Dymacz Date: Thu, 2 Nov 2017 16:04:49 +0100 Subject: [PATCH] ramips: add support for UniElec U7621-06 UniElec U7621-06 is a router platform board based on MediaTek MT7621AT. The device has the following specifications: - MT7621AT (880 MHz) - 256/512 MB of RAM (DDR3) - 8/16/32/64 MB of FLASH (SPI NOR) - 5x 1 Gbps Ethernet (MT7621 built-in switch) - 1x ASMedia ASM1061 (for mSATA and SATA) - 2x miniPCIe slots (PCIe bus only) - 1x mSATA slot (with USB 2.0 bus for modem) - 1x SATA - 1x miniSIM slot - 1x microSD slot - 1x USB 3.0 - 12x LEDs (3 GPIO-controlled) - 1x reset button - 1x UART header (4-pins) - 1x GPIO header (30-pins) - 1x FPC connector for LEDs (20-pin, 0.5 mm pitch) - 1x DC jack for main power (12 V) The following has been tested and is working: - Ethernet switch - miniPCIe slots (tested with Wi-Fi cards) - mSATA slot (tested with modem and mSATA drive) - miniSIM slot - sysupgrade - reset button - microSD slot Installation: This board might come with a different firmware versions (MediaTek SDK, PandoraBox, Padavan, etc.). If your board comes with PandoraBox, you can install LEDE using sysupgrade. Just SSH to the router and perform forced sysupgrade (due to a board name mismatch). The default IP of this board should be: 192.168.1.1 and username/password: root/admin. In case of a different firmware, you can use web based recovery described below. Use the following command to perform the sysupgrade (for the 256MB RAM/16MB flash version): sysupgrade -n -F lede-ramips-mt7621-u7621-06-256M-16M-squashfs-sysupgrade.bin Recovery: This board contains a Chinese, closed-source bootloader called Breed (Boot and Recovery Environment for Embedded Devices). Breed supports web recovery and to enter it, you keep the reset button pressed for around 5 seconds during boot. Your machine will be assigned an IP through DHCP and the router will use IP address 192.168.1.1. The recovery website is in Chinese, but is easy to use. Click on the second item in the list to access the recovery page, then the second item on the next page is where you select the firmware. In order to start the recovery, you click the button at the bottom. LEDs list (top row, left to right): - LED_WWAN# (connected with pin 42 in LTE/mSATA slot) - Power (connected directly to 3V3) - CTS2_N (GPIO10, configured as "status" LED) - TXD2 (GPIO11, configured as "led4", without default trigger) - RXD2 (GPIO12, configured as "led5", without default trigger) - LED_WLAN# (connected with pin 44 in wifi0 slot) LEDs list (bottom row, left to right): - ESW_P0_LED_0 - ESW_P1_LED_0 - ESW_P2_LED_0 - ESW_P3_LED_0 - ESW_P4_LED_0 - LED_WLAN# (connected with pin 44 in wifi1 slot) Other notes: 1. The board is available with different amounts of RAM and flash. We have only added support for the 256/16 MB configuration, as that seems to be the default. However, all the required infrastructure is in place for making support for the other configurations easy. 2. The manufacturer offers five different wireless cards with MediaTek chipsets, based on MT76x2, MT7603 and MT7615. Images of the board all show that the miniPCIe slots are dedicated to specific Wi-Fi cards. However, the slots are generic. 3. All boards we got access to had the same EEPROM content. The default firmware reads the Ethernet MAC from offset 0xe000 in factory partition. This offset only contains 0xffs, so a random MAC will be generated on every boot of the router. There is a valid MAC stored at offset 0xe006 and this MAC is shown as the WAN MAC in the bootloader. However, it is the same on all boards we have checked. Based on information provided by the vendor, all boards sold in small quantities are considered more as samples for development purposes. Signed-off-by: Piotr Dymacz Signed-off-by: Kristian Evensen --- .../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/U7621-06-256M-16M.dts | 86 +++++++++++++ target/linux/ramips/dts/U7621-06.dtsi | 117 ++++++++++++++++++ target/linux/ramips/image/mt7621.mk | 8 ++ 7 files changed, 219 insertions(+) create mode 100644 target/linux/ramips/dts/U7621-06-256M-16M.dts create mode 100644 target/linux/ramips/dts/U7621-06.dtsi 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 62b41233c4..da3231dc1d 100755 --- a/target/linux/ramips/base-files/etc/board.d/02_network +++ b/target/linux/ramips/base-files/etc/board.d/02_network @@ -102,6 +102,7 @@ ramips_setup_interfaces() r6220|\ sap-g3200u3|\ sk-wb8|\ + u7621-06-256M-16M|\ vr500|\ wf-2881|\ witi|\ diff --git a/target/linux/ramips/base-files/etc/diag.sh b/target/linux/ramips/base-files/etc/diag.sh index dc89e456e6..107e67591a 100644 --- a/target/linux/ramips/base-files/etc/diag.sh +++ b/target/linux/ramips/base-files/etc/diag.sh @@ -243,6 +243,9 @@ get_status_led() { u25awf-h1) status_led="u25awf:red:wifi" ;; + u7621-06-256M-16M) + status_led="u7621-06:green:status" + ;; v22rw-2x2) status_led="$board:green:security" ;; diff --git a/target/linux/ramips/base-files/lib/ramips.sh b/target/linux/ramips/base-files/lib/ramips.sh index 43c0f56f49..32128a4852 100755 --- a/target/linux/ramips/base-files/lib/ramips.sh +++ b/target/linux/ramips/base-files/lib/ramips.sh @@ -511,6 +511,9 @@ ramips_board_detect() { *"U25AWF-H1") name="u25awf-h1" ;; + *"U7621-06 (256M RAM/16M flash)") + name="u7621-06-256M-16M" + ;; *"UBNT-ERX") name="ubnt-erx" ;; diff --git a/target/linux/ramips/base-files/lib/upgrade/platform.sh b/target/linux/ramips/base-files/lib/upgrade/platform.sh index 84ff11a63b..c2f5df7d36 100755 --- a/target/linux/ramips/base-files/lib/upgrade/platform.sh +++ b/target/linux/ramips/base-files/lib/upgrade/platform.sh @@ -145,6 +145,7 @@ platform_check_image() { timecloud|\ tiny-ac|\ u25awf-h1|\ + u7621-06-256M-16M|\ ur-326n4g|\ ur-336un|\ v22rw-2x2|\ diff --git a/target/linux/ramips/dts/U7621-06-256M-16M.dts b/target/linux/ramips/dts/U7621-06-256M-16M.dts new file mode 100644 index 0000000000..1bf03fdf52 --- /dev/null +++ b/target/linux/ramips/dts/U7621-06-256M-16M.dts @@ -0,0 +1,86 @@ +/* + * BSD LICENSE + * + * Copyright(c) 2017 Kristian Evensen . + * Copyright(c) 2017 Piotr Dymacz . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Broadcom Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/dts-v1/; + +#include "U7621-06.dtsi" + +#include +#include + +/ { + compatible = "unielec,u7621-06-256m-16m", "unielec,u7621-06", "mediatek,mt7621-soc"; + model = "UniElec U7621-06 (256M RAM/16M flash)"; + + memory@0 { + device_type = "memory"; + reg = <0x0 0x10000000>; + }; +}; + +&spi0 { + status = "okay"; + + m25p80@0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "jedec,spi-nor"; + reg = <0>; + spi-max-frequency = <14000000>; + m25p,chunked-io = <32>; + + 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; + }; + + firmware: partition@50000 { + label = "firmware"; + reg = <0x50000 0xfb0000>; + }; + }; +}; diff --git a/target/linux/ramips/dts/U7621-06.dtsi b/target/linux/ramips/dts/U7621-06.dtsi new file mode 100644 index 0000000000..0502904bd0 --- /dev/null +++ b/target/linux/ramips/dts/U7621-06.dtsi @@ -0,0 +1,117 @@ +/* + * BSD LICENSE + * + * Copyright(c) 2017 Kristian Evensen . + * Copyright(c) 2017 Piotr Dymacz . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Broadcom Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "mt7621.dtsi" + +#include +#include + +/ { + compatible = "unielec,u7621-06", "mediatek,mt7621-soc"; + + chosen { + bootargs = "console=ttyS0,115200"; + }; + + gpio-export { + compatible = "gpio-export"; + #size-cells = <0>; + + modem_reset { + gpio-export,name = "modem_reset"; + gpio-export,output = <1>; + gpios = <&gpio0 16 GPIO_ACTIVE_LOW>; + }; + }; + + gpio-keys-polled { + compatible = "gpio-keys-polled"; + #address-cells = <1>; + #size-cells = <0>; + poll-interval = <20>; + + reset { + label = "reset"; + gpios = <&gpio0 18 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + }; + + gpio-leds { + compatible = "gpio-leds"; + + status { + label = "u7621-06:green:status"; + gpios = <&gpio0 10 GPIO_ACTIVE_LOW>; + }; + + led4 { + label = "u7621-06:green:led4"; + gpios = <&gpio0 11 GPIO_ACTIVE_HIGH>; + }; + + led5 { + label = "u7621-06:green:led5"; + gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>; + }; + }; +}; + +&gpio0 { + status = "okay"; +}; + +&sdhci { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&sdhci_pins>; +}; + +&pcie { + status = "okay"; +}; + +ðernet { + mtd-mac-address = <&factory 0xe000>; + mediatek,portmap = "llllw"; +}; + +&pinctrl { + state_default: pinctrl0 { + gpio { + ralink,group = "jtag", "uart2", "wdt"; + ralink,function = "gpio"; + }; + }; +}; diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk index 8bd7e0318f..1dc5b1df3d 100644 --- a/target/linux/ramips/image/mt7621.mk +++ b/target/linux/ramips/image/mt7621.mk @@ -225,6 +225,14 @@ define Device/timecloud endef TARGET_DEVICES += timecloud +define Device/u7621-06-256M-16M + DTS := U7621-06-256M-16M + IMAGE_SIZE := 16064k + DEVICE_TITLE := UniElec U7621-06 (256M RAM/16M flash) + DEVICE_PACKAGES := kmod-ata-core kmod-ata-ahci kmod-sdhci-mt7620 kmod-usb3 +endef +TARGET_DEVICES += u7621-06-256M-16M + define Device/ubnt-erx DTS := UBNT-ERX FILESYSTEMS := squashfs