Commit ef0653ac authored by Ian Abbott's avatar Ian Abbott Committed by Greg Kroah-Hartman

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: default avatarIan Abbott <abbotti@mev.co.uk>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 71b3e9e8
......@@ -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,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment