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)