Mailing List archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[linux-dvb] dvb-kernel and alps_bsru6 not tuning
Using the dvb-kernel driver with the stv0299b and tsa5059t frontend chipset is
not allowing me to tune. The sticker on my little shiny metal box says it is
an alps_bsru6. Tuning fails during the stv0299.c pll_write() function call.
This function sends two i2c messages instead of one if the type is
LG_TDQF_S001F. If I force the ALPS_BSRU6 type to also send two messages
tuning starts working. It looks like when one message is used instead of two
there is not enough time for the stv0299b i2c bus repeater to turn on before
it gets the i2c message to the tsa5059. Should the pll_write include the
ALPS_BSRU6 type in the test to send two messages like shown below? I can
create a patch if needed, but I don't want to act prematurely if there is
some reason not to do this.
This code snipet is from stv0299.c line 240 (1/30/03):
*******************************************************************
static
int pll_write (struct dvb_i2c_bus *i2c, u8 data [4], int ftype)
{
int ret;
int count;
u8 rpt1 [] = { 0x05, 0xb5 }; /* enable i2c repeater on stv0299 */
/* TSA5059 i2c-bus address */
u8 addr = (ftype == PHILIPS_SU1278SH) ? 0x60 : 0x61;
struct i2c_msg msg [] = {{ addr: 0x68, flags: 0, buf: rpt1, len: 2 },
{ addr: addr, flags: 0, buf: data, len: 4 }};
dprintk ("%s\n", __FUNCTION__);
if (ftype == LG_TDQF_S001F || ALPS_BSRU6) {
ret = i2c->xfer (i2c, &msg[0], 1);
ret += i2c->xfer (i2c, &msg[1], 1);
}
else {
ret = i2c->xfer (i2c, msg, 2);
}
if (ret != 2)
dprintk("%s: i/o error (ret == %i)\n", __FUNCTION__, ret);
return (ret != 2) ? -1 : 0;
}
--
Info:
To unsubscribe send a mail to listar@linuxtv.org with "unsubscribe linux-dvb" as subject.
Home |
Main Index |
Thread Index