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: Robin Chen <robin.chen@amd.com> Acked-by: Roman Li <roman.li@amd.com> Signed-off-by: Leon Huang <leon.huang1@amd.com> Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user