addi_apci_2032.c revision a690b7e535f2f97a3a05ee570715abeb60a8910f
13d41c44370a9a1e78e53c9997289347ec97d46eeH Hartley Sweeten#include "../comedidev.h" 23d41c44370a9a1e78e53c9997289347ec97d46eeH Hartley Sweeten#include "comedi_fc.h" 3bf36f012c7ddaff083bb0ef187feddf4d85507a0H Hartley Sweeten#include "amcc_s5933.h" 43d41c44370a9a1e78e53c9997289347ec97d46eeH Hartley Sweeten 53d41c44370a9a1e78e53c9997289347ec97d46eeH Hartley Sweeten#include "addi-data/addi_common.h" 63d41c44370a9a1e78e53c9997289347ec97d46eeH Hartley Sweeten 7bf6a1578c10a4f3ef94a3c744267f18f9c3642bdH Hartley Sweeten#include "addi-data/addi_eeprom.c" 8bf6a1578c10a4f3ef94a3c744267f18f9c3642bdH Hartley Sweeten#include "addi-data/hwdrv_apci2032.c" 920a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten#include "addi-data/addi_common.c" 10317285d71acccbda2fbab7e53d6b33c52a151a32H Hartley Sweeten 1120a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweetenstatic const struct addi_board apci2032_boardtypes[] = { 12c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten { 13c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci2032", 14c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_VendorId = PCI_VENDOR_ID_ADDIDATA, 15c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_DeviceId = 0x1004, 16c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase0 = 4, 17c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = APCI2032_ADDRESS_RANGE, 18c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_EEPROM, 19c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_93C76, 20c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDoChannel = 32, 21c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_DoMaxdata = 0xffffffff, 22c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_Timer = 1, 23c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI2032_Interrupt, 24c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .reset = i_APCI2032_Reset, 25c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .do_config = i_APCI2032_ConfigDigitalOutput, 2606bd743ff823e47da504a4a322e7a0dd02a11197H Hartley Sweeten .do_bits = apci2032_do_insn_bits, 27c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .do_read = i_APCI2032_ReadInterruptStatus, 28c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .timer_config = i_APCI2032_ConfigWatchdog, 29c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .timer_write = i_APCI2032_StartStopWriteWatchdog, 30c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .timer_read = i_APCI2032_ReadWatchdog, 31c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten }, 32c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten}; 33c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten 3420a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweetenstatic struct comedi_driver apci2032_driver = { 3520a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten .driver_name = "addi_apci_2032", 3620a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten .module = THIS_MODULE, 3792cba8f3b42e1cb8211b64e91618102ecc8f0a6dH Hartley Sweeten .auto_attach = addi_auto_attach, 3820a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten .detach = i_ADDI_Detach, 3920a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten .num_names = ARRAY_SIZE(apci2032_boardtypes), 4020a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten .board_name = &apci2032_boardtypes[0].pc_DriverName, 4120a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten .offset = sizeof(struct addi_board), 4220a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten}; 4320a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten 44a690b7e535f2f97a3a05ee570715abeb60a8910fBill Pembertonstatic int apci2032_pci_probe(struct pci_dev *dev, 4520a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten const struct pci_device_id *ent) 4620a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten{ 4720a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten return comedi_pci_auto_config(dev, &apci2032_driver); 4820a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten} 4920a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten 5020a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweetenstatic void __devexit apci2032_pci_remove(struct pci_dev *dev) 5120a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten{ 5220a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten comedi_pci_auto_unconfig(dev); 5320a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten} 5420a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten 5520a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweetenstatic DEFINE_PCI_DEVICE_TABLE(apci2032_pci_table) = { 56317285d71acccbda2fbab7e53d6b33c52a151a32H Hartley Sweeten { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x1004) }, 57317285d71acccbda2fbab7e53d6b33c52a151a32H Hartley Sweeten { 0 } 58317285d71acccbda2fbab7e53d6b33c52a151a32H Hartley Sweeten}; 5920a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley SweetenMODULE_DEVICE_TABLE(pci, apci2032_pci_table); 60317285d71acccbda2fbab7e53d6b33c52a151a32H Hartley Sweeten 6120a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweetenstatic struct pci_driver apci2032_pci_driver = { 6220a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten .name = "addi_apci_2032", 6320a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten .id_table = apci2032_pci_table, 6420a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten .probe = apci2032_pci_probe, 65a471eace7baa40cdf16d3f26b2f78ddce613ca8fBill Pemberton .remove = apci2032_pci_remove, 6620a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten}; 6720a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweetenmodule_comedi_pci_driver(apci2032_driver, apci2032_pci_driver); 6890f703d30dd3e0c16ff80f35e34e511385a05ad5Arun Thomas 6990f703d30dd3e0c16ff80f35e34e511385a05ad5Arun ThomasMODULE_AUTHOR("Comedi http://www.comedi.org"); 7090f703d30dd3e0c16ff80f35e34e511385a05ad5Arun ThomasMODULE_DESCRIPTION("Comedi low-level driver"); 7190f703d30dd3e0c16ff80f35e34e511385a05ad5Arun ThomasMODULE_LICENSE("GPL"); 72