On 12/02/2010 07:35 AM, Laurent Pinchart wrote:
[snip]
Any ideas on the problem? Is there a way to force a reset to the CCDC so
that it will become IDLE?
Would you expect the ISP to recover gracefully if you removed the OMAP3530 or
the RAM from the board and plugged it back ? The same applies to the sensor
:-)
Long story short, once started, the CCDC can't be stopped before the end of
the image. When you unplug the sensor the CCDC will wait forever for the end
of frame. When restarted it will resume working to the previous, no longer
mapped buffer, leading to IOMMU faults.
The CCDC, like most ISP blocks, can't be reset individually. You need to reset
the whole ISP to recover from this (blame whoever decided that individual
block resets were not useful). This was done before on streamoff, but now that
the ISP driver supports running multiple pipelines in parallel we can't do it
anymore.
It might be possible to write a clean patch to reset the ISP when all streams
are stopped. In the meantime you can rmmod/modprobe the driver.
Laurent,
Thanks for the feedback. The behavior makes perfect sense now. I can
take it from here. Given the user *can* unplug the sensor module in our
hardware, I need to do something, as locking up the kernel is not
acceptable. I will first look to see if an ISP reset on stream off
works, as we can sacrifice multiple pipeline support (for now).
Lane
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html