Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1280667

[PATCH 2/4] dmaengine: qcom_bam_dma: clear BAM interrupt only if it is rised

From Stanimir Varbanov <stanimir.varbanov@linaro.org>
Newsgroups linux.kernel
Subject [PATCH 2/4] dmaengine: qcom_bam_dma: clear BAM interrupt only if it is rised
Date 2015-12-01 10:20 +0100
Message-ID <qAPgm-7I5-9@gated-at.bofh.it> (permalink)
References <qAPgm-7I5-11@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


Currently we write BAM_IRQ_CLR register with zero even when no
BAM_IRQ occured. This write has some bad side effects when the
BAM instance is for the crypto engine. In case of crypto engine
some of the BAM registers are xPU protected and they cannot be
controlled by the driver.

Signed-off-by: Stanimir Varbanov <stanimir.varbanov@linaro.org>
---
 drivers/dma/qcom_bam_dma.c |   12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/drivers/dma/qcom_bam_dma.c b/drivers/dma/qcom_bam_dma.c
index dc9da477eb69..0f06f3b7a72b 100644
--- a/drivers/dma/qcom_bam_dma.c
+++ b/drivers/dma/qcom_bam_dma.c
@@ -800,13 +800,17 @@ static irqreturn_t bam_dma_irq(int irq, void *data)
 	if (srcs & P_IRQ)
 		tasklet_schedule(&bdev->task);
 
-	if (srcs & BAM_IRQ)
+	if (srcs & BAM_IRQ) {
 		clr_mask = readl_relaxed(bam_addr(bdev, 0, BAM_IRQ_STTS));
 
-	/* don't allow reorder of the various accesses to the BAM registers */
-	mb();
+		/*
+		 * don't allow reorder of the various accesses to the BAM
+		 * registers
+		 */
+		mb();
 
-	writel_relaxed(clr_mask, bam_addr(bdev, 0, BAM_IRQ_CLR));
+		writel_relaxed(clr_mask, bam_addr(bdev, 0, BAM_IRQ_CLR));
+	}
 
 	return IRQ_HANDLED;
 }
-- 
1.7.9.5

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Back to linux.kernel | Previous | NextNext in thread | Find similar | Unroll thread


Thread

[PATCH 2/4] dmaengine: qcom_bam_dma: clear BAM interrupt only if it is rised Stanimir Varbanov <stanimir.varbanov@linaro.org> - 2015-12-01 10:20 +0100
  Re: [PATCH 2/4] dmaengine: qcom_bam_dma: clear BAM interrupt only if it is rised Arnd Bergmann <arnd@arndb.de> - 2015-12-01 11:40 +0100
    Re: [PATCH 2/4] dmaengine: qcom_bam_dma: clear BAM interrupt only if  it is rised Stanimir Varbanov <stanimir.varbanov@linaro.org> - 2015-12-02 14:00 +0100
      Re: [PATCH 2/4] dmaengine: qcom_bam_dma: clear BAM interrupt only if it is rised Arnd Bergmann <arnd@arndb.de> - 2015-12-02 14:10 +0100
        Re: [PATCH 2/4] dmaengine: qcom_bam_dma: clear BAM interrupt only if  it is rised Stanimir Varbanov <stanimir.varbanov@linaro.org> - 2015-12-02 17:50 +0100
  Re: [PATCH 2/4] dmaengine: qcom_bam_dma: clear BAM interrupt only if  it is rised Andy Gross <agross@codeaurora.org> - 2015-12-01 18:30 +0100

csiph-web