#include <asm/smp.h>
#include <asm/io_apic.h>
#include <asm/hw_irq.h>
+#include <linux/acpi.h>
#include "pci.h"
subsys_initcall(pcibios_irq_init);
-void pcibios_penalize_isa_irq(int irq)
+static void pirq_penalize_isa_irq(int irq)
{
/*
* If any ISAPnP device reports an IRQ in its list of possible
* IRQ's, we try to avoid assigning it to PCI devices.
*/
- pirq_penalty[irq] += 100;
+ if (irq < 16)
+ pirq_penalty[irq] += 100;
+}
+
+void pcibios_penalize_isa_irq(int irq)
+{
+#ifdef CONFIG_ACPI_PCI
+ if (!acpi_noirq)
+ acpi_penalize_isa_irq(irq);
+ else
+#endif
+ pirq_penalize_isa_irq(irq);
}
int pirq_enable_irq(struct pci_dev *dev)
return 1;
}
+void acpi_penalize_isa_irq(int irq)
+{
+ acpi_irq_penalty[irq] += PIRQ_PENALTY_ISA_USED;
+}
+
/*
* Over-ride default table to reserve additional IRQs for use by ISA
* e.g. acpi_irq_isa=5
#include <linux/ctype.h>
#include <linux/pnp.h>
#include <linux/pnpbios.h>
+#include <linux/pci.h>
#include "pnpbios.h"
}
res->irq_resource[i].start =
res->irq_resource[i].end = (unsigned long) irq;
+ pcibios_penalize_isa_irq(irq);
}
}