diff options
author | David Shaohua Li <shaohua.li@intel.com> | 2005-04-01 00:07:31 -0500 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2005-07-12 00:03:30 -0400 |
commit | c9c3e457de24cca2ca688fa397d93a241f472048 (patch) | |
tree | 570b7a07f9c6f570341481500a2bff21c1328d8d /arch/i386/pci | |
parent | acf05f4b7f558051ea0028e8e617144123650272 (diff) |
[ACPI] PNPACPI vs sound IRQ
http://bugme.osdl.org/show_bug.cgi?id=4016
Written-by: David Shaohua Li <shaohua.li@intel.com>
Acked-by: Adam Belay <abelay@novell.com>
Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'arch/i386/pci')
-rw-r--r-- | arch/i386/pci/irq.c | 16 | ||||
-rw-r--r-- | arch/i386/pci/visws.c | 2 |
2 files changed, 11 insertions, 7 deletions
diff --git a/arch/i386/pci/irq.c b/arch/i386/pci/irq.c index da21b1d07c15..d21b3a2dc978 100644 --- a/arch/i386/pci/irq.c +++ b/arch/i386/pci/irq.c | |||
@@ -1006,24 +1006,28 @@ static int __init pcibios_irq_init(void) | |||
1006 | subsys_initcall(pcibios_irq_init); | 1006 | subsys_initcall(pcibios_irq_init); |
1007 | 1007 | ||
1008 | 1008 | ||
1009 | static void pirq_penalize_isa_irq(int irq) | 1009 | static void pirq_penalize_isa_irq(int irq, int active) |
1010 | { | 1010 | { |
1011 | /* | 1011 | /* |
1012 | * If any ISAPnP device reports an IRQ in its list of possible | 1012 | * If any ISAPnP device reports an IRQ in its list of possible |
1013 | * IRQ's, we try to avoid assigning it to PCI devices. | 1013 | * IRQ's, we try to avoid assigning it to PCI devices. |
1014 | */ | 1014 | */ |
1015 | if (irq < 16) | 1015 | if (irq < 16) { |
1016 | pirq_penalty[irq] += 100; | 1016 | if (active) |
1017 | pirq_penalty[irq] += 1000; | ||
1018 | else | ||
1019 | pirq_penalty[irq] += 100; | ||
1020 | } | ||
1017 | } | 1021 | } |
1018 | 1022 | ||
1019 | void pcibios_penalize_isa_irq(int irq) | 1023 | void pcibios_penalize_isa_irq(int irq, int active) |
1020 | { | 1024 | { |
1021 | #ifdef CONFIG_ACPI_PCI | 1025 | #ifdef CONFIG_ACPI_PCI |
1022 | if (!acpi_noirq) | 1026 | if (!acpi_noirq) |
1023 | acpi_penalize_isa_irq(irq); | 1027 | acpi_penalize_isa_irq(irq, active); |
1024 | else | 1028 | else |
1025 | #endif | 1029 | #endif |
1026 | pirq_penalize_isa_irq(irq); | 1030 | pirq_penalize_isa_irq(irq, active); |
1027 | } | 1031 | } |
1028 | 1032 | ||
1029 | static int pirq_enable_irq(struct pci_dev *dev) | 1033 | static int pirq_enable_irq(struct pci_dev *dev) |
diff --git a/arch/i386/pci/visws.c b/arch/i386/pci/visws.c index 6a9248784439..314c933b6b8e 100644 --- a/arch/i386/pci/visws.c +++ b/arch/i386/pci/visws.c | |||
@@ -21,7 +21,7 @@ static int pci_visws_enable_irq(struct pci_dev *dev) { return 0; } | |||
21 | 21 | ||
22 | int (*pcibios_enable_irq)(struct pci_dev *dev) = &pci_visws_enable_irq; | 22 | int (*pcibios_enable_irq)(struct pci_dev *dev) = &pci_visws_enable_irq; |
23 | 23 | ||
24 | void __init pcibios_penalize_isa_irq(int irq) {} | 24 | void __init pcibios_penalize_isa_irq(int irq, int active) {} |
25 | 25 | ||
26 | 26 | ||
27 | unsigned int pci_bus0, pci_bus1; | 27 | unsigned int pci_bus0, pci_bus1; |