Move get_optimal_ntuple to the FPU code and call it inside
insert_entry_into_table_sorted.

Reviewed-by: Harry Wentland <harry.wentl...@amd.com>
Acked-by: Rodrigo Siqueira <rodrigo.sique...@amd.com>
Signed-off-by: Rodrigo Siqueira <rodrigo.sique...@amd.com>
---
 .../drm/amd/display/dc/dcn32/dcn32_resource.c | 28 -------------------
 .../drm/amd/display/dc/dml/dcn32/dcn32_fpu.c  | 25 +++++++++++++++++
 2 files changed, 25 insertions(+), 28 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/dcn32/dcn32_resource.c 
b/drivers/gpu/drm/amd/display/dc/dcn32/dcn32_resource.c
index 32edb3e5715a..adcc83e6ea55 100644
--- a/drivers/gpu/drm/amd/display/dc/dcn32/dcn32_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/dcn32/dcn32_resource.c
@@ -1956,29 +1956,6 @@ void dcn32_calculate_wm_and_dlg(struct dc *dc, struct 
dc_state *context,
     DC_FP_END();
 }
 
-static void get_optimal_ntuple(struct _vcs_dpi_voltage_scaling_st *entry)
-{
-       if (entry->dcfclk_mhz > 0) {
-               float bw_on_sdp = entry->dcfclk_mhz * 
dcn3_2_soc.return_bus_width_bytes * 
((float)dcn3_2_soc.pct_ideal_sdp_bw_after_urgent / 100);
-
-               entry->fabricclk_mhz = bw_on_sdp / 
(dcn3_2_soc.return_bus_width_bytes * 
((float)dcn3_2_soc.pct_ideal_fabric_bw_after_urgent / 100));
-               entry->dram_speed_mts = bw_on_sdp / (dcn3_2_soc.num_chans *
-                               dcn3_2_soc.dram_channel_width_bytes * 
((float)dcn3_2_soc.pct_ideal_dram_sdp_bw_after_urgent_pixel_only / 100));
-       } else if (entry->fabricclk_mhz > 0) {
-               float bw_on_fabric = entry->fabricclk_mhz * 
dcn3_2_soc.return_bus_width_bytes * 
((float)dcn3_2_soc.pct_ideal_fabric_bw_after_urgent / 100);
-
-               entry->dcfclk_mhz = bw_on_fabric / 
(dcn3_2_soc.return_bus_width_bytes * 
((float)dcn3_2_soc.pct_ideal_sdp_bw_after_urgent / 100));
-               entry->dram_speed_mts = bw_on_fabric / (dcn3_2_soc.num_chans *
-                               dcn3_2_soc.dram_channel_width_bytes * 
((float)dcn3_2_soc.pct_ideal_dram_sdp_bw_after_urgent_pixel_only / 100));
-       } else if (entry->dram_speed_mts > 0) {
-               float bw_on_dram = entry->dram_speed_mts * dcn3_2_soc.num_chans 
*
-                               dcn3_2_soc.dram_channel_width_bytes * 
((float)dcn3_2_soc.pct_ideal_dram_sdp_bw_after_urgent_pixel_only / 100);
-
-               entry->fabricclk_mhz = bw_on_dram / 
(dcn3_2_soc.return_bus_width_bytes * 
((float)dcn3_2_soc.pct_ideal_fabric_bw_after_urgent / 100));
-               entry->dcfclk_mhz = bw_on_dram / 
(dcn3_2_soc.return_bus_width_bytes * 
((float)dcn3_2_soc.pct_ideal_sdp_bw_after_urgent / 100));
-       }
-}
-
 static void remove_entry_from_table_at_index(struct 
_vcs_dpi_voltage_scaling_st *table, unsigned int *num_entries,
                unsigned int index)
 {
@@ -2062,7 +2039,6 @@ static int build_synthetic_soc_states(struct 
clk_bw_params *bw_params,
                entry.fabricclk_mhz = 0;
                entry.dram_speed_mts = 0;
 
-               get_optimal_ntuple(&entry);
                DC_FP_START();
                insert_entry_into_table_sorted(table, num_entries, &entry);
                DC_FP_END();
@@ -2073,7 +2049,6 @@ static int build_synthetic_soc_states(struct 
clk_bw_params *bw_params,
        entry.fabricclk_mhz = 0;
        entry.dram_speed_mts = 0;
 
-       get_optimal_ntuple(&entry);
        DC_FP_START();
        insert_entry_into_table_sorted(table, num_entries, &entry);
        DC_FP_END();
@@ -2084,7 +2059,6 @@ static int build_synthetic_soc_states(struct 
clk_bw_params *bw_params,
                entry.fabricclk_mhz = 0;
                entry.dram_speed_mts = 
bw_params->clk_table.entries[i].memclk_mhz * 16;
 
-               get_optimal_ntuple(&entry);
                DC_FP_START();
                insert_entry_into_table_sorted(table, num_entries, &entry);
                DC_FP_END();
@@ -2097,7 +2071,6 @@ static int build_synthetic_soc_states(struct 
clk_bw_params *bw_params,
                        entry.fabricclk_mhz = 
bw_params->clk_table.entries[i].fclk_mhz;
                        entry.dram_speed_mts = 0;
 
-                       get_optimal_ntuple(&entry);
                        DC_FP_START();
                        insert_entry_into_table_sorted(table, num_entries, 
&entry);
                        DC_FP_END();
@@ -2109,7 +2082,6 @@ static int build_synthetic_soc_states(struct 
clk_bw_params *bw_params,
                entry.fabricclk_mhz = max_fclk_mhz;
                entry.dram_speed_mts = 0;
 
-               get_optimal_ntuple(&entry);
                DC_FP_START();
                insert_entry_into_table_sorted(table, num_entries, &entry);
                DC_FP_END();
diff --git a/drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c 
b/drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c
index 66102db87265..7c60a954737b 100644
--- a/drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c
+++ b/drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c
@@ -353,6 +353,29 @@ static float calculate_net_bw_in_kbytes_sec(struct 
_vcs_dpi_voltage_scaling_st *
        return limiting_bw_kbytes_sec;
 }
 
+static void get_optimal_ntuple(struct _vcs_dpi_voltage_scaling_st *entry)
+{
+       if (entry->dcfclk_mhz > 0) {
+               float bw_on_sdp = entry->dcfclk_mhz * 
dcn3_2_soc.return_bus_width_bytes * 
((float)dcn3_2_soc.pct_ideal_sdp_bw_after_urgent / 100);
+
+               entry->fabricclk_mhz = bw_on_sdp / 
(dcn3_2_soc.return_bus_width_bytes * 
((float)dcn3_2_soc.pct_ideal_fabric_bw_after_urgent / 100));
+               entry->dram_speed_mts = bw_on_sdp / (dcn3_2_soc.num_chans *
+                               dcn3_2_soc.dram_channel_width_bytes * 
((float)dcn3_2_soc.pct_ideal_dram_sdp_bw_after_urgent_pixel_only / 100));
+       } else if (entry->fabricclk_mhz > 0) {
+               float bw_on_fabric = entry->fabricclk_mhz * 
dcn3_2_soc.return_bus_width_bytes * 
((float)dcn3_2_soc.pct_ideal_fabric_bw_after_urgent / 100);
+
+               entry->dcfclk_mhz = bw_on_fabric / 
(dcn3_2_soc.return_bus_width_bytes * 
((float)dcn3_2_soc.pct_ideal_sdp_bw_after_urgent / 100));
+               entry->dram_speed_mts = bw_on_fabric / (dcn3_2_soc.num_chans *
+                               dcn3_2_soc.dram_channel_width_bytes * 
((float)dcn3_2_soc.pct_ideal_dram_sdp_bw_after_urgent_pixel_only / 100));
+       } else if (entry->dram_speed_mts > 0) {
+               float bw_on_dram = entry->dram_speed_mts * dcn3_2_soc.num_chans 
*
+                               dcn3_2_soc.dram_channel_width_bytes * 
((float)dcn3_2_soc.pct_ideal_dram_sdp_bw_after_urgent_pixel_only / 100);
+
+               entry->fabricclk_mhz = bw_on_dram / 
(dcn3_2_soc.return_bus_width_bytes * 
((float)dcn3_2_soc.pct_ideal_fabric_bw_after_urgent / 100));
+               entry->dcfclk_mhz = bw_on_dram / 
(dcn3_2_soc.return_bus_width_bytes * 
((float)dcn3_2_soc.pct_ideal_sdp_bw_after_urgent / 100));
+       }
+}
+
 void insert_entry_into_table_sorted(struct _vcs_dpi_voltage_scaling_st *table,
                                    unsigned int *num_entries,
                                    struct _vcs_dpi_voltage_scaling_st *entry)
@@ -363,6 +386,8 @@ void insert_entry_into_table_sorted(struct 
_vcs_dpi_voltage_scaling_st *table,
 
        dc_assert_fp_enabled();
 
+       get_optimal_ntuple(entry);
+
        if (*num_entries == 0) {
                table[0] = *entry;
                (*num_entries)++;
-- 
2.37.0

Reply via email to