staging: comedi: adl_pci9118: eliminate DMA buffer defragmentation step
authorIan Abbott <abbotti@mev.co.uk>
Thu, 27 Nov 2014 11:37:19 +0000 (11:37 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 3 Dec 2014 00:31:20 +0000 (16:31 -0800)
commite87f65b238a6c1e76776469d92190f6c46c5817f
tree0af136911566dd848093c74f0ccd11e344e65556
parentbb4a51a1b5d5acde77f814689aa467304bd942fb
staging: comedi: adl_pci9118: eliminate DMA buffer defragmentation step

The DMA operations used by the driver may have been set up to acquire
data from unwanted channels in addition to the wanted channels.
Currently, `interrupt_pci9118_ai_dma()` calls `defragment_dma_buffer()`
to move all the wanted data to the start of the DMA buffer and then
calls `comedi_buf_write_samples()` to copy it all to the comedi async
buffer.  Those two functions used to be called from
`move_block_from_dma()` which was absorbed into
`interrupt_pci9118_ai_dma()`.

Reinstate `move_block_from_dma()` but rewrite it to copy data directly
from the wanted fragments of the DMA buffer to the comedi async buffer
without defragmenting the buffer first.

Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/comedi/drivers/adl_pci9118.c