[DVB patch 22/54] frontend: or51132: remove bogus optimization attempt

From: Johannes Stezenbach
Date: Sun Sep 04 2005 - 18:33:59 EST


From: Mac Michaels <wmichaels1@xxxxxxxxxxxxx>

This fix has also been applied to lgdt330x. There is
an optimization that keeps track of the frequency tuned by
the digital decoder. The digital driver does not set the
frequency if it has not changed since it was tuned. The
analog tuner driver knows nothing about the frequency saved
by the digital driver. When the frequency is set using the
video4linux code with tvtime, the hardware get changed but
the digital driver's state does not get updated. Switch
back to the same digital channel and the driver finds no
change in frequency so the tuner is not reset to the
digital frequency. The work around is to remove the check
and always set the tuner to the specified frequency.

Signed-off-by: Mac Michaels <wmichaels1@xxxxxxxxxxxxx>
Signed-off-by: Michael Krufky <mkrufky@xxxxxxx>
Signed-off-by: Johannes Stezenbach <js@xxxxxxxxxxx>

drivers/media/dvb/frontends/or51132.c | 25 +++++++++++--------------
1 file changed, 11 insertions(+), 14 deletions(-)

--- linux-2.6.13-git4.orig/drivers/media/dvb/frontends/or51132.c 2005-09-04 22:24:24.000000000 +0200
+++ linux-2.6.13-git4/drivers/media/dvb/frontends/or51132.c 2005-09-04 22:28:14.000000000 +0200
@@ -370,22 +370,19 @@ static int or51132_set_parameters(struct
or51132_setmode(fe);
}

- /* Change only if we are actually changing the channel */
- if (state->current_frequency != param->frequency) {
- dvb_pll_configure(state->config->pll_desc, buf,
- param->frequency, 0);
- dprintk("set_parameters tuner bytes: 0x%02x 0x%02x "
- "0x%02x 0x%02x\n",buf[0],buf[1],buf[2],buf[3]);
- if (i2c_writebytes(state, state->config->pll_address ,buf, 4))
- printk(KERN_WARNING "or51132: set_parameters error "
- "writing to tuner\n");
+ dvb_pll_configure(state->config->pll_desc, buf,
+ param->frequency, 0);
+ dprintk("set_parameters tuner bytes: 0x%02x 0x%02x "
+ "0x%02x 0x%02x\n",buf[0],buf[1],buf[2],buf[3]);
+ if (i2c_writebytes(state, state->config->pll_address ,buf, 4))
+ printk(KERN_WARNING "or51132: set_parameters error "
+ "writing to tuner\n");

- /* Set to current mode */
- or51132_setmode(fe);
+ /* Set to current mode */
+ or51132_setmode(fe);

- /* Update current frequency */
- state->current_frequency = param->frequency;
- }
+ /* Update current frequency */
+ state->current_frequency = param->frequency;
return 0;
}


--

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/