spi: atmel: fix corrupted data issue on SAM9 family SoCs
authorCyrille Pitchen <cyrille.pitchen@microchip.com>
Fri, 23 Jun 2017 15:39:16 +0000 (17:39 +0200)
committerMark Brown <broonie@kernel.org>
Fri, 23 Jun 2017 16:15:28 +0000 (17:15 +0100)
commit7094576ccdc3acfe1e06a1e2ab547add375baf7f
treeb89b4ed4d99ea2bef7b5fbc3c88fff9dfc6a81b3
parent2ea659a9ef488125eb46da6eb571de5eae5c43f6
spi: atmel: fix corrupted data issue on SAM9 family SoCs

This patch disables the use of the DMA for data transfer and forces the
use of PIO transfers instead as a quick fixup to solve the cache aliasing
issue on ARM9 based cores, which embeds a VIVT data cache.

Indeed in the case of VIVT data caches, it is not safe to call dma_map_*()
functions to map buffers for DMA transfers when those buffers have been
allocated by vmalloc() or from any DMA-unsafe area.

Further patches may propose a better solution based on the use of a bounce
buffer at the SPI sub-system level but such solution needs more time to be
discussed. Then the use of DMA transfers could be enabled again to improve
the performances but before that, this patch already solves the issue.

Signed-off-by: Cyrille Pitchen <cyrille.pitchen@microchip.com>
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Cc: stable@vger.kernel.org
drivers/spi/spi-atmel.c