aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/dvb/dvb-core/dvb_frontend.c
diff options
context:
space:
mode:
authorSteven Toth <stoth@hauppauge.com>2006-09-25 12:41:53 -0300
committerMauro Carvalho Chehab <mchehab@infradead.org>2006-10-03 15:13:46 -0300
commitba7e6f3e3e639de2597afffaae3fda75f6e6082d (patch)
tree4bd222eaa0101a02b3c9fd68b031a20eb030bfc9 /drivers/media/dvb/dvb-core/dvb_frontend.c
parentV4L/DVB (4664): Pvrusb2: Don't use videodev.h; use v4l2-dev.h in its place (diff)
downloadlinux-dev-ba7e6f3e3e639de2597afffaae3fda75f6e6082d.tar.xz
linux-dev-ba7e6f3e3e639de2597afffaae3fda75f6e6082d.zip
V4L/DVB (4665): Add frontend structure callback for bus acquisition.
This patch enables generic bus arbitration callbacks enabling dvbcore frontend_open and frontend_release to pass 'acquire' and 'release' hardware messages back into the DVB bridge frameworks. Frameworks like cx88 can then implement single bus multiple demod card sharing features, which would prohibit two frontends from attempting to use a single transport bus at the same time. Signed-off-by: Steven Toth <stoth@hauppauge.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'drivers/media/dvb/dvb-core/dvb_frontend.c')
-rw-r--r--drivers/media/dvb/dvb-core/dvb_frontend.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/media/dvb/dvb-core/dvb_frontend.c b/drivers/media/dvb/dvb-core/dvb_frontend.c
index 3dd5dbafb330..53304e6991ac 100644
--- a/drivers/media/dvb/dvb-core/dvb_frontend.c
+++ b/drivers/media/dvb/dvb-core/dvb_frontend.c
@@ -1014,6 +1014,13 @@ static int dvb_frontend_open(struct inode *inode, struct file *file)
if ((ret = dvb_generic_open (inode, file)) < 0)
return ret;
+ if (fe->ops.ts_bus_ctrl) {
+ if ((ret = fe->ops.ts_bus_ctrl (fe, 1)) < 0) {
+ dvb_generic_release (inode, file);
+ return ret;
+ }
+ }
+
if ((file->f_flags & O_ACCMODE) != O_RDONLY) {
/* normal tune mode when opened R/W */
@@ -1043,6 +1050,9 @@ static int dvb_frontend_release(struct inode *inode, struct file *file)
if ((file->f_flags & O_ACCMODE) != O_RDONLY)
fepriv->release_jiffies = jiffies;
+ if (fe->ops.ts_bus_ctrl)
+ fe->ops.ts_bus_ctrl (fe, 0);
+
return dvb_generic_release (inode, file);
}