forked from Minki/linux
drm/amd/display: Force watermark value propagation
[Why] The HUBBUB watermark registers are in an area that cannot be power gated, but the HUBP copies of the watermark values are in areas that can be power gated. When we power on a pipe, it will not automatically take the HUBBUB values, we need to force propagation by writing to a watermark register. [How] - new HUBBUB function to re-write current value in a WM register - touch WM register after enabling the plane in program_pipe Signed-off-by: Joshua Aberback <joshua.aberback@amd.com> Reviewed-by: Jun Lei <Jun.Lei@amd.com> Acked-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
dd5a94ce6c
commit
868149c9a0
@ -1478,8 +1478,11 @@ static void dcn20_program_pipe(
|
||||
if (pipe_ctx->update_flags.bits.odm)
|
||||
hws->funcs.update_odm(dc, context, pipe_ctx);
|
||||
|
||||
if (pipe_ctx->update_flags.bits.enable)
|
||||
if (pipe_ctx->update_flags.bits.enable) {
|
||||
dcn20_enable_plane(dc, pipe_ctx, context);
|
||||
if (dc->res_pool->hubbub->funcs->force_wm_propagate_to_pipes)
|
||||
dc->res_pool->hubbub->funcs->force_wm_propagate_to_pipes(dc->res_pool->hubbub);
|
||||
}
|
||||
|
||||
if (pipe_ctx->update_flags.raw || pipe_ctx->plane_state->update_flags.raw || pipe_ctx->stream->update_flags.raw)
|
||||
dcn20_update_dchubp_dpp(dc, pipe_ctx, context);
|
||||
|
@ -144,6 +144,8 @@ struct hubbub_funcs {
|
||||
void (*allow_self_refresh_control)(struct hubbub *hubbub, bool allow);
|
||||
|
||||
void (*apply_DEDCN21_147_wa)(struct hubbub *hubbub);
|
||||
|
||||
void (*force_wm_propagate_to_pipes)(struct hubbub *hubbub);
|
||||
};
|
||||
|
||||
struct hubbub {
|
||||
|
Loading…
Reference in New Issue
Block a user