Hi Paul,
Le mar., août 10 2021 at 01:17:20 +0200, Paul Boddie
<paul@xxxxxxxxxxxxx> 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@xxxxxxxxxxxxx> 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