Andrew,

the following patch adds 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 at ebshome.net>

diff --git a/arch/ppc/syslib/ppc4xx_pic.c b/arch/ppc/syslib/ppc4xx_pic.c
--- a/arch/ppc/syslib/ppc4xx_pic.c
+++ b/arch/ppc/syslib/ppc4xx_pic.c
@@ -110,6 +110,10 @@ static int ppc4xx_pic_get_irq(struct pt_
 
 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);




Reply via email to