staging: comedi: addi_apci_1516: fix digital input 'insn_bits' function
[firefly-linux-kernel-4.4.55.git] / drivers / staging / comedi / drivers / addi_apci_1516.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_apci1516.c"
9 #include "addi-data/addi_common.c"
10
11 static const struct addi_board apci1516_boardtypes[] = {
12         {
13                 .pc_DriverName          = "apci1516",
14                 .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
15                 .i_DeviceId             = 0x1001,
16                 .i_IorangeBase0         = 128,
17                 .i_IorangeBase1         = APCI1516_ADDRESS_RANGE,
18                 .i_IorangeBase2         = 32,
19                 .i_PCIEeprom            = ADDIDATA_EEPROM,
20                 .pc_EepromChip          = ADDIDATA_S5920,
21                 .i_NbrDiChannel         = 8,
22                 .i_NbrDoChannel         = 8,
23                 .i_Timer                = 1,
24                 .reset                  = i_APCI1516_Reset,
25                 .di_bits                = apci1516_di_insn_bits,
26                 .do_config              = i_APCI1516_ConfigDigitalOutput,
27                 .do_write               = i_APCI1516_WriteDigitalOutput,
28                 .do_bits                = i_APCI1516_ReadDigitalOutput,
29                 .timer_config           = i_APCI1516_ConfigWatchdog,
30                 .timer_write            = i_APCI1516_StartStopWriteWatchdog,
31                 .timer_read             = i_APCI1516_ReadWatchdog,
32         },
33 };
34
35 static struct comedi_driver apci1516_driver = {
36         .driver_name    = "addi_apci_1516",
37         .module         = THIS_MODULE,
38         .attach_pci     = addi_attach_pci,
39         .detach         = i_ADDI_Detach,
40         .num_names      = ARRAY_SIZE(apci1516_boardtypes),
41         .board_name     = &apci1516_boardtypes[0].pc_DriverName,
42         .offset         = sizeof(struct addi_board),
43 };
44
45 static int __devinit apci1516_pci_probe(struct pci_dev *dev,
46                                         const struct pci_device_id *ent)
47 {
48         return comedi_pci_auto_config(dev, &apci1516_driver);
49 }
50
51 static void __devexit apci1516_pci_remove(struct pci_dev *dev)
52 {
53         comedi_pci_auto_unconfig(dev);
54 }
55
56 static DEFINE_PCI_DEVICE_TABLE(apci1516_pci_table) = {
57         { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x1001) },
58         { 0 }
59 };
60 MODULE_DEVICE_TABLE(pci, apci1516_pci_table);
61
62 static struct pci_driver apci1516_pci_driver = {
63         .name           = "addi_apci_1516",
64         .id_table       = apci1516_pci_table,
65         .probe          = apci1516_pci_probe,
66         .remove         = __devexit_p(apci1516_pci_remove),
67 };
68 module_comedi_pci_driver(apci1516_driver, apci1516_pci_driver);
69
70 MODULE_AUTHOR("Comedi http://www.comedi.org");
71 MODULE_DESCRIPTION("Comedi low-level driver");
72 MODULE_LICENSE("GPL");