AnsweredAssumed Answered

imx6: i2c_transfer timeout issue after resume

Question asked by PINTU KUMAR on Oct 16, 2019
Latest reply on Nov 18, 2019 by PINTU KUMAR

[i.MX6] Suspend/resume implementation for dw_hdmi-imx.c

IMX6 LVDS and HDMI display

 

Hi,

On a custom imx6dl board (with custom 4.9 kernel), we are facing i2c_transfer timeout issue after system resume.

So, I need some help in debugging this issue.

This does not happen in normal boot case (without suspend/resume).

 These are the steps I follow for my use case:
* Boot the system normally (without display) and install all imx-drm as modules.
* Then uninstall the modules in reverse order.
* Take the snapshot of the system (suspend to disk).
* Reboot the system and boot with the image.
* Install all the modules again.
* Then launch the Weston.
* During the weston launch in the beginning we observe this error.

 

After system resume, HDMI is trying to get EDID data from the monitor using I2C interface.
But its seems i2c_transfer is getting timeout after 5 retries.
Thus EDID data is failing, and HDMI could not able to detect the monitor.

 

This is the logs:

[ 441.104989] [drm:drm_helper_probe_single_connector_modes] [CONNECTOR:29:HDMI-A-1] status updated from unknown to connected
[ 441.116080]: drm_helper_probe_single_connector_modes - inside - else override_edid
[ 441.124416]: drm_helper_probe_single_connector_modes - inside - else - drm_load_edid_firmware: count: 0
[ 441.134546]: drm_helper_probe_single_connector_modes - calling - get_modes
[ 441.142157]: dw_hdmi_connector_get_modes : called
[ 441.147652]: dw_hdmi_connector_get_modes : called - calling -> drm_get_edid
[ 441.155346]: drm_do_probe_ddc_edid : called!
[ 441.660759]: drm_do_probe_ddc_edid : i2c_transfer: ret: -110, retry: 5
[ 442.170758]: drm_do_probe_ddc_edid : i2c_transfer: ret: -110, retry: 4
[ 442.680755]: drm_do_probe_ddc_edid : i2c_transfer: ret: -110, retry: 3
[ 443.190755]: drm_do_probe_ddc_edid : i2c_transfer: ret: -110, retry: 2
[ 443.700754]: drm_do_probe_ddc_edid : i2c_transfer: ret: -110, retry: 1
[ 443.707989]: drm_get_edid : called - drm_probe_ddc - failed
[ 443.714303] dwhdmi-imx 120000.hdmi: failed to get edid
[ 443.719456]: dw_hdmi_connector_get_modes : DONE: ret: 0

 

So, please let me know what needs to be done to handle this type of issue.

This is one of our major requirement for our customer, so please support this on high-priority.

 

Regards,

Pintu

Outcomes