From a786cb4a0b30bd33bfc1f94a7ca462853386d147 Mon Sep 17 00:00:00 2001 From: Jon Lin Date: Tue, 13 Dec 2022 21:27:00 +0800 Subject: [PATCH] spi: rockchip: Mask cs inactive interrupt after dma finished The cs inactive logic can always be triggered when the controller is working, so the interrupt may be triggered when processing the dma transmission completion interrupt. Change-Id: I529140e43125ff3a06da67604a17afb585aafd72 Signed-off-by: Jon Lin --- drivers/spi/spi-rockchip.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/spi/spi-rockchip.c b/drivers/spi/spi-rockchip.c index b96b7fa80899..c2a5405fb678 100644 --- a/drivers/spi/spi-rockchip.c +++ b/drivers/spi/spi-rockchip.c @@ -423,6 +423,8 @@ static void rockchip_spi_dma_rxcb(void *data) writel_relaxed(0, rs->regs + ROCKCHIP_SPI_IMR); spi_enable_chip(rs, false); + writel_relaxed(0, rs->regs + ROCKCHIP_SPI_IMR); + writel_relaxed(0xffffffff, rs->regs + ROCKCHIP_SPI_ICR); spi_finalize_current_transfer(ctlr); } @@ -439,6 +441,8 @@ static void rockchip_spi_dma_txcb(void *data) wait_for_tx_idle(rs, ctlr->slave); spi_enable_chip(rs, false); + writel_relaxed(0, rs->regs + ROCKCHIP_SPI_IMR); + writel_relaxed(0xffffffff, rs->regs + ROCKCHIP_SPI_ICR); spi_finalize_current_transfer(ctlr); }