From: Chris Blair <chris.bl...@stericsson.com>

For interrupt mode transfers, start with only TX interrupts enabled
to reduce the overall number of interrupts received. Once TX is
complete, enable RX interrupts to complete the transfer.

Signed-off-by: Chris Blair <chris.bl...@stericsson.com>
Signed-off-by: Linus Walleij <linus.wall...@linaro.org>
---
 drivers/spi/spi-pl022.c |   14 +++++++++-----
 1 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/drivers/spi/spi-pl022.c b/drivers/spi/spi-pl022.c
index 3653f00..4761b31 100644
--- a/drivers/spi/spi-pl022.c
+++ b/drivers/spi/spi-pl022.c
@@ -1279,9 +1279,9 @@ static irqreturn_t pl022_interrupt_handler(int irq, void 
*dev_id)
 
        if ((pl022->tx == pl022->tx_end) && (flag == 0)) {
                flag = 1;
-               /* Disable Transmit interrupt */
-               writew(readw(SSP_IMSC(pl022->virtbase)) &
-                      (~SSP_IMSC_MASK_TXIM),
+               /* Disable Transmit interrupt, enable receive interrupt */
+               writew((readw(SSP_IMSC(pl022->virtbase)) &
+                      ~SSP_IMSC_MASK_TXIM) | SSP_IMSC_MASK_RXIM,
                       SSP_IMSC(pl022->virtbase));
        }
 
@@ -1414,12 +1414,16 @@ static void pump_transfers(unsigned long data)
        }
 
 err_config_dma:
-       writew(ENABLE_ALL_INTERRUPTS, SSP_IMSC(pl022->virtbase));
+       /* enable all interrupts except RX */
+       writew(ENABLE_ALL_INTERRUPTS & ~SSP_IMSC_MASK_RXIM, 
SSP_IMSC(pl022->virtbase));
 }
 
 static void do_interrupt_dma_transfer(struct pl022 *pl022)
 {
-       u32 irqflags = ENABLE_ALL_INTERRUPTS;
+       /* default is to enable all interrupts except RX -
+        * this will be enabled once TX is complete
+        */
+       u32 irqflags = ENABLE_ALL_INTERRUPTS & ~SSP_IMSC_MASK_RXIM;
 
        /* Enable target chip */
        pl022->cur_chip->cs_control(SSP_CHIP_SELECT);
-- 
1.7.3.2


------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure contains a
definitive record of customers, application performance, security
threats, fraudulent activity and more. Splunk takes this data and makes
sense of it. Business sense. IT sense. Common sense.
http://p.sf.net/sfu/splunk-d2dcopy1
_______________________________________________
spi-devel-general mailing list
spi-devel-general@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/spi-devel-general

Reply via email to