Mailing List archive

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

[linux-dvb] Re: Slow i2c problem -- temporary patch



Andrew de Quincey wrote:
Here's a temporary patch (for dvb-kernel CVS head) for those trying out the tda10045h driver. As per Robert's suggestion, I have upped the i2c bitrate to 275kHz, and I've reduced the delay while waiting for the i2c status.

Issues:
1) Is there a reason for the i2c bitrate to be set to 10kHz right now? Perhaps some cards have very slow i2c components? It is fine on the tda10045h-based cards
no, most DVB i2c components work up to 400kHz, some work up to 1MHz.


2) I've changed the wait-for-status-delay to use mdelay()... which is not ideal as we are now effectively busy waiting, but the current 1 jiffy delay is WAY too much at the new speed. At 275kHz, it doesn't delay for long enough for this to be significant though.
I modified your patch so that we use busy waiting only the first 10 trials, thenafter we call the scheduler so that the system won't lock up for some 1/10s seconds in the worst case.

Please play a little with the actual number of trials we should to busy-waiting, I can't test this since I neither have a desktop PC with PCI slots nor a DVB card here.

3) If you reduce the i2c bitrate again (say back to 10kHz), your machine will appear to hang. This is because it is having to delay for much longer for the transmission to complete, and therefore the busy wait implied by mdelay() becomes significant

Later, I'll submit a better patch with rate-adaptive delays, but for now, I'd definitely recommend using this if you're testing the tda driver.
Please create your patches in the future using 'cvs -q diff -pu', context patches are much easier to review.

As said above, I was not able to test the changes I commited, please test and report if there are problems.

many thanks,

Holger



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



Home | Main Index | Thread Index