summaryrefslogtreecommitdiff
path: root/linux/drivers/media/video/cx18/cx18-streams.c
diff options
context:
space:
mode:
authorPatrick Boettcher <pb@linuxtv.org>2008-12-10 22:28:25 +0100
committerPatrick Boettcher <pb@linuxtv.org>2008-12-10 22:28:25 +0100
commita9efe23fbe1000bff6e24012a5b580f9a8b93a92 (patch)
tree0308e2214bcc86e348e5d731d6bf958f1d4bf54f /linux/drivers/media/video/cx18/cx18-streams.c
parent12583b9f4af4d04cce76742c9859bff4068e6345 (diff)
parent97b478e31ccddc358a73628542bb2d32983abeac (diff)
downloadmediapointer-dvb-s2-a9efe23fbe1000bff6e24012a5b580f9a8b93a92.tar.gz
mediapointer-dvb-s2-a9efe23fbe1000bff6e24012a5b580f9a8b93a92.tar.bz2
sync from main
From: Patrick Boettcher <pb@linuxtv.org> sync from main Priority: normal Signed-off-by: Patrick Boettcher <pb@linuxtv.org>
Diffstat (limited to 'linux/drivers/media/video/cx18/cx18-streams.c')
-rw-r--r--linux/drivers/media/video/cx18/cx18-streams.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/linux/drivers/media/video/cx18/cx18-streams.c b/linux/drivers/media/video/cx18/cx18-streams.c
index d29a0b61b..f7a7f38d8 100644
--- a/linux/drivers/media/video/cx18/cx18-streams.c
+++ b/linux/drivers/media/video/cx18/cx18-streams.c
@@ -4,6 +4,7 @@
* Derived from ivtv-streams.c
*
* Copyright (C) 2007 Hans Verkuil <hverkuil@xs4all.nl>
+ * Copyright (C) 2008 Andy Walls <awalls@radix.net>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -132,7 +133,7 @@ static void cx18_stream_init(struct cx18 *cx, int type)
s->buffers = 63;
s->buf_size = (max_size / s->buffers) & ~0xfff;
}
- spin_lock_init(&s->qlock);
+ mutex_init(&s->qlock);
init_waitqueue_head(&s->waitq);
s->id = -1;
cx18_queue_init(&s->q_free);
@@ -622,3 +623,21 @@ u32 cx18_find_handle(struct cx18 *cx)
}
return CX18_INVALID_TASK_HANDLE;
}
+
+struct cx18_stream *cx18_handle_to_stream(struct cx18 *cx, u32 handle)
+{
+ int i;
+ struct cx18_stream *s;
+
+ if (handle == CX18_INVALID_TASK_HANDLE)
+ return NULL;
+
+ for (i = 0; i < CX18_MAX_STREAMS; i++) {
+ s = &cx->streams[i];
+ if (s->handle != handle)
+ continue;
+ if (s->v4l2dev || s->dvb.enabled)
+ return s;
+ }
+ return NULL;
+}