This member in the boardinfo is redundant. All the 8112 style boards
have > 8 analog input channels (16 actually). We can use that information
instead and remove the extra boardinfo.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Reviewed-by: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
struct pcl711_board {
const char *name;
unsigned int is_pcl711b:1;
struct pcl711_board {
const char *name;
unsigned int is_pcl711b:1;
- unsigned int is_8112:1;
int n_aichan;
int n_aochan;
int maxirq;
int n_aichan;
int n_aochan;
int maxirq;
.ai_range_type = &range_pcl711b_ai,
}, {
.name = "acl8112hg",
.ai_range_type = &range_pcl711b_ai,
}, {
.name = "acl8112hg",
.n_aichan = 16,
.n_aochan = 2,
.maxirq = 15,
.ai_range_type = &range_acl8112hg_ai,
}, {
.name = "acl8112dg",
.n_aichan = 16,
.n_aochan = 2,
.maxirq = 15,
.ai_range_type = &range_acl8112hg_ai,
}, {
.name = "acl8112dg",
.n_aichan = 16,
.n_aochan = 2,
.maxirq = 15,
.n_aichan = 16,
.n_aochan = 2,
.maxirq = 15,
}
static void pcl711_set_changain(struct comedi_device *dev,
}
static void pcl711_set_changain(struct comedi_device *dev,
+ struct comedi_subdevice *s,
- const struct pcl711_board *board = comedi_board(dev);
unsigned int chan = CR_CHAN(chanspec);
unsigned int range = CR_RANGE(chanspec);
unsigned int aref = CR_AREF(chanspec);
unsigned int chan = CR_CHAN(chanspec);
unsigned int range = CR_RANGE(chanspec);
unsigned int aref = CR_AREF(chanspec);
outb(range, dev->iobase + PCL711_GAIN);
outb(range, dev->iobase + PCL711_GAIN);
/* Select the correct MPC508A chip */
if (aref == AREF_DIFF) {
chan &= 0x7;
/* Select the correct MPC508A chip */
if (aref == AREF_DIFF) {
chan &= 0x7;
- pcl711_set_changain(dev, insn->chanspec);
+ pcl711_set_changain(dev, s, insn->chanspec);
pcl711_ai_set_mode(dev, PCL711_MODE_SOFTTRIG);
pcl711_ai_set_mode(dev, PCL711_MODE_SOFTTRIG);
int timer1, timer2;
struct comedi_cmd *cmd = &s->async->cmd;
int timer1, timer2;
struct comedi_cmd *cmd = &s->async->cmd;
- pcl711_set_changain(dev, cmd->chanlist[0]);
+ pcl711_set_changain(dev, s, cmd->chanlist[0]);
if (cmd->scan_begin_src == TRIG_TIMER) {
/*
if (cmd->scan_begin_src == TRIG_TIMER) {
/*
s = &dev->subdevices[0];
s->type = COMEDI_SUBD_AI;
s->subdev_flags = SDF_READABLE | SDF_GROUND;
s = &dev->subdevices[0];
s->type = COMEDI_SUBD_AI;
s->subdev_flags = SDF_READABLE | SDF_GROUND;
+ if (board->n_aichan > 8)
s->subdev_flags |= SDF_DIFF;
s->n_chan = board->n_aichan;
s->maxdata = 0xfff;
s->subdev_flags |= SDF_DIFF;
s->n_chan = board->n_aichan;
s->maxdata = 0xfff;