v4l2_fill_pix_format(&ctx->v_fmt.fmt.pix, &mbus_fmt);
        ctx->v_fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
-       ctx->v_fmt.fmt.pix.pixelformat  = fmt->fourcc;
+       ctx->v_fmt.fmt.pix.pixelformat = fmt->fourcc;
+       ctx->v_fmt.fmt.pix.field = mbus_fmt.field;
        cal_calc_format_size(ctx, fmt, &ctx->v_fmt);
        ctx->fmt = fmt;
-       ctx->m_fmt = mbus_fmt;
        *f = ctx->v_fmt;
 
        return 0;
                return -EINVAL;
        }
 
-       /* Save current subdev format */
+       /* Save current format */
        v4l2_fill_pix_format(&ctx->v_fmt.fmt.pix, &mbus_fmt);
        ctx->v_fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
-       ctx->v_fmt.fmt.pix.pixelformat  = fmt->fourcc;
+       ctx->v_fmt.fmt.pix.pixelformat = fmt->fourcc;
+       ctx->v_fmt.fmt.pix.field = mbus_fmt.field;
        cal_calc_format_size(ctx, fmt, &ctx->v_fmt);
        ctx->fmt = fmt;
-       ctx->m_fmt = mbus_fmt;
 
        return 0;
 }
 
 static inline void cal_process_buffer_complete(struct cal_ctx *ctx)
 {
        ctx->cur_frm->vb.vb2_buf.timestamp = ktime_get_ns();
-       ctx->cur_frm->vb.field = ctx->m_fmt.field;
+       ctx->cur_frm->vb.field = ctx->v_fmt.fmt.pix.field;
        ctx->cur_frm->vb.sequence = ctx->sequence++;
 
        vb2_buffer_done(&ctx->cur_frm->vb.vb2_buf, VB2_BUF_STATE_DONE);
 
        /* video capture */
        const struct cal_fmt    *fmt;
        /* Used to store current pixel format */
-       struct v4l2_format              v_fmt;
-       /* Used to store current mbus frame format */
-       struct v4l2_mbus_framefmt       m_fmt;
+       struct v4l2_format      v_fmt;
 
        /* Current subdev enumerated format */
        const struct cal_fmt    **active_fmt;