[openwrt/openwrt] ramips: add support for Linksys E5400 and clones

LEDE Commits lede-commits at lists.infradead.org
Sun Dec 18 12:27:14 PST 2022


hauke pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/b893aa7992087c105ea205088f8d9787200ed6f8

commit b893aa7992087c105ea205088f8d9787200ed6f8
Author: Julien Dusser <julien.dusser at free.fr>
AuthorDate: Sun Mar 20 10:11:15 2022 +0100

    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 at free.fr>
---
 target/linux/ramips/dts/mt7628an_linksys_e5400.dts | 163 +++++++++++++++++++++
 target/linux/ramips/image/mt76x8.mk                |  15 ++
 .../mt76x8/base-files/etc/board.d/02_network       |   7 +
 3 files changed, 185 insertions(+)

diff --git a/target/linux/ramips/dts/mt7628an_linksys_e5400.dts b/target/linux/ramips/dts/mt7628an_linksys_e5400.dts
new file mode 100644
index 0000000000..3a6403fe7f
--- /dev/null
+++ b/target/linux/ramips/dts/mt7628an_linksys_e5400.dts
@@ -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 = ðernet;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200";
+	};
+
+	memory at 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 at 0 {
+		compatible = "jedec,spi-nor";
+		reg = <0>;
+		spi-max-frequency = <40000000>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition at 0 {
+				label = "u-boot";
+				reg = <0x0 0x30000>;
+				read-only;
+			};
+
+			partition at 30000 {
+				label = "u-boot-env";
+				reg = <0x30000 0x10000>;
+				read-only;
+			};
+
+			factory: partition at 40000 {
+				label = "factory";
+				reg = <0x40000 0x10000>;
+				read-only;
+
+				compatible = "nvmem-cells";
+				#address-cells = <1>;
+				#size-cells = <1>;
+
+				macaddr_factory_28: macaddr at 28 {
+					reg = <0x28 0x6>;
+				};
+			};
+
+			partition at 50000 {
+				compatible = "denx,uimage";
+				label = "firmware";
+				reg = <0x50000 0xfa0000>;
+			};
+
+			partition at 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 at 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>;
+};
+
diff --git a/target/linux/ramips/image/mt76x8.mk b/target/linux/ramips/image/mt76x8.mk
index 1b7e786b52..a77f1c97e1 100644
--- a/target/linux/ramips/image/mt76x8.mk
+++ b/target/linux/ramips/image/mt76x8.mk
@@ -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
diff --git a/target/linux/ramips/mt76x8/base-files/etc/board.d/02_network b/target/linux/ramips/mt76x8/base-files/etc/board.d/02_network
index d85cdf3db7..26415e0fa6 100644
--- a/target/linux/ramips/mt76x8/base-files/etc/board.d/02_network
+++ b/target/linux/ramips/mt76x8/base-files/etc/board.d/02_network
@@ -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 at eth0"
+		;;
 	motorola,mwr03)
 		ucidef_add_switch "switch0" \
 			"1:lan" "2:lan" "3:lan" "0:wan" "6 at 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)
 		;;




More information about the lede-commits mailing list