浏览代码

[PATCH] ppc32: explicitly disable 440GP IRQ compatibility mode in 440GX setup

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>
Eugene Surovegin 20 年之前
父节点
当前提交
4b1294f928
共有 1 个文件被更改,包括 4 次插入0 次删除
  1. 4 0
      arch/ppc/syslib/ppc4xx_pic.c

+ 4 - 0
arch/ppc/syslib/ppc4xx_pic.c

@@ -110,6 +110,10 @@ static int ppc4xx_pic_get_irq(struct pt_regs *regs)
 
 
 static void __init ppc4xx_pic_impl_init(void)
 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 */
 	/* Configure Base UIC */
 	mtdcr(DCRN_UIC_CR(UICB), 0);
 	mtdcr(DCRN_UIC_CR(UICB), 0);
 	mtdcr(DCRN_UIC_TR(UICB), 0);
 	mtdcr(DCRN_UIC_TR(UICB), 0);