diff --git a/drivers/media/dvb/dvb-core/dvb_frontend.c b/drivers/media/dvb/dvb-core/dvb_frontend.c index 3dd5dbafb330634c400e57d58b198eb21ef5c9a0..53304e6991ac61326fbec9001d362530f62bd8d9 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); } diff --git a/drivers/media/dvb/dvb-core/dvb_frontend.h b/drivers/media/dvb/dvb-core/dvb_frontend.h index e5d5028b3694fc68663da122664e6172095c596f..f233d78bc3644bfdd93670ac7447bb280e852e94 100644 --- a/drivers/media/dvb/dvb-core/dvb_frontend.h +++ b/drivers/media/dvb/dvb-core/dvb_frontend.h @@ -129,6 +129,7 @@ struct dvb_frontend_ops { int (*enable_high_lnb_voltage)(struct dvb_frontend* fe, long arg); int (*dishnetwork_send_legacy_command)(struct dvb_frontend* fe, unsigned long cmd); int (*i2c_gate_ctrl)(struct dvb_frontend* fe, int enable); + int (*ts_bus_ctrl)(struct dvb_frontend* fe, int acquire); struct dvb_tuner_ops tuner_ops; };