lkml.org 
[lkml]   [2020]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 284/639] spi: tegra114: terminate dma and reset on transfer timeout
    Date
    From: Sowjanya Komatineni <skomatineni@nvidia.com>

    [ Upstream commit 32bd1a9551cae34e6889afa235c7afdfede9aeac ]

    Fixes: terminate DMA and perform controller reset on transfer timeout
    to clear the FIFO's and errors.

    Signed-off-by: Sowjanya Komatineni <skomatineni@nvidia.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/spi/spi-tegra114.c | 9 +++++++++
    1 file changed, 9 insertions(+)

    diff --git a/drivers/spi/spi-tegra114.c b/drivers/spi/spi-tegra114.c
    index 17c2c78318f71..b1b726673f850 100644
    --- a/drivers/spi/spi-tegra114.c
    +++ b/drivers/spi/spi-tegra114.c
    @@ -869,7 +869,16 @@ static int tegra_spi_transfer_one_message(struct spi_master *master,
    if (WARN_ON(ret == 0)) {
    dev_err(tspi->dev,
    "spi transfer timeout, err %d\n", ret);
    + if (tspi->is_curr_dma_xfer &&
    + (tspi->cur_direction & DATA_DIR_TX))
    + dmaengine_terminate_all(tspi->tx_dma_chan);
    + if (tspi->is_curr_dma_xfer &&
    + (tspi->cur_direction & DATA_DIR_RX))
    + dmaengine_terminate_all(tspi->rx_dma_chan);
    ret = -EIO;
    + reset_control_assert(tspi->rst);
    + udelay(2);
    + reset_control_deassert(tspi->rst);
    goto complete_xfer;
    }

    --
    2.20.1


    \
     
     \ /
      Last update: 2020-01-24 12:17    [W:2.884 / U:0.124 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site