diff options
author | Mike Smith <msmith@FreeBSD.org> | 2002-02-23 05:10:40 +0000 |
---|---|---|
committer | Mike Smith <msmith@FreeBSD.org> | 2002-02-23 05:10:40 +0000 |
commit | 857591c3aa94b867ac5eeb751c13cdcc4c9f274f (patch) | |
tree | cb8c80a21a1f185481adc55c00d2affbdae36b0e /sys/contrib | |
parent | de87ee3adafa4328c3afe008b058052873f4e60d (diff) | |
download | src-test2-857591c3aa94b867ac5eeb751c13cdcc4c9f274f.tar.gz src-test2-857591c3aa94b867ac5eeb751c13cdcc4c9f274f.zip |
Notes
Diffstat (limited to 'sys/contrib')
138 files changed, 8290 insertions, 7720 deletions
diff --git a/sys/contrib/dev/acpica/acconfig.h b/sys/contrib/dev/acpica/acconfig.h index 98dda4e4d439..ad476ad6547c 100644 --- a/sys/contrib/dev/acpica/acconfig.h +++ b/sys/contrib/dev/acpica/acconfig.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acconfig.h - Global configuration constants - * $Revision: 78 $ + * $Revision: 90 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -125,9 +125,9 @@ *****************************************************************************/ /* - * ACPI_DEBUG - This switch enables all the debug facilities of the - * ACPI subsystem. This includes the DEBUG_PRINT output - * statements. When disabled, all DEBUG_PRINT + * ACPI_DEBUG - This switch enables all the debug facilities of the + * ACPI subsystem. This includes the DEBUG_PRINT output + * statements. When disabled, all DEBUG_PRINT * statements are compiled out. * * ACPI_APPLICATION - Use this switch if the subsystem is going to be run @@ -145,13 +145,12 @@ /* Version string */ -#define ACPI_CA_VERSION 0x20011120 +#define ACPI_CA_VERSION 0x20020214 /* Version of ACPI supported */ #define ACPI_CA_SUPPORT_LEVEL 2 - /* Maximum objects in the various object caches */ #define MAX_STATE_CACHE_DEPTH 64 /* State objects for stacks */ @@ -160,28 +159,30 @@ #define MAX_OBJECT_CACHE_DEPTH 64 /* Interpreter operand objects */ #define MAX_WALK_CACHE_DEPTH 4 /* Objects for parse tree walks */ - /* String size constants */ #define MAX_STRING_LENGTH 512 #define PATHNAME_MAX 256 /* A full namespace pathname */ - /* Maximum count for a semaphore object */ #define MAX_SEMAPHORE_COUNT 256 - /* Max reference count (for debug only) */ #define MAX_REFERENCE_COUNT 0x400 - /* Size of cached memory mapping for system memory operation region */ #define SYSMEM_REGION_WINDOW_SIZE 4096 +/****************************************************************************** + * + * Configuration of subsystem behavior + * + *****************************************************************************/ + /* * Debugger threading model * Use single threaded if the entire subsystem is contained in an application @@ -190,7 +191,6 @@ * By default the model is single threaded if ACPI_APPLICATION is set, * multi-threaded if ACPI_APPLICATION is not set. */ - #define DEBUGGER_SINGLE_THREADED 0 #define DEBUGGER_MULTI_THREADED 1 @@ -201,6 +201,12 @@ #define DEBUGGER_THREADING DEBUGGER_MULTI_THREADED #endif +/* + * Should the subystem abort the loading of an ACPI table if the + * table checksum is incorrect? + */ +#define ACPI_CHECKSUM_ABORT FALSE + /****************************************************************************** * @@ -208,10 +214,13 @@ * *****************************************************************************/ +/* Number of distinct GPE register blocks */ + +#define ACPI_MAX_GPE_BLOCKS 2 + /* * Method info (in WALK_STATE), containing local variables and argumetns */ - #define MTH_NUM_LOCALS 8 #define MTH_MAX_LOCAL 7 @@ -225,7 +234,6 @@ /* * Operand Stack (in WALK_STATE), Must be large enough to contain MTH_MAX_ARG */ - #define OBJ_NUM_OPERANDS 8 #define OBJ_MAX_OPERAND 7 @@ -235,7 +243,6 @@ #define PATH_SEGMENT_LENGTH 5 /* 4 chars for name + 1 char for separator */ #define PATH_SEPARATOR '.' - /* Constants used in searching for the RSDP in low memory */ #define LO_RSDP_WINDOW_BASE 0 /* Physical Address */ @@ -244,16 +251,33 @@ #define HI_RSDP_WINDOW_SIZE 0x20000 #define RSDP_SCAN_STEP 16 - /* Operation regions */ -#define ACPI_NUM_PREDEFINED_REGIONS 7 +#define ACPI_NUM_PREDEFINED_REGIONS 8 #define ACPI_USER_REGION_BEGIN 0x80 /* Maximum SpaceIds for Operation Regions */ #define ACPI_MAX_ADDRESS_SPACE 255 +/* RSDP checksums */ + +#define ACPI_RSDP_CHECKSUM_LENGTH 20 +#define ACPI_RSDP_XCHECKSUM_LENGTH 36 + + +/****************************************************************************** + * + * ACPI AML Debugger + * + *****************************************************************************/ + + +#define ACPI_DEBUGGER_MAX_ARGS 8 /* Must be max method args + 1 */ + +#define ACPI_DEBUGGER_COMMAND_PROMPT '-' +#define ACPI_DEBUGGER_EXECUTE_PROMPT '%' + #endif /* _ACCONFIG_H */ diff --git a/sys/contrib/dev/acpica/acdebug.h b/sys/contrib/dev/acpica/acdebug.h index f2b105dc350b..a1298699fb27 100644 --- a/sys/contrib/dev/acpica/acdebug.h +++ b/sys/contrib/dev/acpica/acdebug.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acdebug.h - ACPI/AML debugger - * $Revision: 50 $ + * $Revision: 56 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -118,61 +118,8 @@ #define __ACDEBUG_H__ -#define DB_MAX_ARGS 8 /* Must be max method args + 1 */ - -#define DB_COMMAND_PROMPT '-' -#define DB_EXECUTE_PROMPT '%' - - -extern int optind; -extern NATIVE_CHAR *optarg; -extern UINT8 *AmlStart; -extern UINT32 AmlLength; - -extern BOOLEAN AcpiGbl_DbOpt_tables; -extern BOOLEAN AcpiGbl_DbOpt_disasm; -extern BOOLEAN AcpiGbl_DbOpt_stats; -extern BOOLEAN AcpiGbl_DbOpt_parse_jit; -extern BOOLEAN AcpiGbl_DbOpt_verbose; -extern BOOLEAN AcpiGbl_DbOpt_ini_methods; - - -extern NATIVE_CHAR *AcpiGbl_DbArgs[DB_MAX_ARGS]; -extern NATIVE_CHAR AcpiGbl_DbLineBuf[80]; -extern NATIVE_CHAR AcpiGbl_DbScopeBuf[40]; -extern NATIVE_CHAR AcpiGbl_DbDebugFilename[40]; -extern BOOLEAN AcpiGbl_DbOutputToFile; -extern NATIVE_CHAR *AcpiGbl_DbBuffer; -extern NATIVE_CHAR *AcpiGbl_DbFilename; -extern NATIVE_CHAR *AcpiGbl_DbDisasmIndent; -extern UINT8 AcpiGbl_DbOutputFlags; -extern UINT32 AcpiGbl_DbDebugLevel; -extern UINT32 AcpiGbl_DbConsoleDebugLevel; -extern ACPI_TABLE_HEADER *AcpiGbl_DbTablePtr; - -/* - * Statistic globals - */ -extern UINT16 AcpiGbl_ObjTypeCount[INTERNAL_TYPE_NODE_MAX+1]; -extern UINT16 AcpiGbl_NodeTypeCount[INTERNAL_TYPE_NODE_MAX+1]; -extern UINT16 AcpiGbl_ObjTypeCountMisc; -extern UINT16 AcpiGbl_NodeTypeCountMisc; -extern UINT32 AcpiGbl_NumNodes; -extern UINT32 AcpiGbl_NumObjects; - - -extern UINT32 AcpiGbl_SizeOfParseTree; -extern UINT32 AcpiGbl_SizeOfMethodTrees; -extern UINT32 AcpiGbl_SizeOfNodeEntries; -extern UINT32 AcpiGbl_SizeOfAcpiObjects; - - #define ACPI_DEBUG_BUFFER_SIZE 4196 -#define DB_REDIRECTABLE_OUTPUT 0x01 -#define DB_CONSOLE_OUTPUT 0x02 -#define DB_DUPLICATE_OUTPUT 0x03 - typedef struct CommandInfo { @@ -397,7 +344,7 @@ AcpiDbCreateExecutionThreads ( * dbfileio - Debugger file I/O commands */ -ACPI_OBJECT_TYPE8 +ACPI_OBJECT_TYPE AcpiDbMatchArgument ( NATIVE_CHAR *UserArgument, ARGUMENT_INFO *Arguments); diff --git a/sys/contrib/dev/acpica/acdispat.h b/sys/contrib/dev/acpica/acdispat.h index d62f2377e88b..b866490664a0 100644 --- a/sys/contrib/dev/acpica/acdispat.h +++ b/sys/contrib/dev/acpica/acdispat.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acdispat.h - dispatcher (parser to interpreter interface) - * $Revision: 48 $ + * $Revision: 51 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -177,7 +177,7 @@ AcpiDsExecEndControlOp ( ACPI_STATUS AcpiDsGetPredicateValue ( ACPI_WALK_STATE *WalkState, - UINT32 HasResultObj); + ACPI_OPERAND_OBJECT *ResultObj); ACPI_STATUS AcpiDsExecBeginOp ( @@ -271,7 +271,7 @@ BOOLEAN AcpiDsIsMethodValue ( ACPI_OPERAND_OBJECT *ObjDesc); -ACPI_OBJECT_TYPE8 +ACPI_OBJECT_TYPE AcpiDsMethodDataGetType ( UINT16 Opcode, UINT32 Index, @@ -436,7 +436,7 @@ AcpiDsResolveOperands ( ACPI_STATUS AcpiDsScopeStackPush ( ACPI_NAMESPACE_NODE *Node, - ACPI_OBJECT_TYPE8 Type, + ACPI_OBJECT_TYPE Type, ACPI_WALK_STATE *WalkState); diff --git a/sys/contrib/dev/acpica/acefi.h b/sys/contrib/dev/acpica/acefi.h index f0611f660537..ea9402f7e8a4 100644 --- a/sys/contrib/dev/acpica/acefi.h +++ b/sys/contrib/dev/acpica/acefi.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acefi.h - OS specific defines, etc. - * $Revision: 6 $ + * $Revision: 7 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/acenv.h b/sys/contrib/dev/acpica/acenv.h index 2060d54085e6..57e79b937c8c 100644 --- a/sys/contrib/dev/acpica/acenv.h +++ b/sys/contrib/dev/acpica/acenv.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acenv.h - Generation environment specific items - * $Revision: 77 $ + * $Revision: 83 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -196,18 +196,27 @@ /*! [Begin] no source code translation */ -#ifdef _LINUX +#if defined(_LINUX) #include "aclinux.h" -#elif _AED_EFI +#elif defined(_AED_EFI) #include "acefi.h" -#elif WIN32 +#elif defined(WIN32) #include "acwin.h" -#elif __FreeBSD__ +#elif defined(WIN64) +#include "acwin64.h" + +#elif defined(__FreeBSD__) #include "acfreebsd.h" +#elif defined(MODESTO) +#include "acmodesto.h" + +#elif defined(NETWARE) +#include "acnetware.h" + #else /* All other environments */ @@ -226,7 +235,6 @@ #endif - /*! [End] no source code translation !*/ /****************************************************************************** @@ -257,21 +265,21 @@ * We will be linking to the standard Clib functions */ -#define STRSTR(s1,s2) strstr((s1), (s2)) -#define STRUPR(s) AcpiUtStrupr ((s)) -#define STRLEN(s) (UINT32) strlen((s)) -#define STRCPY(d,s) strcpy((d), (s)) -#define STRNCPY(d,s,n) strncpy((d), (s), (NATIVE_INT)(n)) -#define STRNCMP(d,s,n) strncmp((d), (s), (NATIVE_INT)(n)) -#define STRCMP(d,s) strcmp((d), (s)) -#define STRCAT(d,s) strcat((d), (s)) -#define STRNCAT(d,s,n) strncat((d), (s), (NATIVE_INT)(n)) -#define STRTOUL(d,s,n) strtoul((d), (s), (NATIVE_INT)(n)) -#define MEMCPY(d,s,n) memcpy((d), (s), (NATIVE_INT)(n)) -#define MEMSET(d,s,n) memset((d), (s), (NATIVE_INT)(n)) -#define TOUPPER toupper -#define TOLOWER tolower -#define IS_XDIGIT isxdigit +#define ACPI_STRSTR(s1,s2) strstr((s1), (s2)) +#define ACPI_STRUPR(s) AcpiUtStrupr ((s)) +#define ACPI_STRLEN(s) (UINT32) strlen((s)) +#define ACPI_STRCPY(d,s) strcpy((d), (s)) +#define ACPI_STRNCPY(d,s,n) strncpy((d), (s), (NATIVE_INT)(n)) +#define ACPI_STRNCMP(d,s,n) strncmp((d), (s), (NATIVE_INT)(n)) +#define ACPI_STRCMP(d,s) strcmp((d), (s)) +#define ACPI_STRCAT(d,s) strcat((d), (s)) +#define ACPI_STRNCAT(d,s,n) strncat((d), (s), (NATIVE_INT)(n)) +#define ACPI_STRTOUL(d,s,n) strtoul((d), (s), (NATIVE_INT)(n)) +#define ACPI_MEMCPY(d,s,n) (void) memcpy((d), (s), (NATIVE_INT)(n)) +#define ACPI_MEMSET(d,s,n) (void) memset((d), (s), (NATIVE_INT)(n)) +#define ACPI_TOUPPER toupper +#define ACPI_TOLOWER tolower +#define ACPI_IS_XDIGIT isxdigit /****************************************************************************** * @@ -298,35 +306,35 @@ typedef char *va_list; * Storage alignment properties */ -#define _AUPBND (sizeof (NATIVE_INT) - 1) -#define _ADNBND (sizeof (NATIVE_INT) - 1) +#define _AUPBND (sizeof (NATIVE_INT) - 1) +#define _ADNBND (sizeof (NATIVE_INT) - 1) /* * Variable argument list macro definitions */ -#define _Bnd(X, bnd) (((sizeof (X)) + (bnd)) & (~(bnd))) -#define va_arg(ap, T) (*(T *)(((ap) += (_Bnd (T, _AUPBND))) - (_Bnd (T,_ADNBND)))) -#define va_end(ap) (void) 0 -#define va_start(ap, A) (void) ((ap) = (((char *) &(A)) + (_Bnd (A,_AUPBND)))) +#define _Bnd(X, bnd) (((sizeof (X)) + (bnd)) & (~(bnd))) +#define va_arg(ap, T) (*(T *)(((ap) += (_Bnd (T, _AUPBND))) - (_Bnd (T,_ADNBND)))) +#define va_end(ap) (void) 0 +#define va_start(ap, A) (void) ((ap) = (((char *) &(A)) + (_Bnd (A,_AUPBND)))) #endif /* va_arg */ -#define STRSTR(s1,s2) AcpiUtStrstr ((s1), (s2)) -#define STRUPR(s) AcpiUtStrupr ((s)) -#define STRLEN(s) AcpiUtStrlen ((s)) -#define STRCPY(d,s) AcpiUtStrcpy ((d), (s)) -#define STRNCPY(d,s,n) AcpiUtStrncpy ((d), (s), (n)) -#define STRNCMP(d,s,n) AcpiUtStrncmp ((d), (s), (n)) -#define STRCMP(d,s) AcpiUtStrcmp ((d), (s)) -#define STRCAT(d,s) AcpiUtStrcat ((d), (s)) -#define STRNCAT(d,s,n) AcpiUtStrncat ((d), (s), (n)) -#define STRTOUL(d,s,n) AcpiUtStrtoul ((d), (s),(n)) -#define MEMCPY(d,s,n) AcpiUtMemcpy ((d), (s), (n)) -#define MEMSET(d,v,n) AcpiUtMemset ((d), (v), (n)) -#define TOUPPER AcpiUtToUpper -#define TOLOWER AcpiUtToLower +#define ACPI_STRSTR(s1,s2) AcpiUtStrstr ((s1), (s2)) +#define ACPI_STRUPR(s) AcpiUtStrupr ((s)) +#define ACPI_STRLEN(s) AcpiUtStrlen ((s)) +#define ACPI_STRCPY(d,s) AcpiUtStrcpy ((d), (s)) +#define ACPI_STRNCPY(d,s,n) AcpiUtStrncpy ((d), (s), (n)) +#define ACPI_STRNCMP(d,s,n) AcpiUtStrncmp ((d), (s), (n)) +#define ACPI_STRCMP(d,s) AcpiUtStrcmp ((d), (s)) +#define ACPI_STRCAT(d,s) AcpiUtStrcat ((d), (s)) +#define ACPI_STRNCAT(d,s,n) AcpiUtStrncat ((d), (s), (n)) +#define ACPI_STRTOUL(d,s,n) AcpiUtStrtoul ((d), (s),(n)) +#define ACPI_MEMCPY(d,s,n) (void) AcpiUtMemcpy ((d), (s), (n)) +#define ACPI_MEMSET(d,v,n) (void) AcpiUtMemset ((d), (v), (n)) +#define ACPI_TOUPPER AcpiUtToUpper +#define ACPI_TOLOWER AcpiUtToLower #endif /* ACPI_USE_SYSTEM_CLIBRARY */ @@ -352,8 +360,8 @@ typedef char *va_list; #define ACPI_ASM_MACROS #define causeinterrupt(level) #define BREAKPOINT3 -#define disable() -#define enable() +#define acpi_disable_irqs() +#define acpi_enable_irqs() #define halt() #define ACPI_ACQUIRE_GLOBAL_LOCK(GLptr, Acq) #define ACPI_RELEASE_GLOBAL_LOCK(GLptr, Acq) diff --git a/sys/contrib/dev/acpica/acevents.h b/sys/contrib/dev/acpica/acevents.h index c9045afb76d8..134642b7f3f7 100644 --- a/sys/contrib/dev/acpica/acevents.h +++ b/sys/contrib/dev/acpica/acevents.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acevents.h - Event subcomponent prototypes and defines - * $Revision: 67 $ + * $Revision: 74 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -122,9 +122,13 @@ ACPI_STATUS AcpiEvInitialize ( void); +ACPI_STATUS +AcpiEvHandlerInitialize ( + void); + /* - * AcpiEvfixed - Fixed event handling + * Evfixed - Fixed event handling */ ACPI_STATUS @@ -137,16 +141,16 @@ AcpiEvFixedEventDetect ( UINT32 AcpiEvFixedEventDispatch ( - UINT32 AcpiEvent); + UINT32 Event); /* - * AcpiEvglock - Global Lock support + * Evmisc */ ACPI_STATUS AcpiEvAcquireGlobalLock( - void); + UINT32 Timeout); void AcpiEvReleaseGlobalLock( @@ -156,9 +160,26 @@ ACPI_STATUS AcpiEvInitGlobalLockHandler ( void); +UINT32 +AcpiEvGetGpeRegisterIndex ( + UINT32 GpeNumber); + +UINT32 +AcpiEvGetGpeNumberIndex ( + UINT32 GpeNumber); + +ACPI_STATUS +AcpiEvQueueNotifyRequest ( + ACPI_NAMESPACE_NODE *Node, + UINT32 NotifyValue); + +void +AcpiEvNotifyDispatch ( + void *Context); + /* - * AcpiEvgpe - GPE handling and dispatch + * Evgpe - GPE handling and dispatch */ ACPI_STATUS @@ -177,22 +198,8 @@ UINT32 AcpiEvGpeDetect ( void); - /* - * AcpiEvnotify - Device Notify handling and dispatch - */ - -ACPI_STATUS -AcpiEvQueueNotifyRequest ( - ACPI_NAMESPACE_NODE *Node, - UINT32 NotifyValue); - -void -AcpiEvNotifyDispatch ( - void *Context); - -/* - * AcpiEvregion - Address Space handling + * Evregion - Address Space handling */ ACPI_STATUS @@ -227,7 +234,7 @@ AcpiEvAssociateRegionAndHandler ( /* - * AcpiEvregini - Region initialization and setup + * Evregini - Region initialization and setup */ ACPI_STATUS @@ -295,10 +302,6 @@ AcpiEvInitializeSCI ( UINT32 ProgramSCI); void -AcpiEvRestoreAcpiState ( - void); - -void AcpiEvTerminate ( void); diff --git a/sys/contrib/dev/acpica/acexcep.h b/sys/contrib/dev/acpica/acexcep.h index 278dc51975dc..3065adc3e62a 100644 --- a/sys/contrib/dev/acpica/acexcep.h +++ b/sys/contrib/dev/acpica/acexcep.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acexcep.h - Exception codes returned by the ACPI subsystem - * $Revision: 53 $ + * $Revision: 57 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -176,8 +176,9 @@ #define AE_BAD_PATHNAME (ACPI_STATUS) (0x0003 | AE_CODE_PROGRAMMER) #define AE_BAD_DATA (ACPI_STATUS) (0x0004 | AE_CODE_PROGRAMMER) #define AE_BAD_ADDRESS (ACPI_STATUS) (0x0005 | AE_CODE_PROGRAMMER) +#define AE_ALIGNMENT (ACPI_STATUS) (0x0006 | AE_CODE_PROGRAMMER) -#define AE_CODE_PGM_MAX 0x0005 +#define AE_CODE_PGM_MAX 0x0006 /* @@ -187,8 +188,9 @@ #define AE_BAD_HEADER (ACPI_STATUS) (0x0002 | AE_CODE_ACPI_TABLES) #define AE_BAD_CHECKSUM (ACPI_STATUS) (0x0003 | AE_CODE_ACPI_TABLES) #define AE_BAD_VALUE (ACPI_STATUS) (0x0004 | AE_CODE_ACPI_TABLES) +#define AE_TABLE_NOT_SUPPORTED (ACPI_STATUS) (0x0005 | AE_CODE_ACPI_TABLES) -#define AE_CODE_TBL_MAX 0x0003 +#define AE_CODE_TBL_MAX 0x0005 /* @@ -222,8 +224,9 @@ #define AE_AML_INVALID_RESOURCE_TYPE (ACPI_STATUS) (0x0019 | AE_CODE_AML) #define AE_AML_INVALID_INDEX (ACPI_STATUS) (0x001A | AE_CODE_AML) #define AE_AML_REGISTER_LIMIT (ACPI_STATUS) (0x001B | AE_CODE_AML) +#define AE_AML_NO_WHILE (ACPI_STATUS) (0x001C | AE_CODE_AML) -#define AE_CODE_AML_MAX 0x001B +#define AE_CODE_AML_MAX 0x001C /* * Internal exceptions used for control @@ -236,8 +239,10 @@ #define AE_CTRL_DEPTH (ACPI_STATUS) (0x0006 | AE_CODE_CONTROL) #define AE_CTRL_END (ACPI_STATUS) (0x0007 | AE_CODE_CONTROL) #define AE_CTRL_TRANSFER (ACPI_STATUS) (0x0008 | AE_CODE_CONTROL) +#define AE_CTRL_BREAK (ACPI_STATUS) (0x0009 | AE_CODE_CONTROL) +#define AE_CTRL_CONTINUE (ACPI_STATUS) (0x000A | AE_CODE_CONTROL) -#define AE_CODE_CTRL_MAX 0x0008 +#define AE_CODE_CTRL_MAX 0x000A #ifdef DEFINE_ACPI_GLOBALS @@ -274,7 +279,7 @@ NATIVE_CHAR const *AcpiGbl_ExceptionNames_Env[] = "AE_NOT_ACQUIRED", "AE_ALREADY_ACQUIRED", "AE_NO_HARDWARE_RESPONSE", - "AE_NO_GLOBAL_LOCK", + "AE_NO_GLOBAL_LOCK" }; NATIVE_CHAR const *AcpiGbl_ExceptionNames_Pgm[] = @@ -284,6 +289,7 @@ NATIVE_CHAR const *AcpiGbl_ExceptionNames_Pgm[] = "AE_BAD_PATHNAME", "AE_BAD_DATA", "AE_BAD_ADDRESS", + "AE_ALIGNMENT" }; NATIVE_CHAR const *AcpiGbl_ExceptionNames_Tbl[] = @@ -292,6 +298,7 @@ NATIVE_CHAR const *AcpiGbl_ExceptionNames_Tbl[] = "AE_BAD_HEADER", "AE_BAD_CHECKSUM", "AE_BAD_VALUE", + "AE_TABLE_NOT_SUPPORTED" }; NATIVE_CHAR const *AcpiGbl_ExceptionNames_Aml[] = @@ -323,6 +330,7 @@ NATIVE_CHAR const *AcpiGbl_ExceptionNames_Aml[] = "AE_AML_INVALID_RESOURCE_TYPE", "AE_AML_INVALID_INDEX", "AE_AML_REGISTER_LIMIT", + "AE_AML_NO_WHILE" }; NATIVE_CHAR const *AcpiGbl_ExceptionNames_Ctrl[] = @@ -335,6 +343,8 @@ NATIVE_CHAR const *AcpiGbl_ExceptionNames_Ctrl[] = "AE_CTRL_DEPTH", "AE_CTRL_END", "AE_CTRL_TRANSFER", + "AE_CTRL_BREAK", + "AE_CTRL_CONTINUE" }; #endif /* ACPI GLOBALS */ diff --git a/sys/contrib/dev/acpica/acfreebsd.h b/sys/contrib/dev/acpica/acfreebsd.h index 894af50a0a6e..c2e8a93d2fd1 100644 --- a/sys/contrib/dev/acpica/acfreebsd.h +++ b/sys/contrib/dev/acpica/acfreebsd.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acfreebsd.h - OS specific defines, etc. - * $Revision: 6 $ + * $Revision: 7 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/acgcc.h b/sys/contrib/dev/acpica/acgcc.h index 5581e481c8b0..539131b5a00b 100644 --- a/sys/contrib/dev/acpica/acgcc.h +++ b/sys/contrib/dev/acpica/acgcc.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acgcc.h - GCC specific defines, etc. - * $Revision: 15 $ + * $Revision: 17 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -128,8 +128,8 @@ #define ACPI_ASM_MACROS #define causeinterrupt(level) #define BREAKPOINT3 -#define disable() __cli() -#define enable() __sti() +#define acpi_disable_irqs() __cli() +#define acpi_enable_irqs() __sti() /*! [Begin] no source code translation */ @@ -189,8 +189,8 @@ #define ACPI_ASM_MACROS #define causeinterrupt(level) #define BREAKPOINT3 -#define disable() __cli() -#define enable() __sti() +#define acpi_disable_irqs() __cli() +#define acpi_enable_irqs() __sti() #define halt() __asm__ __volatile__ ("sti; hlt":::"memory") /*! [Begin] no source code translation diff --git a/sys/contrib/dev/acpica/acglobal.h b/sys/contrib/dev/acpica/acglobal.h index 62d938bf496c..7edec62a08f5 100644 --- a/sys/contrib/dev/acpica/acglobal.h +++ b/sys/contrib/dev/acpica/acglobal.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acglobal.h - Declarations for global variables - * $Revision: 109 $ + * $Revision: 120 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -162,11 +162,12 @@ extern UINT32 AcpiGbl_NestingLevel; * of each in the system. Each global points to the actual table. * */ -ACPI_EXTERN RSDP_DESCRIPTOR *AcpiGbl_RSDP; -ACPI_EXTERN XSDT_DESCRIPTOR *AcpiGbl_XSDT; -ACPI_EXTERN FADT_DESCRIPTOR *AcpiGbl_FADT; -ACPI_EXTERN ACPI_TABLE_HEADER *AcpiGbl_DSDT; -ACPI_EXTERN ACPI_COMMON_FACS *AcpiGbl_FACS; +ACPI_EXTERN RSDP_DESCRIPTOR *AcpiGbl_RSDP; +ACPI_EXTERN XSDT_DESCRIPTOR *AcpiGbl_XSDT; +ACPI_EXTERN FADT_DESCRIPTOR *AcpiGbl_FADT; +ACPI_EXTERN ACPI_TABLE_HEADER *AcpiGbl_DSDT; +ACPI_EXTERN FACS_DESCRIPTOR *AcpiGbl_FACS; +ACPI_EXTERN ACPI_COMMON_FACS AcpiGbl_CommonFACS; /* * Since there may be multiple SSDTs and PSDTS, a single pointer is not @@ -198,22 +199,18 @@ ACPI_EXTERN ACPI_MUTEX_INFO AcpiGbl_AcpiMutexInfo [NUM_MTX]; ACPI_EXTERN ACPI_MEMORY_LIST AcpiGbl_MemoryLists[ACPI_NUM_MEM_LISTS]; ACPI_EXTERN ACPI_OBJECT_NOTIFY_HANDLER AcpiGbl_DrvNotify; ACPI_EXTERN ACPI_OBJECT_NOTIFY_HANDLER AcpiGbl_SysNotify; -ACPI_EXTERN UINT8 *AcpiGbl_Gpe0EnableRegisterSave; -ACPI_EXTERN UINT8 *AcpiGbl_Gpe1EnableRegisterSave; ACPI_EXTERN ACPI_WALK_STATE *AcpiGbl_BreakpointWalk; ACPI_EXTERN ACPI_HANDLE AcpiGbl_GlobalLockSemaphore; ACPI_EXTERN UINT32 AcpiGbl_GlobalLockThreadCount; -ACPI_EXTERN UINT32 AcpiGbl_RestoreAcpiChipset; ACPI_EXTERN UINT32 AcpiGbl_OriginalMode; -ACPI_EXTERN UINT32 AcpiGbl_EdgeLevelSave; -ACPI_EXTERN UINT32 AcpiGbl_IrqEnableSave; ACPI_EXTERN UINT32 AcpiGbl_RsdpOriginalLocation; ACPI_EXTERN UINT32 AcpiGbl_NsLookupCount; ACPI_EXTERN UINT32 AcpiGbl_PsFindCount; ACPI_EXTERN UINT16 AcpiGbl_Pm1EnableRegisterSave; ACPI_EXTERN UINT16 AcpiGbl_NextTableOwnerId; ACPI_EXTERN UINT16 AcpiGbl_NextMethodOwnerId; +ACPI_EXTERN UINT16 AcpiGbl_GlobalLockHandle; ACPI_EXTERN UINT8 AcpiGbl_DebuggerConfiguration; ACPI_EXTERN BOOLEAN AcpiGbl_GlobalLockAcquired; ACPI_EXTERN BOOLEAN AcpiGbl_StepToNextCall; @@ -240,14 +237,14 @@ ACPI_EXTERN ACPI_NAMESPACE_NODE AcpiGbl_RootNodeStruct; ACPI_EXTERN ACPI_NAMESPACE_NODE *AcpiGbl_RootNode; extern const UINT8 AcpiGbl_NsProperties[NUM_NS_TYPES]; -extern const PREDEFINED_NAMES AcpiGbl_PreDefinedNames [NUM_PREDEFINED_NAMES]; +extern const ACPI_PREDEFINED_NAMES AcpiGbl_PreDefinedNames [NUM_PREDEFINED_NAMES]; #ifdef ACPI_DEBUG ACPI_EXTERN UINT32 AcpiGbl_CurrentNodeCount; ACPI_EXTERN UINT32 AcpiGbl_CurrentNodeSize; ACPI_EXTERN UINT32 AcpiGbl_MaxConcurrentNodeCount; -ACPI_EXTERN UINT32 AcpiGbl_EntryStackPointer; -ACPI_EXTERN UINT32 AcpiGbl_LowestStackPointer; +ACPI_EXTERN ACPI_SIZE AcpiGbl_EntryStackPointer; +ACPI_EXTERN ACPI_SIZE AcpiGbl_LowestStackPointer; ACPI_EXTERN UINT32 AcpiGbl_DeepestNesting; #endif @@ -273,34 +270,41 @@ ACPI_EXTERN UINT8 AcpiGbl_CmSingleStep; ACPI_EXTERN ACPI_PARSE_OBJECT *AcpiGbl_ParsedNamespaceRoot; +/***************************************************************************** + * + * Hardware globals + * + ****************************************************************************/ + +ACPI_EXTERN ACPI_BIT_REGISTER_INFO AcpiGbl_BitRegisterInfo[ACPI_NUM_BITREG]; +ACPI_EXTERN UINT8 AcpiGbl_SleepTypeA; +ACPI_EXTERN UINT8 AcpiGbl_SleepTypeB; + /***************************************************************************** * - * Event globals + * Event and GPE globals * ****************************************************************************/ -ACPI_EXTERN ACPI_FIXED_EVENT_INFO AcpiGbl_FixedEventHandlers[ACPI_NUM_FIXED_EVENTS]; +extern ACPI_FIXED_EVENT_INFO AcpiGbl_FixedEventInfo[ACPI_NUM_FIXED_EVENTS]; +ACPI_EXTERN ACPI_FIXED_EVENT_HANDLER AcpiGbl_FixedEventHandlers[ACPI_NUM_FIXED_EVENTS]; + ACPI_EXTERN ACPI_HANDLE AcpiGbl_GpeObjHandle; ACPI_EXTERN UINT32 AcpiGbl_GpeRegisterCount; -ACPI_EXTERN ACPI_GPE_REGISTERS *AcpiGbl_GpeRegisters; -ACPI_EXTERN ACPI_GPE_LEVEL_INFO *AcpiGbl_GpeInfo; +ACPI_EXTERN UINT32 AcpiGbl_GpeNumberMax; +ACPI_EXTERN ACPI_GPE_REGISTER_INFO *AcpiGbl_GpeRegisterInfo; +ACPI_EXTERN ACPI_GPE_NUMBER_INFO *AcpiGbl_GpeNumberInfo; +ACPI_EXTERN ACPI_GPE_BLOCK_INFO AcpiGbl_GpeBlockInfo[ACPI_MAX_GPE_BLOCKS]; /* - * Gpe validation and translation table - * Indexed by the GPE number, returns GPE_INVALID if the GPE is not supported. - * Otherwise, returns a valid index into the global GPE table. + * GPE translation table + * Indexed by the GPE number, returns a valid index into the global GPE tables. * * This table is needed because the GPE numbers supported by block 1 do not * have to be contiguous with the GPE numbers supported by block 0. */ -ACPI_EXTERN UINT8 AcpiGbl_GpeValid [ACPI_NUM_GPE]; - -/* AcpiEvent counter for debug only */ - -#ifdef ACPI_DEBUG -ACPI_EXTERN UINT32 AcpiGbl_EventCount[ACPI_NUM_FIXED_EVENTS]; -#endif +ACPI_EXTERN ACPI_GPE_INDEX_INFO *AcpiGbl_GpeNumberToIndex; /***************************************************************************** @@ -309,10 +313,58 @@ ACPI_EXTERN UINT32 AcpiGbl_EventCount[ACPI_NUM_FIXED_EVENTS * ****************************************************************************/ + +ACPI_EXTERN UINT8 AcpiGbl_DbOutputFlags; + + #ifdef ENABLE_DEBUGGER + ACPI_EXTERN BOOLEAN AcpiGbl_MethodExecuting; ACPI_EXTERN BOOLEAN AcpiGbl_DbTerminateThreads; -#endif + +ACPI_EXTERN int optind; +ACPI_EXTERN NATIVE_CHAR *optarg; +ACPI_EXTERN UINT8 *AmlStart; +ACPI_EXTERN UINT32 AmlLength; + +ACPI_EXTERN BOOLEAN AcpiGbl_DbOpt_tables; +ACPI_EXTERN BOOLEAN AcpiGbl_DbOpt_disasm; +ACPI_EXTERN BOOLEAN AcpiGbl_DbOpt_stats; +ACPI_EXTERN BOOLEAN AcpiGbl_DbOpt_verbose; +ACPI_EXTERN BOOLEAN AcpiGbl_DbOpt_ini_methods; + + +ACPI_EXTERN NATIVE_CHAR *AcpiGbl_DbArgs[ACPI_DEBUGGER_MAX_ARGS]; +ACPI_EXTERN NATIVE_CHAR AcpiGbl_DbLineBuf[80]; +ACPI_EXTERN NATIVE_CHAR AcpiGbl_DbParsedBuf[80]; +ACPI_EXTERN NATIVE_CHAR AcpiGbl_DbScopeBuf[40]; +ACPI_EXTERN NATIVE_CHAR AcpiGbl_DbDebugFilename[40]; +ACPI_EXTERN BOOLEAN AcpiGbl_DbOutputToFile; +ACPI_EXTERN NATIVE_CHAR *AcpiGbl_DbBuffer; +ACPI_EXTERN NATIVE_CHAR *AcpiGbl_DbFilename; +ACPI_EXTERN NATIVE_CHAR *AcpiGbl_DbDisasmIndent; +ACPI_EXTERN UINT32 AcpiGbl_DbDebugLevel; +ACPI_EXTERN UINT32 AcpiGbl_DbConsoleDebugLevel; +ACPI_EXTERN ACPI_TABLE_HEADER *AcpiGbl_DbTablePtr; +ACPI_EXTERN ACPI_NAMESPACE_NODE *AcpiGbl_DbScopeNode; + +/* + * Statistic globals + */ +ACPI_EXTERN UINT16 AcpiGbl_ObjTypeCount[INTERNAL_TYPE_NODE_MAX+1]; +ACPI_EXTERN UINT16 AcpiGbl_NodeTypeCount[INTERNAL_TYPE_NODE_MAX+1]; +ACPI_EXTERN UINT16 AcpiGbl_ObjTypeCountMisc; +ACPI_EXTERN UINT16 AcpiGbl_NodeTypeCountMisc; +ACPI_EXTERN UINT32 AcpiGbl_NumNodes; +ACPI_EXTERN UINT32 AcpiGbl_NumObjects; + + +ACPI_EXTERN UINT32 AcpiGbl_SizeOfParseTree; +ACPI_EXTERN UINT32 AcpiGbl_SizeOfMethodTrees; +ACPI_EXTERN UINT32 AcpiGbl_SizeOfNodeEntries; +ACPI_EXTERN UINT32 AcpiGbl_SizeOfAcpiObjects; + +#endif /* ENABLE_DEBUGGER */ #endif /* __ACGLOBAL_H__ */ diff --git a/sys/contrib/dev/acpica/achware.h b/sys/contrib/dev/acpica/achware.h index 341bc4e9bf19..8efcfd57c789 100644 --- a/sys/contrib/dev/acpica/achware.h +++ b/sys/contrib/dev/acpica/achware.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: achware.h -- hardware specific interfaces - * $Revision: 56 $ + * $Revision: 58 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -151,13 +151,20 @@ AcpiHwGetModeCapabilities ( /* Register I/O Prototypes */ +ACPI_BIT_REGISTER_INFO * +AcpiHwGetBitRegisterInfo ( + UINT32 RegisterId); UINT32 -AcpiHwRegisterBitAccess ( - NATIVE_UINT ReadWrite, - BOOLEAN UseLock, +AcpiHwBitRegisterRead ( + UINT32 RegisterId, + UINT32 Flags); + +UINT32 +AcpiHwBitRegisterWrite ( UINT32 RegisterId, - ... /* DWORD Write Value */); + UINT32 Value, + UINT32 Flags); UINT32 AcpiHwRegisterRead ( @@ -187,10 +194,6 @@ void AcpiHwClearAcpiStatus ( void); -UINT32 -AcpiHwGetBitShift ( - UINT32 Mask); - /* GPE support */ @@ -231,7 +234,7 @@ AcpiHwEnableNonWakeupGpes ( /* Sleep Prototypes */ ACPI_STATUS -AcpiHwObtainSleepTypeRegisterData ( +AcpiHwGetSleepTypeData ( UINT8 SleepState, UINT8 *Slp_TypA, UINT8 *Slp_TypB); diff --git a/sys/contrib/dev/acpica/acinterp.h b/sys/contrib/dev/acpica/acinterp.h index a917e153ca65..3cbf6efeec65 100644 --- a/sys/contrib/dev/acpica/acinterp.h +++ b/sys/contrib/dev/acpica/acinterp.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acinterp.h - Interpreter subcomponent prototypes and defines - * $Revision: 122 $ + * $Revision: 132 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -118,7 +118,7 @@ #define __ACINTERP_H__ -#define WALK_OPERANDS (&(WalkState->Operands [WalkState->NumOperands -1])) +#define ACPI_WALK_OPERANDS (&(WalkState->Operands [WalkState->NumOperands -1])) ACPI_STATUS @@ -129,7 +129,7 @@ AcpiExResolveOperands ( /* - * amxface - External interpreter interfaces + * exxface - External interpreter interfaces */ ACPI_STATUS @@ -144,7 +144,7 @@ AcpiExExecuteMethod ( /* - * amconvrt - object conversion + * exconvrt - object conversion */ ACPI_STATUS @@ -169,13 +169,14 @@ AcpiExConvertToString ( ACPI_STATUS AcpiExConvertToTargetType ( - ACPI_OBJECT_TYPE8 DestinationType, - ACPI_OPERAND_OBJECT **ObjDesc, + ACPI_OBJECT_TYPE DestinationType, + ACPI_OPERAND_OBJECT *SourceDesc, + ACPI_OPERAND_OBJECT **ResultDesc, ACPI_WALK_STATE *WalkState); /* - * amfield - ACPI AML (p-code) execution - field manipulation + * exfield - ACPI AML (p-code) execution - field manipulation */ ACPI_STATUS @@ -246,7 +247,7 @@ AcpiExWriteDataToField ( ACPI_OPERAND_OBJECT *ObjDesc); /* - * ammisc - ACPI AML (p-code) execution - specific opcodes + * exmisc - ACPI AML (p-code) execution - specific opcodes */ ACPI_STATUS @@ -268,6 +269,13 @@ AcpiExGetObjectReference ( ACPI_WALK_STATE *WalkState); ACPI_STATUS +AcpiExConcatTemplate ( + ACPI_OPERAND_OBJECT *ObjDesc, + ACPI_OPERAND_OBJECT *ObjDesc2, + ACPI_OPERAND_OBJECT **ActualReturnDesc, + ACPI_WALK_STATE *WalkState); + +ACPI_STATUS AcpiExDoConcatenate ( ACPI_OPERAND_OBJECT *ObjDesc, ACPI_OPERAND_OBJECT *ObjDesc2, @@ -287,15 +295,6 @@ AcpiExDoMathOp ( ACPI_INTEGER Operand1); ACPI_STATUS -AcpiExLoadOp ( - ACPI_OPERAND_OBJECT *RgnDesc, - ACPI_OPERAND_OBJECT *DdbHandle); - -ACPI_STATUS -AcpiExUnloadTable ( - ACPI_OPERAND_OBJECT *DdbHandle); - -ACPI_STATUS AcpiExCreateMutex ( ACPI_WALK_STATE *WalkState); @@ -334,7 +333,33 @@ AcpiExCreateMethod ( /* - * ammutex - mutex support + * exconfig - dynamic table load/unload + */ + +ACPI_STATUS +AcpiExAddTable ( + ACPI_TABLE_HEADER *Table, + ACPI_NAMESPACE_NODE *ParentNode, + ACPI_OPERAND_OBJECT **DdbHandle); + +ACPI_STATUS +AcpiExLoadOp ( + ACPI_OPERAND_OBJECT *ObjDesc, + ACPI_OPERAND_OBJECT *Target, + ACPI_WALK_STATE *WalkState); + +ACPI_STATUS +AcpiExLoadTableOp ( + ACPI_WALK_STATE *WalkState, + ACPI_OPERAND_OBJECT **ReturnDesc); + +ACPI_STATUS +AcpiExUnloadTable ( + ACPI_OPERAND_OBJECT *DdbHandle); + + +/* + * exmutex - mutex support */ ACPI_STATUS @@ -362,7 +387,7 @@ AcpiExLinkMutex ( ACPI_THREAD_STATE *Thread); /* - * amprep - ACPI AML (p-code) execution - prep utilities + * exprep - ACPI AML (p-code) execution - prep utilities */ ACPI_STATUS @@ -378,7 +403,7 @@ AcpiExPrepFieldValue ( ACPI_CREATE_FIELD_INFO *Info); /* - * amsystem - Interface to OS services + * exsystem - Interface to OS services */ ACPI_STATUS @@ -386,11 +411,11 @@ AcpiExSystemDoNotifyOp ( ACPI_OPERAND_OBJECT *Value, ACPI_OPERAND_OBJECT *ObjDesc); -void +ACPI_STATUS AcpiExSystemDoSuspend( UINT32 Time); -void +ACPI_STATUS AcpiExSystemDoStall ( UINT32 Time); @@ -423,7 +448,7 @@ AcpiExSystemWaitSemaphore ( /* - * ammonadic - ACPI AML (p-code) execution, monadic operators + * exmonadic - ACPI AML (p-code) execution, monadic operators */ ACPI_STATUS @@ -443,7 +468,7 @@ AcpiExOpcode_1A_1T_0R ( ACPI_WALK_STATE *WalkState); /* - * amdyadic - ACPI AML (p-code) execution, dyadic operators + * exdyadic - ACPI AML (p-code) execution, dyadic operators */ ACPI_STATUS @@ -464,7 +489,7 @@ AcpiExOpcode_2A_2T_1R ( /* - * amresolv - Object resolution and get value functions + * exresolv - Object resolution and get value functions */ ACPI_STATUS @@ -484,7 +509,7 @@ AcpiExResolveObjectToValue ( /* - * amdump - Scanner debug output routines + * exdump - Scanner debug output routines */ void @@ -501,7 +526,7 @@ AcpiExDumpOperand ( void AcpiExDumpOperands ( ACPI_OPERAND_OBJECT **Operands, - OPERATING_MODE InterpreterMode, + ACPI_INTERPRETER_MODE InterpreterMode, NATIVE_CHAR *Ident, UINT32 NumLevels, NATIVE_CHAR *Note, @@ -521,7 +546,7 @@ AcpiExDumpNode ( /* - * amnames - interpreter/scanner name load/execute + * exnames - interpreter/scanner name load/execute */ NATIVE_CHAR * @@ -540,7 +565,7 @@ AcpiExNameSegment ( ACPI_STATUS AcpiExGetNameString ( - ACPI_OBJECT_TYPE8 DataType, + ACPI_OBJECT_TYPE DataType, UINT8 *InAmlAddress, NATIVE_CHAR **OutNameString, UINT32 *OutNameLength); @@ -548,11 +573,11 @@ AcpiExGetNameString ( ACPI_STATUS AcpiExDoName ( ACPI_OBJECT_TYPE DataType, - OPERATING_MODE LoadExecMode); + ACPI_INTERPRETER_MODE LoadExecMode); /* - * amstore - Object store support + * exstore - Object store support */ ACPI_STATUS @@ -573,42 +598,36 @@ AcpiExStoreObjectToNode ( ACPI_NAMESPACE_NODE *Node, ACPI_WALK_STATE *WalkState); -ACPI_STATUS -AcpiExStoreObjectToObject ( - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_OPERAND_OBJECT *DestDesc, - ACPI_WALK_STATE *WalkState); - /* - * + * exstoren */ ACPI_STATUS AcpiExResolveObject ( ACPI_OPERAND_OBJECT **SourceDescPtr, - ACPI_OBJECT_TYPE8 TargetType, + ACPI_OBJECT_TYPE TargetType, ACPI_WALK_STATE *WalkState); ACPI_STATUS -AcpiExStoreObject ( +AcpiExStoreObjectToObject ( ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_OBJECT_TYPE8 TargetType, - ACPI_OPERAND_OBJECT **TargetDescPtr, + ACPI_OPERAND_OBJECT *DestDesc, + ACPI_OPERAND_OBJECT **NewDesc, ACPI_WALK_STATE *WalkState); /* - * amcopy - object copy + * excopy - object copy */ ACPI_STATUS -AcpiExCopyBufferToBuffer ( +AcpiExStoreBufferToBuffer ( ACPI_OPERAND_OBJECT *SourceDesc, ACPI_OPERAND_OBJECT *TargetDesc); ACPI_STATUS -AcpiExCopyStringToString ( +AcpiExStoreStringToString ( ACPI_OPERAND_OBJECT *SourceDesc, ACPI_OPERAND_OBJECT *TargetDesc); @@ -633,7 +652,7 @@ AcpiExCopyIntegerToBufferField ( ACPI_OPERAND_OBJECT *TargetDesc); /* - * amutils - interpreter/scanner utilities + * exutils - interpreter/scanner utilities */ ACPI_STATUS @@ -678,7 +697,7 @@ AcpiExUnsignedIntegerToString ( /* - * amregion - default OpRegion handlers + * exregion - default OpRegion handlers */ ACPI_STATUS @@ -745,4 +764,13 @@ AcpiExSmBusSpaceHandler ( void *RegionContext); +ACPI_STATUS +AcpiExDataTableSpaceHandler ( + UINT32 Function, + ACPI_PHYSICAL_ADDRESS Address, + UINT32 BitWidth, + ACPI_INTEGER *Value, + void *HandlerContext, + void *RegionContext); + #endif /* __INTERP_H__ */ diff --git a/sys/contrib/dev/acpica/aclocal.h b/sys/contrib/dev/acpica/aclocal.h index 3a3e77cc5497..bd0b4319c41b 100644 --- a/sys/contrib/dev/acpica/aclocal.h +++ b/sys/contrib/dev/acpica/aclocal.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: aclocal.h - Internal data types used across the ACPI subsystem - * $Revision: 145 $ + * $Revision: 159 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -230,10 +230,10 @@ typedef struct AcpiMutexInfo typedef UINT16 ACPI_OWNER_ID; -#define OWNER_TYPE_TABLE 0x0 -#define OWNER_TYPE_METHOD 0x1 -#define FIRST_METHOD_ID 0x0000 -#define FIRST_TABLE_ID 0x8000 +#define ACPI_OWNER_TYPE_TABLE 0x0 +#define ACPI_OWNER_TYPE_METHOD 0x1 +#define ACPI_FIRST_METHOD_ID 0x0000 +#define ACPI_FIRST_TABLE_ID 0x8000 /* TBD: [Restructure] get rid of the need for this! */ @@ -258,11 +258,11 @@ typedef UINT16 ACPI_OWNER_ID; typedef enum { - IMODE_LOAD_PASS1 = 0x01, - IMODE_LOAD_PASS2 = 0x02, - IMODE_EXECUTE = 0x0E + ACPI_IMODE_LOAD_PASS1 = 0x01, + ACPI_IMODE_LOAD_PASS2 = 0x02, + ACPI_IMODE_EXECUTE = 0x0E -} OPERATING_MODE; +} ACPI_INTERPRETER_MODE; /* @@ -275,7 +275,7 @@ typedef enum typedef struct acpi_node { - UINT8 DataType; + UINT8 Descriptor; /* Used to differentiate object descriptor types */ UINT8 Type; /* Type associated with this name */ UINT16 OwnerId; UINT32 Name; /* ACPI Name, always 4 chars per ACPI spec */ @@ -290,7 +290,7 @@ typedef struct acpi_node } ACPI_NAMESPACE_NODE; -#define ENTRY_NOT_FOUND NULL +#define ACPI_ENTRY_NOT_FOUND NULL /* Node flags */ @@ -335,13 +335,13 @@ typedef struct ACPI_HANDLE *List; UINT32 *Count; -} FIND_CONTEXT; +} ACPI_FIND_CONTEXT; typedef struct { ACPI_NAMESPACE_NODE *Node; -} NS_SEARCH_DATA; +} ACPI_NS_SEARCH_DATA; /* @@ -350,10 +350,10 @@ typedef struct typedef struct { NATIVE_CHAR *Name; - ACPI_OBJECT_TYPE8 Type; + UINT8 Type; NATIVE_CHAR *Val; -} PREDEFINED_NAMES; +} ACPI_PREDEFINED_NAMES; /* Object types used during package copies */ @@ -395,33 +395,23 @@ typedef struct } ACPI_CREATE_FIELD_INFO; - /***************************************************************************** * * Event typedefs and structs * ****************************************************************************/ +/* Information about each GPE register block */ -/* Status bits. */ - -#define ACPI_STATUS_PMTIMER 0x0001 -#define ACPI_STATUS_BUSMASTER 0x0010 -#define ACPI_STATUS_GLOBAL 0x0020 -#define ACPI_STATUS_POWER_BUTTON 0x0100 -#define ACPI_STATUS_SLEEP_BUTTON 0x0200 -#define ACPI_STATUS_RTC_ALARM 0x0400 - -/* Enable bits. */ - -#define ACPI_ENABLE_PMTIMER 0x0001 -#define ACPI_ENABLE_GLOBAL 0x0020 -#define ACPI_ENABLE_POWER_BUTTON 0x0100 -#define ACPI_ENABLE_SLEEP_BUTTON 0x0200 -#define ACPI_ENABLE_RTC_ALARM 0x0400 +typedef struct +{ + UINT16 RegisterCount; + UINT16 BlockAddress; + UINT8 BlockBaseNumber; +} ACPI_GPE_BLOCK_INFO; -/* Values and addresses of the GPE registers (both banks) */ +/* Information about a particular GPE register pair */ typedef struct { @@ -430,9 +420,9 @@ typedef struct UINT8 Status; /* Current value of status reg */ UINT8 Enable; /* Current value of enable reg */ UINT8 WakeEnable; /* Mask of bits to keep enabled when sleeping */ - UINT8 GpeBase; /* Base GPE number */ + UINT8 BaseGpeNumber; /* Base GPE number for this register */ -} ACPI_GPE_REGISTERS; +} ACPI_GPE_REGISTER_INFO; #define ACPI_GPE_LEVEL_TRIGGERED 1 @@ -443,15 +433,22 @@ typedef struct typedef struct { - UINT8 Type; /* Level or Edge */ - ACPI_HANDLE MethodHandle; /* Method handle for direct (fast) execution */ ACPI_GPE_HANDLER Handler; /* Address of handler, if any */ void *Context; /* Context to be passed to handler */ + UINT8 Type; /* Level or Edge */ + UINT8 BitMask; + -} ACPI_GPE_LEVEL_INFO; +} ACPI_GPE_NUMBER_INFO; +typedef struct +{ + UINT8 NumberIndex; + +} ACPI_GPE_INDEX_INFO; + /* Information about each particular fixed event */ typedef struct @@ -459,9 +456,18 @@ typedef struct ACPI_EVENT_HANDLER Handler; /* Address of handler. */ void *Context; /* Context to be passed to handler */ -} ACPI_FIXED_EVENT_INFO; +} ACPI_FIXED_EVENT_HANDLER; +typedef struct +{ + UINT8 StatusRegisterId; + UINT8 EnableRegisterId; + UINT16 StatusBitMask; + UINT16 EnableBitMask; + +} ACPI_FIXED_EVENT_INFO; + /* Information used during field processing */ typedef struct @@ -480,11 +486,11 @@ typedef struct ****************************************************************************/ -#define CONTROL_NORMAL 0xC0 -#define CONTROL_CONDITIONAL_EXECUTING 0xC1 -#define CONTROL_PREDICATE_EXECUTING 0xC2 -#define CONTROL_PREDICATE_FALSE 0xC3 -#define CONTROL_PREDICATE_TRUE 0xC4 +#define ACPI_CONTROL_NORMAL 0xC0 +#define ACPI_CONTROL_CONDITIONAL_EXECUTING 0xC1 +#define ACPI_CONTROL_PREDICATE_EXECUTING 0xC2 +#define ACPI_CONTROL_PREDICATE_FALSE 0xC3 +#define ACPI_CONTROL_PREDICATE_TRUE 0xC4 /* Forward declarations */ @@ -543,6 +549,8 @@ typedef struct acpi_control_state ACPI_STATE_COMMON struct acpi_parse_obj *PredicateOp; UINT8 *AmlPredicateStart; /* Start of if/while predicate */ + UINT8 *PackageEnd; /* End of if/while block */ + UINT16 Opcode; } ACPI_CONTROL_STATE; @@ -571,7 +579,7 @@ typedef struct acpi_pscope_state /* - * Thread state - one per thread across multiple walk states. Multiple walk + * Thread state - one per thread across multiple walk states. Multiple walk * states are created when there are nested control methods executing. */ typedef struct acpi_thread_state @@ -671,7 +679,6 @@ typedef struct acpi_opcode_info UINT8 Class; /* Opcode class */ UINT8 Type; /* Opcode type */ - } ACPI_OPCODE_INFO; @@ -698,7 +705,7 @@ typedef union acpi_parse_val UINT32 AmlOffset; /* offset of declaration in AML */\ struct acpi_parse_obj *Parent; /* parent op */\ struct acpi_parse_obj *Next; /* next op */\ - DEBUG_ONLY_MEMBERS (\ + ACPI_DEBUG_ONLY_MEMBERS (\ NATIVE_CHAR OpName[16]) /* op name (debug only) */\ /* NON-DEBUG members below: */\ ACPI_NAMESPACE_NODE *Node; /* for use by interpreter */\ @@ -740,149 +747,143 @@ typedef struct acpi_parse_state UINT8 *AmlEnd; /* (last + 1) AML byte */ UINT8 *PkgStart; /* current package begin */ UINT8 *PkgEnd; /* current package end */ - struct acpi_parse_obj *StartOp; /* root of parse tree */ struct acpi_node *StartNode; union acpi_gen_state *Scope; /* current scope */ + struct acpi_parse_obj *StartScope; +} ACPI_PARSE_STATE; - struct acpi_parse_obj *StartScope; +/* Parse object flags */ -} ACPI_PARSE_STATE; +#define ACPI_PARSEOP_GENERIC 0x01 +#define ACPI_PARSEOP_NAMED 0x02 +#define ACPI_PARSEOP_DEFERRED 0x04 +#define ACPI_PARSEOP_BYTELIST 0x08 +#define ACPI_PARSEOP_IN_CACHE 0x80 /***************************************************************************** * - * Hardware and PNP + * Hardware (ACPI registers) and PNP * ****************************************************************************/ +#define PCI_ROOT_HID_STRING "PNP0A03" -/* PCI */ -#define PCI_ROOT_HID_STRING "PNP0A03" - -/* - * The #define's and enum below establish an abstract way of identifying what - * register block and register is to be accessed. Do not change any of the - * values as they are used in switch statements and offset calculations. - */ - -#define REGISTER_BLOCK_MASK 0xFF00 /* Register Block Id */ -#define BIT_IN_REGISTER_MASK 0x00FF /* Bit Id in the Register Block Id */ -#define BYTE_IN_REGISTER_MASK 0x00FF /* Register Offset in the Register Block */ - -#define REGISTER_BLOCK_ID(RegId) (RegId & REGISTER_BLOCK_MASK) -#define REGISTER_BIT_ID(RegId) (RegId & BIT_IN_REGISTER_MASK) -#define REGISTER_OFFSET(RegId) (RegId & BYTE_IN_REGISTER_MASK) - -/* - * Access Rule - * To access a Register Bit: - * -> Use Bit Name (= Register Block Id | Bit Id) defined in the enum. - * - * To access a Register: - * -> Use Register Id (= Register Block Id | Register Offset) - */ +typedef struct +{ + UINT8 ParentRegister; + UINT8 BitPosition; + UINT16 AccessBitMask; +} ACPI_BIT_REGISTER_INFO; -/* - * Register Block Id - */ -#define PM1_STS 0x0100 -#define PM1_EN 0x0200 -#define PM1_CONTROL 0x0300 -#define PM1A_CONTROL 0x0400 -#define PM1B_CONTROL 0x0500 -#define PM2_CONTROL 0x0600 -#define PM_TIMER 0x0700 -#define PROCESSOR_BLOCK 0x0800 -#define GPE0_STS_BLOCK 0x0900 -#define GPE0_EN_BLOCK 0x0A00 -#define GPE1_STS_BLOCK 0x0B00 -#define GPE1_EN_BLOCK 0x0C00 -#define SMI_CMD_BLOCK 0x0D00 /* - * Address space bitmasks for mmio or io spaces + * Register IDs + * These are the full ACPI registers */ +#define ACPI_REGISTER_PM1_STATUS 0x01 +#define ACPI_REGISTER_PM1_ENABLE 0x02 +#define ACPI_REGISTER_PM1_CONTROL 0x03 +#define ACPI_REGISTER_PM1A_CONTROL 0x04 +#define ACPI_REGISTER_PM1B_CONTROL 0x05 +#define ACPI_REGISTER_PM2_CONTROL 0x06 +#define ACPI_REGISTER_PM_TIMER 0x07 +#define ACPI_REGISTER_PROCESSOR_BLOCK 0x08 +#define ACPI_REGISTER_SMI_COMMAND_BLOCK 0x09 -#define SMI_CMD_ADDRESS_SPACE 0x01 -#define PM1_BLK_ADDRESS_SPACE 0x02 -#define PM2_CNT_BLK_ADDRESS_SPACE 0x04 -#define PM_TMR_BLK_ADDRESS_SPACE 0x08 -#define GPE0_BLK_ADDRESS_SPACE 0x10 -#define GPE1_BLK_ADDRESS_SPACE 0x20 /* - * Control bit definitions + * BitRegister IDs + * These are bitfields defined within the full ACPI registers */ -#define TMR_STS (PM1_STS | 0x01) -#define BM_STS (PM1_STS | 0x02) -#define GBL_STS (PM1_STS | 0x03) -#define PWRBTN_STS (PM1_STS | 0x04) -#define SLPBTN_STS (PM1_STS | 0x05) -#define RTC_STS (PM1_STS | 0x06) -#define WAK_STS (PM1_STS | 0x07) - -#define TMR_EN (PM1_EN | 0x01) - /* no BM_EN */ -#define GBL_EN (PM1_EN | 0x03) -#define PWRBTN_EN (PM1_EN | 0x04) -#define SLPBTN_EN (PM1_EN | 0x05) -#define RTC_EN (PM1_EN | 0x06) -#define WAK_EN (PM1_EN | 0x07) - -#define SCI_EN (PM1_CONTROL | 0x01) -#define BM_RLD (PM1_CONTROL | 0x02) -#define GBL_RLS (PM1_CONTROL | 0x03) -#define SLP_TYPE_A (PM1_CONTROL | 0x04) -#define SLP_TYPE_B (PM1_CONTROL | 0x05) -#define SLP_EN (PM1_CONTROL | 0x06) - -#define ARB_DIS (PM2_CONTROL | 0x01) - -#define TMR_VAL (PM_TIMER | 0x01) - -#define GPE0_STS (GPE0_STS_BLOCK | 0x01) -#define GPE0_EN (GPE0_EN_BLOCK | 0x01) - -#define GPE1_STS (GPE1_STS_BLOCK | 0x01) -#define GPE1_EN (GPE1_EN_BLOCK | 0x01) - - -#define TMR_STS_MASK 0x0001 -#define BM_STS_MASK 0x0010 -#define GBL_STS_MASK 0x0020 -#define PWRBTN_STS_MASK 0x0100 -#define SLPBTN_STS_MASK 0x0200 -#define RTC_STS_MASK 0x0400 -#define WAK_STS_MASK 0x8000 - -#define ALL_FIXED_STS_BITS (TMR_STS_MASK | BM_STS_MASK | GBL_STS_MASK \ - | PWRBTN_STS_MASK | SLPBTN_STS_MASK \ - | RTC_STS_MASK | WAK_STS_MASK) - -#define TMR_EN_MASK 0x0001 -#define GBL_EN_MASK 0x0020 -#define PWRBTN_EN_MASK 0x0100 -#define SLPBTN_EN_MASK 0x0200 -#define RTC_EN_MASK 0x0400 - -#define SCI_EN_MASK 0x0001 -#define BM_RLD_MASK 0x0002 -#define GBL_RLS_MASK 0x0004 -#define SLP_TYPE_X_MASK 0x1C00 -#define SLP_EN_MASK 0x2000 - -#define ARB_DIS_MASK 0x0001 -#define TMR_VAL_MASK 0xFFFFFFFF - -#define GPE0_STS_MASK -#define GPE0_EN_MASK - -#define GPE1_STS_MASK -#define GPE1_EN_MASK +#define ACPI_BITREG_TIMER_STATUS 0x00 +#define ACPI_BITREG_BUS_MASTER_STATUS 0x01 +#define ACPI_BITREG_GLOBAL_LOCK_STATUS 0x02 +#define ACPI_BITREG_POWER_BUTTON_STATUS 0x03 +#define ACPI_BITREG_SLEEP_BUTTON_STATUS 0x04 +#define ACPI_BITREG_RT_CLOCK_STATUS 0x05 +#define ACPI_BITREG_WAKE_STATUS 0x06 + +#define ACPI_BITREG_TIMER_ENABLE 0x07 +#define ACPI_BITREG_GLOBAL_LOCK_ENABLE 0x08 +#define ACPI_BITREG_POWER_BUTTON_ENABLE 0x09 +#define ACPI_BITREG_SLEEP_BUTTON_ENABLE 0x0A +#define ACPI_BITREG_RT_CLOCK_ENABLE 0x0B +#define ACPI_BITREG_WAKE_ENABLE 0x0C + +#define ACPI_BITREG_SCI_ENABLE 0x0D +#define ACPI_BITREG_BUS_MASTER_RLD 0x0E +#define ACPI_BITREG_GLOBAL_LOCK_RELEASE 0x0F +#define ACPI_BITREG_SLEEP_TYPE_A 0x10 +#define ACPI_BITREG_SLEEP_TYPE_B 0x11 +#define ACPI_BITREG_SLEEP_ENABLE 0x12 + +#define ACPI_BITREG_ARB_DISABLE 0x13 + +#define ACPI_BITREG_MAX 0x13 +#define ACPI_NUM_BITREG ACPI_BITREG_MAX + 1 + + +/* Masks used to access the BitRegisters */ + +#define ACPI_BITMASK_TIMER_STATUS 0x0001 +#define ACPI_BITMASK_BUS_MASTER_STATUS 0x0010 +#define ACPI_BITMASK_GLOBAL_LOCK_STATUS 0x0020 +#define ACPI_BITMASK_POWER_BUTTON_STATUS 0x0100 +#define ACPI_BITMASK_SLEEP_BUTTON_STATUS 0x0200 +#define ACPI_BITMASK_RT_CLOCK_STATUS 0x0400 +#define ACPI_BITMASK_WAKE_STATUS 0x8000 + +#define ACPI_BITMASK_ALL_FIXED_STATUS (ACPI_BITMASK_TIMER_STATUS | \ + ACPI_BITMASK_BUS_MASTER_STATUS | \ + ACPI_BITMASK_GLOBAL_LOCK_STATUS | \ + ACPI_BITMASK_POWER_BUTTON_STATUS | \ + ACPI_BITMASK_SLEEP_BUTTON_STATUS | \ + ACPI_BITMASK_RT_CLOCK_STATUS | \ + ACPI_BITMASK_WAKE_STATUS) + +#define ACPI_BITMASK_TIMER_ENABLE 0x0001 +#define ACPI_BITMASK_GLOBAL_LOCK_ENABLE 0x0020 +#define ACPI_BITMASK_POWER_BUTTON_ENABLE 0x0100 +#define ACPI_BITMASK_SLEEP_BUTTON_ENABLE 0x0200 +#define ACPI_BITMASK_RT_CLOCK_ENABLE 0x0400 + +#define ACPI_BITMASK_SCI_ENABLE 0x0001 +#define ACPI_BITMASK_BUS_MASTER_RLD 0x0002 +#define ACPI_BITMASK_GLOBAL_LOCK_RELEASE 0x0004 +#define ACPI_BITMASK_SLEEP_TYPE_X 0x1C00 +#define ACPI_BITMASK_SLEEP_ENABLE 0x2000 + +#define ACPI_BITMASK_ARB_DISABLE 0x0001 + + +/* Raw bit position of each BitRegister */ + +#define ACPI_BITPOSITION_TIMER_STATUS 0x00 +#define ACPI_BITPOSITION_BUS_MASTER_STATUS 0x04 +#define ACPI_BITPOSITION_GLOBAL_LOCK_STATUS 0x05 +#define ACPI_BITPOSITION_POWER_BUTTON_STATUS 0x08 +#define ACPI_BITPOSITION_SLEEP_BUTTON_STATUS 0x09 +#define ACPI_BITPOSITION_RT_CLOCK_STATUS 0x0A +#define ACPI_BITPOSITION_WAKE_STATUS 0x0F + +#define ACPI_BITPOSITION_TIMER_ENABLE 0x00 +#define ACPI_BITPOSITION_GLOBAL_LOCK_ENABLE 0x05 +#define ACPI_BITPOSITION_POWER_BUTTON_ENABLE 0x08 +#define ACPI_BITPOSITION_SLEEP_BUTTON_ENABLE 0x09 +#define ACPI_BITPOSITION_RT_CLOCK_ENABLE 0x0A + +#define ACPI_BITPOSITION_SCI_ENABLE 0x00 +#define ACPI_BITPOSITION_BUS_MASTER_RLD 0x01 +#define ACPI_BITPOSITION_GLOBAL_LOCK_RELEASE 0x02 +#define ACPI_BITPOSITION_SLEEP_TYPE_X 0x0A +#define ACPI_BITPOSITION_SLEEP_ENABLE 0x0D + +#define ACPI_BITPOSITION_ARB_DISABLE 0x00 /***************************************************************************** @@ -894,45 +895,45 @@ typedef struct acpi_parse_state /* ResourceType values */ -#define RESOURCE_TYPE_MEMORY_RANGE 0 -#define RESOURCE_TYPE_IO_RANGE 1 -#define RESOURCE_TYPE_BUS_NUMBER_RANGE 2 +#define ACPI_RESOURCE_TYPE_MEMORY_RANGE 0 +#define ACPI_RESOURCE_TYPE_IO_RANGE 1 +#define ACPI_RESOURCE_TYPE_BUS_NUMBER_RANGE 2 /* Resource descriptor types and masks */ -#define RESOURCE_DESC_TYPE_LARGE 0x80 -#define RESOURCE_DESC_TYPE_SMALL 0x00 +#define ACPI_RDESC_TYPE_LARGE 0x80 +#define ACPI_RDESC_TYPE_SMALL 0x00 -#define RESOURCE_DESC_TYPE_MASK 0x80 -#define RESOURCE_DESC_SMALL_MASK 0x78 /* Only bits 6:3 contain the type */ +#define ACPI_RDESC_TYPE_MASK 0x80 +#define ACPI_RDESC_SMALL_MASK 0x78 /* Only bits 6:3 contain the type */ /* * Small resource descriptor types * Note: The 3 length bits (2:0) must be zero */ -#define RESOURCE_DESC_IRQ_FORMAT 0x20 -#define RESOURCE_DESC_DMA_FORMAT 0x28 -#define RESOURCE_DESC_START_DEPENDENT 0x30 -#define RESOURCE_DESC_END_DEPENDENT 0x38 -#define RESOURCE_DESC_IO_PORT 0x40 -#define RESOURCE_DESC_FIXED_IO_PORT 0x48 -#define RESOURCE_DESC_SMALL_VENDOR 0x70 -#define RESOURCE_DESC_END_TAG 0x78 +#define ACPI_RDESC_TYPE_IRQ_FORMAT 0x20 +#define ACPI_RDESC_TYPE_DMA_FORMAT 0x28 +#define ACPI_RDESC_TYPE_START_DEPENDENT 0x30 +#define ACPI_RDESC_TYPE_END_DEPENDENT 0x38 +#define ACPI_RDESC_TYPE_IO_PORT 0x40 +#define ACPI_RDESC_TYPE_FIXED_IO_PORT 0x48 +#define ACPI_RDESC_TYPE_SMALL_VENDOR 0x70 +#define ACPI_RDESC_TYPE_END_TAG 0x78 /* * Large resource descriptor types */ -#define RESOURCE_DESC_MEMORY_24 0x81 -#define RESOURCE_DESC_GENERAL_REGISTER 0x82 -#define RESOURCE_DESC_LARGE_VENDOR 0x84 -#define RESOURCE_DESC_MEMORY_32 0x85 -#define RESOURCE_DESC_FIXED_MEMORY_32 0x86 -#define RESOURCE_DESC_DWORD_ADDRESS_SPACE 0x87 -#define RESOURCE_DESC_WORD_ADDRESS_SPACE 0x88 -#define RESOURCE_DESC_EXTENDED_XRUPT 0x89 -#define RESOURCE_DESC_QWORD_ADDRESS_SPACE 0x8A +#define ACPI_RDESC_TYPE_MEMORY_24 0x81 +#define ACPI_RDESC_TYPE_GENERAL_REGISTER 0x82 +#define ACPI_RDESC_TYPE_LARGE_VENDOR 0x84 +#define ACPI_RDESC_TYPE_MEMORY_32 0x85 +#define ACPI_RDESC_TYPE_FIXED_MEMORY_32 0x86 +#define ACPI_RDESC_TYPE_DWORD_ADDRESS_SPACE 0x87 +#define ACPI_RDESC_TYPE_WORD_ADDRESS_SPACE 0x88 +#define ACPI_RDESC_TYPE_EXTENDED_XRUPT 0x89 +#define ACPI_RDESC_TYPE_QWORD_ADDRESS_SPACE 0x8A /* String version of device HIDs and UIDs */ @@ -952,7 +953,7 @@ typedef struct * ****************************************************************************/ -#define ASCII_ZERO 0x30 +#define ACPI_ASCII_ZERO 0x30 /***************************************************************************** * @@ -969,7 +970,12 @@ typedef struct dbmethodinfo UINT32 NumLoops; NATIVE_CHAR Pathname[128]; -} DB_METHOD_INFO; +} ACPI_DB_METHOD_INFO; + + +#define ACPI_DB_REDIRECTABLE_OUTPUT 0x01 +#define ACPI_DB_CONSOLE_OUTPUT 0x02 +#define ACPI_DB_DUPLICATE_OUTPUT 0x03 /***************************************************************************** @@ -989,10 +995,9 @@ typedef struct /* Entry for a memory allocation (debug only) */ - -#define MEM_MALLOC 0 -#define MEM_CALLOC 1 -#define MAX_MODULE_NAME 16 +#define ACPI_MEM_MALLOC 0 +#define ACPI_MEM_CALLOC 1 +#define ACPI_MAX_MODULE_NAME 16 #define ACPI_COMMON_DEBUG_MEM_HEADER \ struct AcpiDebugMemBlock *Previous; \ @@ -1000,10 +1005,9 @@ typedef struct UINT32 Size; \ UINT32 Component; \ UINT32 Line; \ - NATIVE_CHAR Module[MAX_MODULE_NAME]; \ + NATIVE_CHAR Module[ACPI_MAX_MODULE_NAME]; \ UINT8 AllocType; - typedef struct { ACPI_COMMON_DEBUG_MEM_HEADER diff --git a/sys/contrib/dev/acpica/acmacros.h b/sys/contrib/dev/acpica/acmacros.h index e73f8c729c9e..d730ecabccca 100644 --- a/sys/contrib/dev/acpica/acmacros.h +++ b/sys/contrib/dev/acpica/acmacros.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acmacros.h - C macros for the entire subsystem. - * $Revision: 100 $ + * $Revision: 115 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -122,37 +122,10 @@ * Data manipulation macros */ -#ifndef LOWORD -#define LOWORD(l) ((UINT16)(NATIVE_UINT)(l)) -#endif - -#ifndef HIWORD -#define HIWORD(l) ((UINT16)((((NATIVE_UINT)(l)) >> 16) & 0xFFFF)) -#endif - -#ifndef LOBYTE -#define LOBYTE(l) ((UINT8)(UINT16)(l)) -#endif - -#ifndef HIBYTE -#define HIBYTE(l) ((UINT8)((((UINT16)(l)) >> 8) & 0xFF)) -#endif - -#define BIT0(x) ((((x) & 0x01) > 0) ? 1 : 0) -#define BIT1(x) ((((x) & 0x02) > 0) ? 1 : 0) -#define BIT2(x) ((((x) & 0x04) > 0) ? 1 : 0) - -#define BIT3(x) ((((x) & 0x08) > 0) ? 1 : 0) -#define BIT4(x) ((((x) & 0x10) > 0) ? 1 : 0) -#define BIT5(x) ((((x) & 0x20) > 0) ? 1 : 0) -#define BIT6(x) ((((x) & 0x40) > 0) ? 1 : 0) -#define BIT7(x) ((((x) & 0x80) > 0) ? 1 : 0) - -#define LOW_BASE(w) ((UINT16) ((w) & 0x0000FFFF)) -#define MID_BASE(b) ((UINT8) (((b) & 0x00FF0000) >> 16)) -#define HI_BASE(b) ((UINT8) (((b) & 0xFF000000) >> 24)) -#define LOW_LIMIT(w) ((UINT16) ((w) & 0x0000FFFF)) -#define HI_LIMIT(b) ((UINT8) (((b) & 0x00FF0000) >> 16)) +#define ACPI_LOWORD(l) ((UINT16)(NATIVE_UINT)(l)) +#define ACPI_HIWORD(l) ((UINT16)((((NATIVE_UINT)(l)) >> 16) & 0xFFFF)) +#define ACPI_LOBYTE(l) ((UINT8)(UINT16)(l)) +#define ACPI_HIBYTE(l) ((UINT8)((((UINT16)(l)) >> 8) & 0xFF)) #ifdef _IA16 @@ -160,13 +133,8 @@ * For 16-bit addresses, we have to assume that the upper 32 bits * are zero. */ -#ifndef LODWORD -#define LODWORD(l) (l) -#endif - -#ifndef HIDWORD -#define HIDWORD(l) (0) -#endif +#define ACPI_LODWORD(l) (l) +#define ACPI_HIDWORD(l) (0) #define ACPI_GET_ADDRESS(a) ((a).Lo) #define ACPI_STORE_ADDRESS(a,b) {(a).Hi=0;(a).Lo=(b);} @@ -177,13 +145,8 @@ /* * ACPI_INTEGER is 32-bits, no 64-bit support on this platform */ -#ifndef LODWORD -#define LODWORD(l) ((UINT32)(l)) -#endif - -#ifndef HIDWORD -#define HIDWORD(l) (0) -#endif +#define ACPI_LODWORD(l) ((UINT32)(l)) +#define ACPI_HIDWORD(l) (0) #define ACPI_GET_ADDRESS(a) (a) #define ACPI_STORE_ADDRESS(a,b) ((a)=(b)) @@ -194,13 +157,8 @@ /* * Full 64-bit address/integer on both 32-bit and 64-bit platforms */ -#ifndef LODWORD -#define LODWORD(l) ((UINT32)(UINT64)(l)) -#endif - -#ifndef HIDWORD -#define HIDWORD(l) ((UINT32)(((*(UINT64_STRUCT *)(&l))).Hi)) -#endif +#define ACPI_LODWORD(l) ((UINT32)(UINT64)(l)) +#define ACPI_HIDWORD(l) ((UINT32)(((*(UINT64_STRUCT *)(&l))).Hi)) #define ACPI_GET_ADDRESS(a) (a) #define ACPI_STORE_ADDRESS(a,b) ((a)=(b)) @@ -212,13 +170,28 @@ * Extract a byte of data using a pointer. Any more than a byte and we * get into potential aligment issues -- see the STORE macros below */ -#define GET8(addr) (*(UINT8*)(addr)) +#define ACPI_GET8(addr) (*(UINT8*)(addr)) /* Pointer arithmetic */ +#define ACPI_PTR_ADD(t,a,b) (t *) ((char *)(a) + (b)) +#define ACPI_PTR_DIFF(a,b) (NATIVE_UINT) ((char *)(a) - (char *)(b)) + +/* Pointer/Integer type conversions */ + +#define ACPI_TO_POINTER(i) ACPI_PTR_ADD (void,NULL,(NATIVE_UINT)i) +#define ACPI_TO_INTEGER(p) ACPI_PTR_DIFF (p,NULL) +#define ACPI_OFFSET(d,o) ((ACPI_SIZE) ACPI_TO_INTEGER (&(((d *)0)->o))) +#define ACPI_FADT_OFFSET(o) ACPI_OFFSET (FADT_DESCRIPTOR, o) -#define POINTER_ADD(t,a,b) (t *) ((NATIVE_UINT)(a) + (NATIVE_UINT)(b)) -#define POINTER_DIFF(a,b) ((UINT32) ((NATIVE_UINT)(a) - (NATIVE_UINT)(b))) + +#ifdef _IA16 +#define ACPI_PHYSADDR_TO_PTR(i) (void *)(i) +#define ACPI_PTR_TO_PHYSADDR(i) (char *)(i) +#else +#define ACPI_PHYSADDR_TO_PTR(i) ACPI_TO_POINTER(i) +#define ACPI_PTR_TO_PHYSADDR(i) ACPI_TO_INTEGER(i) +#endif /* * Macros for moving data around to/from buffers that are possibly unaligned. @@ -230,10 +203,10 @@ /* The hardware supports unaligned transfers, just do the move */ -#define MOVE_UNALIGNED16_TO_16(d,s) *(UINT16*)(d) = *(UINT16*)(s) -#define MOVE_UNALIGNED32_TO_32(d,s) *(UINT32*)(d) = *(UINT32*)(s) -#define MOVE_UNALIGNED16_TO_32(d,s) *(UINT32*)(d) = *(UINT16*)(s) -#define MOVE_UNALIGNED64_TO_64(d,s) *(UINT64*)(d) = *(UINT64*)(s) +#define ACPI_MOVE_UNALIGNED16_TO_16(d,s) *(UINT16 *)(d) = *(UINT16 *)(s) +#define ACPI_MOVE_UNALIGNED32_TO_32(d,s) *(UINT32 *)(d) = *(UINT32 *)(s) +#define ACPI_MOVE_UNALIGNED16_TO_32(d,s) *(UINT32 *)(d) = *(UINT16 *)(s) +#define ACPI_MOVE_UNALIGNED64_TO_64(d,s) *(UINT64 *)(d) = *(UINT64 *)(s) #else /* @@ -242,24 +215,24 @@ * the destination (or both) is/are unaligned. */ -#define MOVE_UNALIGNED16_TO_16(d,s) {((UINT8 *)(d))[0] = ((UINT8 *)(s))[0];\ - ((UINT8 *)(d))[1] = ((UINT8 *)(s))[1];} +#define ACPI_MOVE_UNALIGNED16_TO_16(d,s) {((UINT8 *)(d))[0] = ((UINT8 *)(s))[0];\ + ((UINT8 *)(d))[1] = ((UINT8 *)(s))[1];} -#define MOVE_UNALIGNED32_TO_32(d,s) {((UINT8 *)(d))[0] = ((UINT8 *)(s))[0];\ - ((UINT8 *)(d))[1] = ((UINT8 *)(s))[1];\ - ((UINT8 *)(d))[2] = ((UINT8 *)(s))[2];\ - ((UINT8 *)(d))[3] = ((UINT8 *)(s))[3];} +#define ACPI_MOVE_UNALIGNED32_TO_32(d,s) {((UINT8 *)(d))[0] = ((UINT8 *)(s))[0];\ + ((UINT8 *)(d))[1] = ((UINT8 *)(s))[1];\ + ((UINT8 *)(d))[2] = ((UINT8 *)(s))[2];\ + ((UINT8 *)(d))[3] = ((UINT8 *)(s))[3];} -#define MOVE_UNALIGNED16_TO_32(d,s) {(*(UINT32*)(d)) = 0; MOVE_UNALIGNED16_TO_16(d,s);} +#define ACPI_MOVE_UNALIGNED16_TO_32(d,s) {(*(UINT32*)(d)) = 0; ACPI_MOVE_UNALIGNED16_TO_16(d,s);} -#define MOVE_UNALIGNED64_TO_64(d,s) {((UINT8 *)(d))[0] = ((UINT8 *)(s))[0];\ - ((UINT8 *)(d))[1] = ((UINT8 *)(s))[1];\ - ((UINT8 *)(d))[2] = ((UINT8 *)(s))[2];\ - ((UINT8 *)(d))[3] = ((UINT8 *)(s))[3];\ - ((UINT8 *)(d))[4] = ((UINT8 *)(s))[4];\ - ((UINT8 *)(d))[5] = ((UINT8 *)(s))[5];\ - ((UINT8 *)(d))[6] = ((UINT8 *)(s))[6];\ - ((UINT8 *)(d))[7] = ((UINT8 *)(s))[7];} +#define ACPI_MOVE_UNALIGNED64_TO_64(d,s) {((UINT8 *)(d))[0] = ((UINT8 *)(s))[0];\ + ((UINT8 *)(d))[1] = ((UINT8 *)(s))[1];\ + ((UINT8 *)(d))[2] = ((UINT8 *)(s))[2];\ + ((UINT8 *)(d))[3] = ((UINT8 *)(s))[3];\ + ((UINT8 *)(d))[4] = ((UINT8 *)(s))[4];\ + ((UINT8 *)(d))[5] = ((UINT8 *)(s))[5];\ + ((UINT8 *)(d))[6] = ((UINT8 *)(s))[6];\ + ((UINT8 *)(d))[7] = ((UINT8 *)(s))[7];} #endif @@ -268,52 +241,50 @@ * Fast power-of-two math macros for non-optimized compilers */ -#define _DIV(value,PowerOf2) ((UINT32) ((value) >> (PowerOf2))) -#define _MUL(value,PowerOf2) ((UINT32) ((value) << (PowerOf2))) -#define _MOD(value,Divisor) ((UINT32) ((value) & ((Divisor) -1))) +#define _ACPI_DIV(value,PowerOf2) ((UINT32) ((value) >> (PowerOf2))) +#define _ACPI_MUL(value,PowerOf2) ((UINT32) ((value) << (PowerOf2))) +#define _ACPI_MOD(value,Divisor) ((UINT32) ((value) & ((Divisor) -1))) -#define DIV_2(a) _DIV(a,1) -#define MUL_2(a) _MUL(a,1) -#define MOD_2(a) _MOD(a,2) +#define ACPI_DIV_2(a) _ACPI_DIV(a,1) +#define ACPI_MUL_2(a) _ACPI_MUL(a,1) +#define ACPI_MOD_2(a) _ACPI_MOD(a,2) -#define DIV_4(a) _DIV(a,2) -#define MUL_4(a) _MUL(a,2) -#define MOD_4(a) _MOD(a,4) +#define ACPI_DIV_4(a) _ACPI_DIV(a,2) +#define ACPI_MUL_4(a) _ACPI_MUL(a,2) +#define ACPI_MOD_4(a) _ACPI_MOD(a,4) -#define DIV_8(a) _DIV(a,3) -#define MUL_8(a) _MUL(a,3) -#define MOD_8(a) _MOD(a,8) +#define ACPI_DIV_8(a) _ACPI_DIV(a,3) +#define ACPI_MUL_8(a) _ACPI_MUL(a,3) +#define ACPI_MOD_8(a) _ACPI_MOD(a,8) -#define DIV_16(a) _DIV(a,4) -#define MUL_16(a) _MUL(a,4) -#define MOD_16(a) _MOD(a,16) +#define ACPI_DIV_16(a) _ACPI_DIV(a,4) +#define ACPI_MUL_16(a) _ACPI_MUL(a,4) +#define ACPI_MOD_16(a) _ACPI_MOD(a,16) /* * Rounding macros (Power of two boundaries only) */ -#define ROUND_DOWN(value,boundary) ((value) & (~((boundary)-1))) -#define ROUND_UP(value,boundary) (((value) + ((boundary)-1)) & (~((boundary)-1))) +#define ACPI_ROUND_DOWN(value,boundary) (((NATIVE_UINT)(value)) & (~((boundary)-1))) +#define ACPI_ROUND_UP(value,boundary) ((((NATIVE_UINT)(value)) + ((boundary)-1)) & (~((boundary)-1))) -#define ROUND_DOWN_TO_32_BITS(a) ROUND_DOWN(a,4) -#define ROUND_DOWN_TO_64_BITS(a) ROUND_DOWN(a,8) -#define ROUND_DOWN_TO_NATIVE_WORD(a) ROUND_DOWN(a,ALIGNED_ADDRESS_BOUNDARY) +#define ACPI_ROUND_DOWN_TO_32_BITS(a) ACPI_ROUND_DOWN(a,4) +#define ACPI_ROUND_DOWN_TO_64_BITS(a) ACPI_ROUND_DOWN(a,8) +#define ACPI_ROUND_DOWN_TO_NATIVE_WORD(a) ACPI_ROUND_DOWN(a,ALIGNED_ADDRESS_BOUNDARY) -#define ROUND_UP_TO_32BITS(a) ROUND_UP(a,4) -#define ROUND_UP_TO_64BITS(a) ROUND_UP(a,8) -#define ROUND_UP_TO_NATIVE_WORD(a) ROUND_UP(a,ALIGNED_ADDRESS_BOUNDARY) +#define ACPI_ROUND_UP_TO_32BITS(a) ACPI_ROUND_UP(a,4) +#define ACPI_ROUND_UP_TO_64BITS(a) ACPI_ROUND_UP(a,8) +#define ACPI_ROUND_UP_TO_NATIVE_WORD(a) ACPI_ROUND_UP(a,ALIGNED_ADDRESS_BOUNDARY) -#define ROUND_PTR_UP_TO_4(a,b) ((b *)(((NATIVE_UINT)(a) + 3) & ~3)) -#define ROUND_PTR_UP_TO_8(a,b) ((b *)(((NATIVE_UINT)(a) + 7) & ~7)) -#define ROUND_BITS_UP_TO_BYTES(a) DIV_8((a) + 7) -#define ROUND_BITS_DOWN_TO_BYTES(a) DIV_8((a)) +#define ACPI_ROUND_BITS_UP_TO_BYTES(a) ACPI_DIV_8((a) + 7) +#define ACPI_ROUND_BITS_DOWN_TO_BYTES(a) ACPI_DIV_8((a)) -#define ROUND_UP_TO_1K(a) (((a) + 1023) >> 10) +#define ACPI_ROUND_UP_TO_1K(a) (((a) + 1023) >> 10) /* Generic (non-power-of-two) rounding */ -#define ROUND_UP_TO(value,boundary) (((value) + ((boundary)-1)) / (boundary)) +#define ACPI_ROUND_UP_TO(value,boundary) (((value) + ((boundary)-1)) / (boundary)) /* * Bitmask creation @@ -321,9 +292,10 @@ * MASK_BITS_ABOVE creates a mask starting AT the position and above * MASK_BITS_BELOW creates a mask starting one bit BELOW the position */ -#define MASK_BITS_ABOVE(position) (~(((ACPI_INTEGER)(-1)) << ((UINT32) (position)))) -#define MASK_BITS_BELOW(position) (((ACPI_INTEGER)(-1)) << ((UINT32) (position))) +#define ACPI_MASK_BITS_ABOVE(position) (~(((ACPI_INTEGER)(-1)) << ((UINT32) (position)))) +#define ACPI_MASK_BITS_BELOW(position) (((ACPI_INTEGER)(-1)) << ((UINT32) (position))) +#define ACPI_IS_OCTAL_DIGIT(d) (((char)(d) >= '0') && ((char)(d) <= '7')) /* Macros for GAS addressing */ @@ -347,23 +319,30 @@ #endif + +/* Bitfields within ACPI registers */ + +#define ACPI_REGISTER_PREPARE_BITS(Val, Pos, Mask) ((Val << Pos) & Mask) +#define ACPI_REGISTER_INSERT_VALUE(Reg, Pos, Mask, Val) Reg = (Reg & (~(Mask))) | ACPI_REGISTER_PREPARE_BITS(Val, Pos, Mask) + /* * An ACPI_NAMESPACE_NODE * can appear in some contexts, * where a pointer to an ACPI_OPERAND_OBJECT can also * appear. This macro is used to distinguish them. * - * The DataType field is the first field in both structures. + * The "Descriptor" field is the first field in both structures. */ -#define VALID_DESCRIPTOR_TYPE(d,t) (((ACPI_NAMESPACE_NODE *)d)->DataType == t) +#define ACPI_GET_DESCRIPTOR_TYPE(d) (((ACPI_NAMESPACE_NODE *)d)->Descriptor) +#define ACPI_SET_DESCRIPTOR_TYPE(d,t) (((ACPI_NAMESPACE_NODE *)d)->Descriptor = t) /* Macro to test the object type */ -#define IS_THIS_OBJECT_TYPE(d,t) (((ACPI_OPERAND_OBJECT *)d)->Common.Type == (UINT8)t) +#define ACPI_GET_OBJECT_TYPE(d) (((ACPI_OPERAND_OBJECT *)d)->Common.Type) /* Macro to check the table flags for SINGLE or MULTIPLE tables are allowed */ -#define IS_SINGLE_TABLE(x) (((x) & 0x01) == ACPI_TABLE_SINGLE ? 1 : 0) +#define ACPI_IS_SINGLE_TABLE(x) (((x) & 0x01) == ACPI_TABLE_SINGLE ? 1 : 0) /* * Macro to check if a pointer is within an ACPI table. @@ -372,11 +351,11 @@ * and ((UINT8 *)b+b->Length) points one byte past the end of the table. */ #ifndef _IA16 -#define IS_IN_ACPI_TABLE(a,b) (((UINT8 *)(a) >= (UINT8 *)(b + 1)) &&\ - ((UINT8 *)(a) < ((UINT8 *)b + b->Length))) +#define ACPI_IS_IN_ACPI_TABLE(a,b) (((UINT8 *)(a) >= (UINT8 *)(b + 1)) &&\ + ((UINT8 *)(a) < ((UINT8 *)b + b->Length))) #else -#define IS_IN_ACPI_TABLE(a,b) (_segment)(a) == (_segment)(b) &&\ +#define ACPI_IS_IN_ACPI_TABLE(a,b) (_segment)(a) == (_segment)(b) &&\ (((UINT8 *)(a) >= (UINT8 *)(b + 1)) &&\ ((UINT8 *)(a) < ((UINT8 *)b + b->Length))) #endif @@ -426,7 +405,7 @@ * 5) Expand address to 64 bits */ #define ASL_BUILD_GAS_FROM_ENTRY(a,b,c,d) {a.AddressSpaceId = (UINT8) d;\ - a.RegisterBitWidth = (UINT8) MUL_8 (b);\ + a.RegisterBitWidth = (UINT8) ACPI_MUL_8 (b);\ a.RegisterBitOffset = 0;\ a.Reserved = 0;\ ACPI_STORE_ADDRESS (a.Address,c);} @@ -440,7 +419,7 @@ * Reporting macros that are never compiled out */ -#define PARAM_LIST(pl) pl +#define ACPI_PARAM_LIST(pl) pl /* * Error reporting. These versions add callers module and line#. Since @@ -450,32 +429,32 @@ #ifdef ACPI_DEBUG -#define REPORT_INFO(fp) {AcpiUtReportInfo(_THIS_MODULE,__LINE__,_COMPONENT); \ - AcpiOsPrintf PARAM_LIST(fp);} -#define REPORT_ERROR(fp) {AcpiUtReportError(_THIS_MODULE,__LINE__,_COMPONENT); \ - AcpiOsPrintf PARAM_LIST(fp);} -#define REPORT_WARNING(fp) {AcpiUtReportWarning(_THIS_MODULE,__LINE__,_COMPONENT); \ - AcpiOsPrintf PARAM_LIST(fp);} +#define ACPI_REPORT_INFO(fp) {AcpiUtReportInfo(_THIS_MODULE,__LINE__,_COMPONENT); \ + AcpiOsPrintf ACPI_PARAM_LIST(fp);} +#define ACPI_REPORT_ERROR(fp) {AcpiUtReportError(_THIS_MODULE,__LINE__,_COMPONENT); \ + AcpiOsPrintf ACPI_PARAM_LIST(fp);} +#define ACPI_REPORT_WARNING(fp) {AcpiUtReportWarning(_THIS_MODULE,__LINE__,_COMPONENT); \ + AcpiOsPrintf ACPI_PARAM_LIST(fp);} #else -#define REPORT_INFO(fp) {AcpiUtReportInfo("ACPI",__LINE__,_COMPONENT); \ - AcpiOsPrintf PARAM_LIST(fp);} -#define REPORT_ERROR(fp) {AcpiUtReportError("ACPI",__LINE__,_COMPONENT); \ - AcpiOsPrintf PARAM_LIST(fp);} -#define REPORT_WARNING(fp) {AcpiUtReportWarning("ACPI",__LINE__,_COMPONENT); \ - AcpiOsPrintf PARAM_LIST(fp);} +#define ACPI_REPORT_INFO(fp) {AcpiUtReportInfo("ACPI",__LINE__,_COMPONENT); \ + AcpiOsPrintf ACPI_PARAM_LIST(fp);} +#define ACPI_REPORT_ERROR(fp) {AcpiUtReportError("ACPI",__LINE__,_COMPONENT); \ + AcpiOsPrintf ACPI_PARAM_LIST(fp);} +#define ACPI_REPORT_WARNING(fp) {AcpiUtReportWarning("ACPI",__LINE__,_COMPONENT); \ + AcpiOsPrintf ACPI_PARAM_LIST(fp);} #endif /* Error reporting. These versions pass thru the module and line# */ -#define _REPORT_INFO(a,b,c,fp) {AcpiUtReportInfo(a,b,c); \ - AcpiOsPrintf PARAM_LIST(fp);} -#define _REPORT_ERROR(a,b,c,fp) {AcpiUtReportError(a,b,c); \ - AcpiOsPrintf PARAM_LIST(fp);} -#define _REPORT_WARNING(a,b,c,fp) {AcpiUtReportWarning(a,b,c); \ - AcpiOsPrintf PARAM_LIST(fp);} +#define _ACPI_REPORT_INFO(a,b,c,fp) {AcpiUtReportInfo(a,b,c); \ + AcpiOsPrintf ACPI_PARAM_LIST(fp);} +#define _ACPI_REPORT_ERROR(a,b,c,fp) {AcpiUtReportError(a,b,c); \ + AcpiOsPrintf ACPI_PARAM_LIST(fp);} +#define _ACPI_REPORT_WARNING(a,b,c,fp) {AcpiUtReportWarning(a,b,c); \ + AcpiOsPrintf ACPI_PARAM_LIST(fp);} /* * Debug macros that are conditionally compiled @@ -483,7 +462,7 @@ #ifdef ACPI_DEBUG -#define MODULE_NAME(name) static char *_THIS_MODULE = name; +#define ACPI_MODULE_NAME(name) static char *_THIS_MODULE = name; /* * Function entry tracing. @@ -491,21 +470,21 @@ * as a local string ("_ProcName) so that it can be also used by the function exit macros below. */ -#define PROC_NAME(a) ACPI_DEBUG_PRINT_INFO _Dbg; \ +#define ACPI_FUNCTION_NAME(a) ACPI_DEBUG_PRINT_INFO _Dbg; \ _Dbg.ComponentId = _COMPONENT; \ _Dbg.ProcName = a; \ _Dbg.ModuleName = _THIS_MODULE; -#define FUNCTION_TRACE(a) PROC_NAME(a)\ - AcpiUtTrace(__LINE__,&_Dbg) -#define FUNCTION_TRACE_PTR(a,b) PROC_NAME(a)\ - AcpiUtTracePtr(__LINE__,&_Dbg,(void *)b) -#define FUNCTION_TRACE_U32(a,b) PROC_NAME(a)\ - AcpiUtTraceU32(__LINE__,&_Dbg,(UINT32)b) -#define FUNCTION_TRACE_STR(a,b) PROC_NAME(a)\ - AcpiUtTraceStr(__LINE__,&_Dbg,(NATIVE_CHAR *)b) +#define ACPI_FUNCTION_TRACE(a) ACPI_FUNCTION_NAME(a)\ + AcpiUtTrace(__LINE__,&_Dbg) +#define ACPI_FUNCTION_TRACE_PTR(a,b) ACPI_FUNCTION_NAME(a)\ + AcpiUtTracePtr(__LINE__,&_Dbg,(void *)b) +#define ACPI_FUNCTION_TRACE_U32(a,b) ACPI_FUNCTION_NAME(a)\ + AcpiUtTraceU32(__LINE__,&_Dbg,(UINT32)b) +#define ACPI_FUNCTION_TRACE_STR(a,b) ACPI_FUNCTION_NAME(a)\ + AcpiUtTraceStr(__LINE__,&_Dbg,(NATIVE_CHAR *)b) -#define FUNCTION_ENTRY() AcpiUtTrackStackPtr() +#define ACPI_FUNCTION_ENTRY() AcpiUtTrackStackPtr() /* * Function exit tracing. @@ -522,38 +501,39 @@ /* Conditional execution */ -#define DEBUG_EXEC(a) a -#define NORMAL_EXEC(a) +#define ACPI_DEBUG_EXEC(a) a +#define ACPI_NORMAL_EXEC(a) -#define DEBUG_DEFINE(a) a; -#define DEBUG_ONLY_MEMBERS(a) a; +#define ACPI_DEBUG_DEFINE(a) a; +#define ACPI_DEBUG_ONLY_MEMBERS(a) a; #define _OPCODE_NAMES #define _VERBOSE_STRUCTURES /* Stack and buffer dumping */ -#define DUMP_STACK_ENTRY(a) AcpiExDumpOperand(a) -#define DUMP_OPERANDS(a,b,c,d,e) AcpiExDumpOperands(a,b,c,d,e,_THIS_MODULE,__LINE__) +#define ACPI_DUMP_STACK_ENTRY(a) AcpiExDumpOperand(a) +#define ACPI_DUMP_OPERANDS(a,b,c,d,e) AcpiExDumpOperands(a,b,c,d,e,_THIS_MODULE,__LINE__) -#define DUMP_ENTRY(a,b) AcpiNsDumpEntry (a,b) -#define DUMP_TABLES(a,b) AcpiNsDumpTables(a,b) -#define DUMP_PATHNAME(a,b,c,d) AcpiNsDumpPathname(a,b,c,d) -#define DUMP_RESOURCE_LIST(a) AcpiRsDumpResourceList(a) -#define DUMP_BUFFER(a,b) AcpiUtDumpBuffer((UINT8 *)a,b,DB_BYTE_DISPLAY,_COMPONENT) -#define BREAK_MSG(a) AcpiOsSignal (ACPI_SIGNAL_BREAKPOINT,(a)) +#define ACPI_DUMP_ENTRY(a,b) AcpiNsDumpEntry (a,b) +#define ACPI_DUMP_TABLES(a,b) AcpiNsDumpTables(a,b) +#define ACPI_DUMP_PATHNAME(a,b,c,d) AcpiNsDumpPathname(a,b,c,d) +#define ACPI_DUMP_RESOURCE_LIST(a) AcpiRsDumpResourceList(a) +#define ACPI_DUMP_BUFFER(a,b) AcpiUtDumpBuffer((UINT8 *)a,b,DB_BYTE_DISPLAY,_COMPONENT) +#define ACPI_BREAK_MSG(a) AcpiOsSignal (ACPI_SIGNAL_BREAKPOINT,(a)) /* * Generate INT3 on ACPI_ERROR (Debug only!) */ -#define ERROR_BREAK -#ifdef ERROR_BREAK -#define BREAK_ON_ERROR(lvl) if ((lvl)&ACPI_ERROR) AcpiOsSignal(ACPI_SIGNAL_BREAKPOINT,"Fatal error encountered\n") +#define ACPI_ERROR_BREAK +#ifdef ACPI_ERROR_BREAK +#define ACPI_BREAK_ON_ERROR(lvl) if ((lvl)&ACPI_ERROR) \ + AcpiOsSignal(ACPI_SIGNAL_BREAKPOINT,"Fatal error encountered\n") #else -#define BREAK_ON_ERROR(lvl) +#define ACPI_BREAK_ON_ERROR(lvl) #endif /* @@ -563,8 +543,8 @@ * 2) Debug error level or trace level for the print statement is enabled */ -#define ACPI_DEBUG_PRINT(pl) AcpiUtDebugPrint PARAM_LIST(pl) -#define ACPI_DEBUG_PRINT_RAW(pl) AcpiUtDebugPrintRaw PARAM_LIST(pl) +#define ACPI_DEBUG_PRINT(pl) AcpiUtDebugPrint ACPI_PARAM_LIST(pl) +#define ACPI_DEBUG_PRINT_RAW(pl) AcpiUtDebugPrintRaw ACPI_PARAM_LIST(pl) #else @@ -573,33 +553,33 @@ * leaving no executable debug code! */ -#define MODULE_NAME(name) +#define ACPI_MODULE_NAME(name) #define _THIS_MODULE "" -#define DEBUG_EXEC(a) -#define NORMAL_EXEC(a) a; - -#define DEBUG_DEFINE(a) -#define DEBUG_ONLY_MEMBERS(a) -#define PROC_NAME(a) -#define FUNCTION_TRACE(a) -#define FUNCTION_TRACE_PTR(a,b) -#define FUNCTION_TRACE_U32(a,b) -#define FUNCTION_TRACE_STR(a,b) -#define FUNCTION_EXIT -#define FUNCTION_STATUS_EXIT(s) -#define FUNCTION_VALUE_EXIT(s) -#define FUNCTION_ENTRY() -#define DUMP_STACK_ENTRY(a) -#define DUMP_OPERANDS(a,b,c,d,e) -#define DUMP_ENTRY(a,b) -#define DUMP_TABLES(a,b) -#define DUMP_PATHNAME(a,b,c,d) -#define DUMP_RESOURCE_LIST(a) -#define DUMP_BUFFER(a,b) +#define ACPI_DEBUG_EXEC(a) +#define ACPI_NORMAL_EXEC(a) a; + +#define ACPI_DEBUG_DEFINE(a) +#define ACPI_DEBUG_ONLY_MEMBERS(a) +#define ACPI_FUNCTION_NAME(a) +#define ACPI_FUNCTION_TRACE(a) +#define ACPI_FUNCTION_TRACE_PTR(a,b) +#define ACPI_FUNCTION_TRACE_U32(a,b) +#define ACPI_FUNCTION_TRACE_STR(a,b) +#define ACPI_FUNCTION_EXIT +#define ACPI_FUNCTION_STATUS_EXIT(s) +#define ACPI_FUNCTION_VALUE_EXIT(s) +#define ACPI_FUNCTION_ENTRY() +#define ACPI_DUMP_STACK_ENTRY(a) +#define ACPI_DUMP_OPERANDS(a,b,c,d,e) +#define ACPI_DUMP_ENTRY(a,b) +#define ACPI_DUMP_TABLES(a,b) +#define ACPI_DUMP_PATHNAME(a,b,c,d) +#define ACPI_DUMP_RESOURCE_LIST(a) +#define ACPI_DUMP_BUFFER(a,b) #define ACPI_DEBUG_PRINT(pl) #define ACPI_DEBUG_PRINT_RAW(pl) -#define BREAK_MSG(a) +#define ACPI_BREAK_MSG(a) #define return_VOID return #define return_ACPI_STATUS(s) return(s) @@ -614,9 +594,9 @@ * DEBUG_PRINT stuff (set by ACPI_DEBUG) is on, or not. */ #ifdef ENABLE_DEBUGGER -#define DEBUGGER_EXEC(a) a +#define ACPI_DEBUGGER_EXEC(a) a #else -#define DEBUGGER_EXEC(a) +#define ACPI_DEBUGGER_EXEC(a) #endif @@ -625,9 +605,9 @@ * we are using ACPI_DEBUG to get the debug output */ #ifdef _IA16 -#undef DEBUG_ONLY_MEMBERS +#undef ACPI_DEBUG_ONLY_MEMBERS #undef _VERBOSE_STRUCTURES -#define DEBUG_ONLY_MEMBERS(a) +#define ACPI_DEBUG_ONLY_MEMBERS(a) #endif @@ -636,11 +616,11 @@ * 1) Set name to blanks * 2) Copy the object name */ -#define ADD_OBJECT_NAME(a,b) MEMSET (a->Common.Name, ' ', sizeof (a->Common.Name));\ - STRNCPY (a->Common.Name, AcpiGbl_NsTypeNames[b], sizeof (a->Common.Name)) +#define ACPI_ADD_OBJECT_NAME(a,b) ACPI_MEMSET (a->Common.Name, ' ', sizeof (a->Common.Name));\ + ACPI_STRNCPY (a->Common.Name, AcpiGbl_NsTypeNames[b], sizeof (a->Common.Name)) #else -#define ADD_OBJECT_NAME(a,b) +#define ACPI_ADD_OBJECT_NAME(a,b) #endif @@ -652,8 +632,8 @@ /* Memory allocation */ -#define ACPI_MEM_ALLOCATE(a) AcpiOsAllocate(a) -#define ACPI_MEM_CALLOCATE(a) AcpiOsCallocate(a) +#define ACPI_MEM_ALLOCATE(a) AcpiUtAllocate(a,_COMPONENT,_THIS_MODULE,__LINE__) +#define ACPI_MEM_CALLOCATE(a) AcpiUtCallocate(a, _COMPONENT,_THIS_MODULE,__LINE__) #define ACPI_MEM_FREE(a) AcpiOsFree(a) #define ACPI_MEM_TRACKING(a) @@ -662,9 +642,9 @@ /* Memory allocation */ -#define ACPI_MEM_ALLOCATE(a) AcpiUtAllocate(a,_COMPONENT,_THIS_MODULE,__LINE__) -#define ACPI_MEM_CALLOCATE(a) AcpiUtCallocate(a, _COMPONENT,_THIS_MODULE,__LINE__) -#define ACPI_MEM_FREE(a) AcpiUtFree(a,_COMPONENT,_THIS_MODULE,__LINE__) +#define ACPI_MEM_ALLOCATE(a) AcpiUtAllocateAndTrack(a,_COMPONENT,_THIS_MODULE,__LINE__) +#define ACPI_MEM_CALLOCATE(a) AcpiUtCallocateAndTrack(a, _COMPONENT,_THIS_MODULE,__LINE__) +#define ACPI_MEM_FREE(a) AcpiUtFreeAndTrack(a,_COMPONENT,_THIS_MODULE,__LINE__) #define ACPI_MEM_TRACKING(a) a #endif /* ACPI_DBG_TRACK_ALLOCATIONS */ diff --git a/sys/contrib/dev/acpica/acnamesp.h b/sys/contrib/dev/acpica/acnamesp.h index 2c94fa43fdf4..e45c93ae836e 100644 --- a/sys/contrib/dev/acpica/acnamesp.h +++ b/sys/contrib/dev/acpica/acnamesp.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acnamesp.h - Namespace subcomponent prototypes and defines - * $Revision: 115 $ + * $Revision: 123 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -120,37 +120,37 @@ /* To search the entire name space, pass this as SearchBase */ -#define NS_ALL ((ACPI_HANDLE)0) +#define ACPI_NS_ALL ((ACPI_HANDLE)0) /* * Elements of AcpiNsProperties are bit significant * and should be one-to-one with values of ACPI_OBJECT_TYPE */ -#define NSP_NORMAL 0 -#define NSP_NEWSCOPE 1 /* a definition of this type opens a name scope */ -#define NSP_LOCAL 2 /* suppress search of enclosing scopes */ +#define ACPI_NS_NORMAL 0 +#define ACPI_NS_NEWSCOPE 1 /* a definition of this type opens a name scope */ +#define ACPI_NS_LOCAL 2 /* suppress search of enclosing scopes */ /* Definitions of the predefined namespace names */ -#define ACPI_UNKNOWN_NAME (UINT32) 0x3F3F3F3F /* Unknown name is "????" */ -#define ACPI_ROOT_NAME (UINT32) 0x2F202020 /* Root name is "/ " */ -#define ACPI_SYS_BUS_NAME (UINT32) 0x5F53425F /* Sys bus name is "_SB_" */ +#define ACPI_UNKNOWN_NAME (UINT32) 0x3F3F3F3F /* Unknown name is "????" */ +#define ACPI_ROOT_NAME (UINT32) 0x2F202020 /* Root name is "/ " */ +#define ACPI_SYS_BUS_NAME (UINT32) 0x5F53425F /* Sys bus name is "_SB_" */ -#define NS_ROOT_PATH "\\" -#define NS_SYSTEM_BUS "_SB_" +#define ACPI_NS_ROOT_PATH "\\" +#define ACPI_NS_SYSTEM_BUS "_SB_" /* Flags for AcpiNsLookup, AcpiNsSearchAndEnter */ -#define NS_NO_UPSEARCH 0 -#define NS_SEARCH_PARENT 0x01 -#define NS_DONT_OPEN_SCOPE 0x02 -#define NS_NO_PEER_SEARCH 0x04 -#define NS_ERROR_IF_FOUND 0x08 +#define ACPI_NS_NO_UPSEARCH 0 +#define ACPI_NS_SEARCH_PARENT 0x01 +#define ACPI_NS_DONT_OPEN_SCOPE 0x02 +#define ACPI_NS_NO_PEER_SEARCH 0x04 +#define ACPI_NS_ERROR_IF_FOUND 0x08 -#define NS_WALK_UNLOCK TRUE -#define NS_WALK_NO_UNLOCK FALSE +#define ACPI_NS_WALK_UNLOCK TRUE +#define ACPI_NS_WALK_NO_UNLOCK FALSE ACPI_STATUS @@ -185,7 +185,7 @@ AcpiNsInitOneObject ( ACPI_STATUS AcpiNsWalkNamespace ( - ACPI_OBJECT_TYPE8 Type, + ACPI_OBJECT_TYPE Type, ACPI_HANDLE StartObject, UINT32 MaxDepth, BOOLEAN UnlockBeforeCallback, @@ -195,7 +195,7 @@ AcpiNsWalkNamespace ( ACPI_NAMESPACE_NODE * AcpiNsGetNextNode ( - ACPI_OBJECT_TYPE8 Type, + ACPI_OBJECT_TYPE Type, ACPI_NAMESPACE_NODE *Parent, ACPI_NAMESPACE_NODE *Child); @@ -239,8 +239,8 @@ ACPI_STATUS AcpiNsLookup ( ACPI_GENERIC_STATE *ScopeInfo, NATIVE_CHAR *Name, - ACPI_OBJECT_TYPE8 Type, - OPERATING_MODE InterpreterMode, + ACPI_OBJECT_TYPE Type, + ACPI_INTERPRETER_MODE InterpreterMode, UINT32 Flags, ACPI_WALK_STATE *WalkState, ACPI_NAMESPACE_NODE **RetNode); @@ -317,7 +317,7 @@ AcpiNsDumpRootDevices ( void AcpiNsDumpObjects ( - ACPI_OBJECT_TYPE8 Type, + ACPI_OBJECT_TYPE Type, UINT8 DisplayType, UINT32 MaxDepth, UINT32 OwnderId, @@ -373,15 +373,15 @@ AcpiNsExistDownstreamSibling ( /* - * Scope manipulation - nsscope + * Name and Scope manipulation - nsnames */ UINT32 AcpiNsOpensScope ( - ACPI_OBJECT_TYPE8 Type); + ACPI_OBJECT_TYPE Type); NATIVE_CHAR * -AcpiNsGetTablePathname ( +AcpiNsGetExternalPathname ( ACPI_NAMESPACE_NODE *Node); NATIVE_CHAR * @@ -390,9 +390,8 @@ AcpiNsNameOfCurrentScope ( ACPI_STATUS AcpiNsHandleToPathname ( - ACPI_HANDLE ObjHandle, - UINT32 *BufSize, - NATIVE_CHAR *UserBuffer); + ACPI_HANDLE TargetHandle, + ACPI_BUFFER *Buffer); BOOLEAN AcpiNsPatternMatch ( @@ -400,25 +399,26 @@ AcpiNsPatternMatch ( NATIVE_CHAR *SearchFor); ACPI_STATUS -AcpiNsGetNode ( - NATIVE_CHAR *Pathname, +AcpiNsGetNodeByPath ( + NATIVE_CHAR *ExternalPathname, ACPI_NAMESPACE_NODE *InPrefixNode, + UINT32 Flags, ACPI_NAMESPACE_NODE **OutNode); -UINT32 +ACPI_SIZE AcpiNsGetPathnameLength ( ACPI_NAMESPACE_NODE *Node); /* - * Object management for NTEs - nsobject + * Object management for namespace nodes - nsobject */ ACPI_STATUS AcpiNsAttachObject ( ACPI_NAMESPACE_NODE *Node, ACPI_OPERAND_OBJECT *Object, - ACPI_OBJECT_TYPE8 Type); + ACPI_OBJECT_TYPE Type); ACPI_OPERAND_OBJECT * AcpiNsGetAttachedObject ( @@ -455,8 +455,8 @@ AcpiNsSearchAndEnter ( UINT32 EntryName, ACPI_WALK_STATE *WalkState, ACPI_NAMESPACE_NODE *Node, - OPERATING_MODE InterpreterMode, - ACPI_OBJECT_TYPE8 Type, + ACPI_INTERPRETER_MODE InterpreterMode, + ACPI_OBJECT_TYPE Type, UINT32 Flags, ACPI_NAMESPACE_NODE **RetNode); @@ -464,7 +464,7 @@ ACPI_STATUS AcpiNsSearchNode ( UINT32 EntryName, ACPI_NAMESPACE_NODE *Node, - ACPI_OBJECT_TYPE8 Type, + ACPI_OBJECT_TYPE Type, ACPI_NAMESPACE_NODE **RetNode); void @@ -472,7 +472,7 @@ AcpiNsInstallNode ( ACPI_WALK_STATE *WalkState, ACPI_NAMESPACE_NODE *ParentNode, /* Parent */ ACPI_NAMESPACE_NODE *Node, /* New Child*/ - ACPI_OBJECT_TYPE8 Type); + ACPI_OBJECT_TYPE Type); /* @@ -487,13 +487,13 @@ BOOLEAN AcpiNsValidPathSeparator ( NATIVE_CHAR Sep); -ACPI_OBJECT_TYPE8 +ACPI_OBJECT_TYPE AcpiNsGetType ( ACPI_NAMESPACE_NODE *Node); UINT32 AcpiNsLocal ( - ACPI_OBJECT_TYPE8 Type); + ACPI_OBJECT_TYPE Type); ACPI_STATUS AcpiNsBuildInternalName ( @@ -528,7 +528,7 @@ AcpiNsTerminate ( void); ACPI_NAMESPACE_NODE * -AcpiNsGetParentObject ( +AcpiNsGetParentNode ( ACPI_NAMESPACE_NODE *Node); diff --git a/sys/contrib/dev/acpica/acobject.h b/sys/contrib/dev/acpica/acobject.h index edc337595a7a..f5a5a3fc5cbc 100644 --- a/sys/contrib/dev/acpica/acobject.h +++ b/sys/contrib/dev/acpica/acobject.h @@ -2,7 +2,7 @@ /****************************************************************************** * * Name: acobject.h - Definition of ACPI_OPERAND_OBJECT (Internal object only) - * $Revision: 101 $ + * $Revision: 106 $ * *****************************************************************************/ @@ -10,7 +10,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -150,7 +150,7 @@ #define ACPI_OBJECT_COMMON_HEADER /* SIZE/ALIGNMENT: 32 bits, one ptr plus trailing 8-bit flag */\ - UINT8 DataType; /* To differentiate various internal objs */\ + UINT8 Descriptor; /* To differentiate various internal objs */\ UINT8 Type; /* ACPI_OBJECT_TYPE */\ UINT16 ReferenceCount; /* For object deletion management */\ union acpi_operand_obj *NextObject; /* Objects linked to parent NS node */\ @@ -158,7 +158,7 @@ /* Defines for flag byte above */ -#define AOPOBJ_STATIC_ALLOCATION 0x01 +#define AOPOBJ_RESERVED 0x01 #define AOPOBJ_STATIC_POINTER 0x02 #define AOPOBJ_DATA_VALID 0x04 #define AOPOBJ_OBJECT_INITIALIZED 0x08 @@ -168,21 +168,19 @@ /* * Common bitfield for the field objects - * "Field Datum" -- a datum from the actual field object - * "Buffer Datum" -- a datum from a user buffer, read from or to be written to the field + * "Field Datum" -- a datum from the actual field object + * "Buffer Datum" -- a datum from a user buffer, read from or to be written to the field */ #define ACPI_COMMON_FIELD_INFO /* SIZE/ALIGNMENT: 24 bits + three 32-bit values */\ UINT8 FieldFlags; /* Access, update, and lock bits */\ - UINT16 BitLength; /* Length of field in bits */\ - UINT32 BaseByteOffset; /* Byte offset within containing object */\ - UINT8 AccessBitWidth; /* Read/Write size in bits (from ASL AccessType)*/\ + UINT8 Attribute; /* From AccessAs keyword */\ UINT8 AccessByteWidth; /* Read/Write size in bytes */\ - UINT8 Attribute ; /* From AccessAs keyword */\ + UINT32 BitLength; /* Length of field in bits */\ + UINT32 BaseByteOffset; /* Byte offset within containing object */\ UINT8 StartFieldBitOffset;/* Bit offset within first field datum (0-63) */\ UINT8 DatumValidBits; /* Valid bit in first "Field datum" */\ UINT8 EndFieldValidBits; /* Valid bits in the last "field datum" */\ UINT8 EndBufferValidBits; /* Valid bits in the last "buffer datum" */\ - UINT8 Reserved; /* Reserved for future use */\ UINT32 Value; /* Value to store into the Bank or Index register */\ ACPI_NAMESPACE_NODE *Node; /* Link back to parent node */ @@ -440,7 +438,7 @@ typedef struct /* NOTIFY HANDLER */ /* Flags for address handler */ -#define ADDR_HANDLER_DEFAULT_INSTALLED 0x1 +#define ACPI_ADDR_HANDLER_DEFAULT_INSTALLED 0x1 typedef struct /* ADDRESS HANDLER */ diff --git a/sys/contrib/dev/acpica/acoutput.h b/sys/contrib/dev/acpica/acoutput.h index 0bb067af7bcc..2bfb7a51b8ef 100644 --- a/sys/contrib/dev/acpica/acoutput.h +++ b/sys/contrib/dev/acpica/acoutput.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acoutput.h -- debug output - * $Revision: 84 $ + * $Revision: 86 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -137,25 +137,18 @@ #define ACPI_DEBUGGER 0x00000200 #define ACPI_OS_SERVICES 0x00000400 -#define ACPI_BUS 0x00010000 -#define ACPI_SYSTEM 0x00020000 -#define ACPI_POWER 0x00040000 -#define ACPI_EC 0x00080000 -#define ACPI_AC_ADAPTER 0x00100000 -#define ACPI_BATTERY 0x00200000 -#define ACPI_BUTTON 0x00400000 -#define ACPI_PROCESSOR 0x00800000 -#define ACPI_THERMAL 0x01000000 -#define ACPI_FAN 0x02000000 - -#define ACPI_ALL_COMPONENTS 0x0FFFFFFF +#define ACPI_ALL_COMPONENTS 0x00000FFF #define ACPI_COMPONENT_DEFAULT (ACPI_ALL_COMPONENTS) +/* Component IDs for ACPI tools and utilities */ + +#define ACPI_COMPILER 0x00001000 +#define ACPI_TOOLS 0x00002000 -#define ACPI_COMPILER 0x10000000 -#define ACPI_TOOLS 0x20000000 +/* Component IDs reserved for ACPI drivers */ +#define ACPI_ALL_DRIVERS 0xFFFF0000 /* * Raw debug output levels, do not use these in the DEBUG_PRINT macros diff --git a/sys/contrib/dev/acpica/acparser.h b/sys/contrib/dev/acpica/acparser.h index 3a321d7e53f6..43feb50618ac 100644 --- a/sys/contrib/dev/acpica/acparser.h +++ b/sys/contrib/dev/acpica/acparser.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: acparser.h - AML Parser subcomponent prototypes and defines - * $Revision: 55 $ + * $Revision: 58 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -125,10 +125,6 @@ #define ACPI_VAR_ARGS ACPI_UINT32_MAX -/* maximum virtual address */ - -#define ACPI_MAX_AML ((UINT8 *)(~0UL)) - #define ACPI_PARSE_DELETE_TREE 0x0001 #define ACPI_PARSE_NO_TREE_DELETE 0x0000 diff --git a/sys/contrib/dev/acpica/acpi.h b/sys/contrib/dev/acpica/acpi.h index fca0cb43758d..141c7b1d4ea5 100644 --- a/sys/contrib/dev/acpica/acpi.h +++ b/sys/contrib/dev/acpica/acpi.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acpi.h - Master include file, Publics and external data. - * $Revision: 54 $ + * $Revision: 55 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/acpiosxf.h b/sys/contrib/dev/acpica/acpiosxf.h index 52bc6536d94f..e7d3125fba78 100644 --- a/sys/contrib/dev/acpica/acpiosxf.h +++ b/sys/contrib/dev/acpica/acpiosxf.h @@ -12,7 +12,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -213,11 +213,7 @@ AcpiOsSignalSemaphore ( void * AcpiOsAllocate ( - UINT32 Size); - -void * -AcpiOsCallocate ( - UINT32 Size); + ACPI_SIZE Size); void AcpiOsFree ( @@ -226,13 +222,13 @@ AcpiOsFree ( ACPI_STATUS AcpiOsMapMemory ( ACPI_PHYSICAL_ADDRESS PhysicalAddress, - UINT32 Length, + ACPI_SIZE Size, void **LogicalAddress); void AcpiOsUnmapMemory ( void *LogicalAddress, - UINT32 Length); + ACPI_SIZE Size); ACPI_STATUS AcpiOsGetPhysicalAddress ( @@ -364,12 +360,12 @@ AcpiOsSignal ( * Debug print routines */ -INT32 +void AcpiOsPrintf ( const NATIVE_CHAR *Format, ...); -INT32 +void AcpiOsVprintf ( const NATIVE_CHAR *Format, va_list Args); diff --git a/sys/contrib/dev/acpica/acpixf.h b/sys/contrib/dev/acpica/acpixf.h index ec03fb4b9592..5a02225b2637 100644 --- a/sys/contrib/dev/acpica/acpixf.h +++ b/sys/contrib/dev/acpica/acpixf.h @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -356,11 +356,12 @@ AcpiInstallGpeHandler ( ACPI_STATUS AcpiAcquireGlobalLock ( - void); + UINT32 Timeout, + UINT32 *Handle); ACPI_STATUS AcpiReleaseGlobalLock ( - void); + UINT32 Handle); ACPI_STATUS AcpiRemoveGpeHandler ( diff --git a/sys/contrib/dev/acpica/acresrc.h b/sys/contrib/dev/acpica/acresrc.h index 4700c94bd254..a620bdfc1abb 100644 --- a/sys/contrib/dev/acpica/acresrc.h +++ b/sys/contrib/dev/acpica/acresrc.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acresrc.h - Resource Manager function prototypes - * $Revision: 25 $ + * $Revision: 30 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -147,24 +147,21 @@ AcpiRsSetSrsMethodData ( ACPI_STATUS AcpiRsCreateResourceList ( ACPI_OPERAND_OBJECT *ByteStreamBuffer, - UINT8 *OutputBuffer, - UINT32 *OutputBufferLength); + ACPI_BUFFER *OutputBuffer); ACPI_STATUS AcpiRsCreateByteStream ( ACPI_RESOURCE *LinkedListBuffer, - UINT8 *OutputBuffer, - UINT32 *OutputBufferLength); + ACPI_BUFFER *OutputBuffer); ACPI_STATUS AcpiRsCreatePciRoutingTable ( - ACPI_OPERAND_OBJECT *MethodReturnObject, - UINT8 *OutputBuffer, - UINT32 *OutputBufferLength); + ACPI_OPERAND_OBJECT *PackageObject, + ACPI_BUFFER *OutputBuffer); /* - *Function prototypes called from AcpiRsCreate*APIs + *Function prototypes called from AcpiRsCreate* */ void @@ -185,225 +182,224 @@ ACPI_STATUS AcpiRsCalculateListLength ( UINT8 *ByteStreamBuffer, UINT32 ByteStreamBufferLength, - UINT32 *SizeNeeded); + ACPI_SIZE *SizeNeeded); ACPI_STATUS AcpiRsCalculateByteStreamLength ( ACPI_RESOURCE *LinkedListBuffer, - UINT32 *SizeNeeded); + ACPI_SIZE *SizeNeeded); ACPI_STATUS AcpiRsCalculatePciRoutingTableLength ( ACPI_OPERAND_OBJECT *PackageObject, - UINT32 *BufferSizeNeeded); + ACPI_SIZE *BufferSizeNeeded); ACPI_STATUS AcpiRsByteStreamToList ( UINT8 *ByteStreamBuffer, UINT32 ByteStreamBufferLength, - UINT8 **OutputBuffer); + UINT8 *OutputBuffer); ACPI_STATUS AcpiRsListToByteStream ( ACPI_RESOURCE *LinkedList, UINT32 ByteStreamSizeNeeded, - UINT8 **OutputBuffer); + UINT8 *OutputBuffer); ACPI_STATUS AcpiRsIoResource ( UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, + ACPI_SIZE *BytesConsumed, UINT8 **OutputBuffer, - UINT32 *StructureSize); + ACPI_SIZE *StructureSize); ACPI_STATUS AcpiRsFixedIoResource ( UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, + ACPI_SIZE *BytesConsumed, UINT8 **OutputBuffer, - UINT32 *StructureSize); + ACPI_SIZE *StructureSize); ACPI_STATUS AcpiRsIoStream ( ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, - UINT32 *BytesConsumed); + ACPI_SIZE *BytesConsumed); ACPI_STATUS AcpiRsFixedIoStream ( ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, - UINT32 *BytesConsumed); + ACPI_SIZE *BytesConsumed); ACPI_STATUS AcpiRsIrqResource ( UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, + ACPI_SIZE *BytesConsumed, UINT8 **OutputBuffer, - UINT32 *StructureSize); + ACPI_SIZE *StructureSize); ACPI_STATUS AcpiRsIrqStream ( ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, - UINT32 *BytesConsumed); + ACPI_SIZE *BytesConsumed); ACPI_STATUS AcpiRsDmaResource ( UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, + ACPI_SIZE *BytesConsumed, UINT8 **OutputBuffer, - UINT32 *StructureSize); + ACPI_SIZE *StructureSize); ACPI_STATUS AcpiRsDmaStream ( ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, - UINT32 *BytesConsumed); + ACPI_SIZE *BytesConsumed); ACPI_STATUS AcpiRsAddress16Resource ( UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, + ACPI_SIZE *BytesConsumed, UINT8 **OutputBuffer, - UINT32 *StructureSize); + ACPI_SIZE *StructureSize); ACPI_STATUS AcpiRsAddress16Stream ( ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, - UINT32 *BytesConsumed); + ACPI_SIZE *BytesConsumed); ACPI_STATUS AcpiRsAddress32Resource ( UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, + ACPI_SIZE *BytesConsumed, UINT8 **OutputBuffer, - UINT32 *StructureSize); + ACPI_SIZE *StructureSize); ACPI_STATUS AcpiRsAddress32Stream ( ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, - UINT32 *BytesConsumed); + ACPI_SIZE *BytesConsumed); ACPI_STATUS AcpiRsAddress64Resource ( UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, + ACPI_SIZE *BytesConsumed, UINT8 **OutputBuffer, - UINT32 *StructureSize); + ACPI_SIZE *StructureSize); ACPI_STATUS AcpiRsAddress64Stream ( ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, - UINT32 *BytesConsumed); + ACPI_SIZE *BytesConsumed); ACPI_STATUS -AcpiRsStartDependentFunctionsResource ( +AcpiRsStartDependFnsResource ( UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, + ACPI_SIZE *BytesConsumed, UINT8 **OutputBuffer, - UINT32 *StructureSize); + ACPI_SIZE *StructureSize); ACPI_STATUS -AcpiRsEndDependentFunctionsResource ( +AcpiRsEndDependFnsResource ( UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, + ACPI_SIZE *BytesConsumed, UINT8 **OutputBuffer, - UINT32 *StructureSize); + ACPI_SIZE *StructureSize); ACPI_STATUS -AcpiRsStartDependentFunctionsStream ( +AcpiRsStartDependFnsStream ( ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, - UINT32 *BytesConsumed); + ACPI_SIZE *BytesConsumed); ACPI_STATUS -AcpiRsEndDependentFunctionsStream ( +AcpiRsEndDependFnsStream ( ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, - UINT32 *BytesConsumed); + ACPI_SIZE *BytesConsumed); ACPI_STATUS AcpiRsMemory24Resource ( UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, + ACPI_SIZE *BytesConsumed, UINT8 **OutputBuffer, - UINT32 *StructureSize); + ACPI_SIZE *StructureSize); ACPI_STATUS AcpiRsMemory24Stream ( ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, - UINT32 *BytesConsumed); + ACPI_SIZE *BytesConsumed); ACPI_STATUS AcpiRsMemory32RangeResource ( UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, + ACPI_SIZE *BytesConsumed, UINT8 **OutputBuffer, - UINT32 *StructureSize -); + ACPI_SIZE *StructureSize); ACPI_STATUS AcpiRsFixedMemory32Resource ( UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, + ACPI_SIZE *BytesConsumed, UINT8 **OutputBuffer, - UINT32 *StructureSize); + ACPI_SIZE *StructureSize); ACPI_STATUS AcpiRsMemory32RangeStream ( ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, - UINT32 *BytesConsumed); + ACPI_SIZE *BytesConsumed); ACPI_STATUS AcpiRsFixedMemory32Stream ( ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, - UINT32 *BytesConsumed); + ACPI_SIZE *BytesConsumed); ACPI_STATUS AcpiRsExtendedIrqResource ( UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, + ACPI_SIZE *BytesConsumed, UINT8 **OutputBuffer, - UINT32 *StructureSize); + ACPI_SIZE *StructureSize); ACPI_STATUS AcpiRsExtendedIrqStream ( ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, - UINT32 *BytesConsumed); + ACPI_SIZE *BytesConsumed); ACPI_STATUS AcpiRsEndTagResource ( UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, + ACPI_SIZE *BytesConsumed, UINT8 **OutputBuffer, - UINT32 *StructureSize); + ACPI_SIZE *StructureSize); ACPI_STATUS AcpiRsEndTagStream ( ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, - UINT32 *BytesConsumed); + ACPI_SIZE *BytesConsumed); ACPI_STATUS AcpiRsVendorResource ( UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, + ACPI_SIZE *BytesConsumed, UINT8 **OutputBuffer, - UINT32 *StructureSize); + ACPI_SIZE *StructureSize); ACPI_STATUS AcpiRsVendorStream ( ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, - UINT32 *BytesConsumed); + ACPI_SIZE *BytesConsumed); UINT8 AcpiRsGetResourceType ( diff --git a/sys/contrib/dev/acpica/acstruct.h b/sys/contrib/dev/acpica/acstruct.h index f214ceddee3b..4a2592b90e08 100644 --- a/sys/contrib/dev/acpica/acstruct.h +++ b/sys/contrib/dev/acpica/acstruct.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acstruct.h - Internal structs - * $Revision: 12 $ + * $Revision: 16 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -125,18 +125,17 @@ ****************************************************************************/ - /* * Walk state - current state of a parse tree walk. Used for both a leisurely stroll through * the tree (for whatever reason), and for control method execution. */ -#define NEXT_OP_DOWNWARD 1 -#define NEXT_OP_UPWARD 2 +#define ACPI_NEXT_OP_DOWNWARD 1 +#define ACPI_NEXT_OP_UPWARD 2 -#define WALK_NON_METHOD 0 -#define WALK_METHOD 1 -#define WALK_METHOD_RESTART 2 +#define ACPI_WALK_NON_METHOD 0 +#define ACPI_WALK_METHOD 1 +#define ACPI_WALK_METHOD_RESTART 2 typedef struct acpi_walk_state { @@ -153,6 +152,7 @@ typedef struct acpi_walk_state UINT32 AmlOffset; UINT32 ArgTypes; UINT32 MethodBreakpoint; /* For single stepping */ + UINT32 UserBreakpoint; /* User AML breakpoint */ UINT32 ParseFlags; UINT32 PrevArgTypes; @@ -177,11 +177,8 @@ typedef struct acpi_walk_state union acpi_operand_obj *ReturnDesc; /* Return object, if any */ ACPI_GENERIC_STATE *ScopeInfo; /* Stack of nested scopes */ -/* TBD: Obsolete with removal of WALK procedure ? */ ACPI_PARSE_OBJECT *PrevOp; /* Last op that was processed */ ACPI_PARSE_OBJECT *NextOp; /* next op to be processed */ - - ACPI_PARSE_DOWNWARDS DescendingCallback; ACPI_PARSE_UPWARDS AscendingCallback; ACPI_THREAD_STATE *Thread; @@ -191,7 +188,6 @@ typedef struct acpi_walk_state } ACPI_WALK_STATE; - /* Info used by AcpiPsInitObjects */ typedef struct acpi_init_walk_info @@ -207,7 +203,7 @@ typedef struct acpi_init_walk_info } ACPI_INIT_WALK_INFO; -/* Info used by TBD */ +/* Info used by AcpiNsInitializeDevices */ typedef struct acpi_device_walk_info { diff --git a/sys/contrib/dev/acpica/actables.h b/sys/contrib/dev/acpica/actables.h index a9695a2a0dd5..02181d6c8796 100644 --- a/sys/contrib/dev/acpica/actables.h +++ b/sys/contrib/dev/acpica/actables.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: actables.h - ACPI table management - * $Revision: 32 $ + * $Revision: 35 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -210,6 +210,11 @@ AcpiTbInstallTable ( ACPI_TABLE_DESC *TableInfo); ACPI_STATUS +AcpiTbMatchSignature ( + NATIVE_CHAR *Signature, + ACPI_TABLE_DESC *TableInfo); + +ACPI_STATUS AcpiTbRecognizeTable ( ACPI_TABLE_HEADER *TablePtr, ACPI_TABLE_DESC *TableInfo); @@ -269,6 +274,13 @@ AcpiTbFindRsdp ( */ ACPI_STATUS +AcpiTbFindTable ( + NATIVE_CHAR *Signature, + NATIVE_CHAR *OemId, + NATIVE_CHAR *OemTableId, + ACPI_TABLE_HEADER **TablePtr); + +ACPI_STATUS AcpiTbMapAcpiTable ( ACPI_PHYSICAL_ADDRESS PhysicalAddress, UINT32 *Size, diff --git a/sys/contrib/dev/acpica/actbl.h b/sys/contrib/dev/acpica/actbl.h index fe81c96a8e39..ac83e4576cb3 100644 --- a/sys/contrib/dev/acpica/actbl.h +++ b/sys/contrib/dev/acpica/actbl.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: actbl.h - Table data structures defined in ACPI specification - * $Revision: 46 $ + * $Revision: 52 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -121,7 +121,6 @@ /* * Values for description table header signatures */ - #define RSDP_NAME "RSDP" #define RSDP_SIG "RSD PTR " /* RSDT Pointer signature */ #define APIC_SIG "APIC" /* Multiple APIC Description Table */ @@ -133,7 +132,7 @@ #define XSDT_SIG "XSDT" /* Extended System Description Table */ #define SSDT_SIG "SSDT" /* Secondary System Description Table */ #define SBST_SIG "SBST" /* Smart Battery Specification Table */ -#define SPIC_SIG "SPIC" /* iosapic table */ +#define SPIC_SIG "SPIC" /* IOSAPIC table */ #define BOOT_SIG "BOOT" /* Boot table */ @@ -166,29 +165,27 @@ * Architecture-independent tables * The architecture dependent tables are in separate files */ - typedef struct /* Root System Descriptor Pointer */ { - NATIVE_CHAR Signature [8]; /* contains "RSD PTR " */ - UINT8 Checksum; /* to make sum of struct == 0 */ + NATIVE_CHAR Signature [8]; /* ACPI signature, contains "RSD PTR " */ + UINT8 Checksum; /* To make sum of struct == 0 */ NATIVE_CHAR OemId [6]; /* OEM identification */ UINT8 Revision; /* Must be 0 for 1.0, 2 for 2.0 */ UINT32 RsdtPhysicalAddress; /* 32-bit physical address of RSDT */ UINT32 Length; /* XSDT Length in bytes including hdr */ UINT64 XsdtPhysicalAddress; /* 64-bit physical address of XSDT */ UINT8 ExtendedChecksum; /* Checksum of entire table */ - NATIVE_CHAR Reserved [3]; /* reserved field must be 0 */ + NATIVE_CHAR Reserved [3]; /* Reserved field must be 0 */ } RSDP_DESCRIPTOR; typedef struct /* ACPI common table header */ { - NATIVE_CHAR Signature [4]; /* identifies type of table */ - UINT32 Length; /* length of table, in bytes, - * including header */ - UINT8 Revision; /* specification minor version # */ - UINT8 Checksum; /* to make sum of entire table == 0 */ + NATIVE_CHAR Signature [4]; /* ACPI signature (4 ASCII characters) */ + UINT32 Length; /* Length of table, in bytes, including header */ + UINT8 Revision; /* ACPI Specification minor version # */ + UINT8 Checksum; /* To make sum of entire table == 0 */ NATIVE_CHAR OemId [6]; /* OEM identification */ NATIVE_CHAR OemTableId [8]; /* OEM table identification */ UINT32 OemRevision; /* OEM revision number */ @@ -209,7 +206,7 @@ typedef struct /* Common FACS for internal use */ typedef struct /* APIC Table */ { - ACPI_TABLE_HEADER header; /* table header */ + ACPI_TABLE_HEADER Header; /* ACPI table header */ UINT32 LocalApicAddress; /* Physical address for accessing local APICs */ UINT32_BIT PCATCompat : 1; /* a one indicates system also has dual 8259s */ UINT32_BIT Reserved1 : 31; @@ -227,9 +224,9 @@ typedef struct /* APIC Header */ typedef struct /* Processor APIC */ { - APIC_HEADER header; + APIC_HEADER Header; UINT8 ProcessorApicId; /* ACPI processor id */ - UINT8 LocalApicId; /* processor's local APIC id */ + UINT8 LocalApicId; /* Processor's local APIC id */ UINT32_BIT ProcessorEnabled: 1; /* Processor is usable if set */ UINT32_BIT Reserved1 : 31; @@ -238,26 +235,26 @@ typedef struct /* Processor APIC */ typedef struct /* IO APIC */ { - APIC_HEADER header; + APIC_HEADER Header; UINT8 IoApicId; /* I/O APIC ID */ - UINT8 Reserved; /* reserved - must be zero */ + UINT8 Reserved; /* Reserved - must be zero */ UINT32 IoApicAddress; /* APIC's physical address */ - UINT32 Vector; /* interrupt vector index where INTI + UINT32 Vector; /* Interrupt vector index where INTI * lines start */ } IO_APIC; /* -** IA64 TODO: Add SAPIC Tables -*/ + * IA64 TBD: Add SAPIC Tables + */ /* -** IA64 TODO: Modify Smart Battery Description to comply with ACPI IA64 -** extensions. -*/ + * IA64 TBD: Modify Smart Battery Description to comply with ACPI IA64 + * extensions. + */ typedef struct /* Smart Battery Description Table */ { - ACPI_TABLE_HEADER header; + ACPI_TABLE_HEADER Header; UINT32 WarningLevel; UINT32 LowLevel; UINT32 CriticalLevel; @@ -273,7 +270,6 @@ typedef struct /* Smart Battery Description Table */ * and type of memory allocation (mapped or allocated) for each * table for 1) when we exit, and 2) if a new table is installed */ - #define ACPI_MEM_NOT_ALLOCATED 0 #define ACPI_MEM_ALLOCATED 1 #define ACPI_MEM_MAPPED 2 @@ -282,7 +278,7 @@ typedef struct /* Smart Battery Description Table */ #define ACPI_TABLE_SINGLE 0 #define ACPI_TABLE_MULTIPLE 1 - +#define ACPI_TABLE_EXECUTABLE 2 /* Data about each known table type */ @@ -290,19 +286,17 @@ typedef struct _AcpiTableSupport { NATIVE_CHAR *Name; NATIVE_CHAR *Signature; + void **GlobalPtr; UINT8 SigLength; UINT8 Flags; - UINT16 Status; - void **GlobalPtr; } ACPI_TABLE_SUPPORT; + /* * Get the architecture-specific tables */ - -#include "actbl1.h" /* Acpi 1.0 table defintions */ -#include "actbl71.h" /* Acpi 0.71 IA-64 Extension table defintions */ +#include "actbl1.h" /* Acpi 1.0 table definitions */ #include "actbl2.h" /* Acpi 2.0 table definitions */ #endif /* __ACTBL_H__ */ diff --git a/sys/contrib/dev/acpica/actbl1.h b/sys/contrib/dev/acpica/actbl1.h index 246822142dcb..c99792cc71e1 100644 --- a/sys/contrib/dev/acpica/actbl1.h +++ b/sys/contrib/dev/acpica/actbl1.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: actbl1.h - ACPI 1.0 tables - * $Revision: 17 $ + * $Revision: 21 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -119,53 +119,50 @@ #pragma pack(1) -/*************************************/ -/* ACPI Specification Rev 1.0 for */ -/* the Root System Description Table */ -/*************************************/ +/* + * ACPI 1.0 Root System Description Table (RSDT) + */ typedef struct { - ACPI_TABLE_HEADER header; /* Table header */ + ACPI_TABLE_HEADER Header; /* ACPI Table header */ UINT32 TableOffsetEntry [1]; /* Array of pointers to other */ /* ACPI tables */ } RSDT_DESCRIPTOR_REV1; -/***************************************/ -/* ACPI Specification Rev 1.0 for */ -/* the Firmware ACPI Control Structure */ -/***************************************/ +/* + * ACPI 1.0 Firmware ACPI Control Structure (FACS) + */ typedef struct { - NATIVE_CHAR Signature[4]; /* signature "FACS" */ - UINT32 Length; /* length of structure, in bytes */ - UINT32 HardwareSignature; /* hardware configuration signature */ + NATIVE_CHAR Signature[4]; /* ACPI Signature */ + UINT32 Length; /* Length of structure, in bytes */ + UINT32 HardwareSignature; /* Hardware configuration signature */ UINT32 FirmwareWakingVector; /* ACPI OS waking vector */ UINT32 GlobalLock; /* Global Lock */ UINT32_BIT S4Bios_f : 1; /* Indicates if S4BIOS support is present */ - UINT32_BIT Reserved1 : 31; /* must be 0 */ - UINT8 Resverved3 [40]; /* reserved - must be zero */ + UINT32_BIT Reserved1 : 31; /* Must be 0 */ + UINT8 Resverved3 [40]; /* Reserved - must be zero */ } FACS_DESCRIPTOR_REV1; -/************************************/ -/* ACPI Specification Rev 1.0 for */ -/* the Fixed ACPI Description Table */ -/************************************/ +/* + * ACPI 1.0 Fixed ACPI Description Table (FADT) + */ typedef struct { - ACPI_TABLE_HEADER header; /* table header */ + ACPI_TABLE_HEADER Header; /* ACPI Table header */ UINT32 FirmwareCtrl; /* Physical address of FACS */ UINT32 Dsdt; /* Physical address of DSDT */ UINT8 Model; /* System Interrupt Model */ - UINT8 Reserved1; /* reserved */ + UINT8 Reserved1; /* Reserved */ UINT16 SciInt; /* System vector of SCI interrupt */ UINT32 SmiCmd; /* Port address of SMI command port */ - UINT8 AcpiEnable; /* value to write to smi_cmd to enable ACPI */ - UINT8 AcpiDisable; /* value to write to smi_cmd to disable ACPI */ + UINT8 AcpiEnable; /* Value to write to smi_cmd to enable ACPI */ + UINT8 AcpiDisable; /* Value to write to smi_cmd to disable ACPI */ UINT8 S4BiosReq; /* Value to write to SMI CMD to enter S4BIOS state */ - UINT8 Reserved2; /* reserved - must be zero */ + UINT8 Reserved2; /* Reserved - must be zero */ UINT32 Pm1aEvtBlk; /* Port address of Power Mgt 1a AcpiEvent Reg Blk */ UINT32 Pm1bEvtBlk; /* Port address of Power Mgt 1b AcpiEvent Reg Blk */ UINT32 Pm1aCntBlk; /* Port address of Power Mgt 1a Control Reg Blk */ @@ -180,30 +177,30 @@ typedef struct UINT8 PmTmLen; /* Byte Length of ports at pm_tm_blk */ UINT8 Gpe0BlkLen; /* Byte Length of ports at gpe0_blk */ UINT8 Gpe1BlkLen; /* Byte Length of ports at gpe1_blk */ - UINT8 Gpe1Base; /* offset in gpe model where gpe1 events start */ - UINT8 Reserved3; /* reserved */ - UINT16 Plvl2Lat; /* worst case HW latency to enter/exit C2 state */ - UINT16 Plvl3Lat; /* worst case HW latency to enter/exit C3 state */ + UINT8 Gpe1Base; /* Offset in gpe model where gpe1 events start */ + UINT8 Reserved3; /* Reserved */ + UINT16 Plvl2Lat; /* Worst case HW latency to enter/exit C2 state */ + UINT16 Plvl3Lat; /* Worst case HW latency to enter/exit C3 state */ UINT16 FlushSize; /* Size of area read to flush caches */ UINT16 FlushStride; /* Stride used in flushing caches */ - UINT8 DutyOffset; /* bit location of duty cycle field in p_cnt reg */ - UINT8 DutyWidth; /* bit width of duty cycle field in p_cnt reg */ - UINT8 DayAlrm; /* index to day-of-month alarm in RTC CMOS RAM */ - UINT8 MonAlrm; /* index to month-of-year alarm in RTC CMOS RAM */ - UINT8 Century; /* index to century in RTC CMOS RAM */ - UINT8 Reserved4; /* reserved */ - UINT8 Reserved4a; /* reserved */ - UINT8 Reserved4b; /* reserved */ - UINT32_BIT WbInvd : 1; /* wbinvd instruction works properly */ - UINT32_BIT WbInvdFlush : 1; /* wbinvd flushes but does not invalidate */ - UINT32_BIT ProcC1 : 1; /* all processors support C1 state */ + UINT8 DutyOffset; /* Bit location of duty cycle field in p_cnt reg */ + UINT8 DutyWidth; /* Bit width of duty cycle field in p_cnt reg */ + UINT8 DayAlrm; /* Index to day-of-month alarm in RTC CMOS RAM */ + UINT8 MonAlrm; /* Index to month-of-year alarm in RTC CMOS RAM */ + UINT8 Century; /* Index to century in RTC CMOS RAM */ + UINT8 Reserved4; /* Reserved */ + UINT8 Reserved4a; /* Reserved */ + UINT8 Reserved4b; /* Reserved */ + UINT32_BIT WbInvd : 1; /* The wbinvd instruction works properly */ + UINT32_BIT WbInvdFlush : 1; /* The wbinvd flushes but does not invalidate */ + UINT32_BIT ProcC1 : 1; /* All processors support C1 state */ UINT32_BIT Plvl2Up : 1; /* C2 state works on MP system */ UINT32_BIT PwrButton : 1; /* Power button is handled as a generic feature */ UINT32_BIT SleepButton : 1; /* Sleep button is handled as a generic feature, or not present */ UINT32_BIT FixedRTC : 1; /* RTC wakeup stat not in fixed register space */ UINT32_BIT Rtcs4 : 1; /* RTC wakeup stat not possible from S4 */ - UINT32_BIT TmrValExt : 1; /* tmr_val is 32 bits */ - UINT32_BIT Reserved5 : 23; /* reserved - must be zero */ + UINT32_BIT TmrValExt : 1; /* The tmr_val width is 32 bits (0 = 24 bits) */ + UINT32_BIT Reserved5 : 23; /* Reserved - must be zero */ } FADT_DESCRIPTOR_REV1; diff --git a/sys/contrib/dev/acpica/actbl2.h b/sys/contrib/dev/acpica/actbl2.h index 3c17cc10ae1b..e0f9c68cb247 100644 --- a/sys/contrib/dev/acpica/actbl2.h +++ b/sys/contrib/dev/acpica/actbl2.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: actbl2.h - ACPI Specification Revision 2.0 Tables - * $Revision: 24 $ + * $Revision: 27 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -140,48 +140,48 @@ #pragma pack(1) /* - * ACPI Specification Rev 2.0 for the Root System Description Table + * ACPI 2.0 Root System Description Table (RSDT) */ typedef struct { - ACPI_TABLE_HEADER header; /* Table header */ + ACPI_TABLE_HEADER Header; /* ACPI table header */ UINT32 TableOffsetEntry [1]; /* Array of pointers to */ - /* other tables' headers */ + /* ACPI table headers */ } RSDT_DESCRIPTOR_REV2; /* - * ACPI Specification Rev 2.0 for the Extended System Description Table (XSDT) + * ACPI 2.0 Extended System Description Table (XSDT) */ typedef struct { - ACPI_TABLE_HEADER Header; /* Table header */ + ACPI_TABLE_HEADER Header; /* ACPI table header */ UINT64 TableOffsetEntry [1]; /* Array of pointers to */ - /* other tables' headers */ + /* ACPI table headers */ } XSDT_DESCRIPTOR_REV2; /* - * ACPI Specification Rev 2.0 for the Firmware ACPI Control Structure + * ACPI 2.0 Firmware ACPI Control Structure (FACS) */ typedef struct { - NATIVE_CHAR Signature[4]; /* signature "FACS" */ - UINT32 Length; /* length of structure, in bytes */ - UINT32 HardwareSignature; /* hardware configuration signature */ + NATIVE_CHAR Signature[4]; /* ACPI signature */ + UINT32 Length; /* Length of structure, in bytes */ + UINT32 HardwareSignature; /* Hardware configuration signature */ UINT32 FirmwareWakingVector; /* 32bit physical address of the Firmware Waking Vector. */ UINT32 GlobalLock; /* Global Lock used to synchronize access to shared hardware resources */ - UINT32_BIT S4Bios_f : 1; /* Indicates if S4BIOS support is present */ - UINT32_BIT Reserved1 : 31; /* must be 0 */ + UINT32 S4Bios_f : 1; /* S4Bios_f - Indicates if S4BIOS support is present */ + UINT32_BIT Reserved1 : 31; /* Must be 0 */ UINT64 XFirmwareWakingVector; /* 64bit physical address of the Firmware Waking Vector. */ UINT8 Version; /* Version of this table */ - UINT8 Reserved3 [31]; /* reserved - must be zero */ + UINT8 Reserved3 [31]; /* Reserved - must be zero */ } FACS_DESCRIPTOR_REV2; /* - * ACPI Specification Rev 2.0 for the Generic Address Structure (GAS) + * ACPI 2.0 Generic Address Structure (GAS) */ typedef struct { @@ -195,21 +195,21 @@ typedef struct /* - * ACPI Specification Rev 2.0 for the Fixed ACPI Description Table + * ACPI 2.0 Fixed ACPI Description Table (FADT) */ typedef struct { - ACPI_TABLE_HEADER header; /* table header */ + ACPI_TABLE_HEADER Header; /* ACPI table header */ UINT32 V1_FirmwareCtrl; /* 32-bit physical address of FACS */ UINT32 V1_Dsdt; /* 32-bit physical address of DSDT */ UINT8 Reserved1; /* System Interrupt Model isn't used in ACPI 2.0*/ UINT8 Prefer_PM_Profile; /* Conveys preferred power management profile to OSPM. */ UINT16 SciInt; /* System vector of SCI interrupt */ UINT32 SmiCmd; /* Port address of SMI command port */ - UINT8 AcpiEnable; /* value to write to smi_cmd to enable ACPI */ - UINT8 AcpiDisable; /* value to write to smi_cmd to disable ACPI */ + UINT8 AcpiEnable; /* Value to write to smi_cmd to enable ACPI */ + UINT8 AcpiDisable; /* Value to write to smi_cmd to disable ACPI */ UINT8 S4BiosReq; /* Value to write to SMI CMD to enter S4BIOS state */ - UINT8 PstateCnt; /* processor performance state control*/ + UINT8 PstateCnt; /* Processor performance state control*/ UINT32 V1_Pm1aEvtBlk; /* Port address of Power Mgt 1a AcpiEvent Reg Blk */ UINT32 V1_Pm1bEvtBlk; /* Port address of Power Mgt 1b AcpiEvent Reg Blk */ UINT32 V1_Pm1aCntBlk; /* Port address of Power Mgt 1a Control Reg Blk */ @@ -224,35 +224,35 @@ typedef struct UINT8 PmTmLen; /* Byte Length of ports at pm_tm_blk */ UINT8 Gpe0BlkLen; /* Byte Length of ports at gpe0_blk */ UINT8 Gpe1BlkLen; /* Byte Length of ports at gpe1_blk */ - UINT8 Gpe1Base; /* offset in gpe model where gpe1 events start */ + UINT8 Gpe1Base; /* Offset in gpe model where gpe1 events start */ UINT8 CstCnt; /* Support for the _CST object and C States change notification.*/ - UINT16 Plvl2Lat; /* worst case HW latency to enter/exit C2 state */ - UINT16 Plvl3Lat; /* worst case HW latency to enter/exit C3 state */ - UINT16 FlushSize; /* number of flush strides that need to be read */ + UINT16 Plvl2Lat; /* Worst case HW latency to enter/exit C2 state */ + UINT16 Plvl3Lat; /* Worst case HW latency to enter/exit C3 state */ + UINT16 FlushSize; /* Number of flush strides that need to be read */ UINT16 FlushStride; /* Processor's memory cache line width, in bytes */ UINT8 DutyOffset; /* Processor’s duty cycle index in processor's P_CNT reg*/ UINT8 DutyWidth; /* Processor’s duty cycle value bit width in P_CNT register.*/ - UINT8 DayAlrm; /* index to day-of-month alarm in RTC CMOS RAM */ - UINT8 MonAlrm; /* index to month-of-year alarm in RTC CMOS RAM */ - UINT8 Century; /* index to century in RTC CMOS RAM */ + UINT8 DayAlrm; /* Index to day-of-month alarm in RTC CMOS RAM */ + UINT8 MonAlrm; /* Index to month-of-year alarm in RTC CMOS RAM */ + UINT8 Century; /* Index to century in RTC CMOS RAM */ UINT16 IapcBootArch; /* IA-PC Boot Architecture Flags. See Table 5-10 for description*/ - UINT8 Reserved2; /* reserved */ - UINT32_BIT WbInvd : 1; /* wbinvd instruction works properly */ - UINT32_BIT WbInvdFlush : 1; /* wbinvd flushes but does not invalidate */ - UINT32_BIT ProcC1 : 1; /* all processors support C1 state */ + UINT8 Reserved2; /* Reserved */ + UINT32_BIT WbInvd : 1; /* The wbinvd instruction works properly */ + UINT32_BIT WbInvdFlush : 1; /* The wbinvd flushes but does not invalidate */ + UINT32_BIT ProcC1 : 1; /* All processors support C1 state */ UINT32_BIT Plvl2Up : 1; /* C2 state works on MP system */ UINT32_BIT PwrButton : 1; /* Power button is handled as a generic feature */ UINT32_BIT SleepButton : 1; /* Sleep button is handled as a generic feature, or not present */ UINT32_BIT FixedRTC : 1; /* RTC wakeup stat not in fixed register space */ UINT32_BIT Rtcs4 : 1; /* RTC wakeup stat not possible from S4 */ - UINT32_BIT TmrValExt : 1; /* tmr_val is 32 bits */ + UINT32_BIT TmrValExt : 1; /* Indicates tmr_val is 32 bits 0=24-bits*/ UINT32_BIT DockCap : 1; /* Supports Docking */ UINT32_BIT ResetRegSup : 1; /* Indicates system supports system reset via the FADT RESET_REG*/ UINT32_BIT SealedCase : 1; /* Indicates system has no internal expansion capabilities and case is sealed. */ UINT32_BIT Headless : 1; /* Indicates system does not have local video capabilities or local input devices.*/ UINT32_BIT CpuSwSleep : 1; /* Indicates to OSPM that a processor native instruction */ - /* must be executed after writing the SLP_TYPx register. */ - UINT32_BIT Reserved6 : 18; /* reserved - must be zero */ + /* Must be executed after writing the SLP_TYPx register. */ + UINT32_BIT Reserved6 : 18; /* Reserved - must be zero */ ACPI_GENERIC_ADDRESS ResetRegister; /* Reset register address in GAS format */ UINT8 ResetValue; /* Value to write to the ResetRegister port to reset the system. */ diff --git a/sys/contrib/dev/acpica/actbl71.h b/sys/contrib/dev/acpica/actbl71.h index a8d43921426f..6a84009792ac 100644 --- a/sys/contrib/dev/acpica/actbl71.h +++ b/sys/contrib/dev/acpica/actbl71.h @@ -3,7 +3,7 @@ * Name: actbl71.h - IA-64 Extensions to the ACPI Spec Rev. 0.71 * This file includes tables specific to this * specification revision. - * $Revision: 11 $ + * $Revision: 12 $ * *****************************************************************************/ @@ -11,7 +11,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/actypes.h b/sys/contrib/dev/acpica/actypes.h index 31e1b6cb7a3a..a8d88c3d7554 100644 --- a/sys/contrib/dev/acpica/actypes.h +++ b/sys/contrib/dev/acpica/actypes.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: actypes.h - Common data types for the entire ACPI subsystem - * $Revision: 199 $ + * $Revision: 223 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -136,7 +136,6 @@ * UINT64 64-bit (8 byte) unsigned value * NATIVE_INT 32-bit on IA-32, 64-bit on IA-64 signed value * NATIVE_UINT 32-bit on IA-32, 64-bit on IA-64 unsigned value - * UCHAR Character. 1 byte unsigned value. */ @@ -146,21 +145,22 @@ */ typedef unsigned char UINT8; typedef unsigned char BOOLEAN; -typedef unsigned char UCHAR; typedef unsigned short UINT16; typedef int INT32; typedef unsigned int UINT32; typedef COMPILER_DEPENDENT_UINT64 UINT64; typedef UINT64 NATIVE_UINT; -typedef INT64 NATIVE_INT; +typedef UINT64 NATIVE_INT; typedef NATIVE_UINT ACPI_TBLPTR; typedef UINT64 ACPI_IO_ADDRESS; typedef UINT64 ACPI_PHYSICAL_ADDRESS; +typedef UINT64 ACPI_SIZE; #define ALIGNED_ADDRESS_BOUNDARY 0x00000008 /* No hardware alignment support in IA64 */ #define ACPI_USE_NATIVE_DIVIDE /* Native 64-bit integer support */ +#define ACPI_MAX_PTR 0xFFFFFFFFFFFFFFFF #elif _IA16 @@ -169,7 +169,6 @@ typedef UINT64 ACPI_PHYSICAL_ADDRESS; */ typedef unsigned char UINT8; typedef unsigned char BOOLEAN; -typedef unsigned char UCHAR; typedef unsigned int UINT16; typedef long INT32; typedef int INT16; @@ -188,10 +187,12 @@ typedef INT16 NATIVE_INT; typedef UINT32 ACPI_TBLPTR; typedef UINT32 ACPI_IO_ADDRESS; typedef char *ACPI_PHYSICAL_ADDRESS; +typedef UINT32 ACPI_SIZE; #define ALIGNED_ADDRESS_BOUNDARY 0x00000002 #define _HW_ALIGNMENT_SUPPORT #define ACPI_USE_NATIVE_DIVIDE /* No 64-bit integers, ok to use native divide */ +#define ACPI_MAX_PTR 0xFFFF /* * (16-bit only) internal integers must be 32-bits, so @@ -206,7 +207,6 @@ typedef char *ACPI_PHYSICAL_ADDRESS; */ typedef unsigned char UINT8; typedef unsigned char BOOLEAN; -typedef unsigned char UCHAR; typedef unsigned short UINT16; typedef int INT32; typedef unsigned int UINT32; @@ -218,9 +218,11 @@ typedef INT32 NATIVE_INT; typedef NATIVE_UINT ACPI_TBLPTR; typedef UINT32 ACPI_IO_ADDRESS; typedef UINT64 ACPI_PHYSICAL_ADDRESS; +typedef UINT32 ACPI_SIZE; #define ALIGNED_ADDRESS_BOUNDARY 0x00000004 #define _HW_ALIGNMENT_SUPPORT +#define ACPI_MAX_PTR 0xFFFFFFFF #endif @@ -242,11 +244,13 @@ typedef char NATIVE_CHAR; #define ACPI_UINT16_MAX (UINT16) 0xFFFF #define ACPI_UINT32_MAX (UINT32) 0xFFFFFFFF #define ACPI_UINT64_MAX (UINT64) 0xFFFFFFFFFFFFFFFF +#define ACPI_ASCII_MAX 0x7F #ifdef DEFINE_ALTERNATE_TYPES /* - * Types used only in translated source + * Types used only in translated source, defined here to enable + * cross-platform compilation only. */ typedef INT32 s32; typedef UINT8 u8; @@ -342,7 +346,7 @@ typedef UINT64 ACPI_INTEGER; * Constants with special meanings */ -#define ACPI_ROOT_OBJECT (ACPI_HANDLE)(-1) +#define ACPI_ROOT_OBJECT (ACPI_HANDLE) ACPI_PTR_ADD (char, NULL, ACPI_UINT32_MAX) /* @@ -352,9 +356,10 @@ typedef UINT64 ACPI_INTEGER; #define ACPI_NO_ADDRESS_SPACE_INIT 0x01 #define ACPI_NO_HARDWARE_INIT 0x02 #define ACPI_NO_EVENT_INIT 0x04 -#define ACPI_NO_ACPI_ENABLE 0x08 -#define ACPI_NO_DEVICE_INIT 0x10 -#define ACPI_NO_OBJECT_INIT 0x20 +#define ACPI_NO_HANDLER_INIT 0x08 +#define ACPI_NO_ACPI_ENABLE 0x10 +#define ACPI_NO_DEVICE_INIT 0x20 +#define ACPI_NO_OBJECT_INIT 0x40 /* * Initialization state @@ -383,6 +388,13 @@ typedef UINT64 ACPI_INTEGER; #define ACPI_D_STATES_MAX ACPI_STATE_D3 #define ACPI_D_STATE_COUNT 4 +#define ACPI_STATE_C0 (UINT8) 0 +#define ACPI_STATE_C1 (UINT8) 1 +#define ACPI_STATE_C2 (UINT8) 2 +#define ACPI_STATE_C3 (UINT8) 3 +#define ACPI_C_STATES_MAX ACPI_STATE_C3 +#define ACPI_C_STATE_COUNT 4 + /* * Sleep type invalid value */ @@ -423,15 +435,13 @@ typedef UINT32 ACPI_TABLE_TYPE; * Types associated with names. The first group of * values correspond to the definition of the ACPI * ObjectType operator (See the ACPI Spec). Therefore, - * only add to the first group if the spec changes! + * only add to the first group if the spec changes. * * Types must be kept in sync with the AcpiNsProperties * and AcpiNsTypeNames arrays */ typedef UINT32 ACPI_OBJECT_TYPE; -typedef UINT8 ACPI_OBJECT_TYPE8; - #define ACPI_TYPE_ANY 0x00 #define ACPI_TYPE_INTEGER 0x01 /* Byte/Word/Dword/Zero/One/Ones */ @@ -534,49 +544,40 @@ typedef UINT8 ACPI_OBJECT_TYPE8; /* - * AcpiEvent Types: - * ------------ - * Fixed & general purpose... + * AcpiEvent Types: Fixed & General Purpose */ typedef UINT32 ACPI_EVENT_TYPE; -#define ACPI_EVENT_FIXED (ACPI_EVENT_TYPE) 0 -#define ACPI_EVENT_GPE (ACPI_EVENT_TYPE) 1 +#define ACPI_EVENT_FIXED 0 +#define ACPI_EVENT_GPE 1 /* * Fixed events */ -#define ACPI_EVENT_PMTIMER (ACPI_EVENT_TYPE) 0 - /* - * There's no bus master event so index 1 is used for IRQ's that are not - * handled by the SCI handler - */ -#define ACPI_EVENT_NOT_USED (ACPI_EVENT_TYPE) 1 -#define ACPI_EVENT_GLOBAL (ACPI_EVENT_TYPE) 2 -#define ACPI_EVENT_POWER_BUTTON (ACPI_EVENT_TYPE) 3 -#define ACPI_EVENT_SLEEP_BUTTON (ACPI_EVENT_TYPE) 4 -#define ACPI_EVENT_RTC (ACPI_EVENT_TYPE) 5 -#define ACPI_EVENT_GENERAL (ACPI_EVENT_TYPE) 6 -#define ACPI_EVENT_MAX 6 -#define ACPI_NUM_FIXED_EVENTS (ACPI_EVENT_TYPE) 7 +#define ACPI_EVENT_PMTIMER 0 +#define ACPI_EVENT_GLOBAL 1 +#define ACPI_EVENT_POWER_BUTTON 2 +#define ACPI_EVENT_SLEEP_BUTTON 3 +#define ACPI_EVENT_RTC 4 +#define ACPI_EVENT_MAX 4 +#define ACPI_NUM_FIXED_EVENTS ACPI_EVENT_MAX + 1 #define ACPI_GPE_INVALID 0xFF #define ACPI_GPE_MAX 0xFF #define ACPI_NUM_GPE 256 -#define ACPI_EVENT_LEVEL_TRIGGERED (ACPI_EVENT_TYPE) 1 -#define ACPI_EVENT_EDGE_TRIGGERED (ACPI_EVENT_TYPE) 2 +#define ACPI_EVENT_LEVEL_TRIGGERED 1 +#define ACPI_EVENT_EDGE_TRIGGERED 2 /* * GPEs */ -#define ACPI_EVENT_ENABLE 0x1 -#define ACPI_EVENT_WAKE_ENABLE 0x2 -#define ACPI_EVENT_DISABLE 0x1 -#define ACPI_EVENT_WAKE_DISABLE 0x2 +#define ACPI_EVENT_WAKE_ENABLE 0x1 + +#define ACPI_EVENT_WAKE_DISABLE 0x1 /* @@ -608,7 +609,7 @@ typedef UINT32 ACPI_EVENT_STATUS; #define ACPI_DEVICE_NOTIFY 1 #define ACPI_MAX_NOTIFY_HANDLER_TYPE 1 -#define MAX_SYS_NOTIFY 0x7f +#define ACPI_MAX_SYS_NOTIFY 0x7f /* Address Space (Operation Region) Types */ @@ -622,6 +623,7 @@ typedef UINT8 ACPI_ADR_SPACE_TYPE; #define ACPI_ADR_SPACE_SMBUS (ACPI_ADR_SPACE_TYPE) 4 #define ACPI_ADR_SPACE_CMOS (ACPI_ADR_SPACE_TYPE) 5 #define ACPI_ADR_SPACE_PCI_BAR_TARGET (ACPI_ADR_SPACE_TYPE) 6 +#define ACPI_ADR_SPACE_DATA_TABLE (ACPI_ADR_SPACE_TYPE) 7 /* @@ -680,7 +682,7 @@ typedef union AcpiObj UINT32 ResourceOrder; } PowerResource; -} ACPI_OBJECT, *PACPI_OBJECT; +} ACPI_OBJECT; /* @@ -692,16 +694,20 @@ typedef struct AcpiObjList UINT32 Count; ACPI_OBJECT *Pointer; -} ACPI_OBJECT_LIST, *PACPI_OBJECT_LIST; +} ACPI_OBJECT_LIST; /* * Miscellaneous common Data Structures used by the interfaces */ +#define ACPI_NO_BUFFER 0 +#define ACPI_ALLOCATE_BUFFER (ACPI_SIZE) (-1) +#define ACPI_ALLOCATE_LOCAL_BUFFER (ACPI_SIZE) (-2) + typedef struct { - UINT32 Length; /* Length in bytes of the buffer */ + ACPI_SIZE Length; /* Length in bytes of the buffer */ void *Pointer; /* pointer to buffer */ } ACPI_BUFFER; @@ -720,10 +726,10 @@ typedef struct * Structure and flags for AcpiGetSystemInfo */ -#define SYS_MODE_UNKNOWN 0x0000 -#define SYS_MODE_ACPI 0x0001 -#define SYS_MODE_LEGACY 0x0002 -#define SYS_MODES_MASK 0x0003 +#define ACPI_SYS_MODE_UNKNOWN 0x0000 +#define ACPI_SYS_MODE_ACPI 0x0001 +#define ACPI_SYS_MODE_LEGACY 0x0002 +#define ACPI_SYS_MODES_MASK 0x0003 /* @@ -791,7 +797,7 @@ ACPI_STATUS (*ACPI_ADR_SPACE_HANDLER) ( void *HandlerContext, void *RegionContext); -#define ACPI_DEFAULT_HANDLER ((ACPI_ADR_SPACE_HANDLER) NULL) +#define ACPI_DEFAULT_HANDLER ((ACPI_ADR_SPACE_HANDLER) NULL) typedef @@ -814,8 +820,8 @@ ACPI_STATUS (*ACPI_WALK_CALLBACK) ( /* Interrupt handler return values */ -#define INTERRUPT_NOT_HANDLED 0x00 -#define INTERRUPT_HANDLED 0x01 +#define ACPI_INTERRUPT_NOT_HANDLED 0x00 +#define ACPI_INTERRUPT_HANDLED 0x01 /* Structure and flags for AcpiGetDeviceInfo */ @@ -880,78 +886,78 @@ typedef struct /* * Memory Attributes */ -#define READ_ONLY_MEMORY (UINT8) 0x00 -#define READ_WRITE_MEMORY (UINT8) 0x01 +#define ACPI_READ_ONLY_MEMORY (UINT8) 0x00 +#define ACPI_READ_WRITE_MEMORY (UINT8) 0x01 -#define NON_CACHEABLE_MEMORY (UINT8) 0x00 -#define CACHABLE_MEMORY (UINT8) 0x01 -#define WRITE_COMBINING_MEMORY (UINT8) 0x02 -#define PREFETCHABLE_MEMORY (UINT8) 0x03 +#define ACPI_NON_CACHEABLE_MEMORY (UINT8) 0x00 +#define ACPI_CACHABLE_MEMORY (UINT8) 0x01 +#define ACPI_WRITE_COMBINING_MEMORY (UINT8) 0x02 +#define ACPI_PREFETCHABLE_MEMORY (UINT8) 0x03 /* * IO Attributes * The ISA IO ranges are: n000-n0FFh, n400-n4FFh, n800-n8FFh, nC00-nCFFh. * The non-ISA IO ranges are: n100-n3FFh, n500-n7FFh, n900-nBFFh, nCD0-nFFFh. */ -#define NON_ISA_ONLY_RANGES (UINT8) 0x01 -#define ISA_ONLY_RANGES (UINT8) 0x02 -#define ENTIRE_RANGE (NON_ISA_ONLY_RANGES | ISA_ONLY_RANGES) +#define ACPI_NON_ISA_ONLY_RANGES (UINT8) 0x01 +#define ACPI_ISA_ONLY_RANGES (UINT8) 0x02 +#define ACPI_ENTIRE_RANGE (ACPI_NON_ISA_ONLY_RANGES | ACPI_ISA_ONLY_RANGES) /* * IO Port Descriptor Decode */ -#define DECODE_10 (UINT8) 0x00 /* 10-bit IO address decode */ -#define DECODE_16 (UINT8) 0x01 /* 16-bit IO address decode */ +#define ACPI_DECODE_10 (UINT8) 0x00 /* 10-bit IO address decode */ +#define ACPI_DECODE_16 (UINT8) 0x01 /* 16-bit IO address decode */ /* * IRQ Attributes */ -#define EDGE_SENSITIVE (UINT8) 0x00 -#define LEVEL_SENSITIVE (UINT8) 0x01 +#define ACPI_EDGE_SENSITIVE (UINT8) 0x00 +#define ACPI_LEVEL_SENSITIVE (UINT8) 0x01 -#define ACTIVE_HIGH (UINT8) 0x00 -#define ACTIVE_LOW (UINT8) 0x01 +#define ACPI_ACTIVE_HIGH (UINT8) 0x00 +#define ACPI_ACTIVE_LOW (UINT8) 0x01 -#define EXCLUSIVE (UINT8) 0x00 -#define SHARED (UINT8) 0x01 +#define ACPI_EXCLUSIVE (UINT8) 0x00 +#define ACPI_SHARED (UINT8) 0x01 /* * DMA Attributes */ -#define COMPATIBILITY (UINT8) 0x00 -#define TYPE_A (UINT8) 0x01 -#define TYPE_B (UINT8) 0x02 -#define TYPE_F (UINT8) 0x03 +#define ACPI_COMPATIBILITY (UINT8) 0x00 +#define ACPI_TYPE_A (UINT8) 0x01 +#define ACPI_TYPE_B (UINT8) 0x02 +#define ACPI_TYPE_F (UINT8) 0x03 -#define NOT_BUS_MASTER (UINT8) 0x00 -#define BUS_MASTER (UINT8) 0x01 +#define ACPI_NOT_BUS_MASTER (UINT8) 0x00 +#define ACPI_BUS_MASTER (UINT8) 0x01 -#define TRANSFER_8 (UINT8) 0x00 -#define TRANSFER_8_16 (UINT8) 0x01 -#define TRANSFER_16 (UINT8) 0x02 +#define ACPI_TRANSFER_8 (UINT8) 0x00 +#define ACPI_TRANSFER_8_16 (UINT8) 0x01 +#define ACPI_TRANSFER_16 (UINT8) 0x02 /* * Start Dependent Functions Priority definitions */ -#define GOOD_CONFIGURATION (UINT8) 0x00 -#define ACCEPTABLE_CONFIGURATION (UINT8) 0x01 -#define SUB_OPTIMAL_CONFIGURATION (UINT8) 0x02 +#define ACPI_GOOD_CONFIGURATION (UINT8) 0x00 +#define ACPI_ACCEPTABLE_CONFIGURATION (UINT8) 0x01 +#define ACPI_SUB_OPTIMAL_CONFIGURATION (UINT8) 0x02 /* * 16, 32 and 64-bit Address Descriptor resource types */ -#define MEMORY_RANGE (UINT8) 0x00 -#define IO_RANGE (UINT8) 0x01 -#define BUS_NUMBER_RANGE (UINT8) 0x02 +#define ACPI_MEMORY_RANGE (UINT8) 0x00 +#define ACPI_IO_RANGE (UINT8) 0x01 +#define ACPI_BUS_NUMBER_RANGE (UINT8) 0x02 -#define ADDRESS_NOT_FIXED (UINT8) 0x00 -#define ADDRESS_FIXED (UINT8) 0x01 +#define ACPI_ADDRESS_NOT_FIXED (UINT8) 0x00 +#define ACPI_ADDRESS_FIXED (UINT8) 0x01 -#define POS_DECODE (UINT8) 0x00 -#define SUB_DECODE (UINT8) 0x01 +#define ACPI_POS_DECODE (UINT8) 0x00 +#define ACPI_SUB_DECODE (UINT8) 0x01 -#define PRODUCER (UINT8) 0x00 -#define CONSUMER (UINT8) 0x01 +#define ACPI_PRODUCER (UINT8) 0x00 +#define ACPI_CONSUMER (UINT8) 0x01 /* @@ -1015,6 +1021,12 @@ typedef struct typedef struct { + UINT8 Checksum; + +} ACPI_RESOURCE_END_TAG; + +typedef struct +{ UINT32 ReadWriteAttribute; UINT32 MinBaseAddress; UINT32 MaxBaseAddress; @@ -1160,7 +1172,7 @@ typedef struct #define ACPI_RSTYPE_ADDRESS64 13 #define ACPI_RSTYPE_EXT_IRQ 14 -typedef UINT32 ACPI_RESOURCE_TYPE; +typedef UINT32 ACPI_RESOURCE_TYPE; typedef union { @@ -1170,6 +1182,7 @@ typedef union ACPI_RESOURCE_IO Io; ACPI_RESOURCE_FIXED_IO FixedIo; ACPI_RESOURCE_VENDOR VendorSpecific; + ACPI_RESOURCE_END_TAG EndTag; ACPI_RESOURCE_MEM24 Memory24; ACPI_RESOURCE_MEM32 Memory32; ACPI_RESOURCE_FIXED_MEM32 FixedMemory32; @@ -1188,20 +1201,25 @@ typedef struct AcpiResource } ACPI_RESOURCE; -#define ACPI_RESOURCE_LENGTH 12 -#define ACPI_RESOURCE_LENGTH_NO_DATA 8 /* Id + Length fields */ +#define ACPI_RESOURCE_LENGTH 12 +#define ACPI_RESOURCE_LENGTH_NO_DATA 8 /* Id + Length fields */ -#define SIZEOF_RESOURCE(Type) (ACPI_RESOURCE_LENGTH_NO_DATA + sizeof (Type)) +#define ACPI_SIZEOF_RESOURCE(Type) (ACPI_RESOURCE_LENGTH_NO_DATA + sizeof (Type)) -#define NEXT_RESOURCE(Res) (ACPI_RESOURCE *)((UINT8 *) Res + Res->length) +#define ACPI_NEXT_RESOURCE(Res) (ACPI_RESOURCE *)((UINT8 *) Res + Res->length) +#ifdef _HW_ALIGNMENT_SUPPORT +#define ACPI_ALIGN_RESOURCE_SIZE(Length) (Length) +#else +#define ACPI_ALIGN_RESOURCE_SIZE(Length) ACPI_ROUND_UP_TO_NATIVE_WORD(Length) +#endif /* - * END: Definitions for Resource Attributes + * END: of definitions for Resource Attributes */ -typedef struct pci_routing_table +typedef struct acpi_pci_routing_table { UINT32 Length; UINT32 Pin; @@ -1209,11 +1227,11 @@ typedef struct pci_routing_table UINT32 SourceIndex; NATIVE_CHAR Source[4]; /* pad to 64 bits so sizeof() works in all cases */ -} PCI_ROUTING_TABLE; - +} ACPI_PCI_ROUTING_TABLE; /* - * END: Definitions for PCI Routing tables + * END: of definitions for PCI Routing tables */ + #endif /* __ACTYPES_H__ */ diff --git a/sys/contrib/dev/acpica/acutils.h b/sys/contrib/dev/acpica/acutils.h index f52637618d10..651d180c0df4 100644 --- a/sys/contrib/dev/acpica/acutils.h +++ b/sys/contrib/dev/acpica/acutils.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acutils.h -- prototypes for the common (subsystem-wide) procedures - * $Revision: 119 $ + * $Revision: 129 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -137,7 +137,7 @@ AcpiUtWalkPackageTree ( typedef struct acpi_pkg_info { UINT8 *FreeSpace; - UINT32 Length; + ACPI_SIZE Length; UINT32 ObjectSpace; UINT32 NumPackages; } ACPI_PKG_INFO; @@ -193,14 +193,18 @@ AcpiUtGetMutexName ( NATIVE_CHAR * AcpiUtGetTypeName ( - UINT32 Type); + ACPI_OBJECT_TYPE Type); + +#endif + NATIVE_CHAR * AcpiUtGetRegionName ( UINT8 SpaceId); -#endif - +NATIVE_CHAR * +AcpiUtGetEventName ( + UINT32 EventId); UINT8 AcpiUtHexToAsciiChar ( @@ -209,7 +213,7 @@ AcpiUtHexToAsciiChar ( BOOLEAN AcpiUtValidObjectType ( - UINT32 Type); + ACPI_OBJECT_TYPE Type); ACPI_OWNER_ID AcpiUtAllocateOwnerId ( @@ -335,6 +339,17 @@ AcpiUtCopyIpackageToIpackage ( ACPI_OPERAND_OBJECT *DestObj, ACPI_WALK_STATE *WalkState); +ACPI_STATUS +AcpiUtCopySimpleObject ( + ACPI_OPERAND_OBJECT *SourceDesc, + ACPI_OPERAND_OBJECT *DestDesc); + +ACPI_STATUS +AcpiUtCopyIobjectToIobject ( + ACPI_OPERAND_OBJECT *SourceDesc, + ACPI_OPERAND_OBJECT **DestDesc, + ACPI_WALK_STATE *WalkState); + /* * UtCreate - Object creation @@ -549,7 +564,7 @@ AcpiUtCreateInternalObjectDbg ( NATIVE_CHAR *ModuleName, UINT32 LineNumber, UINT32 ComponentId, - ACPI_OBJECT_TYPE8 Type); + ACPI_OBJECT_TYPE Type); void * AcpiUtAllocateObjectDescDbg ( @@ -588,17 +603,17 @@ AcpiUtRemoveReference ( ACPI_STATUS AcpiUtGetSimpleObjectSize ( ACPI_OPERAND_OBJECT *Obj, - UINT32 *ObjLength); + ACPI_SIZE *ObjLength); ACPI_STATUS AcpiUtGetPackageObjectSize ( ACPI_OPERAND_OBJECT *Obj, - UINT32 *ObjLength); + ACPI_SIZE *ObjLength); ACPI_STATUS AcpiUtGetObjectSize( ACPI_OPERAND_OBJECT *Obj, - UINT32 *ObjLength); + ACPI_SIZE *ObjLength); /* @@ -697,6 +712,14 @@ ACPI_STATUS AcpiUtResolvePackageReferences ( ACPI_OPERAND_OBJECT *ObjDesc); +UINT8 * +AcpiUtGetResourceEndTag ( + ACPI_OPERAND_OBJECT *ObjDesc); + +UINT8 +AcpiUtGenerateChecksum ( + UINT8 *Buffer, + UINT32 Length); #ifdef ACPI_DEBUG void @@ -724,31 +747,73 @@ void AcpiUtDeleteGenericCache ( UINT32 ListId); +ACPI_STATUS +AcpiUtValidateBuffer ( + ACPI_BUFFER *Buffer); -/* Debug Memory allocation functions */ +ACPI_STATUS +AcpiUtInitializeBuffer ( + ACPI_BUFFER *Buffer, + ACPI_SIZE RequiredLength); + + +/* Memory allocation functions */ void * AcpiUtAllocate ( - UINT32 Size, + ACPI_SIZE Size, UINT32 Component, NATIVE_CHAR *Module, UINT32 Line); void * AcpiUtCallocate ( - UINT32 Size, + ACPI_SIZE Size, + UINT32 Component, + NATIVE_CHAR *Module, + UINT32 Line); + + +#ifdef ACPI_DBG_TRACK_ALLOCATIONS + +void * +AcpiUtAllocateAndTrack ( + ACPI_SIZE Size, + UINT32 Component, + NATIVE_CHAR *Module, + UINT32 Line); + +void * +AcpiUtCallocateAndTrack ( + ACPI_SIZE Size, UINT32 Component, NATIVE_CHAR *Module, UINT32 Line); void -AcpiUtFree ( +AcpiUtFreeAndTrack ( void *Address, UINT32 Component, NATIVE_CHAR *Module, UINT32 Line); +ACPI_STATUS +AcpiUtTrackAllocation ( + UINT32 ListId, + ACPI_DEBUG_MEM_BLOCK *Address, + ACPI_SIZE Size, + UINT8 AllocType, + UINT32 Component, + NATIVE_CHAR *Module, + UINT32 Line); + +ACPI_STATUS +AcpiUtRemoveAllocation ( + UINT32 ListId, + ACPI_DEBUG_MEM_BLOCK *Address, + UINT32 Component, + NATIVE_CHAR *Module, + UINT32 Line); -#ifdef ACPI_DBG_TRACK_ALLOCATIONS void AcpiUtDumpAllocationInfo ( void); diff --git a/sys/contrib/dev/acpica/amlcode.h b/sys/contrib/dev/acpica/amlcode.h index effe2caa8964..bb08120cfd5f 100644 --- a/sys/contrib/dev/acpica/amlcode.h +++ b/sys/contrib/dev/acpica/amlcode.h @@ -3,7 +3,7 @@ * Name: amlcode.h - Definitions for AML, as included in "definition blocks" * Declarations and definitions contained herein are derived * directly from the ACPI specification. - * $Revision: 62 $ + * $Revision: 66 $ * *****************************************************************************/ @@ -11,7 +11,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -309,6 +309,9 @@ * Resolved argument types for the AML Interpreter * Each field in the ArgTypes UINT32 is 5 bits, allowing for a maximum of 6 arguments. * There can be up to 31 unique argument types (0 is end-of-arg-list indicator) + * + * Note: If and when 5 bits becomes insufficient, it would probably be best + * to convert to a 6-byte array of argument types, allowing 8 bits per argument. */ /* "Standard" ACPI types are 1-15 (0x0F) */ @@ -338,6 +341,7 @@ #define ARGI_FIXED_TARGET 0x1B /* Target, no implicit conversion */ #define ARGI_SIMPLE_TARGET 0x1C /* Name, Local, Arg -- no implicit conversion */ #define ARGI_BUFFERSTRING 0x1D +#define ARGI_REF_OR_STRING 0x1E /* Reference or String (Used by DEREFOF op only) */ #define ARGI_INVALID_OPCODE 0xFFFFFFFF @@ -460,7 +464,8 @@ typedef enum REGION_SMBUS, REGION_CMOS, REGION_PCI_BAR, - REGION_FIXED_HW = 0x7F, + REGION_DATA_TABLE, /* Internal use only */ + REGION_FIXED_HW = 0x7F } AML_REGION_TYPES; @@ -508,7 +513,7 @@ typedef enum AML_FIELD_ACCESS_WORD = 0x02, AML_FIELD_ACCESS_DWORD = 0x03, AML_FIELD_ACCESS_QWORD = 0x04, /* ACPI 2.0 */ - AML_FIELD_ACCESS_BUFFER = 0x05, /* ACPI 2.0 */ + AML_FIELD_ACCESS_BUFFER = 0x05 /* ACPI 2.0 */ } AML_ACCESS_TYPE; @@ -518,7 +523,7 @@ typedef enum typedef enum { AML_FIELD_LOCK_NEVER = 0x00, - AML_FIELD_LOCK_ALWAYS = 0x10, + AML_FIELD_LOCK_ALWAYS = 0x10 } AML_LOCK_RULE; @@ -529,15 +534,15 @@ typedef enum { AML_FIELD_UPDATE_PRESERVE = 0x00, AML_FIELD_UPDATE_WRITE_AS_ONES = 0x20, - AML_FIELD_UPDATE_WRITE_AS_ZEROS = 0x40, + AML_FIELD_UPDATE_WRITE_AS_ZEROS = 0x40 } AML_UPDATE_RULE; -/* +/* * Field Access Attributes. * This byte is extracted from the AML via the - * AccessAs keyword + * AccessAs keyword */ typedef enum { @@ -546,7 +551,7 @@ typedef enum AML_FIELD_ATTRIB_SMB_BYTE = 0x06, AML_FIELD_ATTRIB_SMB_WORD = 0x08, AML_FIELD_ATTRIB_SMB_BLOCK = 0x0A, - AML_FIELD_ATTRIB_SMB_CALL = 0x0E, + AML_FIELD_ATTRIB_SMB_CALL = 0x0E } AML_ACCESS_ATTRIBUTE; diff --git a/sys/contrib/dev/acpica/dbcmds.c b/sys/contrib/dev/acpica/dbcmds.c index 89002d76ca2c..467546d85e98 100644 --- a/sys/contrib/dev/acpica/dbcmds.c +++ b/sys/contrib/dev/acpica/dbcmds.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dbcmds - debug commands and output routines - * $Revision: 67 $ + * $Revision: 79 $ * ******************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -130,7 +130,7 @@ #ifdef ENABLE_DEBUGGER #define _COMPONENT ACPI_DEBUGGER - MODULE_NAME ("dbcmds") + ACPI_MODULE_NAME ("dbcmds") /* @@ -171,6 +171,8 @@ ARGUMENT_INFO AcpiDbObjectTypes [] = * DESCRIPTION: Check if this namespace object refers to the target object * that is passed in as the context value. * + * Note: Currently doesn't check subobjects within the Node's object + * ******************************************************************************/ ACPI_STATUS @@ -198,14 +200,6 @@ AcpiDbWalkForReferences ( AcpiOsPrintf ("Reference at Node->Object %p [%4.4s]\n", Node, &Node->Name); } - /* Check first child for a match */ - /* TBD: [Investigate] probably now obsolete with new datastructure */ - - if (Node->Child == (void *) ObjDesc) - { - AcpiOsPrintf ("Reference at Node->Child %p [%4.4s]\n", Node, &Node->Name); - } - return (AE_OK); } @@ -231,7 +225,7 @@ AcpiDbFindReferences ( /* Convert string to object pointer */ - ObjDesc = (ACPI_OPERAND_OBJECT *) STRTOUL (ObjectArg, NULL, 16); + ObjDesc = ACPI_TO_POINTER (ACPI_STRTOUL (ObjectArg, NULL, 16)); /* Search all nodes in namespace */ @@ -326,7 +320,7 @@ AcpiDbUnloadAcpiTable ( for (i = 0; i < NUM_ACPI_TABLES; i++) { - if (!STRNCMP (TableArg, AcpiGbl_AcpiTableData[i].Signature, + if (!ACPI_STRNCMP (TableArg, AcpiGbl_AcpiTableData[i].Signature, AcpiGbl_AcpiTableData[i].SigLength)) { /* Found the table, unload it */ @@ -382,7 +376,7 @@ AcpiDbSetMethodBreakpoint ( /* Get and verify the breakpoint address */ - Address = STRTOUL (Location, NULL, 16); + Address = ACPI_STRTOUL (Location, NULL, 16); if (Address <= Op->AmlOffset) { AcpiOsPrintf ("Breakpoint %X is beyond current address %X\n", Address, Op->AmlOffset); @@ -390,7 +384,7 @@ AcpiDbSetMethodBreakpoint ( /* Save breakpoint in current walk */ - WalkState->MethodBreakpoint = Address; + WalkState->UserBreakpoint = Address; AcpiOsPrintf ("Breakpoint set at AML offset %X\n", Address); } @@ -455,10 +449,9 @@ AcpiDbDisassembleAml ( if (Statements) { - NumStatements = STRTOUL (Statements, NULL, 0); + NumStatements = ACPI_STRTOUL (Statements, NULL, 0); } - AcpiDbDisplayOp (NULL, Op, NumStatements); } @@ -494,14 +487,14 @@ AcpiDbDumpNamespace ( if ((StartArg[0] >= 0x30) && (StartArg[0] <= 0x39)) { - SubtreeEntry = (ACPI_HANDLE) STRTOUL (StartArg, NULL, 16); + SubtreeEntry = ACPI_TO_POINTER (ACPI_STRTOUL (StartArg, NULL, 16)); if (!AcpiOsReadable (SubtreeEntry, sizeof (ACPI_NAMESPACE_NODE))) { AcpiOsPrintf ("Address %p is invalid in this address space\n", SubtreeEntry); return; } - if (!VALID_DESCRIPTOR_TYPE ((SubtreeEntry), ACPI_DESC_TYPE_NAMED)) + if (ACPI_GET_DESCRIPTOR_TYPE (SubtreeEntry) != ACPI_DESC_TYPE_NAMED) { AcpiOsPrintf ("Address %p is not a valid Named object\n", SubtreeEntry); return; @@ -525,19 +518,18 @@ AcpiDbDumpNamespace ( if (DepthArg) { - MaxDepth = STRTOUL (DepthArg, NULL, 0); + MaxDepth = ACPI_STRTOUL (DepthArg, NULL, 0); } } - - AcpiDbSetOutputDestination (DB_DUPLICATE_OUTPUT); + AcpiDbSetOutputDestination (ACPI_DB_DUPLICATE_OUTPUT); AcpiOsPrintf ("ACPI Namespace (from %p subtree):\n", SubtreeEntry); /* Display the subtree */ - AcpiDbSetOutputDestination (DB_REDIRECTABLE_OUTPUT); + AcpiDbSetOutputDestination (ACPI_DB_REDIRECTABLE_OUTPUT); AcpiNsDumpObjects (ACPI_TYPE_ANY, ACPI_DISPLAY_SUMMARY, MaxDepth, ACPI_UINT32_MAX, SubtreeEntry); - AcpiDbSetOutputDestination (DB_CONSOLE_OUTPUT); + AcpiDbSetOutputDestination (ACPI_DB_CONSOLE_OUTPUT); } @@ -564,25 +556,23 @@ AcpiDbDumpNamespaceByOwner ( UINT16 OwnerId; - OwnerId = (UINT16) STRTOUL (OwnerArg, NULL, 0); - + OwnerId = (UINT16) ACPI_STRTOUL (OwnerArg, NULL, 0); /* Now we can check for the depth argument */ if (DepthArg) { - MaxDepth = STRTOUL (DepthArg, NULL, 0); + MaxDepth = ACPI_STRTOUL (DepthArg, NULL, 0); } - - AcpiDbSetOutputDestination (DB_DUPLICATE_OUTPUT); + AcpiDbSetOutputDestination (ACPI_DB_DUPLICATE_OUTPUT); AcpiOsPrintf ("ACPI Namespace by owner %X:\n", OwnerId); /* Display the subtree */ - AcpiDbSetOutputDestination (DB_REDIRECTABLE_OUTPUT); + AcpiDbSetOutputDestination (ACPI_DB_REDIRECTABLE_OUTPUT); AcpiNsDumpObjects (ACPI_TYPE_ANY, ACPI_DISPLAY_SUMMARY, MaxDepth, OwnerId, SubtreeEntry); - AcpiDbSetOutputDestination (DB_CONSOLE_OUTPUT); + AcpiDbSetOutputDestination (ACPI_DB_CONSOLE_OUTPUT); } @@ -666,7 +656,7 @@ AcpiDbSetMethodData ( /* Validate TypeArg */ - STRUPR (TypeArg); + ACPI_STRUPR (TypeArg); Type = TypeArg[0]; if ((Type != 'L') && (Type != 'A')) @@ -677,8 +667,8 @@ AcpiDbSetMethodData ( /* Get the index and value */ - Index = STRTOUL (IndexArg, NULL, 16); - Value = STRTOUL (ValueArg, NULL, 16); + Index = ACPI_STRTOUL (IndexArg, NULL, 16); + Value = ACPI_STRTOUL (ValueArg, NULL, 16); WalkState = AcpiDsGetCurrentWalkState (AcpiGbl_CurrentWalkList); if (!WalkState) @@ -765,24 +755,23 @@ AcpiDbWalkForSpecificObjects ( { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_STATUS Status; - UINT32 BufSize; - NATIVE_CHAR Buffer[64]; + ACPI_BUFFER Buffer; ObjDesc = AcpiNsGetAttachedObject ((ACPI_NAMESPACE_NODE *) ObjHandle); - BufSize = sizeof (Buffer) / sizeof (*Buffer); /* Get and display the full pathname to this object */ - Status = AcpiNsHandleToPathname (ObjHandle, &BufSize, Buffer); - + Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER; + Status = AcpiNsHandleToPathname (ObjHandle, &Buffer); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Could Not get pathname for object %p\n", ObjHandle); return (AE_OK); } - AcpiOsPrintf ("%32s", Buffer); + AcpiOsPrintf ("%32s", Buffer.Pointer); + ACPI_MEM_FREE (Buffer.Pointer); /* Display short information about the object */ @@ -840,7 +829,7 @@ AcpiDbDisplayObjects ( NATIVE_CHAR *ObjTypeArg, NATIVE_CHAR *DisplayCountArg) { - ACPI_OBJECT_TYPE8 Type; + ACPI_OBJECT_TYPE Type; /* Get the object type */ @@ -852,17 +841,17 @@ AcpiDbDisplayObjects ( return (AE_OK); } - AcpiDbSetOutputDestination (DB_DUPLICATE_OUTPUT); + AcpiDbSetOutputDestination (ACPI_DB_DUPLICATE_OUTPUT); AcpiOsPrintf ("Objects of type [%s] defined in the current ACPI Namespace: \n", AcpiUtGetTypeName (Type)); - AcpiDbSetOutputDestination (DB_REDIRECTABLE_OUTPUT); + AcpiDbSetOutputDestination (ACPI_DB_REDIRECTABLE_OUTPUT); /* Walk the namespace from the root */ AcpiWalkNamespace (Type, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX, AcpiDbWalkForSpecificObjects, (void *) &Type, NULL); - AcpiDbSetOutputDestination (DB_CONSOLE_OUTPUT); + AcpiDbSetOutputDestination (ACPI_DB_CONSOLE_OUTPUT); return (AE_OK); } @@ -890,8 +879,7 @@ AcpiDbWalkAndMatchName ( ACPI_STATUS Status; NATIVE_CHAR *RequestedName = (NATIVE_CHAR *) Context; UINT32 i; - UINT32 BufSize; - NATIVE_CHAR Buffer[96]; + ACPI_BUFFER Buffer; /* Check for a name match */ @@ -912,18 +900,17 @@ AcpiDbWalkAndMatchName ( /* Get the full pathname to this object */ - BufSize = sizeof (Buffer) / sizeof (*Buffer); - - Status = AcpiNsHandleToPathname (ObjHandle, &BufSize, Buffer); + Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER; + Status = AcpiNsHandleToPathname (ObjHandle, &Buffer); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Could Not get pathname for object %p\n", ObjHandle); } - else { - AcpiOsPrintf ("%32s (%p) - %s\n", Buffer, ObjHandle, + AcpiOsPrintf ("%32s (%p) - %s\n", Buffer.Pointer, ObjHandle, AcpiUtGetTypeName (((ACPI_NAMESPACE_NODE *) ObjHandle)->Type)); + ACPI_MEM_FREE (Buffer.Pointer); } return (AE_OK); @@ -948,7 +935,7 @@ AcpiDbFindNameInNamespace ( NATIVE_CHAR *NameArg) { - if (STRLEN (NameArg) > 4) + if (ACPI_STRLEN (NameArg) > 4) { AcpiOsPrintf ("Name must be no longer than 4 characters\n"); return (AE_OK); @@ -959,7 +946,7 @@ AcpiDbFindNameInNamespace ( AcpiWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX, AcpiDbWalkAndMatchName, NameArg, NULL); - AcpiDbSetOutputDestination (DB_CONSOLE_OUTPUT); + AcpiDbSetOutputDestination (ACPI_DB_CONSOLE_OUTPUT); return (AE_OK); } @@ -981,6 +968,9 @@ void AcpiDbSetScope ( NATIVE_CHAR *Name) { + ACPI_STATUS Status; + ACPI_NAMESPACE_NODE *Node; + if (!Name || Name[0] == 0) { @@ -990,21 +980,42 @@ AcpiDbSetScope ( AcpiDbPrepNamestring (Name); - /* TBD: [Future] Validate scope here */ if (Name[0] == '\\') { - STRCPY (AcpiGbl_DbScopeBuf, Name); - STRCAT (AcpiGbl_DbScopeBuf, "\\"); - } + /* Validate new scope from the root */ + Status = AcpiNsGetNodeByPath (Name, AcpiGbl_RootNode, ACPI_NS_NO_UPSEARCH, &Node); + if (ACPI_FAILURE (Status)) + { + goto ErrorExit; + } + + ACPI_STRCPY (AcpiGbl_DbScopeBuf, Name); + ACPI_STRCAT (AcpiGbl_DbScopeBuf, "\\"); + } else { - STRCAT (AcpiGbl_DbScopeBuf, Name); - STRCAT (AcpiGbl_DbScopeBuf, "\\"); + /* Validate new scope relative to old scope */ + + Status = AcpiNsGetNodeByPath (Name, AcpiGbl_DbScopeNode, ACPI_NS_NO_UPSEARCH, &Node); + if (ACPI_FAILURE (Status)) + { + goto ErrorExit; + } + + ACPI_STRCAT (AcpiGbl_DbScopeBuf, Name); + ACPI_STRCAT (AcpiGbl_DbScopeBuf, "\\"); } + AcpiGbl_DbScopeNode = Node; AcpiOsPrintf ("New scope: %s\n", AcpiGbl_DbScopeBuf); + return; + + +ErrorExit: + + AcpiOsPrintf ("Could not attach scope: %s, %s\n", Name, AcpiFormatException (Status)); } @@ -1030,18 +1041,18 @@ AcpiDbDisplayResources ( ACPI_BUFFER ReturnObj; - AcpiDbSetOutputDestination (DB_REDIRECTABLE_OUTPUT); + AcpiDbSetOutputDestination (ACPI_DB_REDIRECTABLE_OUTPUT); + AcpiDbgLevel |= ACPI_LV_RESOURCES; /* Convert string to object pointer */ - ObjDesc = (ACPI_OPERAND_OBJECT *) STRTOUL (ObjectArg, NULL, 16); + ObjDesc = ACPI_TO_POINTER (ACPI_STRTOUL (ObjectArg, NULL, 16)); /* Prepare for a return object of arbitrary size */ ReturnObj.Pointer = AcpiGbl_DbBuffer; ReturnObj.Length = ACPI_DEBUG_BUFFER_SIZE; - /* _PRT */ AcpiOsPrintf ("Evaluating _PRT\n"); @@ -1090,6 +1101,7 @@ GetCrs: if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("AcpiGetCurrentResources failed: %s\n", AcpiFormatException (Status)); + goto GetPrs; } else @@ -1097,6 +1109,13 @@ GetCrs: AcpiRsDumpResourceList ((ACPI_RESOURCE *) AcpiGbl_DbBuffer); } + Status = AcpiSetCurrentResources (ObjDesc, &ReturnObj); + if (ACPI_FAILURE (Status)) + { + AcpiOsPrintf ("AcpiSetCurrentResources failed: %s\n", AcpiFormatException (Status)); + goto GetPrs; + } + /* _PRS */ @@ -1130,7 +1149,7 @@ GetPrs: Cleanup: - AcpiDbSetOutputDestination (DB_CONSOLE_OUTPUT); + AcpiDbSetOutputDestination (ACPI_DB_CONSOLE_OUTPUT); return; #endif diff --git a/sys/contrib/dev/acpica/dbdisasm.c b/sys/contrib/dev/acpica/dbdisasm.c index dc24edcad7bd..b4f7f736030c 100644 --- a/sys/contrib/dev/acpica/dbdisasm.c +++ b/sys/contrib/dev/acpica/dbdisasm.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dbdisasm - parser op tree display routines - * $Revision: 53 $ + * $Revision: 61 $ * ******************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -125,10 +125,9 @@ #ifdef ENABLE_DEBUGGER #define _COMPONENT ACPI_DEBUGGER - MODULE_NAME ("dbdisasm") + ACPI_MODULE_NAME ("dbdisasm") -#define MAX_SHOW_ENTRY 128 #define BLOCK_PAREN 1 #define BLOCK_BRACE 2 #define DB_NO_OP_INFO " [%2.2d] " @@ -159,14 +158,12 @@ AcpiDbBlockType ( { case AML_METHOD_OP: return (BLOCK_BRACE); - break; default: break; } return (BLOCK_PAREN); - } @@ -193,11 +190,26 @@ AcpiPsDisplayObjectPathname ( ACPI_PARSE_OBJECT *Op) { ACPI_PARSE_OBJECT *TargetOp; + char *Name; + + if (Op->Flags & ACPI_PARSEOP_GENERIC) + { + Name = Op->Value.Name; + if (Name[0] == '\\') + { + AcpiOsPrintf (" (Fully Qualified Pathname)"); + return (AE_OK); + } + } + else + { + Name = (char *) &((ACPI_PARSE2_OBJECT *) Op)->Name; + } /* Search parent tree up to the root if necessary */ - TargetOp = AcpiPsFind (Op, Op->Value.Name, 0, 0); + TargetOp = AcpiPsFind (Op, Name, 0, 0); if (!TargetOp) { /* @@ -229,8 +241,7 @@ AcpiPsDisplayObjectPathname ( { ACPI_STATUS Status; ACPI_NAMESPACE_NODE *Node; - NATIVE_CHAR Buffer[MAX_SHOW_ENTRY]; - UINT32 BufferSize = MAX_SHOW_ENTRY; + ACPI_BUFFER Buffer; UINT32 DebugLevel; @@ -247,7 +258,7 @@ AcpiPsDisplayObjectPathname ( /* Node not defined in this scope, look it up */ Status = AcpiNsLookup (WalkState->ScopeInfo, Op->Value.String, ACPI_TYPE_ANY, - IMODE_EXECUTE, NS_SEARCH_PARENT, WalkState, &(Node)); + ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, WalkState, &(Node)); if (ACPI_FAILURE (Status)) { @@ -267,14 +278,16 @@ AcpiPsDisplayObjectPathname ( /* Convert NamedDesc/handle to a full pathname */ - Status = AcpiNsHandleToPathname (Node, &BufferSize, Buffer); + Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER; + Status = AcpiNsHandleToPathname (Node, &Buffer); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("****Could not get pathname****)"); goto Exit; } - AcpiOsPrintf (" (Path %s)", Buffer); + AcpiOsPrintf (" (Path %s)", Buffer.Pointer); + ACPI_MEM_FREE (Buffer.Pointer); Exit: @@ -465,7 +478,6 @@ AcpiDbDisplayNamestring ( NATIVE_CHAR *Name) { UINT32 SegCount; - BOOLEAN DoDot = FALSE; if (!Name) @@ -474,23 +486,29 @@ AcpiDbDisplayNamestring ( return; } - if (AcpiPsIsPrefixChar (GET8 (Name))) + /* Handle all Scope Prefix operators */ + + while (AcpiPsIsPrefixChar (ACPI_GET8 (Name))) { - /* append prefix character */ + /* Append prefix character */ - AcpiOsPrintf ("%1c", GET8 (Name)); + AcpiOsPrintf ("%1c", ACPI_GET8 (Name)); Name++; } - switch (GET8 (Name)) + switch (ACPI_GET8 (Name)) { + case 0: + SegCount = 0; + break; + case AML_DUAL_NAME_PREFIX: SegCount = 2; Name++; break; case AML_MULTI_NAME_PREFIX_OP: - SegCount = (UINT32) GET8 (Name + 1); + SegCount = (UINT32) ACPI_GET8 (Name + 1); Name += 2; break; @@ -499,21 +517,20 @@ AcpiDbDisplayNamestring ( break; } - while (SegCount--) + while (SegCount) { - /* append Name segment */ + /* Append Name segment */ - if (DoDot) + AcpiOsPrintf ("%4.4s", Name); + + SegCount--; + if (SegCount) { - /* append dot */ + /* Not last name, append dot separator */ AcpiOsPrintf ("."); } - - AcpiOsPrintf ("%4.4s", Name); - DoDot = TRUE; - - Name += 4; + Name += ACPI_NAME_SIZE; } } diff --git a/sys/contrib/dev/acpica/dbdisply.c b/sys/contrib/dev/acpica/dbdisply.c index df43e85c350d..b04951155d61 100644 --- a/sys/contrib/dev/acpica/dbdisply.c +++ b/sys/contrib/dev/acpica/dbdisply.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dbdisply - debug display commands - * $Revision: 60 $ + * $Revision: 66 $ * ******************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -130,7 +130,7 @@ #define _COMPONENT ACPI_DEBUGGER - MODULE_NAME ("dbdisply") + ACPI_MODULE_NAME ("dbdisply") /****************************************************************************** @@ -167,7 +167,7 @@ AcpiDbGetPointer ( /* Simple flat pointer */ - ObjPtr = (void *) STRTOUL (Target, NULL, 16); + ObjPtr = ACPI_TO_POINTER (ACPI_STRTOUL (Target, NULL, 16)); #endif return (ObjPtr); @@ -198,7 +198,7 @@ AcpiDbDumpParserDescriptor ( AcpiOsPrintf ("Parser Op Descriptor:\n"); AcpiOsPrintf ("%20.20s : %4.4X\n", "Opcode", Op->Opcode); - DEBUG_ONLY_MEMBERS (AcpiOsPrintf ("%20.20s : %s\n", "Opcode Name", Info->Name)); + ACPI_DEBUG_ONLY_MEMBERS (AcpiOsPrintf ("%20.20s : %s\n", "Opcode Name", Info->Name)); AcpiOsPrintf ("%20.20s : %p\n", "Value/ArgList", Op->Value); AcpiOsPrintf ("%20.20s : %p\n", "Parent", Op->Parent); @@ -244,7 +244,7 @@ AcpiDbDecodeAndDisplayObject ( if (OutputType) { - STRUPR (OutputType); + ACPI_STRUPR (OutputType); if (OutputType[0] == 'W') { Display = DB_WORD_DISPLAY; @@ -275,9 +275,11 @@ AcpiDbDecodeAndDisplayObject ( /* Decode the object type */ - if (VALID_DESCRIPTOR_TYPE ((ObjPtr), ACPI_DESC_TYPE_NAMED)) + switch (ACPI_GET_DESCRIPTOR_TYPE (ObjPtr)) { - /* This is a Node */ + case ACPI_DESC_TYPE_NAMED: + + /* This is a namespace Node */ if (!AcpiOsReadable (ObjPtr, sizeof (ACPI_NAMESPACE_NODE))) { @@ -287,11 +289,11 @@ AcpiDbDecodeAndDisplayObject ( Node = ObjPtr; goto DumpNte; - } - else if (VALID_DESCRIPTOR_TYPE ((ObjPtr), ACPI_DESC_TYPE_INTERNAL)) - { - /* This is an ACPI OBJECT */ + + case ACPI_DESC_TYPE_INTERNAL: + + /* This is a ACPI OPERAND OBJECT */ if (!AcpiOsReadable (ObjPtr, sizeof (ACPI_OPERAND_OBJECT))) { @@ -301,11 +303,12 @@ AcpiDbDecodeAndDisplayObject ( AcpiUtDumpBuffer (ObjPtr, sizeof (ACPI_OPERAND_OBJECT), Display, ACPI_UINT32_MAX); AcpiExDumpObjectDescriptor (ObjPtr, 1); - } + break; - else if (VALID_DESCRIPTOR_TYPE ((ObjPtr), ACPI_DESC_TYPE_PARSER)) - { - /* This is an Parser Op object */ + + case ACPI_DESC_TYPE_PARSER: + + /* This is a Parser Op object */ if (!AcpiOsReadable (ObjPtr, sizeof (ACPI_PARSE_OBJECT))) { @@ -315,10 +318,13 @@ AcpiDbDecodeAndDisplayObject ( AcpiUtDumpBuffer (ObjPtr, sizeof (ACPI_PARSE_OBJECT), Display, ACPI_UINT32_MAX); AcpiDbDumpParserDescriptor ((ACPI_PARSE_OBJECT *) ObjPtr); - } + break; + + + default: + + /* Is not a recognizeable object */ - else - { Size = 16; if (AcpiOsReadable (ObjPtr, 64)) { @@ -328,12 +334,12 @@ AcpiDbDecodeAndDisplayObject ( /* Just dump some memory */ AcpiUtDumpBuffer (ObjPtr, Size, Display, ACPI_UINT32_MAX); + break; } return; } - /* The parameter is a name string that must be resolved to a Named obj */ Node = AcpiDbLocalNsLookup (Target); @@ -412,8 +418,8 @@ AcpiDbDecodeInternalObject ( { case ACPI_TYPE_INTEGER: - AcpiOsPrintf (" %.8X%.8X", HIDWORD (ObjDesc->Integer.Value), - LODWORD (ObjDesc->Integer.Value)); + AcpiOsPrintf (" %.8X%.8X", ACPI_HIDWORD (ObjDesc->Integer.Value), + ACPI_LODWORD (ObjDesc->Integer.Value)); break; @@ -476,13 +482,16 @@ AcpiDbDisplayInternalObject ( /* Decode the object type */ - else if (VALID_DESCRIPTOR_TYPE (ObjDesc, ACPI_DESC_TYPE_PARSER)) + switch (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc)) { + case ACPI_DESC_TYPE_PARSER: + AcpiOsPrintf ("<Parser> "); - } + break; + + + case ACPI_DESC_TYPE_NAMED: - else if (VALID_DESCRIPTOR_TYPE (ObjDesc, ACPI_DESC_TYPE_NAMED)) - { AcpiOsPrintf ("<Node> Name %4.4s Type-%s", &((ACPI_NAMESPACE_NODE *)ObjDesc)->Name, AcpiUtGetTypeName (((ACPI_NAMESPACE_NODE *) ObjDesc)->Type)); @@ -495,10 +504,11 @@ AcpiDbDisplayInternalObject ( { AcpiOsPrintf (" [Method Local]"); } - } + break; + + + case ACPI_DESC_TYPE_INTERNAL: - else if (VALID_DESCRIPTOR_TYPE (ObjDesc, ACPI_DESC_TYPE_INTERNAL)) - { Type = ObjDesc->Common.Type; if (Type > INTERNAL_TYPE_MAX) { @@ -554,7 +564,7 @@ AcpiDbDisplayInternalObject ( break; case AML_INDEX_OP: - AcpiOsPrintf ("[Index] "); + AcpiOsPrintf ("[Index] "); AcpiDbDecodeInternalObject (ObjDesc->Reference.Object); break; @@ -570,13 +580,16 @@ AcpiDbDisplayInternalObject ( AcpiDbDecodeInternalObject (ObjDesc); break; } - } + break; + + + default: - else - { AcpiOsPrintf ("<Not a valid ACPI Object Descriptor> "); + break; } + AcpiOsPrintf ("\n"); } @@ -882,6 +895,10 @@ AcpiDbDisplayCallingTree (void) * * DESCRIPTION: Display the result of an AML opcode * + * Note: Curently only displays the result object if we are single stepping. + * However, this output may be useful in other contexts and could be enabled + * to do so if needed. + * ******************************************************************************/ void @@ -890,10 +907,8 @@ AcpiDbDisplayResultObject ( ACPI_WALK_STATE *WalkState) { - /* TBD: [Future] We don't always want to display the result. - * For now, only display if single stepping - * however, this output is very useful in other contexts also - */ + /* Only display if single stepping */ + if (!AcpiGbl_CmSingleStep) { return; diff --git a/sys/contrib/dev/acpica/dbexec.c b/sys/contrib/dev/acpica/dbexec.c index 25cad7760bec..d8505ab99760 100644 --- a/sys/contrib/dev/acpica/dbexec.c +++ b/sys/contrib/dev/acpica/dbexec.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dbexec - debugger control method execution - * $Revision: 34 $ + * $Revision: 38 $ * ******************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -129,10 +129,10 @@ #ifdef ENABLE_DEBUGGER #define _COMPONENT ACPI_DEBUGGER - MODULE_NAME ("dbexec") + ACPI_MODULE_NAME ("dbexec") -DB_METHOD_INFO AcpiGbl_DbMethodInfo; +ACPI_DB_METHOD_INFO AcpiGbl_DbMethodInfo; /******************************************************************************* @@ -150,7 +150,7 @@ DB_METHOD_INFO AcpiGbl_DbMethodInfo; ACPI_STATUS AcpiDbExecuteMethod ( - DB_METHOD_INFO *Info, + ACPI_DB_METHOD_INFO *Info, ACPI_BUFFER *ReturnObj) { ACPI_STATUS Status; @@ -171,13 +171,12 @@ AcpiDbExecuteMethod ( for (i = 0; Info->Args[i] && i < MTH_NUM_ARGS; i++) { Params[i].Type = ACPI_TYPE_INTEGER; - Params[i].Integer.Value = STRTOUL (Info->Args[i], NULL, 16); + Params[i].Integer.Value = ACPI_STRTOUL (Info->Args[i], NULL, 16); } ParamObjects.Pointer = Params; ParamObjects.Count = i; } - else { /* Setup default parameters */ @@ -198,7 +197,6 @@ AcpiDbExecuteMethod ( ReturnObj->Pointer = AcpiGbl_DbBuffer; ReturnObj->Length = ACPI_DEBUG_BUFFER_SIZE; - /* Do the actual method execution */ Status = AcpiEvaluateObject (NULL, Info->Pathname, &ParamObjects, ReturnObj); @@ -224,7 +222,7 @@ AcpiDbExecuteMethod ( void AcpiDbExecuteSetup ( - DB_METHOD_INFO *Info) + ACPI_DB_METHOD_INFO *Info) { /* Catenate the current scope to the supplied name */ @@ -233,26 +231,26 @@ AcpiDbExecuteSetup ( if ((Info->Name[0] != '\\') && (Info->Name[0] != '/')) { - STRCAT (Info->Pathname, AcpiGbl_DbScopeBuf); + ACPI_STRCAT (Info->Pathname, AcpiGbl_DbScopeBuf); } - STRCAT (Info->Pathname, Info->Name); + ACPI_STRCAT (Info->Pathname, Info->Name); AcpiDbPrepNamestring (Info->Pathname); - AcpiDbSetOutputDestination (DB_DUPLICATE_OUTPUT); + AcpiDbSetOutputDestination (ACPI_DB_DUPLICATE_OUTPUT); AcpiOsPrintf ("Executing %s\n", Info->Pathname); if (Info->Flags & EX_SINGLE_STEP) { AcpiGbl_CmSingleStep = TRUE; - AcpiDbSetOutputDestination (DB_CONSOLE_OUTPUT); + AcpiDbSetOutputDestination (ACPI_DB_CONSOLE_OUTPUT); } else { /* No single step, allow redirection to a file */ - AcpiDbSetOutputDestination (DB_REDIRECTABLE_OUTPUT); + AcpiDbSetOutputDestination (ACPI_DB_REDIRECTABLE_OUTPUT); } } @@ -274,11 +272,11 @@ AcpiDbExecuteSetup ( UINT32 AcpiDbGetOutstandingAllocations (void) { - UINT32 i; UINT32 Outstanding = 0; - #ifdef ACPI_DBG_TRACK_ALLOCATIONS + UINT32 i; + for (i = ACPI_MEM_LIST_FIRST_CACHE_LIST; i < ACPI_NUM_MEM_LISTS; i++) { @@ -347,7 +345,7 @@ AcpiDbExecute ( Allocations = AcpiDbGetOutstandingAllocations () - PreviousAllocations; - AcpiDbSetOutputDestination (DB_DUPLICATE_OUTPUT); + AcpiDbSetOutputDestination (ACPI_DB_DUPLICATE_OUTPUT); if (Allocations > 0) { @@ -374,7 +372,7 @@ AcpiDbExecute ( } } - AcpiDbSetOutputDestination (DB_CONSOLE_OUTPUT); + AcpiDbSetOutputDestination (ACPI_DB_CONSOLE_OUTPUT); } @@ -396,7 +394,7 @@ AcpiDbMethodThread ( void *Context) { ACPI_STATUS Status; - DB_METHOD_INFO *Info = Context; + ACPI_DB_METHOD_INFO *Info = Context; UINT32 i; ACPI_BUFFER ReturnObj; @@ -450,8 +448,8 @@ AcpiDbCreateExecutionThreads ( /* Get the arguments */ - NumThreads = STRTOUL (NumThreadsArg, NULL, 0); - NumLoops = STRTOUL (NumLoopsArg, NULL, 0); + NumThreads = ACPI_STRTOUL (NumThreadsArg, NULL, 0); + NumLoops = ACPI_STRTOUL (NumLoopsArg, NULL, 0); if (!NumThreads || !NumLoops) { @@ -459,7 +457,6 @@ AcpiDbCreateExecutionThreads ( return; } - /* Create the synchronization semaphore */ Status = AcpiOsCreateSemaphore (1, 0, &ThreadGate); @@ -479,7 +476,6 @@ AcpiDbCreateExecutionThreads ( AcpiDbExecuteSetup (&AcpiGbl_DbMethodInfo); - /* Create the threads */ AcpiOsPrintf ("Creating %X threads to execute %X times each\n", NumThreads, NumLoops); @@ -489,7 +485,6 @@ AcpiDbCreateExecutionThreads ( AcpiOsQueueForExecution (OSD_PRIORITY_MED, AcpiDbMethodThread, &AcpiGbl_DbMethodInfo); } - /* Wait for all threads to complete */ i = NumThreads; @@ -503,9 +498,9 @@ AcpiDbCreateExecutionThreads ( AcpiOsDeleteSemaphore (ThreadGate); - AcpiDbSetOutputDestination (DB_DUPLICATE_OUTPUT); + AcpiDbSetOutputDestination (ACPI_DB_DUPLICATE_OUTPUT); AcpiOsPrintf ("All threads (%X) have completed\n", NumThreads); - AcpiDbSetOutputDestination (DB_CONSOLE_OUTPUT); + AcpiDbSetOutputDestination (ACPI_DB_CONSOLE_OUTPUT); } diff --git a/sys/contrib/dev/acpica/dbfileio.c b/sys/contrib/dev/acpica/dbfileio.c index 1ab4dbfdf9ad..a5c322185c3b 100644 --- a/sys/contrib/dev/acpica/dbfileio.c +++ b/sys/contrib/dev/acpica/dbfileio.c @@ -2,7 +2,7 @@ * * Module Name: dbfileio - Debugger file I/O commands. These can't usually * be used when running the debugger in Ring 0 (Kernel mode) - * $Revision: 54 $ + * $Revision: 59 $ * ******************************************************************************/ @@ -10,7 +10,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -126,7 +126,7 @@ #ifdef ENABLE_DEBUGGER #define _COMPONENT ACPI_DEBUGGER - MODULE_NAME ("dbfileio") + ACPI_MODULE_NAME ("dbfileio") /* @@ -155,7 +155,7 @@ ACPI_TABLE_HEADER *AcpiGbl_DbTablePtr = NULL; * ******************************************************************************/ -ACPI_OBJECT_TYPE8 +ACPI_OBJECT_TYPE AcpiDbMatchArgument ( NATIVE_CHAR *UserArgument, ARGUMENT_INFO *Arguments) @@ -170,9 +170,9 @@ AcpiDbMatchArgument ( for (i = 0; Arguments[i].Name; i++) { - if (STRSTR (Arguments[i].Name, UserArgument) == Arguments[i].Name) + if (ACPI_STRSTR (Arguments[i].Name, UserArgument) == Arguments[i].Name) { - return ((ACPI_OBJECT_TYPE8) i); + return (i); } } @@ -237,7 +237,7 @@ AcpiDbOpenDebugFile ( if (AcpiGbl_DebugFile) { AcpiOsPrintf ("Debug output file %s opened\n", Name); - STRCPY (AcpiGbl_DbDebugFilename, Name); + ACPI_STRCPY (AcpiGbl_DbDebugFilename, Name); AcpiGbl_DbOutputToFile = TRUE; } else @@ -299,12 +299,12 @@ AcpiDbLoadTable( /* We only support a limited number of table types */ - if (STRNCMP ((char *) TableHeader.Signature, DSDT_SIG, 4) && - STRNCMP ((char *) TableHeader.Signature, PSDT_SIG, 4) && - STRNCMP ((char *) TableHeader.Signature, SSDT_SIG, 4)) + if (ACPI_STRNCMP ((char *) TableHeader.Signature, DSDT_SIG, 4) && + ACPI_STRNCMP ((char *) TableHeader.Signature, PSDT_SIG, 4) && + ACPI_STRNCMP ((char *) TableHeader.Signature, SSDT_SIG, 4)) { AcpiOsPrintf ("Table signature is invalid\n"); - DUMP_BUFFER (&TableHeader, sizeof (ACPI_TABLE_HEADER)); + ACPI_DUMP_BUFFER (&TableHeader, sizeof (ACPI_TABLE_HEADER)); return (AE_ERROR); } @@ -325,7 +325,7 @@ AcpiDbLoadTable( /* Copy the header to the buffer */ - MEMCPY (*TablePtr, &TableHeader, sizeof (TableHeader)); + ACPI_MEMCPY (*TablePtr, &TableHeader, sizeof (TableHeader)); /* Get the rest of the table */ @@ -378,7 +378,7 @@ AeLocalLoadTable ( ACPI_TABLE_DESC TableInfo; - FUNCTION_TRACE ("AeLocalLoadTable"); + ACPI_FUNCTION_TRACE ("AeLocalLoadTable"); if (!TablePtr) { @@ -474,7 +474,6 @@ AcpiDbLoadAcpiTable ( AcpiFormatException (Status)); } - AcpiOsFree (AcpiGbl_DbTablePtr); return (Status); } diff --git a/sys/contrib/dev/acpica/dbhistry.c b/sys/contrib/dev/acpica/dbhistry.c index 147c6f548984..1aceadc73b98 100644 --- a/sys/contrib/dev/acpica/dbhistry.c +++ b/sys/contrib/dev/acpica/dbhistry.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: dbhistry - debugger HISTORY command - * $Revision: 19 $ + * $Revision: 22 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -129,7 +129,7 @@ #ifdef ENABLE_DEBUGGER #define _COMPONENT ACPI_DEBUGGER - MODULE_NAME ("dbhistry") + ACPI_MODULE_NAME ("dbhistry") #define HI_NO_HISTORY 0 @@ -169,10 +169,9 @@ AcpiDbAddToHistory ( NATIVE_CHAR *CommandLine) { - /* Put command into the next available slot */ - STRCPY (AcpiGbl_HistoryBuffer[AcpiGbl_NextHistoryIndex].Command, CommandLine); + ACPI_STRCPY (AcpiGbl_HistoryBuffer[AcpiGbl_NextHistoryIndex].Command, CommandLine); AcpiGbl_HistoryBuffer[AcpiGbl_NextHistoryIndex].CmdNum = AcpiGbl_NextCmdNum; @@ -194,13 +193,11 @@ AcpiDbAddToHistory ( AcpiGbl_NextHistoryIndex = 0; } - AcpiGbl_NextCmdNum++; if (AcpiGbl_NumHistory < HISTORY_SIZE) { AcpiGbl_NumHistory++; } - } @@ -270,10 +267,9 @@ AcpiDbGetFromHistory ( else { - CmdNum = STRTOUL (CommandNumArg, NULL, 0); + CmdNum = ACPI_STRTOUL (CommandNumArg, NULL, 0); } - /* Search history buffer */ HistoryIndex = AcpiGbl_LoHistory; diff --git a/sys/contrib/dev/acpica/dbinput.c b/sys/contrib/dev/acpica/dbinput.c index 5e85c981d28d..e5e938bf22bb 100644 --- a/sys/contrib/dev/acpica/dbinput.c +++ b/sys/contrib/dev/acpica/dbinput.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dbinput - user front-end to the AML debugger - * $Revision: 72 $ + * $Revision: 80 $ * ******************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -126,56 +126,14 @@ #ifdef ENABLE_DEBUGGER #define _COMPONENT ACPI_DEBUGGER - MODULE_NAME ("dbinput") + ACPI_MODULE_NAME ("dbinput") /* - * Globals that are specific to the debugger - */ - -NATIVE_CHAR AcpiGbl_DbLineBuf[80]; -NATIVE_CHAR AcpiGbl_DbParsedBuf[80]; -NATIVE_CHAR AcpiGbl_DbScopeBuf[40]; -NATIVE_CHAR AcpiGbl_DbDebugFilename[40]; -NATIVE_CHAR *AcpiGbl_DbArgs[DB_MAX_ARGS]; -NATIVE_CHAR *AcpiGbl_DbBuffer = NULL; -NATIVE_CHAR *AcpiGbl_DbFilename = NULL; -BOOLEAN AcpiGbl_DbOutputToFile = FALSE; - -UINT32 AcpiGbl_DbDebugLevel = ACPI_LV_VERBOSITY2; -UINT32 AcpiGbl_DbConsoleDebugLevel = NORMAL_DEFAULT | ACPI_LV_TABLES; -UINT8 AcpiGbl_DbOutputFlags = DB_CONSOLE_OUTPUT; - - -BOOLEAN AcpiGbl_DbOpt_tables = FALSE; -BOOLEAN AcpiGbl_DbOpt_disasm = FALSE; -BOOLEAN AcpiGbl_DbOpt_stats = FALSE; -BOOLEAN AcpiGbl_DbOpt_parse_jit = FALSE; -BOOLEAN AcpiGbl_DbOpt_verbose = TRUE; -BOOLEAN AcpiGbl_DbOpt_ini_methods = TRUE; - -/* - * Statistic globals - */ -UINT16 AcpiGbl_ObjTypeCount[INTERNAL_TYPE_NODE_MAX+1]; -UINT16 AcpiGbl_NodeTypeCount[INTERNAL_TYPE_NODE_MAX+1]; -UINT16 AcpiGbl_ObjTypeCountMisc; -UINT16 AcpiGbl_NodeTypeCountMisc; -UINT32 AcpiGbl_NumNodes; -UINT32 AcpiGbl_NumObjects; - - -UINT32 AcpiGbl_SizeOfParseTree; -UINT32 AcpiGbl_SizeOfMethodTrees; -UINT32 AcpiGbl_SizeOfNodeEntries; -UINT32 AcpiGbl_SizeOfAcpiObjects; - -/* * Top-level debugger commands. * * This list of commands must match the string table below it */ - enum AcpiExDebuggerCommands { CMD_NOT_FOUND = 0, @@ -316,13 +274,11 @@ AcpiDbDisplayHelp ( } - /* * Parameter is the command class * * The idea here is to keep each class of commands smaller than a screenful */ - switch (HelpType[0]) { case 'G': @@ -413,6 +369,7 @@ AcpiDbGetNextToken ( { NATIVE_CHAR *Start; + /* At end of buffer? */ if (!String || !(*String)) @@ -420,7 +377,6 @@ AcpiDbGetNextToken ( return (NULL); } - /* Get rid of any spaces at the beginning */ if (*String == ' ') @@ -445,12 +401,10 @@ AcpiDbGetNextToken ( String++; } - if (!(*String)) { *Next = NULL; } - else { *String = 0; @@ -484,11 +438,11 @@ AcpiDbGetLine ( NATIVE_CHAR *This; - STRCPY (AcpiGbl_DbParsedBuf, InputBuffer); - STRUPR (AcpiGbl_DbParsedBuf); + ACPI_STRCPY (AcpiGbl_DbParsedBuf, InputBuffer); + ACPI_STRUPR (AcpiGbl_DbParsedBuf); This = AcpiGbl_DbParsedBuf; - for (i = 0; i < DB_MAX_ARGS; i++) + for (i = 0; i < ACPI_DEBUGGER_MAX_ARGS; i++) { AcpiGbl_DbArgs[i] = AcpiDbGetNextToken (This, &Next); if (!AcpiGbl_DbArgs[i]) @@ -499,12 +453,11 @@ AcpiDbGetLine ( This = Next; } - /* Uppercase the actual command */ if (AcpiGbl_DbArgs[0]) { - STRUPR (AcpiGbl_DbArgs[0]); + ACPI_STRUPR (AcpiGbl_DbArgs[0]); } Count = i; @@ -543,7 +496,8 @@ AcpiDbMatchCommand ( for (i = CMD_FIRST_VALID; AcpiGbl_DbCommands[i].Name; i++) { - if (STRSTR (AcpiGbl_DbCommands[i].Name, UserCommand) == AcpiGbl_DbCommands[i].Name) + if (ACPI_STRSTR (AcpiGbl_DbCommands[i].Name, UserCommand) == + AcpiGbl_DbCommands[i].Name) { return (i); } @@ -693,7 +647,6 @@ AcpiDbCommandDispatch ( Status = AE_CTRL_TRUE; } return (Status); - break; case CMD_HISTORY_LAST: CommandLine = AcpiDbGetFromHistory (NULL); @@ -717,9 +670,6 @@ AcpiDbCommandDispatch ( if (Op) { AcpiGbl_CmSingleStep = TRUE; - -/* TBD: Must get current walk state */ - /* AcpiGbl_MethodBreakpoint = 0; */ return (AE_OK); } break; @@ -733,13 +683,13 @@ AcpiDbCommandDispatch ( else if (ParamCount == 2) { Temp = AcpiGbl_DbConsoleDebugLevel; - AcpiGbl_DbConsoleDebugLevel = STRTOUL (AcpiGbl_DbArgs[1], NULL, 16); + AcpiGbl_DbConsoleDebugLevel = ACPI_STRTOUL (AcpiGbl_DbArgs[1], NULL, 16); AcpiOsPrintf ("Debug Level for console output was %8.8lX, now %8.8lX\n", Temp, AcpiGbl_DbConsoleDebugLevel); } else { Temp = AcpiGbl_DbDebugLevel; - AcpiGbl_DbDebugLevel = STRTOUL (AcpiGbl_DbArgs[1], NULL, 16); + AcpiGbl_DbDebugLevel = ACPI_STRTOUL (AcpiGbl_DbArgs[1], NULL, 16); AcpiOsPrintf ("Debug Level for file output was %8.8lX, now %8.8lX\n", Temp, AcpiGbl_DbDebugLevel); } break; @@ -773,12 +723,12 @@ AcpiDbCommandDispatch ( break; case CMD_NOTIFY: - Temp = STRTOUL (AcpiGbl_DbArgs[2], NULL, 0); + Temp = ACPI_STRTOUL (AcpiGbl_DbArgs[2], NULL, 0); AcpiDbSendNotify (AcpiGbl_DbArgs[1], Temp); break; case CMD_OBJECT: - AcpiDbDisplayObjects (STRUPR (AcpiGbl_DbArgs[1]), AcpiGbl_DbArgs[2]); + AcpiDbDisplayObjects (ACPI_STRUPR (AcpiGbl_DbArgs[1]), AcpiGbl_DbArgs[2]); break; case CMD_OPEN: @@ -815,14 +765,13 @@ AcpiDbCommandDispatch ( case CMD_STOP: return (AE_AML_ERROR); - break; case CMD_TABLES: AcpiDbDisplayTableInfo (AcpiGbl_DbArgs[1]); break; case CMD_TERMINATE: - AcpiDbSetOutputDestination (DB_REDIRECTABLE_OUTPUT); + AcpiDbSetOutputDestination (ACPI_DB_REDIRECTABLE_OUTPUT); AcpiUtSubsystemShutdown (); /* TBD: [Restructure] Need some way to re-initialize without re-creating the semaphores! */ @@ -895,6 +844,7 @@ AcpiDbExecuteThread ( void *Context) { ACPI_STATUS Status = AE_OK; + ACPI_STATUS MStatus; while (Status != AE_CTRL_TERMINATE) @@ -902,9 +852,19 @@ AcpiDbExecuteThread ( AcpiGbl_MethodExecuting = FALSE; AcpiGbl_StepToNextCall = FALSE; - AcpiUtAcquireMutex (ACPI_MTX_DEBUG_CMD_READY); + MStatus = AcpiUtAcquireMutex (ACPI_MTX_DEBUG_CMD_READY); + if (ACPI_FAILURE (MStatus)) + { + return; + } + Status = AcpiDbCommandDispatch (AcpiGbl_DbLineBuf, NULL, NULL); - AcpiUtReleaseMutex (ACPI_MTX_DEBUG_CMD_COMPLETE); + + MStatus = AcpiUtReleaseMutex (ACPI_MTX_DEBUG_CMD_COMPLETE); + if (ACPI_FAILURE (MStatus)) + { + return; + } } } @@ -926,7 +886,7 @@ void AcpiDbSingleThread ( void) { - ACPI_STATUS Status = AE_OK; + ACPI_STATUS Status; AcpiGbl_MethodExecuting = FALSE; @@ -964,17 +924,17 @@ AcpiDbUserCommands ( { /* Force output to console until a command is entered */ - AcpiDbSetOutputDestination (DB_CONSOLE_OUTPUT); + AcpiDbSetOutputDestination (ACPI_DB_CONSOLE_OUTPUT); /* Different prompt if method is executing */ if (!AcpiGbl_MethodExecuting) { - AcpiOsPrintf ("%1c ", DB_COMMAND_PROMPT); + AcpiOsPrintf ("%1c ", ACPI_DEBUGGER_COMMAND_PROMPT); } else { - AcpiOsPrintf ("%1c ", DB_EXECUTE_PROMPT); + AcpiOsPrintf ("%1c ", ACPI_DEBUGGER_EXECUTE_PROMPT); } /* Get the user input line */ @@ -990,10 +950,18 @@ AcpiDbUserCommands ( * Signal the debug thread that we have a command to execute, * and wait for the command to complete. */ - AcpiUtReleaseMutex (ACPI_MTX_DEBUG_CMD_READY); - AcpiUtAcquireMutex (ACPI_MTX_DEBUG_CMD_COMPLETE); + Status = AcpiUtReleaseMutex (ACPI_MTX_DEBUG_CMD_READY); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + Status = AcpiUtAcquireMutex (ACPI_MTX_DEBUG_CMD_COMPLETE); + if (ACPI_FAILURE (Status)) + { + return (Status); + } } - else { /* Just call to the command line interpreter */ @@ -1002,7 +970,6 @@ AcpiDbUserCommands ( } } - /* * Only this thread (the original thread) should actually terminate the subsystem, * because all the semaphores are deleted during termination diff --git a/sys/contrib/dev/acpica/dbstats.c b/sys/contrib/dev/acpica/dbstats.c index 566e57d0ac98..ae0919306bbc 100644 --- a/sys/contrib/dev/acpica/dbstats.c +++ b/sys/contrib/dev/acpica/dbstats.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dbstats - Generation and display of ACPI table statistics - * $Revision: 49 $ + * $Revision: 55 $ * ******************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -124,7 +124,7 @@ #ifdef ENABLE_DEBUGGER #define _COMPONENT ACPI_DEBUGGER - MODULE_NAME ("dbstats") + ACPI_MODULE_NAME ("dbstats") /* * Statistics subcommands @@ -159,9 +159,8 @@ ARGUMENT_INFO AcpiDbStatTypes [] = * RETURN: None * * DESCRIPTION: Add this object to the global counts, by object type. - * Recursively handles subobjects and packages. - * - * [TBD] Restructure - remove recursion. + * Limited recursion handles subobjects and packages, and this + * is probably acceptable within the AML debugger only. * ******************************************************************************/ @@ -169,8 +168,6 @@ void AcpiDbEnumerateObject ( ACPI_OPERAND_OBJECT *ObjDesc) { - ACPI_OPERAND_OBJECT *ObjDesc2; - UINT32 Type; UINT32 i; @@ -184,22 +181,21 @@ AcpiDbEnumerateObject ( AcpiGbl_NumObjects++; - Type = ObjDesc->Common.Type; - if (Type > INTERNAL_TYPE_NODE_MAX) + if (ObjDesc->Common.Type > INTERNAL_TYPE_NODE_MAX) { AcpiGbl_ObjTypeCountMisc++; } else { - AcpiGbl_ObjTypeCount [Type]++; + AcpiGbl_ObjTypeCount [ObjDesc->Common.Type]++; } /* Count the sub-objects */ - switch (Type) + switch (ObjDesc->Common.Type) { case ACPI_TYPE_PACKAGE: - for (i = 0; i< ObjDesc->Package.Count; i++) + for (i = 0; i < ObjDesc->Package.Count; i++) { AcpiDbEnumerateObject (ObjDesc->Package.Elements[i]); } @@ -212,15 +208,14 @@ AcpiDbEnumerateObject ( break; case ACPI_TYPE_BUFFER_FIELD: - ObjDesc2 = AcpiNsGetSecondaryObject (ObjDesc); - if (ObjDesc2) + if (AcpiNsGetSecondaryObject (ObjDesc)) { - AcpiGbl_ObjTypeCount [INTERNAL_TYPE_EXTRA]++; + AcpiGbl_ObjTypeCount [ACPI_TYPE_BUFFER_FIELD]++; } break; case ACPI_TYPE_REGION: - AcpiGbl_ObjTypeCount [INTERNAL_TYPE_EXTRA]++; + AcpiGbl_ObjTypeCount [INTERNAL_TYPE_REGION_FIELD ]++; AcpiDbEnumerateObject (ObjDesc->Region.AddrHandler); break; @@ -373,8 +368,10 @@ AcpiDbDisplayStatistics ( { UINT32 i; UINT32 Type; - UINT32 Outstanding; UINT32 Size; +#ifdef ACPI_DBG_TRACK_ALLOCATIONS + UINT32 Outstanding; +#endif if (!AcpiGbl_DSDT) @@ -388,7 +385,7 @@ AcpiDbDisplayStatistics ( return (AE_OK); } - STRUPR (TypeArg); + ACPI_STRUPR (TypeArg); Type = AcpiDbMatchArgument (TypeArg, AcpiDbStatTypes); if (Type == (UINT32) -1) { @@ -470,11 +467,11 @@ AcpiDbDisplayStatistics ( if (AcpiGbl_MemoryLists[i].ObjectSize) { - Size = ROUND_UP_TO_1K (Outstanding * AcpiGbl_MemoryLists[i].ObjectSize); + Size = ACPI_ROUND_UP_TO_1K (Outstanding * AcpiGbl_MemoryLists[i].ObjectSize); } else { - Size = ROUND_UP_TO_1K (AcpiGbl_MemoryLists[i].CurrentTotalSize); + Size = ACPI_ROUND_UP_TO_1K (AcpiGbl_MemoryLists[i].CurrentTotalSize); } AcpiOsPrintf (" Mem: [Alloc Free Outstanding Size] % 7d % 7d % 7d % 7d Kb\n", diff --git a/sys/contrib/dev/acpica/dbutils.c b/sys/contrib/dev/acpica/dbutils.c index 75dbac50aa82..648cb90d0eae 100644 --- a/sys/contrib/dev/acpica/dbutils.c +++ b/sys/contrib/dev/acpica/dbutils.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dbutils - AML debugger utilities - * $Revision: 45 $ + * $Revision: 51 $ * ******************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -129,7 +129,7 @@ #ifdef ENABLE_DEBUGGER #define _COMPONENT ACPI_DEBUGGER - MODULE_NAME ("dbutils") + ACPI_MODULE_NAME ("dbutils") /******************************************************************************* @@ -152,12 +152,9 @@ AcpiDbSetOutputDestination ( AcpiGbl_DbOutputFlags = (UINT8) OutputFlags; - if (OutputFlags & DB_REDIRECTABLE_OUTPUT) + if ((OutputFlags & ACPI_DB_REDIRECTABLE_OUTPUT) && AcpiGbl_DbOutputToFile) { - if (AcpiGbl_DbOutputToFile) - { - AcpiDbgLevel = AcpiGbl_DbDebugLevel; - } + AcpiDbgLevel = AcpiGbl_DbDebugLevel; } else { @@ -186,7 +183,7 @@ AcpiDbDumpBuffer ( AcpiOsPrintf ("\nLocation %X:\n", Address); AcpiDbgLevel |= ACPI_LV_TABLES; - AcpiUtDumpBuffer ((UINT8 *) Address, 64, DB_BYTE_DISPLAY, ACPI_UINT32_MAX); + AcpiUtDumpBuffer (ACPI_TO_POINTER (Address), 64, DB_BYTE_DISPLAY, ACPI_UINT32_MAX); } @@ -232,8 +229,9 @@ AcpiDbDumpObject ( case ACPI_TYPE_INTEGER: - AcpiOsPrintf ("[Integer] = %8.8X%8.8X\n", HIDWORD (ObjDesc->Integer.Value), - LODWORD (ObjDesc->Integer.Value)); + AcpiOsPrintf ("[Integer] = %8.8X%8.8X\n", + ACPI_HIDWORD (ObjDesc->Integer.Value), + ACPI_LODWORD (ObjDesc->Integer.Value)); break; @@ -315,7 +313,7 @@ AcpiDbPrepNamestring ( return; } - STRUPR (Name); + ACPI_STRUPR (Name); /* Convert a leading forward slash to a backslash */ @@ -372,7 +370,7 @@ AcpiDbSecondPassParse ( ACPI_WALK_STATE *WalkState; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); AcpiOsPrintf ("Pass two parse ....\n"); @@ -449,6 +447,9 @@ AcpiDbSecondPassParse ( * * DESCRIPTION: Lookup a name in the ACPI namespace * + * Note: Currently begins search from the root. Could be enhanced to use + * the current prefix (scope) node as the search beginning point. + * ******************************************************************************/ ACPI_NAMESPACE_NODE * @@ -471,22 +472,18 @@ AcpiDbLocalNsLookup ( return (NULL); } - /* Lookup the name */ - - /* TBD: [Investigate] what scope do we use? */ - /* Use the root scope for the start of the search */ - - Status = AcpiNsLookup (NULL, InternalPath, ACPI_TYPE_ANY, IMODE_EXECUTE, - NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE, NULL, &Node); - + /* + * Lookup the name. + * (Uses root node as the search starting point) + */ + Status = AcpiNsLookup (NULL, InternalPath, ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, + ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE, NULL, &Node); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Could not locate name: %s %s\n", Name, AcpiFormatException (Status)); } - ACPI_MEM_FREE (InternalPath); - return (Node); } diff --git a/sys/contrib/dev/acpica/dbxface.c b/sys/contrib/dev/acpica/dbxface.c index 1833c97f66db..9225aff6d5a0 100644 --- a/sys/contrib/dev/acpica/dbxface.c +++ b/sys/contrib/dev/acpica/dbxface.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dbxface - AML Debugger external interfaces - * $Revision: 46 $ + * $Revision: 55 $ * ******************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -128,7 +128,7 @@ #ifdef ENABLE_DEBUGGER #define _COMPONENT ACPI_DEBUGGER - MODULE_NAME ("dbxface") + ACPI_MODULE_NAME ("dbxface") /******************************************************************************* @@ -155,27 +155,35 @@ AcpiDbSingleStep ( ACPI_STATUS Status = AE_OK; UINT32 OriginalDebugLevel; ACPI_PARSE_OBJECT *DisplayOp; + ACPI_PARSE_OBJECT *ParentOp; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); - /* Is there a breakpoint set? */ + /* Check for single-step breakpoint */ - if (WalkState->MethodBreakpoint) + if (WalkState->MethodBreakpoint && (WalkState->MethodBreakpoint <= Op->AmlOffset)) { /* Check if the breakpoint has been reached or passed */ + /* Hit the breakpoint, resume single step, reset breakpoint */ - if (WalkState->MethodBreakpoint <= Op->AmlOffset) - { - /* Hit the breakpoint, resume single step, reset breakpoint */ + AcpiOsPrintf ("***Break*** at AML offset %X\n", Op->AmlOffset); + AcpiGbl_CmSingleStep = TRUE; + AcpiGbl_StepToNextCall = FALSE; + WalkState->MethodBreakpoint = 0; + } - AcpiOsPrintf ("***Break*** at AML offset %X\n", Op->AmlOffset); - AcpiGbl_CmSingleStep = TRUE; - AcpiGbl_StepToNextCall = FALSE; - WalkState->MethodBreakpoint = 0; - } + /* Check for user breakpoint (Must be on exact Aml offset) */ + + else if (WalkState->UserBreakpoint && (WalkState->UserBreakpoint == Op->AmlOffset)) + { + AcpiOsPrintf ("***UserBreakpoint*** at AML offset %X\n", Op->AmlOffset); + AcpiGbl_CmSingleStep = TRUE; + AcpiGbl_StepToNextCall = FALSE; + WalkState->MethodBreakpoint = 0; } + /* * Check if this is an opcode that we are interested in -- * namely, opcodes that have arguments @@ -190,7 +198,6 @@ AcpiDbSingleStep ( case AML_CLASS_UNKNOWN: case AML_CLASS_ARGUMENT: /* constants, literals, etc. do nothing */ return (AE_OK); - break; } /* @@ -218,12 +225,43 @@ AcpiDbSingleStep ( DisplayOp = Op; - if (Op->Parent) + ParentOp = Op->Parent; + if (ParentOp) { - if ((Op->Parent->Opcode == AML_IF_OP) || - (Op->Parent->Opcode == AML_WHILE_OP)) + if ((WalkState->ControlState) && + (WalkState->ControlState->Common.State == ACPI_CONTROL_PREDICATE_EXECUTING)) + { + /* + * We are executing the predicate of an IF or WHILE statement + * Search upwards for the containing IF or WHILE so that the + * entire predicate can be displayed. + */ + while (ParentOp) + { + if ((ParentOp->Opcode == AML_IF_OP) || + (ParentOp->Opcode == AML_WHILE_OP)) + { + DisplayOp = ParentOp; + break; + } + ParentOp = ParentOp->Parent; + } + } + else { - DisplayOp = Op->Parent; + while (ParentOp) + { + if ((ParentOp->Opcode == AML_IF_OP) || + (ParentOp->Opcode == AML_ELSE_OP) || + (ParentOp->Opcode == AML_SCOPE_OP) || + (ParentOp->Opcode == AML_METHOD_OP) || + (ParentOp->Opcode == AML_WHILE_OP)) + { + break; + } + DisplayOp = ParentOp; + ParentOp = ParentOp->Parent; + } } } @@ -236,17 +274,17 @@ AcpiDbSingleStep ( { if (WalkState->ControlState->Common.Value) { - AcpiOsPrintf ("Predicate was TRUE, executed block\n"); + AcpiOsPrintf ("Predicate = [True], IF block was executed\n"); } else { - AcpiOsPrintf ("Predicate is FALSE, skipping block\n"); + AcpiOsPrintf ("Predicate = [False], Skipping IF block\n"); } } else if (Op->Opcode == AML_ELSE_OP) { - /* TBD */ + AcpiOsPrintf ("Predicate = [False], ELSE block was executed\n"); } /* Restore everything */ @@ -263,7 +301,6 @@ AcpiDbSingleStep ( return (AE_OK); } - /* * If we are executing a step-to-call command, * Check if this is a method call. @@ -282,7 +319,6 @@ AcpiDbSingleStep ( AcpiGbl_StepToNextCall = FALSE; } - /* * If the next opcode is a method call, we will "step over" it * by default. @@ -291,11 +327,9 @@ AcpiDbSingleStep ( { AcpiGbl_CmSingleStep = FALSE; /* No more single step while executing called method */ - /* Set the breakpoint on the call, it will stop execution as soon as we return */ + /* Set the breakpoint on/before the call, it will stop execution as soon as we return */ - /* TBD: [Future] don't kill the user breakpoint! */ - - WalkState->MethodBreakpoint = /* Op->AmlOffset + */ 1; /* Must be non-zero! */ + WalkState->MethodBreakpoint = 1; /* Must be non-zero! */ } @@ -313,8 +347,16 @@ AcpiDbSingleStep ( { /* Handshake with the front-end that gets user command lines */ - AcpiUtReleaseMutex (ACPI_MTX_DEBUG_CMD_COMPLETE); - AcpiUtAcquireMutex (ACPI_MTX_DEBUG_CMD_READY); + Status = AcpiUtReleaseMutex (ACPI_MTX_DEBUG_CMD_COMPLETE); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + Status = AcpiUtAcquireMutex (ACPI_MTX_DEBUG_CMD_READY); + if (ACPI_FAILURE (Status)) + { + return (Status); + } } else @@ -323,17 +365,17 @@ AcpiDbSingleStep ( /* Force output to console until a command is entered */ - AcpiDbSetOutputDestination (DB_CONSOLE_OUTPUT); + AcpiDbSetOutputDestination (ACPI_DB_CONSOLE_OUTPUT); /* Different prompt if method is executing */ if (!AcpiGbl_MethodExecuting) { - AcpiOsPrintf ("%1c ", DB_COMMAND_PROMPT); + AcpiOsPrintf ("%1c ", ACPI_DEBUGGER_COMMAND_PROMPT); } else { - AcpiOsPrintf ("%1c ", DB_EXECUTE_PROMPT); + AcpiOsPrintf ("%1c ", ACPI_DEBUGGER_EXECUTE_PROMPT); } /* Get the user input line */ @@ -368,16 +410,34 @@ int AcpiDbInitialize (void) { - /* Init globals */ - AcpiGbl_DbBuffer = AcpiOsCallocate (ACPI_DEBUG_BUFFER_SIZE); + AcpiGbl_DbBuffer = NULL; + AcpiGbl_DbFilename = NULL; + AcpiGbl_DbOutputToFile = FALSE; + + AcpiGbl_DbDebugLevel = ACPI_LV_VERBOSITY2; + AcpiGbl_DbConsoleDebugLevel = NORMAL_DEFAULT | ACPI_LV_TABLES; + AcpiGbl_DbOutputFlags = ACPI_DB_CONSOLE_OUTPUT; + + AcpiGbl_DbOpt_tables = FALSE; + AcpiGbl_DbOpt_disasm = FALSE; + AcpiGbl_DbOpt_stats = FALSE; + AcpiGbl_DbOpt_verbose = TRUE; + AcpiGbl_DbOpt_ini_methods = TRUE; + + AcpiGbl_DbBuffer = AcpiOsAllocate (ACPI_DEBUG_BUFFER_SIZE); + if (!AcpiGbl_DbBuffer) + { + return 0; + } + ACPI_MEMSET (AcpiGbl_DbBuffer, 0, ACPI_DEBUG_BUFFER_SIZE); /* Initial scope is the root */ AcpiGbl_DbScopeBuf [0] = '\\'; AcpiGbl_DbScopeBuf [1] = 0; - + AcpiGbl_DbScopeNode = AcpiGbl_RootNode; /* * If configured for multi-thread support, the debug executor runs in diff --git a/sys/contrib/dev/acpica/dsfield.c b/sys/contrib/dev/acpica/dsfield.c index e58f1be7768f..87dd8c0ef6c9 100644 --- a/sys/contrib/dev/acpica/dsfield.c +++ b/sys/contrib/dev/acpica/dsfield.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: dsfield - Dispatcher field routines - * $Revision: 56 $ + * $Revision: 62 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -125,7 +125,7 @@ #define _COMPONENT ACPI_DISPATCHER - MODULE_NAME ("dsfield") + ACPI_MODULE_NAME ("dsfield") /******************************************************************************* @@ -161,7 +161,7 @@ AcpiDsCreateBufferField ( UINT32 Flags; - FUNCTION_TRACE ("DsCreateBufferField"); + ACPI_FUNCTION_TRACE ("DsCreateBufferField"); /* Get the NameString argument */ @@ -189,20 +189,19 @@ AcpiDsCreateBufferField ( */ if (WalkState->ParseFlags & ACPI_PARSE_EXECUTE) { - Flags = NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE; + Flags = ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE; } else { - Flags = NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE | NS_ERROR_IF_FOUND; + Flags = ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE | ACPI_NS_ERROR_IF_FOUND; } /* * Enter the NameString into the namespace */ Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Value.String, - INTERNAL_TYPE_DEF_ANY, IMODE_LOAD_PASS1, - Flags, - WalkState, &(Node)); + INTERNAL_TYPE_DEF_ANY, ACPI_IMODE_LOAD_PASS1, + Flags, WalkState, &(Node)); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -291,7 +290,7 @@ AcpiDsGetFieldNames ( ACPI_STATUS Status; - FUNCTION_TRACE_U32 ("DsGetFieldNames", Info); + ACPI_FUNCTION_TRACE_PTR ("DsGetFieldNames", Info); /* First field starts at bit zero */ @@ -312,6 +311,13 @@ AcpiDsGetFieldNames ( { case AML_INT_RESERVEDFIELD_OP: + if (((ACPI_INTEGER) Info->FieldBitPosition + Arg->Value.Size) > + ACPI_UINT32_MAX) + { + ACPI_REPORT_ERROR (("Bit offset within field too large (> 0xFFFFFFFF)\n")); + return_ACPI_STATUS (AE_SUPPORT); + } + Info->FieldBitPosition += Arg->Value.Size; break; @@ -337,8 +343,8 @@ AcpiDsGetFieldNames ( Status = AcpiNsLookup (WalkState->ScopeInfo, (NATIVE_CHAR *) &((ACPI_PARSE2_OBJECT *)Arg)->Name, - Info->FieldType, IMODE_EXECUTE, NS_DONT_OPEN_SCOPE, - NULL, &Info->FieldNode); + Info->FieldType, ACPI_IMODE_EXECUTE, ACPI_NS_DONT_OPEN_SCOPE, + WalkState, &Info->FieldNode); if (ACPI_FAILURE (Status)) { if (Status != AE_ALREADY_EXISTS) @@ -346,7 +352,7 @@ AcpiDsGetFieldNames ( return_ACPI_STATUS (Status); } - REPORT_ERROR (("Field name [%4.4s] already exists in current scope\n", + ACPI_REPORT_ERROR (("Field name [%4.4s] already exists in current scope\n", &((ACPI_PARSE2_OBJECT *)Arg)->Name)); } else @@ -365,6 +371,14 @@ AcpiDsGetFieldNames ( /* Keep track of bit position for the next field */ + if (((ACPI_INTEGER) Info->FieldBitPosition + Arg->Value.Size) > + ACPI_UINT32_MAX) + { + ACPI_REPORT_ERROR (("Field [%4.4s] bit offset too large (> 0xFFFFFFFF)\n", + &Info->FieldNode->Name)); + return_ACPI_STATUS (AE_SUPPORT); + } + Info->FieldBitPosition += Info->FieldBitLength; break; @@ -374,7 +388,6 @@ AcpiDsGetFieldNames ( ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Invalid opcode in field list: %X\n", Arg->Opcode)); return_ACPI_STATUS (AE_AML_ERROR); - break; } Arg = Arg->Next; @@ -409,7 +422,7 @@ AcpiDsCreateField ( ACPI_CREATE_FIELD_INFO Info; - FUNCTION_TRACE_PTR ("DsCreateField", Op); + ACPI_FUNCTION_TRACE_PTR ("DsCreateField", Op); /* First arg is the name of the parent OpRegion (must already exist) */ @@ -418,8 +431,8 @@ AcpiDsCreateField ( if (!RegionNode) { Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Value.Name, - ACPI_TYPE_REGION, IMODE_EXECUTE, - NS_SEARCH_PARENT, WalkState, &RegionNode); + ACPI_TYPE_REGION, ACPI_IMODE_EXECUTE, + ACPI_NS_SEARCH_PARENT, WalkState, &RegionNode); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -469,7 +482,7 @@ AcpiDsInitFieldObjects ( UINT8 Type = 0; - FUNCTION_TRACE_PTR ("DsInitFieldObjects", Op); + ACPI_FUNCTION_TRACE_PTR ("DsInitFieldObjects", Op); switch (WalkState->Opcode) @@ -501,9 +514,9 @@ AcpiDsInitFieldObjects ( { Status = AcpiNsLookup (WalkState->ScopeInfo, (NATIVE_CHAR *) &((ACPI_PARSE2_OBJECT *)Arg)->Name, - Type, IMODE_LOAD_PASS1, - NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE | NS_ERROR_IF_FOUND, - NULL, &Node); + Type, ACPI_IMODE_LOAD_PASS1, + ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE | ACPI_NS_ERROR_IF_FOUND, + WalkState, &Node); if (ACPI_FAILURE (Status)) { if (Status != AE_ALREADY_EXISTS) @@ -511,14 +524,14 @@ AcpiDsInitFieldObjects ( return_ACPI_STATUS (Status); } - REPORT_ERROR (("Field name [%4.4s] already exists in current scope\n", + ACPI_REPORT_ERROR (("Field name [%4.4s] already exists in current scope\n", &((ACPI_PARSE2_OBJECT *)Arg)->Name)); } Arg->Node = Node; } - /* Move on to next field in the list */ + /* Move to next field in the list */ Arg = Arg->Next; } @@ -552,7 +565,7 @@ AcpiDsCreateBankField ( ACPI_CREATE_FIELD_INFO Info; - FUNCTION_TRACE_PTR ("DsCreateBankField", Op); + ACPI_FUNCTION_TRACE_PTR ("DsCreateBankField", Op); /* First arg is the name of the parent OpRegion (must already exist) */ @@ -561,8 +574,8 @@ AcpiDsCreateBankField ( if (!RegionNode) { Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Value.Name, - ACPI_TYPE_REGION, IMODE_EXECUTE, - NS_SEARCH_PARENT, WalkState, &RegionNode); + ACPI_TYPE_REGION, ACPI_IMODE_EXECUTE, + ACPI_NS_SEARCH_PARENT, WalkState, &RegionNode); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -573,8 +586,8 @@ AcpiDsCreateBankField ( Arg = Arg->Next; Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Value.String, - INTERNAL_TYPE_BANK_FIELD_DEFN, IMODE_EXECUTE, - NS_SEARCH_PARENT, WalkState, &Info.RegisterNode); + INTERNAL_TYPE_BANK_FIELD_DEFN, ACPI_IMODE_EXECUTE, + ACPI_NS_SEARCH_PARENT, WalkState, &Info.RegisterNode); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -626,15 +639,15 @@ AcpiDsCreateIndexField ( ACPI_CREATE_FIELD_INFO Info; - FUNCTION_TRACE_PTR ("DsCreateIndexField", Op); + ACPI_FUNCTION_TRACE_PTR ("DsCreateIndexField", Op); /* First arg is the name of the Index register (must already exist) */ Arg = Op->Value.Arg; Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Value.String, - ACPI_TYPE_ANY, IMODE_EXECUTE, - NS_SEARCH_PARENT, WalkState, &Info.RegisterNode); + ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, + ACPI_NS_SEARCH_PARENT, WalkState, &Info.RegisterNode); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -644,8 +657,8 @@ AcpiDsCreateIndexField ( Arg = Arg->Next; Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Value.String, - INTERNAL_TYPE_INDEX_FIELD_DEFN, IMODE_EXECUTE, - NS_SEARCH_PARENT, WalkState, &Info.DataRegisterNode); + INTERNAL_TYPE_INDEX_FIELD_DEFN, ACPI_IMODE_EXECUTE, + ACPI_NS_SEARCH_PARENT, WalkState, &Info.DataRegisterNode); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); diff --git a/sys/contrib/dev/acpica/dsmethod.c b/sys/contrib/dev/acpica/dsmethod.c index 147a4ee2e8df..099372dc79e5 100644 --- a/sys/contrib/dev/acpica/dsmethod.c +++ b/sys/contrib/dev/acpica/dsmethod.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: dsmethod - Parser/Interpreter interface - control method parsing - * $Revision: 73 $ + * $Revision: 79 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -127,7 +127,7 @@ #define _COMPONENT ACPI_DISPATCHER - MODULE_NAME ("dsmethod") + ACPI_MODULE_NAME ("dsmethod") /******************************************************************************* @@ -160,7 +160,7 @@ AcpiDsParseMethod ( ACPI_WALK_STATE *WalkState; - FUNCTION_TRACE_PTR ("DsParseMethod", ObjHandle); + ACPI_FUNCTION_TRACE_PTR ("DsParseMethod", ObjHandle); /* Parameter Validation */ @@ -171,8 +171,7 @@ AcpiDsParseMethod ( } ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "**** Parsing [%4.4s] **** NamedObj=%p\n", - (char*)&((ACPI_NAMESPACE_NODE *)ObjHandle)->Name, ObjHandle)); - + (char *) &((ACPI_NAMESPACE_NODE *) ObjHandle)->Name, ObjHandle)); /* Extract the method object from the method Node */ @@ -212,9 +211,17 @@ AcpiDsParseMethod ( AcpiPsSetName (Op, Node->Name); Op->Node = Node; + /* + * Get a new OwnerId for objects created by this method. Namespace + * objects (such as Operation Regions) can be created during the + * first pass parse. + */ + OwnerId = AcpiUtAllocateOwnerId (ACPI_OWNER_TYPE_METHOD); + ObjDesc->Method.OwningId = OwnerId; + /* Create and initialize a new walk state */ - WalkState = AcpiDsCreateWalkState (TABLE_ID_DSDT, + WalkState = AcpiDsCreateWalkState (OwnerId, NULL, NULL, NULL); if (!WalkState) { @@ -245,16 +252,10 @@ AcpiDsParseMethod ( return_ACPI_STATUS (Status); } - /* Get a new OwnerId for objects created by this method */ - - OwnerId = AcpiUtAllocateOwnerId (OWNER_TYPE_METHOD); - ObjDesc->Method.OwningId = OwnerId; - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "**** [%4.4s] Parsed **** NamedObj=%p Op=%p\n", - (char*)&((ACPI_NAMESPACE_NODE *)ObjHandle)->Name, ObjHandle, Op)); + (char *) &((ACPI_NAMESPACE_NODE *) ObjHandle)->Name, ObjHandle, Op)); AcpiPsDeleteParseTree (Op); - return_ACPI_STATUS (Status); } @@ -286,7 +287,7 @@ AcpiDsBeginMethodExecution ( ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE_PTR ("DsBeginMethodExecution", MethodNode); + ACPI_FUNCTION_TRACE_PTR ("DsBeginMethodExecution", MethodNode); if (!MethodNode) @@ -294,7 +295,6 @@ AcpiDsBeginMethodExecution ( return_ACPI_STATUS (AE_NULL_ENTRY); } - /* * If there is a concurrency limit on this method, we need to * obtain a unit from the method semaphore. @@ -325,13 +325,11 @@ AcpiDsBeginMethodExecution ( WAIT_FOREVER); } - /* * Increment the method parse tree thread count since it has been * reentered one more time (even if it is the same thread) */ ObjDesc->Method.ThreadCount++; - return_ACPI_STATUS (Status); } @@ -353,7 +351,7 @@ ACPI_STATUS AcpiDsCallControlMethod ( ACPI_THREAD_STATE *Thread, ACPI_WALK_STATE *ThisWalkState, - ACPI_PARSE_OBJECT *Op) /* TBD: This operand is obsolete */ + ACPI_PARSE_OBJECT *Op) { ACPI_STATUS Status; ACPI_NAMESPACE_NODE *MethodNode; @@ -362,7 +360,7 @@ AcpiDsCallControlMethod ( UINT32 i; - FUNCTION_TRACE_PTR ("DsCallControlMethod", ThisWalkState); + ACPI_FUNCTION_TRACE_PTR ("DsCallControlMethod", ThisWalkState); ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Execute method %p, currentstate=%p\n", ThisWalkState->PrevOp, ThisWalkState)); @@ -391,7 +389,6 @@ AcpiDsCallControlMethod ( return_ACPI_STATUS (Status); } - /* 1) Parse: Create a new walk state for the preempting walk */ NextWalkState = AcpiDsCreateWalkState (ObjDesc->Method.OwningId, @@ -399,7 +396,6 @@ AcpiDsCallControlMethod ( if (!NextWalkState) { return_ACPI_STATUS (AE_NO_MEMORY); - goto Cleanup; } /* Create and init a Root Node */ @@ -425,7 +421,6 @@ AcpiDsCallControlMethod ( Status = AcpiPsParseAml (NextWalkState); AcpiPsDeleteParseTree (Op); - /* 2) Execute: Create a new state for the preempting walk */ NextWalkState = AcpiDsCreateWalkState (ObjDesc->Method.OwningId, @@ -503,7 +498,7 @@ AcpiDsRestartControlMethod ( ACPI_STATUS Status; - FUNCTION_TRACE_PTR ("DsRestartControlMethod", WalkState); + ACPI_FUNCTION_TRACE_PTR ("DsRestartControlMethod", WalkState); if (ReturnDesc) @@ -521,7 +516,6 @@ AcpiDsRestartControlMethod ( return_ACPI_STATUS (Status); } } - else { /* @@ -530,7 +524,6 @@ AcpiDsRestartControlMethod ( */ AcpiUtRemoveReference (ReturnDesc); } - } ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, @@ -563,12 +556,13 @@ AcpiDsTerminateControlMethod ( { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_NAMESPACE_NODE *MethodNode; + ACPI_STATUS Status; - FUNCTION_TRACE_PTR ("DsTerminateControlMethod", WalkState); + ACPI_FUNCTION_TRACE_PTR ("DsTerminateControlMethod", WalkState); - /* The method object should be stored in the walk state */ + /* The current method object was saved in the walk state */ ObjDesc = WalkState->MethodDesc; if (!ObjDesc) @@ -585,8 +579,11 @@ AcpiDsTerminateControlMethod ( * If this is the last thread executing the method, * we have additional cleanup to perform */ - AcpiUtAcquireMutex (ACPI_MTX_PARSER); - + Status = AcpiUtAcquireMutex (ACPI_MTX_PARSER); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } /* Signal completion of the execution of this method if necessary */ @@ -613,7 +610,12 @@ AcpiDsTerminateControlMethod ( * Delete any namespace entries created immediately underneath * the method */ - AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + if (MethodNode->Child) { AcpiNsDeleteNamespaceSubtree (MethodNode); @@ -624,11 +626,15 @@ AcpiDsTerminateControlMethod ( * the namespace */ AcpiNsDeleteNamespaceByOwner (WalkState->MethodDesc->Method.OwningId); - AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + Status = AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } } - AcpiUtReleaseMutex (ACPI_MTX_PARSER); - return_ACPI_STATUS (AE_OK); + Status = AcpiUtReleaseMutex (ACPI_MTX_PARSER); + return_ACPI_STATUS (Status); } diff --git a/sys/contrib/dev/acpica/dsmthdat.c b/sys/contrib/dev/acpica/dsmthdat.c index e597976ff12a..3f8d3c2154f6 100644 --- a/sys/contrib/dev/acpica/dsmthdat.c +++ b/sys/contrib/dev/acpica/dsmthdat.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dsmthdat - control method arguments and local variables - * $Revision: 53 $ + * $Revision: 58 $ * ******************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -125,7 +125,7 @@ #define _COMPONENT ACPI_DISPATCHER - MODULE_NAME ("dsmthdat") + ACPI_MODULE_NAME ("dsmthdat") /******************************************************************************* @@ -156,32 +156,32 @@ AcpiDsMethodDataInit ( UINT32 i; - FUNCTION_TRACE ("DsMethodDataInit"); + ACPI_FUNCTION_TRACE ("DsMethodDataInit"); /* Init the method arguments */ for (i = 0; i < MTH_NUM_ARGS; i++) { - MOVE_UNALIGNED32_TO_32 (&WalkState->Arguments[i].Name, + ACPI_MOVE_UNALIGNED32_TO_32 (&WalkState->Arguments[i].Name, NAMEOF_ARG_NTE); - WalkState->Arguments[i].Name |= (i << 24); - WalkState->Arguments[i].DataType = ACPI_DESC_TYPE_NAMED; - WalkState->Arguments[i].Type = ACPI_TYPE_ANY; - WalkState->Arguments[i].Flags = ANOBJ_END_OF_PEER_LIST | ANOBJ_METHOD_ARG; + WalkState->Arguments[i].Name |= (i << 24); + WalkState->Arguments[i].Descriptor = ACPI_DESC_TYPE_NAMED; + WalkState->Arguments[i].Type = ACPI_TYPE_ANY; + WalkState->Arguments[i].Flags = ANOBJ_END_OF_PEER_LIST | ANOBJ_METHOD_ARG; } /* Init the method locals */ for (i = 0; i < MTH_NUM_LOCALS; i++) { - MOVE_UNALIGNED32_TO_32 (&WalkState->LocalVariables[i].Name, + ACPI_MOVE_UNALIGNED32_TO_32 (&WalkState->LocalVariables[i].Name, NAMEOF_LOCAL_NTE); - WalkState->LocalVariables[i].Name |= (i << 24); - WalkState->LocalVariables[i].DataType = ACPI_DESC_TYPE_NAMED; - WalkState->LocalVariables[i].Type = ACPI_TYPE_ANY; - WalkState->LocalVariables[i].Flags = ANOBJ_END_OF_PEER_LIST | ANOBJ_METHOD_LOCAL; + WalkState->LocalVariables[i].Name |= (i << 24); + WalkState->LocalVariables[i].Descriptor = ACPI_DESC_TYPE_NAMED; + WalkState->LocalVariables[i].Type = ACPI_TYPE_ANY; + WalkState->LocalVariables[i].Flags = ANOBJ_END_OF_PEER_LIST | ANOBJ_METHOD_LOCAL; } return_ACPI_STATUS (AE_OK); @@ -208,7 +208,7 @@ AcpiDsMethodDataDeleteAll ( UINT32 Index; - FUNCTION_TRACE ("DsMethodDataDeleteAll"); + ACPI_FUNCTION_TRACE ("DsMethodDataDeleteAll"); /* Detach the locals */ @@ -271,7 +271,7 @@ AcpiDsMethodDataInitArgs ( UINT32 Index = 0; - FUNCTION_TRACE_PTR ("DsMethodDataInitArgs", Params); + ACPI_FUNCTION_TRACE_PTR ("DsMethodDataInitArgs", Params); if (!Params) @@ -323,7 +323,7 @@ AcpiDsMethodDataGetNode ( ACPI_WALK_STATE *WalkState, ACPI_NAMESPACE_NODE **Node) { - FUNCTION_TRACE ("DsMethodDataGetNode"); + ACPI_FUNCTION_TRACE ("DsMethodDataGetNode"); /* @@ -362,7 +362,6 @@ AcpiDsMethodDataGetNode ( default: ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Opcode %d is invalid\n", Opcode)); return_ACPI_STATUS (AE_AML_BAD_OPCODE); - break; } return_ACPI_STATUS (AE_OK); @@ -395,7 +394,7 @@ AcpiDsMethodDataSetValue ( ACPI_NAMESPACE_NODE *Node; - FUNCTION_TRACE ("DsMethodDataSetValue"); + ACPI_FUNCTION_TRACE ("DsMethodDataSetValue"); /* Get the namespace node for the arg/local */ @@ -430,7 +429,7 @@ AcpiDsMethodDataSetValue ( * ******************************************************************************/ -ACPI_OBJECT_TYPE8 +ACPI_OBJECT_TYPE AcpiDsMethodDataGetType ( UINT16 Opcode, UINT32 Index, @@ -441,7 +440,7 @@ AcpiDsMethodDataGetType ( ACPI_OPERAND_OBJECT *Object; - FUNCTION_TRACE ("DsMethodDataGetType"); + ACPI_FUNCTION_TRACE ("DsMethodDataGetType"); /* Get the namespace node for the arg/local */ @@ -498,7 +497,7 @@ AcpiDsMethodDataGetValue ( ACPI_OPERAND_OBJECT *Object; - FUNCTION_TRACE ("DsMethodDataGetValue"); + ACPI_FUNCTION_TRACE ("DsMethodDataGetValue"); /* Validate the object descriptor */ @@ -540,7 +539,6 @@ AcpiDsMethodDataGetValue ( Index, Node)); return_ACPI_STATUS (AE_AML_UNINITIALIZED_ARG); - break; case AML_LOCAL_OP: @@ -548,7 +546,6 @@ AcpiDsMethodDataGetValue ( Index, Node)); return_ACPI_STATUS (AE_AML_UNINITIALIZED_LOCAL); - break; } } @@ -589,7 +586,7 @@ AcpiDsMethodDataDeleteValue ( ACPI_OPERAND_OBJECT *Object; - FUNCTION_TRACE ("DsMethodDataDeleteValue"); + ACPI_FUNCTION_TRACE ("DsMethodDataDeleteValue"); /* Get the namespace node for the arg/local */ @@ -612,7 +609,7 @@ AcpiDsMethodDataDeleteValue ( Node->Object = NULL; if ((Object) && - (VALID_DESCRIPTOR_TYPE (Object, ACPI_DESC_TYPE_INTERNAL))) + (ACPI_GET_DESCRIPTOR_TYPE (Object) == ACPI_DESC_TYPE_INTERNAL)) { /* * There is a valid object. @@ -655,7 +652,7 @@ AcpiDsStoreObjectToLocal ( ACPI_OPERAND_OBJECT *CurrentObjDesc; - FUNCTION_TRACE ("DsStoreObjectToLocal"); + ACPI_FUNCTION_TRACE ("DsStoreObjectToLocal"); ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Opcode=%d Idx=%d Obj=%p\n", Opcode, Index, ObjDesc)); @@ -707,7 +704,7 @@ AcpiDsStoreObjectToLocal ( * Weird, but true. */ if ((Opcode == AML_ARG_OP) && - (VALID_DESCRIPTOR_TYPE (CurrentObjDesc, ACPI_DESC_TYPE_NAMED))) + (ACPI_GET_DESCRIPTOR_TYPE (CurrentObjDesc) == ACPI_DESC_TYPE_NAMED)) { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Arg (%p) is an ObjRef(Node), storing in node %p\n", @@ -721,7 +718,7 @@ AcpiDsStoreObjectToLocal ( * Store this object into the Node * (perform the indirect store) */ - Status = AcpiNsAttachObject ((ACPI_NAMESPACE_NODE *) CurrentObjDesc, + Status = AcpiNsAttachObject ((ACPI_NAMESPACE_NODE *) CurrentObjDesc, ObjDesc, ObjDesc->Common.Type); return_ACPI_STATUS (Status); } diff --git a/sys/contrib/dev/acpica/dsobject.c b/sys/contrib/dev/acpica/dsobject.c index 62640385abed..d56125f82fb2 100644 --- a/sys/contrib/dev/acpica/dsobject.c +++ b/sys/contrib/dev/acpica/dsobject.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: dsobject - Dispatcher object management routines - * $Revision: 85 $ + * $Revision: 90 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -124,7 +124,7 @@ #include "acnamesp.h" #define _COMPONENT ACPI_DISPATCHER - MODULE_NAME ("dsobject") + ACPI_MODULE_NAME ("dsobject") /******************************************************************************* @@ -154,13 +154,13 @@ AcpiDsInitOneObject ( void *Context, void **ReturnValue) { - ACPI_OBJECT_TYPE8 Type; + ACPI_OBJECT_TYPE Type; ACPI_STATUS Status; ACPI_INIT_WALK_INFO *Info = (ACPI_INIT_WALK_INFO *) Context; UINT8 TableRevision; - PROC_NAME ("DsInitOneObject"); + ACPI_FUNCTION_NAME ("DsInitOneObject"); Info->ObjectCount++; @@ -183,7 +183,6 @@ AcpiDsInitOneObject ( switch (Type) { - case ACPI_TYPE_REGION: AcpiDsInitializeRegion (ObjHandle); @@ -218,7 +217,7 @@ AcpiDsInitOneObject ( if (ACPI_FAILURE (Status)) { ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Method %p [%4.4s] - parse failure, %s\n", - ObjHandle, (char*)&((ACPI_NAMESPACE_NODE *)ObjHandle)->Name, + ObjHandle, (char *) &((ACPI_NAMESPACE_NODE *) ObjHandle)->Name, AcpiFormatException (Status))); /* This parse failed, but we will continue parsing more methods */ @@ -231,6 +230,7 @@ AcpiDsInitOneObject ( * for every execution since there isn't much overhead */ AcpiNsDeleteNamespaceSubtree (ObjHandle); + AcpiNsDeleteNamespaceByOwner (((ACPI_NAMESPACE_NODE *) ObjHandle)->Object->Method.OwningId); break; default: @@ -267,7 +267,7 @@ AcpiDsInitializeObjects ( ACPI_INIT_WALK_INFO Info; - FUNCTION_TRACE ("DsInitializeObjects"); + ACPI_FUNCTION_TRACE ("DsInitializeObjects"); ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, @@ -333,7 +333,7 @@ AcpiDsInitObjectFromOp ( ACPI_OPERAND_OBJECT *ObjDesc; - PROC_NAME ("DsInitObjectFromOp"); + ACPI_FUNCTION_NAME ("DsInitObjectFromOp"); ObjDesc = *RetObjDesc; @@ -390,7 +390,7 @@ AcpiDsInitObjectFromOp ( if (ObjDesc->Buffer.Length == 0) { ObjDesc->Buffer.Pointer = NULL; - REPORT_WARNING (("Buffer created with zero length in AML\n")); + ACPI_REPORT_WARNING (("Buffer created with zero length in AML\n")); break; } @@ -421,8 +421,8 @@ AcpiDsInitObjectFromOp ( return (AE_TYPE); } - MEMCPY (ObjDesc->Buffer.Pointer, ByteList->Data, - ObjDesc->Buffer.Length); + ACPI_MEMCPY (ObjDesc->Buffer.Pointer, ByteList->Data, + ObjDesc->Buffer.Length); } break; @@ -448,7 +448,7 @@ AcpiDsInitObjectFromOp ( case ACPI_TYPE_STRING: ObjDesc->String.Pointer = Op->Value.String; - ObjDesc->String.Length = STRLEN (Op->Value.String); + ObjDesc->String.Length = ACPI_STRLEN (Op->Value.String); /* * The string is contained in the ACPI table, don't ever try @@ -534,11 +534,10 @@ AcpiDsBuildInternalSimpleObj ( { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_STATUS Status; - UINT32 Length; char *Name; - FUNCTION_TRACE ("DsBuildInternalSimpleObj"); + ACPI_FUNCTION_TRACE ("DsBuildInternalSimpleObj"); if (Op->Opcode == AML_INT_NAMEPATH_OP) @@ -551,27 +550,27 @@ AcpiDsBuildInternalSimpleObj ( if (!Op->Node) { Status = AcpiNsLookup (WalkState->ScopeInfo, Op->Value.String, - ACPI_TYPE_ANY, IMODE_EXECUTE, - NS_SEARCH_PARENT | NS_DONT_OPEN_SCOPE, NULL, - (ACPI_NAMESPACE_NODE **)&(Op->Node)); + ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, + ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, NULL, + (ACPI_NAMESPACE_NODE **) &(Op->Node)); if (ACPI_FAILURE (Status)) { if (Status == AE_NOT_FOUND) { Name = NULL; - AcpiNsExternalizeName (ACPI_UINT32_MAX, Op->Value.String, &Length, &Name); + AcpiNsExternalizeName (ACPI_UINT32_MAX, Op->Value.String, NULL, &Name); if (Name) { - REPORT_WARNING (("Reference %s at AML %X not found\n", + ACPI_REPORT_WARNING (("Reference %s at AML %X not found\n", Name, Op->AmlOffset)); ACPI_MEM_FREE (Name); } else { - REPORT_WARNING (("Reference %s at AML %X not found\n", + ACPI_REPORT_WARNING (("Reference %s at AML %X not found\n", Op->Value.String, Op->AmlOffset)); } @@ -632,7 +631,7 @@ AcpiDsBuildInternalPackageObj ( ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE ("DsBuildInternalPackageObj"); + ACPI_FUNCTION_TRACE ("DsBuildInternalPackageObj"); ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_PACKAGE); @@ -763,7 +762,7 @@ AcpiDsCreateNode ( ACPI_OPERAND_OBJECT *ObjDesc; - FUNCTION_TRACE_PTR ("DsCreateNode", Op); + ACPI_FUNCTION_TRACE_PTR ("DsCreateNode", Op); /* @@ -797,7 +796,7 @@ AcpiDsCreateNode ( /* Init obj */ - Status = AcpiNsAttachObject (Node, ObjDesc, (UINT8) Node->Type); + Status = AcpiNsAttachObject (Node, ObjDesc, Node->Type); /* Remove local reference to the object */ diff --git a/sys/contrib/dev/acpica/dsopcode.c b/sys/contrib/dev/acpica/dsopcode.c index 1787efdb5566..bee7bde4f6a6 100644 --- a/sys/contrib/dev/acpica/dsopcode.c +++ b/sys/contrib/dev/acpica/dsopcode.c @@ -2,7 +2,7 @@ * * Module Name: dsopcode - Dispatcher Op Region support and handling of * "control" opcodes - * $Revision: 66 $ + * $Revision: 73 $ * *****************************************************************************/ @@ -10,7 +10,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -127,7 +127,7 @@ #include "actables.h" #define _COMPONENT ACPI_DISPATCHER - MODULE_NAME ("dsopcode") + ACPI_MODULE_NAME ("dsopcode") /***************************************************************************** @@ -154,7 +154,7 @@ AcpiDsExecuteArguments ( ACPI_PARSE_OBJECT *Arg; - FUNCTION_TRACE ("AcpiDsExecuteArguments"); + ACPI_FUNCTION_TRACE ("AcpiDsExecuteArguments"); /* @@ -169,7 +169,7 @@ AcpiDsExecuteArguments ( /* Save the Node for use in AcpiPsParseAml */ - Op->Node = AcpiNsGetParentObject (Node); + Op->Node = AcpiNsGetParentNode (Node); /* Create and initialize a new parser state */ @@ -213,7 +213,7 @@ AcpiDsExecuteArguments ( return_ACPI_STATUS (AE_NO_MEMORY); } - Op->Node = AcpiNsGetParentObject (Node); + Op->Node = AcpiNsGetParentNode (Node); /* Create and initialize a new parser state */ @@ -233,7 +233,6 @@ AcpiDsExecuteArguments ( Status = AcpiPsParseAml (WalkState); AcpiPsDeleteParseTree (Op); - return_ACPI_STATUS (Status); } @@ -260,7 +259,7 @@ AcpiDsGetBufferFieldArguments ( ACPI_STATUS Status; - FUNCTION_TRACE_PTR ("DsGetBufferFieldArguments", ObjDesc); + ACPI_FUNCTION_TRACE_PTR ("DsGetBufferFieldArguments", ObjDesc); if (ObjDesc->Common.Flags & AOPOBJ_DATA_VALID) @@ -273,7 +272,7 @@ AcpiDsGetBufferFieldArguments ( ExtraDesc = AcpiNsGetSecondaryObject (ObjDesc); Node = ObjDesc->BufferField.Node; - DEBUG_EXEC(AcpiUtDisplayInitPathname (Node, " [Field]")); + ACPI_DEBUG_EXEC(AcpiUtDisplayInitPathname (Node, " [Field]")); ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[%4.4s] BufferField JIT Init\n", (char *) &Node->Name)); @@ -306,7 +305,7 @@ AcpiDsGetRegionArguments ( ACPI_OPERAND_OBJECT *RegionObj2; - FUNCTION_TRACE_PTR ("DsGetRegionArguments", ObjDesc); + ACPI_FUNCTION_TRACE_PTR ("DsGetRegionArguments", ObjDesc); if (ObjDesc->Region.Flags & AOPOBJ_DATA_VALID) @@ -324,14 +323,13 @@ AcpiDsGetRegionArguments ( Node = ObjDesc->Region.Node; - DEBUG_EXEC(AcpiUtDisplayInitPathname (Node, " [Operation Region]")); + ACPI_DEBUG_EXEC(AcpiUtDisplayInitPathname (Node, " [Operation Region]")); ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[%4.4s] OpRegion Init at AML %p\n", (char *) &Node->Name, RegionObj2->Extra.AmlStart)); Status = AcpiDsExecuteArguments (Node, RegionObj2); - return_ACPI_STATUS (Status); } @@ -361,7 +359,6 @@ AcpiDsInitializeRegion ( /* Namespace is NOT locked */ Status = AcpiEvInitializeRegion (ObjDesc, FALSE); - return (Status); } @@ -398,7 +395,7 @@ AcpiDsEvalBufferFieldOperands ( ACPI_OPERAND_OBJECT *SrcDesc = NULL; - FUNCTION_TRACE_PTR ("DsEvalBufferFieldOperands", Op); + ACPI_FUNCTION_TRACE_PTR ("DsEvalBufferFieldOperands", Op); /* @@ -427,8 +424,8 @@ AcpiDsEvalBufferFieldOperands ( /* Resolve the operands */ - Status = AcpiExResolveOperands (Op->Opcode, WALK_OPERANDS, WalkState); - DUMP_OPERANDS (WALK_OPERANDS, IMODE_EXECUTE, AcpiPsGetOpcodeName (Op->Opcode), + Status = AcpiExResolveOperands (Op->Opcode, ACPI_WALK_OPERANDS, WalkState); + ACPI_DUMP_OPERANDS (ACPI_WALK_OPERANDS, ACPI_IMODE_EXECUTE, AcpiPsGetOpcodeName (Op->Opcode), WalkState->NumOperands, "after AcpiExResolveOperands"); if (ACPI_FAILURE (Status)) @@ -459,9 +456,9 @@ AcpiDsEvalBufferFieldOperands ( * If ResDesc is a Name, it will be a direct name pointer after * AcpiExResolveOperands() */ - if (!VALID_DESCRIPTOR_TYPE (ResDesc, ACPI_DESC_TYPE_NAMED)) + if (ACPI_GET_DESCRIPTOR_TYPE (ResDesc) != ACPI_DESC_TYPE_NAMED) { - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "(%s) destination must be a Node\n", + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "(%s) destination must be a NS Node\n", AcpiPsGetOpcodeName (Op->Opcode))); Status = AE_AML_OPERAND_TYPE; @@ -473,7 +470,6 @@ AcpiDsEvalBufferFieldOperands ( */ switch (Op->Opcode) { - case AML_CREATE_FIELD_OP: /* Offset is in bits, count is in bits */ @@ -587,7 +583,6 @@ AcpiDsEvalBufferFieldOperands ( "Tried to create field in invalid object type %X\n", SrcDesc->Common.Type)); } - else { ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, @@ -627,7 +622,6 @@ Cleanup: { AcpiUtRemoveReference (ResDesc); /* Result descriptor */ } - else { /* Now the address and length are valid for this BufferField */ @@ -664,7 +658,7 @@ AcpiDsEvalRegionOperands ( ACPI_PARSE_OBJECT *NextOp; - FUNCTION_TRACE_PTR ("DsEvalRegionOperands", Op); + ACPI_FUNCTION_TRACE_PTR ("DsEvalRegionOperands", Op); /* @@ -690,17 +684,16 @@ AcpiDsEvalRegionOperands ( /* Resolve the length and address operands to numbers */ - Status = AcpiExResolveOperands (Op->Opcode, WALK_OPERANDS, WalkState); + Status = AcpiExResolveOperands (Op->Opcode, ACPI_WALK_OPERANDS, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } - DUMP_OPERANDS (WALK_OPERANDS, IMODE_EXECUTE, + ACPI_DUMP_OPERANDS (ACPI_WALK_OPERANDS, ACPI_IMODE_EXECUTE, AcpiPsGetOpcodeName (Op->Opcode), 1, "after AcpiExResolveOperands"); - ObjDesc = AcpiNsGetAttachedObject (Node); if (!ObjDesc) { @@ -725,9 +718,9 @@ AcpiDsEvalRegionOperands ( ObjDesc->Region.Address = (ACPI_PHYSICAL_ADDRESS) OperandDesc->Integer.Value; AcpiUtRemoveReference (OperandDesc); - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "RgnObj %p Addr %8.8X%8.8X Len %X\n", - ObjDesc, HIDWORD(ObjDesc->Region.Address), LODWORD(ObjDesc->Region.Address), + ObjDesc, + ACPI_HIDWORD (ObjDesc->Region.Address), ACPI_LODWORD (ObjDesc->Region.Address), ObjDesc->Region.Length)); /* Now the address and length are valid for this opregion */ @@ -761,7 +754,7 @@ AcpiDsExecBeginControlOp ( ACPI_GENERIC_STATE *ControlState; - PROC_NAME ("DsExecBeginControlOp"); + ACPI_FUNCTION_NAME ("DsExecBeginControlOp"); ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Op=%p Opcode=%2.2X State=%p\n", Op, @@ -783,15 +776,18 @@ AcpiDsExecBeginControlOp ( Status = AE_NO_MEMORY; break; } - - AcpiUtPushGenericState (&WalkState->ControlState, ControlState); - /* * Save a pointer to the predicate for multiple executions * of a loop */ - WalkState->ControlState->Control.AmlPredicateStart = - WalkState->ParserState.Aml - 1; + ControlState->Control.AmlPredicateStart = WalkState->ParserState.Aml - 1; + ControlState->Control.PackageEnd = WalkState->ParserState.PkgEnd; + ControlState->Control.Opcode = Op->Opcode; + + + /* Push the control state on this walk's control stack */ + + AcpiUtPushGenericState (&WalkState->ControlState, ControlState); break; case AML_ELSE_OP: @@ -841,7 +837,7 @@ AcpiDsExecEndControlOp ( ACPI_GENERIC_STATE *ControlState; - PROC_NAME ("DsExecEndControlOp"); + ACPI_FUNCTION_NAME ("DsExecEndControlOp"); switch (Op->Opcode) @@ -931,7 +927,6 @@ AcpiDsExecEndControlOp ( */ WalkState->ReturnDesc = WalkState->Operands[0]; } - else if ((WalkState->Results) && (WalkState->Results->Results.NumResults > 0)) { @@ -944,7 +939,7 @@ AcpiDsExecEndControlOp ( * * Allow references created by the Index operator to return unchanged. */ - if (VALID_DESCRIPTOR_TYPE (WalkState->Results->Results.ObjDesc [0], ACPI_DESC_TYPE_INTERNAL) && + if ((ACPI_GET_DESCRIPTOR_TYPE (WalkState->Results->Results.ObjDesc[0]) == ACPI_DESC_TYPE_INTERNAL) && ((WalkState->Results->Results.ObjDesc [0])->Common.Type == INTERNAL_TYPE_REFERENCE) && ((WalkState->Results->Results.ObjDesc [0])->Reference.Opcode != AML_INDEX_OP)) { @@ -957,7 +952,6 @@ AcpiDsExecEndControlOp ( WalkState->ReturnDesc = WalkState->Results->Results.ObjDesc [0]; } - else { /* No return operand */ @@ -1001,30 +995,39 @@ AcpiDsExecEndControlOp ( case AML_BREAK_OP: + case AML_CONTINUE_OP: /* ACPI 2.0 */ - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "Break to end of current package, Op=%p\n", Op)); - /* TBD: update behavior for ACPI 2.0 */ + /* Pop and delete control states until we find a while */ - /* - * As per the ACPI specification: - * "The break operation causes the current package - * execution to complete" - * "Break -- Stop executing the current code package - * at this point" - * - * Returning AE_FALSE here will cause termination of - * the current package, and execution will continue one - * level up, starting with the completion of the parent Op. - */ - Status = AE_CTRL_FALSE; - break; + while (WalkState->ControlState && + (WalkState->ControlState->Control.Opcode != AML_WHILE_OP)) + { + ControlState = AcpiUtPopGenericState (&WalkState->ControlState); + AcpiUtDeleteGenericState (ControlState); + } + /* No while found? */ - case AML_CONTINUE_OP: /* ACPI 2.0 */ + if (!WalkState->ControlState) + { + return (AE_AML_NO_WHILE); + } - Status = AE_NOT_IMPLEMENTED; + /* Was: WalkState->AmlLastWhile = WalkState->ControlState->Control.AmlPredicateStart; */ + + WalkState->AmlLastWhile = WalkState->ControlState->Control.PackageEnd; + + /* Return status depending on opcode */ + + if (Op->Opcode == AML_BREAK_OP) + { + Status = AE_CTRL_BREAK; + } + else + { + Status = AE_CTRL_CONTINUE; + } break; diff --git a/sys/contrib/dev/acpica/dsutils.c b/sys/contrib/dev/acpica/dsutils.c index 68a2ff8f4072..91645735189d 100644 --- a/sys/contrib/dev/acpica/dsutils.c +++ b/sys/contrib/dev/acpica/dsutils.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dsutils - Dispatcher utilities - * $Revision: 84 $ + * $Revision: 88 $ * ******************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -125,7 +125,7 @@ #include "acdebug.h" #define _COMPONENT ACPI_DISPATCHER - MODULE_NAME ("dsutils") + ACPI_MODULE_NAME ("dsutils") /******************************************************************************* @@ -150,7 +150,7 @@ AcpiDsIsResultUsed ( const ACPI_OPCODE_INFO *ParentInfo; - FUNCTION_TRACE_PTR ("DsIsResultUsed", Op); + ACPI_FUNCTION_TRACE_PTR ("DsIsResultUsed", Op); /* Must have both an Op and a Result Object */ @@ -199,7 +199,6 @@ AcpiDsIsResultUsed ( /* Never delete the return value associated with a return opcode */ goto ResultUsed; - break; case AML_IF_OP: case AML_WHILE_OP: @@ -208,7 +207,7 @@ AcpiDsIsResultUsed ( * If we are executing the predicate AND this is the predicate op, * we will use the return value */ - if ((WalkState->ControlState->Common.State == CONTROL_PREDICATE_EXECUTING) && + if ((WalkState->ControlState->Common.State == ACPI_CONTROL_PREDICATE_EXECUTING) && (WalkState->ControlState->Control.PredicateOp == Op)) { goto ResultUsed; @@ -218,7 +217,6 @@ AcpiDsIsResultUsed ( /* The general control opcode returns no result */ goto ResultNotUsed; - break; case AML_CLASS_CREATE: @@ -228,7 +226,6 @@ AcpiDsIsResultUsed ( * the operands can be method calls. The result is used. */ goto ResultUsed; - break; case AML_CLASS_NAMED_OBJECT: @@ -244,7 +241,6 @@ AcpiDsIsResultUsed ( } goto ResultNotUsed; - break; /* @@ -253,7 +249,6 @@ AcpiDsIsResultUsed ( */ default: goto ResultUsed; - break; } @@ -302,7 +297,7 @@ AcpiDsDeleteResultIfNotUsed ( ACPI_STATUS Status; - FUNCTION_TRACE_PTR ("DsDeleteResultIfNotUsed", ResultObj); + ACPI_FUNCTION_TRACE_PTR ("DsDeleteResultIfNotUsed", ResultObj); if (!Op) @@ -361,11 +356,12 @@ AcpiDsCreateOperand ( ACPI_OPERAND_OBJECT *ObjDesc; ACPI_PARSE_OBJECT *ParentOp; UINT16 Opcode; - OPERATING_MODE InterpreterMode; + ACPI_INTERPRETER_MODE InterpreterMode; const ACPI_OPCODE_INFO *OpInfo; + char *Name; - FUNCTION_TRACE_PTR ("DsCreateOperand", Arg); + ACPI_FUNCTION_TRACE_PTR ("DsCreateOperand", Arg); /* A valid name must be looked up in the namespace */ @@ -405,26 +401,21 @@ AcpiDsCreateOperand ( { /* Enter name into namespace if not found */ - InterpreterMode = IMODE_LOAD_PASS2; + InterpreterMode = ACPI_IMODE_LOAD_PASS2; } else { /* Return a failure if name not found */ - InterpreterMode = IMODE_EXECUTE; + InterpreterMode = ACPI_IMODE_EXECUTE; } Status = AcpiNsLookup (WalkState->ScopeInfo, NameString, ACPI_TYPE_ANY, InterpreterMode, - NS_SEARCH_PARENT | NS_DONT_OPEN_SCOPE, + ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, WalkState, (ACPI_NAMESPACE_NODE **) &ObjDesc); - - /* Free the namestring created above */ - - ACPI_MEM_FREE (NameString); - /* * The only case where we pass through (ignore) a NOT_FOUND * error is for the CondRefOf opcode. @@ -451,13 +442,18 @@ AcpiDsCreateOperand ( */ Status = AE_AML_NAME_NOT_FOUND; - /* TBD: Externalize NameString and print */ - + Name = NULL; + AcpiNsExternalizeName (ACPI_UINT32_MAX, NameString, NULL, &Name); ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, - "Object name was not found in namespace\n")); + "Object name [%s] was not found in namespace\n", Name)); + ACPI_MEM_FREE (Name); } } + /* Free the namestring created above */ + + ACPI_MEM_FREE (NameString); + /* Check status from the lookup */ if (ACPI_FAILURE (Status)) @@ -472,7 +468,7 @@ AcpiDsCreateOperand ( { return_ACPI_STATUS (Status); } - DEBUGGER_EXEC (AcpiDbDisplayArgumentObject (ObjDesc, WalkState)); + ACPI_DEBUGGER_EXEC (AcpiDbDisplayArgumentObject (ObjDesc, WalkState)); } @@ -511,7 +507,8 @@ AcpiDsCreateOperand ( ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Argument previously created, already stacked \n")); - DEBUGGER_EXEC (AcpiDbDisplayArgumentObject (WalkState->Operands [WalkState->NumOperands - 1], WalkState)); + ACPI_DEBUGGER_EXEC (AcpiDbDisplayArgumentObject ( + WalkState->Operands [WalkState->NumOperands - 1], WalkState)); /* * Use value that was already previously returned @@ -559,7 +556,7 @@ AcpiDsCreateOperand ( return_ACPI_STATUS (Status); } - DEBUGGER_EXEC (AcpiDbDisplayArgumentObject (ObjDesc, WalkState)); + ACPI_DEBUGGER_EXEC (AcpiDbDisplayArgumentObject (ObjDesc, WalkState)); } return_ACPI_STATUS (AE_OK); @@ -590,7 +587,7 @@ AcpiDsCreateOperands ( UINT32 ArgCount = 0; - FUNCTION_TRACE_PTR ("DsCreateOperands", FirstArg); + ACPI_FUNCTION_TRACE_PTR ("DsCreateOperands", FirstArg); /* For all arguments in the list... */ @@ -652,7 +649,7 @@ AcpiDsResolveOperands ( ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE_PTR ("DsResolveOperands", WalkState); + ACPI_FUNCTION_TRACE_PTR ("DsResolveOperands", WalkState); /* diff --git a/sys/contrib/dev/acpica/dswexec.c b/sys/contrib/dev/acpica/dswexec.c index 26aa24764a84..5f712743674b 100644 --- a/sys/contrib/dev/acpica/dswexec.c +++ b/sys/contrib/dev/acpica/dswexec.c @@ -2,7 +2,7 @@ * * Module Name: dswexec - Dispatcher method execution callbacks; * dispatch to interpreter. - * $Revision: 82 $ + * $Revision: 89 $ * *****************************************************************************/ @@ -10,7 +10,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -127,7 +127,7 @@ #define _COMPONENT ACPI_DISPATCHER - MODULE_NAME ("dswexec") + ACPI_MODULE_NAME ("dswexec") /* * Dispatch table for opcode classes @@ -160,18 +160,18 @@ ACPI_EXECUTE_OP AcpiGbl_OpTypeDispatch [] = { ACPI_STATUS AcpiDsGetPredicateValue ( ACPI_WALK_STATE *WalkState, - UINT32 HasResultObj) + ACPI_OPERAND_OBJECT *ResultObj) { ACPI_STATUS Status = AE_OK; ACPI_OPERAND_OBJECT *ObjDesc; - FUNCTION_TRACE_PTR ("DsGetPredicateValue", WalkState); + ACPI_FUNCTION_TRACE_PTR ("DsGetPredicateValue", WalkState); WalkState->ControlState->Common.State = 0; - if (HasResultObj) + if (ResultObj) { Status = AcpiDsResultPop (&ObjDesc, WalkState); if (ACPI_FAILURE (Status)) @@ -252,7 +252,7 @@ Cleanup: /* Break to debugger to display result */ - DEBUGGER_EXEC (AcpiDbDisplayResultObject (ObjDesc, WalkState)); + ACPI_DEBUGGER_EXEC (AcpiDbDisplayResultObject (ObjDesc, WalkState)); /* * Delete the predicate result object (we know that @@ -260,7 +260,7 @@ Cleanup: */ AcpiUtRemoveReference (ObjDesc); - WalkState->ControlState->Common.State = CONTROL_NORMAL; + WalkState->ControlState->Common.State = ACPI_CONTROL_NORMAL; return_ACPI_STATUS (Status); } @@ -290,7 +290,7 @@ AcpiDsExecBeginOp ( UINT32 OpcodeClass; - FUNCTION_TRACE_PTR ("DsExecBeginOp", WalkState); + ACPI_FUNCTION_TRACE_PTR ("DsExecBeginOp", WalkState); Op = WalkState->Op; @@ -306,6 +306,13 @@ AcpiDsExecBeginOp ( WalkState->Op = Op; WalkState->OpInfo = AcpiPsGetOpcodeInfo (Op->Opcode); WalkState->Opcode = Op->Opcode; + + if (AcpiNsOpensScope (WalkState->OpInfo->ObjectType)) + { + ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "(%s) Popping scope for Op %p\n", + AcpiUtGetTypeName (WalkState->OpInfo->ObjectType), Op)); + AcpiDsScopeStackPop (WalkState); + } } if (Op == WalkState->Origin) @@ -325,12 +332,12 @@ AcpiDsExecBeginOp ( */ if ((WalkState->ControlState) && (WalkState->ControlState->Common.State == - CONTROL_CONDITIONAL_EXECUTING)) + ACPI_CONTROL_CONDITIONAL_EXECUTING)) { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Exec predicate Op=%p State=%p\n", Op, WalkState)); - WalkState->ControlState->Common.State = CONTROL_PREDICATE_EXECUTING; + WalkState->ControlState->Common.State = ACPI_CONTROL_PREDICATE_EXECUTING; /* Save start of predicate */ @@ -366,7 +373,7 @@ AcpiDsExecBeginOp ( case AML_CLASS_NAMED_OBJECT: - if (WalkState->WalkType == WALK_METHOD) + if (WalkState->WalkType == ACPI_WALK_METHOD) { /* * Found a named object declaration during method @@ -434,7 +441,7 @@ AcpiDsExecEndOp ( UINT32 i; - FUNCTION_TRACE_PTR ("DsExecEndOp", WalkState); + ACPI_FUNCTION_TRACE_PTR ("DsExecEndOp", WalkState); Op = WalkState->Op; @@ -457,8 +464,8 @@ AcpiDsExecEndOp ( /* Call debugger for single step support (DEBUG build only) */ - DEBUGGER_EXEC (Status = AcpiDbSingleStep (WalkState, Op, OpClass)); - DEBUGGER_EXEC (if (ACPI_FAILURE (Status)) {return_ACPI_STATUS (Status);}); + ACPI_DEBUGGER_EXEC (Status = AcpiDbSingleStep (WalkState, Op, OpClass)); + ACPI_DEBUGGER_EXEC (if (ACPI_FAILURE (Status)) {return_ACPI_STATUS (Status);}); /* Decode the Opcode Class */ @@ -467,7 +474,7 @@ AcpiDsExecEndOp ( case AML_CLASS_ARGUMENT: /* constants, literals, etc. -- do nothing */ break; - + case AML_CLASS_EXECUTE: /* most operators with arguments */ /* Build resolved operand stack */ @@ -493,7 +500,7 @@ AcpiDsExecEndOp ( WalkState); if (ACPI_SUCCESS (Status)) { - DUMP_OPERANDS (WALK_OPERANDS, IMODE_EXECUTE, + ACPI_DUMP_OPERANDS (ACPI_WALK_OPERANDS, ACPI_IMODE_EXECUTE, AcpiPsGetOpcodeName (WalkState->Opcode), WalkState->NumOperands, "after ExResolveOperands"); @@ -506,9 +513,9 @@ AcpiDsExecEndOp ( } else { - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "[%s]: Could not resolve operands, %s\n", - AcpiPsGetOpcodeName (WalkState->Opcode), + AcpiPsGetOpcodeName (WalkState->Opcode), AcpiFormatException (Status))); } @@ -578,8 +585,8 @@ AcpiDsExecEndOp ( } /* - * Since the operands will be passed to another control method, - * we must resolve all local references here (Local variables, + * Since the operands will be passed to another control method, + * we must resolve all local references here (Local variables, * arguments to *this* method, etc.) */ Status = AcpiDsResolveOperands (WalkState); @@ -599,7 +606,6 @@ AcpiDsExecEndOp ( * especially the operand count! */ return_ACPI_STATUS (Status); - break; case AML_TYPE_CREATE_FIELD: @@ -620,6 +626,7 @@ AcpiDsExecEndOp ( case AML_TYPE_NAMED_FIELD: case AML_TYPE_NAMED_COMPLEX: case AML_TYPE_NAMED_SIMPLE: + case AML_TYPE_NAMED_NO_OBJ: Status = AcpiDsLoad2EndOp (WalkState); if (ACPI_FAILURE (Status)) @@ -648,12 +655,11 @@ AcpiDsExecEndOp ( ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Undefined opcode type Op=%p\n", Op)); return_ACPI_STATUS (AE_NOT_IMPLEMENTED); - break; case AML_TYPE_BOGUS: - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, + ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Internal opcode=%X type Op=%p\n", WalkState->Opcode, Op)); break; @@ -671,7 +677,7 @@ AcpiDsExecEndOp ( } /* - * ACPI 2.0 support for 64-bit integers: Truncate numeric + * ACPI 2.0 support for 64-bit integers: Truncate numeric * result value if we are executing from a 32-bit ACPI table */ AcpiExTruncateFor32bitTable (WalkState->ResultObj, WalkState); @@ -683,10 +689,10 @@ AcpiDsExecEndOp ( if ((WalkState->ControlState) && (WalkState->ControlState->Common.State == - CONTROL_PREDICATE_EXECUTING) && + ACPI_CONTROL_PREDICATE_EXECUTING) && (WalkState->ControlState->Control.PredicateOp == Op)) { - Status = AcpiDsGetPredicateValue (WalkState, (UINT32) WalkState->ResultObj); + Status = AcpiDsGetPredicateValue (WalkState, WalkState->ResultObj); WalkState->ResultObj = NULL; } @@ -696,7 +702,7 @@ Cleanup: { /* Break to debugger to display result */ - DEBUGGER_EXEC (AcpiDbDisplayResultObject (WalkState->ResultObj, WalkState)); + ACPI_DEBUGGER_EXEC (AcpiDbDisplayResultObject (WalkState->ResultObj, WalkState)); /* * Delete the result op if and only if: @@ -708,10 +714,7 @@ Cleanup: /* Always clear the object stack */ - /* TBD: [Investigate] Clear stack of return value, - but don't delete it */ WalkState->NumOperands = 0; - return_ACPI_STATUS (Status); } diff --git a/sys/contrib/dev/acpica/dswload.c b/sys/contrib/dev/acpica/dswload.c index c18e25132053..6479744ebd66 100644 --- a/sys/contrib/dev/acpica/dswload.c +++ b/sys/contrib/dev/acpica/dswload.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: dswload - Dispatcher namespace load callbacks - * $Revision: 54 $ + * $Revision: 60 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -126,7 +126,7 @@ #define _COMPONENT ACPI_DISPATCHER - MODULE_NAME ("dswload") + ACPI_MODULE_NAME ("dswload") /******************************************************************************* @@ -170,7 +170,6 @@ AcpiDsInitCallbacks ( default: return (AE_BAD_PARAMETER); - break; } return (AE_OK); @@ -199,11 +198,11 @@ AcpiDsLoad1BeginOp ( ACPI_PARSE_OBJECT *Op; ACPI_NAMESPACE_NODE *Node; ACPI_STATUS Status; - ACPI_OBJECT_TYPE8 ObjectType; + ACPI_OBJECT_TYPE ObjectType; NATIVE_CHAR *Path; - PROC_NAME ("DsLoad1BeginOp"); + ACPI_FUNCTION_NAME ("DsLoad1BeginOp"); Op = WalkState->Op; ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Op=%p State=%p\n", Op, WalkState)); @@ -248,7 +247,7 @@ AcpiDsLoad1BeginOp ( * arguments to the opcode must be created as we go back up the parse tree later. */ Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ObjectType, - IMODE_LOAD_PASS1, NS_NO_UPSEARCH, WalkState, &(Node)); + ACPI_IMODE_LOAD_PASS1, ACPI_NS_NO_UPSEARCH, WalkState, &(Node)); if (ACPI_FAILURE (Status)) { @@ -302,10 +301,10 @@ AcpiDsLoad1EndOp ( ACPI_WALK_STATE *WalkState) { ACPI_PARSE_OBJECT *Op; - ACPI_OBJECT_TYPE8 ObjectType; + ACPI_OBJECT_TYPE ObjectType; - PROC_NAME ("DsLoad1EndOp"); + ACPI_FUNCTION_NAME ("DsLoad1EndOp"); Op = WalkState->Op; ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Op=%p State=%p\n", Op, WalkState)); @@ -388,30 +387,23 @@ AcpiDsLoad2BeginOp ( ACPI_PARSE_OBJECT *Op; ACPI_NAMESPACE_NODE *Node; ACPI_STATUS Status; - ACPI_OBJECT_TYPE8 ObjectType; + ACPI_OBJECT_TYPE ObjectType; NATIVE_CHAR *BufferPtr; void *Original = NULL; - PROC_NAME ("DsLoad2BeginOp"); + ACPI_FUNCTION_NAME ("DsLoad2BeginOp"); + Op = WalkState->Op; ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Op=%p State=%p\n", Op, WalkState)); - if (Op) { /* We only care about Namespace opcodes here */ - if (!(WalkState->OpInfo->Flags & AML_NSOPCODE) && - WalkState->Opcode != AML_INT_NAMEPATH_OP) - { - return (AE_OK); - } - - /* TBD: [Restructure] Temp! same code as in psparse */ - - if (!(WalkState->OpInfo->Flags & AML_NAMED)) + if ((!(WalkState->OpInfo->Flags & AML_NSOPCODE) && (WalkState->Opcode != AML_INT_NAMEPATH_OP)) || + (!(WalkState->OpInfo->Flags & AML_NAMED))) { return (AE_OK); } @@ -440,11 +432,12 @@ AcpiDsLoad2BeginOp ( } else { + /* Get the namestring from the raw AML */ + BufferPtr = AcpiPsGetNextNamestring (&WalkState->ParserState); } - - /* Map the raw opcode into an internal object type */ + /* Map the opcode into an internal object type */ ObjectType = WalkState->OpInfo->ObjectType; @@ -459,7 +452,6 @@ AcpiDsLoad2BeginOp ( Node = NULL; Status = AE_OK; } - else if (WalkState->Opcode == AML_INT_NAMEPATH_OP) { /* @@ -467,9 +459,8 @@ AcpiDsLoad2BeginOp ( * name into the namespace, but look it up for use later */ Status = AcpiNsLookup (WalkState->ScopeInfo, BufferPtr, ObjectType, - IMODE_EXECUTE, NS_SEARCH_PARENT, WalkState, &(Node)); + ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, WalkState, &(Node)); } - else { if (Op && Op->Node) @@ -495,7 +486,7 @@ AcpiDsLoad2BeginOp ( * arguments to the opcode must be created as we go back up the parse tree later. */ Status = AcpiNsLookup (WalkState->ScopeInfo, BufferPtr, ObjectType, - IMODE_EXECUTE, NS_NO_UPSEARCH, WalkState, &(Node)); + ACPI_IMODE_EXECUTE, ACPI_NS_NO_UPSEARCH, WalkState, &(Node)); } if (ACPI_SUCCESS (Status)) @@ -510,7 +501,7 @@ AcpiDsLoad2BeginOp ( return (AE_NO_MEMORY); } - /* Initialize */ + /* Initialize the new op */ ((ACPI_PARSE2_OBJECT *)Op)->Name = Node->Name; *OutOp = Op; @@ -559,18 +550,18 @@ AcpiDsLoad2EndOp ( { ACPI_PARSE_OBJECT *Op; ACPI_STATUS Status = AE_OK; - ACPI_OBJECT_TYPE8 ObjectType; + ACPI_OBJECT_TYPE ObjectType; ACPI_NAMESPACE_NODE *Node; ACPI_PARSE_OBJECT *Arg; ACPI_NAMESPACE_NODE *NewNode; UINT32 i; - PROC_NAME ("DsLoad2EndOp"); + ACPI_FUNCTION_NAME ("DsLoad2EndOp"); Op = WalkState->Op; - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Op=%p State=%p\n", Op, WalkState)); - + ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Opcode [%4.4X] Op %p State %p\n", + Op->Opcode, Op, WalkState)); /* Only interested in opcodes that have namespace objects */ @@ -584,7 +575,7 @@ AcpiDsLoad2EndOp ( ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Ending scope Op=%p State=%p\n", Op, WalkState)); - if (((ACPI_PARSE2_OBJECT *)Op)->Name == -1) + if (((ACPI_PARSE2_OBJECT *)Op)->Name == ACPI_UINT16_MAX) { ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Unnamed scope! Op=%p State=%p\n", Op, WalkState)); @@ -733,7 +724,6 @@ AcpiDsLoad2EndOp ( Status = AE_OK; goto Cleanup; - break; } /* Delete operands */ @@ -823,12 +813,12 @@ AcpiDsLoad2EndOp ( * Lookup the method name and save the Node */ Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Value.String, - ACPI_TYPE_ANY, IMODE_LOAD_PASS2, - NS_SEARCH_PARENT | NS_DONT_OPEN_SCOPE, + ACPI_TYPE_ANY, ACPI_IMODE_LOAD_PASS2, + ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, WalkState, &(NewNode)); if (ACPI_SUCCESS (Status)) { - /* + /* * Make sure that what we found is indeed a method * We didn't search for a method on purpose, to see if the name would resolve */ diff --git a/sys/contrib/dev/acpica/dswscope.c b/sys/contrib/dev/acpica/dswscope.c index 57571e89136b..d34808e048fc 100644 --- a/sys/contrib/dev/acpica/dswscope.c +++ b/sys/contrib/dev/acpica/dswscope.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: dswscope - Scope stack manipulation - * $Revision: 49 $ + * $Revision: 52 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -122,7 +122,7 @@ #define _COMPONENT ACPI_DISPATCHER - MODULE_NAME ("dswscope") + ACPI_MODULE_NAME ("dswscope") #define STACK_POP(head) head @@ -145,7 +145,7 @@ AcpiDsScopeStackClear ( { ACPI_GENERIC_STATE *ScopeInfo; - PROC_NAME ("DsScopeStackClear"); + ACPI_FUNCTION_NAME ("DsScopeStackClear"); while (WalkState->ScopeInfo) @@ -177,20 +177,20 @@ AcpiDsScopeStackClear ( ACPI_STATUS AcpiDsScopeStackPush ( ACPI_NAMESPACE_NODE *Node, - ACPI_OBJECT_TYPE8 Type, + ACPI_OBJECT_TYPE Type, ACPI_WALK_STATE *WalkState) { ACPI_GENERIC_STATE *ScopeInfo; - FUNCTION_TRACE ("DsScopeStackPush"); + ACPI_FUNCTION_TRACE ("DsScopeStackPush"); if (!Node) { /* Invalid scope */ - REPORT_ERROR (("DsScopeStackPush: null scope passed\n")); + ACPI_REPORT_ERROR (("DsScopeStackPush: null scope passed\n")); return_ACPI_STATUS (AE_BAD_PARAMETER); } @@ -198,7 +198,7 @@ AcpiDsScopeStackPush ( if (!AcpiExValidateObjectType (Type)) { - REPORT_WARNING (("DsScopeStackPush: type code out of range\n")); + ACPI_REPORT_WARNING (("DsScopeStackPush: type code out of range\n")); } @@ -248,7 +248,7 @@ AcpiDsScopeStackPop ( ACPI_GENERIC_STATE *ScopeInfo; - FUNCTION_TRACE ("DsScopeStackPop"); + ACPI_FUNCTION_TRACE ("DsScopeStackPop"); /* diff --git a/sys/contrib/dev/acpica/dswstate.c b/sys/contrib/dev/acpica/dswstate.c index 0de7fa336a73..faa1f6efb046 100644 --- a/sys/contrib/dev/acpica/dswstate.c +++ b/sys/contrib/dev/acpica/dswstate.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: dswstate - Dispatcher parse tree walk management routines - * $Revision: 57 $ + * $Revision: 59 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -125,7 +125,7 @@ #include "acinterp.h" #define _COMPONENT ACPI_DISPATCHER - MODULE_NAME ("dswstate") + ACPI_MODULE_NAME ("dswstate") /******************************************************************************* @@ -150,7 +150,7 @@ AcpiDsResultInsert ( ACPI_GENERIC_STATE *State; - PROC_NAME ("DsResultInsert"); + ACPI_FUNCTION_NAME ("DsResultInsert"); State = WalkState->Results; @@ -212,7 +212,7 @@ AcpiDsResultRemove ( ACPI_GENERIC_STATE *State; - PROC_NAME ("DsResultRemove"); + ACPI_FUNCTION_NAME ("DsResultRemove"); State = WalkState->Results; @@ -280,7 +280,7 @@ AcpiDsResultPop ( ACPI_GENERIC_STATE *State; - PROC_NAME ("DsResultPop"); + ACPI_FUNCTION_NAME ("DsResultPop"); State = WalkState->Results; @@ -344,7 +344,7 @@ AcpiDsResultPopFromBottom ( ACPI_GENERIC_STATE *State; - PROC_NAME ("DsResultPopFromBottom"); + ACPI_FUNCTION_NAME ("DsResultPopFromBottom"); State = WalkState->Results; @@ -414,7 +414,7 @@ AcpiDsResultPush ( ACPI_GENERIC_STATE *State; - PROC_NAME ("DsResultPush"); + ACPI_FUNCTION_NAME ("DsResultPush"); State = WalkState->Results; @@ -470,7 +470,7 @@ AcpiDsResultStackPush ( { ACPI_GENERIC_STATE *State; - PROC_NAME ("DsResultStackPush"); + ACPI_FUNCTION_NAME ("DsResultStackPush"); State = AcpiUtCreateGenericState (); @@ -507,7 +507,7 @@ AcpiDsResultStackPop ( { ACPI_GENERIC_STATE *State; - PROC_NAME ("DsResultStackPop"); + ACPI_FUNCTION_NAME ("DsResultStackPop"); /* Check for stack underflow */ @@ -552,7 +552,7 @@ AcpiDsObjStackDeleteAll ( UINT32 i; - FUNCTION_TRACE_PTR ("DsObjStackDeleteAll", WalkState); + ACPI_FUNCTION_TRACE_PTR ("DsObjStackDeleteAll", WalkState); /* The stack size is configurable, but fixed */ @@ -588,7 +588,7 @@ AcpiDsObjStackPush ( void *Object, ACPI_WALK_STATE *WalkState) { - PROC_NAME ("DsObjStackPush"); + ACPI_FUNCTION_NAME ("DsObjStackPush"); /* Check for stack overflow */ @@ -634,7 +634,7 @@ AcpiDsObjStackPopObject ( ACPI_OPERAND_OBJECT **Object, ACPI_WALK_STATE *WalkState) { - PROC_NAME ("DsObjStackPopObject"); + ACPI_FUNCTION_NAME ("DsObjStackPopObject"); /* Check for stack underflow */ @@ -697,7 +697,7 @@ AcpiDsObjStackPop ( { UINT32 i; - PROC_NAME ("DsObjStackPop"); + ACPI_FUNCTION_NAME ("DsObjStackPop"); for (i = 0; i < PopCount; i++) @@ -747,7 +747,7 @@ AcpiDsObjStackPopAndDelete ( UINT32 i; ACPI_OPERAND_OBJECT *ObjDesc; - PROC_NAME ("DsObjStackPopAndDelete"); + ACPI_FUNCTION_NAME ("DsObjStackPopAndDelete"); for (i = 0; i < PopCount; i++) @@ -801,7 +801,7 @@ AcpiDsObjStackGetValue ( ACPI_WALK_STATE *WalkState) { - FUNCTION_TRACE_PTR ("DsObjStackGetValue", WalkState); + ACPI_FUNCTION_TRACE_PTR ("DsObjStackGetValue", WalkState); /* Can't do it if the stack is empty */ @@ -842,7 +842,7 @@ AcpiDsGetCurrentWalkState ( ACPI_THREAD_STATE *Thread) { - PROC_NAME ("DsGetCurrentWalkState"); + ACPI_FUNCTION_NAME ("DsGetCurrentWalkState"); if (!Thread) @@ -876,7 +876,7 @@ AcpiDsPushWalkState ( ACPI_WALK_STATE *WalkState, ACPI_THREAD_STATE *Thread) { - FUNCTION_TRACE ("DsPushWalkState"); + ACPI_FUNCTION_TRACE ("DsPushWalkState"); WalkState->Next = Thread->WalkStateList; @@ -907,7 +907,7 @@ AcpiDsPopWalkState ( ACPI_WALK_STATE *WalkState; - FUNCTION_TRACE ("DsPopWalkState"); + ACPI_FUNCTION_TRACE ("DsPopWalkState"); WalkState = Thread->WalkStateList; @@ -938,7 +938,7 @@ AcpiDsPopWalkState ( * * RETURN: Pointer to the new walk state. * - * DESCRIPTION: Allocate and initialize a new walk state. The current walk + * DESCRIPTION: Allocate and initialize a new walk state. The current walk * state is set to this new state. * ******************************************************************************/ @@ -954,7 +954,7 @@ AcpiDsCreateWalkState ( ACPI_STATUS Status; - FUNCTION_TRACE ("DsCreateWalkState"); + ACPI_FUNCTION_TRACE ("DsCreateWalkState"); WalkState = AcpiUtAcquireFromCache (ACPI_MEM_LIST_WALK); @@ -1022,7 +1022,7 @@ AcpiDsInitAmlWalk ( ACPI_PARSE_STATE *ParserState = &WalkState->ParserState; - FUNCTION_TRACE ("DsInitAmlWalk"); + ACPI_FUNCTION_TRACE ("DsInitAmlWalk"); WalkState->ParserState.Aml = @@ -1045,7 +1045,7 @@ AcpiDsInitAmlWalk ( if (MethodNode) { WalkState->ParserState.StartNode = MethodNode; - WalkState->WalkType = WALK_METHOD; + WalkState->WalkType = ACPI_WALK_METHOD; WalkState->MethodNode = MethodNode; WalkState->MethodDesc = AcpiNsGetAttachedObject (MethodNode); @@ -1107,7 +1107,7 @@ AcpiDsDeleteWalkState ( ACPI_GENERIC_STATE *State; - FUNCTION_TRACE_PTR ("DsDeleteWalkState", WalkState); + ACPI_FUNCTION_TRACE_PTR ("DsDeleteWalkState", WalkState); if (!WalkState) @@ -1179,7 +1179,7 @@ void AcpiDsDeleteWalkStateCache ( void) { - FUNCTION_TRACE ("DsDeleteWalkStateCache"); + ACPI_FUNCTION_TRACE ("DsDeleteWalkStateCache"); AcpiUtDeleteGenericCache (ACPI_MEM_LIST_WALK); diff --git a/sys/contrib/dev/acpica/evevent.c b/sys/contrib/dev/acpica/evevent.c index 20c9953d2cc4..b11adcecb069 100644 --- a/sys/contrib/dev/acpica/evevent.c +++ b/sys/contrib/dev/acpica/evevent.c @@ -1,8 +1,7 @@ /****************************************************************************** * - * Module Name: evevent - Fixed and General Purpose AcpiEvent - * handling and dispatch - * $Revision: 54 $ + * Module Name: evevent - Fixed and General Purpose Even handling and dispatch + * $Revision: 69 $ * *****************************************************************************/ @@ -10,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -121,7 +120,7 @@ #include "acnamesp.h" #define _COMPONENT ACPI_EVENTS - MODULE_NAME ("evevent") + ACPI_MODULE_NAME ("evevent") /******************************************************************************* @@ -132,9 +131,7 @@ * * RETURN: Status * - * DESCRIPTION: Ensures that the system control interrupt (SCI) is properly - * configured, disables SCI event sources, installs the SCI - * handler + * DESCRIPTION: Initialize global data structures for events. * ******************************************************************************/ @@ -145,7 +142,7 @@ AcpiEvInitialize ( ACPI_STATUS Status; - FUNCTION_TRACE ("EvInitialize"); + ACPI_FUNCTION_TRACE ("EvInitialize"); /* Make sure we have ACPI tables */ @@ -164,23 +161,55 @@ AcpiEvInitialize ( Status = AcpiEvFixedEventInitialize (); if (ACPI_FAILURE (Status)) { - ACPI_DEBUG_PRINT ((ACPI_DB_FATAL, "Unable to initialize fixed events.\n")); + ACPI_DEBUG_PRINT ((ACPI_DB_FATAL, + "Unable to initialize fixed events, %s\n", + AcpiFormatException (Status))); return_ACPI_STATUS (Status); } Status = AcpiEvGpeInitialize (); if (ACPI_FAILURE (Status)) { - ACPI_DEBUG_PRINT ((ACPI_DB_FATAL, "Unable to initialize general purpose events.\n")); + ACPI_DEBUG_PRINT ((ACPI_DB_FATAL, + "Unable to initialize general purpose events, %s\n", + AcpiFormatException (Status))); return_ACPI_STATUS (Status); } + return_ACPI_STATUS (Status); +} + + +/******************************************************************************* + * + * FUNCTION: AcpiEvHandlerInitialize + * + * PARAMETERS: None + * + * RETURN: Status + * + * DESCRIPTION: Install handlers for the SCI, Global Lock, and GPEs. + * + ******************************************************************************/ + +ACPI_STATUS +AcpiEvHandlerInitialize ( + void) +{ + ACPI_STATUS Status; + + + ACPI_FUNCTION_TRACE ("EvInitialize"); + + /* Install the SCI handler */ Status = AcpiEvInstallSciHandler (); if (ACPI_FAILURE (Status)) { - ACPI_DEBUG_PRINT ((ACPI_DB_FATAL, "Unable to install System Control Interrupt Handler\n")); + ACPI_DEBUG_PRINT ((ACPI_DB_FATAL, + "Unable to install System Control Interrupt Handler, %s\n", + AcpiFormatException (Status))); return_ACPI_STATUS (Status); } @@ -189,7 +218,9 @@ AcpiEvInitialize ( Status = AcpiEvInitGpeControlMethods (); if (ACPI_FAILURE (Status)) { - ACPI_DEBUG_PRINT ((ACPI_DB_FATAL, "Unable to initialize Gpe control methods\n")); + ACPI_DEBUG_PRINT ((ACPI_DB_FATAL, + "Unable to initialize GPE control methods, %s\n", + AcpiFormatException (Status))); return_ACPI_STATUS (Status); } @@ -198,7 +229,9 @@ AcpiEvInitialize ( Status = AcpiEvInitGlobalLockHandler (); if (ACPI_FAILURE (Status)) { - ACPI_DEBUG_PRINT ((ACPI_DB_FATAL, "Unable to initialize Global Lock handler\n")); + ACPI_DEBUG_PRINT ((ACPI_DB_FATAL, + "Unable to initialize Global Lock handler, %s\n", + AcpiFormatException (Status))); return_ACPI_STATUS (Status); } @@ -214,29 +247,34 @@ AcpiEvInitialize ( * * RETURN: Status * - * DESCRIPTION: Initialize the Fixed AcpiEvent data structures + * DESCRIPTION: Install the fixed event handlers and enable the fixed events. * ******************************************************************************/ ACPI_STATUS -AcpiEvFixedEventInitialize(void) +AcpiEvFixedEventInitialize ( + void) { NATIVE_UINT i; - /* Initialize the structure that keeps track of fixed event handlers */ - + /* + * Initialize the structure that keeps track of fixed event handlers + * and enable the fixed events. + */ for (i = 0; i < ACPI_NUM_FIXED_EVENTS; i++) { AcpiGbl_FixedEventHandlers[i].Handler = NULL; AcpiGbl_FixedEventHandlers[i].Context = NULL; - } - AcpiHwRegisterBitAccess (ACPI_WRITE, ACPI_MTX_LOCK, TMR_EN, 0); - AcpiHwRegisterBitAccess (ACPI_WRITE, ACPI_MTX_LOCK, GBL_EN, 0); - AcpiHwRegisterBitAccess (ACPI_WRITE, ACPI_MTX_LOCK, PWRBTN_EN, 0); - AcpiHwRegisterBitAccess (ACPI_WRITE, ACPI_MTX_LOCK, SLPBTN_EN, 0); - AcpiHwRegisterBitAccess (ACPI_WRITE, ACPI_MTX_LOCK, RTC_EN, 0); + /* Enable the fixed event */ + + if (AcpiGbl_FixedEventInfo[i].EnableRegisterId != 0xFF) + { + AcpiHwBitRegisterWrite (AcpiGbl_FixedEventInfo[i].EnableRegisterId, + 0, ACPI_MTX_LOCK); + } + } return (AE_OK); } @@ -255,57 +293,43 @@ AcpiEvFixedEventInitialize(void) ******************************************************************************/ UINT32 -AcpiEvFixedEventDetect (void) +AcpiEvFixedEventDetect ( + void) { - UINT32 IntStatus = INTERRUPT_NOT_HANDLED; - UINT32 StatusRegister; - UINT32 EnableRegister; + UINT32 IntStatus = ACPI_INTERRUPT_NOT_HANDLED; + UINT32 GpeStatus; + UINT32 GpeEnable; + NATIVE_UINT i; - PROC_NAME ("EvFixedEventDetect"); + ACPI_FUNCTION_NAME ("EvFixedEventDetect"); /* * Read the fixed feature status and enable registers, as all the cases * depend on their values. */ - StatusRegister = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, PM1_STS); - EnableRegister = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, PM1_EN); + GpeStatus = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, ACPI_REGISTER_PM1_STATUS); + GpeEnable = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, ACPI_REGISTER_PM1_ENABLE); ACPI_DEBUG_PRINT ((ACPI_DB_INTERRUPTS, "Fixed AcpiEvent Block: Enable %08X Status %08X\n", - EnableRegister, StatusRegister)); - - /* Power management timer roll over */ + GpeEnable, GpeStatus)); - if ((StatusRegister & ACPI_STATUS_PMTIMER) && - (EnableRegister & ACPI_ENABLE_PMTIMER)) - { - IntStatus |= AcpiEvFixedEventDispatch (ACPI_EVENT_PMTIMER); - } - - /* Global event (BIOS wants the global lock) */ - - if ((StatusRegister & ACPI_STATUS_GLOBAL) && - (EnableRegister & ACPI_ENABLE_GLOBAL)) - { - IntStatus |= AcpiEvFixedEventDispatch (ACPI_EVENT_GLOBAL); - } - - /* Power button event */ - - if ((StatusRegister & ACPI_STATUS_POWER_BUTTON) && - (EnableRegister & ACPI_ENABLE_POWER_BUTTON)) + /* + * Check for all possible Fixed Events and dispatch those that are active + */ + for (i = 0; i < ACPI_NUM_FIXED_EVENTS; i++) { - IntStatus |= AcpiEvFixedEventDispatch (ACPI_EVENT_POWER_BUTTON); - } + /* Both the status and enable bits must be on for this event */ - /* Sleep button event */ + if ((GpeStatus & AcpiGbl_FixedEventInfo[i].StatusBitMask) && + (GpeEnable & AcpiGbl_FixedEventInfo[i].EnableBitMask)) + { + /* Found an active (signalled) event */ - if ((StatusRegister & ACPI_STATUS_SLEEP_BUTTON) && - (EnableRegister & ACPI_ENABLE_SLEEP_BUTTON)) - { - IntStatus |= AcpiEvFixedEventDispatch (ACPI_EVENT_SLEEP_BUTTON); + IntStatus |= AcpiEvFixedEventDispatch (i); + } } return (IntStatus); @@ -329,42 +353,15 @@ UINT32 AcpiEvFixedEventDispatch ( UINT32 Event) { - UINT32 RegisterId; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); /* Clear the status bit */ - switch (Event) - { - case ACPI_EVENT_PMTIMER: - RegisterId = TMR_STS; - break; - - case ACPI_EVENT_GLOBAL: - RegisterId = GBL_STS; - break; - - case ACPI_EVENT_POWER_BUTTON: - RegisterId = PWRBTN_STS; - break; - - case ACPI_EVENT_SLEEP_BUTTON: - RegisterId = SLPBTN_STS; - break; - - case ACPI_EVENT_RTC: - RegisterId = RTC_STS; - break; - - default: - return 0; - break; - } - - AcpiHwRegisterBitAccess (ACPI_WRITE, ACPI_MTX_DO_NOT_LOCK, RegisterId, 1); + AcpiHwBitRegisterWrite (AcpiGbl_FixedEventInfo[Event].StatusRegisterId, + 1, ACPI_MTX_DO_NOT_LOCK); /* * Make sure we've got a handler. If not, report an error. @@ -372,19 +369,17 @@ AcpiEvFixedEventDispatch ( */ if (NULL == AcpiGbl_FixedEventHandlers[Event].Handler) { - RegisterId = (PM1_EN | REGISTER_BIT_ID(RegisterId)); + AcpiHwBitRegisterWrite (AcpiGbl_FixedEventInfo[Event].EnableRegisterId, + 0, ACPI_MTX_DO_NOT_LOCK); - AcpiHwRegisterBitAccess (ACPI_WRITE, ACPI_MTX_DO_NOT_LOCK, - RegisterId, 0); - - REPORT_ERROR ( + ACPI_REPORT_ERROR ( ("EvGpeDispatch: No installed handler for fixed event [%08X]\n", Event)); - return (INTERRUPT_NOT_HANDLED); + return (ACPI_INTERRUPT_NOT_HANDLED); } - /* Invoke the handler */ + /* Invoke the Fixed Event handler */ return ((AcpiGbl_FixedEventHandlers[Event].Handler)( AcpiGbl_FixedEventHandlers[Event].Context)); @@ -406,145 +401,181 @@ AcpiEvFixedEventDispatch ( ACPI_STATUS AcpiEvGpeInitialize (void) { - UINT32 i; - UINT32 j; - UINT32 RegisterIndex; + NATIVE_UINT i; + NATIVE_UINT j; + NATIVE_UINT GpeBlock; + UINT32 GpeRegister; + UINT32 GpeNumberIndex; UINT32 GpeNumber; - UINT16 Gpe0RegisterCount; - UINT16 Gpe1RegisterCount; + ACPI_GPE_REGISTER_INFO *GpeRegisterInfo; + + ACPI_FUNCTION_TRACE ("EvGpeInitialize"); - FUNCTION_TRACE ("EvGpeInitialize"); /* - * Set up various GPE counts + * Initialize the GPE Block globals * - * You may ask,why are the GPE register block lengths divided by 2? - * From the ACPI 2.0 Spec, section, 4.7.1.6 General-Purpose Event - * Registers, we have, + * Why the GPE register block lengths divided by 2: From the ACPI Spec, + * section "General-Purpose Event Registers", we have: * * "Each register block contains two registers of equal length - * GPEx_STS and GPEx_EN (where x is 0 or 1). The length of the - * GPE0_STS and GPE0_EN registers is equal to half the GPE0_LEN - * The length of the GPE1_STS and GPE1_EN registers is equal to - * half the GPE1_LEN. If a generic register block is not supported - * then its respective block pointer and block length values in the - * FADT table contain zeros. The GPE0_LEN and GPE1_LEN do not need - * to be the same size." + * GPEx_STS and GPEx_EN (where x is 0 or 1). The length of the + * GPE0_STS and GPE0_EN registers is equal to half the GPE0_LEN + * The length of the GPE1_STS and GPE1_EN registers is equal to + * half the GPE1_LEN. If a generic register block is not supported + * then its respective block pointer and block length values in the + * FADT table contain zeros. The GPE0_LEN and GPE1_LEN do not need + * to be the same size." */ - Gpe0RegisterCount = (UINT16) DIV_2 (AcpiGbl_FADT->Gpe0BlkLen); - Gpe1RegisterCount = (UINT16) DIV_2 (AcpiGbl_FADT->Gpe1BlkLen); - AcpiGbl_GpeRegisterCount = Gpe0RegisterCount + Gpe1RegisterCount; + AcpiGbl_GpeBlockInfo[0].RegisterCount = (UINT16) ACPI_DIV_2 (AcpiGbl_FADT->Gpe0BlkLen); + AcpiGbl_GpeBlockInfo[1].RegisterCount = (UINT16) ACPI_DIV_2 (AcpiGbl_FADT->Gpe1BlkLen); + AcpiGbl_GpeBlockInfo[0].BlockAddress = (UINT16) ACPI_GET_ADDRESS (AcpiGbl_FADT->XGpe0Blk.Address); + AcpiGbl_GpeBlockInfo[1].BlockAddress = (UINT16) ACPI_GET_ADDRESS (AcpiGbl_FADT->XGpe1Blk.Address); + + AcpiGbl_GpeBlockInfo[0].BlockBaseNumber = 0; + AcpiGbl_GpeBlockInfo[1].BlockBaseNumber = AcpiGbl_FADT->Gpe1Base; + + AcpiGbl_GpeRegisterCount = AcpiGbl_GpeBlockInfo[0].RegisterCount + + AcpiGbl_GpeBlockInfo[1].RegisterCount; if (!AcpiGbl_GpeRegisterCount) { - REPORT_WARNING (("Zero GPEs are defined in the FADT\n")); + ACPI_REPORT_WARNING (("Zero GPEs are defined in the FADT\n")); return_ACPI_STATUS (AE_OK); } - /* - * Allocate the Gpe information block - */ - AcpiGbl_GpeRegisters = ACPI_MEM_CALLOCATE (AcpiGbl_GpeRegisterCount * - sizeof (ACPI_GPE_REGISTERS)); - if (!AcpiGbl_GpeRegisters) + /* Determine the maximum GPE number for this machine */ + + AcpiGbl_GpeNumberMax = ACPI_MUL_8 (AcpiGbl_GpeBlockInfo[0].RegisterCount) - 1; + + if (AcpiGbl_GpeBlockInfo[1].RegisterCount) { - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, - "Could not allocate the GpeRegisters block\n")); - return_ACPI_STATUS (AE_NO_MEMORY); + /* Check for GPE0/GPE1 overlap */ + + if (AcpiGbl_GpeNumberMax >= AcpiGbl_FADT->Gpe1Base) + { + ACPI_REPORT_ERROR (("GPE0 block overlaps the GPE1 block\n")); + return_ACPI_STATUS (AE_BAD_VALUE); + } + + /* GPE0 and GPE1 do not have to be contiguous in the GPE number space */ + + AcpiGbl_GpeNumberMax = AcpiGbl_FADT->Gpe1Base + (ACPI_MUL_8 (AcpiGbl_GpeBlockInfo[1].RegisterCount) - 1); + } + + /* Check for Max GPE number out-of-range */ + + if (AcpiGbl_GpeNumberMax > ACPI_GPE_MAX) + { + ACPI_REPORT_ERROR (("Maximum GPE number from FADT is too large: 0x%X\n", AcpiGbl_GpeNumberMax)); + return_ACPI_STATUS (AE_BAD_VALUE); } /* - * Allocate the Gpe dispatch handler block - * There are eight distinct GP events per register. - * Initialization to zeros is sufficient + * Allocate the GPE number-to-index translation table */ - AcpiGbl_GpeInfo = ACPI_MEM_CALLOCATE (MUL_8 (AcpiGbl_GpeRegisterCount) * - sizeof (ACPI_GPE_LEVEL_INFO)); - if (!AcpiGbl_GpeInfo) + AcpiGbl_GpeNumberToIndex = ACPI_MEM_CALLOCATE (sizeof (ACPI_GPE_INDEX_INFO) * + (AcpiGbl_GpeNumberMax + 1)); + if (!AcpiGbl_GpeNumberToIndex) { - ACPI_MEM_FREE (AcpiGbl_GpeRegisters); - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Could not allocate the GpeInfo block\n")); + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, + "Could not allocate the GpeNumberToIndex table\n")); return_ACPI_STATUS (AE_NO_MEMORY); } - /* Set the Gpe validation table to GPE_INVALID */ + /* Set the Gpe index table to GPE_INVALID */ - MEMSET (AcpiGbl_GpeValid, (int) ACPI_GPE_INVALID, ACPI_NUM_GPE); + ACPI_MEMSET (AcpiGbl_GpeNumberToIndex, (int) ACPI_GPE_INVALID, + sizeof (ACPI_GPE_INDEX_INFO) * (AcpiGbl_GpeNumberMax + 1)); /* - * Initialize the Gpe information and validation blocks. A goal of these - * blocks is to hide the fact that there are two separate GPE register sets - * In a given block, the status registers occupy the first half, and - * the enable registers occupy the second half. + * Allocate the GPE register information block */ - - /* GPE Block 0 */ - - RegisterIndex = 0; - - for (i = 0; i < Gpe0RegisterCount; i++) + AcpiGbl_GpeRegisterInfo = ACPI_MEM_CALLOCATE (AcpiGbl_GpeRegisterCount * + sizeof (ACPI_GPE_REGISTER_INFO)); + if (!AcpiGbl_GpeRegisterInfo) { - AcpiGbl_GpeRegisters[RegisterIndex].StatusAddr = - (UINT16) (ACPI_GET_ADDRESS (AcpiGbl_FADT->XGpe0Blk.Address) + i); + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, + "Could not allocate the GpeRegisterInfo table\n")); + goto ErrorExit1; + } - AcpiGbl_GpeRegisters[RegisterIndex].EnableAddr = - (UINT16) (ACPI_GET_ADDRESS (AcpiGbl_FADT->XGpe0Blk.Address) + i + Gpe0RegisterCount); + /* + * Allocate the GPE dispatch handler block. There are eight distinct GPEs + * per register. Initialization to zeros is sufficient. + */ + AcpiGbl_GpeNumberInfo = ACPI_MEM_CALLOCATE (ACPI_MUL_8 (AcpiGbl_GpeRegisterCount) * + sizeof (ACPI_GPE_NUMBER_INFO)); + if (!AcpiGbl_GpeNumberInfo) + { + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Could not allocate the GpeNumberInfo table\n")); + goto ErrorExit2; + } - AcpiGbl_GpeRegisters[RegisterIndex].GpeBase = (UINT8) MUL_8 (i); + /* + * Initialize the GPE information and validation tables. A goal of these + * tables is to hide the fact that there are two separate GPE register sets + * in a given gpe hardware block, the status registers occupy the first half, + * and the enable registers occupy the second half. Another goal is to hide + * the fact that there may be multiple GPE hardware blocks. + */ + GpeRegister = 0; + GpeNumberIndex = 0; - for (j = 0; j < 8; j++) + for (GpeBlock = 0; GpeBlock < ACPI_MAX_GPE_BLOCKS; GpeBlock++) + { + for (i = 0; i < AcpiGbl_GpeBlockInfo[GpeBlock].RegisterCount; i++) { - GpeNumber = AcpiGbl_GpeRegisters[RegisterIndex].GpeBase + j; - AcpiGbl_GpeValid[GpeNumber] = (UINT8) RegisterIndex; - } + GpeRegisterInfo = &AcpiGbl_GpeRegisterInfo[GpeRegister]; - /* - * Clear the status/enable registers. Note that status registers - * are cleared by writing a '1', while enable registers are cleared - * by writing a '0'. - */ - AcpiOsWritePort (AcpiGbl_GpeRegisters[RegisterIndex].EnableAddr, 0x00, 8); - AcpiOsWritePort (AcpiGbl_GpeRegisters[RegisterIndex].StatusAddr, 0xFF, 8); + /* Init the Register info for this entire GPE register (8 GPEs) */ - RegisterIndex++; - } + GpeRegisterInfo->BaseGpeNumber = (UINT8) (AcpiGbl_GpeBlockInfo[GpeBlock].BlockBaseNumber + (ACPI_MUL_8 (i))); + GpeRegisterInfo->StatusAddr = (UINT16) (AcpiGbl_GpeBlockInfo[GpeBlock].BlockAddress + i); + GpeRegisterInfo->EnableAddr = (UINT16) (AcpiGbl_GpeBlockInfo[GpeBlock].BlockAddress + i + + AcpiGbl_GpeBlockInfo[GpeBlock].RegisterCount); - /* GPE Block 1 */ + /* Init the Index mapping info for each GPE number within this register */ - for (i = 0; i < Gpe1RegisterCount; i++) - { - AcpiGbl_GpeRegisters[RegisterIndex].StatusAddr = - (UINT16) (ACPI_GET_ADDRESS (AcpiGbl_FADT->XGpe1Blk.Address) + i); + for (j = 0; j < 8; j++) + { + GpeNumber = GpeRegisterInfo->BaseGpeNumber + j; + AcpiGbl_GpeNumberToIndex[GpeNumber].NumberIndex = (UINT8) GpeNumberIndex; - AcpiGbl_GpeRegisters[RegisterIndex].EnableAddr = - (UINT16) (ACPI_GET_ADDRESS (AcpiGbl_FADT->XGpe1Blk.Address) + i + Gpe1RegisterCount); + AcpiGbl_GpeNumberInfo[GpeNumberIndex].BitMask = AcpiGbl_DecodeTo8bit[i]; + GpeNumberIndex++; + } - AcpiGbl_GpeRegisters[RegisterIndex].GpeBase = - (UINT8) (AcpiGbl_FADT->Gpe1Base + MUL_8 (i)); + /* + * Clear the status/enable registers. Note that status registers + * are cleared by writing a '1', while enable registers are cleared + * by writing a '0'. + */ + AcpiOsWritePort (GpeRegisterInfo->EnableAddr, 0x00, 8); + AcpiOsWritePort (GpeRegisterInfo->StatusAddr, 0xFF, 8); - for (j = 0; j < 8; j++) - { - GpeNumber = AcpiGbl_GpeRegisters[RegisterIndex].GpeBase + j; - AcpiGbl_GpeValid[GpeNumber] = (UINT8) RegisterIndex; + GpeRegister++; } - - /* - * Clear the status/enable registers. Note that status registers - * are cleared by writing a '1', while enable registers are cleared - * by writing a '0'. - */ - AcpiOsWritePort (AcpiGbl_GpeRegisters[RegisterIndex].EnableAddr, 0x00, 8); - AcpiOsWritePort (AcpiGbl_GpeRegisters[RegisterIndex].StatusAddr, 0xFF, 8); - - RegisterIndex++; } ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "GPE registers: %X@%8.8X%8.8X (Blk0) %X@%8.8X%8.8X (Blk1)\n", - Gpe0RegisterCount, HIDWORD(AcpiGbl_FADT->XGpe0Blk.Address), LODWORD(AcpiGbl_FADT->XGpe0Blk.Address), - Gpe1RegisterCount, HIDWORD(AcpiGbl_FADT->XGpe1Blk.Address), LODWORD(AcpiGbl_FADT->XGpe1Blk.Address))); + AcpiGbl_GpeBlockInfo[0].RegisterCount, + ACPI_HIDWORD (AcpiGbl_FADT->XGpe0Blk.Address), ACPI_LODWORD (AcpiGbl_FADT->XGpe0Blk.Address), + AcpiGbl_GpeBlockInfo[1].RegisterCount, + ACPI_HIDWORD (AcpiGbl_FADT->XGpe1Blk.Address), ACPI_LODWORD (AcpiGbl_FADT->XGpe1Blk.Address))); return_ACPI_STATUS (AE_OK); + + + /* Error cleanup */ + +ErrorExit2: + ACPI_MEM_FREE (AcpiGbl_GpeRegisterInfo); + +ErrorExit1: + ACPI_MEM_FREE (AcpiGbl_GpeNumberToIndex); + return_ACPI_STATUS (AE_NO_MEMORY); } @@ -566,7 +597,7 @@ AcpiEvGpeInitialize (void) * Where: * L - means that the GPE is level triggered * E - means that the GPE is edge triggered - * nn - is the GPE number + * nn - is the GPE number [in HEX] * ******************************************************************************/ @@ -578,31 +609,34 @@ AcpiEvSaveMethodInfo ( void **ReturnValue) { UINT32 GpeNumber; + UINT32 GpeNumberIndex; NATIVE_CHAR Name[ACPI_NAME_SIZE + 1]; UINT8 Type; - PROC_NAME ("EvSaveMethodInfo"); + ACPI_FUNCTION_NAME ("EvSaveMethodInfo"); /* Extract the name from the object and convert to a string */ - MOVE_UNALIGNED32_TO_32 (Name, &((ACPI_NAMESPACE_NODE *) ObjHandle)->Name); + ACPI_MOVE_UNALIGNED32_TO_32 (Name, + &((ACPI_NAMESPACE_NODE *) ObjHandle)->Name); Name[ACPI_NAME_SIZE] = 0; /* - * Edge/Level determination is based on the 2nd INT8 of the method name + * Edge/Level determination is based on the 2nd character of the method name */ - if (Name[1] == 'L') + switch (Name[1]) { + case 'L': Type = ACPI_EVENT_LEVEL_TRIGGERED; - } - else if (Name[1] == 'E') - { + break; + + case 'E': Type = ACPI_EVENT_EDGE_TRIGGERED; - } - else - { + break; + + default: /* Unknown method type, just ignore it! */ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, @@ -611,9 +645,9 @@ AcpiEvSaveMethodInfo ( return (AE_OK); } - /* Convert the last two characters of the name to the Gpe Number */ + /* Convert the last two characters of the name to the GPE Number */ - GpeNumber = STRTOUL (&Name[2], NULL, 16); + GpeNumber = ACPI_STRTOUL (&Name[2], NULL, 16); if (GpeNumber == ACPI_UINT32_MAX) { /* Conversion failed; invalid method, just ignore it */ @@ -624,9 +658,10 @@ AcpiEvSaveMethodInfo ( return (AE_OK); } - /* Ensure that we have a valid GPE number */ + /* Get GPE index and ensure that we have a valid GPE number */ - if (AcpiGbl_GpeValid[GpeNumber] == ACPI_GPE_INVALID) + GpeNumberIndex = AcpiEvGetGpeNumberIndex (GpeNumber); + if (GpeNumberIndex == ACPI_GPE_INVALID) { /* Not valid, all we can do here is ignore it */ @@ -637,8 +672,8 @@ AcpiEvSaveMethodInfo ( * Now we can add this information to the GpeInfo block * for use during dispatch of this GPE. */ - AcpiGbl_GpeInfo [GpeNumber].Type = Type; - AcpiGbl_GpeInfo [GpeNumber].MethodHandle = ObjHandle; + AcpiGbl_GpeNumberInfo [GpeNumberIndex].Type = Type; + AcpiGbl_GpeNumberInfo [GpeNumberIndex].MethodHandle = ObjHandle; /* * Enable the GPE (SCIs should be disabled at this point) @@ -657,10 +692,9 @@ AcpiEvSaveMethodInfo ( * * PARAMETERS: None * - * RETURN: None + * RETURN: Status * * DESCRIPTION: Obtain the control methods associated with the GPEs. - * * NOTE: Must be called AFTER namespace initialization! * ******************************************************************************/ @@ -671,7 +705,7 @@ AcpiEvInitGpeControlMethods (void) ACPI_STATUS Status; - FUNCTION_TRACE ("EvInitGpeControlMethods"); + ACPI_FUNCTION_TRACE ("EvInitGpeControlMethods"); /* Get a permanent handle to the _GPE object */ @@ -700,21 +734,23 @@ AcpiEvInitGpeControlMethods (void) * * RETURN: INTERRUPT_HANDLED or INTERRUPT_NOT_HANDLED * - * DESCRIPTION: Detect if any GP events have occurred + * DESCRIPTION: Detect if any GP events have occurred. This function is + * executed at interrupt level. * ******************************************************************************/ UINT32 AcpiEvGpeDetect (void) { - UINT32 IntStatus = INTERRUPT_NOT_HANDLED; + UINT32 IntStatus = ACPI_INTERRUPT_NOT_HANDLED; UINT32 i; UINT32 j; UINT8 EnabledStatusByte; UINT8 BitMask; + ACPI_GPE_REGISTER_INFO *GpeRegisterInfo; - PROC_NAME ("EvGpeDetect"); + ACPI_FUNCTION_NAME ("EvGpeDetect"); /* @@ -724,23 +760,24 @@ AcpiEvGpeDetect (void) */ for (i = 0; i < AcpiGbl_GpeRegisterCount; i++) { - AcpiOsReadPort (AcpiGbl_GpeRegisters[i].StatusAddr, - &AcpiGbl_GpeRegisters[i].Status, 8); + GpeRegisterInfo = &AcpiGbl_GpeRegisterInfo[i]; - AcpiOsReadPort (AcpiGbl_GpeRegisters[i].EnableAddr, - &AcpiGbl_GpeRegisters[i].Enable, 8); + AcpiOsReadPort (GpeRegisterInfo->StatusAddr, + &GpeRegisterInfo->Status, 8); + + AcpiOsReadPort (GpeRegisterInfo->EnableAddr, + &GpeRegisterInfo->Enable, 8); ACPI_DEBUG_PRINT ((ACPI_DB_INTERRUPTS, "GPE block at %X - Enable %08X Status %08X\n", - AcpiGbl_GpeRegisters[i].EnableAddr, - AcpiGbl_GpeRegisters[i].Status, - AcpiGbl_GpeRegisters[i].Enable)); + GpeRegisterInfo->EnableAddr, + GpeRegisterInfo->Status, + GpeRegisterInfo->Enable)); /* First check if there is anything active at all in this register */ - EnabledStatusByte = (UINT8) (AcpiGbl_GpeRegisters[i].Status & - AcpiGbl_GpeRegisters[i].Enable); - + EnabledStatusByte = (UINT8) (GpeRegisterInfo->Status & + GpeRegisterInfo->Enable); if (!EnabledStatusByte) { /* No active GPEs in this register, move on */ @@ -761,7 +798,7 @@ AcpiEvGpeDetect (void) * or method. */ IntStatus |= AcpiEvGpeDispatch ( - AcpiGbl_GpeRegisters[i].GpeBase + j); + GpeRegisterInfo->BaseGpeNumber + j); } } } @@ -774,7 +811,7 @@ AcpiEvGpeDetect (void) * * FUNCTION: AcpiEvAsynchExecuteGpeMethod * - * PARAMETERS: GpeNumber - The 0-based Gpe number + * PARAMETERS: GpeNumber - The 0-based GPE number * * RETURN: None * @@ -790,37 +827,50 @@ static void AcpiEvAsynchExecuteGpeMethod ( void *Context) { - UINT32 GpeNumber = (UINT32) Context; - ACPI_GPE_LEVEL_INFO GpeInfo; + UINT32 GpeNumber = (UINT32) ACPI_TO_INTEGER (Context); + UINT32 GpeNumberIndex; + ACPI_GPE_NUMBER_INFO GpeInfo; - FUNCTION_TRACE ("EvAsynchExecuteGpeMethod"); + ACPI_FUNCTION_TRACE ("EvAsynchExecuteGpeMethod"); - /* - * Take a snapshot of the GPE info for this level - */ - AcpiUtAcquireMutex (ACPI_MTX_EVENTS); - GpeInfo = AcpiGbl_GpeInfo [GpeNumber]; - AcpiUtReleaseMutex (ACPI_MTX_EVENTS); + GpeNumberIndex = AcpiEvGetGpeNumberIndex (GpeNumber); + if (GpeNumberIndex == ACPI_GPE_INVALID) + { + return_VOID; + } /* - * Method Handler (_Lxx, _Exx): - * ---------------------------- - * Evaluate the _Lxx/_Exx control method that corresponds to this GPE. + * Take a snapshot of the GPE info for this level - we copy the + * info to prevent a race condition with RemoveHandler. */ + if (ACPI_FAILURE (AcpiUtAcquireMutex (ACPI_MTX_EVENTS))) + { + return_VOID; + } + + GpeInfo = AcpiGbl_GpeNumberInfo [GpeNumberIndex]; + if (ACPI_FAILURE (AcpiUtReleaseMutex (ACPI_MTX_EVENTS))) + { + return_VOID; + } + if (GpeInfo.MethodHandle) { + /* + * Invoke the GPE Method (_Lxx, _Exx): + * (Evaluate the _Lxx/_Exx control method that corresponds to this GPE.) + */ AcpiNsEvaluateByHandle (GpeInfo.MethodHandle, NULL, NULL); } - /* - * Level-Triggered? - * ---------------- - * If level-triggered we clear the GPE status bit after handling the event. - */ if (GpeInfo.Type & ACPI_EVENT_LEVEL_TRIGGERED) { + /* + * GPE is level-triggered, we clear the GPE status bit after handling + * the event. + */ AcpiHwClearGpe (GpeNumber); } @@ -828,7 +878,6 @@ AcpiEvAsynchExecuteGpeMethod ( * Enable the GPE. */ AcpiHwEnableGpe (GpeNumber); - return_VOID; } @@ -837,18 +886,13 @@ AcpiEvAsynchExecuteGpeMethod ( * * FUNCTION: AcpiEvGpeDispatch * - * PARAMETERS: GpeNumber - The 0-based Gpe number + * PARAMETERS: GpeNumber - The 0-based GPE number * * RETURN: INTERRUPT_HANDLED or INTERRUPT_NOT_HANDLED * - * DESCRIPTION: Handle and dispatch a General Purpose AcpiEvent. - * Clears the status bit for the requested event. - * - * TBD: [Investigate] is this still valid or necessary: - * The Gpe handler differs from the fixed events in that it clears the enable - * bit rather than the status bit to clear the interrupt. This allows - * software outside of interrupt context to determine what caused the SCI and - * dispatch the correct AML. + * DESCRIPTION: Dispatch a General Purpose Event to either a function (e.g. EC) + * or method (e.g. _Lxx/_Exx) handler. This function executes + * at interrupt level. * ******************************************************************************/ @@ -856,90 +900,86 @@ UINT32 AcpiEvGpeDispatch ( UINT32 GpeNumber) { - ACPI_GPE_LEVEL_INFO GpeInfo; + UINT32 GpeNumberIndex; + ACPI_GPE_NUMBER_INFO *GpeInfo; - FUNCTION_TRACE ("EvGpeDispatch"); + ACPI_FUNCTION_TRACE ("EvGpeDispatch"); - /* - * Valid GPE number? - */ - if (AcpiGbl_GpeValid[GpeNumber] == ACPI_GPE_INVALID) + GpeNumberIndex = AcpiEvGetGpeNumberIndex (GpeNumber); + if (GpeNumberIndex == ACPI_GPE_INVALID) { - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Invalid GPE bit [%X].\n", GpeNumber)); - return_VALUE (INTERRUPT_NOT_HANDLED); + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Invalid event, GPE[%X].\n", GpeNumber)); + return_VALUE (ACPI_INTERRUPT_NOT_HANDLED); } /* - * Disable the GPE. + * We don't have to worry about mutex on GpeInfo because we are + * executing at interrupt level. */ - AcpiHwDisableGpe (GpeNumber); - - GpeInfo = AcpiGbl_GpeInfo [GpeNumber]; + GpeInfo = &AcpiGbl_GpeNumberInfo [GpeNumberIndex]; /* - * Edge-Triggered? - * --------------- * If edge-triggered, clear the GPE status bit now. Note that * level-triggered events are cleared after the GPE is serviced. */ - if (GpeInfo.Type & ACPI_EVENT_EDGE_TRIGGERED) + if (GpeInfo->Type & ACPI_EVENT_EDGE_TRIGGERED) { AcpiHwClearGpe (GpeNumber); } - /* - * Function Handler (e.g. EC)? - */ - if (GpeInfo.Handler) - { - /* Invoke function handler (at interrupt level). */ - - GpeInfo.Handler (GpeInfo.Context); - - /* Level-Triggered? */ - - if (GpeInfo.Type & ACPI_EVENT_LEVEL_TRIGGERED) - { - AcpiHwClearGpe (GpeNumber); - } - - /* Enable GPE */ - - AcpiHwEnableGpe (GpeNumber); - } /* - * Method Handler (e.g. _Exx/_Lxx)? + * Dispatch the GPE to either an installed handler, or the control + * method associated with this GPE (_Lxx or _Exx). + * If a handler exists, we invoke it and do not attempt to run the method. + * If there is neither a handler nor a method, we disable the level to + * prevent further events from coming in here. */ - else if (GpeInfo.MethodHandle) + if (GpeInfo->Handler) + { + /* Invoke the installed handler (at interrupt level) */ + + GpeInfo->Handler (GpeInfo->Context); + } + else if (GpeInfo->MethodHandle) { - if (ACPI_FAILURE(AcpiOsQueueForExecution (OSD_PRIORITY_GPE, - AcpiEvAsynchExecuteGpeMethod, (void*) GpeNumber))) + /* + * Execute the method associated with the GPE. + */ + if (ACPI_FAILURE (AcpiOsQueueForExecution (OSD_PRIORITY_GPE, + AcpiEvAsynchExecuteGpeMethod, + ACPI_TO_POINTER (GpeNumber)))) { + ACPI_REPORT_ERROR (("AcpiEvGpeDispatch: Unable to queue handler for GPE[%X], disabling event\n", GpeNumber)); + /* - * Shoudn't occur, but if it does report an error. Note that - * the GPE will remain disabled until the ACPI Core Subsystem - * is restarted, or the handler is removed/reinstalled. + * Disable the GPE on error. The GPE will remain disabled until the ACPI + * Core Subsystem is restarted, or the handler is reinstalled. */ - REPORT_ERROR (("AcpiEvGpeDispatch: Unable to queue handler for GPE bit [%X]\n", GpeNumber)); + AcpiHwDisableGpe (GpeNumber); } } - - /* - * No Handler? Report an error and leave the GPE disabled. - */ else { - REPORT_ERROR (("AcpiEvGpeDispatch: No installed handler for GPE [%X]\n", GpeNumber)); + /* No handler or method to run! */ - /* Level-Triggered? */ + ACPI_REPORT_ERROR (("AcpiEvGpeDispatch: No handler or method for GPE[%X], disabling event\n", GpeNumber)); - if (GpeInfo.Type & ACPI_EVENT_LEVEL_TRIGGERED) - { - AcpiHwClearGpe (GpeNumber); - } + /* + * Disable the GPE. The GPE will remain disabled until the ACPI + * Core Subsystem is restarted, or the handler is reinstalled. + */ + AcpiHwDisableGpe (GpeNumber); + } + + /* + * It is now safe to clear level-triggered evnets. + */ + if (GpeInfo->Type & ACPI_EVENT_LEVEL_TRIGGERED) + { + AcpiHwClearGpe (GpeNumber); } - return_VALUE (INTERRUPT_HANDLED); + return_VALUE (ACPI_INTERRUPT_HANDLED); } diff --git a/sys/contrib/dev/acpica/evmisc.c b/sys/contrib/dev/acpica/evmisc.c index 7e1ecda6e4ef..05aac5eeb75c 100644 --- a/sys/contrib/dev/acpica/evmisc.c +++ b/sys/contrib/dev/acpica/evmisc.c @@ -2,7 +2,7 @@ * * Module Name: evmisc - ACPI device notification handler dispatch * and ACPI Global Lock support - * $Revision: 36 $ + * $Revision: 46 $ * *****************************************************************************/ @@ -10,7 +10,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -122,7 +122,61 @@ #include "achware.h" #define _COMPONENT ACPI_EVENTS - MODULE_NAME ("evmisc") + ACPI_MODULE_NAME ("evmisc") + + +/******************************************************************************* + * + * FUNCTION: AcpiEvGetGpeRegisterIndex + * + * PARAMETERS: GpeNumber - Raw GPE number + * + * RETURN: None. + * + * DESCRIPTION: Returns the register index (index into the GPE register info + * table) associated with this GPE. + * + ******************************************************************************/ + +UINT32 +AcpiEvGetGpeRegisterIndex ( + UINT32 GpeNumber) +{ + + if (GpeNumber > AcpiGbl_GpeNumberMax) + { + return (ACPI_GPE_INVALID); + } + + return (ACPI_DIV_8 (AcpiGbl_GpeNumberToIndex[GpeNumber].NumberIndex)); +} + + +/******************************************************************************* + * + * FUNCTION: AcpiEvGetGpeNumberIndex + * + * PARAMETERS: GpeNumber - Raw GPE number + * + * RETURN: None. + * + * DESCRIPTION: Returns the number index (index into the GPE number info table) + * associated with this GPE. + * + ******************************************************************************/ + +UINT32 +AcpiEvGetGpeNumberIndex ( + UINT32 GpeNumber) +{ + + if (GpeNumber > AcpiGbl_GpeNumberMax) + { + return (ACPI_GPE_INVALID); + } + + return (AcpiGbl_GpeNumberToIndex[GpeNumber].NumberIndex); +} /******************************************************************************* @@ -149,7 +203,7 @@ AcpiEvQueueNotifyRequest ( ACPI_STATUS Status = AE_OK; - PROC_NAME ("EvQueueNotifyRequest"); + ACPI_FUNCTION_NAME ("EvQueueNotifyRequest"); /* @@ -184,20 +238,19 @@ AcpiEvQueueNotifyRequest ( break; } - /* * Get the notify object attached to the device Node */ ObjDesc = AcpiNsGetAttachedObject (Node); if (ObjDesc) { - /* We have the notify object, Get the right handler */ switch (Node->Type) { case ACPI_TYPE_DEVICE: - if (NotifyValue <= MAX_SYS_NOTIFY) + + if (NotifyValue <= ACPI_MAX_SYS_NOTIFY) { HandlerObj = ObjDesc->Device.SysHandler; } @@ -207,8 +260,10 @@ AcpiEvQueueNotifyRequest ( } break; + case ACPI_TYPE_THERMAL: - if (NotifyValue <= MAX_SYS_NOTIFY) + + if (NotifyValue <= ACPI_MAX_SYS_NOTIFY) { HandlerObj = ObjDesc->ThermalZone.SysHandler; } @@ -222,11 +277,10 @@ AcpiEvQueueNotifyRequest ( /* If there is any handler to run, schedule the dispatcher */ - if ((AcpiGbl_SysNotify.Handler && (NotifyValue <= MAX_SYS_NOTIFY)) || - (AcpiGbl_DrvNotify.Handler && (NotifyValue > MAX_SYS_NOTIFY)) || + if ((AcpiGbl_SysNotify.Handler && (NotifyValue <= ACPI_MAX_SYS_NOTIFY)) || + (AcpiGbl_DrvNotify.Handler && (NotifyValue > ACPI_MAX_SYS_NOTIFY)) || HandlerObj) { - NotifyInfo = AcpiUtCreateGenericState (); if (!NotifyInfo) { @@ -280,14 +334,14 @@ AcpiEvNotifyDispatch ( ACPI_OPERAND_OBJECT *HandlerObj; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); /* * We will invoke a global notify handler if installed. * This is done _before_ we invoke the per-device handler attached to the device. */ - if (NotifyInfo->Notify.Value <= MAX_SYS_NOTIFY) + if (NotifyInfo->Notify.Value <= ACPI_MAX_SYS_NOTIFY) { /* Global system notification handler */ @@ -376,7 +430,6 @@ AcpiEvGlobalLockHandler ( void *Context) { BOOLEAN Acquired = FALSE; - void *GlobalLock; /* @@ -384,8 +437,7 @@ AcpiEvGlobalLockHandler ( * If we don't get it now, it will be marked pending and we will * take another interrupt when it becomes free. */ - GlobalLock = AcpiGbl_FACS->GlobalLock; - ACPI_ACQUIRE_GLOBAL_LOCK (GlobalLock, Acquired); + ACPI_ACQUIRE_GLOBAL_LOCK (AcpiGbl_CommonFACS.GlobalLock, Acquired); if (Acquired) { /* Got the lock, now wake all threads waiting for it */ @@ -398,7 +450,7 @@ AcpiEvGlobalLockHandler ( Context); } - return (INTERRUPT_HANDLED); + return (ACPI_INTERRUPT_HANDLED); } @@ -418,7 +470,7 @@ AcpiEvInitGlobalLockHandler (void) ACPI_STATUS Status; - FUNCTION_TRACE ("EvInitGlobalLockHandler"); + ACPI_FUNCTION_TRACE ("EvInitGlobalLockHandler"); AcpiGbl_GlobalLockPresent = TRUE; @@ -427,7 +479,7 @@ AcpiEvInitGlobalLockHandler (void) /* * If the global lock does not exist on this platform, the attempt - * to enable GBL_STS will fail (the GBL_EN bit will not stick) + * to enable GBL_STATUS will fail (the GBL_ENABLE bit will not stick) * Map to AE_OK, but mark global lock as not present. * Any attempt to actually use the global lock will be flagged * with an error. @@ -453,14 +505,15 @@ AcpiEvInitGlobalLockHandler (void) *****************************************************************************/ ACPI_STATUS -AcpiEvAcquireGlobalLock(void) +AcpiEvAcquireGlobalLock ( + UINT32 Timeout) { ACPI_STATUS Status = AE_OK; BOOLEAN Acquired = FALSE; - void *GlobalLock; - FUNCTION_TRACE ("EvAcquireGlobalLock"); + ACPI_FUNCTION_TRACE ("EvAcquireGlobalLock"); + /* Make sure that we actually have a global lock */ @@ -473,29 +526,21 @@ AcpiEvAcquireGlobalLock(void) AcpiGbl_GlobalLockThreadCount++; - /* If we (OS side) have the hardware lock already, we are done */ + /* If we (OS side vs. BIOS side) have the hardware lock already, we are done */ if (AcpiGbl_GlobalLockAcquired) { return_ACPI_STATUS (AE_OK); } - /* Only if the FACS is valid */ - - if (!AcpiGbl_FACS) - { - return_ACPI_STATUS (AE_OK); - } - /* We must acquire the actual hardware lock */ - GlobalLock = AcpiGbl_FACS->GlobalLock; - ACPI_ACQUIRE_GLOBAL_LOCK (GlobalLock, Acquired); + ACPI_ACQUIRE_GLOBAL_LOCK (AcpiGbl_CommonFACS.GlobalLock, Acquired); if (Acquired) { /* We got the lock */ - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Acquired the Global Lock\n")); + ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Acquired the HW Global Lock\n")); AcpiGbl_GlobalLockAcquired = TRUE; return_ACPI_STATUS (AE_OK); @@ -507,12 +552,12 @@ AcpiEvAcquireGlobalLock(void) */ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Waiting for the HW Global Lock\n")); - /* - * Acquire the global lock semaphore first. - * Since this wait will block, we must release the interpreter - */ + /* + * Acquire the global lock semaphore first. + * Since this wait will block, we must release the interpreter + */ Status = AcpiExSystemWaitSemaphore (AcpiGbl_GlobalLockSemaphore, - ACPI_UINT32_MAX); + Timeout); return_ACPI_STATUS (Status); } @@ -529,44 +574,87 @@ void AcpiEvReleaseGlobalLock (void) { BOOLEAN Pending = FALSE; - void *GlobalLock; - FUNCTION_TRACE ("EvReleaseGlobalLock"); + ACPI_FUNCTION_TRACE ("EvReleaseGlobalLock"); if (!AcpiGbl_GlobalLockThreadCount) { - REPORT_WARNING(("Global Lock has not be acquired, cannot release\n")); + ACPI_REPORT_WARNING(("Cannot release HW Global Lock, it has not been acquired\n")); return_VOID; } - /* One fewer thread has the global lock */ + /* One fewer thread has the global lock */ AcpiGbl_GlobalLockThreadCount--; + if (AcpiGbl_GlobalLockThreadCount) + { + /* There are still some threads holding the lock, cannot release */ - /* Have all threads released the lock? */ + return_VOID; + } - if (!AcpiGbl_GlobalLockThreadCount) + /* + * No more threads holding lock, we can do the actual hardware + * release + */ + ACPI_RELEASE_GLOBAL_LOCK (AcpiGbl_CommonFACS.GlobalLock, Pending); + AcpiGbl_GlobalLockAcquired = FALSE; + + /* + * If the pending bit was set, we must write GBL_RLS to the control + * register + */ + if (Pending) { - /* - * No more threads holding lock, we can do the actual hardware - * release - */ - GlobalLock = AcpiGbl_FACS->GlobalLock; - ACPI_RELEASE_GLOBAL_LOCK (GlobalLock, Pending); - AcpiGbl_GlobalLockAcquired = FALSE; - - /* - * If the pending bit was set, we must write GBL_RLS to the control - * register - */ - if (Pending) - { - AcpiHwRegisterBitAccess (ACPI_WRITE, ACPI_MTX_LOCK, - GBL_RLS, 1); - } + AcpiHwBitRegisterWrite (ACPI_BITREG_GLOBAL_LOCK_RELEASE, 1, ACPI_MTX_LOCK); + } + + return_VOID; +} + + +/****************************************************************************** + * + * FUNCTION: AcpiEvTerminate + * + * PARAMETERS: none + * + * RETURN: none + * + * DESCRIPTION: free memory allocated for table storage. + * + ******************************************************************************/ + +void +AcpiEvTerminate (void) +{ + + ACPI_FUNCTION_TRACE ("EvTerminate"); + + + /* + * Free global tables, etc. + */ + if (AcpiGbl_GpeRegisterInfo) + { + ACPI_MEM_FREE (AcpiGbl_GpeRegisterInfo); + AcpiGbl_GpeRegisterInfo = NULL; + } + + if (AcpiGbl_GpeNumberInfo) + { + ACPI_MEM_FREE (AcpiGbl_GpeNumberInfo); + AcpiGbl_GpeNumberInfo = NULL; + } + + if (AcpiGbl_GpeNumberToIndex) + { + ACPI_MEM_FREE (AcpiGbl_GpeNumberToIndex); + AcpiGbl_GpeNumberToIndex = NULL; } return_VOID; } + diff --git a/sys/contrib/dev/acpica/evregion.c b/sys/contrib/dev/acpica/evregion.c index 544e7fb9410d..32410e9443a4 100644 --- a/sys/contrib/dev/acpica/evregion.c +++ b/sys/contrib/dev/acpica/evregion.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: evregion - ACPI AddressSpace (OpRegion) handler dispatch - * $Revision: 120 $ + * $Revision: 128 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -124,7 +124,7 @@ #include "amlcode.h" #define _COMPONENT ACPI_EVENTS - MODULE_NAME ("evregion") + ACPI_MODULE_NAME ("evregion") /******************************************************************************* @@ -146,7 +146,7 @@ AcpiEvInstallDefaultAddressSpaceHandlers ( ACPI_STATUS Status; - FUNCTION_TRACE ("EvInstallDefaultAddressSpaceHandlers"); + ACPI_FUNCTION_TRACE ("EvInstallDefaultAddressSpaceHandlers"); /* @@ -164,7 +164,8 @@ AcpiEvInstallDefaultAddressSpaceHandlers ( * NOTE: We ignore AE_ALREADY_EXISTS because this means that a handler * has already been installed (via AcpiInstallAddressSpaceHandler) */ - Status = AcpiInstallAddressSpaceHandler (AcpiGbl_RootNode, + + Status = AcpiInstallAddressSpaceHandler ((ACPI_HANDLE) AcpiGbl_RootNode, ACPI_ADR_SPACE_SYSTEM_MEMORY, ACPI_DEFAULT_HANDLER, NULL, NULL); if ((ACPI_FAILURE (Status)) && @@ -173,7 +174,7 @@ AcpiEvInstallDefaultAddressSpaceHandlers ( return_ACPI_STATUS (Status); } - Status = AcpiInstallAddressSpaceHandler (AcpiGbl_RootNode, + Status = AcpiInstallAddressSpaceHandler ((ACPI_HANDLE) AcpiGbl_RootNode, ACPI_ADR_SPACE_SYSTEM_IO, ACPI_DEFAULT_HANDLER, NULL, NULL); if ((ACPI_FAILURE (Status)) && @@ -182,7 +183,7 @@ AcpiEvInstallDefaultAddressSpaceHandlers ( return_ACPI_STATUS (Status); } - Status = AcpiInstallAddressSpaceHandler (AcpiGbl_RootNode, + Status = AcpiInstallAddressSpaceHandler ((ACPI_HANDLE) AcpiGbl_RootNode, ACPI_ADR_SPACE_PCI_CONFIG, ACPI_DEFAULT_HANDLER, NULL, NULL); if ((ACPI_FAILURE (Status)) && @@ -191,6 +192,14 @@ AcpiEvInstallDefaultAddressSpaceHandlers ( return_ACPI_STATUS (Status); } + Status = AcpiInstallAddressSpaceHandler ((ACPI_HANDLE) AcpiGbl_RootNode, + ACPI_ADR_SPACE_DATA_TABLE, + ACPI_DEFAULT_HANDLER, NULL, NULL); + if ((ACPI_FAILURE (Status)) && + (Status != AE_ALREADY_EXISTS)) + { + return_ACPI_STATUS (Status); + } return_ACPI_STATUS (AE_OK); } @@ -219,7 +228,7 @@ AcpiEvExecuteRegMethod ( ACPI_STATUS Status; - FUNCTION_TRACE ("EvExecuteRegMethod"); + ACPI_FUNCTION_TRACE ("EvExecuteRegMethod"); RegionObj2 = AcpiNsGetSecondaryObject (RegionObj); @@ -265,7 +274,7 @@ AcpiEvExecuteRegMethod ( /* * Execute the method, no return value */ - DEBUG_EXEC(AcpiUtDisplayInitPathname (RegionObj2->Extra.Method_REG, " [Method]")); + ACPI_DEBUG_EXEC(AcpiUtDisplayInitPathname (RegionObj2->Extra.Method_REG, " [Method]")); Status = AcpiNsEvaluateByHandle (RegionObj2->Extra.Method_REG, Params, NULL); AcpiUtRemoveReference (Params[1]); @@ -311,7 +320,7 @@ AcpiEvAddressSpaceDispatch ( void *RegionContext = NULL; - FUNCTION_TRACE ("EvAddressSpaceDispatch"); + ACPI_FUNCTION_TRACE ("EvAddressSpaceDispatch"); RegionObj2 = AcpiNsGetSecondaryObject (RegionObj); @@ -392,10 +401,10 @@ AcpiEvAddressSpaceDispatch ( ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, "Addrhandler %p (%p), Address %8.8X%8.8X\n", - &RegionObj->Region.AddrHandler->AddrHandler, Handler, HIDWORD(Address), - LODWORD(Address))); + &RegionObj->Region.AddrHandler->AddrHandler, Handler, + ACPI_HIDWORD (Address), ACPI_LODWORD (Address))); - if (!(HandlerDesc->AddrHandler.Flags & ADDR_HANDLER_DEFAULT_INSTALLED)) + if (!(HandlerDesc->AddrHandler.Flags & ACPI_ADDR_HANDLER_DEFAULT_INSTALLED)) { /* * For handlers other than the default (supplied) handlers, we must @@ -414,12 +423,12 @@ AcpiEvAddressSpaceDispatch ( if (ACPI_FAILURE (Status)) { - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Region handler: %s [%s]\n", - AcpiFormatException (Status), - AcpiUtGetRegionName (RegionObj->Region.SpaceId))); + ACPI_REPORT_ERROR (("Handler for [%s] returned %s\n", + AcpiUtGetRegionName (RegionObj->Region.SpaceId), + AcpiFormatException (Status))); } - if (!(HandlerDesc->AddrHandler.Flags & ADDR_HANDLER_DEFAULT_INSTALLED)) + if (!(HandlerDesc->AddrHandler.Flags & ACPI_ADDR_HANDLER_DEFAULT_INSTALLED)) { /* * We just returned from a non-default handler, we must re-enter the @@ -459,7 +468,7 @@ AcpiEvDisassociateRegionFromHandler( ACPI_STATUS Status; - FUNCTION_TRACE ("EvDisassociateRegionFromHandler"); + ACPI_FUNCTION_TRACE ("EvDisassociateRegionFromHandler"); RegionObj2 = AcpiNsGetSecondaryObject (RegionObj); @@ -506,7 +515,11 @@ AcpiEvDisassociateRegionFromHandler( if (AcpiNsIsLocked) { - AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + Status = AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + return_VOID; + } } /* @@ -516,7 +529,11 @@ AcpiEvDisassociateRegionFromHandler( if (AcpiNsIsLocked) { - AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + return_VOID; + } } /* @@ -596,7 +613,7 @@ AcpiEvAssociateRegionAndHandler ( ACPI_STATUS Status; - FUNCTION_TRACE ("EvAssociateRegionAndHandler"); + ACPI_FUNCTION_TRACE ("EvAssociateRegionAndHandler"); ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, @@ -628,7 +645,7 @@ AcpiEvAssociateRegionAndHandler ( if (AcpiNsIsLocked) { - AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + (void) AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); } return_ACPI_STATUS (Status); @@ -668,7 +685,7 @@ AcpiEvAddrHandlerHelper ( ACPI_STATUS Status; - PROC_NAME ("EvAddrHandlerHelper"); + ACPI_FUNCTION_NAME ("EvAddrHandlerHelper"); HandlerObj = (ACPI_OPERAND_OBJECT *) Context; @@ -713,7 +730,7 @@ AcpiEvAddrHandlerHelper ( /* * Devices are handled different than regions */ - if (IS_THIS_OBJECT_TYPE (ObjDesc, ACPI_TYPE_DEVICE)) + if (ObjDesc->Common.Type == ACPI_TYPE_DEVICE) { /* * See if this guy has any handlers diff --git a/sys/contrib/dev/acpica/evrgnini.c b/sys/contrib/dev/acpica/evrgnini.c index 23e0c2b02e81..cf801a8923c3 100644 --- a/sys/contrib/dev/acpica/evrgnini.c +++ b/sys/contrib/dev/acpica/evrgnini.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: evrgnini- ACPI AddressSpace (OpRegion) init - * $Revision: 51 $ + * $Revision: 56 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -124,7 +124,7 @@ #include "amlcode.h" #define _COMPONENT ACPI_EVENTS - MODULE_NAME ("evrgnini") + ACPI_MODULE_NAME ("evrgnini") /******************************************************************************* @@ -149,7 +149,7 @@ AcpiEvSystemMemoryRegionSetup ( void *HandlerContext, void **RegionContext) { - FUNCTION_TRACE ("EvSystemMemoryRegionSetup"); + ACPI_FUNCTION_TRACE ("EvSystemMemoryRegionSetup"); if (Function == ACPI_REGION_DEACTIVATE) @@ -197,7 +197,7 @@ AcpiEvIoSpaceRegionSetup ( void *HandlerContext, void **RegionContext) { - FUNCTION_TRACE ("EvIoSpaceRegionSetup"); + ACPI_FUNCTION_TRACE ("EvIoSpaceRegionSetup"); if (Function == ACPI_REGION_DEACTIVATE) @@ -246,7 +246,7 @@ AcpiEvPciConfigRegionSetup ( ACPI_DEVICE_ID ObjectHID; - FUNCTION_TRACE ("EvPciConfigRegionSetup"); + ACPI_FUNCTION_TRACE ("EvPciConfigRegionSetup"); HandlerObj = RegionObj->Region.AddrHandler; @@ -290,7 +290,7 @@ AcpiEvPciConfigRegionSetup ( * First get device and function numbers from the _ADR object * in the parent's scope. */ - Node = AcpiNsGetParentObject (RegionObj->Region.Node); + Node = AcpiNsGetParentNode (RegionObj->Region.Node); /* AcpiEvaluate the _ADR object */ @@ -303,8 +303,8 @@ AcpiEvPciConfigRegionSetup ( */ if (ACPI_SUCCESS (Status)) { - PciId->Device = HIWORD (Temp); - PciId->Function = LOWORD (Temp); + PciId->Device = ACPI_HIWORD (Temp); + PciId->Function = ACPI_LOWORD (Temp); } /* @@ -330,17 +330,17 @@ AcpiEvPciConfigRegionSetup ( Status = AcpiUtExecute_HID (Node, &ObjectHID); if (ACPI_SUCCESS (Status)) { - if (!(STRNCMP (ObjectHID.Buffer, PCI_ROOT_HID_STRING, + if (!(ACPI_STRNCMP (ObjectHID.Buffer, PCI_ROOT_HID_STRING, sizeof (PCI_ROOT_HID_STRING)))) { - AcpiInstallAddressSpaceHandler (Node, + AcpiInstallAddressSpaceHandler ((ACPI_HANDLE) Node, ACPI_ADR_SPACE_PCI_CONFIG, ACPI_DEFAULT_HANDLER, NULL, NULL); break; } } - Node = AcpiNsGetParentObject (Node); + Node = AcpiNsGetParentNode (Node); } } else @@ -354,7 +354,7 @@ AcpiEvPciConfigRegionSetup ( Status = AcpiUtEvaluateNumericObject (METHOD_NAME__SEG, Node, &Temp); if (ACPI_SUCCESS (Status)) { - PciId->Segment = LOWORD (Temp); + PciId->Segment = ACPI_LOWORD (Temp); } /* @@ -363,7 +363,7 @@ AcpiEvPciConfigRegionSetup ( Status = AcpiUtEvaluateNumericObject (METHOD_NAME__BBN, Node, &Temp); if (ACPI_SUCCESS (Status)) { - PciId->Bus = LOWORD (Temp); + PciId->Bus = ACPI_LOWORD (Temp); } *RegionContext = PciId; @@ -396,7 +396,7 @@ AcpiEvPciBarRegionSetup ( void **RegionContext) { - FUNCTION_TRACE ("EvPciBarRegionSetup"); + ACPI_FUNCTION_TRACE ("EvPciBarRegionSetup"); return_ACPI_STATUS (AE_OK); @@ -428,7 +428,7 @@ AcpiEvCmosRegionSetup ( void **RegionContext) { - FUNCTION_TRACE ("EvCmosRegionSetup"); + ACPI_FUNCTION_TRACE ("EvCmosRegionSetup"); return_ACPI_STATUS (AE_OK); @@ -457,7 +457,7 @@ AcpiEvDefaultRegionSetup ( void *HandlerContext, void **RegionContext) { - FUNCTION_TRACE ("EvDefaultRegionSetup"); + ACPI_FUNCTION_TRACE ("EvDefaultRegionSetup"); if (Function == ACPI_REGION_DEACTIVATE) @@ -509,7 +509,7 @@ AcpiEvInitializeRegion ( ACPI_OPERAND_OBJECT *RegionObj2; - FUNCTION_TRACE_U32 ("EvInitializeRegion", AcpiNsLocked); + ACPI_FUNCTION_TRACE_U32 ("EvInitializeRegion", AcpiNsLocked); if (!RegionObj) @@ -527,7 +527,7 @@ AcpiEvInitializeRegion ( { return_ACPI_STATUS (AE_NOT_EXIST); } - Node = AcpiNsGetParentObject (RegionObj->Region.Node); + Node = AcpiNsGetParentNode (RegionObj->Region.Node); SpaceId = RegionObj->Region.SpaceId; @@ -616,7 +616,7 @@ AcpiEvInitializeRegion ( * This one does not have the handler we need * Pop up one level */ - Node = AcpiNsGetParentObject (Node); + Node = AcpiNsGetParentNode (Node); } /* while Node != ROOT */ diff --git a/sys/contrib/dev/acpica/evsci.c b/sys/contrib/dev/acpica/evsci.c index 9c674bedf657..76f05291c57a 100644 --- a/sys/contrib/dev/acpica/evsci.c +++ b/sys/contrib/dev/acpica/evsci.c @@ -2,7 +2,7 @@ * * Module Name: evsci - System Control Interrupt configuration and * legacy to ACPI mode state transition functions - * $Revision: 74 $ + * $Revision: 82 $ * ******************************************************************************/ @@ -10,7 +10,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -123,17 +123,7 @@ #define _COMPONENT ACPI_EVENTS - MODULE_NAME ("evsci") - - -/* - * Elements correspond to counts for TMR, NOT_USED, GBL, PWR_BTN, SLP_BTN, RTC, - * and GENERAL respectively. These counts are modified by the ACPI interrupt - * handler. - * - * TBD: [Investigate] Note that GENERAL should probably be split out into - * one element for each bit in the GPE registers - */ + ACPI_MODULE_NAME ("evsci") /******************************************************************************* @@ -151,23 +141,24 @@ ******************************************************************************/ static UINT32 -AcpiEvSciHandler (void *Context) +AcpiEvSciHandler ( + void *Context) { - UINT32 InterruptHandled = INTERRUPT_NOT_HANDLED; + UINT32 InterruptHandled = ACPI_INTERRUPT_NOT_HANDLED; - FUNCTION_TRACE("EvSciHandler"); + ACPI_FUNCTION_TRACE("EvSciHandler"); /* * Make sure that ACPI is enabled by checking SCI_EN. Note that we are * required to treat the SCI interrupt as sharable, level, active low. */ - if (!AcpiHwRegisterBitAccess (ACPI_READ, ACPI_MTX_DO_NOT_LOCK, SCI_EN)) + if (!AcpiHwBitRegisterRead (ACPI_BITREG_SCI_ENABLE, ACPI_MTX_DO_NOT_LOCK)) { /* ACPI is not enabled; this interrupt cannot be for us */ - return_VALUE (INTERRUPT_NOT_HANDLED); + return_VALUE (ACPI_INTERRUPT_NOT_HANDLED); } /* @@ -206,7 +197,7 @@ AcpiEvInstallSciHandler (void) UINT32 Status = AE_OK; - FUNCTION_TRACE ("EvInstallSciHandler"); + ACPI_FUNCTION_TRACE ("EvInstallSciHandler"); Status = AcpiOsInstallInterruptHandler ((UINT32) AcpiGbl_FADT->SciInt, @@ -216,7 +207,6 @@ AcpiEvInstallSciHandler (void) /****************************************************************************** - * * FUNCTION: AcpiEvRemoveSciHandler * @@ -225,48 +215,23 @@ AcpiEvInstallSciHandler (void) * RETURN: E_OK if handler uninstalled OK, E_ERROR if handler was not * installed to begin with * - * DESCRIPTION: Restores original status of all fixed event enable bits and - * removes SCI handler. + * DESCRIPTION: Remove the SCI interrupt handler. No further SCIs will be + * taken. + * + * Note: It doesn't seem important to disable all events or set the event + * enable registers to their original values. The OS should disable + * the SCI interrupt level when the handler is removed, so no more + * events will come in. * ******************************************************************************/ ACPI_STATUS AcpiEvRemoveSciHandler (void) { - FUNCTION_TRACE ("EvRemoveSciHandler"); - - -#if 0 - /* TBD:[Investigate] Figure this out!! Disable all events first ??? */ - - if (OriginalFixedEnableBitStatus ^ 1 << AcpiEventIndex (TMR_FIXED_EVENT)) - { - AcpiEventDisableEvent (TMR_FIXED_EVENT); - } - - if (OriginalFixedEnableBitStatus ^ 1 << AcpiEventIndex (GBL_FIXED_EVENT)) - { - AcpiEventDisableEvent (GBL_FIXED_EVENT); - } - - if (OriginalFixedEnableBitStatus ^ 1 << AcpiEventIndex (PWR_BTN_FIXED_EVENT)) - { - AcpiEventDisableEvent (PWR_BTN_FIXED_EVENT); - } - - if (OriginalFixedEnableBitStatus ^ 1 << AcpiEventIndex (SLP_BTN_FIXED_EVENT)) - { - AcpiEventDisableEvent (SLP_BTN_FIXED_EVENT); - } - - if (OriginalFixedEnableBitStatus ^ 1 << AcpiEventIndex (RTC_FIXED_EVENT)) - { - AcpiEventDisableEvent (RTC_FIXED_EVENT); - } + ACPI_FUNCTION_TRACE ("EvRemoveSciHandler"); - OriginalFixedEnableBitStatus = 0; -#endif + /* Just let the OS remove the handler and disable the level */ AcpiOsRemoveInterruptHandler ((UINT32) AcpiGbl_FADT->SciInt, AcpiEvSciHandler); @@ -275,116 +240,3 @@ AcpiEvRemoveSciHandler (void) } -/******************************************************************************* - * - * FUNCTION: AcpiEvRestoreAcpiState - * - * PARAMETERS: none - * - * RETURN: none - * - * DESCRIPTION: Restore the original ACPI state of the machine - * - ******************************************************************************/ - -void -AcpiEvRestoreAcpiState (void) -{ - UINT32 Index; - - - FUNCTION_TRACE ("EvRestoreAcpiState"); - - - /* Restore the state of the chipset enable bits. */ - - if (AcpiGbl_RestoreAcpiChipset == TRUE) - { - /* Restore the fixed events */ - - if (AcpiHwRegisterRead (ACPI_MTX_LOCK, PM1_EN) != - AcpiGbl_Pm1EnableRegisterSave) - { - AcpiHwRegisterWrite (ACPI_MTX_LOCK, PM1_EN, - AcpiGbl_Pm1EnableRegisterSave); - } - - - /* Ensure that all status bits are clear */ - - AcpiHwClearAcpiStatus (); - - - /* Now restore the GPEs */ - - for (Index = 0; Index < DIV_2 (AcpiGbl_FADT->Gpe0BlkLen); Index++) - { - if (AcpiHwRegisterRead (ACPI_MTX_LOCK, GPE0_EN_BLOCK | Index) != - AcpiGbl_Gpe0EnableRegisterSave[Index]) - { - AcpiHwRegisterWrite (ACPI_MTX_LOCK, GPE0_EN_BLOCK | Index, - AcpiGbl_Gpe0EnableRegisterSave[Index]); - } - } - - /* GPE 1 present? */ - - if (AcpiGbl_FADT->Gpe1BlkLen) - { - for (Index = 0; Index < DIV_2 (AcpiGbl_FADT->Gpe1BlkLen); Index++) - { - if (AcpiHwRegisterRead (ACPI_MTX_LOCK, GPE1_EN_BLOCK | Index) != - AcpiGbl_Gpe1EnableRegisterSave[Index]) - { - AcpiHwRegisterWrite (ACPI_MTX_LOCK, GPE1_EN_BLOCK | Index, - AcpiGbl_Gpe1EnableRegisterSave[Index]); - } - } - } - - if (AcpiHwGetMode() != AcpiGbl_OriginalMode) - { - AcpiHwSetMode (AcpiGbl_OriginalMode); - } - } - - return_VOID; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiEvTerminate - * - * PARAMETERS: none - * - * RETURN: none - * - * DESCRIPTION: free memory allocated for table storage. - * - ******************************************************************************/ - -void -AcpiEvTerminate (void) -{ - - FUNCTION_TRACE ("EvTerminate"); - - - /* - * Free global tables, etc. - */ - if (AcpiGbl_GpeRegisters) - { - ACPI_MEM_FREE (AcpiGbl_GpeRegisters); - } - - if (AcpiGbl_GpeInfo) - { - ACPI_MEM_FREE (AcpiGbl_GpeInfo); - } - - return_VOID; -} - - diff --git a/sys/contrib/dev/acpica/evxface.c b/sys/contrib/dev/acpica/evxface.c index 42828ac26303..7eb5506c89a3 100644 --- a/sys/contrib/dev/acpica/evxface.c +++ b/sys/contrib/dev/acpica/evxface.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: evxface - External interfaces for ACPI events - * $Revision: 118 $ + * $Revision: 125 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -125,7 +125,7 @@ #include "acinterp.h" #define _COMPONENT ACPI_EVENTS - MODULE_NAME ("evxface") + ACPI_MODULE_NAME ("evxface") /******************************************************************************* @@ -153,7 +153,7 @@ AcpiInstallFixedEventHandler ( ACPI_STATUS Status; - FUNCTION_TRACE ("AcpiInstallFixedEventHandler"); + ACPI_FUNCTION_TRACE ("AcpiInstallFixedEventHandler"); /* Parameter validation */ @@ -163,7 +163,11 @@ AcpiInstallFixedEventHandler ( return_ACPI_STATUS (AE_BAD_PARAMETER); } - AcpiUtAcquireMutex (ACPI_MTX_EVENTS); + Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } /* Don't allow two handlers. */ @@ -180,7 +184,7 @@ AcpiInstallFixedEventHandler ( AcpiGbl_FixedEventHandlers[Event].Context = Context; Status = AcpiEnableEvent (Event, ACPI_EVENT_FIXED, 0); - if (!ACPI_SUCCESS (Status)) + if (ACPI_FAILURE (Status)) { ACPI_DEBUG_PRINT ((ACPI_DB_WARN, "Could not enable fixed event.\n")); @@ -189,7 +193,6 @@ AcpiInstallFixedEventHandler ( AcpiGbl_FixedEventHandlers[Event].Handler = NULL; AcpiGbl_FixedEventHandlers[Event].Context = NULL; } - else { ACPI_DEBUG_PRINT ((ACPI_DB_INFO, @@ -198,7 +201,7 @@ AcpiInstallFixedEventHandler ( Cleanup: - AcpiUtReleaseMutex (ACPI_MTX_EVENTS); + (void) AcpiUtReleaseMutex (ACPI_MTX_EVENTS); return_ACPI_STATUS (Status); } @@ -224,7 +227,7 @@ AcpiRemoveFixedEventHandler ( ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE ("AcpiRemoveFixedEventHandler"); + ACPI_FUNCTION_TRACE ("AcpiRemoveFixedEventHandler"); /* Parameter validation */ @@ -234,7 +237,11 @@ AcpiRemoveFixedEventHandler ( return_ACPI_STATUS (AE_BAD_PARAMETER); } - AcpiUtAcquireMutex (ACPI_MTX_EVENTS); + Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } /* Disable the event before removing the handler */ @@ -245,7 +252,7 @@ AcpiRemoveFixedEventHandler ( AcpiGbl_FixedEventHandlers[Event].Handler = NULL; AcpiGbl_FixedEventHandlers[Event].Context = NULL; - if (!ACPI_SUCCESS (Status)) + if (ACPI_FAILURE (Status)) { ACPI_DEBUG_PRINT ((ACPI_DB_WARN, "Could not write to fixed event enable register.\n")); @@ -255,7 +262,7 @@ AcpiRemoveFixedEventHandler ( ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Disabled fixed event %X.\n", Event)); } - AcpiUtReleaseMutex (ACPI_MTX_EVENTS); + (void) AcpiUtReleaseMutex (ACPI_MTX_EVENTS); return_ACPI_STATUS (Status); } @@ -287,10 +294,10 @@ AcpiInstallNotifyHandler ( ACPI_OPERAND_OBJECT *ObjDesc; ACPI_OPERAND_OBJECT *NotifyObj; ACPI_NAMESPACE_NODE *DeviceNode; - ACPI_STATUS Status = AE_OK; + ACPI_STATUS Status; - FUNCTION_TRACE ("AcpiInstallNotifyHandler"); + ACPI_FUNCTION_TRACE ("AcpiInstallNotifyHandler"); /* Parameter validation */ @@ -301,7 +308,11 @@ AcpiInstallNotifyHandler ( return_ACPI_STATUS (AE_BAD_PARAMETER); } - AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } /* Convert and validate the device handle */ @@ -383,7 +394,6 @@ AcpiInstallNotifyHandler ( goto UnlockAndExit; } } - else { /* Create a new object */ @@ -397,7 +407,7 @@ AcpiInstallNotifyHandler ( /* Attach new object to the Node */ - Status = AcpiNsAttachObject (Device, ObjDesc, (UINT8) DeviceNode->Type); + Status = AcpiNsAttachObject (Device, ObjDesc, DeviceNode->Type); if (ACPI_FAILURE (Status)) { goto UnlockAndExit; @@ -422,7 +432,6 @@ AcpiInstallNotifyHandler ( { ObjDesc->Device.SysHandler = NotifyObj; } - else /* ACPI_DEVICE_NOTIFY */ { ObjDesc->Device.DrvHandler = NotifyObj; @@ -431,7 +440,7 @@ AcpiInstallNotifyHandler ( UnlockAndExit: - AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return_ACPI_STATUS (Status); } @@ -460,10 +469,10 @@ AcpiRemoveNotifyHandler ( ACPI_OPERAND_OBJECT *NotifyObj; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_NAMESPACE_NODE *DeviceNode; - ACPI_STATUS Status = AE_OK; + ACPI_STATUS Status; - FUNCTION_TRACE ("AcpiRemoveNotifyHandler"); + ACPI_FUNCTION_TRACE ("AcpiRemoveNotifyHandler"); /* Parameter validation */ @@ -474,7 +483,11 @@ AcpiRemoveNotifyHandler ( return_ACPI_STATUS (AE_BAD_PARAMETER); } - AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } /* Convert and validate the device handle */ @@ -575,7 +588,7 @@ AcpiRemoveNotifyHandler ( UnlockAndExit: - AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return_ACPI_STATUS (Status); } @@ -604,31 +617,37 @@ AcpiInstallGpeHandler ( ACPI_GPE_HANDLER Handler, void *Context) { - ACPI_STATUS Status = AE_OK; + ACPI_STATUS Status; + UINT32 GpeNumberIndex; - FUNCTION_TRACE ("AcpiInstallGpeHandler"); + ACPI_FUNCTION_TRACE ("AcpiInstallGpeHandler"); /* Parameter validation */ - if (!Handler || (GpeNumber > ACPI_GPE_MAX)) + if (!Handler) { return_ACPI_STATUS (AE_BAD_PARAMETER); } /* Ensure that we have a valid GPE number */ - if (AcpiGbl_GpeValid[GpeNumber] == ACPI_GPE_INVALID) + GpeNumberIndex = AcpiEvGetGpeNumberIndex (GpeNumber); + if (GpeNumberIndex == ACPI_GPE_INVALID) { return_ACPI_STATUS (AE_BAD_PARAMETER); } - AcpiUtAcquireMutex (ACPI_MTX_EVENTS); + Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } /* Make sure that there isn't a handler there already */ - if (AcpiGbl_GpeInfo[GpeNumber].Handler) + if (AcpiGbl_GpeNumberInfo[GpeNumberIndex].Handler) { Status = AE_ALREADY_EXISTS; goto Cleanup; @@ -636,9 +655,9 @@ AcpiInstallGpeHandler ( /* Install the handler */ - AcpiGbl_GpeInfo[GpeNumber].Handler = Handler; - AcpiGbl_GpeInfo[GpeNumber].Context = Context; - AcpiGbl_GpeInfo[GpeNumber].Type = (UINT8) Type; + AcpiGbl_GpeNumberInfo[GpeNumberIndex].Handler = Handler; + AcpiGbl_GpeNumberInfo[GpeNumberIndex].Context = Context; + AcpiGbl_GpeNumberInfo[GpeNumberIndex].Type = (UINT8) Type; /* Clear the GPE (of stale events), the enable it */ @@ -647,7 +666,7 @@ AcpiInstallGpeHandler ( Cleanup: - AcpiUtReleaseMutex (ACPI_MTX_EVENTS); + (void) AcpiUtReleaseMutex (ACPI_MTX_EVENTS); return_ACPI_STATUS (Status); } @@ -670,22 +689,24 @@ AcpiRemoveGpeHandler ( UINT32 GpeNumber, ACPI_GPE_HANDLER Handler) { - ACPI_STATUS Status = AE_OK; + ACPI_STATUS Status; + UINT32 GpeNumberIndex; - FUNCTION_TRACE ("AcpiRemoveGpeHandler"); + ACPI_FUNCTION_TRACE ("AcpiRemoveGpeHandler"); /* Parameter validation */ - if (!Handler || (GpeNumber > ACPI_GPE_MAX)) + if (!Handler) { return_ACPI_STATUS (AE_BAD_PARAMETER); } /* Ensure that we have a valid GPE number */ - if (AcpiGbl_GpeValid[GpeNumber] == ACPI_GPE_INVALID) + GpeNumberIndex = AcpiEvGetGpeNumberIndex (GpeNumber); + if (GpeNumberIndex == ACPI_GPE_INVALID) { return_ACPI_STATUS (AE_BAD_PARAMETER); } @@ -694,11 +715,15 @@ AcpiRemoveGpeHandler ( AcpiHwDisableGpe (GpeNumber); - AcpiUtAcquireMutex (ACPI_MTX_EVENTS); + Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } /* Make sure that the installed handler is the same */ - if (AcpiGbl_GpeInfo[GpeNumber].Handler != Handler) + if (AcpiGbl_GpeNumberInfo[GpeNumberIndex].Handler != Handler) { AcpiHwEnableGpe (GpeNumber); Status = AE_BAD_PARAMETER; @@ -707,12 +732,12 @@ AcpiRemoveGpeHandler ( /* Remove the handler */ - AcpiGbl_GpeInfo[GpeNumber].Handler = NULL; - AcpiGbl_GpeInfo[GpeNumber].Context = NULL; + AcpiGbl_GpeNumberInfo[GpeNumberIndex].Handler = NULL; + AcpiGbl_GpeNumberInfo[GpeNumberIndex].Context = NULL; Cleanup: - AcpiUtReleaseMutex (ACPI_MTX_EVENTS); + (void) AcpiUtReleaseMutex (ACPI_MTX_EVENTS); return_ACPI_STATUS (Status); } @@ -732,24 +757,32 @@ Cleanup: ACPI_STATUS AcpiAcquireGlobalLock ( - void) + UINT32 Timeout, + UINT32 *Handle) { ACPI_STATUS Status; + if (!Handle) + { + return (AE_BAD_PARAMETER); + } + Status = AcpiExEnterInterpreter (); if (ACPI_FAILURE (Status)) { return (Status); } - /* - * TBD: [Restructure] add timeout param to internal interface, and - * perhaps INTERPRETER_LOCKED - */ - Status = AcpiEvAcquireGlobalLock (); + Status = AcpiEvAcquireGlobalLock (Timeout); AcpiExExitInterpreter (); + if (ACPI_SUCCESS (Status)) + { + AcpiGbl_GlobalLockHandle++; + *Handle = AcpiGbl_GlobalLockHandle; + } + return (Status); } @@ -768,9 +801,14 @@ AcpiAcquireGlobalLock ( ACPI_STATUS AcpiReleaseGlobalLock ( - void) + UINT32 Handle) { + if (Handle != AcpiGbl_GlobalLockHandle) + { + return (AE_NOT_ACQUIRED); + } + AcpiEvReleaseGlobalLock (); return (AE_OK); } diff --git a/sys/contrib/dev/acpica/evxfevnt.c b/sys/contrib/dev/acpica/evxfevnt.c index 3e123eae3ecc..533219dc15f2 100644 --- a/sys/contrib/dev/acpica/evxfevnt.c +++ b/sys/contrib/dev/acpica/evxfevnt.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: evxfevnt - External Interfaces, ACPI event disable/enable - * $Revision: 42 $ + * $Revision: 51 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -125,7 +125,7 @@ #include "acinterp.h" #define _COMPONENT ACPI_EVENTS - MODULE_NAME ("evxfevnt") + ACPI_MODULE_NAME ("evxfevnt") /******************************************************************************* @@ -146,7 +146,7 @@ AcpiEnable (void) ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE ("AcpiEnable"); + ACPI_FUNCTION_TRACE ("AcpiEnable"); /* Make sure we have ACPI tables */ @@ -159,16 +159,15 @@ AcpiEnable (void) AcpiGbl_OriginalMode = AcpiHwGetMode (); - if (AcpiGbl_OriginalMode == SYS_MODE_ACPI) + if (AcpiGbl_OriginalMode == ACPI_SYS_MODE_ACPI) { ACPI_DEBUG_PRINT ((ACPI_DB_OK, "Already in ACPI mode.\n")); } - else { /* Transition to ACPI mode */ - Status = AcpiHwSetMode (SYS_MODE_ACPI); + Status = AcpiHwSetMode (ACPI_SYS_MODE_ACPI); if (ACPI_FAILURE (Status)) { ACPI_DEBUG_PRINT ((ACPI_DB_FATAL, "Could not transition to ACPI mode.\n")); @@ -201,13 +200,13 @@ AcpiDisable (void) ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE ("AcpiDisable"); + ACPI_FUNCTION_TRACE ("AcpiDisable"); if (AcpiHwGetMode () != AcpiGbl_OriginalMode) { /* Restore original mode */ - + Status = AcpiHwSetMode (AcpiGbl_OriginalMode); if (ACPI_FAILURE (Status)) { @@ -219,8 +218,6 @@ AcpiDisable (void) /* Unload the SCI interrupt handler */ AcpiEvRemoveSciHandler (); - AcpiEvRestoreAcpiState (); - return_ACPI_STATUS (Status); } @@ -246,61 +243,40 @@ AcpiEnableEvent ( UINT32 Flags) { ACPI_STATUS Status = AE_OK; - UINT32 RegisterId; - FUNCTION_TRACE ("AcpiEnableEvent"); + ACPI_FUNCTION_TRACE ("AcpiEnableEvent"); - /* The Type must be either Fixed AcpiEvent or GPE */ + /* The Type must be either Fixed Event or GPE */ switch (Type) { - case ACPI_EVENT_FIXED: - /* Decode the Fixed AcpiEvent */ + /* Decode the Fixed Event */ - switch (Event) + if (Event > ACPI_NUM_FIXED_EVENTS) { - case ACPI_EVENT_PMTIMER: - RegisterId = TMR_EN; - break; - - case ACPI_EVENT_GLOBAL: - RegisterId = GBL_EN; - break; - - case ACPI_EVENT_POWER_BUTTON: - RegisterId = PWRBTN_EN; - break; - - case ACPI_EVENT_SLEEP_BUTTON: - RegisterId = SLPBTN_EN; - break; - - case ACPI_EVENT_RTC: - RegisterId = RTC_EN; - break; - - default: return_ACPI_STATUS (AE_BAD_PARAMETER); - break; } /* * Enable the requested fixed event (by writing a one to the * enable register bit) */ - AcpiHwRegisterBitAccess (ACPI_WRITE, ACPI_MTX_LOCK, RegisterId, 1); + AcpiHwBitRegisterWrite (AcpiGbl_FixedEventInfo[Event].EnableRegisterId, + 1, ACPI_MTX_LOCK); - if (1 != AcpiHwRegisterBitAccess(ACPI_READ, ACPI_MTX_LOCK, RegisterId)) + /* Make sure that the hardware responded */ + + if (1 != AcpiHwBitRegisterRead (AcpiGbl_FixedEventInfo[Event].EnableRegisterId, + ACPI_MTX_LOCK)) { ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, - "Fixed event bit clear when it should be set\n")); + "Could not enable %s event\n", AcpiUtGetEventName (Event))); return_ACPI_STATUS (AE_NO_HARDWARE_RESPONSE); } - break; @@ -308,24 +284,19 @@ AcpiEnableEvent ( /* Ensure that we have a valid GPE number */ - if ((Event > ACPI_GPE_MAX) || - (AcpiGbl_GpeValid[Event] == ACPI_GPE_INVALID)) + if (AcpiEvGetGpeNumberIndex (Event) == ACPI_GPE_INVALID) { return_ACPI_STATUS (AE_BAD_PARAMETER); } - /* Enable the requested GPE number */ - if (Flags & ACPI_EVENT_ENABLE) - { - AcpiHwEnableGpe (Event); - } + AcpiHwEnableGpe (Event); + if (Flags & ACPI_EVENT_WAKE_ENABLE) { AcpiHwEnableGpeForWakeup (Event); } - break; @@ -334,7 +305,6 @@ AcpiEnableEvent ( Status = AE_BAD_PARAMETER; } - return_ACPI_STATUS (Status); } @@ -360,61 +330,38 @@ AcpiDisableEvent ( UINT32 Flags) { ACPI_STATUS Status = AE_OK; - UINT32 RegisterId; - FUNCTION_TRACE ("AcpiDisableEvent"); + ACPI_FUNCTION_TRACE ("AcpiDisableEvent"); - /* The Type must be either Fixed AcpiEvent or GPE */ + /* The Type must be either Fixed Event or GPE */ switch (Type) { - case ACPI_EVENT_FIXED: - /* Decode the Fixed AcpiEvent */ + /* Decode the Fixed Event */ - switch (Event) + if (Event > ACPI_NUM_FIXED_EVENTS) { - case ACPI_EVENT_PMTIMER: - RegisterId = TMR_EN; - break; - - case ACPI_EVENT_GLOBAL: - RegisterId = GBL_EN; - break; - - case ACPI_EVENT_POWER_BUTTON: - RegisterId = PWRBTN_EN; - break; - - case ACPI_EVENT_SLEEP_BUTTON: - RegisterId = SLPBTN_EN; - break; - - case ACPI_EVENT_RTC: - RegisterId = RTC_EN; - break; - - default: return_ACPI_STATUS (AE_BAD_PARAMETER); - break; } /* * Disable the requested fixed event (by writing a zero to the * enable register bit) */ - AcpiHwRegisterBitAccess (ACPI_WRITE, ACPI_MTX_LOCK, RegisterId, 0); + AcpiHwBitRegisterWrite (AcpiGbl_FixedEventInfo[Event].EnableRegisterId, + 0, ACPI_MTX_LOCK); - if (0 != AcpiHwRegisterBitAccess(ACPI_READ, ACPI_MTX_LOCK, RegisterId)) + if (0 != AcpiHwBitRegisterRead (AcpiGbl_FixedEventInfo[Event].EnableRegisterId, + ACPI_MTX_LOCK)) { ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, - "Fixed event bit set when it should be clear,\n")); + "Could not disable %s events\n", AcpiUtGetEventName (Event))); return_ACPI_STATUS (AE_NO_HARDWARE_RESPONSE); } - break; @@ -422,23 +369,24 @@ AcpiDisableEvent ( /* Ensure that we have a valid GPE number */ - if ((Event > ACPI_GPE_MAX) || - (AcpiGbl_GpeValid[Event] == ACPI_GPE_INVALID)) + if (AcpiEvGetGpeNumberIndex (Event) == ACPI_GPE_INVALID) { return_ACPI_STATUS (AE_BAD_PARAMETER); } - /* Disable the requested GPE number */ + /* + * Only disable the requested GPE number for wake if specified. + * Otherwise, turn it totally off + */ - if (Flags & ACPI_EVENT_DISABLE) - { - AcpiHwDisableGpe (Event); - } if (Flags & ACPI_EVENT_WAKE_DISABLE) { AcpiHwDisableGpeForWakeup (Event); } - + else + { + AcpiHwDisableGpe (Event); + } break; @@ -469,53 +417,30 @@ AcpiClearEvent ( UINT32 Type) { ACPI_STATUS Status = AE_OK; - UINT32 RegisterId; - FUNCTION_TRACE ("AcpiClearEvent"); + ACPI_FUNCTION_TRACE ("AcpiClearEvent"); - /* The Type must be either Fixed AcpiEvent or GPE */ + /* The Type must be either Fixed Event or GPE */ switch (Type) { - case ACPI_EVENT_FIXED: - /* Decode the Fixed AcpiEvent */ + /* Decode the Fixed Event */ - switch (Event) + if (Event > ACPI_NUM_FIXED_EVENTS) { - case ACPI_EVENT_PMTIMER: - RegisterId = TMR_STS; - break; - - case ACPI_EVENT_GLOBAL: - RegisterId = GBL_STS; - break; - - case ACPI_EVENT_POWER_BUTTON: - RegisterId = PWRBTN_STS; - break; - - case ACPI_EVENT_SLEEP_BUTTON: - RegisterId = SLPBTN_STS; - break; - - case ACPI_EVENT_RTC: - RegisterId = RTC_STS; - break; - - default: return_ACPI_STATUS (AE_BAD_PARAMETER); - break; } /* * Clear the requested fixed event (By writing a one to the * status register bit) */ - AcpiHwRegisterBitAccess (ACPI_WRITE, ACPI_MTX_LOCK, RegisterId, 1); + AcpiHwBitRegisterWrite (AcpiGbl_FixedEventInfo[Event].StatusRegisterId, + 1, ACPI_MTX_LOCK); break; @@ -523,13 +448,11 @@ AcpiClearEvent ( /* Ensure that we have a valid GPE number */ - if ((Event > ACPI_GPE_MAX) || - (AcpiGbl_GpeValid[Event] == ACPI_GPE_INVALID)) + if (AcpiEvGetGpeNumberIndex (Event) == ACPI_GPE_INVALID) { return_ACPI_STATUS (AE_BAD_PARAMETER); } - AcpiHwClearGpe (Event); break; @@ -566,10 +489,9 @@ AcpiGetEventStatus ( ACPI_EVENT_STATUS *EventStatus) { ACPI_STATUS Status = AE_OK; - UINT32 RegisterId; - FUNCTION_TRACE ("AcpiGetEventStatus"); + ACPI_FUNCTION_TRACE ("AcpiGetEventStatus"); if (!EventStatus) @@ -578,45 +500,23 @@ AcpiGetEventStatus ( } - /* The Type must be either Fixed AcpiEvent or GPE */ + /* The Type must be either Fixed Event or GPE */ switch (Type) { - case ACPI_EVENT_FIXED: - /* Decode the Fixed AcpiEvent */ + /* Decode the Fixed Event */ - switch (Event) + if (Event > ACPI_NUM_FIXED_EVENTS) { - case ACPI_EVENT_PMTIMER: - RegisterId = TMR_STS; - break; - - case ACPI_EVENT_GLOBAL: - RegisterId = GBL_STS; - break; - - case ACPI_EVENT_POWER_BUTTON: - RegisterId = PWRBTN_STS; - break; - - case ACPI_EVENT_SLEEP_BUTTON: - RegisterId = SLPBTN_STS; - break; - - case ACPI_EVENT_RTC: - RegisterId = RTC_STS; - break; - - default: return_ACPI_STATUS (AE_BAD_PARAMETER); - break; } /* Get the status of the requested fixed event */ - *EventStatus = AcpiHwRegisterBitAccess (ACPI_READ, ACPI_MTX_LOCK, RegisterId); + *EventStatus = AcpiHwBitRegisterRead (AcpiGbl_FixedEventInfo[Event].StatusRegisterId, + ACPI_MTX_LOCK); break; @@ -624,13 +524,11 @@ AcpiGetEventStatus ( /* Ensure that we have a valid GPE number */ - if ((Event > ACPI_GPE_MAX) || - (AcpiGbl_GpeValid[Event] == ACPI_GPE_INVALID)) + if (AcpiEvGetGpeNumberIndex (Event) == ACPI_GPE_INVALID) { return_ACPI_STATUS (AE_BAD_PARAMETER); } - /* Obtain status on the requested GPE number */ AcpiHwGetGpeStatus (Event, EventStatus); diff --git a/sys/contrib/dev/acpica/evxfregn.c b/sys/contrib/dev/acpica/evxfregn.c index 5b8e728737c7..9db190ee26a6 100644 --- a/sys/contrib/dev/acpica/evxfregn.c +++ b/sys/contrib/dev/acpica/evxfregn.c @@ -2,7 +2,7 @@ * * Module Name: evxfregn - External Interfaces, ACPI Operation Regions and * Address Spaces. - * $Revision: 41 $ + * $Revision: 48 $ * *****************************************************************************/ @@ -10,7 +10,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -125,7 +125,7 @@ #include "acinterp.h" #define _COMPONENT ACPI_EVENTS - MODULE_NAME ("evxfregn") + ACPI_MODULE_NAME ("evxfregn") /******************************************************************************* @@ -155,24 +155,26 @@ AcpiInstallAddressSpaceHandler ( ACPI_OPERAND_OBJECT *ObjDesc; ACPI_OPERAND_OBJECT *HandlerObj; ACPI_NAMESPACE_NODE *Node; - ACPI_STATUS Status = AE_OK; - ACPI_OBJECT_TYPE8 Type; + ACPI_STATUS Status; + ACPI_OBJECT_TYPE Type; UINT16 Flags = 0; - FUNCTION_TRACE ("AcpiInstallAddressSpaceHandler"); + ACPI_FUNCTION_TRACE ("AcpiInstallAddressSpaceHandler"); /* Parameter validation */ - if ((!Device) || - ((!Handler) && (Handler != ACPI_DEFAULT_HANDLER)) || - (SpaceId > ACPI_MAX_ADDRESS_SPACE)) + if (!Device) { return_ACPI_STATUS (AE_BAD_PARAMETER); } - AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } /* Convert and validate the device handle */ @@ -199,7 +201,7 @@ AcpiInstallAddressSpaceHandler ( if (Handler == ACPI_DEFAULT_HANDLER) { - Flags = ADDR_HANDLER_DEFAULT_INSTALLED; + Flags = ACPI_ADDR_HANDLER_DEFAULT_INSTALLED; switch (SpaceId) { @@ -228,10 +230,14 @@ AcpiInstallAddressSpaceHandler ( Setup = AcpiEvPciBarRegionSetup; break; + case ACPI_ADR_SPACE_DATA_TABLE: + Handler = AcpiExDataTableSpaceHandler; + Setup = NULL; + break; + default: Status = AE_NOT_EXIST; goto UnlockAndExit; - break; } } @@ -275,7 +281,6 @@ AcpiInstallAddressSpaceHandler ( HandlerObj = HandlerObj->AddrHandler.Next; } } - else { ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, @@ -305,7 +310,7 @@ AcpiInstallAddressSpaceHandler ( /* Attach the new object to the Node */ - Status = AcpiNsAttachObject (Node, ObjDesc, (UINT8) Type); + Status = AcpiNsAttachObject (Node, ObjDesc, Type); if (ACPI_FAILURE (Status)) { AcpiUtRemoveReference (ObjDesc); @@ -353,7 +358,7 @@ AcpiInstallAddressSpaceHandler ( * of the branch */ Status = AcpiNsWalkNamespace (ACPI_TYPE_ANY, Device, - ACPI_UINT32_MAX, NS_WALK_UNLOCK, + ACPI_UINT32_MAX, ACPI_NS_WALK_UNLOCK, AcpiEvAddrHandlerHelper, HandlerObj, NULL); @@ -367,7 +372,7 @@ AcpiInstallAddressSpaceHandler ( UnlockAndExit: - AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return_ACPI_STATUS (Status); } @@ -396,22 +401,24 @@ AcpiRemoveAddressSpaceHandler ( ACPI_OPERAND_OBJECT *RegionObj; ACPI_OPERAND_OBJECT **LastObjPtr; ACPI_NAMESPACE_NODE *Node; - ACPI_STATUS Status = AE_OK; + ACPI_STATUS Status; - FUNCTION_TRACE ("AcpiRemoveAddressSpaceHandler"); + ACPI_FUNCTION_TRACE ("AcpiRemoveAddressSpaceHandler"); /* Parameter validation */ - if ((!Device) || - ((!Handler) && (Handler != ACPI_DEFAULT_HANDLER)) || - (SpaceId > ACPI_MAX_ADDRESS_SPACE)) + if (!Device) { return_ACPI_STATUS (AE_BAD_PARAMETER); } - AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } /* Convert and validate the device handle */ @@ -422,7 +429,6 @@ AcpiRemoveAddressSpaceHandler ( goto UnlockAndExit; } - /* Make sure the internal object exists */ ObjDesc = AcpiNsGetAttachedObject (Node); @@ -509,7 +515,7 @@ AcpiRemoveAddressSpaceHandler ( UnlockAndExit: - AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return_ACPI_STATUS (Status); } diff --git a/sys/contrib/dev/acpica/exconfig.c b/sys/contrib/dev/acpica/exconfig.c index f8c1a1c8978d..0908575a9d7b 100644 --- a/sys/contrib/dev/acpica/exconfig.c +++ b/sys/contrib/dev/acpica/exconfig.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: exconfig - Namespace reconfiguration (Load/Unload opcodes) - * $Revision: 47 $ + * $Revision: 59 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -128,156 +128,385 @@ #define _COMPONENT ACPI_EXECUTER - MODULE_NAME ("exconfig") + ACPI_MODULE_NAME ("exconfig") -/***************************************************************************** +/******************************************************************************* + * + * FUNCTION: AcpiExAddTable + * + * PARAMETERS: Table - Pointer to raw table + * ParentNode - Where to load the table (scope) + * DdbHandle - Where to return the table handle. + * + * RETURN: Status + * + * DESCRIPTION: Common function to Install and Load an ACPI table with a + * returned table handle. + * + ******************************************************************************/ + +ACPI_STATUS +AcpiExAddTable ( + ACPI_TABLE_HEADER *Table, + ACPI_NAMESPACE_NODE *ParentNode, + ACPI_OPERAND_OBJECT **DdbHandle) +{ + ACPI_STATUS Status; + ACPI_TABLE_DESC TableInfo; + ACPI_OPERAND_OBJECT *ObjDesc; + + + ACPI_FUNCTION_TRACE ("ExAddTable"); + + + /* Create an object to be the table handle */ + + ObjDesc = AcpiUtCreateInternalObject (INTERNAL_TYPE_REFERENCE); + if (!ObjDesc) + { + return_ACPI_STATUS (AE_NO_MEMORY); + } + + /* Install the new table into the local data structures */ + + TableInfo.Pointer = Table; + TableInfo.Length = Table->Length; + TableInfo.Allocation = ACPI_MEM_ALLOCATED; + TableInfo.BasePointer = Table; + + Status = AcpiTbInstallTable (NULL, &TableInfo); + if (ACPI_FAILURE (Status)) + { + goto Cleanup; + } + + /* Add the table to the namespace */ + + Status = AcpiNsLoadTable (TableInfo.InstalledDesc, ParentNode); + if (ACPI_FAILURE (Status)) + { + /* Uninstall table on error */ + + AcpiTbUninstallTable (TableInfo.InstalledDesc); + goto Cleanup; + } + + /* Init the table handle */ + + ObjDesc->Reference.Opcode = AML_LOAD_OP; + ObjDesc->Reference.Object = TableInfo.InstalledDesc; + *DdbHandle = ObjDesc; + return_ACPI_STATUS (AE_OK); + + +Cleanup: + AcpiUtRemoveReference (ObjDesc); + return_ACPI_STATUS (Status); +} + + +/******************************************************************************* * * FUNCTION: AcpiExLoadTableOp * - * PARAMETERS: RgnDesc - Op region where the table will be obtained - * DdbHandle - Where a handle to the table will be returned + * PARAMETERS: WalkState - Current state with operands + * ReturnDesc - Where to store the return object * * RETURN: Status * * DESCRIPTION: Load an ACPI table * - ****************************************************************************/ + ******************************************************************************/ ACPI_STATUS -AcpiExLoadOp ( - ACPI_OPERAND_OBJECT *RgnDesc, - ACPI_OPERAND_OBJECT *DdbHandle) +AcpiExLoadTableOp ( + ACPI_WALK_STATE *WalkState, + ACPI_OPERAND_OBJECT **ReturnDesc) { ACPI_STATUS Status; - ACPI_OPERAND_OBJECT *TableDesc = NULL; - UINT8 *TablePtr; - UINT8 *TableDataPtr; - ACPI_TABLE_HEADER TableHeader; - ACPI_TABLE_DESC TableInfo; - UINT32 i; + ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0]; + ACPI_TABLE_HEADER *Table; + ACPI_NAMESPACE_NODE *ParentNode; + ACPI_NAMESPACE_NODE *StartNode; + ACPI_NAMESPACE_NODE *ParameterNode = NULL; + ACPI_OPERAND_OBJECT *DdbHandle; + + + ACPI_FUNCTION_TRACE ("ExLoadTableOp"); + + + /* + * Make sure that the signature does not match one of the tables that + * is already loaded. + */ + Status = AcpiTbMatchSignature (Operand[0]->String.Pointer, NULL); + if (Status == AE_OK) + { + /* Signature matched -- don't allow override */ + + return_ACPI_STATUS (AE_ALREADY_EXISTS); + } + + /* Find the ACPI table */ + + Status = AcpiTbFindTable (Operand[0]->String.Pointer, + Operand[1]->String.Pointer, + Operand[2]->String.Pointer, &Table); + if (ACPI_FAILURE (Status)) + { + if (Status != AE_NOT_FOUND) + { + return_ACPI_STATUS (Status); + } + /* Not found, return an Integer=0 and AE_OK */ - FUNCTION_TRACE ("ExLoadOp"); + DdbHandle = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); + if (!DdbHandle) + { + return_ACPI_STATUS (AE_NO_MEMORY); + } - /* Object can be either a field or an opregion */ + DdbHandle->Integer.Value = 0; + *ReturnDesc = DdbHandle; - /* TBD: Handle field vs. Opregion *? + return_ACPI_STATUS (AE_OK); + } + /* Default nodes */ - /* Get the table header */ + StartNode = WalkState->ScopeInfo->Scope.Node; + ParentNode = AcpiGbl_RootNode; - TableHeader.Length = 0; - for (i = 0; i < sizeof (ACPI_TABLE_HEADER); i++) + /* RootPath (optional parameter) */ + + if (Operand[3]->String.Length > 0) { - Status = AcpiEvAddressSpaceDispatch (RgnDesc, ACPI_READ, - (ACPI_PHYSICAL_ADDRESS) i, 8, - (ACPI_INTEGER *) ((UINT8 *) &TableHeader + i)); + /* + * Find the node referenced by the RootPathString. This is the + * location within the namespace where the table will be loaded. + */ + Status = AcpiNsGetNodeByPath (Operand[3]->String.Pointer, StartNode, + ACPI_NS_SEARCH_PARENT, &ParentNode); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } - /* Allocate a buffer for the entire table */ + /* ParameterPath (optional parameter) */ - TablePtr = ACPI_MEM_ALLOCATE (TableHeader.Length); - if (!TablePtr) + if (Operand[4]->String.Length > 0) { - return_ACPI_STATUS (AE_NO_MEMORY); + if ((Operand[4]->String.Pointer[0] != '\\') && + (Operand[4]->String.Pointer[0] != '^')) + { + /* + * Path is not absolute, so it will be relative to the node + * referenced by the RootPathString (or the NS root if omitted) + */ + StartNode = ParentNode; + } + + /* + * Find the node referenced by the ParameterPathString + */ + Status = AcpiNsGetNodeByPath (Operand[4]->String.Pointer, StartNode, + ACPI_NS_SEARCH_PARENT, &ParameterNode); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + } + + /* Load the table into the namespace */ + + Status = AcpiExAddTable (Table, ParentNode, &DdbHandle); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + + /* Parameter Data (optional) */ + + if (ParameterNode) + { + /* Store the parameter data into the optional parameter object */ + + Status = AcpiExStore (Operand[5], (ACPI_OPERAND_OBJECT *) ParameterNode, + WalkState); + if (ACPI_FAILURE (Status)) + { + AcpiExUnloadTable (DdbHandle); + } } - /* Copy the header to the buffer */ + return_ACPI_STATUS (Status); +} + + +/******************************************************************************* + * + * FUNCTION: AcpiExLoadOp + * + * PARAMETERS: ObjDesc - Region or Field where the table will be + * obtained + * Target - Where a handle to the table will be stored + * WalkState - Current state + * + * RETURN: Status + * + * DESCRIPTION: Load an ACPI table from a field or operation region + * + ******************************************************************************/ + +ACPI_STATUS +AcpiExLoadOp ( + ACPI_OPERAND_OBJECT *ObjDesc, + ACPI_OPERAND_OBJECT *Target, + ACPI_WALK_STATE *WalkState) +{ + ACPI_STATUS Status; + ACPI_OPERAND_OBJECT *DdbHandle; + ACPI_OPERAND_OBJECT *BufferDesc = NULL; + ACPI_TABLE_HEADER *TablePtr = NULL; + UINT8 *TableDataPtr; + ACPI_TABLE_HEADER TableHeader; + UINT32 i; + - MEMCPY (TablePtr, &TableHeader, sizeof (ACPI_TABLE_HEADER)); - TableDataPtr = TablePtr + sizeof (ACPI_TABLE_HEADER); + ACPI_FUNCTION_TRACE ("ExLoadOp"); - /* Get the table from the op region */ + /* Object can be either an OpRegion or a Field */ - for (i = 0; i < TableHeader.Length; i++) + switch (ACPI_GET_OBJECT_TYPE (ObjDesc)) { - Status = AcpiEvAddressSpaceDispatch (RgnDesc, ACPI_READ, - (ACPI_PHYSICAL_ADDRESS) i, 8, - (ACPI_INTEGER *) (TableDataPtr + i)); + case ACPI_TYPE_REGION: + + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Load from Region %p %s\n", + ObjDesc, AcpiUtGetTypeName (ObjDesc->Common.Type))); + + /* Get the table header */ + + TableHeader.Length = 0; + for (i = 0; i < sizeof (ACPI_TABLE_HEADER); i++) + { + Status = AcpiEvAddressSpaceDispatch (ObjDesc, ACPI_READ, + (ACPI_PHYSICAL_ADDRESS) i, 8, + (ACPI_INTEGER *) ((UINT8 *) &TableHeader + i)); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + } + + /* Allocate a buffer for the entire table */ + + TablePtr = ACPI_MEM_ALLOCATE (TableHeader.Length); + if (!TablePtr) + { + return_ACPI_STATUS (AE_NO_MEMORY); + } + + /* Copy the header to the buffer */ + + ACPI_MEMCPY (TablePtr, &TableHeader, sizeof (ACPI_TABLE_HEADER)); + TableDataPtr = ACPI_PTR_ADD (UINT8, TablePtr, sizeof (ACPI_TABLE_HEADER)); + + /* Get the table from the op region */ + + for (i = 0; i < TableHeader.Length; i++) + { + Status = AcpiEvAddressSpaceDispatch (ObjDesc, ACPI_READ, + (ACPI_PHYSICAL_ADDRESS) i, 8, + (ACPI_INTEGER *) (TableDataPtr + i)); + if (ACPI_FAILURE (Status)) + { + goto Cleanup; + } + } + break; + + + case ACPI_TYPE_BUFFER_FIELD: + case INTERNAL_TYPE_REGION_FIELD: + case INTERNAL_TYPE_BANK_FIELD: + case INTERNAL_TYPE_INDEX_FIELD: + + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Load from Field %p %s\n", + ObjDesc, AcpiUtGetTypeName (ObjDesc->Common.Type))); + + /* + * The length of the field must be at least as large as the table. + * Read the entire field and thus the entire table. Buffer is + * allocated during the read. + */ + Status = AcpiExReadDataFromField (ObjDesc, &BufferDesc); if (ACPI_FAILURE (Status)) { goto Cleanup; } + + TablePtr = (ACPI_TABLE_HEADER *) BufferDesc->Buffer.Pointer; + break; + + + default: + return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } - /* Table must be either an SSDT or a PSDT */ + /* The table must be either an SSDT or a PSDT */ - if ((!STRNCMP (TableHeader.Signature, + if ((!ACPI_STRNCMP (TablePtr->Signature, AcpiGbl_AcpiTableData[ACPI_TABLE_PSDT].Signature, AcpiGbl_AcpiTableData[ACPI_TABLE_PSDT].SigLength)) && - (!STRNCMP (TableHeader.Signature, + (!ACPI_STRNCMP (TablePtr->Signature, AcpiGbl_AcpiTableData[ACPI_TABLE_SSDT].Signature, AcpiGbl_AcpiTableData[ACPI_TABLE_SSDT].SigLength))) { ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Table has invalid signature [%4.4s], must be SSDT or PSDT\n", - (char*)TableHeader.Signature)); + (char *) &TablePtr->Signature)); Status = AE_BAD_SIGNATURE; goto Cleanup; } - /* Create an object to be the table handle */ - - TableDesc = AcpiUtCreateInternalObject (INTERNAL_TYPE_REFERENCE); - if (!TableDesc) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - /* Install the new table into the local data structures */ - TableInfo.Pointer = (ACPI_TABLE_HEADER *) TablePtr; - TableInfo.Length = TableHeader.Length; - TableInfo.Allocation = ACPI_MEM_ALLOCATED; - TableInfo.BasePointer = TablePtr; - - Status = AcpiTbInstallTable (NULL, &TableInfo); + Status = AcpiExAddTable (TablePtr, AcpiGbl_RootNode, &DdbHandle); if (ACPI_FAILURE (Status)) { goto Cleanup; } - /* Add the table to the namespace */ + /* Store the DdbHandle into the Target operand */ - Status = AcpiNsLoadTable (TableInfo.InstalledDesc, AcpiGbl_RootNode); + Status = AcpiExStore (DdbHandle, Target, WalkState); if (ACPI_FAILURE (Status)) { - /* Uninstall table and free the buffer */ - - AcpiTbUninstallTable (TableInfo.InstalledDesc); - goto Cleanup; + AcpiExUnloadTable (DdbHandle); } - - /* We need a pointer to the table desc */ - - /* Init the table handle */ - - TableDesc->Reference.Opcode = AML_LOAD_OP; - TableDesc->Reference.Object = TableInfo.InstalledDesc; - - /* Store the tabledesc into the DdbHandle target */ - /* DdbHandle = TableDesc; */ - return_ACPI_STATUS (Status); Cleanup: - ACPI_MEM_FREE (TableDesc); - ACPI_MEM_FREE (TablePtr); + if (BufferDesc) + { + AcpiUtRemoveReference (BufferDesc); + } + else + { + ACPI_MEM_FREE (TablePtr); + } return_ACPI_STATUS (Status); } -/***************************************************************************** +/******************************************************************************* * * FUNCTION: AcpiExUnloadTable * @@ -287,7 +516,7 @@ Cleanup: * * DESCRIPTION: Unload an ACPI table * - ****************************************************************************/ + ******************************************************************************/ ACPI_STATUS AcpiExUnloadTable ( @@ -298,7 +527,7 @@ AcpiExUnloadTable ( ACPI_TABLE_DESC *TableInfo; - FUNCTION_TRACE ("ExUnloadTable"); + ACPI_FUNCTION_TRACE ("ExUnloadTable"); /* @@ -308,7 +537,7 @@ AcpiExUnloadTable ( * validated here. */ if ((!DdbHandle) || - (!VALID_DESCRIPTOR_TYPE (DdbHandle, ACPI_DESC_TYPE_INTERNAL)) || + (ACPI_GET_DESCRIPTOR_TYPE (DdbHandle) != ACPI_DESC_TYPE_INTERNAL) || (((ACPI_OPERAND_OBJECT *)DdbHandle)->Common.Type != INTERNAL_TYPE_REFERENCE)) { @@ -336,7 +565,6 @@ AcpiExUnloadTable ( /* Delete the table descriptor (DdbHandle) */ AcpiUtRemoveReference (TableDesc); - return_ACPI_STATUS (Status); } diff --git a/sys/contrib/dev/acpica/exconvrt.c b/sys/contrib/dev/acpica/exconvrt.c index 46159ce16050..86127893f8a5 100644 --- a/sys/contrib/dev/acpica/exconvrt.c +++ b/sys/contrib/dev/acpica/exconvrt.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: exconvrt - Object conversion routines - * $Revision: 24 $ + * $Revision: 30 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -127,7 +127,7 @@ #define _COMPONENT ACPI_EXECUTER - MODULE_NAME ("exconvrt") + ACPI_MODULE_NAME ("exconvrt") /******************************************************************************* @@ -158,14 +158,14 @@ AcpiExConvertToInteger ( UINT32 IntegerSize = sizeof (ACPI_INTEGER); - FUNCTION_ENTRY (); + ACPI_FUNCTION_TRACE_PTR ("ExConvertToInteger", ObjDesc); switch (ObjDesc->Common.Type) { case ACPI_TYPE_INTEGER: *ResultDesc = ObjDesc; - return (AE_OK); + return_ACPI_STATUS (AE_OK); case ACPI_TYPE_STRING: Pointer = ObjDesc->String.Pointer; @@ -178,7 +178,7 @@ AcpiExConvertToInteger ( break; default: - return (AE_TYPE); + return_ACPI_STATUS (AE_TYPE); } /* @@ -187,10 +187,9 @@ AcpiExConvertToInteger ( RetDesc = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); if (!RetDesc) { - return (AE_NO_MEMORY); + return_ACPI_STATUS (AE_NO_MEMORY); } - /* Handle both ACPI 1.0 and ACPI 2.0 Integer widths */ if (WalkState->MethodNode->Flags & ANOBJ_DATA_WIDTH_32) @@ -202,7 +201,6 @@ AcpiExConvertToInteger ( IntegerSize = sizeof (UINT32); } - /* * Convert the buffer/string to an integer. Note that both buffers and * strings are treated as raw data - we don't convert ascii to hex for @@ -228,13 +226,13 @@ AcpiExConvertToInteger ( { case ACPI_TYPE_STRING: - /* TBD: Need to use 64-bit STRTOUL */ + /* TBD: Need to use 64-bit ACPI_STRTOUL */ /* * Convert string to an integer * String must be hexadecimal as per the ACPI specification */ - Result = STRTOUL (Pointer, NULL, 16); + Result = ACPI_STRTOUL (Pointer, NULL, 16); break; @@ -253,7 +251,6 @@ AcpiExConvertToInteger ( */ Result |= (((ACPI_INTEGER) Pointer[i]) << (i * 8)); } - break; } @@ -270,7 +267,7 @@ AcpiExConvertToInteger ( } *ResultDesc = RetDesc; - return (AE_OK); + return_ACPI_STATUS (AE_OK); } @@ -300,7 +297,7 @@ AcpiExConvertToBuffer ( UINT8 *NewBuf; - FUNCTION_ENTRY (); + ACPI_FUNCTION_TRACE_PTR ("ExConvertToBuffer", ObjDesc); switch (ObjDesc->Common.Type) @@ -313,7 +310,7 @@ AcpiExConvertToBuffer ( RetDesc = AcpiUtCreateInternalObject (ACPI_TYPE_BUFFER); if (!RetDesc) { - return (AE_NO_MEMORY); + return_ACPI_STATUS (AE_NO_MEMORY); } /* Handle both ACPI 1.0 and ACPI 2.0 Integer widths */ @@ -328,16 +325,16 @@ AcpiExConvertToBuffer ( IntegerSize = sizeof (UINT32); } - /* Need enough space for one integers */ + /* Need enough space for one integer */ RetDesc->Buffer.Length = IntegerSize; NewBuf = ACPI_MEM_CALLOCATE (IntegerSize); if (!NewBuf) { - REPORT_ERROR + ACPI_REPORT_ERROR (("ExConvertToBuffer: Buffer allocation failure\n")); AcpiUtRemoveReference (RetDesc); - return (AE_NO_MEMORY); + return_ACPI_STATUS (AE_NO_MEMORY); } /* Copy the integer to the buffer */ @@ -350,14 +347,6 @@ AcpiExConvertToBuffer ( /* Return the new buffer descriptor */ - if (*ResultDesc == ObjDesc) - { - if (WalkState->Opcode != AML_STORE_OP) - { - AcpiUtRemoveReference (ObjDesc); - } - } - *ResultDesc = RetDesc; break; @@ -373,11 +362,10 @@ AcpiExConvertToBuffer ( default: - return (AE_TYPE); - break; - } + return_ACPI_STATUS (AE_TYPE); + } - return (AE_OK); + return_ACPI_STATUS (AE_OK); } @@ -409,7 +397,7 @@ AcpiExConvertToAscii ( BOOLEAN LeadingZero = TRUE; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); switch (Base) @@ -436,7 +424,7 @@ AcpiExConvertToAscii ( if (!LeadingZero) { - String[k] = (UINT8) (ASCII_ZERO + Remainder); + String[k] = (UINT8) (ACPI_ASCII_ZERO + Remainder); k++; } } @@ -450,7 +438,7 @@ AcpiExConvertToAscii ( { HexDigit = AcpiUtHexToAsciiChar (Integer, (j * 4)); - if (HexDigit != ASCII_ZERO) + if (HexDigit != ACPI_ASCII_ZERO) { LeadingZero = FALSE; } @@ -475,7 +463,7 @@ AcpiExConvertToAscii ( */ if (!k) { - String [0] = ASCII_ZERO; + String [0] = ACPI_ASCII_ZERO; k = 1; } String [k] = 0; @@ -515,7 +503,7 @@ AcpiExConvertToString ( UINT8 *Pointer; - FUNCTION_ENTRY (); + ACPI_FUNCTION_TRACE_PTR ("ExConvertToString", ObjDesc); switch (ObjDesc->Common.Type) @@ -546,7 +534,7 @@ AcpiExConvertToString ( RetDesc = AcpiUtCreateInternalObject (ACPI_TYPE_STRING); if (!RetDesc) { - return (AE_NO_MEMORY); + return_ACPI_STATUS (AE_NO_MEMORY); } /* Need enough space for one ASCII integer plus null terminator */ @@ -554,10 +542,10 @@ AcpiExConvertToString ( NewBuf = ACPI_MEM_CALLOCATE (StringLength + 1); if (!NewBuf) { - REPORT_ERROR + ACPI_REPORT_ERROR (("ExConvertToString: Buffer allocation failure\n")); AcpiUtRemoveReference (RetDesc); - return (AE_NO_MEMORY); + return_ACPI_STATUS (AE_NO_MEMORY); } @@ -606,7 +594,7 @@ AcpiExConvertToString ( { if (StringLength > ACPI_MAX_STRING_CONVERSION) { - return (AE_AML_STRING_LIMIT); + return_ACPI_STATUS (AE_AML_STRING_LIMIT); } } @@ -616,7 +604,7 @@ AcpiExConvertToString ( RetDesc = AcpiUtCreateInternalObject (ACPI_TYPE_STRING); if (!RetDesc) { - return (AE_NO_MEMORY); + return_ACPI_STATUS (AE_NO_MEMORY); } /* String length is the lesser of the Max or the actual length */ @@ -629,10 +617,10 @@ AcpiExConvertToString ( NewBuf = ACPI_MEM_CALLOCATE (StringLength + 1); if (!NewBuf) { - REPORT_ERROR + ACPI_REPORT_ERROR (("ExConvertToString: Buffer allocation failure\n")); AcpiUtRemoveReference (RetDesc); - return (AE_NO_MEMORY); + return_ACPI_STATUS (AE_NO_MEMORY); } /* @@ -652,7 +640,7 @@ AcpiExConvertToString ( NewBuf [Index-1] = 0; RetDesc->Buffer.Pointer = NewBuf; - RetDesc->String.Length = STRLEN ((char *) NewBuf); + RetDesc->String.Length = ACPI_STRLEN ((char *) NewBuf); /* Return the new buffer descriptor */ @@ -680,17 +668,16 @@ AcpiExConvertToString ( { /* Must copy the string first and then truncate it */ - return (AE_NOT_IMPLEMENTED); + return_ACPI_STATUS (AE_NOT_IMPLEMENTED); } break; default: - return (AE_TYPE); - break; - } + return_ACPI_STATUS (AE_TYPE); + } - return (AE_OK); + return_ACPI_STATUS (AE_OK); } @@ -698,26 +685,32 @@ AcpiExConvertToString ( * * FUNCTION: AcpiExConvertToTargetType * - * PARAMETERS: *ObjDesc - Object to be converted. - * WalkState - Current method state + * PARAMETERS: DestinationType - Current type of the destination + * SourceDesc - Source object to be converted. + * WalkState - Current method state * * RETURN: Status * - * DESCRIPTION: + * DESCRIPTION: Implements "implicit conversion" rules for storing an object. * ******************************************************************************/ ACPI_STATUS AcpiExConvertToTargetType ( - ACPI_OBJECT_TYPE8 DestinationType, - ACPI_OPERAND_OBJECT **ObjDesc, + ACPI_OBJECT_TYPE DestinationType, + ACPI_OPERAND_OBJECT *SourceDesc, + ACPI_OPERAND_OBJECT **ResultDesc, ACPI_WALK_STATE *WalkState) { ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE ("ExConvertToTargetType"); + ACPI_FUNCTION_TRACE ("ExConvertToTargetType"); + + + /* Default behavior */ + *ResultDesc = SourceDesc; /* * If required by the target, @@ -740,11 +733,11 @@ AcpiExConvertToTargetType ( default: /* No conversion allowed for these types */ - if (DestinationType != (*ObjDesc)->Common.Type) + if (DestinationType != SourceDesc->Common.Type) { ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Target does not allow conversion of type %s to %s\n", - AcpiUtGetTypeName ((*ObjDesc)->Common.Type), + AcpiUtGetTypeName ((SourceDesc)->Common.Type), AcpiUtGetTypeName (DestinationType))); Status = AE_TYPE; } @@ -764,7 +757,7 @@ AcpiExConvertToTargetType ( * These types require an Integer operand. We can convert * a Buffer or a String to an Integer if necessary. */ - Status = AcpiExConvertToInteger (*ObjDesc, ObjDesc, WalkState); + Status = AcpiExConvertToInteger (SourceDesc, ResultDesc, WalkState); break; @@ -774,17 +767,17 @@ AcpiExConvertToTargetType ( * The operand must be a String. We can convert an * Integer or Buffer if necessary */ - Status = AcpiExConvertToString (*ObjDesc, ObjDesc, 16, ACPI_UINT32_MAX, WalkState); + Status = AcpiExConvertToString (SourceDesc, ResultDesc, 16, ACPI_UINT32_MAX, WalkState); break; case ACPI_TYPE_BUFFER: /* - * The operand must be a String. We can convert an - * Integer or Buffer if necessary + * The operand must be a Buffer. We can convert an + * Integer or String if necessary */ - Status = AcpiExConvertToBuffer (*ObjDesc, ObjDesc, WalkState); + Status = AcpiExConvertToBuffer (SourceDesc, ResultDesc, WalkState); break; } break; diff --git a/sys/contrib/dev/acpica/excreate.c b/sys/contrib/dev/acpica/excreate.c index 0410fe5b7488..e14b28d10587 100644 --- a/sys/contrib/dev/acpica/excreate.c +++ b/sys/contrib/dev/acpica/excreate.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: excreate - Named object creation - * $Revision: 79 $ + * $Revision: 89 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -124,10 +124,11 @@ #include "acnamesp.h" #include "acevents.h" #include "acdispat.h" +#include "actables.h" #define _COMPONENT ACPI_EXECUTER - MODULE_NAME ("excreate") + ACPI_MODULE_NAME ("excreate") /***************************************************************************** @@ -151,7 +152,7 @@ AcpiExCreateAlias ( ACPI_STATUS Status; - FUNCTION_TRACE ("ExCreateAlias"); + ACPI_FUNCTION_TRACE ("ExCreateAlias"); /* Get the source/alias operands (both namespace nodes) */ @@ -198,7 +199,7 @@ AcpiExCreateEvent ( ACPI_OPERAND_OBJECT *ObjDesc; - FUNCTION_TRACE ("ExCreateEvent"); + ACPI_FUNCTION_TRACE ("ExCreateEvent"); ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_EVENT); @@ -208,7 +209,7 @@ AcpiExCreateEvent ( goto Cleanup; } - /* + /* * Create the actual OS semaphore, with zero initial units -- meaning * that the event is created in an unsignalled state */ @@ -222,7 +223,7 @@ AcpiExCreateEvent ( /* Attach object to the Node */ Status = AcpiNsAttachObject ((ACPI_NAMESPACE_NODE *) WalkState->Operands[0], - ObjDesc, (UINT8) ACPI_TYPE_EVENT); + ObjDesc, ACPI_TYPE_EVENT); Cleanup: /* @@ -256,7 +257,7 @@ AcpiExCreateMutex ( ACPI_OPERAND_OBJECT *ObjDesc; - FUNCTION_TRACE_PTR ("ExCreateMutex", WALK_OPERANDS); + ACPI_FUNCTION_TRACE_PTR ("ExCreateMutex", ACPI_WALK_OPERANDS); /* Create the new mutex object */ @@ -268,7 +269,7 @@ AcpiExCreateMutex ( goto Cleanup; } - /* + /* * Create the actual OS semaphore. * One unit max to make it a mutex, with one initial unit to allow * the mutex to be acquired. @@ -284,7 +285,7 @@ AcpiExCreateMutex ( ObjDesc->Mutex.SyncLevel = (UINT8) WalkState->Operands[1]->Integer.Value; Status = AcpiNsAttachObject ((ACPI_NAMESPACE_NODE *) WalkState->Operands[0], - ObjDesc, (UINT8) ACPI_TYPE_MUTEX); + ObjDesc, ACPI_TYPE_MUTEX); Cleanup: @@ -322,10 +323,10 @@ AcpiExCreateRegion ( ACPI_STATUS Status; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_NAMESPACE_NODE *Node; - ACPI_OPERAND_OBJECT *RegionObj2 = NULL; + ACPI_OPERAND_OBJECT *RegionObj2; - FUNCTION_TRACE ("ExCreateRegion"); + ACPI_FUNCTION_TRACE ("ExCreateRegion"); /* Get the Node from the object stack */ @@ -348,7 +349,7 @@ AcpiExCreateRegion ( if ((RegionSpace >= ACPI_NUM_PREDEFINED_REGIONS) && (RegionSpace < ACPI_USER_REGION_BEGIN)) { - REPORT_ERROR (("Invalid AddressSpace type %X\n", RegionSpace)); + ACPI_REPORT_ERROR (("Invalid AddressSpace type %X\n", RegionSpace)); return_ACPI_STATUS (AE_AML_INVALID_SPACE_ID); } @@ -382,7 +383,7 @@ AcpiExCreateRegion ( /* Install the new region object in the parent Node */ - Status = AcpiNsAttachObject (Node, ObjDesc, (UINT8) ACPI_TYPE_REGION); + Status = AcpiNsAttachObject (Node, ObjDesc, ACPI_TYPE_REGION); Cleanup: @@ -410,24 +411,88 @@ ACPI_STATUS AcpiExCreateTableRegion ( ACPI_WALK_STATE *WalkState) { - ACPI_STATUS Status = AE_OK; + ACPI_STATUS Status; + ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0]; + ACPI_OPERAND_OBJECT *ObjDesc; + ACPI_NAMESPACE_NODE *Node; + ACPI_TABLE_HEADER *Table; + ACPI_OPERAND_OBJECT *RegionObj2; - FUNCTION_TRACE ("ExCreateTableRegion"); + ACPI_FUNCTION_TRACE ("ExCreateTableRegion"); + + /* Get the Node from the object stack */ + + Node = WalkState->Op->Node; + + /* + * If the region object is already attached to this node, + * just return + */ + if (AcpiNsGetAttachedObject (Node)) + { + return_ACPI_STATUS (AE_OK); + } + + /* Find the ACPI table */ + + Status = AcpiTbFindTable (Operand[1]->String.Pointer, + Operand[2]->String.Pointer, + Operand[3]->String.Pointer, &Table); + + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + + /* Create the region descriptor */ -/* - ACPI_OPERAND_OBJECT *ObjDesc; ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_REGION); if (!ObjDesc) { - Status = AE_NO_MEMORY; + return_ACPI_STATUS (AE_NO_MEMORY); + } + + RegionObj2 = ObjDesc->Common.NextObject; + RegionObj2->Extra.RegionContext = NULL; + + /* Init the region from the operands */ + + ObjDesc->Region.SpaceId = REGION_DATA_TABLE; + ObjDesc->Region.Address = (ACPI_PHYSICAL_ADDRESS) ACPI_TO_INTEGER (Table); + ObjDesc->Region.Length = Table->Length; + ObjDesc->Region.Node = Node; + ObjDesc->Region.Flags = AOPOBJ_DATA_VALID; + + /* Install the new region object in the parent Node */ + + Status = AcpiNsAttachObject (Node, ObjDesc, ACPI_TYPE_REGION); + if (ACPI_FAILURE (Status)) + { goto Cleanup; } + Status = AcpiEvInitializeRegion (ObjDesc, FALSE); + if (ACPI_FAILURE (Status)) + { + if (Status == AE_NOT_EXIST) + { + Status = AE_OK; + } + else + { + goto Cleanup; + } + } + + ObjDesc->Region.Flags |= AOPOBJ_SETUP_COMPLETE; + Cleanup: -*/ + /* Remove local reference to the object */ + + AcpiUtRemoveReference (ObjDesc); return_ACPI_STATUS (Status); } @@ -457,7 +522,7 @@ AcpiExCreateProcessor ( ACPI_STATUS Status; - FUNCTION_TRACE_PTR ("ExCreateProcessor", WalkState); + ACPI_FUNCTION_TRACE_PTR ("ExCreateProcessor", WalkState); /* Create the processor object */ @@ -478,7 +543,7 @@ AcpiExCreateProcessor ( /* Install the processor object in the parent Node */ Status = AcpiNsAttachObject ((ACPI_NAMESPACE_NODE *) Operand[0], - ObjDesc, (UINT8) ACPI_TYPE_PROCESSOR); + ObjDesc, ACPI_TYPE_PROCESSOR); /* Remove local reference to the object */ @@ -513,7 +578,7 @@ AcpiExCreatePowerResource ( ACPI_OPERAND_OBJECT *ObjDesc; - FUNCTION_TRACE_PTR ("ExCreatePowerResource", WalkState); + ACPI_FUNCTION_TRACE_PTR ("ExCreatePowerResource", WalkState); /* Create the power resource object */ @@ -532,7 +597,7 @@ AcpiExCreatePowerResource ( /* Install the power resource object in the parent Node */ Status = AcpiNsAttachObject ((ACPI_NAMESPACE_NODE *) Operand[0], - ObjDesc, (UINT8) ACPI_TYPE_POWER); + ObjDesc, ACPI_TYPE_POWER); /* Remove local reference to the object */ @@ -569,7 +634,7 @@ AcpiExCreateMethod ( UINT8 MethodFlags; - FUNCTION_TRACE_PTR ("ExCreateMethod", WalkState); + ACPI_FUNCTION_TRACE_PTR ("ExCreateMethod", WalkState); /* Create a new method object */ @@ -614,7 +679,7 @@ AcpiExCreateMethod ( /* Attach the new object to the method Node */ Status = AcpiNsAttachObject ((ACPI_NAMESPACE_NODE *) Operand[0], - ObjDesc, (UINT8) ACPI_TYPE_METHOD); + ObjDesc, ACPI_TYPE_METHOD); /* Remove local reference to the object */ diff --git a/sys/contrib/dev/acpica/exdump.c b/sys/contrib/dev/acpica/exdump.c index 6b0a455628df..d3b23a5734b3 100644 --- a/sys/contrib/dev/acpica/exdump.c +++ b/sys/contrib/dev/acpica/exdump.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: exdump - Interpreter debug output routines - * $Revision: 138 $ + * $Revision: 145 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -124,7 +124,7 @@ #include "acparser.h" #define _COMPONENT ACPI_EXECUTER - MODULE_NAME ("exdump") + ACPI_MODULE_NAME ("exdump") /* @@ -161,7 +161,7 @@ AcpiExShowHexValue ( UINT8 *CurrentAmlPtr = NULL; /* Pointer to current byte of AML value */ - FUNCTION_TRACE ("ExShowHexValue"); + ACPI_FUNCTION_TRACE ("ExShowHexValue"); if (!((ACPI_LV_LOAD & AcpiDbgLevel) && (_COMPONENT & AcpiDbgLayer))) @@ -171,7 +171,7 @@ AcpiExShowHexValue ( if (!AmlStart) { - REPORT_ERROR (("ExShowHexValue: null pointer\n")); + ACPI_REPORT_ERROR (("ExShowHexValue: null pointer\n")); return; } @@ -231,24 +231,24 @@ AcpiExShowHexValue ( * * FUNCTION: AcpiExDumpOperand * - * PARAMETERS: *EntryDesc - Pointer to entry to be dumped + * PARAMETERS: *ObjDesc - Pointer to entry to be dumped * * RETURN: Status * - * DESCRIPTION: Dump a stack entry + * DESCRIPTION: Dump an operand object * ****************************************************************************/ ACPI_STATUS AcpiExDumpOperand ( - ACPI_OPERAND_OBJECT *EntryDesc) + ACPI_OPERAND_OBJECT *ObjDesc) { UINT8 *Buf = NULL; UINT32 Length; UINT32 i; - PROC_NAME ("ExDumpOperand") + ACPI_FUNCTION_NAME ("ExDumpOperand") if (!((ACPI_LV_INFO & AcpiDbgLevel) && (_COMPONENT & AcpiDbgLayer))) @@ -256,7 +256,7 @@ AcpiExDumpOperand ( return (AE_OK); } - if (!EntryDesc) + if (!ObjDesc) { /* * This usually indicates that something serious is wrong -- @@ -267,29 +267,29 @@ AcpiExDumpOperand ( return (AE_OK); } - if (VALID_DESCRIPTOR_TYPE (EntryDesc, ACPI_DESC_TYPE_NAMED)) + if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_NAMED) { - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "%p NS Node: ", EntryDesc)); - DUMP_ENTRY (EntryDesc, ACPI_LV_INFO); + ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "%p NS Node: ", ObjDesc)); + ACPI_DUMP_ENTRY (ObjDesc, ACPI_LV_INFO); return (AE_OK); } - if (!VALID_DESCRIPTOR_TYPE (EntryDesc, ACPI_DESC_TYPE_INTERNAL)) + if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_INTERNAL) { - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "%p Is not a local object \n", EntryDesc)); - DUMP_BUFFER (EntryDesc, sizeof (ACPI_OPERAND_OBJECT)); + ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "%p is not a local object\n", ObjDesc)); + ACPI_DUMP_BUFFER (ObjDesc, sizeof (ACPI_OPERAND_OBJECT)); return (AE_OK); } - /* EntryDesc is a valid object */ + /* ObjDesc is a valid object */ - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "%p ", EntryDesc)); + ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "%p ", ObjDesc)); - switch (EntryDesc->Common.Type) + switch (ObjDesc->Common.Type) { case INTERNAL_TYPE_REFERENCE: - switch (EntryDesc->Reference.Opcode) + switch (ObjDesc->Reference.Opcode) { case AML_ZERO_OP: @@ -323,31 +323,31 @@ AcpiExDumpOperand ( case AML_NAME_OP: - DUMP_PATHNAME (EntryDesc->Reference.Object, "Reference: Name: ", + ACPI_DUMP_PATHNAME (ObjDesc->Reference.Object, "Reference: Name: ", ACPI_LV_INFO, _COMPONENT); - DUMP_ENTRY (EntryDesc->Reference.Object, ACPI_LV_INFO); + ACPI_DUMP_ENTRY (ObjDesc->Reference.Object, ACPI_LV_INFO); break; case AML_INDEX_OP: AcpiOsPrintf ("Reference: Index %p\n", - EntryDesc->Reference.Object); + ObjDesc->Reference.Object); break; case AML_ARG_OP: AcpiOsPrintf ("Reference: Arg%d", - EntryDesc->Reference.Offset); + ObjDesc->Reference.Offset); - if (ACPI_TYPE_INTEGER == EntryDesc->Common.Type) + if (ACPI_TYPE_INTEGER == ObjDesc->Common.Type) { /* Value is a Number */ AcpiOsPrintf (" value is [%8.8X%8.8x]", - HIDWORD(EntryDesc->Integer.Value), - LODWORD(EntryDesc->Integer.Value)); + ACPI_HIDWORD(ObjDesc->Integer.Value), + ACPI_LODWORD(ObjDesc->Integer.Value)); } AcpiOsPrintf ("\n"); @@ -357,16 +357,16 @@ AcpiExDumpOperand ( case AML_LOCAL_OP: AcpiOsPrintf ("Reference: Local%d", - EntryDesc->Reference.Offset); + ObjDesc->Reference.Offset); - if (ACPI_TYPE_INTEGER == EntryDesc->Common.Type) + if (ACPI_TYPE_INTEGER == ObjDesc->Common.Type) { /* Value is a Number */ AcpiOsPrintf (" value is [%8.8X%8.8x]", - HIDWORD(EntryDesc->Integer.Value), - LODWORD(EntryDesc->Integer.Value)); + ACPI_HIDWORD(ObjDesc->Integer.Value), + ACPI_LODWORD(ObjDesc->Integer.Value)); } AcpiOsPrintf ("\n"); @@ -375,7 +375,7 @@ AcpiExDumpOperand ( case AML_INT_NAMEPATH_OP: AcpiOsPrintf ("Reference.Node->Name %X\n", - EntryDesc->Reference.Node->Name); + ObjDesc->Reference.Node->Name); break; default: @@ -383,7 +383,7 @@ AcpiExDumpOperand ( /* unknown opcode */ AcpiOsPrintf ("Unknown opcode=%X\n", - EntryDesc->Reference.Opcode); + ObjDesc->Reference.Opcode); break; } @@ -394,10 +394,10 @@ AcpiExDumpOperand ( case ACPI_TYPE_BUFFER: AcpiOsPrintf ("Buffer len %X @ %p \n", - EntryDesc->Buffer.Length, - EntryDesc->Buffer.Pointer); + ObjDesc->Buffer.Length, + ObjDesc->Buffer.Pointer); - Length = EntryDesc->Buffer.Length; + Length = ObjDesc->Buffer.Length; if (Length > 64) { @@ -406,11 +406,11 @@ AcpiExDumpOperand ( /* Debug only -- dump the buffer contents */ - if (EntryDesc->Buffer.Pointer) + if (ObjDesc->Buffer.Pointer) { AcpiOsPrintf ("Buffer Contents: "); - for (Buf = EntryDesc->Buffer.Pointer; Length--; ++Buf) + for (Buf = ObjDesc->Buffer.Pointer; Length--; ++Buf) { AcpiOsPrintf (" %02x", *Buf); } @@ -423,45 +423,45 @@ AcpiExDumpOperand ( case ACPI_TYPE_INTEGER: AcpiOsPrintf ("Integer %8.8X%8.8X\n", - HIDWORD (EntryDesc->Integer.Value), - LODWORD (EntryDesc->Integer.Value)); + ACPI_HIDWORD (ObjDesc->Integer.Value), + ACPI_LODWORD (ObjDesc->Integer.Value)); break; case INTERNAL_TYPE_IF: AcpiOsPrintf ("If [Integer] %8.8X%8.8X\n", - HIDWORD (EntryDesc->Integer.Value), - LODWORD (EntryDesc->Integer.Value)); + ACPI_HIDWORD (ObjDesc->Integer.Value), + ACPI_LODWORD (ObjDesc->Integer.Value)); break; case INTERNAL_TYPE_WHILE: AcpiOsPrintf ("While [Integer] %8.8X%8.8X\n", - HIDWORD (EntryDesc->Integer.Value), - LODWORD (EntryDesc->Integer.Value)); + ACPI_HIDWORD (ObjDesc->Integer.Value), + ACPI_LODWORD (ObjDesc->Integer.Value)); break; case ACPI_TYPE_PACKAGE: AcpiOsPrintf ("Package count %X @ %p\n", - EntryDesc->Package.Count, EntryDesc->Package.Elements); + ObjDesc->Package.Count, ObjDesc->Package.Elements); /* * If elements exist, package vector pointer is valid, * and debug_level exceeds 1, dump package's elements. */ - if (EntryDesc->Package.Count && - EntryDesc->Package.Elements && + if (ObjDesc->Package.Count && + ObjDesc->Package.Elements && AcpiDbgLevel > 1) { ACPI_OPERAND_OBJECT**Element; UINT16 ElementIndex; - for (ElementIndex = 0, Element = EntryDesc->Package.Elements; - ElementIndex < EntryDesc->Package.Count; + for (ElementIndex = 0, Element = ObjDesc->Package.Elements; + ElementIndex < ObjDesc->Package.Count; ++ElementIndex, ++Element) { AcpiExDumpOperand (*Element); @@ -476,23 +476,23 @@ AcpiExDumpOperand ( case ACPI_TYPE_REGION: AcpiOsPrintf ("Region %s (%X)", - AcpiUtGetRegionName (EntryDesc->Region.SpaceId), - EntryDesc->Region.SpaceId); + AcpiUtGetRegionName (ObjDesc->Region.SpaceId), + ObjDesc->Region.SpaceId); /* * If the address and length have not been evaluated, * don't print them. */ - if (!(EntryDesc->Region.Flags & AOPOBJ_DATA_VALID)) + if (!(ObjDesc->Region.Flags & AOPOBJ_DATA_VALID)) { AcpiOsPrintf ("\n"); } else { AcpiOsPrintf (" base %8.8X%8.8X Length %X\n", - HIDWORD(EntryDesc->Region.Address), - LODWORD(EntryDesc->Region.Address), - EntryDesc->Region.Length); + ACPI_HIDWORD (ObjDesc->Region.Address), + ACPI_LODWORD (ObjDesc->Region.Address), + ObjDesc->Region.Length); } break; @@ -500,12 +500,12 @@ AcpiExDumpOperand ( case ACPI_TYPE_STRING: AcpiOsPrintf ("String length %X @ %p \"", - EntryDesc->String.Length, EntryDesc->String.Pointer); + ObjDesc->String.Length, ObjDesc->String.Pointer); - for (i = 0; i < EntryDesc->String.Length; i++) + for (i = 0; i < ObjDesc->String.Length; i++) { AcpiOsPrintf ("%c", - EntryDesc->String.Pointer[i]); + ObjDesc->String.Pointer[i]); } AcpiOsPrintf ("\"\n"); @@ -521,12 +521,12 @@ AcpiExDumpOperand ( case INTERNAL_TYPE_REGION_FIELD: AcpiOsPrintf ( - "RegionField: Bits=%X BitAccWidth=%X Lock=%X Update=%X at byte=%X bit=%X of below:\n", - EntryDesc->Field.BitLength, EntryDesc->Field.AccessBitWidth, - EntryDesc->Field.FieldFlags & AML_FIELD_LOCK_RULE_MASK, - EntryDesc->Field.FieldFlags & AML_FIELD_UPDATE_RULE_MASK, - EntryDesc->Field.BaseByteOffset, EntryDesc->Field.StartFieldBitOffset); - DUMP_STACK_ENTRY (EntryDesc->Field.RegionObj); + "RegionField: Bits=%X AccWidth=%X Lock=%X Update=%X at byte=%X bit=%X of below:\n", + ObjDesc->Field.BitLength, ObjDesc->Field.AccessByteWidth, + ObjDesc->Field.FieldFlags & AML_FIELD_LOCK_RULE_MASK, + ObjDesc->Field.FieldFlags & AML_FIELD_UPDATE_RULE_MASK, + ObjDesc->Field.BaseByteOffset, ObjDesc->Field.StartFieldBitOffset); + ACPI_DUMP_STACK_ENTRY (ObjDesc->Field.RegionObj); break; @@ -540,23 +540,23 @@ AcpiExDumpOperand ( AcpiOsPrintf ( "BufferField: %X bits at byte %X bit %X of \n", - EntryDesc->BufferField.BitLength, EntryDesc->BufferField.BaseByteOffset, - EntryDesc->BufferField.StartFieldBitOffset); + ObjDesc->BufferField.BitLength, ObjDesc->BufferField.BaseByteOffset, + ObjDesc->BufferField.StartFieldBitOffset); - if (!EntryDesc->BufferField.BufferObj) + if (!ObjDesc->BufferField.BufferObj) { ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "*NULL* \n")); } else if (ACPI_TYPE_BUFFER != - EntryDesc->BufferField.BufferObj->Common.Type) + ObjDesc->BufferField.BufferObj->Common.Type) { AcpiOsPrintf ("*not a Buffer* \n"); } else { - DUMP_STACK_ENTRY (EntryDesc->BufferField.BufferObj); + ACPI_DUMP_STACK_ENTRY (ObjDesc->BufferField.BufferObj); } break; @@ -572,8 +572,8 @@ AcpiExDumpOperand ( AcpiOsPrintf ( "Method(%X) @ %p:%X\n", - EntryDesc->Method.ParamCount, - EntryDesc->Method.AmlStart, EntryDesc->Method.AmlLength); + ObjDesc->Method.ParamCount, + ObjDesc->Method.AmlStart, ObjDesc->Method.AmlLength); break; @@ -608,9 +608,9 @@ AcpiExDumpOperand ( default: - /* unknown EntryDesc->Common.Type value */ + /* unknown ObjDesc->Common.Type value */ - AcpiOsPrintf ("Unknown Type %X\n", EntryDesc->Common.Type); + AcpiOsPrintf ("Unknown Type %X\n", ObjDesc->Common.Type); break; } @@ -634,7 +634,7 @@ AcpiExDumpOperand ( void AcpiExDumpOperands ( ACPI_OPERAND_OBJECT **Operands, - OPERATING_MODE InterpreterMode, + ACPI_INTERPRETER_MODE InterpreterMode, NATIVE_CHAR *Ident, UINT32 NumLevels, NATIVE_CHAR *Note, @@ -642,10 +642,10 @@ AcpiExDumpOperands ( UINT32 LineNumber) { NATIVE_UINT i; - ACPI_OPERAND_OBJECT **EntryDesc; + ACPI_OPERAND_OBJECT **ObjDesc; - PROC_NAME ("ExDumpOperands"); + ACPI_FUNCTION_NAME ("ExDumpOperands"); if (!Ident) @@ -672,9 +672,9 @@ AcpiExDumpOperands ( for (i = 0; NumLevels > 0; i--, NumLevels--) { - EntryDesc = &Operands[i]; + ObjDesc = &Operands[i]; - if (ACPI_FAILURE (AcpiExDumpOperand (*EntryDesc))) + if (ACPI_FAILURE (AcpiExDumpOperand (*ObjDesc))) { break; } @@ -733,7 +733,7 @@ AcpiExOutAddress ( AcpiOsPrintf ("%20s : %p\n", Title, Value); #else AcpiOsPrintf ("%20s : %8.8X%8.8X\n", Title, - HIDWORD (Value), LODWORD (Value)); + ACPI_HIDWORD (Value), ACPI_LODWORD (Value)); #endif } @@ -755,7 +755,7 @@ AcpiExDumpNode ( UINT32 Flags) { - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); if (!Flags) @@ -767,15 +767,15 @@ AcpiExDumpNode ( } - AcpiOsPrintf ("%20s : %4.4s\n", "Name", (char*)&Node->Name); - AcpiExOutString ("Type", AcpiUtGetTypeName (Node->Type)); + AcpiOsPrintf ("%20s : %4.4s\n", "Name", (char *) &Node->Name); + AcpiExOutString ("Type", AcpiUtGetTypeName (Node->Type)); AcpiExOutInteger ("Flags", Node->Flags); AcpiExOutInteger ("Owner Id", Node->OwnerId); AcpiExOutInteger ("Reference Count", Node->ReferenceCount); AcpiExOutPointer ("Attached Object", AcpiNsGetAttachedObject (Node)); AcpiExOutPointer ("ChildList", Node->Child); AcpiExOutPointer ("NextPeer", Node->Peer); - AcpiExOutPointer ("Parent", AcpiNsGetParentObject (Node)); + AcpiExOutPointer ("Parent", AcpiNsGetParentNode (Node)); } @@ -798,7 +798,7 @@ AcpiExDumpObjectDescriptor ( UINT32 i; - FUNCTION_TRACE ("ExDumpObjectDescriptor"); + ACPI_FUNCTION_TRACE ("ExDumpObjectDescriptor"); if (!Flags) @@ -809,7 +809,7 @@ AcpiExDumpObjectDescriptor ( } } - if (!(VALID_DESCRIPTOR_TYPE (ObjDesc, ACPI_DESC_TYPE_INTERNAL))) + if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_INTERNAL) { AcpiOsPrintf ("ExDumpObjectDescriptor: %p is not a valid ACPI object\n", ObjDesc); return; @@ -827,8 +827,9 @@ AcpiExDumpObjectDescriptor ( { case ACPI_TYPE_INTEGER: - AcpiOsPrintf ("%20s : %X%8.8X\n", "Value", HIDWORD (ObjDesc->Integer.Value), - LODWORD (ObjDesc->Integer.Value)); + AcpiOsPrintf ("%20s : %X%8.8X\n", "Value", + ACPI_HIDWORD (ObjDesc->Integer.Value), + ACPI_LODWORD (ObjDesc->Integer.Value)); break; @@ -890,6 +891,7 @@ AcpiExDumpObjectDescriptor ( AcpiExOutInteger ("ParamCount", ObjDesc->Method.ParamCount); AcpiExOutInteger ("Concurrency", ObjDesc->Method.Concurrency); AcpiExOutPointer ("Semaphore", ObjDesc->Method.Semaphore); + AcpiExOutInteger ("OwningId", ObjDesc->Method.OwningId); AcpiExOutInteger ("AmlLength", ObjDesc->Method.AmlLength); AcpiExOutPointer ("AmlStart", ObjDesc->Method.AmlStart); break; @@ -949,7 +951,6 @@ AcpiExDumpObjectDescriptor ( case INTERNAL_TYPE_INDEX_FIELD: AcpiExOutInteger ("FieldFlags", ObjDesc->CommonField.FieldFlags); - AcpiExOutInteger ("AccessBitWidth", ObjDesc->CommonField.AccessBitWidth); AcpiExOutInteger ("AccessByteWidth", ObjDesc->CommonField.AccessByteWidth); AcpiExOutInteger ("BitLength", ObjDesc->CommonField.BitLength); AcpiExOutInteger ("FldBitOffset", ObjDesc->CommonField.StartFieldBitOffset); diff --git a/sys/contrib/dev/acpica/exfield.c b/sys/contrib/dev/acpica/exfield.c index d6a75a57b884..4a6e62853493 100644 --- a/sys/contrib/dev/acpica/exfield.c +++ b/sys/contrib/dev/acpica/exfield.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: exfield - ACPI AML (p-code) execution - field manipulation - * $Revision: 101 $ + * $Revision: 105 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -127,7 +127,7 @@ #define _COMPONENT ACPI_EXECUTER - MODULE_NAME ("exfield") + ACPI_MODULE_NAME ("exfield") /******************************************************************************* @@ -156,7 +156,7 @@ AcpiExReadDataFromField ( BOOLEAN Locked; - FUNCTION_TRACE_PTR ("ExReadDataFromField", ObjDesc); + ACPI_FUNCTION_TRACE_PTR ("ExReadDataFromField", ObjDesc); /* Parameter validation */ @@ -192,7 +192,7 @@ AcpiExReadDataFromField ( * * Note: Field.length is in bits. */ - Length = ROUND_BITS_UP_TO_BYTES (ObjDesc->Field.BitLength); + Length = ACPI_ROUND_BITS_UP_TO_BYTES (ObjDesc->Field.BitLength); if (Length > sizeof (ACPI_INTEGER)) { @@ -289,7 +289,7 @@ AcpiExWriteDataToField ( BOOLEAN Locked; - FUNCTION_TRACE_PTR ("ExWriteDataToField", ObjDesc); + ACPI_FUNCTION_TRACE_PTR ("ExWriteDataToField", ObjDesc); /* Parameter validation */ @@ -337,17 +337,16 @@ AcpiExWriteDataToField ( default: return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - break; } /* * We must have a buffer that is at least as long as the field - * we are writing to. This is because individual fields are + * we are writing to. This is because individual fields are * indivisible and partial writes are not supported -- as per * the ACPI specification. */ NewBuffer = NULL; - RequiredLength = ROUND_BITS_UP_TO_BYTES (ObjDesc->CommonField.BitLength); + RequiredLength = ACPI_ROUND_BITS_UP_TO_BYTES (ObjDesc->CommonField.BitLength); if (Length < RequiredLength) { @@ -364,7 +363,7 @@ AcpiExWriteDataToField ( * at Byte zero. All unused (upper) bytes of the * buffer will be 0. */ - MEMCPY ((char *) NewBuffer, (char *) Buffer, Length); + ACPI_MEMCPY ((char *) NewBuffer, (char *) Buffer, Length); Buffer = NewBuffer; Length = RequiredLength; } diff --git a/sys/contrib/dev/acpica/exfldio.c b/sys/contrib/dev/acpica/exfldio.c index 7e60ea8be4dc..1bd79e7ba74c 100644 --- a/sys/contrib/dev/acpica/exfldio.c +++ b/sys/contrib/dev/acpica/exfldio.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: exfldio - Aml Field I/O - * $Revision: 75 $ + * $Revision: 82 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -127,7 +127,7 @@ #define _COMPONENT ACPI_EXECUTER - MODULE_NAME ("exfldio") + ACPI_MODULE_NAME ("exfldio") /******************************************************************************* @@ -154,7 +154,7 @@ AcpiExSetupRegion ( ACPI_OPERAND_OBJECT *RgnDesc; - FUNCTION_TRACE_U32 ("ExSetupRegion", FieldDatumByteOffset); + ACPI_FUNCTION_TRACE_U32 ("ExSetupRegion", FieldDatumByteOffset); RgnDesc = ObjDesc->CommonField.RegionObj; @@ -196,8 +196,9 @@ AcpiExSetupRegion ( * byte, and a field with Dword access specified. */ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, - "Field access width (%d bytes) too large for region size (%X)\n", - ObjDesc->CommonField.AccessByteWidth, RgnDesc->Region.Length)); + "Field [%4.4s] access width (%d bytes) too large for region [%4.4s] (length %X)\n", + (char *) &ObjDesc->CommonField.Node->Name, ObjDesc->CommonField.AccessByteWidth, + (char *) &RgnDesc->Region.Node->Name, RgnDesc->Region.Length)); } /* @@ -205,10 +206,10 @@ AcpiExSetupRegion ( * exceeds region length, indicate an error */ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, - "Field Base+Offset+Width %X+%X+%X exceeds region size (%X bytes) field=%p region=%p\n", - ObjDesc->CommonField.BaseByteOffset, FieldDatumByteOffset, - ObjDesc->CommonField.AccessByteWidth, - RgnDesc->Region.Length, ObjDesc, RgnDesc)); + "Field [%4.4s] Base+Offset+Width %X+%X+%X is beyond end of region [%4.4s] (length %X)\n", + (char *) &ObjDesc->CommonField.Node->Name, ObjDesc->CommonField.BaseByteOffset, + FieldDatumByteOffset, ObjDesc->CommonField.AccessByteWidth, + (char *) &RgnDesc->Region.Node->Name, RgnDesc->Region.Length)); return_ACPI_STATUS (AE_AML_REGION_LIMIT); } @@ -245,7 +246,7 @@ AcpiExAccessRegion ( ACPI_PHYSICAL_ADDRESS Address; - FUNCTION_TRACE ("AcpiExAccessRegion"); + ACPI_FUNCTION_TRACE ("AcpiExAccessRegion"); /* @@ -270,18 +271,18 @@ AcpiExAccessRegion ( } ACPI_DEBUG_PRINT_RAW ((ACPI_DB_BFIELD, - " Region[%s-%X] Width %X Base:Off %X:%X at %8.8X%8.8X\n", + " Region[%s-%X] Access %X Base:Off %X:%X at %8.8X%8.8X\n", AcpiUtGetRegionName (RgnDesc->Region.SpaceId), RgnDesc->Region.SpaceId, - ObjDesc->CommonField.AccessBitWidth, + ObjDesc->CommonField.AccessByteWidth, ObjDesc->CommonField.BaseByteOffset, FieldDatumByteOffset, - HIDWORD (Address), LODWORD (Address))); + ACPI_HIDWORD (Address), ACPI_LODWORD (Address))); /* Invoke the appropriate AddressSpace/OpRegion handler */ Status = AcpiEvAddressSpaceDispatch (RgnDesc, ReadWrite, - Address, ObjDesc->CommonField.AccessBitWidth, Value); + Address, ACPI_MUL_8 (ObjDesc->CommonField.AccessByteWidth), Value); if (ACPI_FAILURE (Status)) { @@ -329,15 +330,26 @@ AcpiExRegisterOverflow ( ACPI_INTEGER Value) { - /* - * Is the Value larger than the maximum value that can fit into - * the field? - */ + if (ObjDesc->CommonField.BitLength >= ACPI_INTEGER_BIT_SIZE) + { + /* + * The field is large enough to hold the maximum integer, so we can + * never overflow it. + */ + return (FALSE); + } + if (Value >= (ACPI_INTEGER) (1 << ObjDesc->CommonField.BitLength)) { + /* + * The Value is larger than the maximum value that can fit into + * the register. + */ return (TRUE); } + /* The Value will fit into the field with no truncation */ + return (FALSE); } @@ -371,7 +383,7 @@ AcpiExFieldDatumIo ( ACPI_INTEGER LocalValue; - FUNCTION_TRACE_U32 ("ExFieldDatumIo", FieldDatumByteOffset); + ACPI_FUNCTION_TRACE_U32 ("ExFieldDatumIo", FieldDatumByteOffset); if (ReadWrite == ACPI_READ) @@ -417,7 +429,7 @@ AcpiExFieldDatumIo ( * Copy the data from the source buffer. * Length is the field width in bytes. */ - MEMCPY (Value, (ObjDesc->BufferField.BufferObj)->Buffer.Pointer + ACPI_MEMCPY (Value, (ObjDesc->BufferField.BufferObj)->Buffer.Pointer + ObjDesc->BufferField.BaseByteOffset + FieldDatumByteOffset, ObjDesc->CommonField.AccessByteWidth); @@ -428,7 +440,7 @@ AcpiExFieldDatumIo ( * Copy the data to the target buffer. * Length is the field width in bytes. */ - MEMCPY ((ObjDesc->BufferField.BufferObj)->Buffer.Pointer + ACPI_MEMCPY ((ObjDesc->BufferField.BufferObj)->Buffer.Pointer + ObjDesc->BufferField.BaseByteOffset + FieldDatumByteOffset, Value, ObjDesc->CommonField.AccessByteWidth); @@ -535,12 +547,12 @@ AcpiExFieldDatumIo ( if (ReadWrite == ACPI_READ) { ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "Value Read=%8.8X%8.8X\n", - HIDWORD(*Value), LODWORD(*Value))); + ACPI_HIDWORD (*Value), ACPI_LODWORD (*Value))); } else { ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "Value Written=%8.8X%8.8X\n", - HIDWORD(*Value), LODWORD(*Value))); + ACPI_HIDWORD (*Value), ACPI_LODWORD (*Value))); } } @@ -573,7 +585,7 @@ AcpiExWriteWithUpdateRule ( ACPI_INTEGER CurrentValue; - FUNCTION_TRACE_U32 ("ExWriteWithUpdateRule", Mask); + ACPI_FUNCTION_TRACE_U32 ("ExWriteWithUpdateRule", Mask); /* Start with the new bits */ @@ -593,8 +605,8 @@ AcpiExWriteWithUpdateRule ( * Check if update rule needs to be applied (not if mask is all * ones) The left shift drops the bits we want to ignore. */ - if ((~Mask << (sizeof (Mask) * 8 - - ObjDesc->CommonField.AccessBitWidth)) != 0) + if ((~Mask << (ACPI_MUL_8 (sizeof (Mask)) - + ACPI_MUL_8 (ObjDesc->CommonField.AccessByteWidth))) != 0) { /* * Read the current contents of the byte/word/dword containing @@ -625,7 +637,6 @@ AcpiExWriteWithUpdateRule ( "WriteWithUpdateRule: Unknown UpdateRule setting: %x\n", (ObjDesc->CommonField.FieldFlags & AML_FIELD_UPDATE_RULE_MASK))); return_ACPI_STATUS (AE_AML_OPERAND_VALUE); - break; } } @@ -636,10 +647,10 @@ AcpiExWriteWithUpdateRule ( ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "Mask %8.8X%8.8X DatumOffset %X Value %8.8X%8.8X, MergedValue %8.8X%8.8X\n", - HIDWORD(Mask), LODWORD(Mask), + ACPI_HIDWORD (Mask), ACPI_LODWORD (Mask), FieldDatumByteOffset, - HIDWORD(FieldValue), LODWORD(FieldValue), - HIDWORD(MergedValue),LODWORD(MergedValue))); + ACPI_HIDWORD (FieldValue), ACPI_LODWORD (FieldValue), + ACPI_HIDWORD (MergedValue),ACPI_LODWORD (MergedValue))); return_ACPI_STATUS (Status); } @@ -670,25 +681,29 @@ AcpiExGetBufferDatum( UINT32 Offset) { - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); switch (ByteGranularity) { case ACPI_FIELD_BYTE_GRANULARITY: + *Datum = ((UINT8 *) Buffer) [Offset]; break; case ACPI_FIELD_WORD_GRANULARITY: - MOVE_UNALIGNED16_TO_32 (Datum, &(((UINT16 *) Buffer) [Offset])); + + ACPI_MOVE_UNALIGNED16_TO_32 (Datum, &(((UINT16 *) Buffer) [Offset])); break; case ACPI_FIELD_DWORD_GRANULARITY: - MOVE_UNALIGNED32_TO_32 (Datum, &(((UINT32 *) Buffer) [Offset])); + + ACPI_MOVE_UNALIGNED32_TO_32 (Datum, &(((UINT32 *) Buffer) [Offset])); break; case ACPI_FIELD_QWORD_GRANULARITY: - MOVE_UNALIGNED64_TO_64 (Datum, &(((UINT64 *) Buffer) [Offset])); + + ACPI_MOVE_UNALIGNED64_TO_64 (Datum, &(((UINT64 *) Buffer) [Offset])); break; } } @@ -719,25 +734,29 @@ AcpiExSetBufferDatum ( UINT32 Offset) { - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); switch (ByteGranularity) { case ACPI_FIELD_BYTE_GRANULARITY: + ((UINT8 *) Buffer) [Offset] = (UINT8) MergedDatum; break; case ACPI_FIELD_WORD_GRANULARITY: - MOVE_UNALIGNED16_TO_16 (&(((UINT16 *) Buffer)[Offset]), &MergedDatum); + + ACPI_MOVE_UNALIGNED16_TO_16 (&(((UINT16 *) Buffer)[Offset]), &MergedDatum); break; case ACPI_FIELD_DWORD_GRANULARITY: - MOVE_UNALIGNED32_TO_32 (&(((UINT32 *) Buffer)[Offset]), &MergedDatum); + + ACPI_MOVE_UNALIGNED32_TO_32 (&(((UINT32 *) Buffer)[Offset]), &MergedDatum); break; case ACPI_FIELD_QWORD_GRANULARITY: - MOVE_UNALIGNED64_TO_64 (&(((UINT64 *) Buffer)[Offset]), &MergedDatum); + + ACPI_MOVE_UNALIGNED64_TO_64 (&(((UINT64 *) Buffer)[Offset]), &MergedDatum); break; } } @@ -772,16 +791,16 @@ AcpiExExtractFromField ( UINT32 DatumCount; - FUNCTION_TRACE ("ExExtractFromField"); + ACPI_FUNCTION_TRACE ("ExExtractFromField"); /* * The field must fit within the caller's buffer */ - ByteFieldLength = ROUND_BITS_UP_TO_BYTES (ObjDesc->CommonField.BitLength); + ByteFieldLength = ACPI_ROUND_BITS_UP_TO_BYTES (ObjDesc->CommonField.BitLength); if (ByteFieldLength > BufferLength) { - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, + ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Field size %X (bytes) too large for buffer (%X)\n", ByteFieldLength, BufferLength)); @@ -790,20 +809,19 @@ AcpiExExtractFromField ( /* Convert field byte count to datum count, round up if necessary */ - DatumCount = ROUND_UP_TO (ByteFieldLength, + DatumCount = ACPI_ROUND_UP_TO (ByteFieldLength, ObjDesc->CommonField.AccessByteWidth); ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "ByteLen=%x, DatumLen=%x, BitGran=%x, ByteGran=%x\n", - ByteFieldLength, DatumCount, ObjDesc->CommonField.AccessBitWidth, - ObjDesc->CommonField.AccessByteWidth)); + "ByteLen=%x, DatumLen=%x, ByteGran=%x\n", + ByteFieldLength, DatumCount,ObjDesc->CommonField.AccessByteWidth)); /* * Clear the caller's buffer (the whole buffer length as given) * This is very important, especially in the cases where a byte is read, * but the buffer is really a UINT32 (4 bytes). */ - MEMSET (Buffer, 0, BufferLength); + ACPI_MEMSET (Buffer, 0, BufferLength); /* Read the first raw datum to prime the loop */ @@ -831,7 +849,7 @@ AcpiExExtractFromField ( if (ObjDesc->CommonField.EndBufferValidBits) { - MergedDatum &= MASK_BITS_ABOVE (ObjDesc->CommonField.EndBufferValidBits); + MergedDatum &= ACPI_MASK_BITS_ABOVE (ObjDesc->CommonField.EndBufferValidBits); } /* Store the datum to the caller buffer */ @@ -854,7 +872,7 @@ AcpiExExtractFromField ( * to perform a final read, since this would potentially read * past the end of the region. * - * We could just split the aligned and non-aligned cases since the + * We could just split the aligned and non-aligned cases since the * aligned case is so very simple, but this would require more code. */ if ((ObjDesc->CommonField.StartFieldBitOffset != 0) || @@ -907,7 +925,7 @@ AcpiExExtractFromField ( if (ObjDesc->CommonField.EndBufferValidBits) { MergedDatum &= - MASK_BITS_ABOVE (ObjDesc->CommonField.EndBufferValidBits); + ACPI_MASK_BITS_ABOVE (ObjDesc->CommonField.EndBufferValidBits); } } } @@ -916,7 +934,7 @@ AcpiExExtractFromField ( * Store the merged field datum in the caller's buffer, according to * the granularity of the field (size of each datum). */ - AcpiExSetBufferDatum (MergedDatum, Buffer, + AcpiExSetBufferDatum (MergedDatum, Buffer, ObjDesc->CommonField.AccessByteWidth, DatumOffset); /* @@ -961,7 +979,7 @@ AcpiExInsertIntoField ( UINT32 DatumCount; - FUNCTION_TRACE ("ExInsertIntoField"); + ACPI_FUNCTION_TRACE ("ExInsertIntoField"); /* @@ -970,7 +988,7 @@ AcpiExInsertIntoField ( * larger than the field, this typically happens when an integer is * written to a field that is actually smaller than an integer. */ - ByteFieldLength = ROUND_BITS_UP_TO_BYTES (ObjDesc->CommonField.BitLength); + ByteFieldLength = ACPI_ROUND_BITS_UP_TO_BYTES (ObjDesc->CommonField.BitLength); if (BufferLength < ByteFieldLength) { ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Buffer length %X too small for field %X\n", @@ -981,12 +999,11 @@ AcpiExInsertIntoField ( /* Convert byte count to datum count, round up if necessary */ - DatumCount = ROUND_UP_TO (ByteFieldLength, ObjDesc->CommonField.AccessByteWidth); + DatumCount = ACPI_ROUND_UP_TO (ByteFieldLength, ObjDesc->CommonField.AccessByteWidth); ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "ByteLen=%x, DatumLen=%x, BitGran=%x, ByteGran=%x\n", - ByteFieldLength, DatumCount, ObjDesc->CommonField.AccessBitWidth, - ObjDesc->CommonField.AccessByteWidth)); + "ByteLen=%x, DatumLen=%x, ByteGran=%x\n", + ByteFieldLength, DatumCount, ObjDesc->CommonField.AccessByteWidth)); /* * Break the request into up to three parts (similar to an I/O request): @@ -1012,7 +1029,7 @@ AcpiExInsertIntoField ( * * Mask off bits that are "below" the field (if any) */ - Mask = MASK_BITS_BELOW (ObjDesc->CommonField.StartFieldBitOffset); + Mask = ACPI_MASK_BITS_BELOW (ObjDesc->CommonField.StartFieldBitOffset); /* If the field fits in one datum, may need to mask upper bits */ @@ -1021,7 +1038,7 @@ AcpiExInsertIntoField ( { /* There are bits above the field, mask them off also */ - Mask &= MASK_BITS_ABOVE (ObjDesc->CommonField.EndFieldValidBits); + Mask &= ACPI_MASK_BITS_ABOVE (ObjDesc->CommonField.EndFieldValidBits); } /* Shift and mask the value into the field position */ @@ -1108,7 +1125,7 @@ AcpiExInsertIntoField ( * * Mask off the unused bits above (after) the end-of-field */ - Mask = MASK_BITS_ABOVE (ObjDesc->CommonField.EndFieldValidBits); + Mask = ACPI_MASK_BITS_ABOVE (ObjDesc->CommonField.EndFieldValidBits); MergedDatum &= Mask; /* Write the last datum with the update rule */ diff --git a/sys/contrib/dev/acpica/exmisc.c b/sys/contrib/dev/acpica/exmisc.c index ac9b81974f17..410fb883fbf2 100644 --- a/sys/contrib/dev/acpica/exmisc.c +++ b/sys/contrib/dev/acpica/exmisc.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: exmisc - ACPI AML (p-code) execution - specific opcodes - * $Revision: 94 $ + * $Revision: 100 $ * *****************************************************************************/ @@ -10,7 +10,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -126,7 +126,7 @@ #define _COMPONENT ACPI_EXECUTER - MODULE_NAME ("exmisc") + ACPI_MODULE_NAME ("exmisc") /******************************************************************************* @@ -152,11 +152,13 @@ AcpiExGetObjectReference ( ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE_PTR ("ExGetObjectReference", ObjDesc); + ACPI_FUNCTION_TRACE_PTR ("ExGetObjectReference", ObjDesc); - if (VALID_DESCRIPTOR_TYPE (ObjDesc, ACPI_DESC_TYPE_INTERNAL)) + switch (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc)) { + case ACPI_DESC_TYPE_INTERNAL: + if (ObjDesc->Common.Type != INTERNAL_TYPE_REFERENCE) { *ReturnDesc = NULL; @@ -186,20 +188,22 @@ AcpiExGetObjectReference ( Status = AE_AML_INTERNAL; goto Cleanup; } + break; - } - else if (VALID_DESCRIPTOR_TYPE (ObjDesc, ACPI_DESC_TYPE_NAMED)) - { + case ACPI_DESC_TYPE_NAMED: + /* Must be a named object; Just return the Node */ *ReturnDesc = ObjDesc; - } + break; + + + default: - else - { *ReturnDesc = NULL; Status = AE_TYPE; + break; } @@ -212,7 +216,7 @@ Cleanup: /******************************************************************************* * - * FUNCTION: AcpiExDoConcatenate + * FUNCTION: AcpiExConcatTemplate * * PARAMETERS: *ObjDesc - Object to be converted. Must be an * Integer, Buffer, or String @@ -220,13 +224,109 @@ Cleanup: * * RETURN: Status * + * DESCRIPTION: Concatenate two resource templates + * + ******************************************************************************/ + +ACPI_STATUS +AcpiExConcatTemplate ( + ACPI_OPERAND_OBJECT *ObjDesc1, + ACPI_OPERAND_OBJECT *ObjDesc2, + ACPI_OPERAND_OBJECT **ActualReturnDesc, + ACPI_WALK_STATE *WalkState) +{ + ACPI_STATUS Status; + ACPI_OPERAND_OBJECT *ReturnDesc; + NATIVE_CHAR *NewBuf; + UINT8 *EndTag1; + UINT8 *EndTag2; + ACPI_SIZE Length1; + ACPI_SIZE Length2; + + + ACPI_FUNCTION_TRACE ("ExConcatTemplate"); + + + /* Find the EndTags in each resource template */ + + EndTag1 = AcpiUtGetResourceEndTag (ObjDesc1); + EndTag2 = AcpiUtGetResourceEndTag (ObjDesc2); + if (!EndTag1 || !EndTag2) + { + return_ACPI_STATUS (AE_AML_OPERAND_TYPE); + } + + /* Create a new buffer object for the result */ + + ReturnDesc = AcpiUtCreateInternalObject (ACPI_TYPE_BUFFER); + if (!ReturnDesc) + { + return_ACPI_STATUS (AE_NO_MEMORY); + } + + /* Allocate a new buffer for the result */ + + Length1 = ACPI_PTR_DIFF (EndTag1, ObjDesc1->Buffer.Pointer); + Length2 = ACPI_PTR_DIFF (EndTag2, ObjDesc2->Buffer.Pointer) + + 2; /* Size of END_TAG */ + + NewBuf = ACPI_MEM_ALLOCATE (Length1 + Length2); + if (!NewBuf) + { + ACPI_REPORT_ERROR + (("ExConcatTemplate: Buffer allocation failure\n")); + Status = AE_NO_MEMORY; + goto Cleanup; + } + + /* Copy the templates to the new descriptor */ + + ACPI_MEMCPY (NewBuf, ObjDesc1->Buffer.Pointer, Length1); + ACPI_MEMCPY (NewBuf + Length1, ObjDesc2->Buffer.Pointer, Length2); + + /* + * Point the return object to the new buffer + */ + ReturnDesc->Buffer.Pointer = (UINT8 *) NewBuf; + ReturnDesc->Buffer.Length = Length1 + Length2; + + /* Compute the new checksum */ + + NewBuf[ReturnDesc->Buffer.Length - 1] = + AcpiUtGenerateChecksum (ReturnDesc->Buffer.Pointer, + (ReturnDesc->Buffer.Length - 1)); + + /* Return the completed template descriptor */ + + *ActualReturnDesc = ReturnDesc; + return_ACPI_STATUS (AE_OK); + + +Cleanup: + + AcpiUtRemoveReference (ReturnDesc); + return_ACPI_STATUS (Status); +} + + +/******************************************************************************* + * + * FUNCTION: AcpiExDoConcatenate + * + * PARAMETERS: ObjDesc1 - First source object + * ObjDesc2 - Second source object + * ActualReturnDesc - Where to place the return object + * WalkState - Current walk state + * + * RETURN: Status + * * DESCRIPTION: Concatenate two objects OF THE SAME TYPE. * ******************************************************************************/ ACPI_STATUS AcpiExDoConcatenate ( - ACPI_OPERAND_OBJECT *ObjDesc, + ACPI_OPERAND_OBJECT *ObjDesc1, ACPI_OPERAND_OBJECT *ObjDesc2, ACPI_OPERAND_OBJECT **ActualReturnDesc, ACPI_WALK_STATE *WalkState) @@ -239,7 +339,7 @@ AcpiExDoConcatenate ( UINT32 IntegerSize = sizeof (ACPI_INTEGER); - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); /* @@ -248,7 +348,7 @@ AcpiExDoConcatenate ( * 2) Two Strings concatenated to produce a string * 3) Two Buffers concatenated to produce a buffer */ - switch (ObjDesc->Common.Type) + switch (ObjDesc1->Common.Type) { case ACPI_TYPE_INTEGER: @@ -278,7 +378,7 @@ AcpiExDoConcatenate ( NewBuf = ACPI_MEM_CALLOCATE (ReturnDesc->Buffer.Length); if (!NewBuf) { - REPORT_ERROR + ACPI_REPORT_ERROR (("ExDoConcatenate: Buffer allocation failure\n")); Status = AE_NO_MEMORY; goto Cleanup; @@ -288,7 +388,7 @@ AcpiExDoConcatenate ( /* Convert the first integer */ - ThisInteger = ObjDesc->Integer.Value; + ThisInteger = ObjDesc1->Integer.Value; for (i = 0; i < IntegerSize; i++) { NewBuf[i] = (UINT8) ThisInteger; @@ -317,25 +417,25 @@ AcpiExDoConcatenate ( /* Operand0 is string */ - NewBuf = ACPI_MEM_ALLOCATE (ObjDesc->String.Length + + NewBuf = ACPI_MEM_ALLOCATE (ObjDesc1->String.Length + ObjDesc2->String.Length + 1); if (!NewBuf) { - REPORT_ERROR + ACPI_REPORT_ERROR (("ExDoConcatenate: String allocation failure\n")); Status = AE_NO_MEMORY; goto Cleanup; } - STRCPY (NewBuf, ObjDesc->String.Pointer); - STRCPY (NewBuf + ObjDesc->String.Length, - ObjDesc2->String.Pointer); + ACPI_STRCPY (NewBuf, ObjDesc1->String.Pointer); + ACPI_STRCPY (NewBuf + ObjDesc1->String.Length, + ObjDesc2->String.Pointer); /* Point the return object to the new string */ ReturnDesc->String.Pointer = NewBuf; - ReturnDesc->String.Length = ObjDesc->String.Length += - ObjDesc2->String.Length; + ReturnDesc->String.Length = ObjDesc1->String.Length + + ObjDesc2->String.Length; break; @@ -349,28 +449,28 @@ AcpiExDoConcatenate ( return (AE_NO_MEMORY); } - NewBuf = ACPI_MEM_ALLOCATE (ObjDesc->Buffer.Length + + NewBuf = ACPI_MEM_ALLOCATE (ObjDesc1->Buffer.Length + ObjDesc2->Buffer.Length); if (!NewBuf) { - REPORT_ERROR + ACPI_REPORT_ERROR (("ExDoConcatenate: Buffer allocation failure\n")); Status = AE_NO_MEMORY; goto Cleanup; } - MEMCPY (NewBuf, ObjDesc->Buffer.Pointer, - ObjDesc->Buffer.Length); - MEMCPY (NewBuf + ObjDesc->Buffer.Length, ObjDesc2->Buffer.Pointer, + ACPI_MEMCPY (NewBuf, ObjDesc1->Buffer.Pointer, + ObjDesc1->Buffer.Length); + ACPI_MEMCPY (NewBuf + ObjDesc1->Buffer.Length, ObjDesc2->Buffer.Pointer, ObjDesc2->Buffer.Length); /* * Point the return object to the new buffer */ - ReturnDesc->Buffer.Pointer = (UINT8 *) NewBuf; - ReturnDesc->Buffer.Length = ObjDesc->Buffer.Length + - ObjDesc2->Buffer.Length; + ReturnDesc->Buffer.Pointer = (UINT8 *) NewBuf; + ReturnDesc->Buffer.Length = ObjDesc1->Buffer.Length + + ObjDesc2->Buffer.Length; break; @@ -379,7 +479,6 @@ AcpiExDoConcatenate ( ReturnDesc = NULL; } - *ActualReturnDesc = ReturnDesc; return (AE_OK); @@ -397,7 +496,7 @@ Cleanup: * * PARAMETERS: Opcode - AML opcode * Operand0 - Integer operand #0 - * Operand0 - Integer operand #1 + * Operand1 - Integer operand #1 * * RETURN: Integer result of the operation * @@ -479,7 +578,7 @@ AcpiExDoMathOp ( * * PARAMETERS: Opcode - AML opcode * Operand0 - Integer operand #0 - * Operand0 - Integer operand #1 + * Operand1 - Integer operand #1 * * RETURN: TRUE/FALSE result of the operation * diff --git a/sys/contrib/dev/acpica/exmutex.c b/sys/contrib/dev/acpica/exmutex.c index a9f2d7281c7f..ae1ab35499ac 100644 --- a/sys/contrib/dev/acpica/exmutex.c +++ b/sys/contrib/dev/acpica/exmutex.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: exmutex - ASL Mutex Acquire/Release functions - * $Revision: 8 $ + * $Revision: 10 $ * *****************************************************************************/ @@ -10,7 +10,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -124,7 +124,7 @@ #include "acevents.h" #define _COMPONENT ACPI_EXECUTER - MODULE_NAME ("exmutex") + ACPI_MODULE_NAME ("exmutex") /******************************************************************************* @@ -230,7 +230,7 @@ AcpiExAcquireMutex ( ACPI_STATUS Status; - FUNCTION_TRACE_PTR ("ExAcquireMutex", ObjDesc); + ACPI_FUNCTION_TRACE_PTR ("ExAcquireMutex", ObjDesc); if (!ObjDesc) { @@ -304,7 +304,7 @@ AcpiExReleaseMutex ( ACPI_STATUS Status; - FUNCTION_TRACE ("ExReleaseMutex"); + ACPI_FUNCTION_TRACE ("ExReleaseMutex"); if (!ObjDesc) @@ -383,7 +383,7 @@ AcpiExReleaseAllMutexes ( ACPI_OPERAND_OBJECT *This; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); /* diff --git a/sys/contrib/dev/acpica/exnames.c b/sys/contrib/dev/acpica/exnames.c index 7df30007f9a7..43ab104c309d 100644 --- a/sys/contrib/dev/acpica/exnames.c +++ b/sys/contrib/dev/acpica/exnames.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: exnames - interpreter/scanner name load/execute - * $Revision: 83 $ + * $Revision: 90 $ * *****************************************************************************/ @@ -10,7 +10,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -123,7 +123,7 @@ #include "acnamesp.h" #define _COMPONENT ACPI_EXECUTER - MODULE_NAME ("exnames") + ACPI_MODULE_NAME ("exnames") /* AML Package Length encodings */ @@ -159,7 +159,7 @@ AcpiExAllocateNameString ( NATIVE_CHAR *NameString; UINT32 SizeNeeded; - FUNCTION_TRACE ("ExAllocateNameString"); + ACPI_FUNCTION_TRACE ("ExAllocateNameString"); /* @@ -167,7 +167,7 @@ AcpiExAllocateNameString ( * Also, one byte for the null terminator. * This may actually be somewhat longer than needed. */ - if (PrefixCount == (UINT32) -1) + if (PrefixCount == ACPI_UINT32_MAX) { /* Special case for root */ @@ -185,7 +185,7 @@ AcpiExAllocateNameString ( NameString = ACPI_MEM_ALLOCATE (SizeNeeded); if (!NameString) { - REPORT_ERROR (("ExAllocateNameString: Could not allocate size %d\n", SizeNeeded)); + ACPI_REPORT_ERROR (("ExAllocateNameString: Could not allocate size %d\n", SizeNeeded)); return_PTR (NULL); } @@ -193,11 +193,10 @@ AcpiExAllocateNameString ( /* Set up Root or Parent prefixes if needed */ - if (PrefixCount == (UINT32) -1) + if (PrefixCount == ACPI_UINT32_MAX) { *TempPtr++ = AML_ROOT_PREFIX; } - else { while (PrefixCount--) @@ -216,7 +215,6 @@ AcpiExAllocateNameString ( *TempPtr++ = AML_MULTI_NAME_PREFIX_OP; *TempPtr++ = (char) NumNameSegs; } - else if (2 == NumNameSegs) { /* Set up dual prefixes */ @@ -256,7 +254,7 @@ AcpiExNameSegment ( NATIVE_CHAR CharBuf[5]; - FUNCTION_TRACE ("ExNameSegment"); + ACPI_FUNCTION_TRACE ("ExNameSegment"); /* @@ -275,7 +273,7 @@ AcpiExNameSegment ( for (Index = 4; (Index > 0) && (AcpiUtValidAcpiCharacter (*AmlAddress)); - --Index) + Index--) { CharBuf[4 - Index] = *AmlAddress++; ACPI_DEBUG_PRINT ((ACPI_DB_LOAD, "%c\n", CharBuf[4 - Index])); @@ -292,18 +290,16 @@ AcpiExNameSegment ( if (NameString) { - STRCAT (NameString, CharBuf); + ACPI_STRCAT (NameString, CharBuf); ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Appended to - %s \n", NameString)); } - else { ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "No Name string - %s \n", CharBuf)); } } - else if (4 == Index) { /* @@ -315,7 +311,6 @@ AcpiExNameSegment ( CharBuf[0])); Status = AE_CTRL_PENDING; } - else { /* Segment started with one or more valid characters, but fewer than 4 */ @@ -342,10 +337,9 @@ AcpiExNameSegment ( * ******************************************************************************/ - ACPI_STATUS AcpiExGetNameString ( - ACPI_OBJECT_TYPE8 DataType, + ACPI_OBJECT_TYPE DataType, UINT8 *InAmlAddress, NATIVE_CHAR **OutNameString, UINT32 *OutNameLength) @@ -355,11 +349,10 @@ AcpiExGetNameString ( NATIVE_CHAR *NameString = NULL; UINT32 NumSegments; UINT32 PrefixCount = 0; - UINT8 Prefix = 0; BOOLEAN HasPrefix = FALSE; - FUNCTION_TRACE_PTR ("ExGetNameString", AmlAddress); + ACPI_FUNCTION_TRACE_PTR ("ExGetNameString", AmlAddress); if (INTERNAL_TYPE_REGION_FIELD == DataType || @@ -378,7 +371,6 @@ AcpiExGetNameString ( Status = AcpiExNameSegment (&AmlAddress, NameString); } } - else { /* @@ -387,17 +379,16 @@ AcpiExGetNameString ( */ switch (*AmlAddress) { - case AML_ROOT_PREFIX: - Prefix = *AmlAddress++; - ACPI_DEBUG_PRINT ((ACPI_DB_LOAD, "RootPrefix: %x\n", Prefix)); + ACPI_DEBUG_PRINT ((ACPI_DB_LOAD, "RootPrefix(\\) at %p\n", AmlAddress)); /* * Remember that we have a RootPrefix -- * see comment in AcpiExAllocateNameString() */ - PrefixCount = (UINT32) -1; + AmlAddress++; + PrefixCount = ACPI_UINT32_MAX; HasPrefix = TRUE; break; @@ -408,18 +399,21 @@ AcpiExGetNameString ( do { - Prefix = *AmlAddress++; - ACPI_DEBUG_PRINT ((ACPI_DB_LOAD, "ParentPrefix: %x\n", Prefix)); + ACPI_DEBUG_PRINT ((ACPI_DB_LOAD, "ParentPrefix (^) at %p\n", AmlAddress)); - ++PrefixCount; + AmlAddress++; + PrefixCount++; } while (*AmlAddress == AML_PARENT_PREFIX); + HasPrefix = TRUE; break; default: + /* Not a prefix character */ + break; } @@ -428,12 +422,11 @@ AcpiExGetNameString ( switch (*AmlAddress) { - case AML_DUAL_NAME_PREFIX: - Prefix = *AmlAddress++; - ACPI_DEBUG_PRINT ((ACPI_DB_LOAD, "DualNamePrefix: %x\n", Prefix)); + ACPI_DEBUG_PRINT ((ACPI_DB_LOAD, "DualNamePrefix at %p\n", AmlAddress)); + AmlAddress++; NameString = AcpiExAllocateNameString (PrefixCount, 2); if (!NameString) { @@ -455,12 +448,12 @@ AcpiExGetNameString ( case AML_MULTI_NAME_PREFIX_OP: - Prefix = *AmlAddress++; - ACPI_DEBUG_PRINT ((ACPI_DB_LOAD, "MultiNamePrefix: %x\n", Prefix)); + ACPI_DEBUG_PRINT ((ACPI_DB_LOAD, "MultiNamePrefix at %p\n", AmlAddress)); /* Fetch count of segments remaining in name path */ - NumSegments = *AmlAddress++; + AmlAddress++; + NumSegments = *AmlAddress; NameString = AcpiExAllocateNameString (PrefixCount, NumSegments); if (!NameString) @@ -471,12 +464,13 @@ AcpiExGetNameString ( /* Indicate that we processed a prefix */ + AmlAddress++; HasPrefix = TRUE; while (NumSegments && (Status = AcpiExNameSegment (&AmlAddress, NameString)) == AE_OK) { - --NumSegments; + NumSegments--; } break; @@ -486,7 +480,7 @@ AcpiExGetNameString ( /* NullName valid as of 8-12-98 ASL/AML Grammar Update */ - if (-1 == PrefixCount) + if (PrefixCount == ACPI_UINT32_MAX) { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "NameSeg is \"\\\" followed by NULL\n")); } @@ -517,21 +511,18 @@ AcpiExGetNameString ( Status = AcpiExNameSegment (&AmlAddress, NameString); break; - - } /* Switch (PeekOp ()) */ + } } - if (AE_CTRL_PENDING == Status && HasPrefix) { /* Ran out of segments after processing a prefix */ - REPORT_ERROR ( + ACPI_REPORT_ERROR ( ("ExDoName: Malformed Name at %p\n", NameString)); Status = AE_AML_BAD_NAME; } - *OutNameString = NameString; *OutNameLength = (UINT32) (AmlAddress - InAmlAddress); diff --git a/sys/contrib/dev/acpica/exoparg1.c b/sys/contrib/dev/acpica/exoparg1.c index baa2534d9476..e9b785b4aa28 100644 --- a/sys/contrib/dev/acpica/exoparg1.c +++ b/sys/contrib/dev/acpica/exoparg1.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: exoparg1 - AML execution - opcodes with 1 argument - * $Revision: 124 $ + * $Revision: 134 $ * *****************************************************************************/ @@ -10,7 +10,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -126,7 +126,7 @@ #define _COMPONENT ACPI_EXECUTER - MODULE_NAME ("exoparg1") + ACPI_MODULE_NAME ("exoparg1") /*! @@ -173,7 +173,7 @@ AcpiExOpcode_1A_0T_0R ( ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE_STR ("ExOpcode_1A_0T_0R", AcpiPsGetOpcodeName (WalkState->Opcode)); + ACPI_FUNCTION_TRACE_STR ("ExOpcode_1A_0T_0R", AcpiPsGetOpcodeName (WalkState->Opcode)); /* Examine the AML opcode */ @@ -200,13 +200,13 @@ AcpiExOpcode_1A_0T_0R ( case AML_SLEEP_OP: /* Sleep (MsecTime) */ - AcpiExSystemDoSuspend ((UINT32) Operand[0]->Integer.Value); + Status = AcpiExSystemDoSuspend ((UINT32) Operand[0]->Integer.Value); break; case AML_STALL_OP: /* Stall (UsecTime) */ - AcpiExSystemDoStall ((UINT32) Operand[0]->Integer.Value); + Status = AcpiExSystemDoStall ((UINT32) Operand[0]->Integer.Value); break; @@ -218,7 +218,7 @@ AcpiExOpcode_1A_0T_0R ( default: /* Unknown opcode */ - REPORT_ERROR (("AcpiExOpcode_1A_0T_0R: Unknown opcode %X\n", + ACPI_REPORT_ERROR (("AcpiExOpcode_1A_0T_0R: Unknown opcode %X\n", WalkState->Opcode)); Status = AE_AML_BAD_OPCODE; break; @@ -249,7 +249,7 @@ AcpiExOpcode_1A_1T_0R ( ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0]; - FUNCTION_TRACE_STR ("ExOpcode_1A_1T_0R", AcpiPsGetOpcodeName (WalkState->Opcode)); + ACPI_FUNCTION_TRACE_STR ("ExOpcode_1A_1T_0R", AcpiPsGetOpcodeName (WalkState->Opcode)); /* Examine the AML opcode */ @@ -258,12 +258,12 @@ AcpiExOpcode_1A_1T_0R ( { case AML_LOAD_OP: - Status = AcpiExLoadOp (Operand[0], Operand[1]); + Status = AcpiExLoadOp (Operand[0], Operand[1], WalkState); break; default: /* Unknown opcode */ - REPORT_ERROR (("AcpiExOpcode_1A_1T_0R: Unknown opcode %X\n", + ACPI_REPORT_ERROR (("AcpiExOpcode_1A_1T_0R: Unknown opcode %X\n", WalkState->Opcode)); Status = AE_AML_BAD_OPCODE; goto Cleanup; @@ -303,7 +303,7 @@ AcpiExOpcode_1A_1T_1R ( ACPI_INTEGER Digit; - FUNCTION_TRACE_STR ("ExOpcode_1A_1T_1R", AcpiPsGetOpcodeName (WalkState->Opcode)); + ACPI_FUNCTION_TRACE_STR ("ExOpcode_1A_1T_1R", AcpiPsGetOpcodeName (WalkState->Opcode)); /* Create a return object of type Integer for most opcodes */ @@ -416,7 +416,8 @@ AcpiExOpcode_1A_1T_1R ( if (Operand[0]->Integer.Value > ACPI_MAX_BCD_VALUE) { ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "BCD overflow: %8.8X%8.8X\n", - HIDWORD(Operand[0]->Integer.Value), LODWORD(Operand[0]->Integer.Value))); + ACPI_HIDWORD(Operand[0]->Integer.Value), + ACPI_LODWORD(Operand[0]->Integer.Value))); Status = AE_AML_NUMERIC_OVERFLOW; goto Cleanup; } @@ -437,7 +438,7 @@ AcpiExOpcode_1A_1T_1R ( if (Digit > 0) { - ReturnDesc->Integer.Value += (Temp32 << (i * 4)); + ReturnDesc->Integer.Value += ((ACPI_INTEGER) Temp32 << (i * 4)); } } break; @@ -480,7 +481,6 @@ AcpiExOpcode_1A_1T_1R ( ReturnDesc->Integer.Value = ACPI_INTEGER_MAX; goto Cleanup; - break; case AML_STORE_OP: /* Store (Source, Target) */ @@ -505,7 +505,6 @@ AcpiExOpcode_1A_1T_1R ( WalkState->ResultObj = Operand[0]; WalkState->Operands[0] = NULL; /* Prevent deletion */ return_ACPI_STATUS (Status); - break; /* @@ -513,8 +512,7 @@ AcpiExOpcode_1A_1T_1R ( */ case AML_COPY_OP: /* Copy (Source, Target) */ - Status = AE_NOT_IMPLEMENTED; - goto Cleanup; + Status = AcpiUtCopyIobjectToIobject (Operand[0], &ReturnDesc, WalkState); break; @@ -552,12 +550,11 @@ AcpiExOpcode_1A_1T_1R ( AcpiPsGetOpcodeName (WalkState->Opcode))); Status = AE_SUPPORT; goto Cleanup; - break; default: /* Unknown opcode */ - REPORT_ERROR (("AcpiExOpcode_1A_1T_1R: Unknown opcode %X\n", + ACPI_REPORT_ERROR (("AcpiExOpcode_1A_1T_1R: Unknown opcode %X\n", WalkState->Opcode)); Status = AE_AML_BAD_OPCODE; goto Cleanup; @@ -608,7 +605,7 @@ AcpiExOpcode_1A_0T_1R ( ACPI_INTEGER Value; - FUNCTION_TRACE_STR ("ExOpcode_1A_0T_0R", AcpiPsGetOpcodeName (WalkState->Opcode)); + ACPI_FUNCTION_TRACE_STR ("ExOpcode_1A_0T_0R", AcpiPsGetOpcodeName (WalkState->Opcode)); /* Examine the AML opcode */ @@ -633,10 +630,10 @@ AcpiExOpcode_1A_0T_1R ( /* * Since we are expecting a Reference operand, it - * can be either a Node or an internal object. + * can be either a NS Node or an internal object. */ ReturnDesc = Operand[0]; - if (VALID_DESCRIPTOR_TYPE (Operand[0], ACPI_DESC_TYPE_INTERNAL)) + if (ACPI_GET_DESCRIPTOR_TYPE (Operand[0]) == ACPI_DESC_TYPE_INTERNAL) { /* Internal reference object - prevent deletion */ @@ -731,7 +728,7 @@ AcpiExOpcode_1A_0T_1R ( default: - REPORT_ERROR (("AcpiExOpcode_1A_0T_1R/TypeOp: Internal error - Unknown Reference subtype %X\n", + ACPI_REPORT_ERROR (("AcpiExOpcode_1A_0T_1R/TypeOp: Internal error - Unknown Reference subtype %X\n", Operand[0]->Reference.Opcode)); Status = AE_AML_INTERNAL; goto Cleanup; @@ -773,7 +770,7 @@ AcpiExOpcode_1A_0T_1R ( case AML_SIZE_OF_OP: /* SizeOf (SourceObject) */ TempDesc = Operand[0]; - if (VALID_DESCRIPTOR_TYPE (Operand[0], ACPI_DESC_TYPE_NAMED)) + if (ACPI_GET_DESCRIPTOR_TYPE (Operand[0]) == ACPI_DESC_TYPE_NAMED) { TempDesc = AcpiNsGetAttachedObject ((ACPI_NAMESPACE_NODE *) Operand[0]); } @@ -836,56 +833,88 @@ AcpiExOpcode_1A_0T_1R ( break; - case AML_DEREF_OF_OP: /* DerefOf (ObjReference) */ + case AML_DEREF_OF_OP: /* DerefOf (ObjReference | String) */ - /* Check for a method local or argument */ + /* Check for a method local or argument, or standalone String */ - if (!VALID_DESCRIPTOR_TYPE (Operand[0], ACPI_DESC_TYPE_NAMED)) + if (ACPI_GET_DESCRIPTOR_TYPE (Operand[0]) != ACPI_DESC_TYPE_NAMED) { - /* - * Must resolve/dereference the local/arg reference first - */ - switch (Operand[0]->Reference.Opcode) + switch (ACPI_GET_OBJECT_TYPE (Operand[0])) { - case AML_LOCAL_OP: - case AML_ARG_OP: + case INTERNAL_TYPE_REFERENCE: + /* + * This is a DerefOf (LocalX | ArgX) + * + * Must resolve/dereference the local/arg reference first + */ + switch (Operand[0]->Reference.Opcode) + { + case AML_LOCAL_OP: + case AML_ARG_OP: + + /* Set Operand[0] to the value of the local/arg */ + + AcpiDsMethodDataGetValue (Operand[0]->Reference.Opcode, + Operand[0]->Reference.Offset, WalkState, &TempDesc); + + /* + * Delete our reference to the input object and + * point to the object just retrieved + */ + AcpiUtRemoveReference (Operand[0]); + Operand[0] = TempDesc; + break; + + default: + + /* Must be an Index op - handled below */ + break; + } + break; - /* Set Operand[0] to the value of the local/arg */ - AcpiDsMethodDataGetValue (Operand[0]->Reference.Opcode, - Operand[0]->Reference.Offset, WalkState, &TempDesc); + case ACPI_TYPE_STRING: /* - * Delete our reference to the input object and - * point to the object just retrieved + * This is a DerefOf (String). The string is a reference to a named ACPI object. + * + * 1) Find the owning Node + * 2) Dereference the node to an actual object. Could be a Field, so we nee + * to resolve the node to a value. */ - AcpiUtRemoveReference (Operand[0]); - Operand[0] = TempDesc; - break; + Status = AcpiNsGetNodeByPath (Operand[0]->String.Pointer, WalkState->ScopeInfo->Scope.Node, + ACPI_NS_SEARCH_PARENT, (ACPI_NAMESPACE_NODE **) &ReturnDesc); + if (ACPI_FAILURE (Status)) + { + goto Cleanup; + } + + Status = AcpiExResolveNodeToValue ((ACPI_NAMESPACE_NODE **) &ReturnDesc, WalkState); + goto Cleanup; + default: - /* Must be an Index op - handled below */ - break; + Status = AE_AML_OPERAND_TYPE; + goto Cleanup; } } /* Operand[0] may have changed from the code above */ - if (VALID_DESCRIPTOR_TYPE (Operand[0], ACPI_DESC_TYPE_NAMED)) + if (ACPI_GET_DESCRIPTOR_TYPE (Operand[0]) == ACPI_DESC_TYPE_NAMED) { - /* Get the actual object from the Node (This is the dereference) */ - + /* + * This is a DerefOf (ObjectReference) + * Get the actual object from the Node (This is the dereference). + * -- This case may only happen when a LocalX or ArgX is dereferenced above. + */ ReturnDesc = AcpiNsGetAttachedObject ((ACPI_NAMESPACE_NODE *) Operand[0]); - - /* Returning a pointer to the object, add another reference! */ - - AcpiUtAddReference (ReturnDesc); } else { /* - * This must be a reference produced by either the Index() or + * This must be a reference object produced by either the Index() or * RefOf() operator */ switch (Operand[0]->Reference.Opcode) @@ -915,7 +944,7 @@ AcpiExOpcode_1A_0T_1R ( goto Cleanup; } - /* + /* * Since we are returning the value of the buffer at the * indexed location, we don't need to add an additional * reference to the buffer itself. @@ -924,7 +953,7 @@ AcpiExOpcode_1A_0T_1R ( ReturnDesc->Integer.Value = TempDesc->Buffer.Pointer[Operand[0]->Reference.Offset]; break; - + case ACPI_TYPE_PACKAGE: @@ -977,7 +1006,6 @@ AcpiExOpcode_1A_0T_1R ( Status = AE_TYPE; goto Cleanup; - break; } } break; @@ -985,7 +1013,7 @@ AcpiExOpcode_1A_0T_1R ( default: - REPORT_ERROR (("AcpiExOpcode_1A_0T_1R: Unknown opcode %X\n", + ACPI_REPORT_ERROR (("AcpiExOpcode_1A_0T_1R: Unknown opcode %X\n", WalkState->Opcode)); Status = AE_AML_BAD_OPCODE; goto Cleanup; diff --git a/sys/contrib/dev/acpica/exoparg2.c b/sys/contrib/dev/acpica/exoparg2.c index 719116d02684..71c946b734ff 100644 --- a/sys/contrib/dev/acpica/exoparg2.c +++ b/sys/contrib/dev/acpica/exoparg2.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: exoparg2 - AML execution - opcodes with 2 arguments - * $Revision: 98 $ + * $Revision: 104 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -127,7 +127,7 @@ #define _COMPONENT ACPI_EXECUTER - MODULE_NAME ("exoparg2") + ACPI_MODULE_NAME ("exoparg2") /*! @@ -177,7 +177,7 @@ AcpiExOpcode_2A_0T_0R ( ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE_STR ("ExOpcode_2A_0T_0R", AcpiPsGetOpcodeName (WalkState->Opcode)); + ACPI_FUNCTION_TRACE_STR ("ExOpcode_2A_0T_0R", AcpiPsGetOpcodeName (WalkState->Opcode)); /* Examine the opcode */ @@ -191,39 +191,37 @@ AcpiExOpcode_2A_0T_0R ( Node = (ACPI_NAMESPACE_NODE *) Operand[0]; - /* The node must refer to a device or thermal zone */ + /* The node must refer to a device or thermal zone or processor */ - if (Node && Operand[1]) /* TBD: is this check necessary? */ + switch (Node->Type) { - switch (Node->Type) - { - case ACPI_TYPE_DEVICE: - case ACPI_TYPE_THERMAL: + case ACPI_TYPE_DEVICE: + case ACPI_TYPE_THERMAL: + case ACPI_TYPE_PROCESSOR: - /* - * Dispatch the notify to the appropriate handler - * NOTE: the request is queued for execution after this method - * completes. The notify handlers are NOT invoked synchronously - * from this thread -- because handlers may in turn run other - * control methods. - */ - Status = AcpiEvQueueNotifyRequest (Node, - (UINT32) Operand[1]->Integer.Value); - break; + /* + * Dispatch the notify to the appropriate handler + * NOTE: the request is queued for execution after this method + * completes. The notify handlers are NOT invoked synchronously + * from this thread -- because handlers may in turn run other + * control methods. + */ + Status = AcpiEvQueueNotifyRequest (Node, + (UINT32) Operand[1]->Integer.Value); + break; - default: - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Unexpected notify object type %X\n", - Node->Type)); + default: + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Unexpected notify object type %X\n", + Node->Type)); - Status = AE_AML_OPERAND_TYPE; - break; - } + Status = AE_AML_OPERAND_TYPE; + break; } break; default: - REPORT_ERROR (("AcpiExOpcode_2A_0T_0R: Unknown opcode %X\n", WalkState->Opcode)); + ACPI_REPORT_ERROR (("AcpiExOpcode_2A_0T_0R: Unknown opcode %X\n", WalkState->Opcode)); Status = AE_AML_BAD_OPCODE; } @@ -254,7 +252,7 @@ AcpiExOpcode_2A_2T_1R ( ACPI_STATUS Status; - FUNCTION_TRACE_STR ("ExOpcode_2A_2T_1R", AcpiPsGetOpcodeName (WalkState->Opcode)); + ACPI_FUNCTION_TRACE_STR ("ExOpcode_2A_2T_1R", AcpiPsGetOpcodeName (WalkState->Opcode)); /* @@ -291,11 +289,10 @@ AcpiExOpcode_2A_2T_1R ( default: - REPORT_ERROR (("AcpiExOpcode_2A_2T_1R: Unknown opcode %X\n", + ACPI_REPORT_ERROR (("AcpiExOpcode_2A_2T_1R: Unknown opcode %X\n", WalkState->Opcode)); Status = AE_AML_BAD_OPCODE; goto Cleanup; - break; } @@ -360,7 +357,7 @@ AcpiExOpcode_2A_1T_1R ( ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE_STR ("ExOpcode_2A_1T_1R", AcpiPsGetOpcodeName (WalkState->Opcode)); + ACPI_FUNCTION_TRACE_STR ("ExOpcode_2A_1T_1R", AcpiPsGetOpcodeName (WalkState->Opcode)); /* @@ -453,7 +450,7 @@ AcpiExOpcode_2A_1T_1R ( case AML_CONCAT_RES_OP: /* ConcatenateResTemplate (Buffer, Buffer, Result) (ACPI 2.0) */ - Status = AE_NOT_IMPLEMENTED; + Status = AcpiExConcatTemplate (Operand[0], Operand[1], &ReturnDesc, WalkState); break; @@ -540,12 +537,11 @@ AcpiExOpcode_2A_1T_1R ( WalkState->ResultObj = ReturnDesc; goto Cleanup; - break; default: - REPORT_ERROR (("AcpiExOpcode_2A_1T_1R: Unknown opcode %X\n", + ACPI_REPORT_ERROR (("AcpiExOpcode_2A_1T_1R: Unknown opcode %X\n", WalkState->Opcode)); Status = AE_AML_BAD_OPCODE; break; @@ -605,7 +601,7 @@ AcpiExOpcode_2A_0T_1R ( BOOLEAN LogicalResult = FALSE; - FUNCTION_TRACE_STR ("ExOpcode_2A_0T_1R", AcpiPsGetOpcodeName (WalkState->Opcode)); + ACPI_FUNCTION_TRACE_STR ("ExOpcode_2A_0T_1R", AcpiPsGetOpcodeName (WalkState->Opcode)); /* Create the internal return object */ @@ -655,10 +651,9 @@ AcpiExOpcode_2A_0T_1R ( default: - REPORT_ERROR (("AcpiExOpcode_2A_0T_1R: Unknown opcode %X\n", WalkState->Opcode)); + ACPI_REPORT_ERROR (("AcpiExOpcode_2A_0T_1R: Unknown opcode %X\n", WalkState->Opcode)); Status = AE_AML_BAD_OPCODE; goto Cleanup; - break; } diff --git a/sys/contrib/dev/acpica/exoparg3.c b/sys/contrib/dev/acpica/exoparg3.c index 52512022019c..4646fd923e3e 100644 --- a/sys/contrib/dev/acpica/exoparg3.c +++ b/sys/contrib/dev/acpica/exoparg3.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: exoparg3 - AML execution - opcodes with 3 arguments - * $Revision: 5 $ + * $Revision: 9 $ * *****************************************************************************/ @@ -10,7 +10,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -125,7 +125,7 @@ #define _COMPONENT ACPI_EXECUTER - MODULE_NAME ("exoparg3") + ACPI_MODULE_NAME ("exoparg3") /*! @@ -172,7 +172,7 @@ AcpiExOpcode_3A_0T_0R ( ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE_STR ("ExOpcode_3A_0T_0R", AcpiPsGetOpcodeName (WalkState->Opcode)); + ACPI_FUNCTION_TRACE_STR ("ExOpcode_3A_0T_0R", AcpiPsGetOpcodeName (WalkState->Opcode)); switch (WalkState->Opcode) @@ -207,11 +207,10 @@ AcpiExOpcode_3A_0T_0R ( default: - REPORT_ERROR (("AcpiExOpcode_3A_0T_0R: Unknown opcode %X\n", + ACPI_REPORT_ERROR (("AcpiExOpcode_3A_0T_0R: Unknown opcode %X\n", WalkState->Opcode)); Status = AE_AML_BAD_OPCODE; goto Cleanup; - break; } @@ -245,7 +244,7 @@ AcpiExOpcode_3A_1T_1R ( UINT32 Length; - FUNCTION_TRACE_STR ("ExOpcode_3A_1T_1R", AcpiPsGetOpcodeName (WalkState->Opcode)); + ACPI_FUNCTION_TRACE_STR ("ExOpcode_3A_1T_1R", AcpiPsGetOpcodeName (WalkState->Opcode)); switch (WalkState->Opcode) @@ -294,25 +293,23 @@ AcpiExOpcode_3A_1T_1R ( /* Copy the portion requested */ - MEMCPY (Buffer, Operand[0]->String.Pointer + Index, - Length); + ACPI_MEMCPY (Buffer, Operand[0]->String.Pointer + Index, + Length); /* Set the length of the new String/Buffer */ ReturnDesc->String.Pointer = Buffer; ReturnDesc->String.Length = Length; } - break; default: - REPORT_ERROR (("AcpiExOpcode_3A_0T_0R: Unknown opcode %X\n", + ACPI_REPORT_ERROR (("AcpiExOpcode_3A_0T_0R: Unknown opcode %X\n", WalkState->Opcode)); Status = AE_AML_BAD_OPCODE; goto Cleanup; - break; } /* Store the result in the target */ diff --git a/sys/contrib/dev/acpica/exoparg6.c b/sys/contrib/dev/acpica/exoparg6.c index 15baa18fc3b8..b6c0b59b9c91 100644 --- a/sys/contrib/dev/acpica/exoparg6.c +++ b/sys/contrib/dev/acpica/exoparg6.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: exoparg6 - AML execution - opcodes with 6 arguments - * $Revision: 6 $ + * $Revision: 10 $ * *****************************************************************************/ @@ -10,7 +10,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -125,7 +125,7 @@ #define _COMPONENT ACPI_EXECUTER - MODULE_NAME ("exoparg6") + ACPI_MODULE_NAME ("exoparg6") /*! @@ -257,7 +257,7 @@ AcpiExOpcode_6A_0T_1R ( ACPI_OPERAND_OBJECT *ThisElement; - FUNCTION_TRACE_STR ("ExOpcode_6A_0T_1R", AcpiPsGetOpcodeName (WalkState->Opcode)); + ACPI_FUNCTION_TRACE_STR ("ExOpcode_6A_0T_1R", AcpiPsGetOpcodeName (WalkState->Opcode)); switch (WalkState->Opcode) @@ -348,18 +348,16 @@ AcpiExOpcode_6A_0T_1R ( case AML_LOAD_TABLE_OP: - Status = AE_NOT_IMPLEMENTED; - goto Cleanup; + Status = AcpiExLoadTableOp (WalkState, &ReturnDesc); break; default: - REPORT_ERROR (("AcpiExOpcode_3A_0T_0R: Unknown opcode %X\n", + ACPI_REPORT_ERROR (("AcpiExOpcode_3A_0T_0R: Unknown opcode %X\n", WalkState->Opcode)); Status = AE_AML_BAD_OPCODE; goto Cleanup; - break; } diff --git a/sys/contrib/dev/acpica/exprep.c b/sys/contrib/dev/acpica/exprep.c index 98660e115c1d..24d73c7efd7d 100644 --- a/sys/contrib/dev/acpica/exprep.c +++ b/sys/contrib/dev/acpica/exprep.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: exprep - ACPI AML (p-code) execution - field prep utilities - * $Revision: 109 $ + * $Revision: 113 $ * *****************************************************************************/ @@ -10,7 +10,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -125,7 +125,7 @@ #define _COMPONENT ACPI_EXECUTER - MODULE_NAME ("exprep") + ACPI_MODULE_NAME ("exprep") /******************************************************************************* @@ -149,12 +149,12 @@ AcpiExDecodeFieldAccess ( UINT32 *ReturnByteAlignment) { UINT32 Access; - UINT16 Length; + UINT32 Length; UINT8 ByteAlignment; UINT8 BitLength; - PROC_NAME ("ExDecodeFieldAccess"); + ACPI_FUNCTION_NAME ("ExDecodeFieldAccess"); Access = (FieldFlags & AML_FIELD_ACCESS_TYPE_MASK); @@ -188,7 +188,7 @@ AcpiExDecodeFieldAccess ( { /* Larger than Qword - just use byte-size chunks */ - BitLength = 8; + BitLength = 8; } break; @@ -274,14 +274,8 @@ AcpiExPrepCommonFieldObject ( UINT32 NearestByteAddress; - FUNCTION_TRACE ("ExPrepCommonFieldObject"); - + ACPI_FUNCTION_TRACE ("ExPrepCommonFieldObject"); - if (FieldBitLength > ACPI_UINT16_MAX) - { - REPORT_ERROR (("Field size too long (> 0xFFFF), not supported\n")); - return_ACPI_STATUS (AE_SUPPORT); - } /* * Note: the structure being initialized is the @@ -290,20 +284,20 @@ AcpiExPrepCommonFieldObject ( */ ObjDesc->CommonField.FieldFlags = FieldFlags; ObjDesc->CommonField.Attribute = FieldAttribute; - ObjDesc->CommonField.BitLength = (UINT16) FieldBitLength; + ObjDesc->CommonField.BitLength = FieldBitLength; /* * Decode the access type so we can compute offsets. The access type gives * two pieces of information - the width of each field access and the - * necessary ByteAlignment (address granularity) of the access. - * + * necessary ByteAlignment (address granularity) of the access. + * * For AnyAcc, the AccessBitWidth is the largest width that is both necessary * and possible in an attempt to access the whole field in one - * I/O operation. However, for AnyAcc, the ByteAlignment is always one byte. - * + * I/O operation. However, for AnyAcc, the ByteAlignment is always one byte. + * * For all Buffer Fields, the ByteAlignment is always one byte. * - * For all other access types (Byte, Word, Dword, Qword), the Bitwidth is the + * For all other access types (Byte, Word, Dword, Qword), the Bitwidth is the * same (equivalent) as the ByteAlignment. */ AccessBitWidth = AcpiExDecodeFieldAccess (ObjDesc, FieldFlags, &ByteAlignment); @@ -314,8 +308,7 @@ AcpiExPrepCommonFieldObject ( /* Setup width (access granularity) fields */ - ObjDesc->CommonField.AccessBitWidth = (UINT8) AccessBitWidth; /* 8, 16, 32, 64 */ - ObjDesc->CommonField.AccessByteWidth = (UINT8) DIV_8 (AccessBitWidth); /* 1, 2, 4, 8 */ + ObjDesc->CommonField.AccessByteWidth = (UINT8) ACPI_DIV_8 (AccessBitWidth); /* 1, 2, 4, 8 */ /* * BaseByteOffset is the address of the start of the field within the region. It is @@ -324,14 +317,14 @@ AcpiExPrepCommonFieldObject ( * Note: ByteAlignment is always either equal to the AccessBitWidth or 8 (Byte access), * and it defines the addressing granularity of the parent region or buffer. */ - NearestByteAddress = ROUND_BITS_DOWN_TO_BYTES (FieldBitPosition); - ObjDesc->CommonField.BaseByteOffset = ROUND_DOWN (NearestByteAddress, ByteAlignment); + NearestByteAddress = ACPI_ROUND_BITS_DOWN_TO_BYTES (FieldBitPosition); + ObjDesc->CommonField.BaseByteOffset = ACPI_ROUND_DOWN (NearestByteAddress, ByteAlignment); /* * StartFieldBitOffset is the offset of the first bit of the field within a field datum. */ - ObjDesc->CommonField.StartFieldBitOffset = (UINT8) (FieldBitPosition - - MUL_8 (ObjDesc->CommonField.BaseByteOffset)); + ObjDesc->CommonField.StartFieldBitOffset = (UINT8) (FieldBitPosition - + ACPI_MUL_8 (ObjDesc->CommonField.BaseByteOffset)); /* * Valid bits -- the number of bits that compose a partial datum, @@ -388,7 +381,7 @@ AcpiExPrepFieldValue ( ACPI_STATUS Status; - FUNCTION_TRACE ("ExPrepFieldValue"); + ACPI_FUNCTION_TRACE ("ExPrepFieldValue"); /* Parameter validation */ @@ -404,7 +397,7 @@ AcpiExPrepFieldValue ( Type = AcpiNsGetType (Info->RegionNode); if (Type != ACPI_TYPE_REGION) { - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Needed Region, found type %X %s\n", Type, AcpiUtGetTypeName (Type))); @@ -423,7 +416,7 @@ AcpiExPrepFieldValue ( /* Initialize areas of the object that are common to all fields */ ObjDesc->CommonField.Node = Info->FieldNode; - Status = AcpiExPrepCommonFieldObject (ObjDesc, Info->FieldFlags, + Status = AcpiExPrepCommonFieldObject (ObjDesc, Info->FieldFlags, Info->Attribute, Info->FieldBitPosition, Info->FieldBitLength); if (ACPI_FAILURE (Status)) { @@ -443,10 +436,10 @@ AcpiExPrepFieldValue ( AcpiUtAddReference (ObjDesc->Field.RegionObj); - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, + ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "RegionField: Bitoff=%X Off=%X Gran=%X Region %p\n", ObjDesc->Field.StartFieldBitOffset, ObjDesc->Field.BaseByteOffset, - ObjDesc->Field.AccessBitWidth, ObjDesc->Field.RegionObj)); + ObjDesc->Field.AccessByteWidth, ObjDesc->Field.RegionObj)); break; @@ -463,7 +456,7 @@ AcpiExPrepFieldValue ( ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Bank Field: BitOff=%X Off=%X Gran=%X Region %p BankReg %p\n", ObjDesc->BankField.StartFieldBitOffset, ObjDesc->BankField.BaseByteOffset, - ObjDesc->Field.AccessBitWidth, ObjDesc->BankField.RegionObj, + ObjDesc->Field.AccessByteWidth, ObjDesc->BankField.RegionObj, ObjDesc->BankField.BankObj)); break; @@ -473,7 +466,7 @@ AcpiExPrepFieldValue ( ObjDesc->IndexField.IndexObj = AcpiNsGetAttachedObject (Info->RegisterNode); ObjDesc->IndexField.DataObj = AcpiNsGetAttachedObject (Info->DataRegisterNode); ObjDesc->IndexField.Value = (UINT32) (Info->FieldBitPosition / - ObjDesc->Field.AccessBitWidth); + ACPI_MUL_8 (ObjDesc->Field.AccessByteWidth)); if (!ObjDesc->IndexField.DataObj || !ObjDesc->IndexField.IndexObj) { @@ -488,7 +481,7 @@ AcpiExPrepFieldValue ( ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "IndexField: bitoff=%X off=%X gran=%X Index %p Data %p\n", ObjDesc->IndexField.StartFieldBitOffset, ObjDesc->IndexField.BaseByteOffset, - ObjDesc->Field.AccessBitWidth, ObjDesc->IndexField.IndexObj, + ObjDesc->Field.AccessByteWidth, ObjDesc->IndexField.IndexObj, ObjDesc->IndexField.DataObj)); break; } @@ -498,10 +491,10 @@ AcpiExPrepFieldValue ( * preserving the current type of that NamedObj. */ Status = AcpiNsAttachObject (Info->FieldNode, ObjDesc, - (UINT8) AcpiNsGetType (Info->FieldNode)); + AcpiNsGetType (Info->FieldNode)); ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "set NamedObj %p (%4.4s) val = %p\n", - Info->FieldNode, (char*)&(Info->FieldNode->Name), ObjDesc)); + Info->FieldNode, (char *) &(Info->FieldNode->Name), ObjDesc)); /* Remove local reference to the object */ diff --git a/sys/contrib/dev/acpica/exregion.c b/sys/contrib/dev/acpica/exregion.c index ac53967a23a8..4e8dedd981a7 100644 --- a/sys/contrib/dev/acpica/exregion.c +++ b/sys/contrib/dev/acpica/exregion.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: exregion - ACPI default OpRegion (address space) handlers - * $Revision: 64 $ + * $Revision: 71 $ * *****************************************************************************/ @@ -10,7 +10,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -127,7 +127,7 @@ #define _COMPONENT ACPI_EXECUTER - MODULE_NAME ("exregion") + ACPI_MODULE_NAME ("exregion") /******************************************************************************* @@ -163,7 +163,7 @@ AcpiExSystemMemorySpaceHandler ( UINT32 Length; - FUNCTION_TRACE ("ExSystemMemorySpaceHandler"); + ACPI_FUNCTION_TRACE ("ExSystemMemorySpaceHandler"); /* Validate and translate the bit width */ @@ -190,7 +190,6 @@ AcpiExSystemMemorySpaceHandler ( ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Invalid SystemMemory width %d\n", BitWidth)); return_ACPI_STATUS (AE_AML_OPERAND_VALUE); - break; } @@ -242,7 +241,7 @@ AcpiExSystemMemorySpaceHandler ( ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "SystemMemory %d (%d width) Address=%8.8X%8.8X\n", Function, BitWidth, - HIDWORD (Address), LODWORD (Address))); + ACPI_HIDWORD (Address), ACPI_LODWORD (Address))); /* Perform the memory read or write */ @@ -250,6 +249,7 @@ AcpiExSystemMemorySpaceHandler ( { case ACPI_READ: + *Value = 0; switch (BitWidth) { case 8: @@ -257,15 +257,15 @@ AcpiExSystemMemorySpaceHandler ( break; case 16: - MOVE_UNALIGNED16_TO_32 (Value, LogicalAddrPtr); + ACPI_MOVE_UNALIGNED16_TO_16 (Value, LogicalAddrPtr); break; case 32: - MOVE_UNALIGNED32_TO_32 (Value, LogicalAddrPtr); + ACPI_MOVE_UNALIGNED32_TO_32 (Value, LogicalAddrPtr); break; case 64: - MOVE_UNALIGNED64_TO_64 (Value, LogicalAddrPtr); + ACPI_MOVE_UNALIGNED64_TO_64 (Value, LogicalAddrPtr); break; } break; @@ -279,15 +279,15 @@ AcpiExSystemMemorySpaceHandler ( break; case 16: - MOVE_UNALIGNED16_TO_16 (LogicalAddrPtr, Value); + ACPI_MOVE_UNALIGNED16_TO_16 (LogicalAddrPtr, Value); break; case 32: - MOVE_UNALIGNED32_TO_32 (LogicalAddrPtr, Value); + ACPI_MOVE_UNALIGNED32_TO_32 (LogicalAddrPtr, Value); break; case 64: - MOVE_UNALIGNED64_TO_64 (LogicalAddrPtr, Value); + ACPI_MOVE_UNALIGNED64_TO_64 (LogicalAddrPtr, Value); break; } break; @@ -331,12 +331,12 @@ AcpiExSystemIoSpaceHandler ( ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE ("ExSystemIoSpaceHandler"); + ACPI_FUNCTION_TRACE ("ExSystemIoSpaceHandler"); ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "SystemIO %d (%d width) Address=%8.8X%8.8X\n", Function, BitWidth, - HIDWORD (Address), LODWORD (Address))); + ACPI_HIDWORD (Address), ACPI_LODWORD (Address))); /* Decode the function parameter */ @@ -394,7 +394,7 @@ AcpiExPciConfigSpaceHandler ( UINT16 PciRegister; - FUNCTION_TRACE ("ExPciConfigSpaceHandler"); + ACPI_FUNCTION_TRACE ("ExPciConfigSpaceHandler"); /* @@ -410,7 +410,7 @@ AcpiExPciConfigSpaceHandler ( * */ PciId = (ACPI_PCI_ID *) RegionContext; - PciRegister = (UINT16) Address; + PciRegister = (UINT16) (ACPI_SIZE) Address; ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "PciConfig %d (%d) Seg(%04x) Bus(%04x) Dev(%04x) Func(%04x) Reg(%04x)\n", @@ -470,7 +470,7 @@ AcpiExCmosSpaceHandler ( ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE ("ExCmosSpaceHandler"); + ACPI_FUNCTION_TRACE ("ExCmosSpaceHandler"); return_ACPI_STATUS (Status); @@ -507,9 +507,70 @@ AcpiExPciBarSpaceHandler ( ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE ("ExPciBarSpaceHandler"); + ACPI_FUNCTION_TRACE ("ExPciBarSpaceHandler"); + + + return_ACPI_STATUS (Status); +} + + +/******************************************************************************* + * + * FUNCTION: AcpiExDataTableSpaceHandler + * + * PARAMETERS: Function - Read or Write operation + * Address - Where in the space to read or write + * BitWidth - Field width in bits (8, 16, or 32) + * Value - Pointer to in or out value + * HandlerContext - Pointer to Handler's context + * RegionContext - Pointer to context specific to the + * accessed region + * + * RETURN: Status + * + * DESCRIPTION: Handler for the Data Table address space (Op Region) + * + ******************************************************************************/ + +ACPI_STATUS +AcpiExDataTableSpaceHandler ( + UINT32 Function, + ACPI_PHYSICAL_ADDRESS Address, + UINT32 BitWidth, + ACPI_INTEGER *Value, + void *HandlerContext, + void *RegionContext) +{ + ACPI_STATUS Status = AE_OK; + UINT32 ByteWidth = ACPI_DIV_8 (BitWidth); + UINT32 i; + char *LogicalAddrPtr; + + + ACPI_FUNCTION_TRACE ("ExDataTableSpaceHandler"); + + + LogicalAddrPtr = ACPI_PHYSADDR_TO_PTR (Address); + + + /* Perform the memory read or write */ + switch (Function) + { + case ACPI_READ: + + for (i = 0; i < ByteWidth; i++) + { + ((char *) Value) [i] = LogicalAddrPtr[i]; + } + break; + + case ACPI_WRITE: + + return_ACPI_STATUS (AE_SUPPORT); + } return_ACPI_STATUS (Status); } + diff --git a/sys/contrib/dev/acpica/exresnte.c b/sys/contrib/dev/acpica/exresnte.c index 71b56ef8718e..3219f73d9aec 100644 --- a/sys/contrib/dev/acpica/exresnte.c +++ b/sys/contrib/dev/acpica/exresnte.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: exresnte - AML Interpreter object resolution - * $Revision: 45 $ + * $Revision: 49 $ * *****************************************************************************/ @@ -10,7 +10,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -128,7 +128,7 @@ #define _COMPONENT ACPI_EXECUTER - MODULE_NAME ("exresnte") + ACPI_MODULE_NAME ("exresnte") /******************************************************************************* @@ -167,11 +167,11 @@ AcpiExResolveNodeToValue ( ACPI_OPERAND_OBJECT *SourceDesc; ACPI_OPERAND_OBJECT *ObjDesc = NULL; ACPI_NAMESPACE_NODE *Node; - ACPI_OBJECT_TYPE8 EntryType; + ACPI_OBJECT_TYPE EntryType; ACPI_INTEGER TempVal; - FUNCTION_TRACE ("ExResolveNodeToValue"); + ACPI_FUNCTION_TRACE ("ExResolveNodeToValue"); /* @@ -310,7 +310,6 @@ AcpiExResolveNodeToValue ( Node)); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); /* Cannot be AE_TYPE */ - break; /* diff --git a/sys/contrib/dev/acpica/exresolv.c b/sys/contrib/dev/acpica/exresolv.c index e2cb52c5e557..17a0fc7e74dc 100644 --- a/sys/contrib/dev/acpica/exresolv.c +++ b/sys/contrib/dev/acpica/exresolv.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: exresolv - AML Interpreter object resolution - * $Revision: 103 $ + * $Revision: 106 $ * *****************************************************************************/ @@ -10,7 +10,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -128,8 +128,7 @@ #define _COMPONENT ACPI_EXECUTER - MODULE_NAME ("exresolv") - + ACPI_MODULE_NAME ("exresolv") /******************************************************************************* @@ -155,7 +154,7 @@ AcpiExResolveToValue ( ACPI_STATUS Status; - FUNCTION_TRACE_PTR ("ExResolveToValue", StackPtr); + ACPI_FUNCTION_TRACE_PTR ("ExResolveToValue", StackPtr); if (!StackPtr || !*StackPtr) @@ -169,7 +168,7 @@ AcpiExResolveToValue ( * 1) A valid ACPI_OPERAND_OBJECT, or * 2) A ACPI_NAMESPACE_NODE (NamedObj) */ - if (VALID_DESCRIPTOR_TYPE (*StackPtr, ACPI_DESC_TYPE_INTERNAL)) + if (ACPI_GET_DESCRIPTOR_TYPE (*StackPtr) == ACPI_DESC_TYPE_INTERNAL) { Status = AcpiExResolveObjectToValue (StackPtr, WalkState); if (ACPI_FAILURE (Status)) @@ -182,7 +181,7 @@ AcpiExResolveToValue ( * Object on the stack may have changed if AcpiExResolveObjectToValue() * was called (i.e., we can't use an _else_ here.) */ - if (VALID_DESCRIPTOR_TYPE (*StackPtr, ACPI_DESC_TYPE_NAMED)) + if (ACPI_GET_DESCRIPTOR_TYPE (*StackPtr) == ACPI_DESC_TYPE_NAMED) { Status = AcpiExResolveNodeToValue ((ACPI_NAMESPACE_NODE **) StackPtr, WalkState); @@ -224,7 +223,7 @@ AcpiExResolveObjectToValue ( UINT16 Opcode; - FUNCTION_TRACE ("ExResolveObjectToValue"); + ACPI_FUNCTION_TRACE ("ExResolveObjectToValue"); StackDesc = *StackPtr; @@ -397,7 +396,7 @@ AcpiExResolveObjectToValue ( break; /* case INTERNAL_TYPE_REFERENCE */ /* - * These cases may never happen here, but just in case.. + * These cases may never happen here, but just in case.. */ case ACPI_TYPE_BUFFER_FIELD: case INTERNAL_TYPE_REGION_FIELD: diff --git a/sys/contrib/dev/acpica/exresop.c b/sys/contrib/dev/acpica/exresop.c index a9283f2ee7e4..f5130539cff1 100644 --- a/sys/contrib/dev/acpica/exresop.c +++ b/sys/contrib/dev/acpica/exresop.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: exresop - AML Interpreter operand/object resolution - * $Revision: 41 $ + * $Revision: 47 $ * *****************************************************************************/ @@ -10,7 +10,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -128,7 +128,7 @@ #define _COMPONENT ACPI_EXECUTER - MODULE_NAME ("exresop") + ACPI_MODULE_NAME ("exresop") /******************************************************************************* @@ -151,7 +151,7 @@ AcpiExCheckObjectType ( ACPI_OBJECT_TYPE ThisType, void *Object) { - PROC_NAME ("ExCheckObjectType"); + ACPI_FUNCTION_NAME ("ExCheckObjectType"); if (TypeNeeded == ACPI_TYPE_ANY) @@ -179,18 +179,21 @@ AcpiExCheckObjectType ( * * FUNCTION: AcpiExResolveOperands * - * PARAMETERS: Opcode Opcode being interpreted - * StackPtr Top of operand stack + * PARAMETERS: Opcode - Opcode being interpreted + * StackPtr - Pointer to the operand stack to be + * resolved + * WalkState - Current stateu * * RETURN: Status * - * DESCRIPTION: Convert stack entries to required types + * DESCRIPTION: Convert multiple input operands to the types required by the + * target operator. * - * Each nibble in ArgTypes represents one required operand - * and indicates the required Type: + * Each nibble (actually 5 bits) in ArgTypes represents one required + * operand and indicates the required Type: * - * The corresponding stack entry will be converted to the - * required type if possible, else return an exception + * The corresponding operand will be converted to the required type if + * possible, otherwise we abort with an exception. * ******************************************************************************/ @@ -210,7 +213,7 @@ AcpiExResolveOperands ( ACPI_OBJECT_TYPE TypeNeeded; - FUNCTION_TRACE_U32 ("ExResolveOperands", Opcode); + ACPI_FUNCTION_TRACE_U32 ("ExResolveOperands", Opcode); OpInfo = AcpiPsGetOpcodeInfo (Opcode); @@ -219,7 +222,6 @@ AcpiExResolveOperands ( return_ACPI_STATUS (AE_AML_BAD_OPCODE); } - ArgTypes = OpInfo->RuntimeArgs; if (ArgTypes == ARGI_INVALID_OPCODE) { @@ -232,7 +234,6 @@ AcpiExResolveOperands ( ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Opcode %X OperandTypes=%X \n", Opcode, ArgTypes)); - /* * Normal exit is with (ArgTypes == 0) at end of argument list. * Function will return an exception from within the loop upon @@ -256,15 +257,18 @@ AcpiExResolveOperands ( /* Decode the descriptor type */ - if (VALID_DESCRIPTOR_TYPE (ObjDesc, ACPI_DESC_TYPE_NAMED)) + switch (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc)) { + case ACPI_DESC_TYPE_NAMED: + /* Node */ ObjectType = ((ACPI_NAMESPACE_NODE *) ObjDesc)->Type; - } + break; + + + case ACPI_DESC_TYPE_INTERNAL: - else if (VALID_DESCRIPTOR_TYPE (ObjDesc, ACPI_DESC_TYPE_INTERNAL)) - { /* ACPI internal object */ ObjectType = ObjDesc->Common.Type; @@ -290,7 +294,6 @@ AcpiExResolveOperands ( return_ACPI_STATUS (AE_AML_BAD_OPCODE); } - switch (ObjDesc->Reference.Opcode) { case AML_ZERO_OP: @@ -303,28 +306,28 @@ AcpiExResolveOperands ( case AML_LOCAL_OP: case AML_REVISION_OP: - DEBUG_ONLY_MEMBERS (ACPI_DEBUG_PRINT ((ACPI_DB_INFO, + ACPI_DEBUG_ONLY_MEMBERS (ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Reference Opcode: %s\n", OpInfo->Name))); break; default: - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Reference Opcode: Unknown [%02x]\n", ObjDesc->Reference.Opcode)); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - break; } } - } + break; + + + default: - else - { /* Invalid descriptor */ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Bad descriptor type %X in Obj %p\n", - ObjDesc->Common.DataType, ObjDesc)); + ACPI_GET_DESCRIPTOR_TYPE (ObjDesc), ObjDesc)); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } @@ -336,25 +339,37 @@ AcpiExResolveOperands ( ThisArgType = GET_CURRENT_ARG_TYPE (ArgTypes); INCREMENT_ARG_LIST (ArgTypes); - /* * Handle cases where the object does not need to be * resolved to a value */ switch (ThisArgType) { + case ARGI_REF_OR_STRING: /* Can be a String or Reference */ - case ARGI_REFERENCE: /* References */ + if ((ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_INTERNAL) && + (ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_STRING)) + { + /* + * String found - the string references a named object and must be + * resolved to a node + */ + goto NextOperand; + } + + /* Else not a string - fall through to the normal Reference case below */ + + case ARGI_REFERENCE: /* References: */ case ARGI_INTEGER_REF: case ARGI_OBJECT_REF: case ARGI_DEVICE_REF: - case ARGI_TARGETREF: /* TBD: must implement implicit conversion rules before store */ + case ARGI_TARGETREF: /* Allows implicit conversion rules before store */ case ARGI_FIXED_TARGET: /* No implicit conversion before store to target */ - case ARGI_SIMPLE_TARGET: /* Name, Local, or Arg - no implicit conversion */ + case ARGI_SIMPLE_TARGET: /* Name, Local, or Arg - no implicit conversion */ /* Need an operand of type INTERNAL_TYPE_REFERENCE */ - if (VALID_DESCRIPTOR_TYPE (ObjDesc, ACPI_DESC_TYPE_NAMED)) /* direct name ptr OK as-is */ + if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_NAMED) /* Node (name) ptr OK as-is */ { goto NextOperand; } @@ -366,7 +381,6 @@ AcpiExResolveOperands ( return_ACPI_STATUS (Status); } - if (AML_NAME_OP == ObjDesc->Reference.Opcode) { /* @@ -377,9 +391,7 @@ AcpiExResolveOperands ( AcpiUtRemoveReference (ObjDesc); (*StackPtr) = TempNode; } - goto NextOperand; - break; case ARGI_ANYTYPE: @@ -409,7 +421,6 @@ AcpiExResolveOperands ( return_ACPI_STATUS (Status); } - /* * Check the resulting object (value) type */ @@ -476,7 +487,7 @@ AcpiExResolveOperands ( { if (Status == AE_TYPE) { - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Needed [Integer/String/Buffer], found [%s] %p\n", AcpiUtGetTypeName ((*StackPtr)->Common.Type), *StackPtr)); @@ -485,9 +496,7 @@ AcpiExResolveOperands ( return_ACPI_STATUS (Status); } - goto NextOperand; - break; case ARGI_BUFFER: @@ -501,7 +510,7 @@ AcpiExResolveOperands ( { if (Status == AE_TYPE) { - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Needed [Integer/String/Buffer], found [%s] %p\n", AcpiUtGetTypeName ((*StackPtr)->Common.Type), *StackPtr)); @@ -510,9 +519,7 @@ AcpiExResolveOperands ( return_ACPI_STATUS (Status); } - goto NextOperand; - break; case ARGI_STRING: @@ -526,7 +533,7 @@ AcpiExResolveOperands ( { if (Status == AE_TYPE) { - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Needed [Integer/String/Buffer], found [%s] %p\n", AcpiUtGetTypeName ((*StackPtr)->Common.Type), *StackPtr)); @@ -535,87 +542,115 @@ AcpiExResolveOperands ( return_ACPI_STATUS (Status); } - goto NextOperand; - break; case ARGI_COMPUTEDATA: /* Need an operand of type INTEGER, STRING or BUFFER */ - if ((ACPI_TYPE_INTEGER != (*StackPtr)->Common.Type) && - (ACPI_TYPE_STRING != (*StackPtr)->Common.Type) && - (ACPI_TYPE_BUFFER != (*StackPtr)->Common.Type)) + switch ((*StackPtr)->Common.Type) { - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, + case ACPI_TYPE_INTEGER: + case ACPI_TYPE_STRING: + case ACPI_TYPE_BUFFER: + + /* Valid operand */ + break; + + default: + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Needed [Integer/String/Buffer], found [%s] %p\n", AcpiUtGetTypeName ((*StackPtr)->Common.Type), *StackPtr)); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } goto NextOperand; - break; case ARGI_DATAOBJECT: /* * ARGI_DATAOBJECT is only used by the SizeOf operator. + * Need a buffer, string, package, or Node reference. * - * The ACPI specification allows SizeOf to return the size of - * a Buffer, String or Package. However, the MS ACPI.SYS AML - * Interpreter also allows an Node reference to return without - * error with a size of 4. - */ - - /* Need a buffer, string, package or Node reference */ - - if (((*StackPtr)->Common.Type != ACPI_TYPE_BUFFER) && - ((*StackPtr)->Common.Type != ACPI_TYPE_STRING) && - ((*StackPtr)->Common.Type != ACPI_TYPE_PACKAGE) && - ((*StackPtr)->Common.Type != INTERNAL_TYPE_REFERENCE)) - { - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "Needed [Buf/Str/Pkg/Ref], found [%s] %p\n", - AcpiUtGetTypeName ((*StackPtr)->Common.Type), *StackPtr)); - - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - /* - * If this is a reference, only allow a reference to an Node. + * The only reference allowed here is a direct reference to + * a namespace node. */ if ((*StackPtr)->Common.Type == INTERNAL_TYPE_REFERENCE) { if (!(*StackPtr)->Reference.Node) { - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Needed [Node Reference], found [%p]\n", *StackPtr)); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } + + /* Get the object attached to the node */ + + TempNode = AcpiNsGetAttachedObject ((*StackPtr)->Reference.Node); + if (!TempNode) + { + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, + "Node [%p] has no attached object\n", + (*StackPtr)->Reference.Node)); + + return_ACPI_STATUS (AE_AML_OPERAND_TYPE); + } + + /* + * Swap the reference object with the node's object. Must add + * a reference to the node object, and remove a reference from + * the original reference object. + */ + AcpiUtAddReference (TempNode); + AcpiUtRemoveReference (*StackPtr); + (*StackPtr) = TempNode; + } + + /* Need a buffer, string, package */ + + switch ((*StackPtr)->Common.Type) + { + case ACPI_TYPE_PACKAGE: + case ACPI_TYPE_STRING: + case ACPI_TYPE_BUFFER: + + /* Valid operand */ + break; + + default: + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, + "Needed [Buf/Str/Pkg], found [%s] %p\n", + AcpiUtGetTypeName ((*StackPtr)->Common.Type), *StackPtr)); + + return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } goto NextOperand; - break; case ARGI_COMPLEXOBJ: /* Need a buffer or package or (ACPI 2.0) String */ - if (((*StackPtr)->Common.Type != ACPI_TYPE_BUFFER) && - ((*StackPtr)->Common.Type != ACPI_TYPE_STRING) && - ((*StackPtr)->Common.Type != ACPI_TYPE_PACKAGE)) + switch ((*StackPtr)->Common.Type) { - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "Needed [Buf/Pkg], found [%s] %p\n", + case ACPI_TYPE_PACKAGE: + case ACPI_TYPE_STRING: + case ACPI_TYPE_BUFFER: + + /* Valid operand */ + break; + + default: + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, + "Needed [Buf/Str/Pkg], found [%s] %p\n", AcpiUtGetTypeName ((*StackPtr)->Common.Type), *StackPtr)); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } goto NextOperand; - break; default: @@ -629,7 +664,6 @@ AcpiExResolveOperands ( return_ACPI_STATUS (AE_BAD_PARAMETER); } - /* * Make sure that the original object was resolved to the * required object type (Simple cases only). @@ -641,7 +675,6 @@ AcpiExResolveOperands ( return_ACPI_STATUS (Status); } - NextOperand: /* * If more operands needed, decrement StackPtr to point @@ -654,7 +687,6 @@ NextOperand: } /* while (*Types) */ - return_ACPI_STATUS (Status); } diff --git a/sys/contrib/dev/acpica/exstore.c b/sys/contrib/dev/acpica/exstore.c index a49e29cfa200..9b09a382c0a3 100644 --- a/sys/contrib/dev/acpica/exstore.c +++ b/sys/contrib/dev/acpica/exstore.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: exstore - AML Interpreter object store support - * $Revision: 154 $ + * $Revision: 162 $ * *****************************************************************************/ @@ -10,7 +10,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -127,7 +127,7 @@ #define _COMPONENT ACPI_EXECUTER - MODULE_NAME ("exstore") + ACPI_MODULE_NAME ("exstore") /******************************************************************************* @@ -145,7 +145,7 @@ * DESCRIPTION: Store the value described by SourceDesc into the location * described by DestDesc. Called by various interpreter * functions to store the result of an operation into - * the destination operand -- not just simply the actual STORE + * the destination operand -- not just simply the actual "Store" * ASL operator. * ******************************************************************************/ @@ -160,20 +160,20 @@ AcpiExStore ( ACPI_OPERAND_OBJECT *RefDesc = DestDesc; - FUNCTION_TRACE_PTR ("ExStore", DestDesc); + ACPI_FUNCTION_TRACE_PTR ("ExStore", DestDesc); /* Validate parameters */ if (!SourceDesc || !DestDesc) { - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Internal - null pointer\n")); + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Null parameter\n")); return_ACPI_STATUS (AE_AML_NO_OPERAND); } /* DestDesc can be either a namespace node or an ACPI object */ - if (VALID_DESCRIPTOR_TYPE (DestDesc, ACPI_DESC_TYPE_NAMED)) + if (ACPI_GET_DESCRIPTOR_TYPE (DestDesc) == ACPI_DESC_TYPE_NAMED) { /* * Dest is a namespace node, @@ -182,8 +182,6 @@ AcpiExStore ( Status = AcpiExStoreObjectToNode (SourceDesc, (ACPI_NAMESPACE_NODE *) DestDesc, WalkState); - /* All done, that's it */ - return_ACPI_STATUS (Status); } @@ -196,9 +194,9 @@ AcpiExStore ( ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Destination is not a ReferenceObj [%p]\n", DestDesc)); - DUMP_STACK_ENTRY (SourceDesc); - DUMP_STACK_ENTRY (DestDesc); - DUMP_OPERANDS (&DestDesc, IMODE_EXECUTE, "ExStore", + ACPI_DUMP_STACK_ENTRY (SourceDesc); + ACPI_DUMP_STACK_ENTRY (DestDesc); + ACPI_DUMP_OPERANDS (&DestDesc, ACPI_IMODE_EXECUTE, "ExStore", 2, "Target is not a ReferenceObj"); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); @@ -257,15 +255,16 @@ AcpiExStore ( { case ACPI_TYPE_INTEGER: - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DEBUG_OBJECT, "0x%X (%d)\n", - (UINT32) SourceDesc->Integer.Value, (UINT32) SourceDesc->Integer.Value)); + ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DEBUG_OBJECT, "%8.8X%8.8X\n", + ACPI_HIWORD (SourceDesc->Integer.Value), + ACPI_LOWORD (SourceDesc->Integer.Value))); break; case ACPI_TYPE_BUFFER: - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DEBUG_OBJECT, "Length 0x%X\n", - (UINT32) SourceDesc->Buffer.Length)); + ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DEBUG_OBJECT, "Length %.2X\n", + (UINT32) SourceDesc->Buffer.Length)); break; @@ -277,14 +276,15 @@ AcpiExStore ( case ACPI_TYPE_PACKAGE: - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DEBUG_OBJECT, "Elements - 0x%X\n", - (UINT32) SourceDesc->Package.Elements)); + ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DEBUG_OBJECT, "Elements Ptr - %p\n", + SourceDesc->Package.Elements)); break; default: - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DEBUG_OBJECT, "@0x%p\n", SourceDesc)); + ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DEBUG_OBJECT, "Type %s %p\n", + AcpiUtGetTypeName (SourceDesc->Common.Type), SourceDesc)); break; } @@ -298,7 +298,7 @@ AcpiExStore ( case AML_REVISION_OP: /* - * Storing to a constant is a no-op according to the ACPI + * Storing to a constant is a no-op according to the ACPI * Specification. (Delete the reference descriptor, however.) */ break; @@ -308,7 +308,7 @@ AcpiExStore ( ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Unknown Reference subtype %02x\n", RefDesc->Reference.Opcode)); - DUMP_ENTRY (RefDesc, ACPI_LV_ERROR); + ACPI_DUMP_ENTRY (RefDesc, ACPI_LV_ERROR); Status = AE_AML_INTERNAL; break; @@ -336,22 +336,23 @@ AcpiExStore ( ACPI_STATUS AcpiExStoreObjectToIndex ( ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_OPERAND_OBJECT *DestDesc, + ACPI_OPERAND_OBJECT *IndexDesc, ACPI_WALK_STATE *WalkState) { ACPI_STATUS Status = AE_OK; ACPI_OPERAND_OBJECT *ObjDesc; + ACPI_OPERAND_OBJECT *NewDesc; UINT8 Value = 0; - FUNCTION_TRACE ("ExStoreObjectToIndex"); + ACPI_FUNCTION_TRACE ("ExStoreObjectToIndex"); /* * Destination must be a reference pointer, and * must point to either a buffer or a package */ - switch (DestDesc->Reference.TargetType) + switch (IndexDesc->Reference.TargetType) { case ACPI_TYPE_PACKAGE: /* @@ -360,86 +361,31 @@ AcpiExStoreObjectToIndex ( * source is copied into the destination - we can't just point to the * source object. */ - if (DestDesc->Reference.TargetType == ACPI_TYPE_PACKAGE) + /* + * The object at *(IndexDesc->Reference.Where) is the + * element within the package that is to be modified. + */ + ObjDesc = *(IndexDesc->Reference.Where); + + /* Do the conversion/store */ + + Status = AcpiExStoreObjectToObject (SourceDesc, ObjDesc, &NewDesc, + WalkState); + if (ACPI_FAILURE (Status)) { - /* - * The object at *(DestDesc->Reference.Where) is the - * element within the package that is to be modified. - */ - ObjDesc = *(DestDesc->Reference.Where); - if (ObjDesc) - { - /* - * If the Destination element is a package, we will delete - * that object and construct a new one. - * - * TBD: [Investigate] Should both the src and dest be required - * to be packages? - * && (SourceDesc->Common.Type == ACPI_TYPE_PACKAGE) - */ - if (ObjDesc->Common.Type == ACPI_TYPE_PACKAGE) - { - /* Take away the reference for being part of a package */ - - AcpiUtRemoveReference (ObjDesc); - ObjDesc = NULL; - } - } - - if (!ObjDesc) - { - /* - * If the ObjDesc is NULL, it means that an uninitialized - * package element has been used as a destination (this is OK), - * therefore, we must create the destination element to match - * the type of the source element NOTE: SourceDesc can be of - * any type. - */ - ObjDesc = AcpiUtCreateInternalObject (SourceDesc->Common.Type); - if (!ObjDesc) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* - * If the source is a package, copy the source to the new dest - */ - if (ACPI_TYPE_PACKAGE == ObjDesc->Common.Type) - { - Status = AcpiUtCopyIpackageToIpackage (SourceDesc, ObjDesc, - WalkState); - if (ACPI_FAILURE (Status)) - { - AcpiUtRemoveReference (ObjDesc); - return_ACPI_STATUS (Status); - } - } - - /* Install the new descriptor into the package */ - - *(DestDesc->Reference.Where) = ObjDesc; - } - - if (ACPI_TYPE_PACKAGE != ObjDesc->Common.Type) - { - /* - * The destination element is not a package, so we need to - * convert the contents of the source (SourceDesc) and copy into - * the destination (ObjDesc) - */ - Status = AcpiExStoreObjectToObject (SourceDesc, ObjDesc, - WalkState); - if (ACPI_FAILURE (Status)) - { - /* - * An error occurrered when copying the internal object - * so delete the reference. - */ - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, - "Unable to copy the internal object\n")); - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - } + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, + "Could not store object to indexed package element\n")); + return_ACPI_STATUS (Status); + } + + /* + * If a new object was created, we must install it as the new + * package element + */ + if (NewDesc != ObjDesc) + { + AcpiUtRemoveReference (ObjDesc); + *(IndexDesc->Reference.Where) = NewDesc; } break; @@ -447,7 +393,7 @@ AcpiExStoreObjectToIndex ( case ACPI_TYPE_BUFFER_FIELD: /* - * Store into a Buffer (not actually a real BufferField) at a + * Store into a Buffer (not actually a real BufferField) at a * location defined by an Index. * * The first 8-bit element of the source object is written to the @@ -458,7 +404,7 @@ AcpiExStoreObjectToIndex ( /* * Make sure the target is a Buffer */ - ObjDesc = DestDesc->Reference.Object; + ObjDesc = IndexDesc->Reference.Object; if (ObjDesc->Common.Type != ACPI_TYPE_BUFFER) { return_ACPI_STATUS (AE_AML_OPERAND_TYPE); @@ -495,17 +441,16 @@ AcpiExStoreObjectToIndex ( "Source must be Integer/Buffer/String type, not %s\n", AcpiUtGetTypeName (SourceDesc->Common.Type))); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - break; } /* Store the source value into the target buffer byte */ - ObjDesc->Buffer.Pointer[DestDesc->Reference.Offset] = Value; + ObjDesc->Buffer.Pointer[IndexDesc->Reference.Offset] = Value; break; default: - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Target is not a Package or BufferField\n")); Status = AE_AML_OPERAND_TYPE; break; @@ -548,10 +493,11 @@ AcpiExStoreObjectToNode ( { ACPI_STATUS Status = AE_OK; ACPI_OPERAND_OBJECT *TargetDesc; - ACPI_OBJECT_TYPE8 TargetType = ACPI_TYPE_ANY; + ACPI_OPERAND_OBJECT *NewDesc; + ACPI_OBJECT_TYPE TargetType; - FUNCTION_TRACE ("ExStoreObjectToNode"); + ACPI_FUNCTION_TRACE_PTR ("ExStoreObjectToNode", SourceDesc); /* @@ -561,8 +507,8 @@ AcpiExStoreObjectToNode ( TargetDesc = AcpiNsGetAttachedObject (Node); ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Storing %p(%s) into node %p(%s)\n", - Node, AcpiUtGetTypeName (SourceDesc->Common.Type), - SourceDesc, AcpiUtGetTypeName (TargetType))); + SourceDesc, AcpiUtGetTypeName (SourceDesc->Common.Type), + Node, AcpiUtGetTypeName (TargetType))); /* * Resolve the source object to an actual value @@ -601,24 +547,26 @@ AcpiExStoreObjectToNode ( * * Copy and/or convert the source object to a new target object */ - Status = AcpiExStoreObject (SourceDesc, TargetType, &TargetDesc, - WalkState); + Status = AcpiExStoreObjectToObject (SourceDesc, TargetDesc, &NewDesc, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } - /* - * Store the new TargetDesc as the new value of the Name, and set - * the Name's type to that of the value being stored in it. - * SourceDesc reference count is incremented by AttachObject. - */ - Status = AcpiNsAttachObject (Node, TargetDesc, TargetType); + if (NewDesc != TargetDesc) + { + /* + * Store the new NewDesc as the new value of the Name, and set + * the Name's type to that of the value being stored in it. + * SourceDesc reference count is incremented by AttachObject. + */ + Status = AcpiNsAttachObject (Node, NewDesc, TargetType); - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "Store %s into %s via Convert/Attach\n", - AcpiUtGetTypeName (TargetDesc->Common.Type), - AcpiUtGetTypeName (TargetType))); + ACPI_DEBUG_PRINT ((ACPI_DB_INFO, + "Store %s into %s via Convert/Attach\n", + AcpiUtGetTypeName (SourceDesc->Common.Type), + AcpiUtGetTypeName (NewDesc->Common.Type))); + } break; @@ -638,84 +586,3 @@ AcpiExStoreObjectToNode ( } -/******************************************************************************* - * - * FUNCTION: AcpiExStoreObjectToObject - * - * PARAMETERS: SourceDesc - Value to be stored - * DestDesc - Object to receive the value - * WalkState - Current walk state - * - * RETURN: Status - * - * DESCRIPTION: Store an object to another object. - * - * The Assignment of an object to another (not named) object - * is handled here. - * The val passed in will replace the current value (if any) - * with the input value. - * - * When storing into an object the data is converted to the - * target object type then stored in the object. This means - * that the target object type (for an initialized target) will - * not be changed by a store operation. - * - * This module allows destination types of Number, String, - * and Buffer. - * - * Assumes parameters are already validated. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExStoreObjectToObject ( - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_OPERAND_OBJECT *DestDesc, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status = AE_OK; - ACPI_OBJECT_TYPE8 DestinationType = DestDesc->Common.Type; - - - FUNCTION_TRACE ("ExStoreObjectToObject"); - - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Storing %p(%s) to %p(%s)\n", - SourceDesc, AcpiUtGetTypeName (SourceDesc->Common.Type), - DestDesc, AcpiUtGetTypeName (DestDesc->Common.Type))); - - - /* - * From this interface, we only support Integers/Strings/Buffers - */ - switch (DestinationType) - { - case ACPI_TYPE_INTEGER: - case ACPI_TYPE_STRING: - case ACPI_TYPE_BUFFER: - break; - - default: - ACPI_DEBUG_PRINT ((ACPI_DB_WARN, "Store into %s not implemented\n", - AcpiUtGetTypeName (DestDesc->Common.Type))); - - return_ACPI_STATUS (AE_NOT_IMPLEMENTED); - } - - /* - * Resolve the source object to an actual value - * (If it is a reference object) - */ - Status = AcpiExResolveObject (&SourceDesc, DestinationType, WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * Copy and/or convert the source object to the destination object - */ - Status = AcpiExStoreObject (SourceDesc, DestinationType, &DestDesc, - WalkState); - return_ACPI_STATUS (Status); -} - diff --git a/sys/contrib/dev/acpica/exstoren.c b/sys/contrib/dev/acpica/exstoren.c index e82934a6b606..f9232f07d875 100644 --- a/sys/contrib/dev/acpica/exstoren.c +++ b/sys/contrib/dev/acpica/exstoren.c @@ -3,7 +3,7 @@ * * Module Name: exstoren - AML Interpreter object store support, * Store to Node (namespace object) - * $Revision: 41 $ + * $Revision: 46 $ * *****************************************************************************/ @@ -11,7 +11,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -128,7 +128,7 @@ #define _COMPONENT ACPI_EXECUTER - MODULE_NAME ("exstoren") + ACPI_MODULE_NAME ("exstoren") /******************************************************************************* @@ -149,14 +149,14 @@ ACPI_STATUS AcpiExResolveObject ( ACPI_OPERAND_OBJECT **SourceDescPtr, - ACPI_OBJECT_TYPE8 TargetType, + ACPI_OBJECT_TYPE TargetType, ACPI_WALK_STATE *WalkState) { ACPI_OPERAND_OBJECT *SourceDesc = *SourceDescPtr; ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE ("ExResolveObject"); + ACPI_FUNCTION_TRACE ("ExResolveObject"); /* @@ -177,39 +177,37 @@ AcpiExResolveObject ( case ACPI_TYPE_STRING: case ACPI_TYPE_BUFFER: - /* + /* * Stores into a Field/Region or into a Integer/Buffer/String - * are all essentially the same. This case handles the - * "interchangeable" types Integer, String, and Buffer. + * are all essentially the same. This case handles the + * "interchangeable" types Integer, String, and Buffer. */ + if (SourceDesc->Common.Type == INTERNAL_TYPE_REFERENCE) + { + /* Resolve a reference object first */ - /* TBD: FIX - check for source==REF, resolve, then check type */ + Status = AcpiExResolveToValue (SourceDescPtr, WalkState); + if (ACPI_FAILURE (Status)) + { + break; + } + } /* - * If SourceDesc is not a valid type, try to resolve it to one. + * Must have a Integer, Buffer, or String */ if ((SourceDesc->Common.Type != ACPI_TYPE_INTEGER) && (SourceDesc->Common.Type != ACPI_TYPE_BUFFER) && (SourceDesc->Common.Type != ACPI_TYPE_STRING)) { /* - * Initially not a valid type, convert + * Conversion successful but still not a valid type */ - Status = AcpiExResolveToValue (SourceDescPtr, WalkState); - if (ACPI_SUCCESS (Status) && - (SourceDesc->Common.Type != ACPI_TYPE_INTEGER) && - (SourceDesc->Common.Type != ACPI_TYPE_BUFFER) && - (SourceDesc->Common.Type != ACPI_TYPE_STRING)) - { - /* - * Conversion successful but still not a valid type - */ - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, - "Cannot assign type %s to %s (must be type Int/Str/Buf)\n", - AcpiUtGetTypeName ((*SourceDescPtr)->Common.Type), - AcpiUtGetTypeName (TargetType))); - Status = AE_AML_OPERAND_TYPE; - } + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, + "Cannot assign type %s to %s (must be type Int/Str/Buf)\n", + AcpiUtGetTypeName (SourceDesc->Common.Type), + AcpiUtGetTypeName (TargetType))); + Status = AE_AML_OPERAND_TYPE; } break; @@ -240,11 +238,11 @@ AcpiExResolveObject ( /******************************************************************************* * - * FUNCTION: AcpiExStoreObject + * FUNCTION: AcpiExStoreObjectToObject * * PARAMETERS: SourceDesc - Object to store - * TargetType - Current type of the target - * TargetDescPtr - Pointer to the target + * DestDesc - Object to recieve a copy of the source + * NewDesc - New object if DestDesc is obsoleted * WalkState - Current walk state * * RETURN: Status @@ -254,95 +252,119 @@ AcpiExResolveObject ( * conversion), and a copy of the value of the source to * the target. * + * The Assignment of an object to another (not named) object + * is handled here. + * The Source passed in will replace the current value (if any) + * with the input value. + * + * When storing into an object the data is converted to the + * target object type then stored in the object. This means + * that the target object type (for an initialized target) will + * not be changed by a store operation. + * + * This module allows destination types of Number, String, + * Buffer, and Package. + * + * Assumes parameters are already validated. NOTE: SourceDesc + * resolution (from a reference object) must be performed by + * the caller if necessary. + * ******************************************************************************/ ACPI_STATUS -AcpiExStoreObject ( +AcpiExStoreObjectToObject ( ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_OBJECT_TYPE8 TargetType, - ACPI_OPERAND_OBJECT **TargetDescPtr, + ACPI_OPERAND_OBJECT *DestDesc, + ACPI_OPERAND_OBJECT **NewDesc, ACPI_WALK_STATE *WalkState) { - ACPI_OPERAND_OBJECT *TargetDesc = *TargetDescPtr; + ACPI_OPERAND_OBJECT *ActualSrcDesc; ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE ("ExStoreObject"); + ACPI_FUNCTION_TRACE_PTR ("AcpiExStoreObjectToObject", SourceDesc); - /* - * Perform the "implicit conversion" of the source to the current type - * of the target - As per the ACPI specification. - * - * If no conversion performed, SourceDesc is left alone, otherwise it - * is updated with a new object. - */ - Status = AcpiExConvertToTargetType (TargetType, &SourceDesc, WalkState); - if (ACPI_FAILURE (Status)) + ActualSrcDesc = SourceDesc; + if (!DestDesc) { + /* + * There is no destination object (An uninitialized node or + * package element), so we can simply copy the source object + * creating a new destination object + */ + Status = AcpiUtCopyIobjectToIobject (ActualSrcDesc, NewDesc, WalkState); return_ACPI_STATUS (Status); } + if (SourceDesc->Common.Type != DestDesc->Common.Type) + { + /* + * The source type does not match the type of the destination. + * Perform the "implicit conversion" of the source to the current type + * of the target as per the ACPI specification. + * + * If no conversion performed, ActualSrcDesc = SourceDesc. + * Otherwise, ActualSrcDesc is a temporary object to hold the + * converted object. + */ + Status = AcpiExConvertToTargetType (DestDesc->Common.Type, SourceDesc, + &ActualSrcDesc, WalkState); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + } + /* * We now have two objects of identical types, and we can perform a * copy of the *value* of the source object. */ - switch (TargetType) + switch (DestDesc->Common.Type) { - case ACPI_TYPE_ANY: - case INTERNAL_TYPE_DEF_ANY: - - /* - * The target namespace node is uninitialized (has no target object), - * and will take on the type of the source object - */ - *TargetDescPtr = SourceDesc; - break; - - case ACPI_TYPE_INTEGER: - TargetDesc->Integer.Value = SourceDesc->Integer.Value; + DestDesc->Integer.Value = ActualSrcDesc->Integer.Value; /* Truncate value if we are executing from a 32-bit ACPI table */ - AcpiExTruncateFor32bitTable (TargetDesc, WalkState); + AcpiExTruncateFor32bitTable (DestDesc, WalkState); break; case ACPI_TYPE_STRING: - Status = AcpiExCopyStringToString (SourceDesc, TargetDesc); + Status = AcpiExStoreStringToString (ActualSrcDesc, DestDesc); break; - case ACPI_TYPE_BUFFER: - Status = AcpiExCopyBufferToBuffer (SourceDesc, TargetDesc); + Status = AcpiExStoreBufferToBuffer (ActualSrcDesc, DestDesc); break; - case ACPI_TYPE_PACKAGE: - /* - * TBD: [Unhandled] Not real sure what to do here - */ - Status = AE_NOT_IMPLEMENTED; + Status = AcpiUtCopyIobjectToIobject (ActualSrcDesc, &DestDesc, WalkState); break; - default: - /* * All other types come here. */ ACPI_DEBUG_PRINT ((ACPI_DB_WARN, "Store into type %s not implemented\n", - AcpiUtGetTypeName (TargetType))); + AcpiUtGetTypeName (DestDesc->Common.Type))); Status = AE_NOT_IMPLEMENTED; break; } + if (ActualSrcDesc != SourceDesc) + { + /* Delete the intermediate (temporary) source object */ + + AcpiUtRemoveReference (ActualSrcDesc); + } + *NewDesc = DestDesc; return_ACPI_STATUS (Status); } diff --git a/sys/contrib/dev/acpica/exstorob.c b/sys/contrib/dev/acpica/exstorob.c index 297a15495d72..84d091c647de 100644 --- a/sys/contrib/dev/acpica/exstorob.c +++ b/sys/contrib/dev/acpica/exstorob.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: exstorob - AML Interpreter object store support, store to object - * $Revision: 37 $ + * $Revision: 41 $ * *****************************************************************************/ @@ -10,7 +10,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -127,12 +127,12 @@ #define _COMPONENT ACPI_EXECUTER - MODULE_NAME ("exstorob") + ACPI_MODULE_NAME ("exstorob") /******************************************************************************* * - * FUNCTION: AcpiExCopyBufferToBuffer + * FUNCTION: AcpiExStoreBufferToBuffer * * PARAMETERS: SourceDesc - Source object to copy * TargetDesc - Destination object of the copy @@ -144,7 +144,7 @@ ******************************************************************************/ ACPI_STATUS -AcpiExCopyBufferToBuffer ( +AcpiExStoreBufferToBuffer ( ACPI_OPERAND_OBJECT *SourceDesc, ACPI_OPERAND_OBJECT *TargetDesc) { @@ -152,7 +152,7 @@ AcpiExCopyBufferToBuffer ( UINT8 *Buffer; - PROC_NAME ("ExCopyBufferToBuffer"); + ACPI_FUNCTION_NAME ("ExStoreBufferToBuffer"); /* @@ -184,8 +184,8 @@ AcpiExCopyBufferToBuffer ( { /* Clear existing buffer and copy in the new one */ - MEMSET (TargetDesc->Buffer.Pointer, 0, TargetDesc->Buffer.Length); - MEMCPY (TargetDesc->Buffer.Pointer, Buffer, Length); + ACPI_MEMSET (TargetDesc->Buffer.Pointer, 0, TargetDesc->Buffer.Length); + ACPI_MEMCPY (TargetDesc->Buffer.Pointer, Buffer, Length); } else @@ -193,7 +193,7 @@ AcpiExCopyBufferToBuffer ( /* * Truncate the source, copy only what will fit */ - MEMCPY (TargetDesc->Buffer.Pointer, Buffer, TargetDesc->Buffer.Length); + ACPI_MEMCPY (TargetDesc->Buffer.Pointer, Buffer, TargetDesc->Buffer.Length); ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Truncating src buffer from %X to %X\n", @@ -206,7 +206,7 @@ AcpiExCopyBufferToBuffer ( /******************************************************************************* * - * FUNCTION: AcpiExCopyStringToString + * FUNCTION: AcpiExStoreStringToString * * PARAMETERS: SourceDesc - Source object to copy * TargetDesc - Destination object of the copy @@ -218,7 +218,7 @@ AcpiExCopyBufferToBuffer ( ******************************************************************************/ ACPI_STATUS -AcpiExCopyStringToString ( +AcpiExStoreStringToString ( ACPI_OPERAND_OBJECT *SourceDesc, ACPI_OPERAND_OBJECT *TargetDesc) { @@ -226,7 +226,7 @@ AcpiExCopyStringToString ( UINT8 *Buffer; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); /* @@ -242,8 +242,8 @@ AcpiExCopyStringToString ( { /* Clear old string and copy in the new one */ - MEMSET (TargetDesc->String.Pointer, 0, TargetDesc->String.Length); - MEMCPY (TargetDesc->String.Pointer, Buffer, Length); + ACPI_MEMSET (TargetDesc->String.Pointer, 0, TargetDesc->String.Length); + ACPI_MEMCPY (TargetDesc->String.Pointer, Buffer, Length); } else @@ -268,7 +268,7 @@ AcpiExCopyStringToString ( } TargetDesc->String.Length = Length; - MEMCPY (TargetDesc->String.Pointer, Buffer, Length); + ACPI_MEMCPY (TargetDesc->String.Pointer, Buffer, Length); } return (AE_OK); diff --git a/sys/contrib/dev/acpica/exsystem.c b/sys/contrib/dev/acpica/exsystem.c index df034483f057..758567b000a6 100644 --- a/sys/contrib/dev/acpica/exsystem.c +++ b/sys/contrib/dev/acpica/exsystem.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: exsystem - Interface to OS services - * $Revision: 67 $ + * $Revision: 71 $ * *****************************************************************************/ @@ -10,7 +10,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -124,7 +124,7 @@ #include "acevents.h" #define _COMPONENT ACPI_EXECUTER - MODULE_NAME ("exsystem") + ACPI_MODULE_NAME ("exsystem") /******************************************************************************* @@ -148,9 +148,10 @@ AcpiExSystemWaitSemaphore ( UINT32 Timeout) { ACPI_STATUS Status; + ACPI_STATUS Status2; - FUNCTION_TRACE ("ExSystemWaitSemaphore"); + ACPI_FUNCTION_TRACE ("ExSystemWaitSemaphore"); Status = AcpiOsWaitSemaphore (Semaphore, 1, 0); @@ -172,12 +173,12 @@ AcpiExSystemWaitSemaphore ( /* Reacquire the interpreter */ - Status = AcpiExEnterInterpreter (); - if (ACPI_SUCCESS (Status)) + Status2 = AcpiExEnterInterpreter (); + if (ACPI_FAILURE (Status2)) { - /* Restore the timeout exception */ + /* Report fatal error, could not acquire interpreter */ - Status = AE_TIME; + return_ACPI_STATUS (Status2); } } @@ -191,17 +192,20 @@ AcpiExSystemWaitSemaphore ( * * PARAMETERS: HowLong - The amount of time to stall * - * RETURN: None + * RETURN: Status * * DESCRIPTION: Suspend running thread for specified amount of time. * ******************************************************************************/ -void +ACPI_STATUS AcpiExSystemDoStall ( UINT32 HowLong) { - FUNCTION_ENTRY (); + ACPI_STATUS Status = AE_OK; + + + ACPI_FUNCTION_ENTRY (); if (HowLong > 1000) /* 1 millisecond */ @@ -214,13 +218,15 @@ AcpiExSystemDoStall ( /* And now we must get the interpreter again */ - AcpiExEnterInterpreter (); + Status = AcpiExEnterInterpreter (); } else { AcpiOsSleep (0, (HowLong / 1000) + 1); } + + return (Status); } @@ -236,12 +242,14 @@ AcpiExSystemDoStall ( * ******************************************************************************/ -void +ACPI_STATUS AcpiExSystemDoSuspend ( UINT32 HowLong) { + ACPI_STATUS Status; - FUNCTION_ENTRY (); + + ACPI_FUNCTION_ENTRY (); /* Since this thread will sleep, we must release the interpreter */ @@ -253,7 +261,8 @@ AcpiExSystemDoSuspend ( /* And now we must get the interpreter again */ - AcpiExEnterInterpreter (); + Status = AcpiExEnterInterpreter (); + return (Status); } @@ -280,7 +289,7 @@ AcpiExSystemAcquireMutex ( ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE_PTR ("ExSystemAcquireMutex", ObjDesc); + ACPI_FUNCTION_TRACE_PTR ("ExSystemAcquireMutex", ObjDesc); if (!ObjDesc) @@ -293,7 +302,7 @@ AcpiExSystemAcquireMutex ( */ if (ObjDesc->Mutex.Semaphore == AcpiGbl_GlobalLockSemaphore) { - Status = AcpiEvAcquireGlobalLock (); + Status = AcpiEvAcquireGlobalLock ((UINT32) TimeDesc->Integer.Value); return_ACPI_STATUS (Status); } @@ -325,7 +334,7 @@ AcpiExSystemReleaseMutex ( ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE ("ExSystemReleaseMutex"); + ACPI_FUNCTION_TRACE ("ExSystemReleaseMutex"); if (!ObjDesc) @@ -367,7 +376,7 @@ AcpiExSystemSignalEvent ( ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE ("ExSystemSignalEvent"); + ACPI_FUNCTION_TRACE ("ExSystemSignalEvent"); if (ObjDesc) @@ -402,7 +411,7 @@ AcpiExSystemWaitEvent ( ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE ("ExSystemWaitEvent"); + ACPI_FUNCTION_TRACE ("ExSystemWaitEvent"); if (ObjDesc) @@ -411,7 +420,6 @@ AcpiExSystemWaitEvent ( (UINT32) TimeDesc->Integer.Value); } - return_ACPI_STATUS (Status); } @@ -436,7 +444,7 @@ AcpiExSystemResetEvent ( void *TempSemaphore; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); /* diff --git a/sys/contrib/dev/acpica/exutils.c b/sys/contrib/dev/acpica/exutils.c index 0bf2ff258c34..740a91a1e902 100644 --- a/sys/contrib/dev/acpica/exutils.c +++ b/sys/contrib/dev/acpica/exutils.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: exutils - interpreter/scanner utilities - * $Revision: 88 $ + * $Revision: 93 $ * *****************************************************************************/ @@ -10,7 +10,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -142,7 +142,7 @@ #include "acparser.h" #define _COMPONENT ACPI_EXECUTER - MODULE_NAME ("exutils") + ACPI_MODULE_NAME ("exutils") /******************************************************************************* @@ -151,7 +151,8 @@ * * PARAMETERS: None * - * DESCRIPTION: Enter the interpreter execution region + * DESCRIPTION: Enter the interpreter execution region. Failure to enter + * the interpreter region is a fatal system error * ******************************************************************************/ @@ -160,10 +161,15 @@ AcpiExEnterInterpreter (void) { ACPI_STATUS Status; - FUNCTION_TRACE ("ExEnterInterpreter"); + ACPI_FUNCTION_TRACE ("ExEnterInterpreter"); Status = AcpiUtAcquireMutex (ACPI_MTX_EXECUTE); + if (ACPI_FAILURE (Status)) + { + ACPI_REPORT_ERROR (("Fatal - Could not acquire interpreter lock\n")); + } + return_ACPI_STATUS (Status); } @@ -191,10 +197,13 @@ AcpiExEnterInterpreter (void) void AcpiExExitInterpreter (void) { - FUNCTION_TRACE ("ExExitInterpreter"); + ACPI_STATUS Status; + + ACPI_FUNCTION_TRACE ("ExExitInterpreter"); - AcpiUtReleaseMutex (ACPI_MTX_EXECUTE); + + Status = AcpiUtReleaseMutex (ACPI_MTX_EXECUTE); return_VOID; } @@ -215,7 +224,7 @@ AcpiExValidateObjectType ( ACPI_OBJECT_TYPE Type) { - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); if ((Type > ACPI_TYPE_MAX && Type < INTERNAL_TYPE_BEGIN) || @@ -249,7 +258,7 @@ AcpiExTruncateFor32bitTable ( ACPI_WALK_STATE *WalkState) { - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); /* @@ -278,7 +287,7 @@ AcpiExTruncateFor32bitTable ( * * FUNCTION: AcpiExAcquireGlobalLock * - * PARAMETERS: FieldFlags - Flags with Lock rule: + * PARAMETERS: FieldFlags - Flags with Lock rule: * AlwaysLock or NeverLock * * RETURN: TRUE/FALSE indicating whether the lock was actually acquired @@ -297,21 +306,20 @@ AcpiExAcquireGlobalLock ( ACPI_STATUS Status; - FUNCTION_TRACE ("ExAcquireGlobalLock"); + ACPI_FUNCTION_TRACE ("ExAcquireGlobalLock"); /* Only attempt lock if the AlwaysLock bit is set */ if (FieldFlags & AML_FIELD_LOCK_RULE_MASK) { - /* We should attempt to get the lock */ + /* We should attempt to get the lock, wait forever */ - Status = AcpiEvAcquireGlobalLock (); + Status = AcpiEvAcquireGlobalLock (ACPI_UINT32_MAX); if (ACPI_SUCCESS (Status)) { Locked = TRUE; } - else { ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Could not acquire Global Lock, %s\n", @@ -341,7 +349,7 @@ AcpiExReleaseGlobalLock ( BOOLEAN LockedByMe) { - FUNCTION_TRACE ("ExReleaseGlobalLock"); + ACPI_FUNCTION_TRACE ("ExReleaseGlobalLock"); /* Only attempt unlock if the caller locked it */ @@ -353,7 +361,6 @@ AcpiExReleaseGlobalLock ( AcpiEvReleaseGlobalLock (); } - return_ACPI_STATUS (AE_OK); } @@ -377,14 +384,13 @@ AcpiExDigitsNeeded ( UINT32 NumDigits = 0; - FUNCTION_TRACE ("ExDigitsNeeded"); + ACPI_FUNCTION_TRACE ("ExDigitsNeeded"); if (Base < 1) { - REPORT_ERROR (("ExDigitsNeeded: Internal error - Invalid base\n")); + ACPI_REPORT_ERROR (("ExDigitsNeeded: Internal error - Invalid base\n")); } - else { /* @@ -427,7 +433,7 @@ _ntohl ( } In; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); In.Value = Value; @@ -460,7 +466,7 @@ AcpiExEisaIdToString ( UINT32 id; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); /* swap to big-endian to get contiguous bits */ @@ -501,7 +507,7 @@ AcpiExUnsignedIntegerToString ( UINT32 Remainder; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); DigitsNeeded = AcpiExDigitsNeeded (Value, 10); diff --git a/sys/contrib/dev/acpica/hwacpi.c b/sys/contrib/dev/acpica/hwacpi.c index 81394306d93d..e73367f4008a 100644 --- a/sys/contrib/dev/acpica/hwacpi.c +++ b/sys/contrib/dev/acpica/hwacpi.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: hwacpi - ACPI Hardware Initialization/Mode Interface - * $Revision: 47 $ + * $Revision: 53 $ * *****************************************************************************/ @@ -10,7 +10,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -122,7 +122,7 @@ #define _COMPONENT ACPI_HARDWARE - MODULE_NAME ("hwacpi") + ACPI_MODULE_NAME ("hwacpi") /****************************************************************************** @@ -141,96 +141,30 @@ ACPI_STATUS AcpiHwInitialize ( void) { - ACPI_STATUS Status = AE_OK; - UINT32 Index; + ACPI_STATUS Status; - FUNCTION_TRACE ("HwInitialize"); + ACPI_FUNCTION_TRACE ("HwInitialize"); /* We must have the ACPI tables by the time we get here */ if (!AcpiGbl_FADT) { - AcpiGbl_RestoreAcpiChipset = FALSE; - - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "No FADT!\n")); + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "A FADT is not loaded\n")); return_ACPI_STATUS (AE_NO_ACPI_TABLES); } - - /* - * Save the initial state of the ACPI event enable registers, so - * we can restore them when we exit. We probably won't exit, though. - * - * The location of the PM1aEvtBlk enable registers is defined as the - * base of PM1aEvtBlk + DIV_2(PM1aEvtBlkLength). Since the spec further - * fully defines the PM1aEvtBlk to be a total of 4 bytes, the offset - * for the enable registers is always 2 from the base. It is hard - * coded here. If this changes in the spec, this code will need to - * be modified. The PM1bEvtBlk behaves as expected. - */ - AcpiGbl_Pm1EnableRegisterSave = (UINT16) AcpiHwRegisterRead ( - ACPI_MTX_LOCK, PM1_EN); - - - /* - * The GPEs behave similarly, except that the length of the register - * block is not fixed, so the buffer must be allocated with malloc - */ - if (ACPI_VALID_ADDRESS (AcpiGbl_FADT->XGpe0Blk.Address) && - AcpiGbl_FADT->Gpe0BlkLen) - { - /* GPE0 specified in FADT */ - - AcpiGbl_Gpe0EnableRegisterSave = ACPI_MEM_ALLOCATE ( - DIV_2 (AcpiGbl_FADT->Gpe0BlkLen)); - if (!AcpiGbl_Gpe0EnableRegisterSave) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* Save state of GPE0 enable bits */ - - for (Index = 0; Index < DIV_2 (AcpiGbl_FADT->Gpe0BlkLen); Index++) - { - AcpiGbl_Gpe0EnableRegisterSave[Index] = - (UINT8) AcpiHwRegisterRead (ACPI_MTX_LOCK, GPE0_EN_BLOCK | Index); - } - } - - else - { - AcpiGbl_Gpe0EnableRegisterSave = NULL; - } - if (ACPI_VALID_ADDRESS (AcpiGbl_FADT->XGpe1Blk.Address) && - AcpiGbl_FADT->Gpe1BlkLen) - { - /* GPE1 defined */ - - AcpiGbl_Gpe1EnableRegisterSave = ACPI_MEM_ALLOCATE ( - DIV_2 (AcpiGbl_FADT->Gpe1BlkLen)); - if (!AcpiGbl_Gpe1EnableRegisterSave) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* save state of GPE1 enable bits */ - - for (Index = 0; Index < DIV_2 (AcpiGbl_FADT->Gpe1BlkLen); Index++) - { - AcpiGbl_Gpe1EnableRegisterSave[Index] = - (UINT8) AcpiHwRegisterRead (ACPI_MTX_LOCK, GPE1_EN_BLOCK | Index); - } - } + /* Sanity check the FADT for valid values */ - else + Status = AcpiUtValidateFadt (); + if (ACPI_FAILURE (Status)) { - AcpiGbl_Gpe1EnableRegisterSave = NULL; + return_ACPI_STATUS (Status); } - return_ACPI_STATUS (Status); + return_ACPI_STATUS (AE_OK); } @@ -242,8 +176,7 @@ AcpiHwInitialize ( * * RETURN: Status * - * DESCRIPTION: Transitions the system into the requested mode or does nothing - * if the system is already in that mode. + * DESCRIPTION: Transitions the system into the requested mode. * ******************************************************************************/ @@ -255,18 +188,17 @@ AcpiHwSetMode ( ACPI_STATUS Status = AE_NO_HARDWARE_RESPONSE; - FUNCTION_TRACE ("HwSetMode"); + ACPI_FUNCTION_TRACE ("HwSetMode"); - if (Mode == SYS_MODE_ACPI) + if (Mode == ACPI_SYS_MODE_ACPI) { /* BIOS should have disabled ALL fixed and GP events */ AcpiOsWritePort (AcpiGbl_FADT->SmiCmd, AcpiGbl_FADT->AcpiEnable, 8); ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Attempting to enable ACPI mode\n")); } - - else if (Mode == SYS_MODE_LEGACY) + else if (Mode == ACPI_SYS_MODE_LEGACY) { /* * BIOS should clear all fixed status bits and restore fixed event @@ -308,15 +240,15 @@ UINT32 AcpiHwGetMode (void) { - FUNCTION_TRACE ("HwGetMode"); + ACPI_FUNCTION_TRACE ("HwGetMode"); - if (AcpiHwRegisterBitAccess (ACPI_READ, ACPI_MTX_LOCK, SCI_EN)) + if (AcpiHwBitRegisterRead (ACPI_BITREG_SCI_ENABLE, ACPI_MTX_LOCK)) { - return_VALUE (SYS_MODE_ACPI); + return_VALUE (ACPI_SYS_MODE_ACPI); } else { - return_VALUE (SYS_MODE_LEGACY); + return_VALUE (ACPI_SYS_MODE_LEGACY); } } diff --git a/sys/contrib/dev/acpica/hwgpe.c b/sys/contrib/dev/acpica/hwgpe.c index adcf65f84b2b..b6c71cb16c5d 100644 --- a/sys/contrib/dev/acpica/hwgpe.c +++ b/sys/contrib/dev/acpica/hwgpe.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: hwgpe - Low level GPE enable/disable/clear functions - * $Revision: 35 $ + * $Revision: 39 $ * *****************************************************************************/ @@ -10,7 +10,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -121,7 +121,27 @@ #include "acevents.h" #define _COMPONENT ACPI_HARDWARE - MODULE_NAME ("hwgpe") + ACPI_MODULE_NAME ("hwgpe") + + +/****************************************************************************** + * + * FUNCTION: AcpiHwGetGpeBitMask + * + * PARAMETERS: GpeNumber - The GPE + * + * RETURN: Gpe register bitmask for this gpe level + * + * DESCRIPTION: Get the bitmask for this GPE + * + ******************************************************************************/ + +UINT32 +AcpiHwGetGpeBitMask ( + UINT32 GpeNumber) +{ + return (AcpiGbl_GpeNumberInfo [AcpiEvGetGpeNumberIndex (GpeNumber)].BitMask); +} /****************************************************************************** @@ -145,29 +165,28 @@ AcpiHwEnableGpe ( UINT32 BitMask; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); - /* - * Translate GPE number to index into global registers array. - */ - RegisterIndex = AcpiGbl_GpeValid[GpeNumber]; + /* Translate GPE number to index into global registers array. */ - /* - * Figure out the bit offset for this GPE within the target register. - */ - BitMask = AcpiGbl_DecodeTo8bit [MOD_8 (GpeNumber)]; + RegisterIndex = AcpiEvGetGpeRegisterIndex (GpeNumber); + + /* Get the register bitmask for this GPE */ + + BitMask = AcpiHwGetGpeBitMask (GpeNumber); /* * Read the current value of the register, set the appropriate bit * to enable the GPE, and write out the new register. */ InByte = 0; - AcpiOsReadPort (AcpiGbl_GpeRegisters[RegisterIndex].EnableAddr, &InByte, 8); - AcpiOsWritePort (AcpiGbl_GpeRegisters[RegisterIndex].EnableAddr, - (InByte | BitMask), 8); + AcpiOsReadPort (AcpiGbl_GpeRegisterInfo[RegisterIndex].EnableAddr, &InByte, 8); + AcpiOsWritePort (AcpiGbl_GpeRegisterInfo[RegisterIndex].EnableAddr, + (InByte | BitMask), 8); } + /****************************************************************************** * * FUNCTION: AcpiHwEnableGpeForWakeup @@ -189,25 +208,24 @@ AcpiHwEnableGpeForWakeup ( UINT32 BitMask; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); - /* - * Translate GPE number to index into global registers array. - */ - RegisterIndex = AcpiGbl_GpeValid[GpeNumber]; + /* Translate GPE number to index into global registers array. */ - /* - * Figure out the bit offset for this GPE within the target register. - */ - BitMask = AcpiGbl_DecodeTo8bit [MOD_8 (GpeNumber)]; + RegisterIndex = AcpiEvGetGpeRegisterIndex (GpeNumber); + + /* Get the register bitmask for this GPE */ + + BitMask = AcpiHwGetGpeBitMask (GpeNumber); /* * Set the bit so we will not disable this when sleeping */ - AcpiGbl_GpeRegisters[RegisterIndex].WakeEnable |= BitMask; + AcpiGbl_GpeRegisterInfo[RegisterIndex].WakeEnable |= BitMask; } + /****************************************************************************** * * FUNCTION: AcpiHwDisableGpe @@ -229,31 +247,30 @@ AcpiHwDisableGpe ( UINT32 BitMask; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); - /* - * Translate GPE number to index into global registers array. - */ - RegisterIndex = AcpiGbl_GpeValid[GpeNumber]; + /* Translate GPE number to index into global registers array. */ - /* - * Figure out the bit offset for this GPE within the target register. - */ - BitMask = AcpiGbl_DecodeTo8bit [MOD_8 (GpeNumber)]; + RegisterIndex = AcpiEvGetGpeRegisterIndex (GpeNumber); + + /* Get the register bitmask for this GPE */ + + BitMask = AcpiHwGetGpeBitMask (GpeNumber); /* * Read the current value of the register, clear the appropriate bit, * and write out the new register value to disable the GPE. */ InByte = 0; - AcpiOsReadPort (AcpiGbl_GpeRegisters[RegisterIndex].EnableAddr, &InByte, 8); - AcpiOsWritePort (AcpiGbl_GpeRegisters[RegisterIndex].EnableAddr, + AcpiOsReadPort (AcpiGbl_GpeRegisterInfo[RegisterIndex].EnableAddr, &InByte, 8); + AcpiOsWritePort (AcpiGbl_GpeRegisterInfo[RegisterIndex].EnableAddr, (InByte & ~BitMask), 8); AcpiHwDisableGpeForWakeup(GpeNumber); } + /****************************************************************************** * * FUNCTION: AcpiHwDisableGpeForWakeup @@ -275,25 +292,24 @@ AcpiHwDisableGpeForWakeup ( UINT32 BitMask; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); - /* - * Translate GPE number to index into global registers array. - */ - RegisterIndex = AcpiGbl_GpeValid[GpeNumber]; + /* Translate GPE number to index into global registers array. */ - /* - * Figure out the bit offset for this GPE within the target register. - */ - BitMask = AcpiGbl_DecodeTo8bit [MOD_8 (GpeNumber)]; + RegisterIndex = AcpiEvGetGpeRegisterIndex (GpeNumber); + + /* Get the register bitmask for this GPE */ + + BitMask = AcpiHwGetGpeBitMask (GpeNumber); /* * Clear the bit so we will disable this when sleeping */ - AcpiGbl_GpeRegisters[RegisterIndex].WakeEnable &= ~BitMask; + AcpiGbl_GpeRegisterInfo[RegisterIndex].WakeEnable &= ~BitMask; } + /****************************************************************************** * * FUNCTION: AcpiHwClearGpe @@ -314,24 +330,22 @@ AcpiHwClearGpe ( UINT32 BitMask; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); - /* - * Translate GPE number to index into global registers array. - */ - RegisterIndex = AcpiGbl_GpeValid[GpeNumber]; + /* Translate GPE number to index into global registers array. */ - /* - * Figure out the bit offset for this GPE within the target register. - */ - BitMask = AcpiGbl_DecodeTo8bit [MOD_8 (GpeNumber)]; + RegisterIndex = AcpiEvGetGpeRegisterIndex (GpeNumber); + + /* Get the register bitmask for this GPE */ + + BitMask = AcpiHwGetGpeBitMask (GpeNumber); /* * Write a one to the appropriate bit in the status register to * clear this GPE. */ - AcpiOsWritePort (AcpiGbl_GpeRegisters[RegisterIndex].StatusAddr, BitMask, 8); + AcpiOsWritePort (AcpiGbl_GpeRegisterInfo[RegisterIndex].StatusAddr, BitMask, 8); } @@ -355,9 +369,10 @@ AcpiHwGetGpeStatus ( UINT32 InByte = 0; UINT32 RegisterIndex = 0; UINT32 BitMask = 0; + ACPI_GPE_REGISTER_INFO *GpeRegisterInfo; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); if (!EventStatus) @@ -367,45 +382,42 @@ AcpiHwGetGpeStatus ( (*EventStatus) = 0; - /* - * Translate GPE number to index into global registers array. - */ - RegisterIndex = AcpiGbl_GpeValid[GpeNumber]; + /* Translate GPE number to index into global registers array. */ - /* - * Figure out the bit offset for this GPE within the target register. - */ - BitMask = AcpiGbl_DecodeTo8bit [MOD_8 (GpeNumber)]; + RegisterIndex = AcpiEvGetGpeRegisterIndex (GpeNumber); + GpeRegisterInfo = &AcpiGbl_GpeRegisterInfo[RegisterIndex]; + + /* Get the register bitmask for this GPE */ + + BitMask = AcpiHwGetGpeBitMask (GpeNumber); + + /* GPE Enabled? */ - /* - * Enabled?: - */ InByte = 0; - AcpiOsReadPort (AcpiGbl_GpeRegisters[RegisterIndex].EnableAddr, &InByte, 8); + AcpiOsReadPort (GpeRegisterInfo->EnableAddr, &InByte, 8); if (BitMask & InByte) { (*EventStatus) |= ACPI_EVENT_FLAG_ENABLED; } - /* - * Enabled for wake?: - */ - if (BitMask & AcpiGbl_GpeRegisters[RegisterIndex].WakeEnable) + /* GPE Enabled for wake? */ + + if (BitMask & GpeRegisterInfo->WakeEnable) { (*EventStatus) |= ACPI_EVENT_FLAG_WAKE_ENABLED; } - /* - * Set? - */ + /* GPE active (set)? */ + InByte = 0; - AcpiOsReadPort (AcpiGbl_GpeRegisters[RegisterIndex].StatusAddr, &InByte, 8); + AcpiOsReadPort (GpeRegisterInfo->StatusAddr, &InByte, 8); if (BitMask & InByte) { (*EventStatus) |= ACPI_EVENT_FLAG_SET; } } + /****************************************************************************** * * FUNCTION: AcpiHwDisableNonWakeupGpes @@ -416,7 +428,7 @@ AcpiHwGetGpeStatus ( * * DESCRIPTION: Disable all non-wakeup GPEs * Call with interrupts disabled. The interrupt handler also - * modifies AcpiGbl_GpeRegisters[i].Enable, so it should not be + * modifies AcpiGbl_GpeRegisterInfo[i].Enable, so it should not be * given the chance to run until after non-wake GPEs are * re-enabled. * @@ -427,26 +439,32 @@ AcpiHwDisableNonWakeupGpes ( void) { UINT32 i; + ACPI_GPE_REGISTER_INFO *GpeRegisterInfo; + + + ACPI_FUNCTION_ENTRY (); - FUNCTION_ENTRY (); for (i = 0; i < AcpiGbl_GpeRegisterCount; i++) { + GpeRegisterInfo = &AcpiGbl_GpeRegisterInfo[i]; + /* * Read the enabled status of all GPEs. We * will be using it to restore all the GPEs later. */ - AcpiOsReadPort (AcpiGbl_GpeRegisters[i].EnableAddr, - &AcpiGbl_GpeRegisters[i].Enable, 8); + AcpiOsReadPort (GpeRegisterInfo->EnableAddr, + &GpeRegisterInfo->Enable, 8); /* - * Disable all GPEs but wakeup GPEs. + * Disable all GPEs except wakeup GPEs. */ - AcpiOsWritePort(AcpiGbl_GpeRegisters[i].EnableAddr, - AcpiGbl_GpeRegisters[i].WakeEnable, 8); + AcpiOsWritePort(GpeRegisterInfo->EnableAddr, + GpeRegisterInfo->WakeEnable, 8); } } + /****************************************************************************** * * FUNCTION: AcpiHwEnableNonWakeupGpes @@ -464,16 +482,21 @@ AcpiHwEnableNonWakeupGpes ( void) { UINT32 i; + ACPI_GPE_REGISTER_INFO *GpeRegisterInfo; + + + ACPI_FUNCTION_ENTRY (); - FUNCTION_ENTRY (); for (i = 0; i < AcpiGbl_GpeRegisterCount; i++) { + GpeRegisterInfo = &AcpiGbl_GpeRegisterInfo[i]; + /* * We previously stored the enabled status of all GPEs. * Blast them back in. */ - AcpiOsWritePort(AcpiGbl_GpeRegisters[i].EnableAddr, - AcpiGbl_GpeRegisters[i].Enable, 8); + AcpiOsWritePort(GpeRegisterInfo->EnableAddr, + GpeRegisterInfo->Enable, 8); } } diff --git a/sys/contrib/dev/acpica/hwregs.c b/sys/contrib/dev/acpica/hwregs.c index bc74fbe724d0..40107cc3e7d2 100644 --- a/sys/contrib/dev/acpica/hwregs.c +++ b/sys/contrib/dev/acpica/hwregs.c @@ -3,7 +3,7 @@ * * Module Name: hwregs - Read/write access functions for the various ACPI * control and status registers. - * $Revision: 110 $ + * $Revision: 120 $ * ******************************************************************************/ @@ -11,7 +11,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -123,37 +123,7 @@ #include "acnamesp.h" #define _COMPONENT ACPI_HARDWARE - MODULE_NAME ("hwregs") - - -/******************************************************************************* - * - * FUNCTION: AcpiHwGetBitShift - * - * PARAMETERS: Mask - Input mask to determine bit shift from. - * Must have at least 1 bit set. - * - * RETURN: Bit location of the lsb of the mask - * - * DESCRIPTION: Returns the bit number for the low order bit that's set. - * - ******************************************************************************/ - -UINT32 -AcpiHwGetBitShift ( - UINT32 Mask) -{ - UINT32 Shift; - - - FUNCTION_TRACE ("HwGetBitShift"); - - - for (Shift = 0; ((Mask >> Shift) & 1) == 0; Shift++) - { ; } - - return_VALUE (Shift); -} + ACPI_MODULE_NAME ("hwregs") /******************************************************************************* @@ -171,94 +141,87 @@ AcpiHwGetBitShift ( void AcpiHwClearAcpiStatus (void) { - UINT16 GpeLength; - UINT16 Index; + NATIVE_UINT i; + NATIVE_UINT GpeBlock; + ACPI_STATUS Status; - FUNCTION_TRACE ("HwClearAcpiStatus"); + ACPI_FUNCTION_TRACE ("HwClearAcpiStatus"); ACPI_DEBUG_PRINT ((ACPI_DB_IO, "About to write %04X to %04X\n", - ALL_FIXED_STS_BITS, + ACPI_BITMASK_ALL_FIXED_STATUS, (UINT16) ACPI_GET_ADDRESS (AcpiGbl_FADT->XPm1aEvtBlk.Address))); - AcpiUtAcquireMutex (ACPI_MTX_HARDWARE); + Status = AcpiUtAcquireMutex (ACPI_MTX_HARDWARE); + if (ACPI_FAILURE (Status)) + { + return_VOID; + } - AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, PM1_STS, ALL_FIXED_STS_BITS); + AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, ACPI_REGISTER_PM1_STATUS, + ACPI_BITMASK_ALL_FIXED_STATUS); + /* Clear the fixed events */ if (ACPI_VALID_ADDRESS (AcpiGbl_FADT->XPm1bEvtBlk.Address)) { AcpiOsWritePort ((ACPI_IO_ADDRESS) ACPI_GET_ADDRESS (AcpiGbl_FADT->XPm1bEvtBlk.Address), - ALL_FIXED_STS_BITS, 16); + ACPI_BITMASK_ALL_FIXED_STATUS, 16); } - /* now clear the GPE Bits */ + /* Clear the GPE Bits */ - if (AcpiGbl_FADT->Gpe0BlkLen) + for (GpeBlock = 0; GpeBlock < ACPI_MAX_GPE_BLOCKS; GpeBlock++) { - GpeLength = (UINT16) DIV_2 (AcpiGbl_FADT->Gpe0BlkLen); - - for (Index = 0; Index < GpeLength; Index++) + for (i = 0; i < AcpiGbl_GpeBlockInfo[GpeBlock].RegisterCount; i++) { - AcpiOsWritePort ((ACPI_IO_ADDRESS) ( - ACPI_GET_ADDRESS (AcpiGbl_FADT->XGpe0Blk.Address) + Index), - 0xFF, 8); - } - } - - if (AcpiGbl_FADT->Gpe1BlkLen) - { - GpeLength = (UINT16) DIV_2 (AcpiGbl_FADT->Gpe1BlkLen); - - for (Index = 0; Index < GpeLength; Index++) - { - AcpiOsWritePort ((ACPI_IO_ADDRESS) ( - ACPI_GET_ADDRESS (AcpiGbl_FADT->XGpe1Blk.Address) + Index), + AcpiOsWritePort ((ACPI_IO_ADDRESS) + (AcpiGbl_GpeBlockInfo[GpeBlock].BlockAddress + i), 0xFF, 8); } } - AcpiUtReleaseMutex (ACPI_MTX_HARDWARE); + (void) AcpiUtReleaseMutex (ACPI_MTX_HARDWARE); return_VOID; } /******************************************************************************* * - * FUNCTION: AcpiHwObtainSleepTypeRegisterData + * FUNCTION: AcpiHwGetSleepTypeData * - * PARAMETERS: SleepState - Numeric state requested - * *Slp_TypA - Pointer to byte to receive SLP_TYPa value - * *Slp_TypB - Pointer to byte to receive SLP_TYPb value + * PARAMETERS: SleepState - Numeric sleep state + * *SleepTypeA - Where SLP_TYPa is returned + * *SleepTypeB - Where SLP_TYPb is returned * * RETURN: Status - ACPI status * - * DESCRIPTION: AcpiHwObtainSleepTypeRegisterData() obtains the SLP_TYP and - * SLP_TYPb values for the sleep state requested. + * DESCRIPTION: Obtain the SLP_TYPa and SLP_TYPb values for the requested sleep + * state. * ******************************************************************************/ ACPI_STATUS -AcpiHwObtainSleepTypeRegisterData ( +AcpiHwGetSleepTypeData ( UINT8 SleepState, - UINT8 *Slp_TypA, - UINT8 *Slp_TypB) + UINT8 *SleepTypeA, + UINT8 *SleepTypeB) { ACPI_STATUS Status = AE_OK; ACPI_OPERAND_OBJECT *ObjDesc; - FUNCTION_TRACE ("HwObtainSleepTypeRegisterData"); + ACPI_FUNCTION_TRACE ("HwGetSleepTypeData"); /* * Validate parameters */ if ((SleepState > ACPI_S_STATES_MAX) || - !Slp_TypA || !Slp_TypB) + !SleepTypeA || !SleepTypeB) { return_ACPI_STATUS (AE_BAD_PARAMETER); } @@ -275,7 +238,7 @@ AcpiHwObtainSleepTypeRegisterData ( if (!ObjDesc) { - REPORT_ERROR (("Missing Sleep State object\n")); + ACPI_REPORT_ERROR (("Missing Sleep State object\n")); return_ACPI_STATUS (AE_NOT_EXIST); } @@ -286,7 +249,7 @@ AcpiHwObtainSleepTypeRegisterData ( */ /* Even though AcpiEvaluateObject resolves package references, - * NsEvaluate dpesn't. So, we do it here. + * NsEvaluate doesn't. So, we do it here. */ Status = AcpiUtResolvePackageReferences(ObjDesc); @@ -294,32 +257,26 @@ AcpiHwObtainSleepTypeRegisterData ( { /* Must have at least two elements */ - REPORT_ERROR (("Sleep State package does not have at least two elements\n")); - Status = AE_ERROR; + ACPI_REPORT_ERROR (("Sleep State package does not have at least two elements\n")); + Status = AE_AML_NO_OPERAND; } - - else if (((ObjDesc->Package.Elements[0])->Common.Type != - ACPI_TYPE_INTEGER) || - ((ObjDesc->Package.Elements[1])->Common.Type != - ACPI_TYPE_INTEGER)) + else if (((ObjDesc->Package.Elements[0])->Common.Type != ACPI_TYPE_INTEGER) || + ((ObjDesc->Package.Elements[1])->Common.Type != ACPI_TYPE_INTEGER)) { /* Must have two */ - REPORT_ERROR (("Sleep State package elements are not both of type Number\n")); - Status = AE_ERROR; + ACPI_REPORT_ERROR (("Sleep State package elements are not both of type Number\n")); + Status = AE_AML_OPERAND_TYPE; } - else { /* * Valid _Sx_ package size, type, and value */ - *Slp_TypA = (UINT8) (ObjDesc->Package.Elements[0])->Integer.Value; - - *Slp_TypB = (UINT8) (ObjDesc->Package.Elements[1])->Integer.Value; + *SleepTypeA = (UINT8) (ObjDesc->Package.Elements[0])->Integer.Value; + *SleepTypeB = (UINT8) (ObjDesc->Package.Elements[1])->Integer.Value; } - if (ACPI_FAILURE (Status)) { ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Bad Sleep object %p type %X\n", @@ -327,362 +284,231 @@ AcpiHwObtainSleepTypeRegisterData ( } AcpiUtRemoveReference (ObjDesc); - return_ACPI_STATUS (Status); } /******************************************************************************* * - * FUNCTION: AcpiHwRegisterBitAccess + * FUNCTION: AcpiHwGetRegisterBitMask + * + * PARAMETERS: RegisterId - index of ACPI Register to access + * + * RETURN: The bit mask to be used when accessing the register + * + * DESCRIPTION: Map RegisterId into a register bit mask. + * + ******************************************************************************/ + +ACPI_BIT_REGISTER_INFO * +AcpiHwGetBitRegisterInfo ( + UINT32 RegisterId) +{ + ACPI_FUNCTION_NAME ("HwGetBitRegisterInfo"); + + + if (RegisterId > ACPI_BITREG_MAX) + { + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Invalid BitRegister ID: %X\n", RegisterId)); + return (NULL); + } + + return (&AcpiGbl_BitRegisterInfo[RegisterId]); +} + + +/******************************************************************************* + * + * FUNCTION: AcpiHwBitRegisterRead * - * PARAMETERS: ReadWrite - Either ACPI_READ or ACPI_WRITE. + * PARAMETERS: RegisterId - index of ACPI Register to access * UseLock - Lock the hardware - * RegisterId - index of ACPI Register to access - * Value - (only used on write) value to write to the - * Register. Shifted all the way right. * - * RETURN: Value written to or read from specified Register. This value - * is shifted all the way right. + * RETURN: Value is read from specified Register. Value returned is + * normalized to bit0 (is shifted all the way right) * - * DESCRIPTION: Generic ACPI Register read/write function. + * DESCRIPTION: ACPI BitRegister read function. * ******************************************************************************/ UINT32 -AcpiHwRegisterBitAccess ( - NATIVE_UINT ReadWrite, - BOOLEAN UseLock, +AcpiHwBitRegisterRead ( UINT32 RegisterId, - ...) /* Value (only used on write) */ + UINT32 Flags) { UINT32 RegisterValue = 0; - UINT32 Mask = 0; - UINT32 Value = 0; - va_list marker; + ACPI_BIT_REGISTER_INFO *BitRegInfo; - FUNCTION_TRACE ("HwRegisterBitAccess"); + ACPI_FUNCTION_TRACE ("HwBitRegisterRead"); - if (ReadWrite == ACPI_WRITE) + if (Flags & ACPI_MTX_LOCK) { - va_start (marker, RegisterId); - Value = va_arg (marker, UINT32); - va_end (marker); + if (ACPI_FAILURE (AcpiUtAcquireMutex (ACPI_MTX_HARDWARE))) + { + return_VALUE (0); + } } - if (ACPI_MTX_LOCK == UseLock) + /* Get the info structure corresponding to the requested ACPI Register */ + + BitRegInfo = AcpiHwGetBitRegisterInfo (RegisterId); + if (!BitRegInfo) { - AcpiUtAcquireMutex (ACPI_MTX_HARDWARE); + return_ACPI_STATUS (AE_BAD_PARAMETER); } - /* - * Decode the Register ID - * Register id = Register block id | bit id - * - * Check bit id to fine locate Register offset. - * Check Mask to determine Register offset, and then read-write. - */ - switch (REGISTER_BLOCK_ID (RegisterId)) + RegisterValue = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, BitRegInfo->ParentRegister); + + if (Flags & ACPI_MTX_LOCK) { - case PM1_STS: + (void) AcpiUtReleaseMutex (ACPI_MTX_HARDWARE); + } - switch (RegisterId) - { - case TMR_STS: - Mask = TMR_STS_MASK; - break; + /* Normalize the value that was read */ - case BM_STS: - Mask = BM_STS_MASK; - break; + RegisterValue = ((RegisterValue & BitRegInfo->AccessBitMask) >> BitRegInfo->BitPosition); - case GBL_STS: - Mask = GBL_STS_MASK; - break; + ACPI_DEBUG_PRINT ((ACPI_DB_IO, "ACPI RegisterRead: got %X\n", RegisterValue)); + return_VALUE (RegisterValue); +} - case PWRBTN_STS: - Mask = PWRBTN_STS_MASK; - break; - case SLPBTN_STS: - Mask = SLPBTN_STS_MASK; - break; +/******************************************************************************* + * + * FUNCTION: AcpiHwBitRegisterWrite + * + * PARAMETERS: RegisterId - ID of ACPI BitRegister to access + * Value - (only used on write) value to write to the + * Register, NOT pre-normalized to the bit pos. + * Flags - Lock the hardware or not + * + * RETURN: Value written to from specified Register. This value + * is shifted all the way right. + * + * DESCRIPTION: ACPI Bit Register write function. + * + ******************************************************************************/ - case RTC_STS: - Mask = RTC_STS_MASK; - break; +UINT32 +AcpiHwBitRegisterWrite ( + UINT32 RegisterId, + UINT32 Value, + UINT32 Flags) +{ + UINT32 RegisterValue = 0; + ACPI_BIT_REGISTER_INFO *BitRegInfo; - case WAK_STS: - Mask = WAK_STS_MASK; - break; - default: - Mask = 0; - break; - } + ACPI_FUNCTION_TRACE_U32 ("HwBitRegisterWrite", RegisterId); - RegisterValue = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, PM1_STS); - if (ReadWrite == ACPI_WRITE) + if (Flags & ACPI_MTX_LOCK) + { + if (ACPI_FAILURE (AcpiUtAcquireMutex (ACPI_MTX_HARDWARE))) { - /* - * Status Registers are different from the rest. Clear by - * writing 1, writing 0 has no effect. So, the only relevent - * information is the single bit we're interested in, all - * others should be written as 0 so they will be left - * unchanged - */ - Value <<= AcpiHwGetBitShift (Mask); - Value &= Mask; - - if (Value) - { - AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, PM1_STS, - (UINT16) Value); - RegisterValue = 0; - } + return_VALUE (0); } + } - break; - - - case PM1_EN: - - switch (RegisterId) - { - case TMR_EN: - Mask = TMR_EN_MASK; - break; + /* Get the info structure corresponding to the requested ACPI Register */ - case GBL_EN: - Mask = GBL_EN_MASK; - break; + BitRegInfo = AcpiHwGetBitRegisterInfo (RegisterId); + if (!BitRegInfo) + { + return_ACPI_STATUS (AE_BAD_PARAMETER); + } - case PWRBTN_EN: - Mask = PWRBTN_EN_MASK; - break; + /* Always do a register read first so we can insert the new bits */ - case SLPBTN_EN: - Mask = SLPBTN_EN_MASK; - break; + RegisterValue = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, BitRegInfo->ParentRegister); - case RTC_EN: - Mask = RTC_EN_MASK; - break; + /* + * Decode the Register ID + * Register id = Register block id | bit id + * + * Check bit id to fine locate Register offset. + * Check Mask to determine Register offset, and then read-write. + */ + switch (BitRegInfo->ParentRegister) + { + case ACPI_REGISTER_PM1_STATUS: - default: - Mask = 0; - break; + /* + * Status Registers are different from the rest. Clear by + * writing 1, writing 0 has no effect. So, the only relevent + * information is the single bit we're interested in, all others should + * be written as 0 so they will be left unchanged + */ + Value = ACPI_REGISTER_PREPARE_BITS (Value, BitRegInfo->BitPosition, BitRegInfo->AccessBitMask); + if (Value) + { + AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, ACPI_REGISTER_PM1_STATUS, + (UINT16) Value); + RegisterValue = 0; } + break; - RegisterValue = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, PM1_EN); - if (ReadWrite == ACPI_WRITE) - { - RegisterValue &= ~Mask; - Value <<= AcpiHwGetBitShift (Mask); - Value &= Mask; - RegisterValue |= Value; + case ACPI_REGISTER_PM1_ENABLE: - AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, PM1_EN, (UINT16) RegisterValue); - } + ACPI_REGISTER_INSERT_VALUE (RegisterValue, BitRegInfo->BitPosition, BitRegInfo->AccessBitMask, Value); + AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, ACPI_REGISTER_PM1_ENABLE, (UINT16) RegisterValue); break; - case PM1_CONTROL: - - switch (RegisterId) - { - case SCI_EN: - Mask = SCI_EN_MASK; - break; - - case BM_RLD: - Mask = BM_RLD_MASK; - break; - - case GBL_RLS: - Mask = GBL_RLS_MASK; - break; - - case SLP_TYPE_A: - case SLP_TYPE_B: - Mask = SLP_TYPE_X_MASK; - break; - - case SLP_EN: - Mask = SLP_EN_MASK; - break; - - default: - Mask = 0; - break; - } - + case ACPI_REGISTER_PM1_CONTROL: /* * Read the PM1 Control register. * Note that at this level, the fact that there are actually TWO - * registers (A and B) and that B may not exist, are abstracted. + * registers (A and B - and that B may not exist) is abstracted. */ - RegisterValue = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, PM1_CONTROL); - ACPI_DEBUG_PRINT ((ACPI_DB_IO, "PM1 control: Read %X\n", RegisterValue)); - if (ReadWrite == ACPI_WRITE) - { - RegisterValue &= ~Mask; - Value <<= AcpiHwGetBitShift (Mask); - Value &= Mask; - RegisterValue |= Value; - - /* - * SLP_TYPE_x Registers are written differently - * than any other control Registers with - * respect to A and B Registers. The value - * for A may be different than the value for B - * - * Therefore, pass the RegisterId, not just generic PM1_CONTROL, - * because we need to do different things. Yuck. - */ - AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, RegisterId, - (UINT16) RegisterValue); - } - break; - + ACPI_REGISTER_INSERT_VALUE (RegisterValue, BitRegInfo->BitPosition, BitRegInfo->AccessBitMask, Value); - case PM2_CONTROL: + AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, RegisterId, + (UINT16) RegisterValue); + break; - switch (RegisterId) - { - case ARB_DIS: - Mask = ARB_DIS_MASK; - break; - default: - Mask = 0; - break; - } + case ACPI_REGISTER_PM2_CONTROL: - RegisterValue = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, PM2_CONTROL); + RegisterValue = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, ACPI_REGISTER_PM2_CONTROL); ACPI_DEBUG_PRINT ((ACPI_DB_IO, "PM2 control: Read %X from %8.8X%8.8X\n", - RegisterValue, HIDWORD(AcpiGbl_FADT->XPm2CntBlk.Address), - LODWORD(AcpiGbl_FADT->XPm2CntBlk.Address))); - - if (ReadWrite == ACPI_WRITE) - { - RegisterValue &= ~Mask; - Value <<= AcpiHwGetBitShift (Mask); - Value &= Mask; - RegisterValue |= Value; - - ACPI_DEBUG_PRINT ((ACPI_DB_IO, "About to write %04X to %8.8X%8.8X\n", - RegisterValue, - HIDWORD(AcpiGbl_FADT->XPm2CntBlk.Address), - LODWORD(AcpiGbl_FADT->XPm2CntBlk.Address))); - - AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, - PM2_CONTROL, (UINT8) (RegisterValue)); - } - break; + RegisterValue, ACPI_HIDWORD (AcpiGbl_FADT->XPm2CntBlk.Address), + ACPI_LODWORD (AcpiGbl_FADT->XPm2CntBlk.Address))); + ACPI_REGISTER_INSERT_VALUE (RegisterValue, BitRegInfo->BitPosition, BitRegInfo->AccessBitMask, Value); - case PM_TIMER: - - Mask = TMR_VAL_MASK; - RegisterValue = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, - PM_TIMER); - ACPI_DEBUG_PRINT ((ACPI_DB_IO, "PM_TIMER: Read %X from %8.8X%8.8X\n", + ACPI_DEBUG_PRINT ((ACPI_DB_IO, "About to write %04X to %8.8X%8.8X\n", RegisterValue, - HIDWORD(AcpiGbl_FADT->XPmTmrBlk.Address), - LODWORD(AcpiGbl_FADT->XPmTmrBlk.Address))); - - break; - - - case GPE1_EN_BLOCK: - case GPE1_STS_BLOCK: - case GPE0_EN_BLOCK: - case GPE0_STS_BLOCK: - - /* Determine the bit to be accessed - * - * (UINT32) RegisterId: - * 31 24 16 8 0 - * +--------+--------+--------+--------+ - * | gpe_block_id | gpe_bit_number | - * +--------+--------+--------+--------+ - * - * gpe_block_id is one of GPE[01]_EN_BLOCK and GPE[01]_STS_BLOCK - * gpe_bit_number is relative from the gpe_block (0x00~0xFF) - */ - Mask = REGISTER_BIT_ID(RegisterId); /* gpe_bit_number */ - RegisterId = REGISTER_BLOCK_ID(RegisterId) | (Mask >> 3); - Mask = AcpiGbl_DecodeTo8bit [Mask % 8]; - - /* - * The base address of the GPE 0 Register Block - * Plus 1/2 the length of the GPE 0 Register Block - * The enable Register is the Register following the Status Register - * and each Register is defined as 1/2 of the total Register Block - */ - - /* - * This sets the bit within EnableBit that needs to be written to - * the Register indicated in Mask to a 1, all others are 0 - */ - - /* Now get the current Enable Bits in the selected Reg */ - - RegisterValue = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, RegisterId); - ACPI_DEBUG_PRINT ((ACPI_DB_IO, "GPE Enable bits: Read %X from %X\n", - RegisterValue, RegisterId)); + ACPI_HIDWORD (AcpiGbl_FADT->XPm2CntBlk.Address), + ACPI_LODWORD (AcpiGbl_FADT->XPm2CntBlk.Address))); - if (ReadWrite == ACPI_WRITE) - { - RegisterValue &= ~Mask; - Value <<= AcpiHwGetBitShift (Mask); - Value &= Mask; - RegisterValue |= Value; - - /* - * This write will put the Action state into the General Purpose - * Enable Register indexed by the value in Mask - */ - ACPI_DEBUG_PRINT ((ACPI_DB_IO, "About to write %04X to %04X\n", - RegisterValue, RegisterId)); - AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, RegisterId, - (UINT8) RegisterValue); - RegisterValue = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, - RegisterId); - } + AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, + ACPI_REGISTER_PM2_CONTROL, (UINT8) (RegisterValue)); break; - case SMI_CMD_BLOCK: - case PROCESSOR_BLOCK: - - /* Not used by any callers at this time - therefore, not implemented */ - default: - - Mask = 0; break; } - if (ACPI_MTX_LOCK == UseLock) { - AcpiUtReleaseMutex (ACPI_MTX_HARDWARE); + if (Flags & ACPI_MTX_LOCK) + { + (void) AcpiUtReleaseMutex (ACPI_MTX_HARDWARE); } + /* Normalize the value that was read */ - RegisterValue &= Mask; - RegisterValue >>= AcpiHwGetBitShift (Mask); + RegisterValue = ((RegisterValue & BitRegInfo->AccessBitMask) >> BitRegInfo->BitPosition); - ACPI_DEBUG_PRINT ((ACPI_DB_IO, "Register I/O: returning %X\n", RegisterValue)); + ACPI_DEBUG_PRINT ((ACPI_DB_IO, "ACPI RegisterWrite actual %X\n", RegisterValue)); return_VALUE (RegisterValue); } @@ -710,81 +536,53 @@ AcpiHwRegisterRead ( UINT32 BankOffset; - FUNCTION_TRACE ("HwRegisterRead"); + ACPI_FUNCTION_TRACE ("HwRegisterRead"); if (ACPI_MTX_LOCK == UseLock) { - AcpiUtAcquireMutex (ACPI_MTX_HARDWARE); + if (ACPI_FAILURE (AcpiUtAcquireMutex (ACPI_MTX_HARDWARE))) + { + return_VALUE (0); + } } - - switch (REGISTER_BLOCK_ID(RegisterId)) + switch (RegisterId) { - case PM1_STS: /* 16-bit access */ + case ACPI_REGISTER_PM1_STATUS: /* 16-bit access */ Value = AcpiHwLowLevelRead (16, &AcpiGbl_FADT->XPm1aEvtBlk, 0); Value |= AcpiHwLowLevelRead (16, &AcpiGbl_FADT->XPm1bEvtBlk, 0); break; - case PM1_EN: /* 16-bit access*/ + case ACPI_REGISTER_PM1_ENABLE: /* 16-bit access*/ - BankOffset = DIV_2 (AcpiGbl_FADT->Pm1EvtLen); + BankOffset = ACPI_DIV_2 (AcpiGbl_FADT->Pm1EvtLen); Value = AcpiHwLowLevelRead (16, &AcpiGbl_FADT->XPm1aEvtBlk, BankOffset); Value |= AcpiHwLowLevelRead (16, &AcpiGbl_FADT->XPm1bEvtBlk, BankOffset); break; - case PM1_CONTROL: /* 16-bit access */ + case ACPI_REGISTER_PM1_CONTROL: /* 16-bit access */ Value = AcpiHwLowLevelRead (16, &AcpiGbl_FADT->XPm1aCntBlk, 0); Value |= AcpiHwLowLevelRead (16, &AcpiGbl_FADT->XPm1bCntBlk, 0); break; - case PM2_CONTROL: /* 8-bit access */ + case ACPI_REGISTER_PM2_CONTROL: /* 8-bit access */ Value = AcpiHwLowLevelRead (8, &AcpiGbl_FADT->XPm2CntBlk, 0); break; - case PM_TIMER: /* 32-bit access */ + case ACPI_REGISTER_PM_TIMER: /* 32-bit access */ Value = AcpiHwLowLevelRead (32, &AcpiGbl_FADT->XPmTmrBlk, 0); break; - - /* - * For the GPE? Blocks, the lower word of RegisterId contains the - * byte offset for which to read, as each part of each block may be - * several bytes long. - */ - case GPE0_STS_BLOCK: /* 8-bit access */ - - BankOffset = REGISTER_BIT_ID(RegisterId); - Value = AcpiHwLowLevelRead (8, &AcpiGbl_FADT->XGpe0Blk, BankOffset); - break; - - case GPE0_EN_BLOCK: /* 8-bit access */ - - BankOffset = DIV_2 (AcpiGbl_FADT->Gpe0BlkLen) + REGISTER_BIT_ID(RegisterId); - Value = AcpiHwLowLevelRead (8, &AcpiGbl_FADT->XGpe0Blk, BankOffset); - break; - - case GPE1_STS_BLOCK: /* 8-bit access */ - - BankOffset = REGISTER_BIT_ID(RegisterId); - Value = AcpiHwLowLevelRead (8, &AcpiGbl_FADT->XGpe1Blk, BankOffset); - break; - - case GPE1_EN_BLOCK: /* 8-bit access */ - - BankOffset = DIV_2 (AcpiGbl_FADT->Gpe1BlkLen) + REGISTER_BIT_ID(RegisterId); - Value = AcpiHwLowLevelRead (8, &AcpiGbl_FADT->XGpe1Blk, BankOffset); - break; - - case SMI_CMD_BLOCK: /* 8bit */ + case ACPI_REGISTER_SMI_COMMAND_BLOCK: /* 8-bit access */ AcpiOsReadPort (AcpiGbl_FADT->SmiCmd, &Value, 8); break; @@ -794,10 +592,9 @@ AcpiHwRegisterRead ( break; } - if (ACPI_MTX_LOCK == UseLock) { - AcpiUtReleaseMutex (ACPI_MTX_HARDWARE); + (void) AcpiUtReleaseMutex (ACPI_MTX_HARDWARE); } return_VALUE (Value); @@ -827,95 +624,68 @@ AcpiHwRegisterWrite ( UINT32 BankOffset; - FUNCTION_TRACE ("HwRegisterWrite"); + ACPI_FUNCTION_TRACE ("HwRegisterWrite"); if (ACPI_MTX_LOCK == UseLock) { - AcpiUtAcquireMutex (ACPI_MTX_HARDWARE); + if (ACPI_FAILURE (AcpiUtAcquireMutex (ACPI_MTX_HARDWARE))) + { + return_VOID; + } } - - switch (REGISTER_BLOCK_ID (RegisterId)) + switch (RegisterId) { - case PM1_STS: /* 16-bit access */ + case ACPI_REGISTER_PM1_STATUS: /* 16-bit access */ AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1aEvtBlk, 0); AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1bEvtBlk, 0); break; - case PM1_EN: /* 16-bit access*/ + case ACPI_REGISTER_PM1_ENABLE: /* 16-bit access*/ - BankOffset = DIV_2 (AcpiGbl_FADT->Pm1EvtLen); + BankOffset = ACPI_DIV_2 (AcpiGbl_FADT->Pm1EvtLen); AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1aEvtBlk, BankOffset); AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1bEvtBlk, BankOffset); break; - case PM1_CONTROL: /* 16-bit access */ + case ACPI_REGISTER_PM1_CONTROL: /* 16-bit access */ AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1aCntBlk, 0); AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1bCntBlk, 0); break; - case PM1A_CONTROL: /* 16-bit access */ + case ACPI_REGISTER_PM1A_CONTROL: /* 16-bit access */ AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1aCntBlk, 0); break; - case PM1B_CONTROL: /* 16-bit access */ + case ACPI_REGISTER_PM1B_CONTROL: /* 16-bit access */ AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1bCntBlk, 0); break; - case PM2_CONTROL: /* 8-bit access */ + case ACPI_REGISTER_PM2_CONTROL: /* 8-bit access */ AcpiHwLowLevelWrite (8, Value, &AcpiGbl_FADT->XPm2CntBlk, 0); break; - case PM_TIMER: /* 32-bit access */ + case ACPI_REGISTER_PM_TIMER: /* 32-bit access */ AcpiHwLowLevelWrite (32, Value, &AcpiGbl_FADT->XPmTmrBlk, 0); break; - case GPE0_STS_BLOCK: /* 8-bit access */ - - BankOffset = REGISTER_BIT_ID(RegisterId); - AcpiHwLowLevelWrite (8, Value, &AcpiGbl_FADT->XGpe0Blk, BankOffset); - break; - - - case GPE0_EN_BLOCK: /* 8-bit access */ - - BankOffset = DIV_2 (AcpiGbl_FADT->Gpe0BlkLen) + REGISTER_BIT_ID(RegisterId); - AcpiHwLowLevelWrite (8, Value, &AcpiGbl_FADT->XGpe0Blk, BankOffset); - break; - + case ACPI_REGISTER_SMI_COMMAND_BLOCK: /* 8-bit access */ - case GPE1_STS_BLOCK: /* 8-bit access */ - - BankOffset = REGISTER_BIT_ID(RegisterId); - AcpiHwLowLevelWrite (8, Value, &AcpiGbl_FADT->XGpe1Blk, BankOffset); - break; - - - case GPE1_EN_BLOCK: /* 8-bit access */ - - BankOffset = DIV_2 (AcpiGbl_FADT->Gpe1BlkLen) + REGISTER_BIT_ID(RegisterId); - AcpiHwLowLevelWrite (8, Value, &AcpiGbl_FADT->XGpe1Blk, BankOffset); - break; - - - case SMI_CMD_BLOCK: /* 8bit */ - - /* For 2.0, SMI_CMD is always in IO space */ - /* TBD: what about 1.0? 0.71? */ + /* SMI_CMD is currently always in IO space */ AcpiOsWritePort (AcpiGbl_FADT->SmiCmd, Value, 8); break; @@ -926,10 +696,9 @@ AcpiHwRegisterWrite ( break; } - if (ACPI_MTX_LOCK == UseLock) { - AcpiUtReleaseMutex (ACPI_MTX_HARDWARE); + (void) AcpiUtReleaseMutex (ACPI_MTX_HARDWARE); } return_VOID; @@ -963,7 +732,7 @@ AcpiHwLowLevelRead ( UINT16 PciRegister; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); /* @@ -976,7 +745,6 @@ AcpiHwLowLevelRead ( return 0; } - /* * Three address spaces supported: * Memory, Io, or PCI config. @@ -1044,7 +812,7 @@ AcpiHwLowLevelWrite ( UINT16 PciRegister; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); /* @@ -1057,7 +825,6 @@ AcpiHwLowLevelWrite ( return; } - /* * Three address spaces supported: * Memory, Io, or PCI config. diff --git a/sys/contrib/dev/acpica/hwsleep.c b/sys/contrib/dev/acpica/hwsleep.c index 8a18138bb156..0db2df67e861 100644 --- a/sys/contrib/dev/acpica/hwsleep.c +++ b/sys/contrib/dev/acpica/hwsleep.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Name: hwsleep.c - ACPI Hardware Sleep/Wake Interface - * $Revision: 25 $ + * $Revision: 35 $ * *****************************************************************************/ @@ -10,7 +10,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -120,10 +120,7 @@ #include "achware.h" #define _COMPONENT ACPI_HARDWARE - MODULE_NAME ("hwsleep") - -static UINT8 SleepTypeA; -static UINT8 SleepTypeB; + ACPI_MODULE_NAME ("hwsleep") /****************************************************************************** @@ -133,7 +130,7 @@ static UINT8 SleepTypeB; * PARAMETERS: PhysicalAddress - Physical address of ACPI real mode * entry point. * - * RETURN: AE_OK or AE_ERROR + * RETURN: Status * * DESCRIPTION: Access function for dFirmwareWakingVector field in FACS * @@ -144,25 +141,18 @@ AcpiSetFirmwareWakingVector ( ACPI_PHYSICAL_ADDRESS PhysicalAddress) { - FUNCTION_TRACE ("AcpiSetFirmwareWakingVector"); - + ACPI_FUNCTION_TRACE ("AcpiSetFirmwareWakingVector"); - /* Make sure that we have an FACS */ - - if (!AcpiGbl_FACS) - { - return_ACPI_STATUS (AE_NO_ACPI_TABLES); - } /* Set the vector */ - if (AcpiGbl_FACS->VectorWidth == 32) + if (AcpiGbl_CommonFACS.VectorWidth == 32) { - * (UINT32 *) AcpiGbl_FACS->FirmwareWakingVector = (UINT32) PhysicalAddress; + *(UINT32 *) AcpiGbl_CommonFACS.FirmwareWakingVector = (UINT32) PhysicalAddress; } else { - *AcpiGbl_FACS->FirmwareWakingVector = PhysicalAddress; + *AcpiGbl_CommonFACS.FirmwareWakingVector = PhysicalAddress; } return_ACPI_STATUS (AE_OK); @@ -179,7 +169,7 @@ AcpiSetFirmwareWakingVector ( * * RETURN: Status * - * DESCRIPTION: Access function for dFirmwareWakingVector field in FACS + * DESCRIPTION: Access function for FirmwareWakingVector field in FACS * ******************************************************************************/ @@ -188,7 +178,7 @@ AcpiGetFirmwareWakingVector ( ACPI_PHYSICAL_ADDRESS *PhysicalAddress) { - FUNCTION_TRACE ("AcpiGetFirmwareWakingVector"); + ACPI_FUNCTION_TRACE ("AcpiGetFirmwareWakingVector"); if (!PhysicalAddress) @@ -196,22 +186,15 @@ AcpiGetFirmwareWakingVector ( return_ACPI_STATUS (AE_BAD_PARAMETER); } - /* Make sure that we have an FACS */ - - if (!AcpiGbl_FACS) - { - return_ACPI_STATUS (AE_NO_ACPI_TABLES); - } - /* Get the vector */ - if (AcpiGbl_FACS->VectorWidth == 32) + if (AcpiGbl_CommonFACS.VectorWidth == 32) { - *PhysicalAddress = * (UINT32 *) AcpiGbl_FACS->FirmwareWakingVector; + *PhysicalAddress = *(UINT32 *) AcpiGbl_CommonFACS.FirmwareWakingVector; } else { - *PhysicalAddress = *AcpiGbl_FACS->FirmwareWakingVector; + *PhysicalAddress = *AcpiGbl_CommonFACS.FirmwareWakingVector; } return_ACPI_STATUS (AE_OK); @@ -241,35 +224,46 @@ AcpiEnterSleepStatePrep ( ACPI_OBJECT_LIST ArgList; ACPI_OBJECT Arg; - FUNCTION_TRACE ("AcpiEnterSleepStatePrep"); + + ACPI_FUNCTION_TRACE ("AcpiEnterSleepStatePrep"); + /* * _PSW methods could be run here to enable wake-on keyboard, LAN, etc. */ - Status = AcpiHwObtainSleepTypeRegisterData (SleepState, &SleepTypeA, &SleepTypeB); - if (!ACPI_SUCCESS (Status)) + Status = AcpiHwGetSleepTypeData (SleepState, + &AcpiGbl_SleepTypeA, &AcpiGbl_SleepTypeB); + if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } - /* run the _PTS and _GTS methods */ + /* Setup parameter object */ - MEMSET(&ArgList, 0, sizeof(ArgList)); ArgList.Count = 1; ArgList.Pointer = &Arg; - MEMSET(&Arg, 0, sizeof(Arg)); Arg.Type = ACPI_TYPE_INTEGER; Arg.Integer.Value = SleepState; - AcpiEvaluateObject (NULL, "\\_PTS", &ArgList, NULL); - AcpiEvaluateObject (NULL, "\\_GTS", &ArgList, NULL); + /* Run the _PTS and _GTS methods */ + + Status = AcpiEvaluateObject (NULL, "\\_PTS", &ArgList, NULL); + if (ACPI_FAILURE (Status) && Status != AE_NOT_FOUND) + { + return_ACPI_STATUS (Status); + } + + Status = AcpiEvaluateObject (NULL, "\\_GTS", &ArgList, NULL); + if (ACPI_FAILURE (Status) && Status != AE_NOT_FOUND) + { + return_ACPI_STATUS (Status); + } return_ACPI_STATUS (AE_OK); } - /****************************************************************************** * * FUNCTION: AcpiEnterSleepState @@ -285,77 +279,84 @@ AcpiEnterSleepStatePrep ( ACPI_STATUS AcpiEnterSleepState ( - UINT8 SleepState) + UINT8 SleepState) { - UINT16 PM1AControl; - UINT16 PM1BControl; + UINT16 PM1AControl; + UINT16 PM1BControl; + ACPI_BIT_REGISTER_INFO *SleepTypeRegInfo; + ACPI_BIT_REGISTER_INFO *SleepEnableRegInfo; - FUNCTION_TRACE ("AcpiEnterSleepState"); + ACPI_FUNCTION_TRACE ("AcpiEnterSleepState"); - if ((SleepTypeA > ACPI_SLEEP_TYPE_MAX) || - (SleepTypeB > ACPI_SLEEP_TYPE_MAX)) + + if ((AcpiGbl_SleepTypeA > ACPI_SLEEP_TYPE_MAX) || + (AcpiGbl_SleepTypeB > ACPI_SLEEP_TYPE_MAX)) { - REPORT_ERROR (("Sleep values out of range: A=%x B=%x\n", - SleepTypeA, SleepTypeB)); - return_ACPI_STATUS (AE_ERROR); + ACPI_REPORT_ERROR (("Sleep values out of range: A=%x B=%x\n", + AcpiGbl_SleepTypeA, AcpiGbl_SleepTypeB)); + return_ACPI_STATUS (AE_AML_OPERAND_VALUE); } - /* clear wake status */ - AcpiHwRegisterBitAccess (ACPI_WRITE, ACPI_MTX_LOCK, WAK_STS, 1); + SleepTypeRegInfo = AcpiHwGetBitRegisterInfo (ACPI_BITREG_SLEEP_TYPE_A); + SleepEnableRegInfo = AcpiHwGetBitRegisterInfo (ACPI_BITREG_SLEEP_ENABLE); + + /* Clear wake status */ + AcpiHwBitRegisterWrite (ACPI_BITREG_WAKE_STATUS, 1, ACPI_MTX_LOCK); AcpiHwClearAcpiStatus(); - /* disable arbitration here? */ + /* TBD: Disable arbitration here? */ AcpiHwDisableNonWakeupGpes(); - PM1AControl = (UINT16) AcpiHwRegisterRead (ACPI_MTX_LOCK, PM1_CONTROL); + /* Get current value of PM1A control */ + PM1AControl = (UINT16) AcpiHwRegisterRead (ACPI_MTX_LOCK, ACPI_REGISTER_PM1_CONTROL); ACPI_DEBUG_PRINT ((ACPI_DB_OK, "Entering S%d\n", SleepState)); - /* mask off SLP_EN and SLP_TYP fields */ + /* Clear SLP_EN and SLP_TYP fields */ - PM1AControl &= ~(SLP_TYPE_X_MASK | SLP_EN_MASK); + PM1AControl &= ~(SleepTypeRegInfo->AccessBitMask | SleepEnableRegInfo->AccessBitMask); PM1BControl = PM1AControl; - /* mask in SLP_TYP */ + /* Insert SLP_TYP bits */ - PM1AControl |= (SleepTypeA << AcpiHwGetBitShift (SLP_TYPE_X_MASK)); - PM1BControl |= (SleepTypeB << AcpiHwGetBitShift (SLP_TYPE_X_MASK)); + PM1AControl |= (AcpiGbl_SleepTypeA << SleepTypeRegInfo->BitPosition); + PM1BControl |= (AcpiGbl_SleepTypeB << SleepTypeRegInfo->BitPosition); - /* write #1: fill in SLP_TYP data */ + /* Write #1: fill in SLP_TYP data */ - AcpiHwRegisterWrite (ACPI_MTX_LOCK, PM1A_CONTROL, PM1AControl); - AcpiHwRegisterWrite (ACPI_MTX_LOCK, PM1B_CONTROL, PM1BControl); + AcpiHwRegisterWrite (ACPI_MTX_LOCK, ACPI_REGISTER_PM1A_CONTROL, PM1AControl); + AcpiHwRegisterWrite (ACPI_MTX_LOCK, ACPI_REGISTER_PM1B_CONTROL, PM1BControl); - /* mask in SLP_EN */ + /* Insert SLP_ENABLE bit */ - PM1AControl |= (1 << AcpiHwGetBitShift (SLP_EN_MASK)); - PM1BControl |= (1 << AcpiHwGetBitShift (SLP_EN_MASK)); + PM1AControl |= SleepEnableRegInfo->AccessBitMask; + PM1BControl |= SleepEnableRegInfo->AccessBitMask; - /* write #2: SLP_TYP + SLP_EN */ + /* Write #2: SLP_TYP + SLP_EN */ - AcpiHwRegisterWrite (ACPI_MTX_LOCK, PM1A_CONTROL, PM1AControl); - AcpiHwRegisterWrite (ACPI_MTX_LOCK, PM1B_CONTROL, PM1BControl); + AcpiHwRegisterWrite (ACPI_MTX_LOCK, ACPI_REGISTER_PM1A_CONTROL, PM1AControl); + AcpiHwRegisterWrite (ACPI_MTX_LOCK, ACPI_REGISTER_PM1B_CONTROL, PM1BControl); /* * Wait a second, then try again. This is to get S4/5 to work on all machines. */ if (SleepState > ACPI_STATE_S3) { - AcpiOsStall(1000000); + AcpiOsStall (1000000); - AcpiHwRegisterWrite (ACPI_MTX_LOCK, PM1_CONTROL, - (1 << AcpiHwGetBitShift (SLP_EN_MASK))); + AcpiHwRegisterWrite (ACPI_MTX_LOCK, ACPI_REGISTER_PM1_CONTROL, + SleepEnableRegInfo->AccessBitMask); } - /* wait until we enter sleep state */ + /* Wait until we enter sleep state */ - while (!AcpiHwRegisterBitAccess (ACPI_READ, ACPI_MTX_LOCK, WAK_STS)) + while (!AcpiHwBitRegisterRead (ACPI_BITREG_WAKE_STATUS, ACPI_MTX_LOCK)) { - /* spin until we wake */ + /* Spin until we wake */ } return_ACPI_STATUS (AE_OK); @@ -379,23 +380,37 @@ AcpiLeaveSleepState ( { ACPI_OBJECT_LIST ArgList; ACPI_OBJECT Arg; + ACPI_STATUS Status; + + ACPI_FUNCTION_TRACE ("AcpiLeaveSleepState"); - FUNCTION_TRACE ("AcpiLeaveSleepState"); /* Ensure EnterSleepStatePrep -> EnterSleepState ordering */ - SleepTypeA = ACPI_SLEEP_TYPE_INVALID; - MEMSET (&ArgList, 0, sizeof(ArgList)); + AcpiGbl_SleepTypeA = ACPI_SLEEP_TYPE_INVALID; + + /* Setup parameter object */ + ArgList.Count = 1; ArgList.Pointer = &Arg; - MEMSET (&Arg, 0, sizeof(Arg)); Arg.Type = ACPI_TYPE_INTEGER; Arg.Integer.Value = SleepState; - AcpiEvaluateObject (NULL, "\\_BFS", &ArgList, NULL); - AcpiEvaluateObject (NULL, "\\_WAK", &ArgList, NULL); + /* Ignore any errors from these methods */ + + Status = AcpiEvaluateObject (NULL, "\\_BFS", &ArgList, NULL); + if (ACPI_FAILURE (Status) && Status != AE_NOT_FOUND) + { + ACPI_REPORT_ERROR (("Method _BFS failed, %s\n", AcpiFormatException (Status))); + } + + Status = AcpiEvaluateObject (NULL, "\\_WAK", &ArgList, NULL); + if (ACPI_FAILURE (Status) && Status != AE_NOT_FOUND) + { + ACPI_REPORT_ERROR (("Method _WAK failed, %s\n", AcpiFormatException (Status))); + } /* _WAK returns stuff - do we want to look at it? */ diff --git a/sys/contrib/dev/acpica/hwtimer.c b/sys/contrib/dev/acpica/hwtimer.c index 4a031176e6ee..8339b2787022 100644 --- a/sys/contrib/dev/acpica/hwtimer.c +++ b/sys/contrib/dev/acpica/hwtimer.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Name: hwtimer.c - ACPI Power Management Timer Interface - * $Revision: 14 $ + * $Revision: 19 $ * *****************************************************************************/ @@ -10,7 +10,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -119,7 +119,7 @@ #include "achware.h" #define _COMPONENT ACPI_HARDWARE - MODULE_NAME ("hwtimer") + ACPI_MODULE_NAME ("hwtimer") /****************************************************************************** @@ -138,7 +138,7 @@ ACPI_STATUS AcpiGetTimerResolution ( UINT32 *Resolution) { - FUNCTION_TRACE ("AcpiGetTimerResolution"); + ACPI_FUNCTION_TRACE ("AcpiGetTimerResolution"); if (!Resolution) @@ -150,7 +150,6 @@ AcpiGetTimerResolution ( { *Resolution = 24; } - else { *Resolution = 32; @@ -176,7 +175,7 @@ ACPI_STATUS AcpiGetTimer ( UINT32 *Ticks) { - FUNCTION_TRACE ("AcpiGetTimer"); + ACPI_FUNCTION_TRACE ("AcpiGetTimer"); if (!Ticks) @@ -224,13 +223,12 @@ AcpiGetTimerDuration ( UINT32 *TimeElapsed) { UINT32 DeltaTicks = 0; - UINT32 Seconds = 0; - UINT32 Milliseconds = 0; - UINT32 Microseconds = 0; - UINT32 Remainder = 0; + UINT64_OVERLAY NormalizedTicks; + ACPI_STATUS Status; + ACPI_INTEGER OutQuotient; - FUNCTION_TRACE ("AcpiGetTimerDuration"); + ACPI_FUNCTION_TRACE ("AcpiGetTimerDuration"); if (!TimeElapsed) @@ -247,24 +245,21 @@ AcpiGetTimerDuration ( { DeltaTicks = EndTicks - StartTicks; } - else if (StartTicks > EndTicks) { - /* 24-bit Timer */ - if (0 == AcpiGbl_FADT->TmrValExt) { + /* 24-bit Timer */ + DeltaTicks = (((0x00FFFFFF - StartTicks) + EndTicks) & 0x00FFFFFF); } - - /* 32-bit Timer */ - else { + /* 32-bit Timer */ + DeltaTicks = (0xFFFFFFFF - StartTicks) + EndTicks; } } - else { *TimeElapsed = 0; @@ -274,49 +269,18 @@ AcpiGetTimerDuration ( /* * Compute Duration: * ----------------- - * Since certain compilers (gcc/Linux, argh!) don't support 64-bit - * divides in kernel-space we have to do some trickery to preserve - * accuracy while using 32-bit math. - * - * TBD: Change to use 64-bit math when supported. * - * The process is as follows: - * 1. Compute the number of seconds by dividing Delta Ticks by - * the timer frequency. - * 2. Compute the number of milliseconds in the remainder from step #1 - * by multiplying by 1000 and then dividing by the timer frequency. - * 3. Compute the number of microseconds in the remainder from step #2 - * by multiplying by 1000 and then dividing by the timer frequency. - * 4. Add the results from steps 1, 2, and 3 to get the total duration. + * Requires a 64-bit divide: * - * Example: The time elapsed for DeltaTicks = 0xFFFFFFFF should be - * 1199864031 microseconds. This is computed as follows: - * Step #1: Seconds = 1199; Remainder = 3092840 - * Step #2: Milliseconds = 864; Remainder = 113120 - * Step #3: Microseconds = 31; Remainder = <don't care!> + * TimeElapsed = (DeltaTicks * 1000000) / PM_TIMER_FREQUENCY; */ + NormalizedTicks.Full = ((UINT64) DeltaTicks) * 1000000; - /* Step #1 */ + Status = AcpiUtShortDivide (&NormalizedTicks.Full, PM_TIMER_FREQUENCY, + &OutQuotient, NULL); - Seconds = DeltaTicks / PM_TIMER_FREQUENCY; - Remainder = DeltaTicks % PM_TIMER_FREQUENCY; - - /* Step #2 */ - - Milliseconds = (Remainder * 1000) / PM_TIMER_FREQUENCY; - Remainder = (Remainder * 1000) % PM_TIMER_FREQUENCY; - - /* Step #3 */ - - Microseconds = (Remainder * 1000) / PM_TIMER_FREQUENCY; - - /* Step #4 */ - - *TimeElapsed = Seconds * 1000000; - *TimeElapsed += Milliseconds * 1000; - *TimeElapsed += Microseconds; - - return_ACPI_STATUS (AE_OK); + *TimeElapsed = (UINT32) OutQuotient; + return_ACPI_STATUS (Status); } diff --git a/sys/contrib/dev/acpica/nsaccess.c b/sys/contrib/dev/acpica/nsaccess.c index c52a62ac3603..fb65f465e53f 100644 --- a/sys/contrib/dev/acpica/nsaccess.c +++ b/sys/contrib/dev/acpica/nsaccess.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: nsaccess - Top-level functions for accessing ACPI namespace - * $Revision: 141 $ + * $Revision: 152 $ * ******************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -124,7 +124,7 @@ #define _COMPONENT ACPI_NAMESPACE - MODULE_NAME ("nsaccess") + ACPI_MODULE_NAME ("nsaccess") /******************************************************************************* @@ -144,16 +144,20 @@ ACPI_STATUS AcpiNsRootInitialize (void) { - ACPI_STATUS Status = AE_OK; - const PREDEFINED_NAMES *InitVal = NULL; - ACPI_NAMESPACE_NODE *NewNode; - ACPI_OPERAND_OBJECT *ObjDesc; + ACPI_STATUS Status; + const ACPI_PREDEFINED_NAMES *InitVal = NULL; + ACPI_NAMESPACE_NODE *NewNode; + ACPI_OPERAND_OBJECT *ObjDesc; - FUNCTION_TRACE ("NsRootInitialize"); + ACPI_FUNCTION_TRACE ("NsRootInitialize"); - AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } /* * The global root ptr is initially NULL, so a non-NULL value indicates @@ -173,13 +177,13 @@ AcpiNsRootInitialize (void) /* Enter the pre-defined names in the name table */ - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Entering predefined entries into namespace\n")); + ACPI_DEBUG_PRINT ((ACPI_DB_INFO, + "Entering predefined entries into namespace\n")); for (InitVal = AcpiGbl_PreDefinedNames; InitVal->Name; InitVal++) { Status = AcpiNsLookup (NULL, InitVal->Name, InitVal->Type, - IMODE_LOAD_PASS2, NS_NO_UPSEARCH, - NULL, &NewNode); + ACPI_IMODE_LOAD_PASS2, ACPI_NS_NO_UPSEARCH, NULL, &NewNode); if (ACPI_FAILURE (Status) || (!NewNode)) /* Must be on same line for code converter */ { @@ -216,7 +220,7 @@ AcpiNsRootInitialize (void) case ACPI_TYPE_INTEGER: ObjDesc->Integer.Value = - (ACPI_INTEGER) STRTOUL (InitVal->Val, NULL, 10); + (ACPI_INTEGER) ACPI_STRTOUL (InitVal->Val, NULL, 10); break; @@ -225,7 +229,7 @@ AcpiNsRootInitialize (void) /* * Build an object around the static string */ - ObjDesc->String.Length = STRLEN (InitVal->Val); + ObjDesc->String.Length = ACPI_STRLEN (InitVal->Val); ObjDesc->String.Pointer = InitVal->Val; ObjDesc->Common.Flags |= AOPOBJ_STATIC_POINTER; break; @@ -234,9 +238,9 @@ AcpiNsRootInitialize (void) case ACPI_TYPE_MUTEX: ObjDesc->Mutex.SyncLevel = - (UINT16) STRTOUL (InitVal->Val, NULL, 10); + (UINT16) ACPI_STRTOUL (InitVal->Val, NULL, 10); - if (STRCMP (InitVal->Name, "_GL_") == 0) + if (ACPI_STRCMP (InitVal->Name, "_GL_") == 0) { /* * Create a counting semaphore for the @@ -270,7 +274,7 @@ AcpiNsRootInitialize (void) default: - REPORT_ERROR (("Unsupported initial type value %X\n", + ACPI_REPORT_ERROR (("Unsupported initial type value %X\n", InitVal->Type)); AcpiUtRemoveReference (ObjDesc); ObjDesc = NULL; @@ -289,7 +293,7 @@ AcpiNsRootInitialize (void) UnlockAndExit: - AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return_ACPI_STATUS (Status); } @@ -321,8 +325,8 @@ ACPI_STATUS AcpiNsLookup ( ACPI_GENERIC_STATE *ScopeInfo, NATIVE_CHAR *Pathname, - ACPI_OBJECT_TYPE8 Type, - OPERATING_MODE InterpreterMode, + ACPI_OBJECT_TYPE Type, + ACPI_INTERPRETER_MODE InterpreterMode, UINT32 Flags, ACPI_WALK_STATE *WalkState, ACPI_NAMESPACE_NODE **ReturnNode) @@ -333,13 +337,12 @@ AcpiNsLookup ( ACPI_NAMESPACE_NODE *ThisNode = NULL; UINT32 NumSegments; ACPI_NAME SimpleName; - BOOLEAN NullNamePath = FALSE; - ACPI_OBJECT_TYPE8 TypeToCheckFor; - ACPI_OBJECT_TYPE8 ThisSearchType; - UINT32 LocalFlags = Flags & ~NS_ERROR_IF_FOUND; + ACPI_OBJECT_TYPE TypeToCheckFor; + ACPI_OBJECT_TYPE ThisSearchType; + UINT32 LocalFlags = Flags & ~ACPI_NS_ERROR_IF_FOUND; - FUNCTION_TRACE ("NsLookup"); + ACPI_FUNCTION_TRACE ("NsLookup"); if (!ReturnNode) @@ -348,7 +351,7 @@ AcpiNsLookup ( } AcpiGbl_NsLookupCount++; - *ReturnNode = ENTRY_NOT_FOUND; + *ReturnNode = ACPI_ENTRY_NOT_FOUND; if (!AcpiGbl_RootNode) { @@ -362,7 +365,7 @@ AcpiNsLookup ( if ((!ScopeInfo) || (!ScopeInfo->Scope.Node)) { - ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, + ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Null scope prefix, using root node (%p)\n", AcpiGbl_RootNode)); @@ -397,190 +400,202 @@ AcpiNsLookup ( TypeToCheckFor = Type; } - - /* Examine the pathname */ - + /* + * Begin examination of the actual pathname + */ if (!Pathname) { - /* Null NamePath -- is allowed */ + /* A Null NamePath is allowed and refers to the root */ - NullNamePath = TRUE; NumSegments = 0; ThisNode = AcpiGbl_RootNode; ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Null Pathname (Zero segments), Flags=%x\n", Flags)); } - else { /* - * Valid name pointer (Internal name format) + * Name pointer is valid (and must be in internal name format) * - * Check for prefixes. As represented in the AML stream, a - * Pathname consists of an optional scope prefix followed by - * a segment part. + * Check for scope prefixes: * - * If present, the scope prefix is either a RootPrefix (in - * which case the name is fully qualified), or zero or more - * ParentPrefixes (in which case the name's scope is relative - * to the current scope). + * As represented in the AML stream, a namepath consists of an + * optional scope prefix followed by a name segment part. * - * The segment part consists of either: - * - A single 4-byte name segment, or - * - A DualNamePrefix followed by two 4-byte name segments, or - * - A MultiNamePrefixOp, followed by a byte indicating the - * number of segments and the segments themselves. + * If present, the scope prefix is either a Root Prefix (in + * which case the name is fully qualified), or one or more + * Parent Prefixes (in which case the name's scope is relative + * to the current scope). */ if (*Pathname == AML_ROOT_PREFIX) { /* Pathname is fully qualified, start from the root */ - CurrentNode = AcpiGbl_RootNode; + ThisNode = AcpiGbl_RootNode; - /* Point to segment part */ + /* Point to name segment part */ Pathname++; ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Searching from root [%p]\n", - CurrentNode)); - - if (!(*Pathname)) - { - /* Direct reference to root, "\" */ - - ThisNode = AcpiGbl_RootNode; - goto CheckForNewScopeAndExit; - } + ThisNode)); } else { /* Pathname is relative to current scope, start there */ - CurrentNode = PrefixNode; - - ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, + ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Searching relative to pfx scope [%p]\n", PrefixNode)); /* - * Handle up-prefix (carat). More than one prefix is supported + * Handle multiple Parent Prefixes (carat) by just getting + * the parent node for each prefix instance. */ + ThisNode = PrefixNode; while (*Pathname == AML_PARENT_PREFIX) { - /* Point to segment part or next ParentPrefix */ - + /* + * Point past this prefix to the name segment + * part or the next Parent Prefix + */ Pathname++; - /* Backup to the parent's scope */ + /* Backup to the parent node */ - ThisNode = AcpiNsGetParentObject (CurrentNode); + ThisNode = AcpiNsGetParentNode (ThisNode); if (!ThisNode) { /* Current scope has no parent scope */ - REPORT_ERROR ( - ("Too many parent prefixes (^) - reached root\n")); + ACPI_REPORT_ERROR ( + ("ACPI path has too many parent prefixes (^) - reached beyond root node\n")); return_ACPI_STATUS (AE_NOT_FOUND); } - - CurrentNode = ThisNode; } } /* - * Examine the name prefix opcode, if any, to determine the number of - * segments + * Determine the number of ACPI name segments in this pathname. + * + * The segment part consists of either: + * - A Null name segment (0) + * - A DualNamePrefix followed by two 4-byte name segments + * - A MultiNamePrefix followed by a byte indicating the + * number of segments and the segments themselves. + * - A single 4-byte name segment + * + * Examine the name prefix opcode, if any, to determine the number of + * segments. */ - if (*Pathname == AML_DUAL_NAME_PREFIX) + switch (*Pathname) { - /* Two segments, point to first segment */ + case 0: + /* + * Null name after a root or parent prefixes. We already + * have the correct target node and there are no name segments. + */ + NumSegments = 0; + + ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, + "Prefix-only Pathname (Zero name segments), Flags=%x\n", Flags)); + break; + + case AML_DUAL_NAME_PREFIX: + + /* Two segments, point to first name segment */ NumSegments = 2; Pathname++; ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Dual Pathname (2 segments, Flags=%X)\n", Flags)); - } - else if (*Pathname == AML_MULTI_NAME_PREFIX_OP) - { - /* Extract segment count, point to first segment */ + break; - NumSegments = (UINT32)* (UINT8 *) ++Pathname; + case AML_MULTI_NAME_PREFIX_OP: + + /* Extract segment count, point to first name segment */ + + Pathname++; + NumSegments = (UINT32) (UINT8) *Pathname; Pathname++; ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Multi Pathname (%d Segments, Flags=%X) \n", NumSegments, Flags)); - } - else - { + break; + + default: /* - * No Dual or Multi prefix, hence there is only one segment and - * Pathname is already pointing to it. + * Not a Null name, no Dual or Multi prefix, hence there is + * only one name segment and Pathname is already pointing to it. */ NumSegments = 1; ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Simple Pathname (1 segment, Flags=%X)\n", Flags)); + break; } - DEBUG_EXEC (AcpiNsPrintPathname (NumSegments, Pathname)); + ACPI_DEBUG_EXEC (AcpiNsPrintPathname (NumSegments, Pathname)); } /* - * Search namespace for each segment of the name. Loop through and + * Search namespace for each segment of the name. Loop through and * verify/add each name segment. */ - while (NumSegments-- && CurrentNode) + CurrentNode = ThisNode; + while (NumSegments && CurrentNode) { /* * Search for the current name segment under the current - * named object. The Type is significant only at the last (topmost) - * level. (We don't care about the types along the path, only + * named object. The Type is significant only at the last name + * segment. (We don't care about the types along the path, only * the type of the final target object.) */ ThisSearchType = ACPI_TYPE_ANY; + NumSegments--; if (!NumSegments) { ThisSearchType = Type; LocalFlags = Flags; } - /* Pluck one ACPI name from the front of the pathname */ + /* Extract one ACPI name from the front of the pathname */ - MOVE_UNALIGNED32_TO_32 (&SimpleName, Pathname); + ACPI_MOVE_UNALIGNED32_TO_32 (&SimpleName, Pathname); /* Try to find the ACPI name */ - Status = AcpiNsSearchAndEnter (SimpleName, WalkState, - CurrentNode, InterpreterMode, - ThisSearchType, LocalFlags, - &ThisNode); + Status = AcpiNsSearchAndEnter (SimpleName, WalkState, CurrentNode, + InterpreterMode, ThisSearchType, LocalFlags, &ThisNode); if (ACPI_FAILURE (Status)) { if (Status == AE_NOT_FOUND) { - /* Name not found in ACPI namespace */ + /* Name not found in ACPI namespace */ ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, - "Name [%4.4s] not found in scope %p\n", - (char*)&SimpleName, CurrentNode)); + "Name [%4.4s] not found in scope [%4.4s] %p\n", + (char *) &SimpleName, (char *) &CurrentNode->Name, CurrentNode)); } return_ACPI_STATUS (Status); } /* + * Sanity typecheck of the target object: + * * If 1) This is the last segment (NumSegments == 0) - * 2) and looking for a specific type + * 2) And we are looking for a specific type * (Not checking for TYPE_ANY) * 3) Which is not an alias - * 4) which is not a local type (TYPE_DEF_ANY) - * 5) which is not a local type (TYPE_SCOPE) - * 6) which is not a local type (TYPE_INDEX_FIELD_DEFN) - * 7) and type of object is known (not TYPE_ANY) - * 8) and object does not match request + * 4) Which is not a local type (TYPE_DEF_ANY) + * 5) Which is not a local type (TYPE_SCOPE) + * 6) Which is not a local type (TYPE_INDEX_FIELD_DEFN) + * 7) And the type of target object is known (not TYPE_ANY) + * 8) And target object does not match what we are looking for * * Then we have a type mismatch. Just warn and ignore it. */ @@ -595,7 +610,7 @@ AcpiNsLookup ( { /* Complain about a type mismatch */ - REPORT_WARNING ( + ACPI_REPORT_WARNING ( ("NsLookup: %4.4s, type %X, checking for type %X\n", (char *) &SimpleName, ThisNode->Type, TypeToCheckFor)); } @@ -605,39 +620,24 @@ AcpiNsLookup ( * specific type, but the type of found object is known, use that type * to see if it opens a scope. */ - if ((0 == NumSegments) && (ACPI_TYPE_ANY == Type)) + if ((NumSegments == 0) && (Type == ACPI_TYPE_ANY)) { Type = ThisNode->Type; } - if ((NumSegments || AcpiNsOpensScope (Type)) && - (ThisNode->Child == NULL)) - { - /* - * More segments or the type implies enclosed scope, - * and the next scope has not been allocated. - */ - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Load mode=%X ThisNode=%p\n", - InterpreterMode, ThisNode)); - } - - CurrentNode = ThisNode; - - /* point to next name segment */ + /* Point to next name segment and make this node current */ Pathname += ACPI_NAME_SIZE; + CurrentNode = ThisNode; } - /* * Always check if we need to open a new scope */ -CheckForNewScopeAndExit: - - if (!(Flags & NS_DONT_OPEN_SCOPE) && (WalkState)) + if (!(Flags & ACPI_NS_DONT_OPEN_SCOPE) && (WalkState)) { /* - * If entry is a type which opens a scope, push the new scope on the + * If entry is a type which opens a scope, push the new scope on the * scope stack. */ if (AcpiNsOpensScope (TypeToCheckFor)) @@ -648,8 +648,8 @@ CheckForNewScopeAndExit: return_ACPI_STATUS (Status); } - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "Set global scope to %p\n", ThisNode)); + ACPI_DEBUG_PRINT ((ACPI_DB_INFO, + "Setting global scope to %p\n", ThisNode)); } } diff --git a/sys/contrib/dev/acpica/nsalloc.c b/sys/contrib/dev/acpica/nsalloc.c index 52afd73e8745..b12b26d6a18f 100644 --- a/sys/contrib/dev/acpica/nsalloc.c +++ b/sys/contrib/dev/acpica/nsalloc.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: nsalloc - Namespace allocation and deletion utilities - * $Revision: 62 $ + * $Revision: 70 $ * ******************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -123,7 +123,7 @@ #define _COMPONENT ACPI_NAMESPACE - MODULE_NAME ("nsalloc") + ACPI_MODULE_NAME ("nsalloc") /******************************************************************************* @@ -145,7 +145,7 @@ AcpiNsCreateNode ( ACPI_NAMESPACE_NODE *Node; - FUNCTION_TRACE ("NsCreateNode"); + ACPI_FUNCTION_TRACE ("NsCreateNode"); Node = ACPI_MEM_CALLOCATE (sizeof (ACPI_NAMESPACE_NODE)); @@ -156,9 +156,9 @@ AcpiNsCreateNode ( ACPI_MEM_TRACKING (AcpiGbl_MemoryLists[ACPI_MEM_LIST_NSNODE].TotalAllocated++); - Node->DataType = ACPI_DESC_TYPE_NAMED; Node->Name = Name; Node->ReferenceCount = 1; + ACPI_SET_DESCRIPTOR_TYPE (Node, ACPI_DESC_TYPE_NAMED); return_PTR (Node); } @@ -185,10 +185,10 @@ AcpiNsDeleteNode ( ACPI_NAMESPACE_NODE *NextNode; - FUNCTION_TRACE_PTR ("NsDeleteNode", Node); + ACPI_FUNCTION_TRACE_PTR ("NsDeleteNode", Node); - ParentNode = AcpiNsGetParentObject (Node); + ParentNode = AcpiNsGetParentNode (Node); PrevNode = NULL; NextNode = ParentNode->Child; @@ -239,7 +239,7 @@ AcpiNsDeleteNode ( * its peers. * * Note: Current namespace lookup is linear search, so the nodes - * are not linked in any particular order. + * are not linked in any particular order. * ******************************************************************************/ @@ -248,13 +248,13 @@ AcpiNsInstallNode ( ACPI_WALK_STATE *WalkState, ACPI_NAMESPACE_NODE *ParentNode, /* Parent */ ACPI_NAMESPACE_NODE *Node, /* New Child*/ - ACPI_OBJECT_TYPE8 Type) + ACPI_OBJECT_TYPE Type) { UINT16 OwnerId = TABLE_ID_DSDT; ACPI_NAMESPACE_NODE *ChildNode; - FUNCTION_TRACE ("NsInstallNode"); + ACPI_FUNCTION_TRACE ("NsInstallNode"); /* @@ -310,7 +310,7 @@ AcpiNsInstallNode ( * real definition is found later. */ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "[%4.4s] is a forward reference\n", - (char*)&Node->Name)); + (char *) &Node->Name)); } /* @@ -337,13 +337,13 @@ AcpiNsInstallNode ( } ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "%4.4s added to %p at %p\n", - (char*)&Node->Name, ParentNode, Node)); + (char *) &Node->Name, ParentNode, Node)); /* * Increment the reference count(s) of all parents up to * the root! */ - while ((Node = AcpiNsGetParentObject (Node)) != NULL) + while ((Node = AcpiNsGetParentNode (Node)) != NULL) { Node->ReferenceCount++; } @@ -360,8 +360,8 @@ AcpiNsInstallNode ( * * RETURN: None. * - * DESCRIPTION: Delete all children of the parent object. Deletes a - * "scope". + * DESCRIPTION: Delete all children of the parent object. In other words, + * deletes a "scope". * ******************************************************************************/ @@ -374,7 +374,7 @@ AcpiNsDeleteChildren ( UINT8 Flags; - FUNCTION_TRACE_PTR ("NsDeleteChildren", ParentNode); + ACPI_FUNCTION_TRACE_PTR ("NsDeleteChildren", ParentNode); if (!ParentNode) @@ -445,7 +445,7 @@ AcpiNsDeleteChildren ( * RETURN: None. * * DESCRIPTION: Delete a subtree of the namespace. This includes all objects - * stored within the subtree. Scope tables are deleted also + * stored within the subtree. * ******************************************************************************/ @@ -457,7 +457,7 @@ AcpiNsDeleteNamespaceSubtree ( UINT32 Level = 1; - FUNCTION_TRACE ("NsDeleteNamespaceSubtree"); + ACPI_FUNCTION_TRACE ("NsDeleteNamespaceSubtree"); if (!ParentNode) @@ -514,7 +514,7 @@ AcpiNsDeleteNamespaceSubtree ( /* Move up the tree to the grandparent */ - ParentNode = AcpiNsGetParentObject (ParentNode); + ParentNode = AcpiNsGetParentNode (ParentNode); } } @@ -541,36 +541,39 @@ static void AcpiNsRemoveReference ( ACPI_NAMESPACE_NODE *Node) { - ACPI_NAMESPACE_NODE *NextNode; + ACPI_NAMESPACE_NODE *ParentNode; + ACPI_NAMESPACE_NODE *ThisNode; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); /* * Decrement the reference count(s) of this node and all * nodes up to the root, Delete anything with zero remaining references. */ - NextNode = Node; - while (NextNode) + ThisNode = Node; + while (ThisNode) { - /* Decrement the reference count on this node*/ + /* Prepare to move up to parent */ + + ParentNode = AcpiNsGetParentNode (ThisNode); + + /* Decrement the reference count on this node */ - NextNode->ReferenceCount--; + ThisNode->ReferenceCount--; /* Delete the node if no more references */ - if (!NextNode->ReferenceCount) + if (!ThisNode->ReferenceCount) { /* Delete all children and delete the node */ - AcpiNsDeleteChildren (NextNode); - AcpiNsDeleteNode (NextNode); + AcpiNsDeleteChildren (ThisNode); + AcpiNsDeleteNode (ThisNode); } - /* Move up to parent */ - - NextNode = AcpiNsGetParentObject (NextNode); + ThisNode = ParentNode; } } @@ -594,16 +597,18 @@ AcpiNsDeleteNamespaceByOwner ( UINT16 OwnerId) { ACPI_NAMESPACE_NODE *ChildNode; + ACPI_NAMESPACE_NODE *DeletionNode; UINT32 Level; ACPI_NAMESPACE_NODE *ParentNode; - FUNCTION_TRACE ("NsDeleteNamespaceByOwner"); + ACPI_FUNCTION_TRACE_U32 ("NsDeleteNamespaceByOwner", OwnerId); - ParentNode = AcpiGbl_RootNode; - ChildNode = 0; - Level = 1; + ParentNode = AcpiGbl_RootNode; + ChildNode = NULL; + DeletionNode = NULL; + Level = 1; /* * Traverse the tree of nodes until we bubble back up @@ -611,22 +616,30 @@ AcpiNsDeleteNamespaceByOwner ( */ while (Level > 0) { - /* Get the next node in this scope (NULL if none) */ + /* + * Get the next child of this parent node. When ChildNode is NULL, + * the first child of the parent is returned + */ + ChildNode = AcpiNsGetNextNode (ACPI_TYPE_ANY, ParentNode, ChildNode); + + if (DeletionNode) + { + AcpiNsRemoveReference (DeletionNode); + DeletionNode = NULL; + } - ChildNode = AcpiNsGetNextNode (ACPI_TYPE_ANY, ParentNode, - ChildNode); if (ChildNode) { if (ChildNode->OwnerId == OwnerId) { - /* Found a child node - detach any attached object */ + /* Found a matching child node - detach any attached object */ AcpiNsDetachObject (ChildNode); } /* Check if this node has any children */ - if (AcpiNsGetNextNode (ACPI_TYPE_ANY, ChildNode, 0)) + if (AcpiNsGetNextNode (ACPI_TYPE_ANY, ChildNode, NULL)) { /* * There is at least one child of this node, @@ -634,11 +647,11 @@ AcpiNsDeleteNamespaceByOwner ( */ Level++; ParentNode = ChildNode; - ChildNode = 0; + ChildNode = NULL; } else if (ChildNode->OwnerId == OwnerId) { - AcpiNsRemoveReference (ChildNode); + DeletionNode = ChildNode; } } else @@ -648,12 +661,11 @@ AcpiNsDeleteNamespaceByOwner ( * Move up to the grandparent. */ Level--; - if (Level != 0) { if (ParentNode->OwnerId == OwnerId) { - AcpiNsRemoveReference (ParentNode); + DeletionNode = ParentNode; } } @@ -663,7 +675,7 @@ AcpiNsDeleteNamespaceByOwner ( /* Move up the tree to the grandparent */ - ParentNode = AcpiNsGetParentObject (ParentNode); + ParentNode = AcpiNsGetParentNode (ParentNode); } } diff --git a/sys/contrib/dev/acpica/nsdump.c b/sys/contrib/dev/acpica/nsdump.c index f2b0b3549d86..ee74fee10873 100644 --- a/sys/contrib/dev/acpica/nsdump.c +++ b/sys/contrib/dev/acpica/nsdump.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: nsdump - table dumping routines for debug - * $Revision: 116 $ + * $Revision: 127 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -125,7 +125,7 @@ #define _COMPONENT ACPI_NAMESPACE - MODULE_NAME ("nsdump") + ACPI_MODULE_NAME ("nsdump") #if defined(ACPI_DEBUG) || defined(ENABLE_DEBUGGER) @@ -146,9 +146,7 @@ AcpiNsPrintPathname ( UINT32 NumSegments, char *Pathname) { - UINT32 i; - - PROC_NAME ("AcpiNsPrintPathname"); + ACPI_FUNCTION_NAME ("AcpiNsPrintPathname"); if (!(AcpiDbgLevel & ACPI_LV_NAMES) || !(AcpiDbgLayer & ACPI_NAMESPACE)) @@ -160,9 +158,16 @@ AcpiNsPrintPathname ( ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "[")); - for (i = 0; i < NumSegments; i++) + while (NumSegments) { - AcpiOsPrintf ("%4.4s.", (char *) &Pathname[i * 4]); + AcpiOsPrintf ("%4.4s", Pathname); + Pathname += ACPI_NAME_SIZE; + + NumSegments--; + if (NumSegments) + { + AcpiOsPrintf ("."); + } } AcpiOsPrintf ("]\n"); @@ -190,11 +195,11 @@ AcpiNsDumpPathname ( UINT32 Level, UINT32 Component) { - NATIVE_CHAR *Buffer; - UINT32 Length; + ACPI_BUFFER Buffer; + ACPI_STATUS Status; - FUNCTION_TRACE ("NsDumpPathname"); + ACPI_FUNCTION_TRACE ("NsDumpPathname"); /* Do this only if the requested debug level and component are enabled */ @@ -204,23 +209,18 @@ AcpiNsDumpPathname ( return_ACPI_STATUS (AE_OK); } - Buffer = ACPI_MEM_ALLOCATE (PATHNAME_MAX); - if (!Buffer) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - /* Convert handle to a full pathname and print it (with supplied message) */ - Length = PATHNAME_MAX; - if (ACPI_SUCCESS (AcpiNsHandleToPathname (Handle, &Length, Buffer))) + Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER; + + Status = AcpiNsHandleToPathname (Handle, &Buffer); + if (ACPI_SUCCESS (Status)) { - AcpiOsPrintf ("%s %s (Node %p)\n", Msg, Buffer, Handle); + AcpiOsPrintf ("%s %s (Node %p)\n", Msg, Buffer.Pointer, Handle); + ACPI_MEM_FREE (Buffer.Pointer); } - ACPI_MEM_FREE (Buffer); - - return_ACPI_STATUS (AE_OK); + return_ACPI_STATUS (Status); } @@ -247,16 +247,17 @@ AcpiNsDumpOneObject ( ACPI_WALK_INFO *Info = (ACPI_WALK_INFO *) Context; ACPI_NAMESPACE_NODE *ThisNode; ACPI_OPERAND_OBJECT *ObjDesc = NULL; - ACPI_OBJECT_TYPE8 ObjType; - ACPI_OBJECT_TYPE8 Type; + ACPI_OBJECT_TYPE ObjType; + ACPI_OBJECT_TYPE Type; UINT32 BytesToDump; UINT32 DownstreamSiblingMask = 0; UINT32 LevelTmp; UINT32 WhichBit; UINT32 i; + UINT32 DbgLevel; - PROC_NAME ("NsDumpOneObject"); + ACPI_FUNCTION_NAME ("NsDumpOneObject"); ThisNode = AcpiNsMapHandleToNode (ObjHandle); @@ -271,11 +272,6 @@ AcpiNsDumpOneObject ( return (AE_OK); } - if (!((ACPI_LV_TABLES & AcpiDbgLevel) && (_COMPONENT & AcpiDbgLayer))) - { - return (AE_OK); - } - if (!ObjHandle) { ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Null object handle\n")); @@ -346,7 +342,7 @@ AcpiNsDumpOneObject ( if (!AcpiUtValidAcpiName (ThisNode->Name)) { - REPORT_WARNING (("Invalid ACPI Name %08X\n", ThisNode->Name)); + ACPI_REPORT_WARNING (("Invalid ACPI Name %08X\n", ThisNode->Name)); } /* @@ -355,7 +351,10 @@ AcpiNsDumpOneObject ( AcpiOsPrintf (" %4.4s %-12s %p", (char *) &ThisNode->Name, AcpiUtGetTypeName (Type), ThisNode); + DbgLevel = AcpiDbgLevel; + AcpiDbgLevel = 0; ObjDesc = AcpiNsGetAttachedObject (ThisNode); + AcpiDbgLevel = DbgLevel; switch (Info->DisplayType) { @@ -391,8 +390,8 @@ AcpiNsDumpOneObject ( case ACPI_TYPE_INTEGER: AcpiOsPrintf (" = %8.8X%8.8X\n", - HIDWORD (ObjDesc->Integer.Value), - LODWORD (ObjDesc->Integer.Value)); + ACPI_HIDWORD (ObjDesc->Integer.Value), + ACPI_LODWORD (ObjDesc->Integer.Value)); break; case ACPI_TYPE_PACKAGE: @@ -432,8 +431,8 @@ AcpiNsDumpOneObject ( if (ObjDesc->Region.Flags & AOPOBJ_DATA_VALID) { AcpiOsPrintf (" Addr %8.8X%8.8X Len %.4X\n", - HIDWORD(ObjDesc->Region.Address), - LODWORD(ObjDesc->Region.Address), + ACPI_HIDWORD (ObjDesc->Region.Address), + ACPI_LODWORD (ObjDesc->Region.Address), ObjDesc->Region.Length); } else @@ -490,7 +489,7 @@ AcpiNsDumpOneObject ( (ObjDesc->CommonField.BaseByteOffset * 8) + ObjDesc->CommonField.StartFieldBitOffset, ObjDesc->CommonField.BitLength, - ObjDesc->CommonField.AccessBitWidth); + ObjDesc->CommonField.AccessByteWidth); break; } @@ -525,8 +524,8 @@ AcpiNsDumpOneObject ( case ACPI_TYPE_INTEGER: - AcpiOsPrintf (" N:%X%X\n", HIDWORD(ObjDesc->Integer.Value), - LODWORD(ObjDesc->Integer.Value)); + AcpiOsPrintf (" N:%X%X\n", ACPI_HIDWORD(ObjDesc->Integer.Value), + ACPI_LODWORD(ObjDesc->Integer.Value)); break; case ACPI_TYPE_STRING: @@ -564,26 +563,31 @@ AcpiNsDumpOneObject ( /* If there is an attached object, display it */ + DbgLevel = AcpiDbgLevel; + AcpiDbgLevel = 0; ObjDesc = AcpiNsGetAttachedObject (ThisNode); + AcpiDbgLevel = DbgLevel; /* Dump attached objects */ while (ObjDesc) { ObjType = INTERNAL_TYPE_INVALID; + AcpiOsPrintf (" Attached Object %p: ", ObjDesc); /* Decode the type of attached object and dump the contents */ - AcpiOsPrintf (" Attached Object %p: ", ObjDesc); - - if (VALID_DESCRIPTOR_TYPE (ObjDesc, ACPI_DESC_TYPE_NAMED)) + switch (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc)) { + case ACPI_DESC_TYPE_NAMED: + AcpiOsPrintf ("(Ptr to Node)\n"); BytesToDump = sizeof (ACPI_NAMESPACE_NODE); - } + break; + + + case ACPI_DESC_TYPE_INTERNAL: - else if (VALID_DESCRIPTOR_TYPE (ObjDesc, ACPI_DESC_TYPE_INTERNAL)) - { ObjType = ObjDesc->Common.Type; if (ObjType > INTERNAL_TYPE_MAX) @@ -597,18 +601,21 @@ AcpiNsDumpOneObject ( ObjType, AcpiUtGetTypeName (ObjType)); BytesToDump = sizeof (ACPI_OPERAND_OBJECT); } - } - else - { - AcpiOsPrintf ("(String or Buffer - not descriptor)\n"); + break; + + + default: + + AcpiOsPrintf ("(String or Buffer ptr - not an object descriptor)\n"); BytesToDump = 16; + break; } - DUMP_BUFFER (ObjDesc, BytesToDump); + ACPI_DUMP_BUFFER (ObjDesc, BytesToDump); /* If value is NOT an internal object, we are done */ - if (VALID_DESCRIPTOR_TYPE (ObjDesc, ACPI_DESC_TYPE_NAMED)) + if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_INTERNAL) { goto Cleanup; } @@ -681,7 +688,7 @@ Cleanup: void AcpiNsDumpObjects ( - ACPI_OBJECT_TYPE8 Type, + ACPI_OBJECT_TYPE Type, UINT8 DisplayType, UINT32 MaxDepth, UINT32 OwnerId, @@ -690,7 +697,7 @@ AcpiNsDumpObjects ( ACPI_WALK_INFO Info; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); Info.DebugLevel = ACPI_LV_TABLES; @@ -698,7 +705,7 @@ AcpiNsDumpObjects ( Info.DisplayType = DisplayType; - AcpiNsWalkNamespace (Type, StartHandle, MaxDepth, NS_WALK_NO_UNLOCK, AcpiNsDumpOneObject, + AcpiNsWalkNamespace (Type, StartHandle, MaxDepth, ACPI_NS_WALK_NO_UNLOCK, AcpiNsDumpOneObject, (void *) &Info, NULL); } @@ -729,7 +736,7 @@ AcpiNsDumpOneDevice ( UINT32 i; - PROC_NAME ("NsDumpOneDevice"); + ACPI_FUNCTION_NAME ("NsDumpOneDevice"); Status = AcpiNsDumpOneObject (ObjHandle, Level, Context, ReturnValue); @@ -743,7 +750,9 @@ AcpiNsDumpOneDevice ( } ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " HID: %s, ADR: %8.8X%8.8X, Status: %x\n", - Info.HardwareId, HIDWORD(Info.Address), LODWORD(Info.Address), Info.CurrentStatus)); + Info.HardwareId, + ACPI_HIDWORD (Info.Address), ACPI_LODWORD (Info.Address), + Info.CurrentStatus)); } return (Status); @@ -766,7 +775,7 @@ AcpiNsDumpRootDevices (void) ACPI_HANDLE SysBusHandle; - PROC_NAME ("NsDumpRootDevices"); + ACPI_FUNCTION_NAME ("NsDumpRootDevices"); /* Only dump the table if tracing is enabled */ @@ -776,10 +785,10 @@ AcpiNsDumpRootDevices (void) return; } - AcpiGetHandle (0, NS_SYSTEM_BUS, &SysBusHandle); + AcpiGetHandle (0, ACPI_NS_SYSTEM_BUS, &SysBusHandle); ACPI_DEBUG_PRINT ((ACPI_DB_TABLES, "Display of all devices in the namespace:\n")); - AcpiNsWalkNamespace (ACPI_TYPE_DEVICE, SysBusHandle, ACPI_UINT32_MAX, NS_WALK_NO_UNLOCK, + AcpiNsWalkNamespace (ACPI_TYPE_DEVICE, SysBusHandle, ACPI_UINT32_MAX, ACPI_NS_WALK_NO_UNLOCK, AcpiNsDumpOneDevice, NULL, NULL); } @@ -806,7 +815,7 @@ AcpiNsDumpTables ( ACPI_HANDLE SearchHandle = SearchBase; - FUNCTION_TRACE ("NsDumpTables"); + ACPI_FUNCTION_TRACE ("NsDumpTables"); if (!AcpiGbl_RootNode) @@ -819,7 +828,7 @@ AcpiNsDumpTables ( return_VOID; } - if (NS_ALL == SearchBase) + if (ACPI_NS_ALL == SearchBase) { /* entire namespace */ @@ -853,7 +862,7 @@ AcpiNsDumpEntry ( ACPI_WALK_INFO Info; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); Info.DebugLevel = DebugLevel; diff --git a/sys/contrib/dev/acpica/nseval.c b/sys/contrib/dev/acpica/nseval.c index d863facf0861..725b4f33e719 100644 --- a/sys/contrib/dev/acpica/nseval.c +++ b/sys/contrib/dev/acpica/nseval.c @@ -2,7 +2,7 @@ * * Module Name: nseval - Object evaluation interfaces -- includes control * method lookup and execution. - * $Revision: 104 $ + * $Revision: 109 $ * ******************************************************************************/ @@ -10,7 +10,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -126,7 +126,7 @@ #define _COMPONENT ACPI_NAMESPACE - MODULE_NAME ("nseval") + ACPI_MODULE_NAME ("nseval") /******************************************************************************* @@ -165,7 +165,7 @@ AcpiNsEvaluateRelative ( ACPI_GENERIC_STATE ScopeInfo; - FUNCTION_TRACE ("NsEvaluateRelative"); + ACPI_FUNCTION_TRACE ("NsEvaluateRelative"); /* @@ -186,12 +186,16 @@ AcpiNsEvaluateRelative ( /* Get the prefix handle and Node */ - AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } PrefixNode = AcpiNsMapHandleToNode (Handle); if (!PrefixNode) { - AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); Status = AE_BAD_PARAMETER; goto Cleanup; } @@ -200,10 +204,10 @@ AcpiNsEvaluateRelative ( ScopeInfo.Scope.Node = PrefixNode; Status = AcpiNsLookup (&ScopeInfo, InternalPath, ACPI_TYPE_ANY, - IMODE_EXECUTE, NS_NO_UPSEARCH, NULL, + ACPI_IMODE_EXECUTE, ACPI_NS_NO_UPSEARCH, NULL, &Node); - AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { @@ -262,7 +266,7 @@ AcpiNsEvaluateByName ( NATIVE_CHAR *InternalPath = NULL; - FUNCTION_TRACE ("NsEvaluateByName"); + ACPI_FUNCTION_TRACE ("NsEvaluateByName"); /* Build an internal name string for the method */ @@ -273,15 +277,19 @@ AcpiNsEvaluateByName ( return_ACPI_STATUS (Status); } - AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } /* Lookup the name in the namespace */ Status = AcpiNsLookup (NULL, InternalPath, ACPI_TYPE_ANY, - IMODE_EXECUTE, NS_NO_UPSEARCH, NULL, + ACPI_IMODE_EXECUTE, ACPI_NS_NO_UPSEARCH, NULL, &Node); - AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { @@ -346,7 +354,7 @@ AcpiNsEvaluateByHandle ( ACPI_OPERAND_OBJECT *LocalReturnObject; - FUNCTION_TRACE ("NsEvaluateByHandle"); + ACPI_FUNCTION_TRACE ("NsEvaluateByHandle"); /* Check if namespace has been initialized */ @@ -372,12 +380,16 @@ AcpiNsEvaluateByHandle ( /* Get the prefix handle and Node */ - AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } Node = AcpiNsMapHandleToNode (Handle); if (!Node) { - AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return_ACPI_STATUS (AE_BAD_PARAMETER); } @@ -477,7 +489,7 @@ AcpiNsExecuteControlMethod ( ACPI_OPERAND_OBJECT *ObjDesc; - FUNCTION_TRACE ("NsExecuteControlMethod"); + ACPI_FUNCTION_TRACE ("NsExecuteControlMethod"); /* Verify that there is a method associated with this object */ @@ -487,7 +499,7 @@ AcpiNsExecuteControlMethod ( { ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "No attached method object\n")); - AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return_ACPI_STATUS (AE_NULL_OBJECT); } @@ -495,7 +507,7 @@ AcpiNsExecuteControlMethod ( ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Control method at Offset %p Length %x]\n", ObjDesc->Method.AmlStart + 1, ObjDesc->Method.AmlLength - 1)); - DUMP_PATHNAME (MethodNode, "NsExecuteControlMethod: Executing", + ACPI_DUMP_PATHNAME (MethodNode, "NsExecuteControlMethod: Executing", ACPI_LV_NAMES, _COMPONENT); ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "At offset %p\n", @@ -509,7 +521,11 @@ AcpiNsExecuteControlMethod ( * interpreter locks to ensure that no thread is using the portion of the * namespace that is being deleted. */ - AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + Status = AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } /* * Execute the method via the interpreter. The interpreter is locked @@ -538,7 +554,7 @@ AcpiNsExecuteControlMethod ( * * DESCRIPTION: Return the current value of the object * - * MUTEX: Assumes namespace is locked + * MUTEX: Assumes namespace is locked, leaves namespace unlocked * ******************************************************************************/ @@ -549,117 +565,62 @@ AcpiNsGetObjectValue ( { ACPI_STATUS Status = AE_OK; ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_OPERAND_OBJECT *SourceDesc; - FUNCTION_TRACE ("NsGetObjectValue"); + ACPI_FUNCTION_TRACE ("NsGetObjectValue"); /* - * We take the value from certain objects directly + * Objects require additional resolution steps (e.g., the + * Node may be a field that must be read, etc.) -- we can't just grab + * the object out of the node. */ - if ((Node->Type == ACPI_TYPE_PROCESSOR) || - (Node->Type == ACPI_TYPE_POWER)) - { - /* - * Create a Reference object to contain the object - */ - ObjDesc = AcpiUtCreateInternalObject (Node->Type); - if (!ObjDesc) - { - Status = AE_NO_MEMORY; - goto UnlockAndExit; - } - - /* - * Get the attached object - */ - SourceDesc = AcpiNsGetAttachedObject (Node); - if (!SourceDesc) - { - Status = AE_NULL_OBJECT; - goto UnlockAndExit; - } - - /* - * Just copy from the original to the return object - * - * TBD: [Future] - need a low-level object copy that handles - * the reference count automatically. (Don't want to copy it) - */ - MEMCPY (ObjDesc, SourceDesc, sizeof (ACPI_OPERAND_OBJECT)); - ObjDesc->Common.ReferenceCount = 1; - AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - } - + ObjDesc = (ACPI_OPERAND_OBJECT *) Node; /* - * Other objects require a reference object wrapper which we - * then attempt to resolve. + * Use ResolveNodeToValue() to get the associated value. This call + * always deletes ObjDesc (allocated above). + * + * NOTE: we can get away with passing in NULL for a walk state + * because ObjDesc is guaranteed to not be a reference to either + * a method local or a method argument (because this interface can only be + * called from the AcpiEvaluate external interface, never called from + * a running control method.) + * + * Even though we do not directly invoke the interpreter + * for this, we must enter it because we could access an opregion. + * The opregion access code assumes that the interpreter + * is locked. + * + * We must release the namespace lock before entering the + * intepreter. */ - else + Status = AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) { - /* Create an Reference object to contain the object */ - - ObjDesc = AcpiUtCreateInternalObject (INTERNAL_TYPE_REFERENCE); - if (!ObjDesc) - { - Status = AE_NO_MEMORY; - goto UnlockAndExit; - } - - /* Construct a descriptor pointing to the name */ - - ObjDesc->Reference.Opcode = (UINT8) AML_NAME_OP; - ObjDesc->Reference.Object = (void *) Node; + return_ACPI_STATUS (Status); + } + Status = AcpiExEnterInterpreter (); + if (ACPI_SUCCESS (Status)) + { + Status = AcpiExResolveNodeToValue ((ACPI_NAMESPACE_NODE **) &ObjDesc, NULL); /* - * Use ResolveToValue() to get the associated value. This call - * always deletes ObjDesc (allocated above). - * - * NOTE: we can get away with passing in NULL for a walk state - * because ObjDesc is guaranteed to not be a reference to either - * a method local or a method argument - * - * Even though we do not directly invoke the interpreter - * for this, we must enter it because we could access an opregion. - * The opregion access code assumes that the interpreter - * is locked. - * - * We must release the namespace lock before entering the - * intepreter. + * If AcpiExResolveNodeToValue() succeeded, the return value was + * placed in ObjDesc. */ - AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - Status = AcpiExEnterInterpreter (); + AcpiExExitInterpreter (); + if (ACPI_SUCCESS (Status)) { - Status = AcpiExResolveToValue (&ObjDesc, NULL); - - AcpiExExitInterpreter (); + Status = AE_CTRL_RETURN_VALUE; + *ReturnObjDesc = ObjDesc; + ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Returning obj %p\n", *ReturnObjDesc)); } } - /* - * If AcpiExResolveToValue() succeeded, the return value was - * placed in ObjDesc. - */ - if (ACPI_SUCCESS (Status)) - { - Status = AE_CTRL_RETURN_VALUE; - - *ReturnObjDesc = ObjDesc; - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Returning obj %p\n", *ReturnObjDesc)); - } - /* Namespace is unlocked */ return_ACPI_STATUS (Status); - - -UnlockAndExit: - - /* Unlock the namespace */ - - AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - return_ACPI_STATUS (Status); } + diff --git a/sys/contrib/dev/acpica/nsinit.c b/sys/contrib/dev/acpica/nsinit.c index 9e6765b3ea70..eeedf6e7ab95 100644 --- a/sys/contrib/dev/acpica/nsinit.c +++ b/sys/contrib/dev/acpica/nsinit.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: nsinit - namespace initialization - * $Revision: 35 $ + * $Revision: 41 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -123,7 +123,7 @@ #include "acinterp.h" #define _COMPONENT ACPI_NAMESPACE - MODULE_NAME ("nsinit") + ACPI_MODULE_NAME ("nsinit") /******************************************************************************* @@ -147,7 +147,7 @@ AcpiNsInitializeObjects ( ACPI_INIT_WALK_INFO Info; - FUNCTION_TRACE ("NsInitializeObjects"); + ACPI_FUNCTION_TRACE ("NsInitializeObjects"); ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, @@ -209,7 +209,7 @@ AcpiNsInitializeDevices ( ACPI_DEVICE_WALK_INFO Info; - FUNCTION_TRACE ("NsInitializeDevices"); + ACPI_FUNCTION_TRACE ("NsInitializeDevices"); Info.DeviceCount = 0; @@ -263,14 +263,14 @@ AcpiNsInitOneObject ( void *Context, void **ReturnValue) { - ACPI_OBJECT_TYPE8 Type; + ACPI_OBJECT_TYPE Type; ACPI_STATUS Status; ACPI_INIT_WALK_INFO *Info = (ACPI_INIT_WALK_INFO *) Context; ACPI_NAMESPACE_NODE *Node = (ACPI_NAMESPACE_NODE *) ObjHandle; ACPI_OPERAND_OBJECT *ObjDesc; - PROC_NAME ("NsInitOneObject"); + ACPI_FUNCTION_NAME ("NsInitOneObject"); Info->ObjectCount++; @@ -319,7 +319,7 @@ AcpiNsInitOneObject ( ACPI_DEBUG_PRINT_RAW ((ACPI_DB_ERROR, "\n")); ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "%s while getting region arguments [%4.4s]\n", - AcpiFormatException (Status), (char*)&Node->Name)); + AcpiFormatException (Status), (char *) &Node->Name)); } if (!(AcpiDbgLevel & ACPI_LV_INIT)) @@ -345,7 +345,7 @@ AcpiNsInitOneObject ( ACPI_DEBUG_PRINT_RAW ((ACPI_DB_ERROR, "\n")); ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "%s while getting buffer field arguments [%4.4s]\n", - AcpiFormatException (Status), (char*)&Node->Name)); + AcpiFormatException (Status), (char *) &Node->Name)); } if (!(AcpiDbgLevel & ACPI_LV_INIT)) { @@ -396,7 +396,7 @@ AcpiNsInitOneDevice ( ACPI_DEVICE_WALK_INFO *Info = (ACPI_DEVICE_WALK_INFO *) Context; - FUNCTION_TRACE ("NsInitOneDevice"); + ACPI_FUNCTION_TRACE ("NsInitOneDevice"); if (!(AcpiDbgLevel & ACPI_LV_INIT)) @@ -406,21 +406,29 @@ AcpiNsInitOneDevice ( Info->DeviceCount++; - AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } Node = AcpiNsMapHandleToNode (ObjHandle); if (!Node) { - AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return_ACPI_STATUS (AE_BAD_PARAMETER); } - AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + Status = AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } /* * Run _STA to determine if we can run _INI on the device. */ - DEBUG_EXEC (AcpiUtDisplayInitPathname (Node, "_STA [Method]")); + ACPI_DEBUG_EXEC (AcpiUtDisplayInitPathname (Node, "_STA [Method]")); Status = AcpiUtExecute_STA (Node, &Flags); if (ACPI_FAILURE (Status)) { @@ -442,7 +450,7 @@ AcpiNsInitOneDevice ( /* * The device is present. Run _INI. */ - DEBUG_EXEC (AcpiUtDisplayInitPathname (ObjHandle, "_INI [Method]")); + ACPI_DEBUG_EXEC (AcpiUtDisplayInitPathname (ObjHandle, "_INI [Method]")); Status = AcpiNsEvaluateRelative (ObjHandle, "_INI", NULL, NULL); if (AE_NOT_FOUND == Status) { @@ -456,7 +464,7 @@ AcpiNsInitOneDevice ( /* Ignore error and move on to next device */ #ifdef ACPI_DEBUG - NATIVE_CHAR *ScopeName = AcpiNsGetTablePathname (ObjHandle); + NATIVE_CHAR *ScopeName = AcpiNsGetExternalPathname (ObjHandle); ACPI_DEBUG_PRINT ((ACPI_DB_WARN, "%s._INI failed: %s\n", ScopeName, AcpiFormatException (Status))); diff --git a/sys/contrib/dev/acpica/nsload.c b/sys/contrib/dev/acpica/nsload.c index f3de3620ad64..00aceb0db598 100644 --- a/sys/contrib/dev/acpica/nsload.c +++ b/sys/contrib/dev/acpica/nsload.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: nsload - namespace loading/expanding/contracting procedures - * $Revision: 48 $ + * $Revision: 53 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -126,14 +126,14 @@ #define _COMPONENT ACPI_NAMESPACE - MODULE_NAME ("nsload") + ACPI_MODULE_NAME ("nsload") /******************************************************************************* * * FUNCTION: AcpiLoadNamespace * - * PARAMETERS: DisplayAmlDuringLoad + * PARAMETERS: None * * RETURN: Status * @@ -149,7 +149,7 @@ AcpiNsLoadNamespace ( ACPI_STATUS Status; - FUNCTION_TRACE ("AcpiLoadNameSpace"); + ACPI_FUNCTION_TRACE ("AcpiLoadNameSpace"); /* There must be at least a DSDT installed */ @@ -160,7 +160,6 @@ AcpiNsLoadNamespace ( return_ACPI_STATUS (AE_NO_ACPI_TABLES); } - /* * Load the namespace. The DSDT is required, * but the SSDT and PSDT tables are optional. @@ -176,12 +175,10 @@ AcpiNsLoadNamespace ( AcpiNsLoadTableByType (ACPI_TABLE_SSDT); AcpiNsLoadTableByType (ACPI_TABLE_PSDT); - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OK, "ACPI Namespace successfully loaded at root %p\n", AcpiGbl_RootNode)); - return_ACPI_STATUS (Status); } @@ -190,11 +187,12 @@ AcpiNsLoadNamespace ( * * FUNCTION: AcpiNsOneParsePass * - * PARAMETERS: + * PARAMETERS: PassNumber - 1 or 2 + * TableDesc - The table to be parsed. * * RETURN: Status * - * DESCRIPTION: + * DESCRIPTION: Perform one complete parse of an ACPI/AML table. * ******************************************************************************/ @@ -208,7 +206,7 @@ AcpiNsOneCompleteParse ( ACPI_WALK_STATE *WalkState; - FUNCTION_TRACE ("NsOneCompleteParse"); + ACPI_FUNCTION_TRACE ("NsOneCompleteParse"); /* Create and init a Root Node */ @@ -221,7 +219,6 @@ AcpiNsOneCompleteParse ( ((ACPI_PARSE2_OBJECT *) ParseRoot)->Name = ACPI_ROOT_NAME; - /* Create and initialize a new walk state */ WalkState = AcpiDsCreateWalkState (TABLE_ID_DSDT, @@ -271,7 +268,7 @@ AcpiNsParseTable ( ACPI_STATUS Status; - FUNCTION_TRACE ("NsParseTable"); + ACPI_FUNCTION_TRACE ("NsParseTable"); /* @@ -290,7 +287,6 @@ AcpiNsParseTable ( return_ACPI_STATUS (Status); } - /* * AML Parse, pass 2 * @@ -331,8 +327,19 @@ AcpiNsLoadTable ( ACPI_STATUS Status; - FUNCTION_TRACE ("NsLoadTable"); + ACPI_FUNCTION_TRACE ("NsLoadTable"); + + + /* Check if table contains valid AML (must be DSDT, PSDT, SSDT, etc.) */ + + if (!(AcpiGbl_AcpiTableData[TableDesc->Type].Flags & ACPI_TABLE_EXECUTABLE)) + { + /* Just ignore this table */ + + return_ACPI_STATUS (AE_OK); + } + /* Check validity of the AML start and length */ if (!TableDesc->AmlStart) { @@ -342,14 +349,12 @@ AcpiNsLoadTable ( ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "AML block at %p\n", TableDesc->AmlStart)); - if (!TableDesc->AmlLength) { ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Zero-length AML block\n")); return_ACPI_STATUS (AE_BAD_PARAMETER); } - /* * Parse the table and load the namespace with all named * objects found within. Control methods are NOT parsed @@ -361,9 +366,14 @@ AcpiNsLoadTable ( */ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "**** Loading table into namespace ****\n")); - AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + Status = AcpiNsParseTable (TableDesc, Node->Child); - AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { @@ -407,15 +417,18 @@ AcpiNsLoadTableByType ( ACPI_TABLE_TYPE TableType) { UINT32 i; - ACPI_STATUS Status = AE_OK; + ACPI_STATUS Status; ACPI_TABLE_DESC *TableDesc; - FUNCTION_TRACE ("NsLoadTableByType"); - + ACPI_FUNCTION_TRACE ("NsLoadTableByType"); - AcpiUtAcquireMutex (ACPI_MTX_TABLES); + Status = AcpiUtAcquireMutex (ACPI_MTX_TABLES); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } /* * Table types supported are: @@ -423,7 +436,6 @@ AcpiNsLoadTableByType ( */ switch (TableType) { - case ACPI_TABLE_DSDT: ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Loading DSDT\n")); @@ -519,11 +531,8 @@ AcpiNsLoadTableByType ( UnlockAndExit: - - AcpiUtReleaseMutex (ACPI_MTX_TABLES); - + (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); return_ACPI_STATUS (Status); - } @@ -538,8 +547,8 @@ UnlockAndExit: * DESCRIPTION: Walks the namespace starting at the given handle and deletes * all objects, entries, and scopes in the entire subtree. * - * TBD: [Investigate] What if any part of this subtree is in use? - * (i.e. on one of the object stacks?) + * Namespace/Interpreter should be locked or the subsystem should + * be in shutdown before this routine is called. * ******************************************************************************/ @@ -555,7 +564,7 @@ AcpiNsDeleteSubtree ( UINT32 Level; - FUNCTION_TRACE ("NsDeleteSubtree"); + ACPI_FUNCTION_TRACE ("NsDeleteSubtree"); ParentHandle = StartHandle; @@ -575,7 +584,6 @@ AcpiNsDeleteSubtree ( ChildHandle = NextChildHandle; - /* Did we get a new object? */ if (ACPI_SUCCESS (Status)) @@ -594,7 +602,6 @@ AcpiNsDeleteSubtree ( ChildHandle = 0; } } - else { /* @@ -641,7 +648,7 @@ AcpiNsUnloadNamespace ( ACPI_STATUS Status; - FUNCTION_TRACE ("NsUnloadNameSpace"); + ACPI_FUNCTION_TRACE ("NsUnloadNameSpace"); /* Parameter validation */ @@ -656,7 +663,6 @@ AcpiNsUnloadNamespace ( return_ACPI_STATUS (AE_BAD_PARAMETER); } - /* This function does the real work */ Status = AcpiNsDeleteSubtree (Handle); diff --git a/sys/contrib/dev/acpica/nsnames.c b/sys/contrib/dev/acpica/nsnames.c index 644141c6a3b1..19059c7b40ee 100644 --- a/sys/contrib/dev/acpica/nsnames.c +++ b/sys/contrib/dev/acpica/nsnames.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: nsnames - Name manipulation and search - * $Revision: 65 $ + * $Revision: 74 $ * ******************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -123,97 +123,127 @@ #define _COMPONENT ACPI_NAMESPACE - MODULE_NAME ("nsnames") + ACPI_MODULE_NAME ("nsnames") /******************************************************************************* * - * FUNCTION: AcpiNsGetTablePathname + * FUNCTION: AcpiNsBuildExternalPath * - * PARAMETERS: Node - Scope whose name is needed + * PARAMETERS: Node - NS node whose pathname is needed + * Size - Size of the pathname + * *NameBuffer - Where to return the pathname * - * RETURN: Pointer to storage containing the fully qualified name of - * the scope, in Label format (all segments strung together - * with no separators) + * RETURN: Places the pathname into the NameBuffer, in external format + * (name segments separated by path separators) * - * DESCRIPTION: Used for debug printing in AcpiNsSearchTable(). + * DESCRIPTION: Generate a full pathaname * ******************************************************************************/ -NATIVE_CHAR * -AcpiNsGetTablePathname ( - ACPI_NAMESPACE_NODE *Node) +void +AcpiNsBuildExternalPath ( + ACPI_NAMESPACE_NODE *Node, + ACPI_SIZE Size, + NATIVE_CHAR *NameBuffer) { - NATIVE_CHAR *NameBuffer; - UINT32 Size; - ACPI_NAME Name; - ACPI_NAMESPACE_NODE *ChildNode; + UINT32 Index; ACPI_NAMESPACE_NODE *ParentNode; - FUNCTION_TRACE_PTR ("NsGetTablePathname", Node); + ACPI_FUNCTION_NAME ("NsBuildExternalPath"); - if (!AcpiGbl_RootNode || !Node) + /* Special case for root */ + + Index = Size - 1; + if (Index < ACPI_NAME_SIZE) { - /* - * If the name space has not been initialized, - * this function should not have been called. - */ - return_PTR (NULL); + NameBuffer[0] = AML_ROOT_PREFIX; + NameBuffer[1] = 0; + return; } - ChildNode = Node->Child; + /* Store terminator byte, then build name backwards */ + ParentNode = Node; + NameBuffer[Index] = 0; - /* Calculate required buffer size based on depth below root */ - - Size = 1; - ParentNode = ChildNode; - while (ParentNode) + while ((Index > ACPI_NAME_SIZE) && (ParentNode != AcpiGbl_RootNode)) { - ParentNode = AcpiNsGetParentObject (ParentNode); - if (ParentNode) - { - Size += ACPI_NAME_SIZE; - } + Index -= ACPI_NAME_SIZE; + + /* Put the name into the buffer */ + + ACPI_MOVE_UNALIGNED32_TO_32 ((NameBuffer + Index), &ParentNode->Name); + ParentNode = AcpiNsGetParentNode (ParentNode); + + /* Prefix name with the path separator */ + + Index--; + NameBuffer[Index] = PATH_SEPARATOR; } + /* Overwrite final separator with the root prefix character */ - /* Allocate a buffer to be returned to caller */ + NameBuffer[Index] = AML_ROOT_PREFIX; - NameBuffer = ACPI_MEM_CALLOCATE (Size + 1); - if (!NameBuffer) + if (Index != 0) { - REPORT_ERROR (("NsGetTablePathname: allocation failure\n")); - return_PTR (NULL); + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, + "Could not construct pathname; index=%X, size=%X, Path=%s\n", + Index, Size, &NameBuffer[Size])); } + return; +} - /* Store terminator byte, then build name backwards */ - NameBuffer[Size] = '\0'; - while ((Size > ACPI_NAME_SIZE) && - AcpiNsGetParentObject (ChildNode)) - { - Size -= ACPI_NAME_SIZE; - Name = AcpiNsFindParentName (ChildNode); +#ifdef ACPI_DEBUG +/******************************************************************************* + * + * FUNCTION: AcpiNsGetExternalPathname + * + * PARAMETERS: Node - NS node whose pathname is needed + * + * RETURN: Pointer to storage containing the fully qualified name of + * the node, In external format (name segments separated by path + * separators.) + * + * DESCRIPTION: Used for debug printing in AcpiNsSearchTable(). + * + ******************************************************************************/ - /* Put the name into the buffer */ +NATIVE_CHAR * +AcpiNsGetExternalPathname ( + ACPI_NAMESPACE_NODE *Node) +{ + NATIVE_CHAR *NameBuffer; + ACPI_SIZE Size; - MOVE_UNALIGNED32_TO_32 ((NameBuffer + Size), &Name); - ChildNode = AcpiNsGetParentObject (ChildNode); - } - NameBuffer[--Size] = AML_ROOT_PREFIX; + ACPI_FUNCTION_TRACE_PTR ("NsGetExternalPathname", Node); + + + /* Calculate required buffer size based on depth below root */ - if (Size != 0) + Size = AcpiNsGetPathnameLength (Node); + + /* Allocate a buffer to be returned to caller */ + + NameBuffer = ACPI_MEM_CALLOCATE (Size); + if (!NameBuffer) { - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Bad pointer returned; size=%X\n", Size)); + ACPI_REPORT_ERROR (("NsGetTablePathname: allocation failure\n")); + return_PTR (NULL); } + /* Build the path in the allocated buffer */ + + AcpiNsBuildExternalPath (Node, Size, NameBuffer); return_PTR (NameBuffer); } +#endif /******************************************************************************* @@ -228,26 +258,28 @@ AcpiNsGetTablePathname ( * ******************************************************************************/ -UINT32 +ACPI_SIZE AcpiNsGetPathnameLength ( ACPI_NAMESPACE_NODE *Node) { - UINT32 Size; + ACPI_SIZE Size; ACPI_NAMESPACE_NODE *NextNode; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); /* * Compute length of pathname as 5 * number of name segments. * Go back up the parent tree to the root */ - for (Size = 0, NextNode = Node; - AcpiNsGetParentObject (NextNode); - NextNode = AcpiNsGetParentObject (NextNode)) + Size = 0; + NextNode = Node; + + while (NextNode != AcpiGbl_RootNode) { Size += PATH_SEGMENT_LENGTH; + NextNode = AcpiNsGetParentNode (NextNode); } return (Size + 1); @@ -260,107 +292,51 @@ AcpiNsGetPathnameLength ( * * PARAMETERS: TargetHandle - Handle of named object whose name is * to be found - * BufSize - Size of the buffer provided - * UserBuffer - Where the pathname is returned + * Buffer - Where the pathname is returned * * RETURN: Status, Buffer is filled with pathname if status is AE_OK * * DESCRIPTION: Build and return a full namespace pathname * - * MUTEX: Locks Namespace - * ******************************************************************************/ ACPI_STATUS AcpiNsHandleToPathname ( ACPI_HANDLE TargetHandle, - UINT32 *BufSize, - NATIVE_CHAR *UserBuffer) + ACPI_BUFFER *Buffer) { - ACPI_STATUS Status = AE_OK; + ACPI_STATUS Status; ACPI_NAMESPACE_NODE *Node; - UINT32 PathLength; - UINT32 UserBufSize; - ACPI_NAME Name; - UINT32 Size; + ACPI_SIZE RequiredSize; - FUNCTION_TRACE_PTR ("NsHandleToPathname", TargetHandle); + ACPI_FUNCTION_TRACE_PTR ("NsHandleToPathname", TargetHandle); - if (!AcpiGbl_RootNode) - { - /* - * If the name space has not been initialized, - * this function should not have been called. - */ - return_ACPI_STATUS (AE_NO_NAMESPACE); - } - Node = AcpiNsMapHandleToNode (TargetHandle); if (!Node) { return_ACPI_STATUS (AE_BAD_PARAMETER); } + /* Determine size required for the caller buffer */ - /* Set return length to the required path length */ - - PathLength = AcpiNsGetPathnameLength (Node); - Size = PathLength - 1; + RequiredSize = AcpiNsGetPathnameLength (Node); - UserBufSize = *BufSize; - *BufSize = PathLength; + /* Validate/Allocate/Clear caller buffer */ - /* Check if the user buffer is sufficiently large */ - - if (PathLength > UserBufSize) - { - Status = AE_BUFFER_OVERFLOW; - goto Exit; - } - - if (Size < ACPI_NAME_SIZE) - { - UserBuffer[0] = '\\'; - UserBuffer[1] = 0; - goto Exit; - } - - /* Store null terminator */ - - UserBuffer[Size] = 0; - Size -= ACPI_NAME_SIZE; - - /* Put the original ACPI name at the end of the path */ - - MOVE_UNALIGNED32_TO_32 ((UserBuffer + Size), - &Node->Name); - - UserBuffer[--Size] = PATH_SEPARATOR; - - /* Build name backwards, putting "." between segments */ - - while ((Size > ACPI_NAME_SIZE) && Node) + Status = AcpiUtInitializeBuffer (Buffer, RequiredSize); + if (ACPI_FAILURE (Status)) { - Size -= ACPI_NAME_SIZE; - Name = AcpiNsFindParentName (Node); - MOVE_UNALIGNED32_TO_32 ((UserBuffer + Size), &Name); - - UserBuffer[--Size] = PATH_SEPARATOR; - Node = AcpiNsGetParentObject (Node); + return_ACPI_STATUS (Status); } - /* - * Overlay the "." preceding the first segment with - * the root name "\" - */ - UserBuffer[Size] = '\\'; + /* Build the path in the caller buffer */ - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Len=%X, %s \n", PathLength, UserBuffer)); + AcpiNsBuildExternalPath (Node, RequiredSize, Buffer->Pointer); -Exit: - return_ACPI_STATUS (Status); + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%s [%X] \n", (char *) Buffer->Pointer, RequiredSize)); + return_ACPI_STATUS (AE_OK); } diff --git a/sys/contrib/dev/acpica/nsobject.c b/sys/contrib/dev/acpica/nsobject.c index a6166c5a823b..6ba13387a509 100644 --- a/sys/contrib/dev/acpica/nsobject.c +++ b/sys/contrib/dev/acpica/nsobject.c @@ -2,7 +2,7 @@ * * Module Name: nsobject - Utilities for objects attached to namespace * table entries - * $Revision: 73 $ + * $Revision: 78 $ * ******************************************************************************/ @@ -10,7 +10,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -126,7 +126,7 @@ #define _COMPONENT ACPI_NAMESPACE - MODULE_NAME ("nsobject") + ACPI_MODULE_NAME ("nsobject") /******************************************************************************* @@ -152,14 +152,14 @@ ACPI_STATUS AcpiNsAttachObject ( ACPI_NAMESPACE_NODE *Node, ACPI_OPERAND_OBJECT *Object, - ACPI_OBJECT_TYPE8 Type) + ACPI_OBJECT_TYPE Type) { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_OPERAND_OBJECT *LastObjDesc; - ACPI_OBJECT_TYPE8 ObjectType = ACPI_TYPE_ANY; + ACPI_OBJECT_TYPE ObjectType = ACPI_TYPE_ANY; - FUNCTION_TRACE ("NsAttachObject"); + ACPI_FUNCTION_TRACE ("NsAttachObject"); /* @@ -169,7 +169,7 @@ AcpiNsAttachObject ( { /* Invalid handle */ - REPORT_ERROR (("NsAttachObject: Null NamedObj handle\n")); + ACPI_REPORT_ERROR (("NsAttachObject: Null NamedObj handle\n")); return_ACPI_STATUS (AE_BAD_PARAMETER); } @@ -177,15 +177,15 @@ AcpiNsAttachObject ( { /* Null object */ - REPORT_ERROR (("NsAttachObject: Null object, but type not ACPI_TYPE_ANY\n")); + ACPI_REPORT_ERROR (("NsAttachObject: Null object, but type not ACPI_TYPE_ANY\n")); return_ACPI_STATUS (AE_BAD_PARAMETER); } - if (!VALID_DESCRIPTOR_TYPE (Node, ACPI_DESC_TYPE_NAMED)) + if (ACPI_GET_DESCRIPTOR_TYPE (Node) != ACPI_DESC_TYPE_NAMED) { /* Not a name handle */ - REPORT_ERROR (("NsAttachObject: Invalid handle\n")); + ACPI_REPORT_ERROR (("NsAttachObject: Invalid handle\n")); return_ACPI_STATUS (AE_BAD_PARAMETER); } @@ -211,7 +211,7 @@ AcpiNsAttachObject ( * If the source object is a namespace Node with an attached object, * we will use that (attached) object */ - else if (VALID_DESCRIPTOR_TYPE (Object, ACPI_DESC_TYPE_NAMED) && + else if ((ACPI_GET_DESCRIPTOR_TYPE (Object) == ACPI_DESC_TYPE_NAMED) && ((ACPI_NAMESPACE_NODE *) Object)->Object) { /* @@ -259,7 +259,7 @@ AcpiNsAttachObject ( } - /* + /* * Handle objects with multiple descriptors - walk * to the end of the descriptor list */ @@ -301,7 +301,7 @@ AcpiNsDetachObject ( ACPI_OPERAND_OBJECT *ObjDesc; - FUNCTION_TRACE ("NsDetachObject"); + ACPI_FUNCTION_TRACE ("NsDetachObject"); ObjDesc = Node->Object; @@ -314,7 +314,7 @@ AcpiNsDetachObject ( /* Clear the entry in all cases */ Node->Object = NULL; - if (VALID_DESCRIPTOR_TYPE (ObjDesc, ACPI_DESC_TYPE_INTERNAL)) + if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_INTERNAL) { Node->Object = ObjDesc->Common.NextObject; if (Node->Object && @@ -328,8 +328,8 @@ AcpiNsDetachObject ( Node->Type = ACPI_TYPE_ANY; - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Object=%p Value=%p Name %4.4s\n", - Node, ObjDesc, (char *) &Node->Name)); + ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Node %p [%4.4s] Object %p\n", + Node, (char *) &Node->Name, ObjDesc)); /* Remove one reference on the object (and all subobjects) */ @@ -353,7 +353,7 @@ ACPI_OPERAND_OBJECT * AcpiNsGetAttachedObject ( ACPI_NAMESPACE_NODE *Node) { - FUNCTION_TRACE_PTR ("NsGetAttachedObject", Node); + ACPI_FUNCTION_TRACE_PTR ("NsGetAttachedObject", Node); if (!Node) @@ -363,8 +363,8 @@ AcpiNsGetAttachedObject ( } if (!Node->Object || - ((!(VALID_DESCRIPTOR_TYPE (Node->Object, ACPI_DESC_TYPE_INTERNAL))) && - (!(VALID_DESCRIPTOR_TYPE (Node->Object, ACPI_DESC_TYPE_NAMED)))) || + ((ACPI_GET_DESCRIPTOR_TYPE (Node->Object) != ACPI_DESC_TYPE_INTERNAL) && + (ACPI_GET_DESCRIPTOR_TYPE (Node->Object) != ACPI_DESC_TYPE_NAMED)) || (Node->Object->Common.Type == INTERNAL_TYPE_DATA)) { return_PTR (NULL); @@ -389,7 +389,7 @@ ACPI_OPERAND_OBJECT * AcpiNsGetSecondaryObject ( ACPI_OPERAND_OBJECT *ObjDesc) { - FUNCTION_TRACE_PTR ("AcpiNsGetSecondaryObject", ObjDesc); + ACPI_FUNCTION_TRACE_PTR ("AcpiNsGetSecondaryObject", ObjDesc); if ((!ObjDesc) || @@ -408,11 +408,11 @@ AcpiNsGetSecondaryObject ( * * FUNCTION: AcpiNsAttachData * - * PARAMETERS: + * PARAMETERS: * * RETURN: Status * - * DESCRIPTION: + * DESCRIPTION: * ******************************************************************************/ @@ -427,7 +427,6 @@ AcpiNsAttachData ( ACPI_OPERAND_OBJECT *DataDesc; - /* */ PrevObjDesc = NULL; ObjDesc = Node->Object; @@ -475,11 +474,11 @@ AcpiNsAttachData ( * * FUNCTION: AcpiNsDetachData * - * PARAMETERS: + * PARAMETERS: * * RETURN: Status * - * DESCRIPTION: + * DESCRIPTION: * ******************************************************************************/ @@ -520,16 +519,15 @@ AcpiNsDetachData ( } - /******************************************************************************* * * FUNCTION: AcpiNsGetAttachedData * - * PARAMETERS: + * PARAMETERS: * * RETURN: Status * - * DESCRIPTION: + * DESCRIPTION: * ******************************************************************************/ @@ -559,4 +557,3 @@ AcpiNsGetAttachedData ( } - diff --git a/sys/contrib/dev/acpica/nssearch.c b/sys/contrib/dev/acpica/nssearch.c index 0ca44ccb322e..3944ee5251da 100644 --- a/sys/contrib/dev/acpica/nssearch.c +++ b/sys/contrib/dev/acpica/nssearch.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: nssearch - Namespace search - * $Revision: 77 $ + * $Revision: 82 $ * ******************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -123,7 +123,7 @@ #define _COMPONENT ACPI_NAMESPACE - MODULE_NAME ("nssearch") + ACPI_MODULE_NAME ("nssearch") /******************************************************************************* @@ -156,13 +156,13 @@ ACPI_STATUS AcpiNsSearchNode ( UINT32 TargetName, ACPI_NAMESPACE_NODE *Node, - ACPI_OBJECT_TYPE8 Type, + ACPI_OBJECT_TYPE Type, ACPI_NAMESPACE_NODE **ReturnNode) { ACPI_NAMESPACE_NODE *NextNode; - FUNCTION_TRACE ("NsSearchNode"); + ACPI_FUNCTION_TRACE ("NsSearchNode"); #ifdef ACPI_DEBUG @@ -170,11 +170,11 @@ AcpiNsSearchNode ( { NATIVE_CHAR *ScopeName; - ScopeName = AcpiNsGetTablePathname (Node); + ScopeName = AcpiNsGetExternalPathname (Node); if (ScopeName) { - ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Searching %s [%p] For %4.4s (type %X)\n", - ScopeName, Node, (char *) &TargetName, Type)); + ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Searching %s [%p] For %4.4s (type %s)\n", + ScopeName, Node, (char *) &TargetName, AcpiUtGetTypeName (Type))); ACPI_MEM_FREE (ScopeName); } @@ -281,17 +281,17 @@ static ACPI_STATUS AcpiNsSearchParentTree ( UINT32 TargetName, ACPI_NAMESPACE_NODE *Node, - ACPI_OBJECT_TYPE8 Type, + ACPI_OBJECT_TYPE Type, ACPI_NAMESPACE_NODE **ReturnNode) { ACPI_STATUS Status; ACPI_NAMESPACE_NODE *ParentNode; - FUNCTION_TRACE ("NsSearchParentTree"); + ACPI_FUNCTION_TRACE ("NsSearchParentTree"); - ParentNode = AcpiNsGetParentObject (Node); + ParentNode = AcpiNsGetParentNode (Node); /* * If there is no parent (at the root) or type is "local", we won't be @@ -325,9 +325,9 @@ AcpiNsSearchParentTree ( */ while (ParentNode) { - /* + /* * Search parent scope. Use TYPE_ANY because we don't care about the - * object type at this point, we only care about the existence of + * object type at this point, we only care about the existence of * the actual name we are searching for. Typechecking comes later. */ Status = AcpiNsSearchNode (TargetName, ParentNode, @@ -341,7 +341,7 @@ AcpiNsSearchParentTree ( * Not found here, go up another level * (until we reach the root) */ - ParentNode = AcpiNsGetParentObject (ParentNode); + ParentNode = AcpiNsGetParentNode (ParentNode); } /* Not found in parent tree */ @@ -380,8 +380,8 @@ AcpiNsSearchAndEnter ( UINT32 TargetName, ACPI_WALK_STATE *WalkState, ACPI_NAMESPACE_NODE *Node, - OPERATING_MODE InterpreterMode, - ACPI_OBJECT_TYPE8 Type, + ACPI_INTERPRETER_MODE InterpreterMode, + ACPI_OBJECT_TYPE Type, UINT32 Flags, ACPI_NAMESPACE_NODE **ReturnNode) { @@ -389,7 +389,7 @@ AcpiNsSearchAndEnter ( ACPI_NAMESPACE_NODE *NewNode; - FUNCTION_TRACE ("NsSearchAndEnter"); + ACPI_FUNCTION_TRACE ("NsSearchAndEnter"); /* Parameter validation */ @@ -399,7 +399,7 @@ AcpiNsSearchAndEnter ( ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Null param- Table %p Name %X Return %p\n", Node, TargetName, ReturnNode)); - REPORT_ERROR (("NsSearchAndEnter: bad (null) parameter\n")); + ACPI_REPORT_ERROR (("NsSearchAndEnter: bad (null) parameter\n")); return_ACPI_STATUS (AE_BAD_PARAMETER); } @@ -410,13 +410,13 @@ AcpiNsSearchAndEnter ( ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "*** Bad character in name: %08x *** \n", TargetName)); - REPORT_ERROR (("NsSearchAndEnter: Bad character in ACPI Name\n")); + ACPI_REPORT_ERROR (("NsSearchAndEnter: Bad character in ACPI Name\n")); return_ACPI_STATUS (AE_BAD_CHARACTER); } /* Try to find the name in the table specified by the caller */ - *ReturnNode = ENTRY_NOT_FOUND; + *ReturnNode = ACPI_ENTRY_NOT_FOUND; Status = AcpiNsSearchNode (TargetName, Node, Type, ReturnNode); if (Status != AE_NOT_FOUND) { @@ -425,7 +425,7 @@ AcpiNsSearchAndEnter ( * return the error */ if ((Status == AE_OK) && - (Flags & NS_ERROR_IF_FOUND)) + (Flags & ACPI_NS_ERROR_IF_FOUND)) { Status = AE_ALREADY_EXISTS; } @@ -446,8 +446,8 @@ AcpiNsSearchAndEnter ( * the search when namespace references are being resolved * (load pass 2) and during the execution phase. */ - if ((InterpreterMode != IMODE_LOAD_PASS1) && - (Flags & NS_SEARCH_PARENT)) + if ((InterpreterMode != ACPI_IMODE_LOAD_PASS1) && + (Flags & ACPI_NS_SEARCH_PARENT)) { /* * Not found in table - search parent tree according @@ -464,7 +464,7 @@ AcpiNsSearchAndEnter ( /* * In execute mode, just search, never add names. Exit now. */ - if (InterpreterMode == IMODE_EXECUTE) + if (InterpreterMode == ACPI_IMODE_EXECUTE) { ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "%4.4s Not found in %p [Not adding]\n", (char *) &TargetName, Node)); diff --git a/sys/contrib/dev/acpica/nsutils.c b/sys/contrib/dev/acpica/nsutils.c index c3d7cc1cbd2a..f2966f97c1cc 100644 --- a/sys/contrib/dev/acpica/nsutils.c +++ b/sys/contrib/dev/acpica/nsutils.c @@ -2,7 +2,7 @@ * * Module Name: nsutils - Utilities for accessing ACPI namespace, accessing * parents and siblings and Scope manipulation - * $Revision: 93 $ + * $Revision: 104 $ * *****************************************************************************/ @@ -10,7 +10,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -124,7 +124,7 @@ #include "actables.h" #define _COMPONENT ACPI_NAMESPACE - MODULE_NAME ("nsutils") + ACPI_MODULE_NAME ("nsutils") /******************************************************************************* @@ -179,20 +179,20 @@ AcpiNsValidPathSeparator ( * ******************************************************************************/ -ACPI_OBJECT_TYPE8 +ACPI_OBJECT_TYPE AcpiNsGetType ( ACPI_NAMESPACE_NODE *Node) { - FUNCTION_TRACE ("NsGetType"); + ACPI_FUNCTION_TRACE ("NsGetType"); if (!Node) { - REPORT_WARNING (("NsGetType: Null Node ptr")); + ACPI_REPORT_WARNING (("NsGetType: Null Node ptr")); return_VALUE (ACPI_TYPE_ANY); } - return_VALUE (Node->Type); + return_VALUE ((ACPI_OBJECT_TYPE) Node->Type); } @@ -209,20 +209,20 @@ AcpiNsGetType ( UINT32 AcpiNsLocal ( - ACPI_OBJECT_TYPE8 Type) + ACPI_OBJECT_TYPE Type) { - FUNCTION_TRACE ("NsLocal"); + ACPI_FUNCTION_TRACE ("NsLocal"); if (!AcpiUtValidObjectType (Type)) { /* Type code out of range */ - REPORT_WARNING (("NsLocal: Invalid Object Type\n")); - return_VALUE (NSP_NORMAL); + ACPI_REPORT_WARNING (("NsLocal: Invalid Object Type\n")); + return_VALUE (ACPI_NS_NORMAL); } - return_VALUE ((UINT32) AcpiGbl_NsProperties[Type] & NSP_LOCAL); + return_VALUE ((UINT32) AcpiGbl_NsProperties[Type] & ACPI_NS_LOCAL); } @@ -248,7 +248,7 @@ AcpiNsGetInternalNameLength ( UINT32 i; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); NextExternalChar = Info->ExternalName; @@ -270,7 +270,6 @@ AcpiNsGetInternalNameLength ( Info->FullyQualified = TRUE; NextExternalChar++; } - else { /* @@ -334,7 +333,7 @@ AcpiNsBuildInternalName ( UINT32 i; - FUNCTION_TRACE ("NsBuildInternalName"); + ACPI_FUNCTION_TRACE ("NsBuildInternalName"); /* Setup the correct prefixes, counts, and pointers */ @@ -375,17 +374,15 @@ AcpiNsBuildInternalName ( } } - if (NumSegments == 1) + if (NumSegments <= 1) { Result = &InternalName[i]; } - else if (NumSegments == 2) { InternalName[i] = AML_DUAL_NAME_PREFIX; Result = &InternalName[i+1]; } - else { InternalName[i] = AML_MULTI_NAME_PREFIX_OP; @@ -408,12 +405,11 @@ AcpiNsBuildInternalName ( Result[i] = '_'; } - else { /* Convert the character to uppercase and save it */ - Result[i] = (char) TOUPPER (*ExternalName); + Result[i] = (char) ACPI_TOUPPER (*ExternalName); ExternalName++; } } @@ -432,7 +428,6 @@ AcpiNsBuildInternalName ( Result += ACPI_NAME_SIZE; } - /* Terminate the string */ *Result = 0; @@ -477,7 +472,7 @@ AcpiNsInternalizeName ( ACPI_STATUS Status; - FUNCTION_TRACE ("NsInternalizeName"); + ACPI_FUNCTION_TRACE ("NsInternalizeName"); if ((!ExternalName) || @@ -487,7 +482,6 @@ AcpiNsInternalizeName ( return_ACPI_STATUS (AE_BAD_PARAMETER); } - /* Get the length of the new internal name */ Info.ExternalName = ExternalName; @@ -540,23 +534,22 @@ AcpiNsExternalizeName ( { UINT32 PrefixLength = 0; UINT32 NamesIndex = 0; - UINT32 NamesCount = 0; + UINT32 NumSegments = 0; UINT32 i = 0; UINT32 j = 0; + UINT32 RequiredLength; - FUNCTION_TRACE ("NsExternalizeName"); + ACPI_FUNCTION_TRACE ("NsExternalizeName"); if (!InternalNameLength || !InternalName || - !ConvertedNameLength || !ConvertedName) { return_ACPI_STATUS (AE_BAD_PARAMETER); } - /* * Check for a prefix (one '\' | one or more '^'). */ @@ -591,36 +584,36 @@ AcpiNsExternalizeName ( { switch (InternalName[PrefixLength]) { + case AML_MULTI_NAME_PREFIX_OP: - /* <count> 4-byte names */ + /* <count> 4-byte names */ - case AML_MULTI_NAME_PREFIX_OP: NamesIndex = PrefixLength + 2; - NamesCount = (UINT32) InternalName[PrefixLength + 1]; + NumSegments = (UINT32) (UINT8) InternalName[PrefixLength + 1]; break; + case AML_DUAL_NAME_PREFIX: - /* two 4-byte names */ + /* Two 4-byte names */ - case AML_DUAL_NAME_PREFIX: NamesIndex = PrefixLength + 1; - NamesCount = 2; + NumSegments = 2; break; + case 0: - /* NullName */ + /* NullName */ - case 0: NamesIndex = 0; - NamesCount = 0; + NumSegments = 0; break; + default: - /* one 4-byte name */ + /* one 4-byte name */ - default: NamesIndex = PrefixLength; - NamesCount = 1; + NumSegments = 1; break; } } @@ -630,24 +623,23 @@ AcpiNsExternalizeName ( * of the prefix, length of all object names, length of any required * punctuation ('.') between object names, plus the NULL terminator. */ - *ConvertedNameLength = PrefixLength + (4 * NamesCount) + - ((NamesCount > 0) ? (NamesCount - 1) : 0) + 1; + RequiredLength = PrefixLength + (4 * NumSegments) + + ((NumSegments > 0) ? (NumSegments - 1) : 0) + 1; /* * Check to see if we're still in bounds. If not, there's a problem * with InternalName (invalid format). */ - if (*ConvertedNameLength > InternalNameLength) + if (RequiredLength > InternalNameLength) { - REPORT_ERROR (("NsExternalizeName: Invalid internal name\n")); + ACPI_REPORT_ERROR (("NsExternalizeName: Invalid internal name\n")); return_ACPI_STATUS (AE_BAD_PATHNAME); } /* * Build ConvertedName... */ - - (*ConvertedName) = ACPI_MEM_CALLOCATE (*ConvertedNameLength); + *ConvertedName = ACPI_MEM_CALLOCATE (RequiredLength); if (!(*ConvertedName)) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -660,9 +652,9 @@ AcpiNsExternalizeName ( (*ConvertedName)[j++] = InternalName[i]; } - if (NamesCount > 0) + if (NumSegments > 0) { - for (i = 0; i < NamesCount; i++) + for (i = 0; i < NumSegments; i++) { if (i > 0) { @@ -676,6 +668,11 @@ AcpiNsExternalizeName ( } } + if (ConvertedNameLength) + { + *ConvertedNameLength = RequiredLength; + } + return_ACPI_STATUS (AE_OK); } @@ -700,7 +697,7 @@ AcpiNsMapHandleToNode ( ACPI_HANDLE Handle) { - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); /* @@ -718,7 +715,7 @@ AcpiNsMapHandleToNode ( /* We can at least attempt to verify the handle */ - if (!VALID_DESCRIPTOR_TYPE (Handle, ACPI_DESC_TYPE_NAMED)) + if (ACPI_GET_DESCRIPTOR_TYPE (Handle) != ACPI_DESC_TYPE_NAMED) { return (NULL); } @@ -788,7 +785,7 @@ AcpiNsTerminate (void) ACPI_NAMESPACE_NODE *ThisNode; - FUNCTION_TRACE ("NsTerminate"); + ACPI_FUNCTION_TRACE ("NsTerminate"); ThisNode = AcpiGbl_RootNode; @@ -837,26 +834,26 @@ AcpiNsTerminate (void) UINT32 AcpiNsOpensScope ( - ACPI_OBJECT_TYPE8 Type) + ACPI_OBJECT_TYPE Type) { - FUNCTION_TRACE_U32 ("NsOpensScope", Type); + ACPI_FUNCTION_TRACE_U32 ("NsOpensScope", Type); if (!AcpiUtValidObjectType (Type)) { /* type code out of range */ - REPORT_WARNING (("NsOpensScope: Invalid Object Type\n")); - return_VALUE (NSP_NORMAL); + ACPI_REPORT_WARNING (("NsOpensScope: Invalid Object Type %X\n", Type)); + return_VALUE (ACPI_NS_NORMAL); } - return_VALUE (((UINT32) AcpiGbl_NsProperties[Type]) & NSP_NEWSCOPE); + return_VALUE (((UINT32) AcpiGbl_NsProperties[Type]) & ACPI_NS_NEWSCOPE); } /******************************************************************************* * - * FUNCTION: AcpiNsGetNode + * FUNCTION: AcpiNsGetNodeByPath * * PARAMETERS: *Pathname - Name to be found, in external (ASL) format. The * \ (backslash) and ^ (carat) prefixes, and the @@ -865,6 +862,8 @@ AcpiNsOpensScope ( * root of the name space. If Name is fully * qualified (first INT8 is '\'), the passed value * of Scope will not be accessed. + * Flags - Used to indicate whether to perform upsearch or + * not. * ReturnNode - Where the Node is returned * * DESCRIPTION: Look up a name relative to a given scope and return the @@ -875,9 +874,10 @@ AcpiNsOpensScope ( ******************************************************************************/ ACPI_STATUS -AcpiNsGetNode ( +AcpiNsGetNodeByPath ( NATIVE_CHAR *Pathname, ACPI_NAMESPACE_NODE *StartNode, + UINT32 Flags, ACPI_NAMESPACE_NODE **ReturnNode) { ACPI_GENERIC_STATE ScopeInfo; @@ -885,22 +885,14 @@ AcpiNsGetNode ( NATIVE_CHAR *InternalPath = NULL; - FUNCTION_TRACE_PTR ("NsGetNode", Pathname); + ACPI_FUNCTION_TRACE_PTR ("NsGetNodeByPath", Pathname); - /* Ensure that the namespace has been initialized */ - - if (!AcpiGbl_RootNode) - { - return_ACPI_STATUS (AE_NO_NAMESPACE); - } - if (!Pathname) { return_ACPI_STATUS (AE_BAD_PARAMETER); } - /* Convert path to internal representation */ Status = AcpiNsInternalizeName (Pathname, &InternalPath); @@ -909,8 +901,13 @@ AcpiNsGetNode ( return_ACPI_STATUS (Status); } + /* Must lock namespace during lookup */ - AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } /* Setup lookup scope (search starting point) */ @@ -919,21 +916,18 @@ AcpiNsGetNode ( /* Lookup the name in the namespace */ Status = AcpiNsLookup (&ScopeInfo, InternalPath, - ACPI_TYPE_ANY, IMODE_EXECUTE, - NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE, + ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, + (Flags | ACPI_NS_DONT_OPEN_SCOPE), NULL, ReturnNode); - if (ACPI_FAILURE (Status)) { ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "%s, %s\n", InternalPath, AcpiFormatException (Status))); } - - AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - /* Cleanup */ + (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); ACPI_MEM_FREE (InternalPath); return_ACPI_STATUS (Status); } @@ -960,18 +954,19 @@ AcpiNsFindParentName ( ACPI_NAMESPACE_NODE *ParentNode; - FUNCTION_TRACE ("NsFindParentName"); + ACPI_FUNCTION_TRACE ("NsFindParentName"); if (ChildNode) { /* Valid entry. Get the parent Node */ - ParentNode = AcpiNsGetParentObject (ChildNode); + ParentNode = AcpiNsGetParentNode (ChildNode); if (ParentNode) { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Parent of %p [%4.4s] is %p [%4.4s]\n", - ChildNode, (char*)&ChildNode->Name, ParentNode, (char*)&ParentNode->Name)); + ChildNode, (char *) &ChildNode->Name, + ParentNode, (char *) &ParentNode->Name)); if (ParentNode->Name) { @@ -980,7 +975,7 @@ AcpiNsFindParentName ( } ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "unable to find parent of %p (%4.4s)\n", - ChildNode, (char*)&ChildNode->Name)); + ChildNode, (char *) &ChildNode->Name)); } return_VALUE (ACPI_UNKNOWN_NAME); @@ -1028,7 +1023,7 @@ AcpiNsExistDownstreamSibling ( /******************************************************************************* * - * FUNCTION: AcpiNsGetParentObject + * FUNCTION: AcpiNsGetParentNode * * PARAMETERS: Node - Current table entry * @@ -1040,12 +1035,10 @@ AcpiNsExistDownstreamSibling ( ACPI_NAMESPACE_NODE * -AcpiNsGetParentObject ( +AcpiNsGetParentNode ( ACPI_NAMESPACE_NODE *Node) { - - - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); if (!Node) diff --git a/sys/contrib/dev/acpica/nswalk.c b/sys/contrib/dev/acpica/nswalk.c index c39e7a3f8546..06741d044608 100644 --- a/sys/contrib/dev/acpica/nswalk.c +++ b/sys/contrib/dev/acpica/nswalk.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: nswalk - Functions for walking the ACPI namespace - * $Revision: 26 $ + * $Revision: 32 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -123,7 +123,7 @@ #define _COMPONENT ACPI_NAMESPACE - MODULE_NAME ("nswalk") + ACPI_MODULE_NAME ("nswalk") /******************************************************************************* @@ -147,14 +147,14 @@ ACPI_NAMESPACE_NODE * AcpiNsGetNextNode ( - ACPI_OBJECT_TYPE8 Type, + ACPI_OBJECT_TYPE Type, ACPI_NAMESPACE_NODE *ParentNode, ACPI_NAMESPACE_NODE *ChildNode) { ACPI_NAMESPACE_NODE *NextNode = NULL; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); if (!ChildNode) @@ -237,7 +237,7 @@ AcpiNsGetNextNode ( ACPI_STATUS AcpiNsWalkNamespace ( - ACPI_OBJECT_TYPE8 Type, + ACPI_OBJECT_TYPE Type, ACPI_HANDLE StartNode, UINT32 MaxDepth, BOOLEAN UnlockBeforeCallback, @@ -248,11 +248,11 @@ AcpiNsWalkNamespace ( ACPI_STATUS Status; ACPI_NAMESPACE_NODE *ChildNode; ACPI_NAMESPACE_NODE *ParentNode; - ACPI_OBJECT_TYPE8 ChildType; + ACPI_OBJECT_TYPE ChildType; UINT32 Level; - FUNCTION_TRACE ("NsWalkNamespace"); + ACPI_FUNCTION_TRACE ("NsWalkNamespace"); /* Special case for the namespace Root Node */ @@ -299,7 +299,11 @@ AcpiNsWalkNamespace ( */ if (UnlockBeforeCallback) { - AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + Status = AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } } Status = UserFunction (ChildNode, Level, @@ -307,7 +311,11 @@ AcpiNsWalkNamespace ( if (UnlockBeforeCallback) { - AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } } switch (Status) @@ -323,14 +331,12 @@ AcpiNsWalkNamespace ( /* Exit now, with OK status */ return_ACPI_STATUS (AE_OK); - break; default: /* All others are valid exceptions */ return_ACPI_STATUS (Status); - break; } } @@ -356,7 +362,6 @@ AcpiNsWalkNamespace ( } } } - else { /* @@ -366,7 +371,7 @@ AcpiNsWalkNamespace ( */ Level--; ChildNode = ParentNode; - ParentNode = AcpiNsGetParentObject (ParentNode); + ParentNode = AcpiNsGetParentNode (ParentNode); } } diff --git a/sys/contrib/dev/acpica/nsxfname.c b/sys/contrib/dev/acpica/nsxfname.c index 3b2f194777ed..c6555a15f54a 100644 --- a/sys/contrib/dev/acpica/nsxfname.c +++ b/sys/contrib/dev/acpica/nsxfname.c @@ -2,7 +2,7 @@ * * Module Name: nsxfname - Public interfaces to the ACPI subsystem * ACPI Namespace oriented interfaces - * $Revision: 82 $ + * $Revision: 89 $ * *****************************************************************************/ @@ -10,7 +10,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -127,7 +127,7 @@ #define _COMPONENT ACPI_NAMESPACE - MODULE_NAME ("nsxfname") + ACPI_MODULE_NAME ("nsxfname") /**************************************************************************** @@ -159,7 +159,7 @@ AcpiGetHandle ( ACPI_NAMESPACE_NODE *PrefixNode = NULL; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); /* Parameter Validation */ @@ -173,21 +173,29 @@ AcpiGetHandle ( if (Parent) { - AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + return (Status); + } PrefixNode = AcpiNsMapHandleToNode (Parent); if (!PrefixNode) { - AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return (AE_BAD_PARAMETER); } - AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + Status = AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + return (Status); + } } /* Special case for root, since we can't search for it */ - if (STRCMP (Pathname, NS_ROOT_PATH) == 0) + if (ACPI_STRCMP (Pathname, ACPI_NS_ROOT_PATH) == 0) { *RetHandle = AcpiNsConvertEntryToHandle (AcpiGbl_RootNode); return (AE_OK); @@ -196,7 +204,7 @@ AcpiGetHandle ( /* * Find the Node and convert to a handle */ - Status = AcpiNsGetNode (Pathname, PrefixNode, &Node); + Status = AcpiNsGetNodeByPath (Pathname, PrefixNode, ACPI_NS_NO_UPSEARCH, &Node); *RetHandle = NULL; if (ACPI_SUCCESS (Status)) @@ -214,7 +222,7 @@ AcpiGetHandle ( * * PARAMETERS: Handle - Handle to be converted to a pathname * NameType - Full pathname or single segment - * RetPathPtr - Buffer for returned path + * Buffer - Buffer for returned path * * RETURN: Pointer to a string containing the fully qualified Name. * @@ -228,41 +236,43 @@ ACPI_STATUS AcpiGetName ( ACPI_HANDLE Handle, UINT32 NameType, - ACPI_BUFFER *RetPathPtr) + ACPI_BUFFER *Buffer) { ACPI_STATUS Status; ACPI_NAMESPACE_NODE *Node; - /* Buffer pointer must be valid always */ + /* Parameter validation */ - if (!RetPathPtr || (NameType > ACPI_NAME_TYPE_MAX)) + if (NameType > ACPI_NAME_TYPE_MAX) { return (AE_BAD_PARAMETER); } - /* Allow length to be zero and ignore the pointer */ - - if ((RetPathPtr->Length) && - (!RetPathPtr->Pointer)) + Status = AcpiUtValidateBuffer (Buffer); + if (ACPI_FAILURE (Status)) { - return (AE_BAD_PARAMETER); + return (Status); } if (NameType == ACPI_FULL_PATHNAME) { /* Get the full pathname (From the namespace root) */ - Status = AcpiNsHandleToPathname (Handle, &RetPathPtr->Length, - RetPathPtr->Pointer); + Status = AcpiNsHandleToPathname (Handle, Buffer); return (Status); } /* * Wants the single segment ACPI name. - * Validate handle and convert to an Node + * Validate handle and convert to a namespace Node */ - AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + Node = AcpiNsMapHandleToNode (Handle); if (!Node) { @@ -270,26 +280,25 @@ AcpiGetName ( goto UnlockAndExit; } - /* Check if name will fit in buffer */ + /* Validate/Allocate/Clear caller buffer */ - if (RetPathPtr->Length < PATH_SEGMENT_LENGTH) + Status = AcpiUtInitializeBuffer (Buffer, PATH_SEGMENT_LENGTH); + if (ACPI_FAILURE (Status)) { - RetPathPtr->Length = PATH_SEGMENT_LENGTH; - Status = AE_BUFFER_OVERFLOW; goto UnlockAndExit; } /* Just copy the ACPI name from the Node and zero terminate it */ - STRNCPY (RetPathPtr->Pointer, (NATIVE_CHAR *) &Node->Name, + ACPI_STRNCPY (Buffer->Pointer, (NATIVE_CHAR *) &Node->Name, ACPI_NAME_SIZE); - ((NATIVE_CHAR *) RetPathPtr->Pointer) [ACPI_NAME_SIZE] = 0; + ((NATIVE_CHAR *) Buffer->Pointer) [ACPI_NAME_SIZE] = 0; Status = AE_OK; UnlockAndExit: - AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return (Status); } @@ -329,19 +338,27 @@ AcpiGetObjectInfo ( return (AE_BAD_PARAMETER); } - AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + return (Status); + } Node = AcpiNsMapHandleToNode (Handle); if (!Node) { - AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return (AE_BAD_PARAMETER); } Info->Type = Node->Type; Info->Name = Node->Name; - AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + Status = AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + return (Status); + } /* * If not a device, we are all done. @@ -366,8 +383,7 @@ AcpiGetObjectInfo ( Status = AcpiUtExecute_HID (Node, &Hid); if (ACPI_SUCCESS (Status)) { - STRNCPY (Info->HardwareId, Hid.Buffer, sizeof(Info->HardwareId)); - + ACPI_STRNCPY (Info->HardwareId, Hid.Buffer, sizeof(Info->HardwareId)); Info->Valid |= ACPI_VALID_HID; } @@ -376,8 +392,7 @@ AcpiGetObjectInfo ( Status = AcpiUtExecute_UID (Node, &Uid); if (ACPI_SUCCESS (Status)) { - STRCPY (Info->UniqueId, Uid.Buffer); - + ACPI_STRCPY (Info->UniqueId, Uid.Buffer); Info->Valid |= ACPI_VALID_UID; } diff --git a/sys/contrib/dev/acpica/nsxfobj.c b/sys/contrib/dev/acpica/nsxfobj.c index fc0ee50aafd4..ea1941e731f2 100644 --- a/sys/contrib/dev/acpica/nsxfobj.c +++ b/sys/contrib/dev/acpica/nsxfobj.c @@ -2,7 +2,7 @@ * * Module Name: nsxfobj - Public interfaces to the ACPI subsystem * ACPI Object oriented interfaces - * $Revision: 98 $ + * $Revision: 108 $ * ******************************************************************************/ @@ -10,7 +10,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -125,7 +125,7 @@ #define _COMPONENT ACPI_NAMESPACE - MODULE_NAME ("nsxfobj") + ACPI_MODULE_NAME ("nsxfobj") /******************************************************************************* @@ -158,12 +158,11 @@ AcpiEvaluateObject ( ACPI_STATUS Status; ACPI_OPERAND_OBJECT **InternalParams = NULL; ACPI_OPERAND_OBJECT *InternalReturnObj = NULL; - UINT32 BufferSpaceNeeded; - UINT32 UserBufferLength; + ACPI_SIZE BufferSpaceNeeded; UINT32 i; - FUNCTION_TRACE ("AcpiEvaluateObject"); + ACPI_FUNCTION_TRACE ("AcpiEvaluateObject"); /* @@ -177,13 +176,13 @@ AcpiEvaluateObject ( * Allocate a new parameter block for the internal objects * Add 1 to count to allow for null terminated internal list */ - InternalParams = ACPI_MEM_CALLOCATE ((ExternalParams->Count + 1) * sizeof (void *)); + InternalParams = ACPI_MEM_CALLOCATE ((ExternalParams->Count + 1) * + sizeof (void *)); if (!InternalParams) { return_ACPI_STATUS (AE_NO_MEMORY); } - /* * Convert each external object in the list to an * internal object @@ -192,7 +191,6 @@ AcpiEvaluateObject ( { Status = AcpiUtCopyEobjectToIobject (&ExternalParams->Pointer[i], &InternalParams[i]); - if (ACPI_FAILURE (Status)) { AcpiUtDeleteInternalObjectList (InternalParams); @@ -202,7 +200,6 @@ AcpiEvaluateObject ( InternalParams[ExternalParams->Count] = NULL; } - /* * Three major cases: * 1) Fully qualified pathname @@ -215,9 +212,9 @@ AcpiEvaluateObject ( /* * The path is fully qualified, just evaluate by name */ - Status = AcpiNsEvaluateByName (Pathname, InternalParams, &InternalReturnObj); + Status = AcpiNsEvaluateByName (Pathname, InternalParams, + &InternalReturnObj); } - else if (!Handle) { /* @@ -227,17 +224,17 @@ AcpiEvaluateObject ( */ if (!Pathname) { - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Both Handle and Pathname are NULL\n")); + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, + "Both Handle and Pathname are NULL\n")); } - else { - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Handle is NULL and Pathname is relative\n")); + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, + "Handle is NULL and Pathname is relative\n")); } Status = AE_BAD_PARAMETER; } - else { /* @@ -251,16 +248,16 @@ AcpiEvaluateObject ( * The null pathname case means the handle is for * the actual object to be evaluated */ - Status = AcpiNsEvaluateByHandle (Handle, InternalParams, &InternalReturnObj); + Status = AcpiNsEvaluateByHandle (Handle, InternalParams, + &InternalReturnObj); } - else { /* * Both a Handle and a relative Pathname */ Status = AcpiNsEvaluateRelative (Handle, Pathname, InternalParams, - &InternalReturnObj); + &InternalReturnObj); } } @@ -269,29 +266,27 @@ AcpiEvaluateObject ( * If we are expecting a return value, and all went well above, * copy the return value to an external object. */ - if (ReturnBuffer) { - UserBufferLength = ReturnBuffer->Length; - ReturnBuffer->Length = 0; - - if (InternalReturnObj) + if (!InternalReturnObj) { - if (VALID_DESCRIPTOR_TYPE (InternalReturnObj, ACPI_DESC_TYPE_NAMED)) + ReturnBuffer->Length = 0; + } + else + { + if (ACPI_GET_DESCRIPTOR_TYPE (InternalReturnObj) == ACPI_DESC_TYPE_NAMED) { /* - * If we got an Node as a return object, - * this means the object we are evaluating - * has nothing interesting to return (such - * as a mutex, etc.) We return an error - * because these types are essentially - * unsupported by this interface. We - * don't check up front because this makes - * it easier to add support for various - * types at a later date if necessary. + * If we received a NS Node as a return object, this means that + * the object we are evaluating has nothing interesting to + * return (such as a mutex, etc.) We return an error because + * these types are essentially unsupported by this interface. + * We don't check up front because this makes it easier to add + * support for various types at a later date if necessary. */ Status = AE_TYPE; - InternalReturnObj = NULL; /* No need to delete an Node */ + InternalReturnObj = NULL; /* No need to delete a NS Node */ + ReturnBuffer->Length = 0; } if (ACPI_SUCCESS (Status)) @@ -304,25 +299,18 @@ AcpiEvaluateObject ( &BufferSpaceNeeded); if (ACPI_SUCCESS (Status)) { - /* - * Check if there is enough room in the - * caller's buffer - */ - if (UserBufferLength < BufferSpaceNeeded) + /* Validate/Allocate/Clear caller buffer */ + + Status = AcpiUtInitializeBuffer (ReturnBuffer, BufferSpaceNeeded); + if (ACPI_FAILURE (Status)) { /* - * Caller's buffer is too small, can't - * give him partial results fail the call - * but return the buffer size needed + * Caller's buffer is too small or a new one can't be allocated */ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "Needed buffer size %X, received %X\n", - BufferSpaceNeeded, UserBufferLength)); - - ReturnBuffer->Length = BufferSpaceNeeded; - Status = AE_BUFFER_OVERFLOW; + "Needed buffer size %X, %s\n", + BufferSpaceNeeded, AcpiFormatException (Status))); } - else { /* @@ -330,14 +318,12 @@ AcpiEvaluateObject ( */ Status = AcpiUtCopyIobjectToEobject (InternalReturnObj, ReturnBuffer); - ReturnBuffer->Length = BufferSpaceNeeded; } } } } } - /* Delete the return and parameter objects */ if (InternalReturnObj) @@ -388,7 +374,7 @@ AcpiGetNextObject ( ACPI_HANDLE Child, ACPI_HANDLE *RetHandle) { - ACPI_STATUS Status = AE_OK; + ACPI_STATUS Status; ACPI_NAMESPACE_NODE *Node; ACPI_NAMESPACE_NODE *ParentNode = NULL; ACPI_NAMESPACE_NODE *ChildNode = NULL; @@ -401,7 +387,11 @@ AcpiGetNextObject ( return (AE_BAD_PARAMETER); } - AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + return (Status); + } /* If null handle, use the parent */ @@ -416,11 +406,9 @@ AcpiGetNextObject ( goto UnlockAndExit; } } - - /* Non-null handle, ignore the parent */ - else { + /* Non-null handle, ignore the parent */ /* Convert and validate the handle */ ChildNode = AcpiNsMapHandleToNode (Child); @@ -431,11 +419,9 @@ AcpiGetNextObject ( } } - /* Internal function does the real work */ - Node = AcpiNsGetNextNode ((ACPI_OBJECT_TYPE8) Type, - ParentNode, ChildNode); + Node = AcpiNsGetNextNode (Type, ParentNode, ChildNode); if (!Node) { Status = AE_NOT_FOUND; @@ -450,7 +436,7 @@ AcpiGetNextObject ( UnlockAndExit: - AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return (Status); } @@ -474,6 +460,7 @@ AcpiGetType ( ACPI_OBJECT_TYPE *RetType) { ACPI_NAMESPACE_NODE *Node; + ACPI_STATUS Status; /* Parameter Validation */ @@ -493,22 +480,26 @@ AcpiGetType ( return (AE_OK); } - AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + return (Status); + } /* Convert and validate the handle */ Node = AcpiNsMapHandleToNode (Handle); if (!Node) { - AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return (AE_BAD_PARAMETER); } *RetType = Node->Type; - AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - return (AE_OK); + Status = AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + return (Status); } @@ -532,7 +523,7 @@ AcpiGetParent ( ACPI_HANDLE *RetHandle) { ACPI_NAMESPACE_NODE *Node; - ACPI_STATUS Status = AE_OK; + ACPI_STATUS Status; if (!RetHandle) @@ -547,8 +538,11 @@ AcpiGetParent ( return (AE_NULL_ENTRY); } - - AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + return (Status); + } /* Convert and validate the handle */ @@ -559,15 +553,14 @@ AcpiGetParent ( goto UnlockAndExit; } - /* Get the parent entry */ *RetHandle = - AcpiNsConvertEntryToHandle (AcpiNsGetParentObject (Node)); + AcpiNsConvertEntryToHandle (AcpiNsGetParentNode (Node)); /* Return exeption if parent is null */ - if (!AcpiNsGetParentObject (Node)) + if (!AcpiNsGetParentNode (Node)) { Status = AE_NULL_ENTRY; } @@ -575,7 +568,7 @@ AcpiGetParent ( UnlockAndExit: - AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return (Status); } @@ -622,7 +615,7 @@ AcpiWalkNamespace ( ACPI_STATUS Status; - FUNCTION_TRACE ("AcpiWalkNamespace"); + ACPI_FUNCTION_TRACE ("AcpiWalkNamespace"); /* Parameter validation */ @@ -640,13 +633,16 @@ AcpiWalkNamespace ( * to the user function - since this function * must be allowed to make Acpi calls itself. */ - AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); - Status = AcpiNsWalkNamespace ((ACPI_OBJECT_TYPE8) Type, StartObject, - MaxDepth, NS_WALK_UNLOCK, UserFunction, Context, - ReturnValue); + Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } - AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + Status = AcpiNsWalkNamespace (Type, StartObject, MaxDepth, ACPI_NS_WALK_UNLOCK, + UserFunction, Context, ReturnValue); + (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return_ACPI_STATUS (Status); } @@ -682,9 +678,18 @@ AcpiNsGetDeviceCallback ( Info = Context; - AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + Node = AcpiNsMapHandleToNode (ObjHandle); - AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + Status = AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + return (Status); + } if (!Node) { @@ -716,20 +721,18 @@ AcpiNsGetDeviceCallback ( { return (AE_OK); } - else if (ACPI_FAILURE (Status)) { return (AE_CTRL_DEPTH); } - if (STRNCMP (Hid.Buffer, Info->Hid, sizeof (Hid.Buffer)) != 0) + if (ACPI_STRNCMP (Hid.Buffer, Info->Hid, sizeof (Hid.Buffer)) != 0) { Status = AcpiUtExecute_CID (Node, &Cid); if (Status == AE_NOT_FOUND) { return (AE_OK); } - else if (ACPI_FAILURE (Status)) { return (AE_CTRL_DEPTH); @@ -737,7 +740,7 @@ AcpiNsGetDeviceCallback ( /* TBD: Handle CID packages */ - if (STRNCMP (Cid.Buffer, Info->Hid, sizeof (Cid.Buffer)) != 0) + if (ACPI_STRNCMP (Cid.Buffer, Info->Hid, sizeof (Cid.Buffer)) != 0) { return (AE_OK); } @@ -785,7 +788,7 @@ AcpiGetDevices ( ACPI_GET_DEVICES_INFO Info; - FUNCTION_TRACE ("AcpiGetDevices"); + ACPI_FUNCTION_TRACE ("AcpiGetDevices"); /* Parameter validation */ @@ -809,15 +812,19 @@ AcpiGetDevices ( * to the user function - since this function * must be allowed to make Acpi calls itself. */ - AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + Status = AcpiNsWalkNamespace (ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX, - NS_WALK_UNLOCK, + ACPI_NS_WALK_UNLOCK, AcpiNsGetDeviceCallback, &Info, ReturnValue); - AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - + (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return_ACPI_STATUS (Status); } @@ -826,11 +833,11 @@ AcpiGetDevices ( * * FUNCTION: AcpiAttachData * - * PARAMETERS: + * PARAMETERS: * * RETURN: Status * - * DESCRIPTION: + * DESCRIPTION: * ******************************************************************************/ @@ -853,8 +860,11 @@ AcpiAttachData ( return (AE_BAD_PARAMETER); } - - AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + return (Status); + } /* Convert and validate the handle */ @@ -868,8 +878,7 @@ AcpiAttachData ( Status = AcpiNsAttachData (Node, Handler, Data); UnlockAndExit: - - AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return (Status); } @@ -878,11 +887,11 @@ UnlockAndExit: * * FUNCTION: AcpiDetachData * - * PARAMETERS: + * PARAMETERS: * * RETURN: Status * - * DESCRIPTION: + * DESCRIPTION: * ******************************************************************************/ @@ -903,7 +912,11 @@ AcpiDetachData ( return (AE_BAD_PARAMETER); } - AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + return (Status); + } /* Convert and validate the handle */ @@ -917,8 +930,7 @@ AcpiDetachData ( Status = AcpiNsDetachData (Node, Handler); UnlockAndExit: - - AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return (Status); } @@ -927,11 +939,11 @@ UnlockAndExit: * * FUNCTION: AcpiGetData * - * PARAMETERS: + * PARAMETERS: * * RETURN: Status * - * DESCRIPTION: + * DESCRIPTION: * ******************************************************************************/ @@ -954,7 +966,11 @@ AcpiGetData ( return (AE_BAD_PARAMETER); } - AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + return (Status); + } /* Convert and validate the handle */ @@ -968,10 +984,8 @@ AcpiGetData ( Status = AcpiNsGetAttachedData (Node, Handler, Data); UnlockAndExit: - - AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return (Status); } - diff --git a/sys/contrib/dev/acpica/psargs.c b/sys/contrib/dev/acpica/psargs.c index 3597c6bfd316..72b77b431c56 100644 --- a/sys/contrib/dev/acpica/psargs.c +++ b/sys/contrib/dev/acpica/psargs.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: psargs - Parse AML opcode arguments - * $Revision: 54 $ + * $Revision: 58 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -122,7 +122,7 @@ #include "acnamesp.h" #define _COMPONENT ACPI_PARSER - MODULE_NAME ("psargs") + ACPI_MODULE_NAME ("psargs") /******************************************************************************* @@ -146,10 +146,10 @@ AcpiPsGetNextPackageLength ( UINT32 Length = 0; - FUNCTION_TRACE ("PsGetNextPackageLength"); + ACPI_FUNCTION_TRACE ("PsGetNextPackageLength"); - EncodedLength = (UINT32) GET8 (ParserState->Aml); + EncodedLength = (UINT32) ACPI_GET8 (ParserState->Aml); ParserState->Aml++; @@ -163,7 +163,7 @@ AcpiPsGetNextPackageLength ( case 1: /* 2-byte encoding (next byte + bits 0-3) */ - Length = ((GET8 (ParserState->Aml) << 04) | + Length = ((ACPI_GET8 (ParserState->Aml) << 04) | (EncodedLength & 0x0F)); ParserState->Aml++; break; @@ -171,8 +171,8 @@ AcpiPsGetNextPackageLength ( case 2: /* 3-byte encoding (next 2 bytes + bits 0-3) */ - Length = ((GET8 (ParserState->Aml + 1) << 12) | - (GET8 (ParserState->Aml) << 04) | + Length = ((ACPI_GET8 (ParserState->Aml + 1) << 12) | + (ACPI_GET8 (ParserState->Aml) << 04) | (EncodedLength & 0x0F)); ParserState->Aml += 2; break; @@ -180,9 +180,9 @@ AcpiPsGetNextPackageLength ( case 3: /* 4-byte encoding (next 3 bytes + bits 0-3) */ - Length = ((GET8 (ParserState->Aml + 2) << 20) | - (GET8 (ParserState->Aml + 1) << 12) | - (GET8 (ParserState->Aml) << 04) | + Length = ((ACPI_GET8 (ParserState->Aml + 2) << 20) | + (ACPI_GET8 (ParserState->Aml + 1) << 12) | + (ACPI_GET8 (ParserState->Aml) << 04) | (EncodedLength & 0x0F)); ParserState->Aml += 3; break; @@ -213,7 +213,7 @@ AcpiPsGetNextPackageEnd ( NATIVE_UINT Length; - FUNCTION_TRACE ("PsGetNextPackageEnd"); + ACPI_FUNCTION_TRACE ("PsGetNextPackageEnd"); Length = (NATIVE_UINT) AcpiPsGetNextPackageLength (ParserState); @@ -246,12 +246,12 @@ AcpiPsGetNextNamestring ( UINT32 Length; - FUNCTION_TRACE ("PsGetNextNamestring"); + ACPI_FUNCTION_TRACE ("PsGetNextNamestring"); /* Handle multiple prefix characters */ - while (AcpiPsIsPrefixChar (GET8 (End))) + while (AcpiPsIsPrefixChar (ACPI_GET8 (End))) { /* include prefix '\\' or '^' */ @@ -260,7 +260,7 @@ AcpiPsGetNextNamestring ( /* Decode the path */ - switch (GET8 (End)) + switch (ACPI_GET8 (End)) { case 0: @@ -286,7 +286,7 @@ AcpiPsGetNextNamestring ( /* multiple name segments */ - Length = (UINT32) GET8 (End + 1) * 4; + Length = (UINT32) ACPI_GET8 (End + 1) * 4; End += 2 + Length; break; @@ -343,7 +343,7 @@ AcpiPsGetNextNamepath ( ACPI_PARSE_OBJECT *Count; - FUNCTION_TRACE ("PsGetNextNamepath"); + ACPI_FUNCTION_TRACE ("PsGetNextNamepath"); Path = AcpiPsGetNextNamestring (ParserState); @@ -443,7 +443,7 @@ AcpiPsGetNextNamepath ( ACPI_GENERIC_STATE ScopeInfo; - FUNCTION_TRACE ("PsGetNextNamepath"); + ACPI_FUNCTION_TRACE ("PsGetNextNamepath"); Path = AcpiPsGetNextNamestring (ParserState); @@ -475,8 +475,8 @@ AcpiPsGetNextNamepath ( * parent tree, but don't open a new scope -- we just want to lookup the * object (MUST BE mode EXECUTE to perform upsearch) */ - Status = AcpiNsLookup (&ScopeInfo, Path, ACPI_TYPE_ANY, IMODE_EXECUTE, - NS_SEARCH_PARENT | NS_DONT_OPEN_SCOPE, NULL, + Status = AcpiNsLookup (&ScopeInfo, Path, ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, + ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, NULL, &Node); if (ACPI_SUCCESS (Status)) { @@ -554,7 +554,7 @@ AcpiPsGetNextSimpleArg ( ACPI_PARSE_OBJECT *Arg) { - FUNCTION_TRACE_U32 ("PsGetNextSimpleArg", ArgType); + ACPI_FUNCTION_TRACE_U32 ("PsGetNextSimpleArg", ArgType); switch (ArgType) @@ -563,7 +563,7 @@ AcpiPsGetNextSimpleArg ( case ARGP_BYTEDATA: AcpiPsInitOp (Arg, AML_BYTE_OP); - Arg->Value.Integer = (UINT32) GET8 (ParserState->Aml); + Arg->Value.Integer = (UINT32) ACPI_GET8 (ParserState->Aml); ParserState->Aml++; break; @@ -574,7 +574,7 @@ AcpiPsGetNextSimpleArg ( /* Get 2 bytes from the AML stream */ - MOVE_UNALIGNED16_TO_32 (&Arg->Value.Integer, ParserState->Aml); + ACPI_MOVE_UNALIGNED16_TO_32 (&Arg->Value.Integer, ParserState->Aml); ParserState->Aml += 2; break; @@ -585,7 +585,7 @@ AcpiPsGetNextSimpleArg ( /* Get 4 bytes from the AML stream */ - MOVE_UNALIGNED32_TO_32 (&Arg->Value.Integer, ParserState->Aml); + ACPI_MOVE_UNALIGNED32_TO_32 (&Arg->Value.Integer, ParserState->Aml); ParserState->Aml += 4; break; @@ -596,7 +596,7 @@ AcpiPsGetNextSimpleArg ( /* Get 8 bytes from the AML stream */ - MOVE_UNALIGNED64_TO_64 (&Arg->Value.Integer, ParserState->Aml); + ACPI_MOVE_UNALIGNED64_TO_64 (&Arg->Value.Integer, ParserState->Aml); ParserState->Aml += 8; break; @@ -604,9 +604,9 @@ AcpiPsGetNextSimpleArg ( case ARGP_CHARLIST: AcpiPsInitOp (Arg, AML_STRING_OP); - Arg->Value.String = (char*) ParserState->Aml; + Arg->Value.String = (char *) ParserState->Aml; - while (GET8 (ParserState->Aml) != '\0') + while (ACPI_GET8 (ParserState->Aml) != '\0') { ParserState->Aml++; } @@ -649,12 +649,12 @@ AcpiPsGetNextField ( UINT32 Name; - FUNCTION_TRACE ("PsGetNextField"); + ACPI_FUNCTION_TRACE ("PsGetNextField"); /* determine field type */ - switch (GET8 (ParserState->Aml)) + switch (ACPI_GET8 (ParserState->Aml)) { default: @@ -693,7 +693,7 @@ AcpiPsGetNextField ( /* Get the 4-character name */ - MOVE_UNALIGNED32_TO_32 (&Name, ParserState->Aml); + ACPI_MOVE_UNALIGNED32_TO_32 (&Name, ParserState->Aml); AcpiPsSetName (Field, Name); ParserState->Aml += 4; @@ -713,13 +713,13 @@ AcpiPsGetNextField ( case AML_INT_ACCESSFIELD_OP: - /* + /* * Get AccessType and AccessAttrib and merge into the field Op * AccessType is first operand, AccessAttribute is second */ - Field->Value.Integer32 = (GET8 (ParserState->Aml) << 8); + Field->Value.Integer32 = (ACPI_GET8 (ParserState->Aml) << 8); ParserState->Aml++; - Field->Value.Integer32 |= GET8 (ParserState->Aml); + Field->Value.Integer32 |= ACPI_GET8 (ParserState->Aml); ParserState->Aml++; break; } @@ -757,7 +757,7 @@ AcpiPsGetNextArg ( UINT32 Subop; - FUNCTION_TRACE_PTR ("PsGetNextArg", ParserState); + ACPI_FUNCTION_TRACE_PTR ("PsGetNextArg", ParserState); switch (ArgType) @@ -845,6 +845,7 @@ AcpiPsGetNextArg ( case ARGP_TARGET: case ARGP_SUPERNAME: + case ARGP_SIMPLENAME: { Subop = AcpiPsPeekOpcode (ParserState); if (Subop == 0 || diff --git a/sys/contrib/dev/acpica/psfind.c b/sys/contrib/dev/acpica/psfind.c index a65f9aa614af..eb91d53a1928 100644 --- a/sys/contrib/dev/acpica/psfind.c +++ b/sys/contrib/dev/acpica/psfind.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: psfind - Parse tree search routine - * $Revision: 32 $ + * $Revision: 37 $ * *****************************************************************************/ @@ -10,7 +10,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -123,7 +123,7 @@ #include "amlcode.h" #define _COMPONENT ACPI_PARSER - MODULE_NAME ("psfind") + ACPI_MODULE_NAME ("psfind") /******************************************************************************* @@ -201,26 +201,10 @@ AcpiPsFindName ( while (Op) { OpInfo = AcpiPsGetOpcodeInfo (Op->Opcode); - if (OpInfo->Flags & AML_FIELD) - { - /* Field, search named fields */ - Field = AcpiPsGetChild (Op); - while (Field) - { - OpInfo = AcpiPsGetOpcodeInfo (Field->Opcode); - - if ((OpInfo->Flags & AML_NAMED) && - AcpiPsGetName (Field) == Name && - (!Opcode || Field->Opcode == Opcode)) - { - return (Field); - } + /* Check AML_CREATE first (since some opcodes have AML_FIELD set also )*/ - Field = Field->Next; - } - } - else if (OpInfo->Flags & AML_CREATE) + if (OpInfo->Flags & AML_CREATE) { if (Op->Opcode == AML_CREATE_FIELD_OP) { @@ -235,11 +219,30 @@ AcpiPsFindName ( if ((Field) && (Field->Value.String) && - (!STRNCMP (Field->Value.String, (char *) &Name, ACPI_NAME_SIZE))) + (!ACPI_STRNCMP (Field->Value.String, (char *) &Name, ACPI_NAME_SIZE))) { return (Op); } } + else if (OpInfo->Flags & AML_FIELD) + { + /* Field, search named fields */ + + Field = AcpiPsGetChild (Op); + while (Field) + { + OpInfo = AcpiPsGetOpcodeInfo (Field->Opcode); + + if ((OpInfo->Flags & AML_NAMED) && + AcpiPsGetName (Field) == Name && + (!Opcode || Field->Opcode == Opcode)) + { + return (Field); + } + + Field = Field->Next; + } + } else if ((OpInfo->Flags & AML_NAMED) && (AcpiPsGetName (Op) == Name) && (!Opcode || Op->Opcode == Opcode || Opcode == AML_SCOPE_OP)) @@ -283,7 +286,7 @@ AcpiPsFind ( BOOLEAN Unprefixed = TRUE; - FUNCTION_TRACE_PTR ("PsFind", Scope); + ACPI_FUNCTION_TRACE_PTR ("PsFind", Scope); if (!Scope || !Path) @@ -297,9 +300,9 @@ AcpiPsFind ( /* Handle all prefixes in the name path */ - while (AcpiPsIsPrefixChar (GET8 (Path))) + while (AcpiPsIsPrefixChar (ACPI_GET8 (Path))) { - switch (GET8 (Path)) + switch (ACPI_GET8 (Path)) { case '\\': @@ -320,7 +323,6 @@ AcpiPsFind ( { Scope = AcpiPsGetParent (Scope); } - break; } @@ -330,9 +332,9 @@ AcpiPsFind ( /* get name segment count */ - switch (GET8 (Path)) + switch (ACPI_GET8 (Path)) { - case '\0': + case 0: SegCount = 0; /* Null name case */ @@ -347,9 +349,9 @@ AcpiPsFind ( } - ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Null path, returning current root scope Op=%p\n", Op)); + ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, + "Null path, returning current root scope Op=%p\n", Op)); return_PTR (Op); - break; case AML_DUAL_NAME_PREFIX: SegCount = 2; @@ -357,7 +359,7 @@ AcpiPsFind ( break; case AML_MULTI_NAME_PREFIX_OP: - SegCount = GET8 (Path + 1); + SegCount = ACPI_GET8 (Path + 1); Path += 2; break; @@ -366,14 +368,15 @@ AcpiPsFind ( break; } - ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Search scope %p Segs=%d Opcode=%4.4X Create=%d\n", - Scope, SegCount, Opcode, Create)); + ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, + "Search scope %p Segs=%d Opcode=%4.4X Create=%d\n", + Scope, SegCount, Opcode, Create)); /* match each name segment */ while (Scope && SegCount) { - MOVE_UNALIGNED32_TO_32 (&Name, Path); + ACPI_MOVE_UNALIGNED32_TO_32 (&Name, Path); Path += 4; SegCount --; @@ -389,7 +392,9 @@ AcpiPsFind ( Op = AcpiPsFindName (Scope, Name, NameOp); if (Op) { - ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "[%4.4s] Found! Op=%p Opcode=%4.4X\n", (char*)&Name, Op, Op->Opcode)); + ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, + "[%4.4s] Found! Op=%p Opcode=%4.4X\n", + (char *) &Name, Op, Op->Opcode)); } if (!Op) @@ -412,7 +417,9 @@ AcpiPsFind ( AcpiPsSetName (Op, Name); AcpiPsAppendArg (Scope, Op); - ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "[%4.4s] Not found, created Op=%p Opcode=%4.4X\n", (char*)&Name, Op, Opcode)); + ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, + "[%4.4s] Not found, created Op=%p Opcode=%4.4X\n", + (char *) &Name, Op, Opcode)); } } @@ -426,17 +433,23 @@ AcpiPsFind ( Op = AcpiPsFindName (Scope, Name, Opcode); if (Op) { - ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "[%4.4s] Found in parent tree! Op=%p Opcode=%4.4X\n", (char*)&Name, Op, Op->Opcode)); + ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, + "[%4.4s] Found in parent tree! Op=%p Opcode=%4.4X\n", + (char *) &Name, Op, Op->Opcode)); } else { - ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "[%4.4s] Not found in parent=%p\n", (char*)&Name, Scope)); + ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, + "[%4.4s] Not found in parent=%p\n", + (char *) &Name, Scope)); } } } else { - ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Segment [%4.4s] Not Found in scope %p!\n", (char*)&Name, Scope)); + ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, + "Segment [%4.4s] Not Found in scope %p!\n", + (char *) &Name, Scope)); } } diff --git a/sys/contrib/dev/acpica/psopcode.c b/sys/contrib/dev/acpica/psopcode.c index f439f9bf0ad0..459c66190a39 100644 --- a/sys/contrib/dev/acpica/psopcode.c +++ b/sys/contrib/dev/acpica/psopcode.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: psopcode - Parser/Interpreter opcode information table - * $Revision: 54 $ + * $Revision: 64 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -121,7 +121,7 @@ #define _COMPONENT ACPI_PARSER - MODULE_NAME ("psopcode") + ACPI_MODULE_NAME ("psopcode") #define _UNK 0x6B @@ -327,7 +327,7 @@ #define ARGI_DATA_REGION_OP ARGI_LIST3 (ARGI_STRING, ARGI_STRING, ARGI_STRING) #define ARGI_DEBUG_OP ARG_NONE #define ARGI_DECREMENT_OP ARGI_LIST1 (ARGI_INTEGER_REF) -#define ARGI_DEREF_OF_OP ARGI_LIST1 (ARGI_REFERENCE) +#define ARGI_DEREF_OF_OP ARGI_LIST1 (ARGI_REF_OR_STRING) #define ARGI_DEVICE_OP ARGI_INVALID_OPCODE #define ARGI_DIVIDE_OP ARGI_LIST4 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF, ARGI_TARGETREF) #define ARGI_DWORD_OP ARGI_INVALID_OPCODE @@ -351,7 +351,7 @@ #define ARGI_LNOT_OP ARGI_LIST1 (ARGI_INTEGER) #define ARGI_LNOTEQUAL_OP ARGI_INVALID_OPCODE #define ARGI_LOAD_OP ARGI_LIST2 (ARGI_REGION, ARGI_TARGETREF) -#define ARGI_LOAD_TABLE_OP ARGI_LIST6 (ARGI_STRING, ARGI_STRING, ARGI_STRING, ARGI_STRING, ARGI_STRING, ARGI_TARGETREF) +#define ARGI_LOAD_TABLE_OP ARGI_LIST6 (ARGI_STRING, ARGI_STRING, ARGI_STRING, ARGI_STRING, ARGI_STRING, ARGI_ANYTYPE) #define ARGI_LOCAL0 ARG_NONE #define ARGI_LOCAL1 ARG_NONE #define ARGI_LOCAL2 ARG_NONE @@ -540,7 +540,8 @@ static const ACPI_OPCODE_INFO AcpiGbl_AmlOpInfo[] = { -/* Index Name Parser Args Interpreter Args Class Type Flags */ +/*! [Begin] no source code translation */ +/* Index Name Parser Args Interpreter Args ObjectType Class Type Flags */ /* 00 */ ACPI_OP ("Zero", ARGP_ZERO_OP, ARGI_ZERO_OP, INTERNAL_TYPE_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_CONSTANT, 0), /* 01 */ ACPI_OP ("One", ARGP_ONE_OP, ARGI_ONE_OP, INTERNAL_TYPE_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_CONSTANT, 0), @@ -639,8 +640,8 @@ static const ACPI_OPCODE_INFO AcpiGbl_AmlOpInfo[] = /* 5B */ ACPI_OP ("Processor", ARGP_PROCESSOR_OP, ARGI_PROCESSOR_OP, ACPI_TYPE_PROCESSOR, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_SIMPLE, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED), /* 5C */ ACPI_OP ("PowerResource", ARGP_POWER_RES_OP, ARGI_POWER_RES_OP, ACPI_TYPE_POWER, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_SIMPLE, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED), /* 5D */ ACPI_OP ("ThermalZone", ARGP_THERMAL_ZONE_OP, ARGI_THERMAL_ZONE_OP, ACPI_TYPE_THERMAL, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_NO_OBJ, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED), -/* 5E */ ACPI_OP ("IndexField", ARGP_INDEX_FIELD_OP, ARGI_INDEX_FIELD_OP, INTERNAL_TYPE_INDEX_FIELD_DEFN,AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_FIELD), -/* 5F */ ACPI_OP ("BankField", ARGP_BANK_FIELD_OP, ARGI_BANK_FIELD_OP, INTERNAL_TYPE_BANK_FIELD_DEFN,AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_FIELD), +/* 5E */ ACPI_OP ("IndexField", ARGP_INDEX_FIELD_OP, ARGI_INDEX_FIELD_OP, INTERNAL_TYPE_INDEX_FIELD_DEFN,AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_FIELD), +/* 5F */ ACPI_OP ("BankField", ARGP_BANK_FIELD_OP, ARGI_BANK_FIELD_OP, INTERNAL_TYPE_BANK_FIELD_DEFN,AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_FIELD), /* Internal opcodes that map to invalid AML opcodes */ @@ -676,8 +677,9 @@ static const ACPI_OPCODE_INFO AcpiGbl_AmlOpInfo[] = /* 79 */ ACPI_OP ("Mid", ARGP_MID_OP, ARGI_MID_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_3A_1T_1R, AML_FLAGS_EXEC_3A_1T_1R), /* 7A */ ACPI_OP ("Continue", ARGP_CONTINUE_OP, ARGI_CONTINUE_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, 0), /* 7B */ ACPI_OP ("LoadTable", ARGP_LOAD_TABLE_OP, ARGI_LOAD_TABLE_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_6A_0T_1R, AML_FLAGS_EXEC_6A_0T_1R), -/* 7C */ ACPI_OP ("DataTableRegion", ARGP_DATA_REGION_OP, ARGI_DATA_REGION_OP, ACPI_TYPE_REGION, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R), +/* 7C */ ACPI_OP ("DataTableRegion", ARGP_DATA_REGION_OP, ARGI_DATA_REGION_OP, ACPI_TYPE_REGION, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_SIMPLE, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED), +/*! [End] no source code translation !*/ }; /* @@ -767,7 +769,7 @@ const ACPI_OPCODE_INFO * AcpiPsGetOpcodeInfo ( UINT16 Opcode) { - PROC_NAME ("PsGetOpcodeInfo"); + ACPI_FUNCTION_NAME ("PsGetOpcodeInfo"); /* @@ -780,8 +782,6 @@ AcpiPsGetOpcodeInfo ( /* Simple (8-bit) opcode: 0-255, can't index beyond table */ return (&AcpiGbl_AmlOpInfo [AcpiGbl_ShortOpIndex [(UINT8) Opcode]]); - break; - case AML_EXTOP: @@ -790,9 +790,10 @@ AcpiPsGetOpcodeInfo ( if (((UINT8) Opcode) <= MAX_EXTENDED_OPCODE) { return (&AcpiGbl_AmlOpInfo [AcpiGbl_LongOpIndex [(UINT8) Opcode]]); - break; } + /* Else fall through to error case below */ + default: ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Unknown extended opcode [%X]\n", Opcode)); @@ -823,6 +824,8 @@ NATIVE_CHAR * AcpiPsGetOpcodeName ( UINT16 Opcode) { +#ifdef ACPI_DEBUG + const ACPI_OPCODE_INFO *Op; @@ -830,10 +833,11 @@ AcpiPsGetOpcodeName ( /* Always guaranteed to return a valid pointer */ -#ifdef ACPI_DEBUG return (Op->Name); + #else return ("AE_NOT_CONFIGURED"); + #endif } diff --git a/sys/contrib/dev/acpica/psparse.c b/sys/contrib/dev/acpica/psparse.c index 9e8cfb76dc61..c2507b528af5 100644 --- a/sys/contrib/dev/acpica/psparse.c +++ b/sys/contrib/dev/acpica/psparse.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: psparse - Parser top level AML parse routines - * $Revision: 109 $ + * $Revision: 119 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -133,7 +133,7 @@ #include "acinterp.h" #define _COMPONENT ACPI_PARSER - MODULE_NAME ("psparse") + ACPI_MODULE_NAME ("psparse") UINT32 AcpiGbl_Depth = 0; @@ -191,7 +191,7 @@ AcpiPsPeekOpcode ( Aml = ParserState->Aml; - Opcode = (UINT16) GET8 (Aml); + Opcode = (UINT16) ACPI_GET8 (Aml); if (Opcode == AML_EXTOP) @@ -199,7 +199,7 @@ AcpiPsPeekOpcode ( /* Extended opcode */ Aml++; - Opcode = (UINT16) ((Opcode << 8) | GET8 (Aml)); + Opcode = (UINT16) ((Opcode << 8) | ACPI_GET8 (Aml)); } return (Opcode); @@ -285,9 +285,16 @@ AcpiPsCompleteThisOp ( ACPI_PARSE_OBJECT *ReplacementOp = NULL; - FUNCTION_TRACE_PTR ("PsCompleteThisOp", Op); + ACPI_FUNCTION_TRACE_PTR ("PsCompleteThisOp", Op); + /* Check for null Op, can happen if AML code is corrupt */ + + if (!Op) + { + return_VALUE (TRUE); + } + /* Delete this op and the subtree below it if asked to */ if (((WalkState->ParseFlags & ACPI_PARSE_TREE_MASK) == ACPI_PARSE_DELETE_TREE) && @@ -429,11 +436,9 @@ AcpiPsNextParseState ( { ACPI_PARSE_STATE *ParserState = &WalkState->ParserState; ACPI_STATUS Status = AE_CTRL_PENDING; - UINT8 *Start; - UINT32 PackageLength; - FUNCTION_TRACE_PTR ("PsNextParseState", Op); + ACPI_FUNCTION_TRACE_PTR ("PsNextParseState", Op); switch (CallbackStatus) @@ -449,16 +454,21 @@ AcpiPsNextParseState ( break; - case AE_CTRL_PENDING: + case AE_CTRL_BREAK: - /* - * Predicate of a WHILE was true and the loop just completed an - * execution. Go back to the start of the loop and reevaluate the - * predicate. - */ + ParserState->Aml = WalkState->AmlLastWhile; + WalkState->ControlState->Common.Value = FALSE; + Status = AE_CTRL_BREAK; + break; + + case AE_CTRL_CONTINUE: - /* TBD: How to handle a break within a while. */ - /* This code attempts it */ + + ParserState->Aml = WalkState->AmlLastWhile; + Status = AE_CTRL_CONTINUE; + break; + + case AE_CTRL_PENDING: ParserState->Aml = WalkState->AmlLastWhile; break; @@ -469,13 +479,8 @@ AcpiPsNextParseState ( /* * Predicate of an IF was true, and we are at the matching ELSE. * Just close out this package - * - * Note: ParserState->Aml is modified by the package length procedure - * TBD: [Investigate] perhaps it shouldn't, too much trouble */ - Start = ParserState->Aml; - PackageLength = AcpiPsGetNextPackageLength (ParserState); - ParserState->Aml = Start + PackageLength; + ParserState->Aml = AcpiPsGetNextPackageEnd (ParserState); break; @@ -551,14 +556,14 @@ AcpiPsParseLoop ( UINT8 *AmlOpStart; - FUNCTION_TRACE_PTR ("PsParseLoop", WalkState); + ACPI_FUNCTION_TRACE_PTR ("PsParseLoop", WalkState); ParserState = &WalkState->ParserState; WalkState->ArgTypes = 0; #ifndef PARSER_ONLY - if (WalkState->WalkType & WALK_METHOD_RESTART) + if (WalkState->WalkType & ACPI_WALK_METHOD_RESTART) { /* We are restarting a preempted control method */ @@ -573,7 +578,7 @@ AcpiPsParseLoop ( (ParserState->Scope->ParseScope.Op->Opcode == AML_WHILE_OP)) && (WalkState->ControlState) && (WalkState->ControlState->Common.State == - CONTROL_PREDICATE_EXECUTING)) + ACPI_CONTROL_PREDICATE_EXECUTING)) { /* @@ -581,7 +586,7 @@ AcpiPsParseLoop ( * predicate and branch based on that value */ WalkState->Op = NULL; - Status = AcpiDsGetPredicateValue (WalkState, TRUE); + Status = AcpiDsGetPredicateValue (WalkState, ACPI_TO_POINTER (TRUE)); if (ACPI_FAILURE (Status) && ((Status & AE_CODE_MASK) != AE_CODE_CONTROL)) { @@ -654,7 +659,7 @@ AcpiPsParseLoop ( "Found unknown opcode %X at AML offset %X, ignoring\n", WalkState->Opcode, WalkState->AmlOffset)); - DUMP_BUFFER (ParserState->Aml, 128); + ACPI_DUMP_BUFFER (ParserState->Aml, 128); /* Assume one-byte bad opcode */ @@ -800,8 +805,8 @@ AcpiPsParseLoop ( if (WalkState->OpInfo) { ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, - "Op=%p Opcode=%4.4X Aml %p Oft=%5.5X\n", - Op, Op->Opcode, ParserState->Aml, Op->AmlOffset)); + "Opcode %4.4X [%s] Op %p Aml %p AmlOffset %5.5X\n", + Op->Opcode, WalkState->OpInfo->Name, Op, ParserState->Aml, Op->AmlOffset)); } } @@ -863,9 +868,9 @@ AcpiPsParseLoop ( * because we don't have enough info in the first pass * to parse them correctly. */ - ((ACPI_PARSE2_OBJECT * ) Op)->Data = ParserState->Aml; - ((ACPI_PARSE2_OBJECT * ) Op)->Length = (UINT32) (ParserState->PkgEnd - - ParserState->Aml); + ((ACPI_PARSE2_OBJECT * ) Op)->Data = ParserState->Aml; + ((ACPI_PARSE2_OBJECT * ) Op)->Length = (UINT32) (ParserState->PkgEnd - + ParserState->Aml); /* * Skip body of method. For OpRegions, we must continue @@ -873,173 +878,212 @@ AcpiPsParseLoop ( * package (We don't know where the end is). */ ParserState->Aml = ParserState->PkgEnd; - WalkState->ArgCount = 0; + WalkState->ArgCount = 0; + } + else if (Op->Opcode == AML_WHILE_OP) + { + if (WalkState->ControlState) + { + WalkState->ControlState->Control.PackageEnd = ParserState->PkgEnd; + } } - break; } } - /* - * Zero ArgCount means that all arguments for this op have been processed - */ - if (!WalkState->ArgCount) + /* Check for arguments that need to be processed */ + + if (WalkState->ArgCount) { - /* completed Op, prepare for next */ + /* There are arguments (complex ones), push Op and prepare for argument */ - WalkState->OpInfo = AcpiPsGetOpcodeInfo (Op->Opcode); - if (WalkState->OpInfo->Flags & AML_NAMED) - { - if (AcpiGbl_Depth) - { - AcpiGbl_Depth--; - } + AcpiPsPushScope (ParserState, Op, WalkState->ArgTypes, WalkState->ArgCount); + Op = NULL; + continue; + } - if (Op->Opcode == AML_REGION_OP) - { - /* - * Skip parsing of control method or opregion body, - * because we don't have enough info in the first pass - * to parse them correctly. - * - * Completed parsing an OpRegion declaration, we now - * know the length. - */ - ((ACPI_PARSE2_OBJECT * ) Op)->Length = (UINT32) (ParserState->Aml - - ((ACPI_PARSE2_OBJECT * ) Op)->Data); - } + + /* All arguments have been processed -- Op is complete, prepare for next */ + + WalkState->OpInfo = AcpiPsGetOpcodeInfo (Op->Opcode); + if (WalkState->OpInfo->Flags & AML_NAMED) + { + if (AcpiGbl_Depth) + { + AcpiGbl_Depth--; } - if (WalkState->OpInfo->Flags & AML_CREATE) + if (Op->Opcode == AML_REGION_OP) { /* - * Backup to beginning of CreateXXXfield declaration (1 for - * Opcode) + * Skip parsing of control method or opregion body, + * because we don't have enough info in the first pass + * to parse them correctly. * - * BodyLength is unknown until we parse the body + * Completed parsing an OpRegion declaration, we now + * know the length. */ ((ACPI_PARSE2_OBJECT * ) Op)->Length = (UINT32) (ParserState->Aml - ((ACPI_PARSE2_OBJECT * ) Op)->Data); } + } - /* This op complete, notify the dispatcher */ + if (WalkState->OpInfo->Flags & AML_CREATE) + { + /* + * Backup to beginning of CreateXXXfield declaration (1 for + * Opcode) + * + * BodyLength is unknown until we parse the body + */ + ((ACPI_PARSE2_OBJECT * ) Op)->Length = (UINT32) (ParserState->Aml - + ((ACPI_PARSE2_OBJECT * ) Op)->Data); + } - if (WalkState->AscendingCallback != NULL) - { - WalkState->Op = Op; - WalkState->Opcode = Op->Opcode; + /* This op complete, notify the dispatcher */ - Status = WalkState->AscendingCallback (WalkState); - Status = AcpiPsNextParseState (WalkState, Op, Status); - if (Status == AE_CTRL_PENDING) - { - Status = AE_OK; - goto CloseThisOp; - } + if (WalkState->AscendingCallback != NULL) + { + WalkState->Op = Op; + WalkState->Opcode = Op->Opcode; + + Status = WalkState->AscendingCallback (WalkState); + Status = AcpiPsNextParseState (WalkState, Op, Status); + if (Status == AE_CTRL_PENDING) + { + Status = AE_OK; + goto CloseThisOp; } + } CloseThisOp: + /* + * Finished one argument of the containing scope + */ + ParserState->Scope->ParseScope.ArgCount--; + + /* Close this Op (may result in parse subtree deletion) */ + + if (AcpiPsCompleteThisOp (WalkState, Op)) + { + Op = NULL; + } + + switch (Status) + { + case AE_OK: + break; + + + case AE_CTRL_TRANSFER: + /* - * Finished one argument of the containing scope + * We are about to transfer to a called method. */ - ParserState->Scope->ParseScope.ArgCount--; + WalkState->PrevOp = Op; + WalkState->PrevArgTypes = WalkState->ArgTypes; + return_ACPI_STATUS (Status); - /* Close this Op (may result in parse subtree deletion) */ - if (AcpiPsCompleteThisOp (WalkState, Op)) - { - Op = NULL; - } + case AE_CTRL_END: - switch (Status) - { - case AE_OK: - break; + AcpiPsPopScope (ParserState, &Op, &WalkState->ArgTypes, &WalkState->ArgCount); + WalkState->Op = Op; + WalkState->OpInfo = AcpiPsGetOpcodeInfo (Op->Opcode); + WalkState->Opcode = Op->Opcode; - case AE_CTRL_TRANSFER: + Status = WalkState->AscendingCallback (WalkState); + Status = AcpiPsNextParseState (WalkState, Op, Status); + + AcpiPsCompleteThisOp (WalkState, Op); + Op = NULL; + Status = AE_OK; + break; - /* - * We are about to transfer to a called method. - */ - WalkState->PrevOp = Op; - WalkState->PrevArgTypes = WalkState->ArgTypes; - return_ACPI_STATUS (Status); - break; + case AE_CTRL_BREAK: + case AE_CTRL_CONTINUE: - case AE_CTRL_END: + /* Pop off scopes until we find the While */ + while (!Op || (Op->Opcode != AML_WHILE_OP)) + { AcpiPsPopScope (ParserState, &Op, &WalkState->ArgTypes, &WalkState->ArgCount); + } - WalkState->Op = Op; - WalkState->OpInfo = AcpiPsGetOpcodeInfo (Op->Opcode); - WalkState->Opcode = Op->Opcode; + /* Close this iteration of the While loop */ - Status = WalkState->AscendingCallback (WalkState); - Status = AcpiPsNextParseState (WalkState, Op, Status); + WalkState->Op = Op; + WalkState->OpInfo = AcpiPsGetOpcodeInfo (Op->Opcode); + WalkState->Opcode = Op->Opcode; - AcpiPsCompleteThisOp (WalkState, Op); - Op = NULL; - Status = AE_OK; - break; + Status = WalkState->AscendingCallback (WalkState); + Status = AcpiPsNextParseState (WalkState, Op, Status); + AcpiPsCompleteThisOp (WalkState, Op); + Op = NULL; - case AE_CTRL_TERMINATE: + Status = AE_OK; + break; - Status = AE_OK; - /* Clean up */ - do + case AE_CTRL_TERMINATE: + + Status = AE_OK; + + /* Clean up */ + do + { + if (Op) { - if (Op) - { - AcpiPsCompleteThisOp (WalkState, Op); - } - AcpiPsPopScope (ParserState, &Op, &WalkState->ArgTypes, &WalkState->ArgCount); + AcpiPsCompleteThisOp (WalkState, Op); + } + AcpiPsPopScope (ParserState, &Op, &WalkState->ArgTypes, &WalkState->ArgCount); - } while (Op); + } while (Op); - return_ACPI_STATUS (Status); - break; + return_ACPI_STATUS (Status); - default: /* All other non-AE_OK status */ + default: /* All other non-AE_OK status */ - if (Op == NULL) + do + { + if (Op) { - AcpiPsPopScope (ParserState, &Op, &WalkState->ArgTypes, &WalkState->ArgCount); + AcpiPsCompleteThisOp (WalkState, Op); } - WalkState->PrevOp = Op; - WalkState->PrevArgTypes = WalkState->ArgTypes; + AcpiPsPopScope (ParserState, &Op, &WalkState->ArgTypes, &WalkState->ArgCount); - /* - * TBD: TEMP: - */ - return_ACPI_STATUS (Status); - break; - } + } while (Op); - /* This scope complete? */ - if (AcpiPsHasCompletedScope (ParserState)) + /* + * TBD: Cleanup parse ops on error + */ +#if 0 + if (Op == NULL) { AcpiPsPopScope (ParserState, &Op, &WalkState->ArgTypes, &WalkState->ArgCount); - ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Popped scope, Op=%p\n", Op)); - } - else - { - Op = NULL; } +#endif + WalkState->PrevOp = Op; + WalkState->PrevArgTypes = WalkState->ArgTypes; + return_ACPI_STATUS (Status); + } + + /* This scope complete? */ + + if (AcpiPsHasCompletedScope (ParserState)) + { + AcpiPsPopScope (ParserState, &Op, &WalkState->ArgTypes, &WalkState->ArgCount); + ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Popped scope, Op=%p\n", Op)); } else { - /* ArgCount is non-zero */ - /* complex argument, push Op and prepare for argument */ - - AcpiPsPushScope (ParserState, Op, WalkState->ArgTypes, WalkState->ArgCount); Op = NULL; } @@ -1134,7 +1178,7 @@ AcpiPsParseAml ( ACPI_WALK_STATE *PreviousWalkState; - FUNCTION_TRACE ("PsParseAml"); + ACPI_FUNCTION_TRACE ("PsParseAml"); ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Entered with WalkState=%p Aml=%p size=%X\n", WalkState, WalkState->ParserState.Aml, WalkState->ParserState.AmlSize)); @@ -1151,8 +1195,9 @@ AcpiPsParseAml ( WalkState->Thread = Thread; AcpiDsPushWalkState (WalkState, Thread); - - /* TBD: [Restructure] TEMP until we pass WalkState to the interpreter + /* + * This global allows the AML debugger to get a handle to the currently + * executing control method. */ AcpiGbl_CurrentWalkList = Thread; @@ -1231,14 +1276,23 @@ AcpiPsParseAml ( { if (ACPI_SUCCESS (Status)) { - /* There is another walk state, restart it */ - /* - * If the method returned value is not used by the parent, + * There is another walk state, restart it. + * If the method return value is not used by the parent, * The object is deleted */ AcpiDsRestartControlMethod (WalkState, PreviousWalkState->ReturnDesc); - WalkState->WalkType |= WALK_METHOD_RESTART; + WalkState->WalkType |= ACPI_WALK_METHOD_RESTART; + } + else + { + /* On error, delete any return object */ + + AcpiUtRemoveReference (PreviousWalkState->ReturnDesc); + + ACPI_REPORT_ERROR (("Method execution failed, %s\n", AcpiFormatException (Status))); + ACPI_DUMP_PATHNAME (WalkState->MethodNode, "Method pathname: ", + ACPI_LV_ERROR, _COMPONENT); } } diff --git a/sys/contrib/dev/acpica/psscope.c b/sys/contrib/dev/acpica/psscope.c index f3f868dec11e..3c20f7eabff1 100644 --- a/sys/contrib/dev/acpica/psscope.c +++ b/sys/contrib/dev/acpica/psscope.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: psscope - Parser scope stack management routines - * $Revision: 31 $ + * $Revision: 35 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -119,7 +119,7 @@ #include "acparser.h" #define _COMPONENT ACPI_PARSER - MODULE_NAME ("psscope") + ACPI_MODULE_NAME ("psscope") /******************************************************************************* @@ -186,7 +186,7 @@ AcpiPsInitScope ( ACPI_GENERIC_STATE *Scope; - FUNCTION_TRACE_PTR ("PsInitScope", RootOp); + ACPI_FUNCTION_TRACE_PTR ("PsInitScope", RootOp); Scope = AcpiUtCreateGenericState (); @@ -233,7 +233,7 @@ AcpiPsPushScope ( ACPI_GENERIC_STATE *Scope; - FUNCTION_TRACE_PTR ("PsPushScope", Op); + ACPI_FUNCTION_TRACE_PTR ("PsPushScope", Op); Scope = AcpiUtCreateGenericState (); @@ -265,7 +265,7 @@ AcpiPsPushScope ( { /* single argument */ - Scope->ParseScope.ArgEnd = ACPI_MAX_AML; + Scope->ParseScope.ArgEnd = ACPI_TO_POINTER (ACPI_MAX_PTR); } return_ACPI_STATUS (AE_OK); @@ -298,7 +298,7 @@ AcpiPsPopScope ( ACPI_GENERIC_STATE *Scope = ParserState->Scope; - FUNCTION_TRACE ("PsPopScope"); + ACPI_FUNCTION_TRACE ("PsPopScope"); /* @@ -354,7 +354,7 @@ AcpiPsCleanupScope ( { ACPI_GENERIC_STATE *Scope; - FUNCTION_TRACE_PTR ("PsCleanupScope", ParserState); + ACPI_FUNCTION_TRACE_PTR ("PsCleanupScope", ParserState); if (!ParserState) diff --git a/sys/contrib/dev/acpica/pstree.c b/sys/contrib/dev/acpica/pstree.c index c7580c962e68..6ab0142498ef 100644 --- a/sys/contrib/dev/acpica/pstree.c +++ b/sys/contrib/dev/acpica/pstree.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: pstree - Parser op tree manipulation/traversal/search - * $Revision: 35 $ + * $Revision: 37 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -122,7 +122,7 @@ #include "amlcode.h" #define _COMPONENT ACPI_PARSER - MODULE_NAME ("pstree") + ACPI_MODULE_NAME ("pstree") /******************************************************************************* @@ -147,7 +147,7 @@ AcpiPsGetArg ( const ACPI_OPCODE_INFO *OpInfo; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); /* Get the info structure for this opcode */ @@ -204,7 +204,7 @@ AcpiPsAppendArg ( const ACPI_OPCODE_INFO *OpInfo; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); if (!Op) @@ -219,7 +219,7 @@ AcpiPsAppendArg ( { /* Invalid opcode */ - REPORT_ERROR (("PsAppendArg: Invalid AML Opcode: 0x%2.2X\n", Op->Opcode)); + ACPI_REPORT_ERROR (("PsAppendArg: Invalid AML Opcode: 0x%2.2X\n", Op->Opcode)); return; } @@ -284,7 +284,7 @@ AcpiPsGetChild ( ACPI_PARSE_OBJECT *Child = NULL; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); switch (Op->Opcode) @@ -353,7 +353,7 @@ AcpiPsGetDepthNext ( ACPI_PARSE_OBJECT *Arg; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); if (!Op) diff --git a/sys/contrib/dev/acpica/psutils.c b/sys/contrib/dev/acpica/psutils.c index 15d5ac1a806c..51ae639d21ac 100644 --- a/sys/contrib/dev/acpica/psutils.c +++ b/sys/contrib/dev/acpica/psutils.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: psutils - Parser miscellaneous utilities (Parser only) - * $Revision: 44 $ + * $Revision: 49 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -120,14 +120,7 @@ #include "amlcode.h" #define _COMPONENT ACPI_PARSER - MODULE_NAME ("psutils") - - -#define PARSEOP_GENERIC 0x01 -#define PARSEOP_NAMED 0x02 -#define PARSEOP_DEFERRED 0x04 -#define PARSEOP_BYTELIST 0x08 -#define PARSEOP_IN_CACHE 0x80 + ACPI_MODULE_NAME ("psutils") /******************************************************************************* @@ -149,19 +142,14 @@ AcpiPsInitOp ( ACPI_PARSE_OBJECT *Op, UINT16 Opcode) { - const ACPI_OPCODE_INFO *AmlOp; - - - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); Op->DataType = ACPI_DESC_TYPE_PARSER; Op->Opcode = Opcode; - AmlOp = AcpiPsGetOpcodeInfo (Opcode); - - DEBUG_ONLY_MEMBERS (STRNCPY (Op->OpName, AmlOp->Name, - sizeof (Op->OpName))); + ACPI_DEBUG_ONLY_MEMBERS (ACPI_STRNCPY (Op->OpName, + (AcpiPsGetOpcodeInfo (Opcode))->Name, sizeof (Op->OpName))); } @@ -189,7 +177,7 @@ AcpiPsAllocOp ( const ACPI_OPCODE_INFO *OpInfo; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); OpInfo = AcpiPsGetOpcodeInfo (Opcode); @@ -199,25 +187,25 @@ AcpiPsAllocOp ( if (OpInfo->Flags & AML_DEFER) { Size = sizeof (ACPI_PARSE2_OBJECT); - Flags = PARSEOP_DEFERRED; + Flags = ACPI_PARSEOP_DEFERRED; } else if (OpInfo->Flags & AML_NAMED) { Size = sizeof (ACPI_PARSE2_OBJECT); - Flags = PARSEOP_NAMED; + Flags = ACPI_PARSEOP_NAMED; } else if (Opcode == AML_INT_BYTELIST_OP) { Size = sizeof (ACPI_PARSE2_OBJECT); - Flags = PARSEOP_BYTELIST; + Flags = ACPI_PARSEOP_BYTELIST; } else { Size = sizeof (ACPI_PARSE_OBJECT); - Flags = PARSEOP_GENERIC; + Flags = ACPI_PARSEOP_GENERIC; } @@ -263,7 +251,7 @@ void AcpiPsFreeOp ( ACPI_PARSE_OBJECT *Op) { - PROC_NAME ("PsFreeOp"); + ACPI_FUNCTION_NAME ("PsFreeOp"); if (Op->Opcode == AML_INT_RETURN_VALUE_OP) @@ -271,7 +259,7 @@ AcpiPsFreeOp ( ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Free retval op: %p\n", Op)); } - if (Op->Flags == PARSEOP_GENERIC) + if (Op->Flags == ACPI_PARSEOP_GENERIC) { AcpiUtReleaseToCache (ACPI_MEM_LIST_PSNODE, Op); } @@ -299,7 +287,7 @@ void AcpiPsDeleteParseCache ( void) { - FUNCTION_TRACE ("PsDeleteParseCache"); + ACPI_FUNCTION_TRACE ("PsDeleteParseCache"); AcpiUtDeleteGenericCache (ACPI_MEM_LIST_PSNODE); @@ -350,7 +338,7 @@ AcpiPsGetName ( /* The "generic" object has no name associated with it */ - if (Op->Flags & PARSEOP_GENERIC) + if (Op->Flags & ACPI_PARSEOP_GENERIC) { return (0); } @@ -372,7 +360,7 @@ AcpiPsSetName ( /* The "generic" object has no name associated with it */ - if (Op->Flags & PARSEOP_GENERIC) + if (Op->Flags & ACPI_PARSEOP_GENERIC) { return; } diff --git a/sys/contrib/dev/acpica/pswalk.c b/sys/contrib/dev/acpica/pswalk.c index 897556176b89..47d957d70dc9 100644 --- a/sys/contrib/dev/acpica/pswalk.c +++ b/sys/contrib/dev/acpica/pswalk.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: pswalk - Parser routines to walk parsed op tree(s) - * $Revision: 61 $ + * $Revision: 63 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -123,7 +123,7 @@ #include "acinterp.h" #define _COMPONENT ACPI_PARSER - MODULE_NAME ("pswalk") + ACPI_MODULE_NAME ("pswalk") /******************************************************************************* @@ -152,12 +152,12 @@ AcpiPsGetNextWalkOp ( ACPI_STATUS Status; - FUNCTION_TRACE_PTR ("PsGetNextWalkOp", Op); + ACPI_FUNCTION_TRACE_PTR ("PsGetNextWalkOp", Op); /* Check for a argument only if we are descending in the tree */ - if (WalkState->NextOpInfo != NEXT_OP_UPWARD) + if (WalkState->NextOpInfo != ACPI_NEXT_OP_UPWARD) { /* Look for an argument or child of the current op */ @@ -168,7 +168,7 @@ AcpiPsGetNextWalkOp ( WalkState->PrevOp = Op; WalkState->NextOp = Next; - WalkState->NextOpInfo = NEXT_OP_DOWNWARD; + WalkState->NextOpInfo = ACPI_NEXT_OP_DOWNWARD; return_ACPI_STATUS (AE_OK); } @@ -209,7 +209,7 @@ AcpiPsGetNextWalkOp ( WalkState->PrevOp = Op; WalkState->NextOp = Next; - WalkState->NextOpInfo = NEXT_OP_DOWNWARD; + WalkState->NextOpInfo = ACPI_NEXT_OP_DOWNWARD; /* Continue downward */ @@ -271,7 +271,7 @@ AcpiPsGetNextWalkOp ( WalkState->PrevOp = Parent; WalkState->NextOp = Next; - WalkState->NextOpInfo = NEXT_OP_DOWNWARD; + WalkState->NextOpInfo = ACPI_NEXT_OP_DOWNWARD; return_ACPI_STATUS (Status); } @@ -339,7 +339,7 @@ AcpiPsDeleteParseTree ( ACPI_THREAD_STATE *Thread; - FUNCTION_TRACE_PTR ("PsDeleteParseTree", SubtreeRoot); + ACPI_FUNCTION_TRACE_PTR ("PsDeleteParseTree", SubtreeRoot); if (!SubtreeRoot) @@ -371,7 +371,7 @@ AcpiPsDeleteParseTree ( /* Head downward in the tree */ - WalkState->NextOpInfo = NEXT_OP_DOWNWARD; + WalkState->NextOpInfo = ACPI_NEXT_OP_DOWNWARD; /* Visit all nodes in the subtree */ diff --git a/sys/contrib/dev/acpica/psxface.c b/sys/contrib/dev/acpica/psxface.c index 7ee0a8e37b8b..06d46d613163 100644 --- a/sys/contrib/dev/acpica/psxface.c +++ b/sys/contrib/dev/acpica/psxface.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: psxface - Parser external interfaces - * $Revision: 56 $ + * $Revision: 59 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -125,7 +125,7 @@ #define _COMPONENT ACPI_PARSER - MODULE_NAME ("psxface") + ACPI_MODULE_NAME ("psxface") /******************************************************************************* @@ -159,7 +159,7 @@ AcpiPsxExecute ( ACPI_WALK_STATE *WalkState; - FUNCTION_TRACE ("PsxExecute"); + ACPI_FUNCTION_TRACE ("PsxExecute"); /* Validate the Node and get the attached object */ @@ -211,9 +211,16 @@ AcpiPsxExecute ( return_ACPI_STATUS (AE_NO_MEMORY); } + /* + * Get a new OwnerId for objects created by this method. Namespace + * objects (such as Operation Regions) can be created during the + * first pass parse. + */ + ObjDesc->Method.OwningId = AcpiUtAllocateOwnerId (ACPI_OWNER_TYPE_METHOD); + /* Create and initialize a new walk state */ - WalkState = AcpiDsCreateWalkState (TABLE_ID_DSDT, + WalkState = AcpiDsCreateWalkState (ObjDesc->Method.OwningId, NULL, NULL, NULL); if (!WalkState) { @@ -287,15 +294,6 @@ AcpiPsxExecute ( } } - /* Now check status from the method execution */ - - if (ACPI_FAILURE (Status)) - { - REPORT_ERROR (("Method execution failed, %s\n", AcpiFormatException (Status))); - DUMP_PATHNAME (MethodNode, "Method pathname: ", - ACPI_LV_ERROR, _COMPONENT); - } - /* * If the method has returned an object, signal this to the caller with * a control exception code @@ -304,7 +302,7 @@ AcpiPsxExecute ( { ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Method returned ObjDesc=%p\n", *ReturnObjDesc)); - DUMP_STACK_ENTRY (*ReturnObjDesc); + ACPI_DUMP_STACK_ENTRY (*ReturnObjDesc); Status = AE_CTRL_RETURN_VALUE; } diff --git a/sys/contrib/dev/acpica/rsaddr.c b/sys/contrib/dev/acpica/rsaddr.c index 723109842ff2..5a6fbd333a3d 100644 --- a/sys/contrib/dev/acpica/rsaddr.c +++ b/sys/contrib/dev/acpica/rsaddr.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: rsaddr - Address resource descriptors (16/32/64) - * $Revision: 20 $ + * $Revision: 24 $ * ******************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -120,7 +120,7 @@ #include "acresrc.h" #define _COMPONENT ACPI_RESOURCES - MODULE_NAME ("rsaddr") + ACPI_MODULE_NAME ("rsaddr") /******************************************************************************* @@ -129,13 +129,12 @@ * * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte * stream - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes consumed from - * the ByteStreamBuffer - * OutputBuffer - Pointer to the user's return buffer - * StructureSize - UINT32 pointer that is filled with - * the number of bytes in the filled - * in structure + * BytesConsumed - Pointer to where the number of bytes + * consumed the ByteStreamBuffer is + * returned + * OutputBuffer - Pointer to the return data buffer + * StructureSize - Pointer to where the number of bytes + * in the return data struct is returned * * RETURN: Status * @@ -148,26 +147,26 @@ ACPI_STATUS AcpiRsAddress16Resource ( UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, + ACPI_SIZE *BytesConsumed, UINT8 **OutputBuffer, - UINT32 *StructureSize) + ACPI_SIZE *StructureSize) { UINT8 *Buffer = ByteStreamBuffer; ACPI_RESOURCE *OutputStruct = (ACPI_RESOURCE *) *OutputBuffer; NATIVE_CHAR *TempPtr; - UINT32 StructSize = SIZEOF_RESOURCE (ACPI_RESOURCE_ADDRESS16); + ACPI_SIZE StructSize = ACPI_SIZEOF_RESOURCE (ACPI_RESOURCE_ADDRESS16); UINT32 Index; UINT16 Temp16; UINT8 Temp8; - FUNCTION_TRACE ("RsAddress16Resource"); + ACPI_FUNCTION_TRACE ("RsAddress16Resource"); /* * Point past the Descriptor to get the number of bytes consumed */ Buffer += 1; - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); + ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); *BytesConsumed = Temp16 + 3; OutputStruct->Id = ACPI_RSTYPE_ADDRESS16; @@ -215,7 +214,7 @@ AcpiRsAddress16Resource ( Buffer += 1; Temp8 = *Buffer; - if (MEMORY_RANGE == OutputStruct->Data.Address16.ResourceType) + if (ACPI_MEMORY_RANGE == OutputStruct->Data.Address16.ResourceType) { OutputStruct->Data.Address16.Attribute.Memory.ReadWriteAttribute = (UINT16) (Temp8 & 0x01); @@ -224,7 +223,7 @@ AcpiRsAddress16Resource ( } else { - if (IO_RANGE == OutputStruct->Data.Address16.ResourceType) + if (ACPI_IO_RANGE == OutputStruct->Data.Address16.ResourceType) { OutputStruct->Data.Address16.Attribute.Io.RangeAttribute = (UINT16) (Temp8 & 0x03); @@ -240,35 +239,35 @@ AcpiRsAddress16Resource ( * Get Granularity (Bytes 6-7) */ Buffer += 1; - MOVE_UNALIGNED16_TO_16 (&OutputStruct->Data.Address16.Granularity, + ACPI_MOVE_UNALIGNED16_TO_16 (&OutputStruct->Data.Address16.Granularity, Buffer); /* * Get MinAddressRange (Bytes 8-9) */ Buffer += 2; - MOVE_UNALIGNED16_TO_16 (&OutputStruct->Data.Address16.MinAddressRange, + ACPI_MOVE_UNALIGNED16_TO_16 (&OutputStruct->Data.Address16.MinAddressRange, Buffer); /* * Get MaxAddressRange (Bytes 10-11) */ Buffer += 2; - MOVE_UNALIGNED16_TO_16 (&OutputStruct->Data.Address16.MaxAddressRange, + ACPI_MOVE_UNALIGNED16_TO_16 (&OutputStruct->Data.Address16.MaxAddressRange, Buffer); /* * Get AddressTranslationOffset (Bytes 12-13) */ Buffer += 2; - MOVE_UNALIGNED16_TO_16 (&OutputStruct->Data.Address16.AddressTranslationOffset, + ACPI_MOVE_UNALIGNED16_TO_16 (&OutputStruct->Data.Address16.AddressTranslationOffset, Buffer); /* * Get AddressLength (Bytes 14-15) */ Buffer += 2; - MOVE_UNALIGNED16_TO_16 (&OutputStruct->Data.Address16.AddressLength, + ACPI_MOVE_UNALIGNED16_TO_16 (&OutputStruct->Data.Address16.AddressLength, Buffer); /* @@ -327,7 +326,7 @@ AcpiRsAddress16Resource ( * StructSize to the next 32-bit boundary. */ Temp8 = (UINT8) (Index + 1); - StructSize += ROUND_UP_TO_32BITS (Temp8); + StructSize += ACPI_ROUND_UP_TO_32BITS (Temp8); } else { @@ -355,9 +354,8 @@ AcpiRsAddress16Resource ( * * PARAMETERS: LinkedList - Pointer to the resource linked list * OutputBuffer - Pointer to the user's return buffer - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes of the - * OutputBuffer used + * BytesConsumed - Pointer to where the number of bytes + * used in the OutputBuffer is returned * * RETURN: Status * @@ -370,16 +368,16 @@ ACPI_STATUS AcpiRsAddress16Stream ( ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, - UINT32 *BytesConsumed) + ACPI_SIZE *BytesConsumed) { UINT8 *Buffer = *OutputBuffer; UINT8 *LengthField; UINT8 Temp8; NATIVE_CHAR *TempPointer = NULL; - UINT32 ActualBytes; + ACPI_SIZE ActualBytes; - FUNCTION_TRACE ("RsAddress16Stream"); + ACPI_FUNCTION_TRACE ("RsAddress16Stream"); /* @@ -418,7 +416,7 @@ AcpiRsAddress16Stream ( */ Temp8 = 0; - if (MEMORY_RANGE == LinkedList->Data.Address16.ResourceType) + if (ACPI_MEMORY_RANGE == LinkedList->Data.Address16.ResourceType) { Temp8 = (UINT8) (LinkedList->Data.Address16.Attribute.Memory.ReadWriteAttribute & @@ -428,7 +426,7 @@ AcpiRsAddress16Stream ( (LinkedList->Data.Address16.Attribute.Memory.CacheAttribute & 0x0F) << 1; } - else if (IO_RANGE == LinkedList->Data.Address16.ResourceType) + else if (ACPI_IO_RANGE == LinkedList->Data.Address16.ResourceType) { Temp8 = (UINT8) (LinkedList->Data.Address16.Attribute.Io.RangeAttribute & @@ -441,35 +439,35 @@ AcpiRsAddress16Stream ( /* * Set the address space granularity */ - MOVE_UNALIGNED16_TO_16 (Buffer, + ACPI_MOVE_UNALIGNED16_TO_16 (Buffer, &LinkedList->Data.Address16.Granularity); Buffer += 2; /* * Set the address range minimum */ - MOVE_UNALIGNED16_TO_16 (Buffer, + ACPI_MOVE_UNALIGNED16_TO_16 (Buffer, &LinkedList->Data.Address16.MinAddressRange); Buffer += 2; /* * Set the address range maximum */ - MOVE_UNALIGNED16_TO_16 (Buffer, + ACPI_MOVE_UNALIGNED16_TO_16 (Buffer, &LinkedList->Data.Address16.MaxAddressRange); Buffer += 2; /* * Set the address translation offset */ - MOVE_UNALIGNED16_TO_16 (Buffer, + ACPI_MOVE_UNALIGNED16_TO_16 (Buffer, &LinkedList->Data.Address16.AddressTranslationOffset); Buffer += 2; /* * Set the address length */ - MOVE_UNALIGNED16_TO_16 (Buffer, + ACPI_MOVE_UNALIGNED16_TO_16 (Buffer, &LinkedList->Data.Address16.AddressLength); Buffer += 2; @@ -488,21 +486,21 @@ AcpiRsAddress16Stream ( /* * Copy the string */ - STRCPY (TempPointer, + ACPI_STRCPY (TempPointer, LinkedList->Data.Address16.ResourceSource.StringPtr); /* * Buffer needs to be set to the length of the sting + one for the * terminating null */ - Buffer += (STRLEN (LinkedList->Data.Address16.ResourceSource.StringPtr) + Buffer += (ACPI_STRLEN (LinkedList->Data.Address16.ResourceSource.StringPtr) + 1); } /* * Return the number of bytes consumed in this operation */ - ActualBytes = POINTER_DIFF (Buffer, *OutputBuffer); + ActualBytes = ACPI_PTR_DIFF (Buffer, *OutputBuffer); *BytesConsumed = ActualBytes; /* @@ -510,7 +508,7 @@ AcpiRsAddress16Stream ( * minus the header size (3 bytes) */ ActualBytes -= 3; - MOVE_UNALIGNED16_TO_16 (LengthField, &ActualBytes); + ACPI_MOVE_UNALIGNED16_TO_16 (LengthField, &ActualBytes); return_ACPI_STATUS (AE_OK); } @@ -521,13 +519,12 @@ AcpiRsAddress16Stream ( * * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte * stream - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes consumed from - * the ByteStreamBuffer - * OutputBuffer - Pointer to the user's return buffer - * StructureSize - UINT32 pointer that is filled with - * the number of bytes in the filled - * in structure + * BytesConsumed - Pointer to where the number of bytes + * consumed the ByteStreamBuffer is + * returned + * OutputBuffer - Pointer to the return data buffer + * StructureSize - Pointer to where the number of bytes + * in the return data struct is returned * * RETURN: Status * @@ -540,33 +537,32 @@ AcpiRsAddress16Stream ( ACPI_STATUS AcpiRsAddress32Resource ( UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, + ACPI_SIZE *BytesConsumed, UINT8 **OutputBuffer, - UINT32 *StructureSize) + ACPI_SIZE *StructureSize) { UINT8 *Buffer; ACPI_RESOURCE *OutputStruct; UINT16 Temp16; UINT8 Temp8; NATIVE_CHAR *TempPtr; - UINT32 StructSize; + ACPI_SIZE StructSize; UINT32 Index; - FUNCTION_TRACE ("RsAddress32Resource"); + ACPI_FUNCTION_TRACE ("RsAddress32Resource"); Buffer = ByteStreamBuffer; OutputStruct = (ACPI_RESOURCE *) *OutputBuffer; - StructSize = SIZEOF_RESOURCE (ACPI_RESOURCE_ADDRESS32); + StructSize = ACPI_SIZEOF_RESOURCE (ACPI_RESOURCE_ADDRESS32); /* * Point past the Descriptor to get the number of bytes consumed */ Buffer += 1; - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); - + ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); *BytesConsumed = Temp16 + 3; OutputStruct->Id = ACPI_RSTYPE_ADDRESS32; @@ -617,7 +613,7 @@ AcpiRsAddress32Resource ( Buffer += 1; Temp8 = *Buffer; - if (MEMORY_RANGE == OutputStruct->Data.Address32.ResourceType) + if (ACPI_MEMORY_RANGE == OutputStruct->Data.Address32.ResourceType) { OutputStruct->Data.Address32.Attribute.Memory.ReadWriteAttribute = (UINT16) (Temp8 & 0x01); @@ -627,7 +623,7 @@ AcpiRsAddress32Resource ( } else { - if (IO_RANGE == OutputStruct->Data.Address32.ResourceType) + if (ACPI_IO_RANGE == OutputStruct->Data.Address32.ResourceType) { OutputStruct->Data.Address32.Attribute.Io.RangeAttribute = (UINT16) (Temp8 & 0x03); @@ -643,35 +639,35 @@ AcpiRsAddress32Resource ( * Get Granularity (Bytes 6-9) */ Buffer += 1; - MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.Address32.Granularity, + ACPI_MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.Address32.Granularity, Buffer); /* * Get MinAddressRange (Bytes 10-13) */ Buffer += 4; - MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.Address32.MinAddressRange, + ACPI_MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.Address32.MinAddressRange, Buffer); /* * Get MaxAddressRange (Bytes 14-17) */ Buffer += 4; - MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.Address32.MaxAddressRange, + ACPI_MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.Address32.MaxAddressRange, Buffer); /* * Get AddressTranslationOffset (Bytes 18-21) */ Buffer += 4; - MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.Address32.AddressTranslationOffset, + ACPI_MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.Address32.AddressTranslationOffset, Buffer); /* * Get AddressLength (Bytes 22-25) */ Buffer += 4; - MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.Address32.AddressLength, + ACPI_MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.Address32.AddressLength, Buffer); /* @@ -727,7 +723,7 @@ AcpiRsAddress32Resource ( * StructSize to the next 32-bit boundary. */ Temp8 = (UINT8) (Index + 1); - StructSize += ROUND_UP_TO_32BITS (Temp8); + StructSize += ACPI_ROUND_UP_TO_32BITS (Temp8); } else { @@ -755,9 +751,8 @@ AcpiRsAddress32Resource ( * * PARAMETERS: LinkedList - Pointer to the resource linked list * OutputBuffer - Pointer to the user's return buffer - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes of the - * OutputBuffer used + * BytesConsumed - Pointer to where the number of bytes + * used in the OutputBuffer is returned * * RETURN: Status * @@ -770,7 +765,7 @@ ACPI_STATUS AcpiRsAddress32Stream ( ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, - UINT32 *BytesConsumed) + ACPI_SIZE *BytesConsumed) { UINT8 *Buffer; UINT16 *LengthField; @@ -778,7 +773,7 @@ AcpiRsAddress32Stream ( NATIVE_CHAR *TempPointer; - FUNCTION_TRACE ("RsAddress32Stream"); + ACPI_FUNCTION_TRACE ("RsAddress32Stream"); Buffer = *OutputBuffer; @@ -819,7 +814,7 @@ AcpiRsAddress32Stream ( */ Temp8 = 0; - if(MEMORY_RANGE == LinkedList->Data.Address32.ResourceType) + if (ACPI_MEMORY_RANGE == LinkedList->Data.Address32.ResourceType) { Temp8 = (UINT8) (LinkedList->Data.Address32.Attribute.Memory.ReadWriteAttribute & @@ -829,7 +824,7 @@ AcpiRsAddress32Stream ( (LinkedList->Data.Address32.Attribute.Memory.CacheAttribute & 0x0F) << 1; } - else if (IO_RANGE == LinkedList->Data.Address32.ResourceType) + else if (ACPI_IO_RANGE == LinkedList->Data.Address32.ResourceType) { Temp8 = (UINT8) (LinkedList->Data.Address32.Attribute.Io.RangeAttribute & @@ -842,35 +837,35 @@ AcpiRsAddress32Stream ( /* * Set the address space granularity */ - MOVE_UNALIGNED32_TO_32 (Buffer, + ACPI_MOVE_UNALIGNED32_TO_32 (Buffer, &LinkedList->Data.Address32.Granularity); Buffer += 4; /* * Set the address range minimum */ - MOVE_UNALIGNED32_TO_32 (Buffer, + ACPI_MOVE_UNALIGNED32_TO_32 (Buffer, &LinkedList->Data.Address32.MinAddressRange); Buffer += 4; /* * Set the address range maximum */ - MOVE_UNALIGNED32_TO_32 (Buffer, + ACPI_MOVE_UNALIGNED32_TO_32 (Buffer, &LinkedList->Data.Address32.MaxAddressRange); Buffer += 4; /* * Set the address translation offset */ - MOVE_UNALIGNED32_TO_32 (Buffer, + ACPI_MOVE_UNALIGNED32_TO_32 (Buffer, &LinkedList->Data.Address32.AddressTranslationOffset); Buffer += 4; /* * Set the address length */ - MOVE_UNALIGNED32_TO_32 (Buffer, + ACPI_MOVE_UNALIGNED32_TO_32 (Buffer, &LinkedList->Data.Address32.AddressLength); Buffer += 4; @@ -889,20 +884,20 @@ AcpiRsAddress32Stream ( /* * Copy the string */ - STRCPY (TempPointer, + ACPI_STRCPY (TempPointer, LinkedList->Data.Address32.ResourceSource.StringPtr); /* * Buffer needs to be set to the length of the sting + one for the * terminating null */ - Buffer += (STRLEN (LinkedList->Data.Address32.ResourceSource.StringPtr) + 1); + Buffer += (ACPI_STRLEN (LinkedList->Data.Address32.ResourceSource.StringPtr) + 1); } /* * Return the number of bytes consumed in this operation */ - *BytesConsumed = POINTER_DIFF (Buffer, *OutputBuffer); + *BytesConsumed = ACPI_PTR_DIFF (Buffer, *OutputBuffer); /* * Set the length field to the number of bytes consumed @@ -919,13 +914,12 @@ AcpiRsAddress32Stream ( * * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte * stream - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes consumed from - * the ByteStreamBuffer - * OutputBuffer - Pointer to the user's return buffer - * StructureSize - UINT32 pointer that is filled with - * the number of bytes in the filled - * in structure + * BytesConsumed - Pointer to where the number of bytes + * consumed the ByteStreamBuffer is + * returned + * OutputBuffer - Pointer to the return data buffer + * StructureSize - Pointer to where the number of bytes + * in the return data struct is returned * * RETURN: Status * @@ -938,32 +932,32 @@ AcpiRsAddress32Stream ( ACPI_STATUS AcpiRsAddress64Resource ( UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, + ACPI_SIZE *BytesConsumed, UINT8 **OutputBuffer, - UINT32 *StructureSize) + ACPI_SIZE *StructureSize) { UINT8 *Buffer; ACPI_RESOURCE *OutputStruct; UINT16 Temp16; UINT8 Temp8; NATIVE_CHAR *TempPtr; - UINT32 StructSize; + ACPI_SIZE StructSize; UINT32 Index; - FUNCTION_TRACE ("RsAddress64Resource"); + ACPI_FUNCTION_TRACE ("RsAddress64Resource"); Buffer = ByteStreamBuffer; OutputStruct = (ACPI_RESOURCE *) *OutputBuffer; - StructSize = SIZEOF_RESOURCE (ACPI_RESOURCE_ADDRESS64); + StructSize = ACPI_SIZEOF_RESOURCE (ACPI_RESOURCE_ADDRESS64); /* * Point past the Descriptor to get the number of bytes consumed */ Buffer += 1; - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); + ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); *BytesConsumed = Temp16 + 3; OutputStruct->Id = ACPI_RSTYPE_ADDRESS64; @@ -1015,7 +1009,7 @@ AcpiRsAddress64Resource ( Buffer += 1; Temp8 = *Buffer; - if (MEMORY_RANGE == OutputStruct->Data.Address64.ResourceType) + if (ACPI_MEMORY_RANGE == OutputStruct->Data.Address64.ResourceType) { OutputStruct->Data.Address64.Attribute.Memory.ReadWriteAttribute = (UINT16) (Temp8 & 0x01); @@ -1025,7 +1019,7 @@ AcpiRsAddress64Resource ( } else { - if (IO_RANGE == OutputStruct->Data.Address64.ResourceType) + if (ACPI_IO_RANGE == OutputStruct->Data.Address64.ResourceType) { OutputStruct->Data.Address64.Attribute.Io.RangeAttribute = (UINT16) (Temp8 & 0x03); @@ -1041,35 +1035,35 @@ AcpiRsAddress64Resource ( * Get Granularity (Bytes 6-13) */ Buffer += 1; - MOVE_UNALIGNED64_TO_64 (&OutputStruct->Data.Address64.Granularity, + ACPI_MOVE_UNALIGNED64_TO_64 (&OutputStruct->Data.Address64.Granularity, Buffer); /* * Get MinAddressRange (Bytes 14-21) */ Buffer += 8; - MOVE_UNALIGNED64_TO_64 (&OutputStruct->Data.Address64.MinAddressRange, + ACPI_MOVE_UNALIGNED64_TO_64 (&OutputStruct->Data.Address64.MinAddressRange, Buffer); /* * Get MaxAddressRange (Bytes 22-29) */ Buffer += 8; - MOVE_UNALIGNED64_TO_64 (&OutputStruct->Data.Address64.MaxAddressRange, + ACPI_MOVE_UNALIGNED64_TO_64 (&OutputStruct->Data.Address64.MaxAddressRange, Buffer); /* * Get AddressTranslationOffset (Bytes 30-37) */ Buffer += 8; - MOVE_UNALIGNED64_TO_64 (&OutputStruct->Data.Address64.AddressTranslationOffset, + ACPI_MOVE_UNALIGNED64_TO_64 (&OutputStruct->Data.Address64.AddressTranslationOffset, Buffer); /* * Get AddressLength (Bytes 38-45) */ Buffer += 8; - MOVE_UNALIGNED64_TO_64 (&OutputStruct->Data.Address64.AddressLength, + ACPI_MOVE_UNALIGNED64_TO_64 (&OutputStruct->Data.Address64.AddressLength, Buffer); /* @@ -1128,7 +1122,7 @@ AcpiRsAddress64Resource ( * StructSize to the next 32-bit boundary. */ Temp8 = (UINT8) (Index + 1); - StructSize += ROUND_UP_TO_32BITS (Temp8); + StructSize += ACPI_ROUND_UP_TO_32BITS (Temp8); } else { @@ -1156,9 +1150,8 @@ AcpiRsAddress64Resource ( * * PARAMETERS: LinkedList - Pointer to the resource linked list * OutputBuffer - Pointer to the user's return buffer - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes of the - * OutputBuffer used + * BytesConsumed - Pointer to where the number of bytes + * used in the OutputBuffer is returned * * RETURN: Status * @@ -1171,7 +1164,7 @@ ACPI_STATUS AcpiRsAddress64Stream ( ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, - UINT32 *BytesConsumed) + ACPI_SIZE *BytesConsumed) { UINT8 *Buffer; UINT16 *LengthField; @@ -1179,7 +1172,7 @@ AcpiRsAddress64Stream ( NATIVE_CHAR *TempPointer; - FUNCTION_TRACE ("RsAddress64Stream"); + ACPI_FUNCTION_TRACE ("RsAddress64Stream"); Buffer = *OutputBuffer; @@ -1221,7 +1214,7 @@ AcpiRsAddress64Stream ( */ Temp8 = 0; - if(MEMORY_RANGE == LinkedList->Data.Address64.ResourceType) + if (ACPI_MEMORY_RANGE == LinkedList->Data.Address64.ResourceType) { Temp8 = (UINT8) (LinkedList->Data.Address64.Attribute.Memory.ReadWriteAttribute & @@ -1231,7 +1224,7 @@ AcpiRsAddress64Stream ( (LinkedList->Data.Address64.Attribute.Memory.CacheAttribute & 0x0F) << 1; } - else if (IO_RANGE == LinkedList->Data.Address64.ResourceType) + else if (ACPI_IO_RANGE == LinkedList->Data.Address64.ResourceType) { Temp8 = (UINT8) (LinkedList->Data.Address64.Attribute.Io.RangeAttribute & @@ -1244,35 +1237,35 @@ AcpiRsAddress64Stream ( /* * Set the address space granularity */ - MOVE_UNALIGNED64_TO_64 (Buffer, + ACPI_MOVE_UNALIGNED64_TO_64 (Buffer, &LinkedList->Data.Address64.Granularity); Buffer += 8; /* * Set the address range minimum */ - MOVE_UNALIGNED64_TO_64 (Buffer, + ACPI_MOVE_UNALIGNED64_TO_64 (Buffer, &LinkedList->Data.Address64.MinAddressRange); Buffer += 8; /* * Set the address range maximum */ - MOVE_UNALIGNED64_TO_64 (Buffer, + ACPI_MOVE_UNALIGNED64_TO_64 (Buffer, &LinkedList->Data.Address64.MaxAddressRange); Buffer += 8; /* * Set the address translation offset */ - MOVE_UNALIGNED64_TO_64 (Buffer, + ACPI_MOVE_UNALIGNED64_TO_64 (Buffer, &LinkedList->Data.Address64.AddressTranslationOffset); Buffer += 8; /* * Set the address length */ - MOVE_UNALIGNED64_TO_64 (Buffer, + ACPI_MOVE_UNALIGNED64_TO_64 (Buffer, &LinkedList->Data.Address64.AddressLength); Buffer += 8; @@ -1291,19 +1284,19 @@ AcpiRsAddress64Stream ( /* * Copy the string */ - STRCPY (TempPointer, LinkedList->Data.Address64.ResourceSource.StringPtr); + ACPI_STRCPY (TempPointer, LinkedList->Data.Address64.ResourceSource.StringPtr); /* * Buffer needs to be set to the length of the sting + one for the * terminating null */ - Buffer += (STRLEN (LinkedList->Data.Address64.ResourceSource.StringPtr) + 1); + Buffer += (ACPI_STRLEN (LinkedList->Data.Address64.ResourceSource.StringPtr) + 1); } /* * Return the number of bytes consumed in this operation */ - *BytesConsumed = POINTER_DIFF (Buffer, *OutputBuffer); + *BytesConsumed = ACPI_PTR_DIFF (Buffer, *OutputBuffer); /* * Set the length field to the number of bytes consumed diff --git a/sys/contrib/dev/acpica/rscalc.c b/sys/contrib/dev/acpica/rscalc.c index de3b7aa72d9e..806d04141ed4 100644 --- a/sys/contrib/dev/acpica/rscalc.c +++ b/sys/contrib/dev/acpica/rscalc.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: rscalc - Calculate stream and list lengths - * $Revision: 33 $ + * $Revision: 39 $ * ******************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -122,7 +122,7 @@ #include "acnamesp.h" #define _COMPONENT ACPI_RESOURCES - MODULE_NAME ("rscalc") + ACPI_MODULE_NAME ("rscalc") /******************************************************************************* @@ -144,15 +144,15 @@ ACPI_STATUS AcpiRsCalculateByteStreamLength ( ACPI_RESOURCE *LinkedList, - UINT32 *SizeNeeded) + ACPI_SIZE *SizeNeeded) { - UINT32 ByteStreamSizeNeeded = 0; - UINT32 SegmentSize; + ACPI_SIZE ByteStreamSizeNeeded = 0; + ACPI_SIZE SegmentSize; ACPI_RESOURCE_EXT_IRQ *ExIrq = NULL; BOOLEAN Done = FALSE; - FUNCTION_TRACE ("RsCalculateByteStreamLength"); + ACPI_FUNCTION_TRACE ("RsCalculateByteStreamLength"); while (!Done) @@ -343,7 +343,6 @@ AcpiRsCalculateByteStreamLength ( * so exit with an error */ return_ACPI_STATUS (AE_AML_INVALID_RESOURCE_TYPE); - break; } /* switch (LinkedList->Id) */ @@ -355,7 +354,7 @@ AcpiRsCalculateByteStreamLength ( /* * Point to the next object */ - LinkedList = POINTER_ADD (ACPI_RESOURCE, + LinkedList = ACPI_PTR_ADD (ACPI_RESOURCE, LinkedList, LinkedList->Length); } @@ -389,7 +388,7 @@ ACPI_STATUS AcpiRsCalculateListLength ( UINT8 *ByteStreamBuffer, UINT32 ByteStreamBufferLength, - UINT32 *SizeNeeded) + ACPI_SIZE *SizeNeeded) { UINT32 BufferSize = 0; UINT32 BytesParsed = 0; @@ -405,7 +404,7 @@ AcpiRsCalculateListLength ( UINT8 AdditionalBytes; - FUNCTION_TRACE ("RsCalculateListLength"); + ACPI_FUNCTION_TRACE ("RsCalculateListLength"); while (BytesParsed < ByteStreamBufferLength) @@ -417,65 +416,65 @@ AcpiRsCalculateListLength ( switch (ResourceType) { - case RESOURCE_DESC_MEMORY_24: + case ACPI_RDESC_TYPE_MEMORY_24: /* * 24-Bit Memory Resource */ BytesConsumed = 12; - StructureSize = SIZEOF_RESOURCE (ACPI_RESOURCE_MEM24); + StructureSize = ACPI_SIZEOF_RESOURCE (ACPI_RESOURCE_MEM24); break; - case RESOURCE_DESC_LARGE_VENDOR: + case ACPI_RDESC_TYPE_LARGE_VENDOR: /* * Vendor Defined Resource */ Buffer = ByteStreamBuffer; ++Buffer; - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); + ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); BytesConsumed = Temp16 + 3; /* * Ensure a 32-bit boundary for the structure */ - Temp16 = (UINT16) ROUND_UP_TO_32BITS (Temp16); + Temp16 = (UINT16) ACPI_ROUND_UP_TO_32BITS (Temp16); - StructureSize = SIZEOF_RESOURCE (ACPI_RESOURCE_VENDOR) + + StructureSize = ACPI_SIZEOF_RESOURCE (ACPI_RESOURCE_VENDOR) + (Temp16 * sizeof (UINT8)); break; - case RESOURCE_DESC_MEMORY_32: + case ACPI_RDESC_TYPE_MEMORY_32: /* * 32-Bit Memory Range Resource */ BytesConsumed = 20; - StructureSize = SIZEOF_RESOURCE (ACPI_RESOURCE_MEM32); + StructureSize = ACPI_SIZEOF_RESOURCE (ACPI_RESOURCE_MEM32); break; - case RESOURCE_DESC_FIXED_MEMORY_32: + case ACPI_RDESC_TYPE_FIXED_MEMORY_32: /* * 32-Bit Fixed Memory Resource */ BytesConsumed = 12; - StructureSize = SIZEOF_RESOURCE (ACPI_RESOURCE_FIXED_MEM32); + StructureSize = ACPI_SIZEOF_RESOURCE (ACPI_RESOURCE_FIXED_MEM32); break; - case RESOURCE_DESC_QWORD_ADDRESS_SPACE: + case ACPI_RDESC_TYPE_QWORD_ADDRESS_SPACE: /* * 64-Bit Address Resource */ Buffer = ByteStreamBuffer; ++Buffer; - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); + ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); BytesConsumed = Temp16 + 3; @@ -501,21 +500,21 @@ AcpiRsCalculateListLength ( /* * Ensure a 64-bit boundary for the structure */ - Temp8 = (UINT8) ROUND_UP_TO_64BITS (Temp8); + Temp8 = (UINT8) ACPI_ROUND_UP_TO_64BITS (Temp8); - StructureSize = SIZEOF_RESOURCE (ACPI_RESOURCE_ADDRESS64) + + StructureSize = ACPI_SIZEOF_RESOURCE (ACPI_RESOURCE_ADDRESS64) + (Temp8 * sizeof (UINT8)); break; - case RESOURCE_DESC_DWORD_ADDRESS_SPACE: + case ACPI_RDESC_TYPE_DWORD_ADDRESS_SPACE: /* * 32-Bit Address Resource */ Buffer = ByteStreamBuffer; ++Buffer; - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); + ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); BytesConsumed = Temp16 + 3; @@ -541,21 +540,21 @@ AcpiRsCalculateListLength ( /* * Ensure a 32-bit boundary for the structure */ - Temp8 = (UINT8) ROUND_UP_TO_32BITS (Temp8); + Temp8 = (UINT8) ACPI_ROUND_UP_TO_32BITS (Temp8); - StructureSize = SIZEOF_RESOURCE (ACPI_RESOURCE_ADDRESS32) + + StructureSize = ACPI_SIZEOF_RESOURCE (ACPI_RESOURCE_ADDRESS32) + (Temp8 * sizeof (UINT8)); break; - case RESOURCE_DESC_WORD_ADDRESS_SPACE: + case ACPI_RDESC_TYPE_WORD_ADDRESS_SPACE: /* * 16-Bit Address Resource */ Buffer = ByteStreamBuffer; ++Buffer; - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); + ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); BytesConsumed = Temp16 + 3; @@ -581,21 +580,21 @@ AcpiRsCalculateListLength ( /* * Ensure a 32-bit boundary for the structure */ - Temp8 = (UINT8) ROUND_UP_TO_32BITS (Temp8); + Temp8 = (UINT8) ACPI_ROUND_UP_TO_32BITS (Temp8); - StructureSize = SIZEOF_RESOURCE (ACPI_RESOURCE_ADDRESS16) + + StructureSize = ACPI_SIZEOF_RESOURCE (ACPI_RESOURCE_ADDRESS16) + (Temp8 * sizeof (UINT8)); break; - case RESOURCE_DESC_EXTENDED_XRUPT: + case ACPI_RDESC_TYPE_EXTENDED_XRUPT: /* * Extended IRQ */ Buffer = ByteStreamBuffer; ++Buffer; - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); + ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); BytesConsumed = Temp16 + 3; @@ -635,15 +634,15 @@ AcpiRsCalculateListLength ( /* * Ensure a 32-bit boundary for the structure */ - Temp8 = (UINT8) ROUND_UP_TO_32BITS (Temp8); + Temp8 = (UINT8) ACPI_ROUND_UP_TO_32BITS (Temp8); - StructureSize = SIZEOF_RESOURCE (ACPI_RESOURCE_EXT_IRQ) + + StructureSize = ACPI_SIZEOF_RESOURCE (ACPI_RESOURCE_EXT_IRQ) + (AdditionalBytes * sizeof (UINT8)) + (Temp8 * sizeof (UINT8)); break; - case RESOURCE_DESC_IRQ_FORMAT: + case ACPI_RDESC_TYPE_IRQ_FORMAT: /* * IRQ Resource. * Determine if it there are two or three trailing bytes @@ -668,7 +667,7 @@ AcpiRsCalculateListLength ( /* * Look at the number of bits set */ - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); + ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); for (Index = 0; Index < 16; Index++) { @@ -680,12 +679,12 @@ AcpiRsCalculateListLength ( Temp16 >>= 1; } - StructureSize = SIZEOF_RESOURCE (ACPI_RESOURCE_IO) + + StructureSize = ACPI_SIZEOF_RESOURCE (ACPI_RESOURCE_IO) + (NumberOfInterrupts * sizeof (UINT32)); break; - case RESOURCE_DESC_DMA_FORMAT: + case ACPI_RDESC_TYPE_DMA_FORMAT: /* * DMA Resource */ @@ -712,12 +711,12 @@ AcpiRsCalculateListLength ( Temp8 >>= 1; } - StructureSize = SIZEOF_RESOURCE (ACPI_RESOURCE_DMA) + + StructureSize = ACPI_SIZEOF_RESOURCE (ACPI_RESOURCE_DMA) + (NumberOfChannels * sizeof (UINT32)); break; - case RESOURCE_DESC_START_DEPENDENT: + case ACPI_RDESC_TYPE_START_DEPENDENT: /* * Start Dependent Functions Resource * Determine if it there are two or three trailing bytes @@ -734,11 +733,11 @@ AcpiRsCalculateListLength ( BytesConsumed = 1; } - StructureSize = SIZEOF_RESOURCE (ACPI_RESOURCE_START_DPF); + StructureSize = ACPI_SIZEOF_RESOURCE (ACPI_RESOURCE_START_DPF); break; - case RESOURCE_DESC_END_DEPENDENT: + case ACPI_RDESC_TYPE_END_DEPENDENT: /* * End Dependent Functions Resource */ @@ -747,25 +746,25 @@ AcpiRsCalculateListLength ( break; - case RESOURCE_DESC_IO_PORT: + case ACPI_RDESC_TYPE_IO_PORT: /* * IO Port Resource */ BytesConsumed = 8; - StructureSize = SIZEOF_RESOURCE (ACPI_RESOURCE_IO); + StructureSize = ACPI_SIZEOF_RESOURCE (ACPI_RESOURCE_IO); break; - case RESOURCE_DESC_FIXED_IO_PORT: + case ACPI_RDESC_TYPE_FIXED_IO_PORT: /* * Fixed IO Port Resource */ BytesConsumed = 4; - StructureSize = SIZEOF_RESOURCE (ACPI_RESOURCE_FIXED_IO); + StructureSize = ACPI_SIZEOF_RESOURCE (ACPI_RESOURCE_FIXED_IO); break; - case RESOURCE_DESC_SMALL_VENDOR: + case ACPI_RDESC_TYPE_SMALL_VENDOR: /* * Vendor Specific Resource */ @@ -778,13 +777,13 @@ AcpiRsCalculateListLength ( /* * Ensure a 32-bit boundary for the structure */ - Temp8 = (UINT8) ROUND_UP_TO_32BITS (Temp8); - StructureSize = SIZEOF_RESOURCE (ACPI_RESOURCE_VENDOR) + + Temp8 = (UINT8) ACPI_ROUND_UP_TO_32BITS (Temp8); + StructureSize = ACPI_SIZEOF_RESOURCE (ACPI_RESOURCE_VENDOR) + (Temp8 * sizeof (UINT8)); break; - case RESOURCE_DESC_END_TAG: + case ACPI_RDESC_TYPE_END_TAG: /* * End Tag */ @@ -800,13 +799,12 @@ AcpiRsCalculateListLength ( * so exit with an error */ return_ACPI_STATUS (AE_AML_INVALID_RESOURCE_TYPE); - break; } /* * Update the return value and counter */ - BufferSize += StructureSize; + BufferSize += ACPI_ALIGN_RESOURCE_SIZE(StructureSize); BytesParsed += BytesConsumed; /* @@ -843,7 +841,7 @@ AcpiRsCalculateListLength ( ACPI_STATUS AcpiRsCalculatePciRoutingTableLength ( ACPI_OPERAND_OBJECT *PackageObject, - UINT32 *BufferSizeNeeded) + ACPI_SIZE *BufferSizeNeeded) { UINT32 NumberOfElements; UINT32 TempSizeNeeded = 0; @@ -855,7 +853,7 @@ AcpiRsCalculatePciRoutingTableLength ( UINT32 TableIndex; - FUNCTION_TRACE ("RsCalculatePciRoutingTableLength"); + ACPI_FUNCTION_TRACE ("RsCalculatePciRoutingTableLength"); NumberOfElements = PackageObject->Package.Count; @@ -907,7 +905,7 @@ AcpiRsCalculatePciRoutingTableLength ( } } - TempSizeNeeded += (sizeof (PCI_ROUTING_TABLE) - 4); + TempSizeNeeded += (sizeof (ACPI_PCI_ROUTING_TABLE) - 4); /* * Was a String type found? @@ -939,7 +937,7 @@ AcpiRsCalculatePciRoutingTableLength ( /* Round up the size since each element must be aligned */ - TempSizeNeeded = ROUND_UP_TO_64BITS (TempSizeNeeded); + TempSizeNeeded = ACPI_ROUND_UP_TO_64BITS (TempSizeNeeded); /* * Point to the next ACPI_OPERAND_OBJECT @@ -950,6 +948,6 @@ AcpiRsCalculatePciRoutingTableLength ( /* * Adding an extra element to the end of the list, essentially a NULL terminator */ - *BufferSizeNeeded = TempSizeNeeded + sizeof (PCI_ROUTING_TABLE); + *BufferSizeNeeded = TempSizeNeeded + sizeof (ACPI_PCI_ROUTING_TABLE); return_ACPI_STATUS (AE_OK); } diff --git a/sys/contrib/dev/acpica/rscreate.c b/sys/contrib/dev/acpica/rscreate.c index 14aaf5dfcf43..51e9934074b9 100644 --- a/sys/contrib/dev/acpica/rscreate.c +++ b/sys/contrib/dev/acpica/rscreate.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: rscreate - Create resource lists/tables - * $Revision: 38 $ + * $Revision: 53 $ * ******************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -123,7 +123,7 @@ #include "acnamesp.h" #define _COMPONENT ACPI_RESOURCES - MODULE_NAME ("rscreate") + ACPI_MODULE_NAME ("rscreate") /******************************************************************************* @@ -148,17 +148,16 @@ ACPI_STATUS AcpiRsCreateResourceList ( ACPI_OPERAND_OBJECT *ByteStreamBuffer, - UINT8 *OutputBuffer, - UINT32 *OutputBufferLength) + ACPI_BUFFER *OutputBuffer) { ACPI_STATUS Status; UINT8 *ByteStreamStart; - UINT32 ListSizeNeeded = 0; + ACPI_SIZE ListSizeNeeded = 0; UINT32 ByteStreamBufferLength; - FUNCTION_TRACE ("RsCreateResourceList"); + ACPI_FUNCTION_TRACE ("RsCreateResourceList"); ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "ByteStreamBuffer = %p\n", ByteStreamBuffer)); @@ -183,29 +182,25 @@ AcpiRsCreateResourceList ( return_ACPI_STATUS (Status); } - /* - * Is caller buffer large enough? - */ - if (ListSizeNeeded > *OutputBufferLength) + /* Validate/Allocate/Clear caller buffer */ + + Status = AcpiUtInitializeBuffer (OutputBuffer, ListSizeNeeded); + if (ACPI_FAILURE (Status)) { - *OutputBufferLength = ListSizeNeeded; - return_ACPI_STATUS (AE_BUFFER_OVERFLOW); + return_ACPI_STATUS (Status); } - /* - * Zero out the return buffer before proceeding - */ - MEMSET (OutputBuffer, 0x00, *OutputBufferLength); + /* Do the conversion */ Status = AcpiRsByteStreamToList (ByteStreamStart, ByteStreamBufferLength, - &OutputBuffer); + OutputBuffer->Pointer); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "OutputBuffer = %p\n", OutputBuffer)); - *OutputBufferLength = ListSizeNeeded; + ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "OutputBuffer %p Length %X\n", + OutputBuffer->Pointer, OutputBuffer->Length)); return_ACPI_STATUS (AE_OK); } @@ -221,71 +216,68 @@ AcpiRsCreateResourceList ( * * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code. * If the OutputBuffer is too small, the error will be - * AE_BUFFER_OVERFLOW and OutputBufferLength will point + * AE_BUFFER_OVERFLOW and OutputBuffer->Length will point * to the size buffer needed. * * DESCRIPTION: Takes the ACPI_OPERAND_OBJECT package and creates a * linked list of PCI interrupt descriptions * + * NOTE: It is the caller's responsibility to ensure that the start of the + * output buffer is aligned properly (if necessary). + * ******************************************************************************/ ACPI_STATUS AcpiRsCreatePciRoutingTable ( ACPI_OPERAND_OBJECT *PackageObject, - UINT8 *OutputBuffer, - UINT32 *OutputBufferLength) + ACPI_BUFFER *OutputBuffer) { - UINT8 *Buffer = OutputBuffer; + UINT8 *Buffer; ACPI_OPERAND_OBJECT **TopObjectList = NULL; ACPI_OPERAND_OBJECT **SubObjectList = NULL; ACPI_OPERAND_OBJECT *PackageElement = NULL; - UINT32 BufferSizeNeeded = 0; + ACPI_SIZE BufferSizeNeeded = 0; UINT32 NumberOfElements = 0; UINT32 Index = 0; - PCI_ROUTING_TABLE *UserPrt = NULL; + ACPI_PCI_ROUTING_TABLE *UserPrt = NULL; ACPI_NAMESPACE_NODE *Node; ACPI_STATUS Status; + ACPI_BUFFER PathBuffer; + + ACPI_FUNCTION_TRACE ("RsCreatePciRoutingTable"); - FUNCTION_TRACE ("RsCreatePciRoutingTable"); + /* Params already validated, so we don't re-validate here */ /* - * Params already validated, so we don't re-validate here + * Get the required buffer length */ Status = AcpiRsCalculatePciRoutingTableLength (PackageObject, &BufferSizeNeeded); - if (!ACPI_SUCCESS(Status)) + if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "BufferSizeNeeded = %X\n", BufferSizeNeeded)); - /* Is caller buffer large enough? */ + /* Validate/Allocate/Clear caller buffer */ - if (BufferSizeNeeded > *OutputBufferLength) + Status = AcpiUtInitializeBuffer (OutputBuffer, BufferSizeNeeded); + if (ACPI_FAILURE (Status)) { - return_ACPI_STATUS (AE_BUFFER_OVERFLOW); + return_ACPI_STATUS (Status); } - *OutputBufferLength = BufferSizeNeeded; /* - * Zero out the return buffer before proceeding - */ - MEMSET (OutputBuffer, 0x00, *OutputBufferLength); - - /* - * Loop through the ACPI_INTERNAL_OBJECTS - Each object should - * contain a UINT32 Address, a UINT8 Pin, a Name and a UINT8 - * SourceIndex. + * Loop through the ACPI_INTERNAL_OBJECTS - Each object should contain an + * ACPI_INTEGER Address, a UINT8 Pin, a Name and a UINT8 SourceIndex. */ TopObjectList = PackageObject->Package.Elements; NumberOfElements = PackageObject->Package.Count; - UserPrt = (PCI_ROUTING_TABLE *) Buffer; - - - Buffer = ROUND_PTR_UP_TO_8 (Buffer, UINT8); + Buffer = OutputBuffer->Pointer; + UserPrt = (ACPI_PCI_ROUTING_TABLE *) Buffer; for (Index = 0; Index < NumberOfElements; Index++) { @@ -296,15 +288,14 @@ AcpiRsCreatePciRoutingTable ( * be zero because we cleared the return buffer earlier */ Buffer += UserPrt->Length; - UserPrt = (PCI_ROUTING_TABLE *) Buffer; + UserPrt = (ACPI_PCI_ROUTING_TABLE *) Buffer; /* - * Fill in the Length field with the information we - * have at this point. - * The minus four is to subtract the size of the - * UINT8 Source[4] member because it is added below. + * Fill in the Length field with the information we have at this point. + * The minus four is to subtract the size of the UINT8 Source[4] member + * because it is added below. */ - UserPrt->Length = (sizeof (PCI_ROUTING_TABLE) -4); + UserPrt->Length = (sizeof (ACPI_PCI_ROUTING_TABLE) -4); /* * Dereference the sub-package @@ -312,9 +303,8 @@ AcpiRsCreatePciRoutingTable ( PackageElement = *TopObjectList; /* - * The SubObjectList will now point to an array of - * the four IRQ elements: Address, Pin, Source and - * SourceIndex + * The SubObjectList will now point to an array of the four IRQ + * elements: Address, Pin, Source and SourceIndex */ SubObjectList = PackageElement->Package.Elements; @@ -368,37 +358,33 @@ AcpiRsCreatePciRoutingTable ( /* Use *remaining* length of the buffer as max for pathname */ - BufferSizeNeeded = *OutputBufferLength - - (UINT32) ((UINT8 *) UserPrt->Source - OutputBuffer); + PathBuffer.Length = OutputBuffer->Length - + (UINT32) ((UINT8 *) UserPrt->Source - (UINT8 *) OutputBuffer->Pointer); + PathBuffer.Pointer = UserPrt->Source; - Status = AcpiNsHandleToPathname ((ACPI_HANDLE *) Node, - &BufferSizeNeeded, UserPrt->Source); + Status = AcpiNsHandleToPathname ((ACPI_HANDLE *) Node, &PathBuffer); - UserPrt->Length += STRLEN (UserPrt->Source) + 1; /* include null terminator */ + UserPrt->Length += ACPI_STRLEN (UserPrt->Source) + 1; /* include null terminator */ break; case ACPI_TYPE_STRING: - STRCPY (UserPrt->Source, + ACPI_STRCPY (UserPrt->Source, (*SubObjectList)->String.Pointer); - /* - * Add to the Length field the length of the string - */ + /* Add to the Length field the length of the string */ + UserPrt->Length += (*SubObjectList)->String.Length; break; case ACPI_TYPE_INTEGER: /* - * If this is a number, then the Source Name - * is NULL, since the entire buffer was zeroed - * out, we can leave this alone. - */ - /* - * Add to the Length field the length of - * the UINT32 NULL + * If this is a number, then the Source Name is NULL, since the + * entire buffer was zeroed out, we can leave this alone. + * + * Add to the Length field the length of the UINT32 NULL */ UserPrt->Length += sizeof (UINT32); break; @@ -409,12 +395,11 @@ AcpiRsCreatePciRoutingTable ( ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Need Integer, found %s\n", AcpiUtGetTypeName ((*SubObjectList)->Common.Type))); return_ACPI_STATUS (AE_BAD_DATA); - break; } /* Now align the current length */ - UserPrt->Length = ROUND_UP_TO_64BITS (UserPrt->Length); + UserPrt->Length = ACPI_ROUND_UP_TO_64BITS (UserPrt->Length); /* * 4) Fourth subobject: Dereference the Source Index @@ -432,16 +417,13 @@ AcpiRsCreatePciRoutingTable ( return_ACPI_STATUS (AE_BAD_DATA); } - /* - * Point to the next ACPI_OPERAND_OBJECT - */ + /* Point to the next ACPI_OPERAND_OBJECT */ + TopObjectList++; } - /* - * Report the amount of buffer used - */ - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "OutputBuffer = %p\n", OutputBuffer)); + ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "OutputBuffer %p Length %X\n", + OutputBuffer->Pointer, OutputBuffer->Length)); return_ACPI_STATUS (AE_OK); } @@ -452,11 +434,10 @@ AcpiRsCreatePciRoutingTable ( * * PARAMETERS: LinkedListBuffer - Pointer to the resource linked list * OutputBuffer - Pointer to the user's buffer - * OutputBufferLength - Size of OutputBuffer * * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code. * If the OutputBuffer is too small, the error will be - * AE_BUFFER_OVERFLOW and OutputBufferLength will point + * AE_BUFFER_OVERFLOW and OutputBuffer->Length will point * to the size buffer needed. * * DESCRIPTION: Takes the linked list of device resources and @@ -468,14 +449,13 @@ AcpiRsCreatePciRoutingTable ( ACPI_STATUS AcpiRsCreateByteStream ( ACPI_RESOURCE *LinkedListBuffer, - UINT8 *OutputBuffer, - UINT32 *OutputBufferLength) + ACPI_BUFFER *OutputBuffer) { ACPI_STATUS Status; - UINT32 ByteStreamSizeNeeded = 0; + ACPI_SIZE ByteStreamSizeNeeded = 0; - FUNCTION_TRACE ("RsCreateByteStream"); + ACPI_FUNCTION_TRACE ("RsCreateByteStream"); ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "LinkedListBuffer = %p\n", LinkedListBuffer)); @@ -496,28 +476,25 @@ AcpiRsCreateByteStream ( return_ACPI_STATUS (Status); } - /* - * Is caller buffer large enough? - */ - if (ByteStreamSizeNeeded > *OutputBufferLength) + /* Validate/Allocate/Clear caller buffer */ + + Status = AcpiUtInitializeBuffer (OutputBuffer, ByteStreamSizeNeeded); + if (ACPI_FAILURE (Status)) { - *OutputBufferLength = ByteStreamSizeNeeded; - return_ACPI_STATUS (AE_BUFFER_OVERFLOW); + return_ACPI_STATUS (Status); } - /* - * Zero out the return buffer before proceeding - */ - MEMSET (OutputBuffer, 0x00, *OutputBufferLength); + /* Do the conversion */ Status = AcpiRsListToByteStream (LinkedListBuffer, ByteStreamSizeNeeded, - &OutputBuffer); + OutputBuffer->Pointer); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "OutputBuffer = %p\n", OutputBuffer)); + ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "OutputBuffer %p Length %X\n", + OutputBuffer->Pointer, OutputBuffer->Length)); return_ACPI_STATUS (AE_OK); } diff --git a/sys/contrib/dev/acpica/rsdump.c b/sys/contrib/dev/acpica/rsdump.c index 9a0a29023633..5c4be203860d 100644 --- a/sys/contrib/dev/acpica/rsdump.c +++ b/sys/contrib/dev/acpica/rsdump.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: rsdump - Functions to display the resource structures. - * $Revision: 23 $ + * $Revision: 29 $ * ******************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -121,7 +121,7 @@ #include "acresrc.h" #define _COMPONENT ACPI_RESOURCES - MODULE_NAME ("rsdump") + ACPI_MODULE_NAME ("rsdump") #ifdef ACPI_DEBUG @@ -146,19 +146,19 @@ AcpiRsDumpIrq ( UINT8 Index = 0; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); AcpiOsPrintf ("IRQ Resource\n"); AcpiOsPrintf (" %s Triggered\n", - LEVEL_SENSITIVE == IrqData->EdgeLevel ? "Level" : "Edge"); + ACPI_LEVEL_SENSITIVE == IrqData->EdgeLevel ? "Level" : "Edge"); AcpiOsPrintf (" Active %s\n", - ACTIVE_LOW == IrqData->ActiveHighLow ? "Low" : "High"); + ACPI_ACTIVE_LOW == IrqData->ActiveHighLow ? "Low" : "High"); AcpiOsPrintf (" %s\n", - SHARED == IrqData->SharedExclusive ? "Shared" : "Exclusive"); + ACPI_SHARED == IrqData->SharedExclusive ? "Shared" : "Exclusive"); AcpiOsPrintf (" %X Interrupts ( ", IrqData->NumberOfInterrupts); @@ -192,26 +192,26 @@ AcpiRsDumpDma ( UINT8 Index = 0; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); AcpiOsPrintf ("DMA Resource\n"); switch (DmaData->Type) { - case COMPATIBILITY: + case ACPI_COMPATIBILITY: AcpiOsPrintf (" Compatibility mode\n"); break; - case TYPE_A: + case ACPI_TYPE_A: AcpiOsPrintf (" Type A\n"); break; - case TYPE_B: + case ACPI_TYPE_B: AcpiOsPrintf (" Type B\n"); break; - case TYPE_F: + case ACPI_TYPE_F: AcpiOsPrintf (" Type F\n"); break; @@ -221,20 +221,20 @@ AcpiRsDumpDma ( } AcpiOsPrintf (" %sBus Master\n", - BUS_MASTER == DmaData->BusMaster ? "" : "Not a "); + ACPI_BUS_MASTER == DmaData->BusMaster ? "" : "Not a "); switch (DmaData->Transfer) { - case TRANSFER_8: + case ACPI_TRANSFER_8: AcpiOsPrintf (" 8-bit only transfer\n"); break; - case TRANSFER_8_16: + case ACPI_TRANSFER_8_16: AcpiOsPrintf (" 8 and 16-bit transfer\n"); break; - case TRANSFER_16: + case ACPI_TRANSFER_16: AcpiOsPrintf (" 16 bit only transfer\n"); break; @@ -257,7 +257,7 @@ AcpiRsDumpDma ( /******************************************************************************* * - * FUNCTION: AcpiRsDumpStartDependentFunctions + * FUNCTION: AcpiRsDumpStartDependFns * * PARAMETERS: Data - pointer to the resource structure to dump. * @@ -268,28 +268,28 @@ AcpiRsDumpDma ( ******************************************************************************/ void -AcpiRsDumpStartDependentFunctions ( +AcpiRsDumpStartDependFns ( ACPI_RESOURCE_DATA *Data) { ACPI_RESOURCE_START_DPF *SdfData = (ACPI_RESOURCE_START_DPF *) Data; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); AcpiOsPrintf ("Start Dependent Functions Resource\n"); switch (SdfData->CompatibilityPriority) { - case GOOD_CONFIGURATION: + case ACPI_GOOD_CONFIGURATION: AcpiOsPrintf (" Good configuration\n"); break; - case ACCEPTABLE_CONFIGURATION: + case ACPI_ACCEPTABLE_CONFIGURATION: AcpiOsPrintf (" Acceptable configuration\n"); break; - case SUB_OPTIMAL_CONFIGURATION: + case ACPI_SUB_OPTIMAL_CONFIGURATION: AcpiOsPrintf (" Sub-optimal configuration\n"); break; @@ -300,15 +300,15 @@ AcpiRsDumpStartDependentFunctions ( switch(SdfData->PerformanceRobustness) { - case GOOD_CONFIGURATION: + case ACPI_GOOD_CONFIGURATION: AcpiOsPrintf (" Good configuration\n"); break; - case ACCEPTABLE_CONFIGURATION: + case ACPI_ACCEPTABLE_CONFIGURATION: AcpiOsPrintf (" Acceptable configuration\n"); break; - case SUB_OPTIMAL_CONFIGURATION: + case ACPI_SUB_OPTIMAL_CONFIGURATION: AcpiOsPrintf (" Sub-optimal configuration\n"); break; @@ -341,13 +341,13 @@ AcpiRsDumpIo ( ACPI_RESOURCE_IO *IoData = (ACPI_RESOURCE_IO *) Data; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); AcpiOsPrintf ("Io Resource\n"); AcpiOsPrintf (" %d bit decode\n", - DECODE_16 == IoData->IoDecode ? 16 : 10); + ACPI_DECODE_16 == IoData->IoDecode ? 16 : 10); AcpiOsPrintf (" Range minimum base: %08X\n", IoData->MinBaseAddress); @@ -384,7 +384,7 @@ AcpiRsDumpFixedIo ( ACPI_RESOURCE_FIXED_IO *FixedIoData = (ACPI_RESOURCE_FIXED_IO *) Data; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); AcpiOsPrintf ("Fixed Io Resource\n"); @@ -418,7 +418,7 @@ AcpiRsDumpVendorSpecific ( UINT16 Index = 0; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); AcpiOsPrintf ("Vendor Specific Resource\n"); @@ -454,13 +454,13 @@ AcpiRsDumpMemory24 ( ACPI_RESOURCE_MEM24 *Memory24Data = (ACPI_RESOURCE_MEM24 *) Data; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); AcpiOsPrintf ("24-Bit Memory Range Resource\n"); AcpiOsPrintf (" Read%s\n", - READ_WRITE_MEMORY == + ACPI_READ_WRITE_MEMORY == Memory24Data->ReadWriteAttribute ? "/Write" : " only"); @@ -499,13 +499,13 @@ AcpiRsDumpMemory32 ( ACPI_RESOURCE_MEM32 *Memory32Data = (ACPI_RESOURCE_MEM32 *) Data; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); AcpiOsPrintf ("32-Bit Memory Range Resource\n"); AcpiOsPrintf (" Read%s\n", - READ_WRITE_MEMORY == + ACPI_READ_WRITE_MEMORY == Memory32Data->ReadWriteAttribute ? "/Write" : " only"); @@ -544,13 +544,13 @@ AcpiRsDumpFixedMemory32 ( ACPI_RESOURCE_FIXED_MEM32 *FixedMemory32Data = (ACPI_RESOURCE_FIXED_MEM32 *) Data; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); AcpiOsPrintf ("32-Bit Fixed Location Memory Range Resource\n"); AcpiOsPrintf (" Read%s\n", - READ_WRITE_MEMORY == + ACPI_READ_WRITE_MEMORY == FixedMemory32Data->ReadWriteAttribute ? "/Write" : " Only"); @@ -583,7 +583,7 @@ AcpiRsDumpAddress16 ( ACPI_RESOURCE_ADDRESS16 *Address16Data = (ACPI_RESOURCE_ADDRESS16 *) Data; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); AcpiOsPrintf ("16-Bit Address Space Resource\n"); @@ -591,28 +591,28 @@ AcpiRsDumpAddress16 ( switch (Address16Data->ResourceType) { - case MEMORY_RANGE: + case ACPI_MEMORY_RANGE: AcpiOsPrintf ("Memory Range\n"); switch (Address16Data->Attribute.Memory.CacheAttribute) { - case NON_CACHEABLE_MEMORY: + case ACPI_NON_CACHEABLE_MEMORY: AcpiOsPrintf (" Type Specific: " "Noncacheable memory\n"); break; - case CACHABLE_MEMORY: + case ACPI_CACHABLE_MEMORY: AcpiOsPrintf (" Type Specific: " "Cacheable memory\n"); break; - case WRITE_COMBINING_MEMORY: + case ACPI_WRITE_COMBINING_MEMORY: AcpiOsPrintf (" Type Specific: " "Write-combining memory\n"); break; - case PREFETCHABLE_MEMORY: + case ACPI_PREFETCHABLE_MEMORY: AcpiOsPrintf (" Type Specific: " "Prefetchable memory\n"); break; @@ -624,28 +624,28 @@ AcpiRsDumpAddress16 ( } AcpiOsPrintf (" Type Specific: Read%s\n", - READ_WRITE_MEMORY == + ACPI_READ_WRITE_MEMORY == Address16Data->Attribute.Memory.ReadWriteAttribute ? "/Write" : " Only"); break; - case IO_RANGE: + case ACPI_IO_RANGE: AcpiOsPrintf ("I/O Range\n"); switch (Address16Data->Attribute.Io.RangeAttribute) { - case NON_ISA_ONLY_RANGES: + case ACPI_NON_ISA_ONLY_RANGES: AcpiOsPrintf (" Type Specific: " "Non-ISA Io Addresses\n"); break; - case ISA_ONLY_RANGES: + case ACPI_ISA_ONLY_RANGES: AcpiOsPrintf (" Type Specific: " "ISA Io Addresses\n"); break; - case ENTIRE_RANGE: + case ACPI_ENTIRE_RANGE: AcpiOsPrintf (" Type Specific: " "ISA and non-ISA Io Addresses\n"); break; @@ -657,7 +657,7 @@ AcpiRsDumpAddress16 ( } break; - case BUS_NUMBER_RANGE: + case ACPI_BUS_NUMBER_RANGE: AcpiOsPrintf ("Bus Number Range\n"); break; @@ -669,19 +669,19 @@ AcpiRsDumpAddress16 ( } AcpiOsPrintf (" Resource %s\n", - CONSUMER == Address16Data->ProducerConsumer ? + ACPI_CONSUMER == Address16Data->ProducerConsumer ? "Consumer" : "Producer"); AcpiOsPrintf (" %s decode\n", - SUB_DECODE == Address16Data->Decode ? + ACPI_SUB_DECODE == Address16Data->Decode ? "Subtractive" : "Positive"); AcpiOsPrintf (" Min address is %s fixed\n", - ADDRESS_FIXED == Address16Data->MinAddressFixed ? + ACPI_ADDRESS_FIXED == Address16Data->MinAddressFixed ? "" : "not"); AcpiOsPrintf (" Max address is %s fixed\n", - ADDRESS_FIXED == Address16Data->MaxAddressFixed ? + ACPI_ADDRESS_FIXED == Address16Data->MaxAddressFixed ? "" : "not"); AcpiOsPrintf (" Granularity: %08X\n", @@ -730,35 +730,35 @@ AcpiRsDumpAddress32 ( ACPI_RESOURCE_ADDRESS32 *Address32Data = (ACPI_RESOURCE_ADDRESS32 *) Data; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); AcpiOsPrintf ("32-Bit Address Space Resource\n"); switch (Address32Data->ResourceType) { - case MEMORY_RANGE: + case ACPI_MEMORY_RANGE: AcpiOsPrintf (" Resource Type: Memory Range\n"); switch (Address32Data->Attribute.Memory.CacheAttribute) { - case NON_CACHEABLE_MEMORY: + case ACPI_NON_CACHEABLE_MEMORY: AcpiOsPrintf (" Type Specific: " "Noncacheable memory\n"); break; - case CACHABLE_MEMORY: + case ACPI_CACHABLE_MEMORY: AcpiOsPrintf (" Type Specific: " "Cacheable memory\n"); break; - case WRITE_COMBINING_MEMORY: + case ACPI_WRITE_COMBINING_MEMORY: AcpiOsPrintf (" Type Specific: " "Write-combining memory\n"); break; - case PREFETCHABLE_MEMORY: + case ACPI_PREFETCHABLE_MEMORY: AcpiOsPrintf (" Type Specific: " "Prefetchable memory\n"); break; @@ -770,28 +770,28 @@ AcpiRsDumpAddress32 ( } AcpiOsPrintf (" Type Specific: Read%s\n", - READ_WRITE_MEMORY == + ACPI_READ_WRITE_MEMORY == Address32Data->Attribute.Memory.ReadWriteAttribute ? "/Write" : " Only"); break; - case IO_RANGE: + case ACPI_IO_RANGE: AcpiOsPrintf (" Resource Type: Io Range\n"); switch (Address32Data->Attribute.Io.RangeAttribute) { - case NON_ISA_ONLY_RANGES: + case ACPI_NON_ISA_ONLY_RANGES: AcpiOsPrintf (" Type Specific: " "Non-ISA Io Addresses\n"); break; - case ISA_ONLY_RANGES: + case ACPI_ISA_ONLY_RANGES: AcpiOsPrintf (" Type Specific: " "ISA Io Addresses\n"); break; - case ENTIRE_RANGE: + case ACPI_ENTIRE_RANGE: AcpiOsPrintf (" Type Specific: " "ISA and non-ISA Io Addresses\n"); break; @@ -803,7 +803,7 @@ AcpiRsDumpAddress32 ( } break; - case BUS_NUMBER_RANGE: + case ACPI_BUS_NUMBER_RANGE: AcpiOsPrintf (" Resource Type: Bus Number Range\n"); break; @@ -815,19 +815,19 @@ AcpiRsDumpAddress32 ( } AcpiOsPrintf (" Resource %s\n", - CONSUMER == Address32Data->ProducerConsumer ? + ACPI_CONSUMER == Address32Data->ProducerConsumer ? "Consumer" : "Producer"); AcpiOsPrintf (" %s decode\n", - SUB_DECODE == Address32Data->Decode ? + ACPI_SUB_DECODE == Address32Data->Decode ? "Subtractive" : "Positive"); AcpiOsPrintf (" Min address is %s fixed\n", - ADDRESS_FIXED == Address32Data->MinAddressFixed ? + ACPI_ADDRESS_FIXED == Address32Data->MinAddressFixed ? "" : "not "); AcpiOsPrintf (" Max address is %s fixed\n", - ADDRESS_FIXED == Address32Data->MaxAddressFixed ? + ACPI_ADDRESS_FIXED == Address32Data->MaxAddressFixed ? "" : "not "); AcpiOsPrintf (" Granularity: %08X\n", @@ -876,35 +876,35 @@ AcpiRsDumpAddress64 ( ACPI_RESOURCE_ADDRESS64 *Address64Data = (ACPI_RESOURCE_ADDRESS64 *) Data; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); AcpiOsPrintf ("64-Bit Address Space Resource\n"); switch (Address64Data->ResourceType) { - case MEMORY_RANGE: + case ACPI_MEMORY_RANGE: AcpiOsPrintf (" Resource Type: Memory Range\n"); switch (Address64Data->Attribute.Memory.CacheAttribute) { - case NON_CACHEABLE_MEMORY: + case ACPI_NON_CACHEABLE_MEMORY: AcpiOsPrintf (" Type Specific: " "Noncacheable memory\n"); break; - case CACHABLE_MEMORY: + case ACPI_CACHABLE_MEMORY: AcpiOsPrintf (" Type Specific: " "Cacheable memory\n"); break; - case WRITE_COMBINING_MEMORY: + case ACPI_WRITE_COMBINING_MEMORY: AcpiOsPrintf (" Type Specific: " "Write-combining memory\n"); break; - case PREFETCHABLE_MEMORY: + case ACPI_PREFETCHABLE_MEMORY: AcpiOsPrintf (" Type Specific: " "Prefetchable memory\n"); break; @@ -916,28 +916,28 @@ AcpiRsDumpAddress64 ( } AcpiOsPrintf (" Type Specific: Read%s\n", - READ_WRITE_MEMORY == + ACPI_READ_WRITE_MEMORY == Address64Data->Attribute.Memory.ReadWriteAttribute ? "/Write" : " Only"); break; - case IO_RANGE: + case ACPI_IO_RANGE: AcpiOsPrintf (" Resource Type: Io Range\n"); switch (Address64Data->Attribute.Io.RangeAttribute) { - case NON_ISA_ONLY_RANGES: + case ACPI_NON_ISA_ONLY_RANGES: AcpiOsPrintf (" Type Specific: " "Non-ISA Io Addresses\n"); break; - case ISA_ONLY_RANGES: + case ACPI_ISA_ONLY_RANGES: AcpiOsPrintf (" Type Specific: " "ISA Io Addresses\n"); break; - case ENTIRE_RANGE: + case ACPI_ENTIRE_RANGE: AcpiOsPrintf (" Type Specific: " "ISA and non-ISA Io Addresses\n"); break; @@ -949,7 +949,7 @@ AcpiRsDumpAddress64 ( } break; - case BUS_NUMBER_RANGE: + case ACPI_BUS_NUMBER_RANGE: AcpiOsPrintf (" Resource Type: Bus Number Range\n"); break; @@ -961,19 +961,19 @@ AcpiRsDumpAddress64 ( } AcpiOsPrintf (" Resource %s\n", - CONSUMER == Address64Data->ProducerConsumer ? + ACPI_CONSUMER == Address64Data->ProducerConsumer ? "Consumer" : "Producer"); AcpiOsPrintf (" %s decode\n", - SUB_DECODE == Address64Data->Decode ? + ACPI_SUB_DECODE == Address64Data->Decode ? "Subtractive" : "Positive"); AcpiOsPrintf (" Min address is %s fixed\n", - ADDRESS_FIXED == Address64Data->MinAddressFixed ? + ACPI_ADDRESS_FIXED == Address64Data->MinAddressFixed ? "" : "not "); AcpiOsPrintf (" Max address is %s fixed\n", - ADDRESS_FIXED == Address64Data->MaxAddressFixed ? + ACPI_ADDRESS_FIXED == Address64Data->MaxAddressFixed ? "" : "not "); AcpiOsPrintf (" Granularity: %16X\n", @@ -1023,25 +1023,25 @@ AcpiRsDumpExtendedIrq ( UINT8 Index = 0; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); AcpiOsPrintf ("Extended IRQ Resource\n"); AcpiOsPrintf (" Resource %s\n", - CONSUMER == ExtIrqData->ProducerConsumer ? + ACPI_CONSUMER == ExtIrqData->ProducerConsumer ? "Consumer" : "Producer"); AcpiOsPrintf (" %s\n", - LEVEL_SENSITIVE == ExtIrqData->EdgeLevel ? + ACPI_LEVEL_SENSITIVE == ExtIrqData->EdgeLevel ? "Level" : "Edge"); AcpiOsPrintf (" Active %s\n", - ACTIVE_LOW == ExtIrqData->ActiveHighLow ? + ACPI_ACTIVE_LOW == ExtIrqData->ActiveHighLow ? "low" : "high"); AcpiOsPrintf (" %s\n", - SHARED == ExtIrqData->SharedExclusive ? + ACPI_SHARED == ExtIrqData->SharedExclusive ? "Shared" : "Exclusive"); AcpiOsPrintf (" Interrupts : %X ( ", @@ -1086,7 +1086,7 @@ AcpiRsDumpResourceList ( BOOLEAN Done = FALSE; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); if (AcpiDbgLevel & ACPI_LV_RESOURCES && _COMPONENT & AcpiDbgLayer) @@ -1106,7 +1106,7 @@ AcpiRsDumpResourceList ( break; case ACPI_RSTYPE_START_DPF: - AcpiRsDumpStartDependentFunctions (&Resource->Data); + AcpiRsDumpStartDependFns (&Resource->Data); break; case ACPI_RSTYPE_END_DPF: @@ -1166,7 +1166,7 @@ AcpiRsDumpResourceList ( } - Resource = POINTER_ADD (ACPI_RESOURCE, Resource, Resource->Length); + Resource = ACPI_PTR_ADD (ACPI_RESOURCE, Resource, Resource->Length); } } @@ -1187,27 +1187,28 @@ AcpiRsDumpResourceList ( void AcpiRsDumpIrqList ( - UINT8 *RouteTable) + UINT8 *RouteTable) { - UINT8 *Buffer = RouteTable; - UINT8 Count = 0; - BOOLEAN Done = FALSE; - PCI_ROUTING_TABLE *PrtElement; + UINT8 *Buffer = RouteTable; + UINT8 Count = 0; + BOOLEAN Done = FALSE; + ACPI_PCI_ROUTING_TABLE *PrtElement; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); if (AcpiDbgLevel & ACPI_LV_RESOURCES && _COMPONENT & AcpiDbgLayer) { - PrtElement = (PCI_ROUTING_TABLE *) Buffer; + PrtElement = (ACPI_PCI_ROUTING_TABLE *) Buffer; while (!Done) { AcpiOsPrintf ("PCI IRQ Routing Table structure %X.\n", Count++); - AcpiOsPrintf (" Address: %X\n", - PrtElement->Address); + AcpiOsPrintf (" Address: %8.8X%8.8X\n", + ACPI_HIDWORD (PrtElement->Address), + ACPI_LODWORD (PrtElement->Address)); AcpiOsPrintf (" Pin: %X\n", PrtElement->Pin); @@ -1218,7 +1219,7 @@ AcpiRsDumpIrqList ( Buffer += PrtElement->Length; - PrtElement = (PCI_ROUTING_TABLE *) Buffer; + PrtElement = (ACPI_PCI_ROUTING_TABLE *) Buffer; if(0 == PrtElement->Length) { diff --git a/sys/contrib/dev/acpica/rsio.c b/sys/contrib/dev/acpica/rsio.c index c97958577aa9..0efa40e90f33 100644 --- a/sys/contrib/dev/acpica/rsio.c +++ b/sys/contrib/dev/acpica/rsio.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: rsio - IO and DMA resource descriptors - * $Revision: 14 $ + * $Revision: 17 $ * ******************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -120,7 +120,7 @@ #include "acresrc.h" #define _COMPONENT ACPI_RESOURCES - MODULE_NAME ("rsio") + ACPI_MODULE_NAME ("rsio") /******************************************************************************* @@ -129,13 +129,12 @@ * * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte * stream - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes consumed from - * the ByteStreamBuffer - * OutputBuffer - Pointer to the user's return buffer - * StructureSize - UINT32 pointer that is filled with - * the number of bytes in the filled - * in structure + * BytesConsumed - Pointer to where the number of bytes + * consumed the ByteStreamBuffer is + * returned + * OutputBuffer - Pointer to the return data buffer + * StructureSize - Pointer to where the number of bytes + * in the return data struct is returned * * RETURN: Status * @@ -148,18 +147,18 @@ ACPI_STATUS AcpiRsIoResource ( UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, + ACPI_SIZE *BytesConsumed, UINT8 **OutputBuffer, - UINT32 *StructureSize) + ACPI_SIZE *StructureSize) { UINT8 *Buffer = ByteStreamBuffer; ACPI_RESOURCE *OutputStruct = (ACPI_RESOURCE *) *OutputBuffer; UINT16 Temp16 = 0; UINT8 Temp8 = 0; - UINT32 StructSize = SIZEOF_RESOURCE (ACPI_RESOURCE_IO); + ACPI_SIZE StructSize = ACPI_SIZEOF_RESOURCE (ACPI_RESOURCE_IO); - FUNCTION_TRACE ("RsIoResource"); + ACPI_FUNCTION_TRACE ("RsIoResource"); /* @@ -181,7 +180,7 @@ AcpiRsIoResource ( * Check MinBase Address */ Buffer += 1; - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); + ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); OutputStruct->Data.Io.MinBaseAddress = Temp16; @@ -189,7 +188,7 @@ AcpiRsIoResource ( * Check MaxBase Address */ Buffer += 2; - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); + ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); OutputStruct->Data.Io.MaxBaseAddress = Temp16; @@ -228,13 +227,12 @@ AcpiRsIoResource ( * * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte * stream - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes consumed from - * the ByteStreamBuffer - * OutputBuffer - Pointer to the user's return buffer - * StructureSize - UINT32 pointer that is filled with - * the number of bytes in the filled - * in structure + * BytesConsumed - Pointer to where the number of bytes + * consumed the ByteStreamBuffer is + * returned + * OutputBuffer - Pointer to the return data buffer + * StructureSize - Pointer to where the number of bytes + * in the return data struct is returned * * RETURN: Status * @@ -247,18 +245,18 @@ AcpiRsIoResource ( ACPI_STATUS AcpiRsFixedIoResource ( UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, + ACPI_SIZE *BytesConsumed, UINT8 **OutputBuffer, - UINT32 *StructureSize) + ACPI_SIZE *StructureSize) { UINT8 *Buffer = ByteStreamBuffer; ACPI_RESOURCE *OutputStruct = (ACPI_RESOURCE *) *OutputBuffer; UINT16 Temp16 = 0; UINT8 Temp8 = 0; - UINT32 StructSize = SIZEOF_RESOURCE (ACPI_RESOURCE_FIXED_IO); + ACPI_SIZE StructSize = ACPI_SIZEOF_RESOURCE (ACPI_RESOURCE_FIXED_IO); - FUNCTION_TRACE ("RsFixedIoResource"); + ACPI_FUNCTION_TRACE ("RsFixedIoResource"); /* @@ -272,7 +270,7 @@ AcpiRsFixedIoResource ( * Check Range Base Address */ Buffer += 1; - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); + ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); OutputStruct->Data.FixedIo.BaseAddress = Temp16; @@ -303,9 +301,8 @@ AcpiRsFixedIoResource ( * * PARAMETERS: LinkedList - Pointer to the resource linked list * OutputBuffer - Pointer to the user's return buffer - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes of the - * OutputBuffer used + * BytesConsumed - Pointer to where the number of bytes + * used in the OutputBuffer is returned * * RETURN: Status * @@ -318,14 +315,14 @@ ACPI_STATUS AcpiRsIoStream ( ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, - UINT32 *BytesConsumed) + ACPI_SIZE *BytesConsumed) { UINT8 *Buffer = *OutputBuffer; UINT16 Temp16 = 0; UINT8 Temp8 = 0; - FUNCTION_TRACE ("RsIoStream"); + ACPI_FUNCTION_TRACE ("RsIoStream"); /* @@ -347,7 +344,7 @@ AcpiRsIoStream ( */ Temp16 = (UINT16) LinkedList->Data.Io.MinBaseAddress; - MOVE_UNALIGNED16_TO_16 (Buffer, &Temp16); + ACPI_MOVE_UNALIGNED16_TO_16 (Buffer, &Temp16); Buffer += 2; /* @@ -355,7 +352,7 @@ AcpiRsIoStream ( */ Temp16 = (UINT16) LinkedList->Data.Io.MaxBaseAddress; - MOVE_UNALIGNED16_TO_16 (Buffer, &Temp16); + ACPI_MOVE_UNALIGNED16_TO_16 (Buffer, &Temp16); Buffer += 2; /* @@ -377,7 +374,7 @@ AcpiRsIoStream ( /* * Return the number of bytes consumed in this operation */ - *BytesConsumed = POINTER_DIFF (Buffer, *OutputBuffer); + *BytesConsumed = ACPI_PTR_DIFF (Buffer, *OutputBuffer); return_ACPI_STATUS (AE_OK); } @@ -388,9 +385,8 @@ AcpiRsIoStream ( * * PARAMETERS: LinkedList - Pointer to the resource linked list * OutputBuffer - Pointer to the user's return buffer - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes of the - * OutputBuffer used + * BytesConsumed - Pointer to where the number of bytes + * used in the OutputBuffer is returned * * RETURN: Status * @@ -403,14 +399,14 @@ ACPI_STATUS AcpiRsFixedIoStream ( ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, - UINT32 *BytesConsumed) + ACPI_SIZE *BytesConsumed) { UINT8 *Buffer = *OutputBuffer; UINT16 Temp16 = 0; UINT8 Temp8 = 0; - FUNCTION_TRACE ("RsFixedIoStream"); + ACPI_FUNCTION_TRACE ("RsFixedIoStream"); /* @@ -425,7 +421,7 @@ AcpiRsFixedIoStream ( */ Temp16 = (UINT16) LinkedList->Data.FixedIo.BaseAddress; - MOVE_UNALIGNED16_TO_16 (Buffer, &Temp16); + ACPI_MOVE_UNALIGNED16_TO_16 (Buffer, &Temp16); Buffer += 2; /* @@ -439,7 +435,7 @@ AcpiRsFixedIoStream ( /* * Return the number of bytes consumed in this operation */ - *BytesConsumed = POINTER_DIFF (Buffer, *OutputBuffer); + *BytesConsumed = ACPI_PTR_DIFF (Buffer, *OutputBuffer); return_ACPI_STATUS (AE_OK); } @@ -450,13 +446,12 @@ AcpiRsFixedIoStream ( * * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte * stream - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes consumed from - * the ByteStreamBuffer - * OutputBuffer - Pointer to the user's return buffer - * StructureSize - UINT32 pointer that is filled with - * the number of bytes in the filled - * in structure + * BytesConsumed - Pointer to where the number of bytes + * consumed the ByteStreamBuffer is + * returned + * OutputBuffer - Pointer to the return data buffer + * StructureSize - Pointer to where the number of bytes + * in the return data struct is returned * * RETURN: Status * @@ -469,19 +464,19 @@ AcpiRsFixedIoStream ( ACPI_STATUS AcpiRsDmaResource ( UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, + ACPI_SIZE *BytesConsumed, UINT8 **OutputBuffer, - UINT32 *StructureSize) + ACPI_SIZE *StructureSize) { UINT8 *Buffer = ByteStreamBuffer; ACPI_RESOURCE *OutputStruct = (ACPI_RESOURCE *) *OutputBuffer; UINT8 Temp8 = 0; UINT8 Index; UINT8 i; - UINT32 StructSize = SIZEOF_RESOURCE (ACPI_RESOURCE_DMA); + ACPI_SIZE StructSize = ACPI_SIZEOF_RESOURCE (ACPI_RESOURCE_DMA); - FUNCTION_TRACE ("RsDmaResource"); + ACPI_FUNCTION_TRACE ("RsDmaResource"); /* @@ -559,9 +554,8 @@ AcpiRsDmaResource ( * * PARAMETERS: LinkedList - Pointer to the resource linked list * OutputBuffer - Pointer to the user's return buffer - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes of the - * OutputBuffer used + * BytesConsumed - Pointer to where the number of bytes + * used in the OutputBuffer is returned * * RETURN: Status * @@ -574,7 +568,7 @@ ACPI_STATUS AcpiRsDmaStream ( ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, - UINT32 *BytesConsumed) + ACPI_SIZE *BytesConsumed) { UINT8 *Buffer = *OutputBuffer; UINT16 Temp16 = 0; @@ -582,7 +576,7 @@ AcpiRsDmaStream ( UINT8 Index; - FUNCTION_TRACE ("RsDmaStream"); + ACPI_FUNCTION_TRACE ("RsDmaStream"); /* @@ -619,7 +613,7 @@ AcpiRsDmaStream ( /* * Return the number of bytes consumed in this operation */ - *BytesConsumed = POINTER_DIFF (Buffer, *OutputBuffer); + *BytesConsumed = ACPI_PTR_DIFF (Buffer, *OutputBuffer); return_ACPI_STATUS (AE_OK); } diff --git a/sys/contrib/dev/acpica/rsirq.c b/sys/contrib/dev/acpica/rsirq.c index 7944046c0edc..46087ac4c875 100644 --- a/sys/contrib/dev/acpica/rsirq.c +++ b/sys/contrib/dev/acpica/rsirq.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: rsirq - IRQ resource descriptors - * $Revision: 19 $ + * $Revision: 24 $ * ******************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -120,7 +120,7 @@ #include "acresrc.h" #define _COMPONENT ACPI_RESOURCES - MODULE_NAME ("rsirq") + ACPI_MODULE_NAME ("rsirq") /******************************************************************************* @@ -129,13 +129,12 @@ * * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte * stream - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes consumed from - * the ByteStreamBuffer - * OutputBuffer - Pointer to the user's return buffer - * StructureSize - UINT32 pointer that is filled with - * the number of bytes in the filled - * in structure + * BytesConsumed - Pointer to where the number of bytes + * consumed the ByteStreamBuffer is + * returned + * OutputBuffer - Pointer to the return data buffer + * StructureSize - Pointer to where the number of bytes + * in the return data struct is returned * * RETURN: Status * @@ -148,9 +147,9 @@ ACPI_STATUS AcpiRsIrqResource ( UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, + ACPI_SIZE *BytesConsumed, UINT8 **OutputBuffer, - UINT32 *StructureSize) + ACPI_SIZE *StructureSize) { UINT8 *Buffer = ByteStreamBuffer; ACPI_RESOURCE *OutputStruct = (ACPI_RESOURCE *) *OutputBuffer; @@ -158,10 +157,10 @@ AcpiRsIrqResource ( UINT8 Temp8 = 0; UINT8 Index; UINT8 i; - UINT32 StructSize = SIZEOF_RESOURCE (ACPI_RESOURCE_IRQ); + ACPI_SIZE StructSize = ACPI_SIZEOF_RESOURCE (ACPI_RESOURCE_IRQ); - FUNCTION_TRACE ("RsIrqResource"); + ACPI_FUNCTION_TRACE ("RsIrqResource"); /* @@ -176,7 +175,7 @@ AcpiRsIrqResource ( * Point to the 16-bits of Bytes 1 and 2 */ Buffer += 1; - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); + ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); OutputStruct->Data.Irq.NumberOfInterrupts = 0; @@ -210,15 +209,15 @@ AcpiRsIrqResource ( */ if (Temp8 & 0x01) { - OutputStruct->Data.Irq.EdgeLevel = EDGE_SENSITIVE; - OutputStruct->Data.Irq.ActiveHighLow = ACTIVE_HIGH; + OutputStruct->Data.Irq.EdgeLevel = ACPI_EDGE_SENSITIVE; + OutputStruct->Data.Irq.ActiveHighLow = ACPI_ACTIVE_HIGH; } else { if (Temp8 & 0x8) { - OutputStruct->Data.Irq.EdgeLevel = LEVEL_SENSITIVE; - OutputStruct->Data.Irq.ActiveHighLow = ACTIVE_LOW; + OutputStruct->Data.Irq.EdgeLevel = ACPI_LEVEL_SENSITIVE; + OutputStruct->Data.Irq.ActiveHighLow = ACPI_ACTIVE_LOW; } else { @@ -242,9 +241,9 @@ AcpiRsIrqResource ( * Assume Edge Sensitive, Active High, Non-Sharable * per ACPI Specification */ - OutputStruct->Data.Irq.EdgeLevel = EDGE_SENSITIVE; - OutputStruct->Data.Irq.ActiveHighLow = ACTIVE_HIGH; - OutputStruct->Data.Irq.SharedExclusive = EXCLUSIVE; + OutputStruct->Data.Irq.EdgeLevel = ACPI_EDGE_SENSITIVE; + OutputStruct->Data.Irq.ActiveHighLow = ACPI_ACTIVE_HIGH; + OutputStruct->Data.Irq.SharedExclusive = ACPI_EXCLUSIVE; } /* @@ -266,9 +265,8 @@ AcpiRsIrqResource ( * * PARAMETERS: LinkedList - Pointer to the resource linked list * OutputBuffer - Pointer to the user's return buffer - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes of the - * OutputBuffer used + * BytesConsumed - Pointer to where the number of bytes + * used in the OutputBuffer is returned * * RETURN: Status * @@ -281,7 +279,7 @@ ACPI_STATUS AcpiRsIrqStream ( ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, - UINT32 *BytesConsumed) + ACPI_SIZE *BytesConsumed) { UINT8 *Buffer = *OutputBuffer; UINT16 Temp16 = 0; @@ -290,16 +288,16 @@ AcpiRsIrqStream ( BOOLEAN IRQInfoByteNeeded; - FUNCTION_TRACE ("RsIrqStream"); + ACPI_FUNCTION_TRACE ("RsIrqStream"); /* * The descriptor field is set based upon whether a third byte is * needed to contain the IRQ Information. */ - if (EDGE_SENSITIVE == LinkedList->Data.Irq.EdgeLevel && - ACTIVE_HIGH == LinkedList->Data.Irq.ActiveHighLow && - EXCLUSIVE == LinkedList->Data.Irq.SharedExclusive) + if (ACPI_EDGE_SENSITIVE == LinkedList->Data.Irq.EdgeLevel && + ACPI_ACTIVE_HIGH == LinkedList->Data.Irq.ActiveHighLow && + ACPI_EXCLUSIVE == LinkedList->Data.Irq.SharedExclusive) { *Buffer = 0x22; IRQInfoByteNeeded = FALSE; @@ -324,7 +322,7 @@ AcpiRsIrqStream ( Temp16 |= 0x1 << Temp8; } - MOVE_UNALIGNED16_TO_16 (Buffer, &Temp16); + ACPI_MOVE_UNALIGNED16_TO_16 (Buffer, &Temp16); Buffer += 2; /* @@ -336,8 +334,8 @@ AcpiRsIrqStream ( Temp8 = (UINT8) ((LinkedList->Data.Irq.SharedExclusive & 0x01) << 4); - if (LEVEL_SENSITIVE == LinkedList->Data.Irq.EdgeLevel && - ACTIVE_LOW == LinkedList->Data.Irq.ActiveHighLow) + if (ACPI_LEVEL_SENSITIVE == LinkedList->Data.Irq.EdgeLevel && + ACPI_ACTIVE_LOW == LinkedList->Data.Irq.ActiveHighLow) { Temp8 |= 0x08; } @@ -353,7 +351,7 @@ AcpiRsIrqStream ( /* * Return the number of bytes consumed in this operation */ - *BytesConsumed = POINTER_DIFF (Buffer, *OutputBuffer); + *BytesConsumed = ACPI_PTR_DIFF (Buffer, *OutputBuffer); return_ACPI_STATUS (AE_OK); } @@ -364,13 +362,12 @@ AcpiRsIrqStream ( * * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte * stream - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes consumed from - * the ByteStreamBuffer - * OutputBuffer - Pointer to the user's return buffer - * StructureSize - UINT32 pointer that is filled with - * the number of bytes in the filled - * in structure + * BytesConsumed - Pointer to where the number of bytes + * consumed the ByteStreamBuffer is + * returned + * OutputBuffer - Pointer to the return data buffer + * StructureSize - Pointer to where the number of bytes + * in the return data struct is returned * * RETURN: Status * @@ -383,9 +380,9 @@ AcpiRsIrqStream ( ACPI_STATUS AcpiRsExtendedIrqResource ( UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, + ACPI_SIZE *BytesConsumed, UINT8 **OutputBuffer, - UINT32 *StructureSize) + ACPI_SIZE *StructureSize) { UINT8 *Buffer = ByteStreamBuffer; ACPI_RESOURCE *OutputStruct = (ACPI_RESOURCE *) *OutputBuffer; @@ -393,17 +390,17 @@ AcpiRsExtendedIrqResource ( UINT8 Temp8 = 0; NATIVE_CHAR *TempPtr; UINT8 Index; - UINT32 StructSize = SIZEOF_RESOURCE (ACPI_RESOURCE_EXT_IRQ); + ACPI_SIZE StructSize = ACPI_SIZEOF_RESOURCE (ACPI_RESOURCE_EXT_IRQ); - FUNCTION_TRACE ("RsExtendedIrqResource"); + ACPI_FUNCTION_TRACE ("RsExtendedIrqResource"); /* * Point past the Descriptor to get the number of bytes consumed */ Buffer += 1; - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); + ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); *BytesConsumed = Temp16 + 3; OutputStruct->Id = ACPI_RSTYPE_EXT_IRQ; @@ -417,30 +414,20 @@ AcpiRsExtendedIrqResource ( OutputStruct->Data.ExtendedIrq.ProducerConsumer = Temp8 & 0x01; /* - * Check for HE, LL or HL + * Check for Interrupt Mode + * + * The definition of an Extended IRQ changed between ACPI spec v1.0b + * and ACPI spec 2.0 (section 6.4.3.6 in both). + * + * - Edge/Level are defined opposite in the table vs the headers */ - if(Temp8 & 0x02) - { - OutputStruct->Data.ExtendedIrq.EdgeLevel = EDGE_SENSITIVE; - OutputStruct->Data.ExtendedIrq.ActiveHighLow = ACTIVE_HIGH; - } - else - { - if(Temp8 & 0x4) - { - OutputStruct->Data.ExtendedIrq.EdgeLevel = LEVEL_SENSITIVE; - OutputStruct->Data.ExtendedIrq.ActiveHighLow = ACTIVE_LOW; - } - else - { - /* - * Only _LL and _HE polarity/trigger interrupts - * are allowed (ACPI spec v1.0b ection 6.4.2.1), - * so an error will occur if we reach this point - */ - return_ACPI_STATUS (AE_BAD_DATA); - } - } + OutputStruct->Data.ExtendedIrq.EdgeLevel = + (Temp8 & 0x2) ? ACPI_EDGE_SENSITIVE : ACPI_LEVEL_SENSITIVE; + + /* + * Check Interrupt Polarity + */ + OutputStruct->Data.ExtendedIrq.ActiveHighLow = (Temp8 >> 2) & 0x1; /* * Check for sharable @@ -530,7 +517,7 @@ AcpiRsExtendedIrqResource ( * StructSize to the next 32-bit boundary. */ Temp8 = (UINT8) (Index + 1); - StructSize += ROUND_UP_TO_32BITS (Temp8); + StructSize += ACPI_ROUND_UP_TO_32BITS (Temp8); } else { @@ -558,9 +545,8 @@ AcpiRsExtendedIrqResource ( * * PARAMETERS: LinkedList - Pointer to the resource linked list * OutputBuffer - Pointer to the user's return buffer - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes of the - * OutputBuffer used + * BytesConsumed - Pointer to where the number of bytes + * used in the OutputBuffer is returned * * RETURN: Status * @@ -573,7 +559,7 @@ ACPI_STATUS AcpiRsExtendedIrqStream ( ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, - UINT32 *BytesConsumed) + ACPI_SIZE *BytesConsumed) { UINT8 *Buffer = *OutputBuffer; UINT16 *LengthField; @@ -582,7 +568,7 @@ AcpiRsExtendedIrqStream ( NATIVE_CHAR *TempPointer = NULL; - FUNCTION_TRACE ("RsExtendedIrqStream"); + ACPI_FUNCTION_TRACE ("RsExtendedIrqStream"); /* @@ -603,16 +589,25 @@ AcpiRsExtendedIrqStream ( Temp8 = (UINT8)(LinkedList->Data.ExtendedIrq.ProducerConsumer & 0x01); Temp8 |= ((LinkedList->Data.ExtendedIrq.SharedExclusive & 0x01) << 3); - if (LEVEL_SENSITIVE == LinkedList->Data.ExtendedIrq.EdgeLevel && - ACTIVE_LOW == LinkedList->Data.ExtendedIrq.ActiveHighLow) - { - Temp8 |= 0x04; - } - else + /* + * Set the Interrupt Mode + * + * The definition of an Extended IRQ changed between ACPI spec v1.0b + * and ACPI spec 2.0 (section 6.4.3.6 in both). This code does not + * implement the more restrictive definition of 1.0b + * + * - Edge/Level are defined opposite in the table vs the headers + */ + if (ACPI_EDGE_SENSITIVE == LinkedList->Data.ExtendedIrq.EdgeLevel) { - Temp8 |= 0x02; + Temp8 |= 0x2; } + /* + * Set the Interrupt Polarity + */ + Temp8 |= ((LinkedList->Data.ExtendedIrq.ActiveHighLow & 0x1) << 2); + *Buffer = Temp8; Buffer += 1; @@ -627,7 +622,7 @@ AcpiRsExtendedIrqStream ( for (Index = 0; Index < LinkedList->Data.ExtendedIrq.NumberOfInterrupts; Index++) { - MOVE_UNALIGNED32_TO_32 (Buffer, + ACPI_MOVE_UNALIGNED32_TO_32 (Buffer, &LinkedList->Data.ExtendedIrq.Interrupts[Index]); Buffer += 4; } @@ -645,20 +640,20 @@ AcpiRsExtendedIrqStream ( /* * Copy the string */ - STRCPY (TempPointer, + ACPI_STRCPY (TempPointer, LinkedList->Data.ExtendedIrq.ResourceSource.StringPtr); /* * Buffer needs to be set to the length of the sting + one for the * terminating null */ - Buffer += (STRLEN (LinkedList->Data.ExtendedIrq.ResourceSource.StringPtr) + 1); + Buffer += (ACPI_STRLEN (LinkedList->Data.ExtendedIrq.ResourceSource.StringPtr) + 1); } /* * Return the number of bytes consumed in this operation */ - *BytesConsumed = POINTER_DIFF (Buffer, *OutputBuffer); + *BytesConsumed = ACPI_PTR_DIFF (Buffer, *OutputBuffer); /* * Set the length field to the number of bytes consumed diff --git a/sys/contrib/dev/acpica/rslist.c b/sys/contrib/dev/acpica/rslist.c index 1171f2bf4b97..809544b4e602 100644 --- a/sys/contrib/dev/acpica/rslist.c +++ b/sys/contrib/dev/acpica/rslist.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: rslist - Linked list utilities - * $Revision: 19 $ + * $Revision: 26 $ * ******************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -120,7 +120,7 @@ #include "acresrc.h" #define _COMPONENT ACPI_RESOURCES - MODULE_NAME ("rslist") + ACPI_MODULE_NAME ("rslist") /******************************************************************************* @@ -141,30 +141,28 @@ AcpiRsGetResourceType ( UINT8 ResourceStartByte) { - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); /* * Determine if this is a small or large resource */ - switch (ResourceStartByte & RESOURCE_DESC_TYPE_MASK) + switch (ResourceStartByte & ACPI_RDESC_TYPE_MASK) { - case RESOURCE_DESC_TYPE_SMALL: + case ACPI_RDESC_TYPE_SMALL: /* * Small Resource Type -- Only bits 6:3 are valid */ - return ((UINT8) (ResourceStartByte & RESOURCE_DESC_SMALL_MASK)); - break; + return ((UINT8) (ResourceStartByte & ACPI_RDESC_SMALL_MASK)); - case RESOURCE_DESC_TYPE_LARGE: + case ACPI_RDESC_TYPE_LARGE: /* * Large Resource Type -- All bits are valid */ return (ResourceStartByte); - break; } return (0xFF); @@ -191,18 +189,18 @@ ACPI_STATUS AcpiRsByteStreamToList ( UINT8 *ByteStreamBuffer, UINT32 ByteStreamBufferLength, - UINT8 **OutputBuffer) + UINT8 *OutputBuffer) { ACPI_STATUS Status; UINT32 BytesParsed = 0; UINT8 ResourceType = 0; - UINT32 BytesConsumed = 0; - UINT8 **Buffer = OutputBuffer; - UINT32 StructureSize = 0; + ACPI_SIZE BytesConsumed = 0; + UINT8 *Buffer = OutputBuffer; + ACPI_SIZE StructureSize = 0; BOOLEAN EndTagProcessed = FALSE; + ACPI_RESOURCE *Resource; - - FUNCTION_TRACE ("RsByteStreamToList"); + ACPI_FUNCTION_TRACE ("RsByteStreamToList"); while (BytesParsed < ByteStreamBufferLength && @@ -215,148 +213,148 @@ AcpiRsByteStreamToList ( switch (ResourceType) { - case RESOURCE_DESC_MEMORY_24: + case ACPI_RDESC_TYPE_MEMORY_24: /* * 24-Bit Memory Resource */ Status = AcpiRsMemory24Resource (ByteStreamBuffer, - &BytesConsumed, Buffer, &StructureSize); + &BytesConsumed, &Buffer, &StructureSize); break; - case RESOURCE_DESC_LARGE_VENDOR: + case ACPI_RDESC_TYPE_LARGE_VENDOR: /* * Vendor Defined Resource */ Status = AcpiRsVendorResource (ByteStreamBuffer, - &BytesConsumed, Buffer, &StructureSize); + &BytesConsumed, &Buffer, &StructureSize); break; - case RESOURCE_DESC_MEMORY_32: + case ACPI_RDESC_TYPE_MEMORY_32: /* * 32-Bit Memory Range Resource */ Status = AcpiRsMemory32RangeResource (ByteStreamBuffer, - &BytesConsumed, Buffer, &StructureSize); + &BytesConsumed, &Buffer, &StructureSize); break; - case RESOURCE_DESC_FIXED_MEMORY_32: + case ACPI_RDESC_TYPE_FIXED_MEMORY_32: /* * 32-Bit Fixed Memory Resource */ Status = AcpiRsFixedMemory32Resource (ByteStreamBuffer, - &BytesConsumed, Buffer, &StructureSize); + &BytesConsumed, &Buffer, &StructureSize); break; - case RESOURCE_DESC_QWORD_ADDRESS_SPACE: + case ACPI_RDESC_TYPE_QWORD_ADDRESS_SPACE: /* * 64-Bit Address Resource */ Status = AcpiRsAddress64Resource (ByteStreamBuffer, - &BytesConsumed, Buffer, &StructureSize); + &BytesConsumed, &Buffer, &StructureSize); break; - case RESOURCE_DESC_DWORD_ADDRESS_SPACE: + case ACPI_RDESC_TYPE_DWORD_ADDRESS_SPACE: /* * 32-Bit Address Resource */ Status = AcpiRsAddress32Resource (ByteStreamBuffer, - &BytesConsumed, Buffer, &StructureSize); + &BytesConsumed, &Buffer, &StructureSize); break; - case RESOURCE_DESC_WORD_ADDRESS_SPACE: + case ACPI_RDESC_TYPE_WORD_ADDRESS_SPACE: /* * 16-Bit Address Resource */ Status = AcpiRsAddress16Resource (ByteStreamBuffer, - &BytesConsumed, Buffer, &StructureSize); + &BytesConsumed, &Buffer, &StructureSize); break; - case RESOURCE_DESC_EXTENDED_XRUPT: + case ACPI_RDESC_TYPE_EXTENDED_XRUPT: /* * Extended IRQ */ Status = AcpiRsExtendedIrqResource (ByteStreamBuffer, - &BytesConsumed, Buffer, &StructureSize); + &BytesConsumed, &Buffer, &StructureSize); break; - case RESOURCE_DESC_IRQ_FORMAT: + case ACPI_RDESC_TYPE_IRQ_FORMAT: /* * IRQ Resource */ Status = AcpiRsIrqResource (ByteStreamBuffer, - &BytesConsumed, Buffer, &StructureSize); + &BytesConsumed, &Buffer, &StructureSize); break; - case RESOURCE_DESC_DMA_FORMAT: + case ACPI_RDESC_TYPE_DMA_FORMAT: /* * DMA Resource */ Status = AcpiRsDmaResource (ByteStreamBuffer, - &BytesConsumed, Buffer, &StructureSize); + &BytesConsumed, &Buffer, &StructureSize); break; - case RESOURCE_DESC_START_DEPENDENT: + case ACPI_RDESC_TYPE_START_DEPENDENT: /* * Start Dependent Functions Resource */ - Status = AcpiRsStartDependentFunctionsResource (ByteStreamBuffer, - &BytesConsumed, Buffer, &StructureSize); + Status = AcpiRsStartDependFnsResource (ByteStreamBuffer, + &BytesConsumed, &Buffer, &StructureSize); break; - case RESOURCE_DESC_END_DEPENDENT: + case ACPI_RDESC_TYPE_END_DEPENDENT: /* * End Dependent Functions Resource */ - Status = AcpiRsEndDependentFunctionsResource (ByteStreamBuffer, - &BytesConsumed, Buffer, &StructureSize); + Status = AcpiRsEndDependFnsResource (ByteStreamBuffer, + &BytesConsumed, &Buffer, &StructureSize); break; - case RESOURCE_DESC_IO_PORT: + case ACPI_RDESC_TYPE_IO_PORT: /* * IO Port Resource */ Status = AcpiRsIoResource (ByteStreamBuffer, - &BytesConsumed, Buffer, &StructureSize); + &BytesConsumed, &Buffer, &StructureSize); break; - case RESOURCE_DESC_FIXED_IO_PORT: + case ACPI_RDESC_TYPE_FIXED_IO_PORT: /* * Fixed IO Port Resource */ Status = AcpiRsFixedIoResource (ByteStreamBuffer, - &BytesConsumed, Buffer, &StructureSize); + &BytesConsumed, &Buffer, &StructureSize); break; - case RESOURCE_DESC_SMALL_VENDOR: + case ACPI_RDESC_TYPE_SMALL_VENDOR: /* * Vendor Specific Resource */ Status = AcpiRsVendorResource (ByteStreamBuffer, - &BytesConsumed, Buffer, &StructureSize); + &BytesConsumed, &Buffer, &StructureSize); break; - case RESOURCE_DESC_END_TAG: + case ACPI_RDESC_TYPE_END_TAG: /* * End Tag */ EndTagProcessed = TRUE; Status = AcpiRsEndTagResource (ByteStreamBuffer, - &BytesConsumed, Buffer, &StructureSize); + &BytesConsumed, &Buffer, &StructureSize); break; @@ -368,8 +366,7 @@ AcpiRsByteStreamToList ( break; } - - if (!ACPI_SUCCESS(Status)) + if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } @@ -387,7 +384,9 @@ AcpiRsByteStreamToList ( /* * Set the Buffer to the next structure */ - *Buffer += StructureSize; + Resource = (ACPI_RESOURCE *)Buffer; + Resource->Length = ACPI_ALIGN_RESOURCE_SIZE(Resource->Length); + Buffer += ACPI_ALIGN_RESOURCE_SIZE(StructureSize); } /* end while */ @@ -428,15 +427,15 @@ ACPI_STATUS AcpiRsListToByteStream ( ACPI_RESOURCE *LinkedList, UINT32 ByteStreamSizeNeeded, - UINT8 **OutputBuffer) + UINT8 *OutputBuffer) { ACPI_STATUS Status; - UINT8 *Buffer = *OutputBuffer; - UINT32 BytesConsumed = 0; + UINT8 *Buffer = OutputBuffer; + ACPI_SIZE BytesConsumed = 0; BOOLEAN Done = FALSE; - FUNCTION_TRACE ("RsListToByteStream"); + ACPI_FUNCTION_TRACE ("RsListToByteStream"); while (!Done) @@ -461,7 +460,7 @@ AcpiRsListToByteStream ( /* * Start Dependent Functions Resource */ - Status = AcpiRsStartDependentFunctionsStream (LinkedList, + Status = AcpiRsStartDependFnsStream (LinkedList, &Buffer, &BytesConsumed); break; @@ -469,7 +468,7 @@ AcpiRsListToByteStream ( /* * End Dependent Functions Resource */ - Status = AcpiRsEndDependentFunctionsStream (LinkedList, + Status = AcpiRsEndDependFnsStream (LinkedList, &Buffer, &BytesConsumed); break; @@ -571,8 +570,7 @@ AcpiRsListToByteStream ( } /* switch (LinkedList->Id) */ - - if (!ACPI_SUCCESS(Status)) + if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } @@ -585,7 +583,7 @@ AcpiRsListToByteStream ( /* * Point to the next object */ - LinkedList = POINTER_ADD (ACPI_RESOURCE, + LinkedList = ACPI_PTR_ADD (ACPI_RESOURCE, LinkedList, LinkedList->Length); } diff --git a/sys/contrib/dev/acpica/rsmemory.c b/sys/contrib/dev/acpica/rsmemory.c index 368f76501afe..2da4523f2028 100644 --- a/sys/contrib/dev/acpica/rsmemory.c +++ b/sys/contrib/dev/acpica/rsmemory.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: rsmem24 - Memory resource descriptors - * $Revision: 14 $ + * $Revision: 17 $ * ******************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -120,7 +120,7 @@ #include "acresrc.h" #define _COMPONENT ACPI_RESOURCES - MODULE_NAME ("rsmemory") + ACPI_MODULE_NAME ("rsmemory") /******************************************************************************* @@ -129,13 +129,12 @@ * * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte * stream - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes consumed from - * the ByteStreamBuffer - * OutputBuffer - Pointer to the user's return buffer - * StructureSize - UINT32 pointer that is filled with - * the number of bytes in the filled - * in structure + * BytesConsumed - Pointer to where the number of bytes + * consumed the ByteStreamBuffer is + * returned + * OutputBuffer - Pointer to the return data buffer + * StructureSize - Pointer to where the number of bytes + * in the return data struct is returned * * RETURN: Status * @@ -148,18 +147,18 @@ ACPI_STATUS AcpiRsMemory24Resource ( UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, + ACPI_SIZE *BytesConsumed, UINT8 **OutputBuffer, - UINT32 *StructureSize) + ACPI_SIZE *StructureSize) { UINT8 *Buffer = ByteStreamBuffer; ACPI_RESOURCE *OutputStruct = (ACPI_RESOURCE *) *OutputBuffer; UINT16 Temp16 = 0; UINT8 Temp8 = 0; - UINT32 StructSize = SIZEOF_RESOURCE (ACPI_RESOURCE_MEM24); + ACPI_SIZE StructSize = ACPI_SIZEOF_RESOURCE (ACPI_RESOURCE_MEM24); - FUNCTION_TRACE ("RsMemory24Resource"); + ACPI_FUNCTION_TRACE ("RsMemory24Resource"); /* @@ -167,7 +166,7 @@ AcpiRsMemory24Resource ( */ Buffer += 1; - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); + ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); Buffer += 2; *BytesConsumed = Temp16 + 3; OutputStruct->Id = ACPI_RSTYPE_MEM24; @@ -182,28 +181,28 @@ AcpiRsMemory24Resource ( /* * Get MinBaseAddress (Bytes 4-5) */ - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); + ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); Buffer += 2; OutputStruct->Data.Memory24.MinBaseAddress = Temp16; /* * Get MaxBaseAddress (Bytes 6-7) */ - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); + ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); Buffer += 2; OutputStruct->Data.Memory24.MaxBaseAddress = Temp16; /* * Get Alignment (Bytes 8-9) */ - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); + ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); Buffer += 2; OutputStruct->Data.Memory24.Alignment = Temp16; /* * Get RangeLength (Bytes 10-11) */ - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); + ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); OutputStruct->Data.Memory24.RangeLength = Temp16; /* @@ -225,9 +224,8 @@ AcpiRsMemory24Resource ( * * PARAMETERS: LinkedList - Pointer to the resource linked list * OutputBuffer - Pointer to the user's return buffer - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes of the - * OutputBuffer used + * BytesConsumed - Pointer to where the number of bytes + * used in the OutputBuffer is returned * * RETURN: Status * @@ -240,14 +238,14 @@ ACPI_STATUS AcpiRsMemory24Stream ( ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, - UINT32 *BytesConsumed) + ACPI_SIZE *BytesConsumed) { UINT8 *Buffer = *OutputBuffer; UINT16 Temp16 = 0; UINT8 Temp8 = 0; - FUNCTION_TRACE ("RsMemory24Stream"); + ACPI_FUNCTION_TRACE ("RsMemory24Stream"); /* @@ -260,7 +258,7 @@ AcpiRsMemory24Stream ( * The length field is static */ Temp16 = 0x09; - MOVE_UNALIGNED16_TO_16 (Buffer, &Temp16); + ACPI_MOVE_UNALIGNED16_TO_16 (Buffer, &Temp16); Buffer += 2; /* @@ -273,31 +271,31 @@ AcpiRsMemory24Stream ( /* * Set the Range minimum base address */ - MOVE_UNALIGNED16_TO_16 (Buffer, &LinkedList->Data.Memory24.MinBaseAddress); + ACPI_MOVE_UNALIGNED16_TO_16 (Buffer, &LinkedList->Data.Memory24.MinBaseAddress); Buffer += 2; /* * Set the Range maximum base address */ - MOVE_UNALIGNED16_TO_16 (Buffer, &LinkedList->Data.Memory24.MaxBaseAddress); + ACPI_MOVE_UNALIGNED16_TO_16 (Buffer, &LinkedList->Data.Memory24.MaxBaseAddress); Buffer += 2; /* * Set the base alignment */ - MOVE_UNALIGNED16_TO_16 (Buffer, &LinkedList->Data.Memory24.Alignment); + ACPI_MOVE_UNALIGNED16_TO_16 (Buffer, &LinkedList->Data.Memory24.Alignment); Buffer += 2; /* * Set the range length */ - MOVE_UNALIGNED16_TO_16 (Buffer, &LinkedList->Data.Memory24.RangeLength); + ACPI_MOVE_UNALIGNED16_TO_16 (Buffer, &LinkedList->Data.Memory24.RangeLength); Buffer += 2; /* * Return the number of bytes consumed in this operation */ - *BytesConsumed = POINTER_DIFF (Buffer, *OutputBuffer); + *BytesConsumed = ACPI_PTR_DIFF (Buffer, *OutputBuffer); return_ACPI_STATUS (AE_OK); } @@ -308,13 +306,12 @@ AcpiRsMemory24Stream ( * * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte * stream - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes consumed from - * the ByteStreamBuffer - * OutputBuffer - Pointer to the user's return buffer - * StructureSize - UINT32 pointer that is filled with - * the number of bytes in the filled - * in structure + * BytesConsumed - Pointer to where the number of bytes + * consumed the ByteStreamBuffer is + * returned + * OutputBuffer - Pointer to the return data buffer + * StructureSize - Pointer to where the number of bytes + * in the return data struct is returned * * RETURN: Status * @@ -327,18 +324,18 @@ AcpiRsMemory24Stream ( ACPI_STATUS AcpiRsMemory32RangeResource ( UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, + ACPI_SIZE *BytesConsumed, UINT8 **OutputBuffer, - UINT32 *StructureSize) + ACPI_SIZE *StructureSize) { UINT8 *Buffer = ByteStreamBuffer; ACPI_RESOURCE *OutputStruct = (ACPI_RESOURCE *) *OutputBuffer; UINT16 Temp16 = 0; UINT8 Temp8 = 0; - UINT32 StructSize = SIZEOF_RESOURCE (ACPI_RESOURCE_MEM32); + ACPI_SIZE StructSize = ACPI_SIZEOF_RESOURCE (ACPI_RESOURCE_MEM32); - FUNCTION_TRACE ("RsMemory32RangeResource"); + ACPI_FUNCTION_TRACE ("RsMemory32RangeResource"); /* @@ -346,7 +343,7 @@ AcpiRsMemory32RangeResource ( */ Buffer += 1; - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); + ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); Buffer += 2; *BytesConsumed = Temp16 + 3; @@ -373,27 +370,27 @@ AcpiRsMemory32RangeResource ( /* * Get MinBaseAddress (Bytes 4-7) */ - MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.Memory32.MinBaseAddress, + ACPI_MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.Memory32.MinBaseAddress, Buffer); Buffer += 4; /* * Get MaxBaseAddress (Bytes 8-11) */ - MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.Memory32.MaxBaseAddress, + ACPI_MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.Memory32.MaxBaseAddress, Buffer); Buffer += 4; /* * Get Alignment (Bytes 12-15) */ - MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.Memory32.Alignment, Buffer); + ACPI_MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.Memory32.Alignment, Buffer); Buffer += 4; /* * Get RangeLength (Bytes 16-19) */ - MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.Memory32.RangeLength, Buffer); + ACPI_MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.Memory32.RangeLength, Buffer); /* * Set the Length parameter @@ -414,13 +411,12 @@ AcpiRsMemory32RangeResource ( * * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte * stream - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes consumed from - * the ByteStreamBuffer - * OutputBuffer - Pointer to the user's return buffer - * StructureSize - UINT32 pointer that is filled with - * the number of bytes in the filled - * in structure + * BytesConsumed - Pointer to where the number of bytes + * consumed the ByteStreamBuffer is + * returned + * OutputBuffer - Pointer to the return data buffer + * StructureSize - Pointer to where the number of bytes + * in the return data struct is returned * * RETURN: Status * @@ -433,25 +429,25 @@ AcpiRsMemory32RangeResource ( ACPI_STATUS AcpiRsFixedMemory32Resource ( UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, + ACPI_SIZE *BytesConsumed, UINT8 **OutputBuffer, - UINT32 *StructureSize) + ACPI_SIZE *StructureSize) { UINT8 *Buffer = ByteStreamBuffer; ACPI_RESOURCE *OutputStruct = (ACPI_RESOURCE *) *OutputBuffer; UINT16 Temp16 = 0; UINT8 Temp8 = 0; - UINT32 StructSize = SIZEOF_RESOURCE (ACPI_RESOURCE_FIXED_MEM32); + ACPI_SIZE StructSize = ACPI_SIZEOF_RESOURCE (ACPI_RESOURCE_FIXED_MEM32); - FUNCTION_TRACE ("RsFixedMemory32Resource"); + ACPI_FUNCTION_TRACE ("RsFixedMemory32Resource"); /* * Point past the Descriptor to get the number of bytes consumed */ Buffer += 1; - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); + ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); Buffer += 2; *BytesConsumed = Temp16 + 3; @@ -468,14 +464,14 @@ AcpiRsFixedMemory32Resource ( /* * Get RangeBaseAddress (Bytes 4-7) */ - MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.FixedMemory32.RangeBaseAddress, + ACPI_MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.FixedMemory32.RangeBaseAddress, Buffer); Buffer += 4; /* * Get RangeLength (Bytes 8-11) */ - MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.FixedMemory32.RangeLength, + ACPI_MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.FixedMemory32.RangeLength, Buffer); /* @@ -497,9 +493,8 @@ AcpiRsFixedMemory32Resource ( * * PARAMETERS: LinkedList - Pointer to the resource linked list * OutputBuffer - Pointer to the user's return buffer - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes of the - * OutputBuffer used + * BytesConsumed - Pointer to where the number of bytes + * used in the OutputBuffer is returned * * RETURN: Status * @@ -512,14 +507,14 @@ ACPI_STATUS AcpiRsMemory32RangeStream ( ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, - UINT32 *BytesConsumed) + ACPI_SIZE *BytesConsumed) { UINT8 *Buffer = *OutputBuffer; UINT16 Temp16 = 0; UINT8 Temp8 = 0; - FUNCTION_TRACE ("RsMemory32RangeStream"); + ACPI_FUNCTION_TRACE ("RsMemory32RangeStream"); /* @@ -533,7 +528,7 @@ AcpiRsMemory32RangeStream ( */ Temp16 = 0x11; - MOVE_UNALIGNED16_TO_16 (Buffer, &Temp16); + ACPI_MOVE_UNALIGNED16_TO_16 (Buffer, &Temp16); Buffer += 2; /* @@ -546,31 +541,31 @@ AcpiRsMemory32RangeStream ( /* * Set the Range minimum base address */ - MOVE_UNALIGNED32_TO_32 (Buffer, &LinkedList->Data.Memory32.MinBaseAddress); + ACPI_MOVE_UNALIGNED32_TO_32 (Buffer, &LinkedList->Data.Memory32.MinBaseAddress); Buffer += 4; /* * Set the Range maximum base address */ - MOVE_UNALIGNED32_TO_32 (Buffer, &LinkedList->Data.Memory32.MaxBaseAddress); + ACPI_MOVE_UNALIGNED32_TO_32 (Buffer, &LinkedList->Data.Memory32.MaxBaseAddress); Buffer += 4; /* * Set the base alignment */ - MOVE_UNALIGNED32_TO_32 (Buffer, &LinkedList->Data.Memory32.Alignment); + ACPI_MOVE_UNALIGNED32_TO_32 (Buffer, &LinkedList->Data.Memory32.Alignment); Buffer += 4; /* * Set the range length */ - MOVE_UNALIGNED32_TO_32 (Buffer, &LinkedList->Data.Memory32.RangeLength); + ACPI_MOVE_UNALIGNED32_TO_32 (Buffer, &LinkedList->Data.Memory32.RangeLength); Buffer += 4; /* * Return the number of bytes consumed in this operation */ - *BytesConsumed = POINTER_DIFF (Buffer, *OutputBuffer); + *BytesConsumed = ACPI_PTR_DIFF (Buffer, *OutputBuffer); return_ACPI_STATUS (AE_OK); } @@ -581,9 +576,8 @@ AcpiRsMemory32RangeStream ( * * PARAMETERS: LinkedList - Pointer to the resource linked list * OutputBuffer - Pointer to the user's return buffer - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes of the - * OutputBuffer used + * BytesConsumed - Pointer to where the number of bytes + * used in the OutputBuffer is returned * * RETURN: Status * @@ -596,14 +590,14 @@ ACPI_STATUS AcpiRsFixedMemory32Stream ( ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, - UINT32 *BytesConsumed) + ACPI_SIZE *BytesConsumed) { UINT8 *Buffer = *OutputBuffer; UINT16 Temp16 = 0; UINT8 Temp8 = 0; - FUNCTION_TRACE ("RsFixedMemory32Stream"); + ACPI_FUNCTION_TRACE ("RsFixedMemory32Stream"); /* @@ -617,7 +611,7 @@ AcpiRsFixedMemory32Stream ( */ Temp16 = 0x09; - MOVE_UNALIGNED16_TO_16 (Buffer, &Temp16); + ACPI_MOVE_UNALIGNED16_TO_16 (Buffer, &Temp16); Buffer += 2; /* @@ -630,21 +624,21 @@ AcpiRsFixedMemory32Stream ( /* * Set the Range base address */ - MOVE_UNALIGNED32_TO_32 (Buffer, + ACPI_MOVE_UNALIGNED32_TO_32 (Buffer, &LinkedList->Data.FixedMemory32.RangeBaseAddress); Buffer += 4; /* * Set the range length */ - MOVE_UNALIGNED32_TO_32 (Buffer, + ACPI_MOVE_UNALIGNED32_TO_32 (Buffer, &LinkedList->Data.FixedMemory32.RangeLength); Buffer += 4; /* * Return the number of bytes consumed in this operation */ - *BytesConsumed = POINTER_DIFF (Buffer, *OutputBuffer); + *BytesConsumed = ACPI_PTR_DIFF (Buffer, *OutputBuffer); return_ACPI_STATUS (AE_OK); } diff --git a/sys/contrib/dev/acpica/rsmisc.c b/sys/contrib/dev/acpica/rsmisc.c index ee1732fbb798..adc3b4e05ae3 100644 --- a/sys/contrib/dev/acpica/rsmisc.c +++ b/sys/contrib/dev/acpica/rsmisc.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: rsmisc - Miscellaneous resource descriptors - * $Revision: 17 $ + * $Revision: 20 $ * ******************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -120,7 +120,7 @@ #include "acresrc.h" #define _COMPONENT ACPI_RESOURCES - MODULE_NAME ("rsmisc") + ACPI_MODULE_NAME ("rsmisc") /******************************************************************************* @@ -129,13 +129,12 @@ * * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte * stream - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes consumed from - * the ByteStreamBuffer - * OutputBuffer - Pointer to the user's return buffer - * StructureSize - UINT32 pointer that is filled with - * the number of bytes in the filled - * in structure + * BytesConsumed - Pointer to where the number of bytes + * consumed the ByteStreamBuffer is + * returned + * OutputBuffer - Pointer to the return data buffer + * StructureSize - Pointer to where the number of bytes + * in the return data struct is returned * * RETURN: Status * @@ -148,15 +147,15 @@ ACPI_STATUS AcpiRsEndTagResource ( UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, + ACPI_SIZE *BytesConsumed, UINT8 **OutputBuffer, - UINT32 *StructureSize) + ACPI_SIZE *StructureSize) { ACPI_RESOURCE *OutputStruct = (ACPI_RESOURCE *) *OutputBuffer; - UINT32 StructSize = ACPI_RESOURCE_LENGTH; + ACPI_SIZE StructSize = ACPI_RESOURCE_LENGTH; - FUNCTION_TRACE ("RsEndTagResource"); + ACPI_FUNCTION_TRACE ("RsEndTagResource"); /* @@ -188,9 +187,8 @@ AcpiRsEndTagResource ( * * PARAMETERS: LinkedList - Pointer to the resource linked list * OutputBuffer - Pointer to the user's return buffer - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes of the - * OutputBuffer used + * BytesConsumed - Pointer to where the number of bytes + * used in the OutputBuffer is returned * * RETURN: Status * @@ -203,13 +201,13 @@ ACPI_STATUS AcpiRsEndTagStream ( ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, - UINT32 *BytesConsumed) + ACPI_SIZE *BytesConsumed) { UINT8 *Buffer = *OutputBuffer; UINT8 Temp8 = 0; - FUNCTION_TRACE ("RsEndTagStream"); + ACPI_FUNCTION_TRACE ("RsEndTagStream"); /* @@ -230,7 +228,7 @@ AcpiRsEndTagStream ( /* * Return the number of bytes consumed in this operation */ - *BytesConsumed = POINTER_DIFF (Buffer, *OutputBuffer); + *BytesConsumed = ACPI_PTR_DIFF (Buffer, *OutputBuffer); return_ACPI_STATUS (AE_OK); } @@ -241,13 +239,12 @@ AcpiRsEndTagStream ( * * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte * stream - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes consumed from - * the ByteStreamBuffer - * OutputBuffer - Pointer to the user's return buffer - * StructureSize - UINT32 pointer that is filled with - * the number of bytes in the filled - * in structure + * BytesConsumed - Pointer to where the number of bytes + * consumed the ByteStreamBuffer is + * returned + * OutputBuffer - Pointer to the return data buffer + * StructureSize - Pointer to where the number of bytes + * in the return data struct is returned * * RETURN: Status * @@ -260,19 +257,19 @@ AcpiRsEndTagStream ( ACPI_STATUS AcpiRsVendorResource ( UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, + ACPI_SIZE *BytesConsumed, UINT8 **OutputBuffer, - UINT32 *StructureSize) + ACPI_SIZE *StructureSize) { UINT8 *Buffer = ByteStreamBuffer; ACPI_RESOURCE *OutputStruct = (ACPI_RESOURCE *) *OutputBuffer; UINT16 Temp16 = 0; UINT8 Temp8 = 0; UINT8 Index; - UINT32 StructSize = SIZEOF_RESOURCE (ACPI_RESOURCE_VENDOR); + ACPI_SIZE StructSize = ACPI_SIZEOF_RESOURCE (ACPI_RESOURCE_VENDOR); - FUNCTION_TRACE ("RsVendorResource"); + ACPI_FUNCTION_TRACE ("RsVendorResource"); /* @@ -289,7 +286,7 @@ AcpiRsVendorResource ( /* Dereference */ - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); + ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); /* Calculate bytes consumed */ @@ -329,7 +326,7 @@ AcpiRsVendorResource ( * calculate the length of the vendor string and expand the * StructSize to the next 32-bit boundary. */ - StructSize += ROUND_UP_TO_32BITS (Temp16); + StructSize += ACPI_ROUND_UP_TO_32BITS (Temp16); /* * Set the Length parameter @@ -350,9 +347,8 @@ AcpiRsVendorResource ( * * PARAMETERS: LinkedList - Pointer to the resource linked list * OutputBuffer - Pointer to the user's return buffer - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes of the - * OutputBuffer used + * BytesConsumed - Pointer to where the number of bytes + * used in the OutputBuffer is returned * * RETURN: Status * @@ -365,7 +361,7 @@ ACPI_STATUS AcpiRsVendorStream ( ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, - UINT32 *BytesConsumed) + ACPI_SIZE *BytesConsumed) { UINT8 *Buffer = *OutputBuffer; UINT16 Temp16 = 0; @@ -373,7 +369,7 @@ AcpiRsVendorStream ( UINT8 Index; - FUNCTION_TRACE ("RsVendorStream"); + ACPI_FUNCTION_TRACE ("RsVendorStream"); /* @@ -389,7 +385,7 @@ AcpiRsVendorStream ( Temp16 = (UINT16) LinkedList->Data.VendorSpecific.Length; - MOVE_UNALIGNED16_TO_16 (Buffer, &Temp16); + ACPI_MOVE_UNALIGNED16_TO_16 (Buffer, &Temp16); Buffer += 2; } else @@ -418,24 +414,23 @@ AcpiRsVendorStream ( /* * Return the number of bytes consumed in this operation */ - *BytesConsumed = POINTER_DIFF (Buffer, *OutputBuffer); + *BytesConsumed = ACPI_PTR_DIFF (Buffer, *OutputBuffer); return_ACPI_STATUS (AE_OK); } /******************************************************************************* * - * FUNCTION: AcpiRsStartDependentFunctionsResource + * FUNCTION: AcpiRsStartDependFnsResource * * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte * stream - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes consumed from - * the ByteStreamBuffer - * OutputBuffer - Pointer to the user's return buffer - * StructureSize - UINT32 pointer that is filled with - * the number of bytes in the filled - * in structure + * BytesConsumed - Pointer to where the number of bytes + * consumed the ByteStreamBuffer is + * returned + * OutputBuffer - Pointer to the return data buffer + * StructureSize - Pointer to where the number of bytes + * in the return data struct is returned * * RETURN: Status * @@ -446,19 +441,19 @@ AcpiRsVendorStream ( ******************************************************************************/ ACPI_STATUS -AcpiRsStartDependentFunctionsResource ( +AcpiRsStartDependFnsResource ( UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, + ACPI_SIZE *BytesConsumed, UINT8 **OutputBuffer, - UINT32 *StructureSize) + ACPI_SIZE *StructureSize) { UINT8 *Buffer = ByteStreamBuffer; - ACPI_RESOURCE *OutputStruct = (ACPI_RESOURCE *) *OutputBuffer; + ACPI_RESOURCE *OutputStruct = (ACPI_RESOURCE *) *OutputBuffer; UINT8 Temp8 = 0; - UINT32 StructSize = SIZEOF_RESOURCE (ACPI_RESOURCE_START_DPF); + ACPI_SIZE StructSize = ACPI_SIZEOF_RESOURCE (ACPI_RESOURCE_START_DPF); - FUNCTION_TRACE ("RsStartDependentFunctionsResource"); + ACPI_FUNCTION_TRACE ("RsStartDependFnsResource"); /* @@ -501,10 +496,10 @@ AcpiRsStartDependentFunctionsResource ( else { OutputStruct->Data.StartDpf.CompatibilityPriority = - ACCEPTABLE_CONFIGURATION; + ACPI_ACCEPTABLE_CONFIGURATION; OutputStruct->Data.StartDpf.PerformanceRobustness = - ACCEPTABLE_CONFIGURATION; + ACPI_ACCEPTABLE_CONFIGURATION; } /* @@ -522,17 +517,16 @@ AcpiRsStartDependentFunctionsResource ( /******************************************************************************* * - * FUNCTION: AcpiRsEndDependentFunctionsResource + * FUNCTION: AcpiRsEndDependFnsResource * * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte * stream - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes consumed from - * the ByteStreamBuffer - * OutputBuffer - Pointer to the user's return buffer - * StructureSize - UINT32 pointer that is filled with - * the number of bytes in the filled - * in structure + * BytesConsumed - Pointer to where the number of bytes + * consumed the ByteStreamBuffer is + * returned + * OutputBuffer - Pointer to the return data buffer + * StructureSize - Pointer to where the number of bytes + * in the return data struct is returned * * RETURN: Status * @@ -543,17 +537,17 @@ AcpiRsStartDependentFunctionsResource ( ******************************************************************************/ ACPI_STATUS -AcpiRsEndDependentFunctionsResource ( +AcpiRsEndDependFnsResource ( UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, + ACPI_SIZE *BytesConsumed, UINT8 **OutputBuffer, - UINT32 *StructureSize) + ACPI_SIZE *StructureSize) { ACPI_RESOURCE *OutputStruct = (ACPI_RESOURCE *) *OutputBuffer; - UINT32 StructSize = ACPI_RESOURCE_LENGTH; + ACPI_SIZE StructSize = ACPI_RESOURCE_LENGTH; - FUNCTION_TRACE ("RsEndDependentFunctionsResource"); + ACPI_FUNCTION_TRACE ("RsEndDependFnsResource"); /* @@ -581,7 +575,7 @@ AcpiRsEndDependentFunctionsResource ( /******************************************************************************* * - * FUNCTION: AcpiRsStartDependentFunctionsStream + * FUNCTION: AcpiRsStartDependFnsStream * * PARAMETERS: LinkedList - Pointer to the resource linked list * OutputBuffer - Pointer to the user's return buffer @@ -597,25 +591,25 @@ AcpiRsEndDependentFunctionsResource ( ******************************************************************************/ ACPI_STATUS -AcpiRsStartDependentFunctionsStream ( +AcpiRsStartDependFnsStream ( ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, - UINT32 *BytesConsumed) + ACPI_SIZE *BytesConsumed) { UINT8 *Buffer = *OutputBuffer; UINT8 Temp8 = 0; - FUNCTION_TRACE ("RsStartDependentFunctionsStream"); + ACPI_FUNCTION_TRACE ("RsStartDependFnsStream"); /* * The descriptor field is set based upon whether a byte is needed * to contain Priority data. */ - if (ACCEPTABLE_CONFIGURATION == + if (ACPI_ACCEPTABLE_CONFIGURATION == LinkedList->Data.StartDpf.CompatibilityPriority && - ACCEPTABLE_CONFIGURATION == + ACPI_ACCEPTABLE_CONFIGURATION == LinkedList->Data.StartDpf.PerformanceRobustness) { *Buffer = 0x30; @@ -641,20 +635,19 @@ AcpiRsStartDependentFunctionsStream ( /* * Return the number of bytes consumed in this operation */ - *BytesConsumed = POINTER_DIFF (Buffer, *OutputBuffer); + *BytesConsumed = ACPI_PTR_DIFF (Buffer, *OutputBuffer); return_ACPI_STATUS (AE_OK); } /******************************************************************************* * - * FUNCTION: AcpiRsEndDependentFunctionsStream + * FUNCTION: AcpiRsEndDependFnsStream * * PARAMETERS: LinkedList - Pointer to the resource linked list * OutputBuffer - Pointer to the user's return buffer - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes of the - * OutputBuffer used + * BytesConsumed - Pointer to where the number of bytes + * used in the OutputBuffer is returned * * RETURN: Status * @@ -664,16 +657,15 @@ AcpiRsStartDependentFunctionsStream ( ******************************************************************************/ ACPI_STATUS -AcpiRsEndDependentFunctionsStream ( +AcpiRsEndDependFnsStream ( ACPI_RESOURCE *LinkedList, UINT8 **OutputBuffer, - UINT32 *BytesConsumed - ) + ACPI_SIZE *BytesConsumed) { UINT8 *Buffer = *OutputBuffer; - FUNCTION_TRACE ("RsEndDependentFunctionsStream"); + ACPI_FUNCTION_TRACE ("RsEndDependFnsStream"); /* @@ -685,7 +677,7 @@ AcpiRsEndDependentFunctionsStream ( /* * Return the number of bytes consumed in this operation */ - *BytesConsumed = POINTER_DIFF (Buffer, *OutputBuffer); + *BytesConsumed = ACPI_PTR_DIFF (Buffer, *OutputBuffer); return_ACPI_STATUS (AE_OK); } diff --git a/sys/contrib/dev/acpica/rsutils.c b/sys/contrib/dev/acpica/rsutils.c index cbe498d1aa43..1b92806d7231 100644 --- a/sys/contrib/dev/acpica/rsutils.c +++ b/sys/contrib/dev/acpica/rsutils.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: rsutils - Utilities for the resource manager - * $Revision: 23 $ + * $Revision: 29 $ * ******************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -123,7 +123,7 @@ #define _COMPONENT ACPI_RESOURCES - MODULE_NAME ("rsutils") + ACPI_MODULE_NAME ("rsutils") /******************************************************************************* @@ -151,15 +151,12 @@ AcpiRsGetPrtMethodData ( { ACPI_OPERAND_OBJECT *RetObj; ACPI_STATUS Status; - UINT32 BufferSpaceNeeded; - FUNCTION_TRACE ("RsGetPrtMethodData"); + ACPI_FUNCTION_TRACE ("RsGetPrtMethodData"); - /* already validated params, so we won't repeat here */ - - BufferSpaceNeeded = RetBuffer->Length; + /* Parameters guaranteed valid by caller */ /* * Execute the method, no parameters @@ -178,35 +175,26 @@ AcpiRsGetPrtMethodData ( return_ACPI_STATUS (AE_TYPE); } - /* - * The return object will be a package, so check the - * parameters. If the return object is not a package, - * then the underlying AML code is corrupt or improperly - * written. + * The return object will be a package, so check the parameters. If the + * return object is not a package, then the underlying AML code is corrupt + * or improperly written. */ if (ACPI_TYPE_PACKAGE != RetObj->Common.Type) { + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "_PRT did not return a Package, returned %s\n", + AcpiUtGetTypeName (RetObj->Common.Type))); Status = AE_AML_OPERAND_TYPE; goto Cleanup; } /* - * Make the call to create a resource linked list from the - * byte stream buffer that comes back from the _CRS method - * execution. - */ - Status = AcpiRsCreatePciRoutingTable (RetObj, RetBuffer->Pointer, - &BufferSpaceNeeded); - - /* - * Tell the user how much of the buffer we have used or is needed - * and return the final status. + * Create a resource linked list from the byte stream buffer that comes + * back from the _CRS method execution. */ - RetBuffer->Length = BufferSpaceNeeded; + Status = AcpiRsCreatePciRoutingTable (RetObj, RetBuffer); - - /* On exit, we must delete the object returned by evaluateObject */ + /* On exit, we must delete the object returned by EvaluateObject */ Cleanup: @@ -240,16 +228,15 @@ AcpiRsGetCrsMethodData ( { ACPI_OPERAND_OBJECT *RetObj; ACPI_STATUS Status; - UINT32 BufferSpaceNeeded = RetBuffer->Length; - FUNCTION_TRACE ("RsGetCrsMethodData"); + ACPI_FUNCTION_TRACE ("RsGetCrsMethodData"); - /* already validated params, so we won't repeat here */ + /* Parameters guaranteed valid by caller */ /* - * Execute the method, no parameters + * Execute the method, no parameters */ Status = AcpiNsEvaluateRelative (Handle, "_CRS", NULL, &RetObj); if (ACPI_FAILURE (Status)) @@ -267,31 +254,24 @@ AcpiRsGetCrsMethodData ( /* * The return object will be a buffer, but check the - * parameters. If the return object is not a buffer, - * then the underlying AML code is corrupt or improperly - * written. + * parameters. If the return object is not a buffer, + * then the underlying AML code is corrupt or improperly + * written. */ if (ACPI_TYPE_BUFFER != RetObj->Common.Type) { + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "_CRS did not return a Buffer, returned %s\n", + AcpiUtGetTypeName (RetObj->Common.Type))); Status = AE_AML_OPERAND_TYPE; goto Cleanup; } /* * Make the call to create a resource linked list from the - * byte stream buffer that comes back from the _CRS method - * execution. - */ - Status = AcpiRsCreateResourceList (RetObj, RetBuffer->Pointer, - &BufferSpaceNeeded); - - - /* - * Tell the user how much of the buffer we have used or is needed - * and return the final status. + * byte stream buffer that comes back from the _CRS method + * execution. */ - RetBuffer->Length = BufferSpaceNeeded; - + Status = AcpiRsCreateResourceList (RetObj, RetBuffer); /* On exit, we must delete the object returned by evaluateObject */ @@ -327,16 +307,15 @@ AcpiRsGetPrsMethodData ( { ACPI_OPERAND_OBJECT *RetObj; ACPI_STATUS Status; - UINT32 BufferSpaceNeeded = RetBuffer->Length; - FUNCTION_TRACE ("RsGetPrsMethodData"); + ACPI_FUNCTION_TRACE ("RsGetPrsMethodData"); - /* already validated params, so we won't repeat here */ + /* Parameters guaranteed valid by caller */ /* - * Execute the method, no parameters + * Execute the method, no parameters */ Status = AcpiNsEvaluateRelative (Handle, "_PRS", NULL, &RetObj); if (ACPI_FAILURE (Status)) @@ -354,30 +333,24 @@ AcpiRsGetPrsMethodData ( /* * The return object will be a buffer, but check the - * parameters. If the return object is not a buffer, - * then the underlying AML code is corrupt or improperly - * written.. + * parameters. If the return object is not a buffer, + * then the underlying AML code is corrupt or improperly + * written.. */ if (ACPI_TYPE_BUFFER != RetObj->Common.Type) { + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "_PRS did not return a Buffer, returned %s\n", + AcpiUtGetTypeName (RetObj->Common.Type))); Status = AE_AML_OPERAND_TYPE; goto Cleanup; } /* * Make the call to create a resource linked list from the - * byte stream buffer that comes back from the _CRS method - * execution. + * byte stream buffer that comes back from the _CRS method + * execution. */ - Status = AcpiRsCreateResourceList (RetObj, RetBuffer->Pointer, - &BufferSpaceNeeded); - - /* - * Tell the user how much of the buffer we have used or is needed - * and return the final status. - */ - RetBuffer->Length = BufferSpaceNeeded; - + Status = AcpiRsCreateResourceList (RetObj, RetBuffer); /* On exit, we must delete the object returned by evaluateObject */ @@ -413,53 +386,26 @@ AcpiRsSetSrsMethodData ( { ACPI_OPERAND_OBJECT *Params[2]; ACPI_STATUS Status; - UINT8 *ByteStream = NULL; - UINT32 BufferSizeNeeded = 0; + ACPI_BUFFER Buffer; - FUNCTION_TRACE ("RsSetSrsMethodData"); + ACPI_FUNCTION_TRACE ("RsSetSrsMethodData"); - /* already validated params, so we won't repeat here */ + /* Parameters guaranteed valid by caller */ /* * The InBuffer parameter will point to a linked list of * resource parameters. It needs to be formatted into a - * byte stream to be sent in as an input parameter. - */ - BufferSizeNeeded = 0; - - /* - * First call is to get the buffer size needed + * byte stream to be sent in as an input parameter to _SRS + * + * Convert the linked list into a byte stream */ - Status = AcpiRsCreateByteStream (InBuffer->Pointer, ByteStream, - &BufferSizeNeeded); - /* - * We expect a return of AE_BUFFER_OVERFLOW - * if not, exit with the error - */ - if (AE_BUFFER_OVERFLOW != Status) - { - return_ACPI_STATUS (Status); - } - - /* - * Allocate the buffer needed - */ - ByteStream = ACPI_MEM_CALLOCATE (BufferSizeNeeded); - if (NULL == ByteStream) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* - * Now call to convert the linked list into a byte stream - */ - Status = AcpiRsCreateByteStream (InBuffer->Pointer, ByteStream, - &BufferSizeNeeded); + Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER; + Status = AcpiRsCreateByteStream (InBuffer->Pointer, &Buffer); if (ACPI_FAILURE (Status)) { - goto Cleanup; + return_ACPI_STATUS (Status); } /* @@ -468,28 +414,26 @@ AcpiRsSetSrsMethodData ( Params[0] = AcpiUtCreateInternalObject (ACPI_TYPE_BUFFER); if (!Params[0]) { - Status = AE_NO_MEMORY; - goto Cleanup; + AcpiOsFree (Buffer.Pointer); + return_ACPI_STATUS (AE_NO_MEMORY); } - Params [1] = NULL; /* - * Set up the parameter object + * Set up the parameter object */ - Params[0]->Buffer.Length = BufferSizeNeeded; - Params[0]->Buffer.Pointer = ByteStream; + Params[0]->Buffer.Length = Buffer.Length; + Params[0]->Buffer.Pointer = Buffer.Pointer; + Params[1] = NULL; /* * Execute the method, no return value */ Status = AcpiNsEvaluateRelative (Handle, "_SRS", Params, NULL); - AcpiUtRemoveReference (Params[0]); /* * Clean up and return the status from AcpiNsEvaluateRelative */ -Cleanup: - + AcpiUtRemoveReference (Params[0]); return_ACPI_STATUS (Status); } diff --git a/sys/contrib/dev/acpica/rsxface.c b/sys/contrib/dev/acpica/rsxface.c index 81c0968754c6..5105e9a18f99 100644 --- a/sys/contrib/dev/acpica/rsxface.c +++ b/sys/contrib/dev/acpica/rsxface.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: rsxface - Public interfaces to the resource manager - * $Revision: 15 $ + * $Revision: 18 $ * ******************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -123,7 +123,7 @@ #include "acresrc.h" #define _COMPONENT ACPI_RESOURCES - MODULE_NAME ("rsxface") + ACPI_MODULE_NAME ("rsxface") /******************************************************************************* @@ -157,7 +157,7 @@ AcpiGetIrqRoutingTable ( ACPI_STATUS Status; - FUNCTION_TRACE ("AcpiGetIrqRoutingTable "); + ACPI_FUNCTION_TRACE ("AcpiGetIrqRoutingTable "); /* @@ -166,13 +166,17 @@ AcpiGetIrqRoutingTable ( * we also need a valid pointer in the buffer. If it's a zero buffer length, * we'll be returning the needed buffer size, so keep going. */ - if ((!DeviceHandle) || - (!RetBuffer) || - ((!RetBuffer->Pointer) && (RetBuffer->Length))) + if (!DeviceHandle) { return_ACPI_STATUS (AE_BAD_PARAMETER); } + Status = AcpiUtValidateBuffer (RetBuffer); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + Status = AcpiRsGetPrtMethodData (DeviceHandle, RetBuffer); return_ACPI_STATUS (Status); } @@ -210,7 +214,7 @@ AcpiGetCurrentResources ( ACPI_STATUS Status; - FUNCTION_TRACE ("AcpiGetCurrentResources"); + ACPI_FUNCTION_TRACE ("AcpiGetCurrentResources"); /* @@ -219,13 +223,17 @@ AcpiGetCurrentResources ( * we also need a valid pointer in the buffer. If it's a zero buffer length, * we'll be returning the needed buffer size, so keep going. */ - if ((!DeviceHandle) || - (!RetBuffer) || - ((RetBuffer->Length) && (!RetBuffer->Pointer))) + if (!DeviceHandle) { return_ACPI_STATUS (AE_BAD_PARAMETER); } + Status = AcpiUtValidateBuffer (RetBuffer); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + Status = AcpiRsGetCrsMethodData (DeviceHandle, RetBuffer); return_ACPI_STATUS (Status); } @@ -260,7 +268,7 @@ AcpiGetPossibleResources ( ACPI_STATUS Status; - FUNCTION_TRACE ("AcpiGetPossibleResources"); + ACPI_FUNCTION_TRACE ("AcpiGetPossibleResources"); /* @@ -269,13 +277,17 @@ AcpiGetPossibleResources ( * we also need a valid pointer in the buffer. If it's a zero buffer length, * we'll be returning the needed buffer size, so keep going. */ - if ((!DeviceHandle) || - (!RetBuffer) || - ((RetBuffer->Length) && (!RetBuffer->Pointer))) + if (!DeviceHandle) { return_ACPI_STATUS (AE_BAD_PARAMETER); } + Status = AcpiUtValidateBuffer (RetBuffer); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + Status = AcpiRsGetPrsMethodData (DeviceHandle, RetBuffer); return_ACPI_STATUS (Status); } @@ -307,7 +319,7 @@ AcpiSetCurrentResources ( ACPI_STATUS Status; - FUNCTION_TRACE ("AcpiSetCurrentResources"); + ACPI_FUNCTION_TRACE ("AcpiSetCurrentResources"); /* diff --git a/sys/contrib/dev/acpica/tbconvrt.c b/sys/contrib/dev/acpica/tbconvrt.c index 3f6a1eafa497..e6eb3f0017e0 100644 --- a/sys/contrib/dev/acpica/tbconvrt.c +++ b/sys/contrib/dev/acpica/tbconvrt.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: tbconvrt - ACPI Table conversion utilities - * $Revision: 28 $ + * $Revision: 36 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -117,13 +117,11 @@ #define __TBCONVRT_C__ #include "acpi.h" -#include "achware.h" #include "actables.h" -#include "actbl.h" #define _COMPONENT ACPI_TABLES - MODULE_NAME ("tbconvrt") + ACPI_MODULE_NAME ("tbconvrt") /******************************************************************************* @@ -146,7 +144,7 @@ AcpiTbGetTableCount ( UINT32 PointerSize; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); #ifndef _IA64 @@ -155,7 +153,6 @@ AcpiTbGetTableCount ( { PointerSize = sizeof (UINT32); } - else #endif { @@ -194,17 +191,17 @@ AcpiTbConvertToXsdt ( XSDT_DESCRIPTOR *NewTable; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); - *NumberOfTables = AcpiTbGetTableCount (AcpiGbl_RSDP, TableInfo->Pointer); + /* Get the number of tables defined in the RSDT or XSDT */ + *NumberOfTables = AcpiTbGetTableCount (AcpiGbl_RSDP, TableInfo->Pointer); /* Compute size of the converted XSDT */ TableSize = (*NumberOfTables * sizeof (UINT64)) + sizeof (ACPI_TABLE_HEADER); - /* Allocate an XSDT */ NewTable = ACPI_MEM_CALLOCATE (TableSize); @@ -215,7 +212,7 @@ AcpiTbConvertToXsdt ( /* Copy the header and set the length */ - MEMCPY (NewTable, TableInfo->Pointer, sizeof (ACPI_TABLE_HEADER)); + ACPI_MEMCPY (NewTable, TableInfo->Pointer, sizeof (ACPI_TABLE_HEADER)); NewTable->Header.Length = TableSize; /* Copy the table pointers */ @@ -224,13 +221,8 @@ AcpiTbConvertToXsdt ( { if (AcpiGbl_RSDP->Revision < 2) { -#ifdef _IA64 - NewTable->TableOffsetEntry[i] = - ((RSDT_DESCRIPTOR_REV071 *) TableInfo->Pointer)->TableOffsetEntry[i]; -#else ACPI_STORE_ADDRESS (NewTable->TableOffsetEntry[i], ((RSDT_DESCRIPTOR_REV1 *) TableInfo->Pointer)->TableOffsetEntry[i]); -#endif } else { @@ -239,12 +231,10 @@ AcpiTbConvertToXsdt ( } } - /* Delete the original table (either mapped or in a buffer) */ AcpiTbDeleteSingleTable (TableInfo); - /* Point the table descriptor to the new table */ TableInfo->Pointer = (ACPI_TABLE_HEADER *) NewTable; @@ -260,12 +250,12 @@ AcpiTbConvertToXsdt ( * * FUNCTION: AcpiTbConvertTableFadt * - * PARAMETERS: + * PARAMETERS: None * - * RETURN: + * RETURN: Status * * DESCRIPTION: - * Converts BIOS supplied 1.0 and 0.71 ACPI FADT to an intermediate + * Converts a BIOS supplied ACPI 1.0 FADT to an intermediate * ACPI 2.0 FADT. If the BIOS supplied a 2.0 FADT then it is simply * copied to the intermediate FADT. The ACPI CA software uses this * intermediate FADT. Thus a significant amount of special #ifdef @@ -277,257 +267,87 @@ AcpiTbConvertToXsdt ( ACPI_STATUS AcpiTbConvertTableFadt (void) { - -#ifdef _IA64 - FADT_DESCRIPTOR_REV071 *FADT71; - UINT8 Pm1AddressSpace; - UINT8 Pm2AddressSpace; - UINT8 PmTimerAddressSpace; - UINT8 Gpe0AddressSpace; - UINT8 Gpe1AddressSpace; -#else FADT_DESCRIPTOR_REV1 *FADT1; -#endif - FADT_DESCRIPTOR_REV2 *FADT2; ACPI_TABLE_DESC *TableDesc; - FUNCTION_TRACE ("TbConvertTableFadt"); - + ACPI_FUNCTION_TRACE ("TbConvertTableFadt"); - /* AcpiGbl_FADT is valid */ - /* Allocate and zero the 2.0 buffer */ + /* + * AcpiGbl_FADT is valid + * Allocate and zero the 2.0 FADT buffer + */ FADT2 = ACPI_MEM_CALLOCATE (sizeof (FADT_DESCRIPTOR_REV2)); if (FADT2 == NULL) { return_ACPI_STATUS (AE_NO_MEMORY); } - - /* The ACPI FADT revision number is FADT2_REVISION_ID=3 */ - /* So, if the current table revision is less than 3 it is type 1.0 or 0.71 */ - - if (AcpiGbl_FADT->header.Revision >= FADT2_REVISION_ID) + /* + * The ACPI FADT revision number is FADT2_REVISION_ID=3 + * So, if the current table revision is less than 3 it is type 1.0 + */ + if (AcpiGbl_FADT->Header.Revision >= FADT2_REVISION_ID) { /* We have an ACPI 2.0 FADT but we must copy it to our local buffer */ *FADT2 = *((FADT_DESCRIPTOR_REV2*) AcpiGbl_FADT); - } - else { - -#ifdef _IA64 - /* - * For the 64-bit case only, a revision ID less than V2.0 means the - * tables are the 0.71 extensions - */ - - /* The BIOS stored FADT should agree with Revision 0.71 */ - - FADT71 = (FADT_DESCRIPTOR_REV071 *) AcpiGbl_FADT; - - /* Copy the table header*/ - - FADT2->header = FADT71->header; - - /* Copy the common fields */ - - FADT2->SciInt = FADT71->SciInt; - FADT2->AcpiEnable = FADT71->AcpiEnable; - FADT2->AcpiDisable = FADT71->AcpiDisable; - FADT2->S4BiosReq = FADT71->S4BiosReq; - FADT2->Plvl2Lat = FADT71->Plvl2Lat; - FADT2->Plvl3Lat = FADT71->Plvl3Lat; - FADT2->DayAlrm = FADT71->DayAlrm; - FADT2->MonAlrm = FADT71->MonAlrm; - FADT2->Century = FADT71->Century; - FADT2->Gpe1Base = FADT71->Gpe1Base; - - /* - * We still use the block length registers even though - * the GAS structure should obsolete them. This is because - * these registers are byte lengths versus the GAS which - * contains a bit width - */ - FADT2->Pm1EvtLen = FADT71->Pm1EvtLen; - FADT2->Pm1CntLen = FADT71->Pm1CntLen; - FADT2->Pm2CntLen = FADT71->Pm2CntLen; - FADT2->PmTmLen = FADT71->PmTmLen; - FADT2->Gpe0BlkLen = FADT71->Gpe0BlkLen; - FADT2->Gpe1BlkLen = FADT71->Gpe1BlkLen; - FADT2->Gpe1Base = FADT71->Gpe1Base; - - /* Copy the existing 0.71 flags to 2.0. The other bits are zero.*/ - - FADT2->WbInvd = FADT71->FlushCash; - FADT2->ProcC1 = FADT71->ProcC1; - FADT2->Plvl2Up = FADT71->Plvl2Up; - FADT2->PwrButton = FADT71->PwrButton; - FADT2->SleepButton = FADT71->SleepButton; - FADT2->FixedRTC = FADT71->FixedRTC; - FADT2->Rtcs4 = FADT71->Rtcs4; - FADT2->TmrValExt = FADT71->TmrValExt; - FADT2->DockCap = FADT71->DockCap; - - - /* We should not use these next two addresses */ - /* Since our buffer is pre-zeroed nothing to do for */ - /* the next three data items in the structure */ - /* FADT2->FirmwareCtrl = 0; */ - /* FADT2->Dsdt = 0; */ - - /* System Interrupt Model isn't used in ACPI 2.0*/ - /* FADT2->Reserved1 = 0; */ - - /* This field is set by the OEM to convey the preferred */ - /* power management profile to OSPM. It doesn't have any*/ - /* 0.71 equivalence. Since we don't know what kind of */ - /* 64-bit system this is, we will pick unspecified. */ - - FADT2->Prefer_PM_Profile = PM_UNSPECIFIED; - - - /* Port address of SMI command port */ - /* We shouldn't use this port because IA64 doesn't */ - /* have or use SMI. It has PMI. */ - - FADT2->SmiCmd = (UINT32)(FADT71->SmiCmd & 0xFFFFFFFF); - - - /* processor performance state control*/ - /* The value OSPM writes to the SMI_CMD register to assume */ - /* processor performance state control responsibility. */ - /* There isn't any equivalence in 0.71 */ - /* Again this should be meaningless for IA64 */ - /* FADT2->PstateCnt = 0; */ - - /* The 32-bit Power management and GPE registers are */ - /* not valid in IA-64 and we are not going to use them */ - /* so leaving them pre-zeroed. */ - - /* Support for the _CST object and C States change notification.*/ - /* This data item hasn't any 0.71 equivalence so leaving it zero.*/ - /* FADT2->CstCnt = 0; */ - - /* number of flush strides that need to be read */ - /* No 0.71 equivalence. Leave pre-zeroed. */ - /* FADT2->FlushSize = 0; */ - - /* Processor's memory cache line width, in bytes */ - /* No 0.71 equivalence. Leave pre-zeroed. */ - /* FADT2->FlushStride = 0; */ - - /* Processor's duty cycle index in processor's P_CNT reg*/ - /* No 0.71 equivalence. Leave pre-zeroed. */ - /* FADT2->DutyOffset = 0; */ - - /* Processor's duty cycle value bit width in P_CNT register.*/ - /* No 0.71 equivalence. Leave pre-zeroed. */ - /* FADT2->DutyWidth = 0; */ - - - /* Since there isn't any equivalence in 0.71 */ - /* and since BigSur had to support legacy */ - - FADT2->IapcBootArch = BAF_LEGACY_DEVICES; - - /* Copy to ACPI 2.0 64-BIT Extended Addresses */ - - FADT2->XFirmwareCtrl = FADT71->FirmwareCtrl; - FADT2->XDsdt = FADT71->Dsdt; - - - /* Extract the address space IDs */ - - Pm1AddressSpace = (UINT8)((FADT71->AddressSpace & PM1_BLK_ADDRESS_SPACE) >> 1); - Pm2AddressSpace = (UINT8)((FADT71->AddressSpace & PM2_CNT_BLK_ADDRESS_SPACE) >> 2); - PmTimerAddressSpace = (UINT8)((FADT71->AddressSpace & PM_TMR_BLK_ADDRESS_SPACE) >> 3); - Gpe0AddressSpace = (UINT8)((FADT71->AddressSpace & GPE0_BLK_ADDRESS_SPACE) >> 4); - Gpe1AddressSpace = (UINT8)((FADT71->AddressSpace & GPE1_BLK_ADDRESS_SPACE) >> 5); - - /* - * Convert the 0.71 (non-GAS style) Block addresses to V2.0 GAS structures, - * in this order: - * - * PM 1A Events - * PM 1B Events - * PM 1A Control - * PM 1B Control - * PM 2 Control - * PM Timer Control - * GPE Block 0 - * GPE Block 1 - */ - - ASL_BUILD_GAS_FROM_ENTRY (FADT2->XPm1aEvtBlk, FADT71->Pm1EvtLen, FADT71->Pm1aEvtBlk, Pm1AddressSpace); - ASL_BUILD_GAS_FROM_ENTRY (FADT2->XPm1bEvtBlk, FADT71->Pm1EvtLen, FADT71->Pm1bEvtBlk, Pm1AddressSpace); - ASL_BUILD_GAS_FROM_ENTRY (FADT2->XPm1aCntBlk, FADT71->Pm1CntLen, FADT71->Pm1aCntBlk, Pm1AddressSpace); - ASL_BUILD_GAS_FROM_ENTRY (FADT2->XPm1bCntBlk, FADT71->Pm1CntLen, FADT71->Pm1bCntBlk, Pm1AddressSpace); - ASL_BUILD_GAS_FROM_ENTRY (FADT2->XPm2CntBlk, FADT71->Pm2CntLen, FADT71->Pm2CntBlk, Pm2AddressSpace); - ASL_BUILD_GAS_FROM_ENTRY (FADT2->XPmTmrBlk, FADT71->PmTmLen, FADT71->PmTmrBlk, PmTimerAddressSpace); - ASL_BUILD_GAS_FROM_ENTRY (FADT2->XGpe0Blk, FADT71->Gpe0BlkLen, FADT71->Gpe0Blk, Gpe0AddressSpace); - ASL_BUILD_GAS_FROM_ENTRY (FADT2->XGpe1Blk, FADT71->Gpe1BlkLen, FADT71->Gpe1Blk, Gpe1AddressSpace); - -#else - /* ACPI 1.0 FACS */ - /* The BIOS stored FADT should agree with Revision 1.0 */ FADT1 = (FADT_DESCRIPTOR_REV1*) AcpiGbl_FADT; /* - * Copy the table header and the common part of the tables - * The 2.0 table is an extension of the 1.0 table, so the - * entire 1.0 table can be copied first, then expand some - * fields to 64 bits. + * Copy the table header and the common part of the tables. + * + * The 2.0 table is an extension of the 1.0 table, so the entire 1.0 + * table can be copied first, then expand some fields to 64 bits. */ - MEMCPY (FADT2, FADT1, sizeof (FADT_DESCRIPTOR_REV1)); - + ACPI_MEMCPY (FADT2, FADT1, sizeof (FADT_DESCRIPTOR_REV1)); /* Convert table pointers to 64-bit fields */ ACPI_STORE_ADDRESS (FADT2->XFirmwareCtrl, FADT1->FirmwareCtrl); ACPI_STORE_ADDRESS (FADT2->XDsdt, FADT1->Dsdt); - /* System Interrupt Model isn't used in ACPI 2.0*/ - /* FADT2->Reserved1 = 0; */ - - /* This field is set by the OEM to convey the preferred */ - /* power management profile to OSPM. It doesn't have any*/ - /* 1.0 equivalence. Since we don't know what kind of */ - /* 32-bit system this is, we will pick unspecified. */ + /* + * System Interrupt Model isn't used in ACPI 2.0 (FADT2->Reserved1 = 0;) + */ + /* + * This field is set by the OEM to convey the preferred power management + * profile to OSPM. It doesn't have any 1.0 equivalence. Since we don't + * know what kind of 32-bit system this is, we will use "unspecified". + */ FADT2->Prefer_PM_Profile = PM_UNSPECIFIED; - - /* Processor Performance State Control. This is the value */ - /* OSPM writes to the SMI_CMD register to assume processor */ - /* performance state control responsibility. There isn't */ - /* any equivalence in 1.0. So leave it zeroed. */ - + /* + * Processor Performance State Control. This is the value OSPM writes to + * the SMI_CMD register to assume processor performance state control + * responsibility. There isn't any equivalence in 1.0, leave it zeroed. + */ FADT2->PstateCnt = 0; - - /* Support for the _CST object and C States change notification.*/ - /* This data item hasn't any 1.0 equivalence so leaving it zero.*/ - + /* + * Support for the _CST object and C States change notification. + * This data item hasn't any 1.0 equivalence so leave it zero. + */ FADT2->CstCnt = 0; - - /* Since there isn't any equivalence in 1.0 and since it */ - /* is highly likely that a 1.0 system has legacy support. */ - + /* + * Since there isn't any equivalence in 1.0 and since it highly likely + * that a 1.0 system has legacy support. + */ FADT2->IapcBootArch = BAF_LEGACY_DEVICES; - /* - * Convert the V1.0 Block addresses to V2.0 GAS structures + * Convert the V1.0 block addresses to V2.0 GAS structures * in this order: * * PM 1A Events @@ -539,7 +359,6 @@ AcpiTbConvertTableFadt (void) * GPE Block 0 * GPE Block 1 */ - ASL_BUILD_GAS_FROM_V1_ENTRY (FADT2->XPm1aEvtBlk, FADT1->Pm1EvtLen, FADT1->Pm1aEvtBlk); ASL_BUILD_GAS_FROM_V1_ENTRY (FADT2->XPm1bEvtBlk, FADT1->Pm1EvtLen, FADT1->Pm1bEvtBlk); ASL_BUILD_GAS_FROM_V1_ENTRY (FADT2->XPm1aCntBlk, FADT1->Pm1CntLen, FADT1->Pm1aCntBlk); @@ -548,23 +367,19 @@ AcpiTbConvertTableFadt (void) ASL_BUILD_GAS_FROM_V1_ENTRY (FADT2->XPmTmrBlk, FADT1->PmTmLen, FADT1->PmTmrBlk); ASL_BUILD_GAS_FROM_V1_ENTRY (FADT2->XGpe0Blk, FADT1->Gpe0BlkLen, FADT1->Gpe0Blk); ASL_BUILD_GAS_FROM_V1_ENTRY (FADT2->XGpe1Blk, FADT1->Gpe1BlkLen, FADT1->Gpe1Blk); -#endif } - /* * Global FADT pointer will point to the common V2.0 FADT */ AcpiGbl_FADT = FADT2; - AcpiGbl_FADT->header.Length = sizeof (FADT_DESCRIPTOR); - + AcpiGbl_FADT->Header.Length = sizeof (FADT_DESCRIPTOR); /* Free the original table */ TableDesc = &AcpiGbl_AcpiTables[ACPI_TABLE_FADT]; AcpiTbDeleteSingleTable (TableDesc); - /* Install the new table */ TableDesc->Pointer = (ACPI_TABLE_HEADER *) AcpiGbl_FADT; @@ -572,14 +387,12 @@ AcpiTbConvertTableFadt (void) TableDesc->Allocation = ACPI_MEM_ALLOCATED; TableDesc->Length = sizeof (FADT_DESCRIPTOR_REV2); - /* Dump the entire FADT */ ACPI_DEBUG_PRINT ((ACPI_DB_TABLES, "Hex dump of common internal FADT, size %d (%X)\n", - AcpiGbl_FADT->header.Length, AcpiGbl_FADT->header.Length)); - DUMP_BUFFER ((UINT8 *) (AcpiGbl_FADT), AcpiGbl_FADT->header.Length); - + AcpiGbl_FADT->Header.Length, AcpiGbl_FADT->Header.Length)); + ACPI_DUMP_BUFFER ((UINT8 *) (AcpiGbl_FADT), AcpiGbl_FADT->Header.Length); return_ACPI_STATUS (AE_OK); } @@ -589,11 +402,12 @@ AcpiTbConvertTableFadt (void) * * FUNCTION: AcpiTbConvertTableFacs * - * PARAMETERS: + * PARAMETERS: TableInfo - Info for currently installad FACS * - * RETURN: + * RETURN: Status * - * DESCRIPTION: + * DESCRIPTION: Convert ACPI 1.0 and ACPI 2.0 FACS to a common internal + * table format. * ******************************************************************************/ @@ -601,70 +415,36 @@ ACPI_STATUS AcpiTbBuildCommonFacs ( ACPI_TABLE_DESC *TableInfo) { - ACPI_COMMON_FACS *CommonFacs; - -#ifdef _IA64 - FACS_DESCRIPTOR_REV071 *FACS71; -#else FACS_DESCRIPTOR_REV1 *FACS1; -#endif - FACS_DESCRIPTOR_REV2 *FACS2; - FUNCTION_TRACE ("TbBuildCommonFacs"); - - - /* Allocate a common FACS */ - - CommonFacs = ACPI_MEM_CALLOCATE (sizeof (ACPI_COMMON_FACS)); - if (!CommonFacs) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } + ACPI_FUNCTION_TRACE ("TbBuildCommonFacs"); /* Copy fields to the new FACS */ if (AcpiGbl_RSDP->Revision < 2) { -#ifdef _IA64 - /* 0.71 FACS */ - - FACS71 = (FACS_DESCRIPTOR_REV071 *) AcpiGbl_FACS; - - CommonFacs->GlobalLock = (UINT32 *) &(FACS71->GlobalLock); - CommonFacs->FirmwareWakingVector = &FACS71->FirmwareWakingVector; - CommonFacs->VectorWidth = 64; -#else /* ACPI 1.0 FACS */ FACS1 = (FACS_DESCRIPTOR_REV1 *) AcpiGbl_FACS; - CommonFacs->GlobalLock = &(FACS1->GlobalLock); - CommonFacs->FirmwareWakingVector = (UINT64 *) &FACS1->FirmwareWakingVector; - CommonFacs->VectorWidth = 32; - -#endif + AcpiGbl_CommonFACS.GlobalLock = &(FACS1->GlobalLock); + AcpiGbl_CommonFACS.FirmwareWakingVector = (UINT64 *) &FACS1->FirmwareWakingVector; + AcpiGbl_CommonFACS.VectorWidth = 32; } - else { /* ACPI 2.0 FACS */ FACS2 = (FACS_DESCRIPTOR_REV2 *) AcpiGbl_FACS; - CommonFacs->GlobalLock = &(FACS2->GlobalLock); - CommonFacs->FirmwareWakingVector = &FACS2->XFirmwareWakingVector; - CommonFacs->VectorWidth = 64; + AcpiGbl_CommonFACS.GlobalLock = &(FACS2->GlobalLock); + AcpiGbl_CommonFACS.FirmwareWakingVector = &FACS2->XFirmwareWakingVector; + AcpiGbl_CommonFACS.VectorWidth = 64; } - - /* Set the global FACS pointer to point to the common FACS */ - - - AcpiGbl_FACS = CommonFacs; - return_ACPI_STATUS (AE_OK); } diff --git a/sys/contrib/dev/acpica/tbget.c b/sys/contrib/dev/acpica/tbget.c index 4e0d7d929166..af12874811b7 100644 --- a/sys/contrib/dev/acpica/tbget.c +++ b/sys/contrib/dev/acpica/tbget.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: tbget - ACPI Table get* routines - * $Revision: 57 $ + * $Revision: 63 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -117,14 +117,11 @@ #define __TBGET_C__ #include "acpi.h" -#include "achware.h" #include "actables.h" #define _COMPONENT ACPI_TABLES - MODULE_NAME ("tbget") - -#define RSDP_CHECKSUM_LENGTH 20 + ACPI_MODULE_NAME ("tbget") /******************************************************************************* @@ -152,7 +149,7 @@ AcpiTbGetTablePtr ( UINT32 i; - FUNCTION_TRACE ("TbGetTablePtr"); + ACPI_FUNCTION_TRACE ("TbGetTablePtr"); if (!AcpiGbl_DSDT) @@ -165,7 +162,6 @@ AcpiTbGetTablePtr ( return_ACPI_STATUS (AE_BAD_PARAMETER); } - /* * For all table types (Single/Multiple), the first * instance is always in the list head. @@ -180,7 +176,6 @@ AcpiTbGetTablePtr ( return_ACPI_STATUS (AE_OK); } - /* * Check for instance out of range */ @@ -238,7 +233,7 @@ AcpiTbGetTable ( ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE ("TbGetTable"); + ACPI_FUNCTION_TRACE ("TbGetTable"); if (!TableInfo) @@ -246,7 +241,6 @@ AcpiTbGetTable ( return_ACPI_STATUS (AE_BAD_PARAMETER); } - if (BufferPtr) { /* @@ -272,14 +266,13 @@ AcpiTbGetTable ( /* Copy the entire table (including header) to the local buffer */ Size = TableHeader->Length; - MEMCPY (FullTable, BufferPtr, Size); + ACPI_MEMCPY (FullTable, BufferPtr, Size); /* Save allocation type */ Allocation = ACPI_MEM_ALLOCATED; } - /* * Not reading from a buffer, just map the table's physical memory * into our address space. @@ -299,7 +292,6 @@ AcpiTbGetTable ( Allocation = ACPI_MEM_MAPPED; } - /* Return values */ TableInfo->Pointer = FullTable; @@ -335,7 +327,7 @@ AcpiTbGetAllTables ( ACPI_TABLE_DESC TableInfo; - FUNCTION_TRACE ("TbGetAllTables"); + ACPI_FUNCTION_TRACE ("TbGetAllTables"); ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Number of tables: %d\n", NumberOfTables)); @@ -349,7 +341,7 @@ AcpiTbGetAllTables ( { /* Clear the TableInfo each time */ - MEMSET (&TableInfo, 0, sizeof (ACPI_TABLE_DESC)); + ACPI_MEMSET (&TableInfo, 0, sizeof (ACPI_TABLE_DESC)); /* Get the table via the XSDT */ @@ -385,7 +377,6 @@ AcpiTbGetAllTables ( } } - /* * Convert the FADT to a common format. This allows earlier revisions of the * table to coexist with newer versions, using common access code. @@ -396,7 +387,6 @@ AcpiTbGetAllTables ( return_ACPI_STATUS (Status); } - /* * Get the minimum set of ACPI tables, namely: * @@ -434,7 +424,6 @@ AcpiTbGetAllTables ( return_ACPI_STATUS (Status); } - /* * Get the DSDT (We know that the FADT is valid now) */ @@ -456,19 +445,18 @@ AcpiTbGetAllTables ( /* Dump the DSDT Header */ ACPI_DEBUG_PRINT ((ACPI_DB_TABLES, "Hex dump of DSDT Header:\n")); - DUMP_BUFFER ((UINT8 *) AcpiGbl_DSDT, sizeof (ACPI_TABLE_HEADER)); + ACPI_DUMP_BUFFER ((UINT8 *) AcpiGbl_DSDT, sizeof (ACPI_TABLE_HEADER)); /* Dump the entire DSDT */ ACPI_DEBUG_PRINT ((ACPI_DB_TABLES, "Hex dump of DSDT (After header), size %d (%x)\n", AcpiGbl_DSDT->Length, AcpiGbl_DSDT->Length)); - DUMP_BUFFER ((UINT8 *) (AcpiGbl_DSDT + 1), AcpiGbl_DSDT->Length); + ACPI_DUMP_BUFFER ((UINT8 *) (AcpiGbl_DSDT + 1), AcpiGbl_DSDT->Length); /* Always delete the RSDP mapping, we are done with it */ AcpiTbDeleteAcpiTable (ACPI_TABLE_RSDP); - return_ACPI_STATUS (Status); } @@ -491,17 +479,17 @@ AcpiTbVerifyRsdp ( { ACPI_TABLE_DESC TableInfo; ACPI_STATUS Status; - UINT8 *TablePtr; + RSDP_DESCRIPTOR *Rsdp; - FUNCTION_TRACE ("TbVerifyRsdp"); + ACPI_FUNCTION_TRACE ("TbVerifyRsdp"); /* * Obtain access to the RSDP structure */ Status = AcpiOsMapMemory (RsdpPhysicalAddress, sizeof (RSDP_DESCRIPTOR), - (void **) &TablePtr); + (void **) &Rsdp); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -510,7 +498,7 @@ AcpiTbVerifyRsdp ( /* * The signature and checksum must both be correct */ - if (STRNCMP ((NATIVE_CHAR *) TablePtr, RSDP_SIG, sizeof (RSDP_SIG)-1) != 0) + if (ACPI_STRNCMP ((NATIVE_CHAR *) Rsdp, RSDP_SIG, sizeof (RSDP_SIG)-1) != 0) { /* Nope, BAD Signature */ @@ -518,22 +506,32 @@ AcpiTbVerifyRsdp ( goto Cleanup; } - if (AcpiTbChecksum (TablePtr, RSDP_CHECKSUM_LENGTH) != 0) - { - /* Nope, BAD Checksum */ + /* Check the standard checksum */ + if (AcpiTbChecksum (Rsdp, ACPI_RSDP_CHECKSUM_LENGTH) != 0) + { Status = AE_BAD_CHECKSUM; goto Cleanup; } - /* TBD: Check extended checksum if table version >= 2 */ + /* Check extended checksum if table version >= 2 */ + + if (Rsdp->Revision >= 2) + { + if (AcpiTbChecksum (Rsdp, ACPI_RSDP_XCHECKSUM_LENGTH) != 0) + { + Status = AE_BAD_CHECKSUM; + goto Cleanup; + } + } + /* The RSDP supplied is OK */ - TableInfo.Pointer = (ACPI_TABLE_HEADER *) TablePtr; + TableInfo.Pointer = (ACPI_TABLE_HEADER *) Rsdp; TableInfo.Length = sizeof (RSDP_DESCRIPTOR); TableInfo.Allocation = ACPI_MEM_MAPPED; - TableInfo.BasePointer = TablePtr; + TableInfo.BasePointer = Rsdp; /* Save the table pointers and allocation info */ @@ -543,7 +541,6 @@ AcpiTbVerifyRsdp ( goto Cleanup; } - /* Save the RSDP in a global for easy access */ AcpiGbl_RSDP = (RSDP_DESCRIPTOR *) TableInfo.Pointer; @@ -553,7 +550,7 @@ AcpiTbVerifyRsdp ( /* Error exit */ Cleanup: - AcpiOsUnmapMemory (TablePtr, sizeof (RSDP_DESCRIPTOR)); + AcpiOsUnmapMemory (Rsdp, sizeof (RSDP_DESCRIPTOR)); return_ACPI_STATUS (Status); } @@ -577,7 +574,7 @@ AcpiTbGetRsdtAddress (void) ACPI_PHYSICAL_ADDRESS PhysicalAddress; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); /* @@ -586,14 +583,8 @@ AcpiTbGetRsdtAddress (void) */ if (AcpiGbl_RSDP->Revision < 2) { -#ifdef _IA64 - /* 0.71 RSDP has 64bit Rsdt address field */ - PhysicalAddress = ((RSDP_DESCRIPTOR_REV071 *)AcpiGbl_RSDP)->RsdtPhysicalAddress; -#else PhysicalAddress = (ACPI_PHYSICAL_ADDRESS) AcpiGbl_RSDP->RsdtPhysicalAddress; -#endif } - else { PhysicalAddress = (ACPI_PHYSICAL_ADDRESS) @@ -623,32 +614,31 @@ AcpiTbValidateRsdt ( UINT32 NoMatch; - PROC_NAME ("TbValidateRsdt"); + ACPI_FUNCTION_NAME ("TbValidateRsdt"); /* * For RSDP revision 0 or 1, we use the RSDT. - * For RSDP revision 2 (and above), we use the XSDT + * For RSDP revision 2 and above, we use the XSDT */ if (AcpiGbl_RSDP->Revision < 2) { - NoMatch = STRNCMP ((char *) TablePtr, RSDT_SIG, + NoMatch = ACPI_STRNCMP ((char *) TablePtr, RSDT_SIG, sizeof (RSDT_SIG) -1); } else { - NoMatch = STRNCMP ((char *) TablePtr, XSDT_SIG, + NoMatch = ACPI_STRNCMP ((char *) TablePtr, XSDT_SIG, sizeof (XSDT_SIG) -1); } - if (NoMatch) { /* Invalid RSDT or XSDT signature */ - REPORT_ERROR (("Invalid signature where RSDP indicates RSDT/XSDT should be located\n")); + ACPI_REPORT_ERROR (("Invalid signature where RSDP indicates RSDT/XSDT should be located\n")); - DUMP_BUFFER (AcpiGbl_RSDP, 20); + ACPI_DUMP_BUFFER (AcpiGbl_RSDP, 20); ACPI_DEBUG_PRINT_RAW ((ACPI_DB_ERROR, "RSDT/XSDT signature at %X is invalid\n", @@ -685,7 +675,7 @@ AcpiTbGetTablePointer ( ACPI_STATUS Status; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); if ((Flags & ACPI_MEMORY_MODE) == ACPI_LOGICAL_ADDRESSING) @@ -693,12 +683,10 @@ AcpiTbGetTablePointer ( *Size = SIZE_IN_HEADER; Status = AcpiTbMapAcpiTable (PhysicalAddress, Size, TablePtr); } - else { *Size = 0; - *TablePtr = (ACPI_TABLE_HEADER *) (ACPI_TBLPTR) PhysicalAddress; - + *TablePtr = ACPI_PHYSADDR_TO_PTR (PhysicalAddress); Status = AE_OK; } @@ -727,7 +715,7 @@ AcpiTbGetTableRsdt ( ACPI_PHYSICAL_ADDRESS PhysicalAddress; - FUNCTION_TRACE ("TbGetTableRsdt"); + ACPI_FUNCTION_TRACE ("TbGetTableRsdt"); /* @@ -735,13 +723,12 @@ AcpiTbGetTableRsdt ( */ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "RSDP located at %p, RSDT physical=%8.8X%8.8X \n", - AcpiGbl_RSDP, HIDWORD(AcpiGbl_RSDP->RsdtPhysicalAddress), - LODWORD(AcpiGbl_RSDP->RsdtPhysicalAddress))); - + AcpiGbl_RSDP, + ACPI_HIDWORD (AcpiGbl_RSDP->RsdtPhysicalAddress), + ACPI_LODWORD (AcpiGbl_RSDP->RsdtPhysicalAddress))); PhysicalAddress = AcpiTbGetRsdtAddress (); - /* Get the RSDT/XSDT */ Status = AcpiTbGetTable (PhysicalAddress, NULL, &TableInfo); @@ -752,7 +739,6 @@ AcpiTbGetTableRsdt ( return_ACPI_STATUS (Status); } - /* Check the RSDT or XSDT signature */ Status = AcpiTbValidateRsdt (TableInfo.Pointer); @@ -761,14 +747,12 @@ AcpiTbGetTableRsdt ( return_ACPI_STATUS (Status); } - /* * Valid RSDT signature, verify the checksum. If it fails, just * print a warning and ignore it. */ Status = AcpiTbVerifyTableChecksum (TableInfo.Pointer); - /* Convert and/or copy to an XSDT structure */ Status = AcpiTbConvertToXsdt (&TableInfo, NumberOfTables); @@ -788,7 +772,6 @@ AcpiTbGetTableRsdt ( AcpiGbl_XSDT = (XSDT_DESCRIPTOR *) TableInfo.Pointer; ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "XSDT located at %p\n", AcpiGbl_XSDT)); - return_ACPI_STATUS (Status); } @@ -821,7 +804,7 @@ AcpiTbGetTableFacs ( ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE ("TbGetTableFacs"); + ACPI_FUNCTION_TRACE ("TbGetTableFacs"); /* Must have a valid FADT pointer */ @@ -844,13 +827,12 @@ AcpiTbGetTableFacs ( return_ACPI_STATUS (AE_NO_MEMORY); } - MEMCPY (TablePtr, BufferPtr, Size); + ACPI_MEMCPY (TablePtr, BufferPtr, Size); /* Save allocation type */ Allocation = ACPI_MEM_ALLOCATED; } - else { /* Just map the physical memory to our address space */ @@ -867,7 +849,6 @@ AcpiTbGetTableFacs ( Allocation = ACPI_MEM_MAPPED; } - /* Return values */ TableInfo->Pointer = TablePtr; diff --git a/sys/contrib/dev/acpica/tbinstal.c b/sys/contrib/dev/acpica/tbinstal.c index a7c889c524f9..7198a0c93d69 100644 --- a/sys/contrib/dev/acpica/tbinstal.c +++ b/sys/contrib/dev/acpica/tbinstal.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: tbinstal - ACPI table installation and removal - * $Revision: 47 $ + * $Revision: 55 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -118,12 +118,62 @@ #define __TBINSTAL_C__ #include "acpi.h" -#include "achware.h" #include "actables.h" #define _COMPONENT ACPI_TABLES - MODULE_NAME ("tbinstal") + ACPI_MODULE_NAME ("tbinstal") + + +/******************************************************************************* + * + * FUNCTION: AcpiTbMatchSignature + * + * PARAMETERS: Signature - Table signature to match + * TableInfo - Return data + * + * RETURN: Status + * + * DESCRIPTION: Compare signature against the list of "ACPI-subsystem-owned" + * tables (DSDT/FADT/SSDT, etc.) Returns the TableTypeID on match. + * + ******************************************************************************/ + +ACPI_STATUS +AcpiTbMatchSignature ( + NATIVE_CHAR *Signature, + ACPI_TABLE_DESC *TableInfo) +{ + NATIVE_UINT i; + + + ACPI_FUNCTION_TRACE ("TbMatchSignature"); + + + /* + * Search for a signature match among the known table types + */ + for (i = 0; i < NUM_ACPI_TABLES; i++) + { + if (!ACPI_STRNCMP (Signature, AcpiGbl_AcpiTableData[i].Signature, + AcpiGbl_AcpiTableData[i].SigLength)) + { + /* Found a signature match, return index if requested */ + + if (TableInfo) + { + TableInfo->Type = (UINT8) i; + } + + ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "ACPI Signature match %4.4s\n", + (char *) AcpiGbl_AcpiTableData[i].Signature)); + + return_ACPI_STATUS (AE_OK); + } + } + + return_ACPI_STATUS (AE_TABLE_NOT_SUPPORTED); +} /******************************************************************************* @@ -148,7 +198,7 @@ AcpiTbInstallTable ( { ACPI_STATUS Status; - FUNCTION_TRACE ("TbInstallTable"); + ACPI_FUNCTION_TRACE ("TbInstallTable"); /* @@ -163,7 +213,11 @@ AcpiTbInstallTable ( /* Lock tables while installing */ - AcpiUtAcquireMutex (ACPI_MTX_TABLES); + Status = AcpiUtAcquireMutex (ACPI_MTX_TABLES); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } /* Install the table into the global data structure */ @@ -172,7 +226,7 @@ AcpiTbInstallTable ( ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "%s located at %p\n", AcpiGbl_AcpiTableData[TableInfo->Type].Name, TableInfo->Pointer)); - AcpiUtReleaseMutex (ACPI_MTX_TABLES); + (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); return_ACPI_STATUS (Status); } @@ -205,11 +259,9 @@ AcpiTbRecognizeTable ( { ACPI_TABLE_HEADER *TableHeader; ACPI_STATUS Status; - ACPI_TABLE_TYPE TableType = 0; - UINT32 i; - FUNCTION_TRACE ("TbRecognizeTable"); + ACPI_FUNCTION_TRACE ("TbRecognizeTable"); /* Ensure that we have a valid table pointer */ @@ -221,56 +273,35 @@ AcpiTbRecognizeTable ( } /* - * Search for a signature match among the known table types - * Start at index one -> Skip the RSDP + * We only "recognize" a limited number of ACPI tables -- namely, the + * ones that are used by the subsystem (DSDT, FADT, etc.) + * + * An AE_NOT_FOUND means that the table was not recognized. + * This can be any one of many valid ACPI tables, it just isn't one of + * the tables that is consumed by the core subsystem */ - Status = AE_SUPPORT; - for (i = 1; i < NUM_ACPI_TABLES; i++) + Status = AcpiTbMatchSignature (TableHeader->Signature, TableInfo); + if (ACPI_SUCCESS (Status)) { - if (!STRNCMP (TableHeader->Signature, - AcpiGbl_AcpiTableData[i].Signature, - AcpiGbl_AcpiTableData[i].SigLength)) - { - /* - * Found a signature match, get the pertinent info from the - * TableData structure - */ - TableType = i; - Status = AcpiGbl_AcpiTableData[i].Status; - - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Found %4.4s\n", - (char*)AcpiGbl_AcpiTableData[i].Signature)); - break; - } - } - - /* Return the table type and length via the info struct */ - - TableInfo->Type = (UINT8) TableType; - TableInfo->Length = TableHeader->Length; + /* Return the table type and length via the info struct */ + TableInfo->Length = TableHeader->Length; - /* - * Validate checksum for _most_ tables, - * even the ones whose signature we don't recognize - */ - if (TableType != ACPI_TABLE_FACS) - { - /* But don't abort if the checksum is wrong */ - /* TBD: [Future] make this a configuration option? */ - - AcpiTbVerifyTableChecksum (TableHeader); - } + /* + * Validate checksum for _most_ tables, + * even the ones whose signature we don't recognize + */ + if (TableInfo->Type != ACPI_TABLE_FACS) + { + Status = AcpiTbVerifyTableChecksum (TableHeader); + if (ACPI_FAILURE (Status) && + (!ACPI_CHECKSUM_ABORT)) + { + /* Ignore the error if configuration says so */ - /* - * An AE_SUPPORT means that the table was not recognized. - * We basically ignore this; just print a debug message - */ - if (Status == AE_SUPPORT) - { - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "Unsupported table %s (Type %X) was found and discarded\n", - AcpiGbl_AcpiTableData[TableType].Name, TableType)); + Status = AE_OK; + } + } } return_ACPI_STATUS (Status); @@ -299,7 +330,7 @@ AcpiTbInitTableDescriptor ( ACPI_TABLE_DESC *TableDesc; - FUNCTION_TRACE_U32 ("TbInitTableDescriptor", TableType); + ACPI_FUNCTION_TRACE_U32 ("TbInitTableDescriptor", TableType); /* * Install the table into the global data structure @@ -307,13 +338,12 @@ AcpiTbInitTableDescriptor ( ListHead = &AcpiGbl_AcpiTables[TableType]; TableDesc = ListHead; - /* * Two major types of tables: 1) Only one instance is allowed. This * includes most ACPI tables such as the DSDT. 2) Multiple instances of * the table are allowed. This includes SSDT and PSDTs. */ - if (IS_SINGLE_TABLE (AcpiGbl_AcpiTableData[TableType].Flags)) + if (ACPI_IS_SINGLE_TABLE (AcpiGbl_AcpiTableData[TableType].Flags)) { /* * Only one table allowed, and a table has alread been installed @@ -325,9 +355,9 @@ AcpiTbInitTableDescriptor ( } TableDesc->Count = 1; + TableDesc->Prev = NULL; + TableDesc->Next = NULL; } - - else { /* @@ -357,16 +387,15 @@ AcpiTbInitTableDescriptor ( ListHead->Prev = TableDesc; } - else { TableDesc->Count = 1; } } - /* Common initialization of the table descriptor */ + TableDesc->Type = TableInfo->Type; TableDesc->Pointer = TableInfo->Pointer; TableDesc->BasePointer = TableInfo->BasePointer; TableDesc->Length = TableInfo->Length; @@ -374,7 +403,7 @@ AcpiTbInitTableDescriptor ( TableDesc->AmlStart = (UINT8 *) (TableDesc->Pointer + 1), TableDesc->AmlLength = (UINT32) (TableDesc->Length - (UINT32) sizeof (ACPI_TABLE_HEADER)); - TableDesc->TableId = AcpiUtAllocateOwnerId (OWNER_TYPE_TABLE); + TableDesc->TableId = AcpiUtAllocateOwnerId (ACPI_OWNER_TYPE_TABLE); TableDesc->LoadedIntoNamespace = FALSE; /* @@ -386,7 +415,6 @@ AcpiTbInitTableDescriptor ( *(AcpiGbl_AcpiTableData[TableType].GlobalPtr) = TableInfo->Pointer; } - /* Return Data */ TableInfo->TableId = TableDesc->TableId; @@ -422,7 +450,6 @@ AcpiTbDeleteAcpiTables (void) { AcpiTbDeleteAcpiTable (Type); } - } @@ -443,7 +470,8 @@ void AcpiTbDeleteAcpiTable ( ACPI_TABLE_TYPE Type) { - FUNCTION_TRACE_U32 ("TbDeleteAcpiTable", Type); + + ACPI_FUNCTION_TRACE_U32 ("TbDeleteAcpiTable", Type); if (Type > ACPI_TABLE_MAX) @@ -451,14 +479,15 @@ AcpiTbDeleteAcpiTable ( return_VOID; } - - AcpiUtAcquireMutex (ACPI_MTX_TABLES); + if (ACPI_FAILURE (AcpiUtAcquireMutex (ACPI_MTX_TABLES))) + { + return; + } /* Free the table */ AcpiTbFreeAcpiTablesOfType (&AcpiGbl_AcpiTables[Type]); - /* Clear the appropriate "typed" global table pointer */ switch (Type) @@ -489,8 +518,7 @@ AcpiTbDeleteAcpiTable ( break; } - AcpiUtReleaseMutex (ACPI_MTX_TABLES); - + (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); return_VOID; } @@ -517,7 +545,7 @@ AcpiTbFreeAcpiTablesOfType ( UINT32 i; - FUNCTION_TRACE_PTR ("TbFreeAcpiTablesOfType", ListHead); + ACPI_FUNCTION_TRACE_PTR ("TbFreeAcpiTablesOfType", ListHead); /* Get the head of the list */ @@ -567,17 +595,14 @@ AcpiTbDeleteSingleTable ( switch (TableDesc->Allocation) { - case ACPI_MEM_NOT_ALLOCATED: break; - case ACPI_MEM_ALLOCATED: ACPI_MEM_FREE (TableDesc->BasePointer); break; - case ACPI_MEM_MAPPED: AcpiOsUnmapMemory (TableDesc->BasePointer, TableDesc->Length); @@ -608,7 +633,7 @@ AcpiTbUninstallTable ( ACPI_TABLE_DESC *NextDesc; - FUNCTION_TRACE_PTR ("TbDeleteSingleTable", TableDesc); + ACPI_FUNCTION_TRACE_PTR ("TbDeleteSingleTable", TableDesc); if (!TableDesc) @@ -616,7 +641,6 @@ AcpiTbUninstallTable ( return_PTR (NULL); } - /* Unlink the descriptor */ if (TableDesc->Prev) @@ -629,17 +653,14 @@ AcpiTbUninstallTable ( TableDesc->Next->Prev = TableDesc->Prev; } - /* Free the memory allocated for the table itself */ AcpiTbDeleteSingleTable (TableDesc); - /* Free the table descriptor (Don't delete the list head, tho) */ if ((TableDesc->Prev) == (TableDesc->Next)) { - NextDesc = NULL; /* Clear the list head */ @@ -647,9 +668,7 @@ AcpiTbUninstallTable ( TableDesc->Pointer = NULL; TableDesc->Length = 0; TableDesc->Count = 0; - } - else { /* Free the table descriptor */ @@ -658,7 +677,6 @@ AcpiTbUninstallTable ( ACPI_MEM_FREE (TableDesc); } - return_PTR (NextDesc); } diff --git a/sys/contrib/dev/acpica/tbutils.c b/sys/contrib/dev/acpica/tbutils.c index 8b7dfa04d568..3c1f1cb7e8eb 100644 --- a/sys/contrib/dev/acpica/tbutils.c +++ b/sys/contrib/dev/acpica/tbutils.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: tbutils - Table manipulation utilities - * $Revision: 43 $ + * $Revision: 49 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -122,7 +122,7 @@ #define _COMPONENT ACPI_TABLES - MODULE_NAME ("tbutils") + ACPI_MODULE_NAME ("tbutils") /******************************************************************************* @@ -147,7 +147,7 @@ AcpiTbHandleToObject ( ACPI_TABLE_DESC *ListHead; - PROC_NAME ("TbHandleToObject"); + ACPI_FUNCTION_NAME ("TbHandleToObject"); for (i = 0; i < ACPI_TABLE_MAX; i++) @@ -199,7 +199,7 @@ AcpiTbValidateTableHeader ( ACPI_NAME Signature; - PROC_NAME ("TbValidateTableHeader"); + ACPI_FUNCTION_NAME ("TbValidateTableHeader"); /* Verify that this is a valid address */ @@ -214,15 +214,15 @@ AcpiTbValidateTableHeader ( /* Ensure that the signature is 4 ASCII characters */ - MOVE_UNALIGNED32_TO_32 (&Signature, &TableHeader->Signature); + ACPI_MOVE_UNALIGNED32_TO_32 (&Signature, &TableHeader->Signature); if (!AcpiUtValidAcpiName (Signature)) { ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Table signature at %p [%p] has invalid characters\n", TableHeader, &Signature)); - REPORT_WARNING (("Invalid table signature %4.4s found\n", (char*)&Signature)); - DUMP_BUFFER (TableHeader, sizeof (ACPI_TABLE_HEADER)); + ACPI_REPORT_WARNING (("Invalid table signature %4.4s found\n", (char *) &Signature)); + ACPI_DUMP_BUFFER (TableHeader, sizeof (ACPI_TABLE_HEADER)); return (AE_BAD_SIGNATURE); } @@ -233,10 +233,10 @@ AcpiTbValidateTableHeader ( { ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Invalid length in table header %p name %4.4s\n", - TableHeader, (char*)&Signature)); + TableHeader, (char *) &Signature)); - REPORT_WARNING (("Invalid table header length found\n")); - DUMP_BUFFER (TableHeader, sizeof (ACPI_TABLE_HEADER)); + ACPI_REPORT_WARNING (("Invalid table header length (0x%X) found\n", TableHeader->Length)); + ACPI_DUMP_BUFFER (TableHeader, sizeof (ACPI_TABLE_HEADER)); return (AE_BAD_HEADER); } @@ -271,7 +271,7 @@ AcpiTbMapAcpiTable ( ACPI_STATUS Status = AE_OK; - PROC_NAME ("TbMapAcpiTable"); + ACPI_FUNCTION_NAME ("TbMapAcpiTable"); /* If size is zero, look at the table header to get the actual size */ @@ -350,7 +350,7 @@ AcpiTbVerifyTableChecksum ( ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE ("TbVerifyTableChecksum"); + ACPI_FUNCTION_TRACE ("TbVerifyTableChecksum"); /* Compute the checksum on the table */ @@ -361,8 +361,8 @@ AcpiTbVerifyTableChecksum ( if (Checksum) { - REPORT_WARNING (("Invalid checksum (%X) in table %4.4s\n", - Checksum, (char*)&TableHeader->Signature)); + ACPI_REPORT_WARNING (("Invalid checksum (%X) in table %4.4s\n", + Checksum, (char *) &TableHeader->Signature)); Status = AE_BAD_CHECKSUM; } @@ -390,8 +390,8 @@ AcpiTbChecksum ( void *Buffer, UINT32 Length) { - UINT8 *limit; - UINT8 *rover; + const UINT8 *limit; + const UINT8 *rover; UINT8 sum = 0; diff --git a/sys/contrib/dev/acpica/tbxface.c b/sys/contrib/dev/acpica/tbxface.c index 457c63433d26..7ff0f633f11c 100644 --- a/sys/contrib/dev/acpica/tbxface.c +++ b/sys/contrib/dev/acpica/tbxface.c @@ -2,7 +2,7 @@ * * Module Name: tbxface - Public interfaces to the ACPI subsystem * ACPI table oriented interfaces - * $Revision: 45 $ + * $Revision: 51 $ * *****************************************************************************/ @@ -10,7 +10,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -124,7 +124,7 @@ #define _COMPONENT ACPI_TABLES - MODULE_NAME ("tbxface") + ACPI_MODULE_NAME ("tbxface") /******************************************************************************* @@ -148,7 +148,7 @@ AcpiLoadTables (void) UINT32 NumberOfTables = 0; - FUNCTION_TRACE ("AcpiLoadTables"); + ACPI_FUNCTION_TRACE ("AcpiLoadTables"); /* Get the RSDP */ @@ -157,7 +157,7 @@ AcpiLoadTables (void) &RsdpPhysicalAddress); if (ACPI_FAILURE (Status)) { - REPORT_ERROR (("AcpiLoadTables: Could not get RSDP, %s\n", + ACPI_REPORT_ERROR (("AcpiLoadTables: Could not get RSDP, %s\n", AcpiFormatException (Status))); goto ErrorExit; } @@ -167,7 +167,7 @@ AcpiLoadTables (void) Status = AcpiTbVerifyRsdp (RsdpPhysicalAddress); if (ACPI_FAILURE (Status)) { - REPORT_ERROR (("AcpiLoadTables: RSDP Failed validation: %s\n", + ACPI_REPORT_ERROR (("AcpiLoadTables: RSDP Failed validation: %s\n", AcpiFormatException (Status))); goto ErrorExit; } @@ -177,7 +177,7 @@ AcpiLoadTables (void) Status = AcpiTbGetTableRsdt (&NumberOfTables); if (ACPI_FAILURE (Status)) { - REPORT_ERROR (("AcpiLoadTables: Could not load RSDT: %s\n", + ACPI_REPORT_ERROR (("AcpiLoadTables: Could not load RSDT: %s\n", AcpiFormatException (Status))); goto ErrorExit; } @@ -187,7 +187,7 @@ AcpiLoadTables (void) Status = AcpiTbGetAllTables (NumberOfTables, NULL); if (ACPI_FAILURE (Status)) { - REPORT_ERROR (("AcpiLoadTables: Error getting required tables (DSDT/FADT/FACS): %s\n", + ACPI_REPORT_ERROR (("AcpiLoadTables: Error getting required tables (DSDT/FADT/FACS): %s\n", AcpiFormatException (Status))); goto ErrorExit; } @@ -200,7 +200,7 @@ AcpiLoadTables (void) Status = AcpiNsLoadNamespace (); if (ACPI_FAILURE (Status)) { - REPORT_ERROR (("AcpiLoadTables: Could not load namespace: %s\n", + ACPI_REPORT_ERROR (("AcpiLoadTables: Could not load namespace: %s\n", AcpiFormatException (Status))); goto ErrorExit; } @@ -209,7 +209,7 @@ AcpiLoadTables (void) ErrorExit: - REPORT_ERROR (("AcpiLoadTables: Could not load tables: %s\n", + ACPI_REPORT_ERROR (("AcpiLoadTables: Could not load tables: %s\n", AcpiFormatException (Status))); return_ACPI_STATUS (Status); @@ -240,7 +240,7 @@ AcpiLoadTable ( ACPI_TABLE_DESC TableInfo; - FUNCTION_TRACE ("AcpiLoadTable"); + ACPI_FUNCTION_TRACE ("AcpiLoadTable"); if (!TablePtr) @@ -267,17 +267,34 @@ AcpiLoadTable ( return_ACPI_STATUS (Status); } + /* Convert the table to common format if necessary */ + + switch (TableInfo.Type) + { + case ACPI_TABLE_FADT: + + Status = AcpiTbConvertTableFadt (); + break; + + case ACPI_TABLE_FACS: + + Status = AcpiTbBuildCommonFacs (&TableInfo); + break; + + default: + /* Load table into namespace if it contains executable AML */ + + Status = AcpiNsLoadTable (TableInfo.InstalledDesc, AcpiGbl_RootNode); + break; + } - Status = AcpiNsLoadTable (TableInfo.InstalledDesc, AcpiGbl_RootNode); if (ACPI_FAILURE (Status)) { /* Uninstall table and free the buffer */ AcpiTbUninstallTable (TableInfo.InstalledDesc); - return_ACPI_STATUS (Status); } - return_ACPI_STATUS (Status); } @@ -301,7 +318,7 @@ AcpiUnloadTable ( ACPI_TABLE_DESC *ListHead; - FUNCTION_TRACE ("AcpiUnloadTable"); + ACPI_FUNCTION_TRACE ("AcpiUnloadTable"); /* Parameter validation */ @@ -366,7 +383,7 @@ AcpiGetTableHeader ( ACPI_STATUS Status; - FUNCTION_TRACE ("AcpiGetTableHeader"); + ACPI_FUNCTION_TRACE ("AcpiGetTableHeader"); if ((Instance == 0) || @@ -379,7 +396,7 @@ AcpiGetTableHeader ( /* Check the table type and instance */ if ((TableType > ACPI_TABLE_MAX) || - (IS_SINGLE_TABLE (AcpiGbl_AcpiTableData[TableType].Flags) && + (ACPI_IS_SINGLE_TABLE (AcpiGbl_AcpiTableData[TableType].Flags) && Instance > 1)) { return_ACPI_STATUS (AE_BAD_PARAMETER); @@ -405,7 +422,7 @@ AcpiGetTableHeader ( /* * Copy the header to the caller's buffer */ - MEMCPY ((void *) OutTableHeader, (void *) TblPtr, + ACPI_MEMCPY ((void *) OutTableHeader, (void *) TblPtr, sizeof (ACPI_TABLE_HEADER)); return_ACPI_STATUS (Status); @@ -443,26 +460,29 @@ AcpiGetTable ( { ACPI_TABLE_HEADER *TblPtr; ACPI_STATUS Status; - UINT32 RetBufLen; + UINT32 TableLength; - FUNCTION_TRACE ("AcpiGetTable"); + ACPI_FUNCTION_TRACE ("AcpiGetTable"); - /* - * If we have a buffer, we must have a length too - */ - if ((Instance == 0) || - (!RetBuffer) || - ((!RetBuffer->Pointer) && (RetBuffer->Length))) + /* Parameter validation */ + + if (Instance == 0) { return_ACPI_STATUS (AE_BAD_PARAMETER); } + Status = AcpiUtValidateBuffer (RetBuffer); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + /* Check the table type and instance */ if ((TableType > ACPI_TABLE_MAX) || - (IS_SINGLE_TABLE (AcpiGbl_AcpiTableData[TableType].Flags) && + (ACPI_IS_SINGLE_TABLE (AcpiGbl_AcpiTableData[TableType].Flags) && Instance > 1)) { return_ACPI_STATUS (AE_BAD_PARAMETER); @@ -486,34 +506,31 @@ AcpiGetTable ( return_ACPI_STATUS (AE_NOT_EXIST); } - /* - * Got a table ptr, assume it's ok and copy it to the user's buffer - */ + /* Get the table length */ + if (TableType == ACPI_TABLE_RSDP) { /* * RSD PTR is the only "table" without a header */ - RetBufLen = sizeof (RSDP_DESCRIPTOR); + TableLength = sizeof (RSDP_DESCRIPTOR); } else { - RetBufLen = TblPtr->Length; + TableLength = TblPtr->Length; } - /* - * Verify we have space in the caller's buffer for the table - */ - if (RetBuffer->Length < RetBufLen) + /* Validate/Allocate/Clear caller buffer */ + + Status = AcpiUtInitializeBuffer (RetBuffer, TableLength); + if (ACPI_FAILURE (Status)) { - RetBuffer->Length = RetBufLen; - return_ACPI_STATUS (AE_BUFFER_OVERFLOW); + return_ACPI_STATUS (Status); } - RetBuffer->Length = RetBufLen; - - MEMCPY ((void *) RetBuffer->Pointer, (void *) TblPtr, RetBufLen); + /* Copy the table to the buffer */ + ACPI_MEMCPY ((void *) RetBuffer->Pointer, (void *) TblPtr, TableLength); return_ACPI_STATUS (AE_OK); } diff --git a/sys/contrib/dev/acpica/tbxfroot.c b/sys/contrib/dev/acpica/tbxfroot.c index e9a3e84f1e87..8a2e147226d4 100644 --- a/sys/contrib/dev/acpica/tbxfroot.c +++ b/sys/contrib/dev/acpica/tbxfroot.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: tbxfroot - Find the root ACPI table (RSDT) - * $Revision: 52 $ + * $Revision: 58 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -117,236 +117,70 @@ #define __TBXFROOT_C__ #include "acpi.h" -#include "achware.h" #include "actables.h" #define _COMPONENT ACPI_TABLES - MODULE_NAME ("tbxfroot") - -#define RSDP_CHECKSUM_LENGTH 20 + ACPI_MODULE_NAME ("tbxfroot") /******************************************************************************* * - * FUNCTION: AcpiFindRootPointer + * FUNCTION: AcpiTbFindTable * - * PARAMETERS: **RsdpPhysicalAddress - Where to place the RSDP address - * Flags - Logical/Physical addressing + * PARAMETERS: Signature - String with ACPI table signature + * OemId - String with the table OEM ID + * OemTableId - String with the OEM Table ID. * - * RETURN: Status, Physical address of the RSDP + * RETURN: Status * - * DESCRIPTION: Find the RSDP + * DESCRIPTION: Find an ACPI table (in the RSDT/XSDT) that matches the + * Signature, OEM ID and OEM Table ID. * ******************************************************************************/ ACPI_STATUS -AcpiFindRootPointer ( - UINT32 Flags, - ACPI_PHYSICAL_ADDRESS *RsdpPhysicalAddress) +AcpiTbFindTable ( + NATIVE_CHAR *Signature, + NATIVE_CHAR *OemId, + NATIVE_CHAR *OemTableId, + ACPI_TABLE_HEADER **TablePtr) { - ACPI_TABLE_DESC TableInfo; ACPI_STATUS Status; + ACPI_TABLE_HEADER *Table; - FUNCTION_TRACE ("AcpiFindRootPointer"); - - - /* Get the RSDP */ - - Status = AcpiTbFindRsdp (&TableInfo, Flags); - if (ACPI_FAILURE (Status)) - { - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "RSDP structure not found\n")); - return_ACPI_STATUS (AE_NO_ACPI_TABLES); - } - - *RsdpPhysicalAddress = TableInfo.PhysicalAddress; - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTbScanMemoryForRsdp - * - * PARAMETERS: StartAddress - Starting pointer for search - * Length - Maximum length to search - * - * RETURN: Pointer to the RSDP if found, otherwise NULL. - * - * DESCRIPTION: Search a block of memory for the RSDP signature - * - ******************************************************************************/ - -UINT8 * -AcpiTbScanMemoryForRsdp ( - UINT8 *StartAddress, - UINT32 Length) -{ - UINT32 Offset; - UINT8 *MemRover; - - - FUNCTION_TRACE ("TbScanMemoryForRsdp"); + ACPI_FUNCTION_TRACE ("TbFindTable"); - /* Search from given start addr for the requested length */ + /* Validate string lengths */ - for (Offset = 0, MemRover = StartAddress; - Offset < Length; - Offset += RSDP_SCAN_STEP, MemRover += RSDP_SCAN_STEP) + if ((ACPI_STRLEN (Signature) > 4) || + (ACPI_STRLEN (OemId) > 6) || + (ACPI_STRLEN (OemTableId) > 8)) { - - /* The signature and checksum must both be correct */ - - if (STRNCMP ((NATIVE_CHAR *) MemRover, - RSDP_SIG, sizeof (RSDP_SIG)-1) == 0 && - AcpiTbChecksum (MemRover, RSDP_CHECKSUM_LENGTH) == 0) - { - /* If so, we have found the RSDP */ - - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "RSDP located at physical address %p\n",MemRover)); - return_PTR (MemRover); - } + return_ACPI_STATUS (AE_AML_STRING_LIMIT); } - /* Searched entire block, no RSDP was found */ - - ACPI_DEBUG_PRINT ((ACPI_DB_INFO,"Searched entire block, no RSDP was found.\n")); - - return_PTR (NULL); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTbFindRsdp - * - * PARAMETERS: *TableInfo - Where the table info is returned - * Flags - Current memory mode (logical vs. - * physical addressing) - * - * RETURN: Status - * - * DESCRIPTION: Search lower 1Mbyte of memory for the root system descriptor - * pointer structure. If it is found, set *RSDP to point to it. - * - * NOTE: The RSDP must be either in the first 1K of the Extended - * BIOS Data Area or between E0000 and FFFFF (ACPI 1.0 section - * 5.2.2; assertion #421). - * - ******************************************************************************/ - -ACPI_STATUS -AcpiTbFindRsdp ( - ACPI_TABLE_DESC *TableInfo, - UINT32 Flags) -{ - UINT8 *TablePtr; - UINT8 *MemRover; - UINT64 PhysAddr; - ACPI_STATUS Status = AE_OK; - - - FUNCTION_TRACE ("TbFindRsdp"); - + /* Find the table */ - /* - * Scan supports either 1) Logical addressing or 2) Physical addressing - */ - if ((Flags & ACPI_MEMORY_MODE) == ACPI_LOGICAL_ADDRESSING) + Status = AcpiGetFirmwareTable (Signature, 1, + ACPI_LOGICAL_ADDRESSING, &Table); + if (ACPI_FAILURE (Status)) { - /* - * 1) Search EBDA (low memory) paragraphs - */ - Status = AcpiOsMapMemory (LO_RSDP_WINDOW_BASE, LO_RSDP_WINDOW_SIZE, - (void **) &TablePtr); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - MemRover = AcpiTbScanMemoryForRsdp (TablePtr, LO_RSDP_WINDOW_SIZE); - AcpiOsUnmapMemory (TablePtr, LO_RSDP_WINDOW_SIZE); - - if (MemRover) - { - /* Found it, return the physical address */ - - PhysAddr = LO_RSDP_WINDOW_BASE; - PhysAddr += (MemRover - TablePtr); - - TableInfo->PhysicalAddress = PhysAddr; - - return_ACPI_STATUS (AE_OK); - } - - /* - * 2) Search upper memory: 16-byte boundaries in E0000h-F0000h - */ - Status = AcpiOsMapMemory (HI_RSDP_WINDOW_BASE, HI_RSDP_WINDOW_SIZE, - (void **) &TablePtr); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - MemRover = AcpiTbScanMemoryForRsdp (TablePtr, HI_RSDP_WINDOW_SIZE); - AcpiOsUnmapMemory (TablePtr, HI_RSDP_WINDOW_SIZE); - - if (MemRover) - { - /* Found it, return the physical address */ - - PhysAddr = HI_RSDP_WINDOW_BASE; - PhysAddr += (MemRover - TablePtr); - - TableInfo->PhysicalAddress = PhysAddr; - - return_ACPI_STATUS (AE_OK); - } + return_ACPI_STATUS (Status); } + /* Check OemId and OemTableId */ - /* - * Physical addressing - */ - else + if ((OemId[0] && ACPI_STRCMP (OemId, Table->OemId)) || + (OemTableId[0] && ACPI_STRCMP (OemTableId, Table->OemTableId))) { - /* - * 1) Search EBDA (low memory) paragraphs - */ - MemRover = AcpiTbScanMemoryForRsdp ((UINT8 *) LO_RSDP_WINDOW_BASE, - LO_RSDP_WINDOW_SIZE); - if (MemRover) - { - /* Found it, return the physical address */ - - TableInfo->PhysicalAddress = (ACPI_TBLPTR) MemRover; - return_ACPI_STATUS (AE_OK); - } - - /* - * 2) Search upper memory: 16-byte boundaries in E0000h-F0000h - */ - MemRover = AcpiTbScanMemoryForRsdp ((UINT8 *) HI_RSDP_WINDOW_BASE, - HI_RSDP_WINDOW_SIZE); - if (MemRover) - { - /* Found it, return the physical address */ - - TableInfo->PhysicalAddress = (ACPI_TBLPTR) MemRover; - return_ACPI_STATUS (AE_OK); - } + return_ACPI_STATUS (AE_AML_NAME_NOT_FOUND); } - - /* RSDP signature was not found */ - - return_ACPI_STATUS (AE_NOT_FOUND); + *TablePtr = Table; + return_ACPI_STATUS (AE_OK); } @@ -390,7 +224,7 @@ AcpiGetFirmwareTable ( UINT32 j; - FUNCTION_TRACE ("AcpiGetFirmwareTable"); + ACPI_FUNCTION_TRACE ("AcpiGetFirmwareTable"); /* @@ -432,13 +266,13 @@ AcpiGetFirmwareTable ( } else { - AcpiGbl_RSDP = (void *) (NATIVE_UINT) PhysicalAddress; + AcpiGbl_RSDP = ACPI_PHYSADDR_TO_PTR (PhysicalAddress); } /* * The signature and checksum must both be correct */ - if (STRNCMP ((NATIVE_CHAR *) AcpiGbl_RSDP, RSDP_SIG, sizeof (RSDP_SIG)-1) != 0) + if (ACPI_STRNCMP ((NATIVE_CHAR *) AcpiGbl_RSDP, RSDP_SIG, sizeof (RSDP_SIG)-1) != 0) { /* Nope, BAD Signature */ @@ -446,7 +280,7 @@ AcpiGetFirmwareTable ( goto Cleanup; } - if (AcpiTbChecksum (AcpiGbl_RSDP, RSDP_CHECKSUM_LENGTH) != 0) + if (AcpiTbChecksum (AcpiGbl_RSDP, ACPI_RSDP_CHECKSUM_LENGTH) != 0) { /* Nope, BAD Checksum */ @@ -455,12 +289,11 @@ AcpiGetFirmwareTable ( } } - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "RSDP located at %p, RSDT physical=%8.8X%8.8X \n", - AcpiGbl_RSDP, HIDWORD(AcpiGbl_RSDP->RsdtPhysicalAddress), - LODWORD(AcpiGbl_RSDP->RsdtPhysicalAddress))); - + AcpiGbl_RSDP, + ACPI_HIDWORD (AcpiGbl_RSDP->RsdtPhysicalAddress), + ACPI_LODWORD (AcpiGbl_RSDP->RsdtPhysicalAddress))); /* Get the RSDT and validate it */ @@ -477,7 +310,6 @@ AcpiGetFirmwareTable ( goto Cleanup; } - /* Get the number of table pointers within the RSDT */ TableCount = AcpiTbGetTableCount (AcpiGbl_RSDP, RsdtPtr); @@ -493,7 +325,8 @@ AcpiGetFirmwareTable ( if (AcpiGbl_RSDP->Revision < 2) { - PhysicalAddress = ((RSDT_DESCRIPTOR *) RsdtPtr)->TableOffsetEntry[i]; + PhysicalAddress = (ACPI_PHYSICAL_ADDRESS) + ((RSDT_DESCRIPTOR *) RsdtPtr)->TableOffsetEntry[i]; } else { @@ -511,7 +344,7 @@ AcpiGetFirmwareTable ( /* Compare table signatures and table instance */ - if (!STRNCMP ((char *) TablePtr, Signature, STRLEN (Signature))) + if (!ACPI_STRNCMP ((char *) TablePtr, Signature, ACPI_STRLEN (Signature))) { /* An instance of the table was found */ @@ -548,3 +381,225 @@ Cleanup: } +/* TBD: Move to a new file */ + +#ifndef _IA16 + +/******************************************************************************* + * + * FUNCTION: AcpiFindRootPointer + * + * PARAMETERS: **RsdpPhysicalAddress - Where to place the RSDP address + * Flags - Logical/Physical addressing + * + * RETURN: Status, Physical address of the RSDP + * + * DESCRIPTION: Find the RSDP + * + ******************************************************************************/ + +ACPI_STATUS +AcpiFindRootPointer ( + UINT32 Flags, + ACPI_PHYSICAL_ADDRESS *RsdpPhysicalAddress) +{ + ACPI_TABLE_DESC TableInfo; + ACPI_STATUS Status; + + + ACPI_FUNCTION_TRACE ("AcpiFindRootPointer"); + + + /* Get the RSDP */ + + Status = AcpiTbFindRsdp (&TableInfo, Flags); + if (ACPI_FAILURE (Status)) + { + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "RSDP structure not found\n")); + return_ACPI_STATUS (AE_NO_ACPI_TABLES); + } + + *RsdpPhysicalAddress = TableInfo.PhysicalAddress; + return_ACPI_STATUS (AE_OK); +} + + +/******************************************************************************* + * + * FUNCTION: AcpiTbScanMemoryForRsdp + * + * PARAMETERS: StartAddress - Starting pointer for search + * Length - Maximum length to search + * + * RETURN: Pointer to the RSDP if found, otherwise NULL. + * + * DESCRIPTION: Search a block of memory for the RSDP signature + * + ******************************************************************************/ + +UINT8 * +AcpiTbScanMemoryForRsdp ( + UINT8 *StartAddress, + UINT32 Length) +{ + UINT32 Offset; + UINT8 *MemRover; + + + ACPI_FUNCTION_TRACE ("TbScanMemoryForRsdp"); + + + /* Search from given start addr for the requested length */ + + for (Offset = 0, MemRover = StartAddress; + Offset < Length; + Offset += RSDP_SCAN_STEP, MemRover += RSDP_SCAN_STEP) + { + + /* The signature and checksum must both be correct */ + + if (ACPI_STRNCMP ((NATIVE_CHAR *) MemRover, + RSDP_SIG, sizeof (RSDP_SIG)-1) == 0 && + AcpiTbChecksum (MemRover, ACPI_RSDP_CHECKSUM_LENGTH) == 0) + { + /* If so, we have found the RSDP */ + + ACPI_DEBUG_PRINT ((ACPI_DB_INFO, + "RSDP located at physical address %p\n",MemRover)); + return_PTR (MemRover); + } + } + + /* Searched entire block, no RSDP was found */ + + ACPI_DEBUG_PRINT ((ACPI_DB_INFO,"Searched entire block, no RSDP was found.\n")); + return_PTR (NULL); +} + + +/******************************************************************************* + * + * FUNCTION: AcpiTbFindRsdp + * + * PARAMETERS: *TableInfo - Where the table info is returned + * Flags - Current memory mode (logical vs. + * physical addressing) + * + * RETURN: Status + * + * DESCRIPTION: Search lower 1Mbyte of memory for the root system descriptor + * pointer structure. If it is found, set *RSDP to point to it. + * + * NOTE: The RSDP must be either in the first 1K of the Extended + * BIOS Data Area or between E0000 and FFFFF (ACPI 1.0 section + * 5.2.2; assertion #421). + * + ******************************************************************************/ + +ACPI_STATUS +AcpiTbFindRsdp ( + ACPI_TABLE_DESC *TableInfo, + UINT32 Flags) +{ + UINT8 *TablePtr; + UINT8 *MemRover; + UINT64 PhysAddr; + ACPI_STATUS Status = AE_OK; + + + ACPI_FUNCTION_TRACE ("TbFindRsdp"); + + + /* + * Scan supports either 1) Logical addressing or 2) Physical addressing + */ + if ((Flags & ACPI_MEMORY_MODE) == ACPI_LOGICAL_ADDRESSING) + { + /* + * 1) Search EBDA (low memory) paragraphs + */ + Status = AcpiOsMapMemory ((UINT64) LO_RSDP_WINDOW_BASE, LO_RSDP_WINDOW_SIZE, + (void **) &TablePtr); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + + MemRover = AcpiTbScanMemoryForRsdp (TablePtr, LO_RSDP_WINDOW_SIZE); + AcpiOsUnmapMemory (TablePtr, LO_RSDP_WINDOW_SIZE); + + if (MemRover) + { + /* Found it, return the physical address */ + + PhysAddr = LO_RSDP_WINDOW_BASE; + PhysAddr += (MemRover - TablePtr); + + TableInfo->PhysicalAddress = PhysAddr; + return_ACPI_STATUS (AE_OK); + } + + /* + * 2) Search upper memory: 16-byte boundaries in E0000h-F0000h + */ + Status = AcpiOsMapMemory ((UINT64) HI_RSDP_WINDOW_BASE, HI_RSDP_WINDOW_SIZE, + (void **) &TablePtr); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + + MemRover = AcpiTbScanMemoryForRsdp (TablePtr, HI_RSDP_WINDOW_SIZE); + AcpiOsUnmapMemory (TablePtr, HI_RSDP_WINDOW_SIZE); + + if (MemRover) + { + /* Found it, return the physical address */ + + PhysAddr = HI_RSDP_WINDOW_BASE; + PhysAddr += (MemRover - TablePtr); + + TableInfo->PhysicalAddress = PhysAddr; + return_ACPI_STATUS (AE_OK); + } + } + + /* + * Physical addressing + */ + else + { + /* + * 1) Search EBDA (low memory) paragraphs + */ + MemRover = AcpiTbScanMemoryForRsdp (ACPI_PHYSADDR_TO_PTR (LO_RSDP_WINDOW_BASE), + LO_RSDP_WINDOW_SIZE); + if (MemRover) + { + /* Found it, return the physical address */ + + TableInfo->PhysicalAddress = ACPI_TO_INTEGER (MemRover); + return_ACPI_STATUS (AE_OK); + } + + /* + * 2) Search upper memory: 16-byte boundaries in E0000h-F0000h + */ + MemRover = AcpiTbScanMemoryForRsdp (ACPI_PHYSADDR_TO_PTR (HI_RSDP_WINDOW_BASE), + HI_RSDP_WINDOW_SIZE); + if (MemRover) + { + /* Found it, return the physical address */ + + TableInfo->PhysicalAddress = ACPI_TO_INTEGER (MemRover); + return_ACPI_STATUS (AE_OK); + } + } + + /* RSDP signature was not found */ + + return_ACPI_STATUS (AE_NOT_FOUND); +} + +#endif + diff --git a/sys/contrib/dev/acpica/utalloc.c b/sys/contrib/dev/acpica/utalloc.c index e2f3d29eff4e..dbbd024be6b8 100644 --- a/sys/contrib/dev/acpica/utalloc.c +++ b/sys/contrib/dev/acpica/utalloc.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: utalloc - local cache and memory allocation routines - * $Revision: 109 $ + * $Revision: 121 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -123,7 +123,7 @@ #include "acglobal.h" #define _COMPONENT ACPI_UTILITIES - MODULE_NAME ("utalloc") + ACPI_MODULE_NAME ("utalloc") /****************************************************************************** @@ -148,7 +148,7 @@ AcpiUtReleaseToCache ( ACPI_MEMORY_LIST *CacheInfo; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); /* If walk cache is full, just free this wallkstate object */ @@ -164,12 +164,15 @@ AcpiUtReleaseToCache ( else { - AcpiUtAcquireMutex (ACPI_MTX_CACHES); + if (ACPI_FAILURE (AcpiUtAcquireMutex (ACPI_MTX_CACHES))) + { + return; + } /* Mark the object as cached */ - MEMSET (Object, 0xCA, CacheInfo->ObjectSize); - ((ACPI_OPERAND_OBJECT *) Object)->Common.DataType = ACPI_CACHED_OBJECT; + ACPI_MEMSET (Object, 0xCA, CacheInfo->ObjectSize); + ACPI_SET_DESCRIPTOR_TYPE (Object, ACPI_CACHED_OBJECT); /* Put the object at the head of the cache list */ @@ -177,7 +180,7 @@ AcpiUtReleaseToCache ( CacheInfo->ListHead = Object; CacheInfo->CacheDepth++; - AcpiUtReleaseMutex (ACPI_MTX_CACHES); + (void) AcpiUtReleaseMutex (ACPI_MTX_CACHES); } } @@ -204,11 +207,15 @@ AcpiUtAcquireFromCache ( void *Object; - PROC_NAME ("UtAcquireFromCache"); + ACPI_FUNCTION_NAME ("UtAcquireFromCache"); CacheInfo = &AcpiGbl_MemoryLists[ListId]; - AcpiUtAcquireMutex (ACPI_MTX_CACHES); + if (ACPI_FAILURE (AcpiUtAcquireMutex (ACPI_MTX_CACHES))) + { + return (NULL); + } + ACPI_MEM_TRACKING (CacheInfo->CacheRequests++); /* Check the cache first */ @@ -228,11 +235,14 @@ AcpiUtAcquireFromCache ( Object, AcpiGbl_MemoryLists[ListId].ListName)); #endif - AcpiUtReleaseMutex (ACPI_MTX_CACHES); + if (ACPI_FAILURE (AcpiUtReleaseMutex (ACPI_MTX_CACHES))) + { + return (NULL); + } /* Clear (zero) the previously used Object */ - MEMSET (Object, 0, CacheInfo->ObjectSize); + ACPI_MEMSET (Object, 0, CacheInfo->ObjectSize); } else @@ -241,7 +251,10 @@ AcpiUtAcquireFromCache ( /* Avoid deadlock with ACPI_MEM_CALLOCATE */ - AcpiUtReleaseMutex (ACPI_MTX_CACHES); + if (ACPI_FAILURE (AcpiUtReleaseMutex (ACPI_MTX_CACHES))) + { + return (NULL); + } Object = ACPI_MEM_CALLOCATE (CacheInfo->ObjectSize); ACPI_MEM_TRACKING (CacheInfo->TotalAllocated++); @@ -271,7 +284,7 @@ AcpiUtDeleteGenericCache ( char *Next; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); CacheInfo = &AcpiGbl_MemoryLists[ListId]; @@ -288,9 +301,241 @@ AcpiUtDeleteGenericCache ( } -#ifdef ACPI_DBG_TRACK_ALLOCATIONS +/******************************************************************************* + * + * FUNCTION: AcpiUtValidateBuffer + * + * PARAMETERS: Buffer - Buffer descriptor to be validated + * + * RETURN: Status + * + * DESCRIPTION: Perform parameter validation checks on an ACPI_BUFFER + * + ******************************************************************************/ + +ACPI_STATUS +AcpiUtValidateBuffer ( + ACPI_BUFFER *Buffer) +{ + + /* Obviously, the structure pointer must be valid */ + + if (!Buffer) + { + return (AE_BAD_PARAMETER); + } + + /* Special semantics for the length */ + + if ((Buffer->Length == ACPI_NO_BUFFER) || + (Buffer->Length == ACPI_ALLOCATE_BUFFER) || + (Buffer->Length == ACPI_ALLOCATE_LOCAL_BUFFER)) + { + return (AE_OK); + } + + /* Length is valid, the buffer pointer must be also */ + + if (!Buffer->Pointer) + { + return (AE_BAD_PARAMETER); + } + + return (AE_OK); +} + + +/******************************************************************************* + * + * FUNCTION: AcpiUtInitializeBuffer + * + * PARAMETERS: RequiredLength - Length needed + * Buffer - Buffer to be validated + * + * RETURN: Status + * + * DESCRIPTION: Validate that the buffer is of the required length or + * allocate a new buffer. + * + ******************************************************************************/ + +ACPI_STATUS +AcpiUtInitializeBuffer ( + ACPI_BUFFER *Buffer, + ACPI_SIZE RequiredLength) +{ + ACPI_STATUS Status = AE_OK; + + + switch (Buffer->Length) + { + case ACPI_NO_BUFFER: + + /* Set the exception and returned the required length */ + + Status = AE_BUFFER_OVERFLOW; + break; + case ACPI_ALLOCATE_BUFFER: + + /* Allocate a new buffer */ + + Buffer->Pointer = AcpiOsAllocate (RequiredLength); + if (!Buffer->Pointer) + { + return (AE_NO_MEMORY); + } + + /* Clear the buffer */ + + ACPI_MEMSET (Buffer->Pointer, 0, RequiredLength); + break; + + + case ACPI_ALLOCATE_LOCAL_BUFFER: + + /* Allocate a new buffer with local interface to allow tracking */ + + Buffer->Pointer = ACPI_MEM_ALLOCATE (RequiredLength); + if (!Buffer->Pointer) + { + return (AE_NO_MEMORY); + } + + /* Clear the buffer */ + + ACPI_MEMSET (Buffer->Pointer, 0, RequiredLength); + break; + + + default: + + /* Validate the size of the buffer */ + + if (Buffer->Length < RequiredLength) + { + Status = AE_BUFFER_OVERFLOW; + } + + /* Clear the buffer */ + + ACPI_MEMSET (Buffer->Pointer, 0, RequiredLength); + break; + } + + Buffer->Length = RequiredLength; + return (Status); +} + + +/******************************************************************************* + * + * FUNCTION: AcpiUtAllocate + * + * PARAMETERS: Size - Size of the allocation + * Component - Component type of caller + * Module - Source file name of caller + * Line - Line number of caller + * + * RETURN: Address of the allocated memory on success, NULL on failure. + * + * DESCRIPTION: The subsystem's equivalent of malloc. + * + ******************************************************************************/ + +void * +AcpiUtAllocate ( + ACPI_SIZE Size, + UINT32 Component, + NATIVE_CHAR *Module, + UINT32 Line) +{ + void *Allocation; + + + ACPI_FUNCTION_TRACE_U32 ("UtAllocate", Size); + + + /* Check for an inadvertent size of zero bytes */ + + if (!Size) + { + _ACPI_REPORT_ERROR (Module, Line, Component, + ("UtAllocate: Attempt to allocate zero bytes\n")); + Size = 1; + } + + Allocation = AcpiOsAllocate (Size); + if (!Allocation) + { + /* Report allocation error */ + + _ACPI_REPORT_ERROR (Module, Line, Component, + ("UtAllocate: Could not allocate size %X\n", Size)); + + return_PTR (NULL); + } + + return_PTR (Allocation); +} + + +/******************************************************************************* + * + * FUNCTION: AcpiUtCallocate + * + * PARAMETERS: Size - Size of the allocation + * Component - Component type of caller + * Module - Source file name of caller + * Line - Line number of caller + * + * RETURN: Address of the allocated memory on success, NULL on failure. + * + * DESCRIPTION: Subsystem equivalent of calloc. + * + ******************************************************************************/ + +void * +AcpiUtCallocate ( + ACPI_SIZE Size, + UINT32 Component, + NATIVE_CHAR *Module, + UINT32 Line) +{ + void *Allocation; + + + ACPI_FUNCTION_TRACE_U32 ("UtCallocate", Size); + + + /* Check for an inadvertent size of zero bytes */ + + if (!Size) + { + _ACPI_REPORT_ERROR (Module, Line, Component, + ("UtCallocate: Attempt to allocate zero bytes\n")); + return_PTR (NULL); + } + + Allocation = AcpiOsAllocate (Size); + if (!Allocation) + { + /* Report allocation error */ + + _ACPI_REPORT_ERROR (Module, Line, Component, + ("UtCallocate: Could not allocate size %X\n", Size)); + return_PTR (NULL); + } + + /* Clear the memory block */ + + ACPI_MEMSET (Allocation, 0, Size); + return_PTR (Allocation); +} + + +#ifdef ACPI_DBG_TRACK_ALLOCATIONS /* * These procedures are used for tracking memory leaks in the subsystem, and * they get compiled out when the ACPI_DBG_TRACK_ALLOCATIONS is not set. @@ -305,9 +550,161 @@ AcpiUtDeleteGenericCache ( /******************************************************************************* * + * FUNCTION: AcpiUtAllocateAndTrack + * + * PARAMETERS: Size - Size of the allocation + * Component - Component type of caller + * Module - Source file name of caller + * Line - Line number of caller + * + * RETURN: Address of the allocated memory on success, NULL on failure. + * + * DESCRIPTION: The subsystem's equivalent of malloc. + * + ******************************************************************************/ + +void * +AcpiUtAllocateAndTrack ( + ACPI_SIZE Size, + UINT32 Component, + NATIVE_CHAR *Module, + UINT32 Line) +{ + ACPI_DEBUG_MEM_BLOCK *Allocation; + ACPI_STATUS Status; + + + Allocation = AcpiUtAllocate (Size + sizeof (ACPI_DEBUG_MEM_BLOCK), Component, + Module, Line); + if (!Allocation) + { + return (NULL); + } + + Status = AcpiUtTrackAllocation (ACPI_MEM_LIST_GLOBAL, Allocation, Size, + ACPI_MEM_MALLOC, Component, Module, Line); + if (ACPI_FAILURE (Status)) + { + AcpiOsFree (Allocation); + return (NULL); + } + + AcpiGbl_MemoryLists[ACPI_MEM_LIST_GLOBAL].TotalAllocated++; + AcpiGbl_MemoryLists[ACPI_MEM_LIST_GLOBAL].CurrentTotalSize += (UINT32) Size; + + return ((void *) &Allocation->UserSpace); +} + + +/******************************************************************************* + * + * FUNCTION: AcpiUtCallocateAndTrack + * + * PARAMETERS: Size - Size of the allocation + * Component - Component type of caller + * Module - Source file name of caller + * Line - Line number of caller + * + * RETURN: Address of the allocated memory on success, NULL on failure. + * + * DESCRIPTION: Subsystem equivalent of calloc. + * + ******************************************************************************/ + +void * +AcpiUtCallocateAndTrack ( + ACPI_SIZE Size, + UINT32 Component, + NATIVE_CHAR *Module, + UINT32 Line) +{ + ACPI_DEBUG_MEM_BLOCK *Allocation; + ACPI_STATUS Status; + + + Allocation = AcpiUtCallocate (Size + sizeof (ACPI_DEBUG_MEM_BLOCK), Component, + Module, Line); + if (!Allocation) + { + /* Report allocation error */ + + _ACPI_REPORT_ERROR (Module, Line, Component, + ("UtCallocate: Could not allocate size %X\n", Size)); + return (NULL); + } + + Status = AcpiUtTrackAllocation (ACPI_MEM_LIST_GLOBAL, Allocation, Size, + ACPI_MEM_CALLOC, Component, Module, Line); + if (ACPI_FAILURE (Status)) + { + AcpiOsFree (Allocation); + return (NULL); + } + + AcpiGbl_MemoryLists[ACPI_MEM_LIST_GLOBAL].TotalAllocated++; + AcpiGbl_MemoryLists[ACPI_MEM_LIST_GLOBAL].CurrentTotalSize += (UINT32) Size; + + return ((void *) &Allocation->UserSpace); +} + + +/******************************************************************************* + * + * FUNCTION: AcpiUtFreeAndTrack + * + * PARAMETERS: Allocation - Address of the memory to deallocate + * Component - Component type of caller + * Module - Source file name of caller + * Line - Line number of caller + * + * RETURN: None + * + * DESCRIPTION: Frees the memory at Allocation + * + ******************************************************************************/ + +void +AcpiUtFreeAndTrack ( + void *Allocation, + UINT32 Component, + NATIVE_CHAR *Module, + UINT32 Line) +{ + ACPI_DEBUG_MEM_BLOCK *DebugBlock; + + + ACPI_FUNCTION_TRACE_PTR ("UtFree", Allocation); + + + if (NULL == Allocation) + { + _ACPI_REPORT_ERROR (Module, Line, Component, + ("AcpiUtFree: Attempt to delete a NULL address\n")); + + return_VOID; + } + + DebugBlock = (ACPI_DEBUG_MEM_BLOCK *) + (((char *) Allocation) - sizeof (ACPI_DEBUG_MEM_HEADER)); + + AcpiGbl_MemoryLists[ACPI_MEM_LIST_GLOBAL].TotalFreed++; + AcpiGbl_MemoryLists[ACPI_MEM_LIST_GLOBAL].CurrentTotalSize -= DebugBlock->Size; + + AcpiUtRemoveAllocation (ACPI_MEM_LIST_GLOBAL, DebugBlock, + Component, Module, Line); + AcpiOsFree (DebugBlock); + + ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "%p freed\n", Allocation)); + + return_VOID; +} + + +/******************************************************************************* + * * FUNCTION: AcpiUtFindAllocation * - * PARAMETERS: Address - Address of allocated memory + * PARAMETERS: Allocation - Address of allocated memory * * RETURN: A list element if found; NULL otherwise. * @@ -318,12 +715,12 @@ AcpiUtDeleteGenericCache ( ACPI_DEBUG_MEM_BLOCK * AcpiUtFindAllocation ( UINT32 ListId, - void *Address) + void *Allocation) { ACPI_DEBUG_MEM_BLOCK *Element; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); if (ListId > ACPI_MEM_LIST_MAX) @@ -337,7 +734,7 @@ AcpiUtFindAllocation ( while (Element) { - if (Element == Address) + if (Element == Allocation) { return (Element); } @@ -353,7 +750,7 @@ AcpiUtFindAllocation ( * * FUNCTION: AcpiUtTrackAllocation * - * PARAMETERS: Address - Address of allocated memory + * PARAMETERS: Allocation - Address of allocated memory * Size - Size of the allocation * AllocType - MEM_MALLOC or MEM_CALLOC * Component - Component type of caller @@ -369,8 +766,8 @@ AcpiUtFindAllocation ( ACPI_STATUS AcpiUtTrackAllocation ( UINT32 ListId, - ACPI_DEBUG_MEM_BLOCK *Address, - UINT32 Size, + ACPI_DEBUG_MEM_BLOCK *Allocation, + ACPI_SIZE Size, UINT8 AllocType, UINT32 Component, NATIVE_CHAR *Module, @@ -381,7 +778,7 @@ AcpiUtTrackAllocation ( ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE_PTR ("UtTrackAllocation", Address); + ACPI_FUNCTION_TRACE_PTR ("UtTrackAllocation", Allocation); if (ListId > ACPI_MEM_LIST_MAX) @@ -390,48 +787,52 @@ AcpiUtTrackAllocation ( } MemList = &AcpiGbl_MemoryLists[ListId]; - AcpiUtAcquireMutex (ACPI_MTX_MEMORY); + Status = AcpiUtAcquireMutex (ACPI_MTX_MEMORY); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } /* * Search list for this address to make sure it is not already on the list. * This will catch several kinds of problems. */ - Element = AcpiUtFindAllocation (ListId, Address); + Element = AcpiUtFindAllocation (ListId, Allocation); if (Element) { - REPORT_ERROR (("UtTrackAllocation: Address already present in list! (%p)\n", - Address)); + ACPI_REPORT_ERROR (("UtTrackAllocation: Allocation already present in list! (%p)\n", + Allocation)); - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Element %p Address %p\n", Element, Address)); + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Element %p Address %p\n", Element, Allocation)); goto UnlockAndExit; } /* Fill in the instance data. */ - Address->Size = Size; - Address->AllocType = AllocType; - Address->Component = Component; - Address->Line = Line; + Allocation->Size = (UINT32) Size; + Allocation->AllocType = AllocType; + Allocation->Component = Component; + Allocation->Line = Line; - STRNCPY (Address->Module, Module, MAX_MODULE_NAME); + ACPI_STRNCPY (Allocation->Module, Module, ACPI_MAX_MODULE_NAME); /* Insert at list head */ if (MemList->ListHead) { - ((ACPI_DEBUG_MEM_BLOCK *)(MemList->ListHead))->Previous = Address; + ((ACPI_DEBUG_MEM_BLOCK *)(MemList->ListHead))->Previous = Allocation; } - Address->Next = MemList->ListHead; - Address->Previous = NULL; + Allocation->Next = MemList->ListHead; + Allocation->Previous = NULL; - MemList->ListHead = Address; + MemList->ListHead = Allocation; UnlockAndExit: - AcpiUtReleaseMutex (ACPI_MTX_MEMORY); + Status = AcpiUtReleaseMutex (ACPI_MTX_MEMORY); return_ACPI_STATUS (Status); } @@ -440,7 +841,7 @@ UnlockAndExit: * * FUNCTION: AcpiUtRemoveAllocation * - * PARAMETERS: Address - Address of allocated memory + * PARAMETERS: Allocation - Address of allocated memory * Component - Component type of caller * Module - Source file name of caller * Line - Line number of caller @@ -454,15 +855,16 @@ UnlockAndExit: ACPI_STATUS AcpiUtRemoveAllocation ( UINT32 ListId, - ACPI_DEBUG_MEM_BLOCK *Address, + ACPI_DEBUG_MEM_BLOCK *Allocation, UINT32 Component, NATIVE_CHAR *Module, UINT32 Line) { ACPI_MEMORY_LIST *MemList; + ACPI_STATUS Status; - FUNCTION_TRACE ("UtRemoveAllocation"); + ACPI_FUNCTION_TRACE ("UtRemoveAllocation"); if (ListId > ACPI_MEM_LIST_MAX) @@ -475,40 +877,42 @@ AcpiUtRemoveAllocation ( { /* No allocations! */ - _REPORT_ERROR (Module, Line, Component, + _ACPI_REPORT_ERROR (Module, Line, Component, ("UtRemoveAllocation: Empty allocation list, nothing to free!\n")); return_ACPI_STATUS (AE_OK); } - - AcpiUtAcquireMutex (ACPI_MTX_MEMORY); + Status = AcpiUtAcquireMutex (ACPI_MTX_MEMORY); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } /* Unlink */ - if (Address->Previous) + if (Allocation->Previous) { - (Address->Previous)->Next = Address->Next; + (Allocation->Previous)->Next = Allocation->Next; } else { - MemList->ListHead = Address->Next; + MemList->ListHead = Allocation->Next; } - if (Address->Next) + if (Allocation->Next) { - (Address->Next)->Previous = Address->Previous; + (Allocation->Next)->Previous = Allocation->Previous; } - /* Mark the segment as deleted */ - MEMSET (&Address->UserSpace, 0xEA, Address->Size); + ACPI_MEMSET (&Allocation->UserSpace, 0xEA, Allocation->Size); - ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "Freeing size %X\n", Address->Size)); + ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "Freeing size %X\n", Allocation->Size)); - AcpiUtReleaseMutex (ACPI_MTX_MEMORY); - return_ACPI_STATUS (AE_OK); + Status = AcpiUtReleaseMutex (ACPI_MTX_MEMORY); + return_ACPI_STATUS (Status); } @@ -532,7 +936,7 @@ AcpiUtDumpAllocationInfo ( ACPI_MEMORY_LIST *MemList; */ - FUNCTION_TRACE ("UtDumpAllocationInfo"); + ACPI_FUNCTION_TRACE ("UtDumpAllocationInfo"); /* ACPI_DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, @@ -593,19 +997,22 @@ AcpiUtDumpAllocations ( UINT32 NumOutstanding = 0; - FUNCTION_TRACE ("UtDumpAllocations"); + ACPI_FUNCTION_TRACE ("UtDumpAllocations"); /* * Walk the allocation list. */ - AcpiUtAcquireMutex (ACPI_MTX_MEMORY); + if (ACPI_FAILURE (AcpiUtAcquireMutex (ACPI_MTX_MEMORY))) + { + return; + } Element = AcpiGbl_MemoryLists[0].ListHead; while (Element) { if ((Element->Component & Component) && - ((Module == NULL) || (0 == STRCMP (Module, Element->Module)))) + ((Module == NULL) || (0 == ACPI_STRCMP (Module, Element->Module)))) { /* Ignore allocated objects that are in a cache */ @@ -617,8 +1024,7 @@ AcpiUtDumpAllocations ( /* Most of the elements will be internal objects. */ - switch (((ACPI_OPERAND_OBJECT *) - (&Element->UserSpace))->Common.DataType) + switch (ACPI_GET_DESCRIPTOR_TYPE (&Element->UserSpace)) { case ACPI_DESC_TYPE_INTERNAL: AcpiOsPrintf ("ObjType %12.12s R%d", @@ -684,7 +1090,7 @@ AcpiUtDumpAllocations ( Element = Element->Next; } - AcpiUtReleaseMutex (ACPI_MTX_MEMORY); + (void) AcpiUtReleaseMutex (ACPI_MTX_MEMORY); /* Print summary */ @@ -704,187 +1110,5 @@ AcpiUtDumpAllocations ( } -/******************************************************************************* - * - * FUNCTION: AcpiUtAllocate - * - * PARAMETERS: Size - Size of the allocation - * Component - Component type of caller - * Module - Source file name of caller - * Line - Line number of caller - * - * RETURN: Address of the allocated memory on success, NULL on failure. - * - * DESCRIPTION: The subsystem's equivalent of malloc. - * - ******************************************************************************/ - -void * -AcpiUtAllocate ( - UINT32 Size, - UINT32 Component, - NATIVE_CHAR *Module, - UINT32 Line) -{ - ACPI_DEBUG_MEM_BLOCK *Address; - ACPI_STATUS Status; - - - FUNCTION_TRACE_U32 ("UtAllocate", Size); - - - /* Check for an inadvertent size of zero bytes */ - - if (!Size) - { - _REPORT_ERROR (Module, Line, Component, - ("UtAllocate: Attempt to allocate zero bytes\n")); - Size = 1; - } - - Address = AcpiOsAllocate (Size + sizeof (ACPI_DEBUG_MEM_BLOCK)); - if (!Address) - { - /* Report allocation error */ - - _REPORT_ERROR (Module, Line, Component, - ("UtAllocate: Could not allocate size %X\n", Size)); - - return_PTR (NULL); - } - - Status = AcpiUtTrackAllocation (ACPI_MEM_LIST_GLOBAL, Address, Size, - MEM_MALLOC, Component, Module, Line); - if (ACPI_FAILURE (Status)) - { - AcpiOsFree (Address); - return_PTR (NULL); - } - - AcpiGbl_MemoryLists[ACPI_MEM_LIST_GLOBAL].TotalAllocated++; - AcpiGbl_MemoryLists[ACPI_MEM_LIST_GLOBAL].CurrentTotalSize += Size; - - ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "%p Size %X\n", Address, Size)); - - return_PTR ((void *) &Address->UserSpace); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtCallocate - * - * PARAMETERS: Size - Size of the allocation - * Component - Component type of caller - * Module - Source file name of caller - * Line - Line number of caller - * - * RETURN: Address of the allocated memory on success, NULL on failure. - * - * DESCRIPTION: Subsystem equivalent of calloc. - * - ******************************************************************************/ - -void * -AcpiUtCallocate ( - UINT32 Size, - UINT32 Component, - NATIVE_CHAR *Module, - UINT32 Line) -{ - ACPI_DEBUG_MEM_BLOCK *Address; - ACPI_STATUS Status; - - - FUNCTION_TRACE_U32 ("UtCallocate", Size); - - - /* Check for an inadvertent size of zero bytes */ - - if (!Size) - { - _REPORT_ERROR (Module, Line, Component, - ("UtCallocate: Attempt to allocate zero bytes\n")); - return_PTR (NULL); - } - - - Address = AcpiOsCallocate (Size + sizeof (ACPI_DEBUG_MEM_BLOCK)); - if (!Address) - { - /* Report allocation error */ - - _REPORT_ERROR (Module, Line, Component, - ("UtCallocate: Could not allocate size %X\n", Size)); - return_PTR (NULL); - } - - Status = AcpiUtTrackAllocation (ACPI_MEM_LIST_GLOBAL, Address, Size, - MEM_CALLOC, Component, Module, Line); - if (ACPI_FAILURE (Status)) - { - AcpiOsFree (Address); - return_PTR (NULL); - } - - AcpiGbl_MemoryLists[ACPI_MEM_LIST_GLOBAL].TotalAllocated++; - AcpiGbl_MemoryLists[ACPI_MEM_LIST_GLOBAL].CurrentTotalSize += Size; - - ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "%p Size %X\n", Address, Size)); - return_PTR ((void *) &Address->UserSpace); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtFree - * - * PARAMETERS: Address - Address of the memory to deallocate - * Component - Component type of caller - * Module - Source file name of caller - * Line - Line number of caller - * - * RETURN: None - * - * DESCRIPTION: Frees the memory at Address - * - ******************************************************************************/ - -void -AcpiUtFree ( - void *Address, - UINT32 Component, - NATIVE_CHAR *Module, - UINT32 Line) -{ - ACPI_DEBUG_MEM_BLOCK *DebugBlock; - - - FUNCTION_TRACE_PTR ("UtFree", Address); - - - if (NULL == Address) - { - _REPORT_ERROR (Module, Line, Component, - ("AcpiUtFree: Trying to delete a NULL address\n")); - - return_VOID; - } - - DebugBlock = (ACPI_DEBUG_MEM_BLOCK *) - (((char *) Address) - sizeof (ACPI_DEBUG_MEM_HEADER)); - - AcpiGbl_MemoryLists[ACPI_MEM_LIST_GLOBAL].TotalFreed++; - AcpiGbl_MemoryLists[ACPI_MEM_LIST_GLOBAL].CurrentTotalSize -= DebugBlock->Size; - - AcpiUtRemoveAllocation (ACPI_MEM_LIST_GLOBAL, DebugBlock, - Component, Module, Line); - AcpiOsFree (DebugBlock); - - ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "%p freed\n", Address)); - - return_VOID; -} - #endif /* #ifdef ACPI_DBG_TRACK_ALLOCATIONS */ diff --git a/sys/contrib/dev/acpica/utclib.c b/sys/contrib/dev/acpica/utclib.c index 9de98de71b47..01245eaa6772 100644 --- a/sys/contrib/dev/acpica/utclib.c +++ b/sys/contrib/dev/acpica/utclib.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: cmclib - Local implementation of C library functions - * $Revision: 39 $ + * $Revision: 43 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -131,7 +131,7 @@ */ #define _COMPONENT MISCELLANEOUS - MODULE_NAME ("cmclib") + ACPI_MODULE_NAME ("cmclib") #ifndef ACPI_USE_SYSTEM_CLIBRARY @@ -202,7 +202,6 @@ AcpiUtStrcpy ( /* Null terminate */ *String = 0; - return (DstString); } @@ -278,7 +277,6 @@ AcpiUtStrcmp ( } } - return ((unsigned char) *String1 - (unsigned char) *String2); } @@ -313,7 +311,7 @@ AcpiUtStrncmp ( } } - return ((Count == -1) ? 0 : ((unsigned char) *String1 - + return ((Count == ACPI_INTEGER_MAX) ? 0 : ((unsigned char) *String1 - (unsigned char) *String2)); } @@ -716,7 +714,6 @@ AcpiUtStrstr ( String++; } - return (String1); } @@ -769,13 +766,11 @@ AcpiUtStrtoul ( sign = NEGATIVE; ++String; } - else if (*String == '+') { ++String; sign = POSITIVE; } - else { sign = POSITIVE; @@ -794,19 +789,16 @@ AcpiUtStrtoul ( Base = 16; ++String; } - else { Base = 8; } } - else { Base = 10; } } - else if (Base < 2 || Base > 36) { /* @@ -842,7 +834,6 @@ AcpiUtStrtoul ( { index = *String - '0'; } - else { index = AcpiUtToUpper (*String); @@ -850,7 +841,6 @@ AcpiUtStrtoul ( { index = index - 'A' + 10; } - else { goto done; @@ -872,7 +862,6 @@ AcpiUtStrtoul ( Status = AE_ERROR; ReturnValue = 0L; /* reset */ } - else { ReturnValue *= Base; @@ -894,7 +883,6 @@ done: { *Terminator = (NATIVE_CHAR *) StringStart; } - else { *Terminator = (NATIVE_CHAR *) String; diff --git a/sys/contrib/dev/acpica/utcopy.c b/sys/contrib/dev/acpica/utcopy.c index 58202a705988..4587b10b0b33 100644 --- a/sys/contrib/dev/acpica/utcopy.c +++ b/sys/contrib/dev/acpica/utcopy.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: utcopy - Internal to external object translation utilities - * $Revision: 86 $ + * $Revision: 94 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -123,7 +123,7 @@ #define _COMPONENT ACPI_UTILITIES - MODULE_NAME ("utcopy") + ACPI_MODULE_NAME ("utcopy") /******************************************************************************* @@ -148,14 +148,16 @@ AcpiUtCopyIsimpleToEsimple ( ACPI_OPERAND_OBJECT *InternalObject, ACPI_OBJECT *ExternalObject, UINT8 *DataSpace, - UINT32 *BufferSpaceUsed) + ACPI_SIZE *BufferSpaceUsed) { - UINT32 Length = 0; + ACPI_BUFFER Buffer; ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE ("UtCopyIsimpleToEsimple"); + ACPI_FUNCTION_TRACE ("UtCopyIsimpleToEsimple"); + + *BufferSpaceUsed = 0; /* * Check for NULL object case (could be an uninitialized @@ -163,13 +165,12 @@ AcpiUtCopyIsimpleToEsimple ( */ if (!InternalObject) { - *BufferSpaceUsed = 0; return_ACPI_STATUS (AE_OK); } /* Always clear the external object */ - MEMSET (ExternalObject, 0, sizeof (ACPI_OBJECT)); + ACPI_MEMSET (ExternalObject, 0, sizeof (ACPI_OBJECT)); /* * In general, the external object will be the same type as @@ -181,28 +182,31 @@ AcpiUtCopyIsimpleToEsimple ( switch (InternalObject->Common.Type) { - case ACPI_TYPE_STRING: - Length = InternalObject->String.Length + 1; - ExternalObject->String.Length = InternalObject->String.Length; ExternalObject->String.Pointer = (NATIVE_CHAR *) DataSpace; - MEMCPY ((void *) DataSpace, (void *) InternalObject->String.Pointer, Length); + ExternalObject->String.Length = InternalObject->String.Length; + *BufferSpaceUsed = ACPI_ROUND_UP_TO_NATIVE_WORD (InternalObject->String.Length + 1); + + ACPI_MEMCPY ((void *) DataSpace, (void *) InternalObject->String.Pointer, + InternalObject->String.Length + 1); break; case ACPI_TYPE_BUFFER: - Length = InternalObject->Buffer.Length; - ExternalObject->Buffer.Length = InternalObject->Buffer.Length; ExternalObject->Buffer.Pointer = DataSpace; - MEMCPY ((void *) DataSpace, (void *) InternalObject->Buffer.Pointer, Length); + ExternalObject->Buffer.Length = InternalObject->Buffer.Length; + *BufferSpaceUsed = ACPI_ROUND_UP_TO_NATIVE_WORD (InternalObject->String.Length); + + ACPI_MEMCPY ((void *) DataSpace, (void *) InternalObject->Buffer.Pointer, + InternalObject->Buffer.Length); break; case ACPI_TYPE_INTEGER: - ExternalObject->Integer.Value= InternalObject->Integer.Value; + ExternalObject->Integer.Value = InternalObject->Integer.Value; break; @@ -238,15 +242,19 @@ AcpiUtCopyIsimpleToEsimple ( * This is a named reference, get the string. We already know that * we have room for it, use max length */ - Length = MAX_STRING_LENGTH; ExternalObject->Type = ACPI_TYPE_STRING; ExternalObject->String.Pointer = (NATIVE_CHAR *) DataSpace; + + Buffer.Length = MAX_STRING_LENGTH; + Buffer.Pointer = DataSpace; + Status = AcpiNsHandleToPathname ((ACPI_HANDLE *) InternalObject->Reference.Node, - &Length, (char *) DataSpace); + &Buffer); /* Converted (external) string length is returned from above */ - ExternalObject->String.Length = Length; + ExternalObject->String.Length = Buffer.Length; + *BufferSpaceUsed = ACPI_ROUND_UP_TO_NATIVE_WORD (Buffer.Length); break; default: @@ -284,12 +292,8 @@ AcpiUtCopyIsimpleToEsimple ( * There is no corresponding external object type */ return_ACPI_STATUS (AE_SUPPORT); - break; } - - *BufferSpaceUsed = (UINT32) ROUND_UP_TO_NATIVE_WORD (Length); - return_ACPI_STATUS (Status); } @@ -315,12 +319,12 @@ AcpiUtCopyIelementToEelement ( { ACPI_STATUS Status = AE_OK; ACPI_PKG_INFO *Info = (ACPI_PKG_INFO *) Context; - UINT32 ObjectSpace; + ACPI_SIZE ObjectSpace; UINT32 ThisIndex; ACPI_OBJECT *TargetObject; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); ThisIndex = State->Pkg.Index; @@ -361,14 +365,13 @@ AcpiUtCopyIelementToEelement ( * Save space for the array of objects (Package elements) * update the buffer length counter */ - ObjectSpace = (UINT32) ROUND_UP_TO_NATIVE_WORD ( + ObjectSpace = ACPI_ROUND_UP_TO_NATIVE_WORD ( TargetObject->Package.Count * sizeof (ACPI_OBJECT)); break; default: return (AE_BAD_PARAMETER); - break; } Info->FreeSpace += ObjectSpace; @@ -400,14 +403,14 @@ static ACPI_STATUS AcpiUtCopyIpackageToEpackage ( ACPI_OPERAND_OBJECT *InternalObject, UINT8 *Buffer, - UINT32 *SpaceUsed) + ACPI_SIZE *SpaceUsed) { ACPI_OBJECT *ExternalObject; ACPI_STATUS Status; ACPI_PKG_INFO Info; - FUNCTION_TRACE ("UtCopyIpackageToEpackage"); + ACPI_FUNCTION_TRACE ("UtCopyIpackageToEpackage"); /* @@ -421,7 +424,7 @@ AcpiUtCopyIpackageToEpackage ( Info.Length = 0; Info.ObjectSpace = 0; Info.NumPackages = 1; - Info.FreeSpace = Buffer + ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)); + Info.FreeSpace = Buffer + ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)); ExternalObject->Type = InternalObject->Common.Type; ExternalObject->Package.Count = InternalObject->Package.Count; @@ -432,7 +435,7 @@ AcpiUtCopyIpackageToEpackage ( * and move the free space past it */ Info.FreeSpace += ExternalObject->Package.Count * - ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)); + ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)); Status = AcpiUtWalkPackageTree (InternalObject, ExternalObject, AcpiUtCopyIelementToEelement, &Info); @@ -464,10 +467,10 @@ AcpiUtCopyIobjectToEobject ( ACPI_STATUS Status; - FUNCTION_TRACE ("UtCopyIobjectToEobject"); + ACPI_FUNCTION_TRACE ("UtCopyIobjectToEobject"); - if (IS_THIS_OBJECT_TYPE (InternalObject, ACPI_TYPE_PACKAGE)) + if (InternalObject->Common.Type == ACPI_TYPE_PACKAGE) { /* * Package object: Copy all subobjects (including @@ -484,7 +487,7 @@ AcpiUtCopyIobjectToEobject ( Status = AcpiUtCopyIsimpleToEsimple (InternalObject, (ACPI_OBJECT *) RetBuffer->Pointer, ((UINT8 *) RetBuffer->Pointer + - ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT))), + ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT))), &RetBuffer->Length); /* * build simple does not include the object size in the length @@ -521,7 +524,7 @@ AcpiUtCopyEsimpleToIsimple ( ACPI_OPERAND_OBJECT *InternalObject; - FUNCTION_TRACE ("UtCopyEsimpleToIsimple"); + ACPI_FUNCTION_TRACE ("UtCopyEsimpleToIsimple"); /* @@ -545,7 +548,6 @@ AcpiUtCopyEsimpleToIsimple ( * Whatever other type -- it is not supported */ return_ACPI_STATUS (AE_SUPPORT); - break; } @@ -562,9 +564,9 @@ AcpiUtCopyEsimpleToIsimple ( return_ACPI_STATUS (AE_NO_MEMORY); } - MEMCPY (InternalObject->String.Pointer, - ExternalObject->String.Pointer, - ExternalObject->String.Length); + ACPI_MEMCPY (InternalObject->String.Pointer, + ExternalObject->String.Pointer, + ExternalObject->String.Length); InternalObject->String.Length = ExternalObject->String.Length; break; @@ -578,9 +580,9 @@ AcpiUtCopyEsimpleToIsimple ( return_ACPI_STATUS (AE_NO_MEMORY); } - MEMCPY (InternalObject->Buffer.Pointer, - ExternalObject->Buffer.Pointer, - ExternalObject->Buffer.Length); + ACPI_MEMCPY (InternalObject->Buffer.Pointer, + ExternalObject->Buffer.Pointer, + ExternalObject->Buffer.Length); InternalObject->Buffer.Length = ExternalObject->Buffer.Length; break; @@ -635,7 +637,7 @@ AcpiUtCopyEpackageToIpackage ( ACPI_OBJECT *ThisExternalObj; - FUNCTION_TRACE ("UtCopyEpackageToIpackage"); + ACPI_FUNCTION_TRACE ("UtCopyEpackageToIpackage"); /* @@ -689,7 +691,7 @@ AcpiUtCopyEobjectToIobject ( ACPI_STATUS Status; - FUNCTION_TRACE ("UtCopyEobjectToIobject"); + ACPI_FUNCTION_TRACE ("UtCopyEobjectToIobject"); if (ExternalObject->Type == ACPI_TYPE_PACKAGE) @@ -717,11 +719,83 @@ AcpiUtCopyEobjectToIobject ( /******************************************************************************* * + * FUNCTION: AcpiUtCopySimpleObject + * + * PARAMETERS: SourceDesc - The internal object to be copied + * DestDesc - New target object + * + * RETURN: Status + * + * DESCRIPTION: Simple copy of one internal object to another. Reference count + * of the destination object is preserved. + * + ******************************************************************************/ + +ACPI_STATUS +AcpiUtCopySimpleObject ( + ACPI_OPERAND_OBJECT *SourceDesc, + ACPI_OPERAND_OBJECT *DestDesc) +{ + UINT16 ReferenceCount; + ACPI_OPERAND_OBJECT *NextObject; + + + /* Save fields from destination that we don't want to overwrite */ + + ReferenceCount = DestDesc->Common.ReferenceCount; + NextObject = DestDesc->Common.NextObject; + + /* Copy the entire source object over the destination object*/ + + ACPI_MEMCPY ((char *) DestDesc, (char *) SourceDesc, sizeof (ACPI_OPERAND_OBJECT)); + + /* Restore the saved fields */ + + DestDesc->Common.ReferenceCount = ReferenceCount; + DestDesc->Common.NextObject = NextObject; + + /* Handle the objects with extra data */ + + switch (DestDesc->Common.Type) + { + case ACPI_TYPE_BUFFER: + + DestDesc->Buffer.Node = NULL; + + case ACPI_TYPE_STRING: + + /* + * Allocate and copy the actual string if and only if: + * 1) There is a valid string (length > 0) + * 2) The string is not static (not in an ACPI table) (in this case, + * the actual pointer was already copied above) + */ + if ((SourceDesc->String.Length) && + (!(SourceDesc->Common.Flags & AOPOBJ_STATIC_POINTER))) + { + DestDesc->String.Pointer = ACPI_MEM_ALLOCATE (SourceDesc->String.Length); + if (!DestDesc->String.Pointer) + { + return (AE_NO_MEMORY); + } + + ACPI_MEMCPY (DestDesc->String.Pointer, SourceDesc->String.Pointer, + SourceDesc->String.Length); + } + break; + } + + return (AE_OK); +} + + +/******************************************************************************* + * * FUNCTION: AcpiUtCopyIelementToIelement * * PARAMETERS: ACPI_PKG_CALLBACK * - * RETURN: Status - the status of the call + * RETURN: Status * * DESCRIPTION: Copy one package element to another package element * @@ -740,7 +814,7 @@ AcpiUtCopyIelementToIelement ( ACPI_OPERAND_OBJECT *TargetObject; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); ThisIndex = State->Pkg.Index; @@ -760,8 +834,7 @@ AcpiUtCopyIelementToIelement ( return (AE_NO_MEMORY); } - Status = AcpiExStoreObjectToObject (SourceObject, TargetObject, - (ACPI_WALK_STATE *) Context); + Status = AcpiUtCopySimpleObject (SourceObject, TargetObject); if (ACPI_FAILURE (Status)) { return (Status); @@ -799,7 +872,6 @@ AcpiUtCopyIelementToIelement ( default: return (AE_BAD_PARAMETER); - break; } return (Status); @@ -829,7 +901,7 @@ AcpiUtCopyIpackageToIpackage ( ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE ("UtCopyIpackageToIpackage"); + ACPI_FUNCTION_TRACE ("UtCopyIpackageToIpackage"); DestObj->Common.Type = SourceObj->Common.Type; @@ -843,7 +915,7 @@ AcpiUtCopyIpackageToIpackage ( sizeof (void *)); if (!DestObj->Package.Elements) { - REPORT_ERROR ( + ACPI_REPORT_ERROR ( ("AmlBuildCopyInternalPackageObject: Package allocation failure\n")); return_ACPI_STATUS (AE_NO_MEMORY); } @@ -868,3 +940,54 @@ AcpiUtCopyIpackageToIpackage ( return_ACPI_STATUS (Status); } + +/******************************************************************************* + * + * FUNCTION: AcpiUtCopyIobjectToIobject + * + * PARAMETERS: WalkState - Current walk state + * SourceDesc - The internal object to be copied + * DestDesc - Where the copied object is returned + * + * RETURN: Status + * + * DESCRIPTION: Copy an internal object to a new internal object + * + ******************************************************************************/ + +ACPI_STATUS +AcpiUtCopyIobjectToIobject ( + ACPI_OPERAND_OBJECT *SourceDesc, + ACPI_OPERAND_OBJECT **DestDesc, + ACPI_WALK_STATE *WalkState) +{ + ACPI_STATUS Status = AE_OK; + + + ACPI_FUNCTION_TRACE ("UtCopyIobjectToIobject"); + + + /* Create the top level object */ + + *DestDesc = AcpiUtCreateInternalObject (SourceDesc->Common.Type); + if (!*DestDesc) + { + return_ACPI_STATUS (AE_NO_MEMORY); + } + + /* Copy the object and possible subobjects */ + + if (SourceDesc->Common.Type == ACPI_TYPE_PACKAGE) + { + Status = AcpiUtCopyIpackageToIpackage (SourceDesc, *DestDesc, + WalkState); + } + else + { + Status = AcpiUtCopySimpleObject (SourceDesc, *DestDesc); + } + + return_ACPI_STATUS (Status); +} + + diff --git a/sys/contrib/dev/acpica/utdebug.c b/sys/contrib/dev/acpica/utdebug.c index bc46c68be7c1..16b32a9adb48 100644 --- a/sys/contrib/dev/acpica/utdebug.c +++ b/sys/contrib/dev/acpica/utdebug.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: utdebug - Debug print routines - * $Revision: 91 $ + * $Revision: 95 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -119,7 +119,7 @@ #include "acpi.h" #define _COMPONENT ACPI_UTILITIES - MODULE_NAME ("utdebug") + ACPI_MODULE_NAME ("utdebug") UINT32 AcpiGbl_PrevThreadId = 0xFFFFFFFF; @@ -149,7 +149,7 @@ AcpiUtInitStackPtrTrace ( UINT32 CurrentSp; - AcpiGbl_EntryStackPointer = (UINT32) &CurrentSp; + AcpiGbl_EntryStackPointer = ACPI_PTR_DIFF (&CurrentSp, NULL); } @@ -169,9 +169,10 @@ void AcpiUtTrackStackPtr ( void) { - UINT32 CurrentSp; + ACPI_SIZE CurrentSp; + - CurrentSp = (UINT32) &CurrentSp; + CurrentSp = ACPI_PTR_DIFF (&CurrentSp, NULL); if (CurrentSp < AcpiGbl_LowestStackPointer) { @@ -532,7 +533,8 @@ AcpiUtValueExit ( { AcpiUtDebugPrint (ACPI_LV_FUNCTIONS, LineNumber, DbgInfo, - "%s %8.8X%8.8X\n", AcpiGbl_FnExitStr, HIDWORD(Value), LODWORD(Value)); + "%s %8.8X%8.8X\n", AcpiGbl_FnExitStr, + ACPI_HIDWORD (Value), ACPI_LODWORD (Value)); AcpiGbl_NestingLevel--; } @@ -645,8 +647,8 @@ AcpiUtDumpBuffer ( case DB_WORD_DISPLAY: - MOVE_UNALIGNED16_TO_32 (&Temp32, - &Buffer[i + j]); + ACPI_MOVE_UNALIGNED16_TO_32 (&Temp32, + &Buffer[i + j]); AcpiOsPrintf ("%04X ", Temp32); j += 2; break; @@ -654,8 +656,8 @@ AcpiUtDumpBuffer ( case DB_DWORD_DISPLAY: - MOVE_UNALIGNED32_TO_32 (&Temp32, - &Buffer[i + j]); + ACPI_MOVE_UNALIGNED32_TO_32 (&Temp32, + &Buffer[i + j]); AcpiOsPrintf ("%08X ", Temp32); j += 4; break; @@ -663,12 +665,12 @@ AcpiUtDumpBuffer ( case DB_QWORD_DISPLAY: - MOVE_UNALIGNED32_TO_32 (&Temp32, - &Buffer[i + j]); + ACPI_MOVE_UNALIGNED32_TO_32 (&Temp32, + &Buffer[i + j]); AcpiOsPrintf ("%08X", Temp32); - MOVE_UNALIGNED32_TO_32 (&Temp32, - &Buffer[i + j + 4]); + ACPI_MOVE_UNALIGNED32_TO_32 (&Temp32, + &Buffer[i + j + 4]); AcpiOsPrintf ("%08X ", Temp32); j += 8; break; diff --git a/sys/contrib/dev/acpica/utdelete.c b/sys/contrib/dev/acpica/utdelete.c index ccbe0da347c8..478bc78282f4 100644 --- a/sys/contrib/dev/acpica/utdelete.c +++ b/sys/contrib/dev/acpica/utdelete.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: utdelete - object deletion and reference count utilities - * $Revision: 83 $ + * $Revision: 87 $ * ******************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -123,7 +123,7 @@ #include "acparser.h" #define _COMPONENT ACPI_UTILITIES - MODULE_NAME ("utdelete") + ACPI_MODULE_NAME ("utdelete") /******************************************************************************* @@ -148,7 +148,7 @@ AcpiUtDeleteInternalObj ( ACPI_OPERAND_OBJECT *SecondDesc; - FUNCTION_TRACE_PTR ("UtDeleteInternalObj", Object); + ACPI_FUNCTION_TRACE_PTR ("UtDeleteInternalObj", Object); if (!Object) @@ -252,7 +252,7 @@ AcpiUtDeleteInternalObj ( */ HandlerDesc = Object->Region.AddrHandler; if ((HandlerDesc) && - (HandlerDesc->AddrHandler.Hflags == ADDR_HANDLER_DEFAULT_INSTALLED)) + (HandlerDesc->AddrHandler.Hflags == ACPI_ADDR_HANDLER_DEFAULT_INSTALLED)) { ObjPointer = SecondDesc->Extra.RegionContext; } @@ -281,31 +281,21 @@ AcpiUtDeleteInternalObj ( } - /* - * Delete any allocated memory found above - */ + /* Free any allocated memory (pointer within the object) found above */ + if (ObjPointer) { - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Deleting Obj Ptr %p \n", ObjPointer)); + ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Deleting Object Subptr %p\n", + ObjPointer)); ACPI_MEM_FREE (ObjPointer); } - /* Only delete the object if it was dynamically allocated */ - - if (Object->Common.Flags & AOPOBJ_STATIC_ALLOCATION) - { - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Object %p [%s] static allocation, no delete\n", - Object, AcpiUtGetTypeName (Object->Common.Type))); - } + /* Now the object can be safely deleted */ - if (!(Object->Common.Flags & AOPOBJ_STATIC_ALLOCATION)) - { - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Deleting object %p [%s]\n", + ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Deleting Object %p [%s]\n", Object, AcpiUtGetTypeName (Object->Common.Type))); - AcpiUtDeleteObjectDesc (Object); - } - + AcpiUtDeleteObjectDesc (Object); return_VOID; } @@ -330,7 +320,7 @@ AcpiUtDeleteInternalObjectList ( ACPI_OPERAND_OBJECT **InternalObj; - FUNCTION_TRACE ("UtDeleteInternalObjectList"); + ACPI_FUNCTION_TRACE ("UtDeleteInternalObjectList"); /* Walk the null-terminated internal list */ @@ -370,7 +360,7 @@ AcpiUtUpdateRefCount ( UINT16 NewCount; - PROC_NAME ("UtUpdateRefCount"); + ACPI_FUNCTION_NAME ("UtUpdateRefCount"); if (!Object) { @@ -499,7 +489,7 @@ AcpiUtUpdateObjectReference ( ACPI_GENERIC_STATE *State; - FUNCTION_TRACE_PTR ("UtUpdateObjectReference", Object); + ACPI_FUNCTION_TRACE_PTR ("UtUpdateObjectReference", Object); /* Ignore a null object ptr */ @@ -509,17 +499,15 @@ AcpiUtUpdateObjectReference ( return_ACPI_STATUS (AE_OK); } - /* - * Make sure that this isn't a namespace handle or an AML pointer + * Make sure that this isn't a namespace handle */ - if (VALID_DESCRIPTOR_TYPE (Object, ACPI_DESC_TYPE_NAMED)) + if (ACPI_GET_DESCRIPTOR_TYPE (Object) == ACPI_DESC_TYPE_NAMED) { ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Object %p is NS handle\n", Object)); return_ACPI_STATUS (AE_OK); } - State = AcpiUtCreateUpdateState (Object, Action); while (State) @@ -534,7 +522,6 @@ AcpiUtUpdateObjectReference ( */ switch (Object->Common.Type) { - case ACPI_TYPE_DEVICE: Status = AcpiUtCreateUpdateStateAndPush (Object->Device.AddrHandler, @@ -653,7 +640,6 @@ AcpiUtUpdateObjectReference ( break; } - /* * Now we can update the count in the main object. This can only * happen after we update the sub-objects in case this causes the @@ -661,13 +647,11 @@ AcpiUtUpdateObjectReference ( */ AcpiUtUpdateRefCount (Object, Action); - /* Move on to the next object to be updated */ State = AcpiUtPopGenericState (&StateList); } - return_ACPI_STATUS (AE_OK); } @@ -690,7 +674,7 @@ AcpiUtAddReference ( ACPI_OPERAND_OBJECT *Object) { - FUNCTION_TRACE_PTR ("UtAddReference", Object); + ACPI_FUNCTION_TRACE_PTR ("UtAddReference", Object); /* @@ -727,7 +711,7 @@ AcpiUtRemoveReference ( ACPI_OPERAND_OBJECT *Object) { - FUNCTION_TRACE_PTR ("UtRemoveReference", Object); + ACPI_FUNCTION_TRACE_PTR ("UtRemoveReference", Object); /* * Allow a NULL pointer to be passed in, just ignore it. This saves @@ -735,7 +719,7 @@ AcpiUtRemoveReference ( * */ if (!Object || - (VALID_DESCRIPTOR_TYPE (Object, ACPI_DESC_TYPE_NAMED))) + (ACPI_GET_DESCRIPTOR_TYPE (Object) == ACPI_DESC_TYPE_NAMED)) { return_VOID; diff --git a/sys/contrib/dev/acpica/uteval.c b/sys/contrib/dev/acpica/uteval.c index d2dd7c5e6d03..51c928440e49 100644 --- a/sys/contrib/dev/acpica/uteval.c +++ b/sys/contrib/dev/acpica/uteval.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: uteval - Object evaluation - * $Revision: 34 $ + * $Revision: 37 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -122,7 +122,7 @@ #define _COMPONENT ACPI_UTILITIES - MODULE_NAME ("uteval") + ACPI_MODULE_NAME ("uteval") /******************************************************************************* @@ -152,7 +152,7 @@ AcpiUtEvaluateNumericObject ( ACPI_STATUS Status; - FUNCTION_TRACE ("UtEvaluateNumericObject"); + ACPI_FUNCTION_TRACE ("UtEvaluateNumericObject"); /* Execute the method */ @@ -163,12 +163,12 @@ AcpiUtEvaluateNumericObject ( if (Status == AE_NOT_FOUND) { ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "%s on %4.4s was not found\n", - ObjectName, (char*)&DeviceNode->Name)); + ObjectName, (char *) &DeviceNode->Name)); } else { ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "%s on %4.4s failed with status %s\n", - ObjectName, (char*)&DeviceNode->Name, + ObjectName, (char *) &DeviceNode->Name, AcpiFormatException (Status))); } @@ -236,7 +236,7 @@ AcpiUtExecute_HID ( ACPI_STATUS Status; - FUNCTION_TRACE ("UtExecute_HID"); + ACPI_FUNCTION_TRACE ("UtExecute_HID"); /* Execute the method */ @@ -248,12 +248,12 @@ AcpiUtExecute_HID ( if (Status == AE_NOT_FOUND) { ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "_HID on %4.4s was not found\n", - (char*)&DeviceNode->Name)); + (char *) &DeviceNode->Name)); } else { ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "_HID on %4.4s failed %s\n", - (char*)&DeviceNode->Name, AcpiFormatException (Status))); + (char *) &DeviceNode->Name, AcpiFormatException (Status))); } return_ACPI_STATUS (Status); @@ -291,7 +291,7 @@ AcpiUtExecute_HID ( { /* Copy the String HID from the returned object */ - STRNCPY(Hid->Buffer, ObjDesc->String.Pointer, sizeof(Hid->Buffer)); + ACPI_STRNCPY (Hid->Buffer, ObjDesc->String.Pointer, sizeof(Hid->Buffer)); } } @@ -328,7 +328,7 @@ AcpiUtExecute_CID ( ACPI_STATUS Status; - FUNCTION_TRACE ("UtExecute_CID"); + ACPI_FUNCTION_TRACE ("UtExecute_CID"); /* Execute the method */ @@ -376,7 +376,7 @@ AcpiUtExecute_CID ( /* Copy the String CID from the returned object */ - STRNCPY(Cid->Buffer, ObjDesc->String.Pointer, sizeof(Cid->Buffer)); + ACPI_STRNCPY (Cid->Buffer, ObjDesc->String.Pointer, sizeof(Cid->Buffer)); break; case ACPI_TYPE_PACKAGE: @@ -426,7 +426,7 @@ AcpiUtExecute_UID ( ACPI_STATUS Status; - PROC_NAME ("UtExecute_UID"); + ACPI_FUNCTION_NAME ("UtExecute_UID"); /* Execute the method */ @@ -438,13 +438,13 @@ AcpiUtExecute_UID ( if (Status == AE_NOT_FOUND) { ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "_UID on %4.4s was not found\n", - (char*)&DeviceNode->Name)); + (char *) &DeviceNode->Name)); } else { ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "_UID on %4.4s failed %s\n", - (char*)&DeviceNode->Name, AcpiFormatException (Status))); + (char *) &DeviceNode->Name, AcpiFormatException (Status))); } return (Status); @@ -482,7 +482,7 @@ AcpiUtExecute_UID ( { /* Copy the String UID from the returned object */ - STRNCPY(Uid->Buffer, ObjDesc->String.Pointer, sizeof(Uid->Buffer)); + ACPI_STRNCPY (Uid->Buffer, ObjDesc->String.Pointer, sizeof(Uid->Buffer)); } } @@ -520,7 +520,7 @@ AcpiUtExecute_STA ( ACPI_STATUS Status; - FUNCTION_TRACE ("UtExecute_STA"); + ACPI_FUNCTION_TRACE ("UtExecute_STA"); /* Execute the method */ @@ -531,7 +531,7 @@ AcpiUtExecute_STA ( { ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "_STA on %4.4s was not found, assuming present.\n", - (char*)&DeviceNode->Name)); + (char *) &DeviceNode->Name)); *Flags = 0x0F; Status = AE_OK; @@ -540,7 +540,7 @@ AcpiUtExecute_STA ( else if (ACPI_FAILURE (Status)) { ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "_STA on %4.4s failed %s\n", - (char*)&DeviceNode->Name, + (char *) &DeviceNode->Name, AcpiFormatException (Status))); } diff --git a/sys/contrib/dev/acpica/utglobal.c b/sys/contrib/dev/acpica/utglobal.c index 453cd0226fd4..4758da7cad33 100644 --- a/sys/contrib/dev/acpica/utglobal.c +++ b/sys/contrib/dev/acpica/utglobal.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: utglobal - Global variables for the ACPI subsystem - * $Revision: 136 $ + * $Revision: 153 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -125,7 +125,7 @@ #define _COMPONENT ACPI_UTILITIES - MODULE_NAME ("utglobal") + ACPI_MODULE_NAME ("utglobal") /****************************************************************************** @@ -265,7 +265,7 @@ const NATIVE_CHAR *AcpiGbl_DbSleepStates[ACPI_NUM_SLEEP_STATES] = { * during the initialization sequence. */ -const PREDEFINED_NAMES AcpiGbl_PreDefinedNames[] = +const ACPI_PREDEFINED_NAMES AcpiGbl_PreDefinedNames[] = { {"_GPE", INTERNAL_TYPE_DEF_ANY}, {"_PR_", INTERNAL_TYPE_DEF_ANY}, @@ -286,45 +286,45 @@ const PREDEFINED_NAMES AcpiGbl_PreDefinedNames[] = * and the table is indexed by values of ACPI_OBJECT_TYPE */ -const UINT8 AcpiGbl_NsProperties[] = +const UINT8 AcpiGbl_NsProperties[] = { - NSP_NORMAL, /* 00 Any */ - NSP_NORMAL, /* 01 Number */ - NSP_NORMAL, /* 02 String */ - NSP_NORMAL, /* 03 Buffer */ - NSP_LOCAL, /* 04 Package */ - NSP_NORMAL, /* 05 FieldUnit */ - NSP_NEWSCOPE | NSP_LOCAL, /* 06 Device */ - NSP_LOCAL, /* 07 AcpiEvent */ - NSP_NEWSCOPE | NSP_LOCAL, /* 08 Method */ - NSP_LOCAL, /* 09 Mutex */ - NSP_LOCAL, /* 10 Region */ - NSP_NEWSCOPE | NSP_LOCAL, /* 11 Power */ - NSP_NEWSCOPE | NSP_LOCAL, /* 12 Processor */ - NSP_NEWSCOPE | NSP_LOCAL, /* 13 Thermal */ - NSP_NORMAL, /* 14 BufferField */ - NSP_NORMAL, /* 15 DdbHandle */ - NSP_NORMAL, /* 16 Debug Object */ - NSP_NORMAL, /* 17 DefField */ - NSP_NORMAL, /* 18 BankField */ - NSP_NORMAL, /* 19 IndexField */ - NSP_NORMAL, /* 20 Reference */ - NSP_NORMAL, /* 21 Alias */ - NSP_NORMAL, /* 22 Notify */ - NSP_NORMAL, /* 23 Address Handler */ - NSP_NEWSCOPE | NSP_LOCAL, /* 24 Resource Desc */ - NSP_NEWSCOPE | NSP_LOCAL, /* 25 Resource Field */ - NSP_NORMAL, /* 26 DefFieldDefn */ - NSP_NORMAL, /* 27 BankFieldDefn */ - NSP_NORMAL, /* 28 IndexFieldDefn */ - NSP_NORMAL, /* 29 If */ - NSP_NORMAL, /* 30 Else */ - NSP_NORMAL, /* 31 While */ - NSP_NEWSCOPE, /* 32 Scope */ - NSP_LOCAL, /* 33 DefAny */ - NSP_NORMAL, /* 34 Extra */ - NSP_NORMAL, /* 35 Data */ - NSP_NORMAL /* 36 Invalid */ + ACPI_NS_NORMAL, /* 00 Any */ + ACPI_NS_NORMAL, /* 01 Number */ + ACPI_NS_NORMAL, /* 02 String */ + ACPI_NS_NORMAL, /* 03 Buffer */ + ACPI_NS_LOCAL, /* 04 Package */ + ACPI_NS_NORMAL, /* 05 FieldUnit */ + ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL, /* 06 Device */ + ACPI_NS_LOCAL, /* 07 AcpiEvent */ + ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL, /* 08 Method */ + ACPI_NS_LOCAL, /* 09 Mutex */ + ACPI_NS_LOCAL, /* 10 Region */ + ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL, /* 11 Power */ + ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL, /* 12 Processor */ + ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL, /* 13 Thermal */ + ACPI_NS_NORMAL, /* 14 BufferField */ + ACPI_NS_NORMAL, /* 15 DdbHandle */ + ACPI_NS_NORMAL, /* 16 Debug Object */ + ACPI_NS_NORMAL, /* 17 DefField */ + ACPI_NS_NORMAL, /* 18 BankField */ + ACPI_NS_NORMAL, /* 19 IndexField */ + ACPI_NS_NORMAL, /* 20 Reference */ + ACPI_NS_NORMAL, /* 21 Alias */ + ACPI_NS_NORMAL, /* 22 Notify */ + ACPI_NS_NORMAL, /* 23 Address Handler */ + ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL, /* 24 Resource Desc */ + ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL, /* 25 Resource Field */ + ACPI_NS_NORMAL, /* 26 DefFieldDefn */ + ACPI_NS_NORMAL, /* 27 BankFieldDefn */ + ACPI_NS_NORMAL, /* 28 IndexFieldDefn */ + ACPI_NS_NORMAL, /* 29 If */ + ACPI_NS_NORMAL, /* 30 Else */ + ACPI_NS_NORMAL, /* 31 While */ + ACPI_NS_NEWSCOPE, /* 32 Scope */ + ACPI_NS_LOCAL, /* 33 DefAny */ + ACPI_NS_NORMAL, /* 34 Extra */ + ACPI_NS_NORMAL, /* 35 Data */ + ACPI_NS_NORMAL /* 36 Invalid */ }; @@ -360,12 +360,15 @@ AcpiUtHexToAsciiChar ( /****************************************************************************** * - * Table globals + * Table name globals * * NOTE: This table includes ONLY the ACPI tables that the subsystem consumes. * it is NOT an exhaustive list of all possible ACPI tables. All ACPI tables * that are not used by the subsystem are simply ignored. * + * Do NOT add any table to this list that is not consumed directly by this + * subsystem. + * ******************************************************************************/ @@ -374,18 +377,147 @@ ACPI_TABLE_DESC AcpiGbl_AcpiTables[NUM_ACPI_TABLES]; ACPI_TABLE_SUPPORT AcpiGbl_AcpiTableData[NUM_ACPI_TABLES] = { - /*********** Name, Signature, Signature size, How many allowed?, Supported? Global typed pointer */ - - /* RSDP 0 */ {RSDP_NAME, RSDP_SIG, sizeof (RSDP_SIG)-1, ACPI_TABLE_SINGLE, AE_OK, NULL}, - /* DSDT 1 */ {DSDT_SIG, DSDT_SIG, sizeof (DSDT_SIG)-1, ACPI_TABLE_SINGLE, AE_OK, (void **) &AcpiGbl_DSDT}, - /* FADT 2 */ {FADT_SIG, FADT_SIG, sizeof (FADT_SIG)-1, ACPI_TABLE_SINGLE, AE_OK, (void **) &AcpiGbl_FADT}, - /* FACS 3 */ {FACS_SIG, FACS_SIG, sizeof (FACS_SIG)-1, ACPI_TABLE_SINGLE, AE_OK, (void **) &AcpiGbl_FACS}, - /* PSDT 4 */ {PSDT_SIG, PSDT_SIG, sizeof (PSDT_SIG)-1, ACPI_TABLE_MULTIPLE, AE_OK, NULL}, - /* SSDT 5 */ {SSDT_SIG, SSDT_SIG, sizeof (SSDT_SIG)-1, ACPI_TABLE_MULTIPLE, AE_OK, NULL}, - /* XSDT 6 */ {XSDT_SIG, XSDT_SIG, sizeof (RSDT_SIG)-1, ACPI_TABLE_SINGLE, AE_OK, NULL}, + /*********** Name, Signature, Global typed pointer Signature size, How many allowed?, Contains valid AML? */ + + /* RSDP 0 */ {RSDP_NAME, RSDP_SIG, NULL, sizeof (RSDP_SIG)-1, ACPI_TABLE_SINGLE}, + /* DSDT 1 */ {DSDT_SIG, DSDT_SIG, (void **) &AcpiGbl_DSDT, sizeof (DSDT_SIG)-1, ACPI_TABLE_SINGLE | ACPI_TABLE_EXECUTABLE}, + /* FADT 2 */ {FADT_SIG, FADT_SIG, (void **) &AcpiGbl_FADT, sizeof (FADT_SIG)-1, ACPI_TABLE_SINGLE}, + /* FACS 3 */ {FACS_SIG, FACS_SIG, (void **) &AcpiGbl_FACS, sizeof (FACS_SIG)-1, ACPI_TABLE_SINGLE}, + /* PSDT 4 */ {PSDT_SIG, PSDT_SIG, NULL, sizeof (PSDT_SIG)-1, ACPI_TABLE_MULTIPLE | ACPI_TABLE_EXECUTABLE}, + /* SSDT 5 */ {SSDT_SIG, SSDT_SIG, NULL, sizeof (SSDT_SIG)-1, ACPI_TABLE_MULTIPLE | ACPI_TABLE_EXECUTABLE}, + /* XSDT 6 */ {XSDT_SIG, XSDT_SIG, NULL, sizeof (RSDT_SIG)-1, ACPI_TABLE_SINGLE}, +}; + + +/****************************************************************************** + * + * Event and Hardware globals + * + ******************************************************************************/ + +ACPI_BIT_REGISTER_INFO AcpiGbl_BitRegisterInfo[ACPI_NUM_BITREG] = +{ + /* Name Parent Register Register Bit Position Register Bit Mask */ + + /* ACPI_BITREG_TIMER_STATUS */ {ACPI_REGISTER_PM1_STATUS, ACPI_BITPOSITION_TIMER_STATUS, ACPI_BITMASK_TIMER_STATUS}, + /* ACPI_BITREG_BUS_MASTER_STATUS */ {ACPI_REGISTER_PM1_STATUS, ACPI_BITPOSITION_BUS_MASTER_STATUS, ACPI_BITMASK_BUS_MASTER_STATUS}, + /* ACPI_BITREG_GLOBAL_LOCK_STATUS */ {ACPI_REGISTER_PM1_STATUS, ACPI_BITPOSITION_GLOBAL_LOCK_STATUS, ACPI_BITMASK_GLOBAL_LOCK_STATUS}, + /* ACPI_BITREG_POWER_BUTTON_STATUS */ {ACPI_REGISTER_PM1_STATUS, ACPI_BITPOSITION_POWER_BUTTON_STATUS, ACPI_BITMASK_POWER_BUTTON_STATUS}, + /* ACPI_BITREG_SLEEP_BUTTON_STATUS */ {ACPI_REGISTER_PM1_STATUS, ACPI_BITPOSITION_SLEEP_BUTTON_STATUS, ACPI_BITMASK_SLEEP_BUTTON_STATUS}, + /* ACPI_BITREG_RT_CLOCK_STATUS */ {ACPI_REGISTER_PM1_STATUS, ACPI_BITPOSITION_RT_CLOCK_STATUS, ACPI_BITMASK_RT_CLOCK_STATUS}, + /* ACPI_BITREG_WAKE_STATUS */ {ACPI_REGISTER_PM1_STATUS, ACPI_BITPOSITION_WAKE_STATUS, ACPI_BITMASK_WAKE_STATUS}, + + /* ACPI_BITREG_TIMER_ENABLE */ {ACPI_REGISTER_PM1_ENABLE, ACPI_BITPOSITION_TIMER_ENABLE, ACPI_BITMASK_TIMER_ENABLE}, + /* ACPI_BITREG_GLOBAL_LOCK_ENABLE */ {ACPI_REGISTER_PM1_ENABLE, ACPI_BITPOSITION_GLOBAL_LOCK_ENABLE, ACPI_BITMASK_GLOBAL_LOCK_ENABLE}, + /* ACPI_BITREG_POWER_BUTTON_ENABLE */ {ACPI_REGISTER_PM1_ENABLE, ACPI_BITPOSITION_POWER_BUTTON_ENABLE, ACPI_BITMASK_POWER_BUTTON_ENABLE}, + /* ACPI_BITREG_SLEEP_BUTTON_ENABLE */ {ACPI_REGISTER_PM1_ENABLE, ACPI_BITPOSITION_SLEEP_BUTTON_ENABLE, ACPI_BITMASK_SLEEP_BUTTON_ENABLE}, + /* ACPI_BITREG_RT_CLOCK_ENABLE */ {ACPI_REGISTER_PM1_ENABLE, ACPI_BITPOSITION_RT_CLOCK_ENABLE, ACPI_BITMASK_RT_CLOCK_ENABLE}, + /* ACPI_BITREG_WAKE_ENABLE */ {ACPI_REGISTER_PM1_ENABLE, 0, 0}, + + /* ACPI_BITREG_SCI_ENABLE */ {ACPI_REGISTER_PM1_CONTROL, ACPI_BITPOSITION_SCI_ENABLE, ACPI_BITMASK_SCI_ENABLE}, + /* ACPI_BITREG_BUS_MASTER_RLD */ {ACPI_REGISTER_PM1_CONTROL, ACPI_BITPOSITION_BUS_MASTER_RLD, ACPI_BITMASK_BUS_MASTER_RLD}, + /* ACPI_BITREG_GLOBAL_LOCK_RELEASE */ {ACPI_REGISTER_PM1_CONTROL, ACPI_BITPOSITION_GLOBAL_LOCK_RELEASE, ACPI_BITMASK_GLOBAL_LOCK_RELEASE}, + /* ACPI_BITREG_SLEEP_TYPE_A */ {ACPI_REGISTER_PM1_CONTROL, ACPI_BITPOSITION_SLEEP_TYPE_X, ACPI_BITMASK_SLEEP_TYPE_X}, + /* ACPI_BITREG_SLEEP_TYPE_B */ {ACPI_REGISTER_PM1_CONTROL, ACPI_BITPOSITION_SLEEP_TYPE_X, ACPI_BITMASK_SLEEP_TYPE_X}, + /* ACPI_BITREG_SLEEP_ENABLE */ {ACPI_REGISTER_PM1_CONTROL, ACPI_BITPOSITION_SLEEP_ENABLE, ACPI_BITMASK_SLEEP_ENABLE}, + + /* ACPI_BITREG_ARB_DIS */ {ACPI_REGISTER_PM2_CONTROL, ACPI_BITPOSITION_ARB_DISABLE, ACPI_BITMASK_ARB_DISABLE} +}; + + +ACPI_FIXED_EVENT_INFO AcpiGbl_FixedEventInfo[ACPI_NUM_FIXED_EVENTS] = +{ + /* ACPI_EVENT_PMTIMER */ {ACPI_BITREG_TIMER_STATUS, ACPI_BITREG_TIMER_ENABLE, ACPI_BITMASK_TIMER_STATUS, ACPI_BITMASK_TIMER_ENABLE}, + /* ACPI_EVENT_GLOBAL */ {ACPI_BITREG_GLOBAL_LOCK_STATUS, ACPI_BITREG_GLOBAL_LOCK_ENABLE, ACPI_BITMASK_GLOBAL_LOCK_STATUS, ACPI_BITMASK_GLOBAL_LOCK_ENABLE}, + /* ACPI_EVENT_POWER_BUTTON */ {ACPI_BITREG_POWER_BUTTON_STATUS, ACPI_BITREG_POWER_BUTTON_ENABLE, ACPI_BITMASK_POWER_BUTTON_STATUS, ACPI_BITMASK_POWER_BUTTON_ENABLE}, + /* ACPI_EVENT_SLEEP_BUTTON */ {ACPI_BITREG_SLEEP_BUTTON_STATUS, ACPI_BITREG_SLEEP_BUTTON_ENABLE, ACPI_BITMASK_SLEEP_BUTTON_STATUS, ACPI_BITMASK_SLEEP_BUTTON_ENABLE}, + /* ACPI_EVENT_RTC */ {ACPI_BITREG_RT_CLOCK_STATUS, ACPI_BITREG_RT_CLOCK_ENABLE, 0, 0}, +}; + +/***************************************************************************** + * + * FUNCTION: AcpiUtGetRegionName + * + * PARAMETERS: None. + * + * RETURN: Status + * + * DESCRIPTION: Translate a Space ID into a name string (Debug only) + * + ****************************************************************************/ + +/* Region type decoding */ + +const NATIVE_CHAR *AcpiGbl_RegionTypes[ACPI_NUM_PREDEFINED_REGIONS] = +{ + "SystemMemory", + "SystemIO", + "PCIConfig", + "EmbeddedControl", + "SMBus", + "CMOS", + "PCIBarTarget", + "DataTable", +}; + + +NATIVE_CHAR * +AcpiUtGetRegionName ( + UINT8 SpaceId) +{ + + if (SpaceId >= ACPI_USER_REGION_BEGIN) + { + return ("UserDefinedRegion"); + } + + else if (SpaceId >= ACPI_NUM_PREDEFINED_REGIONS) + { + return ("InvalidSpaceID"); + } + + return ((NATIVE_CHAR *) AcpiGbl_RegionTypes[SpaceId]); +} + + +/***************************************************************************** + * + * FUNCTION: AcpiUtGetEventName + * + * PARAMETERS: None. + * + * RETURN: Status + * + * DESCRIPTION: Translate a Event ID into a name string (Debug only) + * + ****************************************************************************/ + +/* Event type decoding */ + +const NATIVE_CHAR *AcpiGbl_EventTypes[ACPI_NUM_FIXED_EVENTS] = +{ + "PM_Timer", + "GlobalLock", + "PowerButton", + "SleepButton", + "RealTimeClock", }; +NATIVE_CHAR * +AcpiUtGetEventName ( + UINT32 EventId) +{ + + if (EventId > ACPI_EVENT_MAX) + { + return ("InvalidEventID"); + } + + return ((NATIVE_CHAR *) AcpiGbl_EventTypes[EventId]); +} + + #ifdef ACPI_DEBUG /* @@ -420,6 +552,18 @@ AcpiUtGetMutexName ( } +/***************************************************************************** + * + * FUNCTION: AcpiUtGetTypeName + * + * PARAMETERS: None. + * + * RETURN: Status + * + * DESCRIPTION: Translate a Type ID into a name string (Debug only) + * + ****************************************************************************/ + /* * Elements of AcpiGbl_NsTypeNames below must match * one-to-one with values of ACPI_OBJECT_TYPE @@ -474,21 +618,9 @@ static const NATIVE_CHAR *AcpiGbl_NsTypeNames[] = /* printable names of AC }; -/***************************************************************************** - * - * FUNCTION: AcpiUtGetTypeName - * - * PARAMETERS: None. - * - * RETURN: Status - * - * DESCRIPTION: Translate a Type ID into a name string (Debug only) - * - ****************************************************************************/ - NATIVE_CHAR * AcpiUtGetTypeName ( - UINT32 Type) + ACPI_OBJECT_TYPE Type) { if (Type > INTERNAL_TYPE_INVALID) @@ -500,51 +632,6 @@ AcpiUtGetTypeName ( } -/* Region type decoding */ - -const NATIVE_CHAR *AcpiGbl_RegionTypes[ACPI_NUM_PREDEFINED_REGIONS] = -{ - "SystemMemory", - "SystemIO", - "PCIConfig", - "EmbeddedControl", - "SMBus", - "CMOS", - "PCIBarTarget", -}; - - -/***************************************************************************** - * - * FUNCTION: AcpiUtGetRegionName - * - * PARAMETERS: None. - * - * RETURN: Status - * - * DESCRIPTION: Translate a Space ID into a name string (Debug only) - * - ****************************************************************************/ - -NATIVE_CHAR * -AcpiUtGetRegionName ( - UINT8 SpaceId) -{ - - if (SpaceId >= ACPI_USER_REGION_BEGIN) - { - return ("UserDefinedRegion"); - } - - else if (SpaceId >= ACPI_NUM_PREDEFINED_REGIONS) - { - return ("InvalidSpaceID"); - } - - return ((NATIVE_CHAR *) AcpiGbl_RegionTypes[SpaceId]); -} - - /* Data used in keeping track of fields */ const NATIVE_CHAR *AcpiGbl_FENames[NUM_FIELD_NAMES] = @@ -605,7 +692,7 @@ const NATIVE_CHAR *AcpiGbl_UpdateRules[NUM_UPDATE_RULES] = BOOLEAN AcpiUtValidObjectType ( - UINT32 Type) + ACPI_OBJECT_TYPE Type) { if (Type > ACPI_TYPE_MAX) @@ -638,40 +725,41 @@ AcpiUtAllocateOwnerId ( ACPI_OWNER_ID OwnerId = 0xFFFF; - FUNCTION_TRACE ("UtAllocateOwnerId"); + ACPI_FUNCTION_TRACE ("UtAllocateOwnerId"); - AcpiUtAcquireMutex (ACPI_MTX_CACHES); + if (ACPI_FAILURE (AcpiUtAcquireMutex (ACPI_MTX_CACHES))) + { + return (0); + } switch (IdType) { - case OWNER_TYPE_TABLE: + case ACPI_OWNER_TYPE_TABLE: OwnerId = AcpiGbl_NextTableOwnerId; AcpiGbl_NextTableOwnerId++; - if (AcpiGbl_NextTableOwnerId == FIRST_METHOD_ID) + if (AcpiGbl_NextTableOwnerId == ACPI_FIRST_METHOD_ID) { - AcpiGbl_NextTableOwnerId = FIRST_TABLE_ID; + AcpiGbl_NextTableOwnerId = ACPI_FIRST_TABLE_ID; } break; - case OWNER_TYPE_METHOD: + case ACPI_OWNER_TYPE_METHOD: OwnerId = AcpiGbl_NextMethodOwnerId; AcpiGbl_NextMethodOwnerId++; - if (AcpiGbl_NextMethodOwnerId == FIRST_TABLE_ID) + if (AcpiGbl_NextMethodOwnerId == ACPI_FIRST_TABLE_ID) { - AcpiGbl_NextMethodOwnerId = FIRST_METHOD_ID; + AcpiGbl_NextMethodOwnerId = ACPI_FIRST_METHOD_ID; } break; } - - AcpiUtReleaseMutex (ACPI_MTX_CACHES); - + (void) AcpiUtReleaseMutex (ACPI_MTX_CACHES); return_VALUE (OwnerId); } @@ -694,17 +782,17 @@ AcpiUtInitGlobals ( UINT32 i; - FUNCTION_TRACE ("UtInitGlobals"); + ACPI_FUNCTION_TRACE ("UtInitGlobals"); /* Memory allocation and cache lists */ - MEMSET (AcpiGbl_MemoryLists, 0, sizeof (ACPI_MEMORY_LIST) * ACPI_NUM_MEM_LISTS); + ACPI_MEMSET (AcpiGbl_MemoryLists, 0, sizeof (ACPI_MEMORY_LIST) * ACPI_NUM_MEM_LISTS); - AcpiGbl_MemoryLists[ACPI_MEM_LIST_STATE].LinkOffset = (UINT16) (NATIVE_UINT) &(((ACPI_GENERIC_STATE *) NULL)->Common.Next); - AcpiGbl_MemoryLists[ACPI_MEM_LIST_PSNODE].LinkOffset = (UINT16) (NATIVE_UINT) &(((ACPI_PARSE_OBJECT *) NULL)->Next); - AcpiGbl_MemoryLists[ACPI_MEM_LIST_PSNODE_EXT].LinkOffset = (UINT16) (NATIVE_UINT) &(((ACPI_PARSE2_OBJECT *) NULL)->Next); - AcpiGbl_MemoryLists[ACPI_MEM_LIST_OPERAND].LinkOffset = (UINT16) (NATIVE_UINT) &(((ACPI_OPERAND_OBJECT *) NULL)->Cache.Next); - AcpiGbl_MemoryLists[ACPI_MEM_LIST_WALK].LinkOffset = (UINT16) (NATIVE_UINT) &(((ACPI_WALK_STATE *) NULL)->Next); + AcpiGbl_MemoryLists[ACPI_MEM_LIST_STATE].LinkOffset = (UINT16) ACPI_PTR_DIFF (&(((ACPI_GENERIC_STATE *) NULL)->Common.Next), NULL); + AcpiGbl_MemoryLists[ACPI_MEM_LIST_PSNODE].LinkOffset = (UINT16) ACPI_PTR_DIFF (&(((ACPI_PARSE_OBJECT *) NULL)->Next), NULL); + AcpiGbl_MemoryLists[ACPI_MEM_LIST_PSNODE_EXT].LinkOffset = (UINT16) ACPI_PTR_DIFF (&(((ACPI_PARSE2_OBJECT *) NULL)->Next), NULL); + AcpiGbl_MemoryLists[ACPI_MEM_LIST_OPERAND].LinkOffset = (UINT16) ACPI_PTR_DIFF (&(((ACPI_OPERAND_OBJECT *) NULL)->Cache.Next), NULL); + AcpiGbl_MemoryLists[ACPI_MEM_LIST_WALK].LinkOffset = (UINT16) ACPI_PTR_DIFF (&(((ACPI_WALK_STATE *) NULL)->Next), NULL); AcpiGbl_MemoryLists[ACPI_MEM_LIST_NSNODE].ObjectSize = sizeof (ACPI_NAMESPACE_NODE); AcpiGbl_MemoryLists[ACPI_MEM_LIST_STATE].ObjectSize = sizeof (ACPI_GENERIC_STATE); @@ -765,6 +853,7 @@ AcpiUtInitGlobals ( AcpiGbl_GlobalLockAcquired = FALSE; AcpiGbl_GlobalLockThreadCount = 0; + AcpiGbl_GlobalLockHandle = 0; /* Miscellaneous variables */ @@ -775,24 +864,22 @@ AcpiUtInitGlobals ( AcpiGbl_NsLookupCount = 0; AcpiGbl_PsFindCount = 0; AcpiGbl_AcpiHardwarePresent = TRUE; - AcpiGbl_NextTableOwnerId = FIRST_TABLE_ID; - AcpiGbl_NextMethodOwnerId = FIRST_METHOD_ID; + AcpiGbl_NextTableOwnerId = ACPI_FIRST_TABLE_ID; + AcpiGbl_NextMethodOwnerId = ACPI_FIRST_METHOD_ID; AcpiGbl_DebuggerConfiguration = DEBUGGER_THREADING; + AcpiGbl_DbOutputFlags = ACPI_DB_CONSOLE_OUTPUT; /* Hardware oriented */ - AcpiGbl_Gpe0EnableRegisterSave = NULL; - AcpiGbl_Gpe1EnableRegisterSave = NULL; - AcpiGbl_OriginalMode = SYS_MODE_UNKNOWN; /* original ACPI/legacy mode */ - AcpiGbl_GpeRegisters = NULL; - AcpiGbl_GpeInfo = NULL; + AcpiGbl_GpeRegisterInfo = NULL; + AcpiGbl_GpeNumberInfo = NULL; /* Namespace */ AcpiGbl_RootNode = NULL; AcpiGbl_RootNodeStruct.Name = ACPI_ROOT_NAME; - AcpiGbl_RootNodeStruct.DataType = ACPI_DESC_TYPE_NAMED; + AcpiGbl_RootNodeStruct.Descriptor = ACPI_DESC_TYPE_NAMED; AcpiGbl_RootNodeStruct.Type = ACPI_TYPE_ANY; AcpiGbl_RootNodeStruct.Child = NULL; AcpiGbl_RootNodeStruct.Peer = NULL; diff --git a/sys/contrib/dev/acpica/utinit.c b/sys/contrib/dev/acpica/utinit.c index 40a429438b04..c1dd2eeffade 100644 --- a/sys/contrib/dev/acpica/utinit.c +++ b/sys/contrib/dev/acpica/utinit.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: utinit - Common ACPI subsystem initialization - * $Revision: 103 $ + * $Revision: 109 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -123,11 +123,7 @@ #include "acevents.h" #define _COMPONENT ACPI_UTILITIES - MODULE_NAME ("utinit") - - -#define ACPI_OFFSET(d,o) ((UINT32) &(((d *)0)->o)) -#define ACPI_FADT_OFFSET(o) ACPI_OFFSET (FADT_DESCRIPTOR, o) + ACPI_MODULE_NAME ("utinit") /******************************************************************************* @@ -145,19 +141,16 @@ * ******************************************************************************/ -static ACPI_STATUS +static void AcpiUtFadtRegisterError ( NATIVE_CHAR *RegisterName, UINT32 Value, - UINT32 Offset) + ACPI_SIZE Offset) { - REPORT_ERROR ( + ACPI_REPORT_WARNING ( ("Invalid FADT value %s=%lX at offset %lX FADT=%p\n", RegisterName, Value, Offset, AcpiGbl_FADT)); - - - return (AE_BAD_VALUE); } @@ -177,8 +170,6 @@ ACPI_STATUS AcpiUtValidateFadt ( void) { - ACPI_STATUS Status = AE_OK; - /* * Verify Fixed ACPI Description Table fields, @@ -186,56 +177,56 @@ AcpiUtValidateFadt ( */ if (AcpiGbl_FADT->Pm1EvtLen < 4) { - Status = AcpiUtFadtRegisterError ("PM1_EVT_LEN", + AcpiUtFadtRegisterError ("PM1_EVT_LEN", (UINT32) AcpiGbl_FADT->Pm1EvtLen, ACPI_FADT_OFFSET (Pm1EvtLen)); } if (!AcpiGbl_FADT->Pm1CntLen) { - Status = AcpiUtFadtRegisterError ("PM1_CNT_LEN", 0, + AcpiUtFadtRegisterError ("PM1_CNT_LEN", 0, ACPI_FADT_OFFSET (Pm1CntLen)); } if (!ACPI_VALID_ADDRESS (AcpiGbl_FADT->XPm1aEvtBlk.Address)) { - Status = AcpiUtFadtRegisterError ("X_PM1a_EVT_BLK", 0, + AcpiUtFadtRegisterError ("X_PM1a_EVT_BLK", 0, ACPI_FADT_OFFSET (XPm1aEvtBlk.Address)); } if (!ACPI_VALID_ADDRESS (AcpiGbl_FADT->XPm1aCntBlk.Address)) { - Status = AcpiUtFadtRegisterError ("X_PM1a_CNT_BLK", 0, + AcpiUtFadtRegisterError ("X_PM1a_CNT_BLK", 0, ACPI_FADT_OFFSET (XPm1aCntBlk.Address)); } if (!ACPI_VALID_ADDRESS (AcpiGbl_FADT->XPmTmrBlk.Address)) { - Status = AcpiUtFadtRegisterError ("X_PM_TMR_BLK", 0, + AcpiUtFadtRegisterError ("X_PM_TMR_BLK", 0, ACPI_FADT_OFFSET (XPmTmrBlk.Address)); } if ((ACPI_VALID_ADDRESS (AcpiGbl_FADT->XPm2CntBlk.Address) && !AcpiGbl_FADT->Pm2CntLen)) { - Status = AcpiUtFadtRegisterError ("PM2_CNT_LEN", + AcpiUtFadtRegisterError ("PM2_CNT_LEN", (UINT32) AcpiGbl_FADT->Pm2CntLen, ACPI_FADT_OFFSET (Pm2CntLen)); } if (AcpiGbl_FADT->PmTmLen < 4) { - Status = AcpiUtFadtRegisterError ("PM_TM_LEN", + AcpiUtFadtRegisterError ("PM_TM_LEN", (UINT32) AcpiGbl_FADT->PmTmLen, ACPI_FADT_OFFSET (PmTmLen)); } - /* length of GPE blocks must be a multiple of 2 */ + /* Length of GPE blocks must be a multiple of 2 */ if (ACPI_VALID_ADDRESS (AcpiGbl_FADT->XGpe0Blk.Address) && (AcpiGbl_FADT->Gpe0BlkLen & 1)) { - Status = AcpiUtFadtRegisterError ("(x)GPE0_BLK_LEN", + AcpiUtFadtRegisterError ("(x)GPE0_BLK_LEN", (UINT32) AcpiGbl_FADT->Gpe0BlkLen, ACPI_FADT_OFFSET (Gpe0BlkLen)); } @@ -243,12 +234,12 @@ AcpiUtValidateFadt ( if (ACPI_VALID_ADDRESS (AcpiGbl_FADT->XGpe1Blk.Address) && (AcpiGbl_FADT->Gpe1BlkLen & 1)) { - Status = AcpiUtFadtRegisterError ("(x)GPE1_BLK_LEN", + AcpiUtFadtRegisterError ("(x)GPE1_BLK_LEN", (UINT32) AcpiGbl_FADT->Gpe1BlkLen, ACPI_FADT_OFFSET (Gpe1BlkLen)); } - return (Status); + return (AE_OK); } @@ -268,21 +259,12 @@ void AcpiUtTerminate (void) { - FUNCTION_TRACE ("UtTerminate"); + ACPI_FUNCTION_TRACE ("UtTerminate"); /* Free global tables, etc. */ - if (AcpiGbl_Gpe0EnableRegisterSave) - { - ACPI_MEM_FREE (AcpiGbl_Gpe0EnableRegisterSave); - } - - if (AcpiGbl_Gpe1EnableRegisterSave) - { - ACPI_MEM_FREE (AcpiGbl_Gpe1EnableRegisterSave); - } - + /* Nothing to do at this time */ return_VOID; } @@ -305,7 +287,7 @@ ACPI_STATUS AcpiUtSubsystemShutdown (void) { - FUNCTION_TRACE ("UtSubsystemShutdown"); + ACPI_FUNCTION_TRACE ("UtSubsystemShutdown"); /* Just exit if subsystem is already shutdown */ diff --git a/sys/contrib/dev/acpica/utmath.c b/sys/contrib/dev/acpica/utmath.c index 1ac8cf439b25..91eb43654424 100644 --- a/sys/contrib/dev/acpica/utmath.c +++ b/sys/contrib/dev/acpica/utmath.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: utmath - Integer math support routines - * $Revision: 8 $ + * $Revision: 10 $ * ******************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -121,7 +121,7 @@ #define _COMPONENT ACPI_UTILITIES - MODULE_NAME ("utmath") + ACPI_MODULE_NAME ("utmath") /* * Support for double-precision integer divide. This code is included here @@ -159,7 +159,7 @@ AcpiUtShortDivide ( UINT32 Remainder32; - FUNCTION_TRACE ("UtShortDivide"); + ACPI_FUNCTION_TRACE ("UtShortDivide"); Dividend.Full = *InDividend; @@ -167,7 +167,7 @@ AcpiUtShortDivide ( if (Divisor == 0) { - REPORT_ERROR (("AcpiUtShortDivide: Divide by zero\n")); + ACPI_REPORT_ERROR (("AcpiUtShortDivide: Divide by zero\n")); return_ACPI_STATUS (AE_AML_DIVIDE_BY_ZERO); } @@ -228,14 +228,14 @@ AcpiUtDivide ( UINT64_OVERLAY Partial3; - FUNCTION_TRACE ("UtDivide"); + ACPI_FUNCTION_TRACE ("UtDivide"); /* Always check for a zero divisor */ if (*InDivisor == 0) { - REPORT_ERROR (("AcpiUtDivide: Divide by zero\n")); + ACPI_REPORT_ERROR (("AcpiUtDivide: Divide by zero\n")); return_ACPI_STATUS (AE_AML_DIVIDE_BY_ZERO); } @@ -365,14 +365,14 @@ AcpiUtShortDivide ( UINT32 *OutRemainder) { - FUNCTION_TRACE ("UtShortDivide"); + ACPI_FUNCTION_TRACE ("UtShortDivide"); /* Always check for a zero divisor */ if (Divisor == 0) { - REPORT_ERROR (("AcpiUtShortDivide: Divide by zero\n")); + ACPI_REPORT_ERROR (("AcpiUtShortDivide: Divide by zero\n")); return_ACPI_STATUS (AE_AML_DIVIDE_BY_ZERO); } @@ -397,14 +397,14 @@ AcpiUtDivide ( ACPI_INTEGER *OutQuotient, ACPI_INTEGER *OutRemainder) { - FUNCTION_TRACE ("UtDivide"); + ACPI_FUNCTION_TRACE ("UtDivide"); /* Always check for a zero divisor */ if (*InDivisor == 0) { - REPORT_ERROR (("AcpiUtDivide: Divide by zero\n")); + ACPI_REPORT_ERROR (("AcpiUtDivide: Divide by zero\n")); return_ACPI_STATUS (AE_AML_DIVIDE_BY_ZERO); } diff --git a/sys/contrib/dev/acpica/utmisc.c b/sys/contrib/dev/acpica/utmisc.c index e0e1fa151cd5..18c2901a0727 100644 --- a/sys/contrib/dev/acpica/utmisc.c +++ b/sys/contrib/dev/acpica/utmisc.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: utmisc - common utility procedures - * $Revision: 56 $ + * $Revision: 67 $ * ******************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -127,7 +127,53 @@ #define _COMPONENT ACPI_UTILITIES - MODULE_NAME ("utmisc") + ACPI_MODULE_NAME ("utmisc") + + +#ifdef ACPI_DEBUG +/******************************************************************************* + * + * FUNCTION: AcpiUtDisplayInitPathname + * + * PARAMETERS: ObjHandle - Handle whose pathname will be displayed + * Path - Additional path string to be appended + * + * RETURN: ACPI_STATUS + * + * DESCRIPTION: Display full pathnbame of an object, DEBUG ONLY + * + ******************************************************************************/ + +void +AcpiUtDisplayInitPathname ( + ACPI_HANDLE ObjHandle, + char *Path) +{ + ACPI_STATUS Status; + ACPI_BUFFER Buffer; + + + ACPI_FUNCTION_NAME ("UtDisplayInitPathname"); + + + Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER; + + Status = AcpiNsHandleToPathname (ObjHandle, &Buffer); + if (ACPI_SUCCESS (Status)) + { + if (Path) + { + ACPI_DEBUG_PRINT ((ACPI_DB_INIT, "%s.%s\n", (char *) Buffer.Pointer, Path)); + } + else + { + ACPI_DEBUG_PRINT ((ACPI_DB_INIT, "%s\n", (char *) Buffer.Pointer)); + } + + ACPI_MEM_FREE (Buffer.Pointer); + } +} +#endif /******************************************************************************* @@ -153,7 +199,7 @@ AcpiUtValidAcpiName ( UINT32 i; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); for (i = 0; i < ACPI_NAME_SIZE; i++) @@ -187,7 +233,7 @@ AcpiUtValidAcpiCharacter ( NATIVE_CHAR Character) { - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); return ((BOOLEAN) ((Character == '_') || (Character >= 'A' && Character <= 'Z') || @@ -214,14 +260,14 @@ AcpiUtStrupr ( NATIVE_CHAR *String; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); /* Walk entire string, uppercasing the letters */ for (String = SrcString; *String; ) { - *String = (char) TOUPPER (*String); + *String = (char) ACPI_TOUPPER (*String); String++; } @@ -249,7 +295,7 @@ AcpiUtMutexInitialize ( ACPI_STATUS Status; - FUNCTION_TRACE ("UtMutexInitialize"); + ACPI_FUNCTION_TRACE ("UtMutexInitialize"); /* @@ -287,7 +333,7 @@ AcpiUtMutexTerminate ( UINT32 i; - FUNCTION_TRACE ("UtMutexTerminate"); + ACPI_FUNCTION_TRACE ("UtMutexTerminate"); /* @@ -321,7 +367,7 @@ AcpiUtCreateMutex ( ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE_U32 ("UtCreateMutex", MutexId); + ACPI_FUNCTION_TRACE_U32 ("UtCreateMutex", MutexId); if (MutexId > MAX_MTX) @@ -361,7 +407,7 @@ AcpiUtDeleteMutex ( ACPI_STATUS Status; - FUNCTION_TRACE_U32 ("UtDeleteMutex", MutexId); + ACPI_FUNCTION_TRACE_U32 ("UtDeleteMutex", MutexId); if (MutexId > MAX_MTX) @@ -400,7 +446,7 @@ AcpiUtAcquireMutex ( UINT32 ThisThreadId; - PROC_NAME ("UtAcquireMutex"); + ACPI_FUNCTION_NAME ("UtAcquireMutex"); if (MutexId > MAX_MTX) @@ -446,7 +492,6 @@ AcpiUtAcquireMutex ( Status = AcpiOsWaitSemaphore (AcpiGbl_AcpiMutexInfo[MutexId].Mutex, 1, WAIT_FOREVER); - if (ACPI_SUCCESS (Status)) { ACPI_DEBUG_PRINT ((ACPI_DB_MUTEX, "Thread %X acquired Mutex [%s]\n", @@ -488,7 +533,7 @@ AcpiUtReleaseMutex ( UINT32 ThisThreadId; - PROC_NAME ("UtReleaseMutex"); + ACPI_FUNCTION_NAME ("UtReleaseMutex"); ThisThreadId = AcpiOsGetThreadId (); @@ -584,7 +629,7 @@ AcpiUtCreateUpdateStateAndPush ( ACPI_GENERIC_STATE *State; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); /* Ignore null objects; these are expected */ @@ -630,7 +675,7 @@ AcpiUtCreatePkgStateAndPush ( ACPI_GENERIC_STATE *State; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); State = AcpiUtCreatePkgState (InternalObject, ExternalObject, Index); @@ -663,7 +708,7 @@ AcpiUtPushGenericState ( ACPI_GENERIC_STATE **ListHead, ACPI_GENERIC_STATE *State) { - FUNCTION_TRACE ("UtPushGenericState"); + ACPI_FUNCTION_TRACE ("UtPushGenericState"); /* Push the state object onto the front of the list (stack) */ @@ -694,7 +739,7 @@ AcpiUtPopGenericState ( ACPI_GENERIC_STATE *State; - FUNCTION_TRACE ("UtPopGenericState"); + ACPI_FUNCTION_TRACE ("UtPopGenericState"); /* Remove the state object at the head of the list (stack) */ @@ -730,7 +775,7 @@ AcpiUtCreateGenericState (void) ACPI_GENERIC_STATE *State; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); State = AcpiUtAcquireFromCache (ACPI_MEM_LIST_STATE); @@ -766,7 +811,7 @@ AcpiUtCreateThreadState ( ACPI_GENERIC_STATE *State; - FUNCTION_TRACE ("UtCreateThreadState"); + ACPI_FUNCTION_TRACE ("UtCreateThreadState"); /* Create the generic state object */ @@ -810,7 +855,7 @@ AcpiUtCreateUpdateState ( ACPI_GENERIC_STATE *State; - FUNCTION_TRACE_PTR ("UtCreateUpdateState", Object); + ACPI_FUNCTION_TRACE_PTR ("UtCreateUpdateState", Object); /* Create the generic state object */ @@ -854,7 +899,7 @@ AcpiUtCreatePkgState ( ACPI_GENERIC_STATE *State; - FUNCTION_TRACE_PTR ("UtCreatePkgState", InternalObject); + ACPI_FUNCTION_TRACE_PTR ("UtCreatePkgState", InternalObject); /* Create the generic state object */ @@ -897,7 +942,7 @@ AcpiUtCreateControlState ( ACPI_GENERIC_STATE *State; - FUNCTION_TRACE ("UtCreateControlState"); + ACPI_FUNCTION_TRACE ("UtCreateControlState"); /* Create the generic state object */ @@ -912,7 +957,7 @@ AcpiUtCreateControlState ( /* Init fields specific to the control struct */ State->Common.DataType = ACPI_DESC_TYPE_STATE_CONTROL; - State->Common.State = CONTROL_CONDITIONAL_EXECUTING; + State->Common.State = ACPI_CONTROL_CONDITIONAL_EXECUTING; return_PTR (State); } @@ -935,7 +980,7 @@ void AcpiUtDeleteGenericState ( ACPI_GENERIC_STATE *State) { - FUNCTION_TRACE ("UtDeleteGenericState"); + ACPI_FUNCTION_TRACE ("UtDeleteGenericState"); AcpiUtReleaseToCache (ACPI_MEM_LIST_STATE, State); @@ -960,7 +1005,7 @@ void AcpiUtDeleteGenericStateCache ( void) { - FUNCTION_TRACE ("UtDeleteGenericStateCache"); + ACPI_FUNCTION_TRACE ("UtDeleteGenericStateCache"); AcpiUtDeleteGenericCache (ACPI_MEM_LIST_STATE); @@ -970,109 +1015,113 @@ AcpiUtDeleteGenericStateCache ( /******************************************************************************* * - * FUNCTION: AcpiUtResolvePackageReferences + * FUNCTION: AcpiUtResolveReference * - * PARAMETERS: ObjDesc - The Package object on which to resolve refs + * PARAMETERS: ACPI_PKG_CALLBACK * - * RETURN: Status + * RETURN: Status - the status of the call * - * DESCRIPTION: Walk through a package and turn internal references into values + * DESCRIPTION: Resolve a reference object to an actual value * ******************************************************************************/ ACPI_STATUS -AcpiUtResolvePackageReferences ( - ACPI_OPERAND_OBJECT *ObjDesc) +AcpiUtResolveReference ( + UINT8 ObjectType, + ACPI_OPERAND_OBJECT *SourceObject, + ACPI_GENERIC_STATE *State, + void *Context) { - UINT32 Count; - ACPI_OPERAND_OBJECT *SubObject; - + ACPI_PKG_INFO *Info = (ACPI_PKG_INFO *) Context; - FUNCTION_TRACE ("UtResolvePackageReferences"); - - if (ObjDesc->Common.Type != ACPI_TYPE_PACKAGE) + switch (ObjectType) { - /* The object must be a package */ + case ACPI_COPY_TYPE_SIMPLE: - REPORT_ERROR (("Must resolve Package Refs on a Package\n")); - return_ACPI_STATUS(AE_ERROR); - } + /* + * Simple object - check for a reference + */ + if (SourceObject->Common.Type == INTERNAL_TYPE_REFERENCE) + { + switch (SourceObject->Reference.Opcode) + { + case AML_ZERO_OP: - /* - * TBD: what about nested packages? */ + SourceObject->Common.Type = ACPI_TYPE_INTEGER; + SourceObject->Integer.Value = 0; + break; - for (Count = 0; Count < ObjDesc->Package.Count; Count++) - { - SubObject = ObjDesc->Package.Elements[Count]; + case AML_ONE_OP: - if (SubObject->Common.Type == INTERNAL_TYPE_REFERENCE) - { - if (SubObject->Reference.Opcode == AML_ZERO_OP) - { - SubObject->Common.Type = ACPI_TYPE_INTEGER; - SubObject->Integer.Value = 0; - } + SourceObject->Common.Type = ACPI_TYPE_INTEGER; + SourceObject->Integer.Value = 1; + break; - else if (SubObject->Reference.Opcode == AML_ONE_OP) - { - SubObject->Common.Type = ACPI_TYPE_INTEGER; - SubObject->Integer.Value = 1; - } + case AML_ONES_OP: - else if (SubObject->Reference.Opcode == AML_ONES_OP) - { - SubObject->Common.Type = ACPI_TYPE_INTEGER; - SubObject->Integer.Value = ACPI_INTEGER_MAX; + SourceObject->Common.Type = ACPI_TYPE_INTEGER; + SourceObject->Integer.Value = ACPI_INTEGER_MAX; + break; } } + break; + + + case ACPI_COPY_TYPE_PACKAGE: + + /* Package object - nothing much to do here, let the walk handle it */ + + Info->NumPackages++; + State->Pkg.ThisTargetObj = NULL; + break; } - return_ACPI_STATUS(AE_OK); + return (AE_OK); } -#ifdef ACPI_DEBUG /******************************************************************************* * - * FUNCTION: AcpiUtDisplayInitPathname + * FUNCTION: AcpiUtResolvePackageReferences * - * PARAMETERS: ObjHandle - Handle whose pathname will be displayed - * Path - Additional path string to be appended + * PARAMETERS: ObjDesc - The Package object on which to resolve refs * - * RETURN: ACPI_STATUS + * RETURN: Status * - * DESCRIPTION: Display full pathnbame of an object, DEBUG ONLY + * DESCRIPTION: Walk through a package and turn internal references into values * ******************************************************************************/ -void -AcpiUtDisplayInitPathname ( - ACPI_HANDLE ObjHandle, - char *Path) +ACPI_STATUS +AcpiUtResolvePackageReferences ( + ACPI_OPERAND_OBJECT *ObjDesc) { + ACPI_PKG_INFO Info; ACPI_STATUS Status; - UINT32 Length = 128; - char Buffer[128]; - PROC_NAME ("UtDisplayInitPathname"); + ACPI_FUNCTION_TRACE ("UtResolvePackageReferences"); - Status = AcpiNsHandleToPathname (ObjHandle, &Length, Buffer); - if (ACPI_SUCCESS (Status)) + if (ObjDesc->Common.Type != ACPI_TYPE_PACKAGE) { - if (Path) - { - ACPI_DEBUG_PRINT ((ACPI_DB_INIT, "%s.%s\n", Buffer, Path)); - } - else - { - ACPI_DEBUG_PRINT ((ACPI_DB_INIT, "%s\n", Buffer)); - } + /* The object must be a package */ + + ACPI_REPORT_ERROR (("Expecting a Package object\n")); + return_ACPI_STATUS (AE_TYPE); } + + Info.Length = 0; + Info.ObjectSpace = 0; + Info.NumPackages = 1; + + Status = AcpiUtWalkPackageTree (ObjDesc, NULL, + AcpiUtResolveReference, &Info); + + return_ACPI_STATUS (Status); } -#endif + /******************************************************************************* * @@ -1100,7 +1149,7 @@ AcpiUtWalkPackageTree ( ACPI_OPERAND_OBJECT *ThisSourceObj; - FUNCTION_TRACE ("UtWalkPackageTree"); + ACPI_FUNCTION_TRACE ("UtWalkPackageTree"); State = AcpiUtCreatePkgState (SourceObject, TargetObject, 0); @@ -1118,18 +1167,15 @@ AcpiUtWalkPackageTree ( /* * Check for: * 1) An uninitialized package element. It is completely - * legal to declare a package and leave it uninitialized + * legal to declare a package and leave it uninitialized * 2) Not an internal object - can be a namespace node instead * 3) Any type other than a package. Packages are handled in else - * case below. + * case below. */ if ((!ThisSourceObj) || - (!VALID_DESCRIPTOR_TYPE ( - ThisSourceObj, ACPI_DESC_TYPE_INTERNAL)) || - (!IS_THIS_OBJECT_TYPE ( - ThisSourceObj, ACPI_TYPE_PACKAGE))) + (ACPI_GET_DESCRIPTOR_TYPE (ThisSourceObj) != ACPI_DESC_TYPE_INTERNAL) || + (ThisSourceObj->Common.Type != ACPI_TYPE_PACKAGE)) { - Status = WalkCallback (ACPI_COPY_TYPE_SIMPLE, ThisSourceObj, State, Context); if (ACPI_FAILURE (Status)) @@ -1202,6 +1248,93 @@ AcpiUtWalkPackageTree ( /******************************************************************************* * + * FUNCTION: AcpiUtGenerateChecksum + * + * PARAMETERS: Buffer - Buffer to be scanned + * Length - number of bytes to examine + * + * RETURN: checksum + * + * DESCRIPTION: Generate a checksum on a raw buffer + * + ******************************************************************************/ + +UINT8 +AcpiUtGenerateChecksum ( + UINT8 *Buffer, + UINT32 Length) +{ + UINT32 i; + signed char Sum = 0; + + for (i = 0; i < Length; i++) + { + Sum = (signed char) (Sum + Buffer[i]); + } + + return ((UINT8) (0 - Sum)); +} + + +/******************************************************************************* + * + * FUNCTION: AcpiUtGetResourceEndTag + * + * PARAMETERS: ObjDesc - The resource template buffer object + * + * RETURN: Pointer to the end tag + * + * DESCRIPTION: Find the END_TAG resource descriptor in a resource template + * + ******************************************************************************/ + + +UINT8 * +AcpiUtGetResourceEndTag ( + ACPI_OPERAND_OBJECT *ObjDesc) +{ + UINT8 BufferByte; + UINT8 *Buffer; + UINT8 *EndBuffer; + + + Buffer = ObjDesc->Buffer.Pointer; + EndBuffer = Buffer + ObjDesc->Buffer.Length; + + while (Buffer < EndBuffer) + { + BufferByte = *Buffer; + if (BufferByte & ACPI_RDESC_TYPE_MASK) + { + /* Large Descriptor - Length is next 2 bytes */ + + Buffer += ((*(Buffer+1) | (*(Buffer+2) << 8)) + 3); + } + else + { + /* Small Descriptor. End Tag will be found here */ + + if ((BufferByte & ACPI_RDESC_SMALL_MASK) == ACPI_RDESC_TYPE_END_TAG) + { + /* Found the end tag descriptor, all done. */ + + return (Buffer); + } + + /* Length is in the header */ + + Buffer += ((BufferByte & 0x07) + 1); + } + } + + /* End tag not found */ + + return (NULL); +} + + +/******************************************************************************* + * * FUNCTION: AcpiUtReportError * * PARAMETERS: ModuleName - Caller's module name (for error output) diff --git a/sys/contrib/dev/acpica/utobject.c b/sys/contrib/dev/acpica/utobject.c index b8fa4ab08615..6cdfa54cd82a 100644 --- a/sys/contrib/dev/acpica/utobject.c +++ b/sys/contrib/dev/acpica/utobject.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: utobject - ACPI object create/delete/size/cache routines - * $Revision: 61 $ + * $Revision: 68 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -124,7 +124,7 @@ #define _COMPONENT ACPI_UTILITIES - MODULE_NAME ("utobject") + ACPI_MODULE_NAME ("utobject") /******************************************************************************* @@ -154,13 +154,13 @@ AcpiUtCreateInternalObjectDbg ( NATIVE_CHAR *ModuleName, UINT32 LineNumber, UINT32 ComponentId, - ACPI_OBJECT_TYPE8 Type) + ACPI_OBJECT_TYPE Type) { ACPI_OPERAND_OBJECT *Object; ACPI_OPERAND_OBJECT *SecondObject; - FUNCTION_TRACE_STR ("UtCreateInternalObjectDbg", AcpiUtGetTypeName (Type)); + ACPI_FUNCTION_TRACE_STR ("UtCreateInternalObjectDbg", AcpiUtGetTypeName (Type)); /* Allocate the raw object descriptor */ @@ -175,7 +175,7 @@ AcpiUtCreateInternalObjectDbg ( { case ACPI_TYPE_REGION: case ACPI_TYPE_BUFFER_FIELD: - + /* These types require a secondary object */ SecondObject = AcpiUtAllocateObjectDescDbg (ModuleName, LineNumber, ComponentId); @@ -196,7 +196,7 @@ AcpiUtCreateInternalObjectDbg ( /* Save the object type in the object descriptor */ - Object->Common.Type = Type; + Object->Common.Type = (UINT8) Type; /* Init the reference count */ @@ -223,7 +223,7 @@ AcpiUtValidInternalObject ( void *Object) { - PROC_NAME ("UtValidInternalObject"); + ACPI_FUNCTION_NAME ("UtValidInternalObject"); /* Check for a null pointer */ @@ -237,35 +237,34 @@ AcpiUtValidInternalObject ( /* Check the descriptor type field */ - if (!VALID_DESCRIPTOR_TYPE (Object, ACPI_DESC_TYPE_INTERNAL)) + switch (ACPI_GET_DESCRIPTOR_TYPE (Object)) { - /* Not an ACPI internal object, do some further checking */ + case ACPI_DESC_TYPE_INTERNAL: - if (VALID_DESCRIPTOR_TYPE (Object, ACPI_DESC_TYPE_NAMED)) - { - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "**** Obj %p is a named obj, not ACPI obj\n", Object)); - } + /* The object appears to be a valid ACPI_OPERAND_OBJECT */ - else if (VALID_DESCRIPTOR_TYPE (Object, ACPI_DESC_TYPE_PARSER)) - { - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "**** Obj %p is a parser obj, not ACPI obj\n", Object)); - } + return (TRUE); - else - { - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "**** Obj %p is of unknown type\n", Object)); - } + case ACPI_DESC_TYPE_NAMED: - return (FALSE); - } + ACPI_DEBUG_PRINT ((ACPI_DB_INFO, + "**** Obj %p is a named obj, not ACPI obj\n", Object)); + break; + case ACPI_DESC_TYPE_PARSER: - /* The object appears to be a valid ACPI_OPERAND_OBJECT */ + ACPI_DEBUG_PRINT ((ACPI_DB_INFO, + "**** Obj %p is a parser obj, not ACPI obj\n", Object)); + break; + + default: - return (TRUE); + ACPI_DEBUG_PRINT ((ACPI_DB_INFO, + "**** Obj %p is of unknown type\n", Object)); + break; + } + + return (FALSE); } @@ -294,13 +293,13 @@ AcpiUtAllocateObjectDescDbg ( ACPI_OPERAND_OBJECT *Object; - FUNCTION_TRACE ("UtAllocateObjectDescDbg"); + ACPI_FUNCTION_TRACE ("UtAllocateObjectDescDbg"); Object = AcpiUtAcquireFromCache (ACPI_MEM_LIST_OPERAND); if (!Object) { - _REPORT_ERROR (ModuleName, LineNumber, ComponentId, + _ACPI_REPORT_ERROR (ModuleName, LineNumber, ComponentId, ("Could not allocate an object descriptor\n")); return_PTR (NULL); @@ -309,7 +308,7 @@ AcpiUtAllocateObjectDescDbg ( /* Mark the descriptor type */ - Object->Common.DataType = ACPI_DESC_TYPE_INTERNAL; + ACPI_SET_DESCRIPTOR_TYPE (Object, ACPI_DESC_TYPE_INTERNAL); ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "%p Size %X\n", Object, sizeof (ACPI_OPERAND_OBJECT))); @@ -334,12 +333,12 @@ void AcpiUtDeleteObjectDesc ( ACPI_OPERAND_OBJECT *Object) { - FUNCTION_TRACE_PTR ("UtDeleteObjectDesc", Object); + ACPI_FUNCTION_TRACE_PTR ("UtDeleteObjectDesc", Object); /* Object must be an ACPI_OPERAND_OBJECT */ - if (Object->Common.DataType != ACPI_DESC_TYPE_INTERNAL) + if (ACPI_GET_DESCRIPTOR_TYPE (Object) != ACPI_DESC_TYPE_INTERNAL) { ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Obj %p is not an ACPI object\n", Object)); @@ -369,7 +368,7 @@ void AcpiUtDeleteObjectCache ( void) { - FUNCTION_TRACE ("UtDeleteObjectCache"); + ACPI_FUNCTION_TRACE ("UtDeleteObjectCache"); AcpiUtDeleteGenericCache (ACPI_MEM_LIST_OPERAND); @@ -397,13 +396,13 @@ AcpiUtDeleteObjectCache ( ACPI_STATUS AcpiUtGetSimpleObjectSize ( ACPI_OPERAND_OBJECT *InternalObject, - UINT32 *ObjLength) + ACPI_SIZE *ObjLength) { - UINT32 Length; + ACPI_SIZE Length; ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE_PTR ("UtGetSimpleObjectSize", InternalObject); + ACPI_FUNCTION_TRACE_PTR ("UtGetSimpleObjectSize", InternalObject); /* Handle a null object (Could be a uninitialized package element -- which is legal) */ @@ -419,11 +418,11 @@ AcpiUtGetSimpleObjectSize ( Length = sizeof (ACPI_OBJECT); - if (VALID_DESCRIPTOR_TYPE (InternalObject, ACPI_DESC_TYPE_NAMED)) + if (ACPI_GET_DESCRIPTOR_TYPE (InternalObject) == ACPI_DESC_TYPE_NAMED) { /* Object is a named object (reference), just return the length */ - *ObjLength = (UINT32) ROUND_UP_TO_NATIVE_WORD (Length); + *ObjLength = ACPI_ROUND_UP_TO_NATIVE_WORD (Length); return_ACPI_STATUS (Status); } @@ -462,25 +461,38 @@ AcpiUtGetSimpleObjectSize ( case INTERNAL_TYPE_REFERENCE: - /* - * The only type that should be here is internal opcode NAMEPATH_OP -- since - * this means an object reference - */ - if (InternalObject->Reference.Opcode != AML_INT_NAMEPATH_OP) + switch (InternalObject->Reference.Opcode) { - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, - "Unsupported Reference opcode=%X in object %p\n", - InternalObject->Reference.Opcode, InternalObject)); - Status = AE_TYPE; - } + case AML_ZERO_OP: + case AML_ONE_OP: + case AML_ONES_OP: + case AML_REVISION_OP: + + /* These Constant opcodes will be resolved to Integers */ + + break; + + case AML_INT_NAMEPATH_OP: - else - { /* * Get the actual length of the full pathname to this object. * The reference will be converted to the pathname to the object */ - Length += ROUND_UP_TO_NATIVE_WORD (AcpiNsGetPathnameLength (InternalObject->Reference.Node)); + Length += ACPI_ROUND_UP_TO_NATIVE_WORD (AcpiNsGetPathnameLength (InternalObject->Reference.Node)); + break; + + default: + + /* + * No other reference opcodes are supported. + * Notably, Locals and Args are not supported, by this may be + * required eventually. + */ + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, + "Unsupported Reference opcode=%X in object %p\n", + InternalObject->Reference.Opcode, InternalObject)); + Status = AE_TYPE; + break; } break; @@ -500,8 +512,7 @@ AcpiUtGetSimpleObjectSize ( * on a machine word boundary. (preventing alignment faults on some * machines.) */ - *ObjLength = (UINT32) ROUND_UP_TO_NATIVE_WORD (Length); - + *ObjLength = ACPI_ROUND_UP_TO_NATIVE_WORD (Length); return_ACPI_STATUS (Status); } @@ -527,12 +538,12 @@ AcpiUtGetElementLength ( { ACPI_STATUS Status = AE_OK; ACPI_PKG_INFO *Info = (ACPI_PKG_INFO *) Context; - UINT32 ObjectSpace; + ACPI_SIZE ObjectSpace; switch (ObjectType) { - case 0: + case ACPI_COPY_TYPE_SIMPLE: /* * Simple object - just get the size (Null object/entry is handled @@ -548,18 +559,15 @@ AcpiUtGetElementLength ( break; - case 1: - /* Package - nothing much to do here, let the walk handle it */ + case ACPI_COPY_TYPE_PACKAGE: + + /* Package object - nothing much to do here, let the walk handle it */ Info->NumPackages++; State->Pkg.ThisTargetObj = NULL; break; - - default: - return (AE_BAD_PARAMETER); } - return (Status); } @@ -584,13 +592,13 @@ AcpiUtGetElementLength ( ACPI_STATUS AcpiUtGetPackageObjectSize ( ACPI_OPERAND_OBJECT *InternalObject, - UINT32 *ObjLength) + ACPI_SIZE *ObjLength) { ACPI_STATUS Status; ACPI_PKG_INFO Info; - FUNCTION_TRACE_PTR ("UtGetPackageObjectSize", InternalObject); + ACPI_FUNCTION_TRACE_PTR ("UtGetPackageObjectSize", InternalObject); Info.Length = 0; @@ -609,7 +617,7 @@ AcpiUtGetPackageObjectSize ( * just add the length of the package objects themselves. * Round up to the next machine word. */ - Info.Length += ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)) * + Info.Length += ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)) * Info.NumPackages; /* Return the total package length */ @@ -636,20 +644,19 @@ AcpiUtGetPackageObjectSize ( ACPI_STATUS AcpiUtGetObjectSize( ACPI_OPERAND_OBJECT *InternalObject, - UINT32 *ObjLength) + ACPI_SIZE *ObjLength) { ACPI_STATUS Status; - FUNCTION_ENTRY (); + ACPI_FUNCTION_ENTRY (); - if ((VALID_DESCRIPTOR_TYPE (InternalObject, ACPI_DESC_TYPE_INTERNAL)) && - (IS_THIS_OBJECT_TYPE (InternalObject, ACPI_TYPE_PACKAGE))) + if ((ACPI_GET_DESCRIPTOR_TYPE (InternalObject) == ACPI_DESC_TYPE_INTERNAL) && + (InternalObject->Common.Type == ACPI_TYPE_PACKAGE)) { Status = AcpiUtGetPackageObjectSize (InternalObject, ObjLength); } - else { Status = AcpiUtGetSimpleObjectSize (InternalObject, ObjLength); diff --git a/sys/contrib/dev/acpica/utxface.c b/sys/contrib/dev/acpica/utxface.c index 5400026d5fee..cd38e23b5ec5 100644 --- a/sys/contrib/dev/acpica/utxface.c +++ b/sys/contrib/dev/acpica/utxface.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: utxface - External interfaces for "global" ACPI functions - * $Revision: 85 $ + * $Revision: 92 $ * *****************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. * All rights reserved. * * 2. License @@ -130,7 +130,7 @@ #define _COMPONENT ACPI_UTILITIES - MODULE_NAME ("utxface") + ACPI_MODULE_NAME ("utxface") /******************************************************************************* @@ -152,10 +152,10 @@ AcpiInitializeSubsystem ( { ACPI_STATUS Status; - FUNCTION_TRACE ("AcpiInitializeSubsystem"); + ACPI_FUNCTION_TRACE ("AcpiInitializeSubsystem"); - DEBUG_EXEC(AcpiUtInitStackPtrTrace ()); + ACPI_DEBUG_EXEC (AcpiUtInitStackPtrTrace ()); /* Initialize all globals used by the subsystem */ @@ -167,7 +167,7 @@ AcpiInitializeSubsystem ( Status = AcpiOsInitialize (); if (ACPI_FAILURE (Status)) { - REPORT_ERROR (("OSD failed to initialize, %s\n", + ACPI_REPORT_ERROR (("OSD failed to initialize, %s\n", AcpiFormatException (Status))); return_ACPI_STATUS (Status); } @@ -177,7 +177,7 @@ AcpiInitializeSubsystem ( Status = AcpiUtMutexInitialize (); if (ACPI_FAILURE (Status)) { - REPORT_ERROR (("Global mutex creation failure, %s\n", + ACPI_REPORT_ERROR (("Global mutex creation failure, %s\n", AcpiFormatException (Status))); return_ACPI_STATUS (Status); } @@ -190,7 +190,7 @@ AcpiInitializeSubsystem ( Status = AcpiNsRootInitialize (); if (ACPI_FAILURE (Status)) { - REPORT_ERROR (("Namespace initialization failure, %s\n", + ACPI_REPORT_ERROR (("Namespace initialization failure, %s\n", AcpiFormatException (Status))); return_ACPI_STATUS (Status); } @@ -198,7 +198,7 @@ AcpiInitializeSubsystem ( /* If configured, initialize the AML debugger */ - DEBUGGER_EXEC (AcpiDbInitialize ()); + ACPI_DEBUGGER_EXEC (AcpiDbInitialize ()); return_ACPI_STATUS (Status); } @@ -224,21 +224,13 @@ AcpiEnableSubsystem ( ACPI_STATUS Status = AE_OK; - FUNCTION_TRACE ("AcpiEnableSubsystem"); + ACPI_FUNCTION_TRACE ("AcpiEnableSubsystem"); - /* Sanity check the FADT for valid values */ - - Status = AcpiUtValidateFadt (); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - /* - * Install the default OpRegion handlers. These are - * installed unless other handlers have already been - * installed via the InstallAddressSpaceHandler interface + * Install the default OpRegion handlers. These are installed unless + * other handlers have already been installed via the + * InstallAddressSpaceHandler interface */ if (!(Flags & ACPI_NO_ADDRESS_SPACE_INIT)) { @@ -253,6 +245,7 @@ AcpiEnableSubsystem ( /* * We must initialize the hardware before we can enable ACPI. + * FADT values are validated here. */ if (!(Flags & ACPI_NO_HARDWARE_INIT)) { @@ -297,6 +290,19 @@ AcpiEnableSubsystem ( } } + /* Install SCI handler, Global Lock handler, GPE handlers */ + + if (!(Flags & ACPI_NO_HANDLER_INIT)) + { + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[Init] Installing SCI/GL/GPE handlers\n")); + + Status = AcpiEvHandlerInitialize (); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + } + /* * Initialize all device objects in the namespace * This runs the _STA and _INI methods. @@ -355,12 +361,12 @@ AcpiEnableSubsystem ( ACPI_STATUS AcpiTerminate (void) { - FUNCTION_TRACE ("AcpiTerminate"); + ACPI_FUNCTION_TRACE ("AcpiTerminate"); /* Terminate the AML Debugger if present */ - DEBUGGER_EXEC(AcpiGbl_DbTerminateThreads = TRUE); + ACPI_DEBUGGER_EXEC(AcpiGbl_DbTerminateThreads = TRUE); /* Shutdown and free all resources */ @@ -441,44 +447,41 @@ AcpiGetSystemInfo ( { ACPI_SYSTEM_INFO *InfoPtr; UINT32 i; + ACPI_STATUS Status; - FUNCTION_TRACE ("AcpiGetSystemInfo"); + ACPI_FUNCTION_TRACE ("AcpiGetSystemInfo"); - /* - * Must have a valid buffer - */ - if ((!OutBuffer) || - (!OutBuffer->Pointer)) + /* Parameter validation */ + + Status = AcpiUtValidateBuffer (OutBuffer); + if (ACPI_FAILURE (Status)) { - return_ACPI_STATUS (AE_BAD_PARAMETER); + return_ACPI_STATUS (Status); } - if (OutBuffer->Length < sizeof (ACPI_SYSTEM_INFO)) - { - /* - * Caller's buffer is too small - */ - OutBuffer->Length = sizeof (ACPI_SYSTEM_INFO); + /* Validate/Allocate/Clear caller buffer */ - return_ACPI_STATUS (AE_BUFFER_OVERFLOW); + Status = AcpiUtInitializeBuffer (OutBuffer, sizeof (ACPI_SYSTEM_INFO)); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); } - /* - * Set return length and get data + * Populate the return buffer */ - OutBuffer->Length = sizeof (ACPI_SYSTEM_INFO); InfoPtr = (ACPI_SYSTEM_INFO *) OutBuffer->Pointer; InfoPtr->AcpiCaVersion = ACPI_CA_VERSION; /* System flags (ACPI capabilities) */ - InfoPtr->Flags = SYS_MODE_ACPI; + InfoPtr->Flags = ACPI_SYS_MODE_ACPI; /* Timer resolution - 24 or 32 bits */ + if (!AcpiGbl_FADT) { InfoPtr->TimerResolution = 0; @@ -529,7 +532,7 @@ AcpiGetSystemInfo ( ACPI_STATUS AcpiPurgeCachedObjects (void) { - FUNCTION_TRACE ("AcpiPurgeCachedObjects"); + ACPI_FUNCTION_TRACE ("AcpiPurgeCachedObjects"); AcpiUtDeleteGenericStateCache (); |