| From ef3d2dc366c8c32d58dbbf9898cfd4f853ff8fe0 Mon Sep 17 00:00:00 2001 |
| From: Michael Krufky <mkrufky@kernellabs.com> |
| Date: Mon, 12 Mar 2012 17:07:22 -0300 |
| Subject: [media] au8522: bug-fix: enable modulation AFTER tune (instead of before tuning) |
| |
| From: Michael Krufky <mkrufky@kernellabs.com> |
| |
| 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> |
| |
| --- |
| drivers/media/dvb/frontends/au8522_dig.c | 10 +++++----- |
| 1 file changed, 5 insertions(+), 5 deletions(-) |
| |
| --- 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 dv |
| (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 dv |
| 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; |