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.

Using etiher only VD0 OR VD1 interrupt on OMAP3530 ISP

Other Parts Discussed in Thread: OMAP3530

Hi All,

On OMAP3530 camera ISP interface, there are VD0 and VD1 interrupts. These two interrupts are configured using ISPCCDC_VDINT register. 

On 2.6.29 OMAP - ISP driver, the ISPCCDC_VDINT register configured as follows, (from ispccdc.c source)

        isp_reg_writel((((ispccdc_obj.ccdcout_h - 25) &
                    ISPCCDC_VDINT_0_MASK) <<
                    ISPCCDC_VDINT_0_SHIFT) |
                    ((50 & ISPCCDC_VDINT_1_MASK) <<
                    ISPCCDC_VDINT_1_SHIFT),
                    OMAP3_ISP_IOMEM_CCDC,
                    ISPCCDC_VDINT);

Can anybody please explains why 25  and 50 magic numbers are required here?.

Also please guide me on how VD0 and VD1 works based on the ISPCCDC_VDINT register? OR how to use either VD0 only or VD1 only in the ISP driver, so that  the ISP driver can avoid the one extra interrupt?

Thanks in Advance.

 

 

  • Quick summary of what these two interrupts do from (sprufa2b.pdf-june 2009) 1.5.2.3.2.  These two interrupts trigger after reaching a certain number of horizontal lines, in this case 25 and 50 respectively.  The numbers are just picked out of the blue because the isp driver in the 2.6.22 kernel does not act upon the interrupt.  It will service the interrupt but will not performing any actions to those interrupt.

    The CCDC0 and CCDC1 events do trigger either in ONE_SHOT or CONTINUOUS mode, it merely counts the horizontal lines that have come from the start of the vertical sync.

    You can set the interrupt trigger upon reach [1 to 32768] horizontal lines if you want this to valid a frame, you should set the value for example to:

    isp_reg_writel((((ispccdc_obj.ccdcout_h - 1) &
                        ISPCCDC_VDINT_0_MASK) <<
                        ISPCCDC_VDINT_0_SHIFT) |
                        ((0 & ISPCCDC_VDINT_1_MASK) <<
                        ISPCCDC_VDINT_1_SHIFT),
                        OMAP3_ISP_IOMEM_CCDC,
                        ISPCCDC_VDINT);

    This will trigger after the full frame (or ispccdc_obj.ccdcout_h hoizontal lines), assuming no blanking lines before the valid data.