diff mbox series

drm/i915: enhance legacy HPD disconnection flow for 4K pipe compute in GLK

Message ID 20210219070631.19853-1-gary.c.wang@intel.com (mailing list archive)
State New, archived
Headers show
Series drm/i915: enhance legacy HPD disconnection flow for 4K pipe compute in GLK | expand

Commit Message

Gary C Wang Feb. 19, 2021, 7:06 a.m. UTC
HDMI PHY is not available to use when its HDMI disaply plug-in, and power-off
then power-on as soon as getting a hotplug. In above cases where there's a HDMI
connector physically connected but it can't be used by GLK with 4K pipe then blank
screen (lacking of edid-update & mode-probing) then need return false, since the
rest of the driver should pretty much treat the port as disconnected.

As previous result, handshaking through is required around connect and disconnect.
Otherwise it would be in a inconsistent state as port is disconnected but with a
valid HDMI type.

Also setting it to return HDMI disconnect for any future calls to
intel_digital_port_connected(), this way we don't need to check if port is marked
as safe everytime.

References: https://gitlab.freedesktop.org/drm/intel/-/issues/3092
Test-steps: setup HDMI 4K@60Hz in GLK then to power monitor off then on to get display
recovery correctly

Tested-by: Gary C Wang <gary.c.wang@intel.com>
Reviewed-by: Gordon Sylin <gordon.sylin@intel.com>
Signed-off-by: Gary C Wang <gary.c.wang@intel.com>
---
 drivers/gpu/drm/i915/display/intel_hdmi.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c b/drivers/gpu/drm/i915/display/intel_hdmi.c
index 7f384f259fc8..039cdbfe71a0 100644
--- a/drivers/gpu/drm/i915/display/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/display/intel_hdmi.c
@@ -2705,7 +2705,7 @@  intel_hdmi_detect(struct drm_connector *connector, bool force)
 
 	wakeref = intel_display_power_get(dev_priv, POWER_DOMAIN_GMBUS);
 
-	if (INTEL_GEN(dev_priv) >= 11 &&
+	if ((INTEL_GEN(dev_priv) >= 11 || IS_GEMINILAKE(dev_priv)) &&
 	    !intel_digital_port_connected(encoder))
 		goto out;