Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 112493
b: refs/heads/master
c: b72f92f
h: refs/heads/master
i:
  112491: 25003da
v: v3
  • Loading branch information
Paulius Zaleckas authored and Sascha Hauer committed Sep 9, 2008
1 parent 09d6574 commit 8a6220e
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 5 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 8b69ac577e644e5084a9d7a93e4ccd5184c77626
refs/heads/master: b72f92ff551d9151c146c8d0f1c5c743611df982
5 changes: 5 additions & 0 deletions trunk/arch/arm/mach-imx/include/mach/irqs.h
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,11 @@
/* decode irq number to use with IMR(x), ISR(x) and friends */
#define IRQ_TO_REG(irq) ((irq - IMX_IRQS) >> 5)

/* all normal IRQs can be FIQs */
#define FIQ_START 0
/* switch betwean IRQ and FIQ */
extern int imx_set_irq_fiq(unsigned int irq, unsigned int type);

#define NR_IRQS (IRQ_GPIOD(32) + 1)
#define IRQ_GPIO(x)
#endif
32 changes: 28 additions & 4 deletions trunk/arch/arm/mach-imx/irq.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,7 @@
/*
*
* 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.
*
*/

Expand Down Expand Up @@ -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)
{
Expand Down Expand Up @@ -286,4 +305,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
}

0 comments on commit 8a6220e

Please sign in to comment.