]> git.baikalelectronics.ru Git - kernel.git/commit
[media] xc3028: fix center frequency calculation for DTV78 firmware
authorGianluca Gennari <gennarone@gmail.com>
Wed, 4 Jan 2012 18:17:19 +0000 (15:17 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Fri, 6 Jan 2012 19:13:48 +0000 (17:13 -0200)
commitccfa357920234406d938b76103e6bc2895e3a839
treed545fc54a8ccc9a398b2a084986d7f0c9c872b38
parent6b7b2aa367a03e65ea9291a7e2e4701cd59406ba
[media] xc3028: fix center frequency calculation for DTV78 firmware

This patch replaces the previous one proposed in the thread "xc3028:
force reload of DTV7 firmware in VHF band with Zarlink demodulator",
at the linux-media@vger.kernel.org ML.

The problem is that the firmware DTV78 works fine in UHF band (8 MHz
bandwidth) but is not working at all in VHF band (7 MHz bandwidth).
Reading the comments inside the code, I figured out that the real
problem could be connected to the formula used to calculate the center
frequency offset in VHF band.

In fact, removing this adjustment fixes the problem:

if ((priv->cur_fw.type & DTV78) && freq < 470000000)
offset -= 500000;

This is coherent to what was implemented for the DTV7 firmware by an
Australian user:

if (priv->cur_fw.type & DTV7)
offset += 500000;

In the end, now the center frequency is the same for all firmwares
(DTV7, DTV8, DTV78) and doesn't depend on channel bandwidth.

The final code looks clean and simple, and there is no need for any
"magic" adjustment:

if (priv->cur_fw.type & DTV6)
offset = 1750000;
else /* DTV7 or DTV8 or DTV78 */
offset = 2750000;

Signed-off-by: Gianluca Gennari <gennarone@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/common/tuners/tuner-xc2028.c