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

staging: comedi: ni_mio_common: tidy up AO scan begin

The (*do_cmdtest) validates that the cmd->scan_begin_src will only be
TRIG_TIMER or TRIG_EXT. Refactor ni_ao_cmd_set_update() and remove the
BUG() which can never occur.
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 55f9e7d9
...@@ -3099,8 +3099,9 @@ static void ni_ao_cmd_set_update(struct comedi_device *dev, ...@@ -3099,8 +3099,9 @@ static void ni_ao_cmd_set_update(struct comedi_device *dev,
NISTC_AO_MODE1_UPDATE_SRC_POLARITY NISTC_AO_MODE1_UPDATE_SRC_POLARITY
); );
switch (cmd->scan_begin_src) { if (cmd->scan_begin_src == TRIG_TIMER) {
case TRIG_TIMER: unsigned int trigvar;
devpriv->ao_cmd2 &= ~NISTC_AO_CMD2_BC_GATE_ENA; devpriv->ao_cmd2 &= ~NISTC_AO_CMD2_BC_GATE_ENA;
/* /*
...@@ -3131,35 +3132,25 @@ static void ni_ao_cmd_set_update(struct comedi_device *dev, ...@@ -3131,35 +3132,25 @@ static void ni_ao_cmd_set_update(struct comedi_device *dev,
* eseries/ni67xx and tMSeries.h for mseries. * eseries/ni67xx and tMSeries.h for mseries.
*/ */
{ trigvar = ni_ns_to_timer(dev, cmd->scan_begin_arg,
unsigned int trigvar; CMDF_ROUND_NEAREST);
trigvar = ni_ns_to_timer(dev, cmd->scan_begin_arg,
CMDF_ROUND_NEAREST);
/* /*
* Wait N TB3 ticks after the start trigger before * Wait N TB3 ticks after the start trigger before
* clocking(N must be >=2). * clocking (N must be >=2).
*/ */
/* following line: 2-1 per STC */ /* following line: 2-1 per STC */
ni_stc_writel(dev, 1, NISTC_AO_UI_LOADA_REG); ni_stc_writel(dev, 1, NISTC_AO_UI_LOADA_REG);
ni_stc_writew(dev, NISTC_AO_CMD1_UI_LOAD, ni_stc_writew(dev, NISTC_AO_CMD1_UI_LOAD, NISTC_AO_CMD1_REG);
NISTC_AO_CMD1_REG); /* following line: N-1 per STC */
/* following line: N-1 per STC */ ni_stc_writel(dev, trigvar - 1, NISTC_AO_UI_LOADA_REG);
ni_stc_writel(dev, trigvar - 1, NISTC_AO_UI_LOADA_REG); } else { /* TRIG_EXT */
}
break;
case TRIG_EXT:
/* FIXME: assert scan_begin_arg != 0, ret failure otherwise */ /* FIXME: assert scan_begin_arg != 0, ret failure otherwise */
devpriv->ao_cmd2 |= NISTC_AO_CMD2_BC_GATE_ENA; devpriv->ao_cmd2 |= NISTC_AO_CMD2_BC_GATE_ENA;
devpriv->ao_mode1 |= NISTC_AO_MODE1_UPDATE_SRC( devpriv->ao_mode1 |= NISTC_AO_MODE1_UPDATE_SRC(
CR_CHAN(cmd->scan_begin_arg)); CR_CHAN(cmd->scan_begin_arg));
if (cmd->scan_begin_arg & CR_INVERT) if (cmd->scan_begin_arg & CR_INVERT)
devpriv->ao_mode1 |= NISTC_AO_MODE1_UPDATE_SRC_POLARITY; devpriv->ao_mode1 |= NISTC_AO_MODE1_UPDATE_SRC_POLARITY;
break;
default:
BUG();
break;
} }
ni_stc_writew(dev, devpriv->ao_cmd2, NISTC_AO_CMD2_REG); ni_stc_writew(dev, devpriv->ao_cmd2, NISTC_AO_CMD2_REG);
......
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