Skip to content

Commit

Permalink
r8169: remove some code duplication.
Browse files Browse the repository at this point in the history
Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Cc: Realtek linux nic maintainers <nic_swsd@realtek.com>
  • Loading branch information
Francois Romieu committed May 9, 2011
1 parent cecb5fd commit 6f43adc
Showing 1 changed file with 19 additions and 23 deletions.
42 changes: 19 additions & 23 deletions drivers/net/r8169.c
Original file line number Diff line number Diff line change
Expand Up @@ -3224,6 +3224,22 @@ static void __devinit rtl_init_pll_power_ops(struct rtl8169_private *tp)
}
}

static void rtl_hw_reset(struct rtl8169_private *tp)
{
void __iomem *ioaddr = tp->mmio_addr;
int i;

/* Soft reset the chip. */
RTL_W8(ChipCmd, CmdReset);

/* Check that the chip has finished the reset. */
for (i = 0; i < 100; i++) {
if ((RTL_R8(ChipCmd) & CmdReset) == 0)
break;
msleep_interruptible(1);
}
}

static int __devinit
rtl8169_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
{
Expand Down Expand Up @@ -3323,22 +3339,15 @@ rtl8169_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
rc = -EIO;
goto err_out_free_res_3;
}
tp->mmio_addr = ioaddr;

tp->pcie_cap = pci_find_capability(pdev, PCI_CAP_ID_EXP);
if (!tp->pcie_cap)
netif_info(tp, probe, dev, "no PCI Express capability\n");

RTL_W16(IntrMask, 0x0000);

/* Soft reset the chip. */
RTL_W8(ChipCmd, CmdReset);

/* Check that the chip has finished the reset. */
for (i = 0; i < 100; i++) {
if ((RTL_R8(ChipCmd) & CmdReset) == 0)
break;
msleep_interruptible(1);
}
rtl_hw_reset(tp);

RTL_W16(IntrStatus, 0xffff);

Expand Down Expand Up @@ -3409,8 +3418,6 @@ rtl8169_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)

spin_lock_init(&tp->lock);

tp->mmio_addr = ioaddr;

/* Get MAC address */
for (i = 0; i < MAC_ADDR_LEN; i++)
dev->dev_addr[i] = RTL_R8(MAC0 + i);
Expand Down Expand Up @@ -3658,25 +3665,14 @@ static void rtl_set_rx_tx_config_registers(struct rtl8169_private *tp)
static void rtl_hw_start(struct net_device *dev)
{
struct rtl8169_private *tp = netdev_priv(dev);
void __iomem *ioaddr = tp->mmio_addr;
unsigned int i;

/* Soft reset the chip. */
RTL_W8(ChipCmd, CmdReset);

/* Check that the chip has finished the reset. */
for (i = 0; i < 100; i++) {
if ((RTL_R8(ChipCmd) & CmdReset) == 0)
break;
msleep_interruptible(1);
}
rtl_hw_reset(tp);

tp->hw_start(dev);

netif_start_queue(dev);
}


static void rtl_set_rx_tx_desc_registers(struct rtl8169_private *tp,
void __iomem *ioaddr)
{
Expand Down

0 comments on commit 6f43adc

Please sign in to comment.