drm/amd/display: fix dual cursor shows on extend desktop

[why & how]
when dpp pipe power gating disabled in driver, disable_pipe
did not disable cursor so next time as long as this pipe
powers up, it will be visible.

port dcn314 logic: disable cursor when it should be pipe pg.

Reviewed-by: Roman Li <roman.li@amd.com>
Signed-off-by: Charlene Liu <Charlene.Liu@amd.com>
Signed-off-by: Tom Chung <chiahsuan.chung@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
Charlene Liu 2026-04-10 22:29:37 -04:00 committed by Alex Deucher
parent 941983b42b
commit df4c0441c4
2 changed files with 16 additions and 0 deletions

View File

@ -280,6 +280,14 @@ static void dpp42_dpp_setup(
dpp3_program_post_csc(dpp_base, color_space, select, NULL);
}
}
static void dcn42_dpp_force_disable_cursor(struct dpp *dpp_base)
{
struct dcn401_dpp *dpp = TO_DCN401_DPP(dpp_base);
/* Force disable cursor */
REG_UPDATE(CURSOR0_CONTROL, CUR0_ENABLE, 0);
dpp_base->pos.cur0_ctl.bits.cur0_enable = 0;
}
static struct dpp_funcs dcn42_dpp_funcs = {
.dpp_program_gamcor_lut = dpp3_program_gamcor_lut,
@ -302,6 +310,7 @@ static struct dpp_funcs dcn42_dpp_funcs = {
.dpp_cm_hist_control = dpp42_dpp_cm_hist_control,
.dpp_cm_hist_read = dpp42_dpp_cm_hist_read,
.dpp_read_reg_state = dpp30_read_reg_state,
.dpp_force_disable_cursor = dcn42_dpp_force_disable_cursor,
};

View File

@ -904,6 +904,13 @@ void dcn35_disable_plane(struct dc *dc, struct dc_state *state, struct pipe_ctx
if (!pipe_ctx->plane_res.hubp || pipe_ctx->plane_res.hubp->power_gated)
return;
if (dc->debug.disable_dpp_power_gate) {
/* Workaround for use case when disabled power gating set to 1 */
/* Force disable cursor if power gating is disabled */
struct dpp *dpp = pipe_ctx->plane_res.dpp;
if (dpp && dpp->funcs->dpp_force_disable_cursor)
dpp->funcs->dpp_force_disable_cursor(dpp);
}
if (hws->funcs.plane_atomic_disable)
hws->funcs.plane_atomic_disable(dc, pipe_ctx);