[PATCH 3/3] drm/amd/display: Solve mst monitors blank out problem after resume

Zuo, Jerry Jerry.Zuo at amd.com
Wed Jul 3 14:06:57 UTC 2024


[AMD Official Use Only - AMD Internal Distribution Only]

Reviewed-by: Fangzhi Zuo <jerry.zuo at amd.com>

> -----Original Message-----
> From: Wayne Lin <Wayne.Lin at amd.com>
> Sent: Wednesday, June 26, 2024 4:48 AM
> To: amd-gfx at lists.freedesktop.org; dri-devel at lists.freedesktop.org
> Cc: lyude at redhat.com; jani.nikula at intel.com; imre.deak at intel.com;
> daniel at ffwll.ch; Wentland, Harry <Harry.Wentland at amd.com>; Zuo, Jerry
> <Jerry.Zuo at amd.com>; Lin, Wayne <Wayne.Lin at amd.com>
> Subject: [PATCH 3/3] drm/amd/display: Solve mst monitors blank out problem
> after resume
>
> [Why]
> In dm resume, we firstly restore dc state and do the mst resume for topology
> probing thereafter. If we change dpcd DP_MSTM_CTRL value after LT in mst
> reume, it will cause light up problem on the hub.
>
> [How]
> Revert the commit 202dc359adda ("drm/amd/display: Defer handling mst up
> request in resume"). And adjust the reason to trigger dc_link_detect by
> DETECT_REASON_RESUMEFROMS3S4.
>
> Fixes: 202dc359adda ("drm/amd/display: Defer handling mst up request in
> resume")
> Signed-off-by: Wayne Lin <Wayne.Lin at amd.com>
> ---
>  drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> index c64cc2378a94..b01452eb0981 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> @@ -2569,6 +2569,7 @@ static void resume_mst_branch_status(struct
> drm_dp_mst_topology_mgr *mgr)
>
>       ret = drm_dp_dpcd_writeb(mgr->aux, DP_MSTM_CTRL,
>                                DP_MST_EN |
> +                              DP_UP_REQ_EN |
>                                DP_UPSTREAM_IS_SRC);
>       if (ret < 0) {
>               drm_dbg_kms(mgr->dev, "mst write failed - undocked during
> suspend?\n"); @@ -3171,7 +3172,7 @@ static int dm_resume(void *handle)
>               } else {
>                       mutex_lock(&dm->dc_lock);
>                       dc_exit_ips_for_hw_access(dm->dc);
> -                     dc_link_detect(aconnector->dc_link,
> DETECT_REASON_HPD);
> +                     dc_link_detect(aconnector->dc_link,
> DETECT_REASON_RESUMEFROMS3S4);
>                       mutex_unlock(&dm->dc_lock);
>               }
>
> --
> 2.37.3



More information about the dri-devel mailing list