On Wed, 18 Nov 2009, Jean Delvare wrote: > On Wed, 18 Nov 2009 17:28:53 +0100, Leon Woestenberg wrote: > > On Wed, Nov 18, 2009 at 2:05 AM, Alan Cox <alan@xxxxxxxxxxxxxxxxxxx> wrote: > > > Our timers are very efficient and some day we will need to make jiffies a > > > function and stop the timer ticking for best performance. At that point > > > timers are probably the most efficient way to do much of this. > > > > The problem with I2C bitbanged is the stringent timing, we need a way > > to have fine-grained sleeping > > mixed with real-time tasks in order to make this work. > > FWIW, the problem that was initially reported has nothing to do with > this. i2c-algo-bit used mdelay() during transactions, not yield(). > yield() is used only in once place, _between_ transactions attempts. > There are no strict timing constraints there. That still does not explain why yield() is necessary _between_ the transaction attempts. That code is fully preemptible, otherwise you could not call yield(). And as I said before nobody even noticed that the yield() default implementation was changed to a NOOP by default in the scheduler. Thanks, tglx -- To unsubscribe from this list: send the line "unsubscribe linux-i2c" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html