]> err.no Git - linux-2.6/blobdiff - drivers/net/8139too.c
ide-pmac: move ide_find_port() call to pmac_ide_setup_device() (take 2)
[linux-2.6] / drivers / net / 8139too.c
index f62ac64e98fed4b7ff92d737cb0115a54ef562c6..8a5b0d293f7548dbcfaa0e6b9267c21a1d0cf4dc 100644 (file)
@@ -788,6 +788,7 @@ static int __devinit rtl8139_init_board (struct pci_dev *pdev,
        DPRINTK("PIO region size == 0x%02X\n", pio_len);
        DPRINTK("MMIO region size == 0x%02lX\n", mmio_len);
 
+retry:
        if (use_io) {
                /* make sure PCI base addr 0 is PIO */
                if (!(pio_flags & IORESOURCE_IO)) {
@@ -836,9 +837,10 @@ static int __devinit rtl8139_init_board (struct pci_dev *pdev,
                /* ioremap MMIO region */
                ioaddr = pci_iomap(pdev, 1, 0);
                if (ioaddr == NULL) {
-                       dev_err(&pdev->dev, "cannot remap MMIO, aborting\n");
-                       rc = -EIO;
-                       goto err_out;
+                       dev_err(&pdev->dev, "cannot remap MMIO, trying PIO\n");
+                       pci_release_regions(pdev);
+                       use_io = 1;
+                       goto retry;
                }
                dev->base_addr = (long) ioaddr;
                tp->regs_len = mmio_len;