Commit 0a863975 authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab

V4L/DVB (11918): tuner-xc2028: Fix offset frequencies for DVB @ 6MHz

Both ATSC and DVB @ 6MHz bandwidth require the same offset.

While we're fixing it, let's cleanup the bandwidth setup to better
reflect the fact that it is a function of the bandwidth.

Thanks to Terry Wu <terrywu2009@gmail.com> for pointing this issue and
to Andy Walls <awalls@radix.net> for an initial patch for this fix.

Cc: Terry Wu <terrywu2009@gmail.com>
Acked-by: default avatarAndy Walls <awalls@radix.net>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent a1014d70
...@@ -917,22 +917,29 @@ static int generic_set_freq(struct dvb_frontend *fe, u32 freq /* in HZ */, ...@@ -917,22 +917,29 @@ static int generic_set_freq(struct dvb_frontend *fe, u32 freq /* in HZ */,
* that xc2028 will be in a safe state. * that xc2028 will be in a safe state.
* Maybe this might also be needed for DTV. * Maybe this might also be needed for DTV.
*/ */
if (new_mode == T_ANALOG_TV) { if (new_mode == T_ANALOG_TV)
rc = send_seq(priv, {0x00, 0x00}); rc = send_seq(priv, {0x00, 0x00});
} else if (priv->cur_fw.type & ATSC) {
/*
* Digital modes require an offset to adjust to the
* proper frequency.
* Analog modes require offset = 0
*/
if (new_mode != T_ANALOG_TV) {
/* Sets the offset according with firmware */
if (priv->cur_fw.type & DTV6)
offset = 1750000; offset = 1750000;
} else { else if (priv->cur_fw.type & DTV7)
offset = 2250000;
else /* DTV8 or DTV78 */
offset = 2750000; offset = 2750000;
/* /*
* We must adjust the offset by 500kHz in two cases in order * We must adjust the offset by 500kHz when
* to correctly center the IF output: * tuning a 7MHz VHF channel with DTV78 firmware
* 1) When the ZARLINK456 or DIBCOM52 tables were explicitly * (used in Australia, Italy and Germany)
* selected and a 7MHz channel is tuned;
* 2) When tuning a VHF channel with DTV78 firmware.
*/ */
if (((priv->cur_fw.type & DTV7) && if ((priv->cur_fw.type & DTV78) && freq < 470000000)
(priv->cur_fw.scode_table & (ZARLINK456 | DIBCOM52))) ||
((priv->cur_fw.type & DTV78) && freq < 470000000))
offset -= 500000; offset -= 500000;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment