summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorIan Abbott <abbotti@mev.co.uk>2013-04-12 13:57:54 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-04-12 15:12:42 -0700
commitfed9fd2cc6ac2b01f928bef3ce62a9d8058f514d (patch)
tree05b28e32fb9253047c7faf3dd39fd93dd8417168 /drivers
parentaee351b28ccc7b966a14c8a8e146c6b74d4717cc (diff)
staging: comedi: 8255_pci: check BAR resource type directly
This driver handles one or more 8255 DIO subdevices mapped contiguously at the start of a PCI BAR resource. The resource may be a portio resource or an mmio resource. The driver currently checks the `is_mmio` member of the matching element of `pci_8255_boards[]` to determine the type of resource. Rather than doing that, get the information straight from the horse's mouth by checking the resource flags of the PCI BAR and eliminate the `is_mmio` member. Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Reviewed-by: H Hartley Sweeten <hsweeten@visionengravers.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/staging/comedi/drivers/8255_pci.c15
1 files changed, 5 insertions, 10 deletions
diff --git a/drivers/staging/comedi/drivers/8255_pci.c b/drivers/staging/comedi/drivers/8255_pci.c
index fff1c08a93fb..de54ad3a64e6 100644
--- a/drivers/staging/comedi/drivers/8255_pci.c
+++ b/drivers/staging/comedi/drivers/8255_pci.c
@@ -80,7 +80,6 @@ enum pci_8255_boardid {
struct pci_8255_boardinfo {
const char *name;
int dio_badr;
- int is_mmio;
int n_8255;
};
@@ -123,43 +122,36 @@ static const struct pci_8255_boardinfo pci_8255_boards[] = {
[BOARD_NI_PCIDIO96] = {
.name = "ni_pci-dio-96",
.dio_badr = 1,
- .is_mmio = 1,
.n_8255 = 4,
},
[BOARD_NI_PCIDIO96B] = {
.name = "ni_pci-dio-96b",
.dio_badr = 1,
- .is_mmio = 1,
.n_8255 = 4,
},
[BOARD_NI_PXI6508] = {
.name = "ni_pxi-6508",
.dio_badr = 1,
- .is_mmio = 1,
.n_8255 = 4,
},
[BOARD_NI_PCI6503] = {
.name = "ni_pci-6503",
.dio_badr = 1,
- .is_mmio = 1,
.n_8255 = 1,
},
[BOARD_NI_PCI6503B] = {
.name = "ni_pci-6503b",
.dio_badr = 1,
- .is_mmio = 1,
.n_8255 = 1,
},
[BOARD_NI_PCI6503X] = {
.name = "ni_pci-6503x",
.dio_badr = 1,
- .is_mmio = 1,
.n_8255 = 1,
},
[BOARD_NI_PXI_6503] = {
.name = "ni_pxi-6503",
.dio_badr = 1,
- .is_mmio = 1,
.n_8255 = 1,
},
};
@@ -187,6 +179,7 @@ static int pci_8255_auto_attach(struct comedi_device *dev,
const struct pci_8255_boardinfo *board = NULL;
struct pci_8255_private *devpriv;
struct comedi_subdevice *s;
+ bool is_mmio;
int ret;
int i;
@@ -206,7 +199,9 @@ static int pci_8255_auto_attach(struct comedi_device *dev,
if (ret)
return ret;
- if (board->is_mmio) {
+ is_mmio = (pci_resource_flags(pcidev, board->dio_badr) &
+ IORESOURCE_MEM) != 0;
+ if (is_mmio) {
devpriv->mmio_base = pci_ioremap_bar(pcidev, board->dio_badr);
if (!devpriv->mmio_base)
return -ENOMEM;
@@ -227,7 +222,7 @@ static int pci_8255_auto_attach(struct comedi_device *dev,
unsigned long iobase;
s = &dev->subdevices[i];
- if (board->is_mmio) {
+ if (is_mmio) {
iobase = (unsigned long)(devpriv->mmio_base + (i * 4));
ret = subdev_8255_init(dev, s, pci_8255_mmio, iobase);
} else {