Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 364006
b: refs/heads/master
c: 853fc89
h: refs/heads/master
v: v3
  • Loading branch information
H Hartley Sweeten authored and Greg Kroah-Hartman committed Apr 9, 2013
1 parent f95b514 commit 66bb84d
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 17 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: a4b279ba9586189c1d6bcc87bf9583b0c65e8155
refs/heads/master: 853fc892239b4fb1b4d8a80b6d8c3f65061ff5bb
34 changes: 18 additions & 16 deletions trunk/drivers/staging/comedi/drivers/rti800.c
Original file line number Diff line number Diff line change
Expand Up @@ -153,9 +153,7 @@ struct rti800_private {
enum {
adc_2comp, adc_straight
} adc_coding;
enum {
dac_2comp, dac_straight
} dac0_coding, dac1_coding;
bool dac_2comp[2];
const struct comedi_lrange *ao_range_type_list[2];
unsigned int ao_readback[2];
int muxgain_bits;
Expand Down Expand Up @@ -235,24 +233,28 @@ static int rti800_ao_insn_read(struct comedi_device *dev,

static int rti800_ao_insn_write(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn, unsigned int *data)
struct comedi_insn *insn,
unsigned int *data)
{
struct rti800_private *devpriv = dev->private;
int chan = CR_CHAN(insn->chanspec);
int d;
int reg_lo = chan ? RTI800_DAC1LO : RTI800_DAC0LO;
int reg_hi = chan ? RTI800_DAC1HI : RTI800_DAC0HI;
int val = devpriv->ao_readback[chan];
int i;

for (i = 0; i < insn->n; i++) {
devpriv->ao_readback[chan] = d = data[i];
if (devpriv->dac0_coding == dac_2comp)
d ^= 0x800;

outb(d & 0xff,
dev->iobase + (chan ? RTI800_DAC1LO : RTI800_DAC0LO));
outb(d >> 8,
dev->iobase + (chan ? RTI800_DAC1HI : RTI800_DAC0HI));
val = data[i];
if (devpriv->dac_2comp[chan])
val ^= 0x800;

outb(val & 0xff, dev->iobase + reg_lo);
outb((val >> 8) & 0xff, dev->iobase + reg_hi);
}
return i;

devpriv->ao_readback[chan] = val;

return insn->n;
}

static int rti800_di_insn_bits(struct comedi_device *dev,
Expand Down Expand Up @@ -325,8 +327,8 @@ static int rti800_attach(struct comedi_device *dev, struct comedi_devconfig *it)
dev->private = devpriv;

devpriv->adc_coding = it->options[4];
devpriv->dac0_coding = it->options[6];
devpriv->dac1_coding = it->options[8];
devpriv->dac_2comp[0] = (it->options[6] == 0);
devpriv->dac_2comp[1] = (it->options[8] == 0);
devpriv->muxgain_bits = -1;

ret = comedi_alloc_subdevices(dev, 4);
Expand Down

0 comments on commit 66bb84d

Please sign in to comment.