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

staging: comedi: ni_660x: tidy up the counter subdevices init

For aesthetics, add some whitespace to the subdevice init and use
a couple local variables to make the code easier to follow.
Signed-off-by: default avatarH Hartley Sweeten <hsweeten@visionengravers.com>
Reviewed-by: default avatarIan Abbott <abbotti@mev.co.uk>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent ccef0da8
...@@ -864,6 +864,7 @@ static int ni_660x_auto_attach(struct comedi_device *dev, ...@@ -864,6 +864,7 @@ static int ni_660x_auto_attach(struct comedi_device *dev,
const struct ni_660x_board *board = NULL; const struct ni_660x_board *board = NULL;
struct ni_660x_private *devpriv; struct ni_660x_private *devpriv;
struct comedi_subdevice *s; struct comedi_subdevice *s;
struct ni_gpct_device *gpct_dev;
unsigned int n_counters; unsigned int n_counters;
int subdev; int subdev;
int ret; int ret;
...@@ -977,46 +978,50 @@ static int ni_660x_auto_attach(struct comedi_device *dev, ...@@ -977,46 +978,50 @@ static int ni_660x_auto_attach(struct comedi_device *dev,
ni_660x_write(dev, 0, 0, NI660X_STC_DIO_CONTROL); ni_660x_write(dev, 0, 0, NI660X_STC_DIO_CONTROL);
n_counters = board->n_chips * NI660X_COUNTERS_PER_CHIP; n_counters = board->n_chips * NI660X_COUNTERS_PER_CHIP;
devpriv->counter_dev = ni_gpct_device_construct(dev, gpct_dev = ni_gpct_device_construct(dev,
ni_660x_gpct_write, ni_660x_gpct_write,
ni_660x_gpct_read, ni_660x_gpct_read,
ni_gpct_variant_660x, ni_gpct_variant_660x,
n_counters); n_counters);
if (!devpriv->counter_dev) if (!gpct_dev)
return -ENOMEM; return -ENOMEM;
devpriv->counter_dev = gpct_dev;
/* Counter subdevices (4 NI TIO General Purpose Counters per chip) */
for (i = 0; i < NI660X_MAX_COUNTERS; ++i) { for (i = 0; i < NI660X_MAX_COUNTERS; ++i) {
s = &dev->subdevices[subdev++]; s = &dev->subdevices[subdev++];
if (i < n_counters) { if (i < n_counters) {
s->type = COMEDI_SUBD_COUNTER; struct ni_gpct *counter = &gpct_dev->counters[i];
s->subdev_flags = SDF_READABLE | SDF_WRITABLE |
counter->chip_index = i / NI660X_COUNTERS_PER_CHIP;
counter->counter_index = i % NI660X_COUNTERS_PER_CHIP;
s->type = COMEDI_SUBD_COUNTER;
s->subdev_flags = SDF_READABLE | SDF_WRITABLE |
SDF_LSAMPL | SDF_CMD_READ; SDF_LSAMPL | SDF_CMD_READ;
s->n_chan = 3; s->n_chan = 3;
s->maxdata = 0xffffffff; s->maxdata = 0xffffffff;
s->insn_read = ni_tio_insn_read; s->insn_read = ni_tio_insn_read;
s->insn_write = ni_tio_insn_write; s->insn_write = ni_tio_insn_write;
s->insn_config = ni_tio_insn_config; s->insn_config = ni_tio_insn_config;
s->do_cmd = &ni_660x_cmd; s->len_chanlist = 1;
s->len_chanlist = 1; s->do_cmd = ni_660x_cmd;
s->do_cmdtest = ni_tio_cmdtest; s->do_cmdtest = ni_tio_cmdtest;
s->cancel = &ni_660x_cancel; s->cancel = ni_660x_cancel;
s->poll = &ni_660x_input_poll; s->poll = ni_660x_input_poll;
s->buf_change = ni_660x_buf_change;
s->async_dma_dir = DMA_BIDIRECTIONAL; s->async_dma_dir = DMA_BIDIRECTIONAL;
s->buf_change = &ni_660x_buf_change; s->private = counter;
s->private = &devpriv->counter_dev->counters[i];
devpriv->counter_dev->counters[i].chip_index =
i / NI660X_COUNTERS_PER_CHIP;
devpriv->counter_dev->counters[i].counter_index =
i % NI660X_COUNTERS_PER_CHIP;
} else { } else {
s->type = COMEDI_SUBD_UNUSED; s->type = COMEDI_SUBD_UNUSED;
} }
} }
for (i = 0; i < board->n_chips; ++i) for (i = 0; i < board->n_chips; ++i)
init_tio_chip(dev, i); init_tio_chip(dev, i);
for (i = 0; i < n_counters; ++i) for (i = 0; i < n_counters; ++i)
ni_tio_init_counter(&devpriv->counter_dev->counters[i]); ni_tio_init_counter(&gpct_dev->counters[i]);
/* /*
* Default the DIO channels as: * Default the DIO channels as:
......
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