5 #include "../comedidev.h"
7 #include "amcc_s5933.h"
9 #include "addi-data/addi_common.h"
11 static void fpu_begin(void)
16 static void fpu_end(void)
21 #include "addi-data/addi_eeprom.c"
22 #include "addi-data/hwdrv_APCI1710.c"
24 static irqreturn_t
v_ADDI_Interrupt(int irq
, void *d
)
26 v_APCI1710_Interrupt(irq
, d
);
30 static int apci1710_auto_attach(struct comedi_device
*dev
,
31 unsigned long context_unused
)
33 struct pci_dev
*pcidev
= comedi_to_pci_dev(dev
);
34 struct addi_private
*devpriv
;
35 struct comedi_subdevice
*s
;
38 devpriv
= kzalloc(sizeof(*devpriv
), GFP_KERNEL
);
41 dev
->private = devpriv
;
43 ret
= comedi_pci_enable(dev
);
46 devpriv
->s_BoardInfos
.ui_Address
= pci_resource_start(pcidev
, 2);
48 if (pcidev
->irq
> 0) {
49 ret
= request_irq(pcidev
->irq
, v_ADDI_Interrupt
, IRQF_SHARED
,
50 dev
->board_name
, dev
);
52 dev
->irq
= pcidev
->irq
;
55 i_ADDI_AttachPCI1710(dev
);
57 i_APCI1710_Reset(dev
);
61 static void apci1710_detach(struct comedi_device
*dev
)
64 i_APCI1710_Reset(dev
);
66 free_irq(dev
->irq
, dev
);
67 comedi_pci_disable(dev
);
70 static struct comedi_driver apci1710_driver
= {
71 .driver_name
= "addi_apci_1710",
72 .module
= THIS_MODULE
,
73 .auto_attach
= apci1710_auto_attach
,
74 .detach
= apci1710_detach
,
77 static int apci1710_pci_probe(struct pci_dev
*dev
,
78 const struct pci_device_id
*id
)
80 return comedi_pci_auto_config(dev
, &apci1710_driver
, id
->driver_data
);
83 static DEFINE_PCI_DEVICE_TABLE(apci1710_pci_table
) = {
84 { PCI_DEVICE(PCI_VENDOR_ID_AMCC
, APCI1710_BOARD_DEVICE_ID
) },
87 MODULE_DEVICE_TABLE(pci
, apci1710_pci_table
);
89 static struct pci_driver apci1710_pci_driver
= {
90 .name
= "addi_apci_1710",
91 .id_table
= apci1710_pci_table
,
92 .probe
= apci1710_pci_probe
,
93 .remove
= comedi_pci_auto_unconfig
,
95 module_comedi_pci_driver(apci1710_driver
, apci1710_pci_driver
);
97 MODULE_AUTHOR("Comedi http://www.comedi.org");
98 MODULE_DESCRIPTION("Comedi low-level driver");
99 MODULE_LICENSE("GPL");