On Mon, Oct 10, 2011 at 1:00 AM, Javier Martinez Canillas <martinez.javier@xxxxxxxxx> wrote: > On Mon, Oct 10, 2011 at 12:35 AM, Enrico <ebutera@xxxxxxxxxxxxxxxx> wrote: >> I made some tests and unfortunately there are some problems. >> >> Note: i made these tests picking some patches from omap3isp-yuv branch >> and applying to igep 3.1.0rc9 kernel (more or less like mainline + >> some bsp patches) so maybe i made some mistakes (the tvp5150 driver is >> patched too), but due to the nature of the problems i don't think this >> is the case. >> >> Javier patches v1: i can grab frames with yavta but i get only garbage. >> >> Javier patches v2: i cannot grab frames with yavta (it hangs). I see >> only 2 interrupts on the isp, then stops. >> >> I compared Javier-v2 registers setup with Deepthy's patches and there >> are some differences. Moreover i remember that in Deepthy patches vd1 >> interrupt was not used (and in fact i had the same yavta-hanging >> problem before, and Deepthy patches solved it). >> >> I think Javier-v1 patches didn't hang the isp because they changed >> vd0/vd1 logic too, so maybe there were only some wrong isp registers >> but the logic was correct. >> >> Now i wonder if it could be easier/better to port Deepthy patches >> first and then add Javier fixes... >> >> Enrico >> > > Hi Enrico, > > Yes, you are right in interlaced mode the VD1 interrupt handler > doesn't have to be executed. In v1 there is a conditional execution > and that is why the ISP doesn't hang up. > > Could you please try changing this on ispccdc.c with v2 patches? > > diff --git a/drivers/media/video/omap3isp/ispccdc.c > b/drivers/media/video/omap3isp/ispccdc.c > index 9b40968..bfd3f46 100644 > --- a/drivers/media/video/omap3isp/ispccdc.c > +++ b/drivers/media/video/omap3isp/ispccdc.c > @@ -1658,7 +1658,8 @@ int omap3isp_ccdc_isr(struct isp_ccdc_device > *ccdc, u32 events) > if (ccdc->state == ISP_PIPELINE_STREAM_STOPPED) > return 0; > > - if (events & IRQ0STATUS_CCDC_VD1_IRQ) > + if ((events & IRQ0STATUS_CCDC_VD1_IRQ) && > + !ccdc_input_is_fldmode(ccdc)) > ccdc_vd1_isr(ccdc); > > ccdc_lsc_isr(ccdc, events); > > With this change the ISP shouldn't hang but I don't know if you will > get the right data. I tried that but i only get this: root@igep0020:~# yavta -c4 -f UYVY -s 720x625 -n 4 /dev/video2 Device /dev/video2 opened. Device `OMAP3 ISP CCDC output' on `media' is a video capture device. Video format set: UYVY (59565955) 720x625 buffer size 900000 Video format: UYVY (59565955) 720x625 buffer size 900000 4 buffers requested. length: 900000 offset: 0 Buffer 0 mapped at address 0x4027a000. length: 900000 offset: 901120 Buffer 1 mapped at address 0x403de000. length: 900000 offset: 1802240 Buffer 2 mapped at address 0x4059b000. length: 900000 offset: 2703360 Buffer 3 mapped at address 0x40748000. [ 952.675170] omap3isp omap3isp: CCDC won't become idle! [ 952.695159] omap3isp omap3isp: CCDC won't become idle! [ 952.715179] omap3isp omap3isp: CCDC won't become idle! [ 952.735137] omap3isp omap3isp: CCDC won't become idle! and it continues forever saying that. I'm going to try to apply Deepthy patches on omap3isp-yuv and hope it will work. Enrico -- 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