提交 7718dcf0 编写于 作者: D Daniel Scheller 提交者: Mauro Carvalho Chehab

[media] dvb-frontends/stv0367: make full reinit on set_frontend() optional

Every time dvb_frontend_ops.set_frontend() is called, an almost full reinit
of the demodulator will be performed. While this might cause a slight delay
when switching channels due to all involved tables being rewritten, it can
even be dangerous in certain causes in that the demod may lock up and
requires to be powercycled (this can happen on Digital Devices hardware).
So this adds a flag if it should be done, and to not change behaviour with
existing card support, it'll be enabled in all cases.
Signed-off-by: NDaniel Scheller <d.scheller@gmx.net>
Signed-off-by: NMauro Carvalho Chehab <mchehab@s-opensource.com>
上级 8a9c0735
...@@ -93,6 +93,7 @@ struct stv0367_state { ...@@ -93,6 +93,7 @@ struct stv0367_state {
/* flags for operation control */ /* flags for operation control */
u8 use_i2c_gatectrl; u8 use_i2c_gatectrl;
u8 deftabs; u8 deftabs;
u8 reinit_on_setfrontend;
}; };
#define RF_LOOKUP_TABLE_SIZE 31 #define RF_LOOKUP_TABLE_SIZE 31
...@@ -1217,7 +1218,8 @@ static int stv0367ter_set_frontend(struct dvb_frontend *fe) ...@@ -1217,7 +1218,8 @@ static int stv0367ter_set_frontend(struct dvb_frontend *fe)
s8 num_trials, index; s8 num_trials, index;
u8 SenseTrials[] = { INVERSION_ON, INVERSION_OFF }; u8 SenseTrials[] = { INVERSION_ON, INVERSION_OFF };
stv0367ter_init(fe); if (state->reinit_on_setfrontend)
stv0367ter_init(fe);
if (fe->ops.tuner_ops.set_params) { if (fe->ops.tuner_ops.set_params) {
if (state->use_i2c_gatectrl && fe->ops.i2c_gate_ctrl) if (state->use_i2c_gatectrl && fe->ops.i2c_gate_ctrl)
...@@ -1717,6 +1719,7 @@ struct dvb_frontend *stv0367ter_attach(const struct stv0367_config *config, ...@@ -1717,6 +1719,7 @@ struct dvb_frontend *stv0367ter_attach(const struct stv0367_config *config,
/* demod operation options */ /* demod operation options */
state->use_i2c_gatectrl = 1; state->use_i2c_gatectrl = 1;
state->deftabs = STV0367_DEFTAB_GENERIC; state->deftabs = STV0367_DEFTAB_GENERIC;
state->reinit_on_setfrontend = 1;
dprintk("%s: chip_id = 0x%x\n", __func__, state->chip_id); dprintk("%s: chip_id = 0x%x\n", __func__, state->chip_id);
...@@ -2511,7 +2514,8 @@ static int stv0367cab_set_frontend(struct dvb_frontend *fe) ...@@ -2511,7 +2514,8 @@ static int stv0367cab_set_frontend(struct dvb_frontend *fe)
break; break;
} }
stv0367cab_init(fe); if (state->reinit_on_setfrontend)
stv0367cab_init(fe);
/* Tuner Frequency Setting */ /* Tuner Frequency Setting */
if (fe->ops.tuner_ops.set_params) { if (fe->ops.tuner_ops.set_params) {
...@@ -2835,6 +2839,7 @@ struct dvb_frontend *stv0367cab_attach(const struct stv0367_config *config, ...@@ -2835,6 +2839,7 @@ struct dvb_frontend *stv0367cab_attach(const struct stv0367_config *config,
/* demod operation options */ /* demod operation options */
state->use_i2c_gatectrl = 1; state->use_i2c_gatectrl = 1;
state->deftabs = STV0367_DEFTAB_GENERIC; state->deftabs = STV0367_DEFTAB_GENERIC;
state->reinit_on_setfrontend = 1;
dprintk("%s: chip_id = 0x%x\n", __func__, state->chip_id); dprintk("%s: chip_id = 0x%x\n", __func__, state->chip_id);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册