From: Jeff Garzik <jgarzik@pobox.com>
To: ak@suse.de, linux-kernel@vger.kernel.org
Cc: len.brown@intel.com
Subject: [AMD64 2/3] Fix build broken due to ACPI changes
Date: Sat, 25 Oct 2003 14:27:05 -0400 [thread overview]
Message-ID: <20031025182705.GA12075@gtf.org> (raw)
# --------------------------------------------
# 03/10/25 jgarzik@redhat.com 1.1352
# [AMD64] add acpi_pic_set_level_irq
#
# ACPI guys broke the AMD64 build. Adding this function fixes it.
# --------------------------------------------
diff -Nru a/arch/x86_64/kernel/acpi/boot.c b/arch/x86_64/kernel/acpi/boot.c
--- a/arch/x86_64/kernel/acpi/boot.c Sat Oct 25 06:08:24 2003
+++ b/arch/x86_64/kernel/acpi/boot.c Sat Oct 25 06:08:24 2003
@@ -226,30 +226,33 @@
#endif /*CONFIG_X86_IO_APIC*/
-#ifdef CONFIG_HPET_TIMER
-static int __init
-acpi_parse_hpet (
- unsigned long phys_addr,
- unsigned long size)
-{
- struct acpi_table_hpet *hpet_tbl;
-
- hpet_tbl = __va(phys_addr);
+#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.
+ */
- if (hpet_tbl->addr.space_id != ACPI_SPACE_MEM) {
- printk(KERN_WARNING "acpi: HPET timers must be located in memory.\n");
- return -1;
+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 */
- vxtime.hpet_address = hpet_tbl->addr.addrl |
- ((long) hpet_tbl->addr.addrh << 32);
-
- printk(KERN_INFO "acpi: HPET id: %#x base: %#lx\n",
- hpet_tbl->id, vxtime.hpet_address);
-
- return 0;
-}
-#endif
static unsigned long __init
acpi_scan_rsdp (
@@ -272,6 +275,30 @@
return 0;
}
+#ifdef CONFIG_HPET_TIMER
+static int __init
+acpi_parse_hpet (
+ unsigned long phys_addr,
+ unsigned long size)
+{
+ struct acpi_table_hpet *hpet_tbl;
+
+ hpet_tbl = __va(phys_addr);
+
+ if (hpet_tbl->addr.space_id != ACPI_SPACE_MEM) {
+ printk(KERN_WARNING "acpi: HPET timers must be located in memory.\n");
+ return -1;
+ }
+
+ vxtime.hpet_address = hpet_tbl->addr.addrl |
+ ((long) hpet_tbl->addr.addrh << 32);
+
+ printk(KERN_INFO "acpi: HPET id: %#x base: %#lx\n",
+ hpet_tbl->id, vxtime.hpet_address);
+
+ return 0;
+}
+#endif
unsigned long __init
acpi_find_rsdp (void)
reply other threads:[~2003-10-25 18:28 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20031025182705.GA12075@gtf.org \
--to=jgarzik@pobox.com \
--cc=ak@suse.de \
--cc=len.brown@intel.com \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.