diff mbox series

arm64: dts: ti: k3-am625-beagleplay: Use the builtin mdio bus

Message ID 20240112124505.2054212-1-sjoerd@collabora.com
State Accepted
Commit 3c3f2d13d3c8e748ebdebfc6d8a72024240227e9
Headers show
Series arm64: dts: ti: k3-am625-beagleplay: Use the builtin mdio bus | expand

Commit Message

Sjoerd Simons Jan. 12, 2024, 12:44 p.m. UTC
The beagleplay dts was using a bit-bang gpio mdio bus as a work-around
for errata i2329. However since commit d04807b80691 ("net: ethernet: ti:
davinci_mdio: Add workaround for errata i2329") the mdio driver itself
already takes care of this errata for effected silicon, which landed
well before the beagleplay dts. So i suspect the reason for the
workaround in upstream was simply due to copying the vendor dts.

Switch the dts to the ti,cpsw-mdio instead so it described the actual
hardware and is consistent with other AM625 based boards

Signed-off-by: Sjoerd Simons <sjoerd@collabora.com>

---

 .../arm64/boot/dts/ti/k3-am625-beagleplay.dts | 42 +++++++------------
 1 file changed, 16 insertions(+), 26 deletions(-)

Comments

Sjoerd Simons Jan. 15, 2024, 9:58 a.m. UTC | #1
On Fri, 2024-01-12 at 08:25 -0600, Nishanth Menon wrote:
> On 15:20-20240112, Sjoerd Simons wrote:
> > On Fri, 2024-01-12 at 07:50 -0600, Nishanth Menon wrote:
> > > On 13:44-20240112, Sjoerd Simons wrote:
> > > > The beagleplay dts was using a bit-bang gpio mdio bus as a
> > > > work-
> > > > around
> > > > for errata i2329. However since commit d04807b80691 ("net:
> > > > ethernet: ti:
> > > > davinci_mdio: Add workaround for errata i2329") the mdio driver
> > > > itself
> > > > already takes care of this errata for effected silicon, which
> > > > landed
> > > > well before the beagleplay dts. So i suspect the reason for the
> > > > workaround in upstream was simply due to copying the vendor
> > > > dts.
> > > > 
> > > > Switch the dts to the ti,cpsw-mdio instead so it described the
> > > > actual
> > > > hardware and is consistent with other AM625 based boards
> > > > 
> > > > Signed-off-by: Sjoerd Simons <sjoerd@collabora.com>
> > > > 
> > > > ---
> > > 
> > > We have had issues with the ethernet integration previously (also
> > > why
> > > ethernet in u-boot is not yet functional on beagleplay[1]).
> > > 
> > > https://openbeagle.org/beagleplay/beagleplay/-/issues/101
> > > 
> > > we should probably do a 1000 boot nfs test or something to ensure
> > > this
> > > doesn't introduce regressions (I recollect mdio wasn't stable on
> > > beagleplay) and switching to bitbang driver stopped all
> > > complains.
> > 
> > I can do a longer test with that over the weekend sure; For
> > reference
> > I'm seeing issues in u-boot as well on initial probe with these
> > changes, but i've not seen the same on the linux side.
> > 
> > Do you remember with what kernel versions users saw the mdio
> > instabilities? I wonder if that was a version with the commit
> > mentioned
> > that includes the errata fix for the mdio driver.
> > 
> 
> we were on TI 5.10 kernel (the image that went into production) and
> it
> did have errata fix (I am not sure if it is similar or same as what
> finally went into upstream now).. I have started an automated
> multiple
> boot test on my end as well..
> 
> The signature as I recollect was spurious link Down and Up logs
> (though the cable is not physically disconnected).. been a bit of
> time.. so my memory on exact signature might be vague.

For reference over the weekend our test infra did over 1600 boots with
an NFS root fs (see [0] for an example job) without a single boot
failure. So with the upstream kernel this seems pretty solid.


0: https://staging.lava.collabora.dev/scheduler/job/572063
Roger Quadros Jan. 15, 2024, 11:16 a.m. UTC | #2
On 12/01/2024 14:44, Sjoerd Simons wrote:
> The beagleplay dts was using a bit-bang gpio mdio bus as a work-around
> for errata i2329. However since commit d04807b80691 ("net: ethernet: ti:
> davinci_mdio: Add workaround for errata i2329") the mdio driver itself
> already takes care of this errata for effected silicon, which landed
> well before the beagleplay dts. So i suspect the reason for the
> workaround in upstream was simply due to copying the vendor dts.
> 
> Switch the dts to the ti,cpsw-mdio instead so it described the actual
> hardware and is consistent with other AM625 based boards
> 
> Signed-off-by: Sjoerd Simons <sjoerd@collabora.com>

Reviewed-by: Roger Quadros <rogerq@kernel.org>
diff mbox series

Patch

diff --git a/arch/arm64/boot/dts/ti/k3-am625-beagleplay.dts b/arch/arm64/boot/dts/ti/k3-am625-beagleplay.dts
index eadbdd9ffe37..49fb21ba62b0 100644
--- a/arch/arm64/boot/dts/ti/k3-am625-beagleplay.dts
+++ b/arch/arm64/boot/dts/ti/k3-am625-beagleplay.dts
@@ -29,7 +29,6 @@  aliases {
 		i2c3 = &main_i2c3;
 		i2c4 = &wkup_i2c0;
 		i2c5 = &mcu_i2c0;
-		mdio-gpio0 = &mdio0;
 		mmc0 = &sdhci0;
 		mmc1 = &sdhci1;
 		mmc2 = &sdhci2;
@@ -231,27 +230,6 @@  simple-audio-card,codec {
 		};
 	};
 
-	/* Workaround for errata i2329 - just use mdio bitbang */
-	mdio0: mdio {
-		compatible = "virtual,mdio-gpio";
-		pinctrl-names = "default";
-		pinctrl-0 = <&mdio0_pins_default>;
-		gpios = <&main_gpio0 86 GPIO_ACTIVE_HIGH>, /* MDC */
-			<&main_gpio0 85 GPIO_ACTIVE_HIGH>; /* MDIO */
-		#address-cells = <1>;
-		#size-cells = <0>;
-
-		cpsw3g_phy0: ethernet-phy@0 {
-			reg = <0>;
-		};
-
-		cpsw3g_phy1: ethernet-phy@1 {
-			reg = <1>;
-			reset-gpios = <&main_gpio1 5 GPIO_ACTIVE_LOW>;
-			reset-assert-us = <25>;
-			reset-deassert-us = <60000>; /* T2 */
-		};
-	};
 };
 
 &main_pmx0 {
@@ -312,8 +290,8 @@  AM62X_IOPAD(0x00b4, PIN_INPUT_PULLUP, 1) /* (K24) GPMC0_CSn3.I2C2_SDA */
 
 	mdio0_pins_default: mdio0-default-pins {
 		pinctrl-single,pins = <
-			AM62X_IOPAD(0x0160, PIN_OUTPUT, 7) /* (AD24) MDIO0_MDC.GPIO0_86 */
-			AM62X_IOPAD(0x015c, PIN_INPUT, 7) /* (AB22) MDIO0_MDIO.GPIO0_85 */
+			AM62X_IOPAD(0x0160, PIN_OUTPUT, 0) /* (AD24) MDIO0_MDC */
+			AM62X_IOPAD(0x015c, PIN_INPUT, 0) /* (AB22) MDIO0_MDIO */
 		>;
 	};
 
@@ -611,8 +589,20 @@  &cpsw_port2 {
 };
 
 &cpsw3g_mdio {
-	/* Workaround for errata i2329 - Use mdio bitbang */
-	status = "disabled";
+	status = "okay";
+	pinctrl-names = "default";
+	pinctrl-0 = <&mdio0_pins_default>;
+
+	cpsw3g_phy0: ethernet-phy@0 {
+		reg = <0>;
+	};
+
+	cpsw3g_phy1: ethernet-phy@1 {
+		reg = <1>;
+		reset-gpios = <&main_gpio1 5 GPIO_ACTIVE_LOW>;
+		reset-assert-us = <25>;
+		reset-deassert-us = <60000>; /* T2 */
+	};
 };
 
 &main_gpio0 {