diff options
author | Manu Abraham <manu@linuxtv.org> | 2009-06-18 11:50:53 +0400 |
---|---|---|
committer | Manu Abraham <manu@linuxtv.org> | 2009-06-18 11:50:53 +0400 |
commit | e7002b4ad7d625111ed8894228d81b0032a9ca01 (patch) | |
tree | 2cd0201e49ecb21fe8a4d0a1908afa2684bb0b6e /linux/drivers/media/dvb/frontends | |
parent | f40ea9829416dcd77a605a2d16a82c115a235cd2 (diff) | |
download | mediapointer-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.c | 9 |
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; |