Re: [PATCH V3 01/15] [media] marvell-ccic: use internal variable replace global frame stats variable
On Sat, 15 Dec 2012, Albert Wang wrote: From: Libin Yang lby...@marvell.com This patch replaces the global frame stats variables by using internal variables in mcam_camera structure. Signed-off-by: Albert Wang twan...@marvell.com Signed-off-by: Libin Yang lby...@marvell.com Acked-by: Guennadi Liakhovetski g.liakhovet...@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;/*
Re: [PATCH V3 01/15] [media] marvell-ccic: use internal variable replace global frame stats variable
Em Sun, 16 Dec 2012 08:36:59 -0700 Jonathan Corbet cor...@lwn.net escreveu: On Sat, 15 Dec 2012 17:57:50 +0800 Albert Wang twan...@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 cor...@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 majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH V3 01/15] [media] marvell-ccic: use internal variable replace global frame stats variable
On Sat, 15 Dec 2012 17:57:50 +0800 Albert Wang twan...@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 cor...@lwn.net jon -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH V3 01/15] [media] marvell-ccic: use internal variable replace global frame stats variable
From: Libin Yang lby...@marvell.com This patch replaces the global frame stats variables by using internal variables in mcam_camera structure. Signed-off-by: Albert Wang twan...@marvell.com Signed-off-by: Libin Yang lby...@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(-) 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 -- To unsubscribe from