1 --- a/drivers/bcma/driver_mips.c
2 +++ b/drivers/bcma/driver_mips.c
3 @@ -75,11 +75,16 @@ static u32 bcma_core_mips_irqflag(struct
4 return dev->core_index;
5 flag = bcma_aread32(dev, BCMA_MIPS_OOBSELOUTA30);
14 /* Get the MIPS IRQ assignment for a specified device.
15 * If unassigned, 0 is returned.
16 + * If disabled, 5 is returned.
17 + * If not supported, 6 is returned.
19 unsigned int bcma_core_mips_irq(struct bcma_device *dev)
21 @@ -88,13 +93,18 @@ unsigned int bcma_core_mips_irq(struct b
24 irqflag = bcma_core_mips_irqflag(dev);
25 + if (irqflag == 0x3f)
28 for (irq = 1; irq <= 4; irq++)
29 if (bcma_read32(mdev, BCMA_MIPS_MIPS74K_INTMASK(irq)) &
34 + if ((1 << irqflag) & bcma_read32(mdev, BCMA_MIPS_MIPS74K_INTMASK(0)))
39 EXPORT_SYMBOL(bcma_core_mips_irq);
41 @@ -115,7 +125,7 @@ static void bcma_core_mips_set_irq(struc
42 bcma_write32(mdev, BCMA_MIPS_MIPS74K_INTMASK(0),
43 bcma_read32(mdev, BCMA_MIPS_MIPS74K_INTMASK(0)) &
46 + else if (oldirq != 5)
47 bcma_write32(mdev, BCMA_MIPS_MIPS74K_INTMASK(oldirq), 0);
49 /* assign the new one */