V4L/DVB (9443): Bug: Bandwidth calculation
authorManu Abraham <abraham.manu@gmail.com>
Fri, 18 Jan 2008 14:28:48 +0000 (11:28 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Mon, 29 Dec 2008 19:53:21 +0000 (17:53 -0200)
Bug #1: The 5 tap equaliser is set to correct simple perturbations
like reflections on the IF cable for DVB-S. In the case of DVB-S2
a more powerful equalizer is used to correct the filter group delay
allowing the bandwidth to be reduced by a factor of 1/3

Bug #2: The ZIF tuner takes badwidth to be set in Hz

Signed-off-by: Manu Abraham <manu@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/dvb/frontends/stb0899_drv.c
drivers/media/dvb/frontends/stb6100.c

index d21396450259eedd813590b9054ac392e52512be..45961193272b90328037fb69737200cbe9170b50 100644 (file)
@@ -1554,8 +1554,7 @@ static enum dvbfe_search stb0899_search(struct dvb_frontend *fe, struct dvbfe_pa
        }
        dprintk(verbose, FE_DEBUG, 1, "delivery system=%d", state->delsys);
 
-       SearchRange = 3000000; /* Search Bandwidth (3 Mhz, was initially 10  Mhz)       */
-//     SearchRange = 10000000; /* Search Bandwidth (3 Mhz, was initially 10  Mhz)      */
+       SearchRange = 10000000;
        dprintk(verbose, FE_DEBUG, 1, "Frequency=%d, Srate=%d", i_params->freq, i_params->srate);
        /* checking Search Range is meaningless for a fixed 3 Mhz                       */
        if (INRANGE(i_params->srate, 1000000, 45000000)) {
@@ -1626,7 +1625,7 @@ static enum dvbfe_search stb0899_search(struct dvb_frontend *fe, struct dvbfe_pa
                        internal->srch_range            = SearchRange;
 
                        if (state->config->tuner_set_bandwidth)
-                               state->config->tuner_set_bandwidth(fe, (135 * (stb0899_carr_width(state) + SearchRange)) / 100);
+                               state->config->tuner_set_bandwidth(fe, (stb0899_carr_width(state) + SearchRange));
                        if (state->config->tuner_get_bandwidth)
                                state->config->tuner_get_bandwidth(fe, &internal->tuner_bw);
 
index d19a3bfcc5fe93f7045bdb7d4bf417ec8f196127..f4c2b8e114bf5b540e45df097dc1d29a85c8c4bf 100644 (file)
@@ -269,7 +269,7 @@ static int stb6100_set_bandwidth(struct dvb_frontend *fe, u32 bandwidth)
 
        dprintk(verbose, FE_DEBUG, 1, "set bandwidth to %u kHz", bandwidth);
 
-       bandwidth *= 1000 / 2;  /* kHz -> Hz, bw / 2 */
+       bandwidth /= 2; /* ZIF */
 
        if (bandwidth > 36000000)       /* F[4:0] BW/2 max =31+5=36 mhz for F=31        */
                tmp = 31;