Skip to content

Commit

Permalink
[media] drxd: provide ability to disable the i2c gate control function
Browse files Browse the repository at this point in the history
If the tuner is not actually behind an i2c gate, using the i2c gate control
function can wedge the i2c bus.  Provide the ability to control on a per-board
basis whether it should be used.

Problem was noticed on the HVR-900 R2, where it resulted in the first tuning
attempt succeeding, and then all subsequent attempts to access the xc3028
being treated as failures (including the call to sleep the tuner).

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
  • Loading branch information
Devin Heitmueller authored and Mauro Carvalho Chehab committed May 20, 2011
1 parent 3e56590 commit 6b142b3
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 0 deletions.
4 changes: 4 additions & 0 deletions drivers/media/dvb/frontends/drxd.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
3 changes: 3 additions & 0 deletions drivers/media/dvb/frontends/drxd_hard.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}

Expand Down
1 change: 1 addition & 0 deletions drivers/media/video/em28xx/em28xx-dvb.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down

0 comments on commit 6b142b3

Please sign in to comment.