summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH Hartley Sweeten <hsweeten@visionengravers.com>2013-03-05 17:21:47 (GMT)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-03-11 17:05:21 (GMT)
commitb3322d422e65bcfd0a70444c9a0f240aaa8d0b07 (patch)
tree144a8ed8497f7f9b6750ae67e29215afae217ff8
parent68278f100a88390baf07602f3900d98a6b5c6167 (diff)
downloadlinux-fsl-qoriq-b3322d422e65bcfd0a70444c9a0f240aaa8d0b07.tar.xz
staging: comedi: rtd520: use the pci id_table 'driver_data'
Create an enum to the boardinfo and pass that enum in the pci_driver id_table as the driver_data. Change the macro used to fill in the device table from PCI_DEVICE() to PCI_VDEVICE(). This allows passing the enum as the next field. This allows removing the 'device_id' data from the boardinfo as well the search function that was used to locate the boardinfo for the PCI device. 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/rtd520.c38
1 files changed, 14 insertions, 24 deletions
diff --git a/drivers/staging/comedi/drivers/rtd520.c b/drivers/staging/comedi/drivers/rtd520.c
index 8b72edf..5ee38b1 100644
--- a/drivers/staging/comedi/drivers/rtd520.c
+++ b/drivers/staging/comedi/drivers/rtd520.c
@@ -249,24 +249,27 @@ static const struct comedi_lrange rtd_ao_range = {
}
};
+enum rtd_boardid {
+ BOARD_DM7520,
+ BOARD_PCI4520,
+};
+
struct rtdBoard {
const char *name;
- int device_id;
int range10Start; /* start of +-10V range */
int rangeUniStart; /* start of +10V range */
const struct comedi_lrange *ai_range;
};
static const struct rtdBoard rtd520Boards[] = {
- {
+ [BOARD_DM7520] = {
.name = "DM7520",
- .device_id = 0x7520,
.range10Start = 6,
.rangeUniStart = 12,
.ai_range = &rtd_ai_7520_range,
- }, {
+ },
+ [BOARD_PCI4520] = {
.name = "PCI4520",
- .device_id = 0x4520,
.range10Start = 8,
.rangeUniStart = 16,
.ai_range = &rtd_ai_4520_range,
@@ -1259,30 +1262,17 @@ static void rtd_pci_latency_quirk(struct comedi_device *dev,
}
}
-static const void *rtd_find_boardinfo(struct comedi_device *dev,
- struct pci_dev *pcidev)
-{
- const struct rtdBoard *thisboard;
- int i;
-
- for (i = 0; i < ARRAY_SIZE(rtd520Boards); i++) {
- thisboard = &rtd520Boards[i];
- if (pcidev->device == thisboard->device_id)
- return thisboard;
- }
- return NULL;
-}
-
static int rtd_auto_attach(struct comedi_device *dev,
- unsigned long context_unused)
+ unsigned long context)
{
struct pci_dev *pcidev = comedi_to_pci_dev(dev);
- const struct rtdBoard *thisboard;
+ const struct rtdBoard *thisboard = NULL;
struct rtdPrivate *devpriv;
struct comedi_subdevice *s;
int ret;
- thisboard = rtd_find_boardinfo(dev, pcidev);
+ if (context < ARRAY_SIZE(rtd520Boards))
+ thisboard = &rtd520Boards[context];
if (!thisboard)
return -ENODEV;
dev->board_ptr = thisboard;
@@ -1422,8 +1412,8 @@ static int rtd520_pci_probe(struct pci_dev *dev,
}
static DEFINE_PCI_DEVICE_TABLE(rtd520_pci_table) = {
- { PCI_DEVICE(PCI_VENDOR_ID_RTD, 0x7520) },
- { PCI_DEVICE(PCI_VENDOR_ID_RTD, 0x4520) },
+ { PCI_VDEVICE(RTD, 0x7520), BOARD_DM7520 },
+ { PCI_VDEVICE(RTD, 0x4520), BOARD_PCI4520 },
{ 0 }
};
MODULE_DEVICE_TABLE(pci, rtd520_pci_table);