Commit af8999c5 authored by Leon Huang's avatar Leon Huang Committed by Alex Deucher
Browse files

drm/amd/display: Expand supported Replay residency mode



[Why]
Dmub provides several Replay residency calculation methods,
but current interface only supports either ALPM or PHY mode

[How]
Modify the interface for supporting different types
of Replay residency calculation.

Reviewed-by: default avatarRobin Chen <robin.chen@amd.com>
Acked-by: default avatarRoman Li <roman.li@amd.com>
Signed-off-by: default avatarLeon Huang <leon.huang1@amd.com>
Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent c9c70395
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -288,7 +288,7 @@ struct link_service {
			struct dc_link *link, uint32_t coasting_vtotal);
	bool (*edp_replay_residency)(const struct dc_link *link,
			unsigned int *residency, const bool is_start,
			const bool is_alpm);
			const enum pr_residency_mode mode);
	bool (*edp_set_replay_power_opt_and_coasting_vtotal)(struct dc_link *link,
			const unsigned int *power_opts, uint32_t coasting_vtotal);

+5 −2
Original line number Diff line number Diff line
@@ -1056,7 +1056,7 @@ bool edp_set_coasting_vtotal(struct dc_link *link, uint32_t coasting_vtotal)
}

bool edp_replay_residency(const struct dc_link *link,
	unsigned int *residency, const bool is_start, const bool is_alpm)
	unsigned int *residency, const bool is_start, const enum pr_residency_mode mode)
{
	struct dc  *dc = link->ctx->dc;
	struct dmub_replay *replay = dc->res_pool->replay;
@@ -1065,8 +1065,11 @@ bool edp_replay_residency(const struct dc_link *link,
	if (!dc_get_edp_link_panel_inst(dc, link, &panel_inst))
		return false;

	if (!residency)
		return false;

	if (replay != NULL && link->replay_settings.replay_feature_enabled)
		replay->funcs->replay_residency(replay, panel_inst, residency, is_start, is_alpm);
		replay->funcs->replay_residency(replay, panel_inst, residency, is_start, mode);
	else
		*residency = 0;

+1 −1
Original line number Diff line number Diff line
@@ -61,7 +61,7 @@ bool edp_send_replay_cmd(struct dc_link *link,
			union dmub_replay_cmd_set *cmd_data);
bool edp_set_coasting_vtotal(struct dc_link *link, uint32_t coasting_vtotal);
bool edp_replay_residency(const struct dc_link *link,
	unsigned int *residency, const bool is_start, const bool is_alpm);
	unsigned int *residency, const bool is_start, const enum pr_residency_mode mode);
bool edp_get_replay_state(const struct dc_link *link, uint64_t *state);
bool edp_set_replay_power_opt_and_coasting_vtotal(struct dc_link *link,
	const unsigned int *power_opts, uint32_t coasting_vtotal);