Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 354382
b: refs/heads/master
c: bd7807f
h: refs/heads/master
v: v3
  • Loading branch information
H Hartley Sweeten authored and Greg Kroah-Hartman committed Feb 5, 2013
1 parent cb18980 commit cf1e8cc
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 29 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: d35dcc89fc93d8f071fc7f88ae87697a77bb99d0
refs/heads/master: bd7807f96464d1053c6c5fd867461c6e64a766f1
52 changes: 24 additions & 28 deletions trunk/drivers/staging/comedi/drivers/quatech_daqp_cs.c
Original file line number Diff line number Diff line change
Expand Up @@ -255,6 +255,27 @@ static enum irqreturn daqp_interrupt(int irq, void *dev_id)
return IRQ_HANDLED;
}

static void daqp_ai_set_one_scanlist_entry(struct comedi_device *dev,
unsigned int chanspec,
int start)
{
unsigned int chan = CR_CHAN(chanspec);
unsigned int range = CR_RANGE(chanspec);
unsigned int aref = CR_AREF(chanspec);
unsigned int val;

val = DAQP_SCANLIST_CHANNEL(chan) | DAQP_SCANLIST_GAIN(range);

if (aref == AREF_DIFF)
val |= DAQP_SCANLIST_DIFFERENTIAL;

if (start)
val |= DAQP_SCANLIST_START;

outb(val & 0xff, dev->iobase + DAQP_SCANLIST);
outb((val >> 8) & 0xff, dev->iobase + DAQP_SCANLIST);
}

/* One-shot analog data acquisition routine */

static int daqp_ai_insn_read(struct comedi_device *dev,
Expand All @@ -278,18 +299,7 @@ static int daqp_ai_insn_read(struct comedi_device *dev,
outb(DAQP_COMMAND_RSTQ, dev->iobase + DAQP_COMMAND);

/* Program one scan list entry */

v = DAQP_SCANLIST_CHANNEL(CR_CHAN(insn->chanspec))
| DAQP_SCANLIST_GAIN(CR_RANGE(insn->chanspec));

if (CR_AREF(insn->chanspec) == AREF_DIFF)
v |= DAQP_SCANLIST_DIFFERENTIAL;


v |= DAQP_SCANLIST_START;

outb(v & 0xff, dev->iobase + DAQP_SCANLIST);
outb(v >> 8, dev->iobase + DAQP_SCANLIST);
daqp_ai_set_one_scanlist_entry(dev, insn->chanspec, 1);

/* Reset data FIFO (see page 28 of DAQP User's Manual) */

Expand Down Expand Up @@ -501,24 +511,10 @@ static int daqp_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
}

/* Program scan list */

for (i = 0; i < cmd->chanlist_len; i++) {
int start = (i == 0 || scanlist_start_on_every_entry);

int chanspec = cmd->chanlist[i];

/* Program one scan list entry */

v = DAQP_SCANLIST_CHANNEL(CR_CHAN(chanspec))
| DAQP_SCANLIST_GAIN(CR_RANGE(chanspec));

if (CR_AREF(chanspec) == AREF_DIFF)
v |= DAQP_SCANLIST_DIFFERENTIAL;

if (i == 0 || scanlist_start_on_every_entry)
v |= DAQP_SCANLIST_START;

outb(v & 0xff, dev->iobase + DAQP_SCANLIST);
outb(v >> 8, dev->iobase + DAQP_SCANLIST);
daqp_ai_set_one_scanlist_entry(dev, cmd->chanlist[i], start);
}

/* Now it's time to program the FIFO threshold, basically the
Expand Down

0 comments on commit cf1e8cc

Please sign in to comment.