curr_buf = cap->buf.curr;
 
        if (curr_buf) {
-               curr_buf->vb.sequence = atomic_read(&isp->frame_sequence);
+               curr_buf->vb.sequence = isp->frame_sequence;
                curr_buf->vb.vb2_buf.timestamp = ktime_get_boottime_ns();
                curr_buf->vb.field = V4L2_FIELD_NONE;
                vb2_buffer_done(&curr_buf->vb.vb2_buf, VB2_BUF_STATE_DONE);
 
        if (rkisp1->active_sensor->mbus_type != V4L2_MBUS_CSI2_DPHY)
                return -EINVAL;
 
-       atomic_set(&rkisp1->isp.frame_sequence, -1);
+       rkisp1->isp.frame_sequence = -1;
        mutex_lock(&isp->ops_lock);
        ret = rkisp1_config_cif(rkisp1);
        if (ret)
        struct v4l2_event event = {
                .type = V4L2_EVENT_FRAME_SYNC,
        };
+       event.u.frame_sync.frame_sequence = isp->frame_sequence;
 
-       /*
-        * Increment the frame sequence on the vsync signal.
-        * This will allow applications to detect dropped.
-        * Note that there is a debugfs counter for dropped
-        * frames, but using this event is more accurate.
-        */
-       event.u.frame_sync.frame_sequence =
-               atomic_inc_return(&isp->frame_sequence);
        v4l2_event_queue(isp->sd.devnode, &event);
 }
 
        rkisp1_write(rkisp1, status, RKISP1_CIF_ISP_ICR);
 
        /* Vertical sync signal, starting generating new frame */
-       if (status & RKISP1_CIF_ISP_V_START)
+       if (status & RKISP1_CIF_ISP_V_START) {
+               rkisp1->isp.frame_sequence++;
                rkisp1_isp_queue_event_sof(&rkisp1->isp);
-
+       }
        if (status & RKISP1_CIF_ISP_PIC_SIZE_ERROR) {
                /* Clear pic_size_error */
                isp_err = rkisp1_read(rkisp1, RKISP1_CIF_ISP_ERR);
 
         * frame_sequence + 1 here to indicate to userspace on which frame these parameters
         * are being applied.
         */
-       unsigned int frame_sequence = atomic_read(&rkisp1->isp.frame_sequence) + 1;
+       unsigned int frame_sequence = rkisp1->isp.frame_sequence + 1;
        struct rkisp1_params *params = &rkisp1->params;
 
        spin_lock(¶ms->config_lock);
 
 {
        struct rkisp1_stat_buffer *cur_stat_buf;
        struct rkisp1_buffer *cur_buf = NULL;
-       unsigned int frame_sequence =
-               atomic_read(&stats->rkisp1->isp.frame_sequence);
+       unsigned int frame_sequence = stats->rkisp1->isp.frame_sequence;
        u64 timestamp = ktime_get_ns();
 
        /* get one empty buffer */