Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 357196
b: refs/heads/master
c: f698957
h: refs/heads/master
v: v3
  • Loading branch information
Libin Yang authored and Mauro Carvalho Chehab committed Dec 27, 2012
1 parent 39dd385 commit 182b0f3
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 18 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: a4bb6f353e287f51a52a347670fd60938a566c25
refs/heads/master: f698957aeaf3a711c2aa630a845b43426c02f339
30 changes: 13 additions & 17 deletions trunk/drivers/media/platform/marvell-ccic/mcam-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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;
}
/*
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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);
}

Expand Down Expand Up @@ -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);
Expand All @@ -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) {
Expand Down Expand Up @@ -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"
*/
Expand Down
9 changes: 9 additions & 0 deletions trunk/drivers/media/platform/marvell-ccic/mcam-core.h
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -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.
*/
Expand Down

0 comments on commit 182b0f3

Please sign in to comment.