From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 025832F70DA; Mon, 5 May 2025 23:18:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746487091; cv=none; b=FdpkOfs3mmignOZ4L+nZS5E6RW6oEcBSsOLbOI8eFWZRDiuUzqnhPh16sVmOcIWEPH/6cEUEUNMN4keAUYFj07tHggL/0f6RG5sitS9+ghGJfrS52CDOR9p2zrOCbKaslXnoxVjEZBlnFmErRTLY3PRm+jND9ZXoDUOmUtav24k= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746487091; c=relaxed/simple; bh=tFq2qDVMxIDNPrY8Tt5T2p+0pSb3yPpj0FyqTmIs6O0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=AogYMRQ6XO0Q28XXKiTAPjWjROJEvGjv9Tedmh/b0/REzprX1P/rjJDTs6g3/Qptim40xLv0152qjPy97mMZqMWYG/bu5o2oNACMadQqscusOfyzplsx3HIfn8QzeqZP25xQaHNVv1WqhnGk+oXyp/WpB5ujiCfPochFIuxv2Jc= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=N7jheqcq; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="N7jheqcq" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8D800C4CEE4; Mon, 5 May 2025 23:18:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1746487089; bh=tFq2qDVMxIDNPrY8Tt5T2p+0pSb3yPpj0FyqTmIs6O0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=N7jheqcqq5NBTLWfI8qrVlIfpuNXTsn9KLZc1n8hmmChD1DH1yfGezdRyYrrFURTS uwiFVw1M0BrFfHrdrnkXirFl5KhHl/0RO1pZ6+DtojGFgUX1bugOAh1IPkioFb29Ye 5pUAr+iqM3kVCKFh2nA08vF7W9pGsD2VIZRJOS3u64pY3DjJ26y7NaxzAKYvUeSt/m If3dq1OhDHbEOELpcfaW6oIjEF8ytpW5gVTv9KxiI/0z30otBSwDLAi09yHLPmja4V xOPUh46BwAhMlQsYbFseahGV79Bj6yCdaTF+6TGJxiMljUVSV2NwRhZYwC53CJuWLc bL/UGJT6LCfyw== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Sean Anderson , Mark Brown , Sasha Levin , michal.simek@amd.com, linux-spi@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH AUTOSEL 5.15 149/153] spi: zynqmp-gqspi: Always acknowledge interrupts Date: Mon, 5 May 2025 19:13:16 -0400 Message-Id: <20250505231320.2695319-149-sashal@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250505231320.2695319-1-sashal@kernel.org> References: <20250505231320.2695319-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore X-stable-base: Linux 5.15.181 Content-Transfer-Encoding: 8bit From: Sean Anderson [ Upstream commit 89785306453ce6d949e783f6936821a0b7649ee2 ] RXEMPTY can cause an IRQ, even though we may not do anything about it (such as if we are waiting for more received data). We must still handle these IRQs because we can tell they were caused by the device. Signed-off-by: Sean Anderson Link: https://patch.msgid.link/20250116224130.2684544-6-sean.anderson@linux.dev Signed-off-by: Mark Brown Signed-off-by: Sasha Levin --- drivers/spi/spi-zynqmp-gqspi.c | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/drivers/spi/spi-zynqmp-gqspi.c b/drivers/spi/spi-zynqmp-gqspi.c index 1847e3485dfea..77aef2a265615 100644 --- a/drivers/spi/spi-zynqmp-gqspi.c +++ b/drivers/spi/spi-zynqmp-gqspi.c @@ -691,7 +691,6 @@ static void zynqmp_process_dma_irq(struct zynqmp_qspi *xqspi) static irqreturn_t zynqmp_qspi_irq(int irq, void *dev_id) { struct zynqmp_qspi *xqspi = (struct zynqmp_qspi *)dev_id; - irqreturn_t ret = IRQ_NONE; u32 status, mask, dma_status = 0; status = zynqmp_gqspi_read(xqspi, GQSPI_ISR_OFST); @@ -706,27 +705,24 @@ static irqreturn_t zynqmp_qspi_irq(int irq, void *dev_id) dma_status); } - if (mask & GQSPI_ISR_TXNOT_FULL_MASK) { + if (!mask && !dma_status) + return IRQ_NONE; + + if (mask & GQSPI_ISR_TXNOT_FULL_MASK) zynqmp_qspi_filltxfifo(xqspi, GQSPI_TX_FIFO_FILL); - ret = IRQ_HANDLED; - } - if (dma_status & GQSPI_QSPIDMA_DST_I_STS_DONE_MASK) { + if (dma_status & GQSPI_QSPIDMA_DST_I_STS_DONE_MASK) zynqmp_process_dma_irq(xqspi); - ret = IRQ_HANDLED; - } else if (!(mask & GQSPI_IER_RXEMPTY_MASK) && - (mask & GQSPI_IER_GENFIFOEMPTY_MASK)) { + else if (!(mask & GQSPI_IER_RXEMPTY_MASK) && + (mask & GQSPI_IER_GENFIFOEMPTY_MASK)) zynqmp_qspi_readrxfifo(xqspi, GQSPI_RX_FIFO_FILL); - ret = IRQ_HANDLED; - } if (xqspi->bytes_to_receive == 0 && xqspi->bytes_to_transfer == 0 && ((status & GQSPI_IRQ_MASK) == GQSPI_IRQ_MASK)) { zynqmp_gqspi_write(xqspi, GQSPI_IDR_OFST, GQSPI_ISR_IDR_MASK); complete(&xqspi->data_completion); - ret = IRQ_HANDLED; } - return ret; + return IRQ_HANDLED; } /** -- 2.39.5