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
已解决! 转到解答。
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