drm_do_probe_ddc_edid ENXIO check too aggressive?
Daniel Drake
drake at endlessm.com
Mon Dec 16 13:47:44 PST 2013
Hi,
I'm using exynos_drm on Exynos4412 to output to a Sony HDMI TV.
When I disconnect and then re-plug the TV, Exynos detects this event
and tries to read the EDID from the DDC over I2C.
The DDC does not provide an ACK at this point, so the i2c-s3c2410
driver reports ENXIO, which seems to agree with the documentation:
ENXIO
Returned by I2C adapters to indicate that the address phase
of a transfer didn't get an ACK. While it might just mean
an I2C device was temporarily not responding, usually it
means there's nothing listening at that address.
As of commit 9292f37e1f5c79400254dca46f83313488093825, DRM treats
ENXIO as "no device, bail":
Author: Eugeni Dodonov <eugeni.dodonov at intel.com>
Date: Thu Jan 5 09:34:28 2012 -0200
drm: give up on edid retries when i2c bus is not responding
But in the case of my Sony TV it seems that we hit the "temporarily
not responding" case, because if I insert a delay, the message gets
acked and the EDID gets read successfully. Similarly, if I revert the
patch so that we attempt the query a few times times, it succeeds on
second retry.
Any suggested solutions to this issue?
Thanks,
Daniel
More information about the dri-devel
mailing list