Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[linux-dvb] Re: Transponder switching taking considerably longer



Klaus Schmidinger wrote:
> 
> I did that, and it turned out that ves1893_set_symbolrate() is where it happens.
> With this diff...
> 
> --- alps_bsrv2.c.001    Sat May 10 11:32:33 2003
> +++ alps_bsrv2.c        Thu Jul 31 17:58:42 2003
...
> @@ -268,18 +268,22 @@
>         ves1893_writereg (i2c, 0x06, 0xff & BDR);
>         ves1893_writereg (i2c, 0x07, 0xff & (BDR >> 8));
>         ves1893_writereg (i2c, 0x08, 0x0f & (BDR >> 16));
> +        udelay(800);
>  
>         ves1893_writereg (i2c, 0x09, BDRI);
>         ves1893_writereg (i2c, 0x20, ADCONF);
>         ves1893_writereg (i2c, 0x21, FCONF);
> +        udelay(800);
>  
>         if (srate < 6000000) 
>                 ves1893_writereg (i2c, 0x05, init_1893_tab[0x05] | 0x80);
>         else
>                 ves1893_writereg (i2c, 0x05, init_1893_tab[0x05] & 0x7f);
> +        udelay(800);
>  
>         ves1893_writereg (i2c, 0x00, 0x00);
>         ves1893_writereg (i2c, 0x00, 0x01);
> +        udelay(800);
>  
>         ves1893_clr_bit (i2c);
>  
> ...I get pretty good switching times, just as if I had the udelay() right inside
> ves1893_writereg() itself. Note that this diff is against the 2003-07-25 version
> and does not include the change Johannes made yesterday (which is obsolete if
> you apply _this_ change). I tried to leave out some of these udelay()s and also
> used various time values, but this is pretty much what gives the best results.

I did some more testing and was able to reproduce the tuning problems
with my card. After some testing I found that the root of the problem
was that the frontend thread was woken up immediately after
FE_SET_FRONTEND, so the frontend status was tested too soon. Maybe the
alps_bsrv2.c doesn't like that. I also added a FE_RESET after each
iteration of the frontend threads main loop if FE_HAS_LOCK is not
present.
Now I fixed dvb_frontend.c and removed all udelay()s from alps_bsrv2.c.

I committed something in CVS which works very well with my DVB-S and
Siemens DVB-C card. Please test!

(I hope this change doesn't break tuning for other frontends or DVB-T).


Regards,
Johannes


-- 
Info:
To unsubscribe send a mail to ecartis@linuxtv.org with "unsubscribe linux-dvb" as subject.



Home | Main Index | Thread Index