| From 0d8c5015f69eede2cb2c6e888b05df3a28261ece Mon Sep 17 00:00:00 2001 |
| From: Geert Uytterhoeven <geert+renesas@linux-m68k.org> |
| Date: Tue, 11 Mar 2014 10:59:12 +0100 |
| Subject: spi: rspi: Add runtime PM support, using spi core auto_runtime_pm |
| |
| Signed-off-by: Geert Uytterhoeven <geert+renesas@linux-m68k.org> |
| Signed-off-by: Mark Brown <broonie@linaro.org> |
| (cherry picked from commit 490c97747d5dc77dfb5826e2823b41d8b2ef7ecc) |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| --- |
| drivers/spi/spi-rspi.c | 12 +++++------- |
| 1 file changed, 5 insertions(+), 7 deletions(-) |
| |
| diff --git a/drivers/spi/spi-rspi.c b/drivers/spi/spi-rspi.c |
| index 92bec7e91046..1fb0ad213324 100644 |
| --- a/drivers/spi/spi-rspi.c |
| +++ b/drivers/spi/spi-rspi.c |
| @@ -33,6 +33,7 @@ |
| #include <linux/dmaengine.h> |
| #include <linux/dma-mapping.h> |
| #include <linux/of_device.h> |
| +#include <linux/pm_runtime.h> |
| #include <linux/sh_dma.h> |
| #include <linux/spi/spi.h> |
| #include <linux/spi/rspi.h> |
| @@ -1111,7 +1112,7 @@ static int rspi_remove(struct platform_device *pdev) |
| struct rspi_data *rspi = platform_get_drvdata(pdev); |
| |
| rspi_release_dma(rspi); |
| - clk_disable_unprepare(rspi->clk); |
| + pm_runtime_disable(&pdev->dev); |
| |
| return 0; |
| } |
| @@ -1242,16 +1243,13 @@ static int rspi_probe(struct platform_device *pdev) |
| goto error1; |
| } |
| |
| - ret = clk_prepare_enable(rspi->clk); |
| - if (ret < 0) { |
| - dev_err(&pdev->dev, "unable to prepare/enable clock\n"); |
| - goto error1; |
| - } |
| + pm_runtime_enable(&pdev->dev); |
| |
| init_waitqueue_head(&rspi->wait); |
| |
| master->bus_num = pdev->id; |
| master->setup = rspi_setup; |
| + master->auto_runtime_pm = true; |
| master->transfer_one = ops->transfer_one; |
| master->prepare_message = rspi_prepare_message; |
| master->unprepare_message = rspi_unprepare_message; |
| @@ -1312,7 +1310,7 @@ static int rspi_probe(struct platform_device *pdev) |
| error3: |
| rspi_release_dma(rspi); |
| error2: |
| - clk_disable_unprepare(rspi->clk); |
| + pm_runtime_disable(&pdev->dev); |
| error1: |
| spi_master_put(master); |
| |
| -- |
| 2.1.2 |
| |