]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - arch/m68knommu/platform/5206/config.c
m68knommu: map ColdFire interrupts to correct masking bits
[net-next-2.6.git] / arch / m68knommu / platform / 5206 / config.c
index c1d24796ef2fd714be56b93206246c518982b246..9c335465e66de1a0e9a4d4e59ae53c4369810d05 100644 (file)
@@ -49,11 +49,11 @@ static void __init m5206_uart_init_line(int line, int irq)
        if (line == 0) {
                writel(MCFSIM_ICR_LEVEL6 | MCFSIM_ICR_PRI1, MCF_MBAR + MCFSIM_UART1ICR);
                writeb(irq, MCFUART_BASE1 + MCFUART_UIVR);
-               mcf_clrimr(MCFINTC_UART0);
+               mcf_mapirq2imr(irq, MCFINTC_UART0);
        } else if (line == 1) {
                writel(MCFSIM_ICR_LEVEL6 | MCFSIM_ICR_PRI2, MCF_MBAR + MCFSIM_UART2ICR);
                writeb(irq, MCFUART_BASE2 + MCFUART_UIVR);
-               mcf_clrimr(MCFINTC_UART1);
+               mcf_mapirq2imr(irq, MCFINTC_UART1);
        }
 }
 
@@ -73,11 +73,13 @@ static void __init m5206_timers_init(void)
        /* Timer1 is always used as system timer */
        writeb(MCFSIM_ICR_AUTOVEC | MCFSIM_ICR_LEVEL6 | MCFSIM_ICR_PRI3,
                MCF_MBAR + MCFSIM_TIMER1ICR);
+       mcf_mapirq2imr(MCF_IRQ_TIMER, MCFINTC_TIMER1);
 
 #ifdef CONFIG_HIGHPROFILE
        /* Timer2 is to be used as a high speed profile timer  */
        writeb(MCFSIM_ICR_AUTOVEC | MCFSIM_ICR_LEVEL7 | MCFSIM_ICR_PRI3,
                MCF_MBAR + MCFSIM_TIMER2ICR);
+       mcf_mapirq2imr(MCF_IRQ_PROFILER, MCFINTC_TIMER2);
 #endif
 }
 
@@ -98,13 +100,18 @@ void __init config_BSP(char *commandp, int size)
 {
        mach_reset = m5206_cpu_reset;
        m5206_timers_init();
+       m5206_uarts_init();
+
+       /* Only support the external interrupts on their primary level */
+       mcf_mapirq2imr(25, MCFINTC_EINT1);
+       mcf_mapirq2imr(28, MCFINTC_EINT4);
+       mcf_mapirq2imr(31, MCFINTC_EINT7);
 }
 
 /***************************************************************************/
 
 static int __init init_BSP(void)
 {
-       m5206_uarts_init();
        platform_add_devices(m5206_devices, ARRAY_SIZE(m5206_devices));
        return 0;
 }