summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authornjl <njl@FreeBSD.org>2004-10-08 17:56:47 +0000
committernjl <njl@FreeBSD.org>2004-10-08 17:56:47 +0000
commita21b1cf36444909647d4f1e3ffa4fad0ce8f9393 (patch)
tree6278a5605d9cd753b3842489da17f30eca25e380 /sys
parentb5e56e2ca94c36a11a6f85a78382b218156e054b (diff)
downloadFreeBSD-src-a21b1cf36444909647d4f1e3ffa4fad0ce8f9393.zip
FreeBSD-src-a21b1cf36444909647d4f1e3ffa4fad0ce8f9393.tar.gz
Update a quirk for the ASUS P5A to disable the timer. It appears to work fine
with acpi but the timer runs twice as fast. Note that the main problem (system doesn't work properly with acpi disabled) should be fixed separately. Changes: * Add a quirk to disable the timer * Merge the P5A and P5A-B quirks since they appear to be based on the same ASL. PR: i386/72450 Tested by: Kevin Oberman <oberman es.net> MFC after: 3 days
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/acpica/acpi_quirks13
-rw-r--r--sys/dev/acpica/acpi_timer.c3
-rw-r--r--sys/dev/acpica/acpivar.h2
3 files changed, 9 insertions, 9 deletions
diff --git a/sys/dev/acpica/acpi_quirks b/sys/dev/acpica/acpi_quirks
index a20a7a5..0c4d8a3 100644
--- a/sys/dev/acpica/acpi_quirks
+++ b/sys/dev/acpica/acpi_quirks
@@ -53,17 +53,14 @@ oem_rev: FADT <= 0x58582e31
creator_rev: FADT <= 0x31303030
quirks: ACPI_Q_BROKEN
-# ASUS P5A 03/12/99
+# ASUS P5A and P5A-B 03/12/99
+# PR: i386/72450
+# Testing indicates that the ACPI timer runs twice as fast but otherwise
+# this system works normally.
name: ASUS_P5A
oem: FADT "ASUS " "P5A "
oem_rev: FADT <= 0x58582e31
-quirks: ACPI_Q_BROKEN
-
-# ASUS P5A-B
-name: ASUS_P5A_B
-oem: FADT "ASUS " "P5A-B "
-oem_rev: FADT <= 0x58582e31
-quirks: ACPI_Q_BROKEN
+quirks: ACPI_Q_TIMER
# Compaq Armada 3500
name: Compaq_Armada_3500
diff --git a/sys/dev/acpica/acpi_timer.c b/sys/dev/acpica/acpi_timer.c
index abae0c3..1a3a45a 100644
--- a/sys/dev/acpica/acpi_timer.c
+++ b/sys/dev/acpica/acpi_timer.c
@@ -116,7 +116,8 @@ acpi_timer_identify(driver_t *driver, device_t parent)
ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__);
- if (acpi_disabled("timer") || AcpiGbl_FADT == NULL || acpi_timer_dev)
+ if (acpi_disabled("timer") || (acpi_quirks & ACPI_Q_TIMER) ||
+ AcpiGbl_FADT == NULL || acpi_timer_dev)
return_VOID;
if ((dev = BUS_ADD_CHILD(parent, 0, "acpi_timer", 0)) == NULL) {
diff --git a/sys/dev/acpica/acpivar.h b/sys/dev/acpica/acpivar.h
index 3722160..88d041c 100644
--- a/sys/dev/acpica/acpivar.h
+++ b/sys/dev/acpica/acpivar.h
@@ -161,8 +161,10 @@ extern struct mtx acpi_mutex;
#define ACPI_INTR_SAPIC 2
/* Quirk flags. */
+extern int acpi_quirks;
#define ACPI_Q_OK 0
#define ACPI_Q_BROKEN (1 << 0) /* Disable ACPI completely. */
+#define ACPI_Q_TIMER (1 << 1) /* Disable ACPI timer. */
/*
* Note that the low ivar values are reserved to provide
OpenPOWER on IntegriCloud