Commit 2ca58f45 authored by Antti Palosaari's avatar Antti Palosaari Committed by Mauro Carvalho Chehab

[media] ts2020: improve filter limit calc

* We don't need calculate channel bandwidth from symbol rate as it
is calculated by DVB core.

* Use clamp() to force upper/lower limit of filter 3dB frequency.
Upper limit should never exceeded 40MHz (80MHz BW) in any case,
though...
Signed-off-by: default avatarAntti Palosaari <crope@iki.fi>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
parent af9d5255
...@@ -233,7 +233,6 @@ static int ts2020_set_params(struct dvb_frontend *fe) ...@@ -233,7 +233,6 @@ static int ts2020_set_params(struct dvb_frontend *fe)
struct dtv_frontend_properties *c = &fe->dtv_property_cache; struct dtv_frontend_properties *c = &fe->dtv_property_cache;
struct ts2020_priv *priv = fe->tuner_priv; struct ts2020_priv *priv = fe->tuner_priv;
int ret; int ret;
u32 symbol_rate = (c->symbol_rate / 1000);
u32 f3db, gdiv28; u32 f3db, gdiv28;
u16 u16tmp, value, lpf_coeff; u16 u16tmp, value, lpf_coeff;
u8 buf[3], reg10, lpf_mxdiv, mlpf_max, mlpf_min, nlpf; u8 buf[3], reg10, lpf_mxdiv, mlpf_max, mlpf_min, nlpf;
...@@ -312,12 +311,9 @@ static int ts2020_set_params(struct dvb_frontend *fe) ...@@ -312,12 +311,9 @@ static int ts2020_set_params(struct dvb_frontend *fe)
value = ts2020_readreg(fe, 0x26); value = ts2020_readreg(fe, 0x26);
f3db = (symbol_rate * 135) / 200 + 2000; f3db = (c->bandwidth_hz / 1000 / 2) + 2000;
f3db += FREQ_OFFSET_LOW_SYM_RATE; f3db += FREQ_OFFSET_LOW_SYM_RATE; /* FIXME: ~always too wide filter */
if (f3db < 7000) f3db = clamp(f3db, 7000U, 40000U);
f3db = 7000;
if (f3db > 40000)
f3db = 40000;
gdiv28 = gdiv28 * 207 / (value * 2 + 151); gdiv28 = gdiv28 * 207 / (value * 2 + 151);
mlpf_max = gdiv28 * 135 / 100; mlpf_max = gdiv28 * 135 / 100;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment