Other Parts Discussed in Thread: TDA4VH
Tool/software:
Hello TI,
We are working with the TDA4VH on our custom board and are trying to enable DSI0 output. (We are using Processor_SDK_j784s4 version 10)
DSI0 output is connected to the GMSL2 serializer/deserializer further.
We do have situation that PCLK is detected and VS is detected, but HS is not detected.
Both TDA4 and serializer show same error indications.
- We are using single-cam-app as test app (camera is working and is sending 30FPS).
- Display settings that we set in the code are:
- 4 lanes, 391.58Mbps lane speed, refClock 20Mhz., FPS 60
Htot | 1420 |
Hactive | 1280 |
Hfp | 100 |
Hsw | 20 |
Hbp | 20 |
Vtot | 766 |
Vactive | 720 |
Vfp | 32 |
Vsw | 4 |
Vbp | 10 |
Params are changed on more then one place, according to the other threads on the forum.
When we check the registers with devmem2, during running use case, we get following:
root@j784s4-evm:~# devmem2 0x048000EC /dev/mem opened. Memory mapped at address 0xffff95ce9000. Read at address 0x048000EC (0xffff95ce90ec): 0x00000023 root@j784s4-evm:~# devmem2 0x048000C0 /dev/mem opened. Memory mapped at address 0xffffa7adf000. Read at address 0x048000C0 (0xffffa7adf0c0): 0x0030002E root@j784s4-evm:~# devmem2 0x048000B4 /dev/mem opened. Memory mapped at address 0xffff99586000. Read at address 0x048000B4 (0xffff995860b4): 0x00020284 root@j784s4-evm:~# devmem2 0x048000C4 /dev/mem opened. Memory mapped at address 0xffff8e46e000. Read at address 0x048000C4 (0xffff8e46e0c4): 0x01260F00 root@j784s4-evm:~# devmem2 0x048000F0 /dev/mem opened. Memory mapped at address 0xffffb6211000. Read at address 0x048000F0 (0xffffb62110f0): 0x00000004 root@j784s4-evm:~#
In the dss_dctrlDsi.c file we noticed following code block (function dssDctrlUpdateVideoSizeConfig)
We have set vFrontPorch to our forwarded value, and VSync is detected.
But for the hSync apart from multiplication with BPP, additional values are used: 14,12,6,20.
Can you explain these values, and how are they calculated?
horzTotal = mInfo->width + mInfo->hFrontPorch + mInfo->hBackPorch + mInfo->hSyncLen; dsiObj->videoSizeCfg.vact = mInfo->height; if (DSS_DSI_CONNECTION_DSI2DP_BRIDGE != connectedTo) { dsiObj->videoSizeCfg.vfp = 1; } else { //We have forced entering here, even we do not have DSI2DP bridge dsiObj->videoSizeCfg.vfp = mInfo->vFrontPorch; } dsiObj->videoSizeCfg.vbp = mInfo->vBackPorch; dsiObj->videoSizeCfg.vsa = mInfo->vSyncLen; dsiObj->videoSizeCfg.hsa = (mInfo->hSyncLen * BPP) - 14U; dsiObj->videoSizeCfg.hbp = (mInfo->hBackPorch * BPP) - 12U; dsiObj->videoSizeCfg.rgb = mInfo->width * BPP; dsiObj->videoSizeCfg.hfp = (mInfo->hFrontPorch * BPP) - 6U; dsiObj->videoSizeCfg.blkLinePulsePacket = (horzTotal * BPP) - 20U - dsiObj->videoSizeCfg.hsa;
Do you have other idea, what we can check and what might be wrong?
Best regards,
Milena