Received: by 10.223.185.116 with SMTP id b49csp11125wrg; Fri, 2 Mar 2018 12:40:07 -0800 (PST) X-Google-Smtp-Source: AG47ELsRJsGCnUqYDjZQ+BHcigaXO2vVpm1t4u9f1xmNEQ3BDdiq/HLsRodL+TN9xLph0HMoStin X-Received: by 2002:a17:902:28c3:: with SMTP id f61-v6mr6478675plb.346.1520023207151; Fri, 02 Mar 2018 12:40:07 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1520023207; cv=none; d=google.com; s=arc-20160816; b=p81P8KOUmROjCy9XX0vx9ah8I/GvAGZEHF/HkULef33bUsw8g0uPtNn3DREH1j0Q6B WLURVpaeOwByjVc9DEKSq28mTMKy1YU6O328xjtXYD6xGqWKSCQgCiDLZL1P00on1d9L PaDCrL44wt9VtlGffBZw44/I+lpZw+H0a32S9gS3UUH0LtHCPf/juBNCZSbXKv51lSGI OoIwQhjUaLtDIVTxbVMd5d4RZmIAa6+xs7cHQjbcVo9FpwHrXhzUP/yo6g9bKSZGpm96 1i3Jv/a/7/WKZgX/kVhwXmp5H0L/wWy2H5q3DPaJujER8prxtW1FmmxjuR9WlJCUWFAX AdHg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=13PkK1SiN6tWBlEEFpUMUSennana2gdNmKHa1N+eA0A=; b=RdaCS0MmBsFxsMLhh7vrWuSuXSNY0/p+wU7ipBYciGOcjjZhHHQBBFjNJwvKQQV7Fy rz2AYCwnpalB8vpmtDCuqrt+BYzxUmHbt71NbRSG6kmaV1V+M3w4KdlcyXI2jGO3ExLG 4MgX6cmMsUZJ94vKhTTqdV/i3jlAZLub+PxroR/TPFkIa/WfRYNwvem4SKZDgbBEcveZ oQ3Z6MS9IF489M7KFngJKwnWkWSqBW1gGOkg9U4eub1s8qVlty4S/ifbaE0H9bxNm4VR wGF0dUQ9rKZ/sDF+ttx4e7td6QZ/WsGTDBo/Gtpm+Rluvr/SZn1qKOjZBpA3LtPGJebv /9ug== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=collabora.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id v24si5352757pff.274.2018.03.02.12.39.50; Fri, 02 Mar 2018 12:40:07 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-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-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=collabora.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1947059AbeCBR6p (ORCPT + 99 others); Fri, 2 Mar 2018 12:58:45 -0500 Received: from bhuna.collabora.co.uk ([46.235.227.227]:48754 "EHLO bhuna.collabora.co.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1947000AbeCBR6V (ORCPT ); Fri, 2 Mar 2018 12:58:21 -0500 Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: eballetbo) with ESMTPSA id CEF352730FB From: Enric Balletbo i Serra To: Sandy Huang , =?UTF-8?q?Heiko=20St=C3=BCbner?= Cc: Andrzej Hajda , linux-rockchip@lists.infradead.org, Archit Taneja , linux-kernel@vger.kernel.org, Russell King , Neil Armstrong , dri-devel@lists.freedesktop.org, Jose Abreu , Hans Verkuil , Laurent Pinchart , Jernej Skrabec , linux-arm-kernel@lists.infradead.org, David Airlie , Jeffy Chen , kernel@collabora.com, Enric Balletbo i Serra Subject: [PATCH v9 4/5] drm/rockchip: dw_hdmi: Move HDMI vpll clock enable to bind() Date: Fri, 2 Mar 2018 18:57:56 +0100 Message-Id: <20180302175757.28192-5-enric.balletbo@collabora.com> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180302175757.28192-1-enric.balletbo@collabora.com> References: <20180302175757.28192-1-enric.balletbo@collabora.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Jeffy Chen The HDMI vpll clock should be enabled when bind() is called. So move the clk_prepare_enable of that clock to bind() function and add the missing clk_disable_unprepare() required in error handling path and unbind(). Fixes: 12b9f204e804 ("drm: bridge/dw_hdmi: add rockchip rk3288 support") Signed-off-by: Jeffy Chen Signed-off-by: Thierry Escande Signed-off-by: Enric Balletbo i Serra --- Changes in v9: - dw_hdmi: Rewrite the commit message to reflect the change. drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c index 3574b0ae2ad1..11309a2a4e43 100644 --- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c +++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c @@ -165,7 +165,6 @@ static const struct dw_hdmi_phy_config rockchip_phy_config[] = { static int rockchip_hdmi_parse_dt(struct rockchip_hdmi *hdmi) { struct device_node *np = hdmi->dev->of_node; - int ret; hdmi->regmap = syscon_regmap_lookup_by_phandle(np, "rockchip,grf"); if (IS_ERR(hdmi->regmap)) { @@ -193,13 +192,6 @@ static int rockchip_hdmi_parse_dt(struct rockchip_hdmi *hdmi) return PTR_ERR(hdmi->grf_clk); } - ret = clk_prepare_enable(hdmi->vpll_clk); - if (ret) { - DRM_DEV_ERROR(hdmi->dev, - "Failed to enable HDMI vpll: %d\n", ret); - return ret; - } - return 0; } @@ -374,6 +366,13 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master, return ret; } + ret = clk_prepare_enable(hdmi->vpll_clk); + if (ret) { + DRM_DEV_ERROR(hdmi->dev, "Failed to enable HDMI vpll: %d\n", + ret); + return ret; + } + drm_encoder_helper_add(encoder, &dw_hdmi_rockchip_encoder_helper_funcs); drm_encoder_init(drm, encoder, &dw_hdmi_rockchip_encoder_funcs, DRM_MODE_ENCODER_TMDS, NULL); @@ -389,6 +388,7 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master, if (IS_ERR(hdmi->hdmi)) { ret = PTR_ERR(hdmi->hdmi); drm_encoder_cleanup(encoder); + clk_disable_unprepare(hdmi->vpll_clk); } return ret; @@ -400,6 +400,7 @@ static void dw_hdmi_rockchip_unbind(struct device *dev, struct device *master, struct rockchip_hdmi *hdmi = dev_get_drvdata(dev); dw_hdmi_unbind(hdmi->hdmi); + clk_disable_unprepare(hdmi->vpll_clk); } static const struct component_ops dw_hdmi_rockchip_ops = { -- 2.16.1