aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorH Hartley Sweeten <hsweeten@visionengravers.com>2014-05-28 19:26:42 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-06-18 17:33:52 -0400
commitc75527fbf688efb40aa58da08eb622af40cb8841 (patch)
treec066cf9b5e6750c0d6a3effda556f22a7f2f90f8
parent2655c8a1d7305ce0f80c748a37efbb8252dc01ae (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.c130
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
197static void handle_cdio_interrupt(struct comedi_device *dev);
198
199static void ni_rtsi_init(struct comedi_device *dev); 197static void ni_rtsi_init(struct comedi_device *dev);
200static int ni_rtsi_insn_config(struct comedi_device *dev, 198static 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);
210static void ni_load_channelgain_list(struct comedi_device *dev, 208static 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
213static void handle_gpct_interrupt(struct comedi_device *dev,
214 unsigned short counter_index);
215
216static int ni_set_master_clock(struct comedi_device *dev, unsigned source, 211static int ni_set_master_clock(struct comedi_device *dev, unsigned source,
217 unsigned period_ns); 212 unsigned period_ns);
218static void ack_a_interrupt(struct comedi_device *dev, unsigned short a_status);
219static void ack_b_interrupt(struct comedi_device *dev, unsigned short b_status);
220 213
221enum aimodes { 214enum aimodes {
222 AIMODE_NONE = 0, 215 AIMODE_NONE = 0,
@@ -270,11 +263,6 @@ enum timebase_nanoseconds {
270 263
271static const int num_adc_stages_611x = 3; 264static const int num_adc_stages_611x = 3;
272 265
273static void handle_a_interrupt(struct comedi_device *dev, unsigned short status,
274 unsigned ai_mite_status);
275static void handle_b_interrupt(struct comedi_device *dev, unsigned short status,
276 unsigned ao_mite_status);
277
278static inline void ni_set_bitfield(struct comedi_device *dev, int reg, 266static 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
712static 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
772static void ni_sync_ai_dma(struct comedi_device *dev) 701static 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
4737static 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
4808static int ni_E_init(struct comedi_device *dev) 4796static 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);