]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
net: rtl8139: Factor out hardware reset
authorMarek Vasut <marek.vasut+renesas@gmail.com>
Sun, 12 Apr 2020 20:58:27 +0000 (22:58 +0200)
committermarex <marex@desktop.lan>
Fri, 1 May 2020 10:35:21 +0000 (12:35 +0200)
This hardware reset and reset-wait implementation was twice in the
driver, factor it out into a separate function. This really should
use wait_for_bit() eventually and return -ETIMEDOUT, but thus far,
handling of any of this is missing from the driver. This must be
added later. Thus far, no functional change.

Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com>
Cc: Joe Hershberger <joe.hershberger@ni.com>
drivers/net/rtl8139.c

index 6aed7bd8957fcfb1c161f12545665f6c40fbe2b5..68ef9eea2503290cec5b9c65ffa78a39fa268d52 100644 (file)
@@ -370,16 +370,13 @@ static void rtl8139_set_rx_mode(struct eth_device *dev)
        outl(0xffffffff, ioaddr + RTL_REG_MAR0 + 4);
 }
 
-static void rtl8139_reset(struct eth_device *dev)
+static void rtl8139_hw_reset(struct eth_device *dev)
 {
        u8 reg;
        int i;
 
        outb(RTL_REG_CHIPCMD_CMDRESET, ioaddr + RTL_REG_CHIPCMD);
 
-       cur_rx = 0;
-       cur_tx = 0;
-
        /* Give the chip 10ms to finish the reset. */
        for (i = 0; i < 100; i++) {
                reg = inb(ioaddr + RTL_REG_CHIPCMD);
@@ -388,7 +385,16 @@ static void rtl8139_reset(struct eth_device *dev)
 
                udelay(100);
        }
+}
+
+static void rtl8139_reset(struct eth_device *dev)
+{
+       int i;
+
+       cur_rx = 0;
+       cur_tx = 0;
 
+       rtl8139_hw_reset(dev);
 
        for (i = 0; i < ETH_ALEN; i++)
                outb(dev->enetaddr[i], ioaddr + RTL_REG_MAC0 + i);
@@ -570,19 +576,7 @@ static int rtl8139_recv(struct eth_device *dev)
 
 static void rtl8139_stop(struct eth_device *dev)
 {
-       u8 reg;
-       int i;
-
        ioaddr = dev->iobase;
 
-       /* reset the chip */
-       outb(RTL_REG_CHIPCMD_CMDRESET, ioaddr + RTL_REG_CHIPCMD);
-
-       /* Give the chip 10ms to finish the reset. */
-       for (i = 0; i < 100; i++) {
-               reg = inb(ioaddr + RTL_REG_CHIPCMD);
-               if (!(reg & RTL_REG_CHIPCMD_CMDRESET))
-                       break;
-               udelay (100); /* wait 100us */
-       }
+       rtl8139_hw_reset(dev);
 }