Felipe, On Mon, Mar 24, 2014 at 7:31 AM, Felipe Balbi <balbi@xxxxxx> wrote: > Why do you need to run your IRQ handler when an URQ gets enqueued ? That > doesn't make much sense :-s Please see the comments at the start of the file: spi_sync() is blocking and must not be called while holding spinlocks or with interrupts disabled. The purpose of max3421_spi_thread() is to handle all SPI transactions (implicitly serializing them). An interrupt is just one of the reasons to wake up the SPI thread. Adding URBs, removing them, or performing a bus reset are other reasons. You can think of max3421_spi_thread() as implementing the state machine that would normally be implemented in silicon with a "smart" controller such as OHCI or similar. --david -- eGauge Systems LLC, http://egauge.net/, 1.877-EGAUGE1, fax 720.545.9768 -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html