]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/arm/mach-imx/irq.c
Merge branch 'for-rmk' of git://pasiphae.extern.pengutronix.de/git/imx/linux-2.6.git
[linux-2.6-omap-h63xx.git] / arch / arm / mach-imx / irq.c
index 232e3b9f880db1cf78029078ea816e6bd95ba049..531b95deadc003ba5e08f0b85a38b21b7af62441 100644 (file)
 /*
  *
  * We simply use the ENABLE DISABLE registers inside of the IMX
- * to turn on/off specific interrupts.  FIXME- We should
- * also add support for the accelerated interrupt controller
- * by putting offets to irq jump code in the appropriate
- * places.
+ * to turn on/off specific interrupts.
  *
  */
 
@@ -102,6 +99,28 @@ imx_unmask_irq(unsigned int irq)
        __raw_writel(irq, IMX_AITC_INTENNUM);
 }
 
+#ifdef CONFIG_FIQ
+int imx_set_irq_fiq(unsigned int irq, unsigned int type)
+{
+       unsigned int irqt;
+
+       if (irq >= IMX_IRQS)
+               return -EINVAL;
+
+       if (irq < IMX_IRQS / 2) {
+               irqt = __raw_readl(IMX_AITC_INTTYPEL) & ~(1 << irq);
+               __raw_writel(irqt | (!!type << irq), IMX_AITC_INTTYPEL);
+       } else {
+               irq -= IMX_IRQS / 2;
+               irqt = __raw_readl(IMX_AITC_INTTYPEH) & ~(1 << irq);
+               __raw_writel(irqt | (!!type << irq), IMX_AITC_INTTYPEH);
+       }
+
+       return 0;
+}
+EXPORT_SYMBOL(imx_set_irq_fiq);
+#endif /* CONFIG_FIQ */
+
 static int
 imx_gpio_irq_type(unsigned int _irq, unsigned int type)
 {
@@ -284,4 +303,9 @@ imx_init_irq(void)
 
        /* Release masking of interrupts according to priority */
        __raw_writel(-1, IMX_AITC_NIMASK);
+
+#ifdef CONFIG_FIQ
+       /* Initialize FIQ */
+       init_FIQ();
+#endif
 }