Dear Sirs
I am working with a parallel camera ov10620. The system works adquiring video and simultaneously play video with the resizer operating continuously . The unit operate usually good for 30 or 40 hours ; but after some random time the ccdc became busy giving the error "omap3isp: ccdc 1 won't became idle" .
The camera is using the clock from omap and the camera generates the v-sync and h sync ( I checked with oscilloscope) . Both sync are continuous generated , so no loose of lines or pixels by hardware .
I checked the software and I confirm that the check of the error "omap3isp: ccdc 1 won't became idle" . is produced after the interrupt (irqstatus & CCDC_VD0), it means that the event of the number of lines and pixel is complete and detected by omap .
So I can not understand why the ccdc is busy forever . I will apreciate if any TI member can support in this problem.
In addition I try to recover this situation , just missing one buffer and continuous ; but for some reason this do not happen . it means, after the problem , I disable the ccdc and enable again ; but even when we disable the ccdc looks like is not busy ( it do not show the printk("not recover ccdc busy\n")) but it fail again every continuosusly
if (RAW_CAPTURE(isp) && ispccdc_sbl_wait_idle(&isp->isp_ccdc, 10000)) {
dev_err(dev, "ccdc %d won't become idle!\n",
RAW_CAPTURE(isp));
// MLP prueba
// imprime registros leidos
for (i=0;i<100;i++) printk("MLP test de reguistros isd ccdc i=%i dato= %X \n",i,Registros[i]);
for (i=0;i<100;i++) printk("MLP test de reguistros isp main i=%i dato= %X \n",i,Registros_main[i]);
for (i=0;i<100;i++) printk("MLP test de reguistros sbl i=%i dato= %X \n",i,Registros_sbl[i]);
for (i=0;i<50;i++) printk("MLP test de reguistros cbuf i=%i dato= %X \n",i,Registros_cbuf[i]);
for (i=0;i<50;i++) printk("MLP test de reguistros prev i=%i dato= %X \n",i,Registros_preview[i]);
for (i=0;i<50;i++) printk("MLP test de reguistros resz i=%i dato= %X \n",i,Registros_resizer[i]);
ispccdc_enable(&isp->isp_ccdc, 0);
if(ispccdc_sbl_wait_idle(&isp->isp_ccdc, 10000)) printk("not recover ccdc busy\n");
ispccdc_enable(&isp->isp_ccdc, 1);
Many thanks for your support
Manuel