tty: isicom, enable/disable pci device
authorJiri Slaby <jirislaby@gmail.com>
Wed, 16 Jul 2008 20:52:56 +0000 (21:52 +0100)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 21 Jul 2008 00:12:34 +0000 (17:12 -0700)
Don't forget to enable and disable PCI devices.  The device might be
unusable without that.

Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Alan Cox <alan@lxorguk.ukuu.org.uk>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/char/isicom.c

index 4f3cefa8eb0e28cd0632983e66cebc63e5bb82ae..a1a67e3d52cc32d6a85c914bd9776e74ca76133c 100644 (file)
@@ -1736,6 +1736,12 @@ static int __devinit isicom_probe(struct pci_dev *pdev,
        if (card_count >= BOARD_COUNT)
                goto err;
 
+       retval = pci_enable_device(pdev);
+       if (retval) {
+               dev_err(&pdev->dev, "failed to enable\n");
+               goto err;
+       }
+
        dev_info(&pdev->dev, "ISI PCI Card(Device ID 0x%x)\n", ent->device);
 
        /* allot the first empty slot in the array */
@@ -1790,6 +1796,7 @@ errunrr:
 errdec:
        board->base = 0;
        card_count--;
+       pci_disable_device(pdev);
 err:
        return retval;
 }
@@ -1806,6 +1813,7 @@ static void __devexit isicom_remove(struct pci_dev *pdev)
        pci_release_region(pdev, 3);
        board->base = 0;
        card_count--;
+       pci_disable_device(pdev);
 }
 
 static int __init isicom_init(void)