Merge branch 'fec-next'
authorDavid S. Miller <davem@davemloft.net>
Thu, 11 Dec 2014 04:37:06 +0000 (23:37 -0500)
committerDavid S. Miller <davem@davemloft.net>
Thu, 11 Dec 2014 04:37:06 +0000 (23:37 -0500)
Fugang Duan says:

====================
net: fec: driver code clean and bug fix

The patch serial include code clean and bug fix:
Patch#1: avoid dummy operation during suspend/resume test.
Patch#2: bug fix for i.MX6SX SOC that clean all interrupt events during MAC initial process.
Patch#3: before phy device link status is up, only enable MDIO bus interrupt.

V2:
- Modify the comment form from David's suggestion.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/freescale/fec_main.c

index fee2afe..8c5b15e 100644 (file)
@@ -940,7 +940,7 @@ fec_restart(struct net_device *ndev)
        }
 
        /* Clear any outstanding interrupt. */
-       writel(0xffc00000, fep->hwp + FEC_IEVENT);
+       writel(0xffffffff, fep->hwp + FEC_IEVENT);
 
        fec_enet_bd_init(ndev);
 
@@ -1075,7 +1075,10 @@ fec_restart(struct net_device *ndev)
                fec_ptp_start_cyclecounter(ndev);
 
        /* Enable interrupts we wish to service */
-       writel(FEC_DEFAULT_IMASK, fep->hwp + FEC_IMASK);
+       if (fep->link)
+               writel(FEC_DEFAULT_IMASK, fep->hwp + FEC_IMASK);
+       else
+               writel(FEC_ENET_MII, fep->hwp + FEC_IMASK);
 
        /* Init the interrupt coalescing */
        fec_enet_itr_coal_init(ndev);
@@ -3332,6 +3335,12 @@ static int __maybe_unused fec_suspend(struct device *dev)
        if (fep->reg_phy)
                regulator_disable(fep->reg_phy);
 
+       /* SOC supply clock to phy, when clock is disabled, phy link down
+        * SOC control phy regulator, when regulator is disabled, phy link down
+        */
+       if (fep->clk_enet_out || fep->reg_phy)
+               fep->link = 0;
+
        return 0;
 }