From 182d3ed8a26a9f3cfa544cca07bb4556c106391e Mon Sep 17 00:00:00 2001 From: Ian Abbott Date: Wed, 20 Jan 2010 13:04:45 +0000 Subject: [PATCH] --- yaml --- r: 186671 b: refs/heads/master c: 13de4f000ec491b16a820e4ed59de2c98b7807be h: refs/heads/master i: 186669: e97c59c7962db8f36c0f04c8c1852c6947c25021 186667: 28e1bcfb5eaa5dc4e343c4588bc6f6401c3fd10f 186663: e126401d6193eb73a9e95ec6c86435819392e16d 186655: aecd6cc718ca6fee2eb75b13209350e7f50267ac v: v3 --- [refs] | 2 +- trunk/drivers/staging/comedi/drivers/pcl816.c | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 3fe1b6c4c6e0..f2167fffee69 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7edfa10689615255e65909bb893fd8f8620cff92 +refs/heads/master: 13de4f000ec491b16a820e4ed59de2c98b7807be diff --git a/trunk/drivers/staging/comedi/drivers/pcl816.c b/trunk/drivers/staging/comedi/drivers/pcl816.c index 852fe2458fdc..5c88ddc1fc05 100644 --- a/trunk/drivers/staging/comedi/drivers/pcl816.c +++ b/trunk/drivers/staging/comedi/drivers/pcl816.c @@ -202,6 +202,7 @@ struct pcl816_private { unsigned int ai_act_chanlist[16]; /* MUX setting for actual AI operations */ unsigned int ai_act_chanlist_len; /* how long is actual MUX list */ unsigned int ai_act_chanlist_pos; /* actual position in MUX list */ + unsigned int ai_n_chan; /* how many channels per scan */ unsigned int ai_poll_ptr; /* how many sampes transfer poll */ struct comedi_subdevice *sub_ai; /* ptr to AI subdevice */ #ifdef unused @@ -320,7 +321,9 @@ static irqreturn_t interrupt_pcl816_ai_mode13_int(int irq, void *d) if (++devpriv->ai_act_chanlist_pos >= devpriv->ai_act_chanlist_len) devpriv->ai_act_chanlist_pos = 0; - if (s->async->cur_chan == 0) { + s->async->cur_chan++; + if (s->async->cur_chan >= devpriv->ai_n_chan) { + s->async->cur_chan = 0; devpriv->ai_act_scan++; } @@ -353,6 +356,11 @@ static void transfer_from_dma_buf(struct comedi_device *dev, if (++devpriv->ai_act_chanlist_pos >= devpriv->ai_act_chanlist_len) { devpriv->ai_act_chanlist_pos = 0; + } + + s->async->cur_chan++; + if (s->async->cur_chan >= devpriv->ai_n_chan) { + s->async->cur_chan = 0; devpriv->ai_act_scan++; } @@ -647,6 +655,7 @@ static int pcl816_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s) return -EINVAL; udelay(1); + devpriv->ai_n_chan = cmd->chanlist_len; devpriv->ai_act_scan = 0; s->async->cur_chan = 0; devpriv->irq_blocked = 1;