[linux-dvb] Patches to fix support for VisionPlus DTV (VP1020) / tuning problem

Manu Abraham manu at kromtek.com
Sat Apr 23 13:30:38 CEST 2005


Steffen Motzer wrote:
> These patches fix the following bugs:
> 
> bttv-i2c.c:
> After upgrading from 2.6.9 to 2.6.11.7, bttv failed to write to the ASIC
> via the i2c bus. After a couple of times bttv_i2c_wait_done was called
> the RACK flag was indicating a failed i2c operation.
>

You had a problem here ? The DST-MOT and DST-020 are just identical to
the 2001 03A except in terms of features.

> dvb-bt8xx.c:
> dst_attach returns a pointer. If dst_attach failed to find a frontend
> (the ASIC) dvb-bt8xx tried to register a frontend anyway.
>

Yep, that ought to be fixed ..

> dst.c:
> dst.c compared the ID returned by the frontend with the NULL pointer of
> the last (empty) entry of dst_tlist if it couldn't find the ID in the
> list making the the driver crash.
> I also added the ID of my card to dst_tlist.
> 

You have one of those Blue boards ? Since that board was considered
obsolete by the manufacturer, i did not find that in my list. I think
that's why i missed it out ..

I will add it to the list of boards..


> After applying the patches the driver successfully loads but tuning
> rarely works right. Xine starts buffering but never finishes. Sometimes
> I can see a badly corrupted frame so Xine seems to receive some data
> from the transponder. If I repeatedly start mplayer to tune to the same
> channel until the card finally tunes right then on the next start xine
> always successfully receives this channel.
> 
> 
> 
> 
> ------------------------------------------------------------------------
> 
> --- dvb-bt8xx.c.orig	2005-04-04 20:22:29.000000000 +0200
> +++ dvb-bt8xx.c		2005-04-19 09:33:50.000000000 +0200
> @@ -514,7 +514,7 @@
>  		state->bt = card->bt;
>  
>  		/*	DST is not a frontend, attaching the ASIC	*/
> -		if ((dst_attach(state, &card->dvb_adapter)) < 0) {
> +		if ((dst_attach(state, &card->dvb_adapter)) == NULL) {
>  			printk("%s: Could not find a Twinhan DST.\n", __FUNCTION__);
>  			break;
>  		}
> 
> 
> 
> ------------------------------------------------------------------------
> 
> *** bttv-i2c.c.orig	2005-04-23 00:42:40.000000000 +0200
> --- bttv-i2c.c		2005-04-23 02:09:43.000000000 +0200
> *************** bttv_i2c_wait_done(struct bttv *btv)
> *** 135,143 ****
>   	DECLARE_WAITQUEUE(wait, current);
>   	int rc = 0;
>   
>   	add_wait_queue(&btv->i2c_queue, &wait);
> ! 	if (0 == btv->i2c_done)
> ! 		msleep_interruptible(20);
>   	remove_wait_queue(&btv->i2c_queue, &wait);
>   

This one over here would cause problems when you are consecutively
writing to the GPIO
And that probably explains why you have scanning/tuning problems ..


Thanks,
Manu





More information about the linux-dvb mailing list