--- src/pcnet.c | 14 ++++++++++---- 1 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/pcnet.c b/src/pcnet.c index 2372ec3..5b3d889 100644 --- a/src/pcnet.c +++ b/src/pcnet.c @@ -182,13 +182,18 @@ static unsigned long pcnet_dummy_bcr_read32(void __iomem *ioaddr, return ioread32(ioaddr + PCNET_IO32_BDP) & 0xffff; } -/* resets the controller and switches to 32bit mode */ -static int pcnet_dummy_reset(void __iomem *ioaddr) +static void pcnet_dummy_reset(void __iomem *ioaddr) { - int err = 0; ioread16(ioaddr + PCNET_IO_RESET); if (pcnet_dummy_csr_read16(ioaddr, CSR0) != CSR0_STOP) ioread32(ioaddr + PCNET_IO32_RESET); +} + +static int pcnet_dummy_switch_dword_mode(void __iomem *ioaddr) +{ + int err = 0; + + pcnet_dummy_reset(ioaddr); iowrite32(0, ioaddr + PCNET_IO_RDP); if (!(pcnet_dummy_bcr_read32(ioaddr, BCR18) & BCR18_DWIO)) { printk(KERN_ERR DRV_NAME ": cannot switch controller to 32bit mode\n"); @@ -286,7 +291,7 @@ static int __devinit pcnet_dummy_init_one(struct pci_dev *pdev, goto out_res; pci_set_drvdata(pdev, ndev); - if (pcnet_dummy_reset(ioaddr)) + if (pcnet_dummy_switch_dword_mode(ioaddr)) goto out_res_unmap; if (pcnet_dummy_init_netdev(pdev, (unsigned long)ioaddr)) @@ -311,6 +316,7 @@ static void __devexit pcnet_dummy_remove_one(struct pci_dev *pdev) struct pcnet_dummy_private *pp; pp = netdev_priv(ndev); + pcnet_dummy_reset(pp->base); pci_iounmap(pdev, pp->base); free_netdev(ndev); pci_disable_device(pdev); -- 1.7.5.rc3