diff mbox

[2/4] spi/pl022: support runtime PM

Message ID 1308212080-22516-1-git-send-email-linus.walleij@stericsson.com (mailing list archive)
State Superseded, archived
Headers show

Commit Message

Linus Walleij June 16, 2011, 8:14 a.m. UTC
From: Rabin Vincent <rabin.vincent@stericsson.com>

Insert notifiers for the runtime PM API. With this the runtime
PM layer kicks in to action where used.

Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com>
Reviewed-by: Virupax Sadashivpetimath <virupax.sadashivpetimath@stericsson.com>
Reviewed-by: Jonas Aberg <jonas.aberg@stericsson.com>
Reviewed-by: Srinidhi Kasagar <srinidhi.kasagar@stericsson.com>
[Rebased to Linux 3.0-rc3, edit description]
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
---
 drivers/spi/spi-pl022.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

Comments

Grant Likely June 16, 2011, 2:27 p.m. UTC | #1
On Thu, Jun 16, 2011 at 10:14:40AM +0200, Linus Walleij wrote:
> From: Rabin Vincent <rabin.vincent@stericsson.com>
> 
> Insert notifiers for the runtime PM API. With this the runtime
> PM layer kicks in to action where used.
> 
> Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com>
> Reviewed-by: Virupax Sadashivpetimath <virupax.sadashivpetimath@stericsson.com>
> Reviewed-by: Jonas Aberg <jonas.aberg@stericsson.com>
> Reviewed-by: Srinidhi Kasagar <srinidhi.kasagar@stericsson.com>
> [Rebased to Linux 3.0-rc3, edit description]
> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>

Applied, thanks.

g.

> ---
>  drivers/spi/spi-pl022.c |    6 ++++++
>  1 files changed, 6 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/spi/spi-pl022.c b/drivers/spi/spi-pl022.c
> index ac7c727..48fa8b0 100644
> --- a/drivers/spi/spi-pl022.c
> +++ b/drivers/spi/spi-pl022.c
> @@ -40,6 +40,7 @@
>  #include <linux/dmaengine.h>
>  #include <linux/dma-mapping.h>
>  #include <linux/scatterlist.h>
> +#include <linux/pm_runtime.h>
>  
>  /*
>   * This macro is used to define some register default values.
> @@ -517,6 +518,7 @@ static void giveback(struct pl022 *pl022)
>  	clk_disable(pl022->clk);
>  	amba_pclk_disable(pl022->adev);
>  	amba_vcore_disable(pl022->adev);
> +	pm_runtime_put(&pl022->adev->dev);
>  }
>  
>  /**
> @@ -1542,6 +1544,7 @@ static void pump_messages(struct work_struct *work)
>  	 * and core will be disabled when giveback() is called in each method
>  	 * (poll/interrupt/DMA)
>  	 */
> +	pm_runtime_get_sync(&pl022->adev->dev);
>  	amba_vcore_enable(pl022->adev);
>  	amba_pclk_enable(pl022->adev);
>  	clk_enable(pl022->clk);
> @@ -2143,6 +2146,8 @@ pl022_probe(struct amba_device *adev, const struct amba_id *id)
>  	}
>  	printk(KERN_INFO "pl022: mapped registers from 0x%08x to %p\n",
>  	       adev->res.start, pl022->virtbase);
> +	pm_runtime_enable(dev);
> +	pm_runtime_resume(dev);
>  
>  	pl022->clk = clk_get(&adev->dev, NULL);
>  	if (IS_ERR(pl022->clk)) {
> @@ -2204,6 +2209,7 @@ pl022_probe(struct amba_device *adev, const struct amba_id *id)
>  	destroy_queue(pl022);
>  	pl022_dma_remove(pl022);
>  	free_irq(adev->irq[0], pl022);
> +	pm_runtime_disable(&adev->dev);
>   err_no_irq:
>  	clk_put(pl022->clk);
>   err_no_clk:
> -- 
> 1.7.3.2
> 

------------------------------------------------------------------------------
EditLive Enterprise is the world's most technically advanced content
authoring tool. Experience the power of Track Changes, Inline Image
Editing and ensure content is compliant with Accessibility Checking.
http://p.sf.net/sfu/ephox-dev2dev
diff mbox

Patch

diff --git a/drivers/spi/spi-pl022.c b/drivers/spi/spi-pl022.c
index ac7c727..48fa8b0 100644
--- a/drivers/spi/spi-pl022.c
+++ b/drivers/spi/spi-pl022.c
@@ -40,6 +40,7 @@ 
 #include <linux/dmaengine.h>
 #include <linux/dma-mapping.h>
 #include <linux/scatterlist.h>
+#include <linux/pm_runtime.h>
 
 /*
  * This macro is used to define some register default values.
@@ -517,6 +518,7 @@  static void giveback(struct pl022 *pl022)
 	clk_disable(pl022->clk);
 	amba_pclk_disable(pl022->adev);
 	amba_vcore_disable(pl022->adev);
+	pm_runtime_put(&pl022->adev->dev);
 }
 
 /**
@@ -1542,6 +1544,7 @@  static void pump_messages(struct work_struct *work)
 	 * and core will be disabled when giveback() is called in each method
 	 * (poll/interrupt/DMA)
 	 */
+	pm_runtime_get_sync(&pl022->adev->dev);
 	amba_vcore_enable(pl022->adev);
 	amba_pclk_enable(pl022->adev);
 	clk_enable(pl022->clk);
@@ -2143,6 +2146,8 @@  pl022_probe(struct amba_device *adev, const struct amba_id *id)
 	}
 	printk(KERN_INFO "pl022: mapped registers from 0x%08x to %p\n",
 	       adev->res.start, pl022->virtbase);
+	pm_runtime_enable(dev);
+	pm_runtime_resume(dev);
 
 	pl022->clk = clk_get(&adev->dev, NULL);
 	if (IS_ERR(pl022->clk)) {
@@ -2204,6 +2209,7 @@  pl022_probe(struct amba_device *adev, const struct amba_id *id)
 	destroy_queue(pl022);
 	pl022_dma_remove(pl022);
 	free_irq(adev->irq[0], pl022);
+	pm_runtime_disable(&adev->dev);
  err_no_irq:
 	clk_put(pl022->clk);
  err_no_clk: