aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/spi
diff options
context:
space:
mode:
authorVirupax Sadashivpetimath <virupax.sadashivpetimath@stericsson.com>2011-10-17 08:52:47 -0400
committerLinus Walleij <linus.walleij@linaro.org>2011-12-01 11:16:08 -0500
commit0ad2deeab5d3fc80fc7cd85638f805830254ef1d (patch)
treeb413887d19ad0bbf2ae970f4ef55cd5e1679262a /drivers/spi
parentd4b6af2e0e29278f2353c7c8721ddf2f2446414f (diff)
spi/pl022: disable the PL022 block when unused
Make sure we clear the enable bit when the block is not used. This will save some energy in certain hardware versions. Reviewed-by: Viresh Kumar <viresh.kumar@st.com> Signed-off-by: Virupax Sadashivpetimath <virupax.sadashivpetimath@stericsson.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'drivers/spi')
-rw-r--r--drivers/spi/spi-pl022.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/spi/spi-pl022.c b/drivers/spi/spi-pl022.c
index d165c0bfcab..82a929f916f 100644
--- a/drivers/spi/spi-pl022.c
+++ b/drivers/spi/spi-pl022.c
@@ -1512,8 +1512,12 @@ static void pump_messages(struct work_struct *work)
1512 /* Lock queue and check for queue work */ 1512 /* Lock queue and check for queue work */
1513 spin_lock_irqsave(&pl022->queue_lock, flags); 1513 spin_lock_irqsave(&pl022->queue_lock, flags);
1514 if (list_empty(&pl022->queue) || !pl022->running) { 1514 if (list_empty(&pl022->queue) || !pl022->running) {
1515 if (pl022->busy) 1515 if (pl022->busy) {
1516 /* nothing more to do - disable spi/ssp and power off */
1517 writew((readw(SSP_CR1(pl022->virtbase)) &
1518 (~SSP_CR1_MASK_SSE)), SSP_CR1(pl022->virtbase));
1516 pm_runtime_put(&pl022->adev->dev); 1519 pm_runtime_put(&pl022->adev->dev);
1520 }
1517 pl022->busy = false; 1521 pl022->busy = false;
1518 spin_unlock_irqrestore(&pl022->queue_lock, flags); 1522 spin_unlock_irqrestore(&pl022->queue_lock, flags);
1519 return; 1523 return;