I'm using v4l on an IMX35 based platform, and have seen a sporadic issue when enabling v4l overlay capture causes video output to stop and the result is a blank screen. The blank screen happens when using the VIDEOC_OVERLAY ioctl on the v4l device.
When this happens, I notice that a the SDC_PIX_SKIP is set in IPU_TASKS_STAT (Which is set to 0x2203) It happens mainly on first attempt at video capture, and the frequency is perhaps 1/20 times.
Attempts to stop capture throw up an warning that tasks cannot be stopped (
DMASDC_0_BUSY is set in the IDMAC_CHA_BUSY register, and never seems to go to zero).
- BG plane is being used for Qt graphics.
- FG plane is being used to capture video, but switched around so graphics is rendered on top (I'm using a key colour.)
I see this error as I am using an EOF interrupt to detect if video capture has stopped [Video freeze has been spotted in certain environmental conditions, and Freescale advised us to use the EOF interrupt as a means to check if capture has frozen] (I write a flag into the IMX internal RAM every frame, and check this value in userland and reset the flag. If the flag never gets detected, then I have to reset video capture. In the case when the 'blank screen' occurs the flag is never written and attempts to stop video capture just give the warning.)
I don't know what the relevance of SDC_PIX_SKIP is, as I cannot find it documented anywhere. It seems a bit suspicious that this bit is set, as it appears to indicate some sort of error condition. Does anyone know what this is?
I don't know whether it's relevant, but Linux is booted from u-boot which has a IMX35 fb driver installed. The drivers are mainly the standard v4l drivers, with a new module for an external analogue->digital converter.
Thanks in advance for any help!
Oh, one thing I noticed is that when the v4l driver is a loadable module, the blank screen happened more frequently than if it was compiled into the kernel.