kernel: bump to 4.4.35
[openwrt/staging/yousong.git] / target / linux / ipq806x / patches-4.4 / 714-spi-qup-properly-detect-extra-interrupts.patch
index d8a9b31462e40372cd3f8e9617cb478bd818e04f..0039962481f82430afd7697ca5c9338b9e24d17b 100644 (file)
@@ -17,22 +17,20 @@ Signed-off-by: Matthew McClintock <mmcclint@codeaurora.org>
  drivers/spi/spi-qup.c | 15 +++++++++------
  1 file changed, 9 insertions(+), 6 deletions(-)
 
-diff --git a/drivers/spi/spi-qup.c b/drivers/spi/spi-qup.c
-index e487416..45e30c7 100644
 --- a/drivers/spi/spi-qup.c
 +++ b/drivers/spi/spi-qup.c
-@@ -509,6 +509,7 @@ static irqreturn_t spi_qup_qup_irq(int irq, void *dev_id)
+@@ -509,6 +509,7 @@ static irqreturn_t spi_qup_qup_irq(int i
        u32 opflags, qup_err, spi_err;
        unsigned long flags;
        int error = 0;
 +      bool done = 0;
-
        spin_lock_irqsave(&controller->lock, flags);
        xfer = controller->xfer;
-@@ -567,16 +568,19 @@ static irqreturn_t spi_qup_qup_irq(int irq, void *dev_id)
+@@ -567,16 +568,19 @@ static irqreturn_t spi_qup_qup_irq(int i
                        spi_qup_write(controller, xfer);
        }
-
 -      spin_lock_irqsave(&controller->lock, flags);
 -      controller->error = error;
 -      controller->xfer = xfer;
@@ -40,7 +38,7 @@ index e487416..45e30c7 100644
 -
        /* re-read opflags as flags may have changed due to actions above */
        opflags = readl_relaxed(controller->base + QUP_OPERATIONAL);
-
        if ((controller->rx_bytes == xfer->len &&
                (opflags & QUP_OP_MAX_INPUT_DONE_FLAG)) ||  error)
 +              done = true;
@@ -52,9 +50,9 @@ index e487416..45e30c7 100644
 +
 +      if (done)
                complete(&controller->done);
-
        return IRQ_HANDLED;
-@@ -769,7 +773,6 @@ static int spi_qup_transfer_one(struct spi_master *master,
+@@ -769,7 +773,6 @@ static int spi_qup_transfer_one(struct s
  exit:
        spi_qup_set_state(controller, QUP_STATE_RESET);
        spin_lock_irqsave(&controller->lock, flags);
@@ -62,6 +60,3 @@ index e487416..45e30c7 100644
        if (!ret)
                ret = controller->error;
        spin_unlock_irqrestore(&controller->lock, flags);
---
-2.7.2
-