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

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


On 2019-11-21 8:40 a.m., Kazlauskas, Nicholas wrote:
> 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

Actually, this lives in the low IRQ context which means that it's 
already been queued off to a work thread so it's safe to sleep.

I'm not sure we want a general 300ms sleep (even by experiment you said 
that it only needed 200ms) for all connectors.

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
>>
> 
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx



More information about the amd-gfx mailing list