summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH Hartley Sweeten <hartleys@visionengravers.com>2012-09-08 00:47:20 (GMT)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-09-08 04:53:01 (GMT)
commitba5cb4ba57053153959587b67881eecec89eb08f (patch)
treedef6ab62e2ed5600a558e8c65506ebe6928adda6
parentf4c772f0c3d6477ab18af8bd8ac239049a1af6a5 (diff)
downloadlinux-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.c67
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;