aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/comedi/drivers/pcmuio.c
diff options
context:
space:
mode:
authorH Hartley Sweeten <hsweeten@visionengravers.com>2013-12-05 16:54:06 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-12-06 13:10:02 -0800
commit0d1ead4809161867651b6f19e2cd793d2408abfd (patch)
tree701d826588a9dd00a80b205ee45093803a8af38e /drivers/staging/comedi/drivers/pcmuio.c
parentstaging: comedi: pcmuio: tidy up pcmuio_handle_asic_interrupt() (diff)
downloadlinux-dev-0d1ead4809161867651b6f19e2cd793d2408abfd.tar.xz
linux-dev-0d1ead4809161867651b6f19e2cd793d2408abfd.zip
staging: comedi: pcmuio: remove 'asic' member from subdevice private data
The 'asic' associated with a subdevice can be easily calculated. The functions that use this member in the subdevice private data can only be called by the subdevices that support interrupts. Just calculate the 'asic' when needed and remove the member variable and sanity checks. Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/comedi/drivers/pcmuio.c')
-rw-r--r--drivers/staging/comedi/drivers/pcmuio.c18
1 files changed, 3 insertions, 15 deletions
diff --git a/drivers/staging/comedi/drivers/pcmuio.c b/drivers/staging/comedi/drivers/pcmuio.c
index 8752d4d09f3f..57a52dafac47 100644
--- a/drivers/staging/comedi/drivers/pcmuio.c
+++ b/drivers/staging/comedi/drivers/pcmuio.c
@@ -130,8 +130,6 @@ static const struct pcmuio_board pcmuio_boards[] = {
struct pcmuio_subdev_private {
/* The below is only used for intr subdevices */
struct {
- /* if non-negative, this subdev has an interrupt asic */
- int asic;
/*
* subdev-relative channel mask for channels
* we are interested in
@@ -279,11 +277,7 @@ static void pcmuio_stop_intr(struct comedi_device *dev,
struct comedi_subdevice *s)
{
struct pcmuio_subdev_private *subpriv = s->private;
- int asic;
-
- asic = subpriv->intr.asic;
- if (asic < 0)
- return; /* not an interrupt subdev */
+ int asic = s->index / 2;
subpriv->intr.enabled_mask = 0;
subpriv->intr.active = 0;
@@ -399,14 +393,10 @@ static int pcmuio_start_intr(struct comedi_device *dev,
subpriv->intr.active = 0;
return 1;
} else {
- unsigned bits = 0, pol_bits = 0, n;
- int asic;
struct comedi_cmd *cmd = &s->async->cmd;
+ int asic = s->index / 2;
+ unsigned bits = 0, pol_bits = 0, n;
- asic = subpriv->intr.asic;
- if (asic < 0)
- return 1; /* not an interrupt
- subdev */
subpriv->intr.enabled_mask = 0;
subpriv->intr.active = 1;
if (cmd->chanlist) {
@@ -636,7 +626,6 @@ static int pcmuio_attach(struct comedi_device *dev, struct comedi_devconfig *it)
if ((sdev_no == 0 && dev->irq) ||
(sdev_no == 2 && devpriv->irq2)) {
/* setup the interrupt subdevice */
- subpriv->intr.asic = sdev_no / 2;
dev->read_subdev = s;
s->subdev_flags |= SDF_CMD_READ;
s->cancel = pcmuio_cancel;
@@ -644,7 +633,6 @@ static int pcmuio_attach(struct comedi_device *dev, struct comedi_devconfig *it)
s->do_cmdtest = pcmuio_cmdtest;
s->len_chanlist = s->n_chan;
} else {
- subpriv->intr.asic = -1;
s->len_chanlist = 1;
}
spin_lock_init(&subpriv->intr.spinlock);