diff --git a/target/linux/omap/patches/900-use-cpsw-ethernet-driver.patch b/target/linux/omap/patches/900-use-cpsw-ethernet-driver.patch new file mode 100644 index 00000000000..17c07fbdfba --- /dev/null +++ b/target/linux/omap/patches/900-use-cpsw-ethernet-driver.patch @@ -0,0 +1,93 @@ +From: Jan Hoffmann +Date: Sat, 27 Apr 2024 20:41:43 +0200 +Subject: ARM: dts: Use cpsw ethernet driver for some am335x devices + +The new cpsw-switch driver requires a vid for every port which is +reserved for internal usage (defaulting to 1 and 2). As a result, some +network configurations are impossible, such as a bridge with +default_pvid of 1 (even if it is not vlan aware). + +As a simple workaround, the ti,dual-emac-pvid property could be changed +to another value, but that would just shift the problem. Instead, switch +some devices back to the older cpsw ethernet driver. + +(This patch is not suitable for upstreaming, it just makes the affected +devices in OpenWrt usable again with the default network config.) + +Signed-off-by: Jan Hoffmann +--- + +--- a/arch/arm/boot/dts/am335x-bone-common.dtsi ++++ b/arch/arm/boot/dts/am335x-bone-common.dtsi +@@ -353,27 +353,24 @@ + }; + }; + +-&cpsw_port1 { ++&cpsw_emac0 { + phy-handle = <ðphy0>; + phy-mode = "mii"; +- ti,dual-emac-pvid = <1>; + }; + +-&cpsw_port2 { +- status = "disabled"; +-}; +- +-&mac_sw { ++&mac { ++ slaves = <1>; + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&cpsw_default>; + pinctrl-1 = <&cpsw_sleep>; + status = "okay"; + }; + +-&davinci_mdio_sw { ++&davinci_mdio { + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&davinci_mdio_default>; + pinctrl-1 = <&davinci_mdio_sleep>; ++ status = "okay"; + + ethphy0: ethernet-phy@0 { + reg = <0>; +--- a/arch/arm/boot/dts/am335x-evm.dts ++++ b/arch/arm/boot/dts/am335x-evm.dts +@@ -682,31 +682,28 @@ + }; + }; + +-&mac_sw { ++&mac { ++ slaves = <1>; + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&cpsw_default>; + pinctrl-1 = <&cpsw_sleep>; + status = "okay"; + }; + +-&davinci_mdio_sw { ++&davinci_mdio { + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&davinci_mdio_default>; + pinctrl-1 = <&davinci_mdio_sleep>; ++ status = "okay"; + + ethphy0: ethernet-phy@0 { + reg = <0>; + }; + }; + +-&cpsw_port1 { ++&cpsw_emac0 { + phy-handle = <ðphy0>; + phy-mode = "rgmii-id"; +- ti,dual-emac-pvid = <1>; +-}; +- +-&cpsw_port2 { +- status = "disabled"; + }; + + &tscadc {