summaryrefslogtreecommitdiff
path: root/drivers/media/dvb/dvb-core/dvb_frontend.c
diff options
context:
space:
mode:
authorAndrew de Quincey <adq_dvb@lidskialf.net>2006-04-18 17:47:09 -0300
committerMauro Carvalho Chehab <mchehab@infradead.org>2006-06-25 01:58:31 -0300
commit7eef5dd6daecf3ee305116c9cf41ae7166270c4c (patch)
tree0abee619372a014ce4c3ec41a0ed01008c756807 /drivers/media/dvb/dvb-core/dvb_frontend.c
parent7c25039dbb45f3e6a34dabe715107d34d298dc40 (diff)
V4L/DVB (3845): DVB core changes for PLL refactoring
Add tuner_ops structure. Add calls into dvb_frontend to support the new tuner architecture. Signed-off-by: Andrew de Quincey <adq_dvb@lidskialf.net> 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.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/media/dvb/dvb-core/dvb_frontend.c b/drivers/media/dvb/dvb-core/dvb_frontend.c
index 889d4a817c88..bbf441215e79 100644
--- a/drivers/media/dvb/dvb-core/dvb_frontend.c
+++ b/drivers/media/dvb/dvb-core/dvb_frontend.c
@@ -215,6 +215,11 @@ static void dvb_frontend_init(struct dvb_frontend *fe)
if (fe->ops->init)
fe->ops->init(fe);
+ if (fe->ops->tuner_ops.init) {
+ fe->ops->tuner_ops.init(fe);
+ if (fe->ops->i2c_gate_ctrl)
+ fe->ops->i2c_gate_ctrl(fe, 0);
+ }
}
void dvb_frontend_reinitialise(struct dvb_frontend *fe)
@@ -571,6 +576,11 @@ static int dvb_frontend_thread(void *data)
if (dvb_powerdown_on_sleep)
if (fe->ops->set_voltage)
fe->ops->set_voltage(fe, SEC_VOLTAGE_OFF);
+ if (fe->ops->tuner_ops.sleep) {
+ fe->ops->tuner_ops.sleep(fe);
+ if (fe->ops->i2c_gate_ctrl)
+ fe->ops->i2c_gate_ctrl(fe, 0);
+ }
if (fe->ops->sleep)
fe->ops->sleep(fe);
}
@@ -1085,6 +1095,11 @@ int dvb_unregister_frontend(struct dvb_frontend* fe)
mutex_lock(&frontend_mutex);
dvb_unregister_device (fepriv->dvbdev);
dvb_frontend_stop (fe);
+ if (fe->ops->tuner_ops.release) {
+ fe->ops->tuner_ops.release(fe);
+ if (fe->ops->i2c_gate_ctrl)
+ fe->ops->i2c_gate_ctrl(fe, 0);
+ }
if (fe->ops->release)
fe->ops->release(fe);
else