Commit d493f213 authored by H Hartley Sweeten's avatar H Hartley Sweeten Committed by Greg Kroah-Hartman

staging: comedi: remove thisboard macro in the das16 driver

The 'thisboard' macro depends on having a local variable with
a magic name. The CodingStyle document suggests not doing this
to avoid confusion. Remove the macro and use the comedi_board()
inline helper to get the dev->board_ptr information.
Signed-off-by: default avatarH Hartley Sweeten <hsweeten@visionengravers.com>
Cc: Ian Abbott <abbotti@mev.co.uk>
Cc: Mori Hess <fmhess@users.sourceforge.net>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 4c354b49
...@@ -393,11 +393,11 @@ struct das16_private_struct { ...@@ -393,11 +393,11 @@ struct das16_private_struct {
volatile short timer_mode; /* true if using timer mode */ volatile short timer_mode; /* true if using timer mode */
}; };
#define devpriv ((struct das16_private_struct *)(dev->private)) #define devpriv ((struct das16_private_struct *)(dev->private))
#define thisboard ((struct das16_board *)(dev->board_ptr))
static int das16_cmd_test(struct comedi_device *dev, struct comedi_subdevice *s, static int das16_cmd_test(struct comedi_device *dev, struct comedi_subdevice *s,
struct comedi_cmd *cmd) struct comedi_cmd *cmd)
{ {
const struct das16_board *board = comedi_board(dev);
int err = 0, tmp; int err = 0, tmp;
int gain, start_chan, i; int gain, start_chan, i;
int mask; int mask;
...@@ -411,7 +411,7 @@ static int das16_cmd_test(struct comedi_device *dev, struct comedi_subdevice *s, ...@@ -411,7 +411,7 @@ static int das16_cmd_test(struct comedi_device *dev, struct comedi_subdevice *s,
tmp = cmd->scan_begin_src; tmp = cmd->scan_begin_src;
mask = TRIG_FOLLOW; mask = TRIG_FOLLOW;
/* if board supports burst mode */ /* if board supports burst mode */
if (thisboard->size > 0x400) if (board->size > 0x400)
mask |= TRIG_TIMER | TRIG_EXT; mask |= TRIG_TIMER | TRIG_EXT;
cmd->scan_begin_src &= mask; cmd->scan_begin_src &= mask;
if (!cmd->scan_begin_src || tmp != cmd->scan_begin_src) if (!cmd->scan_begin_src || tmp != cmd->scan_begin_src)
...@@ -420,7 +420,7 @@ static int das16_cmd_test(struct comedi_device *dev, struct comedi_subdevice *s, ...@@ -420,7 +420,7 @@ static int das16_cmd_test(struct comedi_device *dev, struct comedi_subdevice *s,
tmp = cmd->convert_src; tmp = cmd->convert_src;
mask = TRIG_TIMER | TRIG_EXT; mask = TRIG_TIMER | TRIG_EXT;
/* if board supports burst mode */ /* if board supports burst mode */
if (thisboard->size > 0x400) if (board->size > 0x400)
mask |= TRIG_NOW; mask |= TRIG_NOW;
cmd->convert_src &= mask; cmd->convert_src &= mask;
if (!cmd->convert_src || tmp != cmd->convert_src) if (!cmd->convert_src || tmp != cmd->convert_src)
...@@ -483,15 +483,15 @@ static int das16_cmd_test(struct comedi_device *dev, struct comedi_subdevice *s, ...@@ -483,15 +483,15 @@ static int das16_cmd_test(struct comedi_device *dev, struct comedi_subdevice *s,
/* check against maximum frequency */ /* check against maximum frequency */
if (cmd->scan_begin_src == TRIG_TIMER) { if (cmd->scan_begin_src == TRIG_TIMER) {
if (cmd->scan_begin_arg < if (cmd->scan_begin_arg <
thisboard->ai_speed * cmd->chanlist_len) { board->ai_speed * cmd->chanlist_len) {
cmd->scan_begin_arg = cmd->scan_begin_arg =
thisboard->ai_speed * cmd->chanlist_len; board->ai_speed * cmd->chanlist_len;
err++; err++;
} }
} }
if (cmd->convert_src == TRIG_TIMER) { if (cmd->convert_src == TRIG_TIMER) {
if (cmd->convert_arg < thisboard->ai_speed) { if (cmd->convert_arg < board->ai_speed) {
cmd->convert_arg = thisboard->ai_speed; cmd->convert_arg = board->ai_speed;
err++; err++;
} }
} }
...@@ -614,6 +614,7 @@ static unsigned int das16_set_pacer(struct comedi_device *dev, unsigned int ns, ...@@ -614,6 +614,7 @@ static unsigned int das16_set_pacer(struct comedi_device *dev, unsigned int ns,
static int das16_cmd_exec(struct comedi_device *dev, struct comedi_subdevice *s) static int das16_cmd_exec(struct comedi_device *dev, struct comedi_subdevice *s)
{ {
const struct das16_board *board = comedi_board(dev);
struct comedi_async *async = s->async; struct comedi_async *async = s->async;
struct comedi_cmd *cmd = &async->cmd; struct comedi_cmd *cmd = &async->cmd;
unsigned int byte; unsigned int byte;
...@@ -637,7 +638,7 @@ static int das16_cmd_exec(struct comedi_device *dev, struct comedi_subdevice *s) ...@@ -637,7 +638,7 @@ static int das16_cmd_exec(struct comedi_device *dev, struct comedi_subdevice *s)
cmd->stop_arg * cmd->chanlist_len * sizeof(uint16_t); cmd->stop_arg * cmd->chanlist_len * sizeof(uint16_t);
/* disable conversions for das1600 mode */ /* disable conversions for das1600 mode */
if (thisboard->size > 0x400) if (board->size > 0x400)
outb(DAS1600_CONV_DISABLE, dev->iobase + DAS1600_CONV); outb(DAS1600_CONV_DISABLE, dev->iobase + DAS1600_CONV);
/* set scan limits */ /* set scan limits */
...@@ -648,9 +649,9 @@ static int das16_cmd_exec(struct comedi_device *dev, struct comedi_subdevice *s) ...@@ -648,9 +649,9 @@ static int das16_cmd_exec(struct comedi_device *dev, struct comedi_subdevice *s)
/* set gain (this is also burst rate register but according to /* set gain (this is also burst rate register but according to
* computer boards manual, burst rate does nothing, even on * computer boards manual, burst rate does nothing, even on
* keithley cards) */ * keithley cards) */
if (thisboard->ai_pg != das16_pg_none) { if (board->ai_pg != das16_pg_none) {
range = CR_RANGE(cmd->chanlist[0]); range = CR_RANGE(cmd->chanlist[0]);
outb((das16_gainlists[thisboard->ai_pg])[range], outb((das16_gainlists[board->ai_pg])[range],
dev->iobase + DAS16_GAIN); dev->iobase + DAS16_GAIN);
} }
...@@ -663,7 +664,7 @@ static int das16_cmd_exec(struct comedi_device *dev, struct comedi_subdevice *s) ...@@ -663,7 +664,7 @@ static int das16_cmd_exec(struct comedi_device *dev, struct comedi_subdevice *s)
/* enable counters */ /* enable counters */
byte = 0; byte = 0;
/* Enable burst mode if appropriate. */ /* Enable burst mode if appropriate. */
if (thisboard->size > 0x400) { if (board->size > 0x400) {
if (cmd->convert_src == TRIG_NOW) { if (cmd->convert_src == TRIG_NOW) {
outb(DAS1600_BURST_VAL, dev->iobase + DAS1600_BURST); outb(DAS1600_BURST_VAL, dev->iobase + DAS1600_BURST);
/* set burst length */ /* set burst length */
...@@ -710,7 +711,7 @@ static int das16_cmd_exec(struct comedi_device *dev, struct comedi_subdevice *s) ...@@ -710,7 +711,7 @@ static int das16_cmd_exec(struct comedi_device *dev, struct comedi_subdevice *s)
outb(devpriv->control_state, dev->iobase + DAS16_CONTROL); outb(devpriv->control_state, dev->iobase + DAS16_CONTROL);
/* Enable conversions if using das1600 mode */ /* Enable conversions if using das1600 mode */
if (thisboard->size > 0x400) if (board->size > 0x400)
outb(0, dev->iobase + DAS1600_CONV); outb(0, dev->iobase + DAS1600_CONV);
...@@ -719,6 +720,7 @@ static int das16_cmd_exec(struct comedi_device *dev, struct comedi_subdevice *s) ...@@ -719,6 +720,7 @@ static int das16_cmd_exec(struct comedi_device *dev, struct comedi_subdevice *s)
static int das16_cancel(struct comedi_device *dev, struct comedi_subdevice *s) static int das16_cancel(struct comedi_device *dev, struct comedi_subdevice *s)
{ {
const struct das16_board *board = comedi_board(dev);
unsigned long flags; unsigned long flags;
spin_lock_irqsave(&dev->spinlock, flags); spin_lock_irqsave(&dev->spinlock, flags);
...@@ -735,7 +737,7 @@ static int das16_cancel(struct comedi_device *dev, struct comedi_subdevice *s) ...@@ -735,7 +737,7 @@ static int das16_cancel(struct comedi_device *dev, struct comedi_subdevice *s)
} }
/* disable burst mode */ /* disable burst mode */
if (thisboard->size > 0x400) if (board->size > 0x400)
outb(0, dev->iobase + DAS1600_BURST); outb(0, dev->iobase + DAS1600_BURST);
...@@ -755,6 +757,7 @@ static void das16_reset(struct comedi_device *dev) ...@@ -755,6 +757,7 @@ static void das16_reset(struct comedi_device *dev)
static int das16_ai_rinsn(struct comedi_device *dev, struct comedi_subdevice *s, static int das16_ai_rinsn(struct comedi_device *dev, struct comedi_subdevice *s,
struct comedi_insn *insn, unsigned int *data) struct comedi_insn *insn, unsigned int *data)
{ {
const struct das16_board *board = comedi_board(dev);
int i, n; int i, n;
int range; int range;
int chan; int chan;
...@@ -770,9 +773,9 @@ static int das16_ai_rinsn(struct comedi_device *dev, struct comedi_subdevice *s, ...@@ -770,9 +773,9 @@ static int das16_ai_rinsn(struct comedi_device *dev, struct comedi_subdevice *s,
outb(chan, dev->iobase + DAS16_MUX); outb(chan, dev->iobase + DAS16_MUX);
/* set gain */ /* set gain */
if (thisboard->ai_pg != das16_pg_none) { if (board->ai_pg != das16_pg_none) {
range = CR_RANGE(insn->chanspec); range = CR_RANGE(insn->chanspec);
outb((das16_gainlists[thisboard->ai_pg])[range], outb((das16_gainlists[board->ai_pg])[range],
dev->iobase + DAS16_GAIN); dev->iobase + DAS16_GAIN);
} }
...@@ -790,7 +793,7 @@ static int das16_ai_rinsn(struct comedi_device *dev, struct comedi_subdevice *s, ...@@ -790,7 +793,7 @@ static int das16_ai_rinsn(struct comedi_device *dev, struct comedi_subdevice *s,
} }
msb = inb(dev->iobase + DAS16_AI_MSB); msb = inb(dev->iobase + DAS16_AI_MSB);
lsb = inb(dev->iobase + DAS16_AI_LSB); lsb = inb(dev->iobase + DAS16_AI_LSB);
if (thisboard->ai_nbits == 12) if (board->ai_nbits == 12)
data[n] = ((lsb >> 4) & 0xf) | (msb << 4); data[n] = ((lsb >> 4) & 0xf) | (msb << 4);
else else
data[n] = lsb | (msb << 8); data[n] = lsb | (msb << 8);
...@@ -835,6 +838,7 @@ static int das16_do_wbits(struct comedi_device *dev, struct comedi_subdevice *s, ...@@ -835,6 +838,7 @@ static int das16_do_wbits(struct comedi_device *dev, struct comedi_subdevice *s,
static int das16_ao_winsn(struct comedi_device *dev, struct comedi_subdevice *s, static int das16_ao_winsn(struct comedi_device *dev, struct comedi_subdevice *s,
struct comedi_insn *insn, unsigned int *data) struct comedi_insn *insn, unsigned int *data)
{ {
const struct das16_board *board = comedi_board(dev);
int i; int i;
int lsb, msb; int lsb, msb;
int chan; int chan;
...@@ -842,7 +846,7 @@ static int das16_ao_winsn(struct comedi_device *dev, struct comedi_subdevice *s, ...@@ -842,7 +846,7 @@ static int das16_ao_winsn(struct comedi_device *dev, struct comedi_subdevice *s,
chan = CR_CHAN(insn->chanspec); chan = CR_CHAN(insn->chanspec);
for (i = 0; i < insn->n; i++) { for (i = 0; i < insn->n; i++) {
if (thisboard->ao_nbits == 12) { if (board->ao_nbits == 12) {
lsb = (data[i] << 4) & 0xff; lsb = (data[i] << 4) & 0xff;
msb = (data[i] >> 4) & 0xff; msb = (data[i] >> 4) & 0xff;
} else { } else {
...@@ -892,6 +896,7 @@ static int disable_dma_on_even(struct comedi_device *dev) ...@@ -892,6 +896,7 @@ static int disable_dma_on_even(struct comedi_device *dev)
static void das16_interrupt(struct comedi_device *dev) static void das16_interrupt(struct comedi_device *dev)
{ {
const struct das16_board *board = comedi_board(dev);
unsigned long dma_flags, spin_flags; unsigned long dma_flags, spin_flags;
struct comedi_subdevice *s = dev->read_subdev; struct comedi_subdevice *s = dev->read_subdev;
struct comedi_async *async; struct comedi_async *async;
...@@ -953,7 +958,7 @@ static void das16_interrupt(struct comedi_device *dev) ...@@ -953,7 +958,7 @@ static void das16_interrupt(struct comedi_device *dev)
set_dma_count(devpriv->dma_chan, devpriv->dma_transfer_size); set_dma_count(devpriv->dma_chan, devpriv->dma_transfer_size);
enable_dma(devpriv->dma_chan); enable_dma(devpriv->dma_chan);
/* reenable conversions for das1600 mode, (stupid hardware) */ /* reenable conversions for das1600 mode, (stupid hardware) */
if (thisboard->size > 0x400 && devpriv->timer_mode == 0) if (board->size > 0x400 && devpriv->timer_mode == 0)
outb(0x00, dev->iobase + DAS1600_CONV); outb(0x00, dev->iobase + DAS1600_CONV);
} }
...@@ -1015,6 +1020,7 @@ static void reg_dump(struct comedi_device *dev) ...@@ -1015,6 +1020,7 @@ static void reg_dump(struct comedi_device *dev)
static int das16_probe(struct comedi_device *dev, struct comedi_devconfig *it) static int das16_probe(struct comedi_device *dev, struct comedi_devconfig *it)
{ {
const struct das16_board *board = comedi_board(dev);
int status; int status;
int diobits; int diobits;
...@@ -1039,9 +1045,9 @@ static int das16_probe(struct comedi_device *dev, struct comedi_devconfig *it) ...@@ -1039,9 +1045,9 @@ static int das16_probe(struct comedi_device *dev, struct comedi_devconfig *it)
diobits = inb(dev->iobase + DAS16_DIO) & 0xf0; diobits = inb(dev->iobase + DAS16_DIO) & 0xf0;
printk(KERN_INFO " id bits are 0x%02x\n", diobits); printk(KERN_INFO " id bits are 0x%02x\n", diobits);
if (thisboard->id != diobits) { if (board->id != diobits) {
printk(KERN_INFO " requested board's id bits are 0x%x (ignore)\n", printk(KERN_INFO " requested board's id bits are 0x%x (ignore)\n",
thisboard->id); board->id);
} }
return 0; return 0;
...@@ -1071,12 +1077,13 @@ static void das16_ai_munge(struct comedi_device *dev, ...@@ -1071,12 +1077,13 @@ static void das16_ai_munge(struct comedi_device *dev,
unsigned int num_bytes, unsigned int num_bytes,
unsigned int start_chan_index) unsigned int start_chan_index)
{ {
const struct das16_board *board = comedi_board(dev);
unsigned int i, num_samples = num_bytes / sizeof(short); unsigned int i, num_samples = num_bytes / sizeof(short);
short *data = array; short *data = array;
for (i = 0; i < num_samples; i++) { for (i = 0; i < num_samples; i++) {
data[i] = le16_to_cpu(data[i]); data[i] = le16_to_cpu(data[i]);
if (thisboard->ai_nbits == 12) if (board->ai_nbits == 12)
data[i] = (data[i] >> 4) & 0xfff; data[i] = (data[i] >> 4) & 0xfff;
} }
...@@ -1092,6 +1099,7 @@ static void das16_ai_munge(struct comedi_device *dev, ...@@ -1092,6 +1099,7 @@ static void das16_ai_munge(struct comedi_device *dev,
*/ */
static int das16_attach(struct comedi_device *dev, struct comedi_devconfig *it) static int das16_attach(struct comedi_device *dev, struct comedi_devconfig *it)
{ {
const struct das16_board *board = comedi_board(dev);
struct comedi_subdevice *s; struct comedi_subdevice *s;
int ret; int ret;
unsigned int irq; unsigned int irq;
...@@ -1130,9 +1138,9 @@ static int das16_attach(struct comedi_device *dev, struct comedi_devconfig *it) ...@@ -1130,9 +1138,9 @@ static int das16_attach(struct comedi_device *dev, struct comedi_devconfig *it)
if (ret < 0) if (ret < 0)
return ret; return ret;
if (thisboard->size < 0x400) { if (board->size < 0x400) {
printk(" 0x%04lx-0x%04lx\n", iobase, iobase + thisboard->size); printk(" 0x%04lx-0x%04lx\n", iobase, iobase + board->size);
if (!request_region(iobase, thisboard->size, "das16")) { if (!request_region(iobase, board->size, "das16")) {
printk(KERN_ERR " I/O port conflict\n"); printk(KERN_ERR " I/O port conflict\n");
return -EIO; return -EIO;
} }
...@@ -1140,18 +1148,18 @@ static int das16_attach(struct comedi_device *dev, struct comedi_devconfig *it) ...@@ -1140,18 +1148,18 @@ static int das16_attach(struct comedi_device *dev, struct comedi_devconfig *it)
printk(KERN_INFO " 0x%04lx-0x%04lx 0x%04lx-0x%04lx\n", printk(KERN_INFO " 0x%04lx-0x%04lx 0x%04lx-0x%04lx\n",
iobase, iobase + 0x0f, iobase, iobase + 0x0f,
iobase + 0x400, iobase + 0x400,
iobase + 0x400 + (thisboard->size & 0x3ff)); iobase + 0x400 + (board->size & 0x3ff));
if (!request_region(iobase, 0x10, "das16")) { if (!request_region(iobase, 0x10, "das16")) {
printk(KERN_ERR " I/O port conflict: 0x%04lx-0x%04lx\n", printk(KERN_ERR " I/O port conflict: 0x%04lx-0x%04lx\n",
iobase, iobase + 0x0f); iobase, iobase + 0x0f);
return -EIO; return -EIO;
} }
if (!request_region(iobase + 0x400, thisboard->size & 0x3ff, if (!request_region(iobase + 0x400, board->size & 0x3ff,
"das16")) { "das16")) {
release_region(iobase, 0x10); release_region(iobase, 0x10);
printk(KERN_ERR " I/O port conflict: 0x%04lx-0x%04lx\n", printk(KERN_ERR " I/O port conflict: 0x%04lx-0x%04lx\n",
iobase + 0x400, iobase + 0x400,
iobase + 0x400 + (thisboard->size & 0x3ff)); iobase + 0x400 + (board->size & 0x3ff));
return -EIO; return -EIO;
} }
} }
...@@ -1163,10 +1171,10 @@ static int das16_attach(struct comedi_device *dev, struct comedi_devconfig *it) ...@@ -1163,10 +1171,10 @@ static int das16_attach(struct comedi_device *dev, struct comedi_devconfig *it)
printk(KERN_ERR " id bits do not match selected board, aborting\n"); printk(KERN_ERR " id bits do not match selected board, aborting\n");
return -EINVAL; return -EINVAL;
} }
dev->board_name = thisboard->name; dev->board_name = board->name;
/* get master clock speed */ /* get master clock speed */
if (thisboard->size < 0x400) { if (board->size < 0x400) {
if (it->options[3]) if (it->options[3])
devpriv->clockbase = 1000 / it->options[3]; devpriv->clockbase = 1000 / it->options[3];
else else
...@@ -1222,7 +1230,7 @@ static int das16_attach(struct comedi_device *dev, struct comedi_devconfig *it) ...@@ -1222,7 +1230,7 @@ static int das16_attach(struct comedi_device *dev, struct comedi_devconfig *it)
} }
/* get any user-defined input range */ /* get any user-defined input range */
if (thisboard->ai_pg == das16_pg_none && if (board->ai_pg == das16_pg_none &&
(it->options[4] || it->options[5])) { (it->options[4] || it->options[5])) {
/* allocate single-range range table */ /* allocate single-range range table */
devpriv->user_ai_range_table = devpriv->user_ai_range_table =
...@@ -1263,7 +1271,7 @@ static int das16_attach(struct comedi_device *dev, struct comedi_devconfig *it) ...@@ -1263,7 +1271,7 @@ static int das16_attach(struct comedi_device *dev, struct comedi_devconfig *it)
s = dev->subdevices + 0; s = dev->subdevices + 0;
dev->read_subdev = s; dev->read_subdev = s;
/* ai */ /* ai */
if (thisboard->ai) { if (board->ai) {
s->type = COMEDI_SUBD_AI; s->type = COMEDI_SUBD_AI;
s->subdev_flags = SDF_READABLE | SDF_CMD_READ; s->subdev_flags = SDF_READABLE | SDF_CMD_READ;
if (devpriv->ai_singleended) { if (devpriv->ai_singleended) {
...@@ -1275,15 +1283,15 @@ static int das16_attach(struct comedi_device *dev, struct comedi_devconfig *it) ...@@ -1275,15 +1283,15 @@ static int das16_attach(struct comedi_device *dev, struct comedi_devconfig *it)
s->len_chanlist = 8; s->len_chanlist = 8;
s->subdev_flags |= SDF_DIFF; s->subdev_flags |= SDF_DIFF;
} }
s->maxdata = (1 << thisboard->ai_nbits) - 1; s->maxdata = (1 << board->ai_nbits) - 1;
if (devpriv->user_ai_range_table) { /* user defined ai range */ if (devpriv->user_ai_range_table) { /* user defined ai range */
s->range_table = devpriv->user_ai_range_table; s->range_table = devpriv->user_ai_range_table;
} else if (devpriv->ai_unipolar) { } else if (devpriv->ai_unipolar) {
s->range_table = das16_ai_uni_lranges[thisboard->ai_pg]; s->range_table = das16_ai_uni_lranges[board->ai_pg];
} else { } else {
s->range_table = das16_ai_bip_lranges[thisboard->ai_pg]; s->range_table = das16_ai_bip_lranges[board->ai_pg];
} }
s->insn_read = thisboard->ai; s->insn_read = board->ai;
s->do_cmdtest = das16_cmd_test; s->do_cmdtest = das16_cmd_test;
s->do_cmd = das16_cmd_exec; s->do_cmd = das16_cmd_exec;
s->cancel = das16_cancel; s->cancel = das16_cancel;
...@@ -1294,44 +1302,44 @@ static int das16_attach(struct comedi_device *dev, struct comedi_devconfig *it) ...@@ -1294,44 +1302,44 @@ static int das16_attach(struct comedi_device *dev, struct comedi_devconfig *it)
s = dev->subdevices + 1; s = dev->subdevices + 1;
/* ao */ /* ao */
if (thisboard->ao) { if (board->ao) {
s->type = COMEDI_SUBD_AO; s->type = COMEDI_SUBD_AO;
s->subdev_flags = SDF_WRITABLE; s->subdev_flags = SDF_WRITABLE;
s->n_chan = 2; s->n_chan = 2;
s->maxdata = (1 << thisboard->ao_nbits) - 1; s->maxdata = (1 << board->ao_nbits) - 1;
/* user defined ao range */ /* user defined ao range */
if (devpriv->user_ao_range_table) if (devpriv->user_ao_range_table)
s->range_table = devpriv->user_ao_range_table; s->range_table = devpriv->user_ao_range_table;
else else
s->range_table = &range_unknown; s->range_table = &range_unknown;
s->insn_write = thisboard->ao; s->insn_write = board->ao;
} else { } else {
s->type = COMEDI_SUBD_UNUSED; s->type = COMEDI_SUBD_UNUSED;
} }
s = dev->subdevices + 2; s = dev->subdevices + 2;
/* di */ /* di */
if (thisboard->di) { if (board->di) {
s->type = COMEDI_SUBD_DI; s->type = COMEDI_SUBD_DI;
s->subdev_flags = SDF_READABLE; s->subdev_flags = SDF_READABLE;
s->n_chan = 4; s->n_chan = 4;
s->maxdata = 1; s->maxdata = 1;
s->range_table = &range_digital; s->range_table = &range_digital;
s->insn_bits = thisboard->di; s->insn_bits = board->di;
} else { } else {
s->type = COMEDI_SUBD_UNUSED; s->type = COMEDI_SUBD_UNUSED;
} }
s = dev->subdevices + 3; s = dev->subdevices + 3;
/* do */ /* do */
if (thisboard->do_) { if (board->do_) {
s->type = COMEDI_SUBD_DO; s->type = COMEDI_SUBD_DO;
s->subdev_flags = SDF_WRITABLE | SDF_READABLE; s->subdev_flags = SDF_WRITABLE | SDF_READABLE;
s->n_chan = 4; s->n_chan = 4;
s->maxdata = 1; s->maxdata = 1;
s->range_table = &range_digital; s->range_table = &range_digital;
s->insn_bits = thisboard->do_; s->insn_bits = board->do_;
/* initialize digital output lines */ /* initialize digital output lines */
outb(s->state, dev->iobase + DAS16_DIO); outb(s->state, dev->iobase + DAS16_DIO);
} else { } else {
...@@ -1340,9 +1348,9 @@ static int das16_attach(struct comedi_device *dev, struct comedi_devconfig *it) ...@@ -1340,9 +1348,9 @@ static int das16_attach(struct comedi_device *dev, struct comedi_devconfig *it)
s = dev->subdevices + 4; s = dev->subdevices + 4;
/* 8255 */ /* 8255 */
if (thisboard->i8255_offset != 0) { if (board->i8255_offset != 0) {
subdev_8255_init(dev, s, NULL, (dev->iobase + subdev_8255_init(dev, s, NULL, (dev->iobase +
thisboard->i8255_offset)); board->i8255_offset));
} else { } else {
s->type = COMEDI_SUBD_UNUSED; s->type = COMEDI_SUBD_UNUSED;
} }
...@@ -1353,7 +1361,7 @@ static int das16_attach(struct comedi_device *dev, struct comedi_devconfig *it) ...@@ -1353,7 +1361,7 @@ static int das16_attach(struct comedi_device *dev, struct comedi_devconfig *it)
outb(devpriv->control_state, dev->iobase + DAS16_CONTROL); outb(devpriv->control_state, dev->iobase + DAS16_CONTROL);
/* turn on das1600 mode if available */ /* turn on das1600 mode if available */
if (thisboard->size > 0x400) { if (board->size > 0x400) {
outb(DAS1600_ENABLE_VAL, dev->iobase + DAS1600_ENABLE); outb(DAS1600_ENABLE_VAL, dev->iobase + DAS1600_ENABLE);
outb(0, dev->iobase + DAS1600_CONV); outb(0, dev->iobase + DAS1600_CONV);
outb(0, dev->iobase + DAS1600_BURST); outb(0, dev->iobase + DAS1600_BURST);
...@@ -1364,6 +1372,8 @@ static int das16_attach(struct comedi_device *dev, struct comedi_devconfig *it) ...@@ -1364,6 +1372,8 @@ static int das16_attach(struct comedi_device *dev, struct comedi_devconfig *it)
static void das16_detach(struct comedi_device *dev) static void das16_detach(struct comedi_device *dev)
{ {
const struct das16_board *board = comedi_board(dev);
das16_reset(dev); das16_reset(dev);
if (dev->subdevices) if (dev->subdevices)
subdev_8255_cleanup(dev, dev->subdevices + 4); subdev_8255_cleanup(dev, dev->subdevices + 4);
...@@ -1384,12 +1394,12 @@ static void das16_detach(struct comedi_device *dev) ...@@ -1384,12 +1394,12 @@ static void das16_detach(struct comedi_device *dev)
if (dev->irq) if (dev->irq)
free_irq(dev->irq, dev); free_irq(dev->irq, dev);
if (dev->iobase) { if (dev->iobase) {
if (thisboard->size < 0x400) { if (board->size < 0x400) {
release_region(dev->iobase, thisboard->size); release_region(dev->iobase, board->size);
} else { } else {
release_region(dev->iobase, 0x10); release_region(dev->iobase, 0x10);
release_region(dev->iobase + 0x400, release_region(dev->iobase + 0x400,
thisboard->size & 0x3ff); board->size & 0x3ff);
} }
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment