staging: comedi: adl_pci7230: factor out the find PCI device code
PATCH 1/1 staging: comedi: adl_pci7230: factor out the find PCI device code
Factor out the code that finds a matching PCI device from attach function.
Signed-off-by H Hartley Sweeten <[email protected]>
Cc Ian Abbott <[email protected]>
Cc Mori Hess <[email protected]>
Cc Greg Kroah-Hartman <[email protected]>
---
drivers/staging/comedi/drivers/adl_pci7230.c +29 -24
@@ -81,18 +81,38 @@ static int adl_pci7230_di_insn_bits(struct comedi_device *dev,return 2 ; } -static int adl_pci7230_attach (struct comedi_device *dev, +static struct pci_dev *adl_pci7230_find_pci (struct comedi_device *dev,struct comedi_devconfig *it) {struct pci_dev *pcidev =NULL ; +int bus = it->options[0 ]; +int slot = it->options[1 ]; + +for_each_pci_dev (pcidev) { +if (pcidev->vendor !=PCI_VENDOR_ID_ADLINK || + pcidev->device !=PCI_DEVICE_ID_PCI7230 ) +continue ; +if (bus || slot) { +/* requested particular bus/slot */ +if (pcidev->bus->number != bus || +PCI_SLOT (pcidev->devfn) != slot) +continue ; + } +return pcidev; + } +printk (KERN_ERR "comedi%d: no supported board found! (req. bus/slot : %d/%d)\n" , + dev->minor, bus, slot); +return NULL ; +} + +static int adl_pci7230_attach (struct comedi_device *dev, +struct comedi_devconfig *it) +{struct comedi_subdevice *s; -int bus, slot;printk (KERN_INFO "comedi%d: adl_pci7230\n" , dev->minor); dev->board_name ="pci7230" ; - bus = it->options[0 ]; - slot = it->options[1 ];if (alloc_private (dev,sizeof (struct adl_pci7230_private )) <0 )return -ENOMEM ;
@@ -100,31 +120,16 @@ static int adl_pci7230_attach(struct comedi_device *dev,if (alloc_subdevices (dev,2 ) <0 )return -ENOMEM ; -for_each_pci_dev (pcidev) { -if (pcidev->vendor ==PCI_VENDOR_ID_ADLINK && - pcidev->device ==PCI_DEVICE_ID_PCI7230 ) { -if (bus || slot) { -/* requested particular bus/slot */ -if (pcidev->bus->number != bus || -PCI_SLOT (pcidev->devfn) != slot) { -continue ; - } - } - devpriv->pci_dev = pcidev; -break ; - } - } -if (pcidev ==NULL ) { -printk (KERN_ERR "comedi%d: no supported board found! (req. bus/slot : %d/%d)\n" , - dev->minor, bus, slot); + devpriv->pci_dev =adl_pci7230_find_pci (dev, it); +if (!devpriv->pci_dev)return -EIO ; - } -if (comedi_pci_enable (pcidev,"adl_pci7230" ) <0 ) { + +if (comedi_pci_enable (devpriv->pci_dev,"adl_pci7230" ) <0 ) {printk (KERN_ERR "comedi%d: Failed to enable PCI device and request regions\n" , dev->minor);return -EIO ; } - dev->iobase =pci_resource_start (pcidev,2 ); + dev->iobase =pci_resource_start (devpriv->pci_dev,2 );printk (KERN_DEBUG "comedi: base addr %4lx\n" , dev->iobase); s = dev->subdevices +0 ;