patch from abbotti@mev.co.uk (Ian Abbott):
authorFrank Mori Hess <fmhess@speakeasy.net>
Sun, 26 Jun 2005 15:35:36 +0000 (15:35 +0000)
committerFrank Mori Hess <fmhess@speakeasy.net>
Sun, 26 Jun 2005 15:35:36 +0000 (15:35 +0000)
At the end of February (or possibly the beginning of March, depending on your
timezone!) I submitted a patch to remove pci_find_device and use pci_get_device
and pci_dev_put (and occasionally pci_dev_get) instead.

I messed up on the amplc_pc262 and cb_pcidas drivers as I forgot to replace
pci_find_device with pci_get_device, but added the calls to pci_dev_put, so the
PCI reference counts would go negative when the device was detached.  The
attached patch corrects this problem and also fixes an unrelated gcc warning in
the cb_pcidas driver about a possibly ambiguous 'else' requiring braces (my
fault again!).

comedi/drivers/amplc_pc263.c
comedi/drivers/cb_pcidas.c

index 1309c5a793fac83813d9c85238d6b7763bebad06..bfd5e1e65acd2323ac13b271d3169364da92d26a 100644 (file)
@@ -169,9 +169,9 @@ static int pc263_attach(comedi_device *dev,comedi_devconfig *it)
                }
 
                /* Look for matching PCI device. */
-               for(pci_dev = pci_find_device(pci_id->vendor, pci_id->device,
+               for(pci_dev = pci_get_device(pci_id->vendor, pci_id->device,
                                        NULL); pci_dev != NULL; 
-                               pci_dev = pci_find_device(pci_id->vendor,
+                               pci_dev = pci_get_device(pci_id->vendor,
                                        pci_id->device, pci_dev)) {
                        /* If bus/slot specified, check them. */
                        if (bus || slot) {
index 0f7a12839e93bba12f9d2f0ee3cd00ea5748086a..2420ff80b3745191a5090a17589f281e1ee4f07d 100644 (file)
@@ -525,8 +525,8 @@ static int cb_pcidas_attach(comedi_device *dev, comedi_devconfig *it)
  */
        printk("\n");
 
-       for(pcidev = pci_find_device(PCI_ANY_ID, PCI_ANY_ID, NULL); pcidev != NULL ; 
-               pcidev = pci_find_device(PCI_ANY_ID, PCI_ANY_ID, pcidev)) 
+       for(pcidev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, NULL); pcidev != NULL ; 
+               pcidev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, pcidev)) 
        {
                // is it not a computer boards card?
                if(pcidev->vendor != PCI_VENDOR_ID_CB)
@@ -592,10 +592,12 @@ found:
        else
                err++;
        if(thisboard->ao_nchan)
+       {
                if(request_region(ao_registers, AO_SIZE, "cb_pcidas"))
                        devpriv->ao_registers = ao_registers;
                else
                        err++;
+       }
        if(err)
        {
                printk(" I/O port conflict\n");