git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
vserver 2.0 rc7
[linux-2.6.git]
/
arch
/
ppc
/
syslib
/
xilinx_pic.c
diff --git
a/arch/ppc/syslib/xilinx_pic.c
b/arch/ppc/syslib/xilinx_pic.c
index
483d06d
..
e0bd66f
100644
(file)
--- a/
arch/ppc/syslib/xilinx_pic.c
+++ b/
arch/ppc/syslib/xilinx_pic.c
@@
-114,6
+114,14
@@
ppc4xx_pic_init(void)
{
int i;
{
int i;
+ /*
+ * NOTE: The assumption here is that NR_IRQS is 32 or less
+ * (NR_IRQS is 32 for PowerPC 405 cores by default).
+ */
+#if (NR_IRQS > 32)
+#error NR_IRQS > 32 not supported
+#endif
+
#if XPAR_XINTC_USE_DCR == 0
intc = ioremap(XPAR_INTC_0_BASEADDR, 32);
#if XPAR_XINTC_USE_DCR == 0
intc = ioremap(XPAR_INTC_0_BASEADDR, 32);
@@
-138,6
+146,12
@@
ppc4xx_pic_init(void)
ppc_md.get_irq = xilinx_pic_get_irq;
ppc_md.get_irq = xilinx_pic_get_irq;
- for (i = 0; i < NR_IRQS; ++i)
+ for (i = 0; i < NR_IRQS; ++i)
{
irq_desc[i].handler = &xilinx_intc;
irq_desc[i].handler = &xilinx_intc;
+
+ if (XPAR_INTC_0_KIND_OF_INTR & (0x00000001 << i))
+ irq_desc[i].status &= ~IRQ_LEVEL;
+ else
+ irq_desc[i].status |= IRQ_LEVEL;
+ }
}
}