diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/media/video/tuner-xc2028.c | 15 |
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) |