From patchwork Wed Mar 20 11:31:59 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vikas C Sajjan X-Patchwork-Id: 2306801 Return-Path: X-Original-To: patchwork-linux-samsung-soc@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork1.kernel.org (Postfix) with ESMTP id 82D6340AFD for ; Wed, 20 Mar 2013 11:32:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757833Ab3CTLcN (ORCPT ); Wed, 20 Mar 2013 07:32:13 -0400 Received: from mail-da0-f50.google.com ([209.85.210.50]:56747 "EHLO mail-da0-f50.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756515Ab3CTLcM (ORCPT ); Wed, 20 Mar 2013 07:32:12 -0400 Received: by mail-da0-f50.google.com with SMTP id t1so923176dae.23 for ; Wed, 20 Mar 2013 04:32:12 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-received:from:to:cc:subject:date:message-id:x-mailer :x-gm-message-state; bh=WIUNRJ8+d4VOHg73dSr7XfhkyMs59Exw0XebKfSwB7M=; b=oA+7VDXAPqDON+nCDDHEV3EpAu3uoMAPcOdtbjtLlRG1cvn0otKUPraAQZqcv8VsR/ yLxEyZOlevq7EhrZIR+hxNk+gQf5UaB61vdhF5SoHHMVoWtrFuEGrYTWgmpmH2utVau5 LLd894nw4rskwOCp9jvTqVw1aEbSCRa8cD3+vZEEror4QLP1U6RsY05bau9EidlCN96z HJAjRgNzQCLdx8X1TbtSZ9qCeZEV4kQ5Z1CMhRlB5ee38UNV102PVahZ29cOXx5x4u8i PkjcVJQ9HsZDagLp9MHbTIVJKOgoO37rx97xMpHr+fJelJ8IksvxBO9sMsCMiPyGhpCc 1lnw== X-Received: by 10.68.189.65 with SMTP id gg1mr8309869pbc.122.1363779132079; Wed, 20 Mar 2013 04:32:12 -0700 (PDT) Received: from localhost.localdomain ([115.113.119.130]) by mx.google.com with ESMTPS id qa6sm1800145pbc.46.2013.03.20.04.32.07 (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Wed, 20 Mar 2013 04:32:10 -0700 (PDT) From: Vikas Sajjan To: dri-devel@lists.freedesktop.org Cc: linux-media@vger.kernel.org, kgene.kim@samsung.com, inki.dae@samsung.com, linaro-kernel@lists.linaro.org, jy0922.shim@samsung.com, linux-samsung-soc@vger.kernel.org, thomas.abraham@linaro.org Subject: [PATCH v2] drm/exynos: enable FIMD clocks Date: Wed, 20 Mar 2013 17:01:59 +0530 Message-Id: <1363779119-3255-1-git-send-email-vikas.sajjan@linaro.org> X-Mailer: git-send-email 1.7.9.5 X-Gm-Message-State: ALoCoQnPyHLLd+J+yHSYOjve4nSDRHfwxWs89QKhK9pbasayOjOgfHQmph3e0qL1F8Ixt0wixQyl Sender: linux-samsung-soc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-samsung-soc@vger.kernel.org While migrating to common clock framework (CCF), found that the FIMD clocks were pulled down by the CCF. If CCF finds any clock(s) which has NOT been claimed by any of the drivers, then such clock(s) are PULLed low by CCF. By calling clk_prepare_enable() for FIMD clocks fixes the issue. this patch also replaces clk_disable() with clk_disable_unprepare() during exit. Signed-off-by: Vikas Sajjan --- Changes since v1: - added error checking for clk_prepare_enable() and also replaced clk_disable() with clk_disable_unprepare() during exit. --- drivers/gpu/drm/exynos/exynos_drm_fimd.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos_drm_fimd.c b/drivers/gpu/drm/exynos/exynos_drm_fimd.c index 9537761..014d750 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_fimd.c +++ b/drivers/gpu/drm/exynos/exynos_drm_fimd.c @@ -934,6 +934,19 @@ static int fimd_probe(struct platform_device *pdev) return ret; } + ret = clk_prepare_enable(ctx->lcd_clk); + if (ret) { + dev_err(dev, "failed to enable 'sclk_fimd' clock\n"); + return ret; + } + + ret = clk_prepare_enable(ctx->bus_clk); + if (ret) { + clk_disable_unprepare(ctx->lcd_clk); + dev_err(dev, "failed to enable 'fimd' clock\n"); + return ret; + } + ctx->vidcon0 = pdata->vidcon0; ctx->vidcon1 = pdata->vidcon1; ctx->default_win = pdata->default_win; @@ -981,8 +994,8 @@ static int fimd_remove(struct platform_device *pdev) if (ctx->suspended) goto out; - clk_disable(ctx->lcd_clk); - clk_disable(ctx->bus_clk); + clk_disable_unprepare(ctx->lcd_clk); + clk_disable_unprepare(ctx->bus_clk); pm_runtime_set_suspended(dev); pm_runtime_put_sync(dev);