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

staging: comedi: drivers: cleanup cmd->flags use

Most of the comedi drivers that support async commands have some sort
of timer to control the acquisition timing. For these drivers, Step 4
of the (*do_cmdtest) operations calls a ns_to_timer() function that
converts the desired ns time of the command into a value used to set
the timer. These ns_to_timer() functions also typically pass the
cmd->flags in order to determine the desired rounding mode.

Some of the drivers mask the cmd->flags with TRIG_ROUND_MASK when
calling the ns_to_timer() functions. Move all the masking into the
ns_to_timer() functions and just pass the cmd->flags directly.

The cmd->flags member is an unsigned int, change the parameter type
in the the ns_to_timer() functions to match.

For aesthetics, rename the parameter in all the ns_to_timer()
functions to 'flags'.
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 79014eb1
...@@ -34,7 +34,7 @@ static inline void i8253_cascade_ns_to_timer(int i8253_osc_base, ...@@ -34,7 +34,7 @@ static inline void i8253_cascade_ns_to_timer(int i8253_osc_base,
unsigned int *d1, unsigned int *d1,
unsigned int *d2, unsigned int *d2,
unsigned int *nanosec, unsigned int *nanosec,
int round_mode) unsigned int flags)
{ {
unsigned int divider; unsigned int divider;
unsigned int div1, div2; unsigned int div1, div2;
...@@ -90,8 +90,7 @@ static inline void i8253_cascade_ns_to_timer(int i8253_osc_base, ...@@ -90,8 +90,7 @@ static inline void i8253_cascade_ns_to_timer(int i8253_osc_base,
} }
} }
round_mode &= TRIG_ROUND_MASK; switch (flags & TRIG_ROUND_MASK) {
switch (round_mode) {
case TRIG_ROUND_NEAREST: case TRIG_ROUND_NEAREST:
default: default:
ns_high = div1_lub * div2_lub * i8253_osc_base; ns_high = div1_lub * div2_lub * i8253_osc_base;
......
...@@ -477,7 +477,7 @@ static int apci3xxx_ai_insn_read(struct comedi_device *dev, ...@@ -477,7 +477,7 @@ static int apci3xxx_ai_insn_read(struct comedi_device *dev,
} }
static int apci3xxx_ai_ns_to_timer(struct comedi_device *dev, static int apci3xxx_ai_ns_to_timer(struct comedi_device *dev,
unsigned int *ns, int round_mode) unsigned int *ns, unsigned int flags)
{ {
const struct apci3xxx_boardinfo *board = comedi_board(dev); const struct apci3xxx_boardinfo *board = comedi_board(dev);
struct apci3xxx_private *devpriv = dev->private; struct apci3xxx_private *devpriv = dev->private;
...@@ -503,7 +503,7 @@ static int apci3xxx_ai_ns_to_timer(struct comedi_device *dev, ...@@ -503,7 +503,7 @@ static int apci3xxx_ai_ns_to_timer(struct comedi_device *dev,
break; break;
} }
switch (round_mode) { switch (flags & TRIG_ROUND_MASK) {
case TRIG_ROUND_NEAREST: case TRIG_ROUND_NEAREST:
default: default:
timer = (*ns + base / 2) / base; timer = (*ns + base / 2) / base;
...@@ -573,7 +573,7 @@ static int apci3xxx_ai_cmdtest(struct comedi_device *dev, ...@@ -573,7 +573,7 @@ static int apci3xxx_ai_cmdtest(struct comedi_device *dev,
/* step 4: fix up any arguments */ /* step 4: fix up any arguments */
arg = cmd->convert_arg; arg = cmd->convert_arg;
err |= apci3xxx_ai_ns_to_timer(dev, &arg, cmd->flags & TRIG_ROUND_MASK); err |= apci3xxx_ai_ns_to_timer(dev, &arg, cmd->flags);
err |= cfc_check_trigger_arg_is(&cmd->convert_arg, arg); err |= cfc_check_trigger_arg_is(&cmd->convert_arg, arg);
if (err) if (err)
......
...@@ -712,15 +712,14 @@ static inline void put_all_resources(struct comedi_device *dev, ...@@ -712,15 +712,14 @@ static inline void put_all_resources(struct comedi_device *dev,
} }
static unsigned int divide_ns(uint64_t ns, unsigned int timebase, static unsigned int divide_ns(uint64_t ns, unsigned int timebase,
unsigned int round_mode) unsigned int flags)
{ {
uint64_t div; uint64_t div;
unsigned int rem; unsigned int rem;
div = ns; div = ns;
rem = do_div(div, timebase); rem = do_div(div, timebase);
round_mode &= TRIG_ROUND_MASK; switch (flags & TRIG_ROUND_MASK) {
switch (round_mode) {
default: default:
case TRIG_ROUND_NEAREST: case TRIG_ROUND_NEAREST:
div += (rem + (timebase / 2)) / timebase; div += (rem + (timebase / 2)) / timebase;
...@@ -737,12 +736,12 @@ static unsigned int divide_ns(uint64_t ns, unsigned int timebase, ...@@ -737,12 +736,12 @@ static unsigned int divide_ns(uint64_t ns, unsigned int timebase,
/* Given desired period in ns, returns the required internal clock source /* Given desired period in ns, returns the required internal clock source
* and gets the initial count. */ * and gets the initial count. */
static unsigned int pci230_choose_clk_count(uint64_t ns, unsigned int *count, static unsigned int pci230_choose_clk_count(uint64_t ns, unsigned int *count,
unsigned int round_mode) unsigned int flags)
{ {
unsigned int clk_src, cnt; unsigned int clk_src, cnt;
for (clk_src = CLK_10MHZ;; clk_src++) { for (clk_src = CLK_10MHZ;; clk_src++) {
cnt = divide_ns(ns, pci230_timebase[clk_src], round_mode); cnt = divide_ns(ns, pci230_timebase[clk_src], flags);
if ((cnt <= 65536) || (clk_src == CLK_1KHZ)) if ((cnt <= 65536) || (clk_src == CLK_1KHZ))
break; break;
...@@ -751,18 +750,18 @@ static unsigned int pci230_choose_clk_count(uint64_t ns, unsigned int *count, ...@@ -751,18 +750,18 @@ static unsigned int pci230_choose_clk_count(uint64_t ns, unsigned int *count,
return clk_src; return clk_src;
} }
static void pci230_ns_to_single_timer(unsigned int *ns, unsigned int round) static void pci230_ns_to_single_timer(unsigned int *ns, unsigned int flags)
{ {
unsigned int count; unsigned int count;
unsigned int clk_src; unsigned int clk_src;
clk_src = pci230_choose_clk_count(*ns, &count, round); clk_src = pci230_choose_clk_count(*ns, &count, flags);
*ns = count * pci230_timebase[clk_src]; *ns = count * pci230_timebase[clk_src];
} }
static void pci230_ct_setup_ns_mode(struct comedi_device *dev, unsigned int ct, static void pci230_ct_setup_ns_mode(struct comedi_device *dev, unsigned int ct,
unsigned int mode, uint64_t ns, unsigned int mode, uint64_t ns,
unsigned int round) unsigned int flags)
{ {
struct pci230_private *devpriv = dev->private; struct pci230_private *devpriv = dev->private;
unsigned int clk_src; unsigned int clk_src;
...@@ -771,7 +770,7 @@ static void pci230_ct_setup_ns_mode(struct comedi_device *dev, unsigned int ct, ...@@ -771,7 +770,7 @@ static void pci230_ct_setup_ns_mode(struct comedi_device *dev, unsigned int ct,
/* Set mode. */ /* Set mode. */
i8254_set_mode(devpriv->iobase1 + PCI230_Z2_CT_BASE, 0, ct, mode); i8254_set_mode(devpriv->iobase1 + PCI230_Z2_CT_BASE, 0, ct, mode);
/* Determine clock source and count. */ /* Determine clock source and count. */
clk_src = pci230_choose_clk_count(ns, &count, round); clk_src = pci230_choose_clk_count(ns, &count, flags);
/* Program clock source. */ /* Program clock source. */
outb(CLK_CONFIG(ct, clk_src), devpriv->iobase1 + PCI230_ZCLK_SCE); outb(CLK_CONFIG(ct, clk_src), devpriv->iobase1 + PCI230_ZCLK_SCE);
/* Set initial count. */ /* Set initial count. */
...@@ -1079,8 +1078,7 @@ static int pci230_ao_cmdtest(struct comedi_device *dev, ...@@ -1079,8 +1078,7 @@ static int pci230_ao_cmdtest(struct comedi_device *dev,
if (cmd->scan_begin_src == TRIG_TIMER) { if (cmd->scan_begin_src == TRIG_TIMER) {
tmp = cmd->scan_begin_arg; tmp = cmd->scan_begin_arg;
pci230_ns_to_single_timer(&cmd->scan_begin_arg, pci230_ns_to_single_timer(&cmd->scan_begin_arg, cmd->flags);
cmd->flags & TRIG_ROUND_MASK);
if (tmp != cmd->scan_begin_arg) if (tmp != cmd->scan_begin_arg)
err++; err++;
} }
...@@ -1492,7 +1490,7 @@ static int pci230_ao_cmd(struct comedi_device *dev, struct comedi_subdevice *s) ...@@ -1492,7 +1490,7 @@ static int pci230_ao_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
devpriv->iobase1 + PCI230_ZGAT_SCE); devpriv->iobase1 + PCI230_ZGAT_SCE);
pci230_ct_setup_ns_mode(dev, 1, I8254_MODE3, pci230_ct_setup_ns_mode(dev, 1, I8254_MODE3,
cmd->scan_begin_arg, cmd->scan_begin_arg,
cmd->flags & TRIG_ROUND_MASK); cmd->flags);
} }
/* N.B. cmd->start_src == TRIG_INT */ /* N.B. cmd->start_src == TRIG_INT */
...@@ -1799,8 +1797,7 @@ static int pci230_ai_cmdtest(struct comedi_device *dev, ...@@ -1799,8 +1797,7 @@ static int pci230_ai_cmdtest(struct comedi_device *dev,
if (cmd->convert_src == TRIG_TIMER) { if (cmd->convert_src == TRIG_TIMER) {
tmp = cmd->convert_arg; tmp = cmd->convert_arg;
pci230_ns_to_single_timer(&cmd->convert_arg, pci230_ns_to_single_timer(&cmd->convert_arg, cmd->flags);
cmd->flags & TRIG_ROUND_MASK);
if (tmp != cmd->convert_arg) if (tmp != cmd->convert_arg)
err++; err++;
} }
...@@ -1808,8 +1805,7 @@ static int pci230_ai_cmdtest(struct comedi_device *dev, ...@@ -1808,8 +1805,7 @@ static int pci230_ai_cmdtest(struct comedi_device *dev,
if (cmd->scan_begin_src == TRIG_TIMER) { if (cmd->scan_begin_src == TRIG_TIMER) {
/* N.B. cmd->convert_arg is also TRIG_TIMER */ /* N.B. cmd->convert_arg is also TRIG_TIMER */
tmp = cmd->scan_begin_arg; tmp = cmd->scan_begin_arg;
pci230_ns_to_single_timer(&cmd->scan_begin_arg, pci230_ns_to_single_timer(&cmd->scan_begin_arg, cmd->flags);
cmd->flags & TRIG_ROUND_MASK);
if (!pci230_ai_check_scan_period(cmd)) { if (!pci230_ai_check_scan_period(cmd)) {
/* Was below minimum required. Round up. */ /* Was below minimum required. Round up. */
pci230_ns_to_single_timer(&cmd->scan_begin_arg, pci230_ns_to_single_timer(&cmd->scan_begin_arg,
...@@ -2380,7 +2376,7 @@ static int pci230_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s) ...@@ -2380,7 +2376,7 @@ static int pci230_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
outb(zgat, devpriv->iobase1 + PCI230_ZGAT_SCE); outb(zgat, devpriv->iobase1 + PCI230_ZGAT_SCE);
/* Set counter/timer 2 to the specified conversion period. */ /* Set counter/timer 2 to the specified conversion period. */
pci230_ct_setup_ns_mode(dev, 2, I8254_MODE3, cmd->convert_arg, pci230_ct_setup_ns_mode(dev, 2, I8254_MODE3, cmd->convert_arg,
cmd->flags & TRIG_ROUND_MASK); cmd->flags);
if (cmd->scan_begin_src != TRIG_FOLLOW) { if (cmd->scan_begin_src != TRIG_FOLLOW) {
/* /*
* Set up monostable on CT0 output for scan timing. A * Set up monostable on CT0 output for scan timing. A
...@@ -2411,9 +2407,7 @@ static int pci230_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s) ...@@ -2411,9 +2407,7 @@ static int pci230_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
outb(zgat, devpriv->iobase1 + PCI230_ZGAT_SCE); outb(zgat, devpriv->iobase1 + PCI230_ZGAT_SCE);
pci230_ct_setup_ns_mode(dev, 1, I8254_MODE3, pci230_ct_setup_ns_mode(dev, 1, I8254_MODE3,
cmd->scan_begin_arg, cmd->scan_begin_arg,
cmd-> cmd->flags);
flags &
TRIG_ROUND_MASK);
} }
} }
} }
......
...@@ -729,14 +729,14 @@ static int das16_cmd_test(struct comedi_device *dev, struct comedi_subdevice *s, ...@@ -729,14 +729,14 @@ static int das16_cmd_test(struct comedi_device *dev, struct comedi_subdevice *s,
} }
static unsigned int das16_set_pacer(struct comedi_device *dev, unsigned int ns, static unsigned int das16_set_pacer(struct comedi_device *dev, unsigned int ns,
int rounding_flags) unsigned int flags)
{ {
struct das16_private_struct *devpriv = dev->private; struct das16_private_struct *devpriv = dev->private;
unsigned long timer_base = dev->iobase + DAS16_TIMER_BASE_REG; unsigned long timer_base = dev->iobase + DAS16_TIMER_BASE_REG;
i8253_cascade_ns_to_timer(devpriv->clockbase, i8253_cascade_ns_to_timer(devpriv->clockbase,
&devpriv->divisor1, &devpriv->divisor2, &devpriv->divisor1, &devpriv->divisor2,
&ns, rounding_flags); &ns, flags);
i8254_set_mode(timer_base, 0, 1, I8254_MODE2 | I8254_BINARY); i8254_set_mode(timer_base, 0, 1, I8254_MODE2 | I8254_BINARY);
i8254_set_mode(timer_base, 0, 2, I8254_MODE2 | I8254_BINARY); i8254_set_mode(timer_base, 0, 2, I8254_MODE2 | I8254_BINARY);
...@@ -782,9 +782,7 @@ static int das16_cmd_exec(struct comedi_device *dev, struct comedi_subdevice *s) ...@@ -782,9 +782,7 @@ static int das16_cmd_exec(struct comedi_device *dev, struct comedi_subdevice *s)
} }
/* set counter mode and counts */ /* set counter mode and counts */
cmd->convert_arg = cmd->convert_arg = das16_set_pacer(dev, cmd->convert_arg, cmd->flags);
das16_set_pacer(dev, cmd->convert_arg,
cmd->flags & TRIG_ROUND_MASK);
/* enable counters */ /* enable counters */
byte = 0; byte = 0;
......
...@@ -237,7 +237,7 @@ static int dmm32at_ai_rinsn(struct comedi_device *dev, ...@@ -237,7 +237,7 @@ static int dmm32at_ai_rinsn(struct comedi_device *dev,
return n; return n;
} }
static int dmm32at_ns_to_timer(unsigned int *ns, int round) static int dmm32at_ns_to_timer(unsigned int *ns, unsigned int flags)
{ {
/* trivial timer */ /* trivial timer */
return *ns; return *ns;
...@@ -352,12 +352,12 @@ static int dmm32at_ai_cmdtest(struct comedi_device *dev, ...@@ -352,12 +352,12 @@ static int dmm32at_ai_cmdtest(struct comedi_device *dev,
if (cmd->scan_begin_src == TRIG_TIMER) { if (cmd->scan_begin_src == TRIG_TIMER) {
arg = cmd->scan_begin_arg; arg = cmd->scan_begin_arg;
dmm32at_ns_to_timer(&arg, cmd->flags & TRIG_ROUND_MASK); dmm32at_ns_to_timer(&arg, cmd->flags);
err |= cfc_check_trigger_arg_is(&cmd->scan_begin_arg, arg); err |= cfc_check_trigger_arg_is(&cmd->scan_begin_arg, arg);
} }
if (cmd->convert_src == TRIG_TIMER) { if (cmd->convert_src == TRIG_TIMER) {
arg = cmd->convert_arg; arg = cmd->convert_arg;
dmm32at_ns_to_timer(&arg, cmd->flags & TRIG_ROUND_MASK); dmm32at_ns_to_timer(&arg, cmd->flags);
err |= cfc_check_trigger_arg_is(&cmd->convert_arg, arg); err |= cfc_check_trigger_arg_is(&cmd->convert_arg, arg);
if (cmd->scan_begin_src == TRIG_TIMER) { if (cmd->scan_begin_src == TRIG_TIMER) {
......
...@@ -171,7 +171,7 @@ static int dt2814_ai_cmdtest(struct comedi_device *dev, ...@@ -171,7 +171,7 @@ static int dt2814_ai_cmdtest(struct comedi_device *dev,
/* step 4: fix up any arguments */ /* step 4: fix up any arguments */
arg = cmd->scan_begin_arg; arg = cmd->scan_begin_arg;
dt2814_ns_to_timer(&arg, cmd->flags & TRIG_ROUND_MASK); dt2814_ns_to_timer(&arg, cmd->flags);
err |= cfc_check_trigger_arg_is(&cmd->scan_begin_arg, arg); err |= cfc_check_trigger_arg_is(&cmd->scan_begin_arg, arg);
if (err) if (err)
...@@ -187,9 +187,7 @@ static int dt2814_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s) ...@@ -187,9 +187,7 @@ static int dt2814_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
int chan; int chan;
int trigvar; int trigvar;
trigvar = trigvar = dt2814_ns_to_timer(&cmd->scan_begin_arg, cmd->flags);
dt2814_ns_to_timer(&cmd->scan_begin_arg,
cmd->flags & TRIG_ROUND_MASK);
chan = CR_CHAN(cmd->chanlist[0]); chan = CR_CHAN(cmd->chanlist[0]);
......
...@@ -377,7 +377,7 @@ static irqreturn_t dt3k_interrupt(int irq, void *d) ...@@ -377,7 +377,7 @@ static irqreturn_t dt3k_interrupt(int irq, void *d)
} }
static int dt3k_ns_to_timer(unsigned int timer_base, unsigned int *nanosec, static int dt3k_ns_to_timer(unsigned int timer_base, unsigned int *nanosec,
unsigned int round_mode) unsigned int flags)
{ {
int divider, base, prescale; int divider, base, prescale;
...@@ -386,7 +386,7 @@ static int dt3k_ns_to_timer(unsigned int timer_base, unsigned int *nanosec, ...@@ -386,7 +386,7 @@ static int dt3k_ns_to_timer(unsigned int timer_base, unsigned int *nanosec,
for (prescale = 0; prescale < 16; prescale++) { for (prescale = 0; prescale < 16; prescale++) {
base = timer_base * (prescale + 1); base = timer_base * (prescale + 1);
switch (round_mode) { switch (flags & TRIG_ROUND_MASK) {
case TRIG_ROUND_NEAREST: case TRIG_ROUND_NEAREST:
default: default:
divider = (*nanosec + base / 2) / base; divider = (*nanosec + base / 2) / base;
...@@ -467,13 +467,13 @@ static int dt3k_ai_cmdtest(struct comedi_device *dev, ...@@ -467,13 +467,13 @@ static int dt3k_ai_cmdtest(struct comedi_device *dev,
if (cmd->scan_begin_src == TRIG_TIMER) { if (cmd->scan_begin_src == TRIG_TIMER) {
arg = cmd->scan_begin_arg; arg = cmd->scan_begin_arg;
dt3k_ns_to_timer(100, &arg, cmd->flags & TRIG_ROUND_MASK); dt3k_ns_to_timer(100, &arg, cmd->flags);
err |= cfc_check_trigger_arg_is(&cmd->scan_begin_arg, arg); err |= cfc_check_trigger_arg_is(&cmd->scan_begin_arg, arg);
} }
if (cmd->convert_src == TRIG_TIMER) { if (cmd->convert_src == TRIG_TIMER) {
arg = cmd->convert_arg; arg = cmd->convert_arg;
dt3k_ns_to_timer(50, &arg, cmd->flags & TRIG_ROUND_MASK); dt3k_ns_to_timer(50, &arg, cmd->flags);
err |= cfc_check_trigger_arg_is(&cmd->convert_arg, arg); err |= cfc_check_trigger_arg_is(&cmd->convert_arg, arg);
if (cmd->scan_begin_src == TRIG_TIMER) { if (cmd->scan_begin_src == TRIG_TIMER) {
...@@ -511,15 +511,14 @@ static int dt3k_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s) ...@@ -511,15 +511,14 @@ static int dt3k_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
writew(cmd->scan_end_arg, devpriv->io_addr + DPR_Params(0)); writew(cmd->scan_end_arg, devpriv->io_addr + DPR_Params(0));
if (cmd->convert_src == TRIG_TIMER) { if (cmd->convert_src == TRIG_TIMER) {
divider = dt3k_ns_to_timer(50, &cmd->convert_arg, divider = dt3k_ns_to_timer(50, &cmd->convert_arg, cmd->flags);
cmd->flags & TRIG_ROUND_MASK);
writew((divider >> 16), devpriv->io_addr + DPR_Params(1)); writew((divider >> 16), devpriv->io_addr + DPR_Params(1));
writew((divider & 0xffff), devpriv->io_addr + DPR_Params(2)); writew((divider & 0xffff), devpriv->io_addr + DPR_Params(2));
} }
if (cmd->scan_begin_src == TRIG_TIMER) { if (cmd->scan_begin_src == TRIG_TIMER) {
tscandiv = dt3k_ns_to_timer(100, &cmd->scan_begin_arg, tscandiv = dt3k_ns_to_timer(100, &cmd->scan_begin_arg,
cmd->flags & TRIG_ROUND_MASK); cmd->flags);
writew((tscandiv >> 16), devpriv->io_addr + DPR_Params(3)); writew((tscandiv >> 16), devpriv->io_addr + DPR_Params(3));
writew((tscandiv & 0xffff), devpriv->io_addr + DPR_Params(4)); writew((tscandiv & 0xffff), devpriv->io_addr + DPR_Params(4));
} }
......
...@@ -159,7 +159,7 @@ struct a2150_private { ...@@ -159,7 +159,7 @@ struct a2150_private {
static int a2150_cancel(struct comedi_device *dev, struct comedi_subdevice *s); static int a2150_cancel(struct comedi_device *dev, struct comedi_subdevice *s);
static int a2150_get_timing(struct comedi_device *dev, unsigned int *period, static int a2150_get_timing(struct comedi_device *dev, unsigned int *period,
int flags); unsigned int flags);
static int a2150_set_chanlist(struct comedi_device *dev, static int a2150_set_chanlist(struct comedi_device *dev,
unsigned int start_channel, unsigned int start_channel,
unsigned int num_channels); unsigned int num_channels);
...@@ -580,7 +580,7 @@ static int a2150_ai_rinsn(struct comedi_device *dev, struct comedi_subdevice *s, ...@@ -580,7 +580,7 @@ static int a2150_ai_rinsn(struct comedi_device *dev, struct comedi_subdevice *s,
* period, adjusts requested period to actual timing. * period, adjusts requested period to actual timing.
*/ */
static int a2150_get_timing(struct comedi_device *dev, unsigned int *period, static int a2150_get_timing(struct comedi_device *dev, unsigned int *period,
int flags) unsigned int flags)
{ {
const struct a2150_board *thisboard = comedi_board(dev); const struct a2150_board *thisboard = comedi_board(dev);
struct a2150_private *devpriv = dev->private; struct a2150_private *devpriv = dev->private;
...@@ -621,8 +621,7 @@ static int a2150_get_timing(struct comedi_device *dev, unsigned int *period, ...@@ -621,8 +621,7 @@ static int a2150_get_timing(struct comedi_device *dev, unsigned int *period,
} }
} }
} }
flags &= TRIG_ROUND_MASK; switch (flags & TRIG_ROUND_MASK) {
switch (flags) {
case TRIG_ROUND_NEAREST: case TRIG_ROUND_NEAREST:
default: default:
/* if least upper bound is better approximation */ /* if least upper bound is better approximation */
......
...@@ -2213,12 +2213,12 @@ static int ni_ai_insn_read(struct comedi_device *dev, ...@@ -2213,12 +2213,12 @@ static int ni_ai_insn_read(struct comedi_device *dev,
} }
static int ni_ns_to_timer(const struct comedi_device *dev, unsigned nanosec, static int ni_ns_to_timer(const struct comedi_device *dev, unsigned nanosec,
int round_mode) unsigned int flags)
{ {
struct ni_private *devpriv = dev->private; struct ni_private *devpriv = dev->private;
int divider; int divider;
switch (round_mode) { switch (flags & TRIG_ROUND_MASK) {
case TRIG_ROUND_NEAREST: case TRIG_ROUND_NEAREST:
default: default:
divider = (nanosec + devpriv->clock_ns / 2) / devpriv->clock_ns; divider = (nanosec + devpriv->clock_ns / 2) / devpriv->clock_ns;
...@@ -2375,9 +2375,7 @@ static int ni_ai_cmdtest(struct comedi_device *dev, struct comedi_subdevice *s, ...@@ -2375,9 +2375,7 @@ static int ni_ai_cmdtest(struct comedi_device *dev, struct comedi_subdevice *s,
cmd->scan_begin_arg = cmd->scan_begin_arg =
ni_timer_to_ns(dev, ni_ns_to_timer(dev, ni_timer_to_ns(dev, ni_ns_to_timer(dev,
cmd->scan_begin_arg, cmd->scan_begin_arg,
cmd-> cmd->flags));
flags &
TRIG_ROUND_MASK));
if (tmp != cmd->scan_begin_arg) if (tmp != cmd->scan_begin_arg)
err++; err++;
} }
...@@ -2387,9 +2385,7 @@ static int ni_ai_cmdtest(struct comedi_device *dev, struct comedi_subdevice *s, ...@@ -2387,9 +2385,7 @@ static int ni_ai_cmdtest(struct comedi_device *dev, struct comedi_subdevice *s,
cmd->convert_arg = cmd->convert_arg =
ni_timer_to_ns(dev, ni_ns_to_timer(dev, ni_timer_to_ns(dev, ni_ns_to_timer(dev,
cmd->convert_arg, cmd->convert_arg,
cmd-> cmd->flags));
flags &
TRIG_ROUND_MASK));
if (tmp != cmd->convert_arg) if (tmp != cmd->convert_arg)
err++; err++;
if (cmd->scan_begin_src == TRIG_TIMER && if (cmd->scan_begin_src == TRIG_TIMER &&
...@@ -3386,9 +3382,7 @@ static int ni_ao_cmdtest(struct comedi_device *dev, struct comedi_subdevice *s, ...@@ -3386,9 +3382,7 @@ static int ni_ao_cmdtest(struct comedi_device *dev, struct comedi_subdevice *s,
cmd->scan_begin_arg = cmd->scan_begin_arg =
ni_timer_to_ns(dev, ni_ns_to_timer(dev, ni_timer_to_ns(dev, ni_ns_to_timer(dev,
cmd->scan_begin_arg, cmd->scan_begin_arg,
cmd-> cmd->flags));
flags &
TRIG_ROUND_MASK));
if (tmp != cmd->scan_begin_arg) if (tmp != cmd->scan_begin_arg)
err++; err++;
} }
......
...@@ -303,7 +303,7 @@ static int ni_pcidio_cmdtest(struct comedi_device *dev, ...@@ -303,7 +303,7 @@ static int ni_pcidio_cmdtest(struct comedi_device *dev,
static int ni_pcidio_cmd(struct comedi_device *dev, struct comedi_subdevice *s); static int ni_pcidio_cmd(struct comedi_device *dev, struct comedi_subdevice *s);
static int ni_pcidio_inttrig(struct comedi_device *dev, static int ni_pcidio_inttrig(struct comedi_device *dev,
struct comedi_subdevice *s, unsigned int trignum); struct comedi_subdevice *s, unsigned int trignum);
static int ni_pcidio_ns_to_timer(int *nanosec, int round_mode); static int ni_pcidio_ns_to_timer(int *nanosec, unsigned int flags);
static int setup_mite_dma(struct comedi_device *dev, static int setup_mite_dma(struct comedi_device *dev,
struct comedi_subdevice *s); struct comedi_subdevice *s);
...@@ -596,7 +596,7 @@ static int ni_pcidio_cmdtest(struct comedi_device *dev, ...@@ -596,7 +596,7 @@ static int ni_pcidio_cmdtest(struct comedi_device *dev,
if (cmd->scan_begin_src == TRIG_TIMER) { if (cmd->scan_begin_src == TRIG_TIMER) {
arg = cmd->scan_begin_arg; arg = cmd->scan_begin_arg;
ni_pcidio_ns_to_timer(&arg, cmd->flags & TRIG_ROUND_MASK); ni_pcidio_ns_to_timer(&arg, cmd->flags);
err |= cfc_check_trigger_arg_is(&cmd->scan_begin_arg, arg); err |= cfc_check_trigger_arg_is(&cmd->scan_begin_arg, arg);
} }
...@@ -606,13 +606,13 @@ static int ni_pcidio_cmdtest(struct comedi_device *dev, ...@@ -606,13 +606,13 @@ static int ni_pcidio_cmdtest(struct comedi_device *dev,
return 0; return 0;
} }
static int ni_pcidio_ns_to_timer(int *nanosec, int round_mode) static int ni_pcidio_ns_to_timer(int *nanosec, unsigned int flags)
{ {
int divider, base; int divider, base;
base = TIMER_BASE; base = TIMER_BASE;
switch (round_mode) { switch (flags & TRIG_ROUND_MASK) {
case TRIG_ROUND_NEAREST: case TRIG_ROUND_NEAREST:
default: default:
divider = (*nanosec + base / 2) / base; divider = (*nanosec + base / 2) / base;
......
...@@ -351,7 +351,7 @@ static int daqp_ai_insn_read(struct comedi_device *dev, ...@@ -351,7 +351,7 @@ static int daqp_ai_insn_read(struct comedi_device *dev,
* time that the device will use. * time that the device will use.
*/ */
static int daqp_ns_to_timer(unsigned int *ns, int round) static int daqp_ns_to_timer(unsigned int *ns, unsigned int flags)
{ {
int timer; int timer;
...@@ -436,13 +436,13 @@ static int daqp_ai_cmdtest(struct comedi_device *dev, ...@@ -436,13 +436,13 @@ static int daqp_ai_cmdtest(struct comedi_device *dev,
if (cmd->scan_begin_src == TRIG_TIMER) { if (cmd->scan_begin_src == TRIG_TIMER) {
arg = cmd->scan_begin_arg; arg = cmd->scan_begin_arg;
daqp_ns_to_timer(&arg, cmd->flags & TRIG_ROUND_MASK); daqp_ns_to_timer(&arg, cmd->flags);
err |= cfc_check_trigger_arg_is(&cmd->scan_begin_arg, arg); err |= cfc_check_trigger_arg_is(&cmd->scan_begin_arg, arg);
} }
if (cmd->convert_src == TRIG_TIMER) { if (cmd->convert_src == TRIG_TIMER) {
arg = cmd->convert_arg; arg = cmd->convert_arg;
daqp_ns_to_timer(&arg, cmd->flags & TRIG_ROUND_MASK); daqp_ns_to_timer(&arg, cmd->flags);
err |= cfc_check_trigger_arg_is(&cmd->convert_arg, arg); err |= cfc_check_trigger_arg_is(&cmd->convert_arg, arg);
} }
...@@ -488,15 +488,13 @@ static int daqp_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s) ...@@ -488,15 +488,13 @@ static int daqp_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
*/ */
if (cmd->convert_src == TRIG_TIMER) { if (cmd->convert_src == TRIG_TIMER) {
counter = daqp_ns_to_timer(&cmd->convert_arg, counter = daqp_ns_to_timer(&cmd->convert_arg, cmd->flags);
cmd->flags & TRIG_ROUND_MASK);
outb(counter & 0xff, dev->iobase + DAQP_PACER_LOW); outb(counter & 0xff, dev->iobase + DAQP_PACER_LOW);
outb((counter >> 8) & 0xff, dev->iobase + DAQP_PACER_MID); outb((counter >> 8) & 0xff, dev->iobase + DAQP_PACER_MID);
outb((counter >> 16) & 0xff, dev->iobase + DAQP_PACER_HIGH); outb((counter >> 16) & 0xff, dev->iobase + DAQP_PACER_HIGH);
scanlist_start_on_every_entry = 1; scanlist_start_on_every_entry = 1;
} else { } else {
counter = daqp_ns_to_timer(&cmd->scan_begin_arg, counter = daqp_ns_to_timer(&cmd->scan_begin_arg, cmd->flags);
cmd->flags & TRIG_ROUND_MASK);
outb(counter & 0xff, dev->iobase + DAQP_PACER_LOW); outb(counter & 0xff, dev->iobase + DAQP_PACER_LOW);
outb((counter >> 8) & 0xff, dev->iobase + DAQP_PACER_MID); outb((counter >> 8) & 0xff, dev->iobase + DAQP_PACER_MID);
outb((counter >> 16) & 0xff, dev->iobase + DAQP_PACER_HIGH); outb((counter >> 16) & 0xff, dev->iobase + DAQP_PACER_HIGH);
......
...@@ -397,11 +397,11 @@ struct rtd_private { ...@@ -397,11 +397,11 @@ struct rtd_private {
Note: you have to check if the value is larger than the counter range! Note: you have to check if the value is larger than the counter range!
*/ */
static int rtd_ns_to_timer_base(unsigned int *nanosec, static int rtd_ns_to_timer_base(unsigned int *nanosec,
int round_mode, int base) unsigned int flags, int base)
{ {
int divider; int divider;
switch (round_mode) { switch (flags & TRIG_ROUND_MASK) {
case TRIG_ROUND_NEAREST: case TRIG_ROUND_NEAREST:
default: default:
divider = (*nanosec + base / 2) / base; divider = (*nanosec + base / 2) / base;
...@@ -428,9 +428,9 @@ static int rtd_ns_to_timer_base(unsigned int *nanosec, ...@@ -428,9 +428,9 @@ static int rtd_ns_to_timer_base(unsigned int *nanosec,
return the proper counter value (divider-1) for the internal clock. return the proper counter value (divider-1) for the internal clock.
Sets the original period to be the true value. Sets the original period to be the true value.
*/ */
static int rtd_ns_to_timer(unsigned int *ns, int round_mode) static int rtd_ns_to_timer(unsigned int *ns, unsigned int flags)
{ {
return rtd_ns_to_timer_base(ns, round_mode, RTD_CLOCK_BASE); return rtd_ns_to_timer_base(ns, flags, RTD_CLOCK_BASE);
} }
/* /*
...@@ -895,13 +895,13 @@ static int rtd_ai_cmdtest(struct comedi_device *dev, ...@@ -895,13 +895,13 @@ static int rtd_ai_cmdtest(struct comedi_device *dev,
if (cmd->scan_begin_src == TRIG_TIMER) { if (cmd->scan_begin_src == TRIG_TIMER) {
arg = cmd->scan_begin_arg; arg = cmd->scan_begin_arg;
rtd_ns_to_timer(&arg, cmd->flags & TRIG_ROUND_MASK); rtd_ns_to_timer(&arg, cmd->flags);
err |= cfc_check_trigger_arg_is(&cmd->scan_begin_arg, arg); err |= cfc_check_trigger_arg_is(&cmd->scan_begin_arg, arg);
} }
if (cmd->convert_src == TRIG_TIMER) { if (cmd->convert_src == TRIG_TIMER) {
arg = cmd->convert_arg; arg = cmd->convert_arg;
rtd_ns_to_timer(&arg, cmd->flags & TRIG_ROUND_MASK); rtd_ns_to_timer(&arg, cmd->flags);
err |= cfc_check_trigger_arg_is(&cmd->convert_arg, arg); err |= cfc_check_trigger_arg_is(&cmd->convert_arg, arg);
if (cmd->scan_begin_src == TRIG_TIMER) { if (cmd->scan_begin_src == TRIG_TIMER) {
......
...@@ -1981,13 +1981,13 @@ static int s626_ai_inttrig(struct comedi_device *dev, ...@@ -1981,13 +1981,13 @@ static int s626_ai_inttrig(struct comedi_device *dev,
* Also, it should adjust ns so that it cooresponds to the actual time * Also, it should adjust ns so that it cooresponds to the actual time
* that the device will use. * that the device will use.
*/ */
static int s626_ns_to_timer(unsigned int *nanosec, int round_mode) static int s626_ns_to_timer(unsigned int *nanosec, unsigned int flags)
{ {
int divider, base; int divider, base;
base = 500; /* 2MHz internal clock */ base = 500; /* 2MHz internal clock */
switch (round_mode) { switch (flags & TRIG_ROUND_MASK) {
case TRIG_ROUND_NEAREST: case TRIG_ROUND_NEAREST:
default: default:
divider = (*nanosec + base / 2) / base; divider = (*nanosec + base / 2) / base;
...@@ -2087,8 +2087,7 @@ static int s626_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s) ...@@ -2087,8 +2087,7 @@ static int s626_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
* set a counter to generate adc trigger at scan_begin_arg * set a counter to generate adc trigger at scan_begin_arg
* interval * interval
*/ */
tick = s626_ns_to_timer(&cmd->scan_begin_arg, tick = s626_ns_to_timer(&cmd->scan_begin_arg, cmd->flags);
cmd->flags & TRIG_ROUND_MASK);
/* load timer value and enable interrupt */ /* load timer value and enable interrupt */
s626_timer_load(dev, 5, tick); s626_timer_load(dev, 5, tick);
...@@ -2109,8 +2108,7 @@ static int s626_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s) ...@@ -2109,8 +2108,7 @@ static int s626_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
* set a counter to generate adc trigger at convert_arg * set a counter to generate adc trigger at convert_arg
* interval * interval
*/ */
tick = s626_ns_to_timer(&cmd->convert_arg, tick = s626_ns_to_timer(&cmd->convert_arg, cmd->flags);
cmd->flags & TRIG_ROUND_MASK);
/* load timer value and enable interrupt */ /* load timer value and enable interrupt */
s626_timer_load(dev, 4, tick); s626_timer_load(dev, 4, tick);
...@@ -2252,13 +2250,13 @@ static int s626_ai_cmdtest(struct comedi_device *dev, ...@@ -2252,13 +2250,13 @@ static int s626_ai_cmdtest(struct comedi_device *dev,
if (cmd->scan_begin_src == TRIG_TIMER) { if (cmd->scan_begin_src == TRIG_TIMER) {
arg = cmd->scan_begin_arg; arg = cmd->scan_begin_arg;
s626_ns_to_timer(&arg, cmd->flags & TRIG_ROUND_MASK); s626_ns_to_timer(&arg, cmd->flags);
err |= cfc_check_trigger_arg_is(&cmd->scan_begin_arg, arg); err |= cfc_check_trigger_arg_is(&cmd->scan_begin_arg, arg);
} }
if (cmd->convert_src == TRIG_TIMER) { if (cmd->convert_src == TRIG_TIMER) {
arg = cmd->convert_arg; arg = cmd->convert_arg;
s626_ns_to_timer(&arg, cmd->flags & TRIG_ROUND_MASK); s626_ns_to_timer(&arg, cmd->flags);
err |= cfc_check_trigger_arg_is(&cmd->convert_arg, arg); err |= cfc_check_trigger_arg_is(&cmd->convert_arg, arg);
if (cmd->scan_begin_src == TRIG_TIMER) { if (cmd->scan_begin_src == TRIG_TIMER) {
......
...@@ -129,7 +129,7 @@ struct skel_private { ...@@ -129,7 +129,7 @@ struct skel_private {
* convert ns nanoseconds to a counter value suitable for programming * convert ns nanoseconds to a counter value suitable for programming
* the device. Also, it should adjust ns so that it cooresponds to * the device. Also, it should adjust ns so that it cooresponds to
* the actual time that the device will use. */ * the actual time that the device will use. */
static int skel_ns_to_timer(unsigned int *ns, int round) static int skel_ns_to_timer(unsigned int *ns, unsigned int flags)
{ {
/* trivial timer */ /* trivial timer */
/* if your timing is done through two cascaded timers, the /* if your timing is done through two cascaded timers, the
...@@ -287,12 +287,12 @@ static int skel_ai_cmdtest(struct comedi_device *dev, ...@@ -287,12 +287,12 @@ static int skel_ai_cmdtest(struct comedi_device *dev,
if (cmd->scan_begin_src == TRIG_TIMER) { if (cmd->scan_begin_src == TRIG_TIMER) {
arg = cmd->scan_begin_arg; arg = cmd->scan_begin_arg;
skel_ns_to_timer(&arg, cmd->flags & TRIG_ROUND_MASK); skel_ns_to_timer(&arg, cmd->flags);
err |= cfc_check_trigger_arg_is(&cmd->scan_begin_arg, arg); err |= cfc_check_trigger_arg_is(&cmd->scan_begin_arg, arg);
} }
if (cmd->convert_src == TRIG_TIMER) { if (cmd->convert_src == TRIG_TIMER) {
arg = cmd->convert_arg; arg = cmd->convert_arg;
skel_ns_to_timer(&arg, cmd->flags & TRIG_ROUND_MASK); skel_ns_to_timer(&arg, cmd->flags);
err |= cfc_check_trigger_arg_is(&cmd->convert_arg, arg); err |= cfc_check_trigger_arg_is(&cmd->convert_arg, arg);
if (cmd->scan_begin_src == TRIG_TIMER) { if (cmd->scan_begin_src == TRIG_TIMER) {
......
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