From patchwork Wed Nov 9 14:23:53 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marek Szyprowski X-Patchwork-Id: 9419437 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 97D0A601C2 for ; Wed, 9 Nov 2016 14:24:26 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8789829352 for ; Wed, 9 Nov 2016 14:24:26 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 7C04A29355; Wed, 9 Nov 2016 14:24:26 +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=ham 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 609ED29352 for ; Wed, 9 Nov 2016 14:24:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754113AbcKIOYW (ORCPT ); Wed, 9 Nov 2016 09:24:22 -0500 Received: from mailout4.w1.samsung.com ([210.118.77.14]:14194 "EHLO mailout4.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753456AbcKIOYN (ORCPT ); Wed, 9 Nov 2016 09:24:13 -0500 Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout4.w1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0OGD00GYNPCAMU40@mailout4.w1.samsung.com>; Wed, 09 Nov 2016 14:24:10 +0000 (GMT) Received: from eusmges3.samsung.com (unknown [203.254.199.242]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20161109142409eucas1p2cc7458d43b8443d2400ac5dd3be9fa37~FZyJBLxE92633226332eucas1p2M; Wed, 9 Nov 2016 14:24:09 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges3.samsung.com (EUCPMTA) with SMTP id FD.4D.11330.98133285; Wed, 9 Nov 2016 14:24:09 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20161109142408eucas1p24bd5bce9a6046e186948a2f4f65c7d7d~FZyIa6MAu2944329443eucas1p2X; Wed, 9 Nov 2016 14:24:08 +0000 (GMT) X-AuditID: cbfec7f2-f79556d000002c42-8e-582331891e9b Received: from eusync2.samsung.com ( [203.254.199.212]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 63.CD.10494.B6133285; Wed, 9 Nov 2016 14:23:39 +0000 (GMT) Received: from AMDC2765.digital.local ([106.116.147.25]) by eusync2.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0OGD009LGPC36HB0@eusync2.samsung.com>; Wed, 09 Nov 2016 14:24:08 +0000 (GMT) From: Marek Szyprowski To: linux-media@vger.kernel.org, linux-samsung-soc@vger.kernel.org Cc: Marek Szyprowski , Sylwester Nawrocki , Krzysztof Kozlowski , Ulf Hansson , Bartlomiej Zolnierkiewicz , Javier Martinez Canillas Subject: [PATCH 04/12] exynos-gsc: Make runtime PM callbacks available for CONFIG_PM Date: Wed, 09 Nov 2016 15:23:53 +0100 Message-id: <1478701441-29107-5-git-send-email-m.szyprowski@samsung.com> X-Mailer: git-send-email 1.9.1 In-reply-to: <1478701441-29107-1-git-send-email-m.szyprowski@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrDIsWRmVeSWpSXmKPExsWy7djP87qdhsoRBhsf8VpsnLGe1eLN2zVM FufPb2C36NmwldVixvl9TBZrj9xltzj8pp3V4vjacAcOj02rOtk87lzbw+axpf8uu0ffllWM Hp83yQWwRnHZpKTmZJalFunbJXBl3L7Qw1zwT7bi945WpgbGXskuRk4OCQETiabVa9ggbDGJ C/fWA9lcHEICSxkl1s15wQLhfGaU6Jh6gRmmY+b7c1CJZYwSGw5eh2ppYJL4s2wuE0gVm4Ch RNfbLrC5IgJOEgtn/WUHKWIWmMUkMXHiPqB2Dg5hgTCJ51+CQWpYBFQljhw6B9bLK+AhcfjH W0aIbXISJ49NZgWxOQU8JVYduckKMkdC4DubxNYns8DmSAjISmw6AHWdi8SN1k2sELawxKvj W9ghbBmJy5O7WSDsfkaJplZtCHsGo8S5t7wQtrXE4eMXwXqZBfgkJm2bzgwxnleio00IwvSQ ePhJCqLaUeLn89OsEK/PYZTYcfkw2wRGmQWMDKsYRVJLi3PTU4uN9YoTc4tL89L1kvNzNzEC 4/j0v+OfdjB+PWF1iFGAg1GJh7dDUzlCiDWxrLgy9xCjBAezkghvnAFQiDclsbIqtSg/vqg0 J7X4EKM0B4uSOO+eBVfChQTSE0tSs1NTC1KLYLJMHJxSDYy71bXUox1m350w4ejn4ulNqi6T LzFoJl1tdF98/EveLD3hiYp7r/w1SNM3DLjeK3ztaUFS1YLlDuYdlpPWH7zAdH/isT25K1JO u61tV5p8pqhqys2TzQ/eT9F7+TnYxkT4jsS38LUXrepK6uwZ907SueP9TKZrkce3/ZPmNz/U eKMmoSvz7fsFJZbijERDLeai4kQAkgGS9d8CAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrLLMWRmVeSWpSXmKPExsVy+t/xK7rZhsoRBidfGVpsnLGe1eLN2zVM FufPb2C36NmwldVixvl9TBZrj9xltzj8pp3V4vjacAcOj02rOtk87lzbw+axpf8uu0ffllWM Hp83yQWwRrnZZKQmpqQWKaTmJeenZOal2yqFhrjpWigp5CXmptoqRej6hgQpKZQl5pQCeUYG aMDBOcA9WEnfLsEt4/aFHuaCf7IVv3e0MjUw9kp2MXJySAiYSMx8f44FwhaTuHBvPVsXIxeH kMASRon7s6cxQThNTBLvvk1lA6liEzCU6HrbBWaLCDhJLJz1lx2kiFlgFpPE5L4lQKM4OIQF wiSefwkGqWERUJU4cugcE4jNK+AhcfjHW0aIbXISJ49NZgWxOQU8JVYduQlmCwHVbF0+i3EC I+8CRoZVjCKppcW56bnFRnrFibnFpXnpesn5uZsYgUG97djPLTsYu94FH2IU4GBU4uHt0FSO EGJNLCuuzD3EKMHBrCTCO9MAKMSbklhZlVqUH19UmpNafIjRFOioicxSosn5wIjLK4k3NDE0 tzQ0MrawMDcyUhLnnfrhSriQQHpiSWp2ampBahFMHxMHp1QDY8Ypj9lJtgHhAZyMIozP/dry Jyivqvjn9+nnc2Yek79im7dbX+e4dzJ4dc20d9b9M07J/W7nZYoSVVhgXbJ6XrNfiHjBa+G/ esXzJnWsqFq2SzMn58jkf6ybl8bKLso+ncjypM/MeEbpjJmFpToP4/d0lnNpTEh46mMjvEfQ x2xvM9dvoU0HlFiKMxINtZiLihMBLTeVloACAAA= X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20161109142408eucas1p24bd5bce9a6046e186948a2f4f65c7d7d X-Msg-Generator: CA X-Sender-IP: 182.198.249.180 X-Local-Sender: =?UTF-8?B?TWFyZWsgU3p5cHJvd3NraRtTUlBPTC1LZXJuZWwgKFRQKRs=?= =?UTF-8?B?7IK87ISx7KCE7J6QG1NlbmlvciBTb2Z0d2FyZSBFbmdpbmVlcg==?= X-Global-Sender: =?UTF-8?B?TWFyZWsgU3p5cHJvd3NraRtTUlBPTC1LZXJuZWwgKFRQKRtT?= =?UTF-8?B?YW1zdW5nIEVsZWN0cm9uaWNzG1NlbmlvciBTb2Z0d2FyZSBFbmdpbmVlcg==?= X-Sender-Code: =?UTF-8?B?QzEwG0VIURtDMTBDRDAyQ0QwMjczOTI=?= CMS-TYPE: 201P X-HopCount: 7 X-CMS-RootMailID: 20161109142408eucas1p24bd5bce9a6046e186948a2f4f65c7d7d X-RootMTR: 20161109142408eucas1p24bd5bce9a6046e186948a2f4f65c7d7d References: <1478701441-29107-1-git-send-email-m.szyprowski@samsung.com> 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 From: Ulf Hansson There are no need to set up the runtime PM callbacks unless they are being used. It also causes compiler warnings about unused functions. Silence the warnings by making them available for CONFIG_PM. Signed-off-by: Ulf Hansson [mszyprow: rebased onto v4.9-rc4] Signed-off-by: Marek Szyprowski --- drivers/media/platform/exynos-gsc/gsc-core.c | 79 ++++++++++++++-------------- 1 file changed, 40 insertions(+), 39 deletions(-) diff --git a/drivers/media/platform/exynos-gsc/gsc-core.c b/drivers/media/platform/exynos-gsc/gsc-core.c index b5a99af..7e99fda 100644 --- a/drivers/media/platform/exynos-gsc/gsc-core.c +++ b/drivers/media/platform/exynos-gsc/gsc-core.c @@ -988,43 +988,6 @@ static void *gsc_get_drv_data(struct platform_device *pdev) return driver_data; } -static int gsc_m2m_suspend(struct gsc_dev *gsc) -{ - unsigned long flags; - int timeout; - - spin_lock_irqsave(&gsc->slock, flags); - if (!gsc_m2m_pending(gsc)) { - spin_unlock_irqrestore(&gsc->slock, flags); - return 0; - } - clear_bit(ST_M2M_SUSPENDED, &gsc->state); - set_bit(ST_M2M_SUSPENDING, &gsc->state); - spin_unlock_irqrestore(&gsc->slock, flags); - - timeout = wait_event_timeout(gsc->irq_queue, - test_bit(ST_M2M_SUSPENDED, &gsc->state), - GSC_SHUTDOWN_TIMEOUT); - - clear_bit(ST_M2M_SUSPENDING, &gsc->state); - return timeout == 0 ? -EAGAIN : 0; -} - -static void gsc_m2m_resume(struct gsc_dev *gsc) -{ - struct gsc_ctx *ctx; - unsigned long flags; - - spin_lock_irqsave(&gsc->slock, flags); - /* Clear for full H/W setup in first run after resume */ - ctx = gsc->m2m.ctx; - gsc->m2m.ctx = NULL; - spin_unlock_irqrestore(&gsc->slock, flags); - - if (test_and_clear_bit(ST_M2M_SUSPENDED, &gsc->state)) - gsc_m2m_job_finish(ctx, VB2_BUF_STATE_ERROR); -} - static int gsc_probe(struct platform_device *pdev) { struct gsc_dev *gsc; @@ -1130,6 +1093,44 @@ static int gsc_remove(struct platform_device *pdev) return 0; } +#ifdef CONFIG_PM +static int gsc_m2m_suspend(struct gsc_dev *gsc) +{ + unsigned long flags; + int timeout; + + spin_lock_irqsave(&gsc->slock, flags); + if (!gsc_m2m_pending(gsc)) { + spin_unlock_irqrestore(&gsc->slock, flags); + return 0; + } + clear_bit(ST_M2M_SUSPENDED, &gsc->state); + set_bit(ST_M2M_SUSPENDING, &gsc->state); + spin_unlock_irqrestore(&gsc->slock, flags); + + timeout = wait_event_timeout(gsc->irq_queue, + test_bit(ST_M2M_SUSPENDED, &gsc->state), + GSC_SHUTDOWN_TIMEOUT); + + clear_bit(ST_M2M_SUSPENDING, &gsc->state); + return timeout == 0 ? -EAGAIN : 0; +} + +static void gsc_m2m_resume(struct gsc_dev *gsc) +{ + struct gsc_ctx *ctx; + unsigned long flags; + + spin_lock_irqsave(&gsc->slock, flags); + /* Clear for full H/W setup in first run after resume */ + ctx = gsc->m2m.ctx; + gsc->m2m.ctx = NULL; + spin_unlock_irqrestore(&gsc->slock, flags); + + if (test_and_clear_bit(ST_M2M_SUSPENDED, &gsc->state)) + gsc_m2m_job_finish(ctx, VB2_BUF_STATE_ERROR); +} + static int gsc_runtime_resume(struct device *dev) { struct gsc_dev *gsc = dev_get_drvdata(dev); @@ -1160,6 +1161,7 @@ static int gsc_runtime_suspend(struct device *dev) pr_debug("gsc%d: state: 0x%lx", gsc->id, gsc->state); return ret; } +#endif static int gsc_resume(struct device *dev) { @@ -1201,8 +1203,7 @@ static int gsc_suspend(struct device *dev) static const struct dev_pm_ops gsc_pm_ops = { .suspend = gsc_suspend, .resume = gsc_resume, - .runtime_suspend = gsc_runtime_suspend, - .runtime_resume = gsc_runtime_resume, + SET_RUNTIME_PM_OPS(gsc_runtime_suspend, gsc_runtime_resume, NULL) }; static struct platform_driver gsc_driver = {