summaryrefslogtreecommitdiff
path: root/drivers/media/dvb/frontends/tda18271c2dd.c
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@redhat.com>2011-12-17 20:36:57 -0300
committerMauro Carvalho Chehab <mchehab@redhat.com>2011-12-20 11:50:23 -0200
commitfd66c45dd51000ff444231a94ac15ccab8cffd3d (patch)
tree9f54f08e52b38c936329a85a396abd98369be048 /drivers/media/dvb/frontends/tda18271c2dd.c
parent669a4ba44d6054f147ef123b0c9a640e49c518e0 (diff)
downloadlinux-fd66c45dd51000ff444231a94ac15ccab8cffd3d.tar.gz
[media] Remove Annex A/C selection via roll-off factor
Instead of using a roll-off factor, change DRX-K & friends to select the bandwidth filter and the Nyquist half roll-off via delivery system. This provides a cleaner support for Annex A/C switch. Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/dvb/frontends/tda18271c2dd.c')
-rw-r--r--drivers/media/dvb/frontends/tda18271c2dd.c44
1 files changed, 19 insertions, 25 deletions
diff --git a/drivers/media/dvb/frontends/tda18271c2dd.c b/drivers/media/dvb/frontends/tda18271c2dd.c
index b66ca29704fc..0f8e9622bc96 100644
--- a/drivers/media/dvb/frontends/tda18271c2dd.c
+++ b/drivers/media/dvb/frontends/tda18271c2dd.c
@@ -1130,50 +1130,44 @@ static int set_params(struct dvb_frontend *fe,
struct tda_state *state = fe->tuner_priv;
int status = 0;
int Standard;
- u32 bw;
+ u32 bw = fe->dtv_property_cache.bandwidth_hz;
+ u32 delsys = fe->dtv_property_cache.delivery_system;
- state->m_Frequency = params->frequency;
+ state->m_Frequency = fe->dtv_property_cache.frequency;
- if (fe->ops.info.type == FE_OFDM)
- switch (params->u.ofdm.bandwidth) {
- case BANDWIDTH_6_MHZ:
+ switch (delsys) {
+ case SYS_DVBT:
+ case SYS_DVBT2:
+ switch (bw) {
+ case 6000000:
Standard = HF_DVBT_6MHZ;
break;
- case BANDWIDTH_7_MHZ:
+ case 7000000:
Standard = HF_DVBT_7MHZ;
break;
- default:
- case BANDWIDTH_8_MHZ:
+ case 8000000:
Standard = HF_DVBT_8MHZ;
break;
+ default:
+ return -EINVAL;
}
- else if (fe->ops.info.type == FE_QAM) {
- /*
- * Using a higher bandwidth at the tuner filter may
- * allow inter-carrier interference.
- * So, determine the minimal channel spacing, in order
- * to better adjust the tuner filter.
- * According with ITU-T J.83, the bandwidth is given by:
- * bw = Simbol Rate * (1 + roll_off), where the roll_off
- * is equal to 0.15 for Annex A, and 0.13 for annex C
- */
- if (fe->dtv_property_cache.rolloff == ROLLOFF_13)
- bw = (params->u.qam.symbol_rate * 113) / 100;
- else
- bw = (params->u.qam.symbol_rate * 115) / 100;
+ case SYS_DVBC_ANNEX_A:
+ case SYS_DVBC_ANNEX_C:
if (bw <= 6000000)
Standard = HF_DVBC_6MHZ;
else if (bw <= 7000000)
Standard = HF_DVBC_7MHZ;
else
Standard = HF_DVBC_8MHZ;
- } else
+ default:
return -EINVAL;
+ }
do {
- status = RFTrackingFiltersCorrection(state, params->frequency);
+ status = RFTrackingFiltersCorrection(state, state->m_Frequency);
if (status < 0)
break;
- status = ChannelConfiguration(state, params->frequency, Standard);
+ status = ChannelConfiguration(state, state->m_Frequency,
+ Standard);
if (status < 0)
break;