[media] tda827x: improve recection with limit frequencies
authorJose Alberto Reguero <jareguero@telefonica.net>
Sat, 16 Jul 2011 11:38:13 +0000 (08:38 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Sun, 7 Aug 2011 12:32:16 +0000 (09:32 -0300)
tda827x is currently taking the demod IF frequency into account while
seeking for the proper tuner range. This is wrong, as the demod IF
frequency has nothing to do with the tuner PLL.

Signed-off-by: Jose Alberto Reguero <jareguero@telefonica.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/common/tuners/tda827x.c

index b21b6ea68b2501164fa503ac77f6ffb02f9b3aba..e0d5b43772b81e997ab6cd15199ae137c7bcb599 100644 (file)
@@ -176,7 +176,7 @@ static int tda827xo_set_params(struct dvb_frontend *fe,
                if_freq = 5000000;
                break;
        }
-       tuner_freq = params->frequency + if_freq;
+       tuner_freq = params->frequency;
 
        i = 0;
        while (tda827x_table[i].lomax < tuner_freq) {
@@ -185,6 +185,8 @@ static int tda827xo_set_params(struct dvb_frontend *fe,
                i++;
        }
 
+       tuner_freq += if_freq;
+
        N = ((tuner_freq + 125000) / 250000) << (tda827x_table[i].spd + 2);
        buf[0] = 0;
        buf[1] = (N>>8) | 0x40;
@@ -540,7 +542,7 @@ static int tda827xa_set_params(struct dvb_frontend *fe,
                if_freq = 5000000;
                break;
        }
-       tuner_freq = params->frequency + if_freq;
+       tuner_freq = params->frequency;
 
        if (fe->ops.info.type == FE_QAM) {
                dprintk("%s select tda827xa_dvbc\n", __func__);
@@ -554,6 +556,8 @@ static int tda827xa_set_params(struct dvb_frontend *fe,
                i++;
        }
 
+       tuner_freq += if_freq;
+
        N = ((tuner_freq + 31250) / 62500) << frequency_map[i].spd;
        buf[0] = 0;            // subaddress
        buf[1] = N >> 8;