5a9a62bb03
When either rx_buf or tx_buf is not being used, i.e. for plain read- or write operations, the atmel_spi uses a fixed-size DMA buffer instead. If the transfer is longer than the size of this buffer, it is split into multiple DMA transfers. When the transfer is split like this, the atmel_spi driver ends up using the same DMA address again and again even for the buffer that came from the user, which is of course wrong. Fix this by adding the number of bytes already transferred to the DMA address so that the data ends up in the right place. Thanks to Wu Xuan for discovering this bug. Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com> Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
||
---|---|---|
.. | ||
at25.c | ||
atmel_spi.c | ||
atmel_spi.h | ||
au1550_spi.c | ||
Kconfig | ||
Makefile | ||
mpc52xx_psc_spi.c | ||
omap_uwire.c | ||
pxa2xx_spi.c | ||
spi_bfin5xx.c | ||
spi_bitbang.c | ||
spi_butterfly.c | ||
spi_imx.c | ||
spi_mpc83xx.c | ||
spi_s3c24xx_gpio.c | ||
spi_s3c24xx.c | ||
spi.c | ||
spidev.c |