I'm using the i.mx35 in a project that involves video capture. I have the CSI configure to input to the IC (16 bit colour), which performs scaling and CSC, before outputting the video image to a framebuffer via DMA channel 1 (I believe). This is then sent to the SDC unit along with BG data from anther framebuffer using DMA 14, 15. A key colour is used for an overlay to display the video image. This is all being done through video 4 Linux 2 on Linux, kernel 2.6.28.
Our hardware is custom hardware, but based on the PDK reference board. (Our video decoder is different.)
However, occasionally when we start the capture, the output from the SDC switches off and a flag is raised in IPU_TASKS_STAT to indicate SDC_PIX_SKIP. I am not sure what this means. When this happens, the VF task is still active and does not appear to stop. The documentation says this indicates a SDC overrun and means skipped pixels - I am seeing no pixels.
The only way to recover from this is to stop the tasks/channels and then restart them. At the moment this check is being done in 'userspace'.
At the moment my only contact with Freescale is via a colleague in Japan who is getting support from a reseller. The vague answer to this problem I have is that it's a 'memory bandwidth' issue. (I'm in the UK.)
What I would like is more details about this flag and problem.
- What condition exactly causes this flag to be set?
- Is there a way to detect the problem in the IPU via an interrupt/error?
- Is the IPU switching off a clock when it detects this 'overrun'? (Overrun implies to me that something is trying to feed data into the SDC faster than it can deal with it? Is this is true?)
I have the IPU configured so DMA accesses for the relevant channels are high priority and the burst length is the highest it could be (This is because we're seeing horrendous flickering.). The IPU bus masters are also given high priority as well for DMA transfers. Increasing this was when this problem was introduced.
Is there anyone out there with experience with video capture on the i.mx35? We have had so many problems getting this working.