linux-spi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC] spi: dw: Test the last revision of the DMA module
@ 2020-06-25 22:08 Serge Semin
  2020-06-25 22:55 ` Andy Shevchenko
  0 siblings, 1 reply; 6+ messages in thread
From: Serge Semin @ 2020-06-25 22:08 UTC (permalink / raw)
  To: Andy Shevchenko, Andy Shevchenko; +Cc: Serge Semin, Mark Brown, linux-spi

Hello Andy.
  
Have you tested the recent revision of the DW APB SSI driver with DMA
enabled? I am particularly concerned about the next fix in the driver:

> --- a/drivers/spi/spi-dw-dma.c
> +++ b/drivers/spi/spi-dw-dma.c
> @@ -346,8 +375,8 @@ static int dw_spi_dma_setup(struct dw_spi *dws, struct spi_transfer *xfer)
>  {
>       u16 imr = 0, dma_ctrl = 0;
>  
> -     dw_writel(dws, DW_SPI_DMARDLR, RX_BURST_LEVEL - 1);
> -     dw_writel(dws, DW_SPI_DMATDLR, TX_BURST_LEVEL);
> +     dw_writel(dws, DW_SPI_DMARDLR, dws->rxburst - 1);
> +     dw_writel(dws, DW_SPI_DMATDLR, dws->fifo_len - dws->txburst);
>  
>       if (xfer->tx_buf) {
>               dma_ctrl |= SPI_DMA_TDMAE;

Generally speaking it must work (even DW APB SSI/DMA databook suggests to have
such DMATDLR setting), but in our case of a relatively slow DMA engine (it's
clocked with just twice higher frequency with respect to the max SPI bus
speed) sometimes SPI Rx FIFO gets overflown when SPI bus is configured to work
with maximum speed (there are multiple reasons why this happens, but generally
speaking all of them matter only due to the relatively slow DMA engine). The
problem is fixed by reducing a value written into the DMATDLR register.

I am wondering whether you've tested the last revision of the driver and it
worked for your version of the DW APB SSI + DW DMAC IPs. AFAIU DMA engine on
your devices is faster than on ours and has LLPs supported. So if you haven't
noticed any problem in the recent driver, then I'll send a fixup for our version
of the DW APB SSI block only (I'll have to introduce a new compatible string).
Otherwise I could get back a setting of dws->txburst into the DW_SPI_DMATDLR
register, which isn't that optimal as the current DMATDLR setting
of (fifo_len - txburst), but at least will make things working for all DMAs.

-Sergey

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2020-07-21  6:39 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-25 22:08 [RFC] spi: dw: Test the last revision of the DMA module Serge Semin
2020-06-25 22:55 ` Andy Shevchenko
2020-06-26 13:29   ` Serge Semin
2020-07-20 10:51     ` Andy Shevchenko
2020-07-20 21:02       ` Serge Semin
2020-07-21  6:38         ` Andy Shevchenko

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).