|
@@ -89,6 +89,8 @@ struct stv0367_state {
|
|
|
struct stv0367cab_state *cab_state;
|
|
|
/* DVB-T */
|
|
|
struct stv0367ter_state *ter_state;
|
|
|
+ /* flags for operation control */
|
|
|
+ u8 use_i2c_gatectrl;
|
|
|
};
|
|
|
|
|
|
struct st_register {
|
|
@@ -1827,10 +1829,10 @@ static int stv0367ter_set_frontend(struct dvb_frontend *fe)
|
|
|
stv0367ter_init(fe);
|
|
|
|
|
|
if (fe->ops.tuner_ops.set_params) {
|
|
|
- if (fe->ops.i2c_gate_ctrl)
|
|
|
+ if (state->use_i2c_gatectrl && fe->ops.i2c_gate_ctrl)
|
|
|
fe->ops.i2c_gate_ctrl(fe, 1);
|
|
|
fe->ops.tuner_ops.set_params(fe);
|
|
|
- if (fe->ops.i2c_gate_ctrl)
|
|
|
+ if (state->use_i2c_gatectrl && fe->ops.i2c_gate_ctrl)
|
|
|
fe->ops.i2c_gate_ctrl(fe, 0);
|
|
|
}
|
|
|
|
|
@@ -2321,6 +2323,9 @@ struct dvb_frontend *stv0367ter_attach(const struct stv0367_config *config,
|
|
|
state->fe.demodulator_priv = state;
|
|
|
state->chip_id = stv0367_readreg(state, 0xf000);
|
|
|
|
|
|
+ /* demod operation options */
|
|
|
+ state->use_i2c_gatectrl = 1;
|
|
|
+
|
|
|
dprintk("%s: chip_id = 0x%x\n", __func__, state->chip_id);
|
|
|
|
|
|
/* check if the demod is there */
|
|
@@ -3120,10 +3125,10 @@ static int stv0367cab_set_frontend(struct dvb_frontend *fe)
|
|
|
|
|
|
/* Tuner Frequency Setting */
|
|
|
if (fe->ops.tuner_ops.set_params) {
|
|
|
- if (fe->ops.i2c_gate_ctrl)
|
|
|
+ if (state->use_i2c_gatectrl && fe->ops.i2c_gate_ctrl)
|
|
|
fe->ops.i2c_gate_ctrl(fe, 1);
|
|
|
fe->ops.tuner_ops.set_params(fe);
|
|
|
- if (fe->ops.i2c_gate_ctrl)
|
|
|
+ if (state->use_i2c_gatectrl && fe->ops.i2c_gate_ctrl)
|
|
|
fe->ops.i2c_gate_ctrl(fe, 0);
|
|
|
}
|
|
|
|
|
@@ -3437,6 +3442,9 @@ struct dvb_frontend *stv0367cab_attach(const struct stv0367_config *config,
|
|
|
state->fe.demodulator_priv = state;
|
|
|
state->chip_id = stv0367_readreg(state, 0xf000);
|
|
|
|
|
|
+ /* demod operation options */
|
|
|
+ state->use_i2c_gatectrl = 1;
|
|
|
+
|
|
|
dprintk("%s: chip_id = 0x%x\n", __func__, state->chip_id);
|
|
|
|
|
|
/* check if the demod is there */
|