staging: comedi: ke_counter: factor out the "find pci device" code
PATCH 28/30 staging: comedi: ke_counter: factor out the "find pci device" code
Factor the "find pci device" code out of the attach function.
Signed-off-by H Hartley Sweeten <[email protected]>
Cc Ian Abbott <[email protected]>
Cc Greg Kroah-Hartman <[email protected]>
--- drivers/staging/comedi/drivers/ke_counter.c | 46 ++++++++++++++++++----------- 1 file changed, 28 insertions(+), 18 deletions(-)
drivers/staging/comedi/drivers/ke_counter.c +28 -18
@@ -122,20 +122,13 @@ static int cnt_rinsn(struct comedi_device *dev,return 1 ; } -static int cnt_attach (struct comedi_device *dev,struct comedi_devconfig *it) +static struct pci_dev *cnt_find_pci_dev (struct comedi_device *dev, +struct comedi_devconfig *it) { -struct comedi_subdevice *subdevice; +const struct cnt_board_struct *board;struct pci_dev *pci_device =NULL ; -struct cnt_board_struct *board; -unsigned long io_base; -int error, i; +int i; -/* allocate device private structure */ - error =alloc_private (dev,sizeof (struct cnt_device_private )); -if (error <0 ) -return error; - -/* 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_KOLTER ) {for (i =0 ; i < cnt_board_nbr; i++) {
@@ -155,9 +148,7 @@ static int cnt_attach(struct comedi_device *dev, struct comedi_devconfig *it) } dev->board_ptr = cnt_boards + i; - board = - (struct cnt_board_struct *) - dev->board_ptr; + board = dev->board_ptr; goto found; } }
@@ -166,18 +157,37 @@ static int cnt_attach(struct comedi_device *dev, struct comedi_devconfig *it)printk (KERN_WARNING "comedi%d: no supported board found! (req. bus/slot: %d/%d)\n" , dev->minor, it->options[0 ], it->options[1 ]); -return -EIO ; +return NULL ; found:printk (KERN_INFO "comedi%d: found %s at PCI bus %d, slot %d\n" , dev->minor, board->name, pci_device->bus->number,PCI_SLOT (pci_device->devfn)); - devpriv->pcidev = pci_device; +return pci_device; +} + +static int cnt_attach (struct comedi_device *dev,struct comedi_devconfig *it) +{ +const struct cnt_board_struct *board; +struct comedi_subdevice *subdevice; +unsigned long io_base; +int error; + +/* allocate device private structure */ + error =alloc_private (dev,sizeof (struct cnt_device_private )); +if (error <0 ) +return error; + + devpriv->pcidev =cnt_find_pci_dev (dev, it); +if (!devpriv->pcidev) +return -EIO ; + board = dev->board_ptr; + dev->board_name = board->name;/* enable PCI device and request regions */ - error =comedi_pci_enable (pci_device,CNT_DRIVER_NAME ); + error =comedi_pci_enable (devpriv->pcidev,CNT_DRIVER_NAME );if (error <0 ) { printk(KERN_WARNING "comedi%d: " "failed to enable PCI device and request regions!\n",
@@ -186,7 +196,7 @@ found: }/* read register base address [PCI_BASE_ADDRESS #0] */ - io_base =pci_resource_start (pci_device,0 ); + io_base =pci_resource_start (devpriv->pcidev,0 ); dev->iobase = io_base; error =comedi_alloc_subdevices (dev,1 );
Signature · 1 line
1.7.11