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