We had added Onsemi sensor driver into Google Coral Dev board. The system is working and can get 1080p30 and 720p30 streaming correctly. But some times, after boot up, the system cannot streaming.
After debugging, found the no streaming issue is related to iMX8 CSI block. When streaming properly, read “CSI Status Register” BIT0 value, most of time is zero. That mean RXFIFO is not ready --- image data have been passed to frame buffer quickly. But when no streaming issue occur, the “CSI Status Register” BIT0 most of time is one. That mean RXFIFO is full but image data did not passed to frame buffer. Looks like the DMA is not working properly. Same time checked “CSI DMA Start Address Register” FB1 and FB2, when streaming properly, their value are dynamically change. When no streaming issue occur, FB1 and FB2 value are fixed.
When no streaming issue occur, read "CSI Control Register 3" frame counter, the number is increasing. It is same as streaming work case.
The issue looks like iMX8 CSI block did not be initialed properly in boot up time. Any idea to debug and fix the problem?
for RXFIFO issues one can try suggestions provided on
Checked RXFIFO overflow issue, it is related to CPU loading. But our issue occur just after linux boot up before run any applications. Also noticed the issue is very easy occur when system become hot. After system become hot, reboot linux, will much easy to trigger the problem. When system is could, I never reproduce the problem. Not sure how to fix it.
please try to reproduce issue on NXP i.MX8MQ EVK reference board
with official linux releases from source.codeaurora.org/external/imx/linux-imx repository