summaryrefslogtreecommitdiff
path: root/drivers/staging/media
diff options
context:
space:
mode:
authorHans Verkuil <hans.verkuil@cisco.com>2013-03-15 13:16:49 -0300
committerMauro Carvalho Chehab <mchehab@redhat.com>2013-03-25 08:49:48 -0300
commit15513c12e3c5f5e7c683865b3e019cf90babab8f (patch)
treeb36dff3df32a3c610ee26f5642b83089a10e23ec /drivers/staging/media
parent9a8bfe9fe958beef9cfb9a6f7b0922cc51deb65c (diff)
[media] solo6x10: fix sequence handling
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/staging/media')
-rw-r--r--drivers/staging/media/solo6x10/solo6x10.h2
-rw-r--r--drivers/staging/media/solo6x10/v4l2-enc.c3
-rw-r--r--drivers/staging/media/solo6x10/v4l2.c3
3 files changed, 6 insertions, 2 deletions
diff --git a/drivers/staging/media/solo6x10/solo6x10.h b/drivers/staging/media/solo6x10/solo6x10.h
index 6c00f07cd2dd..94ac294fb048 100644
--- a/drivers/staging/media/solo6x10/solo6x10.h
+++ b/drivers/staging/media/solo6x10/solo6x10.h
@@ -173,6 +173,7 @@ struct solo_enc_dev {
u32 fmt;
enum solo_enc_types type;
+ u32 sequence;
struct vb2_queue vidq;
struct list_head vidq_active;
int desc_count;
@@ -267,6 +268,7 @@ struct solo_dev {
/* Buffer handling */
struct vb2_queue vidq;
struct vb2_alloc_ctx *alloc_ctx;
+ u32 sequence;
struct task_struct *kthread;
struct mutex lock;
spinlock_t slock;
diff --git a/drivers/staging/media/solo6x10/v4l2-enc.c b/drivers/staging/media/solo6x10/v4l2-enc.c
index f804c936471c..4fbfb351d373 100644
--- a/drivers/staging/media/solo6x10/v4l2-enc.c
+++ b/drivers/staging/media/solo6x10/v4l2-enc.c
@@ -269,6 +269,7 @@ static int solo_enc_on(struct solo_enc_dev *solo_enc)
/* Make sure to do a bandwidth check */
if (solo_enc->bw_weight > solo_dev->enc_bw_remain)
return -EBUSY;
+ solo_enc->sequence = 0;
solo_dev->enc_bw_remain -= solo_enc->bw_weight;
if (solo_enc->type == SOLO_ENC_TYPE_EXT)
@@ -522,7 +523,7 @@ static int solo_enc_fillbuf(struct solo_enc_dev *solo_enc,
ret = solo_fill_jpeg(solo_enc, vb, vh);
if (!ret) {
- vb->v4l2_buf.sequence++;
+ vb->v4l2_buf.sequence = solo_enc->sequence++;
vb->v4l2_buf.timestamp.tv_sec = vh->sec;
vb->v4l2_buf.timestamp.tv_usec = vh->usec;
}
diff --git a/drivers/staging/media/solo6x10/v4l2.c b/drivers/staging/media/solo6x10/v4l2.c
index b5643ab3b9a1..02749a3c1d8f 100644
--- a/drivers/staging/media/solo6x10/v4l2.c
+++ b/drivers/staging/media/solo6x10/v4l2.c
@@ -224,7 +224,7 @@ finish_buf:
if (!error) {
vb2_set_plane_payload(vb, 0,
solo_vlines(solo_dev) * solo_bytesperline(solo_dev));
- vb->v4l2_buf.sequence++;
+ vb->v4l2_buf.sequence = solo_dev->sequence++;
v4l2_get_timestamp(&vb->v4l2_buf.timestamp);
}
@@ -332,6 +332,7 @@ static int solo_start_streaming(struct vb2_queue *q, unsigned int count)
{
struct solo_dev *solo_dev = vb2_get_drv_priv(q);
+ solo_dev->sequence = 0;
return solo_start_thread(solo_dev);
}