Subject: Re: [PATCH net] net: phy: micrel: set soft_reset callback to genphy_soft_reset for KSZ9031

From: Tony Lindgren <[email-masked]>
Date: Thu, 10 Jan 2019 13:27:09 -0800

* Heiner Kallweit <[email-masked]> [190110 19:41]:
> On 10.01.2019 20:24, Florian Fainelli wrote:
> > On 1/10/19 11:22 AM, Heiner Kallweit wrote:
> >> So far genphy_soft_reset was used automatically if the PHY driver
> >> didn't implement the soft_reset callback. This changed with the
> >> mentioned commit and broke KSZ9031. To fix this configure the
> >> KSZ9031 PHY driver to use genphy_soft_reset.
> >>
> >> Fixes: 6e2d85ec0559 ("net: phy: Stop with excessive soft reset")
> >> Reported-by: Tony Lindgren <[email-masked]>
> >> Signed-off-by: Heiner Kallweit <[email-masked]>
> > 
> > Thanks a lot for following up with the people at TI on this. We should
> > really get a better understanding of what the issue is, and whether
> > there is a possibly better workaround that could be developed which is
> > not just as hard as a big hammer software reset. Maybe we can get some
> > people/contacts at Micrel to help here.
> > 
> In ksz9031_config_init() quite some settings are done and IMO it's not
> that unusual that it takes a soft reset for such settings to become
> effective. But I agree it would be nice if somebody from the PHY vendor
> could comment on whether a soft reset is actually needed. Not sure who
> has a contact to Microchip.

Adding Sekhar to Cc, maybe he has some contacts to ask.

> If the feedback takes time it may be better to apply the soft reset as
> fix and replace it later in case we have a less intrusive option.

Yes please let's fix the regression first and then patch
more later as needed.

Regards,

Tony

> >> ---
> >>  drivers/net/phy/micrel.c | 1 +
> >>  1 file changed, 1 insertion(+)
> >>
> >> diff --git a/drivers/net/phy/micrel.c b/drivers/net/phy/micrel.c
> >> index c33384710..7828d17f0 100644
> >> --- a/drivers/net/phy/micrel.c
> >> +++ b/drivers/net/phy/micrel.c
> >> @@ -1070,6 +1070,7 @@ static struct phy_driver ksphy_driver[] = {
> >>  	.driver_data	= &ksz9021_type,
> >>  	.probe		= kszphy_probe,
> >>  	.config_init	= ksz9031_config_init,
> >> +	.soft_reset	= genphy_soft_reset,
> >>  	.read_status	= ksz9031_read_status,
> >>  	.ack_interrupt	= kszphy_ack_interrupt,
> >>  	.config_intr	= kszphy_config_intr,
> >>
> > 
> > 
>