]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
ENGR00234362 Camera: ov5640_mipi: wait for sensor stable before streamon
authorSheng Nan <b38800@freescale.com>
Fri, 23 Nov 2012 02:59:22 +0000 (10:59 +0800)
committerLothar Waßmann <LW@KARO-electronics.de>
Fri, 24 May 2013 06:35:45 +0000 (08:35 +0200)
ov5642 add some delay to wait for sensor stable after S_PARM.
And ov5640_mipi should keep the same behavior.
So the upper layer can trust the first frame comes out of ov5640_mipi.

- delay added according to the recommended time from ov company

Signed-off-by: Sheng Nan <b38800@freescale.com>
drivers/media/video/mxc/capture/ov5640_mipi.c

index bde39a51d36851f130100bfa0a345c849816a24e..d2b79d2162befc5096bca46bfb449f5eaacff45c 100644 (file)
@@ -1216,7 +1216,7 @@ static int ov5640_init_mode(enum ov5640_frame_rate frame_rate,
        s32 ArySize = 0;
        int retval = 0;
        void *mipi_csi2_info;
-       u32 mipi_reg;
+       u32 mipi_reg, msec_wait4stable = 0;
        enum ov5640_downsize_mode dn_mode, orig_dn_mode;
 
        if ((mode > ov5640_mode_MAX || mode < ov5640_mode_MIN)
@@ -1288,6 +1288,20 @@ static int ov5640_init_mode(enum ov5640_frame_rate frame_rate,
        OV5640_set_bandingfilter();
        ov5640_set_virtual_channel(ov5640_data.csi);
 
+       /* add delay to wait for sensor stable */
+       if (mode == ov5640_mode_QSXGA_2592_1944) {
+               /* dump the first two frames: 1/7.5*2
+                * the frame rate of QSXGA is 7.5fps */
+               msec_wait4stable = 267;
+       } else if (frame_rate == ov5640_15_fps) {
+               /* dump the first nine frames: 1/15*9 */
+               msec_wait4stable = 600;
+       } else if (frame_rate == ov5640_30_fps) {
+               /* dump the first nine frames: 1/30*9 */
+               msec_wait4stable = 300;
+       }
+       msleep(msec_wait4stable);
+
        if (mipi_csi2_info) {
                unsigned int i;