[PATCH] drm/amd/display: Not to call dpcd_set_source_specific_data during resume.

Mahapatra, Rajib Rajib.Mahapatra at amd.com
Tue Jan 11 07:52:33 UTC 2022

dpcd_set_source_specific_data is not specific to OLED panel.  It is called from boot-up path also.
Hersen Wu introduced it in resume-path while enabling OLED panel for Linux in below commit.

So here, I guard it by calling source specific data only for OLED panel, and I can get advantage of around 100ms for non-oled panel during resume. Hersen night have answer about the issue related to regression for other panels, waiting for his reply about this change.

commit 96577cf82a1331732a71199522398120c649f1cf
Author: Hersen Wu <hersenxs.wu at amd.com>
Date:   Tue Jan 14 15:39:07 2020 -0500

    drm/amd/display: linux enable oled panel support dc part

-----Original Message-----
From: Wentland, Harry <Harry.Wentland at amd.com> 
Sent: Monday, January 10, 2022 10:03 PM
To: Mahapatra, Rajib <Rajib.Mahapatra at amd.com>; Wu, Hersen <hersenxs.wu at amd.com>; Deucher, Alexander <Alexander.Deucher at amd.com>
Cc: amd-gfx at lists.freedesktop.org; S, Shirish <Shirish.S at amd.com>
Subject: Re: [PATCH] drm/amd/display: Not to call dpcd_set_source_specific_data during resume.

On 2022-01-10 04:06, Rajib Mahapatra wrote:
> [Why]
> During resume path, dpcd_set_source_specific_data is taking extra time 
> when core_link_write_dpcd fails on DP_SOURCE_OUI+0x03 and 
> DP_SOURCE_MINIMUM_HBLANK_SUPPORTED. Here,aux->transfer fails with 
> multiple retries and consume sigficantamount time during
> S0i3 resume.
> [How]
> Not to call dpcd_set_source_specific_data during resume path when 
> there is no oled panel connected and achieve faster resume during 
> S0i3.
> Signed-off-by: Rajib Mahapatra <rajib.mahapatra at amd.com>
> ---
>  drivers/gpu/drm/amd/display/dc/core/dc_link.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_link.c 
> b/drivers/gpu/drm/amd/display/dc/core/dc_link.c
> index c0bdc23702c8..04086c199dbb 100644
> --- a/drivers/gpu/drm/amd/display/dc/core/dc_link.c
> +++ b/drivers/gpu/drm/amd/display/dc/core/dc_link.c
> @@ -892,7 +892,8 @@ static bool dc_link_detect_helper(struct dc_link *link,
>  		(!link->dc->config.allow_edp_hotplug_detection)) &&
>  		link->local_sink) {
>  		// need to re-write OUI and brightness in resume case
> -		if (link->connector_signal == SIGNAL_TYPE_EDP) {
> +		if (link->connector_signal == SIGNAL_TYPE_EDP &&
> +			(link->dpcd_sink_ext_caps.bits.oled == 1)) {

Is the source specific data only used by OLED panels?

Do we know that this won't lead to regressions with any features on non-OLED panels?


>  			dpcd_set_source_specific_data(link);
>  			msleep(post_oui_delay);
>  			dc_link_set_default_brightness_aux(link);

More information about the amd-gfx mailing list