aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/media/dvb/frontends/drxd.h4
-rw-r--r--drivers/media/dvb/frontends/drxd_hard.c3
-rw-r--r--drivers/media/video/em28xx/em28xx-dvb.c1
3 files changed, 8 insertions, 0 deletions
diff --git a/drivers/media/dvb/frontends/drxd.h b/drivers/media/dvb/frontends/drxd.h
index 81093b9..b21c853 100644
--- a/drivers/media/dvb/frontends/drxd.h
+++ b/drivers/media/dvb/frontends/drxd.h
@@ -44,6 +44,10 @@ struct drxd_config
u8 demoda_address;
u8 demod_revision;
+ /* If the tuner is not behind an i2c gate, be sure to flip this bit
+ or else the i2c bus could get wedged */
+ u8 disable_i2c_gate_ctrl;
+
u32 IF;
int (*pll_set) (void *priv, void *priv_params,
u8 pll_addr, u8 demoda_addr, s32 *off);
diff --git a/drivers/media/dvb/frontends/drxd_hard.c b/drivers/media/dvb/frontends/drxd_hard.c
index 994195f..b8baafe 100644
--- a/drivers/media/dvb/frontends/drxd_hard.c
+++ b/drivers/media/dvb/frontends/drxd_hard.c
@@ -2662,6 +2662,9 @@ int drxd_config_i2c(struct dvb_frontend *fe, int onoff)
{
struct drxd_state *state=fe->demodulator_priv;
+ if (state->config.disable_i2c_gate_ctrl == 1)
+ return 0;
+
return DRX_ConfigureI2CBridge(state, onoff);
}
diff --git a/drivers/media/video/em28xx/em28xx-dvb.c b/drivers/media/video/em28xx/em28xx-dvb.c
index bdbdb1b..f18e41f 100644
--- a/drivers/media/video/em28xx/em28xx-dvb.c
+++ b/drivers/media/video/em28xx/em28xx-dvb.c
@@ -291,6 +291,7 @@ static struct drxd_config em28xx_drxd = {
.demoda_address = 0x00, .pll_address = 0x00,
.pll_type = DRXD_PLL_NONE, .clock = 12000, .insert_rs_byte = 1,
.pll_set = NULL, .osc_deviation = NULL, .IF = 42800000,
+ .disable_i2c_gate_ctrl = 1,
};
static int mt352_terratec_xs_init(struct dvb_frontend *fe)