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

Kazlauskas, Nicholas Nicholas.Kazlauskas at amd.com
Mon Oct 21 12:45:18 UTC 2019


On 2019-10-21 3:54 a.m., Louis Li wrote:
> [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 500ms 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 after system resumes from suspend.
> 
> Signed-off-by: Louis Li <Ching-shih.Li at amd.com>
> ---
>   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..043ddac73862 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 they drive HPD signal high.
> +     */
> +    mdelay(500);
> +
This sounds more like a quirk than behavior we want for all monitors, 
but regardless this sleep isn't the correct place for this - since this 
is an high priority interrupt handler this is really just blocking 
everything for half a second.

I think it'd make more sense to queue off the work to occur half a 
second later.

Nicholas Kazlauskas

>   	/* 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.
>   	 */
> 



More information about the amd-gfx mailing list