summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTroy Kisky <troy.kisky@boundarydevices.com>2014-03-06 14:55:38 -0700
committerTroy Kisky <troy.kisky@boundarydevices.com>2014-04-24 18:59:49 -0700
commite8571c40ffc6a22e31fa12445de5722cc88a0d44 (patch)
tree1204a0e32e48bbdb193757793a37e63f0dcf6ddb
parent771953115d7d2dfaf794aae472c13928795c506b (diff)
mxc_v4l2_capture: pair up ipu_enable_csi/ipu_disable_csi
-rw-r--r--drivers/media/platform/mxc/capture/ipu_bg_overlay_sdc.c7
-rw-r--r--drivers/media/platform/mxc/capture/ipu_csi_enc.c7
-rw-r--r--drivers/media/platform/mxc/capture/ipu_fg_overlay_sdc.c7
-rw-r--r--drivers/media/platform/mxc/capture/ipu_prp_enc.c7
-rw-r--r--drivers/media/platform/mxc/capture/ipu_prp_vf_sdc.c7
-rw-r--r--drivers/media/platform/mxc/capture/ipu_prp_vf_sdc_bg.c7
-rw-r--r--drivers/media/platform/mxc/capture/ipu_still.c4
-rw-r--r--drivers/media/platform/mxc/capture/mxc_v4l2_capture.h18
8 files changed, 32 insertions, 32 deletions
diff --git a/drivers/media/platform/mxc/capture/ipu_bg_overlay_sdc.c b/drivers/media/platform/mxc/capture/ipu_bg_overlay_sdc.c
index 4a975b54a977..7b0b7346ef1a 100644
--- a/drivers/media/platform/mxc/capture/ipu_bg_overlay_sdc.c
+++ b/drivers/media/platform/mxc/capture/ipu_bg_overlay_sdc.c
@@ -452,9 +452,7 @@ static int bg_overlay_stop(void *private)
*/
static int bg_overlay_enable_csi(void *private)
{
- cam_data *cam = (cam_data *) private;
-
- return ipu_enable_csi(cam->ipu, cam->csi);
+ return cam_ipu_enable_csi((cam_data *)private);
}
/*!
@@ -471,8 +469,7 @@ static int bg_overlay_disable_csi(void *private)
* when disable csi, wait for idmac eof.
* it requests eof irq again */
ipu_free_irq(cam->ipu, IPU_IRQ_CSI0_OUT_EOF, cam);
-
- return ipu_disable_csi(cam->ipu, cam->csi);
+ return cam_ipu_disable_csi(cam);
}
/*!
diff --git a/drivers/media/platform/mxc/capture/ipu_csi_enc.c b/drivers/media/platform/mxc/capture/ipu_csi_enc.c
index d8d2c5aee582..fa0091630d00 100644
--- a/drivers/media/platform/mxc/capture/ipu_csi_enc.c
+++ b/drivers/media/platform/mxc/capture/ipu_csi_enc.c
@@ -319,9 +319,7 @@ static int csi_enc_disabling_tasks(void *private)
*/
static int csi_enc_enable_csi(void *private)
{
- cam_data *cam = (cam_data *) private;
-
- return ipu_enable_csi(cam->ipu, cam->csi);
+ return cam_ipu_enable_csi((cam_data *)private);
}
/*!
@@ -338,8 +336,7 @@ static int csi_enc_disable_csi(void *private)
* when disable csi, wait for idmac eof.
* it requests eof irq again */
ipu_free_irq(cam->ipu, IPU_IRQ_CSI0_OUT_EOF, cam);
-
- return ipu_disable_csi(cam->ipu, cam->csi);
+ return cam_ipu_disable_csi(cam);
}
/*!
diff --git a/drivers/media/platform/mxc/capture/ipu_fg_overlay_sdc.c b/drivers/media/platform/mxc/capture/ipu_fg_overlay_sdc.c
index 80136156ceaf..012a9374385a 100644
--- a/drivers/media/platform/mxc/capture/ipu_fg_overlay_sdc.c
+++ b/drivers/media/platform/mxc/capture/ipu_fg_overlay_sdc.c
@@ -537,9 +537,7 @@ static int foreground_stop(void *private)
*/
static int foreground_enable_csi(void *private)
{
- cam_data *cam = (cam_data *) private;
-
- return ipu_enable_csi(cam->ipu, cam->csi);
+ return cam_ipu_enable_csi((cam_data *)private);
}
/*!
@@ -556,8 +554,7 @@ static int foreground_disable_csi(void *private)
* when disable csi, wait for idmac eof.
* it requests eof irq again */
ipu_free_irq(cam->ipu, IPU_IRQ_CSI0_OUT_EOF, cam);
-
- return ipu_disable_csi(cam->ipu, cam->csi);
+ return cam_ipu_disable_csi(cam);
}
/*!
diff --git a/drivers/media/platform/mxc/capture/ipu_prp_enc.c b/drivers/media/platform/mxc/capture/ipu_prp_enc.c
index 336139159569..9de0f54190f9 100644
--- a/drivers/media/platform/mxc/capture/ipu_prp_enc.c
+++ b/drivers/media/platform/mxc/capture/ipu_prp_enc.c
@@ -479,9 +479,7 @@ static int prp_enc_disabling_tasks(void *private)
*/
static int prp_enc_enable_csi(void *private)
{
- cam_data *cam = (cam_data *) private;
-
- return ipu_enable_csi(cam->ipu, cam->csi);
+ return cam_ipu_enable_csi((cam_data *)private);
}
/*!
@@ -499,8 +497,7 @@ static int prp_enc_disable_csi(void *private)
* it requests eof irq again */
if (cam->rotation < IPU_ROTATE_90_RIGHT)
ipu_free_irq(cam->ipu, IPU_IRQ_PRP_ENC_OUT_EOF, cam);
-
- return ipu_disable_csi(cam->ipu, cam->csi);
+ return cam_ipu_disable_csi(cam);
}
/*!
diff --git a/drivers/media/platform/mxc/capture/ipu_prp_vf_sdc.c b/drivers/media/platform/mxc/capture/ipu_prp_vf_sdc.c
index b9610f1ed820..7a9a4313d8da 100644
--- a/drivers/media/platform/mxc/capture/ipu_prp_vf_sdc.c
+++ b/drivers/media/platform/mxc/capture/ipu_prp_vf_sdc.c
@@ -484,9 +484,7 @@ static int prpvf_stop(void *private)
*/
static int prp_vf_enable_csi(void *private)
{
- cam_data *cam = (cam_data *) private;
-
- return ipu_enable_csi(cam->ipu, cam->csi);
+ return cam_ipu_enable_csi((cam_data *)private);
}
/*!
@@ -504,8 +502,7 @@ static int prp_vf_disable_csi(void *private)
* it requests eof irq again */
if (cam->vf_rotation < IPU_ROTATE_VERT_FLIP)
ipu_free_irq(cam->ipu, IPU_IRQ_PRP_VF_OUT_EOF, cam);
-
- return ipu_disable_csi(cam->ipu, cam->csi);
+ return cam_ipu_disable_csi(cam);
}
/*!
diff --git a/drivers/media/platform/mxc/capture/ipu_prp_vf_sdc_bg.c b/drivers/media/platform/mxc/capture/ipu_prp_vf_sdc_bg.c
index a24d82dfca63..d22d214aa7ce 100644
--- a/drivers/media/platform/mxc/capture/ipu_prp_vf_sdc_bg.c
+++ b/drivers/media/platform/mxc/capture/ipu_prp_vf_sdc_bg.c
@@ -427,9 +427,7 @@ static int prpvf_stop(void *private)
*/
static int prp_vf_enable_csi(void *private)
{
- cam_data *cam = (cam_data *) private;
-
- return ipu_enable_csi(cam->ipu, cam->csi);
+ return cam_ipu_enable_csi((cam_data *)private);
}
/*!
@@ -446,8 +444,7 @@ static int prp_vf_disable_csi(void *private)
* when disable csi, wait for idmac eof.
* it requests eof irq again */
ipu_free_irq(cam->ipu, IPU_IRQ_PRP_VF_OUT_EOF, cam);
-
- return ipu_disable_csi(cam->ipu, cam->csi);
+ return cam_ipu_disable_csi(cam);
}
/*!
diff --git a/drivers/media/platform/mxc/capture/ipu_still.c b/drivers/media/platform/mxc/capture/ipu_still.c
index b295a1850301..3a44be965eda 100644
--- a/drivers/media/platform/mxc/capture/ipu_still.c
+++ b/drivers/media/platform/mxc/capture/ipu_still.c
@@ -168,7 +168,7 @@ static int prp_still_start(void *private)
ipu_select_buffer(cam->ipu, CSI_MEM, IPU_OUTPUT_BUFFER, 0);
ipu_enable_channel(cam->ipu, CSI_MEM);
- ipu_enable_csi(cam->ipu, cam->csi);
+ cam_ipu_enable_csi(cam);
#endif
return err;
@@ -192,7 +192,7 @@ static int prp_still_stop(void *private)
ipu_free_irq(cam->ipu, IPU_IRQ_CSI0_OUT_EOF, cam);
#endif
- ipu_disable_csi(cam->ipu, cam->csi);
+ cam_ipu_disable_csi(cam);
ipu_disable_channel(cam->ipu, CSI_MEM, true);
ipu_uninit_channel(cam->ipu, CSI_MEM);
diff --git a/drivers/media/platform/mxc/capture/mxc_v4l2_capture.h b/drivers/media/platform/mxc/capture/mxc_v4l2_capture.h
index 5835daedf4c0..3c0b515e0abb 100644
--- a/drivers/media/platform/mxc/capture/mxc_v4l2_capture.h
+++ b/drivers/media/platform/mxc/capture/mxc_v4l2_capture.h
@@ -202,6 +202,7 @@ typedef struct _cam_data {
/* misc status flag */
bool overlay_on;
bool capture_on;
+ bool ipu_enable_csi_called;
int overlay_pid;
int capture_pid;
bool low_power;
@@ -263,4 +264,21 @@ void set_mclk_rate(uint32_t *p_mclk_freq, uint32_t csi);
void mxc_camera_common_lock(void);
void mxc_camera_common_unlock(void);
+static inline int cam_ipu_enable_csi(cam_data *cam)
+{
+ int ret = ipu_enable_csi(cam->ipu, cam->csi);
+ if (!ret)
+ cam->ipu_enable_csi_called = 1;
+ return ret;
+}
+
+static inline int cam_ipu_disable_csi(cam_data *cam)
+{
+ if (!cam->ipu_enable_csi_called)
+ return 0;
+ cam->ipu_enable_csi_called = 0;
+ return ipu_disable_csi(cam->ipu, cam->csi);
+}
+
+
#endif /* __MXC_V4L2_CAPTURE_H__ */