Commit ef3d2dc3 authored by Michael Krufky's avatar Michael Krufky Committed by Mauro Carvalho Chehab

[media] au8522: bug-fix: enable modulation AFTER tune (instead of before tuning)

The au8522 driver programs the tuner after programming the demodulator,
but the tuner should be programmed first. This patch fixes this behavior.

EDIT: Apparantly Devin created a similar patch some time ago, but hasn't
submitted it for merge.  I never saw his patch, but I thank him anyhow
for his efforts.  In addition, Devin pointed out a flaw in my patch:

This newly generated patch takes Devin's comments into account.

Thanks-to: Devin Heitmueller <dheitmueller@kernellabs.com>
Signed-off-by: default avatarMichael Krufky <mkrufky@linuxtv.org>
Cc: stable@kernel.org
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 22f1732f
...@@ -588,11 +588,6 @@ static int au8522_set_frontend(struct dvb_frontend *fe) ...@@ -588,11 +588,6 @@ static int au8522_set_frontend(struct dvb_frontend *fe)
(state->current_modulation == c->modulation)) (state->current_modulation == c->modulation))
return 0; return 0;
au8522_enable_modulation(fe, c->modulation);
/* Allow the demod to settle */
msleep(100);
if (fe->ops.tuner_ops.set_params) { if (fe->ops.tuner_ops.set_params) {
if (fe->ops.i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops.i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
...@@ -604,6 +599,11 @@ static int au8522_set_frontend(struct dvb_frontend *fe) ...@@ -604,6 +599,11 @@ static int au8522_set_frontend(struct dvb_frontend *fe)
if (ret < 0) if (ret < 0)
return ret; return ret;
/* Allow the tuner to settle */
msleep(100);
au8522_enable_modulation(fe, c->modulation);
state->current_frequency = c->frequency; state->current_frequency = c->frequency;
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment