spi: omap2-mcspi: Set FIFO DMA trigger level to word length
authorVignesh R <vigneshr@ti.com>
Mon, 15 Oct 2018 06:38:28 +0000 (12:08 +0530)
committerMark Brown <broonie@kernel.org>
Fri, 19 Oct 2018 12:32:58 +0000 (13:32 +0100)
commitb682cffa3ac6d9d9e16e9b413c45caee3b391fab
tree9f30654b0c5dad841255d5b53c653c9a252b7be3
parent13d515c796adc49a49b0cd2212ccd7f43a37fc5a
spi: omap2-mcspi: Set FIFO DMA trigger level to word length

McSPI has 32 byte FIFO in Transmit-Receive mode. Current code tries to
configuration FIFO watermark level for DMA trigger to be GCD of transfer
length and max FIFO size which would mean trigger level may be set to 32
for transmit-receive mode if length is aligned. This does not work in
case of SPI slave mode where FIFO always needs to have data ready
whenever master starts the clock. With DMA trigger size of 32 there will
be a small window during slave TX where DMA is still putting data into
FIFO but master would have started clock for next byte, resulting in
shifting out of stale data. Similarly, on Slave RX side there may be RX
FIFO overflow
Fix this by setting FIFO watermark for DMA trigger to word
length. This means DMA is triggered as soon as FIFO has space for word
length bytes and DMA would make sure FIFO is almost always full
therefore improving FIFO occupancy in both master and slave mode.

Signed-off-by: Vignesh R <vigneshr@ti.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-omap2-mcspi.c