V4L/DVB (6965): tda18271: fix analog tuning regression caused by earlier changeset
An earlier patch, "tda18271: fail table lookups if frequency is out of range" broke analog support on certain hardware. This patch fixes that problem, by allowing the RF_CAL byte to be set to the maximum value, in cases of the frequency being out of range. Signed-off-by: Michael Krufky <mkrufky@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
This commit is contained in:
parent
0e1fab90a8
commit
d2c932a1f7
|
@ -601,13 +601,11 @@ int tda18271_calc_rf_cal(struct dvb_frontend *fe, u32 *freq)
|
|||
unsigned char *regs = priv->tda18271_regs;
|
||||
u8 val;
|
||||
|
||||
int ret = tda18271_lookup_map(fe, RF_CAL, freq, &val);
|
||||
if (ret < 0)
|
||||
goto fail;
|
||||
tda18271_lookup_map(fe, RF_CAL, freq, &val);
|
||||
|
||||
regs[R_EB14] = val;
|
||||
fail:
|
||||
return ret;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -1098,7 +1098,7 @@ int tda18271_lookup_pll_map(struct dvb_frontend *fe,
|
|||
}
|
||||
|
||||
while ((map[i].lomax * 1000) < *freq) {
|
||||
if (map[i].lomax == 0) {
|
||||
if (map[i + 1].lomax == 0) {
|
||||
tda_map("%s: frequency (%d) out of range\n",
|
||||
map_name, *freq);
|
||||
ret = -ERANGE;
|
||||
|
@ -1169,7 +1169,7 @@ int tda18271_lookup_map(struct dvb_frontend *fe,
|
|||
}
|
||||
|
||||
while ((map[i].rfmax * 1000) < *freq) {
|
||||
if (map[i].rfmax == 0) {
|
||||
if (map[i + 1].rfmax == 0) {
|
||||
tda_map("%s: frequency (%d) out of range\n",
|
||||
map_name, *freq);
|
||||
ret = -ERANGE;
|
||||
|
|
Loading…
Reference in a new issue