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 <laurentba...@eaton.com>
---
 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 

-----------------------------

Reply via email to