diff options
| author | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2006-10-16 14:21:30 +0000 | 
|---|---|---|
| committer | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2006-10-16 14:21:30 +0000 | 
| commit | 47be900c56f035d6a5d42436bd6044ffafe46f0a (patch) | |
| tree | c401df47f8924d9307ff182d1e77307de2e6628f | |
| parent | 8cb1afd57db8ddf70746dd58ac38fcb8d010984a (diff) | |
fix extpci irq assignment bug
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@5159 3c298f89-4303-0410-b956-a3cf2f4a3e73
| -rw-r--r-- | target/linux/brcm-2.6/patches/001-bcm947xx.patch | 20 | 
1 files changed, 16 insertions, 4 deletions
diff --git a/target/linux/brcm-2.6/patches/001-bcm947xx.patch b/target/linux/brcm-2.6/patches/001-bcm947xx.patch index 786b9af78..864f7747d 100644 --- a/target/linux/brcm-2.6/patches/001-bcm947xx.patch +++ b/target/linux/brcm-2.6/patches/001-bcm947xx.patch @@ -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  --- 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 -@@ -0,0 +1,215 @@ +@@ -0,0 +1,227 @@  +#include <linux/kernel.h>  +#include <linux/init.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)  +{ ++	unsigned long flags;  +	u8 irq; ++	uint idx;  +	 -+	if (dev->bus->number == 1) -+		return 2; -+ ++	/* external: use the irq of the pci core */ ++	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);  +	return irq + 2;  +}  | 
