mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-27 19:29:37 +00:00
drm/amd/display: MPC updates
Fix update_mpcc logic to only call assert_mpcc_idle_before_connect if mpcc is not already being used (and required removal). Update set_out_rate_control to include optional flow control parameter. In init_mpcc_from_hw check for case where bot_sel is same as mpcc_id. Signed-off-by: Eric Bernstein <eric.bernstein@amd.com> Reviewed-by: Tony Cheng <Tony.Cheng@amd.com> Acked-by: Harry Wentland <harry.wentland@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
c1fba8204b
commit
49fac0b46a
2 changed files with 8 additions and 5 deletions
|
@ -1923,10 +1923,10 @@ static void update_mpcc(struct dc *dc, struct pipe_ctx *pipe_ctx)
|
|||
/* remove MPCC if being used */
|
||||
if (new_mpcc != NULL)
|
||||
mpc->funcs->remove_mpcc(mpc, mpc_tree_params, new_mpcc);
|
||||
|
||||
if (dc->debug.sanity_checks)
|
||||
mpc->funcs->assert_mpcc_idle_before_connect(
|
||||
dc->res_pool->mpc, mpcc_id);
|
||||
else
|
||||
if (dc->debug.sanity_checks)
|
||||
mpc->funcs->assert_mpcc_idle_before_connect(
|
||||
dc->res_pool->mpc, mpcc_id);
|
||||
|
||||
/* Call MPC to insert new plane */
|
||||
new_mpcc = mpc->funcs->insert_plane(dc->res_pool->mpc,
|
||||
|
|
|
@ -300,11 +300,11 @@ void mpc1_remove_mpcc(
|
|||
|
||||
if (temp_mpcc && temp_mpcc->mpcc_bot == mpcc_to_remove) {
|
||||
found = true;
|
||||
temp_mpcc->mpcc_bot = mpcc_to_remove->mpcc_bot;
|
||||
if (mpcc_to_remove->mpcc_bot) {
|
||||
/* remove MPCC in middle of list */
|
||||
REG_SET(MPCC_BOT_SEL[temp_mpcc->mpcc_id], 0,
|
||||
MPCC_BOT_SEL, mpcc_to_remove->mpcc_bot->mpcc_id);
|
||||
temp_mpcc->mpcc_bot = mpcc_to_remove->mpcc_bot;
|
||||
} else {
|
||||
/* remove MPCC from bottom of list */
|
||||
REG_SET(MPCC_BOT_SEL[temp_mpcc->mpcc_id], 0,
|
||||
|
@ -374,6 +374,9 @@ void mpc1_init_mpcc_list_from_hw(
|
|||
REG_GET(MPCC_TOP_SEL[mpcc_id], MPCC_TOP_SEL, &top_sel);
|
||||
REG_GET(MPCC_BOT_SEL[mpcc_id], MPCC_BOT_SEL, &bot_sel);
|
||||
|
||||
if (bot_sel == mpcc_id)
|
||||
bot_sel = 0xf;
|
||||
|
||||
if ((opp_id == tree->opp_id) && (top_sel != 0xf)) {
|
||||
mpcc = mpc1_get_mpcc(mpc, mpcc_id);
|
||||
mpcc->dpp_id = top_sel;
|
||||
|
|
Loading…
Reference in a new issue