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 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.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 +++ 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 + * 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, + * Returns the MIPS IRQ assignment of the current core. If unassigned,
+ * 0 is returned. + * 0 is returned.
+ */ + */
+static uint +uint
+sb_getirq(sb_t *sbh) +sb_irq(sb_t *sbh)
+{ +{
+ osl_t *osh; + osl_t *osh;
+ uint idx; + uint idx;
@ -10196,19 +10196,6 @@ diff -urN linux.old/arch/mips/bcm947xx/sbmips.c linux.dev/arch/mips/bcm947xx/sbm
+ return irq; + 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. */ +/* Clears the specified MIPS IRQ. */
+static void +static void
+BCMINITFN(sb_clearirq)(sb_t *sbh, uint irq) +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); + regs = sb_setcore(sbh, coreid, coreunit);
+ ASSERT(regs); + ASSERT(regs);
+ flag = sb_getflag(sbh); + flag = sb_getflag(sbh);
+ oldirq = sb_getirq(sbh); + oldirq = sb_irq(sbh);
+ if (oldirq) + if (oldirq)
+ sb_clearirq(sbh, oldirq); + sb_clearirq(sbh, oldirq);
+ +