On Sat, Mar 03, 2012 at 12:42:19AM +0200, Marko Ristola wrote: > I'm not happy with I2CDONE busy looping either. > I've tried twice lately to swith into I2C IRQ, but those patches have caused I2CDONE timeouts. Note that there are already timeouts with the current polling code, but they are ignored (my patch makes them at least be printed with verbose=5). I can't immediately recall if it's on RACK, DONE or both. > Do my following I2C logic thoughts make any sense? Well, note first of all that I know next to nothing about I2C, and I've never seen any hardware documentation on the Mantis card (is there any?). But generally it makes sense to me, except that I've never heard of the demand of radio silence for 10 ms before. > There might be race conditions, that the driver possibly manages: > 1. If two threads talk into DVB frontend, one could turn off the I2C gate, while the other is talking to DVB frontend. > This would case lack of I2CRACK: only way to recover would be to turn > the I2C gate on, and then redo the I2C transfer. Note that I've tried putting mutexes around the I2C functions, and it didn't help on the I2C timeouts; however, that was largely on a single-character level, so it might not be enough. (You can see these mutexes being commented out in my patch.) /* Steinar */ -- Homepage: http://www.sesse.net/ -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html