Hello
I'm working with iot-gate-imx8plus from compulab which integrate i.MX8M-Plus CPU and I have difficulties to use a specific screen with resolution 800x480 over HDMI interface.
I have done multiple logs to understand the issues:
- first the screen is not detected:
root@iot-gate-imx8plus:~# cat /sys/class/drm/card1-HDMI-A-1/status
disconnected
- so I force the detection of the screen using the command:
root@iot-gate-imx8plus:~# echo on > /sys/class/drm/card1-HDMI-A-1/status
root@iot-gate-imx8plus:~# cat /sys/class/drm/card1-HDMI-A-1/status
connected
- then the "hdmi_phy" clock rate remains 0 (I found this by making some logs in the kernel) as shown below:
root@iot-gate-imx8plus:~# cat /sys/kernel/debug/clk/clk_summary | grep "hdmi"
hdmi_ref_266m 1 1 0 24000000 0 0 50000 Y
hdmi_glb_ref_266m 0 0 0 24000000 0 0 50000 N
hdmi_sec_mem 0 0 0 24000000 0 0 50000 N
hdmi_esm 0 0 0 24000000 0 0 50000 N
hdmi_24m 2 2 0 24000000 0 0 50000 Y
hdmi_glb_24m 2 2 0 24000000 0 0 50000 Y
hdmi_phy 1 1 0 0 0 0 50000 Y
hdmi_glb_pix 4 4 0 0 0 0 50000 Y
hdmi_pipe_sel 1 1 0 0 0 0 50000 Y
hdmi_vid_pix 0 0 0 0 0 0 50000 N
hdmi_tx_pix 1 1 0 0 0 0 50000 Y
hdmi_phy_sel 0 0 0 24000000 0 0 50000 Y
hdmi_fdcc_tst 1 1 0 24000000 0 0 50000 Y
hdmi_fdcc_ref 1 1 0 24000000 0 0 50000 Y
hdmi_axi 2 2 0 500000000 0 0 50000 Y
hdmi_glb_b 2 2 0 500000000 0 0 50000 Y
hdmi_root_clk 1 1 0 500000000 0 0 50000 Y
hdmi_apb 3 3 0 133333333 0 0 50000 Y
hdmi_glb_apb 13 13 0 133333333 0 0 50000 Y
hdmi_trng_apb 0 0 0 133333333 0 0 50000 N
hdmi_trng_skp 0 0 0 133333333 0 0 50000 N
hdmi_phy_int 1 1 0 133333333 0 0 50000 Y
hdmi_phy_apb 1 1 0 133333333 0 0 50000 Y
hdmi_tx_prep 1 1 0 133333333 0 0 50000 Y
hdmi_tx_skp 1 1 0 133333333 0 0 50000 Y
hdmi_tx_sfr 1 1 0 133333333 0 0 50000 Y
hdmi_tx_gpa 0 0 0 133333333 0 0 50000 N
hdmi_tx_apb 1 1 0 133333333 0 0 50000 Y
hdmi_tx_hpi 1 1 0 133333333 0 0 50000 Y
hdmi_noc 1 1 0 133333333 0 0 50000 Y
hdmi_irq_steer 1 1 0 133333333 0 0 50000 Y
hdmi_glb_32k 1 1 0 32768 0 0 50000 Y
hdmi_cec 1 1 0 32768 0 0 50000 Y
As a consequence the drm_mode_validate_pipeline function of "drivers/gpu/drm/drm_probe_helper.c" fails with return value EINVAL when calling drm_bridge_chain_mode_valid function.
For the moment I have no specific kernel parameters for the DRM/HDMI support.
I have also integrated custom resolution support following https://community.nxp.com/t5/i-MX-Graphics/Driving-a-1080x1920-portrait-HDMI-screen/m-p/1218253#M92 but it seems to be involved later in the initialization process.
Distro is xwayland. Kernel version is 5.15.32.
Connecting a standard resolution screen is working and hdmy_phy clock is actiavted.
=> What is the trigger to activate hdmi_phy clock? Why hdmi_phy rate remains 0 for my custom screen?
Thanks for the support,
Joel
Solved! Go to Solution.
Hello @joanxie
32MHz. I just found this: https://community.nxp.com/t5/Other-NXP-Products/How-to-increase-the-hdmi-clock-on-the-imx8Mplus/m-p/... and this solve my specific resolution issue!!! I only modified the wrong driver, the one to be modified was drivers/phy/freescale/phy-fsl-samsung-hdmi.c
I'm now checking why the detection is not properly done, I still have to do "echo on > /sys/class/drm/card1-HDMI-A-1/status" to switch ON the display.
I will post here if I found the detection issue.
Joel
Hello @joanxie
32MHz. I just found this: https://community.nxp.com/t5/Other-NXP-Products/How-to-increase-the-hdmi-clock-on-the-imx8Mplus/m-p/... and this solve my specific resolution issue!!! I only modified the wrong driver, the one to be modified was drivers/phy/freescale/phy-fsl-samsung-hdmi.c
I'm now checking why the detection is not properly done, I still have to do "echo on > /sys/class/drm/card1-HDMI-A-1/status" to switch ON the display.
I will post here if I found the detection issue.
Joel
ok, imx8mp only support limited hdmi display, if you need non-standard hdmi display, you need tell me the pixel clock you need, then I can send the timings to you, you can add them into driver to support your new display
what hdmi display pixel clock you need to connect to the imx8mp hdmi port?