* Accept multi-segment scatterlist requests to reduce the cost
of data transfer operations, increasing speed dramatically
* Release DMA channel lazily for a minor performance boost
* Synchronize the completion of a request to both DMA transfer
completion and command completion to work around a problem of
some response IRQs being lost
Also, updates from DB for handling the individual DMA segments:
* Use the correct sg_dma_*() calls;
* Return to the previous scheme of doing DMA in frames of up
no more than one FIFO's worth of data, and
* Don't print messages in the curious "DMA IRQ with DMA still
pending" case.
This provides about a 10% improvement in elapsed time during large DMA
transfers, 100% improvement in kernel time, and orders of magnitude
reduction in IRQ count.
Signed-off-by: Juha Yrjölä <juha.yrjola@nokia.com> Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>