[PATCH] ppc32: explicitly disable 440GP IRQ compatibility mode in 440GX setup
authorEugene Surovegin <ebs@ebshome.net>
Wed, 6 Jul 2005 01:54:45 +0000 (18:54 -0700)
committerLinus Torvalds <torvalds@g5.osdl.org>
Wed, 6 Jul 2005 02:18:59 +0000 (19:18 -0700)
Add explicit disabling of 440GP IRQ compatibility mode when configuring
440GX interrupt controller.  This helps when board firmware for some reason
uses this compatibility mode and leaves it enabled.  It breaks 440GX
interrupt code because it assumes native 440GX IRQ mode.  People seems to
be continuously bitten by this.

Signed-off-by: Eugene Surovegin <ebs@ebshome.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
arch/ppc/syslib/ppc4xx_pic.c

index 05686fa73545bf83838a91c605c19e0860e36465..40086212b9c3a4837dc923b65ab891a54dfcc640 100644 (file)
@@ -110,6 +110,10 @@ static int ppc4xx_pic_get_irq(struct pt_regs *regs)
 
 static void __init ppc4xx_pic_impl_init(void)
 {
+#if defined(CONFIG_440GX)
+       /* Disable 440GP compatibility mode if it was enabled in firmware */
+       SDR_WRITE(DCRN_SDR_MFR, SDR_READ(DCRN_SDR_MFR) & ~DCRN_SDR_MFR_PCM);
+#endif
        /* Configure Base UIC */
        mtdcr(DCRN_UIC_CR(UICB), 0);
        mtdcr(DCRN_UIC_TR(UICB), 0);