From: Nikola Cornij <nikola.cor...@amd.com>

[why]
Some timings with a large VBlank cause the value to overflow the
register related, while also producing other wrong values in DML output.

[how]
Clamp VStartup at the DCN3.1 maximum value

Signed-off-by: Nikola Cornij <nikola.cor...@amd.com>
Reviewed-by: Dmytro Laktyushkin <dmytro.laktyush...@amd.com>
Acked-by: Bindu Ramamurthy <bind...@amd.com>
---
 .../gpu/drm/amd/display/dc/dml/dcn31/display_mode_vba_31.c    | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/gpu/drm/amd/display/dc/dml/dcn31/display_mode_vba_31.c 
b/drivers/gpu/drm/amd/display/dc/dml/dcn31/display_mode_vba_31.c
index 06fac59a3d40..718d5a99dada 100644
--- a/drivers/gpu/drm/amd/display/dc/dml/dcn31/display_mode_vba_31.c
+++ b/drivers/gpu/drm/amd/display/dc/dml/dcn31/display_mode_vba_31.c
@@ -2668,6 +2668,8 @@ static void 
DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerforman
                                                                                
                (double) v->WritebackDelay[v->VoltageLevel][k]
                                                                                
                                / (v->HTotal[k] / v->PixelClock[k]),
                                                                                
                1));
+               if (v->MaxVStartupLines[k] > 1023)
+                       v->MaxVStartupLines[k] = 1023;
 
 #ifdef __DML_VBA_DEBUG__
                dml_print("DML::%s: k=%d MaxVStartupLines = %d\n", __func__, k, 
v->MaxVStartupLines[k]);
@@ -5064,6 +5066,8 @@ void dml31_ModeSupportAndSystemConfigurationFull(struct 
display_mode_lib *mode_l
                                                                                
                                                / (v->HTotal[k]
                                                                                
                                                                / 
v->PixelClock[k]),
                                                                                
                                1.0));
+                               if (v->MaximumVStartup[i][j][k] > 1023)
+                                       v->MaximumVStartup[i][j][k] = 1023;
                                v->MaxMaxVStartup[i][j] = 
dml_max(v->MaxMaxVStartup[i][j], v->MaximumVStartup[i][j][k]);
                        }
                }
-- 
2.25.1

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to