From 7b5e5d6349c7cbbcb53d733b7145b5d4d49174f6 Mon Sep 17 00:00:00 2001 From: Florian Fainelli Date: Wed, 11 Apr 2012 07:18:36 +0000 Subject: [PATCH] --- yaml --- r: 300599 b: refs/heads/master c: 90f750a81a29587846e907d2c8ed60a0586ce632 h: refs/heads/master i: 300597: 4f7ece8e6985f6825ad3177aa2f049b199468cb5 300595: 77b78028f12df6b64687fecfc4767a2f63632ae5 300591: 901e2b88e348412c1bc471ebd09d3b18ed6b3e69 v: v3 --- [refs] | 2 +- trunk/drivers/net/ethernet/rdc/r6040.c | 37 +++++++++++++------------- 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/[refs] b/[refs] index b8e0cc94d773..639e78eac9ed 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c1e6aaf0ab0150d625dc266721c033db8b43e49d +refs/heads/master: 90f750a81a29587846e907d2c8ed60a0586ce632 diff --git a/trunk/drivers/net/ethernet/rdc/r6040.c b/trunk/drivers/net/ethernet/rdc/r6040.c index a26307fe143e..c10b0b89626b 100644 --- a/trunk/drivers/net/ethernet/rdc/r6040.c +++ b/trunk/drivers/net/ethernet/rdc/r6040.c @@ -358,27 +358,35 @@ static int r6040_alloc_rxbufs(struct net_device *dev) return rc; } -static void r6040_init_mac_regs(struct net_device *dev) +static void r6040_reset_mac(struct r6040_private *lp) { - struct r6040_private *lp = netdev_priv(dev); void __iomem *ioaddr = lp->base; int limit = 2048; u16 cmd; - /* Mask Off Interrupt */ - iowrite16(MSK_INT, ioaddr + MIER); - - /* Reset RDC MAC */ iowrite16(MAC_RST, ioaddr + MCR1); while (limit--) { cmd = ioread16(ioaddr + MCR1); if (cmd & MAC_RST) break; } + /* Reset internal state machine */ iowrite16(MAC_SM_RST, ioaddr + MAC_SM); iowrite16(0, ioaddr + MAC_SM); mdelay(5); +} + +static void r6040_init_mac_regs(struct net_device *dev) +{ + struct r6040_private *lp = netdev_priv(dev); + void __iomem *ioaddr = lp->base; + + /* Mask Off Interrupt */ + iowrite16(MSK_INT, ioaddr + MIER); + + /* Reset RDC MAC */ + r6040_reset_mac(lp); /* MAC Bus Control Register */ iowrite16(MBCR_DEFAULT, ioaddr + MBCR); @@ -445,18 +453,13 @@ static void r6040_down(struct net_device *dev) { struct r6040_private *lp = netdev_priv(dev); void __iomem *ioaddr = lp->base; - int limit = 2048; u16 *adrp; - u16 cmd; /* Stop MAC */ iowrite16(MSK_INT, ioaddr + MIER); /* Mask Off Interrupt */ - iowrite16(MAC_RST, ioaddr + MCR1); /* Reset RDC MAC */ - while (limit--) { - cmd = ioread16(ioaddr + MCR1); - if (cmd & MAC_RST) - break; - } + + /* Reset RDC MAC */ + r6040_reset_mac(lp); /* Restore MAC Address to MIDx */ adrp = (u16 *) dev->dev_addr; @@ -736,11 +739,7 @@ static void r6040_mac_address(struct net_device *dev) u16 *adrp; /* Reset MAC */ - iowrite16(MAC_RST, ioaddr + MCR1); - /* Reset internal state machine */ - iowrite16(MAC_SM_RST, ioaddr + MAC_SM); - iowrite16(0, ioaddr + MAC_SM); - mdelay(5); + r6040_reset_mac(lp); /* Restore MAC Address */ adrp = (u16 *) dev->dev_addr;