]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ENGR00177944 v4l2 capture: enable mclk and power up when open camera
authorYuxi Sun <b36102@freescale.com>
Mon, 26 Mar 2012 09:57:45 +0000 (17:57 +0800)
committerLothar Waßmann <LW@KARO-electronics.de>
Fri, 24 May 2013 06:34:18 +0000 (08:34 +0200)
Set mclk enable and power up camera when open camera, and disable
mclk, powerdown camera when close.

Signed-off-by: Yuxi Sun <b36102@freescale.com>
drivers/media/video/mxc/capture/mxc_v4l2_capture.c

index 03864a81920166b84baf2aa58f40e75af105f219..e3af2f817990e01c28a41e98437900bddce612ce 100644 (file)
@@ -1666,7 +1666,9 @@ static int mxc_v4l_open(struct file *file)
 
                ipu_csi_enable_mclk_if(cam->ipu, CSI_MCLK_I2C, cam->csi,
                                       true, true);
+               vidioc_int_s_power(cam->sensor, 1);
                vidioc_int_init(cam->sensor);
+               vidioc_int_dev_init(cam->sensor);
 }
 
        file->private_data = dev;
@@ -1708,6 +1710,7 @@ static int mxc_v4l_close(struct file *file)
        }
 
        if (--cam->open_count == 0) {
+               vidioc_int_s_power(cam->sensor, 0);
                ipu_csi_enable_mclk_if(cam->ipu, CSI_MCLK_I2C, cam->csi,
                        false, false);
 
@@ -2840,15 +2843,11 @@ static int mxc_v4l2_master_attach(struct v4l2_int_device *slave)
                return -1;
        }
 
-       for (i = 0; i < sensor_index - 1; i++) {
+       for (i = 0; i < sensor_index; i++) {
                vidioc_int_dev_exit(cam->all_sensors[i]);
                vidioc_int_s_power(cam->all_sensors[i], 0);
        }
 
-       ipu_csi_enable_mclk_if(cam->ipu, CSI_MCLK_I2C, cam->csi, true, true);
-       vidioc_int_s_power(cam->sensor, 1);
-       vidioc_int_dev_init(slave);
-       ipu_csi_enable_mclk_if(cam->ipu, CSI_MCLK_I2C, cam->csi, false, false);
        cam_fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
        vidioc_int_g_fmt_cap(cam->sensor, &cam_fmt);