Merge git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client
[pandora-kernel.git] / arch / arm / include / asm / mach / irq.h
index 22ac140..febe495 100644 (file)
@@ -34,4 +34,35 @@ do {                                                 \
        raw_spin_unlock(&desc->lock);                   \
 } while(0)
 
+#ifndef __ASSEMBLY__
+/*
+ * Entry/exit functions for chained handlers where the primary IRQ chip
+ * may implement either fasteoi or level-trigger flow control.
+ */
+static inline void chained_irq_enter(struct irq_chip *chip,
+                                    struct irq_desc *desc)
+{
+       /* FastEOI controllers require no action on entry. */
+       if (chip->irq_eoi)
+               return;
+
+       if (chip->irq_mask_ack) {
+               chip->irq_mask_ack(&desc->irq_data);
+       } else {
+               chip->irq_mask(&desc->irq_data);
+               if (chip->irq_ack)
+                       chip->irq_ack(&desc->irq_data);
+       }
+}
+
+static inline void chained_irq_exit(struct irq_chip *chip,
+                                   struct irq_desc *desc)
+{
+       if (chip->irq_eoi)
+               chip->irq_eoi(&desc->irq_data);
+       else
+               chip->irq_unmask(&desc->irq_data);
+}
+#endif
+
 #endif