[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1470902043-23384-1-git-send-email-mark.yao@rock-chips.com>
Date: Thu, 11 Aug 2016 15:54:03 +0800
From: Mark Yao <mark.yao@...k-chips.com>
To: David Airlie <airlied@...ux.ie>, Heiko Stuebner <heiko@...ech.de>,
dri-devel@...ts.freedesktop.org,
linux-arm-kernel@...ts.infradead.org,
linux-rockchip@...ts.infradead.org, linux-kernel@...r.kernel.org
Cc: Mark Yao <mark.yao@...k-chips.com>,
Russell King <rmk+kernel@....linux.org.uk>,
Daniel Vetter <daniel.vetter@...ll.ch>,
Fabio Estevam <fabio.estevam@...escale.com>,
Liu Ying <gnuiyl@...il.com>
Subject: [PATCH] drm/bridge: dw-hdmi: fix hdmi display lost
hdmi->disabled maybe not match to the real hardware status.
->dw_hdmi_bridge_enable()
hdmi->disabled = false;
-->dw_hdmi_update_power()
if (hdmi->rxsense)
force = DRM_FORCE_ON;
else
force = DRM_FORCE_OFF;
hdmi->rxsense maybe false on bridge enable path, then hdmi->disabled
is false, but actually hardware is power off, they are not match.
So on dw_hdmi_irq, judge the hardware status with hdmi->disabled is wrong.
This bug would cause display lost, unplug/plug can't recovery display.
Cc: Russell King <rmk+kernel@....linux.org.uk>
Cc: Daniel Vetter <daniel.vetter@...ll.ch>
Cc: Fabio Estevam <fabio.estevam@...escale.com>
Cc: Liu Ying <gnuiyl@...il.com>
Signed-off-by: Mark Yao <mark.yao@...k-chips.com>
---
drivers/gpu/drm/bridge/dw-hdmi.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/bridge/dw-hdmi.c b/drivers/gpu/drm/bridge/dw-hdmi.c
index 77ab473..a4fcb47 100644
--- a/drivers/gpu/drm/bridge/dw-hdmi.c
+++ b/drivers/gpu/drm/bridge/dw-hdmi.c
@@ -1563,7 +1563,7 @@ static irqreturn_t dw_hdmi_irq(int irq, void *dev_id)
if (intr_stat &
(HDMI_IH_PHY_STAT0_RX_SENSE | HDMI_IH_PHY_STAT0_HPD)) {
mutex_lock(&hdmi->mutex);
- if (!hdmi->disabled && !hdmi->force) {
+ if (!hdmi->bridge_is_on && !hdmi->force) {
/*
* If the RX sense status indicates we're disconnected,
* clear the software rxsense status.
--
1.9.1
Powered by blists - more mailing lists