diff options
author | Antti Palosaari <crope@iki.fi> | 2011-11-13 07:26:17 +0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2011-11-24 23:52:39 +0400 |
commit | 6d42b218b43f300d0787df7984c8f789de24c6e7 (patch) | |
tree | c1309c1b1928d0c0f5d02e6881eee52cec95fe16 /drivers/media/dvb/frontends/af9013.c | |
parent | 522fdf731946301ab7a5ecf854cbe89462397b81 (diff) | |
download | linux-6d42b218b43f300d0787df7984c8f789de24c6e7.tar.xz |
[media] af9013: use .get_if_frequency() when possible
Get IF frequency from tuner if tuner provides it.
Remove TDA18271 and TDA18218 IF frequency hacks since both tuners provides .get_if_frequency().
Signed-off-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/dvb/frontends/af9013.c')
-rw-r--r-- | drivers/media/dvb/frontends/af9013.c | 41 |
1 files changed, 9 insertions, 32 deletions
diff --git a/drivers/media/dvb/frontends/af9013.c b/drivers/media/dvb/frontends/af9013.c index 345311c33383..f4276e471d38 100644 --- a/drivers/media/dvb/frontends/af9013.c +++ b/drivers/media/dvb/frontends/af9013.c @@ -303,7 +303,8 @@ error: return ret; } -static int af9013_set_freq_ctrl(struct af9013_state *state, fe_bandwidth_t bw) +static int af9013_set_freq_ctrl(struct af9013_state *state, + struct dvb_frontend *fe) { int ret; u16 addr; @@ -324,37 +325,13 @@ static int af9013_set_freq_ctrl(struct af9013_state *state, fe_bandwidth_t bw) bfs_spec_inv = state->config.rf_spec_inv ? 1 : -1; } - adc_freq = state->config.adc_clock * 1000; - if_sample_freq = state->config.tuner_if * 1000; + adc_freq = state->config.adc_clock * 1000; - /* TDA18271 uses different sampling freq for every bw */ - if (state->config.tuner == AF9013_TUNER_TDA18271) { - switch (bw) { - case BANDWIDTH_6_MHZ: - if_sample_freq = 3300000; /* 3.3 MHz */ - break; - case BANDWIDTH_7_MHZ: - if_sample_freq = 3500000; /* 3.5 MHz */ - break; - case BANDWIDTH_8_MHZ: - default: - if_sample_freq = 4000000; /* 4.0 MHz */ - break; - } - } else if (state->config.tuner == AF9013_TUNER_TDA18218) { - switch (bw) { - case BANDWIDTH_6_MHZ: - if_sample_freq = 3000000; /* 3 MHz */ - break; - case BANDWIDTH_7_MHZ: - if_sample_freq = 3500000; /* 3.5 MHz */ - break; - case BANDWIDTH_8_MHZ: - default: - if_sample_freq = 4000000; /* 4 MHz */ - break; - } - } + /* get used IF frequency */ + if (fe->ops.tuner_ops.get_if_frequency) + fe->ops.tuner_ops.get_if_frequency(fe, &if_sample_freq); + else + if_sample_freq = state->config.tuner_if * 1000; while (if_sample_freq > (adc_freq / 2)) if_sample_freq = if_sample_freq - adc_freq; @@ -639,7 +616,7 @@ static int af9013_set_frontend(struct dvb_frontend *fe, goto error; /* program frequency control */ - ret = af9013_set_freq_ctrl(state, params->u.ofdm.bandwidth); + ret = af9013_set_freq_ctrl(state, fe); if (ret) goto error; |