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 <[email protected]>
> ---
>   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.
>        */
> 

_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to