summaryrefslogtreecommitdiff
path: root/drivers/ssb/driver_pcicore.c
diff options
context:
space:
mode:
authorMichael Buesch <mb@bu3sch.de>2008-07-05 01:44:37 +0400
committerJohn W. Linville <linville@tuxdriver.com>2008-07-07 23:31:40 +0400
commit9e095a687b3561972272063260e14ab1bc21de08 (patch)
treef5f7f9bcfaad71c8b2f8aca9b7a743963fb81cdf /drivers/ssb/driver_pcicore.c
parent9dfd55008e3863dcd93219c74bf05b09e5c549e2 (diff)
downloadlinux-9e095a687b3561972272063260e14ab1bc21de08.tar.xz
ssb-pcicore: Fix IRQ-vector init on embedded devices
On embedded devices we must not route the interrupts through the PCI core, if our host-bus is not PCI. Reported-by: Steve Brown <sbrown@cortland.com> Signed-off-by: Michael Buesch <mb@bu3sch.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/ssb/driver_pcicore.c')
-rw-r--r--drivers/ssb/driver_pcicore.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/ssb/driver_pcicore.c b/drivers/ssb/driver_pcicore.c
index d28c53868093..538c570df337 100644
--- a/drivers/ssb/driver_pcicore.c
+++ b/drivers/ssb/driver_pcicore.c
@@ -537,6 +537,13 @@ int ssb_pcicore_dev_irqvecs_enable(struct ssb_pcicore *pc,
int err = 0;
u32 tmp;
+ if (dev->bus->bustype != SSB_BUSTYPE_PCI) {
+ /* This SSB device is not on a PCI host-bus. So the IRQs are
+ * not routed through the PCI core.
+ * So we must not enable routing through the PCI core. */
+ goto out;
+ }
+
if (!pdev)
goto out;
bus = pdev->bus;