[patch 76/96] DVB: s5h1409: Perform s5h1409 soft reset after tuning

Greg KH
2009-03-14T00:45:19Z

[-- Attachment #1: 0001-DVB-s5h1409-Perform-s5h1409-soft-reset-after-tunin.patch --]
[-- Type: text/plain, Size: 1774 bytes --]

2.6.27-stable review patch. If anyone has any objections, please let us know.

------------------

From: Devin Heitmueller <dheitmueller@linuxtv.org>

(cherry picked from commit 67e70baf043cfdcdaf5972bc94be82632071536b)

Just like with the s5h1411, the s5h1409 needs a soft-reset in order for it
to know that the tuner has been told to change frequencies. This change
changes the behavior from "random tuning times between 500ms to complete
tuning lock failures" to "tuning lock consistently within 700ms".

Thanks to Robert Krakora <rob.krakora@messagenetsystems.com> for doing
initial testing of the patch on the KWorld 330U.

Thanks to Andy Walls <awalls@radix.net> for doing testing of the patch on
the HVR-1600.

Thanks to Michael Krufky <mkrufky@linuxtv.org> for doing additional testing.

Signed-off-by: Devin Heitmueller <dheitmueller@linuxtv.org>
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
drivers/media/dvb/frontends/s5h1409.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)

--- a/drivers/media/dvb/frontends/s5h1409.c
+++ b/drivers/media/dvb/frontends/s5h1409.c
@@ -542,9 +542,6 @@ static int s5h1409_set_frontend (struct

s5h1409_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);
fe->ops.tuner_ops.set_params(fe, p);
@@ -557,6 +554,10 @@ static int s5h1409_set_frontend (struct
s5h1409_set_qam_interleave_mode(fe);
}

+ /* Issue a reset to the demod so it knows to resync against the
+ newly tuned frequency */
+ s5h1409_softreset(fe);
+
return 0;
}