Mailing List archive

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

[linux-dvb] Re: Busy waiting in i2c_busy_rise_and_fall



Hi Michael,

On Tuesday 15 July 2003 09:21, Michael Hunold wrote:
> I'm sorry that I'm answering so late...

No problem. I guess most of us have to work sometimes. ;-)

> > Are ms-delays really required?
> > After I applied the following patch the cpu load dropped to 3%:
>
> Hehe, once again: the i2c code is legacy cruft. It was written for my
> analog tv stuff, worked, and was never improved, because the data
> rates are very, very low. It was incorporated by the Metzlers, and
> tweaked so that it works.

Fine, so there is probably no reason to keep I2C bus speed at 10kHz.
IMHO increasing bus speed is a real improvement...

> For some DVB stuff, however, and frequent polling through the i2c
> bus, the functions are crap. ms delays are not required, but you have
> to keep the balance:
>
> As Robert has already pointed out, for big amounts of data calling
> schedule() while transferring lengthens the whole transaction
> immensly. On the other hand, if you busy wait, the computer is locked
> up for a long time (just like within the firmware upload).

Well, status polls and tuning transactions need just a few bytes. 
Firmware uploads don't happen very often. I hope that I have found a 
good solution, but it depends on system load, processor speed etc.

> Please keep in my the separation between DVB and "dvb-kernel":
>
> The DVB driver is completely separated, you can do with it whatever
> you want. If it works for all DVB people, you can rise the transfer
> speed, busy wait, whatever. It will be obsolete, once 2.6 comes out,
> though.

IMHO most people will use this driver until they finally switch to 2.6.

> The "dvb-kernel" driver is a separate issue. There, the transfer
> speed can be different for every saa7146 "extension" (ie. a DVB card,
> or an analog tv card) and some improvements have already been done
> there, ie. the busy_rise_and_fall() function has been removed and
> some of Robert's suggestions have been incorporated.

As Johannes mentioned, tuning is really slower with dvb-kernel.
After applying the patch to DVB the difference is even more visible.
I didn't look deeper into this, I just increased I2C speed for the DVB-S 
in dvb-kernel, but it's still slower. Needs more investigation.

> It's possible to use irq based i2c, too, but this does not work for
> av7110 cards, because it screws up the irq handling between the
> saa7146 <=> av7110, you'll get DEBI oops and GPIO oops messages. 8-(

Maybe this could be fixed. Anyway, I don't know whether interrupt mode 
is a real improvement if you are transferring just a few bytes...

Thanks for your explanations,

Oliver


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



Home | Main Index | Thread Index