#define OV5640_REG_SIGMADELTA_CTRL0C   0x3c0c
 #define OV5640_REG_FRAME_CTRL01                0x4202
 #define OV5640_REG_FORMAT_CONTROL00    0x4300
+#define OV5640_REG_VFIFO_HSIZE         0x4602
+#define OV5640_REG_VFIFO_VSIZE         0x4604
 #define OV5640_REG_POLARITY_CTRL00     0x4740
 #define OV5640_REG_MIPI_CTRL00         0x4800
 #define OV5640_REG_DEBUG_MODE          0x4814
                              (ilog2(pclk_div) << 4));
 }
 
+/* set JPEG framing sizes */
+static int ov5640_set_jpeg_timings(struct ov5640_dev *sensor,
+                                  const struct ov5640_mode_info *mode)
+{
+       int ret;
+
+       ret = ov5640_write_reg16(sensor, OV5640_REG_VFIFO_HSIZE, mode->hact);
+       if (ret < 0)
+               return ret;
+
+       return ov5640_write_reg16(sensor, OV5640_REG_VFIFO_VSIZE, mode->vact);
+}
+
 /* download ov5640 settings to sensor through i2c */
 static int ov5640_set_timings(struct ov5640_dev *sensor,
                              const struct ov5640_mode_info *mode)
 {
        int ret;
 
+       if (sensor->fmt.code == MEDIA_BUS_FMT_JPEG_1X8) {
+               ret = ov5640_set_jpeg_timings(sensor, mode);
+               if (ret < 0)
+                       return ret;
+       }
+
        ret = ov5640_write_reg16(sensor, OV5640_REG_TIMING_DVPHO, mode->hact);
        if (ret < 0)
                return ret;