quoted
+/**
+ * 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 =3D dev_get_drvdata(dev_id); #ifdef=20
+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 wi=
th other issues.
Anyway, shall we resend patches now or we can push patch for it once driver=
gets in the tree ?
/Lukasz
Thanks,
tglx