On Mon, Oct 10, 2011 at 12:35 AM, Enrico <ebutera@xxxxxxxxxxxxxxxx> wrote: > On Sat, Oct 8, 2011 at 6:11 PM, Javier Martinez Canillas > <martinez.javier@xxxxxxxxx> wrote: >> Yes, I'll cook a patch today on top on your omap3isp-yuv and send for >> review. I won't be able to test neither since I don't have proper >> hardware at home. But at least you will get an idea of the approach we >> are using to solve this and can point possible flaws. > > 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. Best regards, -- Javier Martínez Canillas (+34) 682 39 81 69 Barcelona, Spain -- 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