All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thierry Escande <thierry.escande@collabora.com>
To: Archit Taneja <architt@codeaurora.org>,
	Inki Dae <inki.dae@samsung.com>,
	Thierry Reding <thierry.reding@gmail.com>,
	Sandy Huang <hjc@rock-chips.com>,
	Sean Paul <seanpaul@chromium.org>,
	David Airlie <airlied@linux.ie>, Tomasz Figa <tfiga@chromium.org>,
	Enric Balletbo i Serra <enric.balletbo@collabora.com>
Cc: "Haixia Shi" <hshi@chromium.org>,
	"Ørjan Eide" <orjan.eide@arm.com>,
	"Zain Wang" <wzz@rock-chips.com>,
	"Yakir Yang" <ykk@rock-chips.com>,
	"Lin Huang" <hl@rock-chips.com>,
	"Douglas Anderson" <dianders@chromium.org>,
	"Mark Yao" <mark.yao@rock-chips.com>,
	linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org,
	dri-devel@lists.freedesktop.org
Subject: [PATCH v3 19/43] drm/bridge: analogix_dp: Ensure edp is disabled when shutting down the panel
Date: Tue, 30 Jan 2018 21:28:49 +0100	[thread overview]
Message-ID: <20180130202913.28724-20-thierry.escande@collabora.com> (raw)
In-Reply-To: <20180130202913.28724-1-thierry.escande@collabora.com>

From: Lin Huang <hl@rock-chips.com>

When panel is shut down, we should make sure edp can be disabled to avoid
undefined behavior.

Cc: Stéphane Marchesin <marcheu@chromium.org>
Signed-off-by: Lin Huang <hl@rock-chips.com>
Signed-off-by: zain wang <wzz@rock-chips.com>
Signed-off-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: Thierry Escande <thierry.escande@collabora.com>
Reviewed-by: Andrzej Hajda <a.hajda@samsung.com>
---
 drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
index c940a5bb80ac..fa4ef28e286f 100644
--- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
+++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
@@ -1161,6 +1161,12 @@ static int analogix_dp_set_bridge(struct analogix_dp_device *dp)
 
 	pm_runtime_get_sync(dp->dev);
 
+	ret = clk_prepare_enable(dp->clock);
+	if (ret < 0) {
+		DRM_ERROR("Failed to prepare_enable the clock clk [%d]\n", ret);
+		goto out_dp_clk_pre;
+	}
+
 	if (dp->plat_data->power_on)
 		dp->plat_data->power_on(dp->plat_data);
 
@@ -1192,6 +1198,8 @@ static int analogix_dp_set_bridge(struct analogix_dp_device *dp)
 	phy_power_off(dp->phy);
 	if (dp->plat_data->power_off)
 		dp->plat_data->power_off(dp->plat_data);
+	clk_disable_unprepare(dp->clock);
+out_dp_clk_pre:
 	pm_runtime_put_sync(dp->dev);
 
 	return ret;
@@ -1235,10 +1243,13 @@ static void analogix_dp_bridge_disable(struct drm_bridge *bridge)
 
 	disable_irq(dp->irq);
 	phy_power_off(dp->phy);
+	analogix_dp_set_analog_power_down(dp, POWER_ALL, 1);
 
 	if (dp->plat_data->power_off)
 		dp->plat_data->power_off(dp->plat_data);
 
+	clk_disable_unprepare(dp->clock);
+
 	pm_runtime_put_sync(dp->dev);
 
 	ret = analogix_dp_prepare_panel(dp, false, true);
-- 
2.14.1

WARNING: multiple messages have this Message-ID (diff)
From: Thierry Escande <thierry.escande-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
To: Archit Taneja <architt-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>,
	Inki Dae <inki.dae-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>,
	Thierry Reding
	<thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	Sandy Huang <hjc-TNX95d0MmH7DzftRWevZcw@public.gmane.org>,
	Sean Paul <seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>,
	David Airlie <airlied-cv59FeDIM0c@public.gmane.org>,
	Tomasz Figa <tfiga-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>,
	Enric Balletbo i Serra
	<enric.balletbo-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
Cc: "Zain Wang" <wzz-TNX95d0MmH7DzftRWevZcw@public.gmane.org>,
	"Lin Huang" <hl-TNX95d0MmH7DzftRWevZcw@public.gmane.org>,
	"Douglas Anderson"
	<dianders-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>,
	dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	"Yakir Yang" <ykk-TNX95d0MmH7DzftRWevZcw@public.gmane.org>,
	"Ørjan Eide" <orjan.eide-5wv7dgnIgG8@public.gmane.org>,
	"Mark Yao" <mark.yao-TNX95d0MmH7DzftRWevZcw@public.gmane.org>,
	"Haixia Shi" <hshi-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
Subject: [PATCH v3 19/43] drm/bridge: analogix_dp: Ensure edp is disabled when shutting down the panel
Date: Tue, 30 Jan 2018 21:28:49 +0100	[thread overview]
Message-ID: <20180130202913.28724-20-thierry.escande@collabora.com> (raw)
In-Reply-To: <20180130202913.28724-1-thierry.escande-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>

From: Lin Huang <hl@rock-chips.com>

When panel is shut down, we should make sure edp can be disabled to avoid
undefined behavior.

Cc: Stéphane Marchesin <marcheu@chromium.org>
Signed-off-by: Lin Huang <hl@rock-chips.com>
Signed-off-by: zain wang <wzz@rock-chips.com>
Signed-off-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: Thierry Escande <thierry.escande@collabora.com>
Reviewed-by: Andrzej Hajda <a.hajda@samsung.com>
---
 drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
index c940a5bb80ac..fa4ef28e286f 100644
--- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
+++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
@@ -1161,6 +1161,12 @@ static int analogix_dp_set_bridge(struct analogix_dp_device *dp)
 
 	pm_runtime_get_sync(dp->dev);
 
+	ret = clk_prepare_enable(dp->clock);
+	if (ret < 0) {
+		DRM_ERROR("Failed to prepare_enable the clock clk [%d]\n", ret);
+		goto out_dp_clk_pre;
+	}
+
 	if (dp->plat_data->power_on)
 		dp->plat_data->power_on(dp->plat_data);
 
@@ -1192,6 +1198,8 @@ static int analogix_dp_set_bridge(struct analogix_dp_device *dp)
 	phy_power_off(dp->phy);
 	if (dp->plat_data->power_off)
 		dp->plat_data->power_off(dp->plat_data);
+	clk_disable_unprepare(dp->clock);
+out_dp_clk_pre:
 	pm_runtime_put_sync(dp->dev);
 
 	return ret;
@@ -1235,10 +1243,13 @@ static void analogix_dp_bridge_disable(struct drm_bridge *bridge)
 
 	disable_irq(dp->irq);
 	phy_power_off(dp->phy);
+	analogix_dp_set_analog_power_down(dp, POWER_ALL, 1);
 
 	if (dp->plat_data->power_off)
 		dp->plat_data->power_off(dp->plat_data);
 
+	clk_disable_unprepare(dp->clock);
+
 	pm_runtime_put_sync(dp->dev);
 
 	ret = analogix_dp_prepare_panel(dp, false, true);
-- 
2.14.1


_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip

  parent reply	other threads:[~2018-01-30 20:29 UTC|newest]

Thread overview: 106+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20180131083447epcas3p3633663f2f88e637ffe54ab8307ce5d14@epcas3p3.samsung.com>
2018-01-30 20:28 ` [PATCH v3 00/43] DRM Rockchip rk3399 (Kevin) Thierry Escande
2018-01-30 20:28   ` Thierry Escande
2018-01-30 20:28   ` [PATCH v3 01/43] drm/rockchip: Get rid of unnecessary struct fields Thierry Escande
2018-01-30 20:28     ` Thierry Escande
2018-02-18 10:50     ` Heiko Stuebner
2018-01-30 20:28   ` [PATCH v3 02/43] drm/rockchip: support prime import sg table Thierry Escande
2018-02-18 10:51     ` Heiko Stuebner
2018-01-30 20:28   ` [PATCH v3 03/43] drm/rockchip: Respect page offset for PRIME mmap calls Thierry Escande
2018-02-18 10:53     ` Heiko Stuebner
2018-01-30 20:28   ` [PATCH v3 04/43] drm/bridge: analogix_dp: set psr activate/deactivate when enable/disable bridge Thierry Escande
2018-01-30 20:28   ` [PATCH v3 05/43] drm/bridge: analogix_dp: Don't power bridge in analogix_dp_bind Thierry Escande
2018-01-30 20:28     ` Thierry Escande
2018-02-28 14:37     ` Heiko Stübner
2018-02-28 14:37       ` Heiko Stübner
2018-02-28 14:54       ` Marc Zyngier
2018-02-28 14:56         ` Heiko Stübner
2018-02-28 14:56           ` Heiko Stübner
2018-02-28 15:20     ` Heiko Stübner
2018-02-28 15:20       ` Heiko Stübner
2018-03-01  8:19       ` Marek Szyprowski
2018-03-01  8:19         ` Marek Szyprowski
2018-03-01 13:37     ` Marek Szyprowski
2018-03-01 13:37       ` Marek Szyprowski
2018-01-30 20:28   ` [PATCH v3 06/43] drm/rockchip: Don't use atomic constructs for psr Thierry Escande
2018-01-30 20:28     ` Thierry Escande
2018-01-30 20:28   ` [PATCH v3 07/43] drm/bridge: analogix_dp: detect Sink PSR state after configuring the PSR Thierry Escande
2018-01-30 20:28     ` Thierry Escande
2018-01-30 20:28   ` [PATCH v3 08/43] drm/rockchip: Remove analogix psr worker Thierry Escande
2018-01-30 20:28     ` Thierry Escande
2018-01-30 20:28   ` [PATCH v3 09/43] drm/bridge: analogix_dp: Don't change psr while bridge is disabled Thierry Escande
2018-01-30 20:28     ` Thierry Escande
2018-01-30 20:28   ` [PATCH v3 10/43] drm/rockchip: add mutex vop lock Thierry Escande
2018-01-30 20:28   ` [PATCH v3 11/43] drm/bridge: analogix_dp: add fast link train for eDP Thierry Escande
2018-01-30 20:28     ` Thierry Escande
2018-01-30 20:28   ` [PATCH v3 12/43] drm/rockchip: Only wait for panel ACK on PSR entry Thierry Escande
2018-01-30 20:28   ` [PATCH v3 13/43] drm/bridge: analogix_dp: Move enable video into config_video() Thierry Escande
2018-01-30 20:28     ` Thierry Escande
2018-01-30 20:28   ` [PATCH v3 14/43] drm/bridge: analogix_dp: Check AUX_EN status when doing AUX transfer Thierry Escande
2018-01-30 20:28     ` Thierry Escande
2018-01-30 20:28   ` [PATCH v3 15/43] drm/bridge: analogix_dp: Don't use fast link training when panel just powered up Thierry Escande
2018-01-30 20:28     ` Thierry Escande
2018-01-30 20:28   ` [PATCH v3 16/43] drm/bridge: analogix_dp: Retry bridge enable when it failed Thierry Escande
2018-01-30 20:28     ` Thierry Escande
2018-01-30 20:28   ` [PATCH v3 17/43] drm/bridge: analogix_dp: Wait for HPD signal before configuring link Thierry Escande
2018-01-30 20:28     ` Thierry Escande
2018-01-30 20:28   ` [PATCH v3 18/43] drm/bridge: analogix_dp: Set PD_INC_BG first when powering up edp phy Thierry Escande
2018-01-30 20:28     ` Thierry Escande
2018-01-30 20:28   ` Thierry Escande [this message]
2018-01-30 20:28     ` [PATCH v3 19/43] drm/bridge: analogix_dp: Ensure edp is disabled when shutting down the panel Thierry Escande
2018-01-30 20:28   ` [PATCH v3 20/43] drm/bridge: analogix_dp: Extend hpd check time to 100ms Thierry Escande
2018-01-30 20:28     ` Thierry Escande
2018-01-30 20:28   ` [PATCH v3 21/43] drm/bridge: analogix_dp: Fix incorrect usage of enhanced mode Thierry Escande
2018-01-30 20:28     ` Thierry Escande
2018-01-30 20:28   ` [PATCH v3 22/43] drm/bridge: analogix_dp: Check dpcd write/read status Thierry Escande
2018-01-30 20:28     ` Thierry Escande
2018-01-30 20:28   ` [PATCH v3 23/43] drm/bridge: analogix_dp: Fix AUX_PD bit for Rockchip Thierry Escande
2018-01-30 20:28     ` Thierry Escande
2018-01-30 20:28   ` [PATCH v3 24/43] drm/bridge: analogix_dp: Reset aux channel if an error occurred Thierry Escande
2018-01-30 20:28     ` Thierry Escande
2018-01-30 20:28   ` [PATCH v3 25/43] drm/rockchip: Restore psr->state when enable/disable psr failed Thierry Escande
2018-01-30 20:28   ` [PATCH v3 26/43] drm/bridge: analogix_dp: Don't use ANALOGIX_DP_PLL_CTL to control pll Thierry Escande
2018-01-30 20:28     ` Thierry Escande
2018-01-30 20:28   ` [PATCH v3 27/43] drm/bridge: analogix_dp: Fix timeout of video streamclk config Thierry Escande
2018-01-30 20:28     ` Thierry Escande
2018-01-30 20:28   ` [PATCH v3 28/43] drm/bridge: analogix_dp: Fix incorrect operations with register ANALOGIX_DP_FUNC_EN_1 Thierry Escande
2018-01-30 20:28     ` Thierry Escande
2018-01-30 20:28   ` [PATCH v3 29/43] drm/bridge: analogix_dp: Move fast link training detect to set_bridge Thierry Escande
2018-01-30 20:28     ` Thierry Escande
2018-01-30 20:29   ` [PATCH v3 30/43] drm/bridge: analogix_dp: Reorder plat_data->power_off to happen sooner Thierry Escande
2018-01-30 20:29     ` Thierry Escande
2018-01-30 20:29   ` [PATCH v3 31/43] drm/bridge: analogix_dp: Properly log AUX CH errors Thierry Escande
2018-01-30 20:29   ` [PATCH v3 32/43] drm/bridge: analogix_dp: Properly disable aux chan retries on rockchip Thierry Escande
2018-01-30 20:29     ` Thierry Escande
2018-01-30 20:29   ` [PATCH v3 33/43] drm/panel: simple: Change mode for Sharp lq123p1jx31 Thierry Escande
2018-01-30 20:29     ` Thierry Escande
2018-01-31 12:54     ` Lucas Stach
2018-01-31 12:54       ` Lucas Stach
2018-01-31 15:16       ` Sean Paul
2018-01-31 15:16         ` Sean Paul
2018-01-31 16:52         ` Doug Anderson
2018-01-31 16:52           ` Doug Anderson
2018-02-16 12:34           ` Enric Balletbo Serra
2018-02-16 12:34             ` Enric Balletbo Serra
2018-02-16 20:54             ` Doug Anderson
2018-02-16 20:54               ` Doug Anderson
2018-02-19  9:42               ` Enric Balletbo Serra
2018-02-19  9:42                 ` Enric Balletbo Serra
2018-01-30 20:29   ` [PATCH v3 34/43] drm/rockchip: pre dither down when output bpc is 8bit Thierry Escande
2018-01-30 20:29     ` Thierry Escande
2018-01-30 20:29   ` [PATCH v3 35/43] drm/bridge: analogix_dp: Split the platform-specific poweron in two parts Thierry Escande
2018-01-30 20:29   ` [PATCH v3 36/43] drm/rockchip: analogix_dp: Do not call Analogix code before bind Thierry Escande
2018-01-30 20:29     ` Thierry Escande
2018-01-30 20:29   ` [PATCH v3 37/43] drm/rockchip: Disable PSR on input events Thierry Escande
2018-01-30 20:29     ` Thierry Escande
2018-01-30 20:29   ` [PATCH v3 38/43] drm/rockchip: Cancel PSR enable work before changing the state Thierry Escande
2018-01-30 20:29   ` [PATCH v3 39/43] drm/rockchip: psr: Avoid redundant calls to .set() callback Thierry Escande
2018-01-30 20:29   ` [PATCH v3 40/43] drm/rockchip: psr: Sanitize semantics of allow/disallow API Thierry Escande
2018-01-30 20:29   ` [PATCH v3 41/43] drm/rockchip: Disable PSR from reboot notifier Thierry Escande
2018-01-30 20:29   ` [PATCH v3 42/43] drm/rockchip: Disallow PSR for the whole atomic commit Thierry Escande
2018-01-30 20:29   ` [PATCH v3 43/43] drm/rockchip: psr: Remove flush by CRTC Thierry Escande
2018-03-01  8:50   ` [PATCH v3 00/43] DRM Rockchip rk3399 (Kevin) Marek Szyprowski
2018-03-01  8:50     ` Marek Szyprowski
2018-03-01 11:06     ` Marek Szyprowski
2018-03-01 11:06       ` Marek Szyprowski
2018-03-01 12:56       ` Marek Szyprowski
2018-03-01 12:56         ` Marek Szyprowski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180130202913.28724-20-thierry.escande@collabora.com \
    --to=thierry.escande@collabora.com \
    --cc=airlied@linux.ie \
    --cc=architt@codeaurora.org \
    --cc=dianders@chromium.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=enric.balletbo@collabora.com \
    --cc=hjc@rock-chips.com \
    --cc=hl@rock-chips.com \
    --cc=hshi@chromium.org \
    --cc=inki.dae@samsung.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rockchip@lists.infradead.org \
    --cc=mark.yao@rock-chips.com \
    --cc=orjan.eide@arm.com \
    --cc=seanpaul@chromium.org \
    --cc=tfiga@chromium.org \
    --cc=thierry.reding@gmail.com \
    --cc=wzz@rock-chips.com \
    --cc=ykk@rock-chips.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.