[PATCH 3/4] drm/amd/display: pass panel instance in dirty rect message

Harry Wentland harry.wentland at amd.com
Thu Jun 2 20:48:51 UTC 2022



On 2022-06-02 14:03, sunpeng.li at amd.com wrote:
> From: David Zhang <dingchen.zhang at amd.com>
> 
> [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 at amd.com>

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 at amd.com>
> ---
>  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);



More information about the amd-gfx mailing list