mirror of
https://github.com/torvalds/linux.git
synced 2026-05-24 07:03:03 +02:00
drm/amd/display/dc: add helper for panic updates
Add a DC helper for panic updates. Reviewed-by: Harry Wentland <harry.wentland@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Cc: Lu Yao <yaolu@kylinos.cn> Cc: Jocelyn Falempe <jfalempe@redhat.com> Cc: Harry Wentland <harry.wentland@amd.com>
This commit is contained in:
parent
98471006ae
commit
b7a287fa0c
|
|
@ -270,4 +270,50 @@ void dc_3dlut_func_retain(struct dc_3dlut *lut)
|
|||
kref_get(&lut->refcount);
|
||||
}
|
||||
|
||||
void dc_plane_force_update_for_panic(struct dc_plane_state *plane_state,
|
||||
bool clear_tiling)
|
||||
{
|
||||
struct dc *dc;
|
||||
int i;
|
||||
|
||||
if (!plane_state)
|
||||
return;
|
||||
|
||||
dc = plane_state->ctx->dc;
|
||||
|
||||
if (!dc || !dc->current_state)
|
||||
return;
|
||||
|
||||
for (i = 0; i < dc->res_pool->pipe_count; i++) {
|
||||
struct pipe_ctx *pipe_ctx = &dc->current_state->res_ctx.pipe_ctx[i];
|
||||
|
||||
if (!pipe_ctx)
|
||||
continue;
|
||||
|
||||
if (dc->ctx->dce_version >= DCE_VERSION_MAX) {
|
||||
struct hubp *hubp = pipe_ctx->plane_res.hubp;
|
||||
if (!hubp)
|
||||
continue;
|
||||
/* if framebuffer is tiled, disable tiling */
|
||||
if (clear_tiling && hubp->funcs->hubp_clear_tiling)
|
||||
hubp->funcs->hubp_clear_tiling(hubp);
|
||||
|
||||
/* force page flip to see the new content of the framebuffer */
|
||||
hubp->funcs->hubp_program_surface_flip_and_addr(hubp,
|
||||
&plane_state->address,
|
||||
true);
|
||||
} else {
|
||||
struct mem_input *mi = pipe_ctx->plane_res.mi;
|
||||
if (!mi)
|
||||
continue;
|
||||
/* if framebuffer is tiled, disable tiling */
|
||||
if (clear_tiling && mi->funcs->mem_input_clear_tiling)
|
||||
mi->funcs->mem_input_clear_tiling(mi);
|
||||
|
||||
/* force page flip to see the new content of the framebuffer */
|
||||
mi->funcs->mem_input_program_surface_flip_and_addr(mi,
|
||||
&plane_state->address,
|
||||
true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,4 +34,7 @@ const struct dc_plane_status *dc_plane_get_status(
|
|||
void dc_plane_state_retain(struct dc_plane_state *plane_state);
|
||||
void dc_plane_state_release(struct dc_plane_state *plane_state);
|
||||
|
||||
void dc_plane_force_update_for_panic(struct dc_plane_state *plane_state,
|
||||
bool clear_tiling);
|
||||
|
||||
#endif /* _DC_PLANE_H_ */
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user