mirror of https://gitee.com/openkylin/linux.git
V4L/DVB (13111): tda18271: more signedness fixes
Convert tda18271_rf_tracking_filter_cal.rf_[ab][12] from int to s32. Convert tda18271_priv.tm_rfcal from unsigned int to u8. Cast subtractions between u32 values as s32. Signed-off-by: Michael Krufky <mkrufky@kernellabs.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
3986bd116f
commit
3a6b49fef6
|
@ -256,8 +256,9 @@ static int tda18271c2_rf_tracking_filters_correction(struct dvb_frontend *fe,
|
||||||
struct tda18271_priv *priv = fe->tuner_priv;
|
struct tda18271_priv *priv = fe->tuner_priv;
|
||||||
struct tda18271_rf_tracking_filter_cal *map = priv->rf_cal_state;
|
struct tda18271_rf_tracking_filter_cal *map = priv->rf_cal_state;
|
||||||
unsigned char *regs = priv->tda18271_regs;
|
unsigned char *regs = priv->tda18271_regs;
|
||||||
int tm_current, rfcal_comp, approx, i, ret;
|
int i, ret;
|
||||||
u8 dc_over_dt, rf_tab;
|
u8 tm_current, dc_over_dt, rf_tab;
|
||||||
|
s32 rfcal_comp, approx;
|
||||||
|
|
||||||
/* power up */
|
/* power up */
|
||||||
ret = tda18271_set_standby_mode(fe, 0, 0, 0);
|
ret = tda18271_set_standby_mode(fe, 0, 0, 0);
|
||||||
|
@ -277,11 +278,11 @@ static int tda18271c2_rf_tracking_filters_correction(struct dvb_frontend *fe,
|
||||||
return i;
|
return i;
|
||||||
|
|
||||||
if ((0 == map[i].rf3) || (freq / 1000 < map[i].rf2)) {
|
if ((0 == map[i].rf3) || (freq / 1000 < map[i].rf2)) {
|
||||||
approx = map[i].rf_a1 *
|
approx = map[i].rf_a1 * (s32)(freq / 1000 - map[i].rf1) +
|
||||||
(freq / 1000 - map[i].rf1) + map[i].rf_b1 + rf_tab;
|
map[i].rf_b1 + rf_tab;
|
||||||
} else {
|
} else {
|
||||||
approx = map[i].rf_a2 *
|
approx = map[i].rf_a2 * (s32)(freq / 1000 - map[i].rf2) +
|
||||||
(freq / 1000 - map[i].rf2) + map[i].rf_b2 + rf_tab;
|
map[i].rf_b2 + rf_tab;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (approx < 0)
|
if (approx < 0)
|
||||||
|
@ -292,9 +293,9 @@ static int tda18271c2_rf_tracking_filters_correction(struct dvb_frontend *fe,
|
||||||
tda18271_lookup_map(fe, RF_CAL_DC_OVER_DT, &freq, &dc_over_dt);
|
tda18271_lookup_map(fe, RF_CAL_DC_OVER_DT, &freq, &dc_over_dt);
|
||||||
|
|
||||||
/* calculate temperature compensation */
|
/* calculate temperature compensation */
|
||||||
rfcal_comp = dc_over_dt * (tm_current - priv->tm_rfcal) / 1000;
|
rfcal_comp = dc_over_dt * (s32)(tm_current - priv->tm_rfcal) / 1000;
|
||||||
|
|
||||||
regs[R_EB14] = approx + rfcal_comp;
|
regs[R_EB14] = (unsigned char)(approx + rfcal_comp);
|
||||||
ret = tda18271_write_regs(fe, R_EB14, 1);
|
ret = tda18271_write_regs(fe, R_EB14, 1);
|
||||||
fail:
|
fail:
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -611,7 +612,7 @@ static int tda18271_rf_tracking_filters_init(struct dvb_frontend *fe, u32 freq)
|
||||||
switch (rf) {
|
switch (rf) {
|
||||||
case RF1:
|
case RF1:
|
||||||
map[i].rf_a1 = 0;
|
map[i].rf_a1 = 0;
|
||||||
map[i].rf_b1 = prog_cal[RF1] - prog_tab[RF1];
|
map[i].rf_b1 = (s32)(prog_cal[RF1] - prog_tab[RF1]);
|
||||||
map[i].rf1 = rf_freq[RF1] / 1000;
|
map[i].rf1 = rf_freq[RF1] / 1000;
|
||||||
break;
|
break;
|
||||||
case RF2:
|
case RF2:
|
||||||
|
@ -626,7 +627,7 @@ static int tda18271_rf_tracking_filters_init(struct dvb_frontend *fe, u32 freq)
|
||||||
(s32)(prog_cal[RF2] + prog_tab[RF2]);
|
(s32)(prog_cal[RF2] + prog_tab[RF2]);
|
||||||
divisor = (s32)(rf_freq[RF3] - rf_freq[RF2]) / 1000;
|
divisor = (s32)(rf_freq[RF3] - rf_freq[RF2]) / 1000;
|
||||||
map[i].rf_a2 = (dividend / divisor);
|
map[i].rf_a2 = (dividend / divisor);
|
||||||
map[i].rf_b2 = prog_cal[RF2] - prog_tab[RF2];
|
map[i].rf_b2 = (s32)(prog_cal[RF2] - prog_tab[RF2]);
|
||||||
map[i].rf3 = rf_freq[RF3] / 1000;
|
map[i].rf3 = rf_freq[RF3] / 1000;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -80,10 +80,10 @@ struct tda18271_rf_tracking_filter_cal {
|
||||||
u32 rf1;
|
u32 rf1;
|
||||||
u32 rf2;
|
u32 rf2;
|
||||||
u32 rf3;
|
u32 rf3;
|
||||||
int rf_a1;
|
s32 rf_a1;
|
||||||
int rf_b1;
|
s32 rf_b1;
|
||||||
int rf_a2;
|
s32 rf_a2;
|
||||||
int rf_b2;
|
s32 rf_b2;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum tda18271_pll {
|
enum tda18271_pll {
|
||||||
|
@ -111,10 +111,11 @@ struct tda18271_priv {
|
||||||
enum tda18271_output_options output_opt;
|
enum tda18271_output_options output_opt;
|
||||||
|
|
||||||
unsigned int config; /* interface to saa713x / tda829x */
|
unsigned int config; /* interface to saa713x / tda829x */
|
||||||
unsigned int tm_rfcal;
|
|
||||||
unsigned int cal_initialized:1;
|
unsigned int cal_initialized:1;
|
||||||
unsigned int small_i2c:1;
|
unsigned int small_i2c:1;
|
||||||
|
|
||||||
|
u8 tm_rfcal;
|
||||||
|
|
||||||
struct tda18271_map_layout *maps;
|
struct tda18271_map_layout *maps;
|
||||||
struct tda18271_std_map std;
|
struct tda18271_std_map std;
|
||||||
struct tda18271_rf_tracking_filter_cal rf_cal_state[8];
|
struct tda18271_rf_tracking_filter_cal rf_cal_state[8];
|
||||||
|
|
Loading…
Reference in New Issue