diff mbox series

mediatek: filogic: add support for GL.iNet GL-MT2500

Message ID 20231126151232.2244760-1-mrkiko.rs@gmail.com
State Superseded
Headers show
Series mediatek: filogic: add support for GL.iNet GL-MT2500 | expand

Commit Message

Enrico Mioso Nov. 26, 2023, 3:11 p.m. UTC
The GL-MT2500 is a Security Gateway based on MediaTek MT7981. It comes in
two variants: one with a plastic case, the other with an alluminium one. Both
variants run the same firmware.

Hardware specifications:
- SoC: MediaTek MT7981B
- CPU: 2x 1.3 GHz Cortex-A53
- Flash: 8GB EMMC
- RAM: 1 GB
- Ethernet:
	- 1x 10/100/1000 Mbps built-in PHY (LAN)
	- 1x 10/100/1000/2500 Mbps MaxLinear GPY211 PHY (WAN)
- USB 3.0 port
- Buttons: RESET button
- LEDs: 1x light-blue, 1x warm-white, 1x VPN
- Serial console: internal 4-pin header, 115200 8n1
- Power: 5 VDC, 3 A (USB Type-C)

MAC addresses assignment:
The label on the back of the device reports WAN (eth0) interface MAC address.
LAN interface (eth1) has WAN MAC address incremented by 1.

Installation:
-------------
Method 1 - via GL.iNet bootloader web failsafe UI
1. Connect to the LAN interface of the device (the one that's farther from
USB-C power supply connector).
2. Assign static IP 192.168.1.2/24 to the host.
3. Hold the reset button for at least 5 seconds while powering on the device.
If all went well, the bootloader should be responding to ICMP ping packets
and listening for web connections at 192.168.1.1. Upload the
*sysupgrade-squashfs image, then press the Update button. The device should
restart to OpenWrt.

Method 2 - via UART connection
1. Connect to device serial port.
2. Interrupt the boot process typing "gl".
3. Connect your host to the LAN port of the device and assign it static IP
192.168.1.2/24.
4. Start a TFTP server in your artifacts folder (e.g.:
openwrt/bin/targets/mediatek/filogic).
5. In the bootloader, issue these commands:
tftpboot openwrt-mediatek-filogic-glinet_gl-mt2500-initramfs-kernel.bin && bootm
this should bring you to the OpenWrt prompt where you can transfer a
sysupgrade image and proceed with the usual sysupgrade process.

Notes
-----
1. This port might not work on all hardware samples: in some cases, the unit
might just hang when probing EMMC.
2. The U-Boot environment might not be populated (empty EMMC partition) until
a "saveenv" command is issued. Do not initialize the environment from within
OpenWrt as this might cause problems due to the fact fw_printenv's default env
will not match the vendor's U-Boot one.

Untested features
-----------------
Flashing from stock web UI wasn't tested, but is expected to work, being stock
firmware shipped as a sysupgrade tar image as well.
Furthermore, going back to stock firmware wasn't tested, but should be possible
via U-Boot failsafe web UI.

CREDITS
------
Daniel Golle did the hard part of this port, so thank you!

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
Signed-off-by: Enrico Mioso <mrkiko.rs@gmail.com>
---
 .../uboot-envtools/files/mediatek_filogic     |   1 +
 .../mediatek/dts/mt7981b-glinet-gl-mt2500.dts | 209 ++++++++++++++++++
 .../filogic/base-files/etc/board.d/02_network |   6 +
 .../base-files/lib/upgrade/platform.sh        |   2 +
 target/linux/mediatek/image/filogic.mk        |  11 +
 5 files changed, 229 insertions(+)
 create mode 100644 target/linux/mediatek/dts/mt7981b-glinet-gl-mt2500.dts

Comments

Daniel Golle Nov. 26, 2023, 3:35 p.m. UTC | #1
Hi Enrico,

thank you for advancing with support for this device!

See comments inline, mostly about left-overs from earlier draft
implementations of nvmem-on-MMC.

On Sun, Nov 26, 2023 at 04:11:13PM +0100, Enrico Mioso wrote:
> The GL-MT2500 is a Security Gateway based on MediaTek MT7981. It comes in
> two variants: one with a plastic case, the other with an alluminium one. Both
> variants run the same firmware.
> 
> Hardware specifications:
> - SoC: MediaTek MT7981B
> - CPU: 2x 1.3 GHz Cortex-A53
> - Flash: 8GB EMMC
> - RAM: 1 GB
> - Ethernet:
> 	- 1x 10/100/1000 Mbps built-in PHY (LAN)
> 	- 1x 10/100/1000/2500 Mbps MaxLinear GPY211 PHY (WAN)
> - USB 3.0 port
> - Buttons: RESET button
> - LEDs: 1x light-blue, 1x warm-white, 1x VPN
> - Serial console: internal 4-pin header, 115200 8n1
> - Power: 5 VDC, 3 A (USB Type-C)
> 
> MAC addresses assignment:
> The label on the back of the device reports WAN (eth0) interface MAC address.
> LAN interface (eth1) has WAN MAC address incremented by 1.
> 
> Installation:
> -------------
> Method 1 - via GL.iNet bootloader web failsafe UI
> 1. Connect to the LAN interface of the device (the one that's farther from
> USB-C power supply connector).
> 2. Assign static IP 192.168.1.2/24 to the host.
> 3. Hold the reset button for at least 5 seconds while powering on the device.
> If all went well, the bootloader should be responding to ICMP ping packets
> and listening for web connections at 192.168.1.1. Upload the
> *sysupgrade-squashfs image, then press the Update button. The device should
> restart to OpenWrt.
> 
> Method 2 - via UART connection
> 1. Connect to device serial port.
> 2. Interrupt the boot process typing "gl".
> 3. Connect your host to the LAN port of the device and assign it static IP
> 192.168.1.2/24.
> 4. Start a TFTP server in your artifacts folder (e.g.:
> openwrt/bin/targets/mediatek/filogic).
> 5. In the bootloader, issue these commands:
> tftpboot openwrt-mediatek-filogic-glinet_gl-mt2500-initramfs-kernel.bin && bootm
> this should bring you to the OpenWrt prompt where you can transfer a
> sysupgrade image and proceed with the usual sysupgrade process.
> 
> Notes
> -----
> 1. This port might not work on all hardware samples: in some cases, the unit
> might just hang when probing EMMC.
> 2. The U-Boot environment might not be populated (empty EMMC partition) until
> a "saveenv" command is issued. Do not initialize the environment from within
> OpenWrt as this might cause problems due to the fact fw_printenv's default env
> will not match the vendor's U-Boot one.
> 
> Untested features
> -----------------
> Flashing from stock web UI wasn't tested, but is expected to work, being stock
> firmware shipped as a sysupgrade tar image as well.
> Furthermore, going back to stock firmware wasn't tested, but should be possible
> via U-Boot failsafe web UI.
> 
> CREDITS
> ------
> Daniel Golle did the hard part of this port, so thank you!
> 
> Signed-off-by: Daniel Golle <daniel@makrotopia.org>
> Signed-off-by: Enrico Mioso <mrkiko.rs@gmail.com>
> ---
>  .../uboot-envtools/files/mediatek_filogic     |   1 +
>  .../mediatek/dts/mt7981b-glinet-gl-mt2500.dts | 209 ++++++++++++++++++
>  .../filogic/base-files/etc/board.d/02_network |   6 +
>  .../base-files/lib/upgrade/platform.sh        |   2 +
>  target/linux/mediatek/image/filogic.mk        |  11 +
>  5 files changed, 229 insertions(+)
>  create mode 100644 target/linux/mediatek/dts/mt7981b-glinet-gl-mt2500.dts
> 
> diff --git a/package/boot/uboot-envtools/files/mediatek_filogic b/package/boot/uboot-envtools/files/mediatek_filogic
> index ae8e1589a0..d678e1fcbd 100644
> --- a/package/boot/uboot-envtools/files/mediatek_filogic
> +++ b/package/boot/uboot-envtools/files/mediatek_filogic
> @@ -77,6 +77,7 @@ xiaomi,redmi-router-ax6000-ubootmod)
>  glinet,gl-mt3000)
>  	ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x80000" "0x20000"
>  	;;
> +glinet,gl-mt2500|\
>  glinet,gl-mt6000)
>  	local envdev=$(find_mmc_part "u-boot-env")
>  	ubootenv_add_uci_config "$envdev" "0x0" "0x80000"
> 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
> index 0000000000..58d4200d6c
> --- /dev/null
> +++ b/target/linux/mediatek/dts/mt7981b-glinet-gl-mt2500.dts
> @@ -0,0 +1,209 @@
> +/dts-v1/;
> +#include "mt7981.dtsi"
> +/ {
> +	model = "GL.iNet GL-MT2500";
> +	compatible = "glinet,gl-mt2500", "mediatek,mt7981";
> +
> +	chosen {
> +		stdout-path = "serial0:115200n8";
> +		bootargs-append = " root=PARTLABEL=rootfs rootwait";
> +	};
> +
> +	aliases {
> +		led-boot = &led_blue;
> +		led-failsafe = &led_blue;
> +		led-running = &led_white;
> +		led-upgrade = &led_blue;
> +		serial0 = &uart0;
> +	};
> +
> +	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;
> +	};
> +
> +	gpio-keys {
> +		compatible = "gpio-keys";
> +
> +		reset {
> +			label = "reset";
> +			linux,code = <KEY_RESTART>;
> +			gpios = <&pio 1 GPIO_ACTIVE_LOW>;
> +		};
> +	};
> +
> +	gpio-export {
> +		compatible = "gpio-export";
> +
> +		usb_power {
> +			gpio-export,name = "usb_power";
> +			gpio-export,output = <1>;
> +			gpios = <&pio 12 GPIO_ACTIVE_HIGH>;
> +		};
> +	};
> +
> +	leds {
> +		compatible = "gpio-leds";
> +
> +		led@0 {
> +			label = "vpn";
> +			gpios = <&pio 31 GPIO_ACTIVE_LOW>;
> +		};
> +
> +		led_white: led@1 {
> +			label = "white:system";
> +			gpios = <&pio 30 GPIO_ACTIVE_LOW>;
> +		};
> +
> +		led_blue: led@2 {
> +			label = "blue:system";
> +			gpios = <&pio 29 GPIO_ACTIVE_LOW>;
> +			default-state = "on";
> +		};
> +	};
> +};
> +
> +&uart0 {
> +	status = "okay";
> +};
> +
> +&watchdog {
> +	status = "okay";
> +};
> +
> +&mmc0 {
> +	pinctrl-names = "default", "state_uhs";
> +	pinctrl-0 = <&mmc0_pins_default>;
> +	pinctrl-1 = <&mmc0_pins_uhs>;
> +	bus-width = <8>;
> +	max-frequency = <52000000>;
> +	cap-mmc-highspeed;
> +	vmmc-supply = <&reg_3p3v>;
> +	non-removable;
> +	status = "okay";
> +	#address-cells = <1>;
> +	#size-cells = <0>;
> +
> +	card@0 {

Please remove card@0 from DT, it is not needed not and was for testing
future support of NVMEM on MMC (which I'd like to first get approved
upstream before starting to use it in OpenWrt).

In case you are interested, the WIP patches for that are here:

https://github.com/dangowrt/linux/commit/296ecde1da4d83e24c81dcc50a71d0db27e41088
https://github.com/dangowrt/linux/commit/fb68168efaeab49202c36e38e7771bfc53bb5067
https://github.com/dangowrt/linux/commit/d83b29b7d8a722b82f17bcdbf2d9b778460f12d4
https://github.com/dangowrt/linux/commit/109053c04b366dca1e0e006b60714e4a07ba441f
https://github.com/dangowrt/linux/commit/65122ec7c436254f1f72958be0272c54a5022b83
https://github.com/dangowrt/linux/commit/70e6bdcb818157b6261c3905edee94e0c1d39b9d
https://github.com/dangowrt/linux/commit/bfea727f2d27d9131417c619d449b67673308381


> +		compatible = "mmc-card";
> +		reg = <0>;
> +
> +		block {
> +			partitions {
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +
> +				partition@2 {
> +					reg = <2>;
> +					partname = "u-boot-env";
> +					compatible = "nvmem-cells";
> +				};
> +
> +				partition@3 {
> +					reg = <3>;
> +					partname = "rf";
> +					compatible = "nvmem-cells";
> +				};
> +			};
> +		};
> +
> +		boot1 {
> +			compatible = "nvmem-cells";
> +
> +			nvmem-layout {
> +				compatible = "fixed-layout";
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +
> +				macaddr: macaddr@a {
> +					compatible = "mac-base";
> +					reg = <0xa 0x6>;
> +					#nvmem-cell-cells = <1>;
> +				};
> +
> +				ddns@10 {
> +					reg = <0x10 0x10>;
> +				};
> +
> +				sn-bak@20 {
> +					reg = <0x20 0x10>;
> +				};
> +
> +				sn@30 {
> +					reg = <0x30 0x10>;
> +				};
> +
> +				country-code@88 {
> +					reg = <0x88 0x10>;
> +				};
> +			};
> +		};
> +	};
> +};
> +
> +&eth {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&mdio_pins>;
> +
> +	status = "okay";
> +
> +	gmac0: mac@0 {
> +		compatible = "mediatek,eth-mac";
> +		reg = <0>;
> +		phy-mode = "2500base-x";
> +		phy-handle = <&phy0>;
> +//		nvmem-cells = <&macaddr 0>;
> +//		nvmem-cell-names = "mac-address";

Also the commented-out lines here and below referencing nvmem-cells
should be removed for now. Once NVMEM-on-MMC is supported, we should
re-add them.

> +	};
> +
> +	gmac1: mac@1 {
> +		compatible = "mediatek,eth-mac";
> +		reg = <1>;
> +		phy-mode = "gmii";
> +		phy-handle = <&int_gbe_phy>;
> +//		nvmem-cells = <&macaddr 1>;
> +//		nvmem-cell-names = "mac-address";
> +	};
> +};
> +
> +&mdio_bus {
> +	reset-gpios = <&pio 14 GPIO_ACTIVE_LOW>;
> +	reset-delay-us = <600>;
> +	reset-post-delay-us = <20000>;
> +
> +	phy0: ethernet-phy@5 {
> +		reg = <5>;
> +		compatible = "ethernet-phy-ieee802.3-c45";
> +		phy-mode = "2500base-x";
> +	};
> +};
> +
> +&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";
> +		};
> +	};
> +};
> +
> +&usb_phy {
> +	status = "okay";
> +};
> +
> +&xhci {
> +	mediatek,u3p-dis-msk = <0x0>;
> +	phys = <&u2port0 PHY_TYPE_USB2>,
> +	       <&u3port0 PHY_TYPE_USB3>;
> +	status = "okay";
> +};
> diff --git a/target/linux/mediatek/filogic/base-files/etc/board.d/02_network b/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
> index 5153c156f6..ef0dab38d0 100644
> --- a/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
> +++ b/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
> @@ -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
> diff --git a/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh b/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh
> index 3c278d5faf..6130768cb4 100755
> --- a/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh
> +++ b/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh
> @@ -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
> diff --git a/target/linux/mediatek/image/filogic.mk b/target/linux/mediatek/image/filogic.mk
> index 4886db1141..2adad62962 100644
> --- a/target/linux/mediatek/image/filogic.mk
> +++ b/target/linux/mediatek/image/filogic.mk
> @@ -274,6 +274,17 @@ 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
> +  SUPPORTED_DEVICES += glinet,mt2500-emmc
> +  DEVICE_PACKAGES := e2fsprogs f2fsck mkf2fs kmod-usb3 -kmod-mt7915e -wpad-basic-mbedtls
> +  IMAGE/sysupgrade.bin := sysupgrade-tar | append-gl-metadata
> +endef
> +TARGET_DEVICES += glinet_gl-mt2500
> +
>  define Device/glinet_gl-mt3000
>    DEVICE_VENDOR := GL.iNet
>    DEVICE_MODEL := GL-MT3000
> -- 
> 2.42.1
>
Enrico Mioso Nov. 26, 2023, 6:51 p.m. UTC | #2
On Sun, Nov 26, 2023 at 03:35:09PM +0000, Daniel Golle wrote:
> Hi Enrico,
> 
> thank you for advancing with support for this device!
> 
> See comments inline, mostly about left-overs from earlier draft
> implementations of nvmem-on-MMC.
> 
> On Sun, Nov 26, 2023 at 04:11:13PM +0100, Enrico Mioso wrote:
> > The GL-MT2500 is a Security Gateway based on MediaTek MT7981. It comes in
> > two variants: one with a plastic case, the other with an alluminium one. Both
> > variants run the same firmware.
> > 
> > Hardware specifications:
> > - SoC: MediaTek MT7981B
> > - CPU: 2x 1.3 GHz Cortex-A53
> > - Flash: 8GB EMMC
> > - RAM: 1 GB
> > - Ethernet:
> > 	- 1x 10/100/1000 Mbps built-in PHY (LAN)
> > 	- 1x 10/100/1000/2500 Mbps MaxLinear GPY211 PHY (WAN)
> > - USB 3.0 port
> > - Buttons: RESET button
> > - LEDs: 1x light-blue, 1x warm-white, 1x VPN
> > - Serial console: internal 4-pin header, 115200 8n1
> > - Power: 5 VDC, 3 A (USB Type-C)
> > 
> > MAC addresses assignment:
> > The label on the back of the device reports WAN (eth0) interface MAC address.
> > LAN interface (eth1) has WAN MAC address incremented by 1.
> > 
> > Installation:
> > -------------
> > Method 1 - via GL.iNet bootloader web failsafe UI
> > 1. Connect to the LAN interface of the device (the one that's farther from
> > USB-C power supply connector).
> > 2. Assign static IP 192.168.1.2/24 to the host.
> > 3. Hold the reset button for at least 5 seconds while powering on the device.
> > If all went well, the bootloader should be responding to ICMP ping packets
> > and listening for web connections at 192.168.1.1. Upload the
> > *sysupgrade-squashfs image, then press the Update button. The device should
> > restart to OpenWrt.
> > 
> > Method 2 - via UART connection
> > 1. Connect to device serial port.
> > 2. Interrupt the boot process typing "gl".
> > 3. Connect your host to the LAN port of the device and assign it static IP
> > 192.168.1.2/24.
> > 4. Start a TFTP server in your artifacts folder (e.g.:
> > openwrt/bin/targets/mediatek/filogic).
> > 5. In the bootloader, issue these commands:
> > tftpboot openwrt-mediatek-filogic-glinet_gl-mt2500-initramfs-kernel.bin && bootm
> > this should bring you to the OpenWrt prompt where you can transfer a
> > sysupgrade image and proceed with the usual sysupgrade process.
> > 
> > Notes
> > -----
> > 1. This port might not work on all hardware samples: in some cases, the unit
> > might just hang when probing EMMC.
> > 2. The U-Boot environment might not be populated (empty EMMC partition) until
> > a "saveenv" command is issued. Do not initialize the environment from within
> > OpenWrt as this might cause problems due to the fact fw_printenv's default env
> > will not match the vendor's U-Boot one.
> > 
> > Untested features
> > -----------------
> > Flashing from stock web UI wasn't tested, but is expected to work, being stock
> > firmware shipped as a sysupgrade tar image as well.
> > Furthermore, going back to stock firmware wasn't tested, but should be possible
> > via U-Boot failsafe web UI.
> > 
> > CREDITS
> > ------
> > Daniel Golle did the hard part of this port, so thank you!
> > 
> > Signed-off-by: Daniel Golle <daniel@makrotopia.org>
> > Signed-off-by: Enrico Mioso <mrkiko.rs@gmail.com>
> > ---
> >  .../uboot-envtools/files/mediatek_filogic     |   1 +
> >  .../mediatek/dts/mt7981b-glinet-gl-mt2500.dts | 209 ++++++++++++++++++
> >  .../filogic/base-files/etc/board.d/02_network |   6 +
> >  .../base-files/lib/upgrade/platform.sh        |   2 +
> >  target/linux/mediatek/image/filogic.mk        |  11 +
> >  5 files changed, 229 insertions(+)
> >  create mode 100644 target/linux/mediatek/dts/mt7981b-glinet-gl-mt2500.dts
> > 
> > diff --git a/package/boot/uboot-envtools/files/mediatek_filogic b/package/boot/uboot-envtools/files/mediatek_filogic
> > index ae8e1589a0..d678e1fcbd 100644
> > --- a/package/boot/uboot-envtools/files/mediatek_filogic
> > +++ b/package/boot/uboot-envtools/files/mediatek_filogic
> > @@ -77,6 +77,7 @@ xiaomi,redmi-router-ax6000-ubootmod)
> >  glinet,gl-mt3000)
> >  	ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x80000" "0x20000"
> >  	;;
> > +glinet,gl-mt2500|\
> >  glinet,gl-mt6000)
> >  	local envdev=$(find_mmc_part "u-boot-env")
> >  	ubootenv_add_uci_config "$envdev" "0x0" "0x80000"
> > 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
> > index 0000000000..58d4200d6c
> > --- /dev/null
> > +++ b/target/linux/mediatek/dts/mt7981b-glinet-gl-mt2500.dts
> > @@ -0,0 +1,209 @@
> > +/dts-v1/;
> > +#include "mt7981.dtsi"
> > +/ {
> > +	model = "GL.iNet GL-MT2500";
> > +	compatible = "glinet,gl-mt2500", "mediatek,mt7981";
> > +
> > +	chosen {
> > +		stdout-path = "serial0:115200n8";
> > +		bootargs-append = " root=PARTLABEL=rootfs rootwait";
> > +	};
> > +
> > +	aliases {
> > +		led-boot = &led_blue;
> > +		led-failsafe = &led_blue;
> > +		led-running = &led_white;
> > +		led-upgrade = &led_blue;
> > +		serial0 = &uart0;
> > +	};
> > +
> > +	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;
> > +	};
> > +
> > +	gpio-keys {
> > +		compatible = "gpio-keys";
> > +
> > +		reset {
> > +			label = "reset";
> > +			linux,code = <KEY_RESTART>;
> > +			gpios = <&pio 1 GPIO_ACTIVE_LOW>;
> > +		};
> > +	};
> > +
> > +	gpio-export {
> > +		compatible = "gpio-export";
> > +
> > +		usb_power {
> > +			gpio-export,name = "usb_power";
> > +			gpio-export,output = <1>;
> > +			gpios = <&pio 12 GPIO_ACTIVE_HIGH>;
> > +		};
> > +	};
> > +
> > +	leds {
> > +		compatible = "gpio-leds";
> > +
> > +		led@0 {
> > +			label = "vpn";
> > +			gpios = <&pio 31 GPIO_ACTIVE_LOW>;
> > +		};
> > +
> > +		led_white: led@1 {
> > +			label = "white:system";
> > +			gpios = <&pio 30 GPIO_ACTIVE_LOW>;
> > +		};
> > +
> > +		led_blue: led@2 {
> > +			label = "blue:system";
> > +			gpios = <&pio 29 GPIO_ACTIVE_LOW>;
> > +			default-state = "on";
> > +		};
> > +	};
> > +};
> > +
> > +&uart0 {
> > +	status = "okay";
> > +};
> > +
> > +&watchdog {
> > +	status = "okay";
> > +};
> > +
> > +&mmc0 {
> > +	pinctrl-names = "default", "state_uhs";
> > +	pinctrl-0 = <&mmc0_pins_default>;
> > +	pinctrl-1 = <&mmc0_pins_uhs>;
> > +	bus-width = <8>;
> > +	max-frequency = <52000000>;
> > +	cap-mmc-highspeed;
> > +	vmmc-supply = <&reg_3p3v>;
> > +	non-removable;
> > +	status = "okay";
> > +	#address-cells = <1>;
> > +	#size-cells = <0>;
> > +
> > +	card@0 {
> 
> Please remove card@0 from DT, it is not needed not and was for testing
> future support of NVMEM on MMC (which I'd like to first get approved
> upstream before starting to use it in OpenWrt).
> 
> In case you are interested, the WIP patches for that are here:
> 
> https://github.com/dangowrt/linux/commit/296ecde1da4d83e24c81dcc50a71d0db27e41088
> https://github.com/dangowrt/linux/commit/fb68168efaeab49202c36e38e7771bfc53bb5067
> https://github.com/dangowrt/linux/commit/d83b29b7d8a722b82f17bcdbf2d9b778460f12d4
> https://github.com/dangowrt/linux/commit/109053c04b366dca1e0e006b60714e4a07ba441f
> https://github.com/dangowrt/linux/commit/65122ec7c436254f1f72958be0272c54a5022b83
> https://github.com/dangowrt/linux/commit/70e6bdcb818157b6261c3905edee94e0c1d39b9d
> https://github.com/dangowrt/linux/commit/bfea727f2d27d9131417c619d449b67673308381
> 
> 
> > +		compatible = "mmc-card";
> > +		reg = <0>;
> > +
> > +		block {
> > +			partitions {
> > +				#address-cells = <1>;
> > +				#size-cells = <0>;
> > +
> > +				partition@2 {
> > +					reg = <2>;
> > +					partname = "u-boot-env";
> > +					compatible = "nvmem-cells";
> > +				};
> > +
> > +				partition@3 {
> > +					reg = <3>;
> > +					partname = "rf";
> > +					compatible = "nvmem-cells";
> > +				};
> > +			};
> > +		};
> > +
> > +		boot1 {
> > +			compatible = "nvmem-cells";
> > +
> > +			nvmem-layout {
> > +				compatible = "fixed-layout";
> > +				#address-cells = <1>;
> > +				#size-cells = <1>;
> > +
> > +				macaddr: macaddr@a {
> > +					compatible = "mac-base";
> > +					reg = <0xa 0x6>;
> > +					#nvmem-cell-cells = <1>;
> > +				};
> > +
> > +				ddns@10 {
> > +					reg = <0x10 0x10>;
> > +				};
> > +
> > +				sn-bak@20 {
> > +					reg = <0x20 0x10>;
> > +				};
> > +
> > +				sn@30 {
> > +					reg = <0x30 0x10>;
> > +				};
> > +
> > +				country-code@88 {
> > +					reg = <0x88 0x10>;
> > +				};
> > +			};
> > +		};
> > +	};
> > +};
> > +
> > +&eth {
> > +	pinctrl-names = "default";
> > +	pinctrl-0 = <&mdio_pins>;
> > +
> > +	status = "okay";
> > +
> > +	gmac0: mac@0 {
> > +		compatible = "mediatek,eth-mac";
> > +		reg = <0>;
> > +		phy-mode = "2500base-x";
> > +		phy-handle = <&phy0>;
> > +//		nvmem-cells = <&macaddr 0>;
> > +//		nvmem-cell-names = "mac-address";
> 
> Also the commented-out lines here and below referencing nvmem-cells
> should be removed for now. Once NVMEM-on-MMC is supported, we should
> re-add them.
> 
> > +	};
> > +
> > +	gmac1: mac@1 {
> > +		compatible = "mediatek,eth-mac";
> > +		reg = <1>;
> > +		phy-mode = "gmii";
> > +		phy-handle = <&int_gbe_phy>;
> > +//		nvmem-cells = <&macaddr 1>;
> > +//		nvmem-cell-names = "mac-address";
> > +	};
> > +};
> > +
> > +&mdio_bus {
> > +	reset-gpios = <&pio 14 GPIO_ACTIVE_LOW>;
> > +	reset-delay-us = <600>;
> > +	reset-post-delay-us = <20000>;
> > +
> > +	phy0: ethernet-phy@5 {
> > +		reg = <5>;
> > +		compatible = "ethernet-phy-ieee802.3-c45";
> > +		phy-mode = "2500base-x";
> > +	};
> > +};
> > +
> > +&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";
> > +		};
> > +	};
> > +};
> > +
> > +&usb_phy {
> > +	status = "okay";
> > +};
> > +
> > +&xhci {
> > +	mediatek,u3p-dis-msk = <0x0>;
> > +	phys = <&u2port0 PHY_TYPE_USB2>,
> > +	       <&u3port0 PHY_TYPE_USB3>;
> > +	status = "okay";
> > +};
> > diff --git a/target/linux/mediatek/filogic/base-files/etc/board.d/02_network b/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
> > index 5153c156f6..ef0dab38d0 100644
> > --- a/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
> > +++ b/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
> > @@ -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
> > diff --git a/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh b/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh
> > index 3c278d5faf..6130768cb4 100755
> > --- a/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh
> > +++ b/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh
> > @@ -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
> > diff --git a/target/linux/mediatek/image/filogic.mk b/target/linux/mediatek/image/filogic.mk
> > index 4886db1141..2adad62962 100644
> > --- a/target/linux/mediatek/image/filogic.mk
> > +++ b/target/linux/mediatek/image/filogic.mk
> > @@ -274,6 +274,17 @@ 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
> > +  SUPPORTED_DEVICES += glinet,mt2500-emmc
> > +  DEVICE_PACKAGES := e2fsprogs f2fsck mkf2fs kmod-usb3 -kmod-mt7915e -wpad-basic-mbedtls
> > +  IMAGE/sysupgrade.bin := sysupgrade-tar | append-gl-metadata
> > +endef
> > +TARGET_DEVICES += glinet_gl-mt2500
> > +
> >  define Device/glinet_gl-mt3000
> >    DEVICE_VENDOR := GL.iNet
> >    DEVICE_MODEL := GL-MT3000
> > -- 
> > 2.42.1
> > 

Hi Daniel,
thanks a lot for the help and time reviewing this.
I am going to submit a new version shortly. 
BTW - how should we proceed with the VPN led name? May we leave it as it is or should we include a colour spec?

Thanks,
Enrico
diff mbox series

Patch

diff --git a/package/boot/uboot-envtools/files/mediatek_filogic b/package/boot/uboot-envtools/files/mediatek_filogic
index ae8e1589a0..d678e1fcbd 100644
--- a/package/boot/uboot-envtools/files/mediatek_filogic
+++ b/package/boot/uboot-envtools/files/mediatek_filogic
@@ -77,6 +77,7 @@  xiaomi,redmi-router-ax6000-ubootmod)
 glinet,gl-mt3000)
 	ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x80000" "0x20000"
 	;;
+glinet,gl-mt2500|\
 glinet,gl-mt6000)
 	local envdev=$(find_mmc_part "u-boot-env")
 	ubootenv_add_uci_config "$envdev" "0x0" "0x80000"
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
index 0000000000..58d4200d6c
--- /dev/null
+++ b/target/linux/mediatek/dts/mt7981b-glinet-gl-mt2500.dts
@@ -0,0 +1,209 @@ 
+/dts-v1/;
+#include "mt7981.dtsi"
+/ {
+	model = "GL.iNet GL-MT2500";
+	compatible = "glinet,gl-mt2500", "mediatek,mt7981";
+
+	chosen {
+		stdout-path = "serial0:115200n8";
+		bootargs-append = " root=PARTLABEL=rootfs rootwait";
+	};
+
+	aliases {
+		led-boot = &led_blue;
+		led-failsafe = &led_blue;
+		led-running = &led_white;
+		led-upgrade = &led_blue;
+		serial0 = &uart0;
+	};
+
+	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;
+	};
+
+	gpio-keys {
+		compatible = "gpio-keys";
+
+		reset {
+			label = "reset";
+			linux,code = <KEY_RESTART>;
+			gpios = <&pio 1 GPIO_ACTIVE_LOW>;
+		};
+	};
+
+	gpio-export {
+		compatible = "gpio-export";
+
+		usb_power {
+			gpio-export,name = "usb_power";
+			gpio-export,output = <1>;
+			gpios = <&pio 12 GPIO_ACTIVE_HIGH>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led@0 {
+			label = "vpn";
+			gpios = <&pio 31 GPIO_ACTIVE_LOW>;
+		};
+
+		led_white: led@1 {
+			label = "white:system";
+			gpios = <&pio 30 GPIO_ACTIVE_LOW>;
+		};
+
+		led_blue: led@2 {
+			label = "blue:system";
+			gpios = <&pio 29 GPIO_ACTIVE_LOW>;
+			default-state = "on";
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
+
+&watchdog {
+	status = "okay";
+};
+
+&mmc0 {
+	pinctrl-names = "default", "state_uhs";
+	pinctrl-0 = <&mmc0_pins_default>;
+	pinctrl-1 = <&mmc0_pins_uhs>;
+	bus-width = <8>;
+	max-frequency = <52000000>;
+	cap-mmc-highspeed;
+	vmmc-supply = <&reg_3p3v>;
+	non-removable;
+	status = "okay";
+	#address-cells = <1>;
+	#size-cells = <0>;
+
+	card@0 {
+		compatible = "mmc-card";
+		reg = <0>;
+
+		block {
+			partitions {
+				#address-cells = <1>;
+				#size-cells = <0>;
+
+				partition@2 {
+					reg = <2>;
+					partname = "u-boot-env";
+					compatible = "nvmem-cells";
+				};
+
+				partition@3 {
+					reg = <3>;
+					partname = "rf";
+					compatible = "nvmem-cells";
+				};
+			};
+		};
+
+		boot1 {
+			compatible = "nvmem-cells";
+
+			nvmem-layout {
+				compatible = "fixed-layout";
+				#address-cells = <1>;
+				#size-cells = <1>;
+
+				macaddr: macaddr@a {
+					compatible = "mac-base";
+					reg = <0xa 0x6>;
+					#nvmem-cell-cells = <1>;
+				};
+
+				ddns@10 {
+					reg = <0x10 0x10>;
+				};
+
+				sn-bak@20 {
+					reg = <0x20 0x10>;
+				};
+
+				sn@30 {
+					reg = <0x30 0x10>;
+				};
+
+				country-code@88 {
+					reg = <0x88 0x10>;
+				};
+			};
+		};
+	};
+};
+
+&eth {
+	pinctrl-names = "default";
+	pinctrl-0 = <&mdio_pins>;
+
+	status = "okay";
+
+	gmac0: mac@0 {
+		compatible = "mediatek,eth-mac";
+		reg = <0>;
+		phy-mode = "2500base-x";
+		phy-handle = <&phy0>;
+//		nvmem-cells = <&macaddr 0>;
+//		nvmem-cell-names = "mac-address";
+	};
+
+	gmac1: mac@1 {
+		compatible = "mediatek,eth-mac";
+		reg = <1>;
+		phy-mode = "gmii";
+		phy-handle = <&int_gbe_phy>;
+//		nvmem-cells = <&macaddr 1>;
+//		nvmem-cell-names = "mac-address";
+	};
+};
+
+&mdio_bus {
+	reset-gpios = <&pio 14 GPIO_ACTIVE_LOW>;
+	reset-delay-us = <600>;
+	reset-post-delay-us = <20000>;
+
+	phy0: ethernet-phy@5 {
+		reg = <5>;
+		compatible = "ethernet-phy-ieee802.3-c45";
+		phy-mode = "2500base-x";
+	};
+};
+
+&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";
+		};
+	};
+};
+
+&usb_phy {
+	status = "okay";
+};
+
+&xhci {
+	mediatek,u3p-dis-msk = <0x0>;
+	phys = <&u2port0 PHY_TYPE_USB2>,
+	       <&u3port0 PHY_TYPE_USB3>;
+	status = "okay";
+};
diff --git a/target/linux/mediatek/filogic/base-files/etc/board.d/02_network b/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
index 5153c156f6..ef0dab38d0 100644
--- a/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
+++ b/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
@@ -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
diff --git a/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh b/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh
index 3c278d5faf..6130768cb4 100755
--- a/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh
+++ b/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh
@@ -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
diff --git a/target/linux/mediatek/image/filogic.mk b/target/linux/mediatek/image/filogic.mk
index 4886db1141..2adad62962 100644
--- a/target/linux/mediatek/image/filogic.mk
+++ b/target/linux/mediatek/image/filogic.mk
@@ -274,6 +274,17 @@  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
+  SUPPORTED_DEVICES += glinet,mt2500-emmc
+  DEVICE_PACKAGES := e2fsprogs f2fsck mkf2fs kmod-usb3 -kmod-mt7915e -wpad-basic-mbedtls
+  IMAGE/sysupgrade.bin := sysupgrade-tar | append-gl-metadata
+endef
+TARGET_DEVICES += glinet_gl-mt2500
+
 define Device/glinet_gl-mt3000
   DEVICE_VENDOR := GL.iNet
   DEVICE_MODEL := GL-MT3000