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 <[email protected]>
Reported-by: Matthew Schwartz <[email protected]>
---
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.c 
b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.c
index 0a2a3f233a0e..e7b0928bd3db 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.c
@@ -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;
 
                /*
-- 
2.52.0

Reply via email to