PHY reset from the FEC driver is not needed if PHY chip is kept in reset after PHY driver probe, so remove phy_reset_after_clk_enable() and related code from fec_main.c. Signed-off-by: Laurent Badel <laurentbadel@xxxxxxxxx> --- drivers/net/ethernet/freescale/fec_main.c | 40 ----------------------- 1 file changed, 40 deletions(-) diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c index 04f24c66cf36..c9401c758364 100644 --- a/drivers/net/ethernet/freescale/fec_main.c +++ b/drivers/net/ethernet/freescale/fec_main.c @@ -1911,27 +1911,6 @@ static int fec_enet_mdio_write(struct mii_bus *bus, int mii_id, int regnum, return ret; } -static void fec_enet_phy_reset_after_clk_enable(struct net_device *ndev) -{ - struct fec_enet_private *fep = netdev_priv(ndev); - struct phy_device *phy_dev = ndev->phydev; - - if (phy_dev) { - phy_reset_after_clk_enable(phy_dev); - } else if (fep->phy_node) { - /* - * If the PHY still is not bound to the MAC, but there is - * OF PHY node and a matching PHY device instance already, - * use the OF PHY node to obtain the PHY device instance, - * and then use that PHY device instance when triggering - * the PHY reset. - */ - phy_dev = of_phy_find_device(fep->phy_node); - phy_reset_after_clk_enable(phy_dev); - put_device(&phy_dev->mdio.dev); - } -} - static int fec_enet_clk_enable(struct net_device *ndev, bool enable) { struct fec_enet_private *fep = netdev_priv(ndev); @@ -1958,7 +1937,6 @@ static int fec_enet_clk_enable(struct net_device *ndev, bool enable) if (ret) goto failed_clk_ref; - fec_enet_phy_reset_after_clk_enable(ndev); } else { clk_disable_unprepare(fep->clk_enet_out); if (fep->clk_ptp) { @@ -2972,7 +2950,6 @@ fec_enet_open(struct net_device *ndev) { struct fec_enet_private *fep = netdev_priv(ndev); int ret; - bool reset_again; ret = pm_runtime_resume_and_get(&fep->pdev->dev); if (ret < 0) @@ -2983,17 +2960,6 @@ fec_enet_open(struct net_device *ndev) if (ret) goto clk_enable; - /* During the first fec_enet_open call the PHY isn't probed at this - * point. Therefore the phy_reset_after_clk_enable() call within - * fec_enet_clk_enable() fails. As we need this reset in order to be - * sure the PHY is working correctly we check if we need to reset again - * later when the PHY is probed - */ - if (ndev->phydev && ndev->phydev->drv) - reset_again = false; - else - reset_again = true; - /* I should reset the ring buffers here, but I don't yet know * a simple way to do that. */ @@ -3005,12 +2971,6 @@ fec_enet_open(struct net_device *ndev) /* Init MAC prior to mii bus probe */ fec_restart(ndev); - /* Call phy_reset_after_clk_enable() again if it failed during - * phy_reset_after_clk_enable() before because the PHY wasn't probed. - */ - if (reset_again) - fec_enet_phy_reset_after_clk_enable(ndev); - /* Probe and connect to PHY when open the interface */ ret = fec_enet_mii_probe(ndev); if (ret) -- 2.17.1 ----------------------------- Eaton Industries Manufacturing GmbH ~ Registered place of business: Route de la Longeraie 7, 1110, Morges, Switzerland -----------------------------