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