Re: OMAP3 ISP and tvp5151 driver.
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Date: 2011-01-19 11:21:26
Hi Enric, On Wednesday 19 January 2011 12:05:54 Enric Balletbò i Serra wrote:
2011/1/18 Laurent Pinchart [off-list ref]:quoted
On Tuesday 18 January 2011 10:20:43 Enric Balletbò i Serra wrote:quoted
Now seems yavta is blocked dequeuing a buffer ( VIDIOC_DQBUF ), with strace I get $ strace ./yavta -f SGRBG10 -s 720x525 -n 1 --capture=1 -F /dev/video2 mmap2(NULL, 756000, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0) = 0x4011f000 write(1, "Buffer 0 mapped at address 0x401"..., 39Buffer 0 mapped at address 0x4011f000. ) = 39 ioctl(3, VIDIOC_QBUF or VT_SETACTIVATE, 0xbede36cc) = 0 ioctl(3, VIDIOC_STREAMON, 0xbede365c) = 0 gettimeofday({10879, 920196}, NULL) = 0 ioctl(3, VIDIOC_DQBUF and the code where stops is here ispqueue.c 913 buf = list_first_entry(&queue->queue, struct isp_video_buffer, stream); 914 ret = isp_video_buffer_wait(buf, nonblocking); Any idea ?My guess is that the CCDC doesn't receive the amount of lines it expects. The CCDC generates an interrupt at 2/3 of the image and another one at the beginning of the last line. Start by checking if the ISP generates any interrupt to the host with cat /proc/interrupts. If it doesn't, then the CCDC receives less than 2/3 of the expected number of lines. If it does, it probably receives between 2/3 and 3/3. You can add printk statements in ispccdc_vd0_isr() and ispccdc_vd1_isr() to confirm this.Looks like my problem is that ispccdc_vd0_isr() and ispccdc_vd1_isr() are never called, adding printk in these functions I see only a lots of ispccdc_hs_vs_isr(), Seems the CCDC receives less than 2/3 of expected number lines. Using an oscilloscope I see VS and HS data lines of the camera interface, so seems physical interface is working. I guess I'm missing something to configure in tvp5150 driver but I don't know. Any help ?
Try to hack the ISP driver to generate the VD1 interrupt much earlier (after a couple of lines only). If you get it, then modify the number of lines to see how many lines the CCDC receives. This should hopefully give you a hint. -- Regards, Laurent Pinchart