3 #include "../comedidev.h"
5 #include "amcc_s5933.h"
7 #include "addi-data/addi_common.h"
9 #define ADDIDATA_WATCHDOG 2 /* Or shold it be something else */
11 #include "addi-data/addi_eeprom.c"
12 #include "addi-data/hwdrv_apci035.c"
13 #include "addi-data/addi_common.c"
15 static const struct addi_board apci035_boardtypes
[] = {
17 .pc_DriverName
= "apci035",
18 .i_IorangeBase1
= APCI035_ADDRESS_RANGE
,
20 .pc_EepromChip
= ADDIDATA_S5920
,
22 .i_NbrAiChannelDiff
= 8,
23 .i_AiChannelList
= 16,
25 .pr_AiRangelist
= &range_apci035_ai
,
27 .ui_MinAcquisitiontimeNs
= 10000,
28 .ui_MinDelaytimeNs
= 100000,
29 .interrupt
= v_APCI035_Interrupt
,
30 .reset
= i_APCI035_Reset
,
31 .ai_config
= i_APCI035_ConfigAnalogInput
,
32 .ai_read
= i_APCI035_ReadAnalogInput
,
33 .timer_config
= i_APCI035_ConfigTimerWatchdog
,
34 .timer_write
= i_APCI035_StartStopWriteTimerWatchdog
,
35 .timer_read
= i_APCI035_ReadTimerWatchdog
,
39 static int apci035_auto_attach(struct comedi_device
*dev
,
40 unsigned long context
)
42 dev
->board_ptr
= &apci035_boardtypes
[0];
44 return addi_auto_attach(dev
, context
);
47 static struct comedi_driver apci035_driver
= {
48 .driver_name
= "addi_apci_035",
49 .module
= THIS_MODULE
,
50 .auto_attach
= apci035_auto_attach
,
51 .detach
= i_ADDI_Detach
,
54 static int apci035_pci_probe(struct pci_dev
*dev
,
55 const struct pci_device_id
*id
)
57 return comedi_pci_auto_config(dev
, &apci035_driver
, id
->driver_data
);
60 static DEFINE_PCI_DEVICE_TABLE(apci035_pci_table
) = {
61 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA
, 0x0300) },
64 MODULE_DEVICE_TABLE(pci
, apci035_pci_table
);
66 static struct pci_driver apci035_pci_driver
= {
67 .name
= "addi_apci_035",
68 .id_table
= apci035_pci_table
,
69 .probe
= apci035_pci_probe
,
70 .remove
= comedi_pci_auto_unconfig
,
72 module_comedi_pci_driver(apci035_driver
, apci035_pci_driver
);
74 MODULE_AUTHOR("Comedi http://www.comedi.org");
75 MODULE_DESCRIPTION("Comedi low-level driver");
76 MODULE_LICENSE("GPL");