summaryrefslogtreecommitdiffstats
path: root/sys/amd64/acpica/acpi_wakeup.c
diff options
context:
space:
mode:
authorjkim <jkim@FreeBSD.org>2009-03-23 22:35:30 +0000
committerjkim <jkim@FreeBSD.org>2009-03-23 22:35:30 +0000
commit6869ba3c1ba37d74619482589dda4c73d6721521 (patch)
treef284ffd9edfdd71caca0193ffb187a3cc0ece60d /sys/amd64/acpica/acpi_wakeup.c
parenta4268466ee69cbf0af9f9d2ee33a461b7a5944bb (diff)
downloadFreeBSD-src-6869ba3c1ba37d74619482589dda4c73d6721521.zip
FreeBSD-src-6869ba3c1ba37d74619482589dda4c73d6721521.tar.gz
- Clean up suspend/resume code for amd64.
- Call acpi_resync_clock() to reset system time before hardclock is ready to tick. Note we assume the current timecounter hardware and RTC are already available for read operation. Tested by: mav
Diffstat (limited to 'sys/amd64/acpica/acpi_wakeup.c')
-rw-r--r--sys/amd64/acpica/acpi_wakeup.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/sys/amd64/acpica/acpi_wakeup.c b/sys/amd64/acpica/acpi_wakeup.c
index 5e3d5b1..02432f0 100644
--- a/sys/amd64/acpica/acpi_wakeup.c
+++ b/sys/amd64/acpica/acpi_wakeup.c
@@ -37,7 +37,6 @@ __FBSDID("$FreeBSD$");
#include <sys/malloc.h>
#include <sys/memrange.h>
#include <sys/smp.h>
-#include <sys/sysctl.h>
#include <sys/types.h>
#include <vm/vm.h>
@@ -67,8 +66,8 @@ CTASSERT(sizeof(wakecode) < PAGE_SIZE - 1024);
#error this file needs sys/cdefs.h as a prerequisite
#endif
-extern uint32_t acpi_resume_beep;
-extern uint32_t acpi_reset_video;
+extern int acpi_resume_beep;
+extern int acpi_reset_video;
#ifdef SMP
extern struct xpcb *stopxpcbs;
@@ -280,8 +279,8 @@ acpi_sleep_machdep(struct acpi_softc *sc, int state)
}
#endif
- WAKECODE_FIXUP(resume_beep, uint32_t, acpi_resume_beep);
- WAKECODE_FIXUP(reset_video, uint32_t, acpi_reset_video);
+ WAKECODE_FIXUP(resume_beep, uint8_t, (acpi_resume_beep != 0));
+ WAKECODE_FIXUP(reset_video, uint8_t, (acpi_reset_video != 0));
WAKECODE_FIXUP(wakeup_xpcb, struct xpcb *, &stopxpcbs[0]);
WAKECODE_FIXUP(wakeup_gdt, uint16_t,
@@ -309,13 +308,11 @@ acpi_sleep_machdep(struct acpi_softc *sc, int state)
ia32_pause();
} else {
fpusetregs(curthread, stopfpu);
-
- WAKECODE_FIXUP(resume_beep, uint32_t, 0);
- WAKECODE_FIXUP(reset_video, uint32_t, 0);
#ifdef SMP
if (wakeup_cpus != 0)
acpi_wakeup_cpus(sc, wakeup_cpus);
#endif
+ acpi_resync_clock(sc);
ret = 0;
}
OpenPOWER on IntegriCloud