Insure that remaining cores are assigned the shared IRQ (MIPS IRQ0) when
the non-shared IRQs have all been assigned.  ChipCommon and I2S cores should
always be assigned the shared IRQ.

Note: I did not include a "default" case for assigning all other cores to the
      shared IRQ, as it caused the DDR1/DDR2 Memory Controller core to be
      assigned to IRQ2 and resulted in a never ending stack dump.  If this
      is to be pursued, I would recommend a separate patch.

Signed-off-by: Nathan Hintz <[email protected]>

--- /dev/null
+++ target/linux/brcm47xx/patches-3.6/238-bcma-shared-irq-update.patch
@@ -0,0 +1,19 @@
+--- a/drivers/bcma/driver_mips.c
++++ b/drivers/bcma/driver_mips.c
+@@ -315,9 +315,15 @@ void bcma_core_mips_init(struct bcma_drv
+                       /* These devices get their own IRQ line if available,
+                        * the rest goes on IRQ0
+                        */
+-                      if (mcore->assigned_irqs <= 4)
++                      if (mcore->assigned_irqs <= 4) {
+                               bcma_core_mips_set_irq(core,
+                                                      mcore->assigned_irqs++);
++                              break;
++                      }
++                      /* fallthrough */
++              case BCMA_CORE_CHIPCOMMON:
++              case BCMA_CORE_I2S:
++                      bcma_core_mips_set_irq(core, 0);
+                       break;
+               }
+       }



_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to