fix irq problem with the new brcm-2.4 system code

SVN-Revision: 3803
This commit is contained in:
Felix Fietkau 2006-05-20 02:35:12 +00:00
parent 9f68ceb9ce
commit 549059cb74

View file

@ -10087,7 +10087,7 @@ diff -urN linux.old/arch/mips/bcm947xx/prom.c linux.dev/arch/mips/bcm947xx/prom.
diff -urN linux.old/arch/mips/bcm947xx/sbmips.c linux.dev/arch/mips/bcm947xx/sbmips.c
--- linux.old/arch/mips/bcm947xx/sbmips.c 1970-01-01 01:00:00.000000000 +0100
+++ linux.dev/arch/mips/bcm947xx/sbmips.c 2006-05-02 04:43:13.000000000 +0200
@@ -0,0 +1,1145 @@
@@ -0,0 +1,1132 @@
+/*
+ * BCM47XX Sonics SiliconBackplane MIPS core routines
+ *
@ -10162,8 +10162,8 @@ diff -urN linux.old/arch/mips/bcm947xx/sbmips.c linux.dev/arch/mips/bcm947xx/sbm
+ * Returns the MIPS IRQ assignment of the current core. If unassigned,
+ * 0 is returned.
+ */
+static uint
+sb_getirq(sb_t *sbh)
+uint
+sb_irq(sb_t *sbh)
+{
+ osl_t *osh;
+ uint idx;
@ -10196,19 +10196,6 @@ diff -urN linux.old/arch/mips/bcm947xx/sbmips.c linux.dev/arch/mips/bcm947xx/sbm
+ return irq;
+}
+
+/*
+ * Return the MIPS IRQ assignment of the current core. If necessary
+ * map cores sharing the MIPS hw IRQ0 to virtual dedicated OS IRQs.
+ */
+uint
+sb_irq(sb_t *sbh)
+{
+ uint irq = sb_getirq(sbh);
+ if (irq == 0 && shirq_map_base)
+ irq = sb_getflag(sbh) + shirq_map_base;
+ return irq;
+}
+
+/* Clears the specified MIPS IRQ. */
+static void
+BCMINITFN(sb_clearirq)(sb_t *sbh, uint irq)
@ -10250,7 +10237,7 @@ diff -urN linux.old/arch/mips/bcm947xx/sbmips.c linux.dev/arch/mips/bcm947xx/sbm
+ regs = sb_setcore(sbh, coreid, coreunit);
+ ASSERT(regs);
+ flag = sb_getflag(sbh);
+ oldirq = sb_getirq(sbh);
+ oldirq = sb_irq(sbh);
+ if (oldirq)
+ sb_clearirq(sbh, oldirq);
+