staging: comedi: drivers should not clear the async->events
authorH Hartley Sweeten <hsweeten@visionengravers.com>
Sat, 8 Mar 2014 00:31:46 +0000 (17:31 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 17 Mar 2014 20:55:57 +0000 (13:55 -0700)
The comedi core resets the async->events in comedi_buf_reset() which is
called when the subdevice is restored to an idle state and at the start
of an async command. The async->events are also cleared after handling
the events in comedi_event().

Drivers should not clear the events manually.

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>
drivers/staging/comedi/drivers/addi-data/hwdrv_apci3120.c
drivers/staging/comedi/drivers/addi-data/hwdrv_apci3200.c
drivers/staging/comedi/drivers/adl_pci9118.c
drivers/staging/comedi/drivers/comedi_test.c
drivers/staging/comedi/drivers/das16m1.c
drivers/staging/comedi/drivers/das1800.c
drivers/staging/comedi/drivers/das800.c
drivers/staging/comedi/drivers/gsc_hpdi.c
drivers/staging/comedi/drivers/me4000.c

index bd05857b82f2811b69324c87fda1c4f5beacaaf9..978cc57c5c22893dbc795ab51ecce3e5cf319cba 100644 (file)
@@ -1574,8 +1574,6 @@ static int i_APCI3120_InterruptHandleEos(struct comedi_device *dev)
 
        n_chan = devpriv->ui_AiNbrofChannels;
 
-       s->async->events = 0;
-
        for (i = 0; i < n_chan; i++)
                err &= comedi_buf_put(s->async, inw(dev->iobase + 0));
 
index 8c85a09d1c661fc38bf2a42081da7ace0e30c7f0..89ffc1f46dc36da7133f6e50775a8d1928c58933 100644 (file)
@@ -2619,7 +2619,6 @@ static int i_APCI3200_InterruptHandleEos(struct comedi_device *dev)
                /* BEGIN JK 18.10.2004: APCI-3200 Driver update 0.7.57 -> 0.7.68 */
                /* This value is not used */
                /* ui_ChannelNumber = inl(devpriv->iobase+s_BoardInfos [dev->minor].i_Offset + 24); */
-               s->async->events = 0;
                /* END JK 18.10.2004: APCI-3200 Driver update 0.7.57 -> 0.7.68 */
 
       /*************************************/
index 980ce495c8d0e44ecdf8bad98aad021a4014821e..3cfa1756fa6aa2cf9d4091042de8aff01506805d 100644 (file)
@@ -955,8 +955,6 @@ static void interrupt_pci9118_ai_onesample(struct comedi_device *dev,
        struct pci9118_private *devpriv = dev->private;
        unsigned short sampl;
 
-       s->async->events = 0;
-
        if (int_adstat & devpriv->ai_maskerr)
                if (pci9118_decode_error_status(dev, s, int_adstat))
                        return;
index 3f596669d07a229e52b2793317d3bc49eef1d785..cd9562556d2c8118f9c76a3b18cf1de65d9cee40 100644 (file)
@@ -185,7 +185,6 @@ static void waveform_ai_interrupt(unsigned long arg)
            (devpriv->usec_remainder + elapsed_time) / devpriv->scan_period;
        devpriv->usec_remainder =
            (devpriv->usec_remainder + elapsed_time) % devpriv->scan_period;
-       async->events = 0;
 
        if (cmd->stop_src == TRIG_COUNT) {
                unsigned int remaining = cmd->stop_arg - devpriv->ai_count;
index 70aecbcb7c6d26aa61f2a39f719d3aa97dea5707..779225831dc0688e5677ab1ef2f5d8dca05f75ab 100644 (file)
@@ -416,7 +416,6 @@ static void das16m1_handler(struct comedi_device *dev, unsigned int status)
 
        s = dev->read_subdev;
        async = s->async;
-       async->events = 0;
        cmd = &async->cmd;
 
        /*  figure out how many samples are in fifo */
index 9f353cf9c0ed6ef80fe4dcc9541f61cc3216747c..8e975d6b06db175fe3dff11b3caab1f61e828084 100644 (file)
@@ -646,7 +646,6 @@ static void das1800_ai_handler(struct comedi_device *dev)
        struct comedi_cmd *cmd = &async->cmd;
        unsigned int status = inb(dev->iobase + DAS1800_STATUS);
 
-       async->events = 0;
        /*  select adc for base address + 0 */
        outb(ADC, dev->iobase + DAS1800_SELECT);
        /*  dma buffer full */
index a4fb3d64420c9ce27f310dc3f9c383ef7c317b9f..3e408370dcf339cf15080662cb9b21fb6562964c 100644 (file)
@@ -448,7 +448,6 @@ static int das800_ai_do_cmd(struct comedi_device *dev,
        das800_ind_write(dev, conv_bits, CONV_CONTROL);
        spin_unlock_irqrestore(&dev->spinlock, irq_flags);
 
-       async->events = 0;
        das800_enable(dev);
        return 0;
 }
index de60a2871d70ef58d0c0ea15ae7a0de5aa2d518c..5af0f78dab479097283b7c5d138b71304d58f8a5 100644 (file)
@@ -746,8 +746,6 @@ static irqreturn_t handle_interrupt(int irq, void *d)
        hpdi_intr_status = readl(devpriv->hpdi_iobase + INTERRUPT_STATUS_REG);
        hpdi_board_status = readl(devpriv->hpdi_iobase + BOARD_STATUS_REG);
 
-       async->events = 0;
-
        if (hpdi_intr_status) {
                writel(hpdi_intr_status,
                       devpriv->hpdi_iobase + INTERRUPT_STATUS_REG);
index e739bcd66a04e220abeecb2c995479c1adf0a62e..f02b31b317ec05a822325ee0dbb2349140fab5c2 100644 (file)
@@ -1112,9 +1112,6 @@ static irqreturn_t me4000_ai_isr(int irq, void *dev_id)
        if (!dev->attached)
                return IRQ_NONE;
 
-       /* Reset all events */
-       s->async->events = 0;
-
        if (inl(dev->iobase + ME4000_IRQ_STATUS_REG) &
            ME4000_IRQ_STATUS_BIT_AI_HF) {
                /* Read status register to find out what happened */