[openwrt/openwrt] econet: basic Ethernet support

LEDE Commits lede-commits at lists.infradead.org
Thu Dec 4 13:58:59 PST 2025


hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/d6b4b6385074c56a81159e6963459289b6e774a8

commit d6b4b6385074c56a81159e6963459289b6e774a8
Author: Caleb James DeLisle <cjd at cjdns.fr>
AuthorDate: Fri Nov 7 17:45:01 2025 +0000

    econet: basic Ethernet support
    
    This is about as simple as it gets, it's able to start up and put
    the onboard switch into dumb switch mode and then send untagged
    frames which become available on every switch port.
    
    It is out-of-tree to allow for rapid development and it is being
    proposed now because even in this state it brings a lot of value
    to the EcoNet platform and it is a fairly complex ethernet system
    so it will take some time before the driver is in a state that
    may be considered for upstreaming.
    
    Signed-off-by: Caleb James DeLisle <cjd at cjdns.fr>
    Link: https://github.com/openwrt/openwrt/pull/20685
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 package/kernel/econet-eth/Makefile                 | 35 +++++++++
 target/linux/econet/dts/en751221.dtsi              | 87 ++++++++++++++++++++++
 target/linux/econet/dts/en751221_generic.dts       |  4 +
 target/linux/econet/dts/en751221_nokia_g240g-e.dts |  6 ++
 .../econet/dts/en751221_smartfiber_xp8421-b.dts    |  6 ++
 .../dts/en751221_tplink_archer-vr1200v-v2.dts      |  6 ++
 6 files changed, 144 insertions(+)

diff --git a/package/kernel/econet-eth/Makefile b/package/kernel/econet-eth/Makefile
new file mode 100644
index 0000000000..1de42b52f3
--- /dev/null
+++ b/package/kernel/econet-eth/Makefile
@@ -0,0 +1,35 @@
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=econet-eth
+PKG_RELEASE:=1
+
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=https://github.com/cjdelisle/econet_eth.git
+PKG_MIRROR_HASH:=764e18fe2f87cb0c742711c18ed995a2270b02f0072e7a0938906d0246287111
+PKG_SOURCE_DATE:=2025-11-07
+PKG_SOURCE_VERSION:=40aac736a46fec0d96beadd7513c53d1f0459737
+
+include $(INCLUDE_DIR)/kernel.mk
+include $(INCLUDE_DIR)/package.mk
+
+define KernelPackage/econet-eth
+  SUBMENU:=Network Devices
+  TITLE:=EcoNet EN751221 Ethernet Driver
+  DEPENDS:=@TARGET_econet
+  FILES:=$(PKG_BUILD_DIR)/econet-eth.ko
+  AUTOLOAD:=$(call AutoLoad,90,econet-eth)
+endef
+
+define KernelPackage/econet-eth/description
+  Out-of-tree ethernet driver for EcoNet EN751221 devices.
+endef
+
+define Build/Prepare
+	$(call Build/Prepare/Default)
+endef
+
+define Build/Compile
+	$(KERNEL_MAKE) M=$(PKG_BUILD_DIR) modules
+endef
+
+$(eval $(call KernelPackage,econet-eth))
diff --git a/target/linux/econet/dts/en751221.dtsi b/target/linux/econet/dts/en751221.dtsi
index d512d0425a..0a2448cd1c 100644
--- a/target/linux/econet/dts/en751221.dtsi
+++ b/target/linux/econet/dts/en751221.dtsi
@@ -56,6 +56,93 @@
 		econet,shadow-interrupts = <7 2>, <8 3>, <13 12>, <30 29>;
 	};
 
+	ethernet: ethernet at 1fb50000 {
+		compatible = "econet,en751221-eth";
+		reg = <0x1fb50000 0x10000>;
+
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		interrupt-parent = <&intc>;
+		interrupts = <21>, <22>;
+
+		gmac0: mac at 0 {
+			compatible = "econet,eth-mac";
+			reg = <0>;
+			phy-mode = "trgmii";
+			status = "disabled";
+
+			fixed-link {
+				speed = <1000>;
+				full-duplex;
+				pause;
+			};
+		};
+
+		gmac1: mac at 1 {
+			compatible = "econet,eth-mac";
+			reg = <1>;
+			status = "disabled";
+			phy-mode = "rgmii-rxid";
+		};
+
+		 mdio: mdio-bus {
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			switch0: switch at 1f {
+				compatible = "mediatek,mt7530";
+				#address-cells = <1>;
+				#size-cells = <0>;
+				reg = <0x1f>;
+				mediatek,mcm;
+				reset-names = "mcm";
+
+				ports {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <0>;
+
+					port at 0 {
+						status = "disabled";
+						reg = <0>;
+						label = "lan0";
+					};
+
+					port at 1 {
+						status = "disabled";
+						reg = <1>;
+						label = "lan1";
+					};
+
+					port at 2 {
+						status = "disabled";
+						reg = <2>;
+						label = "lan2";
+					};
+
+					port at 3 {
+						status = "disabled";
+						reg = <3>;
+						label = "lan3";
+					};
+
+					port at 6 {
+						reg = <6>;
+						label = "cpu";
+						ethernet = <&gmac0>;
+						phy-mode = "trgmii";
+
+						fixed-link {
+							speed = <1000>;
+							full-duplex;
+						};
+					};
+				};
+			};
+		};
+	};
+
     usb: usb at 1fb90000 {
             compatible = "mediatek,mt8173-xhci", "mediatek,mtk-xhci";
             reg = <0x1fb90000 0x4000>,
diff --git a/target/linux/econet/dts/en751221_generic.dts b/target/linux/econet/dts/en751221_generic.dts
index 375b9ebd3a..026f3e3739 100644
--- a/target/linux/econet/dts/en751221_generic.dts
+++ b/target/linux/econet/dts/en751221_generic.dts
@@ -50,3 +50,7 @@
 		};
 	};
 };
+
+&gmac0 {
+	status = "okay";
+};
diff --git a/target/linux/econet/dts/en751221_nokia_g240g-e.dts b/target/linux/econet/dts/en751221_nokia_g240g-e.dts
index bea569cdbc..68c314dbd9 100644
--- a/target/linux/econet/dts/en751221_nokia_g240g-e.dts
+++ b/target/linux/econet/dts/en751221_nokia_g240g-e.dts
@@ -123,3 +123,9 @@
 		};
 	};
 };
+
+&gmac0 {
+	status = "okay";
+	nvmem-cells = <&macaddr_ri_3e 0>;
+	nvmem-cell-names = "mac-address";
+};
diff --git a/target/linux/econet/dts/en751221_smartfiber_xp8421-b.dts b/target/linux/econet/dts/en751221_smartfiber_xp8421-b.dts
index 314c98fc5e..4599d34053 100644
--- a/target/linux/econet/dts/en751221_smartfiber_xp8421-b.dts
+++ b/target/linux/econet/dts/en751221_smartfiber_xp8421-b.dts
@@ -104,3 +104,9 @@
 		};
 	};
 };
+
+&gmac0 {
+	status = "okay";
+	nvmem-cells = <&macaddr_bootloader_ff48 0>;
+	nvmem-cell-names = "mac-address";
+};
diff --git a/target/linux/econet/dts/en751221_tplink_archer-vr1200v-v2.dts b/target/linux/econet/dts/en751221_tplink_archer-vr1200v-v2.dts
index 56dec97c27..2bc44d11cd 100644
--- a/target/linux/econet/dts/en751221_tplink_archer-vr1200v-v2.dts
+++ b/target/linux/econet/dts/en751221_tplink_archer-vr1200v-v2.dts
@@ -96,3 +96,9 @@
 		};
 	};
 };
+
+&gmac0 {
+	status = "okay";
+	nvmem-cells = <&macaddr_misc_8f100 0>;
+	nvmem-cell-names = "mac-address";
+};




More information about the lede-commits mailing list