Re: [PATCH] pxa_camera: move fifo reset direct before dma start

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Robert, what do you think? Are you still working with PXA camera?

Thanks
Guennadi

On Tue, 20 Apr 2010, Stefan Herbrechtsmeier wrote:

> Move the fifo reset from pxa_camera_start_capture to pxa_camera_irq direct
> before the dma start after an end of frame interrupt to prevent images from
> shifting because of old data at the begin of the frame.
> 
> Signed-off-by: Stefan Herbrechtsmeier <hbmeier@xxxxxxxxxxxxxxxxxxxx>
> ---
>  drivers/media/video/pxa_camera.c |   11 ++++++-----
>  1 files changed, 6 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/media/video/pxa_camera.c b/drivers/media/video/pxa_camera.c
> index 5ecc30d..04bf5c1 100644
> --- a/drivers/media/video/pxa_camera.c
> +++ b/drivers/media/video/pxa_camera.c
> @@ -609,12 +609,9 @@ static void pxa_dma_add_tail_buf(struct pxa_camera_dev *pcdev,
>   */
>  static void pxa_camera_start_capture(struct pxa_camera_dev *pcdev)
>  {
> -	unsigned long cicr0, cifr;
> +	unsigned long cicr0;
>  
>  	dev_dbg(pcdev->soc_host.v4l2_dev.dev, "%s\n", __func__);
> -	/* Reset the FIFOs */
> -	cifr = __raw_readl(pcdev->base + CIFR) | CIFR_RESET_F;
> -	__raw_writel(cifr, pcdev->base + CIFR);
>  	/* Enable End-Of-Frame Interrupt */
>  	cicr0 = __raw_readl(pcdev->base + CICR0) | CICR0_ENB;
>  	cicr0 &= ~CICR0_EOFM;
> @@ -935,7 +932,7 @@ static void pxa_camera_deactivate(struct pxa_camera_dev *pcdev)
>  static irqreturn_t pxa_camera_irq(int irq, void *data)
>  {
>  	struct pxa_camera_dev *pcdev = data;
> -	unsigned long status, cicr0;
> +	unsigned long status, cifr, cicr0;
>  	struct pxa_buffer *buf;
>  	struct videobuf_buffer *vb;
>  
> @@ -949,6 +946,10 @@ static irqreturn_t pxa_camera_irq(int irq, void *data)
>  	__raw_writel(status, pcdev->base + CISR);
>  
>  	if (status & CISR_EOF) {
> +		/* Reset the FIFOs */
> +		cifr = __raw_readl(pcdev->base + CIFR) | CIFR_RESET_F;
> +		__raw_writel(cifr, pcdev->base + CIFR);
> +
>  		pcdev->active = list_first_entry(&pcdev->capture,
>  					   struct pxa_buffer, vb.queue);
>  		vb = &pcdev->active->vb;
> -- 
> 1.5.4.3
> 

---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux