]> git.itanic.dy.fi Git - linux-stable/commitdiff
drm/radeon: reintroduce radeon_dp_work_func content
authorAlex Deucher <alexander.deucher@amd.com>
Thu, 18 May 2023 16:38:22 +0000 (12:38 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 24 May 2023 19:11:15 +0000 (15:11 -0400)
Put back the radeon_dp_work_func logic.  It seems that
handling DP RX interrupts is necessary to make some
panels work.  This was removed with the MST support,
but it regresses some systems so add it back.  While
we are here, add the proper mutex locking.

Link: https://gitlab.freedesktop.org/drm/amd/-/issues/2567
Fixes: 01ad1d9c2888 ("drm/radeon: Drop legacy MST support")
Reviewed-by: Lyude Paul <lyude@redhat.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: Lyude Paul <lyude@redhat.com>
Cc: stable@vger.kernel.org
drivers/gpu/drm/radeon/radeon_irq_kms.c

index 3377fbc71f65478b630085fccdbc786306f0157e..c4dda908666cfc4f9a312517698c7c0c7870af1f 100644 (file)
@@ -99,6 +99,16 @@ static void radeon_hotplug_work_func(struct work_struct *work)
 
 static void radeon_dp_work_func(struct work_struct *work)
 {
+       struct radeon_device *rdev = container_of(work, struct radeon_device,
+                                                 dp_work);
+       struct drm_device *dev = rdev->ddev;
+       struct drm_mode_config *mode_config = &dev->mode_config;
+       struct drm_connector *connector;
+
+       mutex_lock(&mode_config->mutex);
+       list_for_each_entry(connector, &mode_config->connector_list, head)
+               radeon_connector_hotplug(connector);
+       mutex_unlock(&mode_config->mutex);
 }
 
 /**