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: 9307251 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id E60B960865 for ; Wed, 31 Aug 2016 13:25:39 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D586628EF0 for ; Wed, 31 Aug 2016 13:25:39 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id CA7BA28F0D; Wed, 31 Aug 2016 13:25:39 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=2.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=unavailable version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D816928F23 for ; Wed, 31 Aug 2016 13:25:36 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759806AbcHaNZe (ORCPT ); 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 X-Virus-Scanned: ClamAV using ClamSMTP 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 Acked-by: Krzysztof Kozlowski --- 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