}
        }
 
-       /* Frame number propagation. In continuous streaming mode the number
-        * is incremented in the frame start ISR. In mem-to-mem mode
-        * singleshot is used and frame start IRQs are not available.
-        * Thus we have to increment the number here.
-        */
-       if (pipe->do_propagation && mode == ISP_PIPELINE_STREAM_SINGLESHOT)
-               atomic_inc(&pipe->frame_number);
-
        return 0;
 }
 
 
        struct video_device *vdev = ccdc->subdev.devnode;
        struct v4l2_event event;
 
+       /* Frame number propagation */
+       atomic_inc(&pipe->frame_number);
+
        memset(&event, 0, sizeof(event));
        event.type = V4L2_EVENT_FRAME_SYNC;
        event.u.frame_sync.frame_sequence = atomic_read(&pipe->frame_number);
 
 static void ccp2_if_enable(struct isp_ccp2_device *ccp2, u8 enable)
 {
        struct isp_device *isp = to_isp_device(ccp2);
-       struct isp_pipeline *pipe = to_isp_pipeline(&ccp2->subdev.entity);
        int i;
 
        if (enable && ccp2->vdds_csib)
                        ISPCCP2_CTRL_MODE | ISPCCP2_CTRL_IF_EN,
                        enable ? (ISPCCP2_CTRL_MODE | ISPCCP2_CTRL_IF_EN) : 0);
 
-       /* For frame count propagation */
-       if (pipe->do_propagation) {
-               /* We may want the Frame Start IRQ from LC0 */
-               if (enable)
-                       isp_reg_set(isp, OMAP3_ISP_IOMEM_CCP2,
-                                   ISPCCP2_LC01_IRQENABLE,
-                                   ISPCCP2_LC01_IRQSTATUS_LC0_FS_IRQ);
-               else
-                       isp_reg_clr(isp, OMAP3_ISP_IOMEM_CCP2,
-                                   ISPCCP2_LC01_IRQENABLE,
-                                   ISPCCP2_LC01_IRQSTATUS_LC0_FS_IRQ);
-       }
-
        if (!enable && ccp2->vdds_csib)
                regulator_disable(ccp2->vdds_csib);
 }
              ISPCCP2_LC01_IRQSTATUS_LC0_CRC_IRQ |
              ISPCCP2_LC01_IRQSTATUS_LC0_FSP_IRQ |
              ISPCCP2_LC01_IRQSTATUS_LC0_FW_IRQ |
-             ISPCCP2_LC01_IRQSTATUS_LC0_FS_IRQ |
              ISPCCP2_LC01_IRQSTATUS_LC0_FSC_IRQ |
              ISPCCP2_LC01_IRQSTATUS_LC0_SSC_IRQ;
 
        if (omap3isp_module_sync_is_stopping(&ccp2->wait, &ccp2->stopping))
                return;
 
-       /* Frame number propagation */
-       if (lcx_irqstatus & ISPCCP2_LC01_IRQSTATUS_LC0_FS_IRQ) {
-               struct isp_pipeline *pipe =
-                       to_isp_pipeline(&ccp2->subdev.entity);
-               if (pipe->do_propagation)
-                       atomic_inc(&pipe->frame_number);
-       }
-
        /* Handle queued buffers on frame end interrupts */
        if (lcm_irqstatus & ISPCCP2_LCM_IRQSTATUS_EOF_IRQ)
                ccp2_isr_buffer(ccp2);
 
 static void csi2_irq_ctx_set(struct isp_device *isp,
                             struct isp_csi2_device *csi2, int enable)
 {
-       u32 reg = ISPCSI2_CTX_IRQSTATUS_FE_IRQ;
        int i;
 
-       if (csi2->use_fs_irq)
-               reg |= ISPCSI2_CTX_IRQSTATUS_FS_IRQ;
-
        for (i = 0; i < 8; i++) {
-               isp_reg_writel(isp, reg, csi2->regs1,
+               isp_reg_writel(isp, ISPCSI2_CTX_IRQSTATUS_FE_IRQ, csi2->regs1,
                               ISPCSI2_CTX_IRQSTATUS(i));
                if (enable)
                        isp_reg_set(isp, csi2->regs1, ISPCSI2_CTX_IRQENABLE(i),
-                                   reg);
+                                   ISPCSI2_CTX_IRQSTATUS_FE_IRQ);
                else
                        isp_reg_clr(isp, csi2->regs1, ISPCSI2_CTX_IRQENABLE(i),
-                                   reg);
+                                   ISPCSI2_CTX_IRQSTATUS_FE_IRQ);
        }
 }
 
        status = isp_reg_readl(isp, csi2->regs1, ISPCSI2_CTX_IRQSTATUS(n));
        isp_reg_writel(isp, status, csi2->regs1, ISPCSI2_CTX_IRQSTATUS(n));
 
-       /* Propagate frame number */
-       if (status & ISPCSI2_CTX_IRQSTATUS_FS_IRQ) {
-               struct isp_pipeline *pipe =
-                                    to_isp_pipeline(&csi2->subdev.entity);
-               if (pipe->do_propagation)
-                       atomic_inc(&pipe->frame_number);
-       }
-
        if (!(status & ISPCSI2_CTX_IRQSTATUS_FE_IRQ))
                return;
 
 {
        struct isp_csi2_device *csi2 = v4l2_get_subdevdata(sd);
        struct isp_device *isp = csi2->isp;
-       struct isp_pipeline *pipe = to_isp_pipeline(&csi2->subdev.entity);
        struct isp_video *video_out = &csi2->video_out;
 
        switch (enable) {
        case ISP_PIPELINE_STREAM_CONTINUOUS:
                if (omap3isp_csiphy_acquire(csi2->phy) < 0)
                        return -ENODEV;
-               csi2->use_fs_irq = pipe->do_propagation;
                if (csi2->output & CSI2_OUTPUT_MEMORY)
                        omap3isp_sbl_enable(isp, OMAP3_ISP_SBL_CSI2A_WRITE);
                csi2_configure(csi2);
 
        u32 output; /* output to CCDC, memory or both? */
        bool dpcm_decompress;
        unsigned int frame_skip;
-       bool use_fs_irq;
 
        struct isp_csiphy *phy;
        struct isp_csi2_ctx_cfg contexts[ISP_CSI2_MAX_CTX_NUM + 1];