mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-08-23 15:56:47 +03:00
fix extpci irq assignment bug
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@5159 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
8cb1afd57d
commit
47be900c56
@ -11243,7 +11243,7 @@ diff -urN linux.old/arch/mips/bcm947xx/Makefile linux.dev/arch/mips/bcm947xx/Mak
|
|||||||
diff -urN linux.old/arch/mips/bcm947xx/pci.c linux.dev/arch/mips/bcm947xx/pci.c
|
diff -urN linux.old/arch/mips/bcm947xx/pci.c linux.dev/arch/mips/bcm947xx/pci.c
|
||||||
--- linux.old/arch/mips/bcm947xx/pci.c 1970-01-01 01:00:00.000000000 +0100
|
--- linux.old/arch/mips/bcm947xx/pci.c 1970-01-01 01:00:00.000000000 +0100
|
||||||
+++ linux.dev/arch/mips/bcm947xx/pci.c 2006-10-15 23:29:14.000000000 +0200
|
+++ linux.dev/arch/mips/bcm947xx/pci.c 2006-10-15 23:29:14.000000000 +0200
|
||||||
@@ -0,0 +1,215 @@
|
@@ -0,0 +1,227 @@
|
||||||
+#include <linux/kernel.h>
|
+#include <linux/kernel.h>
|
||||||
+#include <linux/init.h>
|
+#include <linux/init.h>
|
||||||
+#include <linux/pci.h>
|
+#include <linux/pci.h>
|
||||||
@ -11356,11 +11356,23 @@ diff -urN linux.old/arch/mips/bcm947xx/pci.c linux.dev/arch/mips/bcm947xx/pci.c
|
|||||||
+
|
+
|
||||||
+int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
+int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
+{
|
+{
|
||||||
|
+ unsigned long flags;
|
||||||
+ u8 irq;
|
+ u8 irq;
|
||||||
|
+ uint idx;
|
||||||
+
|
+
|
||||||
+ if (dev->bus->number == 1)
|
+ /* external: use the irq of the pci core */
|
||||||
+ return 2;
|
+ if (dev->bus->number >= 1) {
|
||||||
|
+ spin_lock_irqsave(&sbh_lock, flags);
|
||||||
|
+ idx = sb_coreidx(sbh);
|
||||||
|
+ sb_setcore(sbh, SB_PCI, 0);
|
||||||
|
+ irq = sb_irq(sbh);
|
||||||
|
+ sb_setcoreidx(sbh, idx);
|
||||||
|
+ spin_unlock_irqrestore(&sbh_lock, flags);
|
||||||
+
|
+
|
||||||
|
+ return irq + 2;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /* internal */
|
||||||
+ pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq);
|
+ pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq);
|
||||||
+ return irq + 2;
|
+ return irq + 2;
|
||||||
+}
|
+}
|
||||||
|
Loading…
Reference in New Issue
Block a user