]> git.karo-electronics.de Git - karo-tx-linux.git/blob - drivers/staging/comedi/drivers/addi_apci_2016.c
a792012bfe999780e274808f40cd127e05878073
[karo-tx-linux.git] / drivers / staging / comedi / drivers / addi_apci_2016.c
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_apci2016.c"
9 #include "addi-data/addi_common.c"
10
11 static const struct addi_board apci2016_boardtypes[] = {
12         {
13                 .pc_DriverName          = "apci2016",
14                 .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
15                 .i_DeviceId             = 0x1002,
16                 .i_IorangeBase0         = 128,
17                 .i_IorangeBase1         = APCI2016_ADDRESS_RANGE,
18                 .i_IorangeBase2         = 32,
19                 .i_PCIEeprom            = ADDIDATA_EEPROM,
20                 .pc_EepromChip          = ADDIDATA_S5920,
21                 .i_NbrDoChannel         = 16,
22                 .i_Timer                = 1,
23                 .reset                  = i_APCI2016_Reset,
24                 .do_config              = i_APCI2016_ConfigDigitalOutput,
25                 .do_bits                = apci2016_do_insn_bits,
26                 .timer_config           = i_APCI2016_ConfigWatchdog,
27                 .timer_write            = i_APCI2016_StartStopWriteWatchdog,
28                 .timer_read             = i_APCI2016_ReadWatchdog,
29         },
30 };
31
32 static struct comedi_driver apci2016_driver = {
33         .driver_name    = "addi_apci_2016",
34         .module         = THIS_MODULE,
35         .attach_pci     = addi_attach_pci,
36         .detach         = i_ADDI_Detach,
37         .num_names      = ARRAY_SIZE(apci2016_boardtypes),
38         .board_name     = &apci2016_boardtypes[0].pc_DriverName,
39         .offset         = sizeof(struct addi_board),
40 };
41
42 static int __devinit apci2016_pci_probe(struct pci_dev *dev,
43                                         const struct pci_device_id *ent)
44 {
45         return comedi_pci_auto_config(dev, &apci2016_driver);
46 }
47
48 static void __devexit apci2016_pci_remove(struct pci_dev *dev)
49 {
50         comedi_pci_auto_unconfig(dev);
51 }
52
53 static DEFINE_PCI_DEVICE_TABLE(apci2016_pci_table) = {
54         { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x1002) },
55         { 0 }
56 };
57 MODULE_DEVICE_TABLE(pci, apci2016_pci_table);
58
59 static struct pci_driver apci2016_pci_driver = {
60         .name           = "addi_apci_2016",
61         .id_table       = apci2016_pci_table,
62         .probe          = apci2016_pci_probe,
63         .remove         = __devexit_p(apci2016_pci_remove),
64 };
65 module_comedi_pci_driver(apci2016_driver, apci2016_pci_driver);
66
67 MODULE_AUTHOR("Comedi http://www.comedi.org");
68 MODULE_DESCRIPTION("Comedi low-level driver");
69 MODULE_LICENSE("GPL");