Resolve conflicts of unchanged files that are off the vendor branch.
This commit is contained in:
parent
77a22ac882
commit
873349d1ad
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: acconfig.h - Global configuration constants
|
||||
* $Revision: 169 $
|
||||
* $Revision: 1.234 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
*
|
||||
* 1. Copyright Notice
|
||||
*
|
||||
* Some or all of this work - Copyright (c) 1999 - 2005, Intel Corp.
|
||||
* Some or all of this work - Copyright (c) 1999 - 2007, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* 2. License
|
||||
@ -137,7 +137,7 @@
|
||||
|
||||
/* Current ACPICA subsystem version in YYYYMMDD format */
|
||||
|
||||
#define ACPI_CA_VERSION 0x20051021
|
||||
#define ACPI_CA_VERSION 0x20070320
|
||||
|
||||
/*
|
||||
* OS name, used for the _OS object. The _OS object is essentially obsolete,
|
||||
@ -155,9 +155,10 @@
|
||||
#define ACPI_MAX_PARSE_CACHE_DEPTH 96 /* Parse tree objects */
|
||||
#define ACPI_MAX_EXTPARSE_CACHE_DEPTH 96 /* Parse tree objects */
|
||||
#define ACPI_MAX_OBJECT_CACHE_DEPTH 96 /* Interpreter operand objects */
|
||||
#define ACPI_MAX_NAMESPACE_CACHE_DEPTH 96 /* Namespace objects */
|
||||
|
||||
/*
|
||||
* Should the subystem abort the loading of an ACPI table if the
|
||||
* Should the subsystem abort the loading of an ACPI table if the
|
||||
* table checksum is incorrect?
|
||||
*/
|
||||
#define ACPI_CHECKSUM_ABORT FALSE
|
||||
@ -173,23 +174,26 @@
|
||||
|
||||
#define ACPI_CA_SUPPORT_LEVEL 3
|
||||
|
||||
/* String size constants */
|
||||
|
||||
#define ACPI_MAX_STRING_LENGTH 512
|
||||
#define ACPI_PATHNAME_MAX 256 /* A full namespace pathname */
|
||||
|
||||
/* Maximum count for a semaphore object */
|
||||
|
||||
#define ACPI_MAX_SEMAPHORE_COUNT 256
|
||||
|
||||
/* Max reference count (for debug only) */
|
||||
/* Maximum object reference count (detects object deletion issues) */
|
||||
|
||||
#define ACPI_MAX_REFERENCE_COUNT 0x400
|
||||
#define ACPI_MAX_REFERENCE_COUNT 0x800
|
||||
|
||||
/* Size of cached memory mapping for system memory operation region */
|
||||
|
||||
#define ACPI_SYSMEM_REGION_WINDOW_SIZE 4096
|
||||
|
||||
/* OwnerId tracking. 8 entries allows for 255 OwnerIds */
|
||||
|
||||
#define ACPI_NUM_OWNERID_MASKS 8
|
||||
|
||||
/* Size of the root table array is increased by this increment */
|
||||
|
||||
#define ACPI_ROOT_TABLE_SIZE_INCREMENT 4
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
@ -210,14 +214,11 @@
|
||||
#define ACPI_METHOD_NUM_ARGS 7
|
||||
#define ACPI_METHOD_MAX_ARG 6
|
||||
|
||||
/* Maximum length of resulting string when converting from a buffer */
|
||||
|
||||
#define ACPI_MAX_STRING_CONVERSION 200
|
||||
|
||||
/* Length of _HID, _UID, and _CID values */
|
||||
/* Length of _HID, _UID, _CID, and UUID values */
|
||||
|
||||
#define ACPI_DEVICE_ID_LENGTH 0x09
|
||||
#define ACPI_MAX_CID_LENGTH 48
|
||||
#define ACPI_UUID_LENGTH 16
|
||||
|
||||
/*
|
||||
* Operand Stack (in WALK_STATE), Must be large enough to contain METHOD_MAX_ARG
|
||||
@ -225,12 +226,28 @@
|
||||
#define ACPI_OBJ_NUM_OPERANDS 8
|
||||
#define ACPI_OBJ_MAX_OPERAND 7
|
||||
|
||||
/* Number of elements in the Result Stack frame, can be an arbitrary value */
|
||||
|
||||
#define ACPI_RESULTS_FRAME_OBJ_NUM 8
|
||||
|
||||
/*
|
||||
* Maximal number of elements the Result Stack can contain,
|
||||
* it may be an arbitray value not exceeding the types of
|
||||
* ResultSize and ResultCount (now UINT8).
|
||||
*/
|
||||
#define ACPI_RESULTS_OBJ_NUM_MAX 255
|
||||
|
||||
/* Names within the namespace are 4 bytes long */
|
||||
|
||||
#define ACPI_NAME_SIZE 4
|
||||
#define ACPI_PATH_SEGMENT_LENGTH 5 /* 4 chars for name + 1 char for separator */
|
||||
#define ACPI_PATH_SEPARATOR '.'
|
||||
|
||||
/* Sizes for ACPI table headers */
|
||||
|
||||
#define ACPI_OEM_ID_SIZE 6
|
||||
#define ACPI_OEM_TABLE_ID_SIZE 8
|
||||
|
||||
/* Constants used in searching for the RSDP in low memory */
|
||||
|
||||
#define ACPI_EBDA_PTR_LOCATION 0x0000040E /* Physical Address */
|
||||
@ -251,12 +268,7 @@
|
||||
|
||||
/* Array sizes. Used for range checking also */
|
||||
|
||||
#define ACPI_NUM_ACCESS_TYPES 6
|
||||
#define ACPI_NUM_UPDATE_RULES 3
|
||||
#define ACPI_NUM_LOCK_RULES 2
|
||||
#define ACPI_NUM_MATCH_OPS 6
|
||||
#define ACPI_NUM_OPCODES 256
|
||||
#define ACPI_NUM_FIELD_NAMES 2
|
||||
#define ACPI_MAX_MATCH_OPCODE 5
|
||||
|
||||
/* RSDP checksums */
|
||||
|
||||
@ -267,10 +279,6 @@
|
||||
|
||||
#define ACPI_SMBUS_BUFFER_SIZE 34
|
||||
|
||||
/* Number of strings associated with the _OSI reserved method */
|
||||
|
||||
#define ACPI_NUM_OSI_STRINGS 10
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: acenv.h - Generation environment specific items
|
||||
* $Revision: 109 $
|
||||
* $Revision: 1.131 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
*
|
||||
* 1. Copyright Notice
|
||||
*
|
||||
* Some or all of this work - Copyright (c) 1999 - 2005, Intel Corp.
|
||||
* Some or all of this work - Copyright (c) 1999 - 2007, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* 2. License
|
||||
@ -123,33 +123,41 @@
|
||||
*/
|
||||
|
||||
#ifdef ACPI_LIBRARY
|
||||
/*
|
||||
* Note: The non-debug version of the AcpiLibrary does not contain any
|
||||
* debug support, for minimimal size. The debug version uses ACPI_FULL_DEBUG
|
||||
*/
|
||||
#define ACPI_USE_LOCAL_CACHE
|
||||
#endif
|
||||
|
||||
#ifdef ACPI_DUMP_APP
|
||||
#ifndef MSDOS
|
||||
#define ACPI_DEBUG_OUTPUT
|
||||
#endif
|
||||
#define ACPI_APPLICATION
|
||||
#define ACPI_DISASSEMBLER
|
||||
#define ACPI_NO_METHOD_EXECUTION
|
||||
#endif
|
||||
|
||||
#ifdef ACPI_EXEC_APP
|
||||
#undef DEBUGGER_THREADING
|
||||
#define DEBUGGER_THREADING DEBUGGER_SINGLE_THREADED
|
||||
#define ACPI_DEBUG_OUTPUT
|
||||
#define ACPI_APPLICATION
|
||||
#define ACPI_DEBUGGER
|
||||
#define ACPI_DISASSEMBLER
|
||||
#define ACPI_MUTEX_DEBUG
|
||||
#endif
|
||||
|
||||
#ifdef ACPI_ASL_COMPILER
|
||||
#define ACPI_DEBUG_OUTPUT
|
||||
#define ACPI_APPLICATION
|
||||
#define ACPI_DISASSEMBLER
|
||||
#define ACPI_CONSTANT_EVAL_ONLY
|
||||
#define ACPI_LARGE_NAMESPACE_NODE
|
||||
#define ACPI_DATA_TABLE_DISASSEMBLY
|
||||
#endif
|
||||
|
||||
#ifdef ACPI_EXEC_APP
|
||||
#undef DEBUGGER_THREADING
|
||||
#define DEBUGGER_THREADING DEBUGGER_SINGLE_THREADED
|
||||
#define ACPI_FULL_DEBUG
|
||||
#define ACPI_APPLICATION
|
||||
#define ACPI_DEBUGGER
|
||||
#define ACPI_MUTEX_DEBUG
|
||||
#define ACPI_DBG_TRACK_ALLOCATIONS
|
||||
#endif
|
||||
|
||||
#ifdef ACPI_DASM_APP
|
||||
#ifndef MSDOS
|
||||
#define ACPI_DEBUG_OUTPUT
|
||||
#endif
|
||||
#define ACPI_APPLICATION
|
||||
#define ACPI_DISASSEMBLER
|
||||
#define ACPI_NO_METHOD_EXECUTION
|
||||
#define ACPI_LARGE_NAMESPACE_NODE
|
||||
#define ACPI_DATA_TABLE_DISASSEMBLY
|
||||
#endif
|
||||
|
||||
#ifdef ACPI_APPLICATION
|
||||
@ -157,6 +165,13 @@
|
||||
#define ACPI_USE_LOCAL_CACHE
|
||||
#endif
|
||||
|
||||
#ifdef ACPI_FULL_DEBUG
|
||||
#define ACPI_DEBUGGER
|
||||
#define ACPI_DEBUG_OUTPUT
|
||||
#define ACPI_DISASSEMBLER
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* Environment configuration. The purpose of this file is to interface to the
|
||||
* local generation environment.
|
||||
@ -211,7 +226,7 @@
|
||||
#elif defined(MSDOS) /* Must appear after WIN32 and WIN64 check */
|
||||
#include "acdos16.h"
|
||||
|
||||
#elif defined(__FreeBSD__)
|
||||
#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
|
||||
#include <contrib/dev/acpica/acfreebsd.h>
|
||||
|
||||
#elif defined(__NetBSD__)
|
||||
@ -223,6 +238,9 @@
|
||||
#elif defined(NETWARE)
|
||||
#include "acnetware.h"
|
||||
|
||||
#elif defined(__sun)
|
||||
#include "acsolaris.h"
|
||||
|
||||
#else
|
||||
|
||||
/* All other environments */
|
||||
@ -232,24 +250,6 @@
|
||||
#define COMPILER_DEPENDENT_INT64 long long
|
||||
#define COMPILER_DEPENDENT_UINT64 unsigned long long
|
||||
|
||||
/*
|
||||
* This macro is used to tag functions as "printf-like" because
|
||||
* some compilers can catch printf format string problems. MSVC
|
||||
* doesn't, so this is proprocessed away.
|
||||
*/
|
||||
#define ACPI_PRINTF_LIKE_FUNC
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Memory allocation tracking. Used only if
|
||||
* 1) This is the debug version
|
||||
* 2) This is NOT a 16-bit version of the code (not enough real-mode memory)
|
||||
*/
|
||||
#ifdef ACPI_DEBUG_OUTPUT
|
||||
#if ACPI_MACHINE_WIDTH != 16
|
||||
#define ACPI_DBG_TRACK_ALLOCATIONS
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*! [End] no source code translation !*/
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: acfreebsd.h - OS specific defines, etc.
|
||||
* $Revision: 17 $
|
||||
* $Revision: 1.25 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
*
|
||||
* 1. Copyright Notice
|
||||
*
|
||||
* Some or all of this work - Copyright (c) 1999 - 2005, Intel Corp.
|
||||
* Some or all of this work - Copyright (c) 1999 - 2007, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* 2. License
|
||||
@ -124,6 +124,11 @@
|
||||
#include <sys/types.h>
|
||||
#include <machine/acpica_machdep.h>
|
||||
|
||||
#define ACPI_THREAD_ID pid_t
|
||||
#define ACPI_UINTPTR_T uintptr_t
|
||||
#define ACPI_USE_LOCAL_CACHE
|
||||
#define __cdecl
|
||||
|
||||
#ifdef _KERNEL
|
||||
#include "opt_acpi.h"
|
||||
#endif
|
||||
@ -143,7 +148,9 @@
|
||||
#ifdef DEBUGGER_THREADING
|
||||
#undef DEBUGGER_THREADING
|
||||
#endif /* DEBUGGER_THREADING */
|
||||
|
||||
#define DEBUGGER_THREADING 0 /* integrated with DDB */
|
||||
|
||||
#ifdef ACPI_DEBUG_OUTPUT
|
||||
#include "opt_ddb.h"
|
||||
#ifdef DDB
|
||||
@ -169,4 +176,26 @@
|
||||
/* Always use FreeBSD code over our local versions */
|
||||
#define ACPI_USE_SYSTEM_CLIBRARY
|
||||
|
||||
#if defined(_KERNEL) && (__FreeBSD_version < 700020)
|
||||
/* Or strstr (used in debugging mode, also move to libkern) */
|
||||
static __inline char *
|
||||
strstr (char *s, char *find)
|
||||
{
|
||||
char c, sc;
|
||||
size_t len;
|
||||
|
||||
if ((c = *find++) != 0) {
|
||||
len = strlen (find);
|
||||
do {
|
||||
do {
|
||||
if ((sc = *s++) == 0)
|
||||
return (NULL);
|
||||
} while (sc != c);
|
||||
} while (strncmp (s, find, len) != 0);
|
||||
s--;
|
||||
}
|
||||
return ((char *) s);
|
||||
}
|
||||
#endif /* _KERNEL */
|
||||
|
||||
#endif /* __ACFREEBSD_H__ */
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: acgcc.h - GCC specific defines, etc.
|
||||
* $Revision: 26 $
|
||||
* $Revision: 1.32 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
*
|
||||
* 1. Copyright Notice
|
||||
*
|
||||
* Some or all of this work - Copyright (c) 1999 - 2005, Intel Corp.
|
||||
* Some or all of this work - Copyright (c) 1999 - 2007, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* 2. License
|
||||
@ -121,16 +121,19 @@
|
||||
|
||||
#define ACPI_GET_FUNCTION_NAME __FUNCTION__
|
||||
|
||||
/* This macro is used to tag functions as "printf-like" because
|
||||
/*
|
||||
* This macro is used to tag functions as "printf-like" because
|
||||
* some compilers (like GCC) can catch printf format string problems.
|
||||
*/
|
||||
#define ACPI_PRINTF_LIKE_FUNC __attribute__ ((__format__ (__printf__, 6, 7)))
|
||||
#define ACPI_PRINTF_LIKE(c) __attribute__ ((__format__ (__printf__, c, c+1)))
|
||||
|
||||
/* Some compilers complain about unused variables. Sometimes we don't want to
|
||||
/*
|
||||
* Some compilers complain about unused variables. Sometimes we don't want to
|
||||
* use all the variables (for example, _AcpiModuleName). This allows us
|
||||
* to to tell the compiler warning in a per-variable manner that a variable
|
||||
* is unused.
|
||||
*/
|
||||
#define ACPI_UNUSED_VAR __attribute__ ((unused))
|
||||
|
||||
|
||||
#endif /* __ACGCC_H__ */
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: acpi.h - Master include file, Publics and external data.
|
||||
* $Revision: 57 $
|
||||
* $Revision: 1.61 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
*
|
||||
* 1. Copyright Notice
|
||||
*
|
||||
* Some or all of this work - Copyright (c) 1999 - 2005, Intel Corp.
|
||||
* Some or all of this work - Copyright (c) 1999 - 2007, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* 2. License
|
||||
|
@ -12,7 +12,7 @@
|
||||
*
|
||||
* 1. Copyright Notice
|
||||
*
|
||||
* Some or all of this work - Copyright (c) 1999 - 2005, Intel Corp.
|
||||
* Some or all of this work - Copyright (c) 1999 - 2007, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* 2. License
|
||||
@ -125,12 +125,18 @@
|
||||
#include <contrib/dev/acpica/actypes.h>
|
||||
|
||||
|
||||
/* Priorities for AcpiOsQueueForExecution */
|
||||
/* Types for AcpiOsExecute */
|
||||
|
||||
#define OSD_PRIORITY_GPE 1
|
||||
#define OSD_PRIORITY_HIGH 2
|
||||
#define OSD_PRIORITY_MED 3
|
||||
#define OSD_PRIORITY_LO 4
|
||||
typedef enum
|
||||
{
|
||||
OSL_GLOBAL_LOCK_HANDLER,
|
||||
OSL_NOTIFY_HANDLER,
|
||||
OSL_GPE_HANDLER,
|
||||
OSL_DEBUGGER_THREAD,
|
||||
OSL_EC_POLL_HANDLER,
|
||||
OSL_EC_BURST_HANDLER
|
||||
|
||||
} ACPI_EXECUTE_TYPE;
|
||||
|
||||
#define ACPI_NO_UNIT_LIMIT ((UINT32) -1)
|
||||
#define ACPI_MUTEX_SEM 1
|
||||
@ -165,10 +171,9 @@ AcpiOsTerminate (
|
||||
/*
|
||||
* ACPI Table interfaces
|
||||
*/
|
||||
ACPI_STATUS
|
||||
ACPI_PHYSICAL_ADDRESS
|
||||
AcpiOsGetRootPointer (
|
||||
UINT32 Flags,
|
||||
ACPI_POINTER *Address);
|
||||
void);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiOsPredefinedOverride (
|
||||
@ -182,45 +187,77 @@ AcpiOsTableOverride (
|
||||
|
||||
|
||||
/*
|
||||
* Synchronization primitives
|
||||
* Spinlock primitives
|
||||
*/
|
||||
ACPI_STATUS
|
||||
AcpiOsCreateLock (
|
||||
ACPI_SPINLOCK *OutHandle);
|
||||
|
||||
void
|
||||
AcpiOsDeleteLock (
|
||||
ACPI_SPINLOCK Handle);
|
||||
|
||||
ACPI_CPU_FLAGS
|
||||
AcpiOsAcquireLock (
|
||||
ACPI_SPINLOCK Handle);
|
||||
|
||||
void
|
||||
AcpiOsReleaseLock (
|
||||
ACPI_SPINLOCK Handle,
|
||||
ACPI_CPU_FLAGS Flags);
|
||||
|
||||
|
||||
/*
|
||||
* Semaphore primitives
|
||||
*/
|
||||
ACPI_STATUS
|
||||
AcpiOsCreateSemaphore (
|
||||
UINT32 MaxUnits,
|
||||
UINT32 InitialUnits,
|
||||
ACPI_HANDLE *OutHandle);
|
||||
ACPI_SEMAPHORE *OutHandle);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiOsDeleteSemaphore (
|
||||
ACPI_HANDLE Handle);
|
||||
ACPI_SEMAPHORE Handle);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiOsWaitSemaphore (
|
||||
ACPI_HANDLE Handle,
|
||||
ACPI_SEMAPHORE Handle,
|
||||
UINT32 Units,
|
||||
UINT16 Timeout);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiOsSignalSemaphore (
|
||||
ACPI_HANDLE Handle,
|
||||
ACPI_SEMAPHORE Handle,
|
||||
UINT32 Units);
|
||||
|
||||
|
||||
/*
|
||||
* Mutex primitives
|
||||
*/
|
||||
ACPI_STATUS
|
||||
AcpiOsCreateLock (
|
||||
ACPI_HANDLE *OutHandle);
|
||||
AcpiOsCreateMutex (
|
||||
ACPI_MUTEX *OutHandle);
|
||||
|
||||
void
|
||||
AcpiOsDeleteLock (
|
||||
ACPI_HANDLE Handle);
|
||||
AcpiOsDeleteMutex (
|
||||
ACPI_MUTEX Handle);
|
||||
|
||||
ACPI_NATIVE_UINT
|
||||
AcpiOsAcquireLock (
|
||||
ACPI_HANDLE Handle);
|
||||
ACPI_STATUS
|
||||
AcpiOsAcquireMutex (
|
||||
ACPI_MUTEX Handle,
|
||||
UINT16 Timeout);
|
||||
|
||||
void
|
||||
AcpiOsReleaseLock (
|
||||
ACPI_HANDLE Handle,
|
||||
ACPI_NATIVE_UINT Flags);
|
||||
AcpiOsReleaseMutex (
|
||||
ACPI_MUTEX Handle);
|
||||
|
||||
/* Temporary macros for Mutex* interfaces, map to existing semaphore xfaces */
|
||||
|
||||
#define AcpiOsCreateMutex(OutHandle) AcpiOsCreateSemaphore (1, 1, OutHandle)
|
||||
#define AcpiOsDeleteMutex(Handle) (void) AcpiOsDeleteSemaphore (Handle)
|
||||
#define AcpiOsAcquireMutex(Handle,Time) AcpiOsWaitSemaphore (Handle, 1, Time)
|
||||
#define AcpiOsReleaseMutex(Handle) (void) AcpiOsSignalSemaphore (Handle, 1)
|
||||
|
||||
|
||||
/*
|
||||
@ -234,11 +271,10 @@ void
|
||||
AcpiOsFree (
|
||||
void * Memory);
|
||||
|
||||
ACPI_STATUS
|
||||
void *
|
||||
AcpiOsMapMemory (
|
||||
ACPI_PHYSICAL_ADDRESS PhysicalAddress,
|
||||
ACPI_SIZE Size,
|
||||
void **LogicalAddress);
|
||||
ACPI_PHYSICAL_ADDRESS Where,
|
||||
ACPI_NATIVE_UINT Length);
|
||||
|
||||
void
|
||||
AcpiOsUnmapMemory (
|
||||
@ -297,13 +333,13 @@ AcpiOsRemoveInterruptHandler (
|
||||
/*
|
||||
* Threads and Scheduling
|
||||
*/
|
||||
UINT32
|
||||
ACPI_THREAD_ID
|
||||
AcpiOsGetThreadId (
|
||||
void);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiOsQueueForExecution (
|
||||
UINT32 Priority,
|
||||
AcpiOsExecute (
|
||||
ACPI_EXECUTE_TYPE Type,
|
||||
ACPI_OSD_EXEC_CALLBACK Function,
|
||||
void *Context);
|
||||
|
||||
@ -371,6 +407,7 @@ AcpiOsWritePciConfiguration (
|
||||
ACPI_INTEGER Value,
|
||||
UINT32 Width);
|
||||
|
||||
|
||||
/*
|
||||
* Interim function needed for PCI IRQ routing
|
||||
*/
|
||||
@ -380,9 +417,20 @@ AcpiOsDerivePciId(
|
||||
ACPI_HANDLE Chandle,
|
||||
ACPI_PCI_ID **PciId);
|
||||
|
||||
|
||||
/*
|
||||
* Miscellaneous
|
||||
*/
|
||||
ACPI_STATUS
|
||||
AcpiOsValidateInterface (
|
||||
char *Interface);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiOsValidateAddress (
|
||||
UINT8 SpaceId,
|
||||
ACPI_PHYSICAL_ADDRESS Address,
|
||||
ACPI_SIZE Length);
|
||||
|
||||
BOOLEAN
|
||||
AcpiOsReadable (
|
||||
void *Pointer,
|
||||
@ -402,6 +450,7 @@ AcpiOsSignal (
|
||||
UINT32 Function,
|
||||
void *Info);
|
||||
|
||||
|
||||
/*
|
||||
* Debug print routines
|
||||
*/
|
||||
@ -451,14 +500,5 @@ void
|
||||
AcpiOsCloseDirectory (
|
||||
void *DirHandle);
|
||||
|
||||
/*
|
||||
* Debug
|
||||
*/
|
||||
void
|
||||
AcpiOsDbgAssert(
|
||||
void *FailedAssertion,
|
||||
void *FileName,
|
||||
UINT32 LineNumber,
|
||||
char *Message);
|
||||
|
||||
#endif /* __ACPIOSXF_H__ */
|
||||
|
@ -9,7 +9,7 @@
|
||||
*
|
||||
* 1. Copyright Notice
|
||||
*
|
||||
* Some or all of this work - Copyright (c) 1999 - 2005, Intel Corp.
|
||||
* Some or all of this work - Copyright (c) 1999 - 2007, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* 2. License
|
||||
@ -126,6 +126,12 @@
|
||||
* Global interfaces
|
||||
*/
|
||||
ACPI_STATUS
|
||||
AcpiInitializeTables (
|
||||
ACPI_TABLE_DESC *InitialStorage,
|
||||
UINT32 InitialTableCount,
|
||||
BOOLEAN AllowResize);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiInitializeSubsystem (
|
||||
void);
|
||||
|
||||
@ -190,40 +196,33 @@ AcpiFree (
|
||||
* ACPI table manipulation interfaces
|
||||
*/
|
||||
ACPI_STATUS
|
||||
AcpiReallocateRootTable (
|
||||
void);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiFindRootPointer (
|
||||
UINT32 Flags,
|
||||
ACPI_POINTER *RsdpAddress);
|
||||
ACPI_NATIVE_UINT *RsdpAddress);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiLoadTables (
|
||||
void);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiLoadTable (
|
||||
ACPI_TABLE_HEADER *TablePtr);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiUnloadTable (
|
||||
ACPI_TABLE_TYPE TableType);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiGetTableHeader (
|
||||
ACPI_TABLE_TYPE TableType,
|
||||
UINT32 Instance,
|
||||
ACPI_STRING Signature,
|
||||
ACPI_NATIVE_UINT Instance,
|
||||
ACPI_TABLE_HEADER *OutTableHeader);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiGetTable (
|
||||
ACPI_TABLE_TYPE TableType,
|
||||
UINT32 Instance,
|
||||
ACPI_BUFFER *RetBuffer);
|
||||
ACPI_STRING Signature,
|
||||
ACPI_NATIVE_UINT Instance,
|
||||
ACPI_TABLE_HEADER **OutTable);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiGetFirmwareTable (
|
||||
ACPI_STRING Signature,
|
||||
UINT32 Instance,
|
||||
UINT32 Flags,
|
||||
ACPI_TABLE_HEADER **TablePointer);
|
||||
AcpiGetTableByIndex (
|
||||
ACPI_NATIVE_UINT TableIndex,
|
||||
ACPI_TABLE_HEADER **OutTable);
|
||||
|
||||
|
||||
/*
|
||||
@ -465,6 +464,12 @@ ACPI_STATUS (*ACPI_WALK_RESOURCE_CALLBACK) (
|
||||
ACPI_RESOURCE *Resource,
|
||||
void *Context);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiGetVendorResource (
|
||||
ACPI_HANDLE DeviceHandle,
|
||||
char *Name,
|
||||
ACPI_VENDOR_UUID *Uuid,
|
||||
ACPI_BUFFER *RetBuffer);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiGetCurrentResources(
|
||||
@ -478,10 +483,10 @@ AcpiGetPossibleResources(
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiWalkResources (
|
||||
ACPI_HANDLE DeviceHandle,
|
||||
char *Path,
|
||||
ACPI_WALK_RESOURCE_CALLBACK UserFunction,
|
||||
void *Context);
|
||||
ACPI_HANDLE DeviceHandle,
|
||||
char *Name,
|
||||
ACPI_WALK_RESOURCE_CALLBACK UserFunction,
|
||||
void *Context);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiSetCurrentResources (
|
||||
@ -504,14 +509,12 @@ AcpiResourceToAddress64 (
|
||||
ACPI_STATUS
|
||||
AcpiGetRegister (
|
||||
UINT32 RegisterId,
|
||||
UINT32 *ReturnValue,
|
||||
UINT32 Flags);
|
||||
UINT32 *ReturnValue);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiSetRegister (
|
||||
UINT32 RegisterId,
|
||||
UINT32 Value,
|
||||
UINT32 Flags);
|
||||
UINT32 Value);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiSetFirmwareWakingVector (
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: acutils.h -- prototypes for the common (subsystem-wide) procedures
|
||||
* $Revision: 164 $
|
||||
* $Revision: 1.200 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
*
|
||||
* 1. Copyright Notice
|
||||
*
|
||||
* Some or all of this work - Copyright (c) 1999 - 2005, Intel Corp.
|
||||
* Some or all of this work - Copyright (c) 1999 - 2007, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* 2. License
|
||||
@ -118,6 +118,47 @@
|
||||
#define _ACUTILS_H
|
||||
|
||||
|
||||
extern const UINT8 AcpiGbl_ResourceAmlSizes[];
|
||||
|
||||
/* Strings used by the disassembler and debugger resource dump routines */
|
||||
|
||||
#if defined(ACPI_DISASSEMBLER) || defined (ACPI_DEBUGGER)
|
||||
|
||||
extern const char *AcpiGbl_BmDecode[];
|
||||
extern const char *AcpiGbl_ConfigDecode[];
|
||||
extern const char *AcpiGbl_ConsumeDecode[];
|
||||
extern const char *AcpiGbl_DecDecode[];
|
||||
extern const char *AcpiGbl_HeDecode[];
|
||||
extern const char *AcpiGbl_IoDecode[];
|
||||
extern const char *AcpiGbl_LlDecode[];
|
||||
extern const char *AcpiGbl_MaxDecode[];
|
||||
extern const char *AcpiGbl_MemDecode[];
|
||||
extern const char *AcpiGbl_MinDecode[];
|
||||
extern const char *AcpiGbl_MtpDecode[];
|
||||
extern const char *AcpiGbl_RngDecode[];
|
||||
extern const char *AcpiGbl_RwDecode[];
|
||||
extern const char *AcpiGbl_ShrDecode[];
|
||||
extern const char *AcpiGbl_SizDecode[];
|
||||
extern const char *AcpiGbl_TrsDecode[];
|
||||
extern const char *AcpiGbl_TtpDecode[];
|
||||
extern const char *AcpiGbl_TypDecode[];
|
||||
#endif
|
||||
|
||||
/* Types for Resource descriptor entries */
|
||||
|
||||
#define ACPI_INVALID_RESOURCE 0
|
||||
#define ACPI_FIXED_LENGTH 1
|
||||
#define ACPI_VARIABLE_LENGTH 2
|
||||
#define ACPI_SMALL_VARIABLE_LENGTH 3
|
||||
|
||||
typedef
|
||||
ACPI_STATUS (*ACPI_WALK_AML_CALLBACK) (
|
||||
UINT8 *Aml,
|
||||
UINT32 Length,
|
||||
UINT32 Offset,
|
||||
UINT8 ResourceIndex,
|
||||
void *Context);
|
||||
|
||||
typedef
|
||||
ACPI_STATUS (*ACPI_PKG_CALLBACK) (
|
||||
UINT8 ObjectType,
|
||||
@ -206,10 +247,6 @@ void
|
||||
AcpiUtSubsystemShutdown (
|
||||
void);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiUtValidateFadt (
|
||||
void);
|
||||
|
||||
|
||||
/*
|
||||
* utclib - Local implementations of C library functions
|
||||
@ -434,24 +471,6 @@ AcpiUtPtrExit (
|
||||
UINT32 ComponentId,
|
||||
UINT8 *Ptr);
|
||||
|
||||
void
|
||||
AcpiUtReportInfo (
|
||||
char *ModuleName,
|
||||
UINT32 LineNumber,
|
||||
UINT32 ComponentId);
|
||||
|
||||
void
|
||||
AcpiUtReportError (
|
||||
char *ModuleName,
|
||||
UINT32 LineNumber,
|
||||
UINT32 ComponentId);
|
||||
|
||||
void
|
||||
AcpiUtReportWarning (
|
||||
char *ModuleName,
|
||||
UINT32 LineNumber,
|
||||
UINT32 ComponentId);
|
||||
|
||||
void
|
||||
AcpiUtDumpBuffer (
|
||||
UINT8 *Buffer,
|
||||
@ -459,6 +478,29 @@ AcpiUtDumpBuffer (
|
||||
UINT32 Display,
|
||||
UINT32 componentId);
|
||||
|
||||
void
|
||||
AcpiUtDumpBuffer2 (
|
||||
UINT8 *Buffer,
|
||||
UINT32 Count,
|
||||
UINT32 Display);
|
||||
|
||||
void
|
||||
AcpiUtReportError (
|
||||
char *ModuleName,
|
||||
UINT32 LineNumber);
|
||||
|
||||
void
|
||||
AcpiUtReportInfo (
|
||||
char *ModuleName,
|
||||
UINT32 LineNumber);
|
||||
|
||||
void
|
||||
AcpiUtReportWarning (
|
||||
char *ModuleName,
|
||||
UINT32 LineNumber);
|
||||
|
||||
/* Error and message reporting interfaces */
|
||||
|
||||
void ACPI_INTERNAL_VAR_XFACE
|
||||
AcpiUtDebugPrint (
|
||||
UINT32 RequestedDebugLevel,
|
||||
@ -467,7 +509,7 @@ AcpiUtDebugPrint (
|
||||
char *ModuleName,
|
||||
UINT32 ComponentId,
|
||||
char *Format,
|
||||
...) ACPI_PRINTF_LIKE_FUNC;
|
||||
...) ACPI_PRINTF_LIKE(6);
|
||||
|
||||
void ACPI_INTERNAL_VAR_XFACE
|
||||
AcpiUtDebugPrintRaw (
|
||||
@ -477,7 +519,36 @@ AcpiUtDebugPrintRaw (
|
||||
char *ModuleName,
|
||||
UINT32 ComponentId,
|
||||
char *Format,
|
||||
...) ACPI_PRINTF_LIKE_FUNC;
|
||||
...) ACPI_PRINTF_LIKE(6);
|
||||
|
||||
void ACPI_INTERNAL_VAR_XFACE
|
||||
AcpiUtError (
|
||||
char *ModuleName,
|
||||
UINT32 LineNumber,
|
||||
char *Format,
|
||||
...) ACPI_PRINTF_LIKE(3);
|
||||
|
||||
void ACPI_INTERNAL_VAR_XFACE
|
||||
AcpiUtException (
|
||||
char *ModuleName,
|
||||
UINT32 LineNumber,
|
||||
ACPI_STATUS Status,
|
||||
char *Format,
|
||||
...) ACPI_PRINTF_LIKE(4);
|
||||
|
||||
void ACPI_INTERNAL_VAR_XFACE
|
||||
AcpiUtWarning (
|
||||
char *ModuleName,
|
||||
UINT32 LineNumber,
|
||||
char *Format,
|
||||
...) ACPI_PRINTF_LIKE(3);
|
||||
|
||||
void ACPI_INTERNAL_VAR_XFACE
|
||||
AcpiUtInfo (
|
||||
char *ModuleName,
|
||||
UINT32 LineNumber,
|
||||
char *Format,
|
||||
...) ACPI_PRINTF_LIKE(3);
|
||||
|
||||
|
||||
/*
|
||||
@ -665,6 +736,14 @@ AcpiUtShortDivide (
|
||||
/*
|
||||
* utmisc
|
||||
*/
|
||||
const char *
|
||||
AcpiUtValidateException (
|
||||
ACPI_STATUS Status);
|
||||
|
||||
BOOLEAN
|
||||
AcpiUtIsAmlTable (
|
||||
ACPI_TABLE_HEADER *Table);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiUtAllocateOwnerId (
|
||||
ACPI_OWNER_ID *OwnerId);
|
||||
@ -693,9 +772,14 @@ BOOLEAN
|
||||
AcpiUtValidAcpiName (
|
||||
UINT32 Name);
|
||||
|
||||
ACPI_NAME
|
||||
AcpiUtRepairName (
|
||||
char *Name);
|
||||
|
||||
BOOLEAN
|
||||
AcpiUtValidAcpiCharacter (
|
||||
char Character);
|
||||
AcpiUtValidAcpiChar (
|
||||
char Character,
|
||||
ACPI_NATIVE_UINT Position);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiUtStrtoul64 (
|
||||
@ -707,27 +791,6 @@ AcpiUtStrtoul64 (
|
||||
|
||||
#define ACPI_ANY_BASE 0
|
||||
|
||||
UINT32
|
||||
AcpiUtGetDescriptorLength (
|
||||
void *Aml);
|
||||
|
||||
UINT16
|
||||
AcpiUtGetResourceLength (
|
||||
void *Aml);
|
||||
|
||||
UINT8
|
||||
AcpiUtGetResourceType (
|
||||
void *Aml);
|
||||
|
||||
UINT8 *
|
||||
AcpiUtGetResourceEndTag (
|
||||
ACPI_OPERAND_OBJECT *ObjDesc);
|
||||
|
||||
UINT8
|
||||
AcpiUtGenerateChecksum (
|
||||
UINT8 *Buffer,
|
||||
UINT32 Length);
|
||||
|
||||
UINT32
|
||||
AcpiUtDwordByteSwap (
|
||||
UINT32 Value);
|
||||
@ -742,10 +805,46 @@ AcpiUtDisplayInitPathname (
|
||||
UINT8 Type,
|
||||
ACPI_NAMESPACE_NODE *ObjHandle,
|
||||
char *Path);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* utresrc
|
||||
*/
|
||||
ACPI_STATUS
|
||||
AcpiUtWalkAmlResources (
|
||||
UINT8 *Aml,
|
||||
ACPI_SIZE AmlLength,
|
||||
ACPI_WALK_AML_CALLBACK UserFunction,
|
||||
void *Context);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiUtValidateResource (
|
||||
void *Aml,
|
||||
UINT8 *ReturnIndex);
|
||||
|
||||
UINT32
|
||||
AcpiUtGetDescriptorLength (
|
||||
void *Aml);
|
||||
|
||||
UINT16
|
||||
AcpiUtGetResourceLength (
|
||||
void *Aml);
|
||||
|
||||
UINT8
|
||||
AcpiUtGetResourceHeaderLength (
|
||||
void *Aml);
|
||||
|
||||
UINT8
|
||||
AcpiUtGetResourceType (
|
||||
void *Aml);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiUtGetResourceEndTag (
|
||||
ACPI_OPERAND_OBJECT *ObjDesc,
|
||||
UINT8 **EndTag);
|
||||
|
||||
|
||||
/*
|
||||
* utmutex - mutex support
|
||||
*/
|
||||
@ -794,7 +893,7 @@ AcpiUtAllocate (
|
||||
UINT32 Line);
|
||||
|
||||
void *
|
||||
AcpiUtCallocate (
|
||||
AcpiUtAllocateZeroed (
|
||||
ACPI_SIZE Size,
|
||||
UINT32 Component,
|
||||
char *Module,
|
||||
@ -809,7 +908,7 @@ AcpiUtAllocateAndTrack (
|
||||
UINT32 Line);
|
||||
|
||||
void *
|
||||
AcpiUtCallocateAndTrack (
|
||||
AcpiUtAllocateZeroedAndTrack (
|
||||
ACPI_SIZE Size,
|
||||
UINT32 Component,
|
||||
char *Module,
|
||||
@ -830,6 +929,14 @@ void
|
||||
AcpiUtDumpAllocations (
|
||||
UINT32 Component,
|
||||
char *Module);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiUtCreateList (
|
||||
char *ListName,
|
||||
UINT16 ObjectSize,
|
||||
ACPI_MEMORY_LIST **ReturnCache);
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* _ACUTILS_H */
|
||||
|
@ -8,7 +8,7 @@
|
||||
*
|
||||
* 1. Copyright Notice
|
||||
*
|
||||
* Some or all of this work - Copyright (c) 1999 - 2005, Intel Corp.
|
||||
* Some or all of this work - Copyright (c) 1999 - 2007, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* 2. License
|
||||
@ -135,6 +135,7 @@
|
||||
#include <contrib/dev/acpica/acapps.h>
|
||||
|
||||
extern FILE *AcpiGbl_DebugFile;
|
||||
extern BOOLEAN AcpiGbl_IgnoreErrors;
|
||||
|
||||
/*
|
||||
* Debug Regions
|
||||
@ -145,6 +146,7 @@ typedef struct Region
|
||||
UINT32 Length;
|
||||
void *Buffer;
|
||||
void *NextRegion;
|
||||
UINT8 SpaceId;
|
||||
|
||||
} REGION;
|
||||
|
||||
@ -183,7 +185,7 @@ typedef union ptr_ovl
|
||||
#define OSD_PRINT(lvl,fp) TEST_OUTPUT_LEVEL(lvl) {\
|
||||
AcpiOsPrintf PARAM_LIST(fp);}
|
||||
|
||||
void
|
||||
void __cdecl
|
||||
AeCtrlCHandler (
|
||||
int Sig);
|
||||
|
||||
@ -229,7 +231,12 @@ AeDisplayAllMethods (
|
||||
UINT32 DisplayCount);
|
||||
|
||||
ACPI_STATUS
|
||||
AeInstallHandlers (void);
|
||||
AeInstallHandlers (
|
||||
void);
|
||||
|
||||
void
|
||||
AeMiscellaneousTests (
|
||||
void);
|
||||
|
||||
|
||||
#endif /* _AECOMMON */
|
||||
|
@ -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: 76 $
|
||||
* $Revision: 1.94 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
*
|
||||
* 1. Copyright Notice
|
||||
*
|
||||
* Some or all of this work - Copyright (c) 1999 - 2005, Intel Corp.
|
||||
* Some or all of this work - Copyright (c) 1999 - 2007, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* 2. License
|
||||
@ -120,6 +120,7 @@
|
||||
#include <contrib/dev/acpica/acdebug.h>
|
||||
#include <contrib/dev/acpica/acnamesp.h>
|
||||
#include <contrib/dev/acpica/actables.h>
|
||||
#include <contrib/dev/acpica/acdisasm.h>
|
||||
|
||||
#if (defined ACPI_DEBUGGER || defined ACPI_DISASSEMBLER)
|
||||
|
||||
@ -151,7 +152,6 @@ AcpiDbCheckTextModeCorruption (
|
||||
static ACPI_STATUS
|
||||
AeLocalLoadTable (
|
||||
ACPI_TABLE_HEADER *TablePtr);
|
||||
|
||||
#endif
|
||||
|
||||
/*******************************************************************************
|
||||
@ -250,8 +250,8 @@ AcpiDbCheckTextModeCorruption (
|
||||
|
||||
if (TableLength != FileLength)
|
||||
{
|
||||
ACPI_REPORT_WARNING ((
|
||||
"File length (0x%X) is not the same as the table length (0x%X)\n",
|
||||
ACPI_WARNING ((AE_INFO,
|
||||
"File length (0x%X) is not the same as the table length (0x%X)",
|
||||
FileLength, TableLength));
|
||||
}
|
||||
|
||||
@ -277,6 +277,11 @@ AcpiDbCheckTextModeCorruption (
|
||||
}
|
||||
}
|
||||
|
||||
if (!Pairs)
|
||||
{
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
/*
|
||||
* Entire table scanned, each CR is part of a CR/LF pair --
|
||||
* meaning that the table was treated as a text file somewhere.
|
||||
@ -316,61 +321,95 @@ AcpiDbReadTable (
|
||||
UINT32 Actual;
|
||||
ACPI_STATUS Status;
|
||||
UINT32 FileSize;
|
||||
BOOLEAN StandardHeader = TRUE;
|
||||
|
||||
|
||||
/* Get the file size */
|
||||
|
||||
fseek (fp, 0, SEEK_END);
|
||||
FileSize = (UINT32) ftell (fp);
|
||||
fseek (fp, 0, SEEK_SET);
|
||||
|
||||
if (FileSize < 4)
|
||||
{
|
||||
return (AE_BAD_HEADER);
|
||||
}
|
||||
|
||||
/* Read the signature */
|
||||
|
||||
if (fread (&TableHeader, 1, 4, fp) != 4)
|
||||
{
|
||||
AcpiOsPrintf ("Could not read the table signature\n");
|
||||
return (AE_BAD_HEADER);
|
||||
}
|
||||
|
||||
fseek (fp, 0, SEEK_SET);
|
||||
|
||||
/* The RSDT and FACS tables do not have standard ACPI headers */
|
||||
|
||||
if (ACPI_COMPARE_NAME (TableHeader.Signature, "RSD ") ||
|
||||
ACPI_COMPARE_NAME (TableHeader.Signature, "FACS"))
|
||||
{
|
||||
*TableLength = FileSize;
|
||||
StandardHeader = FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Read the table header */
|
||||
|
||||
if (fread (&TableHeader, 1, sizeof (TableHeader), fp) !=
|
||||
sizeof (ACPI_TABLE_HEADER))
|
||||
{
|
||||
AcpiOsPrintf ("Could not read the table header\n");
|
||||
return (AE_BAD_HEADER);
|
||||
}
|
||||
if (fread (&TableHeader, 1, sizeof (TableHeader), fp) !=
|
||||
sizeof (ACPI_TABLE_HEADER))
|
||||
{
|
||||
AcpiOsPrintf ("Could not read the table header\n");
|
||||
return (AE_BAD_HEADER);
|
||||
}
|
||||
|
||||
/* Validate the table header/length */
|
||||
#if 0
|
||||
/* Validate the table header/length */
|
||||
|
||||
Status = AcpiTbValidateTableHeader (&TableHeader);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
AcpiOsPrintf ("Table header is invalid!\n");
|
||||
return (Status);
|
||||
}
|
||||
Status = AcpiTbValidateTableHeader (&TableHeader);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
AcpiOsPrintf ("Table header is invalid!\n");
|
||||
return (Status);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* File size must be at least as long as the Header-specified length */
|
||||
/* File size must be at least as long as the Header-specified length */
|
||||
|
||||
if (TableHeader.Length > FileSize)
|
||||
{
|
||||
AcpiOsPrintf (
|
||||
"TableHeader length [0x%X] greater than the input file size [0x%X]\n",
|
||||
TableHeader.Length, FileSize);
|
||||
return (AE_BAD_HEADER);
|
||||
}
|
||||
if (TableHeader.Length > FileSize)
|
||||
{
|
||||
AcpiOsPrintf (
|
||||
"TableHeader length [0x%X] greater than the input file size [0x%X]\n",
|
||||
TableHeader.Length, FileSize);
|
||||
return (AE_BAD_HEADER);
|
||||
}
|
||||
|
||||
/* We only support a limited number of table types */
|
||||
#ifdef ACPI_OBSOLETE_CODE
|
||||
/* We only support a limited number of table types */
|
||||
|
||||
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 [%4.4s] is invalid or not supported\n",
|
||||
(char *) TableHeader.Signature);
|
||||
ACPI_DUMP_BUFFER (&TableHeader, sizeof (ACPI_TABLE_HEADER));
|
||||
return (AE_ERROR);
|
||||
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 [%4.4s] is invalid or not supported\n",
|
||||
(char *) TableHeader.Signature);
|
||||
ACPI_DUMP_BUFFER (&TableHeader, sizeof (ACPI_TABLE_HEADER));
|
||||
return (AE_ERROR);
|
||||
}
|
||||
#endif
|
||||
|
||||
*TableLength = TableHeader.Length;
|
||||
}
|
||||
|
||||
/* Allocate a buffer for the table */
|
||||
|
||||
*TableLength = TableHeader.Length;
|
||||
*Table = AcpiOsAllocate ((size_t) (FileSize));
|
||||
*Table = AcpiOsAllocate ((size_t) FileSize);
|
||||
if (!*Table)
|
||||
{
|
||||
AcpiOsPrintf (
|
||||
"Could not allocate memory for ACPI table %4.4s (size=0x%X)\n",
|
||||
TableHeader.Signature, TableHeader.Length);
|
||||
TableHeader.Signature, *TableLength);
|
||||
return (AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
@ -380,15 +419,19 @@ AcpiDbReadTable (
|
||||
Actual = fread (*Table, 1, (size_t) FileSize, fp);
|
||||
if (Actual == FileSize)
|
||||
{
|
||||
/* Now validate the checksum */
|
||||
|
||||
Status = AcpiTbVerifyTableChecksum (*Table);
|
||||
|
||||
if (Status == AE_BAD_CHECKSUM)
|
||||
if (StandardHeader)
|
||||
{
|
||||
Status = AcpiDbCheckTextModeCorruption ((UINT8 *) *Table,
|
||||
FileSize, (*Table)->Length);
|
||||
return (Status);
|
||||
/* Now validate the checksum */
|
||||
|
||||
Status = AcpiTbChecksum ((void *) *Table,
|
||||
ACPI_CAST_PTR (ACPI_TABLE_HEADER, *Table)->Length);
|
||||
|
||||
if (Status == AE_BAD_CHECKSUM)
|
||||
{
|
||||
Status = AcpiDbCheckTextModeCorruption ((UINT8 *) *Table,
|
||||
FileSize, (*Table)->Length);
|
||||
return (Status);
|
||||
}
|
||||
}
|
||||
return (AE_OK);
|
||||
}
|
||||
@ -429,11 +472,12 @@ static ACPI_STATUS
|
||||
AeLocalLoadTable (
|
||||
ACPI_TABLE_HEADER *Table)
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
ACPI_TABLE_DESC TableInfo;
|
||||
ACPI_STATUS Status = AE_OK;
|
||||
/* ACPI_TABLE_DESC TableInfo; */
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("AeLocalLoadTable");
|
||||
ACPI_FUNCTION_TRACE (AeLocalLoadTable);
|
||||
#if 0
|
||||
|
||||
|
||||
if (!Table)
|
||||
@ -473,9 +517,10 @@ AeLocalLoadTable (
|
||||
{
|
||||
/* Uninstall table and free the buffer */
|
||||
|
||||
AcpiTbDeleteTablesByType (ACPI_TABLE_DSDT);
|
||||
AcpiTbDeleteTablesByType (ACPI_TABLE_ID_DSDT);
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
return_ACPI_STATUS (Status);
|
||||
@ -552,6 +597,7 @@ AcpiDbGetTableFromFile (
|
||||
#ifdef ACPI_APPLICATION
|
||||
ACPI_STATUS Status;
|
||||
ACPI_TABLE_HEADER *Table;
|
||||
BOOLEAN IsAmlTable = TRUE;
|
||||
|
||||
|
||||
Status = AcpiDbReadTableFromFile (Filename, &Table);
|
||||
@ -560,28 +606,36 @@ AcpiDbGetTableFromFile (
|
||||
return (Status);
|
||||
}
|
||||
|
||||
/* Attempt to recognize and install the table */
|
||||
#ifdef ACPI_DATA_TABLE_DISASSEMBLY
|
||||
IsAmlTable = AcpiUtIsAmlTable (Table);
|
||||
#endif
|
||||
|
||||
Status = AeLocalLoadTable (Table);
|
||||
if (ACPI_FAILURE (Status))
|
||||
if (IsAmlTable)
|
||||
{
|
||||
if (Status == AE_ALREADY_EXISTS)
|
||||
/* Attempt to recognize and install the table */
|
||||
|
||||
Status = AeLocalLoadTable (Table);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
AcpiOsPrintf ("Table %4.4s is already installed\n",
|
||||
Table->Signature);
|
||||
}
|
||||
else
|
||||
{
|
||||
AcpiOsPrintf ("Could not install table, %s\n",
|
||||
AcpiFormatException (Status));
|
||||
if (Status == AE_ALREADY_EXISTS)
|
||||
{
|
||||
AcpiOsPrintf ("Table %4.4s is already installed\n",
|
||||
Table->Signature);
|
||||
}
|
||||
else
|
||||
{
|
||||
AcpiOsPrintf ("Could not install table, %s\n",
|
||||
AcpiFormatException (Status));
|
||||
}
|
||||
|
||||
return (Status);
|
||||
}
|
||||
|
||||
return (Status);
|
||||
fprintf (stderr,
|
||||
"Acpi table [%4.4s] successfully installed and loaded\n",
|
||||
Table->Signature);
|
||||
}
|
||||
|
||||
fprintf (stderr, "Acpi table [%4.4s] successfully installed and loaded\n",
|
||||
Table->Signature);
|
||||
|
||||
AcpiGbl_AcpiHardwarePresent = FALSE;
|
||||
if (ReturnTable)
|
||||
{
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Module Name: dmopcode - AML disassembler, specific AML opcodes
|
||||
* $Revision: 85 $
|
||||
* $Revision: 1.101 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
*
|
||||
* 1. Copyright Notice
|
||||
*
|
||||
* Some or all of this work - Copyright (c) 1999 - 2005, Intel Corp.
|
||||
* Some or all of this work - Copyright (c) 1999 - 2007, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* 2. License
|
||||
@ -202,16 +202,16 @@ AcpiDmFieldFlags (
|
||||
UINT32 Flags;
|
||||
|
||||
|
||||
/* The next Op contains the flags */
|
||||
/* The next peer Op (not child op) contains the flags */
|
||||
|
||||
Op = AcpiPsGetDepthNext (NULL, Op);
|
||||
Op = Op->Common.Next;
|
||||
Flags = (UINT8) Op->Common.Value.Integer;
|
||||
|
||||
/* Mark the Op as completed */
|
||||
|
||||
Op->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE;
|
||||
|
||||
AcpiOsPrintf ("%s, ", AcpiGbl_AccessTypes [Flags & 0x0F]);
|
||||
AcpiOsPrintf ("%s, ", AcpiGbl_AccessTypes [Flags & 0x07]);
|
||||
AcpiOsPrintf ("%s, ", AcpiGbl_LockRule [(Flags & 0x10) >> 4]);
|
||||
AcpiOsPrintf ("%s)", AcpiGbl_UpdateRules [(Flags & 0x60) >> 5]);
|
||||
}
|
||||
@ -340,14 +340,14 @@ AcpiDmMatchKeyword (
|
||||
{
|
||||
|
||||
|
||||
if (((UINT32) Op->Common.Value.Integer) >= ACPI_NUM_MATCH_OPS)
|
||||
if (((UINT32) Op->Common.Value.Integer) > ACPI_MAX_MATCH_OPCODE)
|
||||
{
|
||||
AcpiOsPrintf ("/* Unknown Match Keyword encoding */");
|
||||
}
|
||||
else
|
||||
{
|
||||
AcpiOsPrintf ("%s", (char *) (uintptr_t)
|
||||
AcpiGbl_MatchOps[(ACPI_SIZE) Op->Common.Value.Integer]);
|
||||
AcpiOsPrintf ("%s", ACPI_CAST_PTR (char,
|
||||
AcpiGbl_MatchOps[(ACPI_SIZE) Op->Common.Value.Integer]));
|
||||
}
|
||||
}
|
||||
|
||||
@ -375,6 +375,8 @@ AcpiDmDisassembleOneOp (
|
||||
const ACPI_OPCODE_INFO *OpInfo = NULL;
|
||||
UINT32 Offset;
|
||||
UINT32 Length;
|
||||
ACPI_PARSE_OBJECT *Child;
|
||||
ACPI_STATUS Status;
|
||||
|
||||
|
||||
if (!Op)
|
||||
@ -390,38 +392,52 @@ AcpiDmDisassembleOneOp (
|
||||
AcpiDmMatchKeyword (Op);
|
||||
return;
|
||||
|
||||
case ACPI_DASM_LNOT_SUFFIX:
|
||||
switch (Op->Common.AmlOpcode)
|
||||
{
|
||||
case AML_LEQUAL_OP:
|
||||
AcpiOsPrintf ("LNotEqual");
|
||||
break;
|
||||
|
||||
case AML_LGREATER_OP:
|
||||
AcpiOsPrintf ("LLessEqual");
|
||||
break;
|
||||
|
||||
case AML_LLESS_OP:
|
||||
AcpiOsPrintf ("LGreaterEqual");
|
||||
break;
|
||||
}
|
||||
Op->Common.DisasmOpcode = 0;
|
||||
Op->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE;
|
||||
return;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode);
|
||||
|
||||
/* The op and arguments */
|
||||
|
||||
switch (Op->Common.AmlOpcode)
|
||||
{
|
||||
case AML_ZERO_OP:
|
||||
case AML_LNOT_OP:
|
||||
|
||||
AcpiOsPrintf ("Zero");
|
||||
Child = Op->Common.Value.Arg;
|
||||
if ((Child->Common.AmlOpcode == AML_LEQUAL_OP) ||
|
||||
(Child->Common.AmlOpcode == AML_LGREATER_OP) ||
|
||||
(Child->Common.AmlOpcode == AML_LLESS_OP))
|
||||
{
|
||||
Child->Common.DisasmOpcode = ACPI_DASM_LNOT_SUFFIX;
|
||||
Op->Common.DisasmOpcode = ACPI_DASM_LNOT_PREFIX;
|
||||
}
|
||||
else
|
||||
{
|
||||
AcpiOsPrintf ("%s", OpInfo->Name);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case AML_ONE_OP:
|
||||
|
||||
AcpiOsPrintf ("One");
|
||||
break;
|
||||
|
||||
|
||||
case AML_ONES_OP:
|
||||
|
||||
AcpiOsPrintf ("Ones");
|
||||
break;
|
||||
|
||||
|
||||
case AML_REVISION_OP:
|
||||
|
||||
AcpiOsPrintf ("Revision");
|
||||
break;
|
||||
|
||||
|
||||
case AML_BYTE_OP:
|
||||
|
||||
AcpiOsPrintf ("0x%2.2X", (UINT32) Op->Common.Value.Integer);
|
||||
@ -481,12 +497,19 @@ AcpiDmDisassembleOneOp (
|
||||
* types of buffers, we have to closely look at the data in the
|
||||
* buffer to determine the type.
|
||||
*/
|
||||
if (AcpiDmIsResourceTemplate (Op))
|
||||
Status = AcpiDmIsResourceTemplate (Op);
|
||||
if (ACPI_SUCCESS (Status))
|
||||
{
|
||||
Op->Common.DisasmOpcode = ACPI_DASM_RESOURCE;
|
||||
AcpiOsPrintf ("ResourceTemplate");
|
||||
break;
|
||||
}
|
||||
else if (AcpiDmIsUnicodeBuffer (Op))
|
||||
else if (Status == AE_AML_NO_RESOURCE_END_TAG)
|
||||
{
|
||||
AcpiOsPrintf ("/**** Is ResourceTemplate, but EndTag not at buffer end ****/ ");
|
||||
}
|
||||
|
||||
if (AcpiDmIsUnicodeBuffer (Op))
|
||||
{
|
||||
Op->Common.DisasmOpcode = ACPI_DASM_UNICODE;
|
||||
AcpiOsPrintf ("Unicode (");
|
||||
@ -543,7 +566,7 @@ AcpiDmDisassembleOneOp (
|
||||
|
||||
if (Info->BitOffset % 8 == 0)
|
||||
{
|
||||
AcpiOsPrintf ("Offset (0x%.2X)", ACPI_DIV_8 (Info->BitOffset));
|
||||
AcpiOsPrintf (" Offset (0x%.2X)", ACPI_DIV_8 (Info->BitOffset));
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -556,8 +579,8 @@ AcpiDmDisassembleOneOp (
|
||||
|
||||
case AML_INT_ACCESSFIELD_OP:
|
||||
|
||||
AcpiOsPrintf ("AccessAs (%s, ",
|
||||
AcpiGbl_AccessTypes [(UINT32) Op->Common.Value.Integer >> 8]);
|
||||
AcpiOsPrintf (" AccessAs (%s, ",
|
||||
AcpiGbl_AccessTypes [(UINT32) (Op->Common.Value.Integer >> 8) & 0x7]);
|
||||
|
||||
AcpiDmDecodeAttribute ((UINT8) Op->Common.Value.Integer);
|
||||
AcpiOsPrintf (")");
|
||||
@ -573,7 +596,6 @@ AcpiDmDisassembleOneOp (
|
||||
|
||||
case AML_INT_METHODCALL_OP:
|
||||
|
||||
OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode);
|
||||
Op = AcpiPsGetDepthNext (NULL, Op);
|
||||
Op->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE;
|
||||
|
||||
@ -585,7 +607,6 @@ AcpiDmDisassembleOneOp (
|
||||
|
||||
/* Just get the opcode name and print it */
|
||||
|
||||
OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode);
|
||||
AcpiOsPrintf ("%s", OpInfo->Name);
|
||||
|
||||
|
||||
@ -594,13 +615,15 @@ AcpiDmDisassembleOneOp (
|
||||
if ((Op->Common.AmlOpcode == AML_INT_RETURN_VALUE_OP) &&
|
||||
(WalkState) &&
|
||||
(WalkState->Results) &&
|
||||
(WalkState->Results->Results.NumResults))
|
||||
(WalkState->ResultCount))
|
||||
{
|
||||
AcpiDmDecodeInternalObject (
|
||||
WalkState->Results->Results.ObjDesc [
|
||||
WalkState->Results->Results.NumResults-1]);
|
||||
(WalkState->ResultCount - 1) %
|
||||
ACPI_RESULTS_FRAME_OBJ_NUM]);
|
||||
}
|
||||
#endif
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: exfldio - Aml Field I/O
|
||||
* $Revision: 111 $
|
||||
* $Revision: 1.128 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
*
|
||||
* 1. Copyright Notice
|
||||
*
|
||||
* Some or all of this work - Copyright (c) 1999 - 2005, Intel Corp.
|
||||
* Some or all of this work - Copyright (c) 1999 - 2007, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* 2. License
|
||||
@ -172,7 +172,7 @@ AcpiExSetupRegion (
|
||||
ACPI_OPERAND_OBJECT *RgnDesc;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE_U32 ("ExSetupRegion", FieldDatumByteOffset);
|
||||
ACPI_FUNCTION_TRACE_U32 (ExSetupRegion, FieldDatumByteOffset);
|
||||
|
||||
|
||||
RgnDesc = ObjDesc->CommonField.RegionObj;
|
||||
@ -181,7 +181,7 @@ AcpiExSetupRegion (
|
||||
|
||||
if (ACPI_GET_OBJECT_TYPE (RgnDesc) != ACPI_TYPE_REGION)
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Needed Region, found type %X (%s)\n",
|
||||
ACPI_ERROR ((AE_INFO, "Needed Region, found type %X (%s)",
|
||||
ACPI_GET_OBJECT_TYPE (RgnDesc),
|
||||
AcpiUtGetObjectTypeName (RgnDesc)));
|
||||
|
||||
@ -201,6 +201,17 @@ AcpiExSetupRegion (
|
||||
}
|
||||
}
|
||||
|
||||
/* Exit if Address/Length have been disallowed by the host OS */
|
||||
|
||||
if (RgnDesc->Common.Flags & AOPOBJ_INVALID)
|
||||
{
|
||||
return_ACPI_STATUS (AE_AML_ILLEGAL_ADDRESS);
|
||||
}
|
||||
|
||||
/*
|
||||
* Exit now for SMBus address space, it has a non-linear address space
|
||||
* and the request cannot be directly validated
|
||||
*/
|
||||
if (RgnDesc->Region.SpaceId == ACPI_ADR_SPACE_SMBUS)
|
||||
{
|
||||
/* SMBus has a non-linear address space */
|
||||
@ -227,9 +238,10 @@ AcpiExSetupRegion (
|
||||
* length of one field datum (access width) must fit within the region.
|
||||
* (Region length is specified in bytes)
|
||||
*/
|
||||
if (RgnDesc->Region.Length < (ObjDesc->CommonField.BaseByteOffset +
|
||||
FieldDatumByteOffset +
|
||||
ObjDesc->CommonField.AccessByteWidth))
|
||||
if (RgnDesc->Region.Length <
|
||||
(ObjDesc->CommonField.BaseByteOffset +
|
||||
FieldDatumByteOffset +
|
||||
ObjDesc->CommonField.AccessByteWidth))
|
||||
{
|
||||
if (AcpiGbl_EnableInterpreterSlack)
|
||||
{
|
||||
@ -239,10 +251,10 @@ AcpiExSetupRegion (
|
||||
* access width boundary.
|
||||
*/
|
||||
if (ACPI_ROUND_UP (RgnDesc->Region.Length,
|
||||
ObjDesc->CommonField.AccessByteWidth) >=
|
||||
ObjDesc->CommonField.AccessByteWidth) >=
|
||||
(ObjDesc->CommonField.BaseByteOffset +
|
||||
(ACPI_NATIVE_UINT) ObjDesc->CommonField.AccessByteWidth +
|
||||
FieldDatumByteOffset))
|
||||
(ACPI_NATIVE_UINT) ObjDesc->CommonField.AccessByteWidth +
|
||||
FieldDatumByteOffset))
|
||||
{
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
}
|
||||
@ -255,8 +267,8 @@ AcpiExSetupRegion (
|
||||
* than the region itself. For example, a region of length one
|
||||
* byte, and a field with Dword access specified.
|
||||
*/
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
||||
"Field [%4.4s] access width (%d bytes) too large for region [%4.4s] (length %X)\n",
|
||||
ACPI_ERROR ((AE_INFO,
|
||||
"Field [%4.4s] access width (%d bytes) too large for region [%4.4s] (length %X)",
|
||||
AcpiUtGetNodeName (ObjDesc->CommonField.Node),
|
||||
ObjDesc->CommonField.AccessByteWidth,
|
||||
AcpiUtGetNodeName (RgnDesc->Region.Node),
|
||||
@ -267,8 +279,8 @@ AcpiExSetupRegion (
|
||||
* Offset rounded up to next multiple of field width
|
||||
* exceeds region length, indicate an error
|
||||
*/
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
||||
"Field [%4.4s] Base+Offset+Width %X+%X+%X is beyond end of region [%4.4s] (length %X)\n",
|
||||
ACPI_ERROR ((AE_INFO,
|
||||
"Field [%4.4s] Base+Offset+Width %X+%X+%X is beyond end of region [%4.4s] (length %X)",
|
||||
AcpiUtGetNodeName (ObjDesc->CommonField.Node),
|
||||
ObjDesc->CommonField.BaseByteOffset,
|
||||
FieldDatumByteOffset, ObjDesc->CommonField.AccessByteWidth,
|
||||
@ -312,7 +324,7 @@ AcpiExAccessRegion (
|
||||
ACPI_PHYSICAL_ADDRESS Address;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("ExAccessRegion");
|
||||
ACPI_FUNCTION_TRACE (ExAccessRegion);
|
||||
|
||||
|
||||
/*
|
||||
@ -347,13 +359,13 @@ AcpiExAccessRegion (
|
||||
}
|
||||
|
||||
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_BFIELD,
|
||||
" Region [%s:%X], Width %X, ByteBase %X, Offset %X at %8.8X%8.8X\n",
|
||||
" Region [%s:%X], Width %X, ByteBase %X, Offset %X at %p\n",
|
||||
AcpiUtGetRegionName (RgnDesc->Region.SpaceId),
|
||||
RgnDesc->Region.SpaceId,
|
||||
ObjDesc->CommonField.AccessByteWidth,
|
||||
ObjDesc->CommonField.BaseByteOffset,
|
||||
FieldDatumByteOffset,
|
||||
ACPI_FORMAT_UINT64 (Address)));
|
||||
(void *) Address));
|
||||
|
||||
/* Invoke the appropriate AddressSpace/OpRegion handler */
|
||||
|
||||
@ -365,15 +377,15 @@ AcpiExAccessRegion (
|
||||
{
|
||||
if (Status == AE_NOT_IMPLEMENTED)
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
||||
"Region %s(%X) not implemented\n",
|
||||
ACPI_ERROR ((AE_INFO,
|
||||
"Region %s(%X) not implemented",
|
||||
AcpiUtGetRegionName (RgnDesc->Region.SpaceId),
|
||||
RgnDesc->Region.SpaceId));
|
||||
}
|
||||
else if (Status == AE_NOT_EXIST)
|
||||
{
|
||||
ACPI_REPORT_ERROR ((
|
||||
"Region %s(%X) has no handler\n",
|
||||
ACPI_ERROR ((AE_INFO,
|
||||
"Region %s(%X) has no handler",
|
||||
AcpiUtGetRegionName (RgnDesc->Region.SpaceId),
|
||||
RgnDesc->Region.SpaceId));
|
||||
}
|
||||
@ -459,7 +471,7 @@ AcpiExFieldDatumIo (
|
||||
ACPI_INTEGER LocalValue;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE_U32 ("ExFieldDatumIo", FieldDatumByteOffset);
|
||||
ACPI_FUNCTION_TRACE_U32 (ExFieldDatumIo, FieldDatumByteOffset);
|
||||
|
||||
|
||||
if (ReadWrite == ACPI_READ)
|
||||
@ -522,9 +534,9 @@ AcpiExFieldDatumIo (
|
||||
* Length is the field width in bytes.
|
||||
*/
|
||||
ACPI_MEMCPY ((ObjDesc->BufferField.BufferObj)->Buffer.Pointer +
|
||||
ObjDesc->BufferField.BaseByteOffset +
|
||||
FieldDatumByteOffset,
|
||||
Value, ObjDesc->CommonField.AccessByteWidth);
|
||||
ObjDesc->BufferField.BaseByteOffset +
|
||||
FieldDatumByteOffset,
|
||||
Value, ObjDesc->CommonField.AccessByteWidth);
|
||||
}
|
||||
|
||||
Status = AE_OK;
|
||||
@ -538,7 +550,7 @@ AcpiExFieldDatumIo (
|
||||
* the register
|
||||
*/
|
||||
if (AcpiExRegisterOverflow (ObjDesc->BankField.BankObj,
|
||||
(ACPI_INTEGER) ObjDesc->BankField.Value))
|
||||
(ACPI_INTEGER) ObjDesc->BankField.Value))
|
||||
{
|
||||
return_ACPI_STATUS (AE_AML_REGISTER_LIMIT);
|
||||
}
|
||||
@ -548,8 +560,8 @@ AcpiExFieldDatumIo (
|
||||
* (itself a RegionField) before we can access the data.
|
||||
*/
|
||||
Status = AcpiExInsertIntoField (ObjDesc->BankField.BankObj,
|
||||
&ObjDesc->BankField.Value,
|
||||
sizeof (ObjDesc->BankField.Value));
|
||||
&ObjDesc->BankField.Value,
|
||||
sizeof (ObjDesc->BankField.Value));
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
@ -569,7 +581,7 @@ AcpiExFieldDatumIo (
|
||||
* Operation Region.
|
||||
*/
|
||||
Status = AcpiExAccessRegion (ObjDesc, FieldDatumByteOffset, Value,
|
||||
ReadWrite);
|
||||
ReadWrite);
|
||||
break;
|
||||
|
||||
|
||||
@ -581,7 +593,7 @@ AcpiExFieldDatumIo (
|
||||
* the register
|
||||
*/
|
||||
if (AcpiExRegisterOverflow (ObjDesc->IndexField.IndexObj,
|
||||
(ACPI_INTEGER) ObjDesc->IndexField.Value))
|
||||
(ACPI_INTEGER) ObjDesc->IndexField.Value))
|
||||
{
|
||||
return_ACPI_STATUS (AE_AML_REGISTER_LIMIT);
|
||||
}
|
||||
@ -591,41 +603,40 @@ AcpiExFieldDatumIo (
|
||||
FieldDatumByteOffset += ObjDesc->IndexField.Value;
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD,
|
||||
"Write to Index Register: Value %8.8X\n",
|
||||
FieldDatumByteOffset));
|
||||
"Write to Index Register: Value %8.8X\n",
|
||||
FieldDatumByteOffset));
|
||||
|
||||
Status = AcpiExInsertIntoField (ObjDesc->IndexField.IndexObj,
|
||||
&FieldDatumByteOffset,
|
||||
sizeof (FieldDatumByteOffset));
|
||||
&FieldDatumByteOffset,
|
||||
sizeof (FieldDatumByteOffset));
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD,
|
||||
"I/O to Data Register: ValuePtr %p\n",
|
||||
Value));
|
||||
"I/O to Data Register: ValuePtr %p\n", Value));
|
||||
|
||||
if (ReadWrite == ACPI_READ)
|
||||
{
|
||||
/* Read the datum from the DataRegister */
|
||||
|
||||
Status = AcpiExExtractFromField (ObjDesc->IndexField.DataObj,
|
||||
Value, sizeof (ACPI_INTEGER));
|
||||
Value, sizeof (ACPI_INTEGER));
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Write the datum to the DataRegister */
|
||||
|
||||
Status = AcpiExInsertIntoField (ObjDesc->IndexField.DataObj,
|
||||
Value, sizeof (ACPI_INTEGER));
|
||||
Value, sizeof (ACPI_INTEGER));
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
ACPI_REPORT_ERROR (("Wrong object type in field I/O %X\n",
|
||||
ACPI_ERROR ((AE_INFO, "Wrong object type in field I/O %X",
|
||||
ACPI_GET_OBJECT_TYPE (ObjDesc)));
|
||||
Status = AE_AML_INTERNAL;
|
||||
break;
|
||||
@ -680,7 +691,7 @@ AcpiExWriteWithUpdateRule (
|
||||
ACPI_INTEGER CurrentValue;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE_U32 ("ExWriteWithUpdateRule", Mask);
|
||||
ACPI_FUNCTION_TRACE_U32 (ExWriteWithUpdateRule, Mask);
|
||||
|
||||
|
||||
/* Start with the new bits */
|
||||
@ -708,7 +719,7 @@ AcpiExWriteWithUpdateRule (
|
||||
* the field, and merge with the new field value.
|
||||
*/
|
||||
Status = AcpiExFieldDatumIo (ObjDesc, FieldDatumByteOffset,
|
||||
&CurrentValue, ACPI_READ);
|
||||
&CurrentValue, ACPI_READ);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
@ -734,8 +745,8 @@ AcpiExWriteWithUpdateRule (
|
||||
|
||||
default:
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
||||
"WriteWithUpdateRule: Unknown UpdateRule setting: %X\n",
|
||||
ACPI_ERROR ((AE_INFO,
|
||||
"Unknown UpdateRule value: %X",
|
||||
(ObjDesc->CommonField.FieldFlags & AML_FIELD_UPDATE_RULE_MASK)));
|
||||
return_ACPI_STATUS (AE_AML_OPERAND_VALUE);
|
||||
}
|
||||
@ -752,7 +763,7 @@ AcpiExWriteWithUpdateRule (
|
||||
/* Write the merged value */
|
||||
|
||||
Status = AcpiExFieldDatumIo (ObjDesc, FieldDatumByteOffset,
|
||||
&MergedValue, ACPI_WRITE);
|
||||
&MergedValue, ACPI_WRITE);
|
||||
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
@ -789,16 +800,16 @@ AcpiExExtractFromField (
|
||||
UINT32 i;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("ExExtractFromField");
|
||||
ACPI_FUNCTION_TRACE (ExExtractFromField);
|
||||
|
||||
|
||||
/* Validate target buffer and clear it */
|
||||
|
||||
if (BufferLength < ACPI_ROUND_BITS_UP_TO_BYTES (
|
||||
ObjDesc->CommonField.BitLength))
|
||||
if (BufferLength <
|
||||
ACPI_ROUND_BITS_UP_TO_BYTES (ObjDesc->CommonField.BitLength))
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
||||
"Field size %X (bits) is too large for buffer (%X)\n",
|
||||
ACPI_ERROR ((AE_INFO,
|
||||
"Field size %X (bits) is too large for buffer (%X)",
|
||||
ObjDesc->CommonField.BitLength, BufferLength));
|
||||
|
||||
return_ACPI_STATUS (AE_BUFFER_OVERFLOW);
|
||||
@ -832,17 +843,27 @@ AcpiExExtractFromField (
|
||||
|
||||
FieldOffset += ObjDesc->CommonField.AccessByteWidth;
|
||||
Status = AcpiExFieldDatumIo (ObjDesc, FieldOffset,
|
||||
&RawDatum, ACPI_READ);
|
||||
&RawDatum, ACPI_READ);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/* Merge with previous datum if necessary */
|
||||
|
||||
MergedDatum |= RawDatum <<
|
||||
(ObjDesc->CommonField.AccessBitWidth -
|
||||
ObjDesc->CommonField.StartFieldBitOffset);
|
||||
/*
|
||||
* Merge with previous datum if necessary.
|
||||
*
|
||||
* Note: Before the shift, check if the shift value will be larger than
|
||||
* the integer size. If so, there is no need to perform the operation.
|
||||
* This avoids the differences in behavior between different compilers
|
||||
* concerning shift values larger than the target data width.
|
||||
*/
|
||||
if ((ObjDesc->CommonField.AccessBitWidth -
|
||||
ObjDesc->CommonField.StartFieldBitOffset) < ACPI_INTEGER_BIT_SIZE)
|
||||
{
|
||||
MergedDatum |= RawDatum <<
|
||||
(ObjDesc->CommonField.AccessBitWidth -
|
||||
ObjDesc->CommonField.StartFieldBitOffset);
|
||||
}
|
||||
|
||||
if (i == DatumCount)
|
||||
{
|
||||
@ -853,7 +874,7 @@ AcpiExExtractFromField (
|
||||
|
||||
ACPI_MEMCPY (((char *) Buffer) + BufferOffset, &MergedDatum,
|
||||
ACPI_MIN(ObjDesc->CommonField.AccessByteWidth,
|
||||
BufferLength - BufferOffset));
|
||||
BufferLength - BufferOffset));
|
||||
|
||||
BufferOffset += ObjDesc->CommonField.AccessByteWidth;
|
||||
MergedDatum = RawDatum >> ObjDesc->CommonField.StartFieldBitOffset;
|
||||
@ -872,7 +893,7 @@ AcpiExExtractFromField (
|
||||
|
||||
ACPI_MEMCPY (((char *) Buffer) + BufferOffset, &MergedDatum,
|
||||
ACPI_MIN(ObjDesc->CommonField.AccessByteWidth,
|
||||
BufferLength - BufferOffset));
|
||||
BufferLength - BufferOffset));
|
||||
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
}
|
||||
@ -900,6 +921,7 @@ AcpiExInsertIntoField (
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
ACPI_INTEGER Mask;
|
||||
ACPI_INTEGER WidthMask;
|
||||
ACPI_INTEGER MergedDatum;
|
||||
ACPI_INTEGER RawDatum = 0;
|
||||
UINT32 FieldOffset = 0;
|
||||
@ -910,26 +932,43 @@ AcpiExInsertIntoField (
|
||||
UINT32 i;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("ExInsertIntoField");
|
||||
ACPI_FUNCTION_TRACE (ExInsertIntoField);
|
||||
|
||||
|
||||
/* Validate input buffer */
|
||||
|
||||
if (BufferLength < ACPI_ROUND_BITS_UP_TO_BYTES (
|
||||
ObjDesc->CommonField.BitLength))
|
||||
if (BufferLength <
|
||||
ACPI_ROUND_BITS_UP_TO_BYTES (ObjDesc->CommonField.BitLength))
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
||||
"Field size %X (bits) is too large for buffer (%X)\n",
|
||||
ACPI_ERROR ((AE_INFO,
|
||||
"Field size %X (bits) is too large for buffer (%X)",
|
||||
ObjDesc->CommonField.BitLength, BufferLength));
|
||||
|
||||
return_ACPI_STATUS (AE_BUFFER_OVERFLOW);
|
||||
}
|
||||
|
||||
/*
|
||||
* Create the bitmasks used for bit insertion.
|
||||
* Note: This if/else is used to bypass compiler differences with the
|
||||
* shift operator
|
||||
*/
|
||||
if (ObjDesc->CommonField.AccessBitWidth == ACPI_INTEGER_BIT_SIZE)
|
||||
{
|
||||
WidthMask = ACPI_INTEGER_MAX;
|
||||
}
|
||||
else
|
||||
{
|
||||
WidthMask = ACPI_MASK_BITS_ABOVE (ObjDesc->CommonField.AccessBitWidth);
|
||||
}
|
||||
|
||||
Mask = WidthMask &
|
||||
ACPI_MASK_BITS_BELOW (ObjDesc->CommonField.StartFieldBitOffset);
|
||||
|
||||
/* Compute the number of datums (access width data items) */
|
||||
|
||||
Mask = ACPI_MASK_BITS_BELOW (ObjDesc->CommonField.StartFieldBitOffset);
|
||||
DatumCount = ACPI_ROUND_UP_TO (ObjDesc->CommonField.BitLength,
|
||||
ObjDesc->CommonField.AccessBitWidth);
|
||||
|
||||
FieldDatumCount = ACPI_ROUND_UP_TO (ObjDesc->CommonField.BitLength +
|
||||
ObjDesc->CommonField.StartFieldBitOffset,
|
||||
ObjDesc->CommonField.AccessBitWidth);
|
||||
@ -938,7 +977,7 @@ AcpiExInsertIntoField (
|
||||
|
||||
ACPI_MEMCPY (&RawDatum, Buffer,
|
||||
ACPI_MIN(ObjDesc->CommonField.AccessByteWidth,
|
||||
BufferLength - BufferOffset));
|
||||
BufferLength - BufferOffset));
|
||||
|
||||
MergedDatum = RawDatum << ObjDesc->CommonField.StartFieldBitOffset;
|
||||
|
||||
@ -956,13 +995,30 @@ AcpiExInsertIntoField (
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/* Start new output datum by merging with previous input datum */
|
||||
|
||||
FieldOffset += ObjDesc->CommonField.AccessByteWidth;
|
||||
MergedDatum = RawDatum >>
|
||||
(ObjDesc->CommonField.AccessBitWidth -
|
||||
ObjDesc->CommonField.StartFieldBitOffset);
|
||||
Mask = ACPI_INTEGER_MAX;
|
||||
|
||||
/*
|
||||
* Start new output datum by merging with previous input datum
|
||||
* if necessary.
|
||||
*
|
||||
* Note: Before the shift, check if the shift value will be larger than
|
||||
* the integer size. If so, there is no need to perform the operation.
|
||||
* This avoids the differences in behavior between different compilers
|
||||
* concerning shift values larger than the target data width.
|
||||
*/
|
||||
if ((ObjDesc->CommonField.AccessBitWidth -
|
||||
ObjDesc->CommonField.StartFieldBitOffset) < ACPI_INTEGER_BIT_SIZE)
|
||||
{
|
||||
MergedDatum = RawDatum >>
|
||||
(ObjDesc->CommonField.AccessBitWidth -
|
||||
ObjDesc->CommonField.StartFieldBitOffset);
|
||||
}
|
||||
else
|
||||
{
|
||||
MergedDatum = 0;
|
||||
}
|
||||
|
||||
Mask = WidthMask;
|
||||
|
||||
if (i == DatumCount)
|
||||
{
|
||||
|
@ -2,7 +2,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: exsystem - Interface to OS services
|
||||
* $Revision: 81 $
|
||||
* $Revision: 1.93 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
*
|
||||
* 1. Copyright Notice
|
||||
*
|
||||
* Some or all of this work - Copyright (c) 1999 - 2005, Intel Corp.
|
||||
* Some or all of this work - Copyright (c) 1999 - 2007, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* 2. License
|
||||
@ -136,23 +136,22 @@
|
||||
*
|
||||
* DESCRIPTION: Implements a semaphore wait with a check to see if the
|
||||
* semaphore is available immediately. If it is not, the
|
||||
* interpreter is released.
|
||||
* interpreter is released before waiting.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiExSystemWaitSemaphore (
|
||||
ACPI_HANDLE Semaphore,
|
||||
ACPI_SEMAPHORE Semaphore,
|
||||
UINT16 Timeout)
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
ACPI_STATUS Status2;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("ExSystemWaitSemaphore");
|
||||
ACPI_FUNCTION_TRACE (ExSystemWaitSemaphore);
|
||||
|
||||
|
||||
Status = AcpiOsWaitSemaphore (Semaphore, 1, 0);
|
||||
Status = AcpiOsWaitSemaphore (Semaphore, 1, ACPI_DO_NOT_WAIT);
|
||||
if (ACPI_SUCCESS (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
@ -162,7 +161,7 @@ AcpiExSystemWaitSemaphore (
|
||||
{
|
||||
/* We must wait, so unlock the interpreter */
|
||||
|
||||
AcpiExExitInterpreter ();
|
||||
AcpiExRelinquishInterpreter ();
|
||||
|
||||
Status = AcpiOsWaitSemaphore (Semaphore, 1, Timeout);
|
||||
|
||||
@ -172,13 +171,60 @@ AcpiExSystemWaitSemaphore (
|
||||
|
||||
/* Reacquire the interpreter */
|
||||
|
||||
Status2 = AcpiExEnterInterpreter ();
|
||||
if (ACPI_FAILURE (Status2))
|
||||
{
|
||||
/* Report fatal error, could not acquire interpreter */
|
||||
AcpiExReacquireInterpreter ();
|
||||
}
|
||||
|
||||
return_ACPI_STATUS (Status2);
|
||||
}
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiExSystemWaitMutex
|
||||
*
|
||||
* PARAMETERS: Mutex - Mutex to wait on
|
||||
* Timeout - Max time to wait
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
* DESCRIPTION: Implements a mutex wait with a check to see if the
|
||||
* mutex is available immediately. If it is not, the
|
||||
* interpreter is released before waiting.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiExSystemWaitMutex (
|
||||
ACPI_MUTEX Mutex,
|
||||
UINT16 Timeout)
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE (ExSystemWaitMutex);
|
||||
|
||||
|
||||
Status = AcpiOsAcquireMutex (Mutex, ACPI_DO_NOT_WAIT);
|
||||
if (ACPI_SUCCESS (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
if (Status == AE_TIME)
|
||||
{
|
||||
/* We must wait, so unlock the interpreter */
|
||||
|
||||
AcpiExRelinquishInterpreter ();
|
||||
|
||||
Status = AcpiOsAcquireMutex (Mutex, Timeout);
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
|
||||
"*** Thread awake after blocking, %s\n",
|
||||
AcpiFormatException (Status)));
|
||||
|
||||
/* Reacquire the interpreter */
|
||||
|
||||
AcpiExReacquireInterpreter ();
|
||||
}
|
||||
|
||||
return_ACPI_STATUS (Status);
|
||||
@ -220,7 +266,7 @@ AcpiExSystemDoStall (
|
||||
* (ACPI specifies 100 usec as max, but this gives some slack in
|
||||
* order to support existing BIOSs)
|
||||
*/
|
||||
ACPI_REPORT_ERROR (("Stall: Time parameter is too large (%d)\n",
|
||||
ACPI_ERROR ((AE_INFO, "Time parameter is too large (%d)",
|
||||
HowLong));
|
||||
Status = AE_AML_OPERAND_VALUE;
|
||||
}
|
||||
@ -250,110 +296,19 @@ ACPI_STATUS
|
||||
AcpiExSystemDoSuspend (
|
||||
ACPI_INTEGER HowLong)
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
|
||||
|
||||
ACPI_FUNCTION_ENTRY ();
|
||||
|
||||
|
||||
/* Since this thread will sleep, we must release the interpreter */
|
||||
|
||||
AcpiExExitInterpreter ();
|
||||
AcpiExRelinquishInterpreter ();
|
||||
|
||||
AcpiOsSleep (HowLong);
|
||||
|
||||
/* And now we must get the interpreter again */
|
||||
|
||||
Status = AcpiExEnterInterpreter ();
|
||||
return (Status);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiExSystemAcquireMutex
|
||||
*
|
||||
* PARAMETERS: TimeDesc - The 'time to delay' object descriptor
|
||||
* ObjDesc - The object descriptor for this op
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
* DESCRIPTION: Provides an access point to perform synchronization operations
|
||||
* within the AML. This function will cause a lock to be generated
|
||||
* for the Mutex pointed to by ObjDesc.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiExSystemAcquireMutex (
|
||||
ACPI_OPERAND_OBJECT *TimeDesc,
|
||||
ACPI_OPERAND_OBJECT *ObjDesc)
|
||||
{
|
||||
ACPI_STATUS Status = AE_OK;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE_PTR ("ExSystemAcquireMutex", ObjDesc);
|
||||
|
||||
|
||||
if (!ObjDesc)
|
||||
{
|
||||
return_ACPI_STATUS (AE_BAD_PARAMETER);
|
||||
}
|
||||
|
||||
/* Support for the _GL_ Mutex object -- go get the global lock */
|
||||
|
||||
if (ObjDesc->Mutex.Semaphore == AcpiGbl_GlobalLockSemaphore)
|
||||
{
|
||||
Status = AcpiEvAcquireGlobalLock ((UINT16) TimeDesc->Integer.Value);
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
Status = AcpiExSystemWaitSemaphore (ObjDesc->Mutex.Semaphore,
|
||||
(UINT16) TimeDesc->Integer.Value);
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiExSystemReleaseMutex
|
||||
*
|
||||
* PARAMETERS: ObjDesc - The object descriptor for this op
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
* DESCRIPTION: Provides an access point to perform synchronization operations
|
||||
* within the AML. This operation is a request to release a
|
||||
* previously acquired Mutex. If the Mutex variable is set then
|
||||
* it will be decremented.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiExSystemReleaseMutex (
|
||||
ACPI_OPERAND_OBJECT *ObjDesc)
|
||||
{
|
||||
ACPI_STATUS Status = AE_OK;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("ExSystemReleaseMutex");
|
||||
|
||||
|
||||
if (!ObjDesc)
|
||||
{
|
||||
return_ACPI_STATUS (AE_BAD_PARAMETER);
|
||||
}
|
||||
|
||||
/* Support for the _GL_ Mutex object -- release the global lock */
|
||||
|
||||
if (ObjDesc->Mutex.Semaphore == AcpiGbl_GlobalLockSemaphore)
|
||||
{
|
||||
Status = AcpiEvReleaseGlobalLock ();
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
Status = AcpiOsSignalSemaphore (ObjDesc->Mutex.Semaphore, 1);
|
||||
return_ACPI_STATUS (Status);
|
||||
AcpiExReacquireInterpreter ();
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
|
||||
@ -377,12 +332,12 @@ AcpiExSystemSignalEvent (
|
||||
ACPI_STATUS Status = AE_OK;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("ExSystemSignalEvent");
|
||||
ACPI_FUNCTION_TRACE (ExSystemSignalEvent);
|
||||
|
||||
|
||||
if (ObjDesc)
|
||||
{
|
||||
Status = AcpiOsSignalSemaphore (ObjDesc->Event.Semaphore, 1);
|
||||
Status = AcpiOsSignalSemaphore (ObjDesc->Event.OsSemaphore, 1);
|
||||
}
|
||||
|
||||
return_ACPI_STATUS (Status);
|
||||
@ -412,12 +367,12 @@ AcpiExSystemWaitEvent (
|
||||
ACPI_STATUS Status = AE_OK;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("ExSystemWaitEvent");
|
||||
ACPI_FUNCTION_TRACE (ExSystemWaitEvent);
|
||||
|
||||
|
||||
if (ObjDesc)
|
||||
{
|
||||
Status = AcpiExSystemWaitSemaphore (ObjDesc->Event.Semaphore,
|
||||
Status = AcpiExSystemWaitSemaphore (ObjDesc->Event.OsSemaphore,
|
||||
(UINT16) TimeDesc->Integer.Value);
|
||||
}
|
||||
|
||||
@ -442,7 +397,7 @@ AcpiExSystemResetEvent (
|
||||
ACPI_OPERAND_OBJECT *ObjDesc)
|
||||
{
|
||||
ACPI_STATUS Status = AE_OK;
|
||||
void *TempSemaphore;
|
||||
ACPI_SEMAPHORE TempSemaphore;
|
||||
|
||||
|
||||
ACPI_FUNCTION_ENTRY ();
|
||||
@ -455,8 +410,8 @@ AcpiExSystemResetEvent (
|
||||
Status = AcpiOsCreateSemaphore (ACPI_NO_UNIT_LIMIT, 0, &TempSemaphore);
|
||||
if (ACPI_SUCCESS (Status))
|
||||
{
|
||||
(void) AcpiOsDeleteSemaphore (ObjDesc->Event.Semaphore);
|
||||
ObjDesc->Event.Semaphore = TempSemaphore;
|
||||
(void) AcpiOsDeleteSemaphore (ObjDesc->Event.OsSemaphore);
|
||||
ObjDesc->Event.OsSemaphore = TempSemaphore;
|
||||
}
|
||||
|
||||
return (Status);
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* Module Name: hwregs - Read/write access functions for the various ACPI
|
||||
* control and status registers.
|
||||
* $Revision: 162 $
|
||||
* $Revision: 1.187 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
*
|
||||
* 1. Copyright Notice
|
||||
*
|
||||
* Some or all of this work - Copyright (c) 1999 - 2005, Intel Corp.
|
||||
* Some or all of this work - Copyright (c) 1999 - 2007, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* 2. License
|
||||
@ -130,9 +130,9 @@
|
||||
*
|
||||
* FUNCTION: AcpiHwClearAcpiStatus
|
||||
*
|
||||
* PARAMETERS: Flags - Lock the hardware or not
|
||||
* PARAMETERS: None
|
||||
*
|
||||
* RETURN: none
|
||||
* RETURN: None
|
||||
*
|
||||
* DESCRIPTION: Clears all fixed and general purpose status bits
|
||||
* THIS FUNCTION MUST BE CALLED WITH INTERRUPTS DISABLED
|
||||
@ -141,26 +141,20 @@
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiHwClearAcpiStatus (
|
||||
UINT32 Flags)
|
||||
void)
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
ACPI_CPU_FLAGS LockFlags = 0;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("HwClearAcpiStatus");
|
||||
ACPI_FUNCTION_TRACE (HwClearAcpiStatus);
|
||||
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_IO, "About to write %04X to %04X\n",
|
||||
ACPI_BITMASK_ALL_FIXED_STATUS,
|
||||
(UINT16) ACPI_GET_ADDRESS (AcpiGbl_FADT->XPm1aEvtBlk.Address)));
|
||||
(UINT16) AcpiGbl_FADT.XPm1aEventBlock.Address));
|
||||
|
||||
if (Flags & ACPI_MTX_LOCK)
|
||||
{
|
||||
Status = AcpiUtAcquireMutex (ACPI_MTX_HARDWARE);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
}
|
||||
LockFlags = AcpiOsAcquireLock (AcpiGbl_HardwareLock);
|
||||
|
||||
Status = AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK,
|
||||
ACPI_REGISTER_PM1_STATUS,
|
||||
@ -172,10 +166,10 @@ AcpiHwClearAcpiStatus (
|
||||
|
||||
/* Clear the fixed events */
|
||||
|
||||
if (ACPI_VALID_ADDRESS (AcpiGbl_FADT->XPm1bEvtBlk.Address))
|
||||
if (AcpiGbl_FADT.XPm1bEventBlock.Address)
|
||||
{
|
||||
Status = AcpiHwLowLevelWrite (16, ACPI_BITMASK_ALL_FIXED_STATUS,
|
||||
&AcpiGbl_FADT->XPm1bEvtBlk);
|
||||
&AcpiGbl_FADT.XPm1bEventBlock);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
goto UnlockAndExit;
|
||||
@ -187,10 +181,7 @@ AcpiHwClearAcpiStatus (
|
||||
Status = AcpiEvWalkGpeList (AcpiHwClearGpeBlock);
|
||||
|
||||
UnlockAndExit:
|
||||
if (Flags & ACPI_MTX_LOCK)
|
||||
{
|
||||
(void) AcpiUtReleaseMutex (ACPI_MTX_HARDWARE);
|
||||
}
|
||||
AcpiOsReleaseLock (AcpiGbl_HardwareLock, LockFlags);
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
@ -217,11 +208,10 @@ AcpiGetSleepTypeData (
|
||||
UINT8 *SleepTypeB)
|
||||
{
|
||||
ACPI_STATUS Status = AE_OK;
|
||||
ACPI_PARAMETER_INFO Info;
|
||||
char *SleepStateName;
|
||||
ACPI_EVALUATE_INFO *Info;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("AcpiGetSleepTypeData");
|
||||
ACPI_FUNCTION_TRACE (AcpiGetSleepTypeData);
|
||||
|
||||
|
||||
/* Validate parameters */
|
||||
@ -232,64 +222,70 @@ AcpiGetSleepTypeData (
|
||||
return_ACPI_STATUS (AE_BAD_PARAMETER);
|
||||
}
|
||||
|
||||
/* Allocate the evaluation information block */
|
||||
|
||||
Info = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_EVALUATE_INFO));
|
||||
if (!Info)
|
||||
{
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
Info->Pathname = ACPI_CAST_PTR (char, AcpiGbl_SleepStateNames[SleepState]);
|
||||
|
||||
/* Evaluate the namespace object containing the values for this state */
|
||||
|
||||
Info.Parameters = NULL;
|
||||
Info.ReturnObject = NULL;
|
||||
SleepStateName = (char *) (uintptr_t) AcpiGbl_SleepStateNames[SleepState];
|
||||
|
||||
Status = AcpiNsEvaluateByName (SleepStateName, &Info);
|
||||
Status = AcpiNsEvaluate (Info);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
|
||||
"%s while evaluating SleepState [%s]\n",
|
||||
AcpiFormatException (Status), SleepStateName));
|
||||
AcpiFormatException (Status), Info->Pathname));
|
||||
|
||||
return_ACPI_STATUS (Status);
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
/* Must have a return object */
|
||||
|
||||
if (!Info.ReturnObject)
|
||||
if (!Info->ReturnObject)
|
||||
{
|
||||
ACPI_REPORT_ERROR (("No Sleep State object returned from [%s]\n",
|
||||
SleepStateName));
|
||||
ACPI_ERROR ((AE_INFO, "No Sleep State object returned from [%s]",
|
||||
Info->Pathname));
|
||||
Status = AE_NOT_EXIST;
|
||||
}
|
||||
|
||||
/* It must be of type Package */
|
||||
|
||||
else if (ACPI_GET_OBJECT_TYPE (Info.ReturnObject) != ACPI_TYPE_PACKAGE)
|
||||
else if (ACPI_GET_OBJECT_TYPE (Info->ReturnObject) != ACPI_TYPE_PACKAGE)
|
||||
{
|
||||
ACPI_REPORT_ERROR (("Sleep State return object is not a Package\n"));
|
||||
ACPI_ERROR ((AE_INFO, "Sleep State return object is not a Package"));
|
||||
Status = AE_AML_OPERAND_TYPE;
|
||||
}
|
||||
|
||||
/*
|
||||
* The package must have at least two elements. NOTE (March 2005): This
|
||||
* The package must have at least two elements. NOTE (March 2005): This
|
||||
* goes against the current ACPI spec which defines this object as a
|
||||
* package with one encoded DWORD element. However, existing practice
|
||||
* package with one encoded DWORD element. However, existing practice
|
||||
* by BIOS vendors seems to be to have 2 or more elements, at least
|
||||
* one per sleep type (A/B).
|
||||
*/
|
||||
else if (Info.ReturnObject->Package.Count < 2)
|
||||
else if (Info->ReturnObject->Package.Count < 2)
|
||||
{
|
||||
ACPI_REPORT_ERROR ((
|
||||
"Sleep State return package does not have at least two elements\n"));
|
||||
ACPI_ERROR ((AE_INFO,
|
||||
"Sleep State return package does not have at least two elements"));
|
||||
Status = AE_AML_NO_OPERAND;
|
||||
}
|
||||
|
||||
/* The first two elements must both be of type Integer */
|
||||
|
||||
else if ((ACPI_GET_OBJECT_TYPE (Info.ReturnObject->Package.Elements[0])
|
||||
else if ((ACPI_GET_OBJECT_TYPE (Info->ReturnObject->Package.Elements[0])
|
||||
!= ACPI_TYPE_INTEGER) ||
|
||||
(ACPI_GET_OBJECT_TYPE (Info.ReturnObject->Package.Elements[1])
|
||||
(ACPI_GET_OBJECT_TYPE (Info->ReturnObject->Package.Elements[1])
|
||||
!= ACPI_TYPE_INTEGER))
|
||||
{
|
||||
ACPI_REPORT_ERROR ((
|
||||
"Sleep State return package elements are not both Integers (%s, %s)\n",
|
||||
AcpiUtGetObjectTypeName (Info.ReturnObject->Package.Elements[0]),
|
||||
AcpiUtGetObjectTypeName (Info.ReturnObject->Package.Elements[1])));
|
||||
ACPI_ERROR ((AE_INFO,
|
||||
"Sleep State return package elements are not both Integers (%s, %s)",
|
||||
AcpiUtGetObjectTypeName (Info->ReturnObject->Package.Elements[0]),
|
||||
AcpiUtGetObjectTypeName (Info->ReturnObject->Package.Elements[1])));
|
||||
Status = AE_AML_OPERAND_TYPE;
|
||||
}
|
||||
else
|
||||
@ -297,24 +293,28 @@ AcpiGetSleepTypeData (
|
||||
/* Valid _Sx_ package size, type, and value */
|
||||
|
||||
*SleepTypeA = (UINT8)
|
||||
(Info.ReturnObject->Package.Elements[0])->Integer.Value;
|
||||
(Info->ReturnObject->Package.Elements[0])->Integer.Value;
|
||||
*SleepTypeB = (UINT8)
|
||||
(Info.ReturnObject->Package.Elements[1])->Integer.Value;
|
||||
(Info->ReturnObject->Package.Elements[1])->Integer.Value;
|
||||
}
|
||||
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
||||
"%s While evaluating SleepState [%s], bad Sleep object %p type %s\n",
|
||||
AcpiFormatException (Status),
|
||||
SleepStateName, Info.ReturnObject,
|
||||
AcpiUtGetObjectTypeName (Info.ReturnObject)));
|
||||
ACPI_EXCEPTION ((AE_INFO, Status,
|
||||
"While evaluating SleepState [%s], bad Sleep object %p type %s",
|
||||
Info->Pathname, Info->ReturnObject,
|
||||
AcpiUtGetObjectTypeName (Info->ReturnObject)));
|
||||
}
|
||||
|
||||
AcpiUtRemoveReference (Info.ReturnObject);
|
||||
AcpiUtRemoveReference (Info->ReturnObject);
|
||||
|
||||
Cleanup:
|
||||
ACPI_FREE (Info);
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
ACPI_EXPORT_SYMBOL (AcpiGetSleepTypeData)
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
@ -332,12 +332,12 @@ ACPI_BIT_REGISTER_INFO *
|
||||
AcpiHwGetBitRegisterInfo (
|
||||
UINT32 RegisterId)
|
||||
{
|
||||
ACPI_FUNCTION_NAME ("HwGetBitRegisterInfo");
|
||||
ACPI_FUNCTION_ENTRY ();
|
||||
|
||||
|
||||
if (RegisterId > ACPI_BITREG_MAX)
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Invalid BitRegister ID: %X\n", RegisterId));
|
||||
ACPI_ERROR ((AE_INFO, "Invalid BitRegister ID: %X", RegisterId));
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
@ -351,9 +351,8 @@ AcpiHwGetBitRegisterInfo (
|
||||
*
|
||||
* PARAMETERS: RegisterId - ID of ACPI BitRegister to access
|
||||
* ReturnValue - Value that was read from the register
|
||||
* Flags - Lock the hardware or not
|
||||
*
|
||||
* RETURN: Status and the value read from specified Register. Value
|
||||
* RETURN: Status and the value read from specified Register. Value
|
||||
* returned is normalized to bit0 (is shifted all the way right)
|
||||
*
|
||||
* DESCRIPTION: ACPI BitRegister read function.
|
||||
@ -363,15 +362,14 @@ AcpiHwGetBitRegisterInfo (
|
||||
ACPI_STATUS
|
||||
AcpiGetRegister (
|
||||
UINT32 RegisterId,
|
||||
UINT32 *ReturnValue,
|
||||
UINT32 Flags)
|
||||
UINT32 *ReturnValue)
|
||||
{
|
||||
UINT32 RegisterValue = 0;
|
||||
ACPI_BIT_REGISTER_INFO *BitRegInfo;
|
||||
ACPI_STATUS Status;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("AcpiGetRegister");
|
||||
ACPI_FUNCTION_TRACE (AcpiGetRegister);
|
||||
|
||||
|
||||
/* Get the info structure corresponding to the requested ACPI Register */
|
||||
@ -382,24 +380,10 @@ AcpiGetRegister (
|
||||
return_ACPI_STATUS (AE_BAD_PARAMETER);
|
||||
}
|
||||
|
||||
if (Flags & ACPI_MTX_LOCK)
|
||||
{
|
||||
Status = AcpiUtAcquireMutex (ACPI_MTX_HARDWARE);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
}
|
||||
|
||||
/* Read from the register */
|
||||
|
||||
Status = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK,
|
||||
BitRegInfo->ParentRegister, &RegisterValue);
|
||||
|
||||
if (Flags & ACPI_MTX_LOCK)
|
||||
{
|
||||
(void) AcpiUtReleaseMutex (ACPI_MTX_HARDWARE);
|
||||
}
|
||||
Status = AcpiHwRegisterRead (ACPI_MTX_LOCK,
|
||||
BitRegInfo->ParentRegister, &RegisterValue);
|
||||
|
||||
if (ACPI_SUCCESS (Status))
|
||||
{
|
||||
@ -411,12 +395,14 @@ AcpiGetRegister (
|
||||
*ReturnValue = RegisterValue;
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_IO, "Read value %8.8X register %X\n",
|
||||
RegisterValue, BitRegInfo->ParentRegister));
|
||||
RegisterValue, BitRegInfo->ParentRegister));
|
||||
}
|
||||
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
ACPI_EXPORT_SYMBOL (AcpiGetRegister)
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
@ -425,7 +411,6 @@ AcpiGetRegister (
|
||||
* 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: Status
|
||||
*
|
||||
@ -436,15 +421,15 @@ AcpiGetRegister (
|
||||
ACPI_STATUS
|
||||
AcpiSetRegister (
|
||||
UINT32 RegisterId,
|
||||
UINT32 Value,
|
||||
UINT32 Flags)
|
||||
UINT32 Value)
|
||||
{
|
||||
UINT32 RegisterValue = 0;
|
||||
ACPI_BIT_REGISTER_INFO *BitRegInfo;
|
||||
ACPI_STATUS Status;
|
||||
ACPI_CPU_FLAGS LockFlags;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE_U32 ("AcpiSetRegister", RegisterId);
|
||||
ACPI_FUNCTION_TRACE_U32 (AcpiSetRegister, RegisterId);
|
||||
|
||||
|
||||
/* Get the info structure corresponding to the requested ACPI Register */
|
||||
@ -452,18 +437,11 @@ AcpiSetRegister (
|
||||
BitRegInfo = AcpiHwGetBitRegisterInfo (RegisterId);
|
||||
if (!BitRegInfo)
|
||||
{
|
||||
ACPI_REPORT_ERROR (("Bad ACPI HW RegisterId: %X\n", RegisterId));
|
||||
ACPI_ERROR ((AE_INFO, "Bad ACPI HW RegisterId: %X", RegisterId));
|
||||
return_ACPI_STATUS (AE_BAD_PARAMETER);
|
||||
}
|
||||
|
||||
if (Flags & ACPI_MTX_LOCK)
|
||||
{
|
||||
Status = AcpiUtAcquireMutex (ACPI_MTX_HARDWARE);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
}
|
||||
LockFlags = AcpiOsAcquireLock (AcpiGbl_HardwareLock);
|
||||
|
||||
/* Always do a register read first so we can insert the new bits */
|
||||
|
||||
@ -486,8 +464,8 @@ AcpiSetRegister (
|
||||
case ACPI_REGISTER_PM1_STATUS:
|
||||
|
||||
/*
|
||||
* Status Registers are different from the rest. Clear by
|
||||
* writing 1, and writing 0 has no effect. So, the only relevant
|
||||
* Status Registers are different from the rest. Clear by
|
||||
* writing 1, and writing 0 has no effect. So, the only relevant
|
||||
* information is the single bit we're interested in, all others should
|
||||
* be written as 0 so they will be left unchanged.
|
||||
*/
|
||||
@ -505,7 +483,7 @@ AcpiSetRegister (
|
||||
case ACPI_REGISTER_PM1_ENABLE:
|
||||
|
||||
ACPI_REGISTER_INSERT_VALUE (RegisterValue, BitRegInfo->BitPosition,
|
||||
BitRegInfo->AccessBitMask, Value);
|
||||
BitRegInfo->AccessBitMask, Value);
|
||||
|
||||
Status = AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK,
|
||||
ACPI_REGISTER_PM1_ENABLE, (UINT16) RegisterValue);
|
||||
@ -519,10 +497,11 @@ AcpiSetRegister (
|
||||
* Note that at this level, the fact that there are actually TWO
|
||||
* registers (A and B - and B may not exist) is abstracted.
|
||||
*/
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_IO, "PM1 control: Read %X\n", RegisterValue));
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_IO, "PM1 control: Read %X\n",
|
||||
RegisterValue));
|
||||
|
||||
ACPI_REGISTER_INSERT_VALUE (RegisterValue, BitRegInfo->BitPosition,
|
||||
BitRegInfo->AccessBitMask, Value);
|
||||
BitRegInfo->AccessBitMask, Value);
|
||||
|
||||
Status = AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK,
|
||||
ACPI_REGISTER_PM1_CONTROL, (UINT16) RegisterValue);
|
||||
@ -540,16 +519,14 @@ AcpiSetRegister (
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_IO, "PM2 control: Read %X from %8.8X%8.8X\n",
|
||||
RegisterValue,
|
||||
ACPI_FORMAT_UINT64 (ACPI_GET_ADDRESS (
|
||||
AcpiGbl_FADT->XPm2CntBlk.Address))));
|
||||
ACPI_FORMAT_UINT64 (AcpiGbl_FADT.XPm2ControlBlock.Address)));
|
||||
|
||||
ACPI_REGISTER_INSERT_VALUE (RegisterValue, BitRegInfo->BitPosition,
|
||||
BitRegInfo->AccessBitMask, Value);
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_IO, "About to write %4.4X to %8.8X%8.8X\n",
|
||||
RegisterValue,
|
||||
ACPI_FORMAT_UINT64 (ACPI_GET_ADDRESS (
|
||||
AcpiGbl_FADT->XPm2CntBlk.Address))));
|
||||
ACPI_FORMAT_UINT64 (AcpiGbl_FADT.XPm2ControlBlock.Address)));
|
||||
|
||||
Status = AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK,
|
||||
ACPI_REGISTER_PM2_CONTROL, (UINT8) (RegisterValue));
|
||||
@ -563,10 +540,7 @@ AcpiSetRegister (
|
||||
|
||||
UnlockAndExit:
|
||||
|
||||
if (Flags & ACPI_MTX_LOCK)
|
||||
{
|
||||
(void) AcpiUtReleaseMutex (ACPI_MTX_HARDWARE);
|
||||
}
|
||||
AcpiOsReleaseLock (AcpiGbl_HardwareLock, LockFlags);
|
||||
|
||||
/* Normalize the value that was read */
|
||||
|
||||
@ -575,23 +549,24 @@ AcpiSetRegister (
|
||||
BitRegInfo->BitPosition));
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_IO, "Set bits: %8.8X actual %8.8X register %X\n",
|
||||
Value, RegisterValue, BitRegInfo->ParentRegister));
|
||||
Value, RegisterValue, BitRegInfo->ParentRegister));
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
ACPI_EXPORT_SYMBOL (AcpiSetRegister)
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiHwRegisterRead
|
||||
*
|
||||
* PARAMETERS: UseLock - Mutex hw access
|
||||
* RegisterId - RegisterID + Offset
|
||||
* PARAMETERS: UseLock - Lock hardware? True/False
|
||||
* RegisterId - ACPI Register ID
|
||||
* ReturnValue - Where the register value is returned
|
||||
*
|
||||
* RETURN: Status and the value read.
|
||||
*
|
||||
* DESCRIPTION: Acpi register read function. Registers are read at the
|
||||
* given offset.
|
||||
* DESCRIPTION: Read from the specified ACPI register
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -604,25 +579,22 @@ AcpiHwRegisterRead (
|
||||
UINT32 Value1 = 0;
|
||||
UINT32 Value2 = 0;
|
||||
ACPI_STATUS Status;
|
||||
ACPI_CPU_FLAGS LockFlags = 0;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("HwRegisterRead");
|
||||
ACPI_FUNCTION_TRACE (HwRegisterRead);
|
||||
|
||||
|
||||
if (ACPI_MTX_LOCK == UseLock)
|
||||
{
|
||||
Status = AcpiUtAcquireMutex (ACPI_MTX_HARDWARE);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
LockFlags = AcpiOsAcquireLock (AcpiGbl_HardwareLock);
|
||||
}
|
||||
|
||||
switch (RegisterId)
|
||||
{
|
||||
case ACPI_REGISTER_PM1_STATUS: /* 16-bit access */
|
||||
|
||||
Status = AcpiHwLowLevelRead (16, &Value1, &AcpiGbl_FADT->XPm1aEvtBlk);
|
||||
Status = AcpiHwLowLevelRead (16, &Value1, &AcpiGbl_FADT.XPm1aEventBlock);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
goto UnlockAndExit;
|
||||
@ -630,7 +602,7 @@ AcpiHwRegisterRead (
|
||||
|
||||
/* PM1B is optional */
|
||||
|
||||
Status = AcpiHwLowLevelRead (16, &Value2, &AcpiGbl_FADT->XPm1bEvtBlk);
|
||||
Status = AcpiHwLowLevelRead (16, &Value2, &AcpiGbl_FADT.XPm1bEventBlock);
|
||||
Value1 |= Value2;
|
||||
break;
|
||||
|
||||
@ -652,35 +624,35 @@ AcpiHwRegisterRead (
|
||||
|
||||
case ACPI_REGISTER_PM1_CONTROL: /* 16-bit access */
|
||||
|
||||
Status = AcpiHwLowLevelRead (16, &Value1, &AcpiGbl_FADT->XPm1aCntBlk);
|
||||
Status = AcpiHwLowLevelRead (16, &Value1, &AcpiGbl_FADT.XPm1aControlBlock);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
goto UnlockAndExit;
|
||||
}
|
||||
|
||||
Status = AcpiHwLowLevelRead (16, &Value2, &AcpiGbl_FADT->XPm1bCntBlk);
|
||||
Status = AcpiHwLowLevelRead (16, &Value2, &AcpiGbl_FADT.XPm1bControlBlock);
|
||||
Value1 |= Value2;
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_REGISTER_PM2_CONTROL: /* 8-bit access */
|
||||
|
||||
Status = AcpiHwLowLevelRead (8, &Value1, &AcpiGbl_FADT->XPm2CntBlk);
|
||||
Status = AcpiHwLowLevelRead (8, &Value1, &AcpiGbl_FADT.XPm2ControlBlock);
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_REGISTER_PM_TIMER: /* 32-bit access */
|
||||
|
||||
Status = AcpiHwLowLevelRead (32, &Value1, &AcpiGbl_FADT->XPmTmrBlk);
|
||||
Status = AcpiHwLowLevelRead (32, &Value1, &AcpiGbl_FADT.XPmTimerBlock);
|
||||
break;
|
||||
|
||||
case ACPI_REGISTER_SMI_COMMAND_BLOCK: /* 8-bit access */
|
||||
|
||||
Status = AcpiOsReadPort (AcpiGbl_FADT->SmiCmd, &Value1, 8);
|
||||
Status = AcpiOsReadPort (AcpiGbl_FADT.SmiCommand, &Value1, 8);
|
||||
break;
|
||||
|
||||
default:
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Unknown Register ID: %X\n",
|
||||
ACPI_ERROR ((AE_INFO, "Unknown Register ID: %X",
|
||||
RegisterId));
|
||||
Status = AE_BAD_PARAMETER;
|
||||
break;
|
||||
@ -689,7 +661,7 @@ AcpiHwRegisterRead (
|
||||
UnlockAndExit:
|
||||
if (ACPI_MTX_LOCK == UseLock)
|
||||
{
|
||||
(void) AcpiUtReleaseMutex (ACPI_MTX_HARDWARE);
|
||||
AcpiOsReleaseLock (AcpiGbl_HardwareLock, LockFlags);
|
||||
}
|
||||
|
||||
if (ACPI_SUCCESS (Status))
|
||||
@ -705,14 +677,26 @@ AcpiHwRegisterRead (
|
||||
*
|
||||
* FUNCTION: AcpiHwRegisterWrite
|
||||
*
|
||||
* PARAMETERS: UseLock - Mutex hw access
|
||||
* RegisterId - RegisterID + Offset
|
||||
* PARAMETERS: UseLock - Lock hardware? True/False
|
||||
* RegisterId - ACPI Register ID
|
||||
* Value - The value to write
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
* DESCRIPTION: Acpi register Write function. Registers are written at the
|
||||
* given offset.
|
||||
* DESCRIPTION: Write to the specified ACPI register
|
||||
*
|
||||
* NOTE: In accordance with the ACPI specification, this function automatically
|
||||
* preserves the value of the following bits, meaning that these bits cannot be
|
||||
* changed via this interface:
|
||||
*
|
||||
* PM1_CONTROL[0] = SCI_EN
|
||||
* PM1_CONTROL[9]
|
||||
* PM1_STATUS[11]
|
||||
*
|
||||
* ACPI References:
|
||||
* 1) Hardware Ignored Bits: When software writes to a register with ignored
|
||||
* bit fields, it preserves the ignored bit fields
|
||||
* 2) SCI_EN: OSPM always preserves this bit position
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -723,25 +707,38 @@ AcpiHwRegisterWrite (
|
||||
UINT32 Value)
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
ACPI_CPU_FLAGS LockFlags = 0;
|
||||
UINT32 ReadValue;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("HwRegisterWrite");
|
||||
ACPI_FUNCTION_TRACE (HwRegisterWrite);
|
||||
|
||||
|
||||
if (ACPI_MTX_LOCK == UseLock)
|
||||
{
|
||||
Status = AcpiUtAcquireMutex (ACPI_MTX_HARDWARE);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
LockFlags = AcpiOsAcquireLock (AcpiGbl_HardwareLock);
|
||||
}
|
||||
|
||||
switch (RegisterId)
|
||||
{
|
||||
case ACPI_REGISTER_PM1_STATUS: /* 16-bit access */
|
||||
|
||||
Status = AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1aEvtBlk);
|
||||
/* Perform a read first to preserve certain bits (per ACPI spec) */
|
||||
|
||||
Status = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK,
|
||||
ACPI_REGISTER_PM1_STATUS, &ReadValue);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
goto UnlockAndExit;
|
||||
}
|
||||
|
||||
/* Insert the bits to be preserved */
|
||||
|
||||
ACPI_INSERT_BITS (Value, ACPI_PM1_STATUS_PRESERVED_BITS, ReadValue);
|
||||
|
||||
/* Now we can write the data */
|
||||
|
||||
Status = AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT.XPm1aEventBlock);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
goto UnlockAndExit;
|
||||
@ -749,11 +746,11 @@ AcpiHwRegisterWrite (
|
||||
|
||||
/* PM1B is optional */
|
||||
|
||||
Status = AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1bEvtBlk);
|
||||
Status = AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT.XPm1bEventBlock);
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_REGISTER_PM1_ENABLE: /* 16-bit access*/
|
||||
case ACPI_REGISTER_PM1_ENABLE: /* 16-bit access */
|
||||
|
||||
Status = AcpiHwLowLevelWrite (16, Value, &AcpiGbl_XPm1aEnable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
@ -769,37 +766,55 @@ AcpiHwRegisterWrite (
|
||||
|
||||
case ACPI_REGISTER_PM1_CONTROL: /* 16-bit access */
|
||||
|
||||
Status = AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1aCntBlk);
|
||||
/*
|
||||
* Perform a read first to preserve certain bits (per ACPI spec)
|
||||
*
|
||||
* Note: This includes SCI_EN, we never want to change this bit
|
||||
*/
|
||||
Status = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK,
|
||||
ACPI_REGISTER_PM1_CONTROL, &ReadValue);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
goto UnlockAndExit;
|
||||
}
|
||||
|
||||
Status = AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1bCntBlk);
|
||||
/* Insert the bits to be preserved */
|
||||
|
||||
ACPI_INSERT_BITS (Value, ACPI_PM1_CONTROL_PRESERVED_BITS, ReadValue);
|
||||
|
||||
/* Now we can write the data */
|
||||
|
||||
Status = AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT.XPm1aControlBlock);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
goto UnlockAndExit;
|
||||
}
|
||||
|
||||
Status = AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT.XPm1bControlBlock);
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_REGISTER_PM1A_CONTROL: /* 16-bit access */
|
||||
|
||||
Status = AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1aCntBlk);
|
||||
Status = AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT.XPm1aControlBlock);
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_REGISTER_PM1B_CONTROL: /* 16-bit access */
|
||||
|
||||
Status = AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1bCntBlk);
|
||||
Status = AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT.XPm1bControlBlock);
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_REGISTER_PM2_CONTROL: /* 8-bit access */
|
||||
|
||||
Status = AcpiHwLowLevelWrite (8, Value, &AcpiGbl_FADT->XPm2CntBlk);
|
||||
Status = AcpiHwLowLevelWrite (8, Value, &AcpiGbl_FADT.XPm2ControlBlock);
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_REGISTER_PM_TIMER: /* 32-bit access */
|
||||
|
||||
Status = AcpiHwLowLevelWrite (32, Value, &AcpiGbl_FADT->XPmTmrBlk);
|
||||
Status = AcpiHwLowLevelWrite (32, Value, &AcpiGbl_FADT.XPmTimerBlock);
|
||||
break;
|
||||
|
||||
|
||||
@ -807,7 +822,7 @@ AcpiHwRegisterWrite (
|
||||
|
||||
/* SMI_CMD is currently always in IO space */
|
||||
|
||||
Status = AcpiOsWritePort (AcpiGbl_FADT->SmiCmd, Value, 8);
|
||||
Status = AcpiOsWritePort (AcpiGbl_FADT.SmiCommand, Value, 8);
|
||||
break;
|
||||
|
||||
|
||||
@ -819,7 +834,7 @@ AcpiHwRegisterWrite (
|
||||
UnlockAndExit:
|
||||
if (ACPI_MTX_LOCK == UseLock)
|
||||
{
|
||||
(void) AcpiUtReleaseMutex (ACPI_MTX_HARDWARE);
|
||||
AcpiOsReleaseLock (AcpiGbl_HardwareLock, LockFlags);
|
||||
}
|
||||
|
||||
return_ACPI_STATUS (Status);
|
||||
@ -850,7 +865,7 @@ AcpiHwLowLevelRead (
|
||||
ACPI_STATUS Status;
|
||||
|
||||
|
||||
ACPI_FUNCTION_NAME ("HwLowLevelRead");
|
||||
ACPI_FUNCTION_NAME (HwLowLevelRead);
|
||||
|
||||
|
||||
/*
|
||||
@ -863,10 +878,10 @@ AcpiHwLowLevelRead (
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
/* Get a local copy of the address. Handles possible alignment issues */
|
||||
/* Get a local copy of the address. Handles possible alignment issues */
|
||||
|
||||
ACPI_MOVE_64_TO_64 (&Address, &Reg->Address);
|
||||
if (!ACPI_VALID_ADDRESS (Address))
|
||||
if (!Address)
|
||||
{
|
||||
return (AE_OK);
|
||||
}
|
||||
@ -876,34 +891,31 @@ AcpiHwLowLevelRead (
|
||||
* Two address spaces supported: Memory or IO.
|
||||
* PCI_Config is not supported here because the GAS struct is insufficient
|
||||
*/
|
||||
switch (Reg->AddressSpaceId)
|
||||
switch (Reg->SpaceId)
|
||||
{
|
||||
case ACPI_ADR_SPACE_SYSTEM_MEMORY:
|
||||
|
||||
Status = AcpiOsReadMemory (
|
||||
(ACPI_PHYSICAL_ADDRESS) ACPI_GET_ADDRESS (Address),
|
||||
Value, Width);
|
||||
(ACPI_PHYSICAL_ADDRESS) Address, Value, Width);
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_ADR_SPACE_SYSTEM_IO:
|
||||
|
||||
Status = AcpiOsReadPort ((ACPI_IO_ADDRESS) ACPI_GET_ADDRESS (Address),
|
||||
Value, Width);
|
||||
Status = AcpiOsReadPort ((ACPI_IO_ADDRESS) Address, Value, Width);
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
||||
"Unsupported address space: %X\n", Reg->AddressSpaceId));
|
||||
ACPI_ERROR ((AE_INFO,
|
||||
"Unsupported address space: %X", Reg->SpaceId));
|
||||
return (AE_BAD_PARAMETER);
|
||||
}
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_IO,
|
||||
"Read: %8.8X width %2d from %8.8X%8.8X (%s)\n",
|
||||
*Value, Width,
|
||||
ACPI_FORMAT_UINT64 (ACPI_GET_ADDRESS (Address)),
|
||||
AcpiUtGetRegionName (Reg->AddressSpaceId)));
|
||||
*Value, Width, ACPI_FORMAT_UINT64 (Address),
|
||||
AcpiUtGetRegionName (Reg->SpaceId)));
|
||||
|
||||
return (Status);
|
||||
}
|
||||
@ -933,7 +945,7 @@ AcpiHwLowLevelWrite (
|
||||
ACPI_STATUS Status;
|
||||
|
||||
|
||||
ACPI_FUNCTION_NAME ("HwLowLevelWrite");
|
||||
ACPI_FUNCTION_NAME (HwLowLevelWrite);
|
||||
|
||||
|
||||
/*
|
||||
@ -946,10 +958,10 @@ AcpiHwLowLevelWrite (
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
/* Get a local copy of the address. Handles possible alignment issues */
|
||||
/* Get a local copy of the address. Handles possible alignment issues */
|
||||
|
||||
ACPI_MOVE_64_TO_64 (&Address, &Reg->Address);
|
||||
if (!ACPI_VALID_ADDRESS (Address))
|
||||
if (!Address)
|
||||
{
|
||||
return (AE_OK);
|
||||
}
|
||||
@ -958,34 +970,32 @@ AcpiHwLowLevelWrite (
|
||||
* Two address spaces supported: Memory or IO.
|
||||
* PCI_Config is not supported here because the GAS struct is insufficient
|
||||
*/
|
||||
switch (Reg->AddressSpaceId)
|
||||
switch (Reg->SpaceId)
|
||||
{
|
||||
case ACPI_ADR_SPACE_SYSTEM_MEMORY:
|
||||
|
||||
Status = AcpiOsWriteMemory (
|
||||
(ACPI_PHYSICAL_ADDRESS) ACPI_GET_ADDRESS (Address),
|
||||
Value, Width);
|
||||
(ACPI_PHYSICAL_ADDRESS) Address, Value, Width);
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_ADR_SPACE_SYSTEM_IO:
|
||||
|
||||
Status = AcpiOsWritePort ((ACPI_IO_ADDRESS) ACPI_GET_ADDRESS (Address),
|
||||
Value, Width);
|
||||
Status = AcpiOsWritePort (
|
||||
(ACPI_IO_ADDRESS) Address, Value, Width);
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
||||
"Unsupported address space: %X\n", Reg->AddressSpaceId));
|
||||
ACPI_ERROR ((AE_INFO,
|
||||
"Unsupported address space: %X", Reg->SpaceId));
|
||||
return (AE_BAD_PARAMETER);
|
||||
}
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_IO,
|
||||
"Wrote: %8.8X width %2d to %8.8X%8.8X (%s)\n",
|
||||
Value, Width,
|
||||
ACPI_FORMAT_UINT64 (ACPI_GET_ADDRESS (Address)),
|
||||
AcpiUtGetRegionName (Reg->AddressSpaceId)));
|
||||
Value, Width, ACPI_FORMAT_UINT64 (Address),
|
||||
AcpiUtGetRegionName (Reg->SpaceId)));
|
||||
|
||||
return (Status);
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
*
|
||||
* 1. Copyright Notice
|
||||
*
|
||||
* Some or all of this work - Copyright (c) 1999 - 2005, Intel Corp.
|
||||
* Some or all of this work - Copyright (c) 1999 - 2007, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* 2. License
|
||||
@ -130,8 +130,6 @@
|
||||
#include <contrib/dev/acpica/acparser.h>
|
||||
#include <contrib/dev/acpica/acdebug.h>
|
||||
|
||||
#include <contrib/dev/acpica/compiler/aslcompiler.h>
|
||||
|
||||
#define _COMPONENT ACPI_OS_SERVICES
|
||||
ACPI_MODULE_NAME ("osunixxf")
|
||||
|
||||
@ -139,6 +137,10 @@
|
||||
extern FILE *AcpiGbl_DebugFile;
|
||||
FILE *AcpiGbl_OutputFile;
|
||||
|
||||
ACPI_PHYSICAL_ADDRESS
|
||||
AeLocalGetRootPointer (
|
||||
void);
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
@ -172,22 +174,20 @@ AcpiOsTerminate (void)
|
||||
*
|
||||
* FUNCTION: AcpiOsGetRootPointer
|
||||
*
|
||||
* PARAMETERS: Flags - Logical or physical addressing mode
|
||||
* Address - Where the address is returned
|
||||
* PARAMETERS: None
|
||||
*
|
||||
* RETURN: Status
|
||||
* RETURN: RSDP physical address
|
||||
*
|
||||
* DESCRIPTION: Gets the root pointer (RSDP)
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
ACPI_PHYSICAL_ADDRESS
|
||||
AcpiOsGetRootPointer (
|
||||
UINT32 Flags,
|
||||
ACPI_POINTER *Address)
|
||||
void)
|
||||
{
|
||||
|
||||
return (AeLocalGetRootPointer(Flags, (ACPI_PHYSICAL_ADDRESS *) Address));
|
||||
return (AeLocalGetRootPointer ());
|
||||
}
|
||||
|
||||
|
||||
@ -252,7 +252,7 @@ AcpiOsTableOverride (
|
||||
|
||||
/* This code exercises the table override mechanism in the core */
|
||||
|
||||
if (!ACPI_STRNCMP (ExistingTable->Signature, DSDT_SIG, ACPI_NAME_SIZE))
|
||||
if (ACPI_COMPARE_NAME (ExistingTable->Signature, ACPI_SIG_DSDT))
|
||||
{
|
||||
/* override DSDT with itself */
|
||||
|
||||
@ -458,7 +458,6 @@ AcpiOsGetLine (
|
||||
*
|
||||
* PARAMETERS: where Physical address of memory to be mapped
|
||||
* length How much memory to map
|
||||
* there Logical address of mapped memory
|
||||
*
|
||||
* RETURN: Pointer to mapped memory. Null on error.
|
||||
*
|
||||
@ -466,15 +465,13 @@ AcpiOsGetLine (
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
void *
|
||||
AcpiOsMapMemory (
|
||||
ACPI_PHYSICAL_ADDRESS where,
|
||||
ACPI_SIZE length,
|
||||
void **there)
|
||||
ACPI_SIZE length)
|
||||
{
|
||||
*there = ACPI_TO_POINTER (where);
|
||||
|
||||
return AE_OK;
|
||||
return (ACPI_TO_POINTER ((ACPI_NATIVE_UINT) where));
|
||||
}
|
||||
|
||||
|
||||
@ -652,7 +649,7 @@ AcpiOsSignalSemaphore (
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiOsCreateLock (
|
||||
ACPI_HANDLE *OutHandle)
|
||||
ACPI_SPINLOCK *OutHandle)
|
||||
{
|
||||
|
||||
return (AcpiOsCreateSemaphore (1, 1, OutHandle));
|
||||
@ -660,13 +657,13 @@ AcpiOsCreateLock (
|
||||
|
||||
void
|
||||
AcpiOsDeleteLock (
|
||||
ACPI_HANDLE Handle)
|
||||
ACPI_SPINLOCK Handle)
|
||||
{
|
||||
AcpiOsDeleteSemaphore (Handle);
|
||||
}
|
||||
|
||||
|
||||
ACPI_NATIVE_UINT
|
||||
ACPI_CPU_FLAGS
|
||||
AcpiOsAcquireLock (
|
||||
ACPI_HANDLE Handle)
|
||||
{
|
||||
@ -677,8 +674,8 @@ AcpiOsAcquireLock (
|
||||
|
||||
void
|
||||
AcpiOsReleaseLock (
|
||||
ACPI_HANDLE Handle,
|
||||
ACPI_NATIVE_UINT Flags)
|
||||
ACPI_SPINLOCK Handle,
|
||||
ACPI_CPU_FLAGS Flags)
|
||||
{
|
||||
AcpiOsSignalSemaphore (Handle, 1);
|
||||
}
|
||||
@ -735,21 +732,21 @@ AcpiOsRemoveInterruptHandler (
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiOsQueueForExecution
|
||||
* FUNCTION: AcpiOsExecute
|
||||
*
|
||||
* PARAMETERS: Priority - Requested execution priority
|
||||
* PARAMETERS: Type - Type of execution
|
||||
* Function - Address of the function to execute
|
||||
* Context - Passed as a parameter to the function
|
||||
*
|
||||
* RETURN: Status.
|
||||
*
|
||||
* DESCRIPTION: Sleep at microsecond granularity
|
||||
* DESCRIPTION: Execute a new thread
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiOsQueueForExecution (
|
||||
UINT32 Priority,
|
||||
AcpiOsExecute (
|
||||
ACPI_EXECUTE_TYPE Type,
|
||||
ACPI_OSD_EXEC_CALLBACK Function,
|
||||
void *Context)
|
||||
{
|
||||
@ -776,8 +773,6 @@ AcpiOsBreakpoint (
|
||||
char *Msg)
|
||||
{
|
||||
|
||||
/* Print the message and do an INT 3 */
|
||||
|
||||
if (Msg)
|
||||
{
|
||||
AcpiOsPrintf ("AcpiOsBreakpoint: %s ****\n", Msg);
|
||||
@ -787,7 +782,6 @@ AcpiOsBreakpoint (
|
||||
AcpiOsPrintf ("At AcpiOsBreakpoint ****\n");
|
||||
}
|
||||
|
||||
|
||||
return AE_OK;
|
||||
}
|
||||
|
||||
@ -869,6 +863,55 @@ AcpiOsGetTimer (void)
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiOsValidateInterface
|
||||
*
|
||||
* PARAMETERS: Interface - Requested interface to be validated
|
||||
*
|
||||
* RETURN: AE_OK if interface is supported, AE_SUPPORT otherwise
|
||||
*
|
||||
* DESCRIPTION: Match an interface string to the interfaces supported by the
|
||||
* host. Strings originate from an AML call to the _OSI method.
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiOsValidateInterface (
|
||||
char *Interface)
|
||||
{
|
||||
|
||||
return (AE_SUPPORT);
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiOsValidateAddress
|
||||
*
|
||||
* PARAMETERS: SpaceId - ACPI space ID
|
||||
* Address - Physical address
|
||||
* Length - Address length
|
||||
*
|
||||
* RETURN: AE_OK if Address/Length is valid for the SpaceId. Otherwise,
|
||||
* should return AE_AML_ILLEGAL_ADDRESS.
|
||||
*
|
||||
* DESCRIPTION: Validate a system address via the host OS. Used to validate
|
||||
* the addresses accessed by AML operation regions.
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiOsValidateAddress (
|
||||
UINT8 SpaceId,
|
||||
ACPI_PHYSICAL_ADDRESS Address,
|
||||
ACPI_SIZE Length)
|
||||
{
|
||||
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiOsReadPciConfiguration
|
||||
@ -1060,7 +1103,7 @@ AcpiOsWriteMemory (
|
||||
}
|
||||
|
||||
|
||||
UINT32
|
||||
ACPI_THREAD_ID
|
||||
AcpiOsGetThreadId(void)
|
||||
{
|
||||
return getpid();
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: psparse - Parser top level AML parse routines
|
||||
* $Revision: 146 $
|
||||
* $Revision: 1.171 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
*
|
||||
* 1. Copyright Notice
|
||||
*
|
||||
* Some or all of this work - Copyright (c) 1999 - 2005, Intel Corp.
|
||||
* Some or all of this work - Copyright (c) 1999 - 2007, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* 2. License
|
||||
@ -224,7 +224,7 @@ AcpiPsCompleteThisOp (
|
||||
ACPI_PARSE_OBJECT *ReplacementOp = NULL;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE_PTR ("PsCompleteThisOp", Op);
|
||||
ACPI_FUNCTION_TRACE_PTR (PsCompleteThisOp, Op);
|
||||
|
||||
|
||||
/* Check for null Op, can happen if AML code is corrupt */
|
||||
@ -415,13 +415,12 @@ AcpiPsNextParseState (
|
||||
ACPI_STATUS Status = AE_CTRL_PENDING;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE_PTR ("PsNextParseState", Op);
|
||||
ACPI_FUNCTION_TRACE_PTR (PsNextParseState, Op);
|
||||
|
||||
|
||||
switch (CallbackStatus)
|
||||
{
|
||||
case AE_CTRL_TERMINATE:
|
||||
|
||||
/*
|
||||
* A control method was terminated via a RETURN statement.
|
||||
* The walk of this method is complete.
|
||||
@ -438,13 +437,14 @@ AcpiPsNextParseState (
|
||||
Status = AE_CTRL_BREAK;
|
||||
break;
|
||||
|
||||
case AE_CTRL_CONTINUE:
|
||||
|
||||
case AE_CTRL_CONTINUE:
|
||||
|
||||
ParserState->Aml = WalkState->AmlLastWhile;
|
||||
Status = AE_CTRL_CONTINUE;
|
||||
break;
|
||||
|
||||
|
||||
case AE_CTRL_PENDING:
|
||||
|
||||
ParserState->Aml = WalkState->AmlLastWhile;
|
||||
@ -459,17 +459,16 @@ AcpiPsNextParseState (
|
||||
#endif
|
||||
|
||||
case AE_CTRL_TRUE:
|
||||
|
||||
/*
|
||||
* Predicate of an IF was true, and we are at the matching ELSE.
|
||||
* Just close out this package
|
||||
*/
|
||||
ParserState->Aml = AcpiPsGetNextPackageEnd (ParserState);
|
||||
Status = AE_CTRL_PENDING;
|
||||
break;
|
||||
|
||||
|
||||
case AE_CTRL_FALSE:
|
||||
|
||||
/*
|
||||
* Either an IF/WHILE Predicate was false or we encountered a BREAK
|
||||
* opcode. In both cases, we do not execute the rest of the
|
||||
@ -538,7 +537,7 @@ AcpiPsParseAml (
|
||||
ACPI_WALK_STATE *PreviousWalkState;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("PsParseAml");
|
||||
ACPI_FUNCTION_TRACE (PsParseAml);
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_PARSE,
|
||||
"Entered with WalkState=%p Aml=%p size=%X\n",
|
||||
@ -551,10 +550,21 @@ AcpiPsParseAml (
|
||||
Thread = AcpiUtCreateThreadState ();
|
||||
if (!Thread)
|
||||
{
|
||||
AcpiDsDeleteWalkState (WalkState);
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
WalkState->Thread = Thread;
|
||||
|
||||
/*
|
||||
* If executing a method, the starting SyncLevel is this method's
|
||||
* SyncLevel
|
||||
*/
|
||||
if (WalkState->MethodDesc)
|
||||
{
|
||||
WalkState->Thread->CurrentSyncLevel = WalkState->MethodDesc->Method.SyncLevel;
|
||||
}
|
||||
|
||||
AcpiDsPushWalkState (WalkState, Thread);
|
||||
|
||||
/*
|
||||
@ -592,6 +602,10 @@ AcpiPsParseAml (
|
||||
* Transfer control to the called control method
|
||||
*/
|
||||
Status = AcpiDsCallControlMethod (Thread, WalkState, NULL);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
Status = AcpiDsMethodError (Status, WalkState);
|
||||
}
|
||||
|
||||
/*
|
||||
* If the transfer to the new method method call worked, a new walk
|
||||
@ -606,26 +620,30 @@ AcpiPsParseAml (
|
||||
}
|
||||
else if ((Status != AE_OK) && (WalkState->MethodDesc))
|
||||
{
|
||||
ACPI_REPORT_METHOD_ERROR ("Method execution failed",
|
||||
/* Either the method parse or actual execution failed */
|
||||
|
||||
ACPI_ERROR_METHOD ("Method parse/execution failed",
|
||||
WalkState->MethodNode, NULL, Status);
|
||||
|
||||
/* Ensure proper cleanup */
|
||||
|
||||
WalkState->ParseFlags |= ACPI_PARSE_EXECUTE;
|
||||
|
||||
/* Check for possible multi-thread reentrancy problem */
|
||||
|
||||
if ((Status == AE_ALREADY_EXISTS) &&
|
||||
(!WalkState->MethodDesc->Method.Semaphore))
|
||||
(!WalkState->MethodDesc->Method.Mutex))
|
||||
{
|
||||
ACPI_INFO ((AE_INFO, "Marking method %4.4s as Serialized",
|
||||
WalkState->MethodNode->Name.Ascii));
|
||||
|
||||
/*
|
||||
* This method is marked NotSerialized, but it tried to create
|
||||
* Method tried to create an object twice. The probable cause is
|
||||
* that the method cannot handle reentrancy.
|
||||
*
|
||||
* The method is marked NotSerialized, but it tried to create
|
||||
* a named object, causing the second thread entrance to fail.
|
||||
* We will workaround this by marking the method permanently
|
||||
* Workaround this problem by marking the method permanently
|
||||
* as Serialized.
|
||||
*/
|
||||
WalkState->MethodDesc->Method.MethodFlags |= AML_METHOD_SERIALIZED;
|
||||
WalkState->MethodDesc->Method.Concurrency = 1;
|
||||
WalkState->MethodDesc->Method.SyncLevel = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@ -638,25 +656,19 @@ AcpiPsParseAml (
|
||||
AcpiDsScopeStackClear (WalkState);
|
||||
|
||||
/*
|
||||
* If we just returned from the execution of a control method,
|
||||
* there's lots of cleanup to do
|
||||
* If we just returned from the execution of a control method or if we
|
||||
* encountered an error during the method parse phase, there's lots of
|
||||
* cleanup to do
|
||||
*/
|
||||
if ((WalkState->ParseFlags & ACPI_PARSE_MODE_MASK) == ACPI_PARSE_EXECUTE)
|
||||
if (((WalkState->ParseFlags & ACPI_PARSE_MODE_MASK) == ACPI_PARSE_EXECUTE) ||
|
||||
(ACPI_FAILURE (Status)))
|
||||
{
|
||||
if (WalkState->MethodDesc)
|
||||
{
|
||||
/* Decrement the thread count on the method parse tree */
|
||||
|
||||
WalkState->MethodDesc->Method.ThreadCount--;
|
||||
}
|
||||
|
||||
AcpiDsTerminateControlMethod (WalkState);
|
||||
AcpiDsTerminateControlMethod (WalkState->MethodDesc, WalkState);
|
||||
}
|
||||
|
||||
/* Delete this walk state and all linked control states */
|
||||
|
||||
AcpiPsCleanupScope (&WalkState->ParserState);
|
||||
|
||||
PreviousWalkState = WalkState;
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_PARSE,
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Module Name: rscreate - Create resource lists/tables
|
||||
* $Revision: 66 $
|
||||
* $Revision: 1.78 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
*
|
||||
* 1. Copyright Notice
|
||||
*
|
||||
* Some or all of this work - Copyright (c) 1999 - 2005, Intel Corp.
|
||||
* Some or all of this work - Copyright (c) 1999 - 2007, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* 2. License
|
||||
@ -154,9 +154,10 @@ AcpiRsCreateResourceList (
|
||||
UINT8 *AmlStart;
|
||||
ACPI_SIZE ListSizeNeeded = 0;
|
||||
UINT32 AmlBufferLength;
|
||||
void *Resource;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("RsCreateResourceList");
|
||||
ACPI_FUNCTION_TRACE (RsCreateResourceList);
|
||||
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "AmlBuffer = %p\n",
|
||||
@ -191,8 +192,9 @@ AcpiRsCreateResourceList (
|
||||
|
||||
/* Do the conversion */
|
||||
|
||||
Status = AcpiRsConvertAmlToResources (AmlStart, AmlBufferLength,
|
||||
OutputBuffer->Pointer);
|
||||
Resource = OutputBuffer->Pointer;
|
||||
Status = AcpiUtWalkAmlResources (AmlStart, AmlBufferLength,
|
||||
AcpiRsConvertAmlToResources, &Resource);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
@ -243,7 +245,7 @@ AcpiRsCreatePciRoutingTable (
|
||||
ACPI_BUFFER PathBuffer;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("RsCreatePciRoutingTable");
|
||||
ACPI_FUNCTION_TRACE (RsCreatePciRoutingTable);
|
||||
|
||||
|
||||
/* Params already validated, so we don't re-validate here */
|
||||
@ -300,8 +302,8 @@ AcpiRsCreatePciRoutingTable (
|
||||
|
||||
if (ACPI_GET_OBJECT_TYPE (*TopObjectList) != ACPI_TYPE_PACKAGE)
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
||||
"(PRT[%X]) Need sub-package, found %s\n",
|
||||
ACPI_ERROR ((AE_INFO,
|
||||
"(PRT[%X]) Need sub-package, found %s",
|
||||
Index, AcpiUtGetObjectTypeName (*TopObjectList)));
|
||||
return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
|
||||
}
|
||||
@ -310,8 +312,8 @@ AcpiRsCreatePciRoutingTable (
|
||||
|
||||
if ((*TopObjectList)->Package.Count != 4)
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
||||
"(PRT[%X]) Need package of length 4, found length %d\n",
|
||||
ACPI_ERROR ((AE_INFO,
|
||||
"(PRT[%X]) Need package of length 4, found length %d",
|
||||
Index, (*TopObjectList)->Package.Count));
|
||||
return_ACPI_STATUS (AE_AML_PACKAGE_LIMIT);
|
||||
}
|
||||
@ -332,8 +334,8 @@ AcpiRsCreatePciRoutingTable (
|
||||
}
|
||||
else
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
||||
"(PRT[%X].Address) Need Integer, found %s\n",
|
||||
ACPI_ERROR ((AE_INFO,
|
||||
"(PRT[%X].Address) Need Integer, found %s",
|
||||
Index, AcpiUtGetObjectTypeName (ObjDesc)));
|
||||
return_ACPI_STATUS (AE_BAD_DATA);
|
||||
}
|
||||
@ -347,78 +349,83 @@ AcpiRsCreatePciRoutingTable (
|
||||
}
|
||||
else
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
||||
"(PRT[%X].Pin) Need Integer, found %s\n",
|
||||
ACPI_ERROR ((AE_INFO,
|
||||
"(PRT[%X].Pin) Need Integer, found %s",
|
||||
Index, AcpiUtGetObjectTypeName (ObjDesc)));
|
||||
return_ACPI_STATUS (AE_BAD_DATA);
|
||||
}
|
||||
|
||||
/* 3) Third subobject: Dereference the PRT.SourceName */
|
||||
|
||||
/*
|
||||
* 3) Third subobject: Dereference the PRT.SourceName
|
||||
* The name may be unresolved (slack mode), so allow a null object
|
||||
*/
|
||||
ObjDesc = SubObjectList[2];
|
||||
switch (ACPI_GET_OBJECT_TYPE (ObjDesc))
|
||||
if (ObjDesc)
|
||||
{
|
||||
case ACPI_TYPE_LOCAL_REFERENCE:
|
||||
|
||||
if (ObjDesc->Reference.Opcode != AML_INT_NAMEPATH_OP)
|
||||
switch (ACPI_GET_OBJECT_TYPE (ObjDesc))
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
||||
"(PRT[%X].Source) Need name, found reference op %X\n",
|
||||
Index, ObjDesc->Reference.Opcode));
|
||||
return_ACPI_STATUS (AE_BAD_DATA);
|
||||
case ACPI_TYPE_LOCAL_REFERENCE:
|
||||
|
||||
if (ObjDesc->Reference.Opcode != AML_INT_NAMEPATH_OP)
|
||||
{
|
||||
ACPI_ERROR ((AE_INFO,
|
||||
"(PRT[%X].Source) Need name, found reference op %X",
|
||||
Index, ObjDesc->Reference.Opcode));
|
||||
return_ACPI_STATUS (AE_BAD_DATA);
|
||||
}
|
||||
|
||||
Node = ObjDesc->Reference.Node;
|
||||
|
||||
/* Use *remaining* length of the buffer as max for pathname */
|
||||
|
||||
PathBuffer.Length = OutputBuffer->Length -
|
||||
(UINT32) ((UINT8 *) UserPrt->Source -
|
||||
(UINT8 *) OutputBuffer->Pointer);
|
||||
PathBuffer.Pointer = UserPrt->Source;
|
||||
|
||||
Status = AcpiNsHandleToPathname ((ACPI_HANDLE) Node, &PathBuffer);
|
||||
|
||||
/* +1 to include null terminator */
|
||||
|
||||
UserPrt->Length += (UINT32) ACPI_STRLEN (UserPrt->Source) + 1;
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_STRING:
|
||||
|
||||
ACPI_STRCPY (UserPrt->Source, ObjDesc->String.Pointer);
|
||||
|
||||
/*
|
||||
* Add to the Length field the length of the string
|
||||
* (add 1 for terminator)
|
||||
*/
|
||||
UserPrt->Length += ObjDesc->String.Length + 1;
|
||||
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
|
||||
*/
|
||||
UserPrt->Length += sizeof (UINT32);
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
ACPI_ERROR ((AE_INFO,
|
||||
"(PRT[%X].Source) Need Ref/String/Integer, found %s",
|
||||
Index, AcpiUtGetObjectTypeName (ObjDesc)));
|
||||
return_ACPI_STATUS (AE_BAD_DATA);
|
||||
}
|
||||
|
||||
Node = ObjDesc->Reference.Node;
|
||||
|
||||
/* Use *remaining* length of the buffer as max for pathname */
|
||||
|
||||
PathBuffer.Length = OutputBuffer->Length -
|
||||
(UINT32) ((UINT8 *) UserPrt->Source -
|
||||
(UINT8 *) OutputBuffer->Pointer);
|
||||
PathBuffer.Pointer = UserPrt->Source;
|
||||
|
||||
Status = AcpiNsHandleToPathname ((ACPI_HANDLE) Node, &PathBuffer);
|
||||
|
||||
/* +1 to include null terminator */
|
||||
|
||||
UserPrt->Length += (UINT32) ACPI_STRLEN (UserPrt->Source) + 1;
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_STRING:
|
||||
|
||||
ACPI_STRCPY (UserPrt->Source, ObjDesc->String.Pointer);
|
||||
|
||||
/*
|
||||
* Add to the Length field the length of the string
|
||||
* (add 1 for terminator)
|
||||
*/
|
||||
UserPrt->Length += ObjDesc->String.Length + 1;
|
||||
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
|
||||
*/
|
||||
UserPrt->Length += sizeof (UINT32);
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
||||
"(PRT[%X].Source) Need Ref/String/Integer, found %s\n",
|
||||
Index, AcpiUtGetObjectTypeName (ObjDesc)));
|
||||
return_ACPI_STATUS (AE_BAD_DATA);
|
||||
}
|
||||
|
||||
/* Now align the current length */
|
||||
|
||||
UserPrt->Length = (UINT32) ACPI_ROUND_UP_TO_64BITS (UserPrt->Length);
|
||||
UserPrt->Length = (UINT32) ACPI_ROUND_UP_TO_64BIT (UserPrt->Length);
|
||||
|
||||
/* 4) Fourth subobject: Dereference the PRT.SourceIndex */
|
||||
|
||||
@ -429,8 +436,8 @@ AcpiRsCreatePciRoutingTable (
|
||||
}
|
||||
else
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
||||
"(PRT[%X].SourceIndex) Need Integer, found %s\n",
|
||||
ACPI_ERROR ((AE_INFO,
|
||||
"(PRT[%X].SourceIndex) Need Integer, found %s",
|
||||
Index, AcpiUtGetObjectTypeName (ObjDesc)));
|
||||
return_ACPI_STATUS (AE_BAD_DATA);
|
||||
}
|
||||
@ -473,7 +480,7 @@ AcpiRsCreateAmlResources (
|
||||
ACPI_SIZE AmlSizeNeeded = 0;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("RsCreateAmlResources");
|
||||
ACPI_FUNCTION_TRACE (RsCreateAmlResources);
|
||||
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "LinkedListBuffer = %p\n",
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Module Name: rsdump - Functions to display the resource structures.
|
||||
* $Revision: 1.54 $
|
||||
* $Revision: 1.62 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
*
|
||||
* 1. Copyright Notice
|
||||
*
|
||||
* Some or all of this work - Copyright (c) 1999 - 2005, Intel Corp.
|
||||
* Some or all of this work - Copyright (c) 1999 - 2007, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* 2. License
|
||||
@ -119,7 +119,6 @@
|
||||
|
||||
#include <contrib/dev/acpica/acpi.h>
|
||||
#include <contrib/dev/acpica/acresrc.h>
|
||||
#include <contrib/dev/acpica/acdisasm.h>
|
||||
|
||||
#define _COMPONENT ACPI_RESOURCES
|
||||
ACPI_MODULE_NAME ("rsdump")
|
||||
@ -204,9 +203,9 @@ AcpiRsDumpDescriptor (
|
||||
ACPI_RSDUMP_INFO AcpiRsDumpIrq[6] =
|
||||
{
|
||||
{ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpIrq), "IRQ", NULL},
|
||||
{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Irq.Triggering), "Triggering", AcpiGbl_HEDecode},
|
||||
{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Irq.Polarity), "Polarity", AcpiGbl_LLDecode},
|
||||
{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Irq.Sharable), "Sharing", AcpiGbl_SHRDecode},
|
||||
{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Irq.Triggering), "Triggering", AcpiGbl_HeDecode},
|
||||
{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Irq.Polarity), "Polarity", AcpiGbl_LlDecode},
|
||||
{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Irq.Sharable), "Sharing", AcpiGbl_ShrDecode},
|
||||
{ACPI_RSD_UINT8 , ACPI_RSD_OFFSET (Irq.InterruptCount), "Interrupt Count", NULL},
|
||||
{ACPI_RSD_SHORTLIST,ACPI_RSD_OFFSET (Irq.Interrupts[0]), "Interrupt List", NULL}
|
||||
};
|
||||
@ -214,9 +213,9 @@ ACPI_RSDUMP_INFO AcpiRsDumpIrq[6] =
|
||||
ACPI_RSDUMP_INFO AcpiRsDumpDma[6] =
|
||||
{
|
||||
{ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpDma), "DMA", NULL},
|
||||
{ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Dma.Type), "Speed", AcpiGbl_TYPDecode},
|
||||
{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Dma.BusMaster), "Mastering", AcpiGbl_BMDecode},
|
||||
{ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Dma.Transfer), "Transfer Type", AcpiGbl_SIZDecode},
|
||||
{ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Dma.Type), "Speed", AcpiGbl_TypDecode},
|
||||
{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Dma.BusMaster), "Mastering", AcpiGbl_BmDecode},
|
||||
{ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Dma.Transfer), "Transfer Type", AcpiGbl_SizDecode},
|
||||
{ACPI_RSD_UINT8, ACPI_RSD_OFFSET (Dma.ChannelCount), "Channel Count", NULL},
|
||||
{ACPI_RSD_SHORTLIST,ACPI_RSD_OFFSET (Dma.Channels[0]), "Channel List", NULL}
|
||||
};
|
||||
@ -265,7 +264,7 @@ ACPI_RSDUMP_INFO AcpiRsDumpEndTag[1] =
|
||||
ACPI_RSDUMP_INFO AcpiRsDumpMemory24[6] =
|
||||
{
|
||||
{ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpMemory24), "24-Bit Memory Range", NULL},
|
||||
{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Memory24.WriteProtect), "Write Protect", AcpiGbl_RWDecode},
|
||||
{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Memory24.WriteProtect), "Write Protect", AcpiGbl_RwDecode},
|
||||
{ACPI_RSD_UINT16, ACPI_RSD_OFFSET (Memory24.Minimum), "Address Minimum", NULL},
|
||||
{ACPI_RSD_UINT16, ACPI_RSD_OFFSET (Memory24.Maximum), "Address Maximum", NULL},
|
||||
{ACPI_RSD_UINT16, ACPI_RSD_OFFSET (Memory24.Alignment), "Alignment", NULL},
|
||||
@ -275,7 +274,7 @@ ACPI_RSDUMP_INFO AcpiRsDumpMemory24[6] =
|
||||
ACPI_RSDUMP_INFO AcpiRsDumpMemory32[6] =
|
||||
{
|
||||
{ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpMemory32), "32-Bit Memory Range", NULL},
|
||||
{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Memory32.WriteProtect), "Write Protect", AcpiGbl_RWDecode},
|
||||
{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Memory32.WriteProtect), "Write Protect", AcpiGbl_RwDecode},
|
||||
{ACPI_RSD_UINT32, ACPI_RSD_OFFSET (Memory32.Minimum), "Address Minimum", NULL},
|
||||
{ACPI_RSD_UINT32, ACPI_RSD_OFFSET (Memory32.Maximum), "Address Maximum", NULL},
|
||||
{ACPI_RSD_UINT32, ACPI_RSD_OFFSET (Memory32.Alignment), "Alignment", NULL},
|
||||
@ -285,7 +284,7 @@ ACPI_RSDUMP_INFO AcpiRsDumpMemory32[6] =
|
||||
ACPI_RSDUMP_INFO AcpiRsDumpFixedMemory32[4] =
|
||||
{
|
||||
{ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpFixedMemory32), "32-Bit Fixed Memory Range",NULL},
|
||||
{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (FixedMemory32.WriteProtect), "Write Protect", AcpiGbl_RWDecode},
|
||||
{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (FixedMemory32.WriteProtect), "Write Protect", AcpiGbl_RwDecode},
|
||||
{ACPI_RSD_UINT32, ACPI_RSD_OFFSET (FixedMemory32.Address), "Address", NULL},
|
||||
{ACPI_RSD_UINT32, ACPI_RSD_OFFSET (FixedMemory32.AddressLength), "Address Length", NULL}
|
||||
};
|
||||
@ -342,9 +341,9 @@ ACPI_RSDUMP_INFO AcpiRsDumpExtIrq[8] =
|
||||
{
|
||||
{ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpExtIrq), "Extended IRQ", NULL},
|
||||
{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (ExtendedIrq.ProducerConsumer), "Type", AcpiGbl_ConsumeDecode},
|
||||
{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (ExtendedIrq.Triggering), "Triggering", AcpiGbl_HEDecode},
|
||||
{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (ExtendedIrq.Polarity), "Polarity", AcpiGbl_LLDecode},
|
||||
{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (ExtendedIrq.Sharable), "Sharing", AcpiGbl_SHRDecode},
|
||||
{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (ExtendedIrq.Triggering), "Triggering", AcpiGbl_HeDecode},
|
||||
{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (ExtendedIrq.Polarity), "Polarity", AcpiGbl_LlDecode},
|
||||
{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (ExtendedIrq.Sharable), "Sharing", AcpiGbl_ShrDecode},
|
||||
{ACPI_RSD_SOURCE, ACPI_RSD_OFFSET (ExtendedIrq.ResourceSource), NULL, NULL},
|
||||
{ACPI_RSD_UINT8, ACPI_RSD_OFFSET (ExtendedIrq.InterruptCount), "Interrupt Count", NULL},
|
||||
{ACPI_RSD_DWORDLIST,ACPI_RSD_OFFSET (ExtendedIrq.Interrupts[0]), "Interrupt List", NULL}
|
||||
@ -368,26 +367,26 @@ static ACPI_RSDUMP_INFO AcpiRsDumpGeneralFlags[5] =
|
||||
{
|
||||
{ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpGeneralFlags), NULL, NULL},
|
||||
{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Address.ProducerConsumer), "Consumer/Producer", AcpiGbl_ConsumeDecode},
|
||||
{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Address.Decode), "Address Decode", AcpiGbl_DECDecode},
|
||||
{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Address.Decode), "Address Decode", AcpiGbl_DecDecode},
|
||||
{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Address.MinAddressFixed), "Min Relocatability", AcpiGbl_MinDecode},
|
||||
{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Address.MaxAddressFixed), "Max Relocatability", AcpiGbl_MaxDecode}
|
||||
};
|
||||
|
||||
static ACPI_RSDUMP_INFO AcpiRsDumpMemoryFlags[5] =
|
||||
{
|
||||
{ACPI_RSD_LITERAL, ACPI_RSD_TABLE_SIZE (AcpiRsDumpMemoryFlags), "Resource Type", "Memory Range"},
|
||||
{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Address.Info.Mem.WriteProtect), "Write Protect", AcpiGbl_RWDecode},
|
||||
{ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Address.Info.Mem.Caching), "Caching", AcpiGbl_MEMDecode},
|
||||
{ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Address.Info.Mem.RangeType), "Range Type", AcpiGbl_MTPDecode},
|
||||
{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Address.Info.Mem.Translation), "Translation", AcpiGbl_TTPDecode}
|
||||
{ACPI_RSD_LITERAL, ACPI_RSD_TABLE_SIZE (AcpiRsDumpMemoryFlags), "Resource Type", (void *) "Memory Range"},
|
||||
{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Address.Info.Mem.WriteProtect), "Write Protect", AcpiGbl_RwDecode},
|
||||
{ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Address.Info.Mem.Caching), "Caching", AcpiGbl_MemDecode},
|
||||
{ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Address.Info.Mem.RangeType), "Range Type", AcpiGbl_MtpDecode},
|
||||
{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Address.Info.Mem.Translation), "Translation", AcpiGbl_TtpDecode}
|
||||
};
|
||||
|
||||
static ACPI_RSDUMP_INFO AcpiRsDumpIoFlags[4] =
|
||||
{
|
||||
{ACPI_RSD_LITERAL, ACPI_RSD_TABLE_SIZE (AcpiRsDumpIoFlags), "Resource Type", "I/O Range"},
|
||||
{ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Address.Info.Io.RangeType), "Range Type", AcpiGbl_RNGDecode},
|
||||
{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Address.Info.Io.Translation), "Translation", AcpiGbl_TTPDecode},
|
||||
{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Address.Info.Io.TranslationType), "Translation Type", AcpiGbl_TRSDecode}
|
||||
{ACPI_RSD_LITERAL, ACPI_RSD_TABLE_SIZE (AcpiRsDumpIoFlags), "Resource Type", (void *) "I/O Range"},
|
||||
{ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Address.Info.Io.RangeType), "Range Type", AcpiGbl_RngDecode},
|
||||
{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Address.Info.Io.Translation), "Translation", AcpiGbl_TtpDecode},
|
||||
{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Address.Info.Io.TranslationType), "Translation Type", AcpiGbl_TrsDecode}
|
||||
};
|
||||
|
||||
|
||||
@ -421,8 +420,8 @@ AcpiRsDumpDescriptor (
|
||||
void *Resource,
|
||||
ACPI_RSDUMP_INFO *Table)
|
||||
{
|
||||
void *Target = NULL;
|
||||
void *PreviousTarget;
|
||||
UINT8 *Target = NULL;
|
||||
UINT8 *PreviousTarget;
|
||||
char *Name;
|
||||
UINT8 Count;
|
||||
|
||||
@ -434,7 +433,7 @@ AcpiRsDumpDescriptor (
|
||||
while (Count)
|
||||
{
|
||||
PreviousTarget = Target;
|
||||
Target = ((UINT8 *) Resource) + Table->Offset;
|
||||
Target = ACPI_ADD_PTR (UINT8, Resource, Table->Offset);
|
||||
Name = Table->Name;
|
||||
|
||||
switch (Table->Opcode)
|
||||
@ -452,41 +451,41 @@ AcpiRsDumpDescriptor (
|
||||
/* Strings */
|
||||
|
||||
case ACPI_RSD_LITERAL:
|
||||
AcpiRsOutString (Name, (char *) (uintptr_t) Table->Pointer);
|
||||
AcpiRsOutString (Name, ACPI_CAST_PTR (char, Table->Pointer));
|
||||
break;
|
||||
|
||||
case ACPI_RSD_STRING:
|
||||
AcpiRsOutString (Name, (char *) (uintptr_t) Target);
|
||||
AcpiRsOutString (Name, ACPI_CAST_PTR (char, Target));
|
||||
break;
|
||||
|
||||
/* Data items, 8/16/32/64 bit */
|
||||
|
||||
case ACPI_RSD_UINT8:
|
||||
AcpiRsOutInteger8 (Name, *(UINT8 *) Target);
|
||||
AcpiRsOutInteger8 (Name, ACPI_GET8 (Target));
|
||||
break;
|
||||
|
||||
case ACPI_RSD_UINT16:
|
||||
AcpiRsOutInteger16 (Name, *(UINT16 *) Target);
|
||||
AcpiRsOutInteger16 (Name, ACPI_GET16 (Target));
|
||||
break;
|
||||
|
||||
case ACPI_RSD_UINT32:
|
||||
AcpiRsOutInteger32 (Name, *(UINT32 *) Target);
|
||||
AcpiRsOutInteger32 (Name, ACPI_GET32 (Target));
|
||||
break;
|
||||
|
||||
case ACPI_RSD_UINT64:
|
||||
AcpiRsOutInteger64 (Name, *(UINT64 *) Target);
|
||||
AcpiRsOutInteger64 (Name, ACPI_GET64 (Target));
|
||||
break;
|
||||
|
||||
/* Flags: 1-bit and 2-bit flags supported */
|
||||
|
||||
case ACPI_RSD_1BITFLAG:
|
||||
AcpiRsOutString (Name, (char *) (uintptr_t)
|
||||
((const char **) (uintptr_t) Table->Pointer)[(*(UINT8 *) Target) & 0x01]);
|
||||
AcpiRsOutString (Name, ACPI_CAST_PTR (char,
|
||||
Table->Pointer [*Target & 0x01]));
|
||||
break;
|
||||
|
||||
case ACPI_RSD_2BITFLAG:
|
||||
AcpiRsOutString (Name, (char *) (uintptr_t)
|
||||
((const char **) (uintptr_t) Table->Pointer)[(*(UINT8 *) Target) & 0x03]);
|
||||
AcpiRsOutString (Name, ACPI_CAST_PTR (char,
|
||||
Table->Pointer [*Target & 0x03]));
|
||||
break;
|
||||
|
||||
case ACPI_RSD_SHORTLIST:
|
||||
@ -497,8 +496,7 @@ AcpiRsDumpDescriptor (
|
||||
if (PreviousTarget)
|
||||
{
|
||||
AcpiRsOutTitle (Name);
|
||||
AcpiRsDumpShortByteList (*((UINT8 *) PreviousTarget),
|
||||
(UINT8 *) Target);
|
||||
AcpiRsDumpShortByteList (*PreviousTarget, Target);
|
||||
}
|
||||
break;
|
||||
|
||||
@ -509,8 +507,7 @@ AcpiRsDumpDescriptor (
|
||||
*/
|
||||
if (PreviousTarget)
|
||||
{
|
||||
AcpiRsDumpByteList (*((UINT16 *) PreviousTarget),
|
||||
(UINT8 *) Target);
|
||||
AcpiRsDumpByteList (ACPI_GET16 (PreviousTarget), Target);
|
||||
}
|
||||
break;
|
||||
|
||||
@ -521,8 +518,8 @@ AcpiRsDumpDescriptor (
|
||||
*/
|
||||
if (PreviousTarget)
|
||||
{
|
||||
AcpiRsDumpDwordList (*((UINT8 *) PreviousTarget),
|
||||
(UINT32 *) Target);
|
||||
AcpiRsDumpDwordList (*PreviousTarget,
|
||||
ACPI_CAST_PTR (UINT32, Target));
|
||||
}
|
||||
break;
|
||||
|
||||
@ -530,14 +527,14 @@ AcpiRsDumpDescriptor (
|
||||
/*
|
||||
* Common flags for all Address resources
|
||||
*/
|
||||
AcpiRsDumpAddressCommon ((ACPI_RESOURCE_DATA *) Target);
|
||||
AcpiRsDumpAddressCommon (ACPI_CAST_PTR (ACPI_RESOURCE_DATA, Target));
|
||||
break;
|
||||
|
||||
case ACPI_RSD_SOURCE:
|
||||
/*
|
||||
* Optional ResourceSource for Address resources
|
||||
*/
|
||||
AcpiRsDumpResourceSource ((ACPI_RESOURCE_SOURCE *) Target);
|
||||
AcpiRsDumpResourceSource (ACPI_CAST_PTR (ACPI_RESOURCE_SOURCE, Target));
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -691,7 +688,7 @@ AcpiRsDumpResourceList (
|
||||
|
||||
/* Point to the next resource structure */
|
||||
|
||||
ResourceList = ACPI_PTR_ADD (ACPI_RESOURCE, ResourceList,
|
||||
ResourceList = ACPI_ADD_PTR (ACPI_RESOURCE, ResourceList,
|
||||
ResourceList->Length);
|
||||
|
||||
/* Exit when END_TAG descriptor is reached */
|
||||
@ -737,8 +734,8 @@ AcpiRsDumpIrqList (
|
||||
AcpiOsPrintf ("\n[%02X] PCI IRQ Routing Table Package\n", Count);
|
||||
AcpiRsDumpDescriptor (PrtElement, AcpiRsDumpPrt);
|
||||
|
||||
PrtElement = ACPI_CAST_PTR (ACPI_PCI_ROUTING_TABLE,
|
||||
((UINT8 *) PrtElement) + PrtElement->Length);
|
||||
PrtElement = ACPI_ADD_PTR (ACPI_PCI_ROUTING_TABLE,
|
||||
PrtElement, PrtElement->Length);
|
||||
}
|
||||
}
|
||||
|
||||
@ -762,7 +759,12 @@ AcpiRsOutString (
|
||||
char *Title,
|
||||
char *Value)
|
||||
{
|
||||
AcpiOsPrintf ("%27s : %s\n", Title, Value);
|
||||
AcpiOsPrintf ("%27s : %s", Title, Value);
|
||||
if (!*Value)
|
||||
{
|
||||
AcpiOsPrintf ("[NULL NAMESTRING]");
|
||||
}
|
||||
AcpiOsPrintf ("\n");
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: utdebug - Debug print routines
|
||||
* $Revision: 1.126 $
|
||||
* $Revision: 1.133 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
*
|
||||
* 1. Copyright Notice
|
||||
*
|
||||
* Some or all of this work - Copyright (c) 1999 - 2005, Intel Corp.
|
||||
* Some or all of this work - Copyright (c) 1999 - 2007, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* 2. License
|
||||
@ -212,14 +212,14 @@ AcpiUtTrimFunctionName (
|
||||
|
||||
/* All Function names are longer than 4 chars, check is safe */
|
||||
|
||||
if (*((UINT32 *) (uintptr_t) FunctionName) == ACPI_PREFIX_MIXED)
|
||||
if (*(ACPI_CAST_PTR (UINT32, FunctionName)) == ACPI_PREFIX_MIXED)
|
||||
{
|
||||
/* This is the case where the original source has not been modified */
|
||||
|
||||
return (FunctionName + 4);
|
||||
}
|
||||
|
||||
if (*((UINT32 *) (uintptr_t) FunctionName) == ACPI_PREFIX_LOWER)
|
||||
if (*(ACPI_CAST_PTR (UINT32, FunctionName)) == ACPI_PREFIX_LOWER)
|
||||
{
|
||||
/* This is the case where the source has been 'linuxized' */
|
||||
|
||||
@ -259,7 +259,7 @@ AcpiUtDebugPrint (
|
||||
char *Format,
|
||||
...)
|
||||
{
|
||||
UINT32 ThreadId;
|
||||
ACPI_THREAD_ID ThreadId;
|
||||
va_list args;
|
||||
|
||||
|
||||
@ -276,7 +276,6 @@ AcpiUtDebugPrint (
|
||||
* Thread tracking and context switch notification
|
||||
*/
|
||||
ThreadId = AcpiOsGetThreadId ();
|
||||
|
||||
if (ThreadId != AcpiGbl_PrevThreadId)
|
||||
{
|
||||
if (ACPI_LV_THREADS & AcpiDbgLevel)
|
||||
@ -307,6 +306,8 @@ AcpiUtDebugPrint (
|
||||
AcpiOsVprintf (Format, args);
|
||||
}
|
||||
|
||||
ACPI_EXPORT_SYMBOL (AcpiUtDebugPrint)
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
@ -350,6 +351,8 @@ AcpiUtDebugPrintRaw (
|
||||
AcpiOsVprintf (Format, args);
|
||||
}
|
||||
|
||||
ACPI_EXPORT_SYMBOL (AcpiUtDebugPrintRaw)
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
@ -383,6 +386,8 @@ AcpiUtTrace (
|
||||
"%s\n", AcpiGbl_FnEntryStr);
|
||||
}
|
||||
|
||||
ACPI_EXPORT_SYMBOL (AcpiUtTrace)
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
@ -519,6 +524,8 @@ AcpiUtExit (
|
||||
AcpiGbl_NestingLevel--;
|
||||
}
|
||||
|
||||
ACPI_EXPORT_SYMBOL (AcpiUtExit)
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
@ -564,6 +571,8 @@ AcpiUtStatusExit (
|
||||
AcpiGbl_NestingLevel--;
|
||||
}
|
||||
|
||||
ACPI_EXPORT_SYMBOL (AcpiUtStatusExit)
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
@ -599,6 +608,8 @@ AcpiUtValueExit (
|
||||
AcpiGbl_NestingLevel--;
|
||||
}
|
||||
|
||||
ACPI_EXPORT_SYMBOL (AcpiUtValueExit)
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
@ -652,11 +663,10 @@ AcpiUtPtrExit (
|
||||
******************************************************************************/
|
||||
|
||||
void
|
||||
AcpiUtDumpBuffer (
|
||||
AcpiUtDumpBuffer2 (
|
||||
UINT8 *Buffer,
|
||||
UINT32 Count,
|
||||
UINT32 Display,
|
||||
UINT32 ComponentId)
|
||||
UINT32 Display)
|
||||
{
|
||||
ACPI_NATIVE_UINT i = 0;
|
||||
ACPI_NATIVE_UINT j;
|
||||
@ -664,14 +674,6 @@ AcpiUtDumpBuffer (
|
||||
UINT8 BufChar;
|
||||
|
||||
|
||||
/* Only dump the buffer if tracing is enabled */
|
||||
|
||||
if (!((ACPI_LV_TABLES & AcpiDbgLevel) &&
|
||||
(ComponentId & AcpiDbgLayer)))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ((Count < 4) || (Count & 0x01))
|
||||
{
|
||||
Display = DB_BYTE_DISPLAY;
|
||||
@ -700,6 +702,7 @@ AcpiUtDumpBuffer (
|
||||
|
||||
switch (Display)
|
||||
{
|
||||
case DB_BYTE_DISPLAY:
|
||||
default: /* Default is BYTE display */
|
||||
|
||||
AcpiOsPrintf ("%02X ", Buffer[i + j]);
|
||||
@ -766,3 +769,39 @@ AcpiUtDumpBuffer (
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiUtDumpBuffer
|
||||
*
|
||||
* PARAMETERS: Buffer - Buffer to dump
|
||||
* Count - Amount to dump, in bytes
|
||||
* Display - BYTE, WORD, DWORD, or QWORD display
|
||||
* ComponentID - Caller's component ID
|
||||
*
|
||||
* RETURN: None
|
||||
*
|
||||
* DESCRIPTION: Generic dump buffer in both hex and ascii.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
void
|
||||
AcpiUtDumpBuffer (
|
||||
UINT8 *Buffer,
|
||||
UINT32 Count,
|
||||
UINT32 Display,
|
||||
UINT32 ComponentId)
|
||||
{
|
||||
|
||||
/* Only dump the buffer if tracing is enabled */
|
||||
|
||||
if (!((ACPI_LV_TABLES & AcpiDbgLevel) &&
|
||||
(ComponentId & AcpiDbgLayer)))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
AcpiUtDumpBuffer2 (Buffer, Count, Display);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: uteval - Object evaluation
|
||||
* $Revision: 54 $
|
||||
* $Revision: 1.71 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
*
|
||||
* 1. Copyright Notice
|
||||
*
|
||||
* Some or all of this work - Copyright (c) 1999 - 2005, Intel Corp.
|
||||
* Some or all of this work - Copyright (c) 1999 - 2007, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* 2. License
|
||||
@ -138,6 +138,37 @@ AcpiUtTranslateOneCid (
|
||||
ACPI_COMPATIBLE_ID *OneCid);
|
||||
|
||||
|
||||
/*
|
||||
* Strings supported by the _OSI predefined (internal) method.
|
||||
*/
|
||||
static const char *AcpiInterfacesSupported[] =
|
||||
{
|
||||
/* Operating System Vendor Strings */
|
||||
|
||||
"Linux",
|
||||
"Windows 2000",
|
||||
"Windows 2001",
|
||||
"Windows 2001 SP0",
|
||||
"Windows 2001 SP1",
|
||||
"Windows 2001 SP2",
|
||||
"Windows 2001 SP3",
|
||||
"Windows 2001 SP4",
|
||||
"Windows 2001.1",
|
||||
"Windows 2001.1 SP1", /* Added 03/2006 */
|
||||
"Windows 2006", /* Added 03/2006 */
|
||||
|
||||
/* Feature Group Strings */
|
||||
|
||||
"Extended Address Space Descriptor"
|
||||
|
||||
/*
|
||||
* All "optional" feature group strings (features that are implemented
|
||||
* by the host) should be implemented in the host version of
|
||||
* AcpiOsValidateInterface and should not be added here.
|
||||
*/
|
||||
};
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiUtOsiImplementation
|
||||
@ -146,8 +177,7 @@ AcpiUtTranslateOneCid (
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
* DESCRIPTION: Implementation of _OSI predefined control method
|
||||
* Supported = _OSI (String)
|
||||
* DESCRIPTION: Implementation of the _OSI predefined control method
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -155,12 +185,13 @@ ACPI_STATUS
|
||||
AcpiUtOsiImplementation (
|
||||
ACPI_WALK_STATE *WalkState)
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
ACPI_OPERAND_OBJECT *StringDesc;
|
||||
ACPI_OPERAND_OBJECT *ReturnDesc;
|
||||
ACPI_NATIVE_UINT i;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("UtOsiImplementation");
|
||||
ACPI_FUNCTION_TRACE (UtOsiImplementation);
|
||||
|
||||
|
||||
/* Validate the string input argument */
|
||||
@ -171,7 +202,7 @@ AcpiUtOsiImplementation (
|
||||
return_ACPI_STATUS (AE_TYPE);
|
||||
}
|
||||
|
||||
/* Create a return object (Default value = 0) */
|
||||
/* Create a return object */
|
||||
|
||||
ReturnDesc = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER);
|
||||
if (!ReturnDesc)
|
||||
@ -179,21 +210,39 @@ AcpiUtOsiImplementation (
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
/* Compare input string to table of supported strings */
|
||||
/* Default return value is SUPPORTED */
|
||||
|
||||
for (i = 0; i < ACPI_NUM_OSI_STRINGS; i++)
|
||||
ReturnDesc->Integer.Value = ACPI_UINT32_MAX;
|
||||
WalkState->ReturnDesc = ReturnDesc;
|
||||
|
||||
/* Compare input string to static table of supported interfaces */
|
||||
|
||||
for (i = 0; i < ACPI_ARRAY_LENGTH (AcpiInterfacesSupported); i++)
|
||||
{
|
||||
if (!ACPI_STRCMP (StringDesc->String.Pointer,
|
||||
(char *) (uintptr_t) AcpiGbl_ValidOsiStrings[i]))
|
||||
if (!ACPI_STRCMP (StringDesc->String.Pointer, AcpiInterfacesSupported[i]))
|
||||
{
|
||||
/* This string is supported */
|
||||
/* The interface is supported */
|
||||
|
||||
ReturnDesc->Integer.Value = 0xFFFFFFFF;
|
||||
break;
|
||||
return_ACPI_STATUS (AE_CTRL_TERMINATE);
|
||||
}
|
||||
}
|
||||
|
||||
WalkState->ReturnDesc = ReturnDesc;
|
||||
/*
|
||||
* Did not match the string in the static table, call the host OSL to
|
||||
* check for a match with one of the optional strings (such as
|
||||
* "Module Device", "3.0 Thermal Model", etc.)
|
||||
*/
|
||||
Status = AcpiOsValidateInterface (StringDesc->String.Pointer);
|
||||
if (ACPI_SUCCESS (Status))
|
||||
{
|
||||
/* The interface is supported */
|
||||
|
||||
return_ACPI_STATUS (AE_CTRL_TERMINATE);
|
||||
}
|
||||
|
||||
/* The interface is not supported */
|
||||
|
||||
ReturnDesc->Integer.Value = 0;
|
||||
return_ACPI_STATUS (AE_CTRL_TERMINATE);
|
||||
}
|
||||
|
||||
@ -224,21 +273,29 @@ AcpiUtEvaluateObject (
|
||||
UINT32 ExpectedReturnBtypes,
|
||||
ACPI_OPERAND_OBJECT **ReturnDesc)
|
||||
{
|
||||
ACPI_PARAMETER_INFO Info;
|
||||
ACPI_EVALUATE_INFO *Info;
|
||||
ACPI_STATUS Status;
|
||||
UINT32 ReturnBtype;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("UtEvaluateObject");
|
||||
ACPI_FUNCTION_TRACE (UtEvaluateObject);
|
||||
|
||||
|
||||
Info.Node = PrefixNode;
|
||||
Info.Parameters = NULL;
|
||||
Info.ParameterType = ACPI_PARAM_ARGS;
|
||||
/* Allocate the evaluation information block */
|
||||
|
||||
Info = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_EVALUATE_INFO));
|
||||
if (!Info)
|
||||
{
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
Info->PrefixNode = PrefixNode;
|
||||
Info->Pathname = Path;
|
||||
Info->ParameterType = ACPI_PARAM_ARGS;
|
||||
|
||||
/* Evaluate the object/method */
|
||||
|
||||
Status = AcpiNsEvaluateRelative (Path, &Info);
|
||||
Status = AcpiNsEvaluate (Info);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
if (Status == AE_NOT_FOUND)
|
||||
@ -248,31 +305,31 @@ AcpiUtEvaluateObject (
|
||||
}
|
||||
else
|
||||
{
|
||||
ACPI_REPORT_METHOD_ERROR ("Method execution failed",
|
||||
ACPI_ERROR_METHOD ("Method execution failed",
|
||||
PrefixNode, Path, Status);
|
||||
}
|
||||
|
||||
return_ACPI_STATUS (Status);
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
/* Did we get a return object? */
|
||||
|
||||
if (!Info.ReturnObject)
|
||||
if (!Info->ReturnObject)
|
||||
{
|
||||
if (ExpectedReturnBtypes)
|
||||
{
|
||||
ACPI_REPORT_METHOD_ERROR ("No object was returned from",
|
||||
ACPI_ERROR_METHOD ("No object was returned from",
|
||||
PrefixNode, Path, AE_NOT_EXIST);
|
||||
|
||||
return_ACPI_STATUS (AE_NOT_EXIST);
|
||||
Status = AE_NOT_EXIST;
|
||||
}
|
||||
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
/* Map the return object type to the bitmapped type */
|
||||
|
||||
switch (ACPI_GET_OBJECT_TYPE (Info.ReturnObject))
|
||||
switch (ACPI_GET_OBJECT_TYPE (Info->ReturnObject))
|
||||
{
|
||||
case ACPI_TYPE_INTEGER:
|
||||
ReturnBtype = ACPI_BTYPE_INTEGER;
|
||||
@ -303,32 +360,36 @@ AcpiUtEvaluateObject (
|
||||
* happen frequently if the "implicit return" feature is enabled.
|
||||
* Just delete the return object and return AE_OK.
|
||||
*/
|
||||
AcpiUtRemoveReference (Info.ReturnObject);
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
AcpiUtRemoveReference (Info->ReturnObject);
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
/* Is the return object one of the expected types? */
|
||||
|
||||
if (!(ExpectedReturnBtypes & ReturnBtype))
|
||||
{
|
||||
ACPI_REPORT_METHOD_ERROR ("Return object type is incorrect",
|
||||
ACPI_ERROR_METHOD ("Return object type is incorrect",
|
||||
PrefixNode, Path, AE_TYPE);
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
||||
"Type returned from %s was incorrect: %s, expected Btypes: %X\n",
|
||||
Path, AcpiUtGetObjectTypeName (Info.ReturnObject),
|
||||
ACPI_ERROR ((AE_INFO,
|
||||
"Type returned from %s was incorrect: %s, expected Btypes: %X",
|
||||
Path, AcpiUtGetObjectTypeName (Info->ReturnObject),
|
||||
ExpectedReturnBtypes));
|
||||
|
||||
/* On error exit, we must delete the return object */
|
||||
|
||||
AcpiUtRemoveReference (Info.ReturnObject);
|
||||
return_ACPI_STATUS (AE_TYPE);
|
||||
AcpiUtRemoveReference (Info->ReturnObject);
|
||||
Status = AE_TYPE;
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
/* Object type is OK, return it */
|
||||
|
||||
*ReturnDesc = Info.ReturnObject;
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
*ReturnDesc = Info->ReturnObject;
|
||||
|
||||
Cleanup:
|
||||
ACPI_FREE (Info);
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
|
||||
@ -359,7 +420,7 @@ AcpiUtEvaluateNumericObject (
|
||||
ACPI_STATUS Status;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("UtEvaluateNumericObject");
|
||||
ACPI_FUNCTION_TRACE (UtEvaluateNumericObject);
|
||||
|
||||
|
||||
Status = AcpiUtEvaluateObject (DeviceNode, ObjectName,
|
||||
@ -445,7 +506,7 @@ AcpiUtExecute_HID (
|
||||
ACPI_STATUS Status;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("UtExecute_HID");
|
||||
ACPI_FUNCTION_TRACE (UtExecute_HID);
|
||||
|
||||
|
||||
Status = AcpiUtEvaluateObject (DeviceNode, METHOD_NAME__HID,
|
||||
@ -558,7 +619,7 @@ AcpiUtExecute_CID (
|
||||
ACPI_NATIVE_UINT i;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("UtExecute_CID");
|
||||
ACPI_FUNCTION_TRACE (UtExecute_CID);
|
||||
|
||||
|
||||
/* Evaluate the _CID method for this device */
|
||||
@ -584,7 +645,7 @@ AcpiUtExecute_CID (
|
||||
Size = (((Count - 1) * sizeof (ACPI_COMPATIBLE_ID)) +
|
||||
sizeof (ACPI_COMPATIBLE_ID_LIST));
|
||||
|
||||
CidList = ACPI_MEM_CALLOCATE ((ACPI_SIZE) Size);
|
||||
CidList = ACPI_ALLOCATE_ZEROED ((ACPI_SIZE) Size);
|
||||
if (!CidList)
|
||||
{
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
@ -629,7 +690,7 @@ AcpiUtExecute_CID (
|
||||
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
ACPI_MEM_FREE (CidList);
|
||||
ACPI_FREE (CidList);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -668,7 +729,7 @@ AcpiUtExecute_UID (
|
||||
ACPI_STATUS Status;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("UtExecute_UID");
|
||||
ACPI_FUNCTION_TRACE (UtExecute_UID);
|
||||
|
||||
|
||||
Status = AcpiUtEvaluateObject (DeviceNode, METHOD_NAME__UID,
|
||||
@ -724,7 +785,7 @@ AcpiUtExecute_STA (
|
||||
ACPI_STATUS Status;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("UtExecute_STA");
|
||||
ACPI_FUNCTION_TRACE (UtExecute_STA);
|
||||
|
||||
|
||||
Status = AcpiUtEvaluateObject (DeviceNode, METHOD_NAME__STA,
|
||||
@ -737,7 +798,7 @@ AcpiUtExecute_STA (
|
||||
"_STA on %4.4s was not found, assuming device is present\n",
|
||||
AcpiUtGetNodeName (DeviceNode)));
|
||||
|
||||
*Flags = 0x0F;
|
||||
*Flags = ACPI_UINT32_MAX;
|
||||
Status = AE_OK;
|
||||
}
|
||||
|
||||
@ -781,14 +842,14 @@ AcpiUtExecute_Sxds (
|
||||
UINT32 i;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("UtExecute_Sxds");
|
||||
ACPI_FUNCTION_TRACE (UtExecute_Sxds);
|
||||
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
Highest[i] = 0xFF;
|
||||
Status = AcpiUtEvaluateObject (DeviceNode,
|
||||
(char *) (uintptr_t) AcpiGbl_HighestDstateNames[i],
|
||||
ACPI_CAST_PTR (char, AcpiGbl_HighestDstateNames[i]),
|
||||
ACPI_BTYPE_INTEGER, &ObjDesc);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
@ -796,7 +857,7 @@ AcpiUtExecute_Sxds (
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
|
||||
"%s on Device %4.4s, %s\n",
|
||||
(char *) (uintptr_t) AcpiGbl_HighestDstateNames[i],
|
||||
ACPI_CAST_PTR (char, AcpiGbl_HighestDstateNames[i]),
|
||||
AcpiUtGetNodeName (DeviceNode),
|
||||
AcpiFormatException (Status)));
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: utglobal - Global variables for the ACPI subsystem
|
||||
* $Revision: 202 $
|
||||
* $Revision: 1.249 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
*
|
||||
* 1. Copyright Notice
|
||||
*
|
||||
* Some or all of this work - Copyright (c) 1999 - 2005, Intel Corp.
|
||||
* Some or all of this work - Copyright (c) 1999 - 2007, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* 2. License
|
||||
@ -120,96 +120,12 @@
|
||||
#include <contrib/dev/acpica/acpi.h>
|
||||
#include <contrib/dev/acpica/acnamesp.h>
|
||||
|
||||
ACPI_EXPORT_SYMBOL (AcpiGbl_FADT)
|
||||
|
||||
#define _COMPONENT ACPI_UTILITIES
|
||||
ACPI_MODULE_NAME ("utglobal")
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiFormatException
|
||||
*
|
||||
* PARAMETERS: Status - The ACPI_STATUS code to be formatted
|
||||
*
|
||||
* RETURN: A string containing the exception text. A valid pointer is
|
||||
* always returned.
|
||||
*
|
||||
* DESCRIPTION: This function translates an ACPI exception into an ASCII string.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
const char *
|
||||
AcpiFormatException (
|
||||
ACPI_STATUS Status)
|
||||
{
|
||||
ACPI_STATUS SubStatus;
|
||||
const char *Exception = NULL;
|
||||
|
||||
|
||||
ACPI_FUNCTION_NAME ("FormatException");
|
||||
|
||||
|
||||
SubStatus = (Status & ~AE_CODE_MASK);
|
||||
|
||||
switch (Status & AE_CODE_MASK)
|
||||
{
|
||||
case AE_CODE_ENVIRONMENTAL:
|
||||
|
||||
if (SubStatus <= AE_CODE_ENV_MAX)
|
||||
{
|
||||
Exception = AcpiGbl_ExceptionNames_Env [SubStatus];
|
||||
}
|
||||
break;
|
||||
|
||||
case AE_CODE_PROGRAMMER:
|
||||
|
||||
if (SubStatus <= AE_CODE_PGM_MAX)
|
||||
{
|
||||
Exception = AcpiGbl_ExceptionNames_Pgm [SubStatus -1];
|
||||
}
|
||||
break;
|
||||
|
||||
case AE_CODE_ACPI_TABLES:
|
||||
|
||||
if (SubStatus <= AE_CODE_TBL_MAX)
|
||||
{
|
||||
Exception = AcpiGbl_ExceptionNames_Tbl [SubStatus -1];
|
||||
}
|
||||
break;
|
||||
|
||||
case AE_CODE_AML:
|
||||
|
||||
if (SubStatus <= AE_CODE_AML_MAX)
|
||||
{
|
||||
Exception = AcpiGbl_ExceptionNames_Aml [SubStatus -1];
|
||||
}
|
||||
break;
|
||||
|
||||
case AE_CODE_CONTROL:
|
||||
|
||||
if (SubStatus <= AE_CODE_CTRL_MAX)
|
||||
{
|
||||
Exception = AcpiGbl_ExceptionNames_Ctrl [SubStatus -1];
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (!Exception)
|
||||
{
|
||||
/* Exception code was not recognized */
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
||||
"Unknown exception code: 0x%8.8X\n", Status));
|
||||
|
||||
return ((const char *) "UNKNOWN_STATUS_CODE");
|
||||
}
|
||||
|
||||
return ((const char *) Exception);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Static global variable initialization.
|
||||
@ -234,7 +150,6 @@ UINT32 AcpiDbgLevel = ACPI_NORMAL_DEFAULT;
|
||||
UINT32 AcpiDbgLayer = ACPI_COMPONENT_DEFAULT;
|
||||
UINT32 AcpiGbl_NestingLevel = 0;
|
||||
|
||||
|
||||
/* Debugger globals */
|
||||
|
||||
BOOLEAN AcpiGbl_DbTerminateThreads = FALSE;
|
||||
@ -249,8 +164,6 @@ UINT32 AcpiGbl_StartupFlags = 0;
|
||||
|
||||
BOOLEAN AcpiGbl_Shutdown = TRUE;
|
||||
|
||||
const UINT8 AcpiGbl_DecodeTo8bit [8] = {1,2,4,8,16,32,64,128};
|
||||
|
||||
const char *AcpiGbl_SleepStateNames[ACPI_S_STATE_COUNT] =
|
||||
{
|
||||
"\\_S0_",
|
||||
@ -269,28 +182,46 @@ const char *AcpiGbl_HighestDstateNames[4] =
|
||||
"_S4D"
|
||||
};
|
||||
|
||||
/*
|
||||
* Strings supported by the _OSI predefined (internal) method.
|
||||
* When adding strings, be sure to update ACPI_NUM_OSI_STRINGS.
|
||||
*/
|
||||
const char *AcpiGbl_ValidOsiStrings[ACPI_NUM_OSI_STRINGS] =
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiFormatException
|
||||
*
|
||||
* PARAMETERS: Status - The ACPI_STATUS code to be formatted
|
||||
*
|
||||
* RETURN: A string containing the exception text. A valid pointer is
|
||||
* always returned.
|
||||
*
|
||||
* DESCRIPTION: This function translates an ACPI exception into an ASCII string
|
||||
* It is here instead of utxface.c so it is always present.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
const char *
|
||||
AcpiFormatException (
|
||||
ACPI_STATUS Status)
|
||||
{
|
||||
/* Operating System Vendor Strings */
|
||||
const char *Exception = NULL;
|
||||
|
||||
"Linux",
|
||||
"Windows 2000",
|
||||
"Windows 2001",
|
||||
"Windows 2001.1",
|
||||
"Windows 2001 SP0",
|
||||
"Windows 2001 SP1",
|
||||
"Windows 2001 SP2",
|
||||
"Windows 2001 SP3",
|
||||
"Windows 2001 SP4",
|
||||
|
||||
/* Feature Group Strings */
|
||||
ACPI_FUNCTION_ENTRY ();
|
||||
|
||||
"Extended Address Space Descriptor"
|
||||
};
|
||||
|
||||
Exception = AcpiUtValidateException (Status);
|
||||
if (!Exception)
|
||||
{
|
||||
/* Exception code was not recognized */
|
||||
|
||||
ACPI_ERROR ((AE_INFO,
|
||||
"Unknown exception code: 0x%8.8X", Status));
|
||||
|
||||
Exception = "UNKNOWN_STATUS_CODE";
|
||||
}
|
||||
|
||||
return (ACPI_CAST_PTR (const char, Exception));
|
||||
}
|
||||
|
||||
ACPI_EXPORT_SYMBOL (AcpiFormatException)
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
@ -401,35 +332,6 @@ AcpiUtHexToAsciiChar (
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* 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 (No MADT, ECDT, SBST, etc.)
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_TABLE_LIST AcpiGbl_TableLists[NUM_ACPI_TABLE_TYPES];
|
||||
|
||||
ACPI_TABLE_SUPPORT AcpiGbl_TableData[NUM_ACPI_TABLE_TYPES] =
|
||||
{
|
||||
/*********** Name, Signature, Global typed pointer Signature size, Type How many allowed?, Contains valid AML? */
|
||||
|
||||
/* RSDP 0 */ {RSDP_NAME, RSDP_SIG, NULL, sizeof (RSDP_SIG)-1, ACPI_TABLE_ROOT | ACPI_TABLE_SINGLE},
|
||||
/* DSDT 1 */ {DSDT_SIG, DSDT_SIG, (void *) &AcpiGbl_DSDT, sizeof (DSDT_SIG)-1, ACPI_TABLE_SECONDARY| ACPI_TABLE_SINGLE | ACPI_TABLE_EXECUTABLE},
|
||||
/* FADT 2 */ {FADT_SIG, FADT_SIG, (void *) &AcpiGbl_FADT, sizeof (FADT_SIG)-1, ACPI_TABLE_PRIMARY | ACPI_TABLE_SINGLE},
|
||||
/* FACS 3 */ {FACS_SIG, FACS_SIG, (void *) &AcpiGbl_FACS, sizeof (FACS_SIG)-1, ACPI_TABLE_SECONDARY| ACPI_TABLE_SINGLE},
|
||||
/* PSDT 4 */ {PSDT_SIG, PSDT_SIG, NULL, sizeof (PSDT_SIG)-1, ACPI_TABLE_PRIMARY | ACPI_TABLE_MULTIPLE | ACPI_TABLE_EXECUTABLE},
|
||||
/* SSDT 5 */ {SSDT_SIG, SSDT_SIG, NULL, sizeof (SSDT_SIG)-1, ACPI_TABLE_PRIMARY | ACPI_TABLE_MULTIPLE | ACPI_TABLE_EXECUTABLE},
|
||||
/* XSDT 6 */ {XSDT_SIG, XSDT_SIG, NULL, sizeof (RSDT_SIG)-1, ACPI_TABLE_ROOT | ACPI_TABLE_SINGLE},
|
||||
};
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* Event and Hardware globals
|
||||
@ -493,7 +395,6 @@ ACPI_FIXED_EVENT_INFO AcpiGbl_FixedEventInfo[ACPI_NUM_FIXED_EVENTS] =
|
||||
|
||||
const char *AcpiGbl_RegionTypes[ACPI_NUM_PREDEFINED_REGIONS] =
|
||||
{
|
||||
/*! [Begin] no source code translation (keep these ASL Keywords as-is) */
|
||||
"SystemMemory",
|
||||
"SystemIO",
|
||||
"PCI_Config",
|
||||
@ -502,7 +403,6 @@ const char *AcpiGbl_RegionTypes[ACPI_NUM_PREDEFINED_REGIONS] =
|
||||
"CMOS",
|
||||
"PCIBARTarget",
|
||||
"DataTable"
|
||||
/*! [End] no source code translation !*/
|
||||
};
|
||||
|
||||
|
||||
@ -520,7 +420,7 @@ AcpiUtGetRegionName (
|
||||
return ("InvalidSpaceId");
|
||||
}
|
||||
|
||||
return ((char *) (uintptr_t) AcpiGbl_RegionTypes[SpaceId]);
|
||||
return (ACPI_CAST_PTR (char, AcpiGbl_RegionTypes[SpaceId]));
|
||||
}
|
||||
|
||||
|
||||
@ -540,13 +440,11 @@ AcpiUtGetRegionName (
|
||||
|
||||
static const char *AcpiGbl_EventTypes[ACPI_NUM_FIXED_EVENTS] =
|
||||
{
|
||||
/*! [Begin] no source code translation (keep these strings as-is) */
|
||||
"PM_Timer",
|
||||
"GlobalLock",
|
||||
"PowerButton",
|
||||
"SleepButton",
|
||||
"RealTimeClock",
|
||||
/*! [End] no source code translation !*/
|
||||
};
|
||||
|
||||
|
||||
@ -560,7 +458,7 @@ AcpiUtGetEventName (
|
||||
return ("InvalidEventID");
|
||||
}
|
||||
|
||||
return ((char *) (uintptr_t) AcpiGbl_EventTypes[EventId]);
|
||||
return (ACPI_CAST_PTR (char, AcpiGbl_EventTypes[EventId]));
|
||||
}
|
||||
|
||||
|
||||
@ -590,7 +488,6 @@ static const char AcpiGbl_BadType[] = "UNDEFINED";
|
||||
|
||||
static const char *AcpiGbl_NsTypeNames[] =
|
||||
{
|
||||
/*! [Begin] no source code translation (keep these strings as-is) */
|
||||
/* 00 */ "Untyped",
|
||||
/* 01 */ "Integer",
|
||||
/* 02 */ "String",
|
||||
@ -622,7 +519,6 @@ static const char *AcpiGbl_NsTypeNames[] =
|
||||
/* 28 */ "Extra",
|
||||
/* 29 */ "Data",
|
||||
/* 30 */ "Invalid"
|
||||
/*! [End] no source code translation !*/
|
||||
};
|
||||
|
||||
|
||||
@ -633,10 +529,10 @@ AcpiUtGetTypeName (
|
||||
|
||||
if (Type > ACPI_TYPE_INVALID)
|
||||
{
|
||||
return ((char *) (uintptr_t) AcpiGbl_BadType);
|
||||
return (ACPI_CAST_PTR (char, AcpiGbl_BadType));
|
||||
}
|
||||
|
||||
return ((char *) (uintptr_t) AcpiGbl_NsTypeNames[Type]);
|
||||
return (ACPI_CAST_PTR (char, AcpiGbl_NsTypeNames[Type]));
|
||||
}
|
||||
|
||||
|
||||
@ -690,16 +586,16 @@ AcpiUtGetNodeName (
|
||||
|
||||
/* Descriptor must be a namespace node */
|
||||
|
||||
if (Node->Descriptor != ACPI_DESC_TYPE_NAMED)
|
||||
if (ACPI_GET_DESCRIPTOR_TYPE (Node) != ACPI_DESC_TYPE_NAMED)
|
||||
{
|
||||
return ("####");
|
||||
}
|
||||
|
||||
/* Name must be a valid ACPI name */
|
||||
|
||||
if (!AcpiUtValidAcpiName (* (UINT32 *) Node->Name.Ascii))
|
||||
if (!AcpiUtValidAcpiName (Node->Name.Integer))
|
||||
{
|
||||
return ("????");
|
||||
Node->Name.Integer = AcpiUtRepairName (Node->Name.Ascii);
|
||||
}
|
||||
|
||||
/* Return the name */
|
||||
@ -724,7 +620,6 @@ AcpiUtGetNodeName (
|
||||
|
||||
static const char *AcpiGbl_DescTypeNames[] =
|
||||
{
|
||||
/*! [Begin] no source code translation (keep these ASL Keywords as-is) */
|
||||
/* 00 */ "Invalid",
|
||||
/* 01 */ "Cached",
|
||||
/* 02 */ "State-Generic",
|
||||
@ -741,7 +636,6 @@ static const char *AcpiGbl_DescTypeNames[] =
|
||||
/* 13 */ "Parser",
|
||||
/* 14 */ "Operand",
|
||||
/* 15 */ "Node"
|
||||
/*! [End] no source code translation !*/
|
||||
};
|
||||
|
||||
|
||||
@ -757,10 +651,11 @@ AcpiUtGetDescriptorName (
|
||||
|
||||
if (ACPI_GET_DESCRIPTOR_TYPE (Object) > ACPI_DESC_TYPE_MAX)
|
||||
{
|
||||
return ((char *) (uintptr_t) AcpiGbl_BadType);
|
||||
return (ACPI_CAST_PTR (char, AcpiGbl_BadType));
|
||||
}
|
||||
|
||||
return ((char *) (uintptr_t) AcpiGbl_DescTypeNames[ACPI_GET_DESCRIPTOR_TYPE (Object)]);
|
||||
return (ACPI_CAST_PTR (char,
|
||||
AcpiGbl_DescTypeNames[ACPI_GET_DESCRIPTOR_TYPE (Object)]));
|
||||
|
||||
}
|
||||
|
||||
@ -788,7 +683,7 @@ AcpiUtGetMutexName (
|
||||
UINT32 MutexId)
|
||||
{
|
||||
|
||||
if (MutexId > MAX_MUTEX)
|
||||
if (MutexId > ACPI_MAX_MUTEX)
|
||||
{
|
||||
return ("Invalid Mutex ID");
|
||||
}
|
||||
@ -847,7 +742,7 @@ AcpiUtInitGlobals (
|
||||
UINT32 i;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("UtInitGlobals");
|
||||
ACPI_FUNCTION_TRACE (UtInitGlobals);
|
||||
|
||||
|
||||
/* Create all memory caches */
|
||||
@ -858,25 +753,24 @@ AcpiUtInitGlobals (
|
||||
return;
|
||||
}
|
||||
|
||||
/* ACPI table structure */
|
||||
|
||||
for (i = 0; i < NUM_ACPI_TABLE_TYPES; i++)
|
||||
{
|
||||
AcpiGbl_TableLists[i].Next = NULL;
|
||||
AcpiGbl_TableLists[i].Count = 0;
|
||||
}
|
||||
|
||||
/* Mutex locked flags */
|
||||
|
||||
for (i = 0; i < NUM_MUTEX; i++)
|
||||
for (i = 0; i < ACPI_NUM_MUTEX; i++)
|
||||
{
|
||||
AcpiGbl_MutexInfo[i].Mutex = NULL;
|
||||
AcpiGbl_MutexInfo[i].ThreadId = ACPI_MUTEX_NOT_ACQUIRED;
|
||||
AcpiGbl_MutexInfo[i].UseCount = 0;
|
||||
}
|
||||
|
||||
for (i = 0; i < ACPI_NUM_OWNERID_MASKS; i++)
|
||||
{
|
||||
AcpiGbl_OwnerIdMask[i] = 0;
|
||||
}
|
||||
AcpiGbl_OwnerIdMask[ACPI_NUM_OWNERID_MASKS - 1] = 0x80000000; /* Last ID is never valid */
|
||||
|
||||
/* GPE support */
|
||||
|
||||
AcpiGpeCount = 0;
|
||||
AcpiGbl_GpeXruptListHead = NULL;
|
||||
AcpiGbl_GpeFadtBlocks[0] = NULL;
|
||||
AcpiGbl_GpeFadtBlocks[1] = NULL;
|
||||
@ -888,31 +782,23 @@ AcpiUtInitGlobals (
|
||||
AcpiGbl_ExceptionHandler = NULL;
|
||||
AcpiGbl_InitHandler = NULL;
|
||||
|
||||
/* Global "typed" ACPI table pointers */
|
||||
|
||||
AcpiGbl_RSDP = NULL;
|
||||
AcpiGbl_XSDT = NULL;
|
||||
AcpiGbl_FACS = NULL;
|
||||
AcpiGbl_FADT = NULL;
|
||||
AcpiGbl_DSDT = NULL;
|
||||
|
||||
/* Global Lock support */
|
||||
|
||||
AcpiGbl_GlobalLockSemaphore = NULL;
|
||||
AcpiGbl_GlobalLockMutex = NULL;
|
||||
AcpiGbl_GlobalLockAcquired = FALSE;
|
||||
AcpiGbl_GlobalLockThreadCount = 0;
|
||||
AcpiGbl_GlobalLockHandle = 0;
|
||||
|
||||
/* Miscellaneous variables */
|
||||
|
||||
AcpiGbl_TableFlags = ACPI_PHYSICAL_POINTER;
|
||||
AcpiGbl_RsdpOriginalLocation = 0;
|
||||
AcpiGbl_CmSingleStep = FALSE;
|
||||
AcpiGbl_DbTerminateThreads = FALSE;
|
||||
AcpiGbl_Shutdown = FALSE;
|
||||
AcpiGbl_NsLookupCount = 0;
|
||||
AcpiGbl_PsFindCount = 0;
|
||||
AcpiGbl_AcpiHardwarePresent = TRUE;
|
||||
AcpiGbl_OwnerIdMask = 0;
|
||||
AcpiGbl_LastOwnerIdIndex = 0;
|
||||
AcpiGbl_NextOwnerIdOffset = 0;
|
||||
AcpiGbl_TraceMethodName = 0;
|
||||
AcpiGbl_TraceDbgLevel = 0;
|
||||
AcpiGbl_TraceDbgLayer = 0;
|
||||
@ -927,9 +813,8 @@ AcpiUtInitGlobals (
|
||||
/* Namespace */
|
||||
|
||||
AcpiGbl_RootNode = NULL;
|
||||
|
||||
AcpiGbl_RootNodeStruct.Name.Integer = ACPI_ROOT_NAME;
|
||||
AcpiGbl_RootNodeStruct.Descriptor = ACPI_DESC_TYPE_NAMED;
|
||||
AcpiGbl_RootNodeStruct.DescriptorType = ACPI_DESC_TYPE_NAMED;
|
||||
AcpiGbl_RootNodeStruct.Type = ACPI_TYPE_DEVICE;
|
||||
AcpiGbl_RootNodeStruct.Child = NULL;
|
||||
AcpiGbl_RootNodeStruct.Peer = NULL;
|
||||
@ -941,7 +826,17 @@ AcpiUtInitGlobals (
|
||||
AcpiGbl_LowestStackPointer = ACPI_SIZE_MAX;
|
||||
#endif
|
||||
|
||||
#ifdef ACPI_DBG_TRACK_ALLOCATIONS
|
||||
AcpiGbl_DisplayFinalMemStats = FALSE;
|
||||
#endif
|
||||
|
||||
return_VOID;
|
||||
}
|
||||
|
||||
/* Public globals */
|
||||
|
||||
ACPI_EXPORT_SYMBOL (AcpiDbgLevel)
|
||||
ACPI_EXPORT_SYMBOL (AcpiDbgLayer)
|
||||
ACPI_EXPORT_SYMBOL (AcpiGpeCount)
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user