staging: comedi: me_daq: cleanup "find pci device" code
authorH Hartley Sweeten <hartleys@visionengravers.com>
Thu, 19 Jul 2012 02:03:43 +0000 (19:03 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 19 Jul 2012 23:51:39 +0000 (16:51 -0700)
Cleanup the "find pci device" code so that it follows the style
of the other comedi pci drivers.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/comedi/drivers/me_daq.c

index dc0fbbd895fff32c55bab2b9803d4b0512dbd883..cd66af936dc52de65fb70bc0d7bb8932f84cf367 100644 (file)
@@ -231,8 +231,6 @@ static const struct me_board me_boards[] = {
         }
 };
 
-#define me_board_nbr (sizeof(me_boards)/sizeof(struct me_board))
-
 /* Private data structure */
 struct me_private_data {
        struct pci_dev *pci_device;
@@ -613,49 +611,34 @@ static int me_reset(struct comedi_device *dev)
 static struct pci_dev *me_find_pci_dev(struct comedi_device *dev,
                                       struct comedi_devconfig *it)
 {
-       struct pci_dev *pci_device = NULL;
+       const struct me_board *board;
+       struct pci_dev *pcidev = NULL;
+       int bus = it->options[0];
+       int slot = it->options[1];
        int i;
 
-       /* Probe the device to determine what device in the series it is. */
-       for_each_pci_dev(pci_device) {
-               if (pci_device->vendor == PCI_VENDOR_ID_MEILHAUS) {
-                       for (i = 0; i < me_board_nbr; i++) {
-                               if (me_boards[i].device_id ==
-                                   pci_device->device) {
-                                       /*
-                                        * was a particular bus/slot requested?
-                                        */
-                                       if ((it->options[0] != 0)
-                                           || (it->options[1] != 0)) {
-                                               /*
-                                                * are we on the wrong bus/slot?
-                                                */
-                                               if (pci_device->bus->number !=
-                                                   it->options[0]
-                                                   ||
-                                                   PCI_SLOT(pci_device->devfn)
-                                                   != it->options[1]) {
-                                                       continue;
-                                               }
-                                       }
-
-                                       dev->board_ptr = me_boards + i;
-                                       goto found;
-                               }
-                       }
+       for_each_pci_dev(pcidev) {
+               if (bus || slot) {
+                       if (pcidev->bus->number != bus ||
+                           PCI_SLOT(pcidev->devfn) != slot)
+                               continue;
                }
-       }
+               if (pcidev->vendor != PCI_VENDOR_ID_MEILHAUS)
+                       continue;
 
-       printk(KERN_ERR
-              "comedi%d: no supported board found! (req. bus/slot : %d/%d)\n",
-              dev->minor, it->options[0], it->options[1]);
-       return NULL;
+               for (i = 0; i < ARRAY_SIZE(me_boards); i++) {
+                       board = &me_boards[i];
+                       if (board->device_id != pcidev->device)
+                               continue;
 
-found:
-       printk(KERN_INFO "comedi%d: found %s at PCI bus %d, slot %d\n",
-              dev->minor, me_boards[i].name,
-              pci_device->bus->number, PCI_SLOT(pci_device->devfn));
-       return pci_device;
+                       dev->board_ptr = board;
+                       return pcidev;
+               }
+       }
+       dev_err(dev->class_dev,
+               "No supported board found! (req. bus %d, slot %d)\n",
+               bus, slot);
+       return NULL;
 }
 
 static int me_attach(struct comedi_device *dev, struct comedi_devconfig *it)