[PATCH v2] drm/amd/display: Fix Apple dongle cannot be successfully detected

Kazlauskas, Nicholas nicholas.kazlauskas at amd.com
Thu Nov 21 13:40:53 UTC 2019


On 2019-11-21 3:31 a.m., Li, Ching-shih (Louis) wrote:
> Hi reviewers,
> 
> What is the review result for this patch? Customer is pushing on this change to merge. TKS for your attention.
> 
> BR,
> Louis
> 
> -----Original Message-----
> From: Louis Li <Ching-shih.Li at amd.com>
> Sent: Thursday, November 14, 2019 11:42 AM
> To: amd-gfx at lists.freedesktop.org
> Cc: Kazlauskas, Nicholas <Nicholas.Kazlauskas at amd.com>; Wentland, Harry <Harry.Wentland at amd.com>; Li, Ching-shih (Louis) <Ching-shih.Li at amd.com>
> Subject: [PATCH v2] drm/amd/display: Fix Apple dongle cannot be successfully detected
> 
> [Why]
> External monitor cannot be displayed consistently, if connecting via this Apple dongle (A1621, USB Type-C to HDMI).
> By experiments, it is confirmed that the dongle needs 200ms at least to be ready for communication, after it sets HPD signal high.
> 
> [How]
> When receiving HPD IRQ, delay 300ms at the beginning of handle_hpd_irq().
> Then run the original procedure.
> With this patch applied, the problem cannot be reproduced.
> With other dongles, test results are PASS.
> Test result is PASS to plug in HDMI cable while playing video, and the video is being playing smoothly.
> Test result is PASS after system resumes from suspend.
> 
> Signed-off-by: Louis Li <Ching-shih.Li at amd.com>

This is still a NAK from me since the logic hasn't changed from the 
first patch.

Sleeps don't belong in IRQ handlers.

Regards,
Nicholas Kazlauskas

> ---
>   drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 5 +++++
>   1 file changed, 5 insertions(+)
> 
> 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 0aef92b7c037..5b844b6a5a59 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> @@ -1025,6 +1025,11 @@ static void handle_hpd_irq(void *param)
>   	struct drm_device *dev = connector->dev;
>   	enum dc_connection_type new_connection_type = dc_connection_none;
>   
> +	/* Some monitors/dongles need around 200ms to be ready for communication
> +	 * after those devices drive HPD signal high.
> +	 */
> +	msleep(300);
> +
>   	/* In case of failure or MST no need to update connector status or notify the OS
>   	 * since (for MST case) MST does this in it's own context.
>   	 */
> --
> 2.21.0
> 



More information about the amd-gfx mailing list