Commit 021baacb authored by Matt Porter's avatar Matt Porter Committed by Linus Torvalds

[PATCH] ppc32: move irq_desc[].status, IRQ_LEVEL bit setup to xilinx_pic.c

Move the code that informs the kernel if the particular interrupt is edge
triggered or level sensitive from the board specific file to a
"CONFIG_VIRTEX_II_PRO-specific" file.  Using old IRQ numbering in that code
is also fixed.
Signed-off-by: default avatarAndrei Konovalov <akonovalov@ru.mvista.com>
Signed-off-by: default avatarMatt Porter <mporter@kernel.crashing.org>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 1bb62aab
...@@ -122,25 +122,7 @@ ml300_setup_arch(void) ...@@ -122,25 +122,7 @@ ml300_setup_arch(void)
void __init void __init
ml300_init_irq(void) ml300_init_irq(void)
{ {
unsigned int i;
ppc4xx_init_IRQ(); ppc4xx_init_IRQ();
/*
* For PowerPC 405 cores the default value for NR_IRQS is 32.
* See include/asm-ppc/irq.h for details.
* This is just fine for ML300.
*/
#if (NR_IRQS != 32)
#error NR_IRQS must be 32 for ML300
#endif
for (i = 0; i < NR_IRQS; i++) {
if (XPAR_INTC_0_KIND_OF_INTR & (0x80000000 >> i))
irq_desc[i].status &= ~IRQ_LEVEL;
else
irq_desc[i].status |= IRQ_LEVEL;
}
} }
void __init void __init
......
...@@ -114,6 +114,14 @@ ppc4xx_pic_init(void) ...@@ -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 #if XPAR_XINTC_USE_DCR == 0
intc = ioremap(XPAR_INTC_0_BASEADDR, 32); intc = ioremap(XPAR_INTC_0_BASEADDR, 32);
...@@ -138,6 +146,12 @@ ppc4xx_pic_init(void) ...@@ -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;
}
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment