[U-Boot] [PATCH] net: phy: marvell: Fix up reset ordering

Michal Simek michal.simek at xilinx.com
Thu Jun 2 07:31:56 CEST 2016


Hi Nathan,

On 1.6.2016 18:22, Nathan Rossi wrote:
> Commit a058052c "net: phy: do not read configuration register on reset",
> changes the behaviour of the phy_reset function such that the state of
> the BMCR register is not preserved during reset.
> 
> Reorder the phy_reset and genphy_config_aneg calls for some of the
> marvell phy drivers so that auto-negotiation occurs after reset.
> 
> Signed-off-by: Nathan Rossi <nathan at nathanrossi.com>
> Cc: Joe Hershberger <joe.hershberger at ni.com>
> Cc: Michal Simek <michal.simek at xilinx.com>
> Cc: Stefan Roese <sr at denx.de>
> ---
>  drivers/net/phy/marvell.c | 11 ++++++-----
>  1 file changed, 6 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/net/phy/marvell.c b/drivers/net/phy/marvell.c
> index d2e68d4..40284a5 100644
> --- a/drivers/net/phy/marvell.c
> +++ b/drivers/net/phy/marvell.c
> @@ -414,10 +414,10 @@ static int m88e1145_config(struct phy_device *phydev)
>  			MIIM_M88E1145_RGMII_TX_DELAY;
>  	phy_write(phydev, MDIO_DEVAD_NONE, MIIM_88E1145_PHY_EXT_CR, reg);
>  
> -	genphy_config_aneg(phydev);
> -
>  	phy_reset(phydev);
>  
> +	genphy_config_aneg(phydev);
> +

As you see from my patch
1b008fdb06848c7c84e7c1a4a9b2b76239550555
you should return value from genphy_config_aneg() which should be fixed
everywhere.

Also as you see above you do some writes to the phy and the question is
if you should run phy_reset here.
Based on my patch above and investigating I found that phy_reset is
called before this function is called and not sure if phy should be
reset twice.

Thanks,
Michal


More information about the U-Boot mailing list