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