This is an automatic generated email to let you know that the following patch 
were queued:

Subject: [media] exynos4-is: Improve clock management
Author:  Marek Szyprowski <m.szyprow...@samsung.com>
Date:    Wed Aug 31 10:25:17 2016 -0300

There is no need to keep all clocks prepared all the time. Call to
clk_prepare/unprepare can be done on demand from runtime pm callbacks
(it is allowed to call sleeping functions from that context).

Signed-off-by: Marek Szyprowski <m.szyprow...@samsung.com>
Acked-by: Krzysztof Kozlowski <k.kozlow...@samsung.com>
Signed-off-by: Sylwester Nawrocki <s.nawro...@samsung.com>
Signed-off-by: Mauro Carvalho Chehab <mche...@s-opensource.com>

 drivers/media/platform/exynos4-is/fimc-lite.c | 16 ++++------------
 1 file changed, 4 insertions(+), 12 deletions(-)

---

diff --git a/drivers/media/platform/exynos4-is/fimc-lite.c 
b/drivers/media/platform/exynos4-is/fimc-lite.c
index a0f149fb88e1..fd16605dd1d4 100644
--- a/drivers/media/platform/exynos4-is/fimc-lite.c
+++ b/drivers/media/platform/exynos4-is/fimc-lite.c
@@ -1454,25 +1454,17 @@ static void fimc_lite_clk_put(struct fimc_lite *fimc)
        if (IS_ERR(fimc->clock))
                return;
 
-       clk_unprepare(fimc->clock);
        clk_put(fimc->clock);
        fimc->clock = ERR_PTR(-EINVAL);
 }
 
 static int fimc_lite_clk_get(struct fimc_lite *fimc)
 {
-       int ret;
-
        fimc->clock = clk_get(&fimc->pdev->dev, FLITE_CLK_NAME);
        if (IS_ERR(fimc->clock))
                return PTR_ERR(fimc->clock);
 
-       ret = clk_prepare(fimc->clock);
-       if (ret < 0) {
-               clk_put(fimc->clock);
-               fimc->clock = ERR_PTR(-EINVAL);
-       }
-       return ret;
+       return 0;
 }
 
 static const struct of_device_id flite_of_match[];
@@ -1543,7 +1535,7 @@ static int fimc_lite_probe(struct platform_device *pdev)
        pm_runtime_enable(dev);
 
        if (!pm_runtime_enabled(dev)) {
-               ret = clk_enable(fimc->clock);
+               ret = clk_prepare_enable(fimc->clock);
                if (ret < 0)
                        goto err_sd;
        }
@@ -1568,7 +1560,7 @@ static int fimc_lite_runtime_resume(struct device *dev)
 {
        struct fimc_lite *fimc = dev_get_drvdata(dev);
 
-       clk_enable(fimc->clock);
+       clk_prepare_enable(fimc->clock);
        return 0;
 }
 
@@ -1576,7 +1568,7 @@ static int fimc_lite_runtime_suspend(struct device *dev)
 {
        struct fimc_lite *fimc = dev_get_drvdata(dev);
 
-       clk_disable(fimc->clock);
+       clk_disable_unprepare(fimc->clock);
        return 0;
 }
 #endif

_______________________________________________
linuxtv-commits mailing list
linuxtv-commits@linuxtv.org
https://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to