diff mbox

[V3,01/15,media] marvell-ccic: use internal variable replace global frame stats variable

Message ID 1355565484-15791-2-git-send-email-twang13@marvell.com (mailing list archive)
State New, archived
Headers show

Commit Message

Albert Wang Dec. 15, 2012, 9:57 a.m. UTC
From: Libin Yang <lbyang@marvell.com>

This patch replaces the global frame stats variables by using
internal variables in mcam_camera structure.

Signed-off-by: Albert Wang <twang13@marvell.com>
Signed-off-by: Libin Yang <lbyang@marvell.com>
---
 drivers/media/platform/marvell-ccic/mcam-core.c |   30 ++++++++++-------------
 drivers/media/platform/marvell-ccic/mcam-core.h |    9 +++++++
 2 files changed, 22 insertions(+), 17 deletions(-)

Comments

Jonathan Corbet Dec. 16, 2012, 3:36 p.m. UTC | #1
On Sat, 15 Dec 2012 17:57:50 +0800
Albert Wang <twang13@marvell.com> wrote:

> This patch replaces the global frame stats variables by using
> internal variables in mcam_camera structure.

This one seems fine.  Someday it might be nice to have proper stats
rather than my debugging hack, complete with a nice sysfs interface and
all that.  

Acked-by: Jonathan Corbet <corbet@lwn.net>

jon
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Mauro Carvalho Chehab Dec. 27, 2012, 8:07 p.m. UTC | #2
Em Sun, 16 Dec 2012 08:36:59 -0700
Jonathan Corbet <corbet@lwn.net> escreveu:

> On Sat, 15 Dec 2012 17:57:50 +0800
> Albert Wang <twang13@marvell.com> wrote:
> 
> > This patch replaces the global frame stats variables by using
> > internal variables in mcam_camera structure.
> 
> This one seems fine.  Someday it might be nice to have proper stats
> rather than my debugging hack, complete with a nice sysfs interface and
> all that.  
> 
> Acked-by: Jonathan Corbet <corbet@lwn.net>

While I understand that a v4 will popup, due to some comments done on
the other patches on this v3, this patch seems pretty much independent.
So, I'll just apply it right now, and tag the others as "changes_requested"
at patchwork.

Regards,
Mauro
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Guennadi Liakhovetski Jan. 1, 2013, 2:56 p.m. UTC | #3
On Sat, 15 Dec 2012, Albert Wang wrote:

> From: Libin Yang <lbyang@marvell.com>
> 
> This patch replaces the global frame stats variables by using
> internal variables in mcam_camera structure.
> 
> Signed-off-by: Albert Wang <twang13@marvell.com>
> Signed-off-by: Libin Yang <lbyang@marvell.com>

Acked-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>

Thanks
Guennadi

> ---
>  drivers/media/platform/marvell-ccic/mcam-core.c |   30 ++++++++++-------------
>  drivers/media/platform/marvell-ccic/mcam-core.h |    9 +++++++
>  2 files changed, 22 insertions(+), 17 deletions(-)
> 
> diff --git a/drivers/media/platform/marvell-ccic/mcam-core.c b/drivers/media/platform/marvell-ccic/mcam-core.c
> index ce2b7b4..7012913f 100755
> --- a/drivers/media/platform/marvell-ccic/mcam-core.c
> +++ b/drivers/media/platform/marvell-ccic/mcam-core.c
> @@ -30,13 +30,6 @@
>  
>  #include "mcam-core.h"
>  
> -/*
> - * Basic frame stats - to be deleted shortly
> - */
> -static int frames;
> -static int singles;
> -static int delivered;
> -
>  #ifdef MCAM_MODE_VMALLOC
>  /*
>   * Internal DMA buffer management.  Since the controller cannot do S/G I/O,
> @@ -367,10 +360,10 @@ static void mcam_frame_tasklet(unsigned long data)
>  		if (!test_bit(bufno, &cam->flags))
>  			continue;
>  		if (list_empty(&cam->buffers)) {
> -			singles++;
> +			cam->frame_state.singles++;
>  			break;  /* Leave it valid, hope for better later */
>  		}
> -		delivered++;
> +		cam->frame_state.delivered++;
>  		clear_bit(bufno, &cam->flags);
>  		buf = list_first_entry(&cam->buffers, struct mcam_vb_buffer,
>  				queue);
> @@ -452,7 +445,7 @@ static void mcam_set_contig_buffer(struct mcam_camera *cam, int frame)
>  		mcam_reg_write(cam, frame == 0 ? REG_Y0BAR : REG_Y1BAR,
>  				vb2_dma_contig_plane_dma_addr(&buf->vb_buf, 0));
>  		set_bit(CF_SINGLE_BUFFER, &cam->flags);
> -		singles++;
> +		cam->frame_state.singles++;
>  		return;
>  	}
>  	/*
> @@ -485,7 +478,7 @@ static void mcam_dma_contig_done(struct mcam_camera *cam, int frame)
>  	struct mcam_vb_buffer *buf = cam->vb_bufs[frame];
>  
>  	if (!test_bit(CF_SINGLE_BUFFER, &cam->flags)) {
> -		delivered++;
> +		cam->frame_state.delivered++;
>  		mcam_buffer_done(cam, frame, &buf->vb_buf);
>  	}
>  	mcam_set_contig_buffer(cam, frame);
> @@ -578,13 +571,13 @@ static void mcam_dma_sg_done(struct mcam_camera *cam, int frame)
>  	 */
>  	} else {
>  		set_bit(CF_SG_RESTART, &cam->flags);
> -		singles++;
> +		cam->frame_state.singles++;
>  		cam->vb_bufs[0] = NULL;
>  	}
>  	/*
>  	 * Now we can give the completed frame back to user space.
>  	 */
> -	delivered++;
> +	cam->frame_state.delivered++;
>  	mcam_buffer_done(cam, frame, &buf->vb_buf);
>  }
>  
> @@ -1545,7 +1538,9 @@ static int mcam_v4l_open(struct file *filp)
>  
>  	filp->private_data = cam;
>  
> -	frames = singles = delivered = 0;
> +	cam->frame_state.frames = 0;
> +	cam->frame_state.singles = 0;
> +	cam->frame_state.delivered = 0;
>  	mutex_lock(&cam->s_mutex);
>  	if (cam->users == 0) {
>  		ret = mcam_setup_vb2(cam);
> @@ -1566,8 +1561,9 @@ static int mcam_v4l_release(struct file *filp)
>  {
>  	struct mcam_camera *cam = filp->private_data;
>  
> -	cam_dbg(cam, "Release, %d frames, %d singles, %d delivered\n", frames,
> -			singles, delivered);
> +	cam_dbg(cam, "Release, %d frames, %d singles, %d delivered\n",
> +			cam->frame_state.frames, cam->frame_state.singles,
> +			cam->frame_state.delivered);
>  	mutex_lock(&cam->s_mutex);
>  	(cam->users)--;
>  	if (cam->users == 0) {
> @@ -1660,7 +1656,7 @@ static void mcam_frame_complete(struct mcam_camera *cam, int frame)
>  	clear_bit(CF_DMA_ACTIVE, &cam->flags);
>  	cam->next_buf = frame;
>  	cam->buf_seq[frame] = ++(cam->sequence);
> -	frames++;
> +	cam->frame_state.frames++;
>  	/*
>  	 * "This should never happen"
>  	 */
> diff --git a/drivers/media/platform/marvell-ccic/mcam-core.h b/drivers/media/platform/marvell-ccic/mcam-core.h
> index bd6acba..5e802c6 100755
> --- a/drivers/media/platform/marvell-ccic/mcam-core.h
> +++ b/drivers/media/platform/marvell-ccic/mcam-core.h
> @@ -73,6 +73,14 @@ static inline int mcam_buffer_mode_supported(enum mcam_buffer_mode mode)
>  	}
>  }
>  
> +/*
> + * Basic frame states
> + */
> +struct mcam_frame_state {
> +	unsigned int frames;
> +	unsigned int singles;
> +	unsigned int delivered;
> +};
>  
>  /*
>   * A description of one of our devices.
> @@ -108,6 +116,7 @@ struct mcam_camera {
>  	unsigned long flags;		/* Buffer status, mainly (dev_lock) */
>  	int users;			/* How many open FDs */
>  
> +	struct mcam_frame_state frame_state;	/* Frame state counter */
>  	/*
>  	 * Subsystem structures.
>  	 */
> -- 
> 1.7.9.5
> 

---
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@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/media/platform/marvell-ccic/mcam-core.c b/drivers/media/platform/marvell-ccic/mcam-core.c
index ce2b7b4..7012913f 100755
--- a/drivers/media/platform/marvell-ccic/mcam-core.c
+++ b/drivers/media/platform/marvell-ccic/mcam-core.c
@@ -30,13 +30,6 @@ 
 
 #include "mcam-core.h"
 
-/*
- * Basic frame stats - to be deleted shortly
- */
-static int frames;
-static int singles;
-static int delivered;
-
 #ifdef MCAM_MODE_VMALLOC
 /*
  * Internal DMA buffer management.  Since the controller cannot do S/G I/O,
@@ -367,10 +360,10 @@  static void mcam_frame_tasklet(unsigned long data)
 		if (!test_bit(bufno, &cam->flags))
 			continue;
 		if (list_empty(&cam->buffers)) {
-			singles++;
+			cam->frame_state.singles++;
 			break;  /* Leave it valid, hope for better later */
 		}
-		delivered++;
+		cam->frame_state.delivered++;
 		clear_bit(bufno, &cam->flags);
 		buf = list_first_entry(&cam->buffers, struct mcam_vb_buffer,
 				queue);
@@ -452,7 +445,7 @@  static void mcam_set_contig_buffer(struct mcam_camera *cam, int frame)
 		mcam_reg_write(cam, frame == 0 ? REG_Y0BAR : REG_Y1BAR,
 				vb2_dma_contig_plane_dma_addr(&buf->vb_buf, 0));
 		set_bit(CF_SINGLE_BUFFER, &cam->flags);
-		singles++;
+		cam->frame_state.singles++;
 		return;
 	}
 	/*
@@ -485,7 +478,7 @@  static void mcam_dma_contig_done(struct mcam_camera *cam, int frame)
 	struct mcam_vb_buffer *buf = cam->vb_bufs[frame];
 
 	if (!test_bit(CF_SINGLE_BUFFER, &cam->flags)) {
-		delivered++;
+		cam->frame_state.delivered++;
 		mcam_buffer_done(cam, frame, &buf->vb_buf);
 	}
 	mcam_set_contig_buffer(cam, frame);
@@ -578,13 +571,13 @@  static void mcam_dma_sg_done(struct mcam_camera *cam, int frame)
 	 */
 	} else {
 		set_bit(CF_SG_RESTART, &cam->flags);
-		singles++;
+		cam->frame_state.singles++;
 		cam->vb_bufs[0] = NULL;
 	}
 	/*
 	 * Now we can give the completed frame back to user space.
 	 */
-	delivered++;
+	cam->frame_state.delivered++;
 	mcam_buffer_done(cam, frame, &buf->vb_buf);
 }
 
@@ -1545,7 +1538,9 @@  static int mcam_v4l_open(struct file *filp)
 
 	filp->private_data = cam;
 
-	frames = singles = delivered = 0;
+	cam->frame_state.frames = 0;
+	cam->frame_state.singles = 0;
+	cam->frame_state.delivered = 0;
 	mutex_lock(&cam->s_mutex);
 	if (cam->users == 0) {
 		ret = mcam_setup_vb2(cam);
@@ -1566,8 +1561,9 @@  static int mcam_v4l_release(struct file *filp)
 {
 	struct mcam_camera *cam = filp->private_data;
 
-	cam_dbg(cam, "Release, %d frames, %d singles, %d delivered\n", frames,
-			singles, delivered);
+	cam_dbg(cam, "Release, %d frames, %d singles, %d delivered\n",
+			cam->frame_state.frames, cam->frame_state.singles,
+			cam->frame_state.delivered);
 	mutex_lock(&cam->s_mutex);
 	(cam->users)--;
 	if (cam->users == 0) {
@@ -1660,7 +1656,7 @@  static void mcam_frame_complete(struct mcam_camera *cam, int frame)
 	clear_bit(CF_DMA_ACTIVE, &cam->flags);
 	cam->next_buf = frame;
 	cam->buf_seq[frame] = ++(cam->sequence);
-	frames++;
+	cam->frame_state.frames++;
 	/*
 	 * "This should never happen"
 	 */
diff --git a/drivers/media/platform/marvell-ccic/mcam-core.h b/drivers/media/platform/marvell-ccic/mcam-core.h
index bd6acba..5e802c6 100755
--- a/drivers/media/platform/marvell-ccic/mcam-core.h
+++ b/drivers/media/platform/marvell-ccic/mcam-core.h
@@ -73,6 +73,14 @@  static inline int mcam_buffer_mode_supported(enum mcam_buffer_mode mode)
 	}
 }
 
+/*
+ * Basic frame states
+ */
+struct mcam_frame_state {
+	unsigned int frames;
+	unsigned int singles;
+	unsigned int delivered;
+};
 
 /*
  * A description of one of our devices.
@@ -108,6 +116,7 @@  struct mcam_camera {
 	unsigned long flags;		/* Buffer status, mainly (dev_lock) */
 	int users;			/* How many open FDs */
 
+	struct mcam_frame_state frame_state;	/* Frame state counter */
 	/*
 	 * Subsystem structures.
 	 */