aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@infradead.org>2007-11-22 10:48:04 -0500
committerMauro Carvalho Chehab <mchehab@infradead.org>2008-01-25 16:02:40 -0500
commit2800ae9cd669db0fc9993cbefae02f181343c295 (patch)
treeef53d214e6da4b6986c2b37e74d7e94c1247fb08 /drivers
parent71a2ee37e8851f430d72daea0722908512d57f79 (diff)
V4L/DVB (6661): Remove firmware reload hack for analog
On some cases, xc2028/xc3028 wents into "turn off" mode. It seems that this happens when very weak signals are tuned. To solve this, specific standard reaload were done previously. Christopher patches changed this behavior to a complete firmware reload. This patch removes the hack. A much cleaner solution for this trouble is just to sent a xc2028/3028 software reset. Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/media/video/tuner-xc2028.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/drivers/media/video/tuner-xc2028.c b/drivers/media/video/tuner-xc2028.c
index c231e7a74ffb..a43a3398b7c0 100644
--- a/drivers/media/video/tuner-xc2028.c
+++ b/drivers/media/video/tuner-xc2028.c
@@ -850,16 +850,21 @@ static int generic_set_tv_freq(struct dvb_frontend *fe, u32 freq /* in Hz */ ,
850 850
851 mutex_lock(&priv->lock); 851 mutex_lock(&priv->lock);
852 852
853 /* HACK: It seems that specific firmware need to be reloaded
854 when watching analog TV and freq is changed */
855 if (new_mode != T_DIGITAL_TV)
856 priv->cur_fw.type = 0;
857
858 tuner_dbg("should set frequency %d kHz\n", freq / 1000); 853 tuner_dbg("should set frequency %d kHz\n", freq / 1000);
859 854
860 if (check_firmware(fe, new_mode, std, bandwidth) < 0) 855 if (check_firmware(fe, new_mode, std, bandwidth) < 0)
861 goto ret; 856 goto ret;
862 857
858 /* On some cases xc2028 can disable video output, if
859 * very weak signals are received. By sending a soft
860 * reset, this is re-enabled. So, it is better to always
861 * send a soft reset before changing channels, to be sure
862 * that xc2028 will be in a safe state.
863 * Maybe this might also be needed for DTV.
864 */
865 if (new_mode != T_DIGITAL_TV)
866 rc = send_seq(priv, {0x00, 0x00});
867
863 if (new_mode == T_DIGITAL_TV) { 868 if (new_mode == T_DIGITAL_TV) {
864 offset = 2750000; 869 offset = 2750000;
865 if (priv->cur_fw.type & DTV7) 870 if (priv->cur_fw.type & DTV7)