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_VendorId
= PCI_VENDOR_ID_ADDIDATA
,
20 .i_IorangeBase0
= 127,
21 .i_IorangeBase1
= APCI035_ADDRESS_RANGE
,
23 .pc_EepromChip
= ADDIDATA_S5920
,
25 .i_NbrAiChannelDiff
= 8,
26 .i_AiChannelList
= 16,
28 .pr_AiRangelist
= &range_apci035_ai
,
30 .ui_MinAcquisitiontimeNs
= 10000,
31 .ui_MinDelaytimeNs
= 100000,
32 .interrupt
= v_APCI035_Interrupt
,
33 .reset
= i_APCI035_Reset
,
34 .ai_config
= i_APCI035_ConfigAnalogInput
,
35 .ai_read
= i_APCI035_ReadAnalogInput
,
36 .timer_config
= i_APCI035_ConfigTimerWatchdog
,
37 .timer_write
= i_APCI035_StartStopWriteTimerWatchdog
,
38 .timer_read
= i_APCI035_ReadTimerWatchdog
,
42 static struct comedi_driver apci035_driver
= {
43 .driver_name
= "addi_apci_035",
44 .module
= THIS_MODULE
,
45 .auto_attach
= addi_auto_attach
,
46 .detach
= i_ADDI_Detach
,
47 .num_names
= ARRAY_SIZE(apci035_boardtypes
),
48 .board_name
= &apci035_boardtypes
[0].pc_DriverName
,
49 .offset
= sizeof(struct addi_board
),
52 static int apci035_pci_probe(struct pci_dev
*dev
,
53 const struct pci_device_id
*ent
)
55 return comedi_pci_auto_config(dev
, &apci035_driver
);
58 static DEFINE_PCI_DEVICE_TABLE(apci035_pci_table
) = {
59 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA
, 0x0300) },
62 MODULE_DEVICE_TABLE(pci
, apci035_pci_table
);
64 static struct pci_driver apci035_pci_driver
= {
65 .name
= "addi_apci_035",
66 .id_table
= apci035_pci_table
,
67 .probe
= apci035_pci_probe
,
68 .remove
= comedi_pci_auto_unconfig
,
70 module_comedi_pci_driver(apci035_driver
, apci035_pci_driver
);
72 MODULE_AUTHOR("Comedi http://www.comedi.org");
73 MODULE_DESCRIPTION("Comedi low-level driver");
74 MODULE_LICENSE("GPL");