diff options
author | njl <njl@FreeBSD.org> | 2003-08-29 04:02:19 +0000 |
---|---|---|
committer | njl <njl@FreeBSD.org> | 2003-08-29 04:02:19 +0000 |
commit | b5438b54303dbc8d523f6cdc914d2e4e37bb59fb (patch) | |
tree | d54715d8d3a15f359e394a41d14f08964412c5c9 | |
parent | 89874a1f1d2097be6ab2ccb3535359238a189b1d (diff) | |
download | FreeBSD-src-b5438b54303dbc8d523f6cdc914d2e4e37bb59fb.zip FreeBSD-src-b5438b54303dbc8d523f6cdc914d2e4e37bb59fb.tar.gz |
Use the ACPICA AcpiEnterSleepStateS4bios instead of rolling our own. This
change also disables interrupts around non-S4 suspends whereas before we
did not do this. Our version of AcpiEnterSleepStateS4bios was almost
identical to the ACPICA version.
-rw-r--r-- | sys/conf/files | 1 | ||||
-rw-r--r-- | sys/dev/acpica/acpi.c | 1 | ||||
-rw-r--r-- | sys/dev/acpica/acpica_support.c | 107 | ||||
-rw-r--r-- | sys/dev/acpica/acpica_support.h | 38 | ||||
-rw-r--r-- | sys/i386/acpica/acpi_wakeup.c | 7 | ||||
-rw-r--r-- | sys/modules/acpi/Makefile | 5 |
6 files changed, 6 insertions, 153 deletions
diff --git a/sys/conf/files b/sys/conf/files index ab7788d..3dbcfb3 100644 --- a/sys/conf/files +++ b/sys/conf/files @@ -235,7 +235,6 @@ dev/aac/aac_pci.c optional aac pci dev/aac/aac_cam.c optional aacp aac dev/aac/aac_linux.c optional aac compat_linux dev/acpica/acpi.c optional acpi -dev/acpica/acpica_support.c optional acpi dev/acpica/acpi_acad.c optional acpi dev/acpica/acpi_battery.c optional acpi dev/acpica/acpi_button.c optional acpi diff --git a/sys/dev/acpica/acpi.c b/sys/dev/acpica/acpi.c index 8743598..a1efa1f 100644 --- a/sys/dev/acpica/acpi.c +++ b/sys/dev/acpica/acpi.c @@ -49,7 +49,6 @@ #include <isa/isavar.h> #include "acpi.h" -#include <dev/acpica/acpica_support.h> #include <dev/acpica/acpivar.h> #include <dev/acpica/acpiio.h> diff --git a/sys/dev/acpica/acpica_support.c b/sys/dev/acpica/acpica_support.c deleted file mode 100644 index 27b426a..0000000 --- a/sys/dev/acpica/acpica_support.c +++ /dev/null @@ -1,107 +0,0 @@ -/*- - * Copyright (c) 2001 Mitsuru IWASAKI - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include "acpi.h" -#include <machine/cpufunc.h> -#include <dev/acpica/acpica_support.h> - -ACPI_MODULE_NAME("SUPPORT") - -/* - * Implement support code temporary here until officially merged into - * Intel ACPI CA release. - */ - -#undef _COMPONENT -#define _COMPONENT ACPI_HARDWARE - -/****************************************************************************** - * - * FUNCTION: AcpiEnterSleepStateS4Bios - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Enter a system sleep state S4BIOS - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEnterSleepStateS4Bios ( - void) -{ - ACPI_OBJECT_LIST ArgList; - ACPI_OBJECT Arg; - UINT32 Value; - - - ACPI_FUNCTION_TRACE ("AcpiEnterSleepStateS4Bios"); - - /* run the _PTS and _GTS methods */ - - ACPI_MEMSET(&ArgList, 0, sizeof(ArgList)); - ArgList.Count = 1; - ArgList.Pointer = &Arg; - - ACPI_MEMSET(&Arg, 0, sizeof(Arg)); - Arg.Type = ACPI_TYPE_INTEGER; - Arg.Integer.Value = ACPI_STATE_S4; - - AcpiEvaluateObject (NULL, "\\_PTS", &ArgList, NULL); - AcpiEvaluateObject (NULL, "\\_GTS", &ArgList, NULL); - - /* clear wake status */ - - AcpiSetRegister (ACPI_BITREG_WAKE_STATUS, 1, ACPI_MTX_LOCK); - - ACPI_DISABLE_IRQS (); - - AcpiHwDisableNonWakeupGpes(); - - /* flush caches */ - - ACPI_FLUSH_CPU_CACHE (); - - /* write the value to command port and wait until we enter sleep state */ - do - { - AcpiOsStall(1000000); - AcpiOsWritePort (AcpiGbl_FADT->SmiCmd, AcpiGbl_FADT->S4BiosReq, 8); - AcpiGetRegister (ACPI_BITREG_WAKE_STATUS, &Value, ACPI_MTX_LOCK); - } - while (!Value); - - AcpiHwEnableNonWakeupGpes(); - - ACPI_ENABLE_IRQS (); - - return_ACPI_STATUS (AE_OK); -} - diff --git a/sys/dev/acpica/acpica_support.h b/sys/dev/acpica/acpica_support.h deleted file mode 100644 index 359d0d0..0000000 --- a/sys/dev/acpica/acpica_support.h +++ /dev/null @@ -1,38 +0,0 @@ -/*- - * Copyright (c) 2001 Mitsuru IWASAKI - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - */ - -#include "acpi.h" - -ACPI_STATUS -AcpiEnterSleepStateS4Bios ( - void); - -ACPI_STATUS -AcpiSetDsdtTablePtr( - ACPI_TABLE_HEADER *Ptr); - diff --git a/sys/i386/acpica/acpi_wakeup.c b/sys/i386/acpica/acpi_wakeup.c index e2a029f..106df55 100644 --- a/sys/i386/acpica/acpi_wakeup.c +++ b/sys/i386/acpica/acpi_wakeup.c @@ -52,7 +52,6 @@ __FBSDID("$FreeBSD$"); #include <i386/isa/intr_machdep.h> #include "acpi.h" -#include <dev/acpica/acpica_support.h> #include <dev/acpica/acpivar.h> #include "acpi_wakecode.h" @@ -254,12 +253,14 @@ acpi_sleep_machdep(struct acpi_softc *sc, int state) if (acpi_get_verbose(sc)) acpi_printcpu(); + /* Call ACPICA to enter the desired sleep state */ + ACPI_DISABLE_IRQS(); ACPI_FLUSH_CPU_CACHE(); - if (state == ACPI_STATE_S4 && sc->acpi_s4bios) - status = AcpiEnterSleepStateS4Bios(); + status = AcpiEnterSleepStateS4bios(); else status = AcpiEnterSleepState(state); + ACPI_ENABLE_IRQS(); if (status != AE_OK) { device_printf(sc->acpi_dev, diff --git a/sys/modules/acpi/Makefile b/sys/modules/acpi/Makefile index 50af641..80d0f43 100644 --- a/sys/modules/acpi/Makefile +++ b/sys/modules/acpi/Makefile @@ -37,9 +37,8 @@ SRCS+= utxface.c SRCS+= acpi.c acpi_acad.c acpi_battery.c acpi_button.c acpi_cmbat.c acpi_cpu.c SRCS+= acpi_ec.c acpi_isab.c acpi_lid.c acpi_pci.c acpi_pcib.c acpi_pcib_acpi.c SRCS+= acpi_pcib_pci.c acpi_powerres.c acpi_resource.c acpi_thermal.c -SRCS+= acpi_timer.c acpica_support.c -SRCS+= acpi_pci_link.c -SRCS+= OsdDebug.c +SRCS+= acpi_timer.c acpi_pci_link.c +SRCS+= OsdDebug.c SRCS+= OsdHardware.c OsdInterrupt.c OsdMemory.c OsdSchedule.c SRCS+= OsdStream.c OsdSynch.c OsdTable.c OsdEnvironment.c SRCS+= opt_acpi.h opt_bus.h opt_ddb.h |