Hi Dirk, On Wed, Sep 6, 2017 at 9:05 AM, Dirk Behme <dirk.behme@xxxxxxxxxxxx> wrote: > From: Hiromitsu Yamasaki <hiromitsu.yamasaki.ym@xxxxxxxxxxx> > > When Tx DMA is only used, Tx FIFO is still not empty after DMA callback. > This patch waits for sweeping data out of the Tx FIFO. > > Signed-off-by: Hiromitsu Yamasaki <hiromitsu.yamasaki.ym@xxxxxxxxxxx> > [adjust context] > Signed-off-by: Dirk Behme <dirk.behme@xxxxxxxxxxxx> > --- > drivers/spi/spi-sh-msiof.c | 13 ++++++++++++- > 1 file changed, 12 insertions(+), 1 deletion(-) > > diff --git a/drivers/spi/spi-sh-msiof.c b/drivers/spi/spi-sh-msiof.c > index 660b03ed6770..a960e8da123d 100644 > --- a/drivers/spi/spi-sh-msiof.c > +++ b/drivers/spi/spi-sh-msiof.c > @@ -638,6 +638,17 @@ static int sh_msiof_wait_for_completion(struct sh_msiof_spi_priv *p, > dev_err(&p->pdev->dev, "Tx DMA timeout\n"); > return -ETIMEDOUT; > } > + if (!rx) { May the issue also happen is TX and RX are used? See also "[PATCH 4/8] spi: sh-msiof: Fix DMA completion". > + sh_msiof_write(p, IER, IER_TEOFE); > + > + /* wait for tx fifo to be emptied */ > + if (!wait_for_completion_timeout(&p->done, > + HZ)) { > + dev_err(&p->pdev->dev, > + "Tx fifo to be emptied timeout\n"); > + return -ETIMEDOUT; > + } > + } > } > if (rx) { > if (!wait_for_completion_timeout(&p->done_dma_rx, Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds