[PATCH 18/30] staging: comedi: amplc_dio200: add PCI BAR information to board

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxx>
---
 drivers/staging/comedi/drivers/amplc_dio200.c | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/drivers/staging/comedi/drivers/amplc_dio200.c b/drivers/staging/comedi/drivers/amplc_dio200.c
index 39fb82b..2cbd248 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,
-- 
1.7.12.4

_______________________________________________
devel mailing list
devel@xxxxxxxxxxxxxxxxxxxxxx
http://driverdev.linuxdriverproject.org/mailman/listinfo/devel


[Index of Archives]     [Linux Driver Backports]     [DMA Engine]     [Linux GPIO]     [Linux SPI]     [Video for Linux]     [Linux USB Devel]     [Linux Coverity]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux