]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
drm/amd/display: Create patch bounding box function for isolate FPU
authorRodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Thu, 14 Jul 2022 20:13:10 +0000 (16:13 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 25 Jul 2022 21:16:20 +0000 (17:16 -0400)
In the DCN30 resource, we have a small patch to the bounding box struct;
this patch uses FPU operations. This commit moves that specific part to
its function under the DML folder.

Reviewed-by: Harry Wentland <Harry.Wentland@amd.com>
Acked-by: Alex Hung <alex.hung@amd.com>
Signed-off-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/dcn30/dcn30_resource.c
drivers/gpu/drm/amd/display/dc/dml/dcn30/dcn30_fpu.c
drivers/gpu/drm/amd/display/dc/dml/dcn30/dcn30_fpu.h

index e5e54097a07dd6f6adb4e312700d4d9fdb8b0229..8bdf3573610fb2b4039fdfaccddccbde34de4182 100644 (file)
@@ -1521,26 +1521,11 @@ static bool init_soc_bounding_box(struct dc *dc,
        loaded_ip->max_num_otg = pool->base.res_cap->num_timing_generator;
        loaded_ip->max_num_dpp = pool->base.pipe_count;
        loaded_ip->clamp_min_dcfclk = dc->config.clamp_min_dcfclk;
-
-       DC_FP_START();
        dcn20_patch_bounding_box(dc, loaded_bb);
+       DC_FP_START();
+       patch_dcn30_soc_bounding_box(dc, &dcn3_0_soc);
        DC_FP_END();
 
-       if (dc->ctx->dc_bios->funcs->get_soc_bb_info) {
-               struct bp_soc_bb_info bb_info = {0};
-
-               if (dc->ctx->dc_bios->funcs->get_soc_bb_info(dc->ctx->dc_bios, &bb_info) == BP_RESULT_OK) {
-                       if (bb_info.dram_clock_change_latency_100ns > 0)
-                               dcn3_0_soc.dram_clock_change_latency_us = bb_info.dram_clock_change_latency_100ns * 10;
-
-                       if (bb_info.dram_sr_enter_exit_latency_100ns > 0)
-                               dcn3_0_soc.sr_enter_plus_exit_time_us = bb_info.dram_sr_enter_exit_latency_100ns * 10;
-
-                       if (bb_info.dram_sr_exit_latency_100ns > 0)
-                               dcn3_0_soc.sr_exit_time_us = bb_info.dram_sr_exit_latency_100ns * 10;
-               }
-       }
-
        return true;
 }
 
index 9e32b45b63dc7e7bc5a324cc62ec8ce622e96b94..6dd9a70314c0e4229b63624f759ab042173b1606 100644 (file)
@@ -721,3 +721,23 @@ void dcn3_fpu_build_wm_range_table(struct clk_mgr *base)
        base->bw_params->wm_table.nv_entries[WM_D].pmfw_breakdown.min_uclk = min_uclk_mhz;
        base->bw_params->wm_table.nv_entries[WM_D].pmfw_breakdown.max_uclk = 0xFFFF;
 }
+
+void patch_dcn30_soc_bounding_box(struct dc *dc, struct _vcs_dpi_soc_bounding_box_st *dcn3_0_ip)
+{
+       dc_assert_fp_enabled();
+
+       if (dc->ctx->dc_bios->funcs->get_soc_bb_info) {
+               struct bp_soc_bb_info bb_info = {0};
+
+               if (dc->ctx->dc_bios->funcs->get_soc_bb_info(dc->ctx->dc_bios, &bb_info) == BP_RESULT_OK) {
+                       if (bb_info.dram_clock_change_latency_100ns > 0)
+                               dcn3_0_soc.dram_clock_change_latency_us = bb_info.dram_clock_change_latency_100ns * 10;
+
+                       if (bb_info.dram_sr_enter_exit_latency_100ns > 0)
+                               dcn3_0_soc.sr_enter_plus_exit_time_us = bb_info.dram_sr_enter_exit_latency_100ns * 10;
+
+                       if (bb_info.dram_sr_exit_latency_100ns > 0)
+                               dcn3_0_soc.sr_exit_time_us = bb_info.dram_sr_exit_latency_100ns * 10;
+               }
+       }
+}
index 3e4221af1c1ef14c750c94e76f2c6106f7dc2682..cab864095ce7e05f7a9b6a0699f3577c89bd3152 100644 (file)
@@ -71,4 +71,6 @@ int dcn30_find_dummy_latency_index_for_fw_based_mclk_switch(struct dc *dc,
 
 void dcn3_fpu_build_wm_range_table(struct clk_mgr *base);
 
+void patch_dcn30_soc_bounding_box(struct dc *dc, struct _vcs_dpi_soc_bounding_box_st *dcn3_0_ip);
+
 #endif /* __DCN30_FPU_H__*/