mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git
synced 2026-04-20 04:23:55 -04:00
drm/amd/display: To support Replay frame skip mode
[Why & How] The change is to optimize the Replay power saving by reducing the refresh rate with frame skipping mode Reviewed-by: Robin Chen <robin.chen@amd.com> Signed-off-by: Chuntao Tso <chunttso@amd.com> Signed-off-by: Fangzhi Zuo <jerry.zuo@amd.com> Tested-by: Dan Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
committed by
Alex Deucher
parent
45de10d2d9
commit
f3f48d6ce5
@@ -975,6 +975,34 @@ bool psr_su_set_dsc_slice_height(struct dc *dc, struct dc_link *link,
|
||||
return true;
|
||||
}
|
||||
|
||||
void set_replay_frame_skip_number(struct dc_link *link,
|
||||
enum replay_coasting_vtotal_type type,
|
||||
uint32_t coasting_vtotal_refresh_rate_mhz,
|
||||
uint32_t flicker_free_refresh_rate_mhz,
|
||||
bool is_defer)
|
||||
{
|
||||
uint32_t *frame_skip_number_array = NULL;
|
||||
uint32_t frame_skip_number = 0;
|
||||
|
||||
if (link == NULL || flicker_free_refresh_rate_mhz == 0 || coasting_vtotal_refresh_rate_mhz == 0)
|
||||
return;
|
||||
|
||||
if (is_defer)
|
||||
frame_skip_number_array = link->replay_settings.defer_frame_skip_number_table;
|
||||
else
|
||||
frame_skip_number_array = link->replay_settings.frame_skip_number_table;
|
||||
|
||||
if (frame_skip_number_array == NULL)
|
||||
return;
|
||||
|
||||
frame_skip_number = coasting_vtotal_refresh_rate_mhz / flicker_free_refresh_rate_mhz;
|
||||
|
||||
if (frame_skip_number >= 1)
|
||||
frame_skip_number_array[type] = frame_skip_number - 1;
|
||||
else
|
||||
frame_skip_number_array[type] = 0;
|
||||
}
|
||||
|
||||
void set_replay_defer_update_coasting_vtotal(struct dc_link *link,
|
||||
enum replay_coasting_vtotal_type type,
|
||||
uint32_t vtotal)
|
||||
@@ -987,6 +1015,8 @@ void update_replay_coasting_vtotal_from_defer(struct dc_link *link,
|
||||
{
|
||||
link->replay_settings.coasting_vtotal_table[type] =
|
||||
link->replay_settings.defer_update_coasting_vtotal_table[type];
|
||||
link->replay_settings.frame_skip_number_table[type] =
|
||||
link->replay_settings.defer_frame_skip_number_table[type];
|
||||
}
|
||||
|
||||
void set_replay_coasting_vtotal(struct dc_link *link,
|
||||
|
||||
Reference in New Issue
Block a user