This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TDA4VM: CSI RX Debug Help

Part Number: TDA4VM


Hello

I'm bringing up a custom board based on the TDA4VM. The board will connect to a daughterboard which has a few cameras on it. They're connected with a large FFC ribbon cable. I2C and MIPI signals are brought out to the connector and hooked directly to the CMOS sensors-- there's no intermediate like FPDLink or GMSL.

We're having issues getting the cameras to work in this configuration. Our driver can successfully enumerate and talk i2c with the sensor. We can start streaming, but no frames arrive. We're using the latest processor sdk linux and V4L2. We've had success with our driver / devicetree overlays on SK-TDA4VM and BeagleBone AI64 dev boards connected to individual CMOS reference modules from the CMOS vendor. We've also tested the camera daughterboard on other platforms. So we suspect that the unique combination of our board and the daughterboard has a signal integrity issue.

What registers, interrupts etc. could I inspect to see the status of the DPHY / CIS RX subsystems? There are a number of forum posts asking similar questions, and the posters are asked to provide register dumps. I've tried using devmem2 / k3conf to dump registers, but it always results in a kernel panic. Furthermore, I wouldn't know what registers to dump and how to interpret the results, even If I got any. I haven't found much related material in the TRM. Is there a guide or document which describes the registers and their interpretation? Is there a reason I'm getting kernel panics?

Thanks

/dev/mem opened.[ 1233.871465] SError Interrupt on CPU0, code 0x00000000bf000000 -- SError
[ 1233.871480] CPU: 0 PID: 731 Comm: devmem2 Tainted: G           O       6.1.46-g5892b80d6b #1
[ 1233.871485] Hardware name: BeagleBoard.org BeagleBone AI-64 (DT)
[ 1233.871487] pstate: 40000000 (nZcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[ 1233.871491] pc : 0000ffff80c47c68
[ 1233.871493] lr : 0000ffff80c49ed0
[ 1233.871494] sp : 0000ffffea3d4870
[ 1233.871496] x29: 0000ffffea3d4870 x28: 0000000000000000 x27: 0000000000412000
[ 1233.871502] x26: 0000ffff80c6b104 x25: 0000ffffea3d4c38 x24: 0000ffffea3d4a40
[ 1233.871506] x23: 0000000000000003 x22: 0000000000000002 x21: 0000000000000048
[ 1233.871510] x20: 0000ffff80c74360 x19: 0000000000412018 x18: 0000000000000000
[ 1233.871514] x17: 0000ffff80c49e88 x16: 0000000000411ff8 x15: 0000000000000001
[ 1233.871518] x14: 0000000000000001 x13: 2073736572646461 x12: 0000ffff80c6b000
[ 1233.871522] x11: 000000000000000e x10: 000000000000000a x9 : 0000ffffea3d48b4
[ 1233.871526] x8 : 0000000000000040 x7 : 3030306236633038 x6 : 0000000000400358
[ 1233.871530] x5 : 0000000000000000 x4 : 0000000000411f68 x3 : 0000000000000000
[ 1233.871534] x2 : 00000000004003b8 x1 : 0000000000000008 x0 : 0000000000400550
[ 1233.871538] Kernel panic - not syncing: Asynchronous SError Interrupt
[ 1233.871541] CPU: 0 PID: 731 Comm: devmem2 Tainted: G           O       6.1.46-g5892b80d6b #1
[ 1233.871544] Hardware name: BeagleBoard.org BeagleBone AI-64 (DT)
[ 1233.871546] Call trace:
[ 1233.871548]  dump_backtrace+0xd8/0x130
[ 1233.871565]  show_stack+0x18/0x30
[ 1233.871570]  dump_stack_lvl+0x68/0x84
[ 1233.871577]  dump_stack+0x18/0x34
[ 1233.871580]  panic+0x188/0x348
[ 1233.871585]  nmi_panic+0xac/0xb0
[ 1233.871592]  arm64_serror_panic+0x6c/0x7c
[ 1233.871595]  do_serror+0x58/0x5c
[ 1233.871598]  __el0_error_handler_common+0x40/0xa4
[ 1233.871602]  el0t_64_error_handler+0x10/0x20
[ 1233.871607]  el0t_64_error+0x18c/0x190
[ 1233.871610] SMP: stopping secondary CPUs
[ 1233.871626] Kernel Offset: disabled
[ 1233.871627] CPU features: 0x40000,20028084,0000420b
[ 1233.871630] Memory Limit: none