>> +/** >> + * cts_interrupt() - Called to handle CTS interrupt. >> + * @irq: Interrupt that occurred. >> + * @dev_id: Device ID where interrupt occurred. >> + * >> + * The cts_interrupt() function is called if interrupt on CTS occurred. >> + * It disables the interrupt and starts a new work thread to handle >> + * the interrupt. >> + */ >> +static irqreturn_t cts_interrupt(int irq, void *dev_id) { >> + struct uart_info *uart_info = dev_get_drvdata(dev_id); #ifdef >> +CONFIG_PM >> + disable_irq_wake(irq); >> +#endif >> + disable_irq_nosync(irq); >> + >> + /* Create work and leave IRQ context. */ >> + (void)create_work_item(uart_info, handle_cts_irq); >> + >> + return IRQ_HANDLED; >> +} >Have you thought about using a threaded interrupt handler? That would make all this work cruft go away. Good point. To be honest we did think about it but in the time we where we were busy with other issues. Anyway, shall we resend patches now or we can push patch for it once driver gets in the tree ? /Lukasz >Thanks, > tglx _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/devel