aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/staging/comedi/drivers/addi_apci_1564.c23
1 files changed, 22 insertions, 1 deletions
diff --git a/drivers/staging/comedi/drivers/addi_apci_1564.c b/drivers/staging/comedi/drivers/addi_apci_1564.c
index 190b02663bd0..819255b2d67c 100644
--- a/drivers/staging/comedi/drivers/addi_apci_1564.c
+++ b/drivers/staging/comedi/drivers/addi_apci_1564.c
@@ -157,6 +157,18 @@ static int apci1564_do_insn_bits(struct comedi_device *dev,
157 return insn->n; 157 return insn->n;
158} 158}
159 159
160static int apci1564_diag_insn_bits(struct comedi_device *dev,
161 struct comedi_subdevice *s,
162 struct comedi_insn *insn,
163 unsigned int *data)
164{
165 struct apci1564_private *devpriv = dev->private;
166
167 data[1] = inl(devpriv->amcc_iobase + APCI1564_DO_INT_STATUS_REG) & 3;
168
169 return insn->n;
170}
171
160/* 172/*
161 * Change-Of-State (COS) interrupt configuration 173 * Change-Of-State (COS) interrupt configuration
162 * 174 *
@@ -373,7 +385,7 @@ static int apci1564_auto_attach(struct comedi_device *dev,
373 dev->irq = pcidev->irq; 385 dev->irq = pcidev->irq;
374 } 386 }
375 387
376 ret = comedi_alloc_subdevices(dev, 5); 388 ret = comedi_alloc_subdevices(dev, 6);
377 if (ret) 389 if (ret)
378 return ret; 390 return ret;
379 391
@@ -434,6 +446,15 @@ static int apci1564_auto_attach(struct comedi_device *dev,
434 if (ret) 446 if (ret)
435 return ret; 447 return ret;
436 448
449 /* Initialize the diagnostic status subdevice */
450 s = &dev->subdevices[5];
451 s->type = COMEDI_SUBD_DI;
452 s->subdev_flags = SDF_READABLE;
453 s->n_chan = 2;
454 s->maxdata = 1;
455 s->range_table = &range_digital;
456 s->insn_bits = apci1564_diag_insn_bits;
457
437 return 0; 458 return 0;
438} 459}
439 460