diff options
author | Michael Buesch <mb@bu3sch.de> | 2008-04-08 11:17:29 +0200 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2008-04-09 10:33:49 -0400 |
commit | 2633da237ba29875294f8680ebece5900ccdcc05 (patch) | |
tree | e7f6024fef2f3e2d67f779241162153cf69d8451 /drivers | |
parent | b63009b456c8d9abe684bdf8d4bd8f27eb040019 (diff) | |
download | lwn-2633da237ba29875294f8680ebece5900ccdcc05.tar.gz lwn-2633da237ba29875294f8680ebece5900ccdcc05.zip |
ssb-mipscore: Fix interrupt vectors
This fixes assignment of the interrupt vectors on the SSB MIPS core.
Signed-off-by: Michael Buesch <mb@bu3sch.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/ssb/driver_mipscore.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/drivers/ssb/driver_mipscore.c b/drivers/ssb/driver_mipscore.c index 3d3dd32bf3ab..a9e7eb45b2e7 100644 --- a/drivers/ssb/driver_mipscore.c +++ b/drivers/ssb/driver_mipscore.c @@ -109,12 +109,13 @@ static void set_irq(struct ssb_device *dev, unsigned int irq) clear_irq(bus, oldirq); /* assign the new one */ - if (irq == 0) - ssb_write32(mdev, SSB_INTVEC, ((1 << irqflag) & ssb_read32(mdev, SSB_INTVEC))); - - irqflag <<= ipsflag_irq_shift[irq]; - irqflag |= (ssb_read32(mdev, SSB_IPSFLAG) & ~ipsflag_irq_mask[irq]); - ssb_write32(mdev, SSB_IPSFLAG, irqflag); + if (irq == 0) { + ssb_write32(mdev, SSB_INTVEC, ((1 << irqflag) | ssb_read32(mdev, SSB_INTVEC))); + } else { + irqflag <<= ipsflag_irq_shift[irq]; + irqflag |= (ssb_read32(mdev, SSB_IPSFLAG) & ~ipsflag_irq_mask[irq]); + ssb_write32(mdev, SSB_IPSFLAG, irqflag); + } } static void ssb_mips_serial_init(struct ssb_mipscore *mcore) |