aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/staging/comedi/drivers/comedi_parport.c65
1 files changed, 34 insertions, 31 deletions
diff --git a/drivers/staging/comedi/drivers/comedi_parport.c b/drivers/staging/comedi/drivers/comedi_parport.c
index 9530c47806cb..ba838fffa29e 100644
--- a/drivers/staging/comedi/drivers/comedi_parport.c
+++ b/drivers/staging/comedi/drivers/comedi_parport.c
@@ -90,26 +90,26 @@ pin, which can be used to wake up tasks.
90#define PARPORT_B 1 90#define PARPORT_B 1
91#define PARPORT_C 2 91#define PARPORT_C 2
92 92
93static int parport_attach(comedi_device * dev, comedi_devconfig * it); 93static int parport_attach(comedi_device *dev, comedi_devconfig *it);
94static int parport_detach(comedi_device * dev); 94static int parport_detach(comedi_device *dev);
95static comedi_driver driver_parport = { 95static comedi_driver driver_parport = {
96 driver_name:"comedi_parport", 96 .driver_name = "comedi_parport",
97 module:THIS_MODULE, 97 .module = THIS_MODULE,
98 attach:parport_attach, 98 .attach = parport_attach,
99 detach:parport_detach, 99 .detach = parport_detach,
100}; 100};
101 101
102COMEDI_INITCLEANUP(driver_parport); 102COMEDI_INITCLEANUP(driver_parport);
103 103
104typedef struct parport_private_struct { 104struct parport_private {
105 unsigned int a_data; 105 unsigned int a_data;
106 unsigned int c_data; 106 unsigned int c_data;
107 int enable_irq; 107 int enable_irq;
108} parport_private; 108};
109#define devpriv ((parport_private *)(dev->private)) 109#define devpriv ((struct parport_private *)(dev->private))
110 110
111static int parport_insn_a(comedi_device * dev, comedi_subdevice * s, 111static int parport_insn_a(comedi_device *dev, comedi_subdevice *s,
112 comedi_insn * insn, lsampl_t * data) 112 comedi_insn *insn, lsampl_t *data)
113{ 113{
114 if (data[0]) { 114 if (data[0]) {
115 devpriv->a_data &= ~data[0]; 115 devpriv->a_data &= ~data[0];
@@ -123,8 +123,8 @@ static int parport_insn_a(comedi_device * dev, comedi_subdevice * s,
123 return 2; 123 return 2;
124} 124}
125 125
126static int parport_insn_config_a(comedi_device * dev, comedi_subdevice * s, 126static int parport_insn_config_a(comedi_device *dev, comedi_subdevice *s,
127 comedi_insn * insn, lsampl_t * data) 127 comedi_insn *insn, lsampl_t *data)
128{ 128{
129 if (data[0]) { 129 if (data[0]) {
130 s->io_bits = 0xff; 130 s->io_bits = 0xff;
@@ -138,11 +138,12 @@ static int parport_insn_config_a(comedi_device * dev, comedi_subdevice * s,
138 return 1; 138 return 1;
139} 139}
140 140
141static int parport_insn_b(comedi_device * dev, comedi_subdevice * s, 141static int parport_insn_b(comedi_device *dev, comedi_subdevice *s,
142 comedi_insn * insn, lsampl_t * data) 142 comedi_insn *insn, lsampl_t *data)
143{ 143{
144 if (data[0]) { 144 if (data[0]) {
145 // should writes be ignored? 145 /* should writes be ignored? */
146 /* anyone??? */
146 } 147 }
147 148
148 data[1] = (inb(dev->iobase + PARPORT_B) >> 3); 149 data[1] = (inb(dev->iobase + PARPORT_B) >> 3);
@@ -150,8 +151,8 @@ static int parport_insn_b(comedi_device * dev, comedi_subdevice * s,
150 return 2; 151 return 2;
151} 152}
152 153
153static int parport_insn_c(comedi_device * dev, comedi_subdevice * s, 154static int parport_insn_c(comedi_device *dev, comedi_subdevice *s,
154 comedi_insn * insn, lsampl_t * data) 155 comedi_insn *insn, lsampl_t *data)
155{ 156{
156 data[0] &= 0x0f; 157 data[0] &= 0x0f;
157 if (data[0]) { 158 if (data[0]) {
@@ -166,8 +167,8 @@ static int parport_insn_c(comedi_device * dev, comedi_subdevice * s,
166 return 2; 167 return 2;
167} 168}
168 169
169static int parport_intr_insn(comedi_device * dev, comedi_subdevice * s, 170static int parport_intr_insn(comedi_device *dev, comedi_subdevice *s,
170 comedi_insn * insn, lsampl_t * data) 171 comedi_insn *insn, lsampl_t *data)
171{ 172{
172 if (insn->n < 1) 173 if (insn->n < 1)
173 return -EINVAL; 174 return -EINVAL;
@@ -176,8 +177,8 @@ static int parport_intr_insn(comedi_device * dev, comedi_subdevice * s,
176 return 2; 177 return 2;
177} 178}
178 179
179static int parport_intr_cmdtest(comedi_device * dev, comedi_subdevice * s, 180static int parport_intr_cmdtest(comedi_device *dev, comedi_subdevice *s,
180 comedi_cmd * cmd) 181 comedi_cmd *cmd)
181{ 182{
182 int err = 0; 183 int err = 0;
183 int tmp; 184 int tmp;
@@ -251,7 +252,7 @@ static int parport_intr_cmdtest(comedi_device * dev, comedi_subdevice * s,
251 return 0; 252 return 0;
252} 253}
253 254
254static int parport_intr_cmd(comedi_device * dev, comedi_subdevice * s) 255static int parport_intr_cmd(comedi_device *dev, comedi_subdevice *s)
255{ 256{
256 devpriv->c_data |= 0x10; 257 devpriv->c_data |= 0x10;
257 outb(devpriv->c_data, dev->iobase + PARPORT_C); 258 outb(devpriv->c_data, dev->iobase + PARPORT_C);
@@ -261,9 +262,9 @@ static int parport_intr_cmd(comedi_device * dev, comedi_subdevice * s)
261 return 0; 262 return 0;
262} 263}
263 264
264static int parport_intr_cancel(comedi_device * dev, comedi_subdevice * s) 265static int parport_intr_cancel(comedi_device *dev, comedi_subdevice *s)
265{ 266{
266 printk("parport_intr_cancel()\n"); 267 printk(KERN_DEBUG "parport_intr_cancel()\n");
267 268
268 devpriv->c_data &= ~0x10; 269 devpriv->c_data &= ~0x10;
269 outb(devpriv->c_data, dev->iobase + PARPORT_C); 270 outb(devpriv->c_data, dev->iobase + PARPORT_C);
@@ -279,7 +280,7 @@ static irqreturn_t parport_interrupt(int irq, void *d PT_REGS_ARG)
279 comedi_subdevice *s = dev->subdevices + 3; 280 comedi_subdevice *s = dev->subdevices + 3;
280 281
281 if (!devpriv->enable_irq) { 282 if (!devpriv->enable_irq) {
282 printk("comedi_parport: bogus irq, ignored\n"); 283 printk(KERN_ERR "comedi_parport: bogus irq, ignored\n");
283 return IRQ_NONE; 284 return IRQ_NONE;
284 } 285 }
285 286
@@ -290,7 +291,7 @@ static irqreturn_t parport_interrupt(int irq, void *d PT_REGS_ARG)
290 return IRQ_HANDLED; 291 return IRQ_HANDLED;
291} 292}
292 293
293static int parport_attach(comedi_device * dev, comedi_devconfig * it) 294static int parport_attach(comedi_device *dev, comedi_devconfig *it)
294{ 295{
295 int ret; 296 int ret;
296 unsigned int irq; 297 unsigned int irq;
@@ -298,7 +299,7 @@ static int parport_attach(comedi_device * dev, comedi_devconfig * it)
298 comedi_subdevice *s; 299 comedi_subdevice *s;
299 300
300 iobase = it->options[0]; 301 iobase = it->options[0];
301 printk("comedi%d: parport: 0x%04lx ", dev->minor, iobase); 302 printk(KERN_INFO "comedi%d: parport: 0x%04lx ", dev->minor, iobase);
302 if (!request_region(iobase, PARPORT_SIZE, "parport (comedi)")) { 303 if (!request_region(iobase, PARPORT_SIZE, "parport (comedi)")) {
303 printk("I/O port conflict\n"); 304 printk("I/O port conflict\n");
304 return -EIO; 305 return -EIO;
@@ -318,9 +319,11 @@ static int parport_attach(comedi_device * dev, comedi_devconfig * it)
318 } 319 }
319 dev->board_name = "parport"; 320 dev->board_name = "parport";
320 321
321 if ((ret = alloc_subdevices(dev, 4)) < 0) 322 ret = alloc_subdevices(dev, 4);
323 if (ret < 0)
322 return ret; 324 return ret;
323 if ((ret = alloc_private(dev, sizeof(parport_private))) < 0) 325 ret = alloc_private(dev, sizeof(struct parport_private));
326 if (ret < 0)
324 return ret; 327 return ret;
325 328
326 s = dev->subdevices + 0; 329 s = dev->subdevices + 0;
@@ -373,7 +376,7 @@ static int parport_attach(comedi_device * dev, comedi_devconfig * it)
373 return 1; 376 return 1;
374} 377}
375 378
376static int parport_detach(comedi_device * dev) 379static int parport_detach(comedi_device *dev)
377{ 380{
378 printk("comedi%d: parport: remove\n", dev->minor); 381 printk("comedi%d: parport: remove\n", dev->minor);
379 382