]> git.sur5r.net Git - u-boot/blobdiff - cpu/ppc4xx/uic.c
ppc4xx: Fix reporting of bootstrap options G and F on 460EX/GT
[u-boot] / cpu / ppc4xx / uic.c
index fbf0c2b6ba914afb96241c3a71e2edda16e277d5..8b1b259fafe6b8034b5f13a8cf4b503c4bdb29e7 100644 (file)
@@ -59,27 +59,19 @@ DECLARE_GLOBAL_DATA_PTR;
 
 void pic_enable(void)
 {
-
 #if (UIC_MAX > 1)
        /* Install the UIC1 handlers */
-       irq_install_handler(VECNUM_UIC1NCI, (void *)(void *)external_interrupt,
-                           0);
-       irq_install_handler(VECNUM_UIC1CI, (void *)(void *)external_interrupt,
-                           0);
+       irq_install_handler(VECNUM_UIC1NCI, (void *)(void *)external_interrupt, 0);
+       irq_install_handler(VECNUM_UIC1CI, (void *)(void *)external_interrupt, 0);
 #endif
 #if (UIC_MAX > 2)
-       irq_install_handler(VECNUM_UIC2NCI, (void *)(void *)external_interrupt,
-                           0);
-       irq_install_handler(VECNUM_UIC2CI, (void *)(void *)external_interrupt,
-                           0);
+       irq_install_handler(VECNUM_UIC2NCI, (void *)(void *)external_interrupt, 0);
+       irq_install_handler(VECNUM_UIC2CI, (void *)(void *)external_interrupt, 0);
 #endif
 #if (UIC_MAX > 3)
-       irq_install_handler(VECNUM_UIC3NCI, (void *)(void *)external_interrupt,
-                           0);
-       irq_install_handler(VECNUM_UIC3CI, (void *)(void *)external_interrupt,
-                           0);
+       irq_install_handler(VECNUM_UIC3NCI, (void *)(void *)external_interrupt, 0);
+       irq_install_handler(VECNUM_UIC3CI, (void *)(void *)external_interrupt, 0);
 #endif
-
 }
 
 /* Handler for UIC interrupt */
@@ -117,7 +109,7 @@ void external_interrupt(struct pt_regs *regs)
        /*
         * Read masked interrupt status register to determine interrupt source
         */
-       uic_msr = mfdcr(uic0msr);
+       uic_msr = mfdcr(UIC0MSR);
 
 #if (UIC_MAX > 1)
        if ((UIC_MASK(VECNUM_UIC1CI) & uic_msr) ||
@@ -137,31 +129,24 @@ void external_interrupt(struct pt_regs *regs)
                uic_interrupt(UIC3_DCR_BASE, 96);
 #endif
 
+       mtdcr(UIC0SR, (uic_msr & UICB0_ALL));
+
        if (uic_msr & ~(UICB0_ALL))
                uic_interrupt(UIC0_DCR_BASE, 0);
 
-       mtdcr(uic0sr, uic_msr);
-
        return;
 }
 
 void pic_irq_ack(unsigned int vec)
 {
-
        if ((vec >= 0) && (vec < 32))
-               mtdcr(uicsr, UIC_MASK(vec));
-#if (UIC_MAX > 1)
+               mtdcr(UIC0SR, UIC_MASK(vec));
        else if ((vec >= 32) && (vec < 64))
-               mtdcr(uic1sr, UIC_MASK(vec));
-#endif
-#if (UIC_MAX > 2)
+               mtdcr(UIC1SR, UIC_MASK(vec));
        else if ((vec >= 64) && (vec < 96))
-               mtdcr(uic2sr, UIC_MASK(vec));
-#endif
-#if (UIC_MAX > 3)
+               mtdcr(UIC2SR, UIC_MASK(vec));
        else if (vec >= 96)
-               mtdcr(uic3sr, UIC_MASK(vec));
-#endif
+               mtdcr(UIC3SR, UIC_MASK(vec));
 }
 
 /*
@@ -171,39 +156,25 @@ void pic_irq_enable(unsigned int vec)
 {
 
        if ((vec >= 0) && (vec < 32))
-               mtdcr(uicer, mfdcr(uicer) | UIC_MASK(vec));
-#if (UIC_MAX > 1)
+               mtdcr(UIC0ER, mfdcr(UIC0ER) | UIC_MASK(vec));
        else if ((vec >= 32) && (vec < 64))
-               mtdcr(uic1er, mfdcr(uic1er) | UIC_MASK(vec));
-#endif
-#if (UIC_MAX > 2)
+               mtdcr(UIC1ER, mfdcr(UIC1ER) | UIC_MASK(vec));
        else if ((vec >= 64) && (vec < 96))
-               mtdcr(uic2er, mfdcr(uic2er) | UIC_MASK(vec));
-#endif
-#if (UIC_MAX > 3)
+               mtdcr(UIC2ER, mfdcr(UIC2ER) | UIC_MASK(vec));
        else if (vec >= 96)
-               mtdcr(uic3er, mfdcr(uic3er) | UIC_MASK(vec));
-#endif
+               mtdcr(UIC3ER, mfdcr(UIC3ER) | UIC_MASK(vec));
 
-       debug("Install interrupt for vector %d ==> %p\n", vec, handler);
+       debug("Install interrupt vector %d\n", vec);
 }
 
 void pic_irq_disable(unsigned int vec)
 {
-
        if ((vec >= 0) && (vec < 32))
-               mtdcr(uicer, mfdcr(uicer) & ~UIC_MASK(vec));
-#if (UIC_MAX > 1)
+               mtdcr(UIC0ER, mfdcr(UIC0ER) & ~UIC_MASK(vec));
        else if ((vec >= 32) && (vec < 64))
-               mtdcr(uic1er, mfdcr(uic1er) & ~UIC_MASK(vec));
-#endif
-#if (UIC_MAX > 2)
+               mtdcr(UIC1ER, mfdcr(UIC1ER) & ~UIC_MASK(vec));
        else if ((vec >= 64) && (vec < 96))
-               mtdcr(uic2er, mfdcr(uic2er) & ~UIC_MASK(vec));
-#endif
-#if (UIC_MAX > 3)
+               mtdcr(UIC2ER, mfdcr(UIC2ER) & ~UIC_MASK(vec));
        else if (vec >= 96)
-               mtdcr(uic3er, mfdcr(uic3er) & ~UIC_MASK(vec));
-#endif
-
+               mtdcr(UIC3ER, mfdcr(UIC3ER) & ~UIC_MASK(vec));
 }