On 05/10/2016 12:00 PM, Linus Walleij wrote: > Leonard Crestez observed the following phenomenon: when using > hard interrupt triggers (the DRDY line coming out of an ST > sensor) sometimes a new value would arrive while reading the > previous value, due to latencies in the system. > > As the interrupts from the ST sensors are a pulse, intended > to be read by an edge-triggered interrupt line (such as a > GPIO) one edge (transition from low-to-high or high-to-low) > will be missed while processing the current values. > > If this happens, the state machine that triggers interrupts on > the DRDY line will lock waiting for the current value to be > read out and not fire any more interrupts. That means that > when we exit the interrupt handler, even though new values are > available from the sensor, no new interrupt will be triggered. > > ChangeLog v5->v6: > - Add a loop counter to the threaded value poll function: let's > just loop here for at maximum 10 loops before we exit and > let the thread re-trigger if more interrupts arrived. This only serves to hide the problem. Version 5 seems preferable. Or even just adding msleep(10) in that infinite loop. -- Regards, Leonard -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html