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>
This commit is contained in:
parent
68278f100a
commit
b3322d422e
1 changed files with 14 additions and 24 deletions
|
@ -249,24 +249,27 @@ static const struct comedi_lrange rtd_ao_range = {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum rtd_boardid {
|
||||||
|
BOARD_DM7520,
|
||||||
|
BOARD_PCI4520,
|
||||||
|
};
|
||||||
|
|
||||||
struct rtdBoard {
|
struct rtdBoard {
|
||||||
const char *name;
|
const char *name;
|
||||||
int device_id;
|
|
||||||
int range10Start; /* start of +-10V range */
|
int range10Start; /* start of +-10V range */
|
||||||
int rangeUniStart; /* start of +10V range */
|
int rangeUniStart; /* start of +10V range */
|
||||||
const struct comedi_lrange *ai_range;
|
const struct comedi_lrange *ai_range;
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct rtdBoard rtd520Boards[] = {
|
static const struct rtdBoard rtd520Boards[] = {
|
||||||
{
|
[BOARD_DM7520] = {
|
||||||
.name = "DM7520",
|
.name = "DM7520",
|
||||||
.device_id = 0x7520,
|
|
||||||
.range10Start = 6,
|
.range10Start = 6,
|
||||||
.rangeUniStart = 12,
|
.rangeUniStart = 12,
|
||||||
.ai_range = &rtd_ai_7520_range,
|
.ai_range = &rtd_ai_7520_range,
|
||||||
}, {
|
},
|
||||||
|
[BOARD_PCI4520] = {
|
||||||
.name = "PCI4520",
|
.name = "PCI4520",
|
||||||
.device_id = 0x4520,
|
|
||||||
.range10Start = 8,
|
.range10Start = 8,
|
||||||
.rangeUniStart = 16,
|
.rangeUniStart = 16,
|
||||||
.ai_range = &rtd_ai_4520_range,
|
.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,
|
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);
|
struct pci_dev *pcidev = comedi_to_pci_dev(dev);
|
||||||
const struct rtdBoard *thisboard;
|
const struct rtdBoard *thisboard = NULL;
|
||||||
struct rtdPrivate *devpriv;
|
struct rtdPrivate *devpriv;
|
||||||
struct comedi_subdevice *s;
|
struct comedi_subdevice *s;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
thisboard = rtd_find_boardinfo(dev, pcidev);
|
if (context < ARRAY_SIZE(rtd520Boards))
|
||||||
|
thisboard = &rtd520Boards[context];
|
||||||
if (!thisboard)
|
if (!thisboard)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
dev->board_ptr = thisboard;
|
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) = {
|
static DEFINE_PCI_DEVICE_TABLE(rtd520_pci_table) = {
|
||||||
{ PCI_DEVICE(PCI_VENDOR_ID_RTD, 0x7520) },
|
{ PCI_VDEVICE(RTD, 0x7520), BOARD_DM7520 },
|
||||||
{ PCI_DEVICE(PCI_VENDOR_ID_RTD, 0x4520) },
|
{ PCI_VDEVICE(RTD, 0x4520), BOARD_PCI4520 },
|
||||||
{ 0 }
|
{ 0 }
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(pci, rtd520_pci_table);
|
MODULE_DEVICE_TABLE(pci, rtd520_pci_table);
|
||||||
|
|
Loading…
Add table
Reference in a new issue