]> git.baikalelectronics.ru Git - kernel.git/commit
spi/pxa2xx: Prevent DMA from transferring too many bytes
authorMika Westerberg <mika.westerberg@linux.intel.com>
Thu, 8 May 2014 14:30:31 +0000 (17:30 +0300)
committerMark Brown <broonie@linaro.org>
Mon, 12 May 2014 21:05:37 +0000 (22:05 +0100)
commitde474f62136653f09cd644181b964dadec02979f
tree665d90e7a448682bd9430a7bd303d5506de9be30
parent03a169e57a9a3fd69c1713c317a06f163ad63b5c
spi/pxa2xx: Prevent DMA from transferring too many bytes

In case we are doing DMA transfer and the size of the buffer is not multiple
of 4 bytes the driver truncates that to 4-byte boundary and tries to handle
remaining bytes using PIO.

Or that is what it tried to do. What actually happens is that it calls
ALIGN() to the buffer size which aligns it to the next 4-byte boundary
(doesn't truncate). Doing this results 1-3 bytes extra to be transferred.
Furthermore we handle remaining bytes using PIO which results one extra
byte to be transferred. In worst case the driver transfers 4 extra bytes.

While investigating this it turned out that the DMA hardware doesn't even
have such limitation so we can solve this by dropping the code that tries
to handle unaligned bytes.

Reported-by: Chiau Ee Chew <chiau.ee.chew@intel.com>
Reported-by: Hock Leong Kweh <hock.leong.kweh@intel.com>
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
drivers/spi/spi-pxa2xx-dma.c