mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 18:13:41 +02:00
drm/amd/display: Check context constructed for pipe split flags is still valid
[WHY?] After applying pipesplit flags, DML can select a different configuration upon revalidation, despite the desired one still being valid. [HOW?] Check the configuration is still has mode support, and apply it. Reviewed-by: Martin Leung <Martin.Leung@amd.com> Acked-by: Tom Chung <chiahsuan.chung@amd.com> Signed-off-by: Dillon Varone <Dillon.Varone@amd.com> Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
27142312c8
commit
31494626ce
|
|
@ -1748,6 +1748,9 @@ bool dcn32_internal_validate_bw(struct dc *dc,
|
|||
}
|
||||
|
||||
if (repopulate_pipes) {
|
||||
int flag_max_mpc_comb = vba->maxMpcComb;
|
||||
int flag_vlevel = vlevel;
|
||||
|
||||
pipe_cnt = dc->res_pool->funcs->populate_dml_pipes(dc, context, pipes, fast_validate);
|
||||
|
||||
/* repopulate_pipes = 1 means the pipes were either split or merged. In this case
|
||||
|
|
@ -1761,6 +1764,22 @@ bool dcn32_internal_validate_bw(struct dc *dc,
|
|||
if (vlevel == context->bw_ctx.dml.soc.num_states) {
|
||||
/* failed after DET size changes */
|
||||
goto validate_fail;
|
||||
} else if (flag_max_mpc_comb == 0 &&
|
||||
flag_max_mpc_comb != context->bw_ctx.dml.vba.maxMpcComb) {
|
||||
/* check the context constructed with pipe split flags is still valid*/
|
||||
bool flags_valid = false;
|
||||
for (int i = flag_vlevel; i < context->bw_ctx.dml.soc.num_states; i++) {
|
||||
if (vba->ModeSupport[i][flag_max_mpc_comb]) {
|
||||
vba->maxMpcComb = flag_max_mpc_comb;
|
||||
vba->VoltageLevel = i;
|
||||
vlevel = i;
|
||||
flags_valid = true;
|
||||
}
|
||||
}
|
||||
|
||||
/* this should never happen */
|
||||
if (!flags_valid)
|
||||
goto validate_fail;
|
||||
}
|
||||
}
|
||||
*vlevel_out = vlevel;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user