Hi all,
I am currently working on porting the Genode25.11 to the Toradex Verdin i.MX8M Plus board with fdelizy. I am trying to enable the HDMI framebuffer using the imx8mp_verdin_fb driver (based on dde_linux and Toradex Linux6.6).
Current Progress: Through target.mk and the extract tool, I have successfully grafted the DRM OF Graph (lcdif3 → hdmi → hdmi_connector). By manually enabling the hdmi_blk_ctrl clock gates via direct I/O in samsung_hdmi_phy_probe(), the hardware is alive.
However, I am currently facing two distinct but possibly related issues:
Issue: EDID Read Timeout
The driver fails to read the EDID via the DesignWare internal I2C bus, resulting in a timeout. This eventually leads to flip_done timeouts and the framebuffer failing to initialize (errno = -19).
Here is the relevant part of the log:
[init -> fb] [drm] Initialized imx-drm 1.0.0 20120507 for display-subsystem on minor 0
[init -> fb] DEBUG: dw_hdmi_detect: original read_hpd returned 2. Forcing to 1 (connected)
[init -> fb] DEBUG: probe_single: connector status is 1 (1=connected, 2=disconnected, 3=unknown)
[init -> fb] DEBUG: dw_hdmi_connector_get_modes: Calling dw_hdmi_get_edid...
[init -> fb] DEBUG: dw_hdmi_get_edid: entered. hdmi->ddc = (____ptrval____)
[init -> fb] DEBUG: dw_hdmi_get_edid: calling drm_get_edid...
[init -> fb] DEBUG: wait_for_completion_timeout entered (ptr: 0000000000175f00, done: 0, timeout: 25)
[init -> fb] DEBUG: wait_for_completion_timeout entered (ptr: 0000000000175f00, done: 0, timeout: 25)
[init -> fb] DEBUG: wait_for_completion_timeout entered (ptr: 0000000000175f00, done: 0, timeout: 25)
[init -> fb] DEBUG: wait_for_completion_timeout entered (ptr: 0000000000175f00, done: 0, timeout: 25)
[init -> fb] DEBUG: wait_for_completion_timeout entered (ptr: 0000000000175f00, done: 0, timeout: 25)
[init -> fb] DEBUG: dw_hdmi_get_edid: drm_get_edid returned 0000000000000000
[init -> fb] DEBUG: dw_hdmi_connector_get_modes: edid is NULL. Returning 0.
[init -> fb] DEBUG: probe_single: drm_helper_probe_get_modes returned count=0
[init -> fb] DEBUG: probe_single: after prune_invalid, final mode count=5
[init -> fb] DEBUG: __drm_fb_helper_find_sizes: entered
[init -> fb] DEBUG: __drm_fb_helper_find_sizes: crtc_count=1, fb_width=1024, fb_height=768
[init -> fb] Unable to create device for framebuffer 0; errno = -19
...
[init -> fb] DEBUG: wait_for_completion_timeout entered (ptr: 000000000017ff00, done: 0, timeout: 2500)
[init -> fb] imx-drm display-subsystem: [drm] *ERROR* flip_done timed out
[init -> fb] imx-drm display-subsystem: [drm] *ERROR* [CRTC:33:crtc-0] commit wait timed out
Questions:
-
What are the common causes for
drm_get_edidtimeouts in thedde_linuxarchitecture that I might be missing? -
Are there any recommended debugging steps or workarounds to resolve this EDID/flip_done timeout?
Any advice, insights, or pointers would be greatly appreciated!
Thanks.