summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorIan Abbott <abbotti@mev.co.uk>2012-10-24 16:48:02 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-10-24 15:25:21 -0700
commitef0653ac20e739aba476ee63ca2a618a3a26857d (patch)
tree411e39703ad40abe4102883e0e105b34c0ee3f47 /drivers
parent71b3e9e8dc218133417d3c167632a61f9fed3651 (diff)
downloadlinux-ef0653ac20e739aba476ee63ca2a618a3a26857d.tar.gz
linux-ef0653ac20e739aba476ee63ca2a618a3a26857d.tar.bz2
linux-ef0653ac20e739aba476ee63ca2a618a3a26857d.zip
staging: comedi: amplc_dio200: add PCI BAR information to board
Add `mainbar` member to `struct dio200_board` to hold the PCI BAR number for the main registers. This is `2` for the PCI boards currently supported (PCI215 and PCI272) but will be different for some new boards to be supported later. Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/staging/comedi/drivers/amplc_dio200.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/drivers/staging/comedi/drivers/amplc_dio200.c b/drivers/staging/comedi/drivers/amplc_dio200.c
index 39fb82b4eca8..2cbd2481aeeb 100644
--- a/drivers/staging/comedi/drivers/amplc_dio200.c
+++ b/drivers/staging/comedi/drivers/amplc_dio200.c
@@ -308,6 +308,7 @@ struct dio200_board {
enum dio200_bustype bustype;
enum dio200_model model;
enum dio200_layout_idx layout;
+ unsigned char mainbar;
};
static const struct dio200_board dio200_boards[] = {
@@ -350,6 +351,7 @@ static const struct dio200_board dio200_boards[] = {
.bustype = pci_bustype,
.model = pci215_model,
.layout = pc215_layout,
+ .mainbar = 2,
},
{
.name = "pci272",
@@ -357,6 +359,7 @@ static const struct dio200_board dio200_boards[] = {
.bustype = pci_bustype,
.model = pci272_model,
.layout = pc272_layout,
+ .mainbar = 2,
},
#endif
};
@@ -1573,8 +1576,10 @@ static int dio200_attach(struct comedi_device *dev, struct comedi_devconfig *it)
static int __devinit dio200_attach_pci(struct comedi_device *dev,
struct pci_dev *pci_dev)
{
+ const struct dio200_board *thisboard;
struct dio200_private *devpriv;
resource_size_t base;
+ unsigned int bar;
int ret;
if (!DO_PCI)
@@ -1593,15 +1598,17 @@ static int __devinit dio200_attach_pci(struct comedi_device *dev,
dev_err(dev->class_dev, "BUG! cannot determine board type!\n");
return -EINVAL;
}
+ thisboard = comedi_board(dev);
ret = comedi_pci_enable(pci_dev, DIO200_DRIVER_NAME);
if (ret < 0) {
dev_err(dev->class_dev,
"error! cannot enable PCI device and request regions!\n");
return ret;
}
- base = pci_resource_start(pci_dev, 2);
- if ((pci_resource_flags(pci_dev, 2) & IORESOURCE_MEM) != 0) {
- resource_size_t len = pci_resource_len(pci_dev, 2);
+ bar = thisboard->mainbar;
+ base = pci_resource_start(pci_dev, bar);
+ if ((pci_resource_flags(pci_dev, bar) & IORESOURCE_MEM) != 0) {
+ resource_size_t len = pci_resource_len(pci_dev, bar);
devpriv->io.u.membase = ioremap_nocache(base, len);
if (!devpriv->io.u.membase) {
dev_err(dev->class_dev,