mediatek: add support for GL.iNet GL-MT2500
authorDavid Bauer <mail@david-bauer.net>
Thu, 20 Apr 2023 17:49:55 +0000 (19:49 +0200)
committerDavid Bauer <mail@david-bauer.net>
Mon, 27 Nov 2023 07:02:41 +0000 (08:02 +0100)
Hardware
--------
SoC:  MediaTek MT7981BA
RAM:  1GB DDR4 (NANYA NT5AD512M16C4-JR)
MMC:  8GB eMMC (Samsung 8GTF4R)
ETH:  1000Base-T LAN (ePHY)
      2500Base-T WAN (MaxLinear GPY211C)
BTN:  1x Reset Button
LED:  System (blue/white)
      VPN (white)
USB:  1x USB-A (USB 3.0)
UART: 115200 8N1 - Pinout on board next to LAN port
      Don't connect 3.3V!

Known Issues
------------
U-Boot vendor recovery does not seem to accept any images, neither
GL.iNet images nor OpenWrt images. Recovery requires serial access!

Installation
------------
Upload the OpenWrt sysupgrade image to the Gl.iNet Web-UI. Make sure to
not retain existing settings.

Signed-off-by: David Bauer <mail@david-bauer.net>
package/boot/uboot-envtools/files/mediatek_filogic
target/linux/mediatek/dts/mt7981b-glinet-gl-mt2500.dts [new file with mode: 0644]
target/linux/mediatek/filogic/base-files/etc/board.d/02_network
target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh
target/linux/mediatek/image/filogic.mk

index ae8e1589a024b0dd0ba5b832eea358ca1c2a13a1..4d37828f1db9564e8bc157c2746b0036c553c9d9 100644 (file)
@@ -74,6 +74,10 @@ xiaomi,redmi-router-ax6000-ubootmod)
        ubootenv_add_uci_config "$envdev" "0x0" "0x1f000" "0x20000" "1"
        ubootenv_add_uci_config "$envdev2" "0x0" "0x1f000" "0x20000" "1"
        ;;
+glinet,gl-mt2500)
+       local envdev=$(find_mmc_part "u-boot-env")
+       ubootenv_add_uci_config "$envdev" "0x400000" "0x80000"
+       ;;
 glinet,gl-mt3000)
        ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x80000" "0x20000"
        ;;
diff --git a/target/linux/mediatek/dts/mt7981b-glinet-gl-mt2500.dts b/target/linux/mediatek/dts/mt7981b-glinet-gl-mt2500.dts
new file mode 100644 (file)
index 0000000..068dd0f
--- /dev/null
@@ -0,0 +1,151 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+
+/dts-v1/;
+#include "mt7981.dtsi"
+
+/ {
+       model = "GL.iNet GL-MT2500";
+       compatible = "glinet,gl-mt2500", "mediatek,mt7981";
+
+       aliases {
+               label-mac-device = &gmac0;
+               led-boot = &led_sys_white;
+               led-failsafe = &led_sys_blue;
+               led-running = &led_sys_white;
+               led-upgrade = &led_sys_blue;
+               serial0 = &uart0;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+               bootargs-append = " root=PARTLABEL=rootfs rootwait";
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+
+               reset {
+                       label = "reset";
+                       linux,code = <KEY_RESTART>;
+                       gpios = <&pio 1 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               led-vpn {
+                       label = "white:vpn";
+                       gpios = <&pio 31 GPIO_ACTIVE_LOW>;
+               };
+
+               led_sys_white: led-system-white {
+                       label = "white:system";
+                       gpios = <&pio 30 GPIO_ACTIVE_LOW>;
+               };
+
+               led_sys_blue: led-system-blue {
+                       label = "blue:system";
+                       gpios = <&pio 29 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       usb_vbus: regulstor-usb {
+               compatible = "regulator-fixed";
+
+               regulator-name = "usb-vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+
+               gpio = <&pio 12 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               regulator-boot-on;
+       };
+
+       reg_3p3v: regulator-3p3v {
+               compatible = "regulator-fixed";
+               regulator-name = "fixed-3.3V";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+};
+
+&pio {
+       mmc0_pins_default: mmc0-pins-default {
+               mux {
+                       function = "flash";
+                       groups = "emmc_45";
+               };
+       };
+       mmc0_pins_uhs: mmc0-pins-uhs {
+               mux {
+                       function = "flash";
+                       groups = "emmc_45";
+               };
+       };
+};
+
+&uart0 {
+       status = "okay";
+};
+
+&watchdog {
+       status = "okay";
+};
+
+&eth {
+       status = "okay";
+
+       pinctrl-names = "default";
+       pinctrl-0 = <&mdio_pins>;
+
+       gmac0: mac@0 {
+               compatible = "mediatek,eth-mac";
+               reg = <0>;
+
+               phy-mode = "2500base-x";
+               phy-handle = <&phy5>;
+       };
+
+       gmac1: mac@1 {
+               compatible = "mediatek,eth-mac";
+               reg = <1>;
+               phy-mode = "gmii";
+               phy-handle = <&int_gbe_phy>;
+       };
+};
+
+&mdio_bus {
+       reset-gpios = <&pio 14 GPIO_ACTIVE_LOW>;
+       reset-delay-us = <600>;
+       reset-post-delay-us = <20000>;
+
+       phy5: ethernet-phy@5 {
+               reg = <5>;
+               compatible = "ethernet-phy-ieee802.3-c45";
+       };
+};
+
+&usb_phy {
+       status = "okay";
+};
+
+&xhci {
+       status = "okay";
+       vbus-supply = <&usb_vbus>;
+};
+
+&mmc0 {
+       status = "okay";
+
+       pinctrl-names = "default", "state_uhs";
+       pinctrl-0 = <&mmc0_pins_default>;
+       pinctrl-1 = <&mmc0_pins_uhs>;
+       bus-width = <8>;
+       max-frequency = <52000000>;
+       vmmc-supply = <&reg_3p3v>;
+       cap-mmc-highspeed;
+       non-removable;
+};
index 5153c156f65bdd2f264d05ce65e3124ea68472d6..0675e87853ac74f7879635d7fd5aeecce21358cb 100644 (file)
@@ -32,6 +32,7 @@ mediatek_setup_interfaces()
        h3c,magic-nx30-pro)
                ucidef_set_interfaces_lan_wan "lan1 lan2 lan3" eth1
                ;;
+       glinet,gl-mt2500|\
        glinet,gl-mt3000)
                ucidef_set_interfaces_lan_wan eth1 eth0
                ;;
@@ -109,6 +110,11 @@ mediatek_setup_macs()
                ;;
                esac
                ;;
+       glinet,gl-mt2500)
+               label_mac="$(get_mac_binary "/dev/mmcblk0boot1" 0xA)"
+               wan_mac="$label_mac"
+               lan_mac="$(macaddr_add $label_mac 1)"
+               ;;
        glinet,gl-mt6000)
                label_mac=$(mmc_get_mac_binary factory 0x0a)
                wan_mac=$label_mac
index 3c278d5faf2c45571e4cb91c67a035d2ebc14e73..6130768cb4c6686cbb5d977f9ac63d692fd912db 100755 (executable)
@@ -97,6 +97,7 @@ platform_do_upgrade() {
        cudy,wr3000-v1)
                default_do_upgrade "$1"
                ;;
+       glinet,gl-mt2500|\
        glinet,gl-mt6000)
                CI_KERNPART="kernel"
                CI_ROOTPART="rootfs"
@@ -176,6 +177,7 @@ platform_copy_config() {
                        ;;
                esac
                ;;
+       glinet,gl-mt2500|\
        glinet,gl-mt6000|\
        ubnt,unifi-6-plus)
                emmc_copy_config
index 4886db11419e503a71994e116370f157fc2ac507..a0a5f944a8f6988a95e64b22f95b98b8ad41e2c6 100644 (file)
@@ -274,6 +274,23 @@ define Device/cudy_wr3000-v1
 endef
 TARGET_DEVICES += cudy_wr3000-v1
 
+define Device/glinet_gl-mt2500
+  DEVICE_VENDOR := GL.iNet
+  DEVICE_MODEL := GL-MT2500
+  DEVICE_DTS := mt7981b-glinet-gl-mt2500
+  DEVICE_DTS_DIR := ../dts
+  DEVICE_DTS_LOADADDR := 0x47000000
+  DEVICE_PACKAGES := kmod-usb3
+  SUPPORTED_DEVICES += glinet,mt2500-emmc
+  IMAGES := sysupgrade.bin
+  KERNEL := kernel-bin | lzma | \
+       fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb with-initrd | pad-to 64k
+  KERNEL_INITRAMFS := kernel-bin | lzma | \
+       fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb with-initrd | pad-to 64k
+  IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
+endef
+TARGET_DEVICES += glinet_gl-mt2500
+
 define Device/glinet_gl-mt3000
   DEVICE_VENDOR := GL.iNet
   DEVICE_MODEL := GL-MT3000