aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/brcm47xx/files/arch/mips/bcm947xx/irq.c
diff options
context:
space:
mode:
authorMichael Büsch <mb@bu3sch.de>2008-02-20 17:56:24 +0000
committerMichael Büsch <mb@bu3sch.de>2008-02-20 17:56:24 +0000
commit1a3b1cecfc26731a2825a8e884b596e2f2ab4162 (patch)
tree9eddcbe2901556ef791a84b5b329d0bf02e322da /target/linux/brcm47xx/files/arch/mips/bcm947xx/irq.c
parentb8e8335de0522517b930b8338b44138c0bfc885a (diff)
downloadupstream-1a3b1cecfc26731a2825a8e884b596e2f2ab4162.tar.gz
upstream-1a3b1cecfc26731a2825a8e884b596e2f2ab4162.tar.bz2
upstream-1a3b1cecfc26731a2825a8e884b596e2f2ab4162.zip
bcm47xx: Add driver for the SSB Gigabit Ethernet core.
It doesn't work, yet, but let's commit what we have. git-svn-id: svn://svn.openwrt.org/openwrt/trunk@10509 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/brcm47xx/files/arch/mips/bcm947xx/irq.c')
-rw-r--r--target/linux/brcm47xx/files/arch/mips/bcm947xx/irq.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/target/linux/brcm47xx/files/arch/mips/bcm947xx/irq.c b/target/linux/brcm47xx/files/arch/mips/bcm947xx/irq.c
index 56d4c84b7d..c6b85a959f 100644
--- a/target/linux/brcm47xx/files/arch/mips/bcm947xx/irq.c
+++ b/target/linux/brcm47xx/files/arch/mips/bcm947xx/irq.c
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2004 Florian Schirmer (jolt@tuxbox.org)
+ * Copyright (C) 2008 Michael Buesch <mb@bu3sch.de>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
@@ -29,12 +30,18 @@
#include <linux/module.h>
#include <linux/smp.h>
#include <linux/types.h>
+#include <linux/pci.h>
+#include <linux/ssb/ssb.h>
#include <asm/cpu.h>
#include <asm/io.h>
#include <asm/irq.h>
#include <asm/irq_cpu.h>
+
+extern struct ssb_bus ssb;
+
+
void plat_irq_dispatch(void)
{
u32 cause;
@@ -61,3 +68,19 @@ void __init arch_init_irq(void)
{
mips_cpu_irq_init();
}
+
+int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
+{
+ int res;
+
+ res = ssb_pcibios_map_irq(dev, slot, pin);
+ if (res < 0) {
+ printk(KERN_ALERT "PCI: Failed to map IRQ of device %s\n",
+ pci_name((struct pci_dev *)dev));
+ return 0;
+ }
+ /* IRQ-0 and IRQ-1 are software interrupts. */
+ WARN_ON((res == 0) || (res == 1));
+
+ return res;
+}