buf = list_first_entry(&cam->buffers, struct mcam_vb_buffer, queue);
        list_del_init(&buf->queue);
+       /*
+        * Very Bad Not Good Things happen if you don't clear
+        * C1_DESC_ENA before making any descriptor changes.
+        */
+       mcam_reg_clear_bit(cam, REG_CTRL1, C1_DESC_ENA);
        mcam_reg_write(cam, REG_DMA_DESC_Y, buf->dma_desc_pa);
        mcam_reg_write(cam, REG_DESC_LEN_Y,
                        buf->dma_desc_nent*sizeof(struct mcam_dma_desc));
        mcam_reg_write(cam, REG_DESC_LEN_U, 0);
        mcam_reg_write(cam, REG_DESC_LEN_V, 0);
+       mcam_reg_set_bit(cam, REG_CTRL1, C1_DESC_ENA);
        cam->vb_bufs[0] = buf;
 }
 
 
        mcam_reg_clear_bit(cam, REG_CTRL1, C1_DESC_3WORD);
        mcam_sg_next_buffer(cam);
-       mcam_reg_set_bit(cam, REG_CTRL1, C1_DESC_ENA);
        cam->nbufs = 3;
 }
 
         */
        if (cam->state != S_STREAMING)
                return;
-       /*
-        * Very Bad Not Good Things happen if you don't clear
-        * C1_DESC_ENA before making any descriptor changes.
-        */
-       mcam_reg_clear_bit(cam, REG_CTRL1, C1_DESC_ENA);
        /*
         * If we have another buffer available, put it in and
         * restart the engine.
         */
        if (!list_empty(&cam->buffers)) {
                mcam_sg_next_buffer(cam);
-               mcam_reg_set_bit(cam, REG_CTRL1, C1_DESC_ENA);
                mcam_ctlr_start(cam);
        /*
         * Otherwise set CF_SG_RESTART and the controller will