https://git.reactos.org/?p=reactos.git;a=commitdiff;h=696cdc635b770b26c99ed39f6527129eea03d2f2
commit 696cdc635b770b26c99ed39f6527129eea03d2f2 Author: Thomas Faber <thomas.fa...@reactos.org> AuthorDate: Fri Feb 14 22:09:08 2020 +0100 Commit: Thomas Faber <thomas.fa...@reactos.org> CommitDate: Sat Feb 15 20:45:53 2020 +0100 [ACPICA] Update to version 20200214. CORE-16696 --- drivers/bus/acpi/acpica/events/evevent.c | 2 +- drivers/bus/acpi/acpica/events/evxfgpe.c | 38 +++++++++++++ drivers/bus/acpi/acpica/hardware/hwgpe.c | 79 ++++++++++++++++++++++++++++ drivers/bus/acpi/acpica/hardware/hwsleep.c | 10 ++++ drivers/bus/acpi/acpica/include/acconvert.h | 3 +- drivers/bus/acpi/acpica/include/achware.h | 4 ++ drivers/bus/acpi/acpica/include/acmacros.h | 4 +- drivers/bus/acpi/acpica/include/acpixf.h | 6 ++- drivers/bus/acpi/acpica/include/actbl1.h | 2 +- drivers/bus/acpi/acpica/include/actypes.h | 7 +-- drivers/bus/acpi/acpica/namespace/nsnames.c | 6 +-- drivers/bus/acpi/acpica/namespace/nsxfname.c | 2 +- drivers/bus/acpi/acpica/tables/tbxface.c | 12 ++--- drivers/bus/acpi/acpica/utilities/utobject.c | 2 +- 14 files changed, 156 insertions(+), 21 deletions(-) diff --git a/drivers/bus/acpi/acpica/events/evevent.c b/drivers/bus/acpi/acpica/events/evevent.c index ac4af80e0d3..f41eb36561f 100644 --- a/drivers/bus/acpi/acpica/events/evevent.c +++ b/drivers/bus/acpi/acpica/events/evevent.c @@ -191,7 +191,7 @@ AcpiEvFixedEventInitialize ( /* * Initialize the structure that keeps track of fixed event handlers and - * enable the fixed events. + * disable all of the fixed events. */ for (i = 0; i < ACPI_NUM_FIXED_EVENTS; i++) { diff --git a/drivers/bus/acpi/acpica/events/evxfgpe.c b/drivers/bus/acpi/acpica/events/evxfgpe.c index a3c28a281eb..d4190f56126 100644 --- a/drivers/bus/acpi/acpica/events/evxfgpe.c +++ b/drivers/bus/acpi/acpica/events/evxfgpe.c @@ -957,6 +957,44 @@ AcpiEnableAllWakeupGpes ( ACPI_EXPORT_SYMBOL (AcpiEnableAllWakeupGpes) +/****************************************************************************** + * + * FUNCTION: AcpiAnyGpeStatusSet + * + * PARAMETERS: None + * + * RETURN: Whether or not the status bit is set for any GPE + * + * DESCRIPTION: Check the status bits of all enabled GPEs and return TRUE if any + * of them is set or FALSE otherwise. + * + ******************************************************************************/ + +UINT32 +AcpiAnyGpeStatusSet ( + void) +{ + ACPI_STATUS Status; + UINT8 Ret; + + + ACPI_FUNCTION_TRACE (AcpiAnyGpeStatusSet); + + Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS); + if (ACPI_FAILURE (Status)) + { + return (FALSE); + } + + Ret = AcpiHwCheckAllGpes (); + (void) AcpiUtReleaseMutex (ACPI_MTX_EVENTS); + + return (Ret); +} + +ACPI_EXPORT_SYMBOL(AcpiAnyGpeStatusSet) + + /******************************************************************************* * * FUNCTION: AcpiInstallGpeBlock diff --git a/drivers/bus/acpi/acpica/hardware/hwgpe.c b/drivers/bus/acpi/acpica/hardware/hwgpe.c index 81576b986ac..69061928726 100644 --- a/drivers/bus/acpi/acpica/hardware/hwgpe.c +++ b/drivers/bus/acpi/acpica/hardware/hwgpe.c @@ -527,6 +527,58 @@ AcpiHwEnableWakeupGpeBlock ( } +/****************************************************************************** + * + * FUNCTION: AcpiHwGetGpeBlockStatus + * + * PARAMETERS: GpeXruptInfo - GPE Interrupt info + * GpeBlock - Gpe Block info + * + * RETURN: Success + * + * DESCRIPTION: Produce a combined GPE status bits mask for the given block. + * + ******************************************************************************/ + +static ACPI_STATUS +AcpiHwGetGpeBlockStatus( + ACPI_GPE_XRUPT_INFO *GpeXruptInfo, + ACPI_GPE_BLOCK_INFO *GpeBlock, + void *RetPtr) +{ + ACPI_GPE_REGISTER_INFO *GpeRegisterInfo; + UINT64 InEnable; + UINT64 InStatus; + ACPI_STATUS Status; + UINT8 *Ret = RetPtr; + UINT32 i; + + + /* Examine each GPE Register within the block */ + + for (i = 0; i < GpeBlock->RegisterCount; i++) + { + GpeRegisterInfo = &GpeBlock->RegisterInfo[i]; + + Status = AcpiHwRead (&InEnable, &GpeRegisterInfo->EnableAddress); + if (ACPI_FAILURE (Status)) + { + continue; + } + + Status = AcpiHwRead (&InStatus, &GpeRegisterInfo->StatusAddress); + if (ACPI_FAILURE (Status)) + { + continue; + } + + *Ret |= InEnable & InStatus; + } + + return (AE_OK); +} + + /****************************************************************************** * * FUNCTION: AcpiHwDisableAllGpes @@ -607,4 +659,31 @@ AcpiHwEnableAllWakeupGpes ( return_ACPI_STATUS (Status); } + +/****************************************************************************** + * + * FUNCTION: AcpiHwCheckAllGpes + * + * PARAMETERS: None + * + * RETURN: Combined status of all GPEs + * + * DESCRIPTION: Check all enabled GPEs in all GPE blocks and return TRUE if the + * status bit is set for at least one of them of FALSE otherwise. + * + ******************************************************************************/ + +UINT8 +AcpiHwCheckAllGpes ( + void) +{ + UINT8 Ret = 0; + + + ACPI_FUNCTION_TRACE (AcpiHwCheckAllGpes); + + (void) AcpiEvWalkGpeList (AcpiHwGetGpeBlockStatus, &Ret); + return (Ret != 0); +} + #endif /* !ACPI_REDUCED_HARDWARE */ diff --git a/drivers/bus/acpi/acpica/hardware/hwsleep.c b/drivers/bus/acpi/acpica/hardware/hwsleep.c index 60e5aa61c30..3d65e4394ff 100644 --- a/drivers/bus/acpi/acpica/hardware/hwsleep.c +++ b/drivers/bus/acpi/acpica/hardware/hwsleep.c @@ -356,6 +356,16 @@ AcpiHwLegacyWake ( AcpiGbl_FixedEventInfo[ACPI_EVENT_POWER_BUTTON].StatusRegisterId, ACPI_CLEAR_STATUS); + /* Enable sleep button */ + + (void) AcpiWriteBitRegister ( + AcpiGbl_FixedEventInfo[ACPI_EVENT_SLEEP_BUTTON].EnableRegisterId, + ACPI_ENABLE_EVENT); + + (void) AcpiWriteBitRegister ( + AcpiGbl_FixedEventInfo[ACPI_EVENT_SLEEP_BUTTON].StatusRegisterId, + ACPI_CLEAR_STATUS); + AcpiHwExecuteSleepMethod (METHOD_PATHNAME__SST, ACPI_SST_WORKING); return_ACPI_STATUS (Status); } diff --git a/drivers/bus/acpi/acpica/include/acconvert.h b/drivers/bus/acpi/acpica/include/acconvert.h index 56efab3128f..071ff4a4c58 100644 --- a/drivers/bus/acpi/acpica/include/acconvert.h +++ b/drivers/bus/acpi/acpica/include/acconvert.h @@ -129,8 +129,7 @@ CgWriteAmlComment ( void CvInitFileTree ( ACPI_TABLE_HEADER *Table, - UINT8 *AmlStart, - UINT32 AmlLength); + FILE *RootFile); void CvClearOpComments ( diff --git a/drivers/bus/acpi/acpica/include/achware.h b/drivers/bus/acpi/acpica/include/achware.h index 0346525cd25..824bc4337d6 100644 --- a/drivers/bus/acpi/acpica/include/achware.h +++ b/drivers/bus/acpi/acpica/include/achware.h @@ -207,6 +207,10 @@ ACPI_STATUS AcpiHwEnableAllWakeupGpes ( void); +UINT8 +AcpiHwCheckAllGpes ( + void); + ACPI_STATUS AcpiHwEnableRuntimeGpeBlock ( ACPI_GPE_XRUPT_INFO *GpeXruptInfo, diff --git a/drivers/bus/acpi/acpica/include/acmacros.h b/drivers/bus/acpi/acpica/include/acmacros.h index 67a89b295b0..1806328a75c 100644 --- a/drivers/bus/acpi/acpica/include/acmacros.h +++ b/drivers/bus/acpi/acpica/include/acmacros.h @@ -517,7 +517,7 @@ #define ASL_CV_PRINT_ONE_COMMENT(a,b,c,d) CvPrintOneCommentType (a,b,c,d); #define ASL_CV_PRINT_ONE_COMMENT_LIST(a,b) CvPrintOneCommentList (a,b); #define ASL_CV_FILE_HAS_SWITCHED(a) CvFileHasSwitched(a) -#define ASL_CV_INIT_FILETREE(a,b,c) CvInitFileTree(a,b,c); +#define ASL_CV_INIT_FILETREE(a,b) CvInitFileTree(a,b); #else @@ -532,7 +532,7 @@ #define ASL_CV_PRINT_ONE_COMMENT(a,b,c,d) #define ASL_CV_PRINT_ONE_COMMENT_LIST(a,b) #define ASL_CV_FILE_HAS_SWITCHED(a) 0 -#define ASL_CV_INIT_FILETREE(a,b,c) +#define ASL_CV_INIT_FILETREE(a,b) #endif diff --git a/drivers/bus/acpi/acpica/include/acpixf.h b/drivers/bus/acpi/acpica/include/acpixf.h index 4b86b08eaf5..0669a5712cf 100644 --- a/drivers/bus/acpi/acpica/include/acpixf.h +++ b/drivers/bus/acpi/acpica/include/acpixf.h @@ -46,7 +46,7 @@ /* Current ACPICA subsystem version in YYYYMMDD format */ -#define ACPI_CA_VERSION 0x20200110 +#define ACPI_CA_VERSION 0x20200214 #include "acconfig.h" #include "actypes.h" @@ -1001,6 +1001,10 @@ ACPI_STATUS AcpiEnableAllWakeupGpes ( void)) +ACPI_HW_DEPENDENT_RETURN_UINT32 ( + UINT32 AcpiAnyGpeStatusSet ( + void)) + ACPI_HW_DEPENDENT_RETURN_STATUS ( ACPI_STATUS AcpiGetGpeDevice ( diff --git a/drivers/bus/acpi/acpica/include/actbl1.h b/drivers/bus/acpi/acpica/include/actbl1.h index 547a213cb2b..4c17bdbfd7f 100644 --- a/drivers/bus/acpi/acpica/include/actbl1.h +++ b/drivers/bus/acpi/acpica/include/actbl1.h @@ -1041,7 +1041,7 @@ enum AcpiErstInstructions enum AcpiErstCommandStatus { - ACPI_ERST_SUCESS = 0, + ACPI_ERST_SUCCESS = 0, ACPI_ERST_NO_SPACE = 1, ACPI_ERST_NOT_AVAILABLE = 2, ACPI_ERST_FAILURE = 3, diff --git a/drivers/bus/acpi/acpica/include/actypes.h b/drivers/bus/acpi/acpica/include/actypes.h index 0f8ad4cd5e6..ad5c21d73d6 100644 --- a/drivers/bus/acpi/acpica/include/actypes.h +++ b/drivers/bus/acpi/acpica/include/actypes.h @@ -575,11 +575,12 @@ typedef UINT64 ACPI_INTEGER; strnlen (a, ACPI_NAMESEG_SIZE) == ACPI_NAMESEG_SIZE) /* - * Algorithm to obtain access bit width. - * Can be used with AccessWidth of ACPI_GENERIC_ADDRESS and AccessSize of + * Algorithm to obtain access bit or byte width. + * Can be used with AccessSize field of ACPI_GENERIC_ADDRESS and * ACPI_RESOURCE_GENERIC_REGISTER. */ -#define ACPI_ACCESS_BIT_WIDTH(size) (1 << ((size) + 2)) +#define ACPI_ACCESS_BIT_WIDTH(AccessSize) (1 << ((AccessSize) + 2)) +#define ACPI_ACCESS_BYTE_WIDTH(AccessSize) (1 << ((AccessSize) - 1)) /******************************************************************************* diff --git a/drivers/bus/acpi/acpica/namespace/nsnames.c b/drivers/bus/acpi/acpica/namespace/nsnames.c index 04dac8e660c..87f4bea030f 100644 --- a/drivers/bus/acpi/acpica/namespace/nsnames.c +++ b/drivers/bus/acpi/acpica/namespace/nsnames.c @@ -228,7 +228,7 @@ AcpiNsHandleToPathname ( /* Build the path in the caller buffer */ (void) AcpiNsBuildNormalizedPath (Node, Buffer->Pointer, - RequiredSize, NoTrailing); + (UINT32) RequiredSize, NoTrailing); ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%s [%X]\n", (char *) Buffer->Pointer, (UINT32) RequiredSize)); @@ -401,7 +401,7 @@ AcpiNsGetNormalizedPathname ( /* Build the path in the allocated buffer */ - (void) AcpiNsBuildNormalizedPath (Node, NameBuffer, Size, NoTrailing); + (void) AcpiNsBuildNormalizedPath (Node, NameBuffer, (UINT32) Size, NoTrailing); ACPI_DEBUG_PRINT_RAW ((ACPI_DB_NAMES, "%s: Path \"%s\"\n", ACPI_GET_FUNCTION_NAME, NameBuffer)); @@ -434,7 +434,7 @@ AcpiNsBuildPrefixedPathname ( char *FullPath = NULL; char *ExternalPath = NULL; char *PrefixPath = NULL; - SIZE_T PrefixPathLength = 0; + ACPI_SIZE PrefixPathLength = 0; /* If there is a prefix, get the pathname to it */ diff --git a/drivers/bus/acpi/acpica/namespace/nsxfname.c b/drivers/bus/acpi/acpica/namespace/nsxfname.c index ee533c9c75d..17c0aad7afe 100644 --- a/drivers/bus/acpi/acpica/namespace/nsxfname.c +++ b/drivers/bus/acpi/acpica/namespace/nsxfname.c @@ -606,7 +606,7 @@ AcpiInstallMethod ( MethodFlags = *ParserState.Aml++; AmlStart = ParserState.Aml; - AmlLength = ACPI_PTR_DIFF (ParserState.PkgEnd, AmlStart); + AmlLength = (UINT32) ACPI_PTR_DIFF (ParserState.PkgEnd, AmlStart); /* * Allocate resources up-front. We don't want to have to delete a new diff --git a/drivers/bus/acpi/acpica/tables/tbxface.c b/drivers/bus/acpi/acpica/tables/tbxface.c index 1e2432e19d7..38908e4a7e7 100644 --- a/drivers/bus/acpi/acpica/tables/tbxface.c +++ b/drivers/bus/acpi/acpica/tables/tbxface.c @@ -260,14 +260,14 @@ ACPI_EXPORT_SYMBOL_INIT (AcpiReallocateRootTable) * * PARAMETERS: Signature - ACPI signature of needed table * Instance - Which instance (for SSDTs) - * OutTableHeader - The pointer to the table header to fill + * OutTableHeader - The pointer to the where the table header + * is returned * - * RETURN: Status and pointer to mapped table header + * RETURN: Status and a copy of the table header * - * DESCRIPTION: Finds an ACPI table header. - * - * NOTE: Caller is responsible in unmapping the header with - * AcpiOsUnmapMemory + * DESCRIPTION: Finds and returns an ACPI table header. Caller provides the + * memory where a copy of the header is to be returned + * (fixed length). * ******************************************************************************/ diff --git a/drivers/bus/acpi/acpica/utilities/utobject.c b/drivers/bus/acpi/acpica/utilities/utobject.c index 0067876bbc5..775361fafab 100644 --- a/drivers/bus/acpi/acpica/utilities/utobject.c +++ b/drivers/bus/acpi/acpica/utilities/utobject.c @@ -84,7 +84,7 @@ AcpiUtGetElementLength ( * * NOTE: We always allocate the worst-case object descriptor because * these objects are cached, and we want them to be - * one-size-satisifies-any-request. This in itself may not be + * one-size-satisfies-any-request. This in itself may not be * the most memory efficient, but the efficiency of the object * cache should more than make up for this! *