Commit c446748a authored by Roman Li's avatar Roman Li Committed by Alex Deucher
Browse files

drm/amd/display: Add missing dcn42 hubbub function pointers



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: default avatarAlex Hung <alex.hung@amd.com>
Reviewed-by: default avatarLeo Chen <leo.chen@amd.com>
Signed-off-by: default avatarRoman Li <roman.li@amd.com>
Signed-off-by: default avatarChuanyu Tseng <Chuanyu.Tseng@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent b6c0783f
Loading
Loading
Loading
Loading
+17 −5
Original line number Diff line number Diff line
@@ -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,