@ -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 ) ;