Thomas Zimmermann a04af7
From bc551d776b691022f49b5bb5379bd58f7c4eb76a Mon Sep 17 00:00:00 2001
Thomas Zimmermann a04af7
From: Jonathan Liu <net147@gmail.com>
Thomas Zimmermann a04af7
Date: Sat, 31 Oct 2020 19:17:47 +1100
Thomas Zimmermann a04af7
Subject: drm: bridge: dw-hdmi: Avoid resetting force in the detect function
Thomas Zimmermann a04af7
Git-commit: bc551d776b691022f49b5bb5379bd58f7c4eb76a
Thomas Zimmermann a04af7
Patch-mainline: v5.10-rc5
Thomas Zimmermann a04af7
References: bsc#1129770
Thomas Zimmermann a04af7
Thomas Zimmermann a04af7
It has been observed that resetting force in the detect function can
Thomas Zimmermann a04af7
result in the PHY being powered down in response to hot-plug detect
Thomas Zimmermann a04af7
being asserted, even when the HDMI connector is forced on.
Thomas Zimmermann a04af7
Thomas Zimmermann a04af7
Enabling debug messages and adding a call to dump_stack() in
Thomas Zimmermann a04af7
dw_hdmi_phy_power_off() shows the following in dmesg:
Thomas Zimmermann a04af7
[  160.637413] dwhdmi-rockchip ff940000.hdmi: EVENT=plugin
Thomas Zimmermann a04af7
[  160.637433] dwhdmi-rockchip ff940000.hdmi: PHY powered down in 0 iterations
Thomas Zimmermann a04af7
Thomas Zimmermann a04af7
Call trace:
Thomas Zimmermann a04af7
dw_hdmi_phy_power_off
Thomas Zimmermann a04af7
dw_hdmi_phy_disable
Thomas Zimmermann a04af7
dw_hdmi_update_power
Thomas Zimmermann a04af7
dw_hdmi_detect
Thomas Zimmermann a04af7
dw_hdmi_connector_detect
Thomas Zimmermann a04af7
drm_helper_probe_detect_ctx
Thomas Zimmermann a04af7
drm_helper_hpd_irq_event
Thomas Zimmermann a04af7
dw_hdmi_irq
Thomas Zimmermann a04af7
irq_thread_fn
Thomas Zimmermann a04af7
irq_thread
Thomas Zimmermann a04af7
kthread
Thomas Zimmermann a04af7
ret_from_fork
Thomas Zimmermann a04af7
Thomas Zimmermann a04af7
Fixes: 381f05a7a842 ("drm: bridge/dw_hdmi: add connector mode forcing")
Thomas Zimmermann a04af7
Signed-off-by: Jonathan Liu <net147@gmail.com>
Thomas Zimmermann a04af7
Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
Thomas Zimmermann a04af7
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Thomas Zimmermann a04af7
Link: https://patchwork.freedesktop.org/patch/msgid/20201031081747.372599-1-net147@gmail.com
Thomas Zimmermann a04af7
Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
Thomas Zimmermann a04af7
---
Thomas Zimmermann a04af7
 drivers/gpu/drm/bridge/synopsys/dw-hdmi.c |    6 ------
Thomas Zimmermann a04af7
 1 file changed, 6 deletions(-)
Thomas Zimmermann a04af7
Thomas Zimmermann a04af7
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
Thomas Zimmermann a04af7
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
Thomas Zimmermann a04af7
@@ -1906,12 +1906,6 @@ dw_hdmi_connector_detect(struct drm_conn
Thomas Zimmermann a04af7
 	struct dw_hdmi *hdmi = container_of(connector, struct dw_hdmi,
Thomas Zimmermann a04af7
 					     connector);
Thomas Zimmermann a04af7
 
Thomas Zimmermann a04af7
-	mutex_lock(&hdmi->mutex);
Thomas Zimmermann a04af7
-	hdmi->force = DRM_FORCE_UNSPECIFIED;
Thomas Zimmermann a04af7
-	dw_hdmi_update_power(hdmi);
Thomas Zimmermann a04af7
-	dw_hdmi_update_phy_mask(hdmi);
Thomas Zimmermann a04af7
-	mutex_unlock(&hdmi->mutex);
Thomas Zimmermann a04af7
-
Thomas Zimmermann a04af7
 	return hdmi->phy.ops->read_hpd(hdmi, hdmi->phy.data);
Thomas Zimmermann a04af7
 }
Thomas Zimmermann a04af7