addi_apci_2032.c revision bf36f012c7ddaff083bb0ef187feddf4d85507a0
1#include "../comedidev.h"
2#include "comedi_fc.h"
3#include "amcc_s5933.h"
4
5#include "addi-data/addi_common.h"
6
7#include "addi-data/addi_eeprom.c"
8#include "addi-data/hwdrv_apci2032.c"
9#include "addi-data/addi_common.c"
10
11static const struct addi_board apci2032_boardtypes[] = {
12	{
13		.pc_DriverName		= "apci2032",
14		.i_VendorId		= PCI_VENDOR_ID_ADDIDATA,
15		.i_DeviceId		= 0x1004,
16		.i_IorangeBase0		= 4,
17		.i_IorangeBase1		= APCI2032_ADDRESS_RANGE,
18		.i_PCIEeprom		= ADDIDATA_EEPROM,
19		.pc_EepromChip		= ADDIDATA_93C76,
20		.i_NbrDoChannel		= 32,
21		.i_DoMaxdata		= 0xffffffff,
22		.i_Timer		= 1,
23		.interrupt		= v_APCI2032_Interrupt,
24		.reset			= i_APCI2032_Reset,
25		.do_config		= i_APCI2032_ConfigDigitalOutput,
26		.do_write		= i_APCI2032_WriteDigitalOutput,
27		.do_bits		= i_APCI2032_ReadDigitalOutput,
28		.do_read		= i_APCI2032_ReadInterruptStatus,
29		.timer_config		= i_APCI2032_ConfigWatchdog,
30		.timer_write		= i_APCI2032_StartStopWriteWatchdog,
31		.timer_read		= i_APCI2032_ReadWatchdog,
32	},
33};
34
35static struct comedi_driver apci2032_driver = {
36	.driver_name	= "addi_apci_2032",
37	.module		= THIS_MODULE,
38	.attach_pci	= addi_attach_pci,
39	.detach		= i_ADDI_Detach,
40	.num_names	= ARRAY_SIZE(apci2032_boardtypes),
41	.board_name	= &apci2032_boardtypes[0].pc_DriverName,
42	.offset		= sizeof(struct addi_board),
43};
44
45static int __devinit apci2032_pci_probe(struct pci_dev *dev,
46					const struct pci_device_id *ent)
47{
48	return comedi_pci_auto_config(dev, &apci2032_driver);
49}
50
51static void __devexit apci2032_pci_remove(struct pci_dev *dev)
52{
53	comedi_pci_auto_unconfig(dev);
54}
55
56static DEFINE_PCI_DEVICE_TABLE(apci2032_pci_table) = {
57	{ PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x1004) },
58	{ 0 }
59};
60MODULE_DEVICE_TABLE(pci, apci2032_pci_table);
61
62static struct pci_driver apci2032_pci_driver = {
63	.name		= "addi_apci_2032",
64	.id_table	= apci2032_pci_table,
65	.probe		= apci2032_pci_probe,
66	.remove		= __devexit_p(apci2032_pci_remove),
67};
68module_comedi_pci_driver(apci2032_driver, apci2032_pci_driver);
69
70MODULE_AUTHOR("Comedi http://www.comedi.org");
71MODULE_DESCRIPTION("Comedi low-level driver");
72MODULE_LICENSE("GPL");
73