From ef3d2dc366c8c32d58dbbf9898cfd4f853ff8fe0 Mon Sep 17 00:00:00 2001 From: Michael Krufky Date: Mon, 12 Mar 2012 17:07:22 -0300 Subject: [PATCH] [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 Signed-off-by: Michael Krufky Cc: stable@kernel.org Signed-off-by: Mauro Carvalho Chehab --- drivers/media/dvb/frontends/au8522_dig.c | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-) --- old/drivers/media/dvb/frontends/au8522_dig.c 2012-02-20 16:42:16.000000000 -0500 +++ linux/drivers/media/dvb/frontends/au8522_dig.c 2012-03-22 10:01:18.492766935 -0400 @@ -588,11 +588,6 @@ (state->current_modulation == p->u.vsb.modulation)) return 0; - au8522_enable_modulation(fe, p->u.vsb.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 @@ if (ret < 0) return ret; + au8522_enable_modulation(fe, p->u.vsb.modulation); + + /* Allow the demod to settle */ + msleep(100); + state->current_frequency = p->frequency; return 0;