From: Roman Li <[email protected]>

This aligning commit combines:
- fix dcn42 det programming)
- fix missing dcn42 pointers
- fix SDPIF_Request_Rate_Limit programming value

V2: Add back dchvm_init for DCN42

Reviewed-by: Alex Hung <[email protected]>
Reviewed-by: Leo Chen <[email protected]>
Signed-off-by: Roman Li <[email protected]>
Signed-off-by: Chuanyu Tseng <[email protected]>
---
 .../display/dc/hubbub/dcn42/dcn42_hubbub.c    | 22 ++++++++++++++-----
 1 file changed, 17 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/hubbub/dcn42/dcn42_hubbub.c 
b/drivers/gpu/drm/amd/display/dc/hubbub/dcn42/dcn42_hubbub.c
index d6e6fbaa041b..9e4d526b6d52 100644
--- a/drivers/gpu/drm/amd/display/dc/hubbub/dcn42/dcn42_hubbub.c
+++ b/drivers/gpu/drm/amd/display/dc/hubbub/dcn42/dcn42_hubbub.c
@@ -6,6 +6,7 @@
 #include "dcn31/dcn31_hubbub.h"
 #include "dcn32/dcn32_hubbub.h"
 #include "dcn35/dcn35_hubbub.h"
+#include "dcn401/dcn401_hubbub.h"
 #include "dcn42/dcn42_hubbub.h"
 #include "dm_services.h"
 #include "reg_helper.h"
@@ -494,6 +495,14 @@ static bool hubbub42_program_watermarks(
        return wm_pending;
 }
 
+static void hubbub42_set_request_limit(struct hubbub *hubbub, int 
memory_channel_count, int words_per_channel)
+{
+       struct dcn20_hubbub *hubbub2 = TO_DCN20_HUBBUB(hubbub);
+       uint32_t request_limit = 96; //MAX(12 * memory_channel_count, 96);
+
+       REG_UPDATE(SDPIF_REQUEST_RATE_LIMIT, SDPIF_REQUEST_RATE_LIMIT, 
request_limit);
+}
+
 static const struct hubbub_funcs hubbub42_funcs = {
        .update_dchub = hubbub2_update_dchub,
        .init_dchub_sys_ctx = hubbub31_init_dchub_sys_ctx,
@@ -509,13 +518,16 @@ static const struct hubbub_funcs hubbub42_funcs = {
        .force_wm_propagate_to_pipes = hubbub32_force_wm_propagate_to_pipes,
        .force_pstate_change_control = hubbub3_force_pstate_change_control,
        .init_watermarks = hubbub35_init_watermarks,
-       .program_det_size = dcn32_program_det_size,
-       .program_compbuf_size = dcn35_program_compbuf_size,
-       .init_crb = dcn35_init_crb,
+       .init_crb = dcn401_init_crb,
+       .dchvm_init = dcn35_dchvm_init,
        .hubbub_read_state = hubbub2_read_state,
        .force_usr_retraining_allow = hubbub32_force_usr_retraining_allow,
-       .dchubbub_init = hubbub35_init,
-       .dchvm_init = dcn35_dchvm_init,
+       .set_request_limit = hubbub42_set_request_limit,
+       .program_det_segments = dcn401_program_det_segments,
+       .program_compbuf_segments = dcn401_program_compbuf_segments,
+       .wait_for_det_update = dcn401_wait_for_det_update,
+       .program_arbiter = dcn401_program_arbiter,
+       .hubbub_read_reg_state = hubbub3_read_reg_state
 };
 
 void hubbub42_construct(struct dcn20_hubbub *hubbub2,
-- 
2.43.0

Reply via email to