int power_count;
 
        struct v4l2_mbus_framefmt fmt;
+       bool pending_fmt_change;
 
        const struct ov5640_mode_info *current_mode;
        enum ov5640_frame_rate current_fr;
  * should be identified and removed to speed register load time
  * over i2c.
  */
-
+/* YUV422 UYVY VGA@30fps */
 static const struct reg_value ov5640_init_setting_30fps_VGA[] = {
        {0x3103, 0x11, 0, 0}, {0x3008, 0x82, 0, 5}, {0x3008, 0x42, 0, 0},
        {0x3103, 0x03, 0, 0}, {0x3017, 0x00, 0, 0}, {0x3018, 0x00, 0, 0},
 
        if (new_mode != sensor->current_mode) {
                sensor->current_mode = new_mode;
-               sensor->fmt = *mbus_fmt;
                sensor->pending_mode_change = true;
        }
+       if (mbus_fmt->code != sensor->fmt.code) {
+               sensor->fmt = *mbus_fmt;
+               sensor->pending_fmt_change = true;
+       }
 out:
        mutex_unlock(&sensor->lock);
        return ret;
                        ret = ov5640_set_mode(sensor, sensor->current_mode);
                        if (ret)
                                goto out;
+               }
 
+               if (enable && sensor->pending_fmt_change) {
                        ret = ov5640_set_framefmt(sensor, &sensor->fmt);
                        if (ret)
                                goto out;
+                       sensor->pending_fmt_change = false;
                }
 
                if (sensor->ep.bus_type == V4L2_MBUS_CSI2)
                return -ENOMEM;
 
        sensor->i2c_client = client;
+
+       /*
+        * default init sequence initialize sensor to
+        * YUV422 UYVY VGA@30fps
+        */
        fmt = &sensor->fmt;
-       fmt->code = ov5640_formats[0].code;
-       fmt->colorspace = ov5640_formats[0].colorspace;
+       fmt->code = MEDIA_BUS_FMT_UYVY8_2X8;
+       fmt->colorspace = V4L2_COLORSPACE_SRGB;
        fmt->ycbcr_enc = V4L2_MAP_YCBCR_ENC_DEFAULT(fmt->colorspace);
        fmt->quantization = V4L2_QUANTIZATION_FULL_RANGE;
        fmt->xfer_func = V4L2_MAP_XFER_FUNC_DEFAULT(fmt->colorspace);
        sensor->current_fr = OV5640_30_FPS;
        sensor->current_mode =
                &ov5640_mode_data[OV5640_30_FPS][OV5640_MODE_VGA_640_480];
-       sensor->pending_mode_change = true;
 
        sensor->ae_target = 52;