From 196540ee440d054313040925e3ed9daf39b9ec19 Mon Sep 17 00:00:00 2001 From: H Hartley Sweeten Date: Tue, 4 Nov 2014 10:54:39 -0700 Subject: [PATCH] staging: comedi: addi_apci_3120: remove private data 'ai_running' This member of the private data was used to determine if the interrupt routine was handling data for the (*insn_read) or an async command. Now that the (*insn_read) does not use interrupts this member is not needed. Remove the member and refactor the code. Signed-off-by: H Hartley Sweeten Reviewed-by: Ian Abbott Signed-off-by: Greg Kroah-Hartman --- .../comedi/drivers/addi-data/hwdrv_apci3120.c | 41 ++++++++-------------- drivers/staging/comedi/drivers/addi_apci_3120.c | 1 - 2 files changed, 14 insertions(+), 28 deletions(-) diff --git a/drivers/staging/comedi/drivers/addi-data/hwdrv_apci3120.c b/drivers/staging/comedi/drivers/addi-data/hwdrv_apci3120.c index 83881a61dbe0..7bd17c28ebae 100644 --- a/drivers/staging/comedi/drivers/addi-data/hwdrv_apci3120.c +++ b/drivers/staging/comedi/drivers/addi-data/hwdrv_apci3120.c @@ -195,7 +195,6 @@ static int apci3120_reset(struct comedi_device *dev) { struct apci3120_private *devpriv = dev->private; - devpriv->ai_running = 0; devpriv->b_InterruptMode = APCI3120_EOC_MODE; /* variables used in timer subdevice */ @@ -246,7 +245,6 @@ static int apci3120_cancel(struct comedi_device *dev, inw(dev->iobase + APCI3120_STATUS_REG); devpriv->ui_DmaActualBuffer = 0; - devpriv->ai_running = 0; devpriv->b_InterruptMode = APCI3120_EOC_MODE; return 0; @@ -338,8 +336,6 @@ static int apci3120_cyclic_ai(int mode, unsigned int dmalen1 = 0; unsigned int divisor0; - devpriv->ai_running = 1; - /* clear software registers */ devpriv->timer_mode = 0; devpriv->mode = 0; @@ -775,18 +771,16 @@ static irqreturn_t apci3120_interrupt(int irq, void *d) if ((status & APCI3120_STATUS_EOS_INT) && devpriv->b_InterruptMode == APCI3120_EOS_MODE) { - if (devpriv->ai_running) { - unsigned short val; - int i; - - for (i = 0; i < cmd->chanlist_len; i++) { - val = inw(dev->iobase + 0); - comedi_buf_write_samples(s, &val, 1); - } + unsigned short val; + int i; - devpriv->mode |= APCI3120_MODE_EOS_IRQ_ENA; - outb(devpriv->mode, dev->iobase + APCI3120_MODE_REG); + for (i = 0; i < cmd->chanlist_len; i++) { + val = inw(dev->iobase + 0); + comedi_buf_write_samples(s, &val, 1); } + + devpriv->mode |= APCI3120_MODE_EOS_IRQ_ENA; + outb(devpriv->mode, dev->iobase + APCI3120_MODE_REG); } if (status & APCI3120_STATUS_TIMER2_INT) { @@ -821,21 +815,14 @@ static irqreturn_t apci3120_interrupt(int irq, void *d) if ((status & APCI3120_STATUS_AMCC_INT) && devpriv->b_InterruptMode == APCI3120_DMA_MODE) { - if (devpriv->ai_running) { + /* Clear Timer Write TC int */ + outl(APCI3120_CLEAR_WRITE_TC_INT, + devpriv->amcc + APCI3120_AMCC_OP_REG_INTCSR); - /* Clear Timer Write TC int */ - outl(APCI3120_CLEAR_WRITE_TC_INT, - devpriv->amcc + APCI3120_AMCC_OP_REG_INTCSR); - - apci3120_clr_timer2_interrupt(dev); - - /* do some data transfer */ - apci3120_interrupt_dma(irq, d); - } else { - apci3120_timer_enable(dev, 0, false); - apci3120_timer_enable(dev, 1, false); - } + apci3120_clr_timer2_interrupt(dev); + /* do some data transfer */ + apci3120_interrupt_dma(irq, d); } comedi_handle_events(dev, s); diff --git a/drivers/staging/comedi/drivers/addi_apci_3120.c b/drivers/staging/comedi/drivers/addi_apci_3120.c index c18ee1750237..98de447d96b7 100644 --- a/drivers/staging/comedi/drivers/addi_apci_3120.c +++ b/drivers/staging/comedi/drivers/addi_apci_3120.c @@ -133,7 +133,6 @@ struct apci3120_private { unsigned short ctrl; unsigned char b_Timer2Mode; unsigned char b_Timer2Interrupt; - unsigned int ai_running:1; unsigned char b_InterruptMode; unsigned char b_ExttrigEnable; struct task_struct *tsk_Current; -- 2.11.0