diff options
author | Yuxi Sun <b36102@freescale.com> | 2011-09-26 10:52:15 +0800 |
---|---|---|
committer | Jason Liu <r64343@freescale.com> | 2012-01-09 20:23:50 +0800 |
commit | 225437ed15f2ff553b944d19fb737ec924ff7bbb (patch) | |
tree | eb0fcff7aef3ddf20a583317c232cd126aba2b08 /drivers/media/video/mxc/capture/ipu_still.c | |
parent | ac7cb5dac7827514aacb93e402d93610955a6406 (diff) |
ENGR00158152 v4l2 capture: changes based on ipu changes
v4l2 capture changes based on ipu change.
Signed-off-by: Yuxi Sun <b36102@freescale.com>
Diffstat (limited to 'drivers/media/video/mxc/capture/ipu_still.c')
-rw-r--r-- | drivers/media/video/mxc/capture/ipu_still.c | 35 |
1 files changed, 18 insertions, 17 deletions
diff --git a/drivers/media/video/mxc/capture/ipu_still.c b/drivers/media/video/mxc/capture/ipu_still.c index fbc9aa55d925..f74d5405acc3 100644 --- a/drivers/media/video/mxc/capture/ipu_still.c +++ b/drivers/media/video/mxc/capture/ipu_still.c @@ -45,10 +45,11 @@ static int callback_flag; */ static irqreturn_t prp_csi_eof_callback(int irq, void *dev_id) { - ipu_select_buffer(CSI_MEM, IPU_OUTPUT_BUFFER, + cam_data *cam = devid; + ipu_select_buffer(cam->ipu, CSI_MEM, IPU_OUTPUT_BUFFER, callback_flag%2 ? 1 : 0); if (callback_flag == 0) - ipu_enable_channel(CSI_MEM); + ipu_enable_channel(cam->ipu, CSI_MEM); callback_flag++; return IRQ_HANDLED; @@ -71,7 +72,7 @@ static irqreturn_t prp_still_callback(int irq, void *dev_id) if (callback_eof_flag < 5) { #ifndef CONFIG_MXC_IPU_V1 buffer_num = (buffer_num == 0) ? 1 : 0; - ipu_select_buffer(CSI_MEM, IPU_OUTPUT_BUFFER, buffer_num); + ipu_select_buffer(cam->ipu, CSI_MEM, IPU_OUTPUT_BUFFER, buffer_num); #endif } else { cam->still_counter++; @@ -119,14 +120,14 @@ static int prp_still_start(void *private) return -EINVAL; } - ipu_csi_enable_mclk_if(CSI_MCLK_RAW, cam->csi, true, true); + ipu_csi_enable_mclk_if(cam->ipu, CSI_MCLK_RAW, cam->csi, true, true); memset(¶ms, 0, sizeof(params)); - err = ipu_init_channel(CSI_MEM, ¶ms); + err = ipu_init_channel(cam->ipu, CSI_MEM, ¶ms); if (err != 0) return err; - err = ipu_init_channel_buffer(CSI_MEM, IPU_OUTPUT_BUFFER, + err = ipu_init_channel_buffer(cam->ipu, CSI_MEM, IPU_OUTPUT_BUFFER, pixel_fmt, cam->v2f.fmt.pix.width, cam->v2f.fmt.pix.height, cam->v2f.fmt.pix.width, IPU_ROTATE_NONE, @@ -147,7 +148,7 @@ static int prp_still_start(void *private) callback_eof_flag = 0; ipu_clear_irq(IPU_IRQ_SENSOR_EOF); err = ipu_request_irq(IPU_IRQ_SENSOR_EOF, prp_csi_eof_callback, - 0, "Mxc Camera", NULL); + 0, "Mxc Camera", cam); if (err != 0) { printk(KERN_ERR "Error IPU_IRQ_SENSOR_EOF \n"); return err; @@ -156,17 +157,17 @@ static int prp_still_start(void *private) callback_eof_flag = 0; buffer_num = 0; - ipu_clear_irq(IPU_IRQ_CSI0_OUT_EOF); - err = ipu_request_irq(IPU_IRQ_CSI0_OUT_EOF, prp_still_callback, + ipu_clear_irq(cam->ipu, IPU_IRQ_CSI0_OUT_EOF); + err = ipu_request_irq(cam->ipu, IPU_IRQ_CSI0_OUT_EOF, prp_still_callback, 0, "Mxc Camera", cam); if (err != 0) { printk(KERN_ERR "Error registering irq.\n"); return err; } - ipu_select_buffer(CSI_MEM, IPU_OUTPUT_BUFFER, 0); - ipu_enable_channel(CSI_MEM); - ipu_enable_csi(cam->csi); + 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); #endif return err; @@ -187,13 +188,13 @@ static int prp_still_stop(void *private) ipu_free_irq(IPU_IRQ_SENSOR_EOF, NULL); ipu_free_irq(IPU_IRQ_SENSOR_OUT_EOF, cam); #else - ipu_free_irq(IPU_IRQ_CSI0_OUT_EOF, cam); + ipu_free_irq(cam->ipu, IPU_IRQ_CSI0_OUT_EOF, cam); #endif - ipu_disable_csi(cam->csi); - ipu_disable_channel(CSI_MEM, true); - ipu_uninit_channel(CSI_MEM); - ipu_csi_enable_mclk_if(CSI_MCLK_RAW, cam->csi, false, false); + ipu_disable_csi(cam->ipu, cam->csi); + ipu_disable_channel(cam->ipu, CSI_MEM, true); + ipu_uninit_channel(cam->ipu, CSI_MEM); + ipu_csi_enable_mclk_if(cam->ipu, CSI_MCLK_RAW, cam->csi, false, false); return err; } |