From: Tom Rix <t...@redhat.com>

Mimimize the function signature by passing a pointer and an index instead
of passing several elements of the pointer.

The dml2x,dml3x families uses the same algorithm.  Remove the duplicates.
Use dml20_ and dml30_ prefix to distinguish the two variants.

Signed-off-by: Tom Rix <t...@redhat.com>
---
 .../dc/dml/dcn20/display_mode_vba_20.c        |  78 +++---------
 .../dc/dml/dcn20/display_mode_vba_20v2.c      | 115 ++----------------
 .../dc/dml/dcn21/display_mode_vba_21.c        | 114 +----------------
 .../dc/dml/dcn30/display_mode_vba_30.c        |  74 +++--------
 .../dc/dml/dcn31/display_mode_vba_31.c        |  76 +-----------
 .../dc/dml/dcn314/display_mode_vba_314.c      |  76 +-----------
 .../dc/dml/dcn32/display_mode_vba_32.c        |  42 +------
 .../dc/dml/dcn32/display_mode_vba_util_32.c   |  30 -----
 .../dc/dml/dcn32/display_mode_vba_util_32.h   |  10 +-
 9 files changed, 63 insertions(+), 552 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/dml/dcn20/display_mode_vba_20.c 
b/drivers/gpu/drm/amd/display/dc/dml/dcn20/display_mode_vba_20.c
index 56c9c097823d..4ca080950924 100644
--- a/drivers/gpu/drm/amd/display/dc/dml/dcn20/display_mode_vba_20.c
+++ b/drivers/gpu/drm/amd/display/dc/dml/dcn20/display_mode_vba_20.c
@@ -217,16 +217,8 @@ static void CalculateFlipSchedule(
                double *DestinationLinesToRequestRowInImmediateFlip,
                double *final_flip_bw,
                bool *ImmediateFlipSupportedForPipe);
-static double CalculateWriteBackDelay(
-               enum source_format_class WritebackPixelFormat,
-               double WritebackHRatio,
-               double WritebackVRatio,
-               unsigned int WritebackLumaHTaps,
-               unsigned int WritebackLumaVTaps,
-               unsigned int WritebackChromaHTaps,
-               unsigned int WritebackChromaVTaps,
-               unsigned int WritebackDestinationWidth);
 
+double dlm20_CalculateWriteBackDelay(struct vba_vars_st *vba, unsigned int i);
 static void dml20_DisplayPipeConfiguration(struct display_mode_lib *mode_lib);
 static void 
dml20_DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation(
                struct display_mode_lib *mode_lib);
@@ -1085,6 +1077,7 @@ static unsigned int CalculateVMAndRowBytes(
 static void 
dml20_DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation(
                struct display_mode_lib *mode_lib)
 {
+       struct vba_vars_st *v = &mode_lib->vba;
        unsigned int j, k;
 
        mode_lib->vba.WritebackDISPCLK = 0.0;
@@ -1980,36 +1973,15 @@ static void 
dml20_DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPer
                if (mode_lib->vba.BlendingAndTiming[k] == k) {
                        if (mode_lib->vba.WritebackEnable[k] == true) {
                                
mode_lib->vba.WritebackDelay[mode_lib->vba.VoltageLevel][k] =
-                                               mode_lib->vba.WritebackLatency
-                                                               + 
CalculateWriteBackDelay(
-                                                                               
mode_lib->vba.WritebackPixelFormat[k],
-                                                                               
mode_lib->vba.WritebackHRatio[k],
-                                                                               
mode_lib->vba.WritebackVRatio[k],
-                                                                               
mode_lib->vba.WritebackLumaHTaps[k],
-                                                                               
mode_lib->vba.WritebackLumaVTaps[k],
-                                                                               
mode_lib->vba.WritebackChromaHTaps[k],
-                                                                               
mode_lib->vba.WritebackChromaVTaps[k],
-                                                                               
mode_lib->vba.WritebackDestinationWidth[k])
-                                                                               
/ mode_lib->vba.DISPCLK;
+                                       mode_lib->vba.WritebackLatency + 
dlm20_CalculateWriteBackDelay(v, k) / mode_lib->vba.DISPCLK;
                        } else
                                
mode_lib->vba.WritebackDelay[mode_lib->vba.VoltageLevel][k] = 0;
                        for (j = 0; j < mode_lib->vba.NumberOfActivePlanes; 
++j) {
                                if (mode_lib->vba.BlendingAndTiming[j] == k
                                                && 
mode_lib->vba.WritebackEnable[j] == true) {
                                        
mode_lib->vba.WritebackDelay[mode_lib->vba.VoltageLevel][k] =
-                                                       dml_max(
-                                                                       
mode_lib->vba.WritebackDelay[mode_lib->vba.VoltageLevel][k],
-                                                                       
mode_lib->vba.WritebackLatency
-                                                                               
        + CalculateWriteBackDelay(
-                                                                               
                        mode_lib->vba.WritebackPixelFormat[j],
-                                                                               
                        mode_lib->vba.WritebackHRatio[j],
-                                                                               
                        mode_lib->vba.WritebackVRatio[j],
-                                                                               
                        mode_lib->vba.WritebackLumaHTaps[j],
-                                                                               
                        mode_lib->vba.WritebackLumaVTaps[j],
-                                                                               
                        mode_lib->vba.WritebackChromaHTaps[j],
-                                                                               
                        mode_lib->vba.WritebackChromaVTaps[j],
-                                                                               
                        mode_lib->vba.WritebackDestinationWidth[j])
-                                                                               
                        / mode_lib->vba.DISPCLK);
+                                                       
dml_max(mode_lib->vba.WritebackDelay[mode_lib->vba.VoltageLevel][k],
+                                                               
mode_lib->vba.WritebackLatency + dlm20_CalculateWriteBackDelay(v, j) / 
mode_lib->vba.DISPCLK);
                                }
                        }
                }
@@ -2975,16 +2947,17 @@ static double CalculateRemoteSurfaceFlipDelay(
        return result;
 }
 
-static double CalculateWriteBackDelay(
-               enum source_format_class WritebackPixelFormat,
-               double WritebackHRatio,
-               double WritebackVRatio,
-               unsigned int WritebackLumaHTaps,
-               unsigned int WritebackLumaVTaps,
-               unsigned int WritebackChromaHTaps,
-               unsigned int WritebackChromaVTaps,
-               unsigned int WritebackDestinationWidth)
+double dlm20_CalculateWriteBackDelay(struct vba_vars_st *vba, unsigned int i)
 {
+       const enum source_format_class WritebackPixelFormat = 
vba->WritebackPixelFormat[i];
+       const double WritebackHRatio = vba->WritebackHRatio[i];
+       const double WritebackVRatio = vba->WritebackVRatio[i];
+       const unsigned int WritebackLumaHTaps = vba->WritebackLumaHTaps[i];
+       const unsigned int WritebackLumaVTaps = vba->WritebackLumaVTaps[i];
+       const unsigned int WritebackChromaHTaps = vba->WritebackChromaHTaps[i];
+       const unsigned int WritebackChromaVTaps = vba->WritebackChromaVTaps[i];
+       const unsigned int WritebackDestinationWidth = 
vba->WritebackDestinationWidth[i];
+
        double CalculateWriteBackDelay =
                        dml_max(
                                        dml_ceil(WritebackLumaHTaps / 4.0, 1) / 
WritebackHRatio,
@@ -4619,15 +4592,7 @@ void dml20_ModeSupportAndSystemConfigurationFull(struct 
display_mode_lib *mode_l
                                if (mode_lib->vba.BlendingAndTiming[k] == k) {
                                        if (mode_lib->vba.WritebackEnable[k] == 
true) {
                                                locals->WritebackDelay[i][k] = 
mode_lib->vba.WritebackLatency
-                                                               + 
CalculateWriteBackDelay(
-                                                                               
mode_lib->vba.WritebackPixelFormat[k],
-                                                                               
mode_lib->vba.WritebackHRatio[k],
-                                                                               
mode_lib->vba.WritebackVRatio[k],
-                                                                               
mode_lib->vba.WritebackLumaHTaps[k],
-                                                                               
mode_lib->vba.WritebackLumaVTaps[k],
-                                                                               
mode_lib->vba.WritebackChromaHTaps[k],
-                                                                               
mode_lib->vba.WritebackChromaVTaps[k],
-                                                                               
mode_lib->vba.WritebackDestinationWidth[k]) / locals->RequiredDISPCLK[i][j];
+                                                       + 
dlm20_CalculateWriteBackDelay(locals, k) / locals->RequiredDISPCLK[i][j];
                                        } else {
                                                locals->WritebackDelay[i][k] = 
0.0;
                                        }
@@ -4636,15 +4601,8 @@ void dml20_ModeSupportAndSystemConfigurationFull(struct 
display_mode_lib *mode_l
                                                                && 
mode_lib->vba.WritebackEnable[m]
                                                                                
== true) {
                                                        
locals->WritebackDelay[i][k] = dml_max(locals->WritebackDelay[i][k],
-                                                                               
        mode_lib->vba.WritebackLatency + CalculateWriteBackDelay(
-                                                                               
                        mode_lib->vba.WritebackPixelFormat[m],
-                                                                               
                        mode_lib->vba.WritebackHRatio[m],
-                                                                               
                        mode_lib->vba.WritebackVRatio[m],
-                                                                               
                        mode_lib->vba.WritebackLumaHTaps[m],
-                                                                               
                        mode_lib->vba.WritebackLumaVTaps[m],
-                                                                               
                        mode_lib->vba.WritebackChromaHTaps[m],
-                                                                               
                        mode_lib->vba.WritebackChromaVTaps[m],
-                                                                               
                        mode_lib->vba.WritebackDestinationWidth[m]) / 
locals->RequiredDISPCLK[i][j]);
+                                                                               
               mode_lib->vba.WritebackLatency +
+                                                                               
               dlm20_CalculateWriteBackDelay(locals, m) / 
locals->RequiredDISPCLK[i][j]);
                                                }
                                        }
                                }
diff --git a/drivers/gpu/drm/amd/display/dc/dml/dcn20/display_mode_vba_20v2.c 
b/drivers/gpu/drm/amd/display/dc/dml/dcn20/display_mode_vba_20v2.c
index 6b54be569691..2b4dcae4e432 100644
--- a/drivers/gpu/drm/amd/display/dc/dml/dcn20/display_mode_vba_20v2.c
+++ b/drivers/gpu/drm/amd/display/dc/dml/dcn20/display_mode_vba_20v2.c
@@ -241,15 +241,7 @@ static void CalculateFlipSchedule(
                double *DestinationLinesToRequestRowInImmediateFlip,
                double *final_flip_bw,
                bool *ImmediateFlipSupportedForPipe);
-static double CalculateWriteBackDelay(
-               enum source_format_class WritebackPixelFormat,
-               double WritebackHRatio,
-               double WritebackVRatio,
-               unsigned int WritebackLumaHTaps,
-               unsigned int WritebackLumaVTaps,
-               unsigned int WritebackChromaHTaps,
-               unsigned int WritebackChromaVTaps,
-               unsigned int WritebackDestinationWidth);
+double dlm20_CalculateWriteBackDelay(struct vba_vars_st *vba, unsigned int i);
 
 static void dml20v2_DisplayPipeConfiguration(struct display_mode_lib 
*mode_lib);
 static void 
dml20v2_DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation(
@@ -1145,6 +1137,7 @@ static unsigned int CalculateVMAndRowBytes(
 static void 
dml20v2_DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation(
                struct display_mode_lib *mode_lib)
 {
+       struct vba_vars_st *v = &mode_lib->vba;
        unsigned int j, k;
 
        mode_lib->vba.WritebackDISPCLK = 0.0;
@@ -2016,17 +2009,7 @@ static void 
dml20v2_DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndP
                if (mode_lib->vba.BlendingAndTiming[k] == k) {
                        if (mode_lib->vba.WritebackEnable[k] == true) {
                                
mode_lib->vba.WritebackDelay[mode_lib->vba.VoltageLevel][k] =
-                                               mode_lib->vba.WritebackLatency
-                                                               + 
CalculateWriteBackDelay(
-                                                                               
mode_lib->vba.WritebackPixelFormat[k],
-                                                                               
mode_lib->vba.WritebackHRatio[k],
-                                                                               
mode_lib->vba.WritebackVRatio[k],
-                                                                               
mode_lib->vba.WritebackLumaHTaps[k],
-                                                                               
mode_lib->vba.WritebackLumaVTaps[k],
-                                                                               
mode_lib->vba.WritebackChromaHTaps[k],
-                                                                               
mode_lib->vba.WritebackChromaVTaps[k],
-                                                                               
mode_lib->vba.WritebackDestinationWidth[k])
-                                                                               
/ mode_lib->vba.DISPCLK;
+                                       mode_lib->vba.WritebackLatency + 
dlm20_CalculateWriteBackDelay(v, k) / mode_lib->vba.DISPCLK;
                        } else
                                
mode_lib->vba.WritebackDelay[mode_lib->vba.VoltageLevel][k] = 0;
                        for (j = 0; j < mode_lib->vba.NumberOfActivePlanes; 
++j) {
@@ -2036,16 +2019,7 @@ static void 
dml20v2_DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndP
                                                        dml_max(
                                                                        
mode_lib->vba.WritebackDelay[mode_lib->vba.VoltageLevel][k],
                                                                        
mode_lib->vba.WritebackLatency
-                                                                               
        + CalculateWriteBackDelay(
-                                                                               
                        mode_lib->vba.WritebackPixelFormat[j],
-                                                                               
                        mode_lib->vba.WritebackHRatio[j],
-                                                                               
                        mode_lib->vba.WritebackVRatio[j],
-                                                                               
                        mode_lib->vba.WritebackLumaHTaps[j],
-                                                                               
                        mode_lib->vba.WritebackLumaVTaps[j],
-                                                                               
                        mode_lib->vba.WritebackChromaHTaps[j],
-                                                                               
                        mode_lib->vba.WritebackChromaVTaps[j],
-                                                                               
                        mode_lib->vba.WritebackDestinationWidth[j])
-                                                                               
                        / mode_lib->vba.DISPCLK);
+                                                                       + 
dlm20_CalculateWriteBackDelay(v, j) / mode_lib->vba.DISPCLK);
                                }
                        }
                }
@@ -3031,66 +3005,6 @@ static double CalculateRemoteSurfaceFlipDelay(
        return result;
 }
 
-static double CalculateWriteBackDelay(
-               enum source_format_class WritebackPixelFormat,
-               double WritebackHRatio,
-               double WritebackVRatio,
-               unsigned int WritebackLumaHTaps,
-               unsigned int WritebackLumaVTaps,
-               unsigned int WritebackChromaHTaps,
-               unsigned int WritebackChromaVTaps,
-               unsigned int WritebackDestinationWidth)
-{
-       double CalculateWriteBackDelay =
-                       dml_max(
-                                       dml_ceil(WritebackLumaHTaps / 4.0, 1) / 
WritebackHRatio,
-                                       WritebackLumaVTaps * dml_ceil(1.0 / 
WritebackVRatio, 1)
-                                                       * dml_ceil(
-                                                                       
WritebackDestinationWidth
-                                                                               
        / 4.0,
-                                                                       1)
-                                                       + dml_ceil(1.0 / 
WritebackVRatio, 1)
-                                                                       * 
(dml_ceil(
-                                                                               
        WritebackLumaVTaps
-                                                                               
                        / 4.0,
-                                                                               
        1) + 4));
-
-       if (WritebackPixelFormat != dm_444_32) {
-               CalculateWriteBackDelay =
-                               dml_max(
-                                               CalculateWriteBackDelay,
-                                               dml_max(
-                                                               dml_ceil(
-                                                                               
WritebackChromaHTaps
-                                                                               
                / 2.0,
-                                                                               
1)
-                                                                               
/ (2
-                                                                               
                * WritebackHRatio),
-                                                               
WritebackChromaVTaps
-                                                                               
* dml_ceil(
-                                                                               
                1
-                                                                               
                                / (2
-                                                                               
                                                * WritebackVRatio),
-                                                                               
                1)
-                                                                               
* dml_ceil(
-                                                                               
                WritebackDestinationWidth
-                                                                               
                                / 2.0
-                                                                               
                                / 2.0,
-                                                                               
                1)
-                                                                               
+ dml_ceil(
-                                                                               
                1
-                                                                               
                                / (2
-                                                                               
                                                * WritebackVRatio),
-                                                                               
                1)
-                                                                               
                * (dml_ceil(
-                                                                               
                                WritebackChromaVTaps
-                                                                               
                                                / 4.0,
-                                                                               
                                1)
-                                                                               
                                + 4)));
-       }
-       return CalculateWriteBackDelay;
-}
-
 static void CalculateActiveRowBandwidth(
                bool GPUVMEnable,
                enum source_format_class SourcePixelFormat,
@@ -4728,15 +4642,7 @@ void 
dml20v2_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode
                                if (mode_lib->vba.BlendingAndTiming[k] == k) {
                                        if (mode_lib->vba.WritebackEnable[k] == 
true) {
                                                locals->WritebackDelay[i][k] = 
mode_lib->vba.WritebackLatency
-                                                               + 
CalculateWriteBackDelay(
-                                                                               
mode_lib->vba.WritebackPixelFormat[k],
-                                                                               
mode_lib->vba.WritebackHRatio[k],
-                                                                               
mode_lib->vba.WritebackVRatio[k],
-                                                                               
mode_lib->vba.WritebackLumaHTaps[k],
-                                                                               
mode_lib->vba.WritebackLumaVTaps[k],
-                                                                               
mode_lib->vba.WritebackChromaHTaps[k],
-                                                                               
mode_lib->vba.WritebackChromaVTaps[k],
-                                                                               
mode_lib->vba.WritebackDestinationWidth[k]) / locals->RequiredDISPCLK[i][j];
+                                                       + 
dlm20_CalculateWriteBackDelay(locals, k) / locals->RequiredDISPCLK[i][j];
                                        } else {
                                                locals->WritebackDelay[i][k] = 
0.0;
                                        }
@@ -4745,15 +4651,8 @@ void 
dml20v2_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode
                                                                && 
mode_lib->vba.WritebackEnable[m]
                                                                                
== true) {
                                                        
locals->WritebackDelay[i][k] = dml_max(locals->WritebackDelay[i][k],
-                                                                               
        mode_lib->vba.WritebackLatency + CalculateWriteBackDelay(
-                                                                               
                        mode_lib->vba.WritebackPixelFormat[m],
-                                                                               
                        mode_lib->vba.WritebackHRatio[m],
-                                                                               
                        mode_lib->vba.WritebackVRatio[m],
-                                                                               
                        mode_lib->vba.WritebackLumaHTaps[m],
-                                                                               
                        mode_lib->vba.WritebackLumaVTaps[m],
-                                                                               
                        mode_lib->vba.WritebackChromaHTaps[m],
-                                                                               
                        mode_lib->vba.WritebackChromaVTaps[m],
-                                                                               
                        mode_lib->vba.WritebackDestinationWidth[m]) / 
locals->RequiredDISPCLK[i][j]);
+                                                                               
               mode_lib->vba.WritebackLatency +
+                                                                               
               dlm20_CalculateWriteBackDelay(locals, m) / 
locals->RequiredDISPCLK[i][j]);
                                                }
                                        }
                                }
diff --git a/drivers/gpu/drm/amd/display/dc/dml/dcn21/display_mode_vba_21.c 
b/drivers/gpu/drm/amd/display/dc/dml/dcn21/display_mode_vba_21.c
index d2dfa82d52a1..df4b52b2ed4c 100644
--- a/drivers/gpu/drm/amd/display/dc/dml/dcn21/display_mode_vba_21.c
+++ b/drivers/gpu/drm/amd/display/dc/dml/dcn21/display_mode_vba_21.c
@@ -273,15 +273,7 @@ static void CalculateFlipSchedule(
                double *DestinationLinesToRequestRowInImmediateFlip,
                double *final_flip_bw,
                bool *ImmediateFlipSupportedForPipe);
-static double CalculateWriteBackDelay(
-               enum source_format_class WritebackPixelFormat,
-               double WritebackHRatio,
-               double WritebackVRatio,
-               unsigned int WritebackLumaHTaps,
-               unsigned int WritebackLumaVTaps,
-               unsigned int WritebackChromaHTaps,
-               unsigned int WritebackChromaVTaps,
-               unsigned int WritebackDestinationWidth);
+double dlm20_CalculateWriteBackDelay(struct vba_vars_st *vba, unsigned int i);
 static void CalculateWatermarksAndDRAMSpeedChangeSupport(
                struct display_mode_lib *mode_lib,
                unsigned int PrefetchMode,
@@ -2042,17 +2034,7 @@ static void 
DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerforman
                if (mode_lib->vba.BlendingAndTiming[k] == k) {
                        if (mode_lib->vba.WritebackEnable[k] == true) {
                                
locals->WritebackDelay[mode_lib->vba.VoltageLevel][k] =
-                                               mode_lib->vba.WritebackLatency
-                                                               + 
CalculateWriteBackDelay(
-                                                                               
mode_lib->vba.WritebackPixelFormat[k],
-                                                                               
mode_lib->vba.WritebackHRatio[k],
-                                                                               
mode_lib->vba.WritebackVRatio[k],
-                                                                               
mode_lib->vba.WritebackLumaHTaps[k],
-                                                                               
mode_lib->vba.WritebackLumaVTaps[k],
-                                                                               
mode_lib->vba.WritebackChromaHTaps[k],
-                                                                               
mode_lib->vba.WritebackChromaVTaps[k],
-                                                                               
mode_lib->vba.WritebackDestinationWidth[k])
-                                                                               
/ mode_lib->vba.DISPCLK;
+                                       mode_lib->vba.WritebackLatency + 
dlm20_CalculateWriteBackDelay(locals, k) / mode_lib->vba.DISPCLK;
                        } else
                                
locals->WritebackDelay[mode_lib->vba.VoltageLevel][k] = 0;
                        for (j = 0; j < mode_lib->vba.NumberOfActivePlanes; 
++j) {
@@ -2062,16 +2044,7 @@ static void 
DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerforman
                                                        dml_max(
                                                                        
locals->WritebackDelay[mode_lib->vba.VoltageLevel][k],
                                                                        
mode_lib->vba.WritebackLatency
-                                                                               
        + CalculateWriteBackDelay(
-                                                                               
                        mode_lib->vba.WritebackPixelFormat[j],
-                                                                               
                        mode_lib->vba.WritebackHRatio[j],
-                                                                               
                        mode_lib->vba.WritebackVRatio[j],
-                                                                               
                        mode_lib->vba.WritebackLumaHTaps[j],
-                                                                               
                        mode_lib->vba.WritebackLumaVTaps[j],
-                                                                               
                        mode_lib->vba.WritebackChromaHTaps[j],
-                                                                               
                        mode_lib->vba.WritebackChromaVTaps[j],
-                                                                               
                        mode_lib->vba.WritebackDestinationWidth[j])
-                                                                               
                        / mode_lib->vba.DISPCLK);
+                                                                       + 
dlm20_CalculateWriteBackDelay(locals, j) / mode_lib->vba.DISPCLK);
                                }
                        }
                }
@@ -3045,66 +3018,6 @@ static double CalculateRemoteSurfaceFlipDelay(
        return result;
 }
 
-static double CalculateWriteBackDelay(
-               enum source_format_class WritebackPixelFormat,
-               double WritebackHRatio,
-               double WritebackVRatio,
-               unsigned int WritebackLumaHTaps,
-               unsigned int WritebackLumaVTaps,
-               unsigned int WritebackChromaHTaps,
-               unsigned int WritebackChromaVTaps,
-               unsigned int WritebackDestinationWidth)
-{
-       double CalculateWriteBackDelay =
-                       dml_max(
-                                       dml_ceil(WritebackLumaHTaps / 4.0, 1) / 
WritebackHRatio,
-                                       WritebackLumaVTaps * dml_ceil(1.0 / 
WritebackVRatio, 1)
-                                                       * dml_ceil(
-                                                                       
WritebackDestinationWidth
-                                                                               
        / 4.0,
-                                                                       1)
-                                                       + dml_ceil(1.0 / 
WritebackVRatio, 1)
-                                                                       * 
(dml_ceil(
-                                                                               
        WritebackLumaVTaps
-                                                                               
                        / 4.0,
-                                                                               
        1) + 4));
-
-       if (WritebackPixelFormat != dm_444_32) {
-               CalculateWriteBackDelay =
-                               dml_max(
-                                               CalculateWriteBackDelay,
-                                               dml_max(
-                                                               dml_ceil(
-                                                                               
WritebackChromaHTaps
-                                                                               
                / 2.0,
-                                                                               
1)
-                                                                               
/ (2
-                                                                               
                * WritebackHRatio),
-                                                               
WritebackChromaVTaps
-                                                                               
* dml_ceil(
-                                                                               
                1
-                                                                               
                                / (2
-                                                                               
                                                * WritebackVRatio),
-                                                                               
                1)
-                                                                               
* dml_ceil(
-                                                                               
                WritebackDestinationWidth
-                                                                               
                                / 2.0
-                                                                               
                                / 2.0,
-                                                                               
                1)
-                                                                               
+ dml_ceil(
-                                                                               
                1
-                                                                               
                                / (2
-                                                                               
                                                * WritebackVRatio),
-                                                                               
                1)
-                                                                               
                * (dml_ceil(
-                                                                               
                                WritebackChromaVTaps
-                                                                               
                                                / 4.0,
-                                                                               
                                1)
-                                                                               
                                + 4)));
-       }
-       return CalculateWriteBackDelay;
-}
-
 static void CalculateActiveRowBandwidth(
                bool GPUVMEnable,
                enum source_format_class SourcePixelFormat,
@@ -4727,15 +4640,7 @@ void dml21_ModeSupportAndSystemConfigurationFull(struct 
display_mode_lib *mode_l
                                if (mode_lib->vba.BlendingAndTiming[k] == k) {
                                        if (mode_lib->vba.WritebackEnable[k] == 
true) {
                                                locals->WritebackDelay[i][k] = 
mode_lib->vba.WritebackLatency
-                                                               + 
CalculateWriteBackDelay(
-                                                                               
mode_lib->vba.WritebackPixelFormat[k],
-                                                                               
mode_lib->vba.WritebackHRatio[k],
-                                                                               
mode_lib->vba.WritebackVRatio[k],
-                                                                               
mode_lib->vba.WritebackLumaHTaps[k],
-                                                                               
mode_lib->vba.WritebackLumaVTaps[k],
-                                                                               
mode_lib->vba.WritebackChromaHTaps[k],
-                                                                               
mode_lib->vba.WritebackChromaVTaps[k],
-                                                                               
mode_lib->vba.WritebackDestinationWidth[k]) / locals->RequiredDISPCLK[i][j];
+                                                       + 
dlm20_CalculateWriteBackDelay(locals, k) / locals->RequiredDISPCLK[i][j];
                                        } else {
                                                locals->WritebackDelay[i][k] = 
0.0;
                                        }
@@ -4744,15 +4649,8 @@ void dml21_ModeSupportAndSystemConfigurationFull(struct 
display_mode_lib *mode_l
                                                                && 
mode_lib->vba.WritebackEnable[m]
                                                                                
== true) {
                                                        
locals->WritebackDelay[i][k] = dml_max(locals->WritebackDelay[i][k],
-                                                                               
        mode_lib->vba.WritebackLatency + CalculateWriteBackDelay(
-                                                                               
                        mode_lib->vba.WritebackPixelFormat[m],
-                                                                               
                        mode_lib->vba.WritebackHRatio[m],
-                                                                               
                        mode_lib->vba.WritebackVRatio[m],
-                                                                               
                        mode_lib->vba.WritebackLumaHTaps[m],
-                                                                               
                        mode_lib->vba.WritebackLumaVTaps[m],
-                                                                               
                        mode_lib->vba.WritebackChromaHTaps[m],
-                                                                               
                        mode_lib->vba.WritebackChromaVTaps[m],
-                                                                               
                        mode_lib->vba.WritebackDestinationWidth[m]) / 
locals->RequiredDISPCLK[i][j]);
+                                                                               
        mode_lib->vba.WritebackLatency +
+                                                                               
               dlm20_CalculateWriteBackDelay(locals, m) / 
locals->RequiredDISPCLK[i][j]);
                                                }
                                        }
                                }
diff --git a/drivers/gpu/drm/amd/display/dc/dml/dcn30/display_mode_vba_30.c 
b/drivers/gpu/drm/amd/display/dc/dml/dcn30/display_mode_vba_30.c
index e62bc56e4e9a..74f5d9742f59 100644
--- a/drivers/gpu/drm/amd/display/dc/dml/dcn30/display_mode_vba_30.c
+++ b/drivers/gpu/drm/amd/display/dc/dml/dcn30/display_mode_vba_30.c
@@ -268,15 +268,7 @@ static void CalculateFlipSchedule(
                double *DestinationLinesToRequestRowInImmediateFlip,
                double *final_flip_bw,
                bool *ImmediateFlipSupportedForPipe);
-static double CalculateWriteBackDelay(
-               enum source_format_class WritebackPixelFormat,
-               double WritebackHRatio,
-               double WritebackVRatio,
-               unsigned int WritebackVTaps,
-               long WritebackDestinationWidth,
-               long WritebackDestinationHeight,
-               long WritebackSourceHeight,
-               unsigned int HTotal);
+double dml30_CalculateWriteBackDelay(struct vba_vars_st *vba, unsigned int i, 
unsigned int HTotal);
 static void CalculateDynamicMetadataParameters(
                int MaxInterDCNTileRepeaters,
                double DPPCLK,
@@ -2360,29 +2352,15 @@ static void 
DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerforman
                if (v->BlendingAndTiming[k] == k) {
                        if (v->WritebackEnable[k] == true) {
                                v->WritebackDelay[v->VoltageLevel][k] = 
v->WritebackLatency +
-                                               
CalculateWriteBackDelay(v->WritebackPixelFormat[k],
-                                                                       
v->WritebackHRatio[k],
-                                                                       
v->WritebackVRatio[k],
-                                                                       
v->WritebackVTaps[k],
-                                                                       
v->WritebackDestinationWidth[k],
-                                                                       
v->WritebackDestinationHeight[k],
-                                                                       
v->WritebackSourceHeight[k],
-                                                                       
v->HTotal[k]) / v->DISPCLK;
+                                       dml30_CalculateWriteBackDelay(v, k, 
v->HTotal[k]) / v->DISPCLK;
                        } else
                                v->WritebackDelay[v->VoltageLevel][k] = 0;
                        for (j = 0; j < v->NumberOfActivePlanes; ++j) {
                                if (v->BlendingAndTiming[j] == k
                                                && v->WritebackEnable[j] == 
true) {
                                        v->WritebackDelay[v->VoltageLevel][k] = 
dml_max(v->WritebackDelay[v->VoltageLevel][k],
-                                                       v->WritebackLatency + 
CalculateWriteBackDelay(
-                                                                               
        v->WritebackPixelFormat[j],
-                                                                               
        v->WritebackHRatio[j],
-                                                                               
        v->WritebackVRatio[j],
-                                                                               
        v->WritebackVTaps[j],
-                                                                               
        v->WritebackDestinationWidth[j],
-                                                                               
        v->WritebackDestinationHeight[j],
-                                                                               
        v->WritebackSourceHeight[j],
-                                                                               
        v->HTotal[k]) / v->DISPCLK);
+                                                                               
        v->WritebackLatency +
+                                                                               
        dml30_CalculateWriteBackDelay(v, j, v->HTotal[k]) / v->DISPCLK);
                                }
                        }
                }
@@ -3233,20 +3211,18 @@ double dml30_CalculateWriteBackDISPCLK(
        return dml_max3(DISPCLK_H, DISPCLK_V, DISPCLK_HB);
 }
 
-static double CalculateWriteBackDelay(
-               enum source_format_class WritebackPixelFormat,
-               double WritebackHRatio,
-               double WritebackVRatio,
-               unsigned int WritebackVTaps,
-               long         WritebackDestinationWidth,
-               long         WritebackDestinationHeight,
-               long         WritebackSourceHeight,
-               unsigned int HTotal)
+double dml30_CalculateWriteBackDelay(struct vba_vars_st *vba, unsigned int i, 
unsigned int HTotal)
 {
-       double CalculateWriteBackDelay = 0;
-       double Line_length = 0;
-       double Output_lines_last_notclamped = 0;
-       double WritebackVInit = 0;
+       const double WritebackVRatio = vba->WritebackVRatio[i];
+       const unsigned int WritebackVTaps = vba->WritebackVTaps[i];
+       const long WritebackDestinationWidth = 
vba->WritebackDestinationWidth[i];
+       const long WritebackDestinationHeight = 
vba->WritebackDestinationHeight[i];
+       const long WritebackSourceHeight = vba->WritebackSourceHeight[i];
+
+       double CalculateWriteBackDelay;
+       double Line_length;
+       double Output_lines_last_notclamped;
+       double WritebackVInit;
 
        WritebackVInit = (WritebackVRatio + WritebackVTaps + 1) / 2;
        Line_length = dml_max((double) WritebackDestinationWidth, 
dml_ceil(WritebackDestinationWidth / 6.0, 1) * WritebackVTaps);
@@ -4562,15 +4538,7 @@ void dml30_ModeSupportAndSystemConfigurationFull(struct 
display_mode_lib *mode_l
                                if (v->BlendingAndTiming[k] == k) {
                                        if (v->WritebackEnable[k] == true) {
                                                v->WritebackDelayTime[k] = 
v->WritebackLatency
-                                                               + 
CalculateWriteBackDelay(
-                                                                               
v->WritebackPixelFormat[k],
-                                                                               
v->WritebackHRatio[k],
-                                                                               
v->WritebackVRatio[k],
-                                                                               
v->WritebackVTaps[k],
-                                                                               
v->WritebackDestinationWidth[k],
-                                                                               
v->WritebackDestinationHeight[k],
-                                                                               
v->WritebackSourceHeight[k],
-                                                                               
v->HTotal[k]) / v->RequiredDISPCLK[i][j];
+                                                       + 
dml30_CalculateWriteBackDelay(v, k, v->HTotal[k]) / v->RequiredDISPCLK[i][j];
                                        } else {
                                                v->WritebackDelayTime[k] = 0.0;
                                        }
@@ -4579,15 +4547,7 @@ void dml30_ModeSupportAndSystemConfigurationFull(struct 
display_mode_lib *mode_l
                                                        
v->WritebackDelayTime[k] = dml_max(
                                                                        
v->WritebackDelayTime[k],
                                                                        
v->WritebackLatency
-                                                                               
        + CalculateWriteBackDelay(
-                                                                               
                        v->WritebackPixelFormat[m],
-                                                                               
                        v->WritebackHRatio[m],
-                                                                               
                        v->WritebackVRatio[m],
-                                                                               
                        v->WritebackVTaps[m],
-                                                                               
                        v->WritebackDestinationWidth[m],
-                                                                               
                        v->WritebackDestinationHeight[m],
-                                                                               
                        v->WritebackSourceHeight[m],
-                                                                               
                        v->HTotal[m]) / v->RequiredDISPCLK[i][j]);
+                                                                       + 
dml30_CalculateWriteBackDelay(v, m, v->HTotal[m]) / v->RequiredDISPCLK[i][j]);
                                                }
                                        }
                                }
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 338db0cac8c3..8a641fd855fb 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
@@ -258,15 +258,7 @@ static void CalculateFlipSchedule(
                double PDEAndMetaPTEBytesPerFrame,
                double MetaRowBytes,
                double DPTEBytesPerRow);
-static double CalculateWriteBackDelay(
-               enum source_format_class WritebackPixelFormat,
-               double WritebackHRatio,
-               double WritebackVRatio,
-               unsigned int WritebackVTaps,
-               int WritebackDestinationWidth,
-               int WritebackDestinationHeight,
-               int WritebackSourceHeight,
-               unsigned int HTotal);
+double dml30_CalculateWriteBackDelay(struct vba_vars_st *vba, unsigned int i, 
unsigned int HTotal);
 
 static void CalculateVupdateAndDynamicMetadataParameters(
                int MaxInterDCNTileRepeaters,
@@ -2508,15 +2500,7 @@ static void 
DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerforman
                if (v->BlendingAndTiming[k] == k) {
                        if (v->WritebackEnable[k] == true) {
                                v->WritebackDelay[v->VoltageLevel][k] = 
v->WritebackLatency
-                                               + CalculateWriteBackDelay(
-                                                               
v->WritebackPixelFormat[k],
-                                                               
v->WritebackHRatio[k],
-                                                               
v->WritebackVRatio[k],
-                                                               
v->WritebackVTaps[k],
-                                                               
v->WritebackDestinationWidth[k],
-                                                               
v->WritebackDestinationHeight[k],
-                                                               
v->WritebackSourceHeight[k],
-                                                               v->HTotal[k]) / 
v->DISPCLK;
+                                       + dml30_CalculateWriteBackDelay(v, k, 
v->HTotal[k]) / v->DISPCLK;
                        } else
                                v->WritebackDelay[v->VoltageLevel][k] = 0;
                        for (j = 0; j < v->NumberOfActivePlanes; ++j) {
@@ -2524,15 +2508,7 @@ static void 
DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerforman
                                        v->WritebackDelay[v->VoltageLevel][k] = 
dml_max(
                                                        
v->WritebackDelay[v->VoltageLevel][k],
                                                        v->WritebackLatency
-                                                                       + 
CalculateWriteBackDelay(
-                                                                               
        v->WritebackPixelFormat[j],
-                                                                               
        v->WritebackHRatio[j],
-                                                                               
        v->WritebackVRatio[j],
-                                                                               
        v->WritebackVTaps[j],
-                                                                               
        v->WritebackDestinationWidth[j],
-                                                                               
        v->WritebackDestinationHeight[j],
-                                                                               
        v->WritebackSourceHeight[j],
-                                                                               
        v->HTotal[k]) / v->DISPCLK);
+                                                       + 
dml30_CalculateWriteBackDelay(v, j, v->HTotal[k]) / v->DISPCLK);
                                }
                        }
                }
@@ -3367,32 +3343,6 @@ double dml31_CalculateWriteBackDISPCLK(
        return dml_max3(DISPCLK_H, DISPCLK_V, DISPCLK_HB);
 }
 
-static double CalculateWriteBackDelay(
-               enum source_format_class WritebackPixelFormat,
-               double WritebackHRatio,
-               double WritebackVRatio,
-               unsigned int WritebackVTaps,
-               int WritebackDestinationWidth,
-               int WritebackDestinationHeight,
-               int WritebackSourceHeight,
-               unsigned int HTotal)
-{
-       double CalculateWriteBackDelay;
-       double Line_length;
-       double Output_lines_last_notclamped;
-       double WritebackVInit;
-
-       WritebackVInit = (WritebackVRatio + WritebackVTaps + 1) / 2;
-       Line_length = dml_max((double) WritebackDestinationWidth, 
dml_ceil(WritebackDestinationWidth / 6.0, 1) * WritebackVTaps);
-       Output_lines_last_notclamped = WritebackDestinationHeight - 1 - 
dml_ceil((WritebackSourceHeight - WritebackVInit) / WritebackVRatio, 1);
-       if (Output_lines_last_notclamped < 0) {
-               CalculateWriteBackDelay = 0;
-       } else {
-               CalculateWriteBackDelay = Output_lines_last_notclamped * 
Line_length + (HTotal - WritebackDestinationWidth) + 80;
-       }
-       return CalculateWriteBackDelay;
-}
-
 static void CalculateVupdateAndDynamicMetadataParameters(
                int MaxInterDCNTileRepeaters,
                double DPPCLK,
@@ -4837,15 +4787,7 @@ void dml31_ModeSupportAndSystemConfigurationFull(struct 
display_mode_lib *mode_l
                                if (v->BlendingAndTiming[k] == k) {
                                        if (v->WritebackEnable[k] == true) {
                                                v->WritebackDelayTime[k] = 
v->WritebackLatency
-                                                               + 
CalculateWriteBackDelay(
-                                                                               
v->WritebackPixelFormat[k],
-                                                                               
v->WritebackHRatio[k],
-                                                                               
v->WritebackVRatio[k],
-                                                                               
v->WritebackVTaps[k],
-                                                                               
v->WritebackDestinationWidth[k],
-                                                                               
v->WritebackDestinationHeight[k],
-                                                                               
v->WritebackSourceHeight[k],
-                                                                               
v->HTotal[k]) / v->RequiredDISPCLK[i][j];
+                                                       + 
dml30_CalculateWriteBackDelay(v, k, v->HTotal[k]) / v->RequiredDISPCLK[i][j];
                                        } else {
                                                v->WritebackDelayTime[k] = 0.0;
                                        }
@@ -4854,15 +4796,7 @@ void dml31_ModeSupportAndSystemConfigurationFull(struct 
display_mode_lib *mode_l
                                                        
v->WritebackDelayTime[k] = dml_max(
                                                                        
v->WritebackDelayTime[k],
                                                                        
v->WritebackLatency
-                                                                               
        + CalculateWriteBackDelay(
-                                                                               
                        v->WritebackPixelFormat[m],
-                                                                               
                        v->WritebackHRatio[m],
-                                                                               
                        v->WritebackVRatio[m],
-                                                                               
                        v->WritebackVTaps[m],
-                                                                               
                        v->WritebackDestinationWidth[m],
-                                                                               
                        v->WritebackDestinationHeight[m],
-                                                                               
                        v->WritebackSourceHeight[m],
-                                                                               
                        v->HTotal[m]) / v->RequiredDISPCLK[i][j]);
+                                                                       + 
dml30_CalculateWriteBackDelay(v, m, v->HTotal[m]) / v->RequiredDISPCLK[i][j]);
                                                }
                                        }
                                }
diff --git a/drivers/gpu/drm/amd/display/dc/dml/dcn314/display_mode_vba_314.c 
b/drivers/gpu/drm/amd/display/dc/dml/dcn314/display_mode_vba_314.c
index e17b253208cf..7c448eb09dbd 100644
--- a/drivers/gpu/drm/amd/display/dc/dml/dcn314/display_mode_vba_314.c
+++ b/drivers/gpu/drm/amd/display/dc/dml/dcn314/display_mode_vba_314.c
@@ -272,15 +272,7 @@ static void CalculateFlipSchedule(
                double PDEAndMetaPTEBytesPerFrame,
                double MetaRowBytes,
                double DPTEBytesPerRow);
-static double CalculateWriteBackDelay(
-               enum source_format_class WritebackPixelFormat,
-               double WritebackHRatio,
-               double WritebackVRatio,
-               unsigned int WritebackVTaps,
-               int WritebackDestinationWidth,
-               int WritebackDestinationHeight,
-               int WritebackSourceHeight,
-               unsigned int HTotal);
+double dml30_CalculateWriteBackDelay(struct vba_vars_st *vba, unsigned int i, 
unsigned int HTotal);
 
 static void CalculateVupdateAndDynamicMetadataParameters(
                int MaxInterDCNTileRepeaters,
@@ -2532,15 +2524,7 @@ static void 
DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerforman
                if (v->BlendingAndTiming[k] == k) {
                        if (v->WritebackEnable[k] == true) {
                                v->WritebackDelay[v->VoltageLevel][k] = 
v->WritebackLatency
-                                               + CalculateWriteBackDelay(
-                                                               
v->WritebackPixelFormat[k],
-                                                               
v->WritebackHRatio[k],
-                                                               
v->WritebackVRatio[k],
-                                                               
v->WritebackVTaps[k],
-                                                               
v->WritebackDestinationWidth[k],
-                                                               
v->WritebackDestinationHeight[k],
-                                                               
v->WritebackSourceHeight[k],
-                                                               v->HTotal[k]) / 
v->DISPCLK;
+                                       + dml30_CalculateWriteBackDelay(v, k, 
v->HTotal[k]) / v->DISPCLK;
                        } else
                                v->WritebackDelay[v->VoltageLevel][k] = 0;
                        for (j = 0; j < v->NumberOfActivePlanes; ++j) {
@@ -2548,15 +2532,7 @@ static void 
DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerforman
                                        v->WritebackDelay[v->VoltageLevel][k] = 
dml_max(
                                                        
v->WritebackDelay[v->VoltageLevel][k],
                                                        v->WritebackLatency
-                                                                       + 
CalculateWriteBackDelay(
-                                                                               
        v->WritebackPixelFormat[j],
-                                                                               
        v->WritebackHRatio[j],
-                                                                               
        v->WritebackVRatio[j],
-                                                                               
        v->WritebackVTaps[j],
-                                                                               
        v->WritebackDestinationWidth[j],
-                                                                               
        v->WritebackDestinationHeight[j],
-                                                                               
        v->WritebackSourceHeight[j],
-                                                                               
        v->HTotal[k]) / v->DISPCLK);
+                                                       + 
dml30_CalculateWriteBackDelay(v, j, v->HTotal[k]) / v->DISPCLK);
                                }
                        }
                }
@@ -3479,32 +3455,6 @@ double dml314_CalculateWriteBackDISPCLK(
        return dml_max3(DISPCLK_H, DISPCLK_V, DISPCLK_HB);
 }
 
-static double CalculateWriteBackDelay(
-               enum source_format_class WritebackPixelFormat,
-               double WritebackHRatio,
-               double WritebackVRatio,
-               unsigned int WritebackVTaps,
-               int WritebackDestinationWidth,
-               int WritebackDestinationHeight,
-               int WritebackSourceHeight,
-               unsigned int HTotal)
-{
-       double CalculateWriteBackDelay;
-       double Line_length;
-       double Output_lines_last_notclamped;
-       double WritebackVInit;
-
-       WritebackVInit = (WritebackVRatio + WritebackVTaps + 1) / 2;
-       Line_length = dml_max((double) WritebackDestinationWidth, 
dml_ceil(WritebackDestinationWidth / 6.0, 1) * WritebackVTaps);
-       Output_lines_last_notclamped = WritebackDestinationHeight - 1 - 
dml_ceil((WritebackSourceHeight - WritebackVInit) / WritebackVRatio, 1);
-       if (Output_lines_last_notclamped < 0) {
-               CalculateWriteBackDelay = 0;
-       } else {
-               CalculateWriteBackDelay = Output_lines_last_notclamped * 
Line_length + (HTotal - WritebackDestinationWidth) + 80;
-       }
-       return CalculateWriteBackDelay;
-}
-
 static void CalculateVupdateAndDynamicMetadataParameters(
                int MaxInterDCNTileRepeaters,
                double DPPCLK,
@@ -4951,15 +4901,7 @@ void dml314_ModeSupportAndSystemConfigurationFull(struct 
display_mode_lib *mode_
                                if (v->BlendingAndTiming[k] == k) {
                                        if (v->WritebackEnable[k] == true) {
                                                v->WritebackDelayTime[k] = 
v->WritebackLatency
-                                                               + 
CalculateWriteBackDelay(
-                                                                               
v->WritebackPixelFormat[k],
-                                                                               
v->WritebackHRatio[k],
-                                                                               
v->WritebackVRatio[k],
-                                                                               
v->WritebackVTaps[k],
-                                                                               
v->WritebackDestinationWidth[k],
-                                                                               
v->WritebackDestinationHeight[k],
-                                                                               
v->WritebackSourceHeight[k],
-                                                                               
v->HTotal[k]) / v->RequiredDISPCLK[i][j];
+                                                       + 
dml30_CalculateWriteBackDelay(v, k, v->HTotal[k]) / v->RequiredDISPCLK[i][j];
                                        } else {
                                                v->WritebackDelayTime[k] = 0.0;
                                        }
@@ -4968,15 +4910,7 @@ void dml314_ModeSupportAndSystemConfigurationFull(struct 
display_mode_lib *mode_
                                                        
v->WritebackDelayTime[k] = dml_max(
                                                                        
v->WritebackDelayTime[k],
                                                                        
v->WritebackLatency
-                                                                               
        + CalculateWriteBackDelay(
-                                                                               
                        v->WritebackPixelFormat[m],
-                                                                               
                        v->WritebackHRatio[m],
-                                                                               
                        v->WritebackVRatio[m],
-                                                                               
                        v->WritebackVTaps[m],
-                                                                               
                        v->WritebackDestinationWidth[m],
-                                                                               
                        v->WritebackDestinationHeight[m],
-                                                                               
                        v->WritebackSourceHeight[m],
-                                                                               
                        v->HTotal[m]) / v->RequiredDISPCLK[i][j]);
+                                                                       + 
dml30_CalculateWriteBackDelay(v, m, v->HTotal[m]) / v->RequiredDISPCLK[i][j]);
                                                }
                                        }
                                }
diff --git a/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_32.c 
b/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_32.c
index 75be1e1ce543..1255586a97f4 100644
--- a/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_32.c
+++ b/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_32.c
@@ -597,15 +597,7 @@ static void 
DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerforman
                if (mode_lib->vba.BlendingAndTiming[k] == k) {
                        if (mode_lib->vba.WritebackEnable[k] == true) {
                                
v->WritebackDelay[mode_lib->vba.VoltageLevel][k] = 
mode_lib->vba.WritebackLatency
-                                               + dml32_CalculateWriteBackDelay(
-                                                               
mode_lib->vba.WritebackPixelFormat[k],
-                                                               
mode_lib->vba.WritebackHRatio[k],
-                                                               
mode_lib->vba.WritebackVRatio[k],
-                                                               
mode_lib->vba.WritebackVTaps[k],
-                                                               
mode_lib->vba.WritebackDestinationWidth[k],
-                                                               
mode_lib->vba.WritebackDestinationHeight[k],
-                                                               
mode_lib->vba.WritebackSourceHeight[k],
-                                                               
mode_lib->vba.HTotal[k]) / mode_lib->vba.DISPCLK;
+                                       + dml30_CalculateWriteBackDelay(v, k, 
v->HTotal[k]) / mode_lib->vba.DISPCLK;
                        } else
                                
v->WritebackDelay[mode_lib->vba.VoltageLevel][k] = 0;
                        for (j = 0; j < mode_lib->vba.NumberOfActiveSurfaces; 
++j) {
@@ -614,15 +606,7 @@ static void 
DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerforman
                                        
v->WritebackDelay[mode_lib->vba.VoltageLevel][k] =
                                                
dml_max(v->WritebackDelay[mode_lib->vba.VoltageLevel][k],
                                                mode_lib->vba.WritebackLatency +
-                                               dml32_CalculateWriteBackDelay(
-                                                               
mode_lib->vba.WritebackPixelFormat[j],
-                                                               
mode_lib->vba.WritebackHRatio[j],
-                                                               
mode_lib->vba.WritebackVRatio[j],
-                                                               
mode_lib->vba.WritebackVTaps[j],
-                                                               
mode_lib->vba.WritebackDestinationWidth[j],
-                                                               
mode_lib->vba.WritebackDestinationHeight[j],
-                                                               
mode_lib->vba.WritebackSourceHeight[j],
-                                                               
mode_lib->vba.HTotal[k]) / mode_lib->vba.DISPCLK);
+                                                       
dml30_CalculateWriteBackDelay(v, j, v->HTotal[k]) / mode_lib->vba.DISPCLK);
                                }
                        }
                }
@@ -2866,16 +2850,7 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct 
display_mode_lib *mode_l
                                        if (mode_lib->vba.WritebackEnable[k] == 
true) {
                                                
mode_lib->vba.WritebackDelayTime[k] =
                                                        
mode_lib->vba.WritebackLatency
-                                               + dml32_CalculateWriteBackDelay(
-                                                       
mode_lib->vba.WritebackPixelFormat[k],
-                                                       
mode_lib->vba.WritebackHRatio[k],
-                                                       
mode_lib->vba.WritebackVRatio[k],
-                                                       
mode_lib->vba.WritebackVTaps[k],
-                                                       
mode_lib->vba.WritebackDestinationWidth[k],
-                                                       
mode_lib->vba.WritebackDestinationHeight[k],
-                                                       
mode_lib->vba.WritebackSourceHeight[k],
-                                                       mode_lib->vba.HTotal[k])
-                                                       / 
mode_lib->vba.RequiredDISPCLK[i][j];
+                                                       + 
dml30_CalculateWriteBackDelay(v, k, v->HTotal[k]) / 
mode_lib->vba.RequiredDISPCLK[i][j];
                                        } else {
                                                
mode_lib->vba.WritebackDelayTime[k] = 0.0;
                                        }
@@ -2885,16 +2860,7 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct 
display_mode_lib *mode_l
                                                        
mode_lib->vba.WritebackDelayTime[k] =
                                                                
dml_max(mode_lib->vba.WritebackDelayTime[k],
                                                                        
mode_lib->vba.WritebackLatency
-                                                               + 
dml32_CalculateWriteBackDelay(
-                                                                       
mode_lib->vba.WritebackPixelFormat[m],
-                                                                       
mode_lib->vba.WritebackHRatio[m],
-                                                                       
mode_lib->vba.WritebackVRatio[m],
-                                                                       
mode_lib->vba.WritebackVTaps[m],
-                                                                       
mode_lib->vba.WritebackDestinationWidth[m],
-                                                                       
mode_lib->vba.WritebackDestinationHeight[m],
-                                                                       
mode_lib->vba.WritebackSourceHeight[m],
-                                                                       
mode_lib->vba.HTotal[m]) /
-                                                                       
mode_lib->vba.RequiredDISPCLK[i][j]);
+                                                                       + 
dml30_CalculateWriteBackDelay(v, m, v->HTotal[m]) / 
mode_lib->vba.RequiredDISPCLK[i][j]);
                                                }
                                        }
                                }
diff --git 
a/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.c 
b/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.c
index ad66e241f9ae..f5bc9c61bcd5 100644
--- a/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.c
+++ b/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.c
@@ -2882,36 +2882,6 @@ void dml32_CalculateDCFCLKDeepSleep(
 #endif
 } // CalculateDCFCLKDeepSleep
 
-double dml32_CalculateWriteBackDelay(
-               enum source_format_class WritebackPixelFormat,
-               double WritebackHRatio,
-               double WritebackVRatio,
-               unsigned int WritebackVTaps,
-               unsigned int         WritebackDestinationWidth,
-               unsigned int         WritebackDestinationHeight,
-               unsigned int         WritebackSourceHeight,
-               unsigned int HTotal)
-{
-       double CalculateWriteBackDelay;
-       double Line_length;
-       double Output_lines_last_notclamped;
-       double WritebackVInit;
-
-       WritebackVInit = (WritebackVRatio + WritebackVTaps + 1) / 2;
-       Line_length = dml_max((double) WritebackDestinationWidth,
-                       dml_ceil((double)WritebackDestinationWidth / 6.0, 1.0) 
* WritebackVTaps);
-       Output_lines_last_notclamped = WritebackDestinationHeight - 1 -
-                       dml_ceil(((double)WritebackSourceHeight -
-                                       (double) WritebackVInit) / 
(double)WritebackVRatio, 1.0);
-       if (Output_lines_last_notclamped < 0) {
-               CalculateWriteBackDelay = 0;
-       } else {
-               CalculateWriteBackDelay = Output_lines_last_notclamped * 
Line_length +
-                               (HTotal - WritebackDestinationWidth) + 80;
-       }
-       return CalculateWriteBackDelay;
-}
-
 void dml32_UseMinimumDCFCLK(
                enum dm_use_mall_for_pstate_change_mode 
UseMALLForPStateChange[],
                bool DRRDisplay[],
diff --git 
a/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.h 
b/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.h
index 55cead0d4237..2fa91527f08b 100644
--- a/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.h
+++ b/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.h
@@ -572,15 +572,7 @@ void dml32_CalculateDCFCLKDeepSleep(
                /* Output */
                double *DCFClkDeepSleep);
 
-double dml32_CalculateWriteBackDelay(
-               enum source_format_class WritebackPixelFormat,
-               double WritebackHRatio,
-               double WritebackVRatio,
-               unsigned int WritebackVTaps,
-               unsigned int         WritebackDestinationWidth,
-               unsigned int         WritebackDestinationHeight,
-               unsigned int         WritebackSourceHeight,
-               unsigned int HTotal);
+double dml30_CalculateWriteBackDelay(struct vba_vars_st *vba, unsigned int i, 
unsigned int HTotal);
 
 void dml32_UseMinimumDCFCLK(
                enum dm_use_mall_for_pstate_change_mode 
UseMALLForPStateChange[],
-- 
2.25.1

Reply via email to