This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

ccdc remains busy giving error "omap3isp: ccdc 1 won't became idle"

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