diff options
author | H Hartley Sweeten | 2014-07-18 17:01:17 -0700 |
---|---|---|
committer | Greg Kroah-Hartman | 2014-07-21 14:43:01 -0700 |
commit | c9bef032de05fb93ded8c20a0c66eae70e2b83d7 (patch) | |
tree | 3e8bec34bb2ba84bacdf3313e92f840ee58d0716 | |
parent | a207c12f62e8b53e1e1600ca384b13a39a9feed2 (diff) |
staging: comedi: ni_at_a2150: remove forward declarations
Move some of the functions to remove the need for the forward
declarations.
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>
-rw-r--r-- | drivers/staging/comedi/drivers/ni_at_a2150.c | 229 |
1 files changed, 111 insertions, 118 deletions
diff --git a/drivers/staging/comedi/drivers/ni_at_a2150.c b/drivers/staging/comedi/drivers/ni_at_a2150.c index 0638c1ac8cbf..76fed317403e 100644 --- a/drivers/staging/comedi/drivers/ni_at_a2150.c +++ b/drivers/staging/comedi/drivers/ni_at_a2150.c @@ -156,13 +156,6 @@ struct a2150_private { int config_bits; /* config register bits */ }; -static int a2150_cancel(struct comedi_device *dev, struct comedi_subdevice *s); - -static int a2150_get_timing(struct comedi_device *dev, unsigned int *period, - unsigned int flags); -static int a2150_set_chanlist(struct comedi_device *dev, - unsigned int start_channel, - unsigned int num_channels); /* interrupt service routine */ static irqreturn_t a2150_interrupt(int irq, void *d) { @@ -288,6 +281,117 @@ static int a2150_cancel(struct comedi_device *dev, struct comedi_subdevice *s) return 0; } +/* + * sets bits in devpriv->clock_bits to nearest approximation of requested + * period, adjusts requested period to actual timing. + */ +static int a2150_get_timing(struct comedi_device *dev, unsigned int *period, + unsigned int flags) +{ + const struct a2150_board *thisboard = comedi_board(dev); + struct a2150_private *devpriv = dev->private; + int lub, glb, temp; + int lub_divisor_shift, lub_index, glb_divisor_shift, glb_index; + int i, j; + + /* initialize greatest lower and least upper bounds */ + lub_divisor_shift = 3; + lub_index = 0; + lub = thisboard->clock[lub_index] * (1 << lub_divisor_shift); + glb_divisor_shift = 0; + glb_index = thisboard->num_clocks - 1; + glb = thisboard->clock[glb_index] * (1 << glb_divisor_shift); + + /* make sure period is in available range */ + if (*period < glb) + *period = glb; + if (*period > lub) + *period = lub; + + /* we can multiply period by 1, 2, 4, or 8, using (1 << i) */ + for (i = 0; i < 4; i++) { + /* there are a maximum of 4 master clocks */ + for (j = 0; j < thisboard->num_clocks; j++) { + /* temp is the period in nanosec we are evaluating */ + temp = thisboard->clock[j] * (1 << i); + /* if it is the best match yet */ + if (temp < lub && temp >= *period) { + lub_divisor_shift = i; + lub_index = j; + lub = temp; + } + if (temp > glb && temp <= *period) { + glb_divisor_shift = i; + glb_index = j; + glb = temp; + } + } + } + switch (flags & TRIG_ROUND_MASK) { + case TRIG_ROUND_NEAREST: + default: + /* if least upper bound is better approximation */ + if (lub - *period < *period - glb) + *period = lub; + else + *period = glb; + break; + case TRIG_ROUND_UP: + *period = lub; + break; + case TRIG_ROUND_DOWN: + *period = glb; + break; + } + + /* set clock bits for config register appropriately */ + devpriv->config_bits &= ~CLOCK_MASK; + if (*period == lub) { + devpriv->config_bits |= + CLOCK_SELECT_BITS(lub_index) | + CLOCK_DIVISOR_BITS(lub_divisor_shift); + } else { + devpriv->config_bits |= + CLOCK_SELECT_BITS(glb_index) | + CLOCK_DIVISOR_BITS(glb_divisor_shift); + } + + return 0; +} + +static int a2150_set_chanlist(struct comedi_device *dev, + unsigned int start_channel, + unsigned int num_channels) +{ + struct a2150_private *devpriv = dev->private; + + if (start_channel + num_channels > 4) + return -1; + + devpriv->config_bits &= ~CHANNEL_MASK; + + switch (num_channels) { + case 1: + devpriv->config_bits |= CHANNEL_BITS(0x4 | start_channel); + break; + case 2: + if (start_channel == 0) + devpriv->config_bits |= CHANNEL_BITS(0x2); + else if (start_channel == 2) + devpriv->config_bits |= CHANNEL_BITS(0x3); + else + return -1; + break; + case 4: + devpriv->config_bits |= CHANNEL_BITS(0x1); + break; + default: + return -1; + } + + return 0; +} + static int a2150_ai_check_chanlist(struct comedi_device *dev, struct comedi_subdevice *s, struct comedi_cmd *cmd) @@ -575,117 +679,6 @@ static int a2150_ai_rinsn(struct comedi_device *dev, struct comedi_subdevice *s, return n; } -/* - * sets bits in devpriv->clock_bits to nearest approximation of requested - * period, adjusts requested period to actual timing. - */ -static int a2150_get_timing(struct comedi_device *dev, unsigned int *period, - unsigned int flags) -{ - const struct a2150_board *thisboard = comedi_board(dev); - struct a2150_private *devpriv = dev->private; - int lub, glb, temp; - int lub_divisor_shift, lub_index, glb_divisor_shift, glb_index; - int i, j; - - /* initialize greatest lower and least upper bounds */ - lub_divisor_shift = 3; - lub_index = 0; - lub = thisboard->clock[lub_index] * (1 << lub_divisor_shift); - glb_divisor_shift = 0; - glb_index = thisboard->num_clocks - 1; - glb = thisboard->clock[glb_index] * (1 << glb_divisor_shift); - - /* make sure period is in available range */ - if (*period < glb) - *period = glb; - if (*period > lub) - *period = lub; - - /* we can multiply period by 1, 2, 4, or 8, using (1 << i) */ - for (i = 0; i < 4; i++) { - /* there are a maximum of 4 master clocks */ - for (j = 0; j < thisboard->num_clocks; j++) { - /* temp is the period in nanosec we are evaluating */ - temp = thisboard->clock[j] * (1 << i); - /* if it is the best match yet */ - if (temp < lub && temp >= *period) { - lub_divisor_shift = i; - lub_index = j; - lub = temp; - } - if (temp > glb && temp <= *period) { - glb_divisor_shift = i; - glb_index = j; - glb = temp; - } - } - } - switch (flags & TRIG_ROUND_MASK) { - case TRIG_ROUND_NEAREST: - default: - /* if least upper bound is better approximation */ - if (lub - *period < *period - glb) - *period = lub; - else - *period = glb; - break; - case TRIG_ROUND_UP: - *period = lub; - break; - case TRIG_ROUND_DOWN: - *period = glb; - break; - } - - /* set clock bits for config register appropriately */ - devpriv->config_bits &= ~CLOCK_MASK; - if (*period == lub) { - devpriv->config_bits |= - CLOCK_SELECT_BITS(lub_index) | - CLOCK_DIVISOR_BITS(lub_divisor_shift); - } else { - devpriv->config_bits |= - CLOCK_SELECT_BITS(glb_index) | - CLOCK_DIVISOR_BITS(glb_divisor_shift); - } - - return 0; -} - -static int a2150_set_chanlist(struct comedi_device *dev, - unsigned int start_channel, - unsigned int num_channels) -{ - struct a2150_private *devpriv = dev->private; - - if (start_channel + num_channels > 4) - return -1; - - devpriv->config_bits &= ~CHANNEL_MASK; - - switch (num_channels) { - case 1: - devpriv->config_bits |= CHANNEL_BITS(0x4 | start_channel); - break; - case 2: - if (start_channel == 0) - devpriv->config_bits |= CHANNEL_BITS(0x2); - else if (start_channel == 2) - devpriv->config_bits |= CHANNEL_BITS(0x3); - else - return -1; - break; - case 4: - devpriv->config_bits |= CHANNEL_BITS(0x1); - break; - default: - return -1; - } - - return 0; -} - /* probes board type, returns offset */ static int a2150_probe(struct comedi_device *dev) { |