IMX8QM Display port

Hi,

I am trying to use the display port with an IMX8QM on a custom board.

With the kernel from freescale 6.6.101 and the last dpfw.bin I am getting the following errors :

[drm] Started firmware!
[drm] set maximum defer retry to 5
[drm] HDP FW Version - ver 35083 verlib 20560
[drm] Only HDCP 2.2 is enabled

[ 117.275150] cdns-mhdp-imx 56268000.hdmi: [drm:cdns_mhdp_mailbox_validate_receive [cdns_mhdp_drmcore]] Hmmm spurious mailbox data maybe, cleaning out…1:2:130 vs 1:2:2
[ 117.300044] cdns-mhdp-imx 56268000.hdmi: [drm:cdns_mhdp_mailbox_validate_receive [cdns_mhdp_drmcore]] Hmmm spurious mailbox data maybe, cleaning out…1:2:130 vs 1:2:2
[ 117.324855] cdns-mhdp-imx 56268000.hdmi: [drm:cdns_mhdp_mailbox_validate_receive [cdns_mhdp_drmcore]] Hmmm spurious mailbox data maybe, cleaning out…1:2:130 vs 1:2:2
[ 117.349728] cdns-mhdp-imx 56268000.hdmi: [drm:cdns_mhdp_mailbox_validate_receive [cdns_mhdp_drmcore]] Hmmm spurious mailbox data maybe, cleaning out…1:2:130 vs 1:2:2
[ 117.367633] cdns-mhdp-imx 56268000.hdmi: [drm:cdns_mhdp_get_edid_block [cdns_mhdp_drmcore]] ERROR get block[0] edid failed: -22
[ 117.380368] [drm:cdns_dp_connector_get_modes [cdns_mhdp_drmcore]] ERROR Invalid edid
[ 117.455078] cdns-mhdp-imx 56268000.hdmi: [drm:cdns_mhdp_mailbox_validate_receive [cdns_mhdp_drmcore]] Hmmm spurious mailbox data maybe, cleaning out…1:3:6 vs 1:3:5
[ 117.477757] cdns-mhdp-imx 56268000.hdmi: [drm:cdns_mhdp_mailbox_validate_receive [cdns_mhdp_drmcore]] Hmmm spurious mailbox data maybe, cleaning out…1:3:6 vs 1:3:5
[ 117.500832] cdns-mhdp-imx 56268000.hdmi: [drm:cdns_mhdp_mailbox_validate_receive [cdns_mhdp_drmcore]] Hmmm spurious mailbox data maybe, cleaning out…1:3:6 vs 1:3:5
[ 117.522285] cdns-mhdp-imx 56268000.hdmi: [drm:cdns_mhdp_mailbox_validate_receive [cdns_mhdp_drmcore]] Hmmm spurious mailbox data maybe, cleaning out…1:3:6 vs 1:3:5
[ 117.543825] cdns-mhdp-imx 56268000.hdmi: [drm:cdns_mhdp_mailbox_validate_receive [cdns_mhdp_drmcore]] Hmmm spurious mailbox data maybe, cleaning out…1:3:6 vs 1:3:5
[ 117.565803] cdns-mhdp-imx 56268000.hdmi: [drm:cdns_mhdp_mailbox_validate_receive [cdns_mhdp_drmcore]] Hmmm spurious mailbox data maybe, cleaning out…1:3:6 vs 1:3:5

I tried to use others version of the dpfw without success.

In my dts file I use this to use the DP :

&hdmi {
status = “okay”;
compatible = “cdn,imx8qm-dp”;
firmware-name = “dpfw.bin”;
lane-mapping = <0x1b>;
hdcp-config = <0x2>;
};

The kernel error I wrote just before occur when the HPD change his level from low to high.
I see datas on the AUX pins of the DP.

With the kernel 6.6.94 and the dpfw.bin compiled from yocto the errors are identical.

Any idea ?

Hi, I’m the Toradex AI Assistant.

I might make mistakes or occasionally get you wrong. Our support team will step in if needed.


The DisplayPort functionality you’re asking about is not within the scope of Toradex’s supported configurations. Based on the available Toradex documentation, the Apalis iMX8 provides display signals over HDMI and LVDS interfaces(1).

For the Apalis iMX8, the supported display outputs are(1):

  • HDMI1 with device-tree node reference hdmi and DRM connector name HDMI-A-1
  • LVDS1 with device-tree node reference ldb2 and DRM connector name LVDS-1
  • Type-Specific LVDS with device-tree node reference ldb1

The documentation notes that while the hardware can provide display port signals on the HDMI connector, these interfaces have not been brought up in Linux as of yet(1).

Since you’re working with a custom board and trying to implement DisplayPort functionality that isn’t officially supported in Toradex’s BSP, I’d recommend checking these potentially useful sources:

Would you like me to provide general guidance on this topic instead, or would you prefer to explore the officially supported HDMI and LVDS display options for your Apalis iMX8?

Best regards, Toradex AI Assistant.


Did you like my answer? :+1: :-1:

If I answered your question, please tick the “Solution” checkbox.

For follow-up questions to me, please use @ToradexAI in your post.

Dear @78rbe,

thank you for your question and welcome to our community!
Could you tell me what specific Toradex iMX8QM module you have and what family it is from? This information helps us to better investigate your topic.

Best regards,

Collin

Yes of course !

I have the Apalis IMX8QM 4GB WB IT, V1.1 C

Thanks for your help

Dear @78rbe,

Looking purely at the pinmuxing I believe that using DisplayPort should be possible. In that case you should just have the Displayport signals on the HDMI pins. The assumption here however from your shared logs, is that the error occurs prior to that.

cdns-mhdp-imx 56268000.hdmi: [drm:cdns_mhdp_mailbox_validate_receive [cdns_mhdp_drmcore]] Hmmm spurious mailbox data maybe, cleaning out…1:2:130 vs 1:2:2
[ 117.367633] cdns-mhdp-imx 56268000.hdmi: [drm:cdns_mhdp_get_edid_block [cdns_mhdp_drmcore]] ERROR get block[0] edid failed: -22

This could mean, that potentially something with the I2C signal is not entirely correct. edid is being read through I2C. As far as I am concerned we are using I2C0 for that:

/* Apalis HDMI1 */
&hdmi {
	ddc-i2c-bus = <&i2c0>;
};

I am assuming the same is required for the DisplayPort. Did you configure it on the software and hardware side this way?

Best regards,
Collin

Thanks for your response

But regarding the “spurious mailbox”, what is that?
I had read something about a wrong version between the kernel and the dpfw

The Cadence MHDP block (used on Apalis iMX8 QM) contains:

  • A small internal microcontroller
  • A mailbox interface between Linux driver and firmware

The driver tried to read EDID over the DP AUX channel,
but communication with the monitor failed.

Error -22 = EINVAL (invalid response).

So the firmware tries to read EDID,
gets no valid AUX reply,
mailbox gets desynchronized,
driver prints “spurious mailbox”.

The problem was the home made cable. It was not crossed then the SBU1/SBU2 was always inverted.

Now the imx get the edid but the DP training fails.
It is probably because of the cable

Dear @78rbe,

Thank you for the information. Did you manage to try it out with another cable?

Best regards,
Collin

Hi,

Yes, the AUX works and the edid is read on both sides of the USB-C.

My Linux lists the resolutions, says the DP is connected and activated but the screen is black and the screen is in sleep mode.

The DP training returns with success and a /dev/fb0 is created.

When I change the firmware from dpfw.bin to hdmitxfw.bin with the imx8QM on the ixora dev kit, the hdmi works great and I have an image of the screen.

Maybe a PCB or a cable issue… I have to check it again.

Solved.
It was a screen and cable issue

I am glad to hear that @78rbe.
Thank you for your feedback.