staging: comedi: amplc_dio200: cleanup "find pci device" code
PATCH 29/90 staging: comedi: amplc_dio200: cleanup "find pci device" code
For aesthetic reasons, rename the function and pass the comedi_devconfig struct instead of pre-parsing out the bus/slot information.
Use for_each_pci_dev() instead of open-coding the loop using pci_get_device().
Consolidate the dev_err messages when a pci device is not found.
Signed-off-by H Hartley Sweeten <[email protected]>
Cc Ian Abbott <[email protected]>
Cc Greg Kroah-Hartman <[email protected]>
--- drivers/staging/comedi/drivers/amplc_dio200.c | 42 ++++++++++----------------- 1 file changed, 15 insertions(+), 27 deletions(-)
drivers/staging/comedi/drivers/amplc_dio200.c +15 -27
@@ -469,23 +469,23 @@ dio200_find_pci_board(struct pci_dev *pci_dev)* This function looks for a PCI device matching the requested board name, * bus and slot. */ -static struct pci_dev * -dio200_find_pci (struct comedi_device *dev,int bus,int slot) +static struct pci_dev *dio200_find_pci_dev (struct comedi_device *dev, +struct comedi_devconfig *it) {const struct dio200_board *thisboard =comedi_board (dev);struct pci_dev *pci_dev =NULL ; +int bus = it->options[0 ]; +int slot = it->options[1 ]; -/* Look for matching PCI device. */ -for (pci_dev =pci_get_device (PCI_VENDOR_ID_AMPLICON ,PCI_ANY_ID ,NULL ); - pci_dev !=NULL ; - pci_dev =pci_get_device (PCI_VENDOR_ID_AMPLICON , -PCI_ANY_ID , pci_dev)) { -/* If bus/slot specified, check them. */ +for_each_pci_dev (pci_dev) {if (bus || slot) { -if (bus != pci_dev->bus->number - || slot !=PCI_SLOT (pci_dev->devfn)) +if (bus != pci_dev->bus->number || + slot !=PCI_SLOT (pci_dev->devfn))continue ; } +if (pci_dev->vendor !=PCI_VENDOR_ID_AMPLICON ) +continue ; +if (thisboard->model == anypci_model) {/* Wildcard board matches any supported PCI board. */ const struct dio200_board *foundboard;
@@ -495,25 +495,16 @@ dio200_find_pci(struct comedi_device *dev, int bus, int slot)continue ;/* Replace wildcard board_ptr. */ dev->board_ptr = foundboard; - thisboard =comedi_board (dev); }else {/* Match specific model name. */ if (pci_dev->device != thisboard->devid)continue ; } - -/* Found a match. */ return pci_dev; } -/* No match found. */ -if (bus || slot) { -dev_err (dev->class_dev, -"error! no %s found at pci %02x:%02x!\n" , - thisboard->name, bus, slot); - }else { -dev_err (dev->class_dev,"error! no %s found!\n" , - thisboard->name); - } +dev_err (dev->class_dev, +"No supported board found! (req. bus %d, slot %d)\n" , + bus, slot);return NULL ; }
@@ -1385,12 +1376,9 @@ static int dio200_attach(struct comedi_device *dev, struct comedi_devconfig *it) }else if (IS_ENABLED (CONFIG_COMEDI_AMPLC_DIO200_PCI ) && thisboard->bustype == pci_bustype) {struct pci_dev *pci_dev; -int bus, slot; - bus = it->options[0 ]; - slot = it->options[1 ]; - pci_dev =dio200_find_pci (dev, bus, slot); -if (pci_dev ==NULL ) + pci_dev =dio200_find_pci_dev (dev, it); +if (!pci_dev)return -EIO ;return dio200_pci_common_attach (dev, pci_dev); }else {
Signature · 1 line
1.7.11