drm_do_probe_ddc_edid ENXIO check too aggressive?

Daniel Drake drake at endlessm.com
Mon Dec 16 13:50:10 PST 2013


Resend with correct addresses for Eugeni and Chris...

On Mon, Dec 16, 2013 at 3:47 PM, Daniel Drake <drake at endlessm.com> wrote:
> 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