[U-Boot] [PATCH v2] apalis_imx6: increase phy autoneg timeout

Philippe Schenker dev at pschenker.ch
Thu Jun 27 12:17:53 UTC 2019


On Thu, 2019-06-27 at 14:03 +0200, Stefano Babic wrote:
> Hi Igor,
> 
> On 24/06/19 10:39, Igor Opaniuk wrote:
> > From: Igor Opaniuk <igor.opaniuk at toradex.com>
> > 
> > Default value (4000ms) of PHY_ANEG_TIMEOUT for Micrel KSZ9031 contoller
> > isn't sufficient to finish auto-negotiation, which sometimes leads to
> > timeout errors:
> > 
> > Apalis iMX6 # dhcp
> > FEC Waiting for PHY auto negotiation to complete......... TIMEOUT !
> > 
> > Increase the auto-negotiation time-out to 15000ms.
> > 
> 
> I have no problems to merge this, it is your board. But this seems just
> hide the issue. 15 seconds for autonegotiation timeout is just a
> work-around. This means that the autonegotiation fails several times and
> (maybe with some switches) it has a bigger probability to succeed if we
> increase the timeout, that is the phy tries more time to set up the link.
> 
> Best regards,
> Stefano Babic

Hi Stefano,

I know that 15s for this timeout is huge. But I tried a lot of things with this
PHY and had contact with Microchip about this with no outcome. We did some
improvements on the clock side that got things better.
To mention here is that the KSZ9031 is also not compliant with IEEE802.3 in
gigabit-mode. I suspect that the gigabit-part of that phy is just 'broken'. I
also compared the same switches I tried to other boards like Beagle-X15, they
have the same long aneg-times so I basically gave up on this and see this now as
is.

Good news is that Microchip has a follow-up phy, the KSZ9131. We've tried it and
it looks much better and also faster with autonegotiation. 

We could also limit speed of the phy to 100Mbps, there autonegotiation is much
faster, but this solution also hides just our problem. That's why we decided for
that time-out.

Best regards,
Philippe

> 
> > Signed-off-by: Igor Opaniuk <igor.opaniuk at toradex.com>
> > ---
> > 
> > v2:
> > - Based on empirical results from Philippe Schenker, increased timeout
> >   value to 15s, just to be on the safe side
> > 
> >  include/configs/apalis_imx6.h | 1 +
> >  1 file changed, 1 insertion(+)
> > 
> > diff --git a/include/configs/apalis_imx6.h b/include/configs/apalis_imx6.h
> > index 4b0a3fb26b..df31cf6fe7 100644
> > --- a/include/configs/apalis_imx6.h
> > +++ b/include/configs/apalis_imx6.h
> > @@ -58,6 +58,7 @@
> >  #define IMX_FEC_BASE			ENET_BASE_ADDR
> >  #define CONFIG_FEC_XCV_TYPE		RGMII
> >  #define CONFIG_ETHPRIME			"FEC"
> > +#define PHY_ANEG_TIMEOUT		15000 /* PHY needs longer aneg time */
> >  #define CONFIG_FEC_MXC_PHYADDR		6
> >  #define CONFIG_TFTP_TSIZE
> >  
> > 
> 
> 



More information about the U-Boot mailing list