Hi,
I'm working with an OMAP3 DM3730 processor module with a AR0130 Aptina camera (1280x960x12bit) attached on parallel interface. The system runs Linux (3.0.50) and a Qt application. The Qt application implements v4l2 capabilities required to capture pictures from an the attached camera. It's implemented similar to yavta.
When configuring the ISP pipeline in the following way, image capturing will work stable:
Sensor->CCDC->Preview->Resizer->Memory
When configuring it to:
Sensor->CCDC->Memory
it will start and stop streaming once (for a variable number of frames), but the whole system will completely hang when trying to start streaming a second time (including the Kernel). This problem does not depend on the number of buffers allocated. I've printk'd this problem down to the following routine, where the whole system freezes.
The freeze occurs after leaving the loop 'list_for_each_entry'.
Does someone have an idea what might cause this freeze or how i could further debug this problem?
Thanks a lot,
Michael
int omap3isp_video_queue_streamon(struct isp_video_queue *queue) { struct isp_video_buffer *buf; unsigned long flags; mutex_lock(&queue->lock); if (queue->streaming) goto done; queue->streaming = 1; spin_lock_irqsave(&queue->irqlock, flags); list_for_each_entry(buf, &queue->queue, stream) { queue->ops->buffer_queue(buf); } spin_unlock_irqrestore(&queue->irqlock, flags); done: mutex_unlock(&queue->lock); return 0; }