lkml.org 
[lkml]   [2021]   [Mar]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.11 18/52] spi: stm32: make spurious and overrun interrupts visible
    Date
    From: Alain Volmat <alain.volmat@foss.st.com>

    [ Upstream commit c64e7efe46b7de21937ef4b3594d9b1fc74f07df ]

    We do not expect to receive spurious interrupts so rise a warning
    if it happens.

    RX overrun is an error condition that signals a corrupted RX
    stream both in dma and in irq modes. Report the error and
    abort the transfer in either cases.

    Signed-off-by: Alain Volmat <alain.volmat@foss.st.com>
    Link: https://lore.kernel.org/r/1612551572-495-9-git-send-email-alain.volmat@foss.st.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/spi/spi-stm32.c | 15 ++++-----------
    1 file changed, 4 insertions(+), 11 deletions(-)

    diff --git a/drivers/spi/spi-stm32.c b/drivers/spi/spi-stm32.c
    index 6017209c6d2f..4bcdad084801 100644
    --- a/drivers/spi/spi-stm32.c
    +++ b/drivers/spi/spi-stm32.c
    @@ -928,8 +928,8 @@ static irqreturn_t stm32h7_spi_irq_thread(int irq, void *dev_id)
    mask |= STM32H7_SPI_SR_RXP;

    if (!(sr & mask)) {
    - dev_dbg(spi->dev, "spurious IT (sr=0x%08x, ier=0x%08x)\n",
    - sr, ier);
    + dev_warn(spi->dev, "spurious IT (sr=0x%08x, ier=0x%08x)\n",
    + sr, ier);
    spin_unlock_irqrestore(&spi->lock, flags);
    return IRQ_NONE;
    }
    @@ -956,15 +956,8 @@ static irqreturn_t stm32h7_spi_irq_thread(int irq, void *dev_id)
    }

    if (sr & STM32H7_SPI_SR_OVR) {
    - dev_warn(spi->dev, "Overrun: received value discarded\n");
    - if (!spi->cur_usedma && (spi->rx_buf && (spi->rx_len > 0)))
    - stm32h7_spi_read_rxfifo(spi, false);
    - /*
    - * If overrun is detected while using DMA, it means that
    - * something went wrong, so stop the current transfer
    - */
    - if (spi->cur_usedma)
    - end = true;
    + dev_err(spi->dev, "Overrun: RX data lost\n");
    + end = true;
    }

    if (sr & STM32H7_SPI_SR_EOT) {
    --
    2.30.1
    \
     
     \ /
      Last update: 2021-03-02 17:10    [W:7.910 / U:0.300 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site