From patchwork Wed Aug 31 13:25:17 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marek Szyprowski X-Patchwork-Id: 75095 Delivered-To: patch@linaro.org Received: by 10.140.29.52 with SMTP id a49csp336726qga; Wed, 31 Aug 2016 06:25:37 -0700 (PDT) X-Received: by 10.66.169.68 with SMTP id ac4mr17050963pac.85.1472649937362; Wed, 31 Aug 2016 06:25:37 -0700 (PDT) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id xp2si50992332pab.19.2016.08.31.06.25.36; Wed, 31 Aug 2016 06:25:37 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-samsung-soc-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-samsung-soc-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-samsung-soc-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759806AbcHaNZe (ORCPT + 4 others); Wed, 31 Aug 2016 09:25:34 -0400 Received: from mailout2.w1.samsung.com ([210.118.77.12]:41285 "EHLO mailout2.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932622AbcHaNZd (ORCPT ); Wed, 31 Aug 2016 09:25:33 -0400 Received: from eucpsbgm2.samsung.com (unknown [203.254.199.245]) by mailout2.w1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0OCR000BTZYHLH10@mailout2.w1.samsung.com>; Wed, 31 Aug 2016 14:25:29 +0100 (BST) X-AuditID: cbfec7f5-f792e6d0000013f5-ea-57c6dac956c7 Received: from eusync1.samsung.com ( [203.254.199.211]) by eucpsbgm2.samsung.com (EUCPMTA) with SMTP id E9.04.05109.9CAD6C75; Wed, 31 Aug 2016 14:25:29 +0100 (BST) Received: from AMDC2765.digital.local ([106.116.147.25]) by eusync1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0OCR00GVUZYCHR60@eusync1.samsung.com>; Wed, 31 Aug 2016 14:25:29 +0100 (BST) From: Marek Szyprowski To: linux-media@vger.kernel.org, linux-samsung-soc@vger.kernel.org Cc: Marek Szyprowski , Sylwester Nawrocki , Krzysztof Kozlowski Subject: [PATCH 2/3] media: exynos4-is: Improve clock management Date: Wed, 31 Aug 2016 15:25:17 +0200 Message-id: <1472649918-10371-3-git-send-email-m.szyprowski@samsung.com> X-Mailer: git-send-email 1.9.1 In-reply-to: <1472649918-10371-1-git-send-email-m.szyprowski@samsung.com> References: <1472649918-10371-1-git-send-email-m.szyprowski@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrNJMWRmVeSWpSXmKPExsVy+t/xy7onbx0LN/jxVszi9QtDi54NW1kt Zpzfx2Sx9shddovDb9pZHVg9+rasYvT4vEkugCmKyyYlNSezLLVI3y6BK+Pg4QNsBRf5K94d 2MLYwPidp4uRk0NCwETi27u5zBC2mMSFe+vZuhi5OIQEljJKrN19jQnCaWKS+NH0nwmkik3A UKLrbRcbiC0i4CSxcNZfdpAiZoF+RomP76+wgySEBRwkDr5/zwhiswioSjx+OxvM5hXwkLhx 6wUjxDo5iZPHJrOC2JwCnhLTb84Bs4WAajY3/GGZwMi7gJFhFaNoamlyQXFSeq6RXnFibnFp Xrpecn7uJkZIkHzdwbj0mNUhRgEORiUe3gOzjoYLsSaWFVfmHmKU4GBWEuG9f+NYuBBvSmJl VWpRfnxRaU5q8SFGaQ4WJXHembvehwgJpCeWpGanphakFsFkmTg4pRoYMy7GrzQ+Nt3sxZ7f /VMnL3xQbb224V7e+fya4tDglVuu25w2/y9zT9LI+GjqQW5F46hFW8V/TaiXZNbhcj3p6537 Zk78m6suh49PcKvb221smvpmtyJb0PNlB4RKzMVPLNr80j958cRdG95zs0//Wvvppebe9duV D82cdzvw1kZz0eA6+4QsNiWW4oxEQy3mouJEAEmjAAYOAgAA Sender: linux-samsung-soc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-samsung-soc@vger.kernel.org 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 --- drivers/media/platform/exynos4-is/fimc-lite.c | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html 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