]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drm/amd/display: Report non-DP display as disconnected without EDID
authorHarry Wentland <harry.wentland@amd.com>
Wed, 1 Aug 2018 14:48:23 +0000 (10:48 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 15 Sep 2018 07:46:58 +0000 (09:46 +0200)
commit 01dc285d5cd89b77686d8baef8482c58d7dc3ead upstream.

[Why]
Some boards seem to have a problem where HPD is high on HDMI even though
no display is connected. We don't want to report these as connected. DP
spec still requires us to report DP displays as connected when HPD is
high but we can't read the EDID in order to go to fail-safe mode.

[How]
If connector_signal is not DP abort detection if we can't retrieve the
EDID.

v2: Add Bugzilla and stable

Bugzilla: https://bugs.freedesktop.org/107390
Bugzilla: https://bugs.freedesktop.org/106846
Cc: stable@vger.kernel.org
Signed-off-by: Harry Wentland <harry.wentland@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/gpu/drm/amd/display/dc/core/dc_link.c

index 2fa521812d23bda9406485591741cd185d9bd293..8a7890b03d97f2b3b68d0af5c05ab894f1780bb7 100644 (file)
@@ -728,6 +728,17 @@ bool dc_link_detect(struct dc_link *link, enum dc_detect_reason reason)
                        break;
                case EDID_NO_RESPONSE:
                        DC_LOG_ERROR("No EDID read.\n");
+
+                       /*
+                        * Abort detection for non-DP connectors if we have
+                        * no EDID
+                        *
+                        * DP needs to report as connected if HDP is high
+                        * even if we have no EDID in order to go to
+                        * fail-safe mode
+                        */
+                       if (!dc_is_dp_signal(link->connector_signal))
+                               return false;
                default:
                        break;
                }