From patchwork Thu May 22 14:11:07 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rahul Sharma X-Patchwork-Id: 4223171 Return-Path: X-Original-To: patchwork-linux-samsung-soc@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id A37329F23C for ; Thu, 22 May 2014 14:12:45 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id C990D2015E for ; Thu, 22 May 2014 14:12:44 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 81D1920145 for ; Thu, 22 May 2014 14:12:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751271AbaEVOMn (ORCPT ); Thu, 22 May 2014 10:12:43 -0400 Received: from mailout3.samsung.com ([203.254.224.33]:9286 "EHLO mailout3.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751146AbaEVOMm (ORCPT ); Thu, 22 May 2014 10:12:42 -0400 Received: from epcpsbgr1.samsung.com (u141.gpu120.samsung.co.kr [203.254.230.141]) by mailout3.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0N5Z0086UBH4DX20@mailout3.samsung.com> for linux-samsung-soc@vger.kernel.org; Thu, 22 May 2014 23:12:40 +0900 (KST) Received: from epcpsbgm2.samsung.com ( [172.20.52.123]) by epcpsbgr1.samsung.com (EPCPMTA) with SMTP id B9.CC.24374.8D50E735; Thu, 22 May 2014 23:12:40 +0900 (KST) X-AuditID: cbfee68d-b7fd46d000005f36-3d-537e05d8201f Received: from epmmp1.local.host ( [203.254.227.16]) by epcpsbgm2.samsung.com (EPCPMTA) with SMTP id D6.23.07139.8D50E735; Thu, 22 May 2014 23:12:40 +0900 (KST) Received: from localhost.localdomain ([107.108.83.245]) by mmp1.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTPA id <0N5Z00GWMBFKFO30@mmp1.samsung.com>; Thu, 22 May 2014 23:12:40 +0900 (KST) From: Rahul Sharma To: dri-devel@lists.freedesktop.org Cc: linux-samsung-soc@vger.kernel.org, inki.dae@samsung.com, thierry.reding@gmail.com, sachin.kamat@linaro.org, kgene.kim@samsung.com, joshi@samsung.com, r.sh.open@gmail.com, Rahul Sharma , Rahul Sharma Subject: [PATCH v3] drm/exynos: enable fimd clocks in probe before accessing fimd registers Date: Thu, 22 May 2014 19:41:07 +0530 Message-id: <1400767867-8965-1-git-send-email-rahul.sharma@samsung.com> X-Mailer: git-send-email 1.7.9.5 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrBLMWRmVeSWpSXmKPExsWyRsSkWvcGa12wwboJIhZXvr5ns5h0fwKL xfddX9gtehdcZbOYcX4fk8XCF/EWUxYdZrU4+aeX0eLnrnksDpweO2fdZfe4c20Pm8f97uNM Hn1bVjF6fN4kF8AaxWWTkpqTWZZapG+XwJXx+uklxoL1vBWnz65jb2Bs5+5i5OSQEDCRuH/s JCOELSZx4d56ti5GLg4hgaWMEk2Pm9hhirrfX2aESCxilGh4sB7KaWeSuD6xjRmkik1AV2L2 wWdgo0QElCX+TlwFVsQMUnRkwlwmkISwQKzEjakTwWwWAVWJe3/fgTXzCrhL7N/3hbWLkQNo nYLEnEk2IL0SAv3sEre//WaEqBeQ+Db5EAtEjazEpgPMENdJShxccYNlAqPgAkaGVYyiqQXJ BcVJ6UWGesWJucWleel6yfm5mxiBoXz637PeHYy3D1gfYkwGGjeRWUo0OR8YC3kl8YbGZkYW piamxkbmlmakCSuJ8yY9TAoSEkhPLEnNTk0tSC2KLyrNSS0+xMjEwSnVwMgT+2dWjKTLEZ2d /gtWrEr+8UO2VWZJ8sx/Yk/VIkvCU2an3QjpntdR+YIpdOaPzvu7LW4VOzh9OZ+qqb5Jbs5t 5oasZ2/YTPZump4pYHg/4NrbyIP72RKVDv362l51RT5nesoCE8N8s+C835knnnt8qLmvvVNa MNL8yHmhoPxpoS01MoVzfiixFGckGmoxFxUnAgAOph7TewIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrKIsWRmVeSWpSXmKPExsVy+t9jAd0brHXBBp9fcVlc+fqezWLS/Qks Ft93fWG36F1wlc1ixvl9TBYLX8RbTFl0mNXi5J9eRoufu+axOHB67Jx1l93jzrU9bB73u48z efRtWcXo8XmTXABrVAOjTUZqYkpqkUJqXnJ+SmZeuq2Sd3C8c7ypmYGhrqGlhbmSQl5ibqqt kotPgK5bZg7QQUoKZYk5pUChgMTiYiV9O0wTQkPcdC1gGiN0fUOC4HqMDNBAwhrGjNdPLzEW rOetOH12HXsDYzt3FyMnh4SAiUT3+8uMELaYxIV769m6GLk4hAQWMUo0PFjPCOG0M0lcn9jG DFLFJqArMfvgM7AOEQFlib8TV4EVMYMUHZkwlwkkISwQK3Fj6kQwm0VAVeLe33dgzbwC7hL7 931h7WLkAFqnIDFnks0ERu4FjAyrGEVTC5ILipPSc430ihNzi0vz0vWS83M3MYIj5Zn0DsZV DRaHGAU4GJV4eB8w1QULsSaWFVfmHmKU4GBWEuGd/6s2WIg3JbGyKrUoP76oNCe1+BBjMtDy icxSosn5wCjOK4k3NDYxNzU2tTSxMDGzJE1YSZz3YKt1oJBAemJJanZqakFqEcwWJg5OqQbG BGuLmPfHRRf0Vhdmpv1hXfXk8h7Z2X95lj+vZvgRtNnex/hFmsCBhB7nSr8AzlMXVQLyZgSb xAdJKFyrUzpn7HE9/Yl88ZN3J1/+sVcUil/vbLVAXeZzzLrrglYvbE2tZd3r26d81BVTVZRn OX7Py2nt7um+LwT5eL5dCFJ4mpowv+eXqYESS3FGoqEWc1FxIgCQ8/U02AIAAA== DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Sender: linux-samsung-soc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-samsung-soc@vger.kernel.org X-Spam-Status: No, score=-7.5 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Fimd probe is accessing fimd Registers without enabling the fimd gate clocks. If FIMD clocks are kept disabled in Uboot or disbaled during kernel boottime, the system hangs during boottime. This issue got surfaced when verifying with sysmmu enabled. Probe of fimd Sysmmu enables the master clock before accessing sysmmu regs and then disables. Later fimd probe tries to read the register without enabling the clock which is wrong and hangs the system. Signed-off-by: Rahul Sharma --- drivers/gpu/drm/exynos/exynos_drm_fimd.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/exynos/exynos_drm_fimd.c b/drivers/gpu/drm/exynos/exynos_drm_fimd.c index bd30d0c..38b77ed 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_fimd.c +++ b/drivers/gpu/drm/exynos/exynos_drm_fimd.c @@ -898,16 +898,31 @@ static int fimd_bind(struct device *dev, struct device *master, void *data) { struct fimd_context *ctx = fimd_manager.ctx; struct drm_device *drm_dev = data; - int win; + int win, ret; fimd_mgr_initialize(&fimd_manager, drm_dev); exynos_drm_crtc_create(&fimd_manager); if (ctx->display) exynos_drm_create_enc_conn(drm_dev, ctx->display); + ret = clk_prepare_enable(ctx->bus_clk); + if (ret) { + dev_err(dev, "bus clock enable failed.\n"); + return ret; + } + + ret = clk_prepare_enable(ctx->lcd_clk); + if (ret) { + dev_err(dev, "lcd clock enable failed.\n"); + return ret; + } + for (win = 0; win < WINDOWS_NR; win++) fimd_clear_win(ctx, win); + clk_disable_unprepare(ctx->lcd_clk); + clk_disable_unprepare(ctx->bus_clk); + return 0; }