]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/amd/display: move memory latency update to dml for dcn42
authorDmytro Laktyushkin <dmytro.laktyushkin@amd.com>
Wed, 25 Mar 2026 21:07:03 +0000 (17:07 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 17 Apr 2026 19:21:33 +0000 (15:21 -0400)
Memory latencies are soc specific and should be part of dml soc
bounding box. This change removes them from clk_mgr and has
latency update happen based on memory type when dml socbb is being
updated.

Reviewed-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Reviewed-by: Charlene Liu <charlene.liu@amd.com>
Signed-off-by: Dmytro Laktyushkin <dmytro.laktyushkin@amd.com>
Signed-off-by: Roman Li <roman.li@amd.com>
Tested-by: Dan Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/clk_mgr/dcn42/dcn42_clk_mgr.c
drivers/gpu/drm/amd/display/dc/soc_and_ip_translator/dcn42/dcn42_soc_and_ip_translator.c

index ec888aed207d2ad7056ec9355ad7c1c3d72b12b9..6a97ce69a5620a08c981b71bce49a5749511278d 100644 (file)
@@ -611,80 +611,6 @@ static struct clk_bw_params dcn42_bw_params = {
 
 };
 
-static struct wm_table ddr5_wm_table = {
-       .entries = {
-               {
-                       .wm_inst = WM_A,
-                       .wm_type = WM_TYPE_PSTATE_CHG,
-                       .pstate_latency_us = 11.72,
-                       .sr_exit_time_us = 28.0,
-                       .sr_enter_plus_exit_time_us = 30.0,
-                       .valid = true,
-               },
-               {
-                       .wm_inst = WM_B,
-                       .wm_type = WM_TYPE_PSTATE_CHG,
-                       .pstate_latency_us = 11.72,
-                       .sr_exit_time_us = 28.0,
-                       .sr_enter_plus_exit_time_us = 30.0,
-                       .valid = true,
-               },
-               {
-                       .wm_inst = WM_C,
-                       .wm_type = WM_TYPE_PSTATE_CHG,
-                       .pstate_latency_us = 11.72,
-                       .sr_exit_time_us = 28.0,
-                       .sr_enter_plus_exit_time_us = 30.0,
-                       .valid = true,
-               },
-               {
-                       .wm_inst = WM_D,
-                       .wm_type = WM_TYPE_PSTATE_CHG,
-                       .pstate_latency_us = 11.72,
-                       .sr_exit_time_us = 28.0,
-                       .sr_enter_plus_exit_time_us = 30.0,
-                       .valid = true,
-               },
-       }
-};
-
-static struct wm_table lpddr5_wm_table = {
-       .entries = {
-               {
-                       .wm_inst = WM_A,
-                       .wm_type = WM_TYPE_PSTATE_CHG,
-                       .pstate_latency_us = 11.65333,
-                       .sr_exit_time_us = 28.0,
-                       .sr_enter_plus_exit_time_us = 30.0,
-                       .valid = true,
-               },
-               {
-                       .wm_inst = WM_B,
-                       .wm_type = WM_TYPE_PSTATE_CHG,
-                       .pstate_latency_us = 11.65333,
-                       .sr_exit_time_us = 28.0,
-                       .sr_enter_plus_exit_time_us = 30.0,
-                       .valid = true,
-               },
-               {
-                       .wm_inst = WM_C,
-                       .wm_type = WM_TYPE_PSTATE_CHG,
-                       .pstate_latency_us = 11.65333,
-                       .sr_exit_time_us = 28.0,
-                       .sr_enter_plus_exit_time_us = 30.0,
-                       .valid = true,
-               },
-               {
-                       .wm_inst = WM_D,
-                       .wm_type = WM_TYPE_PSTATE_CHG,
-                       .pstate_latency_us = 11.65333,
-                       .sr_exit_time_us = 28.0,
-                       .sr_enter_plus_exit_time_us = 30.0,
-                       .valid = true,
-               },
-       }
-};
-
 struct dcn42_ss_info_table dcn42_ss_info_table = {
        .ss_divider = 1000,
        .ss_percentage = {0, 0, 375, 375, 375}
@@ -1141,10 +1067,6 @@ void dcn42_clk_mgr_construct(
                if (ctx->dc_bios->integrated_info) {
                        clk_mgr->base.base.dentist_vco_freq_khz = ctx->dc_bios->integrated_info->dentist_vco_freq;
 
-                       if (ctx->dc_bios->integrated_info->memory_type == LpDdr5MemType)
-                               dcn42_bw_params.wm_table = lpddr5_wm_table;
-                       else
-                               dcn42_bw_params.wm_table = ddr5_wm_table;
                        dcn42_bw_params.vram_type = ctx->dc_bios->integrated_info->memory_type;
                        dcn42_bw_params.dram_channel_width_bytes = ctx->dc_bios->integrated_info->memory_type == 0x22 ? 8 : 4;
                        dcn42_bw_params.num_channels = ctx->dc_bios->integrated_info->ma_channel_number ? ctx->dc_bios->integrated_info->ma_channel_number : 1;
index 146a6e47934b658cb110db22de440d6450cfc7ee..e723b4d0aff3fffd731aebd4115917b5bdfe32c1 100644 (file)
@@ -155,6 +155,10 @@ static void dcn42_update_soc_bb_with_values_from_clk_mgr(struct dml2_soc_bb *soc
                dcn42_convert_dc_clock_table_to_soc_bb_clock_table(&soc_bb->clk_table, &soc_bb->vmin_limit,
                        dc->clk_mgr->bw_params);
        }
+
+       if (dc->clk_mgr->bw_params->vram_type == Ddr5MemType) {
+               soc_bb->power_management_parameters = dcn42_ddr5_power_management_parameters;
+       }
 }
 
 static void apply_soc_bb_updates(struct dml2_soc_bb *soc_bb, const struct dc *dc, const struct dml2_configuration_options *config)