• V
    spi: omap2-mcspi: Set FIFO DMA trigger level to word length · c5754427
    Vignesh R 提交于
    [ Upstream commit b682cffa3ac6d9d9e16e9b413c45caee3b391fab ]
    
    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: NVignesh R <vigneshr@ti.com>
    Signed-off-by: NMark Brown <broonie@kernel.org>
    Signed-off-by: NSasha Levin <sashal@kernel.org>
    Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
    c5754427
spi-omap2-mcspi.c 37.9 KB