From f340666ceeb06c1d5589f2e8d45c135ff08ccb48 Mon Sep 17 00:00:00 2001 From: Mauro Carvalho Chehab Date: Thu, 22 Nov 2007 12:48:04 -0300 Subject: [PATCH] --- yaml --- r: 76470 b: refs/heads/master c: 2800ae9cd669db0fc9993cbefae02f181343c295 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/media/video/tuner-xc2028.c | 15 ++++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index c75ca248fafa..a8193d944192 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 71a2ee37e8851f430d72daea0722908512d57f79 +refs/heads/master: 2800ae9cd669db0fc9993cbefae02f181343c295 diff --git a/trunk/drivers/media/video/tuner-xc2028.c b/trunk/drivers/media/video/tuner-xc2028.c index c231e7a74ffb..a43a3398b7c0 100644 --- a/trunk/drivers/media/video/tuner-xc2028.c +++ b/trunk/drivers/media/video/tuner-xc2028.c @@ -850,16 +850,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)