# This is a BitKeeper generated patch for the following project: # Project Name: Linux kernel tree # This patch format is intended for GNU patch command version 2.5 or higher. # This patch includes the following deltas: # ChangeSet 1.1128 -> 1.1129 # drivers/acpi/bus.c 1.17 -> 1.18 # arch/i386/kernel/acpi.c 1.13 -> 1.14 # # The following is the BitKeeper ChangeSet Log # -------------------------------------------- # 03/10/20 len.brown@intel.com 1.1129 # [ACPI] fix !CONFIG_PCI build # use X86 ACPI specific version of eisa_set_level_irq() # http://bugzilla.kernel.org/show_bug.cgi?id=1390 # -------------------------------------------- # diff -Nru a/arch/i386/kernel/acpi.c b/arch/i386/kernel/acpi.c --- a/arch/i386/kernel/acpi.c Mon Oct 20 18:10:13 2003 +++ b/arch/i386/kernel/acpi.c Mon Oct 20 18:10:13 2003 @@ -470,6 +470,34 @@ #endif /*CONFIG_ACPI_BOOT*/ +#ifdef CONFIG_ACPI_BUS +/* + * Set specified PIC IRQ to level triggered mode. + * + * Port 0x4d0-4d1 are ECLR1 and ECLR2, the Edge/Level Control Registers + * for the 8259 PIC. bit[n] = 1 means irq[n] is Level, otherwise Edge. + * ECLR1 is IRQ's 0-7 (IRQ 0, 1, 2 must be 0) + * ECLR2 is IRQ's 8-15 (IRQ 8, 13 must be 0) + * + * As the BIOS should have done this for us, + * print a warning if the IRQ wasn't already set to level. + */ + +void acpi_pic_set_level_irq(unsigned int irq) +{ + unsigned char mask = 1 << (irq & 7); + unsigned int port = 0x4d0 + (irq >> 3); + unsigned char val = inb(port); + + if (!(val & mask)) { + printk(KERN_WARNING PREFIX "IRQ %d was Edge Triggered, " + "setting to Level Triggerd\n", irq); + outb(val | mask, port); + } +} +#endif /* CONFIG_ACPI_BUS */ + + /* -------------------------------------------------------------------------- Low-Level Sleep Support diff -Nru a/drivers/acpi/bus.c b/drivers/acpi/bus.c --- a/drivers/acpi/bus.c Mon Oct 20 18:10:13 2003 +++ b/drivers/acpi/bus.c Mon Oct 20 18:10:13 2003 @@ -49,7 +49,7 @@ #define PREFIX "ACPI: " -extern void eisa_set_level_irq(unsigned int irq); +extern void acpi_pic_set_level_irq(unsigned int irq); extern int acpi_disabled; @@ -1881,7 +1881,7 @@ if (acpi_ioapic) mp_config_ioapic_for_sci(acpi_fadt.sci_int); else - eisa_set_level_irq(acpi_fadt.sci_int); + acpi_pic_set_level_irq(acpi_fadt.sci_int); #endif status = acpi_enable_subsystem(ACPI_FULL_INITIALIZATION);