From: H Hartley Sweeten Date: Mon, 9 Dec 2013 22:31:15 +0000 (-0700) Subject: staging: comedi: pcmmio: tidy up pcmmio_handle_dio_intr() X-Git-Tag: firefly_0821_release~176^2~4489^2~311 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=d7c41e83e2c3ae970d41187ae31fad50ccd63856;p=firefly-linux-kernel-4.4.55.git staging: comedi: pcmmio: tidy up pcmmio_handle_dio_intr() Refactor the code to remove some of the indent levels. Remove 'mytrig', the shift and mask end up making it the same as 'triggered' anyway. Signed-off-by: H Hartley Sweeten Reviewed-by: Ian Abbott Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/comedi/drivers/pcmmio.c b/drivers/staging/comedi/drivers/pcmmio.c index 37471bb3d99c..055781dc7875 100644 --- a/drivers/staging/comedi/drivers/pcmmio.c +++ b/drivers/staging/comedi/drivers/pcmmio.c @@ -359,50 +359,51 @@ static void pcmmio_handle_dio_intr(struct comedi_device *dev, unsigned int triggered) { struct pcmmio_private *devpriv = dev->private; + unsigned int oldevents = s->async->events; + unsigned int len = s->async->cmd.chanlist_len; + unsigned int val = 0; unsigned long flags; - unsigned oldevents; + int i; spin_lock_irqsave(&devpriv->spinlock, flags); - oldevents = s->async->events; + if (!devpriv->active) + goto done; - if (devpriv->active) { - unsigned mytrig = ((triggered >> 0) & ((1 << 24) - 1)) << 0; - if (mytrig & devpriv->enabled_mask) { - unsigned int val = 0; - unsigned int n, ch, len; + if (!(triggered & devpriv->enabled_mask)) + goto done; - len = s->async->cmd.chanlist_len; - for (n = 0; n < len; n++) { - ch = CR_CHAN(s->async->cmd.chanlist[n]); - if (mytrig & (1U << ch)) - val |= (1U << n); - } - /* Write the scan to the buffer. */ - if (comedi_buf_put(s->async, val) && - comedi_buf_put (s->async, val >> 16)) { - s->async->events |= (COMEDI_CB_BLOCK | COMEDI_CB_EOS); - } else { - /* Overflow! Stop acquisition!! */ + for (i = 0; i < len; i++) { + unsigned int chan = CR_CHAN(s->async->cmd.chanlist[i]); + + if (triggered & (1 << chan)) + val |= (1 << i); + } + + /* Write the scan to the buffer. */ + if (comedi_buf_put(s->async, val) && + comedi_buf_put (s->async, val >> 16)) { + s->async->events |= (COMEDI_CB_BLOCK | COMEDI_CB_EOS); + } else { + /* Overflow! Stop acquisition!! */ + /* TODO: STOP_ACQUISITION_CALL_HERE!! */ + pcmmio_stop_intr(dev, s); + } + + /* Check for end of acquisition. */ + if (!devpriv->continuous) { + /* stop_src == TRIG_COUNT */ + if (devpriv->stop_count > 0) { + devpriv->stop_count--; + if (devpriv->stop_count == 0) { + s->async->events |= COMEDI_CB_EOA; /* TODO: STOP_ACQUISITION_CALL_HERE!! */ pcmmio_stop_intr(dev, s); } - - /* Check for end of acquisition. */ - if (!devpriv->continuous) { - /* stop_src == TRIG_COUNT */ - if (devpriv->stop_count > 0) { - devpriv->stop_count--; - if (devpriv->stop_count == 0) { - s->async->events |= COMEDI_CB_EOA; - /* TODO: STOP_ACQUISITION_CALL_HERE!! */ - pcmmio_stop_intr(dev, s); - } - } - } } } +done: spin_unlock_irqrestore(&devpriv->spinlock, flags); if (oldevents != s->async->events)