Re: [PATCH] drm/bridge: analogix_dp: set the DPCD600 during disabling the psr

From: Sean Paul
Date: Mon Dec 12 2016 - 09:59:16 EST


On Fri, Dec 9, 2016 at 9:49 PM, Caesar Wang <wxt@xxxxxxxxxxxxxx> wrote:
> Look likes, the BOE panel FW didn't ack the DPCD600 signal from the host
> device, that will cause the panel hang on the startup display.
> The root cause we use the fast link mode during enter and exit the psr,
> this issue is gone if switching the fast link to main link mode.
>

Cc: Archit Taneja <architt@xxxxxxxxxxxxxx>

> Signed-off-by: Caesar Wang <wxt@xxxxxxxxxxxxxx>
> ---
>
> drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
> index 6e0447f..6a5347b 100644
> --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
> +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
> @@ -133,6 +133,7 @@ int analogix_dp_disable_psr(struct device *dev)
> {
> struct analogix_dp_device *dp = dev_get_drvdata(dev);
> struct edp_vsc_psr psr_vsc;
> + int ret;
>
> if (!dp->psr_support)
> return -EINVAL;
> @@ -147,6 +148,10 @@ int analogix_dp_disable_psr(struct device *dev)
> psr_vsc.DB0 = 0;
> psr_vsc.DB1 = 0;
>
> + ret = drm_dp_dpcd_writeb(&dp->aux, DP_SET_POWER, DP_SET_POWER_D0);
> + if (ret != 1)
> + dev_err(dp->dev, "Failed to set DP Power0 %d\n", ret);
> +
> analogix_dp_send_psr_spd(dp, &psr_vsc);
> return 0;
> }
> --
> 2.7.4
>