[PATCH] dvb: frontend: stv0297: QAM128 tuning improvement
authorPatrick Boettcher <pb@linuxtv.org>
Fri, 9 Sep 2005 20:02:38 +0000 (13:02 -0700)
committerLinus Torvalds <torvalds@g5.osdl.org>
Fri, 9 Sep 2005 20:57:39 +0000 (13:57 -0700)
while investigating the QAM_128-issue with the stv0297-driver for the
Cablestar (which is not the same as the one in dvb-kernel CVS, yet), I fixed
it, not by increasing the timeout, but by disabling the corner-detection for
QAM_128 and higher.

This patch has been tested on dvb-kernel cvs, and has been reported to work by
multiple users.  Some cards still need timeout increase on top of this patch.
This will be addressed later.

Signed-off-by: Patrick Boettcher <pb@linuxtv.org>
Signed-off-by: Michael Krufky <mkrufky@m1k.net>
Signed-off-by: Johannes Stezenbach <js@linuxtv.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
drivers/media/dvb/frontends/stv0297.c

index 928aca052afe355c3dc6106d8c2e3dfc2a133d0f..01eb41990e8a83b7634f9f1207109c7e48d0631d 100644 (file)
@@ -606,7 +606,13 @@ static int stv0297_set_frontend(struct dvb_frontend *fe, struct dvb_frontend_par
        stv0297_set_inversion(state, inversion);
 
        /* kick off lock */
-       stv0297_writereg_mask(state, 0x88, 0x08, 0x08);
+       /* Disable corner detection for higher QAMs */
+       if (p->u.qam.modulation == QAM_128 ||
+               p->u.qam.modulation == QAM_256)
+               stv0297_writereg_mask(state, 0x88, 0x08, 0x00);
+       else
+               stv0297_writereg_mask(state, 0x88, 0x08, 0x08);
+
        stv0297_writereg_mask(state, 0x5a, 0x20, 0x00);
        stv0297_writereg_mask(state, 0x6a, 0x01, 0x01);
        stv0297_writereg_mask(state, 0x43, 0x40, 0x40);