diff options
author | H Hartley Sweeten <hsweeten@visionengravers.com> | 2014-05-28 19:26:42 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-06-18 17:33:52 -0400 |
commit | c75527fbf688efb40aa58da08eb622af40cb8841 (patch) | |
tree | c066cf9b5e6750c0d6a3effda556f22a7f2f90f8 | |
parent | 2655c8a1d7305ce0f80c748a37efbb8252dc01ae (diff) |
staging: comedi: ni_mio_common: remove forward declaration 19
Move ni_E_interrupt() to remove the need for some 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_mio_common.c | 130 |
1 files changed, 59 insertions, 71 deletions
diff --git a/drivers/staging/comedi/drivers/ni_mio_common.c b/drivers/staging/comedi/drivers/ni_mio_common.c index 5a33b24f464b..0c2ef4c25a48 100644 --- a/drivers/staging/comedi/drivers/ni_mio_common.c +++ b/drivers/staging/comedi/drivers/ni_mio_common.c | |||
@@ -194,8 +194,6 @@ static const struct comedi_lrange *const ni_range_lkup[] = { | |||
194 | [ai_gain_6143] = &range_bipolar5 | 194 | [ai_gain_6143] = &range_bipolar5 |
195 | }; | 195 | }; |
196 | 196 | ||
197 | static void handle_cdio_interrupt(struct comedi_device *dev); | ||
198 | |||
199 | static void ni_rtsi_init(struct comedi_device *dev); | 197 | static void ni_rtsi_init(struct comedi_device *dev); |
200 | static int ni_rtsi_insn_config(struct comedi_device *dev, | 198 | static int ni_rtsi_insn_config(struct comedi_device *dev, |
201 | struct comedi_subdevice *s, | 199 | struct comedi_subdevice *s, |
@@ -210,13 +208,8 @@ static void ni_handle_fifo_dregs(struct comedi_device *dev); | |||
210 | static void ni_load_channelgain_list(struct comedi_device *dev, | 208 | static void ni_load_channelgain_list(struct comedi_device *dev, |
211 | unsigned int n_chan, unsigned int *list); | 209 | unsigned int n_chan, unsigned int *list); |
212 | 210 | ||
213 | static void handle_gpct_interrupt(struct comedi_device *dev, | ||
214 | unsigned short counter_index); | ||
215 | |||
216 | static int ni_set_master_clock(struct comedi_device *dev, unsigned source, | 211 | static int ni_set_master_clock(struct comedi_device *dev, unsigned source, |
217 | unsigned period_ns); | 212 | unsigned period_ns); |
218 | static void ack_a_interrupt(struct comedi_device *dev, unsigned short a_status); | ||
219 | static void ack_b_interrupt(struct comedi_device *dev, unsigned short b_status); | ||
220 | 213 | ||
221 | enum aimodes { | 214 | enum aimodes { |
222 | AIMODE_NONE = 0, | 215 | AIMODE_NONE = 0, |
@@ -270,11 +263,6 @@ enum timebase_nanoseconds { | |||
270 | 263 | ||
271 | static const int num_adc_stages_611x = 3; | 264 | static const int num_adc_stages_611x = 3; |
272 | 265 | ||
273 | static void handle_a_interrupt(struct comedi_device *dev, unsigned short status, | ||
274 | unsigned ai_mite_status); | ||
275 | static void handle_b_interrupt(struct comedi_device *dev, unsigned short status, | ||
276 | unsigned ao_mite_status); | ||
277 | |||
278 | static inline void ni_set_bitfield(struct comedi_device *dev, int reg, | 266 | static inline void ni_set_bitfield(struct comedi_device *dev, int reg, |
279 | unsigned bit_mask, unsigned bit_values) | 267 | unsigned bit_mask, unsigned bit_values) |
280 | { | 268 | { |
@@ -709,65 +697,6 @@ static inline void ni_set_bits(struct comedi_device *dev, int reg, | |||
709 | ni_set_bitfield(dev, reg, bits, bit_values); | 697 | ni_set_bitfield(dev, reg, bits, bit_values); |
710 | } | 698 | } |
711 | 699 | ||
712 | static irqreturn_t ni_E_interrupt(int irq, void *d) | ||
713 | { | ||
714 | struct comedi_device *dev = d; | ||
715 | struct ni_private *devpriv = dev->private; | ||
716 | unsigned short a_status; | ||
717 | unsigned short b_status; | ||
718 | unsigned int ai_mite_status = 0; | ||
719 | unsigned int ao_mite_status = 0; | ||
720 | unsigned long flags; | ||
721 | #ifdef PCIDMA | ||
722 | struct mite_struct *mite = devpriv->mite; | ||
723 | #endif | ||
724 | |||
725 | if (!dev->attached) | ||
726 | return IRQ_NONE; | ||
727 | smp_mb(); /* make sure dev->attached is checked before handler does anything else. */ | ||
728 | |||
729 | /* lock to avoid race with comedi_poll */ | ||
730 | spin_lock_irqsave(&dev->spinlock, flags); | ||
731 | a_status = devpriv->stc_readw(dev, AI_Status_1_Register); | ||
732 | b_status = devpriv->stc_readw(dev, AO_Status_1_Register); | ||
733 | #ifdef PCIDMA | ||
734 | if (mite) { | ||
735 | unsigned long flags_too; | ||
736 | |||
737 | spin_lock_irqsave(&devpriv->mite_channel_lock, flags_too); | ||
738 | if (devpriv->ai_mite_chan) { | ||
739 | ai_mite_status = mite_get_status(devpriv->ai_mite_chan); | ||
740 | if (ai_mite_status & CHSR_LINKC) | ||
741 | writel(CHOR_CLRLC, | ||
742 | devpriv->mite->mite_io_addr + | ||
743 | MITE_CHOR(devpriv-> | ||
744 | ai_mite_chan->channel)); | ||
745 | } | ||
746 | if (devpriv->ao_mite_chan) { | ||
747 | ao_mite_status = mite_get_status(devpriv->ao_mite_chan); | ||
748 | if (ao_mite_status & CHSR_LINKC) | ||
749 | writel(CHOR_CLRLC, | ||
750 | mite->mite_io_addr + | ||
751 | MITE_CHOR(devpriv-> | ||
752 | ao_mite_chan->channel)); | ||
753 | } | ||
754 | spin_unlock_irqrestore(&devpriv->mite_channel_lock, flags_too); | ||
755 | } | ||
756 | #endif | ||
757 | ack_a_interrupt(dev, a_status); | ||
758 | ack_b_interrupt(dev, b_status); | ||
759 | if ((a_status & Interrupt_A_St) || (ai_mite_status & CHSR_INT)) | ||
760 | handle_a_interrupt(dev, a_status, ai_mite_status); | ||
761 | if ((b_status & Interrupt_B_St) || (ao_mite_status & CHSR_INT)) | ||
762 | handle_b_interrupt(dev, b_status, ao_mite_status); | ||
763 | handle_gpct_interrupt(dev, 0); | ||
764 | handle_gpct_interrupt(dev, 1); | ||
765 | handle_cdio_interrupt(dev); | ||
766 | |||
767 | spin_unlock_irqrestore(&dev->spinlock, flags); | ||
768 | return IRQ_HANDLED; | ||
769 | } | ||
770 | |||
771 | #ifdef PCIDMA | 700 | #ifdef PCIDMA |
772 | static void ni_sync_ai_dma(struct comedi_device *dev) | 701 | static void ni_sync_ai_dma(struct comedi_device *dev) |
773 | { | 702 | { |
@@ -4805,6 +4734,65 @@ static int ni_gpct_cancel(struct comedi_device *dev, struct comedi_subdevice *s) | |||
4805 | } | 4734 | } |
4806 | #endif | 4735 | #endif |
4807 | 4736 | ||
4737 | static irqreturn_t ni_E_interrupt(int irq, void *d) | ||
4738 | { | ||
4739 | struct comedi_device *dev = d; | ||
4740 | struct ni_private *devpriv = dev->private; | ||
4741 | unsigned short a_status; | ||
4742 | unsigned short b_status; | ||
4743 | unsigned int ai_mite_status = 0; | ||
4744 | unsigned int ao_mite_status = 0; | ||
4745 | unsigned long flags; | ||
4746 | #ifdef PCIDMA | ||
4747 | struct mite_struct *mite = devpriv->mite; | ||
4748 | #endif | ||
4749 | |||
4750 | if (!dev->attached) | ||
4751 | return IRQ_NONE; | ||
4752 | smp_mb(); /* make sure dev->attached is checked before handler does anything else. */ | ||
4753 | |||
4754 | /* lock to avoid race with comedi_poll */ | ||
4755 | spin_lock_irqsave(&dev->spinlock, flags); | ||
4756 | a_status = devpriv->stc_readw(dev, AI_Status_1_Register); | ||
4757 | b_status = devpriv->stc_readw(dev, AO_Status_1_Register); | ||
4758 | #ifdef PCIDMA | ||
4759 | if (mite) { | ||
4760 | unsigned long flags_too; | ||
4761 | |||
4762 | spin_lock_irqsave(&devpriv->mite_channel_lock, flags_too); | ||
4763 | if (devpriv->ai_mite_chan) { | ||
4764 | ai_mite_status = mite_get_status(devpriv->ai_mite_chan); | ||
4765 | if (ai_mite_status & CHSR_LINKC) | ||
4766 | writel(CHOR_CLRLC, | ||
4767 | devpriv->mite->mite_io_addr + | ||
4768 | MITE_CHOR(devpriv-> | ||
4769 | ai_mite_chan->channel)); | ||
4770 | } | ||
4771 | if (devpriv->ao_mite_chan) { | ||
4772 | ao_mite_status = mite_get_status(devpriv->ao_mite_chan); | ||
4773 | if (ao_mite_status & CHSR_LINKC) | ||
4774 | writel(CHOR_CLRLC, | ||
4775 | mite->mite_io_addr + | ||
4776 | MITE_CHOR(devpriv-> | ||
4777 | ao_mite_chan->channel)); | ||
4778 | } | ||
4779 | spin_unlock_irqrestore(&devpriv->mite_channel_lock, flags_too); | ||
4780 | } | ||
4781 | #endif | ||
4782 | ack_a_interrupt(dev, a_status); | ||
4783 | ack_b_interrupt(dev, b_status); | ||
4784 | if ((a_status & Interrupt_A_St) || (ai_mite_status & CHSR_INT)) | ||
4785 | handle_a_interrupt(dev, a_status, ai_mite_status); | ||
4786 | if ((b_status & Interrupt_B_St) || (ao_mite_status & CHSR_INT)) | ||
4787 | handle_b_interrupt(dev, b_status, ao_mite_status); | ||
4788 | handle_gpct_interrupt(dev, 0); | ||
4789 | handle_gpct_interrupt(dev, 1); | ||
4790 | handle_cdio_interrupt(dev); | ||
4791 | |||
4792 | spin_unlock_irqrestore(&dev->spinlock, flags); | ||
4793 | return IRQ_HANDLED; | ||
4794 | } | ||
4795 | |||
4808 | static int ni_E_init(struct comedi_device *dev) | 4796 | static int ni_E_init(struct comedi_device *dev) |
4809 | { | 4797 | { |
4810 | const struct ni_board_struct *board = comedi_board(dev); | 4798 | const struct ni_board_struct *board = comedi_board(dev); |