]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amd/display: Only poll analog connectors
authorTimur Kristóf <timur.kristof@gmail.com>
Sun, 18 Jan 2026 13:03:45 +0000 (14:03 +0100)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 21 Jan 2026 02:53:34 +0000 (21:53 -0500)
Analog connectors may be hot-plugged unlike other connector
types that don't support HPD.

Stop DRM from polling other connector types that don't
support HPD, such as eDP, LVDS, etc. These were wrongly
polled when analog connector support was added,
causing issues with the seamless boot process.

Fixes: c4f3f114e73c ("drm/amd/display: Poll analog connectors (v3)")
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reported-by: Matthew Schwartz <matthew.schwartz@linux.dev>
Reviewed-by: Mario Limonciello (AMD) <superm1@kernel.org>
Reviewed-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
(cherry picked from commit e924c7004b08e4e173782bad60b27841d889e371)

drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.c

index 0a2a3f233a0e2e4dc7aa066fae6b4801fb0fc33a..e7b0928bd3db7996a1b53097f20e89188f1fa483 100644 (file)
@@ -915,13 +915,19 @@ void amdgpu_dm_hpd_init(struct amdgpu_device *adev)
                struct amdgpu_dm_connector *amdgpu_dm_connector;
                const struct dc_link *dc_link;
 
-               use_polling |= connector->polled != DRM_CONNECTOR_POLL_HPD;
-
                if (connector->connector_type == DRM_MODE_CONNECTOR_WRITEBACK)
                        continue;
 
                amdgpu_dm_connector = to_amdgpu_dm_connector(connector);
 
+               /*
+                * Analog connectors may be hot-plugged unlike other connector
+                * types that don't support HPD. Only poll analog connectors.
+                */
+               use_polling |=
+                       amdgpu_dm_connector->dc_link &&
+                       dc_connector_supports_analog(amdgpu_dm_connector->dc_link->link_id.id);
+
                dc_link = amdgpu_dm_connector->dc_link;
 
                /*