Hi @joanxie ,
FYR, We are on a custom carrier board similar to Yavia carrier board of Toradex. Only change being the lontium DSI to HDMI adaptor being replaced with ADV7535. We went with ADV7535 as it is also used by NXP in some of its products.
Therefore, we have done device tree modifications on top of Toradex's provided device trees for Yavia-wifi dts and its parent device tree sources.
The device tree nodes is question are
1. Mipi-dsi - Haven't modified anything here(changed back to default unlike previous post). It must be used by other NXP devices as well.
2. The ADV7535 specific nodes and overlays, what we have provided in prev post.
The drivers are sec_mipi_dsim-imx.c , sec-dsim.c , adv7511_drv.c , adv7533.c .
Now, after tweaking the device tree overlay. We are not getting the fin, fout error anymore.
Here are the dev_dbg logs from the above drivers.
torizon@verdin-imx8mp-15404184:~$ dmesg | grep drm
[ 0.000000] Kernel command line: root=LABEL=otaroot rootfstype=ext4 quiet logo.nologo vt.global_cursor_defau lt=0 plymouth.ignore-serial-consoles splash fbcon=map:3 ostree=/ostree/boot.1/torizon/7b778d635701b4e0bbc49652c 421a587ae63ff3c6cbfc07d964084a23df7631d/0
[ 2.771129] imx-drm display-subsystem: bound imx-lcdifv3-crtc.0 (ops lcdifv3_crtc_ops)
[ 2.771181] imx-drm display-subsystem: bound imx-lcdifv3-crtc.1 (ops lcdifv3_crtc_ops)
[ 2.772099] imx-drm display-subsystem: bound 32e60000.mipi_dsi (ops imx_sec_dsim_ops [sec_mipi_dsim_imx])
[ 2.772141] imx-drm display-subsystem: bound 32fd8000.hdmi (ops dw_hdmi_imx_ops)
[ 2.772468] [drm] Initialized imx-drm 1.0.0 20120507 for display-subsystem on minor 0
[ 2.869610] imx-drm display-subsystem: [drm] fb0: imx-drmdrmfb frame buffer device
[ 5.099098] systemd[1]: Starting Load Kernel Module drm...
[ 5.188031] systemd[1]: modprobe@drm.service: Deactivated successfully.
[ 5.188992] systemd[1]: Finished Load Kernel Module drm.
[ 5.262319] [drm] Initialized vivante 1.0.0 20170808 for 40000000.mix_gpu_ml on minor 1
torizon@verdin-imx8mp-15404184:~$ dmesg | grep dsim
[ 0.000000] Kernel command line: root=LABEL=otaroot rootfstype=ext4 quiet logo.nologo vt.global_cursor_defau lt=0 plymouth.ignore-serial-consoles splash fbcon=map:3 ostree=/ostree/boot.1/torizon/7b778d635701b4e0bbc49652c 421a587ae63ff3c6cbfc07d964084a23df7631d/0 dy
[ 2.759952] Kernel module loaded from ramdisk: sec_dsim - result: 0
[ 2.771246] imx_sec_dsim_drv 32e60000.mipi_dsi: sec-dsim bridge bind begin
[ 2.771290] imx_sec_dsim_drv 32e60000.mipi_dsi: version number is 0x1060200
[ 2.772085] imx_sec_dsim_drv 32e60000.mipi_dsi: sec-dsim bridge bind end
[ 2.772099] imx-drm display-subsystem: bound 32e60000.mipi_dsi (ops imx_sec_dsim_ops [sec_mipi_dsim_imx])
[ 2.916294] Kernel module loaded from ramdisk: sec_mipi_dsim_imx - result: 0
[ 3.259164] imx_sec_dsim_drv 32e60000.mipi_dsi: p: min = 1, max = 6, m: min = 88, max = 1023, s: min = 0, ma x = 5
[ 3.259252] imx_sec_dsim_drv 32e60000.mipi_dsi: fout = 390000, fin = 12000, m = 130, p = 1, s = 2, best_delt a = 0
[ 3.259262] imx_sec_dsim_drv 32e60000.mipi_dsi: no pre-exist hpar can be used
[ 18.521539] imx_sec_dsim_drv 32e60000.mipi_dsi: p: min = 1, max = 6, m: min = 88, max = 1023, s: min = 0, ma x = 5
[ 18.521629] imx_sec_dsim_drv 32e60000.mipi_dsi: fout = 390000, fin = 12000, m = 130, p = 1, s = 2, best_delt a = 0
[ 18.521640] imx_sec_dsim_drv 32e60000.mipi_dsi: no pre-exist hpar can be used
torizon@verdin-imx8mp-15404184:~$ dmesg | grep adv
[ 0.000000] Kernel command line: root=LABEL=otaroot rootfstype=ext4 quiet logo.nologo vt.global_cursor_default=0 plymouth.ignore-serial-consoles splash fbcon=map:3 ostree=/ostree/boot.1/torizon/7b778d635701b4e0bbc49652c421a587ae63ff3c6cbfc07d964084a23df7631d/0
[ 1.052362] adv7511 1-0039: Rev. 20
[ 4.325789] systemd[1]: System time before build time, advancing clock.
torizon@verdin-imx8mp-15404184:~$
With this, we are also able to generate a test colorbar pattern by setting the registers directly on ADV7535 using i2cset, implying ADV7535 to HDMI Sink display is working correctly. The problem lies in how iMX8MP is communicating with ADV7535.
We are still not getting any output on the display.
We would like to understand, is there any difference in how NXP have implemented ADV7535 in its products and how we are implementing it in terms of software as well as hardware approach.