summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorMichael Krufky <mkrufky@kernellabs.com>2012-03-12 17:07:22 -0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-04-02 10:32:09 -0700
commit3c55383f313b3c28a074f5881272c800f0d3ee47 (patch)
treebd53c7af74f09dbcf49ce9b80b971ac2e722bfde /drivers
parent5af11ec1e3215db83ee131fd70663ad720b91708 (diff)
downloadlwn-3c55383f313b3c28a074f5881272c800f0d3ee47.tar.gz
lwn-3c55383f313b3c28a074f5881272c800f0d3ee47.zip
au8522: bug-fix: enable modulation AFTER tune (instead of before tuning)
commit ef3d2dc366c8c32d58dbbf9898cfd4f853ff8fe0 upstream. 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: Michael Krufky <mkrufky@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/media/dvb/frontends/au8522_dig.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/media/dvb/frontends/au8522_dig.c b/drivers/media/dvb/frontends/au8522_dig.c
index c688b95df486..25f650934c73 100644
--- a/drivers/media/dvb/frontends/au8522_dig.c
+++ b/drivers/media/dvb/frontends/au8522_dig.c
@@ -588,11 +588,6 @@ static int au8522_set_frontend(struct dvb_frontend *fe)
(state->current_modulation == c->modulation))
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.i2c_gate_ctrl)
fe->ops.i2c_gate_ctrl(fe, 1);
@@ -604,6 +599,11 @@ static int au8522_set_frontend(struct dvb_frontend *fe)
if (ret < 0)
return ret;
+ /* Allow the tuner to settle */
+ msleep(100);
+
+ au8522_enable_modulation(fe, c->modulation);
+
state->current_frequency = c->frequency;
return 0;