Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1460240 > unrolled thread
| Started by | Mark Yao <mark.yao@rock-chips.com> |
|---|---|
| First post | 2016-08-11 10:00 +0200 |
| Last post | 2016-08-11 10:40 +0200 |
| Articles | 2 — 2 participants |
Back to article view | Back to linux.kernel
[PATCH] drm/bridge: dw-hdmi: fix hdmi display lost Mark Yao <mark.yao@rock-chips.com> - 2016-08-11 10:00 +0200
Re: [PATCH] drm/bridge: dw-hdmi: fix hdmi display lost Russell King - ARM Linux <linux@armlinux.org.uk> - 2016-08-11 10:40 +0200
| From | Mark Yao <mark.yao@rock-chips.com> |
|---|---|
| Date | 2016-08-11 10:00 +0200 |
| Subject | [PATCH] drm/bridge: dw-hdmi: fix hdmi display lost |
| Message-ID | <s4T4d-Vn-17@gated-at.bofh.it> |
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@arm.linux.org.uk>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Fabio Estevam <fabio.estevam@freescale.com>
Cc: Liu Ying <gnuiyl@gmail.com>
Signed-off-by: Mark Yao <mark.yao@rock-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
[toc] | [next] | [standalone]
| From | Russell King - ARM Linux <linux@armlinux.org.uk> |
|---|---|
| Date | 2016-08-11 10:40 +0200 |
| Message-ID | <s4TGW-1oz-23@gated-at.bofh.it> |
| In reply to | #1460240 |
On Thu, Aug 11, 2016 at 03:54:03PM +0800, Mark Yao wrote: > 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. ... which is correct. If rxsense is false, it means there is nothing plugged in, so we don't power the hardware up until something _is_ plugged in. When something is plugged in, we get the HPD and RXSENSE events, which will cause dw_hdmi_update_power() to be called. hdmi->disabled is merely a bit mask of things that would cause us to want to avoid powering the hardware up when rxsense becomes true. -- RMK's Patch system: http://www.armlinux.org.uk/developer/patches/ FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up according to speedtest.net.
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web