Commit 2800ae9c authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab

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: default avatarMauro Carvalho Chehab <mchehab@infradead.org>
parent 71a2ee37
...@@ -850,16 +850,21 @@ static int generic_set_tv_freq(struct dvb_frontend *fe, u32 freq /* in Hz */ , ...@@ -850,16 +850,21 @@ static int generic_set_tv_freq(struct dvb_frontend *fe, u32 freq /* in Hz */ ,
mutex_lock(&priv->lock); 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); tuner_dbg("should set frequency %d kHz\n", freq / 1000);
if (check_firmware(fe, new_mode, std, bandwidth) < 0) if (check_firmware(fe, new_mode, std, bandwidth) < 0)
goto ret; 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) { if (new_mode == T_DIGITAL_TV) {
offset = 2750000; offset = 2750000;
if (priv->cur_fw.type & DTV7) if (priv->cur_fw.type & DTV7)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment