summaryrefslogtreecommitdiffstats
path: root/drivers/staging
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/staging')
-rw-r--r--drivers/staging/comedi/drivers/das800.c15
1 files changed, 6 insertions, 9 deletions
diff --git a/drivers/staging/comedi/drivers/das800.c b/drivers/staging/comedi/drivers/das800.c
index 9eced620551..bb0c40627ae 100644
--- a/drivers/staging/comedi/drivers/das800.c
+++ b/drivers/staging/comedi/drivers/das800.c
@@ -407,25 +407,22 @@ static int das800_ai_do_cmd(struct comedi_device *dev,
{
const struct das800_board *thisboard = comedi_board(dev);
struct das800_private *devpriv = dev->private;
- int startChan, endChan, scan, gain;
+ struct comedi_async *async = s->async;
+ unsigned int gain = CR_RANGE(async->cmd.chanlist[0]);
+ unsigned int start_chan = CR_CHAN(async->cmd.chanlist[0]);
+ unsigned int end_chan = (start_chan + async->cmd.chanlist_len - 1) % 8;
+ unsigned int scan_chans = (end_chan << 3) | start_chan;
int conv_bits;
unsigned long irq_flags;
- struct comedi_async *async = s->async;
das800_disable(dev);
- /* set channel scan limits */
- startChan = CR_CHAN(async->cmd.chanlist[0]);
- endChan = (startChan + async->cmd.chanlist_len - 1) % 8;
- scan = (endChan << 3) | startChan;
-
spin_lock_irqsave(&dev->spinlock, irq_flags);
/* set scan limits */
- das800_ind_write(dev, scan, SCAN_LIMITS);
+ das800_ind_write(dev, scan_chans, SCAN_LIMITS);
spin_unlock_irqrestore(&dev->spinlock, irq_flags);
/* set gain */
- gain = CR_RANGE(async->cmd.chanlist[0]);
if (thisboard->resolution == 12 && gain > 0)
gain += 0x7;
gain &= 0xf;