summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Toth <stoth@linuxtv.org>2009-05-05 19:30:27 -0300
committerMauro Carvalho Chehab <mchehab@redhat.com>2009-06-16 18:21:01 -0300
commit8153c3b7d80a2058f91fb0b4ef49190f241ecc34 (patch)
tree1d115e6318f5611a56ae971c6510a5456ae38e77
parent38092a4402e0df6f1f283ff6e455197035266ce7 (diff)
downloadkernel-crypto-8153c3b7d80a2058f91fb0b4ef49190f241ecc34.tar.gz
kernel-crypto-8153c3b7d80a2058f91fb0b4ef49190f241ecc34.tar.xz
kernel-crypto-8153c3b7d80a2058f91fb0b4ef49190f241ecc34.zip
V4L/DVB (11700): tda10048: Added option to block i2c gate control from other drivers.
Currently, DVB-T is broken and this fixes it. The PVRUSB2 has an odd I2C bus configuration where opening the i2c gate on the digital and analog demod causes the tuner to fail. This needs to be protected against for the PVRUSB2. Signed-off-by: Steven Toth <stoth@linuxtv.org> Signed-off-by: Michael Krufky <mkrufky@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r--drivers/media/dvb/frontends/tda10048.c3
-rw-r--r--drivers/media/dvb/frontends/tda10048.h3
2 files changed, 6 insertions, 0 deletions
diff --git a/drivers/media/dvb/frontends/tda10048.c b/drivers/media/dvb/frontends/tda10048.c
index dfa3e2ccc74..11be4697cb3 100644
--- a/drivers/media/dvb/frontends/tda10048.c
+++ b/drivers/media/dvb/frontends/tda10048.c
@@ -689,6 +689,9 @@ static int tda10048_i2c_gate_ctrl(struct dvb_frontend *fe, int enable)
struct tda10048_state *state = fe->demodulator_priv;
dprintk(1, "%s(%d)\n", __func__, enable);
+ if (state->config->disable_gate_access)
+ return 0;
+
if (enable)
return tda10048_writereg(state, TDA10048_CONF_C4_1,
tda10048_readreg(state, TDA10048_CONF_C4_1) | 0x02);
diff --git a/drivers/media/dvb/frontends/tda10048.h b/drivers/media/dvb/frontends/tda10048.h
index ab9cf5bd421..ee07b50e90d 100644
--- a/drivers/media/dvb/frontends/tda10048.h
+++ b/drivers/media/dvb/frontends/tda10048.h
@@ -57,6 +57,9 @@ struct tda10048_config {
#define TDA10048_CLK_4000 4000
#define TDA10048_CLK_16000 16000
u16 clk_freq_khz;
+
+ /* Disable I2C gate access */
+ u8 disable_gate_access;
};
#if defined(CONFIG_DVB_TDA10048) || \