aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/ipq806x/patches-4.4/715-spi-qup-don-t-re-read-opflags-to-see-if-transaction-.patch
blob: 54711a1d051bddbb0363c5df82f4f529ad994649 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
From f57ff801665b868d8607c9e872466b54982564bc Mon Sep 17 00:00:00 2001
From: Matthew McClintock <mmcclint@codeaurora.org>
Date: Thu, 10 Mar 2016 16:48:27 -0600
Subject: [PATCH] spi: qup: don't re-read opflags to see if transaction is done
 for reads

For reads, we will get another interrupt so we need to handle things
then. For writes, we can finish up now.

Change-Id: I4fa95ae7bb9d78f8ba54c613b981b37d4ea81d7e
Signed-off-by: Matthew McClintock <mmcclint@codeaurora.org>
---
 drivers/spi/spi-qup.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/spi/spi-qup.c b/drivers/spi/spi-qup.c
index 45e30c7..59bc37c 100644
--- a/drivers/spi/spi-qup.c
+++ b/drivers/spi/spi-qup.c
@@ -569,7 +569,8 @@ static irqreturn_t spi_qup_qup_irq(int irq, void *dev_id)
 	}

 	/* re-read opflags as flags may have changed due to actions above */
-	opflags = readl_relaxed(controller->base + QUP_OPERATIONAL);
+	if (opflags & QUP_OP_OUT_SERVICE_FLAG)
+		opflags = readl_relaxed(controller->base + QUP_OPERATIONAL);

 	if ((controller->rx_bytes == xfer->len &&
 		(opflags & QUP_OP_MAX_INPUT_DONE_FLAG)) ||  error)
--
2.7.2