pxamci: support arbitrary block size
authorNicolas Pitre <nico@cam.org>
Tue, 9 Oct 2007 21:07:58 +0000 (17:07 -0400)
committerPierre Ossman <drzeus@drzeus.cx>
Wed, 10 Oct 2007 18:13:29 +0000 (20:13 +0200)
commitc783837bc69dd0f329a441c1704f5a02d01d1bd5
treeedeaf000845bc138ac1802ae8894b90b38c87729
parent599473cf15a3fae78cbc3192cfb38ca04d5abc72
pxamci: support arbitrary block size

The PXA has two transmit FIFOes, each32 byte deep.  when one FIFO is
full and the other one has been transmitted, they are automatically
swapped and DMA is triggered for another 32 byte burst.  However, when
there is less than 32 bytes left to send, the FIFO swap has to be done
manually. This is required for some SDIO transfers which are not
required to be multiples of 32 bytes.

A DMA completion interrupt is set for each descriptor which length isn't
a multiple of 32 in order to force the FIFO swap.  While at it, the DMA
interrupt handler has been made a bit more resilient against errors.

Signed-off-by: Nicolas Pitre <nico@marvell.com>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
drivers/mmc/host/pxamci.c