From: Wesley Chalmers <wesley.chalm...@amd.com>

[ Upstream commit e4e3678260e9734f6f41b4325aac0b171833a618 ]

[WHY]
For DCN30 and later, there is no data in DML arrays indexed by state at
index num_states.

Signed-off-by: Wesley Chalmers <wesley.chalm...@amd.com>
Reviewed-by: Dmytro Laktyushkin <dmytro.laktyush...@amd.com>
Acked-by: Stylon Wang <stylon.w...@amd.com>
Tested-by: Daniel Wheeler <daniel.whee...@amd.com>
Signed-off-by: Alex Deucher <alexander.deuc...@amd.com>
Signed-off-by: Sasha Levin <sas...@kernel.org>
---
 .../amd/display/dc/dml/dcn30/display_mode_vba_30.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

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 af7d57602b2c..db6bb7ea5316 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
@@ -2053,7 +2053,7 @@ static void 
DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerforman
                        v->DISPCLKWithoutRamping,
                        v->DISPCLKDPPCLKVCOSpeed);
        v->MaxDispclkRoundedToDFSGranularity = RoundToDFSGranularityDown(
-                       
v->soc.clock_limits[mode_lib->soc.num_states].dispclk_mhz,
+                       v->soc.clock_limits[mode_lib->soc.num_states - 
1].dispclk_mhz,
                        v->DISPCLKDPPCLKVCOSpeed);
        if (v->DISPCLKWithoutRampingRoundedToDFSGranularity
                        > v->MaxDispclkRoundedToDFSGranularity) {
@@ -3958,20 +3958,20 @@ void dml30_ModeSupportAndSystemConfigurationFull(struct 
display_mode_lib *mode_l
                        for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
                                v->PlaneRequiredDISPCLKWithoutODMCombine = 
v->PixelClock[k] * (1.0 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100.0)
                                                * (1.0 + 
v->DISPCLKRampingMargin / 100.0);
-                               if ((v->PlaneRequiredDISPCLKWithoutODMCombine 
>= v->MaxDispclk[i] && v->MaxDispclk[i] == 
v->MaxDispclk[mode_lib->soc.num_states]
-                                               && v->MaxDppclk[i] == 
v->MaxDppclk[mode_lib->soc.num_states])) {
+                               if ((v->PlaneRequiredDISPCLKWithoutODMCombine 
>= v->MaxDispclk[i] && v->MaxDispclk[i] == 
v->MaxDispclk[mode_lib->soc.num_states - 1]
+                                               && v->MaxDppclk[i] == 
v->MaxDppclk[mode_lib->soc.num_states - 1])) {
                                        
v->PlaneRequiredDISPCLKWithoutODMCombine = v->PixelClock[k] * (1 + 
v->DISPCLKDPPCLKDSCCLKDownSpreading / 100.0);
                                }
                                v->PlaneRequiredDISPCLKWithODMCombine2To1 = 
v->PixelClock[k] / 2 * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100.0)
                                                * (1 + v->DISPCLKRampingMargin 
/ 100.0);
-                               if ((v->PlaneRequiredDISPCLKWithODMCombine2To1 
>= v->MaxDispclk[i] && v->MaxDispclk[i] == 
v->MaxDispclk[mode_lib->soc.num_states]
-                                               && v->MaxDppclk[i] == 
v->MaxDppclk[mode_lib->soc.num_states])) {
+                               if ((v->PlaneRequiredDISPCLKWithODMCombine2To1 
>= v->MaxDispclk[i] && v->MaxDispclk[i] == 
v->MaxDispclk[mode_lib->soc.num_states - 1]
+                                               && v->MaxDppclk[i] == 
v->MaxDppclk[mode_lib->soc.num_states - 1])) {
                                        
v->PlaneRequiredDISPCLKWithODMCombine2To1 = v->PixelClock[k] / 2 * (1 + 
v->DISPCLKDPPCLKDSCCLKDownSpreading / 100.0);
                                }
                                v->PlaneRequiredDISPCLKWithODMCombine4To1 = 
v->PixelClock[k] / 4 * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100.0)
                                                * (1 + v->DISPCLKRampingMargin 
/ 100.0);
-                               if ((v->PlaneRequiredDISPCLKWithODMCombine4To1 
>= v->MaxDispclk[i] && v->MaxDispclk[i] == 
v->MaxDispclk[mode_lib->soc.num_states]
-                                               && v->MaxDppclk[i] == 
v->MaxDppclk[mode_lib->soc.num_states])) {
+                               if ((v->PlaneRequiredDISPCLKWithODMCombine4To1 
>= v->MaxDispclk[i] && v->MaxDispclk[i] == 
v->MaxDispclk[mode_lib->soc.num_states - 1]
+                                               && v->MaxDppclk[i] == 
v->MaxDppclk[mode_lib->soc.num_states - 1])) {
                                        
v->PlaneRequiredDISPCLKWithODMCombine4To1 = v->PixelClock[k] / 4 * (1 + 
v->DISPCLKDPPCLKDSCCLKDownSpreading / 100.0);
                                }
 
-- 
2.30.2

Reply via email to