On Wednesday, April 13, 2016 5:04 AM, Ian Abbott wrote:
> On 12/04/16 22:12, H Hartley Sweeten wrote:
>> This file is is bit of a mess. It's included by the ni_atmio, ni_mio_cs, and
>> ni_pcimio drivers. The ni_pcimio driver is the only one that uses DMA. It
>> defines PCIDMA so that the dma code is compiled it. This causes a bunch
>> of ifdef'ery in the file.
>>
>> The DIO subdevice for the ni_pcidio "is_m_series" boards is quite different
>> from the standard e-series DIO. Mainly it supports async commands that use
>> DMA.
>>
>> Tidy up some of the ifdef'ery by adding ifdef to the subdevice init.
>>
>> Also and ifdef to the interrupt handler and remove the unnecessary if
>> (!devpriv->is_m_series) check in handle_cdio_interrupt().
>>
>> Consolidate the other ifdef's to block out the affected code.
>>
>> Signed-off-by: H Hartley Sweeten <hswee...@visionengravers.com>
>> Cc: Ian Abbott <abbo...@mev.co.uk>
>> Cc: Greg Kroah-Hartman <gre...@linuxfoundation.org>
>> ---

 [snip]


>> @@ -3716,13 +3707,8 @@ static void handle_cdio_interrupt(struct 
>> comedi_device *dev)
>>      struct ni_private *devpriv = dev->private;
>>      unsigned cdio_status;
>>      struct comedi_subdevice *s = &dev->subdevices[NI_DIO_SUBDEV];
>> -#ifdef PCIDMA
>>      unsigned long flags;
>> -#endif
>>
>> -    if (!devpriv->is_m_series)
>> -            return;
>
> Removal of that test causes the function to screw up for E-series cards...

Oops. Overlooked that.

[snip]

> ...by reading a bogus (on E-series) register, possibly setting 
> s->async->events and always calling comedi_handle_events() (which also 
> uses s->async), even though s->async will be NULL for this subdevice on 
> E-series cards.
>
> So it needs some sort of test, and as its using M-series registers, 
> testing devpriv->is_m_series seems reasonable enough.  Alternatively, it 
> could test that s->async is non-NULL.

[snip]

> Alternatively, handle_cdio_interrupt() could be called conditionally here.

Thanks for spotting this. I'll fix it up.

Regards,
Hartley

_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to