From: Alexander Chechik <[email protected]>

[Why]
DCN42 was using UClk values instead of MemClk from MemPstateTable, causing
DML to see half the actual DRAM bandwidth on DDR5 systems and reject high
refresh rate modes.

[How]
Change dcn42_init_clocks() to use MemPstateTable[i].MemClk instead of
MemPstateTable[i].UClk for memclk_mhz initialization.

Reviewed-by: Charlene Liu <[email protected]>
Signed-off-by: Alexander Chechik <[email protected]>
Signed-off-by: Chuanyu Tseng <[email protected]>
---
 drivers/gpu/drm/amd/display/dc/clk_mgr/dcn42/dcn42_clk_mgr.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn42/dcn42_clk_mgr.c 
b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn42/dcn42_clk_mgr.c
index 7134d8998efc..24834f89711d 100644
--- a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn42/dcn42_clk_mgr.c
+++ b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn42/dcn42_clk_mgr.c
@@ -1063,7 +1063,7 @@ static void dcn42_get_smu_clocks(struct clk_mgr_internal 
*clk_mgr_int)
                        if (dpm_clks->NumMemPstatesEnabled > 
NUM_MEM_PSTATE_LEVELS)
                                dpm_clks->NumMemPstatesEnabled = 
NUM_MEM_PSTATE_LEVELS;
                        for (i = 0; i < dpm_clks->NumMemPstatesEnabled; i++) {
-                               
clk_mgr_base->bw_params->clk_table.entries[dpm_clks->NumMemPstatesEnabled - 1 - 
i].memclk_mhz = dpm_clks->MemPstateTable[i].UClk;
+                               
clk_mgr_base->bw_params->clk_table.entries[dpm_clks->NumMemPstatesEnabled - 1 - 
i].memclk_mhz = dpm_clks->MemPstateTable[i].MemClk;
                                
clk_mgr_base->bw_params->clk_table.entries[dpm_clks->NumMemPstatesEnabled - 1 - 
i].wck_ratio = dcn42_convert_wck_ratio(dpm_clks->MemPstateTable[i].WckRatio)    
;
                        }
                        
clk_mgr_base->bw_params->clk_table.num_entries_per_clk.num_memclk_levels = 
dpm_clks->NumMemPstatesEnabled;
-- 
2.43.0

Reply via email to