Hi Paul,
Le mar., août 10 2021 at 01:17:20 +0200, Paul Boddie paul@boddie.org.uk a écrit :
On Monday, 9 August 2021 18:22:12 CEST Paul Cercueil wrote:
Le lun., août 9 2021 at 13:14:03 +0200, H. Nikolaus Schaller
hns@goldelico.com a écrit :
quick feedback: our HDMI on top compiles fine after fixing 2 merge conflicts, but dos not yet work. Will need some spare time with access to the CI20 board to
research
the issue, i.e. can not give feedback immediately.
Alright, no problem. I'll be back home in about 2 weeks and then I can test on my CI20 as well.
Just for reference, I looked into this initialisation failure. The HDMI peripheral driver gets initialised satisfactorily...
dw-hdmi-ingenic 10180000.hdmi: Detected HDMI TX controller v1.31a with HDCP (DWC HDMI 3D TX PHY) dw-hdmi-ingenic 10180000.hdmi: registered DesignWare HDMI I2C bus driver
But then the reported error occurs in the DRM driver:
ingenic-drm 13050000.lcdc0: Unable to init connector ingenic-drm: probe of 13050000.lcdc0 failed with error -22
This originates in a call to drm_bridge_connector_init from ingenic_drm_bind:
connector = drm_bridge_connector_init(drm, encoder);
The invoked function iterates over the registered bridges, one of which seems to be the HDMI peripheral (it has bridge operations defined identically to those specified in the Synopsys driver), but the type member of the drm_bridge structure is set to 0 (DRM_MODE_CONNECTOR_Unknown).
I might expect the bridge to expose a type acquired from its connector, but I don't see this propagation occurring in the Synopsys driver: dw_hdmi_probe sets the bridge operations and other members of the drm_bridge structure, but it doesn't set the type.
Also, it might be possible that dw_hdmi_connector_detect (exposed as the detect operation) is not getting called, and this would explain why the bridge's connector member does not have the connector_type set, either (since it is also set to 0).
From what I understand the last bridge in the chained list is supposed to set the connector type. The HDMI driver's probe function should get a pointer to the next bridge in the queue and attach it (see how ite-it66121.c does it). The last bridge in the queue should be "hdmi-connector" (display-connector.c) which will effectively set the connector type.
Cheers, -Paul