summaryrefslogtreecommitdiff
path: root/linux/drivers/media/dvb/frontends
diff options
context:
space:
mode:
authorManu Abraham <manu@linuxtv.org>2009-06-18 11:50:53 +0400
committerManu Abraham <manu@linuxtv.org>2009-06-18 11:50:53 +0400
commite7002b4ad7d625111ed8894228d81b0032a9ca01 (patch)
tree2cd0201e49ecb21fe8a4d0a1908afa2684bb0b6e /linux/drivers/media/dvb/frontends
parentf40ea9829416dcd77a605a2d16a82c115a235cd2 (diff)
downloadmediapointer-dvb-s2-e7002b4ad7d625111ed8894228d81b0032a9ca01.tar.gz
mediapointer-dvb-s2-e7002b4ad7d625111ed8894228d81b0032a9ca01.tar.bz2
BUGFIX: An incorrect Carrier Recovery Loop optimization table was being
loaded for a given chip version. This would cause the optimization in tuning not to be applied and thus a failed expectation, in tuning speed increment. The patch swaps the tables in use. It also fixes a possible one in a million condition where state->dev_ver implies an older Cut (Cut < 2.0, eventhough the driver doesn't attach to any Cut older than 2.0) or even negative (due to a bad I2C bus master driver) for the card combination. Thanks to Mauro Carvalho Chehab <mchehab@infradead.org> for pointing out the issue at large. From: Manu Abraham <abraham.manu@gmail.com> Signed-off-by: Manu Abraham <manu@linuxtv.org>
Diffstat (limited to 'linux/drivers/media/dvb/frontends')
-rw-r--r--linux/drivers/media/dvb/frontends/stv090x.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/linux/drivers/media/dvb/frontends/stv090x.c b/linux/drivers/media/dvb/frontends/stv090x.c
index fc6e1a42b..8b152bea3 100644
--- a/linux/drivers/media/dvb/frontends/stv090x.c
+++ b/linux/drivers/media/dvb/frontends/stv090x.c
@@ -3425,10 +3425,13 @@ static u8 stv090x_optimize_carloop_short(struct stv090x_state *state)
break;
}
- if (state->dev_ver >= 0x30)
- short_crl = stv090x_s2_short_crl_cut20;
- else if (state->dev_ver >= 0x20)
+ if (state->dev_ver >= 0x30) {
+ /* Cut 3.0 and up */
short_crl = stv090x_s2_short_crl_cut30;
+ } else {
+ /* Cut 2.0 and up: we don't support cuts older than 2.0 */
+ short_crl = stv090x_s2_short_crl_cut20;
+ }
if (state->srate <= 3000000)
aclc = short_crl[index].crl_2;