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
