1
0
Fork 0
mirror of https://git.openwrt.org/openwrt/openwrt.git synced 2024-05-12 18:46:21 +02:00

ramips: add support for Linksys E5400 and clones

Linksys E5400 is a 2.4/5GHz dual band AC router, based on MediaTek
MT7628AN. This device is also sold as Linksys E2500v4, E5300 and E5350
with the same hardware, but software speed limitations in vendor
firmwares.

Specification:
 * SoC: MT7628AN (580 MHz)
 * RAM: DDR2 64 MiB
 * Flash: 16 MiB NOR (W25Q128BV)
 * Wi-Fi:
   * 2.4GHz: SoC Built-in
   * 5GHz: MT7612EN
 * Ethernet: 5x 100Mbps
   * Switch: SoC built-in
 * UART:
   * 115200, 8N1, 3.3V (real u-boot speed: 119050)
   * Pinout JB4: 1:[3V3] (TXD) (RXD) [NC] (GND)

Flash Layout:
  0x0000000-0x0030000 : "Bootloader"
  0x0030000-0x0040000 : "Config"
  0x0040000-0x0050000 : "Factory"
  0x0050000-0x0ff0000 : "Kernel"
  0x0ff0000-0x1000000 : "CBTinfo"

MAC address:
  LAN: factory 0x28
  WAN: LAN + 1
  2.4G: LAN + 2
  5G: LAN + 3

Installation:
1. Connect to UART, use LF as EOL (not CRLF)
2. Set IP address
  - Press 4 during boot
  - setenv serverip <TFTPSERVER_IP>
  - setenv ipaddr <DEVICE_IP>
  - setenv bootfile openwrt-ramips-mt76x8-linksys_e5400-initramfs-kernel.bin
  - saveenv
  - reset
3. Load Openwrt Kernel image from TFTP:
  - Press 1 during boot
  - IP and filename should be already set
4. Boot into OpenWrt and perform sysupgrade with sysupgrade image.

Signed-off-by: Julien Dusser <julien.dusser@free.fr>
This commit is contained in:
Julien Dusser 2022-03-20 10:11:15 +01:00 committed by Hauke Mehrtens
parent 8be6350f66
commit b893aa7992
3 changed files with 185 additions and 0 deletions

View File

@ -0,0 +1,163 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
#include "mt7628an.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
/ {
compatible = "linksys,e5400", "mediatek,mt7628an-soc";
model = "Linksys E5400";
aliases {
led-boot = &led_wps;
led-failsafe = &led_wps;
led-running = &led_wps;
led-upgrade = &led_wps;
label-mac-device = &ethernet;
};
chosen {
bootargs = "console=ttyS0,115200";
};
memory@0 {
device_type = "memory";
reg = <0x0 0x4000000>;
};
keys {
compatible = "gpio-keys";
reset {
label = "reset";
gpios = <&gpio 11 GPIO_ACTIVE_LOW>;
linux,code = <KEY_RESTART>;
};
wps {
label = "wps";
gpios = <&gpio 38 GPIO_ACTIVE_LOW>;
linux,code = <KEY_WPS_BUTTON>;
};
};
leds {
compatible = "gpio-leds";
led_wps: wps {
label = "green:wps";
gpios = <&gpio 37 GPIO_ACTIVE_LOW>;
};
};
};
&spi0 {
status = "okay";
flash@0 {
compatible = "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <40000000>;
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "u-boot";
reg = <0x0 0x30000>;
read-only;
};
partition@30000 {
label = "u-boot-env";
reg = <0x30000 0x10000>;
read-only;
};
factory: partition@40000 {
label = "factory";
reg = <0x40000 0x10000>;
read-only;
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_factory_28: macaddr@28 {
reg = <0x28 0x6>;
};
};
partition@50000 {
compatible = "denx,uimage";
label = "firmware";
reg = <0x50000 0xfa0000>;
};
partition@ff0000 {
label = "cbtinfo";
reg = <0xff0000 0x10000>;
read-only;
};
};
};
};
&ehci {
status = "disabled";
};
&esw {
mediatek,portmap = <0x2f>;
mediatek,portdisable = <0x20>;
};
&ethernet {
nvmem-cells = <&macaddr_factory_28>;
nvmem-cell-names = "mac-address";
};
&ohci {
status = "disabled";
};
&pcie {
status = "okay";
};
&pcie0 {
wifi5: wifi@0,0 {
compatible = "mediatek,mt76";
reg = <0x0000 0 0 0 0>;
mediatek,mtd-eeprom = <&factory 0x8000>;
ieee80211-freq-limit = <5000000 6000000>;
nvmem-cells = <&macaddr_factory_28>;
nvmem-cell-names = "mac-address";
mac-address-increment = <3>;
};
};
&state_default {
gpio {
group = "gpio", "i2c", "i2s", "refclk", "uart1", "wdt", "wled_an";
function = "gpio";
};
};
&usbphy {
status = "disabled";
};
&wmac {
status = "okay";
mediatek,mtd-eeprom = <&factory 0x0>;
nvmem-cells = <&macaddr_factory_28>;
nvmem-cell-names = "mac-address";
mac-address-increment = <2>;
};

View File

@ -342,6 +342,21 @@ define Device/kroks_kndrt31r19
endef
TARGET_DEVICES += kroks_kndrt31r19
define Device/linksys_e5400
IMAGE_SIZE := 16000k
DEVICE_VENDOR := Linksys
DEVICE_MODEL := E5400
DEVICE_ALT0_VENDOR := Linksys
DEVICE_ALT0_MODEL := E2500
DEVICE_ALT0_VARIANT := v4
DEVICE_ALT1_VENDOR := Linksys
DEVICE_ALT1_MODEL := E5300
DEVICE_ALT2_VENDOR := Linksys
DEVICE_ALT2_MODEL := E5350
DEVICE_PACKAGES := kmod-mt76x2
endef
TARGET_DEVICES += linksys_e5400
define Device/mediatek_linkit-smart-7688
IMAGE_SIZE := 32448k
DEVICE_VENDOR := MediaTek

View File

@ -125,6 +125,10 @@ ramips_setup_interfaces()
ucidef_set_interface_lan "eth0"
ucidef_set_interface "wan" device "/dev/cdc-wdm0" protocol "qmi"
;;
linksys,e5400)
ucidef_add_switch "switch0" \
"0:lan:1" "1:lan:2" "2:lan:3" "3:lan:4" "4:wan" "6@eth0"
;;
motorola,mwr03)
ucidef_add_switch "switch0" \
"1:lan" "2:lan" "3:lan" "0:wan" "6@eth0"
@ -248,6 +252,9 @@ ramips_setup_macs()
totolink,lr1200)
wan_mac=$(mtd_get_mac_binary factory 0x2e)
;;
linksys,e5400)
wan_mac=$(mtd_get_mac_binary factory 0x22)
;;
mercury,mac1200r-v2)
wan_mac=$(macaddr_add "$(mtd_get_mac_binary factory_info 0xd)" 1)
;;