drm/amd/display: use a more lax vblank enable policy for DCN35+
authorHamza Mahfooz <hamza.mahfooz@amd.com>
Tue, 20 Aug 2024 17:53:23 +0000 (13:53 -0400)
committerHamza Mahfooz <hamza.mahfooz@amd.com>
Fri, 23 Aug 2024 15:53:51 +0000 (11:53 -0400)
Ideally, we want to enable immediate vblank disable, when possible and
we should be able to do so on DCN35+, if PSR isn't supported by a given
CRTC.

Suggested-by: Leo Li <sunpeng.li@amd.com>
Reviewed-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Hamza Mahfooz <hamza.mahfooz@amd.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240822161856.174600-3-hamza.mahfooz@amd.com
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c

index 032a0ea..6323a09 100644 (file)
@@ -8246,7 +8246,8 @@ static void manage_dm_interrupts(struct amdgpu_device *adev,
                if (amdgpu_ip_version(adev, DCE_HWIP, 0) <
                    IP_VERSION(3, 5, 0)) {
                        drm_crtc_vblank_on(&acrtc->base);
-               } else {
+               } else if (acrtc_state->stream->link->psr_settings.psr_version <
+                          DC_PSR_VERSION_UNSUPPORTED) {
                        timing = &acrtc_state->stream->timing;
 
                        /* at least 2 frames */
@@ -8258,6 +8259,10 @@ static void manage_dm_interrupts(struct amdgpu_device *adev,
                        config.offdelay_ms = offdelay ?: 30;
                        drm_crtc_vblank_on_config(&acrtc->base,
                                                  &config);
+               } else {
+                       config.disable_immediate = true;
+                       drm_crtc_vblank_on_config(&acrtc->base,
+                                                 &config);
                }
 
                amdgpu_irq_get(