diff options
author | Antti Palosaari <crope@iki.fi> | 2015-05-03 20:16:52 +0200 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@osg.samsung.com> | 2015-05-18 20:56:46 +0200 |
commit | 8b302d43e84dc863729010a1ea9a5a2bc83d25de (patch) | |
tree | ea01caef9d9006fdadc9d0fb9dfe5428c78c3f82 /drivers | |
parent | [media] rtl28xxu: set correct FC2580 tuner for RTL2832 demod (diff) | |
download | linux-8b302d43e84dc863729010a1ea9a5a2bc83d25de.tar.xz linux-8b302d43e84dc863729010a1ea9a5a2bc83d25de.zip |
[media] fc2580: calculate filter control word dynamically
Calculate low-pass filter control word dynamically from given radio
channel bandwidth.
Signed-off-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/media/tuners/fc2580.c | 8 | ||||
-rw-r--r-- | drivers/media/tuners/fc2580_priv.h | 9 |
2 files changed, 8 insertions, 9 deletions
diff --git a/drivers/media/tuners/fc2580.c b/drivers/media/tuners/fc2580.c index 08838b4b4821..30cee76b5f37 100644 --- a/drivers/media/tuners/fc2580.c +++ b/drivers/media/tuners/fc2580.c @@ -46,7 +46,7 @@ static int fc2580_set_params(struct dvb_frontend *fe) int ret, i; unsigned int uitmp, div_ref, div_ref_val, div_n, k, k_cw, div_out; u64 f_vco; - u8 u8tmp, synth_config; + u8 synth_config; unsigned long timeout; dev_dbg(&client->dev, @@ -249,9 +249,9 @@ static int fc2580_set_params(struct dvb_frontend *fe) if (ret) goto err; - u8tmp = div_u64((u64) dev->clk * fc2580_if_filter_lut[i].mul, - 1000000000); - ret = regmap_write(dev->regmap, 0x37, u8tmp); + uitmp = (unsigned int) 8058000 - (c->bandwidth_hz * 122 / 100 / 2); + uitmp = div64_u64((u64) dev->clk * uitmp, 1000000000000ULL); + ret = regmap_write(dev->regmap, 0x37, uitmp); if (ret) goto err; diff --git a/drivers/media/tuners/fc2580_priv.h b/drivers/media/tuners/fc2580_priv.h index 60f8f6caca11..bd88b0141141 100644 --- a/drivers/media/tuners/fc2580_priv.h +++ b/drivers/media/tuners/fc2580_priv.h @@ -64,16 +64,15 @@ static const struct fc2580_pll fc2580_pll_lut[] = { struct fc2580_if_filter { u32 freq; - u16 mul; u8 r36_val; u8 r39_val; }; static const struct fc2580_if_filter fc2580_if_filter_lut[] = { - { 6000000, 4400, 0x18, 0x00}, - { 7000000, 3910, 0x18, 0x80}, - { 8000000, 3300, 0x18, 0x80}, - {0xffffffff, 3300, 0x18, 0x80}, + { 6000000, 0x18, 0x00}, + { 7000000, 0x18, 0x80}, + { 8000000, 0x18, 0x80}, + {0xffffffff, 0x18, 0x80}, }; struct fc2580_freq_regs { |