summaryrefslogtreecommitdiff
path: root/linux/drivers/media/dvb/frontends
diff options
context:
space:
mode:
authorAndrew de Quincey <adq_dvb@lidskialf.net>2006-04-28 01:47:05 +0100
committerAndrew de Quincey <adq_dvb@lidskialf.net>2006-04-28 01:47:05 +0100
commitab12813a48c3dbc4f0d9f2b3e93e7a5465744f9c (patch)
tree5900abd2a636033c3d56115cdaaefbfa314cf63e /linux/drivers/media/dvb/frontends
parenta8030bb8f293d1eba3527eba4f91543aa9a48a0d (diff)
downloadmediapointer-dvb-s2-ab12813a48c3dbc4f0d9f2b3e93e7a5465744f9c.tar.gz
mediapointer-dvb-s2-ab12813a48c3dbc4f0d9f2b3e93e7a5465744f9c.tar.bz2
Add missing pll gate control calls
From: Andrew de Quincey <adq_dvb@lidskialf.net> I'd missed some of these out, breaking the av7110 tuning. I then checked for more and added them in where necessary. They may not actually be necessary in all these locations, but if not, they'll simply have no effect. Add small delay to stv0299 pll gate control to fix tuning problems. Signed-off-by: Andrew de Quincey <adq_dvb@lidskialf.net>
Diffstat (limited to 'linux/drivers/media/dvb/frontends')
-rw-r--r--linux/drivers/media/dvb/frontends/bsbe1.h2
-rw-r--r--linux/drivers/media/dvb/frontends/bsru6.h2
-rw-r--r--linux/drivers/media/dvb/frontends/lg_h06xf.h4
-rw-r--r--linux/drivers/media/dvb/frontends/stv0299.c6
4 files changed, 12 insertions, 2 deletions
diff --git a/linux/drivers/media/dvb/frontends/bsbe1.h b/linux/drivers/media/dvb/frontends/bsbe1.h
index 6b52d5abf..b2aeddb14 100644
--- a/linux/drivers/media/dvb/frontends/bsbe1.h
+++ b/linux/drivers/media/dvb/frontends/bsbe1.h
@@ -106,6 +106,8 @@ static int alps_bsbe1_tuner_set_params(struct dvb_frontend* fe, struct dvb_front
data[2] = 0x80 | ((div & 0x18000) >> 10) | 4;
data[3] = (params->frequency > 1530000) ? 0xE0 : 0xE4;
+ if (fe->ops->i2c_gate_ctrl)
+ fe->ops->i2c_gate_ctrl(fe, 1);
ret = i2c_transfer(i2c, &msg, 1);
return (ret != 1) ? -EIO : 0;
}
diff --git a/linux/drivers/media/dvb/frontends/bsru6.h b/linux/drivers/media/dvb/frontends/bsru6.h
index 5d13c5e4d..5533512b0 100644
--- a/linux/drivers/media/dvb/frontends/bsru6.h
+++ b/linux/drivers/media/dvb/frontends/bsru6.h
@@ -120,6 +120,8 @@ static int alps_bsru6_tuner_set_params(struct dvb_frontend *fe, struct dvb_front
if (params->frequency > 1530000)
buf[3] = 0xc0;
+ if (fe->ops->i2c_gate_ctrl)
+ fe->ops->i2c_gate_ctrl(fe, 1);
if (i2c_transfer(i2c, &msg, 1) != 1)
return -EIO;
return 0;
diff --git a/linux/drivers/media/dvb/frontends/lg_h06xf.h b/linux/drivers/media/dvb/frontends/lg_h06xf.h
index 6869cbd03..21acb5bad 100644
--- a/linux/drivers/media/dvb/frontends/lg_h06xf.h
+++ b/linux/drivers/media/dvb/frontends/lg_h06xf.h
@@ -29,6 +29,8 @@ static int lg_h06xf_pll_set(struct dvb_frontend* fe, struct i2c_adapter* i2c_ada
int err;
dvb_pll_configure(&dvb_pll_lg_tdvs_h06xf, buf, params->frequency, 0);
+ if (fe->ops->i2c_gate_ctrl)
+ fe->ops->i2c_gate_ctrl(fe, 1);
if ((err = i2c_transfer(i2c_adap, &msg, 1)) != 1) {
printk(KERN_WARNING "lg_h06xf: %s error "
"(addr %02x <- %02x, err = %i)\n",
@@ -51,6 +53,8 @@ static int lg_h06xf_pll_set(struct dvb_frontend* fe, struct i2c_adapter* i2c_ada
buf[1] = 0x50;
msg.len = 2;
#endif
+ if (fe->ops->i2c_gate_ctrl)
+ fe->ops->i2c_gate_ctrl(fe, 1);
if ((err = i2c_transfer(i2c_adap, &msg, 1)) != 1) {
printk(KERN_WARNING "lg_h06xf: %s error "
"(addr %02x <- %02x, err = %i)\n",
diff --git a/linux/drivers/media/dvb/frontends/stv0299.c b/linux/drivers/media/dvb/frontends/stv0299.c
index 5a8131023..e91bb5842 100644
--- a/linux/drivers/media/dvb/frontends/stv0299.c
+++ b/linux/drivers/media/dvb/frontends/stv0299.c
@@ -604,10 +604,12 @@ static int stv0299_i2c_gate_ctrl(struct dvb_frontend* fe, int enable)
struct stv0299_state* state = fe->demodulator_priv;
if (enable) {
- return stv0299_writeregI(state, 0x05, 0xb5);
+ stv0299_writeregI(state, 0x05, 0xb5);
} else {
- return stv0299_writeregI(state, 0x05, 0x35);
+ stv0299_writeregI(state, 0x05, 0x35);
}
+ udelay(1);
+ return 0;
}
static int stv0299_get_tune_settings(struct dvb_frontend* fe, struct dvb_frontend_tune_settings* fesettings)