[media] marvell-ccic: use internal variable replace global frame stats variable
[platform/kernel/linux-rpi.git] / drivers / media / platform / marvell-ccic / mcam-core.c
index ce2b7b4..7012913 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"
         */