summaryrefslogtreecommitdiff
path: root/linux
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@infradead.org>2007-11-22 13:48:04 -0200
committerMauro Carvalho Chehab <mchehab@infradead.org>2007-11-22 13:48:04 -0200
commitb10a1ee0af8b0eb6698ea4edee477e6ede5164f7 (patch)
tree217ae379bbe072e50cecd70488e6f6af257e635a /linux
parent114731f1a4315c31fafed37b934e51725dac29d6 (diff)
downloadmediapointer-dvb-s2-b10a1ee0af8b0eb6698ea4edee477e6ede5164f7.tar.gz
mediapointer-dvb-s2-b10a1ee0af8b0eb6698ea4edee477e6ede5164f7.tar.bz2
Remove firmware reload hack for analog
From: Mauro Carvalho Chehab <mchehab@infradead.org> 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> --- linux/drivers/media/video/tuner-xc2028.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-)
Diffstat (limited to 'linux')
-rw-r--r--linux/drivers/media/video/tuner-xc2028.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/linux/drivers/media/video/tuner-xc2028.c b/linux/drivers/media/video/tuner-xc2028.c
index 03fcb8b0a..d8e89ea54 100644
--- a/linux/drivers/media/video/tuner-xc2028.c
+++ b/linux/drivers/media/video/tuner-xc2028.c
@@ -865,16 +865,21 @@ static int generic_set_tv_freq(struct dvb_frontend *fe, u32 freq /* in Hz */ ,
mutex_lock(&priv->lock);
- /* HACK: It seems that specific firmware need to be reloaded
- when watching analog TV and freq is changed */
- if (new_mode != T_DIGITAL_TV)
- priv->cur_fw.type = 0;
-
tuner_dbg("should set frequency %d kHz\n", freq / 1000);
if (check_firmware(fe, new_mode, std, bandwidth) < 0)
goto ret;
+ /* On some cases xc2028 can disable video output, if
+ * very weak signals are received. By sending a soft
+ * reset, this is re-enabled. So, it is better to always
+ * send a soft reset before changing channels, to be sure
+ * that xc2028 will be in a safe state.
+ * Maybe this might also be needed for DTV.
+ */
+ if (new_mode != T_DIGITAL_TV)
+ rc = send_seq(priv, {0x00, 0x00});
+
if (new_mode == T_DIGITAL_TV) {
offset = 2750000;
if (priv->cur_fw.type & DTV7)