diff options
author | H Hartley Sweeten <hartleys@visionengravers.com> | 2012-09-08 00:47:20 (GMT) |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-09-08 04:53:01 (GMT) |
commit | ba5cb4ba57053153959587b67881eecec89eb08f (patch) | |
tree | def6ab62e2ed5600a558e8c65506ebe6928adda6 | |
parent | f4c772f0c3d6477ab18af8bd8ac239049a1af6a5 (diff) | |
download | linux-fsl-qoriq-ba5cb4ba57053153959587b67881eecec89eb08f.tar.xz |
staging: comedi: me4000: cleanup me4000_probe()
Move the non pci probe related code out of the me4000_probe function
and back into the me4000_attach function in preparation of converting
this driver to the 'attach_pci' callback.
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>
-rw-r--r-- | drivers/staging/comedi/drivers/me4000.c | 67 |
1 files changed, 31 insertions, 36 deletions
diff --git a/drivers/staging/comedi/drivers/me4000.c b/drivers/staging/comedi/drivers/me4000.c index 39eb775..948f04a 100644 --- a/drivers/staging/comedi/drivers/me4000.c +++ b/drivers/staging/comedi/drivers/me4000.c @@ -1737,18 +1737,11 @@ static int me4000_cnt_insn_write(struct comedi_device *dev, return 1; } -static int me4000_probe(struct comedi_device *dev, struct comedi_devconfig *it) +static struct pci_dev *me4000_probe(struct comedi_device *dev, + struct comedi_devconfig *it) { - struct me4000_info *info; struct pci_dev *pci_device = NULL; - int result, i; - const struct me4000_board *board; - - /* Allocate private memory */ - result = alloc_private(dev, sizeof(*info)); - if (result) - return result; - info = dev->private; + int i; /* * Probe the device to determine what device in the series it is. @@ -1777,39 +1770,55 @@ static int me4000_probe(struct comedi_device *dev, struct comedi_devconfig *it) } } dev->board_ptr = me4000_boards + i; - board = comedi_board(dev); - goto found; + return pci_device; } } } } - return -ENODEV; + return NULL; +} + +static int me4000_attach(struct comedi_device *dev, struct comedi_devconfig *it) +{ + const struct me4000_board *thisboard; + struct me4000_info *info; + struct pci_dev *pcidev; + struct comedi_subdevice *s; + int result; -found: - comedi_set_hw_dev(dev, &pci_device->dev); - dev->board_name = board->name; + pcidev = me4000_probe(dev, it); + if (!pcidev) + return -ENODEV; + comedi_set_hw_dev(dev, &pcidev->dev); + thisboard = comedi_board(dev); + dev->board_name = thisboard->name; - result = comedi_pci_enable(pci_device, dev->board_name); + result = alloc_private(dev, sizeof(*info)); if (result) return result; + info = dev->private; - info->plx_regbase = pci_resource_start(pci_device, 1); + result = comedi_pci_enable(pcidev, dev->board_name); + if (result) + return result; + + info->plx_regbase = pci_resource_start(pcidev, 1); if (!info->plx_regbase) return -ENODEV; - dev->iobase = pci_resource_start(pci_device, 2); + dev->iobase = pci_resource_start(pcidev, 2); if (!dev->iobase) return -ENODEV; - info->timer_regbase = pci_resource_start(pci_device, 3); + info->timer_regbase = pci_resource_start(pcidev, 3); if (!info->timer_regbase) return -ENODEV; - info->program_regbase = pci_resource_start(pci_device, 5); + info->program_regbase = pci_resource_start(pcidev, 5); if (!info->program_regbase) return -ENODEV; - dev->irq = pci_device->irq; + dev->irq = pcidev->irq; result = xilinx_download(dev); if (result) @@ -1819,20 +1828,6 @@ found: if (result) return result; - return 0; -} - -static int me4000_attach(struct comedi_device *dev, struct comedi_devconfig *it) -{ - const struct me4000_board *thisboard; - struct comedi_subdevice *s; - int result; - - result = me4000_probe(dev, it); - if (result) - return result; - thisboard = comedi_board(dev); - result = comedi_alloc_subdevices(dev, 4); if (result) return result; |