addi_apci_2032.c revision a690b7e535f2f97a3a05ee570715abeb60a8910f
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_bits		= apci2032_do_insn_bits,
27		.do_read		= i_APCI2032_ReadInterruptStatus,
28		.timer_config		= i_APCI2032_ConfigWatchdog,
29		.timer_write		= i_APCI2032_StartStopWriteWatchdog,
30		.timer_read		= i_APCI2032_ReadWatchdog,
31	},
32};
33
34static struct comedi_driver apci2032_driver = {
35	.driver_name	= "addi_apci_2032",
36	.module		= THIS_MODULE,
37	.auto_attach	= addi_auto_attach,
38	.detach		= i_ADDI_Detach,
39	.num_names	= ARRAY_SIZE(apci2032_boardtypes),
40	.board_name	= &apci2032_boardtypes[0].pc_DriverName,
41	.offset		= sizeof(struct addi_board),
42};
43
44static int apci2032_pci_probe(struct pci_dev *dev,
45					const struct pci_device_id *ent)
46{
47	return comedi_pci_auto_config(dev, &apci2032_driver);
48}
49
50static void __devexit apci2032_pci_remove(struct pci_dev *dev)
51{
52	comedi_pci_auto_unconfig(dev);
53}
54
55static DEFINE_PCI_DEVICE_TABLE(apci2032_pci_table) = {
56	{ PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x1004) },
57	{ 0 }
58};
59MODULE_DEVICE_TABLE(pci, apci2032_pci_table);
60
61static struct pci_driver apci2032_pci_driver = {
62	.name		= "addi_apci_2032",
63	.id_table	= apci2032_pci_table,
64	.probe		= apci2032_pci_probe,
65	.remove		= apci2032_pci_remove,
66};
67module_comedi_pci_driver(apci2032_driver, apci2032_pci_driver);
68
69MODULE_AUTHOR("Comedi http://www.comedi.org");
70MODULE_DESCRIPTION("Comedi low-level driver");
71MODULE_LICENSE("GPL");
72