This reverts commit 3782305ce5807c18fbf092124b9e8303cf1723ae.

This commit breaks init on some boards so revert for now.

Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/3994
Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/3936
Cc: Alex Hung <[email protected]>
Cc: Leo Li <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
---
 .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 31 +++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c 
b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
index 611a935890571..f1ff0f95a719f 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -8797,6 +8797,16 @@ static void manage_dm_interrupts(struct amdgpu_device 
*adev,
                                 struct amdgpu_crtc *acrtc,
                                 struct dm_crtc_state *acrtc_state)
 {
+       /*
+        * We have no guarantee that the frontend index maps to the same
+        * backend index - some even map to more than one.
+        *
+        * TODO: Use a different interrupt or check DC itself for the mapping.
+        */
+       int irq_type =
+               amdgpu_display_crtc_idx_to_irq_type(
+                       adev,
+                       acrtc->crtc_id);
        struct drm_vblank_crtc_config config = {0};
        struct dc_crtc_timing *timing;
        int offdelay;
@@ -8849,7 +8859,28 @@ static void manage_dm_interrupts(struct amdgpu_device 
*adev,
 
                drm_crtc_vblank_on_config(&acrtc->base,
                                          &config);
+
+               amdgpu_irq_get(
+                       adev,
+                       &adev->pageflip_irq,
+                       irq_type);
+#if defined(CONFIG_DRM_AMD_SECURE_DISPLAY)
+               amdgpu_irq_get(
+                       adev,
+                       &adev->vline0_irq,
+                       irq_type);
+#endif
        } else {
+#if defined(CONFIG_DRM_AMD_SECURE_DISPLAY)
+               amdgpu_irq_put(
+                       adev,
+                       &adev->vline0_irq,
+                       irq_type);
+#endif
+               amdgpu_irq_put(
+                       adev,
+                       &adev->pageflip_irq,
+                       irq_type);
                drm_crtc_vblank_off(&acrtc->base);
        }
 }
-- 
2.51.0

Reply via email to