From fa36bea470b3f1f26da4af80ac1e0f0b667a3466 Mon Sep 17 00:00:00 2001 From: Piotr Dymacz Date: Fri, 3 Nov 2017 21:12:49 +0100 Subject: [PATCH] ramips: add support for UniElec U7628-01 UniElec U7628-01 is a router platform board based on MediaTek MT7628AN. The device has the following specifications: - MT7628AN (580MHz) - 64/128/256 MB of RAM (DDR2) - 8/16 MB of flash (SPI NOR) - 5x 10/100 Mbps Ethernet (MT7628 built-in switch) - 1x 2T2R 2.4 GHz Wi-Fi (MT7628) - 1x miniPCIe slot (with PCIe and USB 2.0 buses) - 1x miniSIM slot - 1x microSD slot - 1x USB 2.0 port - 7x single-color LEDs (GPIO-controlled) - 1x bi-color LED (green GPIO-controlled, red -> LED_WLAN# in miniPCIe) - 1x reset button - 1x UART header (4-pins) - 1x SDXC/GPIO header (10-pins, connected with microSD slot) - 1x DC jack for main power (12 V) The following has been tested and is working: - Ethernet switch - miniPCIe slot (tested with modem and Wi-Fi card) - miniSIM slot - sysupgrade - reset button - USB 2.0 port* Due to a missing driver (MMC over GPIO) this is not supported: - microSD card reader * Warning: USB buses in miniPCIe and regular A-type socket are connected together, without any proper analog switch or USB HUB. 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 128MB RAM/16MB flash version): sysupgrade -n -F lede-ramips-mt76x8-u7628-01-128M-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. SDXC/GPIO header (J3): 1. SDXC_D3 / I2C_SCLK 2. SDXC_D2 / I2C_SD 3. SDXC_D1 / I2S_DI 4. SDXC_D0 / I2S_WS 5. SDXC_CMD / I2S_CLK 6. SDXC_CLK / GPIO0 7. SDXC_CD / UART_RXD1 8. UART_TXD1 9. 3V3 10. GND Other notes: 1. The board is available with different amounts of RAM and flash. We have only added support for the 128/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. Signed-off-by: Piotr Dymacz Signed-off-by: Kristian Evensen --- .../ramips/base-files/etc/board.d/01_leds | 9 ++ .../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/U7628-01-128M-16M.dts | 83 +++++++++++ target/linux/ramips/dts/U7628-01.dtsi | 132 ++++++++++++++++++ target/linux/ramips/image/mt76x8.mk | 8 ++ 8 files changed, 240 insertions(+) create mode 100644 target/linux/ramips/dts/U7628-01-128M-16M.dts create mode 100644 target/linux/ramips/dts/U7628-01.dtsi diff --git a/target/linux/ramips/base-files/etc/board.d/01_leds b/target/linux/ramips/base-files/etc/board.d/01_leds index 037331df96..74e405e420 100755 --- a/target/linux/ramips/base-files/etc/board.d/01_leds +++ b/target/linux/ramips/base-files/etc/board.d/01_leds @@ -372,6 +372,15 @@ u25awf-h1) set_wifi_led "u25awf:red:wifi" ucidef_set_led_netdev "eth" "eth" "u25awf:green:lan" "eth0" ;; +u7628-01-128M-16M) + ucidef_set_led_switch "lan1" "lan1" "u7628-01:green:lan1" "switch0" "0x2" + ucidef_set_led_switch "lan2" "lan2" "u7628-01:green:lan2" "switch0" "0x4" + ucidef_set_led_switch "lan3" "lan3" "u7628-01:green:lan3" "switch0" "0x8" + ucidef_set_led_switch "lan4" "lan4" "u7628-01:green:lan4" "switch0" "0x10" + ucidef_set_led_switch "wan" "wan" "u7628-01:green:wan" "switch0" "0x01" + set_usb_led "u7628-01:green:usb" + set_wifi_led "u7628-01:green:wlan" + ;; vocore-8M|\ vocore-16M) ucidef_set_led_netdev "eth" "ETH" "vocore:orange:eth" "eth0" 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 da3231dc1d..ba9ab15670 100755 --- a/target/linux/ramips/base-files/etc/board.d/02_network +++ b/target/linux/ramips/base-files/etc/board.d/02_network @@ -174,6 +174,7 @@ ramips_setup_interfaces() tl-wr840n-v4|\ tl-wr840n-v5|\ tl-wr841n-v13|\ + u7628-01-128M-16M|\ ubnt-erx|\ ubnt-erx-sfp|\ ur-326n4g|\ diff --git a/target/linux/ramips/base-files/etc/diag.sh b/target/linux/ramips/base-files/etc/diag.sh index 107e67591a..50cc44058f 100644 --- a/target/linux/ramips/base-files/etc/diag.sh +++ b/target/linux/ramips/base-files/etc/diag.sh @@ -246,6 +246,9 @@ get_status_led() { u7621-06-256M-16M) status_led="u7621-06:green:status" ;; + u7628-01-128M-16M) + status_led="u7628-01:green:power" + ;; 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 32128a4852..b71a130cbe 100755 --- a/target/linux/ramips/base-files/lib/ramips.sh +++ b/target/linux/ramips/base-files/lib/ramips.sh @@ -514,6 +514,9 @@ ramips_board_detect() { *"U7621-06 (256M RAM/16M flash)") name="u7621-06-256M-16M" ;; + *"U7628-01 (128M RAM/16M flash)") + name="u7628-01-128M-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 c2f5df7d36..fb5e600f35 100755 --- a/target/linux/ramips/base-files/lib/upgrade/platform.sh +++ b/target/linux/ramips/base-files/lib/upgrade/platform.sh @@ -146,6 +146,7 @@ platform_check_image() { tiny-ac|\ u25awf-h1|\ u7621-06-256M-16M|\ + u7628-01-128M-16M|\ ur-326n4g|\ ur-336un|\ v22rw-2x2|\ diff --git a/target/linux/ramips/dts/U7628-01-128M-16M.dts b/target/linux/ramips/dts/U7628-01-128M-16M.dts new file mode 100644 index 0000000000..4b3345da38 --- /dev/null +++ b/target/linux/ramips/dts/U7628-01-128M-16M.dts @@ -0,0 +1,83 @@ +/* + * 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 "U7628-01.dtsi" + +/ { + compatible = "unielec,u7628-01-128m-16m", "unielec,u7628-01", "mediatek,mt7628an-soc"; + model = "UniElec U7628-01 (128M RAM/16M flash)"; + + memory@0 { + device_type = "memory"; + reg = <0x0 0x8000000>; + }; +}; + +&spi0 { + status = "okay"; + + m25p80@0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "jedec,spi-nor"; + reg = <0>; + spi-max-frequency = <12000000>; + 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; + }; + + partition@50000 { + label = "firmware"; + reg = <0x50000 0xfb0000>; + }; + }; +}; diff --git a/target/linux/ramips/dts/U7628-01.dtsi b/target/linux/ramips/dts/U7628-01.dtsi new file mode 100644 index 0000000000..142cc4cc63 --- /dev/null +++ b/target/linux/ramips/dts/U7628-01.dtsi @@ -0,0 +1,132 @@ +/* + * 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 "mt7628an.dtsi" + +#include +#include + +/ { + compatible = "unielec,u7628-01", "mediatek,mt7628an-soc"; + + chosen { + bootargs = "console=ttyS0,115200"; + }; + + gpio-keys-polled { + compatible = "gpio-keys-polled"; + #address-cells = <1>; + #size-cells = <0>; + poll-interval = <20>; + reset { + label = "reset"; + gpios = <&gpio1 6 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + }; + + gpio-leds { + compatible = "gpio-leds"; + + power { + label = "u7628-01:green:power"; + gpios = <&gpio1 12 GPIO_ACTIVE_LOW>; + }; + + wlan { + label = "u7628-01:green:wlan"; + gpios = <&gpio0 11 GPIO_ACTIVE_LOW>; + }; + + wan { + label = "u7628-01:green:wan"; + gpios = <&gpio1 11 GPIO_ACTIVE_LOW>; + }; + + lan1 { + label = "u7628-01:green:lan1"; + gpios = <&gpio1 10 GPIO_ACTIVE_LOW>; + }; + + lan2 { + label = "u7628-01:green:lan2"; + gpios = <&gpio1 9 GPIO_ACTIVE_LOW>; + }; + + lan3 { + label = "u7628-01:green:lan3"; + gpios = <&gpio1 8 GPIO_ACTIVE_LOW>; + }; + + lan4 { + label = "u7628-01:green:lan4"; + gpios = <&gpio1 7 GPIO_ACTIVE_LOW>; + }; + + usb { + label = "u7628-01:green:usb"; + gpios = <&gpio1 5 GPIO_ACTIVE_LOW>; + }; + }; +}; + +&gpio0 { + status = "okay"; +}; + +&gpio1 { + status = "okay"; +}; + +&pcie { + status = "okay"; +}; + +ðernet { + mtd-mac-address = <&factory 0x28>; +}; + +&wmac { + status = "okay"; + ralink,mtd-eeprom = <&factory 0x0>; +}; + +&pinctrl { + state_default: pinctrl0 { + gpio { + ralink,group = "gpio", "p0led_an", "p1led_an", "p2led_an", "p3led_an", "p4led_an", "perst", "wdt", "wled_an"; + ralink,function = "gpio"; + }; + }; +}; diff --git a/target/linux/ramips/image/mt76x8.mk b/target/linux/ramips/image/mt76x8.mk index 248f45eebd..0e9b8fc7ee 100644 --- a/target/linux/ramips/image/mt76x8.mk +++ b/target/linux/ramips/image/mt76x8.mk @@ -124,6 +124,14 @@ define Device/tl-wr841n-v13 endef TARGET_DEVICES += tl-wr840n-v4 tl-wr840n-v5 tl-wr841n-v13 +define Device/u7628-01-128M-16M + DTS := U7628-01-128M-16M + IMAGE_SIZE := 16064k + DEVICE_TITLE := UniElec U7628-01 (128M RAM/16M flash) + DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci kmod-usb-ledtrig-usbport +endef +TARGET_DEVICES += u7628-01-128M-16M + define Device/vocore2 DTS := VOCORE2 IMAGE_SIZE := $(ralink_default_fw_size_16M) -- 2.30.2