Re: DP83867 ethernet PHY regression

From: Johannes Pointner
Date: Thu May 25 2023 - 02:31:18 EST


On Wed, May 24, 2023 at 3:22 PM Bagas Sanjaya <bagasdotme@xxxxxxxxx> wrote:
>
> On Mon, May 22, 2023 at 04:58:46PM +0200, Francesco Dolcini wrote:
> > Hello all,
> > commit da9ef50f545f ("net: phy: dp83867: perform soft reset and retain
> > established link") introduces a regression on my TI AM62 based board.
> >
> > I have a working DTS with Linux TI 5.10 downstream kernel branch, while
> > testing the DTS with v6.4-rc in preparation of sending it to the mailing
> > list I noticed that ethernet is working only on a cold poweron.
> >
> > With da9ef50f545f reverted it always works.
> >
> > Here the DTS snippet for reference:
> >
> > &cpsw_port1 {
> > phy-handle = <&cpsw3g_phy0>;
> > phy-mode = "rgmii-rxid";
> > };
> >
> > &cpsw3g_mdio {
> > assigned-clocks = <&k3_clks 157 20>;
> > assigned-clock-parents = <&k3_clks 157 22>;
> > assigned-clock-rates = <25000000>;
> >
> > cpsw3g_phy0: ethernet-phy@0 {
> > compatible = "ethernet-phy-id2000.a231";
> > reg = <0>;
> > interrupt-parent = <&main_gpio0>;
> > interrupts = <25 IRQ_TYPE_EDGE_FALLING>;
> > reset-gpios = <&main_gpio0 17 GPIO_ACTIVE_LOW>;
> > reset-assert-us = <10>;
> > reset-deassert-us = <1000>;
> > ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
> > ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
> > };
> > };
> >
>
> Thanks for the regression report. I'm adding it to regzbot:
>
> #regzbot ^introduced: da9ef50f545f86
> #regzbot title: TI AM62 DTS regression due to dp83867 soft reset

Hello Francesco,

I had a similar issue with a patch like this, but in my case it was the DP83822.
https://lore.kernel.org/netdev/CAHvQdo2yzJC89K74c_CZFjPydDQ5i22w36XPR5tKVv_W8a2vcg@xxxxxxxxxxxxxx/
I also raised the question for the commit da9ef50f545f.
https://lore.kernel.org/lkml/CAHvQdo1U_L=pETmTJXjdzO+k7vNTxMyujn99Y3Ot9xAyQu=atQ@xxxxxxxxxxxxxx/

The problem was/is for me that the phy gets the clock from the CPU and
the phy is already initialized in the u-boot.
During the Linux kernel boot up there is a short amount of time where
no clock is delivered to the phy.
The phy didn't like this and was most of the time not usable anymore.
The only thing that brought the phy/link back was resetting the phy
using the phytool.

Regards,
Hannes