diff options
-rw-r--r-- | drivers/media/dvb/frontends/drxd.h | 4 | ||||
-rw-r--r-- | drivers/media/dvb/frontends/drxd_hard.c | 3 | ||||
-rw-r--r-- | drivers/media/video/em28xx/em28xx-dvb.c | 1 |
3 files changed, 8 insertions, 0 deletions
diff --git a/drivers/media/dvb/frontends/drxd.h b/drivers/media/dvb/frontends/drxd.h index 81093b9b1568..b21c85315d76 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 994195fe9fbb..b8baafe3b54b 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 bdbdb1bd8ec9..f18e41f0bbc1 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) |