[media] marvell-ccic: use internal variable replace global frame stats variable
authorLibin Yang <lbyang@marvell.com>
Sat, 15 Dec 2012 08:57:50 +0000 (05:57 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Thu, 27 Dec 2012 20:04:22 +0000 (18:04 -0200)
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: Jonathan Corbet <corbet@lwn.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/platform/marvell-ccic/mcam-core.c
drivers/media/platform/marvell-ccic/mcam-core.h

index ce2b7b4788d681327f870112b7b74e2792963981..7012913f34a280f38d5e0bd2dcee485ae38affe3 100644 (file)
 
 #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"
         */
index bd6acba9fb37c2f437060889d172c8b44bd3229b..5e802c6b398e313bc049569d558fd4e28b61be58 100644 (file)
@@ -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.
         */