diff options
Diffstat (limited to 'drivers/media/dvb/frontends/cxd2820r_t2.c')
-rw-r--r-- | drivers/media/dvb/frontends/cxd2820r_t2.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/drivers/media/dvb/frontends/cxd2820r_t2.c b/drivers/media/dvb/frontends/cxd2820r_t2.c index 6548588309f7..8635b075f62d 100644 --- a/drivers/media/dvb/frontends/cxd2820r_t2.c +++ b/drivers/media/dvb/frontends/cxd2820r_t2.c @@ -27,7 +27,7 @@ int cxd2820r_set_frontend_t2(struct dvb_frontend *fe, struct cxd2820r_priv *priv = fe->demodulator_priv; struct dtv_frontend_properties *c = &fe->dtv_property_cache; int ret, i; - u32 if_khz, if_ctl; + u32 if_freq, if_ctl; u64 num; u8 buf[3], bw_param; u8 bw_params1[][5] = { @@ -93,22 +93,18 @@ int cxd2820r_set_frontend_t2(struct dvb_frontend *fe, switch (c->bandwidth_hz) { case 5000000: - if_khz = priv->cfg.if_dvbt2_5; i = 0; bw_param = 3; break; case 6000000: - if_khz = priv->cfg.if_dvbt2_6; i = 1; bw_param = 2; break; case 7000000: - if_khz = priv->cfg.if_dvbt2_7; i = 2; bw_param = 1; break; case 8000000: - if_khz = priv->cfg.if_dvbt2_8; i = 3; bw_param = 0; break; @@ -116,7 +112,17 @@ int cxd2820r_set_frontend_t2(struct dvb_frontend *fe, return -EINVAL; } - num = if_khz; + /* program IF frequency */ + if (fe->ops.tuner_ops.get_if_frequency) { + ret = fe->ops.tuner_ops.get_if_frequency(fe, &if_freq); + if (ret) + goto error; + } else + if_freq = 0; + + dbg("%s: if_freq=%d", __func__, if_freq); + + num = if_freq / 1000; /* Hz => kHz */ num *= 0x1000000; if_ctl = cxd2820r_div_u64_round_closest(num, 41000); buf[0] = ((if_ctl >> 16) & 0xff); |