1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56#include <linux/module.h>
57#include "../comedidev.h"
58
59#include <linux/delay.h>
60
61#include "8253.h"
62#include "8255.h"
63#include "comedi_fc.h"
64#include "ni_labpc.h"
65
66#include <pcmcia/cistpl.h>
67#include <pcmcia/cisreg.h>
68#include <pcmcia/ds.h>
69
70static const struct labpc_boardinfo labpc_cs_boards[] = {
71 {
72 .name = "daqcard-1200",
73 .ai_speed = 10000,
74 .has_ao = 1,
75 .is_labpc1200 = 1,
76 },
77};
78
79static int labpc_auto_attach(struct comedi_device *dev,
80 unsigned long context)
81{
82 struct pcmcia_device *link = comedi_to_pcmcia_dev(dev);
83 struct labpc_private *devpriv;
84 int ret;
85
86
87 dev->board_ptr = &labpc_cs_boards[0];
88
89 link->config_flags |= CONF_AUTO_SET_IO |
90 CONF_ENABLE_IRQ | CONF_ENABLE_PULSE_IRQ;
91 ret = comedi_pcmcia_enable(dev, NULL);
92 if (ret)
93 return ret;
94 dev->iobase = link->resource[0]->start;
95
96 if (!link->irq)
97 return -EINVAL;
98
99 devpriv = comedi_alloc_devpriv(dev, sizeof(*devpriv));
100 if (!devpriv)
101 return -ENOMEM;
102
103 return labpc_common_attach(dev, link->irq, IRQF_SHARED);
104}
105
106static struct comedi_driver driver_labpc_cs = {
107 .driver_name = "ni_labpc_cs",
108 .module = THIS_MODULE,
109 .auto_attach = labpc_auto_attach,
110 .detach = comedi_pcmcia_disable,
111};
112
113static int labpc_cs_attach(struct pcmcia_device *link)
114{
115 return comedi_pcmcia_auto_config(link, &driver_labpc_cs);
116}
117
118static const struct pcmcia_device_id labpc_cs_ids[] = {
119 PCMCIA_DEVICE_MANF_CARD(0x010b, 0x0103),
120 PCMCIA_DEVICE_NULL
121};
122MODULE_DEVICE_TABLE(pcmcia, labpc_cs_ids);
123
124static struct pcmcia_driver labpc_cs_driver = {
125 .name = "daqcard-1200",
126 .owner = THIS_MODULE,
127 .id_table = labpc_cs_ids,
128 .probe = labpc_cs_attach,
129 .remove = comedi_pcmcia_auto_unconfig,
130};
131module_comedi_pcmcia_driver(driver_labpc_cs, labpc_cs_driver);
132
133MODULE_DESCRIPTION("Comedi driver for National Instruments Lab-PC");
134MODULE_AUTHOR("Frank Mori Hess <fmhess@users.sourceforge.net>");
135MODULE_LICENSE("GPL");
136