brcm47xx: various fixes and code cleanups for irq code
[openwrt.git] / target / linux / brcm47xx / patches-3.6 / 183-bcma-mips-show-also-disabled-irqs.patch
index 6606970..d44b306 100644 (file)
   */
  unsigned int bcma_core_mips_irq(struct bcma_device *dev)
  {
   */
  unsigned int bcma_core_mips_irq(struct bcma_device *dev)
  {
-@@ -88,13 +93,18 @@ unsigned int bcma_core_mips_irq(struct b
+@@ -88,13 +93,15 @@ unsigned int bcma_core_mips_irq(struct b
        unsigned int irq;
  
        irqflag = bcma_core_mips_irqflag(dev);
 +      if (irqflag == 0x3f)
 +              return 6;
  
        unsigned int irq;
  
        irqflag = bcma_core_mips_irqflag(dev);
 +      if (irqflag == 0x3f)
 +              return 6;
  
-       for (irq = 1; irq <= 4; irq++)
+-      for (irq = 1; irq <= 4; irq++)
++      for (irq = 0; irq <= 4; irq++)
                if (bcma_read32(mdev, BCMA_MIPS_MIPS74K_INTMASK(irq)) &
                    (1 << irqflag))
                        return irq;
  
 -      return 0;
                if (bcma_read32(mdev, BCMA_MIPS_MIPS74K_INTMASK(irq)) &
                    (1 << irqflag))
                        return irq;
  
 -      return 0;
-+      if ((1 << irqflag) & bcma_read32(mdev, BCMA_MIPS_MIPS74K_INTMASK(0)))
-+              return 0;
-+
 +      return 5;
  }
  EXPORT_SYMBOL(bcma_core_mips_irq);
  
 +      return 5;
  }
  EXPORT_SYMBOL(bcma_core_mips_irq);
  
-@@ -115,7 +125,7 @@ static void bcma_core_mips_set_irq(struc
+@@ -115,7 +122,7 @@ static void bcma_core_mips_set_irq(struc
                bcma_write32(mdev, BCMA_MIPS_MIPS74K_INTMASK(0),
                            bcma_read32(mdev, BCMA_MIPS_MIPS74K_INTMASK(0)) &
                            ~(1 << irqflag));
                bcma_write32(mdev, BCMA_MIPS_MIPS74K_INTMASK(0),
                            bcma_read32(mdev, BCMA_MIPS_MIPS74K_INTMASK(0)) &
                            ~(1 << irqflag));
                bcma_write32(mdev, BCMA_MIPS_MIPS74K_INTMASK(oldirq), 0);
  
        /* assign the new one */
                bcma_write32(mdev, BCMA_MIPS_MIPS74K_INTMASK(oldirq), 0);
  
        /* assign the new one */
+@@ -145,7 +152,7 @@ static void bcma_core_mips_set_irq(struc
+       }
+       bcma_debug(bus, "set_irq: core 0x%04x, irq %d => %d\n",
+-                 dev->id.id, oldirq + 2, irq + 2);
++                 dev->id.id, oldirq <= 4 ? oldirq + 2 : 0, irq + 2);
+ }
+ static void bcma_core_mips_set_irq_name(struct bcma_bus *bus, unsigned int irq,