On 2022-06-02 14:03, sunpeng.li@xxxxxxx wrote: > From: David Zhang <dingchen.zhang@xxxxxxx> > > [why] > DMUB FW uses OTG instance to get eDP panel instance. But in case > of MPO multiple pipe indexes are passed to updated the same panel. > The other OTG instance passed would be ignored causing in DMUB not > acknowledging the messages. > > [how] > Add panel instance to dirty rectangle data and cursor update data > structures and pass to DMUB. > I'm not entirely following why passing the panel_inst solves the problem that is described. > Signed-off-by: Mikita Lipski <mikita.lipski@xxxxxxx> This says the author is David but it has only Mikita's sign-off. We need David's sign-off as well. Harry > Acked-by: Leo Li <sunpeng.li@xxxxxxx> > --- > drivers/gpu/drm/amd/display/dc/core/dc.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c b/drivers/gpu/drm/amd/display/dc/core/dc.c > index d4173be11903..31d83297bcb5 100644 > --- a/drivers/gpu/drm/amd/display/dc/core/dc.c > +++ b/drivers/gpu/drm/amd/display/dc/core/dc.c > @@ -2837,10 +2837,14 @@ void dc_dmub_update_dirty_rect(struct dc *dc, > struct dc_context *dc_ctx = dc->ctx; > struct dmub_cmd_update_dirty_rect_data *update_dirty_rect; > unsigned int i, j; > + unsigned int panel_inst = 0; > > if (stream->link->psr_settings.psr_version != DC_PSR_VERSION_SU_1) > return; > > + if (!dc_get_edp_link_panel_inst(dc, stream->link, &panel_inst)) > + return; > + > memset(&cmd, 0x0, sizeof(cmd)); > cmd.update_dirty_rect.header.type = DMUB_CMD__UPDATE_DIRTY_RECT; > cmd.update_dirty_rect.header.sub_type = 0; > @@ -2869,6 +2873,7 @@ void dc_dmub_update_dirty_rect(struct dc *dc, > if (pipe_ctx->plane_state != plane_state) > continue; > > + update_dirty_rect->panel_inst = panel_inst; > update_dirty_rect->pipe_idx = j; > dc_dmub_srv_cmd_queue(dc_ctx->dmub_srv, &cmd); > dc_dmub_srv_cmd_execute(dc_ctx->dmub_srv);