Update copyrights for 2004

date	2004.01.13.23.06.00;	author rmoore1;	state Exp;
This commit is contained in:
aystarik 2005-06-29 18:18:26 +00:00
parent 0b1ef47a52
commit c7d2007961
68 changed files with 2088 additions and 1232 deletions

View File

@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: nsaccess - Top-level functions for accessing ACPI namespace
* $Revision: 1.175 $
* $Revision: 1.176 $
*
******************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License

View File

@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: nsalloc - Namespace allocation and deletion utilities
* $Revision: 1.83 $
* $Revision: 1.84 $
*
******************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: nsdump - table dumping routines for debug
* $Revision: 1.153 $
* $Revision: 1.157 $
*
*****************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -125,8 +125,8 @@
#define _COMPONENT ACPI_NAMESPACE
ACPI_MODULE_NAME ("nsdump")
#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
/*******************************************************************************
*
@ -152,7 +152,7 @@ AcpiNsPrintPathname (
return;
}
/* Print the entire name */
/* Print the entire name */
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "["));
@ -337,8 +337,7 @@ AcpiNsDumpOneObject (
case ACPI_TYPE_INTEGER:
AcpiOsPrintf ("= %8.8X%8.8X\n",
ACPI_HIDWORD (ObjDesc->Integer.Value),
ACPI_LODWORD (ObjDesc->Integer.Value));
ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value));
break;
@ -396,8 +395,7 @@ AcpiNsDumpOneObject (
if (ObjDesc->Region.Flags & AOPOBJ_DATA_VALID)
{
AcpiOsPrintf (" Addr %8.8X%8.8X Len %.4X\n",
ACPI_HIDWORD (ObjDesc->Region.Address),
ACPI_LODWORD (ObjDesc->Region.Address),
ACPI_FORMAT_UINT64 (ObjDesc->Region.Address),
ObjDesc->Region.Length);
}
else
@ -468,7 +466,7 @@ AcpiNsDumpOneObject (
case ACPI_TYPE_LOCAL_BANK_FIELD:
case ACPI_TYPE_LOCAL_INDEX_FIELD:
AcpiOsPrintf ("Off %.2X Len %.2X Acc %.2hd\n",
AcpiOsPrintf (" Off %.3X Len %.2X Acc %.2hd\n",
(ObjDesc->CommonField.BaseByteOffset * 8)
+ ObjDesc->CommonField.StartFieldBitOffset,
ObjDesc->CommonField.BitLength,
@ -507,8 +505,8 @@ AcpiNsDumpOneObject (
case ACPI_TYPE_INTEGER:
AcpiOsPrintf (" N:%X%X\n", ACPI_HIDWORD(ObjDesc->Integer.Value),
ACPI_LODWORD(ObjDesc->Integer.Value));
AcpiOsPrintf (" I:%8.8X8.8%X\n",
ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value));
break;
case ACPI_TYPE_STRING:
@ -589,7 +587,8 @@ AcpiNsDumpOneObject (
default:
AcpiOsPrintf ("(String or Buffer ptr - not an object descriptor)\n");
AcpiOsPrintf ("(String or Buffer ptr - not an object descriptor) [%s]\n",
AcpiUtGetDescriptorName (ObjDesc));
BytesToDump = 16;
break;
}
@ -687,7 +686,6 @@ AcpiNsDumpObjects (
Info.OwnerId = OwnerId;
Info.DisplayType = DisplayType;
(void) AcpiNsWalkNamespace (Type, StartHandle, MaxDepth,
ACPI_NS_WALK_NO_UNLOCK, AcpiNsDumpOneObject,
(void *) &Info, NULL);
@ -736,7 +734,6 @@ AcpiNsDumpTables (
ACPI_DEBUG_PRINT ((ACPI_DB_TABLES, "\\\n"));
}
AcpiNsDumpObjects (ACPI_TYPE_ANY, ACPI_DISPLAY_OBJECTS, MaxDepth,
ACPI_UINT32_MAX, SearchHandle);
return_VOID;

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: nsdump - table dumping routines for debug
* $Revision: 1.5 $
* $Revision: 1.10 $
*
*****************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -147,7 +147,8 @@ AcpiNsDumpOneDevice (
void *Context,
void **ReturnValue)
{
ACPI_DEVICE_INFO Info;
ACPI_BUFFER Buffer;
ACPI_DEVICE_INFO *Info;
ACPI_STATUS Status;
UINT32 i;
@ -157,18 +158,21 @@ AcpiNsDumpOneDevice (
Status = AcpiNsDumpOneObject (ObjHandle, Level, Context, ReturnValue);
Status = AcpiGetObjectInfo (ObjHandle, &Info);
Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER;
Status = AcpiGetObjectInfo (ObjHandle, &Buffer);
if (ACPI_SUCCESS (Status))
{
Info = Buffer.Pointer;
for (i = 0; i < Level; i++)
{
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " "));
}
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " HID: %s, ADR: %8.8X%8.8X, Status: %X\n",
Info.HardwareId,
ACPI_HIDWORD (Info.Address), ACPI_LODWORD (Info.Address),
Info.CurrentStatus));
Info->HardwareId.Value,
ACPI_FORMAT_UINT64 (Info->Address),
Info->CurrentStatus));
ACPI_MEM_FREE (Info);
}
return (Status);

View File

@ -2,7 +2,7 @@
*
* Module Name: nseval - Object evaluation interfaces -- includes control
* method lookup and execution.
* $Revision: 1.121 $
* $Revision: 1.122 $
*
******************************************************************************/
@ -10,7 +10,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: nsinit - namespace initialization
* $Revision: 1.57 $
* $Revision: 1.58 $
*
*****************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: nsload - namespace loading/expanding/contracting procedures
* $Revision: 1.63 $
* $Revision: 1.67 $
*
*****************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -153,7 +153,7 @@ AcpiNsLoadTable (
/* Check if table contains valid AML (must be DSDT, PSDT, SSDT, etc.) */
if (!(AcpiGbl_AcpiTableData[TableDesc->Type].Flags & ACPI_TABLE_EXECUTABLE))
if (!(AcpiGbl_TableData[TableDesc->Type].Flags & ACPI_TABLE_EXECUTABLE))
{
/* Just ignore this table */
@ -170,10 +170,12 @@ AcpiNsLoadTable (
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "AML block at %p\n", TableDesc->AmlStart));
/* Ignore table if there is no AML contained within */
if (!TableDesc->AmlLength)
{
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Zero-length AML block\n"));
return_ACPI_STATUS (AE_BAD_PARAMETER);
ACPI_REPORT_WARNING (("Zero-length AML block in table [%4.4s]\n", TableDesc->Pointer->Signature));
return_ACPI_STATUS (AE_OK);
}
/*
@ -261,7 +263,7 @@ AcpiNsLoadTableByType (
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Loading DSDT\n"));
TableDesc = &AcpiGbl_AcpiTables[ACPI_TABLE_DSDT];
TableDesc = AcpiGbl_TableLists[ACPI_TABLE_DSDT].Next;
/* If table already loaded into namespace, just return */
@ -270,8 +272,6 @@ AcpiNsLoadTableByType (
goto UnlockAndExit;
}
TableDesc->TableId = TABLE_ID_DSDT;
/* Now load the single DSDT */
Status = AcpiNsLoadTable (TableDesc, AcpiGbl_RootNode);
@ -286,13 +286,13 @@ AcpiNsLoadTableByType (
case ACPI_TABLE_SSDT:
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Loading %d SSDTs\n",
AcpiGbl_AcpiTables[ACPI_TABLE_SSDT].Count));
AcpiGbl_TableLists[ACPI_TABLE_SSDT].Count));
/*
* Traverse list of SSDT tables
*/
TableDesc = &AcpiGbl_AcpiTables[ACPI_TABLE_SSDT];
for (i = 0; i < AcpiGbl_AcpiTables[ACPI_TABLE_SSDT].Count; i++)
TableDesc = AcpiGbl_TableLists[ACPI_TABLE_SSDT].Next;
for (i = 0; i < AcpiGbl_TableLists[ACPI_TABLE_SSDT].Count; i++)
{
/*
* Only attempt to load table if it is not
@ -317,14 +317,14 @@ AcpiNsLoadTableByType (
case ACPI_TABLE_PSDT:
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Loading %d PSDTs\n",
AcpiGbl_AcpiTables[ACPI_TABLE_PSDT].Count));
AcpiGbl_TableLists[ACPI_TABLE_PSDT].Count));
/*
* Traverse list of PSDT tables
*/
TableDesc = &AcpiGbl_AcpiTables[ACPI_TABLE_PSDT];
TableDesc = AcpiGbl_TableLists[ACPI_TABLE_PSDT].Next;
for (i = 0; i < AcpiGbl_AcpiTables[ACPI_TABLE_PSDT].Count; i++)
for (i = 0; i < AcpiGbl_TableLists[ACPI_TABLE_PSDT].Count; i++)
{
/* Only attempt to load table if it is not already loaded! */

View File

@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: nsnames - Name manipulation and search
* $Revision: 1.82 $
* $Revision: 1.84 $
*
******************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -174,7 +174,7 @@ AcpiNsBuildExternalPath (
/* Put the name into the buffer */
ACPI_MOVE_UNALIGNED32_TO_32 ((NameBuffer + Index), &ParentNode->Name);
ACPI_MOVE_32_TO_32 ((NameBuffer + Index), &ParentNode->Name);
ParentNode = AcpiNsGetParentNode (ParentNode);
/* Prefix name with the path separator */

View File

@ -2,7 +2,7 @@
*
* Module Name: nsobject - Utilities for objects attached to namespace
* table entries
* $Revision: 1.88 $
* $Revision: 1.90 $
*
******************************************************************************/
@ -10,7 +10,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -182,7 +182,8 @@ AcpiNsAttachObject (
{
/* Not a name handle */
ACPI_REPORT_ERROR (("NsAttachObject: Invalid handle\n"));
ACPI_REPORT_ERROR (("NsAttachObject: Invalid handle %p [%s]\n",
Node, AcpiUtGetDescriptorName (Node)));
return_ACPI_STATUS (AE_BAD_PARAMETER);
}

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: nsparse - namespace interface to AML parser
* $Revision: 1.3 $
* $Revision: 1.5 $
*
*****************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -160,10 +160,9 @@ AcpiNsOneCompleteParse (
return_ACPI_STATUS (AE_NO_MEMORY);
}
/* Create and initialize a new walk state */
WalkState = AcpiDsCreateWalkState (TABLE_ID_DSDT,
WalkState = AcpiDsCreateWalkState (TableDesc->TableId,
NULL, NULL, NULL);
if (!WalkState)
{

View File

@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: nssearch - Namespace search
* $Revision: 1.99 $
* $Revision: 1.100 $
*
******************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License

View File

@ -2,7 +2,7 @@
*
* Module Name: nsutils - Utilities for accessing ACPI namespace, accessing
* parents and siblings and Scope manipulation
* $Revision: 1.131 $
* $Revision: 1.132 $
*
*****************************************************************************/
@ -10,7 +10,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: nswalk - Functions for walking the ACPI namespace
* $Revision: 1.34 $
* $Revision: 1.36 $
*
*****************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -245,6 +245,7 @@ AcpiNsWalkNamespace (
void **ReturnValue)
{
ACPI_STATUS Status;
ACPI_STATUS MutexStatus;
ACPI_NAMESPACE_NODE *ChildNode;
ACPI_NAMESPACE_NODE *ParentNode;
ACPI_OBJECT_TYPE ChildType;
@ -298,10 +299,10 @@ AcpiNsWalkNamespace (
*/
if (UnlockBeforeCallback)
{
Status = AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE);
if (ACPI_FAILURE (Status))
MutexStatus = AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE);
if (ACPI_FAILURE (MutexStatus))
{
return_ACPI_STATUS (Status);
return_ACPI_STATUS (MutexStatus);
}
}
@ -310,10 +311,10 @@ AcpiNsWalkNamespace (
if (UnlockBeforeCallback)
{
Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE);
if (ACPI_FAILURE (Status))
MutexStatus = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE);
if (ACPI_FAILURE (MutexStatus))
{
return_ACPI_STATUS (Status);
return_ACPI_STATUS (MutexStatus);
}
}

View File

@ -2,7 +2,7 @@
*
* Module Name: nsxfeval - Public interfaces to the ACPI subsystem
* ACPI Object evaluation interfaces
* $Revision: 1.7 $
* $Revision: 1.11 $
*
******************************************************************************/
@ -10,7 +10,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -542,16 +542,15 @@ AcpiNsGetDeviceCallback (
void *Context,
void **ReturnValue)
{
ACPI_GET_DEVICES_INFO *Info = Context;
ACPI_STATUS Status;
ACPI_NAMESPACE_NODE *Node;
UINT32 Flags;
ACPI_DEVICE_ID Hid;
ACPI_DEVICE_ID Cid;
ACPI_GET_DEVICES_INFO *Info;
ACPI_COMPATIBLE_ID_LIST *Cid;
ACPI_NATIVE_UINT i;
Info = Context;
Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE);
if (ACPI_FAILURE (Status))
{
@ -570,9 +569,8 @@ AcpiNsGetDeviceCallback (
return (AE_BAD_PARAMETER);
}
/*
* Run _STA to determine if device is present
*/
/* Run _STA to determine if device is present */
Status = AcpiUtExecute_STA (Node, &Flags);
if (ACPI_FAILURE (Status))
{
@ -582,12 +580,12 @@ AcpiNsGetDeviceCallback (
if (!(Flags & 0x01))
{
/* Don't return at the device or children of the device if not there */
return (AE_CTRL_DEPTH);
}
/*
* Filter based on device HID & CID
*/
/* Filter based on device HID & CID */
if (Info->Hid != NULL)
{
Status = AcpiUtExecute_HID (Node, &Hid);
@ -600,8 +598,10 @@ AcpiNsGetDeviceCallback (
return (AE_CTRL_DEPTH);
}
if (ACPI_STRNCMP (Hid.Buffer, Info->Hid, sizeof (Hid.Buffer)) != 0)
if (ACPI_STRNCMP (Hid.Value, Info->Hid, sizeof (Hid.Value)) != 0)
{
/* Get the list of Compatible IDs */
Status = AcpiUtExecute_CID (Node, &Cid);
if (Status == AE_NOT_FOUND)
{
@ -612,12 +612,18 @@ AcpiNsGetDeviceCallback (
return (AE_CTRL_DEPTH);
}
/* TBD: Handle CID packages */
/* Walk the CID list */
if (ACPI_STRNCMP (Cid.Buffer, Info->Hid, sizeof (Cid.Buffer)) != 0)
for (i = 0; i < Cid->Count; i++)
{
return (AE_OK);
if (ACPI_STRNCMP (Cid->Id[i].Value, Info->Hid,
sizeof (ACPI_COMPATIBLE_ID)) != 0)
{
ACPI_MEM_FREE (Cid);
return (AE_OK);
}
}
ACPI_MEM_FREE (Cid);
}
}
@ -641,8 +647,8 @@ AcpiNsGetDeviceCallback (
*
* DESCRIPTION: Performs a modified depth-first walk of the namespace tree,
* starting (and ending) at the object specified by StartHandle.
* The UserFunction is called whenever an object that matches
* the type parameter is found. If the user function returns
* The UserFunction is called whenever an object of type
* Device is found. If the user function returns
* a non-zero value, the search is terminated immediately and this
* value is returned to the caller.
*

View File

@ -2,7 +2,7 @@
*
* Module Name: nsxfname - Public interfaces to the ACPI subsystem
* ACPI Namespace oriented interfaces
* $Revision: 1.98 $
* $Revision: 1.99 $
*
*****************************************************************************/
@ -10,7 +10,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License

View File

@ -2,7 +2,7 @@
*
* Module Name: nsxfobj - Public interfaces to the ACPI subsystem
* ACPI Object oriented interfaces
* $Revision: 1.115 $
* $Revision: 1.117 $
*
******************************************************************************/
@ -10,7 +10,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -242,7 +242,7 @@ AcpiGetParent (
*RetHandle =
AcpiNsConvertEntryToHandle (AcpiNsGetParentNode (Node));
/* Return exeption if parent is null */
/* Return exception if parent is null */
if (!AcpiNsGetParentNode (Node))
{

View File

@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: rsaddr - Address resource descriptors (16/32/64)
* $Revision: 1.28 $
* $Revision: 1.34 $
*
******************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -166,7 +166,14 @@ AcpiRsAddress16Resource (
* Point past the Descriptor to get the number of bytes consumed
*/
Buffer += 1;
ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer);
ACPI_MOVE_16_TO_16 (&Temp16, Buffer);
/* Validate minimum descriptor length */
if (Temp16 < 13)
{
return_ACPI_STATUS (AE_AML_BAD_RESOURCE_LENGTH);
}
*BytesConsumed = Temp16 + 3;
OutputStruct->Id = ACPI_RSTYPE_ADDRESS16;
@ -227,6 +234,8 @@ AcpiRsAddress16Resource (
{
OutputStruct->Data.Address16.Attribute.Io.RangeAttribute =
(UINT16) (Temp8 & 0x03);
OutputStruct->Data.Address16.Attribute.Io.TranslationAttribute =
(UINT16) ((Temp8 >> 4) & 0x03);
}
else
{
@ -239,36 +248,31 @@ AcpiRsAddress16Resource (
* Get Granularity (Bytes 6-7)
*/
Buffer += 1;
ACPI_MOVE_UNALIGNED16_TO_16 (&OutputStruct->Data.Address16.Granularity,
Buffer);
ACPI_MOVE_16_TO_32 (&OutputStruct->Data.Address16.Granularity, Buffer);
/*
* Get MinAddressRange (Bytes 8-9)
*/
Buffer += 2;
ACPI_MOVE_UNALIGNED16_TO_16 (&OutputStruct->Data.Address16.MinAddressRange,
Buffer);
ACPI_MOVE_16_TO_32 (&OutputStruct->Data.Address16.MinAddressRange, Buffer);
/*
* Get MaxAddressRange (Bytes 10-11)
*/
Buffer += 2;
ACPI_MOVE_UNALIGNED16_TO_16 (&OutputStruct->Data.Address16.MaxAddressRange,
Buffer);
ACPI_MOVE_16_TO_32 (&OutputStruct->Data.Address16.MaxAddressRange, Buffer);
/*
* Get AddressTranslationOffset (Bytes 12-13)
*/
Buffer += 2;
ACPI_MOVE_UNALIGNED16_TO_16 (&OutputStruct->Data.Address16.AddressTranslationOffset,
Buffer);
ACPI_MOVE_16_TO_32 (&OutputStruct->Data.Address16.AddressTranslationOffset, Buffer);
/*
* Get AddressLength (Bytes 14-15)
*/
Buffer += 2;
ACPI_MOVE_UNALIGNED16_TO_16 (&OutputStruct->Data.Address16.AddressLength,
Buffer);
ACPI_MOVE_16_TO_32 (&OutputStruct->Data.Address16.AddressLength, Buffer);
/*
* Resource Source Index (if present)
@ -281,8 +285,11 @@ AcpiRsAddress16Resource (
* pointer to where the null terminated string goes:
* Each Interrupt takes 32-bits + the 5 bytes of the
* stream that are default.
*
* Note: Some resource descriptors will have an additional null, so
* we add 1 to the length.
*/
if (*BytesConsumed > 16)
if (*BytesConsumed > (16 + 1))
{
/* Dereference the Index */
@ -431,6 +438,9 @@ AcpiRsAddress16Stream (
Temp8 = (UINT8)
(LinkedList->Data.Address16.Attribute.Io.RangeAttribute &
0x03);
Temp8 |=
(LinkedList->Data.Address16.Attribute.Io.TranslationAttribute &
0x03) << 4;
}
*Buffer = Temp8;
@ -439,36 +449,31 @@ AcpiRsAddress16Stream (
/*
* Set the address space granularity
*/
ACPI_MOVE_UNALIGNED16_TO_16 (Buffer,
&LinkedList->Data.Address16.Granularity);
ACPI_MOVE_32_TO_16 (Buffer, &LinkedList->Data.Address16.Granularity);
Buffer += 2;
/*
* Set the address range minimum
*/
ACPI_MOVE_UNALIGNED16_TO_16 (Buffer,
&LinkedList->Data.Address16.MinAddressRange);
ACPI_MOVE_32_TO_16 (Buffer, &LinkedList->Data.Address16.MinAddressRange);
Buffer += 2;
/*
* Set the address range maximum
*/
ACPI_MOVE_UNALIGNED16_TO_16 (Buffer,
&LinkedList->Data.Address16.MaxAddressRange);
ACPI_MOVE_32_TO_16 (Buffer, &LinkedList->Data.Address16.MaxAddressRange);
Buffer += 2;
/*
* Set the address translation offset
*/
ACPI_MOVE_UNALIGNED16_TO_16 (Buffer,
&LinkedList->Data.Address16.AddressTranslationOffset);
ACPI_MOVE_32_TO_16 (Buffer, &LinkedList->Data.Address16.AddressTranslationOffset);
Buffer += 2;
/*
* Set the address length
*/
ACPI_MOVE_UNALIGNED16_TO_16 (Buffer,
&LinkedList->Data.Address16.AddressLength);
ACPI_MOVE_32_TO_16 (Buffer, &LinkedList->Data.Address16.AddressLength);
Buffer += 2;
/*
@ -491,9 +496,9 @@ AcpiRsAddress16Stream (
/*
* Buffer needs to be set to the length of the sting + one for the
* terminating null
* terminating null
*/
Buffer += (ACPI_STRLEN (LinkedList->Data.Address16.ResourceSource.StringPtr) + 1);
Buffer += (ACPI_SIZE)(ACPI_STRLEN (LinkedList->Data.Address16.ResourceSource.StringPtr) + 1);
}
/*
@ -507,7 +512,7 @@ AcpiRsAddress16Stream (
* minus the header size (3 bytes)
*/
ActualBytes -= 3;
ACPI_MOVE_UNALIGNED16_TO_16 (LengthField, &ActualBytes);
ACPI_MOVE_SIZE_TO_16 (LengthField, &ActualBytes);
return_ACPI_STATUS (AE_OK);
}
@ -559,9 +564,16 @@ AcpiRsAddress32Resource (
* Point past the Descriptor to get the number of bytes consumed
*/
Buffer += 1;
ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer);
*BytesConsumed = Temp16 + 3;
ACPI_MOVE_16_TO_16 (&Temp16, Buffer);
/* Validate minimum descriptor length */
if (Temp16 < 23)
{
return_ACPI_STATUS (AE_AML_BAD_RESOURCE_LENGTH);
}
*BytesConsumed = Temp16 + 3;
OutputStruct->Id = ACPI_RSTYPE_ADDRESS32;
/*
@ -624,6 +636,8 @@ AcpiRsAddress32Resource (
{
OutputStruct->Data.Address32.Attribute.Io.RangeAttribute =
(UINT16) (Temp8 & 0x03);
OutputStruct->Data.Address32.Attribute.Io.TranslationAttribute =
(UINT16) ((Temp8 >> 4) & 0x03);
}
else
{
@ -636,36 +650,31 @@ AcpiRsAddress32Resource (
* Get Granularity (Bytes 6-9)
*/
Buffer += 1;
ACPI_MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.Address32.Granularity,
Buffer);
ACPI_MOVE_32_TO_32 (&OutputStruct->Data.Address32.Granularity, Buffer);
/*
* Get MinAddressRange (Bytes 10-13)
*/
Buffer += 4;
ACPI_MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.Address32.MinAddressRange,
Buffer);
ACPI_MOVE_32_TO_32 (&OutputStruct->Data.Address32.MinAddressRange, Buffer);
/*
* Get MaxAddressRange (Bytes 14-17)
*/
Buffer += 4;
ACPI_MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.Address32.MaxAddressRange,
Buffer);
ACPI_MOVE_32_TO_32 (&OutputStruct->Data.Address32.MaxAddressRange, Buffer);
/*
* Get AddressTranslationOffset (Bytes 18-21)
*/
Buffer += 4;
ACPI_MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.Address32.AddressTranslationOffset,
Buffer);
ACPI_MOVE_32_TO_32 (&OutputStruct->Data.Address32.AddressTranslationOffset, Buffer);
/*
* Get AddressLength (Bytes 22-25)
*/
Buffer += 4;
ACPI_MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.Address32.AddressLength,
Buffer);
ACPI_MOVE_32_TO_32 (&OutputStruct->Data.Address32.AddressLength, Buffer);
/*
* Resource Source Index (if present)
@ -676,8 +685,11 @@ AcpiRsAddress32Resource (
* This will leave us pointing to the Resource Source Index
* If it is present, then save it off and calculate the
* pointer to where the null terminated string goes:
*
* Note: Some resource descriptors will have an additional null, so
* we add 1 to the length.
*/
if (*BytesConsumed > 26)
if (*BytesConsumed > (26 + 1))
{
/* Dereference the Index */
@ -716,8 +728,8 @@ AcpiRsAddress32Resource (
/*
* In order for the StructSize to fall on a 32-bit boundary,
* calculate the length of the string and expand the
* StructSize to the next 32-bit boundary.
* calculate the length of the string and expand the
* StructSize to the next 32-bit boundary.
*/
Temp8 = (UINT8) (Index + 1);
StructSize += ACPI_ROUND_UP_TO_32BITS (Temp8);
@ -826,6 +838,9 @@ AcpiRsAddress32Stream (
Temp8 = (UINT8)
(LinkedList->Data.Address32.Attribute.Io.RangeAttribute &
0x03);
Temp8 |=
(LinkedList->Data.Address32.Attribute.Io.TranslationAttribute &
0x03) << 4;
}
*Buffer = Temp8;
@ -834,36 +849,31 @@ AcpiRsAddress32Stream (
/*
* Set the address space granularity
*/
ACPI_MOVE_UNALIGNED32_TO_32 (Buffer,
&LinkedList->Data.Address32.Granularity);
ACPI_MOVE_32_TO_32 (Buffer, &LinkedList->Data.Address32.Granularity);
Buffer += 4;
/*
* Set the address range minimum
*/
ACPI_MOVE_UNALIGNED32_TO_32 (Buffer,
&LinkedList->Data.Address32.MinAddressRange);
ACPI_MOVE_32_TO_32 (Buffer, &LinkedList->Data.Address32.MinAddressRange);
Buffer += 4;
/*
* Set the address range maximum
*/
ACPI_MOVE_UNALIGNED32_TO_32 (Buffer,
&LinkedList->Data.Address32.MaxAddressRange);
ACPI_MOVE_32_TO_32 (Buffer, &LinkedList->Data.Address32.MaxAddressRange);
Buffer += 4;
/*
* Set the address translation offset
*/
ACPI_MOVE_UNALIGNED32_TO_32 (Buffer,
&LinkedList->Data.Address32.AddressTranslationOffset);
ACPI_MOVE_32_TO_32 (Buffer, &LinkedList->Data.Address32.AddressTranslationOffset);
Buffer += 4;
/*
* Set the address length
*/
ACPI_MOVE_UNALIGNED32_TO_32 (Buffer,
&LinkedList->Data.Address32.AddressLength);
ACPI_MOVE_32_TO_32 (Buffer, &LinkedList->Data.Address32.AddressLength);
Buffer += 4;
/*
@ -888,7 +898,7 @@ AcpiRsAddress32Stream (
* Buffer needs to be set to the length of the sting + one for the
* terminating null
*/
Buffer += (ACPI_STRLEN (LinkedList->Data.Address32.ResourceSource.StringPtr) + 1);
Buffer += (ACPI_SIZE)(ACPI_STRLEN (LinkedList->Data.Address32.ResourceSource.StringPtr) + 1);
}
/*
@ -952,7 +962,14 @@ AcpiRsAddress64Resource (
* Point past the Descriptor to get the number of bytes consumed
*/
Buffer += 1;
ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer);
ACPI_MOVE_16_TO_16 (&Temp16, Buffer);
/* Validate minimum descriptor length */
if (Temp16 < 43)
{
return_ACPI_STATUS (AE_AML_BAD_RESOURCE_LENGTH);
}
*BytesConsumed = Temp16 + 3;
OutputStruct->Id = ACPI_RSTYPE_ADDRESS64;
@ -1018,6 +1035,8 @@ AcpiRsAddress64Resource (
{
OutputStruct->Data.Address64.Attribute.Io.RangeAttribute =
(UINT16) (Temp8 & 0x03);
OutputStruct->Data.Address64.Attribute.Io.TranslationAttribute =
(UINT16) ((Temp8 >> 4) & 0x03);
}
else
{
@ -1030,36 +1049,31 @@ AcpiRsAddress64Resource (
* Get Granularity (Bytes 6-13)
*/
Buffer += 1;
ACPI_MOVE_UNALIGNED64_TO_64 (&OutputStruct->Data.Address64.Granularity,
Buffer);
ACPI_MOVE_64_TO_64 (&OutputStruct->Data.Address64.Granularity, Buffer);
/*
* Get MinAddressRange (Bytes 14-21)
*/
Buffer += 8;
ACPI_MOVE_UNALIGNED64_TO_64 (&OutputStruct->Data.Address64.MinAddressRange,
Buffer);
ACPI_MOVE_64_TO_64 (&OutputStruct->Data.Address64.MinAddressRange, Buffer);
/*
* Get MaxAddressRange (Bytes 22-29)
*/
Buffer += 8;
ACPI_MOVE_UNALIGNED64_TO_64 (&OutputStruct->Data.Address64.MaxAddressRange,
Buffer);
ACPI_MOVE_64_TO_64 (&OutputStruct->Data.Address64.MaxAddressRange, Buffer);
/*
* Get AddressTranslationOffset (Bytes 30-37)
*/
Buffer += 8;
ACPI_MOVE_UNALIGNED64_TO_64 (&OutputStruct->Data.Address64.AddressTranslationOffset,
Buffer);
ACPI_MOVE_64_TO_64 (&OutputStruct->Data.Address64.AddressTranslationOffset, Buffer);
/*
* Get AddressLength (Bytes 38-45)
*/
Buffer += 8;
ACPI_MOVE_UNALIGNED64_TO_64 (&OutputStruct->Data.Address64.AddressLength,
Buffer);
ACPI_MOVE_64_TO_64 (&OutputStruct->Data.Address64.AddressLength, Buffer);
/*
* Resource Source Index (if present)
@ -1072,8 +1086,11 @@ AcpiRsAddress64Resource (
* pointer to where the null terminated string goes:
* Each Interrupt takes 32-bits + the 5 bytes of the
* stream that are default.
*
* Note: Some resource descriptors will have an additional null, so
* we add 1 to the length.
*/
if (*BytesConsumed > 46)
if (*BytesConsumed > (46 + 1))
{
/* Dereference the Index */
@ -1108,7 +1125,6 @@ AcpiRsAddress64Resource (
* Add the terminating null
*/
*TempPtr = 0x00;
OutputStruct->Data.Address64.ResourceSource.StringLength = Index + 1;
/*
@ -1181,7 +1197,6 @@ AcpiRsAddress64Stream (
/*
* Set a pointer to the Length field - to be filled in later
*/
LengthField = ACPI_CAST_PTR (UINT16, Buffer);
Buffer += 2;
@ -1224,6 +1239,9 @@ AcpiRsAddress64Stream (
Temp8 = (UINT8)
(LinkedList->Data.Address64.Attribute.Io.RangeAttribute &
0x03);
Temp8 |=
(LinkedList->Data.Address64.Attribute.Io.RangeAttribute &
0x03) << 4;
}
*Buffer = Temp8;
@ -1232,36 +1250,31 @@ AcpiRsAddress64Stream (
/*
* Set the address space granularity
*/
ACPI_MOVE_UNALIGNED64_TO_64 (Buffer,
&LinkedList->Data.Address64.Granularity);
ACPI_MOVE_64_TO_64 (Buffer, &LinkedList->Data.Address64.Granularity);
Buffer += 8;
/*
* Set the address range minimum
*/
ACPI_MOVE_UNALIGNED64_TO_64 (Buffer,
&LinkedList->Data.Address64.MinAddressRange);
ACPI_MOVE_64_TO_64 (Buffer, &LinkedList->Data.Address64.MinAddressRange);
Buffer += 8;
/*
* Set the address range maximum
*/
ACPI_MOVE_UNALIGNED64_TO_64 (Buffer,
&LinkedList->Data.Address64.MaxAddressRange);
ACPI_MOVE_64_TO_64 (Buffer, &LinkedList->Data.Address64.MaxAddressRange);
Buffer += 8;
/*
* Set the address translation offset
*/
ACPI_MOVE_UNALIGNED64_TO_64 (Buffer,
&LinkedList->Data.Address64.AddressTranslationOffset);
ACPI_MOVE_64_TO_64 (Buffer, &LinkedList->Data.Address64.AddressTranslationOffset);
Buffer += 8;
/*
* Set the address length
*/
ACPI_MOVE_UNALIGNED64_TO_64 (Buffer,
&LinkedList->Data.Address64.AddressLength);
ACPI_MOVE_64_TO_64 (Buffer, &LinkedList->Data.Address64.AddressLength);
Buffer += 8;
/*
@ -1283,9 +1296,9 @@ AcpiRsAddress64Stream (
/*
* Buffer needs to be set to the length of the sting + one for the
* terminating null
* terminating null
*/
Buffer += (ACPI_STRLEN (LinkedList->Data.Address64.ResourceSource.StringPtr) + 1);
Buffer += (ACPI_SIZE)(ACPI_STRLEN (LinkedList->Data.Address64.ResourceSource.StringPtr) + 1);
}
/*

View File

@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: rscalc - Calculate stream and list lengths
* $Revision: 1.46 $
* $Revision: 1.50 $
*
******************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -433,7 +433,7 @@ AcpiRsGetListLength (
Buffer = ByteStreamBuffer;
++Buffer;
ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer);
ACPI_MOVE_16_TO_16 (&Temp16, Buffer);
BytesConsumed = Temp16 + 3;
/*
@ -474,7 +474,7 @@ AcpiRsGetListLength (
Buffer = ByteStreamBuffer;
++Buffer;
ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer);
ACPI_MOVE_16_TO_16 (&Temp16, Buffer);
BytesConsumed = Temp16 + 3;
@ -514,7 +514,7 @@ AcpiRsGetListLength (
Buffer = ByteStreamBuffer;
++Buffer;
ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer);
ACPI_MOVE_16_TO_16 (&Temp16, Buffer);
BytesConsumed = Temp16 + 3;
@ -554,7 +554,7 @@ AcpiRsGetListLength (
Buffer = ByteStreamBuffer;
++Buffer;
ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer);
ACPI_MOVE_16_TO_16 (&Temp16, Buffer);
BytesConsumed = Temp16 + 3;
@ -594,7 +594,7 @@ AcpiRsGetListLength (
Buffer = ByteStreamBuffer;
++Buffer;
ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer);
ACPI_MOVE_16_TO_16 (&Temp16, Buffer);
BytesConsumed = Temp16 + 3;
@ -667,7 +667,7 @@ AcpiRsGetListLength (
/*
* Look at the number of bits set
*/
ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer);
ACPI_MOVE_16_TO_16 (&Temp16, Buffer);
for (Index = 0; Index < 16; Index++)
{
@ -796,7 +796,7 @@ AcpiRsGetListLength (
default:
/*
* If we get here, everything is out of sync,
* so exit with an error
* exit with an error
*/
return_ACPI_STATUS (AE_AML_INVALID_RESOURCE_TYPE);
}
@ -804,7 +804,7 @@ AcpiRsGetListLength (
/*
* Update the return value and counter
*/
BufferSize += ACPI_ALIGN_RESOURCE_SIZE(StructureSize);
BufferSize += (UINT32) ACPI_ALIGN_RESOURCE_SIZE (StructureSize);
BytesParsed += BytesConsumed;
/*
@ -918,7 +918,7 @@ AcpiRsGetPciRoutingTableLength (
* The length String.Length field does not include the
* terminating NULL, add 1
*/
TempSizeNeeded += ((*SubObjectList)->String.Length + 1);
TempSizeNeeded += ((ACPI_SIZE) (*SubObjectList)->String.Length + 1);
}
else
{

View File

@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: rscreate - Create resource lists/tables
* $Revision: 1.64 $
* $Revision: 1.66 $
*
******************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -420,7 +420,7 @@ AcpiRsCreatePciRoutingTable (
/* Now align the current length */
UserPrt->Length = ACPI_ROUND_UP_TO_64BITS (UserPrt->Length);
UserPrt->Length = (UINT32) ACPI_ROUND_UP_TO_64BITS (UserPrt->Length);
/*
* 4) Fourth subobject: Dereference the PRT.SourceIndex

View File

@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: rsdump - Functions to display the resource structures.
* $Revision: 1.35 $
* $Revision: 1.38 $
*
******************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -655,6 +655,11 @@ AcpiRsDumpAddress16 (
"Invalid range attribute\n");
break;
}
AcpiOsPrintf (" Type Specific: %s Translation\n",
ACPI_SPARSE_TRANSLATION ==
Address16Data->Attribute.Io.TranslationAttribute ?
"Sparse" : "Dense");
break;
case ACPI_BUS_NUMBER_RANGE:
@ -780,27 +785,32 @@ AcpiRsDumpAddress32 (
AcpiOsPrintf (" Resource Type: Io Range\n");
switch (Address32Data->Attribute.Io.RangeAttribute)
{
case ACPI_NON_ISA_ONLY_RANGES:
AcpiOsPrintf (" Type Specific: "
"Non-ISA Io Addresses\n");
break;
{
case ACPI_NON_ISA_ONLY_RANGES:
AcpiOsPrintf (" Type Specific: "
"Non-ISA Io Addresses\n");
break;
case ACPI_ISA_ONLY_RANGES:
AcpiOsPrintf (" Type Specific: "
"ISA Io Addresses\n");
break;
case ACPI_ISA_ONLY_RANGES:
AcpiOsPrintf (" Type Specific: "
"ISA Io Addresses\n");
break;
case ACPI_ENTIRE_RANGE:
AcpiOsPrintf (" Type Specific: "
"ISA and non-ISA Io Addresses\n");
break;
case ACPI_ENTIRE_RANGE:
AcpiOsPrintf (" Type Specific: "
"ISA and non-ISA Io Addresses\n");
break;
default:
AcpiOsPrintf (" Type Specific: "
"Invalid Range attribute");
break;
}
default:
AcpiOsPrintf (" Type Specific: "
"Invalid Range attribute");
break;
}
AcpiOsPrintf (" Type Specific: %s Translation\n",
ACPI_SPARSE_TRANSLATION ==
Address32Data->Attribute.Io.TranslationAttribute ?
"Sparse" : "Dense");
break;
case ACPI_BUS_NUMBER_RANGE:
@ -926,27 +936,32 @@ AcpiRsDumpAddress64 (
AcpiOsPrintf (" Resource Type: Io Range\n");
switch (Address64Data->Attribute.Io.RangeAttribute)
{
case ACPI_NON_ISA_ONLY_RANGES:
AcpiOsPrintf (" Type Specific: "
"Non-ISA Io Addresses\n");
break;
{
case ACPI_NON_ISA_ONLY_RANGES:
AcpiOsPrintf (" Type Specific: "
"Non-ISA Io Addresses\n");
break;
case ACPI_ISA_ONLY_RANGES:
AcpiOsPrintf (" Type Specific: "
"ISA Io Addresses\n");
break;
case ACPI_ISA_ONLY_RANGES:
AcpiOsPrintf (" Type Specific: "
"ISA Io Addresses\n");
break;
case ACPI_ENTIRE_RANGE:
AcpiOsPrintf (" Type Specific: "
"ISA and non-ISA Io Addresses\n");
break;
case ACPI_ENTIRE_RANGE:
AcpiOsPrintf (" Type Specific: "
"ISA and non-ISA Io Addresses\n");
break;
default:
AcpiOsPrintf (" Type Specific: "
"Invalid Range attribute");
break;
}
default:
AcpiOsPrintf (" Type Specific: "
"Invalid Range attribute");
break;
}
AcpiOsPrintf (" Type Specific: %s Translation\n",
ACPI_SPARSE_TRANSLATION ==
Address64Data->Attribute.Io.TranslationAttribute ?
"Sparse" : "Dense");
break;
case ACPI_BUS_NUMBER_RANGE:
@ -977,24 +992,19 @@ AcpiRsDumpAddress64 (
"" : "not ");
AcpiOsPrintf (" Granularity: %8.8X%8.8X\n",
ACPI_HIDWORD (Address64Data->Granularity),
ACPI_LODWORD (Address64Data->Granularity));
ACPI_FORMAT_UINT64 (Address64Data->Granularity));
AcpiOsPrintf (" Address range min: %8.8X%8.8X\n",
ACPI_HIDWORD (Address64Data->MinAddressRange),
ACPI_HIDWORD (Address64Data->MinAddressRange));
ACPI_FORMAT_UINT64 (Address64Data->MinAddressRange));
AcpiOsPrintf (" Address range max: %8.8X%8.8X\n",
ACPI_HIDWORD (Address64Data->MaxAddressRange),
ACPI_HIDWORD (Address64Data->MaxAddressRange));
ACPI_FORMAT_UINT64 (Address64Data->MaxAddressRange));
AcpiOsPrintf (" Address translation offset: %8.8X%8.8X\n",
ACPI_HIDWORD (Address64Data->AddressTranslationOffset),
ACPI_HIDWORD (Address64Data->AddressTranslationOffset));
ACPI_FORMAT_UINT64 (Address64Data->AddressTranslationOffset));
AcpiOsPrintf (" Address Length: %8.8X%8.8X\n",
ACPI_HIDWORD (Address64Data->AddressLength),
ACPI_HIDWORD (Address64Data->AddressLength));
ACPI_FORMAT_UINT64 (Address64Data->AddressLength));
if(0xFF != Address64Data->ResourceSource.Index)
{
@ -1212,8 +1222,7 @@ AcpiRsDumpIrqList (
AcpiOsPrintf ("PCI IRQ Routing Table structure %X.\n", Count++);
AcpiOsPrintf (" Address: %8.8X%8.8X\n",
ACPI_HIDWORD (PrtElement->Address),
ACPI_LODWORD (PrtElement->Address));
ACPI_FORMAT_UINT64 (PrtElement->Address));
AcpiOsPrintf (" Pin: %X\n", PrtElement->Pin);

View File

@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: rsio - IO and DMA resource descriptors
* $Revision: 1.23 $
* $Revision: 1.25 $
*
******************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -180,7 +180,7 @@ AcpiRsIoResource (
* Check MinBase Address
*/
Buffer += 1;
ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer);
ACPI_MOVE_16_TO_16 (&Temp16, Buffer);
OutputStruct->Data.Io.MinBaseAddress = Temp16;
@ -188,7 +188,7 @@ AcpiRsIoResource (
* Check MaxBase Address
*/
Buffer += 2;
ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer);
ACPI_MOVE_16_TO_16 (&Temp16, Buffer);
OutputStruct->Data.Io.MaxBaseAddress = Temp16;
@ -270,7 +270,7 @@ AcpiRsFixedIoResource (
* Check Range Base Address
*/
Buffer += 1;
ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer);
ACPI_MOVE_16_TO_16 (&Temp16, Buffer);
OutputStruct->Data.FixedIo.BaseAddress = Temp16;
@ -344,7 +344,7 @@ AcpiRsIoStream (
*/
Temp16 = (UINT16) LinkedList->Data.Io.MinBaseAddress;
ACPI_MOVE_UNALIGNED16_TO_16 (Buffer, &Temp16);
ACPI_MOVE_16_TO_16 (Buffer, &Temp16);
Buffer += 2;
/*
@ -352,7 +352,7 @@ AcpiRsIoStream (
*/
Temp16 = (UINT16) LinkedList->Data.Io.MaxBaseAddress;
ACPI_MOVE_UNALIGNED16_TO_16 (Buffer, &Temp16);
ACPI_MOVE_16_TO_16 (Buffer, &Temp16);
Buffer += 2;
/*
@ -421,7 +421,7 @@ AcpiRsFixedIoStream (
*/
Temp16 = (UINT16) LinkedList->Data.FixedIo.BaseAddress;
ACPI_MOVE_UNALIGNED16_TO_16 (Buffer, &Temp16);
ACPI_MOVE_16_TO_16 (Buffer, &Temp16);
Buffer += 2;
/*

View File

@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: rsirq - IRQ resource descriptors
* $Revision: 1.32 $
* $Revision: 1.38 $
*
******************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -175,7 +175,7 @@ AcpiRsIrqResource (
* Point to the 16-bits of Bytes 1 and 2
*/
Buffer += 1;
ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer);
ACPI_MOVE_16_TO_16 (&Temp16, Buffer);
OutputStruct->Data.Irq.NumberOfInterrupts = 0;
@ -210,30 +210,29 @@ AcpiRsIrqResource (
Temp8 = *Buffer;
/*
* Check for HE, LL or HL
* Check for HE, LL interrupts
*/
if (Temp8 & 0x01)
switch (Temp8 & 0x09)
{
case 0x01: /* HE */
OutputStruct->Data.Irq.EdgeLevel = ACPI_EDGE_SENSITIVE;
OutputStruct->Data.Irq.ActiveHighLow = ACPI_ACTIVE_HIGH;
}
else
{
if (Temp8 & 0x8)
{
OutputStruct->Data.Irq.EdgeLevel = ACPI_LEVEL_SENSITIVE;
OutputStruct->Data.Irq.ActiveHighLow = ACPI_ACTIVE_LOW;
}
else
{
/*
* Only _LL and _HE polarity/trigger interrupts
* are allowed (ACPI spec v1.0b ection 6.4.2.1),
* so an error will occur if we reach this point
*/
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Invalid interrupt polarity/trigger in resource list\n"));
return_ACPI_STATUS (AE_BAD_DATA);
}
break;
case 0x08: /* LL */
OutputStruct->Data.Irq.EdgeLevel = ACPI_LEVEL_SENSITIVE;
OutputStruct->Data.Irq.ActiveHighLow = ACPI_ACTIVE_LOW;
break;
default:
/*
* Only _LL and _HE polarity/trigger interrupts
* are allowed (ACPI spec, section "IRQ Format")
* so 0x00 and 0x09 are illegal.
*/
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
"Invalid interrupt polarity/trigger in resource list, %X\n", Temp8));
return_ACPI_STATUS (AE_BAD_DATA);
}
/*
@ -328,7 +327,7 @@ AcpiRsIrqStream (
Temp16 |= 0x1 << Temp8;
}
ACPI_MOVE_UNALIGNED16_TO_16 (Buffer, &Temp16);
ACPI_MOVE_16_TO_16 (Buffer, &Temp16);
Buffer += 2;
/*
@ -406,7 +405,14 @@ AcpiRsExtendedIrqResource (
* Point past the Descriptor to get the number of bytes consumed
*/
Buffer += 1;
ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer);
ACPI_MOVE_16_TO_16 (&Temp16, Buffer);
/* Validate minimum descriptor length */
if (Temp16 < 6)
{
return_ACPI_STATUS (AE_AML_BAD_RESOURCE_LENGTH);
}
*BytesConsumed = Temp16 + 3;
OutputStruct->Id = ACPI_RSTYPE_EXT_IRQ;
@ -446,6 +452,13 @@ AcpiRsExtendedIrqResource (
Buffer += 1;
Temp8 = *Buffer;
/* Must have at least one IRQ */
if (Temp8 < 1)
{
return_ACPI_STATUS (AE_AML_BAD_RESOURCE_LENGTH);
}
OutputStruct->Data.ExtendedIrq.NumberOfInterrupts = Temp8;
/*
@ -464,7 +477,7 @@ AcpiRsExtendedIrqResource (
*/
for (Index = 0; Index < Temp8; Index++)
{
ACPI_MOVE_UNALIGNED32_TO_32 (
ACPI_MOVE_32_TO_32 (
&OutputStruct->Data.ExtendedIrq.Interrupts[Index], Buffer);
/* Point to the next IRQ */
@ -478,9 +491,12 @@ AcpiRsExtendedIrqResource (
* pointer to where the null terminated string goes:
* Each Interrupt takes 32-bits + the 5 bytes of the
* stream that are default.
*
* Note: Some resource descriptors will have an additional null, so
* we add 1 to the length.
*/
if (*BytesConsumed >
((ACPI_SIZE) OutputStruct->Data.ExtendedIrq.NumberOfInterrupts * 4) + 5)
((ACPI_SIZE) OutputStruct->Data.ExtendedIrq.NumberOfInterrupts * 4) + (5 + 1))
{
/* Dereference the Index */
@ -495,7 +511,7 @@ AcpiRsExtendedIrqResource (
* Point the String pointer to the end of this structure.
*/
OutputStruct->Data.ExtendedIrq.ResourceSource.StringPtr =
(char *)(OutputStruct + StructSize);
(char *)((char *) OutputStruct + StructSize);
TempPtr = (UINT8 *) OutputStruct->Data.ExtendedIrq.ResourceSource.StringPtr;
@ -628,7 +644,7 @@ AcpiRsExtendedIrqStream (
for (Index = 0; Index < LinkedList->Data.ExtendedIrq.NumberOfInterrupts;
Index++)
{
ACPI_MOVE_UNALIGNED32_TO_32 (Buffer,
ACPI_MOVE_32_TO_32 (Buffer,
&LinkedList->Data.ExtendedIrq.Interrupts[Index]);
Buffer += 4;
}
@ -653,7 +669,7 @@ AcpiRsExtendedIrqStream (
* Buffer needs to be set to the length of the sting + one for the
* terminating null
*/
Buffer += (ACPI_STRLEN (LinkedList->Data.ExtendedIrq.ResourceSource.StringPtr) + 1);
Buffer += (ACPI_SIZE)(ACPI_STRLEN (LinkedList->Data.ExtendedIrq.ResourceSource.StringPtr) + 1);
}
/*

View File

@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: rslist - Linked list utilities
* $Revision: 1.32 $
* $Revision: 1.34 $
*
******************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -390,8 +390,8 @@ AcpiRsByteStreamToList (
* Set the Buffer to the next structure
*/
Resource = ACPI_CAST_PTR (ACPI_RESOURCE, Buffer);
Resource->Length = ACPI_ALIGN_RESOURCE_SIZE(Resource->Length);
Buffer += ACPI_ALIGN_RESOURCE_SIZE(StructureSize);
Resource->Length = (UINT32) ACPI_ALIGN_RESOURCE_SIZE (Resource->Length);
Buffer += ACPI_ALIGN_RESOURCE_SIZE (StructureSize);
} /* end while */

View File

@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: rsmem24 - Memory resource descriptors
* $Revision: 1.21 $
* $Revision: 1.25 $
*
******************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -166,7 +166,7 @@ AcpiRsMemory24Resource (
*/
Buffer += 1;
ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer);
ACPI_MOVE_16_TO_16 (&Temp16, Buffer);
Buffer += 2;
*BytesConsumed = (ACPI_SIZE) Temp16 + 3;
OutputStruct->Id = ACPI_RSTYPE_MEM24;
@ -181,28 +181,28 @@ AcpiRsMemory24Resource (
/*
* Get MinBaseAddress (Bytes 4-5)
*/
ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer);
ACPI_MOVE_16_TO_16 (&Temp16, Buffer);
Buffer += 2;
OutputStruct->Data.Memory24.MinBaseAddress = Temp16;
/*
* Get MaxBaseAddress (Bytes 6-7)
*/
ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer);
ACPI_MOVE_16_TO_16 (&Temp16, Buffer);
Buffer += 2;
OutputStruct->Data.Memory24.MaxBaseAddress = Temp16;
/*
* Get Alignment (Bytes 8-9)
*/
ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer);
ACPI_MOVE_16_TO_16 (&Temp16, Buffer);
Buffer += 2;
OutputStruct->Data.Memory24.Alignment = Temp16;
/*
* Get RangeLength (Bytes 10-11)
*/
ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer);
ACPI_MOVE_16_TO_16 (&Temp16, Buffer);
OutputStruct->Data.Memory24.RangeLength = Temp16;
/*
@ -258,7 +258,7 @@ AcpiRsMemory24Stream (
* The length field is static
*/
Temp16 = 0x09;
ACPI_MOVE_UNALIGNED16_TO_16 (Buffer, &Temp16);
ACPI_MOVE_16_TO_16 (Buffer, &Temp16);
Buffer += 2;
/*
@ -271,25 +271,25 @@ AcpiRsMemory24Stream (
/*
* Set the Range minimum base address
*/
ACPI_MOVE_UNALIGNED16_TO_16 (Buffer, &LinkedList->Data.Memory24.MinBaseAddress);
ACPI_MOVE_32_TO_16 (Buffer, &LinkedList->Data.Memory24.MinBaseAddress);
Buffer += 2;
/*
* Set the Range maximum base address
*/
ACPI_MOVE_UNALIGNED16_TO_16 (Buffer, &LinkedList->Data.Memory24.MaxBaseAddress);
ACPI_MOVE_32_TO_16 (Buffer, &LinkedList->Data.Memory24.MaxBaseAddress);
Buffer += 2;
/*
* Set the base alignment
*/
ACPI_MOVE_UNALIGNED16_TO_16 (Buffer, &LinkedList->Data.Memory24.Alignment);
ACPI_MOVE_32_TO_16 (Buffer, &LinkedList->Data.Memory24.Alignment);
Buffer += 2;
/*
* Set the range length
*/
ACPI_MOVE_UNALIGNED16_TO_16 (Buffer, &LinkedList->Data.Memory24.RangeLength);
ACPI_MOVE_32_TO_16 (Buffer, &LinkedList->Data.Memory24.RangeLength);
Buffer += 2;
/*
@ -343,7 +343,7 @@ AcpiRsMemory32RangeResource (
*/
Buffer += 1;
ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer);
ACPI_MOVE_16_TO_16 (&Temp16, Buffer);
Buffer += 2;
*BytesConsumed = (ACPI_SIZE) Temp16 + 3;
@ -352,7 +352,7 @@ AcpiRsMemory32RangeResource (
/*
* Point to the place in the output buffer where the data portion will
* begin.
* 1. Set the RESOURCE_DATA * Data to point to it's own address, then
* 1. Set the RESOURCE_DATA * Data to point to its own address, then
* 2. Set the pointer to the next address.
*
* NOTE: OutputStruct->Data is cast to UINT8, otherwise, this addition adds
@ -370,27 +370,25 @@ AcpiRsMemory32RangeResource (
/*
* Get MinBaseAddress (Bytes 4-7)
*/
ACPI_MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.Memory32.MinBaseAddress,
Buffer);
ACPI_MOVE_32_TO_32 (&OutputStruct->Data.Memory32.MinBaseAddress, Buffer);
Buffer += 4;
/*
* Get MaxBaseAddress (Bytes 8-11)
*/
ACPI_MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.Memory32.MaxBaseAddress,
Buffer);
ACPI_MOVE_32_TO_32 (&OutputStruct->Data.Memory32.MaxBaseAddress, Buffer);
Buffer += 4;
/*
* Get Alignment (Bytes 12-15)
*/
ACPI_MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.Memory32.Alignment, Buffer);
ACPI_MOVE_32_TO_32 (&OutputStruct->Data.Memory32.Alignment, Buffer);
Buffer += 4;
/*
* Get RangeLength (Bytes 16-19)
*/
ACPI_MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.Memory32.RangeLength, Buffer);
ACPI_MOVE_32_TO_32 (&OutputStruct->Data.Memory32.RangeLength, Buffer);
/*
* Set the Length parameter
@ -447,7 +445,7 @@ AcpiRsFixedMemory32Resource (
* Point past the Descriptor to get the number of bytes consumed
*/
Buffer += 1;
ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer);
ACPI_MOVE_16_TO_16 (&Temp16, Buffer);
Buffer += 2;
*BytesConsumed = (ACPI_SIZE) Temp16 + 3;
@ -464,15 +462,13 @@ AcpiRsFixedMemory32Resource (
/*
* Get RangeBaseAddress (Bytes 4-7)
*/
ACPI_MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.FixedMemory32.RangeBaseAddress,
Buffer);
ACPI_MOVE_32_TO_32 (&OutputStruct->Data.FixedMemory32.RangeBaseAddress, Buffer);
Buffer += 4;
/*
* Get RangeLength (Bytes 8-11)
*/
ACPI_MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.FixedMemory32.RangeLength,
Buffer);
ACPI_MOVE_32_TO_32 (&OutputStruct->Data.FixedMemory32.RangeLength, Buffer);
/*
* Set the Length parameter
@ -528,7 +524,7 @@ AcpiRsMemory32RangeStream (
*/
Temp16 = 0x11;
ACPI_MOVE_UNALIGNED16_TO_16 (Buffer, &Temp16);
ACPI_MOVE_16_TO_16 (Buffer, &Temp16);
Buffer += 2;
/*
@ -541,25 +537,25 @@ AcpiRsMemory32RangeStream (
/*
* Set the Range minimum base address
*/
ACPI_MOVE_UNALIGNED32_TO_32 (Buffer, &LinkedList->Data.Memory32.MinBaseAddress);
ACPI_MOVE_32_TO_32 (Buffer, &LinkedList->Data.Memory32.MinBaseAddress);
Buffer += 4;
/*
* Set the Range maximum base address
*/
ACPI_MOVE_UNALIGNED32_TO_32 (Buffer, &LinkedList->Data.Memory32.MaxBaseAddress);
ACPI_MOVE_32_TO_32 (Buffer, &LinkedList->Data.Memory32.MaxBaseAddress);
Buffer += 4;
/*
* Set the base alignment
*/
ACPI_MOVE_UNALIGNED32_TO_32 (Buffer, &LinkedList->Data.Memory32.Alignment);
ACPI_MOVE_32_TO_32 (Buffer, &LinkedList->Data.Memory32.Alignment);
Buffer += 4;
/*
* Set the range length
*/
ACPI_MOVE_UNALIGNED32_TO_32 (Buffer, &LinkedList->Data.Memory32.RangeLength);
ACPI_MOVE_32_TO_32 (Buffer, &LinkedList->Data.Memory32.RangeLength);
Buffer += 4;
/*
@ -611,7 +607,7 @@ AcpiRsFixedMemory32Stream (
*/
Temp16 = 0x09;
ACPI_MOVE_UNALIGNED16_TO_16 (Buffer, &Temp16);
ACPI_MOVE_16_TO_16 (Buffer, &Temp16);
Buffer += 2;
/*
@ -624,14 +620,14 @@ AcpiRsFixedMemory32Stream (
/*
* Set the Range base address
*/
ACPI_MOVE_UNALIGNED32_TO_32 (Buffer,
ACPI_MOVE_32_TO_32 (Buffer,
&LinkedList->Data.FixedMemory32.RangeBaseAddress);
Buffer += 4;
/*
* Set the range length
*/
ACPI_MOVE_UNALIGNED32_TO_32 (Buffer,
ACPI_MOVE_32_TO_32 (Buffer,
&LinkedList->Data.FixedMemory32.RangeLength);
Buffer += 4;

View File

@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: rsmisc - Miscellaneous resource descriptors
* $Revision: 1.25 $
* $Revision: 1.27 $
*
******************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -286,7 +286,7 @@ AcpiRsVendorResource (
/* Dereference */
ACPI_MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer);
ACPI_MOVE_16_TO_16 (&Temp16, Buffer);
/* Calculate bytes consumed */
@ -385,7 +385,7 @@ AcpiRsVendorStream (
Temp16 = (UINT16) LinkedList->Data.VendorSpecific.Length;
ACPI_MOVE_UNALIGNED16_TO_16 (Buffer, &Temp16);
ACPI_MOVE_16_TO_16 (Buffer, &Temp16);
Buffer += 2;
}
else

View File

@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: rsutils - Utilities for the resource manager
* $Revision: 1.35 $
* $Revision: 1.38 $
*
******************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -290,6 +290,60 @@ AcpiRsGetPrsMethodData (
}
/*******************************************************************************
*
* FUNCTION: AcpiRsGetMethodData
*
* PARAMETERS: Handle - a handle to the containing object
* RetBuffer - a pointer to a buffer structure for the
* results
*
* RETURN: Status
*
* DESCRIPTION: This function is called to get the _CRS or _PRS value of an
* object contained in an object specified by the handle passed in
*
* If the function fails an appropriate status will be returned
* and the contents of the callers buffer is undefined.
*
******************************************************************************/
ACPI_STATUS
AcpiRsGetMethodData (
ACPI_HANDLE Handle,
char *Path,
ACPI_BUFFER *RetBuffer)
{
ACPI_OPERAND_OBJECT *ObjDesc;
ACPI_STATUS Status;
ACPI_FUNCTION_TRACE ("RsGetMethodData");
/* Parameters guaranteed valid by caller */
/*
* Execute the method, no parameters
*/
Status = AcpiUtEvaluateObject (Handle, Path, ACPI_BTYPE_BUFFER, &ObjDesc);
if (ACPI_FAILURE (Status)) {
return_ACPI_STATUS (Status);
}
/*
* Make the call to create a resource linked list from the
* byte stream buffer that comes back from the method
* execution.
*/
Status = AcpiRsCreateResourceList (ObjDesc, RetBuffer);
/* On exit, we must delete the object returned by EvaluateObject */
AcpiUtRemoveReference (ObjDesc);
return_ACPI_STATUS (Status);
}
/*******************************************************************************
*
* FUNCTION: AcpiRsSetSrsMethodData

View File

@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: rsxface - Public interfaces to the resource manager
* $Revision: 1.20 $
* $Revision: 1.28 $
*
******************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -291,6 +291,96 @@ AcpiGetPossibleResources (
}
/*******************************************************************************
*
* FUNCTION: AcpiWalkResources
*
* PARAMETERS: DeviceHandle - a handle to the device object for the
* device we are querying
* Path - method name of the resources we want
* (METHOD_NAME__CRS or METHOD_NAME__PRS)
* UserFunction - called for each resource
* Context - passed to UserFunction
*
* RETURN: Status
*
* DESCRIPTION: Retrieves the current or possible resource list for the
* specified device. The UserFunction is called once for
* each resource in the list.
*
******************************************************************************/
ACPI_STATUS
AcpiWalkResources (
ACPI_HANDLE DeviceHandle,
char *Path,
ACPI_WALK_RESOURCE_CALLBACK UserFunction,
void *Context)
{
ACPI_STATUS Status;
ACPI_BUFFER Buffer = {ACPI_ALLOCATE_BUFFER, NULL};
ACPI_RESOURCE *Resource;
ACPI_FUNCTION_TRACE ("AcpiWalkResources");
if (!DeviceHandle ||
(ACPI_STRNCMP (Path, METHOD_NAME__CRS, sizeof (METHOD_NAME__CRS)) &&
ACPI_STRNCMP (Path, METHOD_NAME__PRS, sizeof (METHOD_NAME__PRS))))
{
return_ACPI_STATUS (AE_BAD_PARAMETER);
}
Status = AcpiRsGetMethodData (DeviceHandle, Path, &Buffer);
if (ACPI_FAILURE (Status))
{
return_ACPI_STATUS (Status);
}
Resource = (ACPI_RESOURCE *) Buffer.Pointer;
for (;;)
{
if (!Resource || Resource->Id == ACPI_RSTYPE_END_TAG)
{
break;
}
Status = UserFunction (Resource, Context);
switch (Status)
{
case AE_OK:
case AE_CTRL_DEPTH:
/* Just keep going */
Status = AE_OK;
break;
case AE_CTRL_TERMINATE:
/* Exit now, with OK stats */
Status = AE_OK;
goto Cleanup;
default:
/* All others are valid exceptions */
goto Cleanup;
}
Resource = ACPI_NEXT_RESOURCE (Resource);
}
Cleanup:
AcpiOsFree (Buffer.Pointer);
return_ACPI_STATUS (Status);
}
/*******************************************************************************
*
* FUNCTION: AcpiSetCurrentResources
@ -334,3 +424,76 @@ AcpiSetCurrentResources (
Status = AcpiRsSetSrsMethodData (DeviceHandle, InBuffer);
return_ACPI_STATUS (Status);
}
#define ACPI_COPY_FIELD(Out, In, Field) ((Out)->Field = (In)->Field)
#define ACPI_COPY_ADDRESS(Out, In) \
ACPI_COPY_FIELD(Out, In, ResourceType); \
ACPI_COPY_FIELD(Out, In, ProducerConsumer); \
ACPI_COPY_FIELD(Out, In, Decode); \
ACPI_COPY_FIELD(Out, In, MinAddressFixed); \
ACPI_COPY_FIELD(Out, In, MaxAddressFixed); \
ACPI_COPY_FIELD(Out, In, Attribute); \
ACPI_COPY_FIELD(Out, In, Granularity); \
ACPI_COPY_FIELD(Out, In, MinAddressRange); \
ACPI_COPY_FIELD(Out, In, MaxAddressRange); \
ACPI_COPY_FIELD(Out, In, AddressTranslationOffset); \
ACPI_COPY_FIELD(Out, In, AddressLength); \
ACPI_COPY_FIELD(Out, In, ResourceSource);
/******************************************************************************
*
* FUNCTION: AcpiResourceToAddress64
*
* PARAMETERS: resource - Pointer to a resource
* out - Pointer to the users's return
* buffer (a struct
* acpi_resource_address64)
*
* RETURN: Status
*
* DESCRIPTION: If the resource is an address16, address32, or address64,
* copy it to the address64 return buffer. This saves the
* caller from having to duplicate code for different-sized
* addresses.
*
******************************************************************************/
ACPI_STATUS
AcpiResourceToAddress64 (
ACPI_RESOURCE *Resource,
ACPI_RESOURCE_ADDRESS64 *Out)
{
ACPI_RESOURCE_ADDRESS16 *Address16;
ACPI_RESOURCE_ADDRESS32 *Address32;
switch (Resource->Id) {
case ACPI_RSTYPE_ADDRESS16:
Address16 = (ACPI_RESOURCE_ADDRESS16 *) &Resource->Data;
ACPI_COPY_ADDRESS(Out, Address16);
break;
case ACPI_RSTYPE_ADDRESS32:
Address32 = (ACPI_RESOURCE_ADDRESS32 *) &Resource->Data;
ACPI_COPY_ADDRESS(Out, Address32);
break;
case ACPI_RSTYPE_ADDRESS64:
/* Simple copy for 64 bit source */
ACPI_MEMCPY (Out, &Resource->Data, sizeof (ACPI_RESOURCE_ADDRESS64));
break;
default:
return (AE_BAD_PARAMETER);
}
return (AE_OK);
}

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: tbinstal - ACPI table installation and removal
* $Revision: 1.67 $
* $Revision: 1.73 $
*
*****************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -154,15 +154,15 @@ AcpiTbMatchSignature (
/*
* Search for a signature match among the known table types
*/
for (i = 0; i < NUM_ACPI_TABLES; i++)
for (i = 0; i < NUM_ACPI_TABLE_TYPES; i++)
{
if ((AcpiGbl_AcpiTableData[i].Flags & ACPI_TABLE_TYPE_MASK) != SearchType)
if (!(AcpiGbl_TableData[i].Flags & SearchType))
{
continue;
}
if (!ACPI_STRNCMP (Signature, AcpiGbl_AcpiTableData[i].Signature,
AcpiGbl_AcpiTableData[i].SigLength))
if (!ACPI_STRNCMP (Signature, AcpiGbl_TableData[i].Signature,
AcpiGbl_TableData[i].SigLength))
{
/* Found a signature match, return index if requested */
@ -172,15 +172,15 @@ AcpiTbMatchSignature (
}
ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
"Table [%4.4s] matched and is a required ACPI table\n",
(char *) AcpiGbl_AcpiTableData[i].Signature));
"Table [%4.4s] is an ACPI table consumed by the core subsystem\n",
(char *) AcpiGbl_TableData[i].Signature));
return_ACPI_STATUS (AE_OK);
}
}
ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
"Table [%4.4s] is not a required ACPI table - ignored\n",
"Table [%4.4s] is not an ACPI table consumed by the core subsystem - ignored\n",
(char *) Signature));
return_ACPI_STATUS (AE_TABLE_NOT_SUPPORTED);
@ -225,12 +225,12 @@ AcpiTbInstallTable (
Status = AcpiTbInitTableDescriptor (TableInfo->Type, TableInfo);
if (ACPI_FAILURE (Status))
{
ACPI_REPORT_ERROR (("Could not install ACPI table [%s], %s\n",
ACPI_REPORT_ERROR (("Could not install ACPI table [%4.4s], %s\n",
TableInfo->Pointer->Signature, AcpiFormatException (Status)));
}
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "%s located at %p\n",
AcpiGbl_AcpiTableData[TableInfo->Type].Name, TableInfo->Pointer));
AcpiGbl_TableData[TableInfo->Type].Name, TableInfo->Pointer));
(void) AcpiUtReleaseMutex (ACPI_MTX_TABLES);
return_ACPI_STATUS (Status);
@ -323,76 +323,84 @@ AcpiTbInitTableDescriptor (
ACPI_TABLE_TYPE TableType,
ACPI_TABLE_DESC *TableInfo)
{
ACPI_TABLE_DESC *ListHead;
ACPI_TABLE_LIST *ListHead;
ACPI_TABLE_DESC *TableDesc;
ACPI_FUNCTION_TRACE_U32 ("TbInitTableDescriptor", TableType);
/* Allocate a descriptor for this table */
TableDesc = ACPI_MEM_CALLOCATE (sizeof (ACPI_TABLE_DESC));
if (!TableDesc)
{
return_ACPI_STATUS (AE_NO_MEMORY);
}
/*
* Install the table into the global data structure
*/
ListHead = &AcpiGbl_AcpiTables[TableType];
TableDesc = ListHead;
ListHead = &AcpiGbl_TableLists[TableType];
/*
* Two major types of tables: 1) Only one instance is allowed. This
* includes most ACPI tables such as the DSDT. 2) Multiple instances of
* the table are allowed. This includes SSDT and PSDTs.
*/
if (ACPI_IS_SINGLE_TABLE (AcpiGbl_AcpiTableData[TableType].Flags))
if (ACPI_IS_SINGLE_TABLE (AcpiGbl_TableData[TableType].Flags))
{
/*
* Only one table allowed, and a table has alread been installed
* at this location, so return an error.
*/
if (ListHead->Pointer)
if (ListHead->Next)
{
return_ACPI_STATUS (AE_ALREADY_EXISTS);
}
TableDesc->Count = 1;
TableDesc->Prev = NULL;
TableDesc->Next = NULL;
TableDesc->Next = ListHead->Next;
ListHead->Next = TableDesc;
if (TableDesc->Next)
{
TableDesc->Next->Prev = TableDesc;
}
ListHead->Count++;
}
else
{
/*
* Multiple tables allowed for this table type, we must link
* the new table in to the list of tables of this type.
* Link the new table in to the list of tables of this type.
* Insert at the end of the list, order IS IMPORTANT.
*
* TableDesc->Prev & Next are already NULL from calloc()
*/
if (ListHead->Pointer)
ListHead->Count++;
if (!ListHead->Next)
{
TableDesc = ACPI_MEM_CALLOCATE (sizeof (ACPI_TABLE_DESC));
if (!TableDesc)
{
return_ACPI_STATUS (AE_NO_MEMORY);
}
ListHead->Count++;
/* Update the original previous */
ListHead->Prev->Next = TableDesc;
/* Update new entry */
TableDesc->Prev = ListHead->Prev;
TableDesc->Next = ListHead;
/* Update list head */
ListHead->Prev = TableDesc;
ListHead->Next = TableDesc;
}
else
{
TableDesc->Count = 1;
TableDesc->Next = ListHead->Next;
while (TableDesc->Next->Next)
{
TableDesc->Next = TableDesc->Next->Next;
}
TableDesc->Next->Next = TableDesc;
TableDesc->Prev = TableDesc->Next;
TableDesc->Next = NULL;
}
}
/* Common initialization of the table descriptor */
/* Finish initialization of the table descriptor */
TableDesc->Type = TableInfo->Type;
TableDesc->Type = (UINT8) TableType;
TableDesc->Pointer = TableInfo->Pointer;
TableDesc->Length = TableInfo->Length;
TableDesc->Allocation = TableInfo->Allocation;
@ -406,9 +414,9 @@ AcpiTbInitTableDescriptor (
* Set the appropriate global pointer (if there is one) to point to the
* newly installed table
*/
if (AcpiGbl_AcpiTableData[TableType].GlobalPtr)
if (AcpiGbl_TableData[TableType].GlobalPtr)
{
*(AcpiGbl_AcpiTableData[TableType].GlobalPtr) = TableInfo->Pointer;
*(AcpiGbl_TableData[TableType].GlobalPtr) = TableInfo->Pointer;
}
/* Return Data */
@ -422,7 +430,7 @@ AcpiTbInitTableDescriptor (
/*******************************************************************************
*
* FUNCTION: AcpiTbDeleteAcpiTables
* FUNCTION: AcpiTbDeleteAllTables
*
* PARAMETERS: None.
*
@ -433,25 +441,25 @@ AcpiTbInitTableDescriptor (
******************************************************************************/
void
AcpiTbDeleteAcpiTables (void)
AcpiTbDeleteAllTables (void)
{
ACPI_TABLE_TYPE Type;
ACPI_TABLE_TYPE Type;
/*
* Free memory allocated for ACPI tables
* Memory can either be mapped or allocated
*/
for (Type = 0; Type < NUM_ACPI_TABLES; Type++)
for (Type = 0; Type < NUM_ACPI_TABLE_TYPES; Type++)
{
AcpiTbDeleteAcpiTable (Type);
AcpiTbDeleteTablesByType (Type);
}
}
/*******************************************************************************
*
* FUNCTION: AcpiTbDeleteAcpiTable
* FUNCTION: AcpiTbDeleteTablesByType
*
* PARAMETERS: Type - The table type to be deleted
*
@ -463,11 +471,15 @@ AcpiTbDeleteAcpiTables (void)
******************************************************************************/
void
AcpiTbDeleteAcpiTable (
ACPI_TABLE_TYPE Type)
AcpiTbDeleteTablesByType (
ACPI_TABLE_TYPE Type)
{
ACPI_TABLE_DESC *TableDesc;
UINT32 Count;
UINT32 i;
ACPI_FUNCTION_TRACE_U32 ("TbDeleteAcpiTable", Type);
ACPI_FUNCTION_TRACE_U32 ("TbDeleteTablesByType", Type);
if (Type > ACPI_TABLE_MAX)
@ -510,54 +522,23 @@ AcpiTbDeleteAcpiTable (
break;
}
/* Free the table */
AcpiTbFreeAcpiTablesOfType (&AcpiGbl_AcpiTables[Type]);
(void) AcpiUtReleaseMutex (ACPI_MTX_TABLES);
return_VOID;
}
/*******************************************************************************
*
* FUNCTION: AcpiTbFreeAcpiTablesOfType
*
* PARAMETERS: TableInfo - A table info struct
*
* RETURN: None.
*
* DESCRIPTION: Free the memory associated with an internal ACPI table
* Table mutex should be locked.
*
******************************************************************************/
void
AcpiTbFreeAcpiTablesOfType (
ACPI_TABLE_DESC *ListHead)
{
ACPI_TABLE_DESC *TableDesc;
UINT32 Count;
UINT32 i;
ACPI_FUNCTION_TRACE_PTR ("TbFreeAcpiTablesOfType", ListHead);
/* Get the head of the list */
TableDesc = ListHead;
Count = ListHead->Count;
/*
* Free the table
* 1) Get the head of the list
*/
TableDesc = AcpiGbl_TableLists[Type].Next;
Count = AcpiGbl_TableLists[Type].Count;
/*
* Walk the entire list, deleting both the allocated tables
* and the table descriptors
* 2) Walk the entire list, deleting both the allocated tables
* and the table descriptors
*/
for (i = 0; i < Count; i++)
{
TableDesc = AcpiTbUninstallTable (TableDesc);
}
(void) AcpiUtReleaseMutex (ACPI_MTX_TABLES);
return_VOID;
}
@ -580,33 +561,33 @@ AcpiTbDeleteSingleTable (
ACPI_TABLE_DESC *TableDesc)
{
if (!TableDesc)
/* Must have a valid table descriptor and pointer */
if ((!TableDesc) ||
(!TableDesc->Pointer))
{
return;
}
if (TableDesc->Pointer)
/* Valid table, determine type of memory allocation */
switch (TableDesc->Allocation)
{
/* Valid table, determine type of memory allocation */
case ACPI_MEM_NOT_ALLOCATED:
break;
switch (TableDesc->Allocation)
{
case ACPI_MEM_NOT_ALLOCATED:
break;
case ACPI_MEM_ALLOCATED:
case ACPI_MEM_ALLOCATED:
ACPI_MEM_FREE (TableDesc->Pointer);
break;
ACPI_MEM_FREE (TableDesc->Pointer);
break;
case ACPI_MEM_MAPPED:
case ACPI_MEM_MAPPED:
AcpiOsUnmapMemory (TableDesc->Pointer, TableDesc->Length);
break;
AcpiOsUnmapMemory (TableDesc->Pointer, TableDesc->Length);
break;
default:
break;
}
default:
break;
}
}
@ -632,7 +613,7 @@ AcpiTbUninstallTable (
ACPI_TABLE_DESC *NextDesc;
ACPI_FUNCTION_TRACE_PTR ("AcpiTbUninstallTable", TableDesc);
ACPI_FUNCTION_TRACE_PTR ("TbUninstallTable", TableDesc);
if (!TableDesc)
@ -640,12 +621,18 @@ AcpiTbUninstallTable (
return_PTR (NULL);
}
/* Unlink the descriptor */
/* Unlink the descriptor from the doubly linked list */
if (TableDesc->Prev)
{
TableDesc->Prev->Next = TableDesc->Next;
}
else
{
/* Is first on list, update list head */
AcpiGbl_TableLists[TableDesc->Type].Next = TableDesc->Next;
}
if (TableDesc->Next)
{
@ -656,25 +643,12 @@ AcpiTbUninstallTable (
AcpiTbDeleteSingleTable (TableDesc);
/* Free the table descriptor (Don't delete the list head, tho) */
/* Free the table descriptor */
if ((TableDesc->Prev) == (TableDesc->Next))
{
NextDesc = NULL;
NextDesc = TableDesc->Next;
ACPI_MEM_FREE (TableDesc);
/* Clear the list head */
TableDesc->Pointer = NULL;
TableDesc->Length = 0;
TableDesc->Count = 0;
}
else
{
/* Free the table descriptor */
NextDesc = TableDesc->Next;
ACPI_MEM_FREE (TableDesc);
}
/* Return pointer to the next descriptor */
return_PTR (NextDesc);
}

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: tbutils - Table manipulation utilities
* $Revision: 1.58 $
* $Revision: 1.61 $
*
*****************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -140,10 +140,10 @@
ACPI_STATUS
AcpiTbHandleToObject (
UINT16 TableId,
ACPI_TABLE_DESC **TableDesc)
ACPI_TABLE_DESC **ReturnTableDesc)
{
UINT32 i;
ACPI_TABLE_DESC *ListHead;
ACPI_TABLE_DESC *TableDesc;
ACPI_FUNCTION_NAME ("TbHandleToObject");
@ -151,18 +151,17 @@ AcpiTbHandleToObject (
for (i = 0; i < ACPI_TABLE_MAX; i++)
{
ListHead = &AcpiGbl_AcpiTables[i];
do
TableDesc = AcpiGbl_TableLists[i].Next;
while (TableDesc)
{
if (ListHead->TableId == TableId)
if (TableDesc->TableId == TableId)
{
*TableDesc = ListHead;
*ReturnTableDesc = TableDesc;
return (AE_OK);
}
ListHead = ListHead->Next;
} while (ListHead != &AcpiGbl_AcpiTables[i]);
TableDesc = TableDesc->Next;
}
}
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "TableId=%X does not exist\n", TableId));
@ -211,7 +210,7 @@ AcpiTbValidateTableHeader (
/* Ensure that the signature is 4 ASCII characters */
ACPI_MOVE_UNALIGNED32_TO_32 (&Signature, TableHeader->Signature);
ACPI_MOVE_32_TO_32 (&Signature, TableHeader->Signature);
if (!AcpiUtValidAcpiName (Signature))
{
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,

View File

@ -2,7 +2,7 @@
*
* Module Name: tbxface - Public interfaces to the ACPI subsystem
* ACPI table oriented interfaces
* $Revision: 1.61 $
* $Revision: 1.64 $
*
*****************************************************************************/
@ -10,7 +10,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -319,7 +319,7 @@ ACPI_STATUS
AcpiUnloadTable (
ACPI_TABLE_TYPE TableType)
{
ACPI_TABLE_DESC *ListHead;
ACPI_TABLE_DESC *TableDesc;
ACPI_FUNCTION_TRACE ("AcpiUnloadTable");
@ -335,8 +335,8 @@ AcpiUnloadTable (
/* Find all tables of the requested type */
ListHead = &AcpiGbl_AcpiTables[TableType];
do
TableDesc = AcpiGbl_TableLists[TableType].Next;
while (TableDesc)
{
/*
* Delete all namespace entries owned by this table. Note that these
@ -344,14 +344,14 @@ AcpiUnloadTable (
* "Scope" operator. Thus, we need to track ownership by an ID, not
* simply a position within the hierarchy
*/
AcpiNsDeleteNamespaceByOwner (ListHead->TableId);
AcpiNsDeleteNamespaceByOwner (TableDesc->TableId);
/* Delete (or unmap) the actual table */
TableDesc = TableDesc->Next;
}
AcpiTbDeleteAcpiTable (TableType);
} while (ListHead != &AcpiGbl_AcpiTables[TableType]);
/* Delete (or unmap) all tables of this type */
AcpiTbDeleteTablesByType (TableType);
return_ACPI_STATUS (AE_OK);
}
@ -400,7 +400,7 @@ AcpiGetTableHeader (
/* Check the table type and instance */
if ((TableType > ACPI_TABLE_MAX) ||
(ACPI_IS_SINGLE_TABLE (AcpiGbl_AcpiTableData[TableType].Flags) &&
(ACPI_IS_SINGLE_TABLE (AcpiGbl_TableData[TableType].Flags) &&
Instance > 1))
{
return_ACPI_STATUS (AE_BAD_PARAMETER);
@ -486,7 +486,7 @@ AcpiGetTable (
/* Check the table type and instance */
if ((TableType > ACPI_TABLE_MAX) ||
(ACPI_IS_SINGLE_TABLE (AcpiGbl_AcpiTableData[TableType].Flags) &&
(ACPI_IS_SINGLE_TABLE (AcpiGbl_TableData[TableType].Flags) &&
Instance > 1))
{
return_ACPI_STATUS (AE_BAD_PARAMETER);

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: tbxfroot - Find the root ACPI table (RSDT)
* $Revision: 1.68 $
* $Revision: 1.72 $
*
*****************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -260,7 +260,7 @@ AcpiGetFirmwareTable (
if ((Flags & ACPI_MEMORY_MODE) == ACPI_LOGICAL_ADDRESSING)
{
Status = AcpiOsMapMemory (RsdpAddress.Pointer.Physical, sizeof (RSDP_DESCRIPTOR),
(void **) &AcpiGbl_RSDP);
(void *) &AcpiGbl_RSDP);
if (ACPI_FAILURE (Status))
{
return_ACPI_STATUS (Status);
@ -296,8 +296,7 @@ AcpiGetFirmwareTable (
ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
"RSDP located at %p, RSDT physical=%8.8X%8.8X \n",
AcpiGbl_RSDP,
ACPI_HIDWORD (Address.Pointer.Value),
ACPI_LODWORD (Address.Pointer.Value)));
ACPI_FORMAT_UINT64 (Address.Pointer.Value)));
/* Insert ProcessorMode flags */
@ -331,12 +330,12 @@ AcpiGetFirmwareTable (
if (AcpiGbl_RSDP->Revision < 2)
{
Address.Pointer.Value = ((RSDT_DESCRIPTOR *) RsdtInfo.Pointer)->TableOffsetEntry[i];
Address.Pointer.Value = (ACPI_CAST_PTR (RSDT_DESCRIPTOR, RsdtInfo.Pointer))->TableOffsetEntry[i];
}
else
{
Address.Pointer.Value = ACPI_GET_ADDRESS (
((XSDT_DESCRIPTOR *) RsdtInfo.Pointer)->TableOffsetEntry[i]);
(ACPI_CAST_PTR (XSDT_DESCRIPTOR, RsdtInfo.Pointer))->TableOffsetEntry[i]);
}
/* Get the table header */
@ -521,7 +520,7 @@ AcpiTbFindRsdp (
* 1) Search EBDA (low memory) paragraphs
*/
Status = AcpiOsMapMemory ((UINT64) ACPI_LO_RSDP_WINDOW_BASE, ACPI_LO_RSDP_WINDOW_SIZE,
(void **) &TablePtr);
(void *) &TablePtr);
if (ACPI_FAILURE (Status))
{
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Could not map memory at %X for length %X\n",
@ -547,7 +546,7 @@ AcpiTbFindRsdp (
* 2) Search upper memory: 16-byte boundaries in E0000h-F0000h
*/
Status = AcpiOsMapMemory ((UINT64) ACPI_HI_RSDP_WINDOW_BASE, ACPI_HI_RSDP_WINDOW_SIZE,
(void **) &TablePtr);
(void *) &TablePtr);
if (ACPI_FAILURE (Status))
{
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Could not map memory at %X for length %X\n",

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: utalloc - local cache and memory allocation routines
* $Revision: 1.131 $
* $Revision: 1.135 $
*
*****************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -908,7 +908,7 @@ AcpiUtRemoveAllocation (
ACPI_MEMSET (&Allocation->UserSpace, 0xEA, Allocation->Size);
ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "Freeing size %X\n", Allocation->Size));
ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "Freeing size 0%X\n", Allocation->Size));
Status = AcpiUtReleaseMutex (ACPI_MTX_MEMORY);
return_ACPI_STATUS (Status);
@ -1019,72 +1019,31 @@ AcpiUtDumpAllocations (
Descriptor = ACPI_CAST_PTR (ACPI_DESCRIPTOR, &Element->UserSpace);
if (Descriptor->DescriptorId != ACPI_DESC_TYPE_CACHED)
{
AcpiOsPrintf ("%p Len %04X %9.9s-%d ",
AcpiOsPrintf ("%p Len %04X %9.9s-%d [%s] ",
Descriptor, Element->Size, Element->Module,
Element->Line);
Element->Line, AcpiUtGetDescriptorName (Descriptor));
/* Most of the elements will be internal objects. */
/* Most of the elements will be Operand objects. */
switch (ACPI_GET_DESCRIPTOR_TYPE (Descriptor))
{
case ACPI_DESC_TYPE_OPERAND:
AcpiOsPrintf ("ObjType %12.12s R%hd",
AcpiOsPrintf ("%12.12s R%hd",
AcpiUtGetTypeName (Descriptor->Object.Common.Type),
Descriptor->Object.Common.ReferenceCount);
break;
case ACPI_DESC_TYPE_PARSER:
AcpiOsPrintf ("ParseObj AmlOpcode %04hX",
AcpiOsPrintf ("AmlOpcode %04hX",
Descriptor->Op.Asl.AmlOpcode);
break;
case ACPI_DESC_TYPE_NAMED:
AcpiOsPrintf ("Node %4.4s",
Descriptor->Node.Name.Ascii);
break;
case ACPI_DESC_TYPE_STATE:
AcpiOsPrintf ("Untyped StateObj");
break;
case ACPI_DESC_TYPE_STATE_UPDATE:
AcpiOsPrintf ("UPDATE StateObj");
break;
case ACPI_DESC_TYPE_STATE_PACKAGE:
AcpiOsPrintf ("PACKAGE StateObj");
break;
case ACPI_DESC_TYPE_STATE_CONTROL:
AcpiOsPrintf ("CONTROL StateObj");
break;
case ACPI_DESC_TYPE_STATE_RPSCOPE:
AcpiOsPrintf ("ROOT-PARSE-SCOPE StateObj");
break;
case ACPI_DESC_TYPE_STATE_PSCOPE:
AcpiOsPrintf ("PARSE-SCOPE StateObj");
break;
case ACPI_DESC_TYPE_STATE_WSCOPE:
AcpiOsPrintf ("WALK-SCOPE StateObj");
break;
case ACPI_DESC_TYPE_STATE_RESULT:
AcpiOsPrintf ("RESULT StateObj");
break;
case ACPI_DESC_TYPE_STATE_NOTIFY:
AcpiOsPrintf ("NOTIFY StateObj");
break;
case ACPI_DESC_TYPE_STATE_THREAD:
AcpiOsPrintf ("THREAD StateObj");
AcpiOsPrintf ("%4.4s",
AcpiUtGetNodeName (&Descriptor->Node));
break;
default:
/* All types should appear above */
break;
}

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: cmclib - Local implementation of C library functions
* $Revision: 1.51 $
* $Revision: 1.52 $
*
*****************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: utcopy - Internal to external object translation utilities
* $Revision: 1.110 $
* $Revision: 1.114 $
*
*****************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -734,21 +734,30 @@ AcpiUtCopySimpleObject (
/*
* Allocate and copy the actual buffer if and only if:
* 1) There is a valid buffer (length > 0)
* 1) There is a valid buffer pointer
* 2) The buffer is not static (not in an ACPI table) (in this case,
* the actual pointer was already copied above)
*/
if ((SourceDesc->Buffer.Length) &&
if ((SourceDesc->Buffer.Pointer) &&
(!(SourceDesc->Common.Flags & AOPOBJ_STATIC_POINTER)))
{
DestDesc->Buffer.Pointer = ACPI_MEM_ALLOCATE (SourceDesc->Buffer.Length);
if (!DestDesc->Buffer.Pointer)
{
return (AE_NO_MEMORY);
}
DestDesc->Buffer.Pointer = NULL;
ACPI_MEMCPY (DestDesc->Buffer.Pointer, SourceDesc->Buffer.Pointer,
SourceDesc->Buffer.Length);
/* Create an actual buffer only if length > 0 */
if (SourceDesc->Buffer.Length)
{
DestDesc->Buffer.Pointer = ACPI_MEM_ALLOCATE (SourceDesc->Buffer.Length);
if (!DestDesc->Buffer.Pointer)
{
return (AE_NO_MEMORY);
}
/* Copy the actual buffer data */
ACPI_MEMCPY (DestDesc->Buffer.Pointer, SourceDesc->Buffer.Pointer,
SourceDesc->Buffer.Length);
}
}
break;
@ -756,21 +765,21 @@ AcpiUtCopySimpleObject (
/*
* Allocate and copy the actual string if and only if:
* 1) There is a valid string (length > 0)
* 1) There is a valid string pointer
* 2) The string is not static (not in an ACPI table) (in this case,
* the actual pointer was already copied above)
*/
if ((SourceDesc->String.Length) &&
if ((SourceDesc->String.Pointer) &&
(!(SourceDesc->Common.Flags & AOPOBJ_STATIC_POINTER)))
{
DestDesc->String.Pointer = ACPI_MEM_ALLOCATE (SourceDesc->String.Length + 1);
DestDesc->String.Pointer = ACPI_MEM_ALLOCATE ((ACPI_SIZE) SourceDesc->String.Length + 1);
if (!DestDesc->String.Pointer)
{
return (AE_NO_MEMORY);
}
ACPI_MEMCPY (DestDesc->String.Pointer, SourceDesc->String.Pointer,
SourceDesc->String.Length + 1);
(ACPI_SIZE) SourceDesc->String.Length + 1);
}
break;

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: utdebug - Debug print routines
* $Revision: 1.108 $
* $Revision: 1.111 $
*
*****************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -530,7 +530,7 @@ AcpiUtValueExit (
AcpiUtDebugPrint (ACPI_LV_FUNCTIONS, LineNumber, DbgInfo,
"%s %8.8X%8.8X\n", AcpiGbl_FnExitStr,
ACPI_HIDWORD (Value), ACPI_LODWORD (Value));
ACPI_FORMAT_UINT64 (Value));
AcpiGbl_NestingLevel--;
}
@ -648,8 +648,7 @@ AcpiUtDumpBuffer (
case DB_WORD_DISPLAY:
ACPI_MOVE_UNALIGNED16_TO_32 (&Temp32,
&Buffer[i + j]);
ACPI_MOVE_16_TO_32 (&Temp32, &Buffer[i + j]);
AcpiOsPrintf ("%04X ", Temp32);
j += 2;
break;
@ -657,8 +656,7 @@ AcpiUtDumpBuffer (
case DB_DWORD_DISPLAY:
ACPI_MOVE_UNALIGNED32_TO_32 (&Temp32,
&Buffer[i + j]);
ACPI_MOVE_32_TO_32 (&Temp32, &Buffer[i + j]);
AcpiOsPrintf ("%08X ", Temp32);
j += 4;
break;
@ -666,12 +664,10 @@ AcpiUtDumpBuffer (
case DB_QWORD_DISPLAY:
ACPI_MOVE_UNALIGNED32_TO_32 (&Temp32,
&Buffer[i + j]);
ACPI_MOVE_32_TO_32 (&Temp32, &Buffer[i + j]);
AcpiOsPrintf ("%08X", Temp32);
ACPI_MOVE_UNALIGNED32_TO_32 (&Temp32,
&Buffer[i + j + 4]);
ACPI_MOVE_32_TO_32 (&Temp32, &Buffer[i + j + 4]);
AcpiOsPrintf ("%08X ", Temp32);
j += 8;
break;

View File

@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: utdelete - object deletion and reference count utilities
* $Revision: 1.95 $
* $Revision: 1.99 $
*
******************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -119,6 +119,7 @@
#include "acpi.h"
#include "acinterp.h"
#include "acnamesp.h"
#include "acevents.h"
#define _COMPONENT ACPI_UTILITIES
ACPI_MODULE_NAME ("utdelete")
@ -144,6 +145,7 @@ AcpiUtDeleteInternalObj (
void *ObjPointer = NULL;
ACPI_OPERAND_OBJECT *HandlerDesc;
ACPI_OPERAND_OBJECT *SecondDesc;
ACPI_OPERAND_OBJECT *NextDesc;
ACPI_FUNCTION_TRACE_PTR ("UtDeleteInternalObj", Object);
@ -208,6 +210,25 @@ AcpiUtDeleteInternalObj (
break;
case ACPI_TYPE_DEVICE:
if (Object->Device.GpeBlock)
{
(void) AcpiEvDeleteGpeBlock (Object->Device.GpeBlock);
}
/* Walk the handler list for this device */
HandlerDesc = Object->Device.Handler;
while (HandlerDesc)
{
NextDesc = HandlerDesc->AddressSpace.Next;
AcpiUtRemoveReference (HandlerDesc);
HandlerDesc = NextDesc;
}
break;
case ACPI_TYPE_MUTEX:
ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "***** Mutex %p, Semaphore %p\n",
@ -254,11 +275,15 @@ AcpiUtDeleteInternalObj (
* default handlers -- and therefore, we created the context object
* locally, it was not created by an external caller.
*/
HandlerDesc = Object->Region.AddrHandler;
if ((HandlerDesc) &&
(HandlerDesc->AddrHandler.Hflags == ACPI_ADDR_HANDLER_DEFAULT_INSTALLED))
HandlerDesc = Object->Region.Handler;
if (HandlerDesc)
{
ObjPointer = SecondDesc->Extra.RegionContext;
if (HandlerDesc->AddressSpace.Hflags & ACPI_ADDR_HANDLER_DEFAULT_INSTALLED)
{
ObjPointer = SecondDesc->Extra.RegionContext;
}
AcpiUtRemoveReference (HandlerDesc);
}
/* Now we can free the Extra object */
@ -284,7 +309,6 @@ AcpiUtDeleteInternalObj (
break;
}
/* Free any allocated memory (pointer within the object) found above */
if (ObjPointer)
@ -375,7 +399,7 @@ AcpiUtUpdateRefCount (
NewCount = Count;
/*
* Reference count action (increment, decrement, or force delete)
* Perform the reference count action (increment, decrement, or force delete)
*/
switch (Action)
{
@ -484,8 +508,6 @@ AcpiUtUpdateObjectReference (
{
ACPI_STATUS Status;
UINT32 i;
ACPI_OPERAND_OBJECT *Next;
ACPI_OPERAND_OBJECT *New;
ACPI_GENERIC_STATE *StateList = NULL;
ACPI_GENERIC_STATE *State;
@ -500,9 +522,8 @@ AcpiUtUpdateObjectReference (
return_ACPI_STATUS (AE_OK);
}
/*
* Make sure that this isn't a namespace handle
*/
/* Make sure that this isn't a namespace handle */
if (ACPI_GET_DESCRIPTOR_TYPE (Object) == ACPI_DESC_TYPE_NAMED)
{
ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "Object %p is NS handle\n", Object));
@ -525,30 +546,8 @@ AcpiUtUpdateObjectReference (
{
case ACPI_TYPE_DEVICE:
Status = AcpiUtCreateUpdateStateAndPush (Object->Device.AddrHandler,
Action, &StateList);
if (ACPI_FAILURE (Status))
{
goto ErrorExit;
}
AcpiUtUpdateRefCount (Object->Device.SysHandler, Action);
AcpiUtUpdateRefCount (Object->Device.DrvHandler, Action);
break;
case ACPI_TYPE_LOCAL_ADDRESS_HANDLER:
/* Must walk list of address handlers */
Next = Object->AddrHandler.Next;
while (Next)
{
New = Next->AddrHandler.Next;
AcpiUtUpdateRefCount (Next, Action);
Next = New;
}
AcpiUtUpdateRefCount (Object->Device.SystemNotify, Action);
AcpiUtUpdateRefCount (Object->Device.DeviceNotify, Action);
break;
@ -686,17 +685,15 @@ AcpiUtAddReference (
ACPI_FUNCTION_TRACE_PTR ("UtAddReference", Object);
/*
* Ensure that we have a valid object
*/
/* Ensure that we have a valid object */
if (!AcpiUtValidInternalObject (Object))
{
return_VOID;
}
/*
* We have a valid ACPI internal object, now increment the reference count
*/
/* Increment the reference count */
(void) AcpiUtUpdateObjectReference (Object, REF_INCREMENT);
return_VOID;
}
@ -721,6 +718,7 @@ AcpiUtRemoveReference (
ACPI_FUNCTION_TRACE_PTR ("UtRemoveReference", Object);
/*
* Allow a NULL pointer to be passed in, just ignore it. This saves
* each caller from having to check. Also, ignore NS nodes.
@ -733,9 +731,8 @@ AcpiUtRemoveReference (
return_VOID;
}
/*
* Ensure that we have a valid object
*/
/* Ensure that we have a valid object */
if (!AcpiUtValidInternalObject (Object))
{
return_VOID;

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: uteval - Object evaluation
* $Revision: 1.45 $
* $Revision: 1.50 $
*
*****************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -167,7 +167,7 @@ AcpiUtEvaluateObject (
if (Status == AE_NOT_FOUND)
{
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[%4.4s.%s] was not found\n",
PrefixNode->Name.Ascii, Path));
AcpiUtGetNodeName (PrefixNode), Path));
}
else
{
@ -290,6 +290,47 @@ AcpiUtEvaluateNumericObject (
}
/*******************************************************************************
*
* FUNCTION: AcpiUtCopyIdString
*
* PARAMETERS: Destination - Where to copy the string
* Source - Source string
* MaxLength - Length of the destination buffer
*
* RETURN: None
*
* DESCRIPTION: Copies an ID string for the _HID, _CID, and _UID methods.
* Performs removal of a leading asterisk if present -- workaround
* for a known issue on a bunch of machines.
*
******************************************************************************/
static void
AcpiUtCopyIdString (
char *Destination,
char *Source,
ACPI_SIZE MaxLength)
{
/*
* Workaround for ID strings that have a leading asterisk. This construct
* is not allowed by the ACPI specification (ID strings must be
* alphanumeric), but enough existing machines have this embedded in their
* ID strings that the following code is useful.
*/
if (*Source == '*')
{
Source++;
}
/* Do the actual copy */
ACPI_STRNCPY (Destination, Source, MaxLength);
}
/*******************************************************************************
*
* FUNCTION: AcpiUtExecute_HID
@ -329,13 +370,14 @@ AcpiUtExecute_HID (
{
/* Convert the Numeric HID to string */
AcpiExEisaIdToString ((UINT32) ObjDesc->Integer.Value, Hid->Buffer);
AcpiExEisaIdToString ((UINT32) ObjDesc->Integer.Value, Hid->Value);
}
else
{
/* Copy the String HID from the returned object */
ACPI_STRNCPY (Hid->Buffer, ObjDesc->String.Pointer, sizeof(Hid->Buffer));
AcpiUtCopyIdString (Hid->Value, ObjDesc->String.Pointer,
sizeof (Hid->Value));
}
/* On exit, we must delete the return object */
@ -345,6 +387,59 @@ AcpiUtExecute_HID (
}
/*******************************************************************************
*
* FUNCTION: AcpiUtTranslateOneCid
*
* PARAMETERS: ObjDesc - _CID object, must be integer or string
* OneCid - Where the CID string is returned
*
* RETURN: Status
*
* DESCRIPTION: Return a numeric or string _CID value as a string.
* (Compatible ID)
*
* NOTE: Assumes a maximum _CID string length of
* ACPI_MAX_CID_LENGTH.
*
******************************************************************************/
static ACPI_STATUS
AcpiUtTranslateOneCid (
ACPI_OPERAND_OBJECT *ObjDesc,
ACPI_COMPATIBLE_ID *OneCid)
{
switch (ACPI_GET_OBJECT_TYPE (ObjDesc))
{
case ACPI_TYPE_INTEGER:
/* Convert the Numeric CID to string */
AcpiExEisaIdToString ((UINT32) ObjDesc->Integer.Value, OneCid->Value);
return (AE_OK);
case ACPI_TYPE_STRING:
if (ObjDesc->String.Length > ACPI_MAX_CID_LENGTH)
{
return (AE_AML_STRING_LIMIT);
}
/* Copy the String CID from the returned object */
AcpiUtCopyIdString (OneCid->Value, ObjDesc->String.Pointer,
ACPI_MAX_CID_LENGTH);
return (AE_OK);
default:
return (AE_TYPE);
}
}
/*******************************************************************************
*
* FUNCTION: AcpiUtExecute_CID
@ -364,57 +459,95 @@ AcpiUtExecute_HID (
ACPI_STATUS
AcpiUtExecute_CID (
ACPI_NAMESPACE_NODE *DeviceNode,
ACPI_DEVICE_ID *Cid)
ACPI_COMPATIBLE_ID_LIST **ReturnCidList)
{
ACPI_OPERAND_OBJECT *ObjDesc;
ACPI_STATUS Status;
UINT32 Count;
UINT32 Size;
ACPI_COMPATIBLE_ID_LIST *CidList;
ACPI_NATIVE_UINT i;
ACPI_FUNCTION_TRACE ("UtExecute_CID");
/* Evaluate the _CID method for this device */
Status = AcpiUtEvaluateObject (DeviceNode, METHOD_NAME__CID,
ACPI_BTYPE_INTEGER | ACPI_BTYPE_STRING | ACPI_BTYPE_PACKAGE, &ObjDesc);
ACPI_BTYPE_INTEGER | ACPI_BTYPE_STRING | ACPI_BTYPE_PACKAGE,
&ObjDesc);
if (ACPI_FAILURE (Status))
{
return_ACPI_STATUS (Status);
}
/*
* A _CID can return either a single compatible ID or a package of compatible
* IDs. Each compatible ID can be a Number (32 bit compressed EISA ID) or
* string (PCI ID format, e.g. "PCI\VEN_vvvv&DEV_dddd&SUBSYS_ssssssss").
*/
switch (ACPI_GET_OBJECT_TYPE (ObjDesc))
/* Get the number of _CIDs returned */
Count = 1;
if (ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_PACKAGE)
{
case ACPI_TYPE_INTEGER:
/* Convert the Numeric CID to string */
AcpiExEisaIdToString ((UINT32) ObjDesc->Integer.Value, Cid->Buffer);
break;
case ACPI_TYPE_STRING:
/* Copy the String CID from the returned object */
ACPI_STRNCPY (Cid->Buffer, ObjDesc->String.Pointer, sizeof (Cid->Buffer));
break;
case ACPI_TYPE_PACKAGE:
/* TBD: Parse package elements; need different return struct, etc. */
Status = AE_SUPPORT;
break;
default:
Status = AE_TYPE;
break;
Count = ObjDesc->Package.Count;
}
/* On exit, we must delete the return object */
/* Allocate a worst-case buffer for the _CIDs */
Size = (((Count - 1) * sizeof (ACPI_COMPATIBLE_ID)) +
sizeof (ACPI_COMPATIBLE_ID_LIST));
CidList = ACPI_MEM_CALLOCATE ((ACPI_SIZE) Size);
if (!CidList)
{
return_ACPI_STATUS (AE_NO_MEMORY);
}
/* Init CID list */
CidList->Count = Count;
CidList->Size = Size;
/*
* A _CID can return either a single compatible ID or a package of compatible
* IDs. Each compatible ID can be one of the following:
* -- Number (32 bit compressed EISA ID) or
* -- String (PCI ID format, e.g. "PCI\VEN_vvvv&DEV_dddd&SUBSYS_ssssssss").
*/
/* The _CID object can be either a single CID or a package (list) of CIDs */
if (ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_PACKAGE)
{
/* Translate each package element */
for (i = 0; i < Count; i++)
{
Status = AcpiUtTranslateOneCid (ObjDesc->Package.Elements[i],
&CidList->Id[i]);
if (ACPI_FAILURE (Status))
{
break;
}
}
}
else
{
/* Only one CID, translate to a string */
Status = AcpiUtTranslateOneCid (ObjDesc, CidList->Id);
}
/* Cleanup on error */
if (ACPI_FAILURE (Status))
{
ACPI_MEM_FREE (CidList);
}
else
{
*ReturnCidList = CidList;
}
/* On exit, we must delete the _CID return object */
AcpiUtRemoveReference (ObjDesc);
return_ACPI_STATUS (Status);
@ -460,13 +593,14 @@ AcpiUtExecute_UID (
{
/* Convert the Numeric UID to string */
AcpiExUnsignedIntegerToString (ObjDesc->Integer.Value, Uid->Buffer);
AcpiExUnsignedIntegerToString (ObjDesc->Integer.Value, Uid->Value);
}
else
{
/* Copy the String UID from the returned object */
ACPI_STRNCPY (Uid->Buffer, ObjDesc->String.Pointer, sizeof (Uid->Buffer));
AcpiUtCopyIdString (Uid->Value, ObjDesc->String.Pointer,
sizeof (Uid->Value));
}
/* On exit, we must delete the return object */
@ -512,7 +646,7 @@ AcpiUtExecute_STA (
{
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
"_STA on %4.4s was not found, assuming device is present\n",
DeviceNode->Name.Ascii));
AcpiUtGetNodeName (DeviceNode)));
*Flags = 0x0F;
Status = AE_OK;

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: utglobal - Global variables for the ACPI subsystem
* $Revision: 1.178 $
* $Revision: 1.192 $
*
*****************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -380,17 +380,17 @@ AcpiUtHexToAsciiChar (
******************************************************************************/
ACPI_TABLE_DESC AcpiGbl_AcpiTables[NUM_ACPI_TABLES];
ACPI_TABLE_LIST AcpiGbl_TableLists[NUM_ACPI_TABLE_TYPES];
ACPI_TABLE_SUPPORT AcpiGbl_AcpiTableData[NUM_ACPI_TABLES] =
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},
/* 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},
@ -439,7 +439,7 @@ ACPI_FIXED_EVENT_INFO AcpiGbl_FixedEventInfo[ACPI_NUM_FIXED_EVENTS] =
/* ACPI_EVENT_GLOBAL */ {ACPI_BITREG_GLOBAL_LOCK_STATUS, ACPI_BITREG_GLOBAL_LOCK_ENABLE, ACPI_BITMASK_GLOBAL_LOCK_STATUS, ACPI_BITMASK_GLOBAL_LOCK_ENABLE},
/* ACPI_EVENT_POWER_BUTTON */ {ACPI_BITREG_POWER_BUTTON_STATUS, ACPI_BITREG_POWER_BUTTON_ENABLE, ACPI_BITMASK_POWER_BUTTON_STATUS, ACPI_BITMASK_POWER_BUTTON_ENABLE},
/* ACPI_EVENT_SLEEP_BUTTON */ {ACPI_BITREG_SLEEP_BUTTON_STATUS, ACPI_BITREG_SLEEP_BUTTON_ENABLE, ACPI_BITMASK_SLEEP_BUTTON_STATUS, ACPI_BITMASK_SLEEP_BUTTON_ENABLE},
/* ACPI_EVENT_RTC */ {ACPI_BITREG_RT_CLOCK_STATUS, ACPI_BITREG_RT_CLOCK_ENABLE, 0, 0},
/* ACPI_EVENT_RTC */ {ACPI_BITREG_RT_CLOCK_STATUS, ACPI_BITREG_RT_CLOCK_ENABLE, ACPI_BITMASK_RT_CLOCK_STATUS, ACPI_BITMASK_RT_CLOCK_ENABLE},
};
/*****************************************************************************
@ -458,6 +458,7 @@ 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",
@ -465,7 +466,8 @@ const char *AcpiGbl_RegionTypes[ACPI_NUM_PREDEFINED_REGIONS] =
"SMBus",
"CMOS",
"PCIBARTarget",
"DataTable",
"DataTable"
/*! [End] no source code translation !*/
};
@ -481,7 +483,7 @@ AcpiUtGetRegionName (
else if (SpaceId >= ACPI_NUM_PREDEFINED_REGIONS)
{
return ("InvalidSpaceID");
return ("InvalidSpaceId");
}
return ((char *) AcpiGbl_RegionTypes[SpaceId]);
@ -613,13 +615,104 @@ AcpiUtGetObjectTypeName (
}
#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
/*****************************************************************************
*
* FUNCTION: AcpiUtGetNodeName
*
* PARAMETERS: Object - A namespace node
*
* RETURN: Pointer to a string
*
* DESCRIPTION: Validate the node and return the node's ACPI name.
*
****************************************************************************/
char *
AcpiUtGetNodeName (
void *Object)
{
ACPI_NAMESPACE_NODE *Node;
if (!Object)
{
return ("NULL NODE");
}
Node = (ACPI_NAMESPACE_NODE *) Object;
if (Node->Descriptor != ACPI_DESC_TYPE_NAMED)
{
return ("****");
}
if (!AcpiUtValidAcpiName (* (UINT32 *) Node->Name.Ascii))
{
return ("----");
}
return (Node->Name.Ascii);
}
/*****************************************************************************
*
* FUNCTION: AcpiUtGetDescriptorName
*
* PARAMETERS: Object - An ACPI object
*
* RETURN: Pointer to a string
*
* DESCRIPTION: Validate object and return the descriptor type
*
****************************************************************************/
static const char *AcpiGbl_DescTypeNames[] = /* printable names of descriptor types */
{
/* 00 */ "Invalid",
/* 01 */ "Cached",
/* 02 */ "State-Generic",
/* 03 */ "State-Update",
/* 04 */ "State-Package",
/* 05 */ "State-Control",
/* 06 */ "State-RootParseScope",
/* 07 */ "State-ParseScope",
/* 08 */ "State-WalkScope",
/* 09 */ "State-Result",
/* 10 */ "State-Notify",
/* 11 */ "State-Thread",
/* 12 */ "Walk",
/* 13 */ "Parser",
/* 14 */ "Operand",
/* 15 */ "Node"
};
char *
AcpiUtGetDescriptorName (
void *Object)
{
if (!Object)
{
return ("NULL OBJECT");
}
if (ACPI_GET_DESCRIPTOR_TYPE (Object) > ACPI_DESC_TYPE_MAX)
{
return ((char *) AcpiGbl_BadType);
}
return ((char *) AcpiGbl_DescTypeNames[ACPI_GET_DESCRIPTOR_TYPE (Object)]);
}
#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
/*
* Strings and procedures used for debug only
*/
/*****************************************************************************
*
* FUNCTION: AcpiUtGetMutexName
@ -637,7 +730,7 @@ AcpiUtGetMutexName (
UINT32 MutexId)
{
if (MutexId > MAX_MTX)
if (MutexId > MAX_MUTEX)
{
return ("Invalid Mutex ID");
}
@ -645,7 +738,6 @@ AcpiUtGetMutexName (
return (AcpiGbl_MutexNames[MutexId]);
}
#endif
@ -709,9 +801,12 @@ AcpiUtAllocateOwnerId (
OwnerId = AcpiGbl_NextTableOwnerId;
AcpiGbl_NextTableOwnerId++;
/* Check for wraparound */
if (AcpiGbl_NextTableOwnerId == ACPI_FIRST_METHOD_ID)
{
AcpiGbl_NextTableOwnerId = ACPI_FIRST_TABLE_ID;
ACPI_REPORT_WARNING (("Table owner ID wraparound\n"));
}
break;
@ -723,6 +818,8 @@ AcpiUtAllocateOwnerId (
if (AcpiGbl_NextMethodOwnerId == ACPI_FIRST_TABLE_ID)
{
/* Check for wraparound */
AcpiGbl_NextMethodOwnerId = ACPI_FIRST_METHOD_ID;
}
break;
@ -789,29 +886,31 @@ AcpiUtInitGlobals (
/* ACPI table structure */
for (i = 0; i < NUM_ACPI_TABLES; i++)
for (i = 0; i < NUM_ACPI_TABLE_TYPES; i++)
{
AcpiGbl_AcpiTables[i].Prev = &AcpiGbl_AcpiTables[i];
AcpiGbl_AcpiTables[i].Next = &AcpiGbl_AcpiTables[i];
AcpiGbl_AcpiTables[i].Pointer = NULL;
AcpiGbl_AcpiTables[i].Length = 0;
AcpiGbl_AcpiTables[i].Allocation = ACPI_MEM_NOT_ALLOCATED;
AcpiGbl_AcpiTables[i].Count = 0;
AcpiGbl_TableLists[i].Next = NULL;
AcpiGbl_TableLists[i].Count = 0;
}
/* Mutex locked flags */
for (i = 0; i < NUM_MTX; i++)
for (i = 0; i < NUM_MUTEX; i++)
{
AcpiGbl_AcpiMutexInfo[i].Mutex = NULL;
AcpiGbl_AcpiMutexInfo[i].OwnerId = ACPI_MUTEX_NOT_ACQUIRED;
AcpiGbl_AcpiMutexInfo[i].UseCount = 0;
AcpiGbl_MutexInfo[i].Mutex = NULL;
AcpiGbl_MutexInfo[i].OwnerId = ACPI_MUTEX_NOT_ACQUIRED;
AcpiGbl_MutexInfo[i].UseCount = 0;
}
/* GPE support */
AcpiGbl_GpeXruptListHead = NULL;
AcpiGbl_GpeFadtBlocks[0] = NULL;
AcpiGbl_GpeFadtBlocks[1] = NULL;
/* Global notify handlers */
AcpiGbl_SysNotify.Handler = NULL;
AcpiGbl_DrvNotify.Handler = NULL;
AcpiGbl_SystemNotify.Handler = NULL;
AcpiGbl_DeviceNotify.Handler = NULL;
AcpiGbl_InitHandler = NULL;
/* Global "typed" ACPI table pointers */
@ -845,8 +944,6 @@ AcpiUtInitGlobals (
/* Hardware oriented */
AcpiGbl_GpeRegisterInfo = NULL;
AcpiGbl_GpeNumberInfo = NULL;
AcpiGbl_EventsInitialized = FALSE;
/* Namespace */

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: utinit - Common ACPI subsystem initialization
* $Revision: 1.116 $
* $Revision: 1.118 $
*
*****************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -250,20 +250,44 @@ AcpiUtValidateFadt (
*
* RETURN: none
*
* DESCRIPTION: free memory allocated for table storage.
* DESCRIPTION: free global memory
*
******************************************************************************/
void
AcpiUtTerminate (void)
{
ACPI_GPE_BLOCK_INFO *GpeBlock;
ACPI_GPE_BLOCK_INFO *NextGpeBlock;
ACPI_GPE_XRUPT_INFO *GpeXruptInfo;
ACPI_GPE_XRUPT_INFO *NextGpeXruptInfo;
ACPI_FUNCTION_TRACE ("UtTerminate");
/* Free global tables, etc. */
/* Nothing to do at this time */
/* Free global GPE blocks and related info structures */
GpeXruptInfo = AcpiGbl_GpeXruptListHead;
while (GpeXruptInfo)
{
GpeBlock = GpeXruptInfo->GpeBlockListHead;
while (GpeBlock)
{
NextGpeBlock = GpeBlock->Next;
ACPI_MEM_FREE (GpeBlock->EventInfo);
ACPI_MEM_FREE (GpeBlock->RegisterInfo);
ACPI_MEM_FREE (GpeBlock);
GpeBlock = NextGpeBlock;
}
NextGpeXruptInfo = GpeXruptInfo->Next;
ACPI_MEM_FREE (GpeXruptInfo);
GpeXruptInfo = NextGpeXruptInfo;
}
return_VOID;
}

View File

@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: utmath - Integer math support routines
* $Revision: 1.12 $
* $Revision: 1.13 $
*
******************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License

View File

@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: utmisc - common utility procedures
* $Revision: 1.93 $
* $Revision: 1.99 $
*
******************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -284,13 +284,15 @@ AcpiUtSetIntegerWidth (
if (Revision <= 1)
{
AcpiGbl_IntegerBitWidth = 32;
AcpiGbl_IntegerByteWidth = 4;
AcpiGbl_IntegerBitWidth = 32;
AcpiGbl_IntegerNybbleWidth = 8;
AcpiGbl_IntegerByteWidth = 4;
}
else
{
AcpiGbl_IntegerBitWidth = 64;
AcpiGbl_IntegerByteWidth = 8;
AcpiGbl_IntegerBitWidth = 64;
AcpiGbl_IntegerNybbleWidth = 16;
AcpiGbl_IntegerByteWidth = 8;
}
}
@ -389,7 +391,8 @@ AcpiUtValidAcpiName (
UINT32 Name)
{
char *NamePtr = (char *) &Name;
UINT32 i;
char Character;
ACPI_NATIVE_UINT i;
ACPI_FUNCTION_ENTRY ();
@ -397,9 +400,12 @@ AcpiUtValidAcpiName (
for (i = 0; i < ACPI_NAME_SIZE; i++)
{
if (!((NamePtr[i] == '_') ||
(NamePtr[i] >= 'A' && NamePtr[i] <= 'Z') ||
(NamePtr[i] >= '0' && NamePtr[i] <= '9')))
Character = *NamePtr;
NamePtr++;
if (!((Character == '_') ||
(Character >= 'A' && Character <= 'Z') ||
(Character >= '0' && Character <= '9')))
{
return (FALSE);
}
@ -656,7 +662,7 @@ AcpiUtMutexInitialize (
/*
* Create each of the predefined mutex objects
*/
for (i = 0; i < NUM_MTX; i++)
for (i = 0; i < NUM_MUTEX; i++)
{
Status = AcpiUtCreateMutex (i);
if (ACPI_FAILURE (Status))
@ -665,6 +671,9 @@ AcpiUtMutexInitialize (
}
}
Status = AcpiOsCreateLock (&AcpiGbl_GpeLock);
return_ACPI_STATUS (AE_OK);
}
@ -694,11 +703,12 @@ AcpiUtMutexTerminate (
/*
* Delete each predefined mutex object
*/
for (i = 0; i < NUM_MTX; i++)
for (i = 0; i < NUM_MUTEX; i++)
{
(void) AcpiUtDeleteMutex (i);
}
AcpiOsDeleteLock (AcpiGbl_GpeLock);
return_VOID;
}
@ -725,17 +735,17 @@ AcpiUtCreateMutex (
ACPI_FUNCTION_TRACE_U32 ("UtCreateMutex", MutexId);
if (MutexId > MAX_MTX)
if (MutexId > MAX_MUTEX)
{
return_ACPI_STATUS (AE_BAD_PARAMETER);
}
if (!AcpiGbl_AcpiMutexInfo[MutexId].Mutex)
if (!AcpiGbl_MutexInfo[MutexId].Mutex)
{
Status = AcpiOsCreateSemaphore (1, 1,
&AcpiGbl_AcpiMutexInfo[MutexId].Mutex);
AcpiGbl_AcpiMutexInfo[MutexId].OwnerId = ACPI_MUTEX_NOT_ACQUIRED;
AcpiGbl_AcpiMutexInfo[MutexId].UseCount = 0;
&AcpiGbl_MutexInfo[MutexId].Mutex);
AcpiGbl_MutexInfo[MutexId].OwnerId = ACPI_MUTEX_NOT_ACQUIRED;
AcpiGbl_MutexInfo[MutexId].UseCount = 0;
}
return_ACPI_STATUS (Status);
@ -764,15 +774,15 @@ AcpiUtDeleteMutex (
ACPI_FUNCTION_TRACE_U32 ("UtDeleteMutex", MutexId);
if (MutexId > MAX_MTX)
if (MutexId > MAX_MUTEX)
{
return_ACPI_STATUS (AE_BAD_PARAMETER);
}
Status = AcpiOsDeleteSemaphore (AcpiGbl_AcpiMutexInfo[MutexId].Mutex);
Status = AcpiOsDeleteSemaphore (AcpiGbl_MutexInfo[MutexId].Mutex);
AcpiGbl_AcpiMutexInfo[MutexId].Mutex = NULL;
AcpiGbl_AcpiMutexInfo[MutexId].OwnerId = ACPI_MUTEX_NOT_ACQUIRED;
AcpiGbl_MutexInfo[MutexId].Mutex = NULL;
AcpiGbl_MutexInfo[MutexId].OwnerId = ACPI_MUTEX_NOT_ACQUIRED;
return_ACPI_STATUS (Status);
}
@ -802,7 +812,7 @@ AcpiUtAcquireMutex (
ACPI_FUNCTION_NAME ("UtAcquireMutex");
if (MutexId > MAX_MTX)
if (MutexId > MAX_MUTEX)
{
return (AE_BAD_PARAMETER);
}
@ -815,9 +825,9 @@ AcpiUtAcquireMutex (
* the mutex ordering rule. This indicates a coding error somewhere in
* the ACPI subsystem code.
*/
for (i = MutexId; i < MAX_MTX; i++)
for (i = MutexId; i < MAX_MUTEX; i++)
{
if (AcpiGbl_AcpiMutexInfo[i].OwnerId == ThisThreadId)
if (AcpiGbl_MutexInfo[i].OwnerId == ThisThreadId)
{
if (i == MutexId)
{
@ -841,15 +851,15 @@ AcpiUtAcquireMutex (
"Thread %X attempting to acquire Mutex [%s]\n",
ThisThreadId, AcpiUtGetMutexName (MutexId)));
Status = AcpiOsWaitSemaphore (AcpiGbl_AcpiMutexInfo[MutexId].Mutex,
Status = AcpiOsWaitSemaphore (AcpiGbl_MutexInfo[MutexId].Mutex,
1, ACPI_WAIT_FOREVER);
if (ACPI_SUCCESS (Status))
{
ACPI_DEBUG_PRINT ((ACPI_DB_MUTEX, "Thread %X acquired Mutex [%s]\n",
ThisThreadId, AcpiUtGetMutexName (MutexId)));
AcpiGbl_AcpiMutexInfo[MutexId].UseCount++;
AcpiGbl_AcpiMutexInfo[MutexId].OwnerId = ThisThreadId;
AcpiGbl_MutexInfo[MutexId].UseCount++;
AcpiGbl_MutexInfo[MutexId].OwnerId = ThisThreadId;
}
else
{
@ -891,7 +901,7 @@ AcpiUtReleaseMutex (
"Thread %X releasing Mutex [%s]\n", ThisThreadId,
AcpiUtGetMutexName (MutexId)));
if (MutexId > MAX_MTX)
if (MutexId > MAX_MUTEX)
{
return (AE_BAD_PARAMETER);
}
@ -899,7 +909,7 @@ AcpiUtReleaseMutex (
/*
* Mutex must be acquired in order to release it!
*/
if (AcpiGbl_AcpiMutexInfo[MutexId].OwnerId == ACPI_MUTEX_NOT_ACQUIRED)
if (AcpiGbl_MutexInfo[MutexId].OwnerId == ACPI_MUTEX_NOT_ACQUIRED)
{
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
"Mutex [%s] is not acquired, cannot release\n",
@ -914,9 +924,9 @@ AcpiUtReleaseMutex (
* ordering rule. This indicates a coding error somewhere in
* the ACPI subsystem code.
*/
for (i = MutexId; i < MAX_MTX; i++)
for (i = MutexId; i < MAX_MUTEX; i++)
{
if (AcpiGbl_AcpiMutexInfo[i].OwnerId == ThisThreadId)
if (AcpiGbl_MutexInfo[i].OwnerId == ThisThreadId)
{
if (i == MutexId)
{
@ -933,9 +943,9 @@ AcpiUtReleaseMutex (
/* Mark unlocked FIRST */
AcpiGbl_AcpiMutexInfo[MutexId].OwnerId = ACPI_MUTEX_NOT_ACQUIRED;
AcpiGbl_MutexInfo[MutexId].OwnerId = ACPI_MUTEX_NOT_ACQUIRED;
Status = AcpiOsSignalSemaphore (AcpiGbl_AcpiMutexInfo[MutexId].Mutex, 1);
Status = AcpiOsSignalSemaphore (AcpiGbl_MutexInfo[MutexId].Mutex, 1);
if (ACPI_FAILURE (Status))
{

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: utobject - ACPI object create/delete/size/cache routines
* $Revision: 1.82 $
* $Revision: 1.86 $
*
*****************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -226,7 +226,7 @@ AcpiUtCreateBufferObject (
ACPI_SIZE BufferSize)
{
ACPI_OPERAND_OBJECT *BufferDesc;
UINT8 *Buffer;
UINT8 *Buffer = NULL;
ACPI_FUNCTION_TRACE_U32 ("UtCreateBufferObject", BufferSize);
@ -241,15 +241,20 @@ AcpiUtCreateBufferObject (
return_PTR (NULL);
}
/* Allocate the actual buffer */
/* Create an actual buffer only if size > 0 */
Buffer = ACPI_MEM_CALLOCATE (BufferSize);
if (!Buffer)
if (BufferSize > 0)
{
ACPI_REPORT_ERROR (("CreateBuffer: could not allocate size %X\n",
(UINT32) BufferSize));
AcpiUtRemoveReference (BufferDesc);
return_PTR (NULL);
/* Allocate the actual buffer */
Buffer = ACPI_MEM_CALLOCATE (BufferSize);
if (!Buffer)
{
ACPI_REPORT_ERROR (("CreateBuffer: could not allocate size %X\n",
(UINT32) BufferSize));
AcpiUtRemoveReference (BufferDesc);
return_PTR (NULL);
}
}
/* Complete buffer object initialization */
@ -300,29 +305,10 @@ AcpiUtValidInternalObject (
return (TRUE);
case ACPI_DESC_TYPE_NAMED:
ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
"**** Obj %p is a named obj, not ACPI obj\n", Object));
break;
case ACPI_DESC_TYPE_PARSER:
ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
"**** Obj %p is a parser obj, not ACPI obj\n", Object));
break;
case ACPI_DESC_TYPE_CACHED:
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
"**** Obj %p has already been released to internal cache\n", Object));
break;
default:
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
"**** Obj %p has unknown descriptor type %X\n", Object,
ACPI_GET_DESCRIPTOR_TYPE (Object)));
ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
"%p is not not an ACPI operand obj [%s]\n",
Object, AcpiUtGetDescriptorName (Object)));
break;
}
@ -401,7 +387,8 @@ AcpiUtDeleteObjectDesc (
if (ACPI_GET_DESCRIPTOR_TYPE (Object) != ACPI_DESC_TYPE_OPERAND)
{
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
"Obj %p is not an ACPI object\n", Object));
"%p is not an ACPI Operand object [%s]\n", Object,
AcpiUtGetDescriptorName (Object)));
return_VOID;
}

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: utxface - External interfaces for "global" ACPI functions
* $Revision: 1.101 $
* $Revision: 1.105 $
*
*****************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -222,25 +222,9 @@ AcpiEnableSubsystem (
ACPI_FUNCTION_TRACE ("AcpiEnableSubsystem");
/*
* Install the default OpRegion handlers. These are installed unless
* other handlers have already been installed via the
* InstallAddressSpaceHandler interface
*/
if (!(Flags & ACPI_NO_ADDRESS_SPACE_INIT))
{
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[Init] Installing default address space handlers\n"));
Status = AcpiEvInitAddressSpaces ();
if (ACPI_FAILURE (Status))
{
return_ACPI_STATUS (Status);
}
}
/*
* We must initialize the hardware before we can enable ACPI.
* FADT values are validated here.
* The values from the FADT are validated here.
*/
if (!(Flags & ACPI_NO_HARDWARE_INIT))
{
@ -254,7 +238,7 @@ AcpiEnableSubsystem (
}
/*
* Enable ACPI on this platform
* Enable ACPI mode
*/
if (!(Flags & ACPI_NO_ACPI_ENABLE))
{
@ -271,8 +255,9 @@ AcpiEnableSubsystem (
}
/*
* Note:
* We must have the hardware AND events initialized before we can execute
* Initialize ACPI Event handling
*
* NOTE: We must have the hardware AND events initialized before we can execute
* ANY control methods SAFELY. Any control method can require ACPI hardware
* support, so the hardware MUST be initialized before execution!
*/
@ -287,7 +272,7 @@ AcpiEnableSubsystem (
}
}
/* Install SCI handler, Global Lock handler, GPE handlers */
/* Install the SCI handler, Global Lock handler, and GPE handlers */
if (!(Flags & ACPI_NO_HANDLER_INIT))
{
@ -325,6 +310,43 @@ AcpiInitializeObjects (
ACPI_FUNCTION_TRACE ("AcpiInitializeObjects");
/*
* Install the default OpRegion handlers. These are installed unless
* other handlers have already been installed via the
* InstallAddressSpaceHandler interface.
*
* NOTE: This will cause _REG methods to be run. Any objects accessed
* by the _REG methods will be automatically initialized, even if they
* contain executable AML (see call to AcpiNsInitializeObjects below).
*/
if (!(Flags & ACPI_NO_ADDRESS_SPACE_INIT))
{
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[Init] Installing default address space handlers\n"));
Status = AcpiEvInitAddressSpaces ();
if (ACPI_FAILURE (Status))
{
return_ACPI_STATUS (Status);
}
}
/*
* Initialize the objects that remain uninitialized. This
* runs the executable AML that may be part of the declaration of these
* objects: OperationRegions, BufferFields, Buffers, and Packages.
*/
if (!(Flags & ACPI_NO_OBJECT_INIT))
{
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[Init] Initializing ACPI Objects\n"));
Status = AcpiNsInitializeObjects ();
if (ACPI_FAILURE (Status))
{
return_ACPI_STATUS (Status);
}
}
/*
* Initialize all device objects in the namespace
* This runs the _STA and _INI methods.
@ -340,22 +362,6 @@ AcpiInitializeObjects (
}
}
/*
* Initialize the objects that remain uninitialized. This
* runs the executable AML that is part of the declaration of OpRegions
* and Fields.
*/
if (!(Flags & ACPI_NO_OBJECT_INIT))
{
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[Init] Initializing ACPI Objects\n"));
Status = AcpiNsInitializeObjects ();
if (ACPI_FAILURE (Status))
{
return_ACPI_STATUS (Status);
}
}
/*
* Empty the caches (delete the cached objects) on the assumption that
* the table load filled them up more than they will be at runtime --
@ -530,10 +536,10 @@ AcpiGetSystemInfo (
/* Current status of the ACPI tables, per table type */
InfoPtr->NumTableTypes = NUM_ACPI_TABLES;
for (i = 0; i < NUM_ACPI_TABLES; i++)
InfoPtr->NumTableTypes = NUM_ACPI_TABLE_TYPES;
for (i = 0; i < NUM_ACPI_TABLE_TYPES; i++)
{
InfoPtr->TableInfo[i].Count = AcpiGbl_AcpiTables[i].Count;
InfoPtr->TableInfo[i].Count = AcpiGbl_TableLists[i].Count;
}
return_ACPI_STATUS (AE_OK);

View File

@ -8,7 +8,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -171,16 +171,18 @@ void
AdDumpTables (void);
ACPI_STATUS
AdGetTables (
AdGetLocalTables (
char *Filename,
BOOLEAN GetAllTables);
ACPI_STATUS
AdParseTables (void);
AdParseTable (
ACPI_TABLE_HEADER *Table);
ACPI_STATUS
AdDisplayTables (
char *Filename);
char *Filename,
ACPI_TABLE_HEADER *Table);
ACPI_STATUS
AdDisplayStatistics (void);

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acconfig.h - Global configuration constants
* $Revision: 1.124 $
* $Revision: 1.145 $
*
*****************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -120,7 +120,7 @@
/******************************************************************************
*
* Compile-time options
* Configuration options
*
*****************************************************************************/
@ -135,21 +135,9 @@
*
*/
/******************************************************************************
*
* Subsystem Constants
*
*****************************************************************************/
/* Version string */
#define ACPI_CA_VERSION 0x20021217
/* Version of ACPI supported */
#define ACPI_CA_SUPPORT_LEVEL 2
#define ACPI_CA_VERSION 0x20031203
/* Maximum objects in the various object caches */
@ -159,6 +147,23 @@
#define ACPI_MAX_OBJECT_CACHE_DEPTH 64 /* Interpreter operand objects */
#define ACPI_MAX_WALK_CACHE_DEPTH 4 /* Objects for parse tree walks */
/*
* Should the subystem abort the loading of an ACPI table if the
* table checksum is incorrect?
*/
#define ACPI_CHECKSUM_ABORT FALSE
/******************************************************************************
*
* Subsystem Constants
*
*****************************************************************************/
/* Version of ACPI supported */
#define ACPI_CA_SUPPORT_LEVEL 2
/* String size constants */
#define ACPI_MAX_STRING_LENGTH 512
@ -177,20 +182,6 @@
#define ACPI_SYSMEM_REGION_WINDOW_SIZE 4096
/******************************************************************************
*
* Configuration of subsystem behavior
*
*****************************************************************************/
/*
* Should the subystem abort the loading of an ACPI table if the
* table checksum is incorrect?
*/
#define ACPI_CHECKSUM_ABORT FALSE
/******************************************************************************
*
* ACPI Specification constants (Do not change unless the specification changes)
@ -215,6 +206,11 @@
#define ACPI_MAX_STRING_CONVERSION 200
/* Length of _HID, _UID, and _CID values */
#define ACPI_DEVICE_ID_LENGTH 0x09
#define ACPI_MAX_CID_LENGTH 48
/*
* Operand Stack (in WALK_STATE), Must be large enough to contain METHOD_MAX_ARG
*/
@ -269,7 +265,6 @@
*
*****************************************************************************/
#define ACPI_DEBUGGER_MAX_ARGS 8 /* Must be max method args + 1 */
#define ACPI_DEBUGGER_COMMAND_PROMPT '-'

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acdebug.h - ACPI/AML debugger
* $Revision: 1.66 $
* $Revision: 1.73 $
*
*****************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -142,15 +142,15 @@ typedef struct ArgumentInfo
#define VERBOSE_PRINT(fp) DBTEST_OUTPUT_LEVEL(lvl) {\
AcpiOsPrintf PARAM_LIST(fp);}
#define EX_NO_SINGLE_STEP 1
#define EX_SINGLE_STEP 2
#define EX_NO_SINGLE_STEP 1
#define EX_SINGLE_STEP 2
/* Prototypes */
/*
* dbapi - external debugger interfaces
* dbxface - external debugger interfaces
*/
ACPI_STATUS
@ -167,6 +167,15 @@ AcpiDbSingleStep (
ACPI_PARSE_OBJECT *Op,
UINT32 OpType);
ACPI_STATUS
AcpiDbStartCommand (
ACPI_WALK_STATE *WalkState,
ACPI_PARSE_OBJECT *Op);
void
AcpiDbMethodEnd (
ACPI_WALK_STATE *WalkState);
/*
* dbcmds - debug commands and output routines
@ -242,6 +251,9 @@ void
AcpiDbDisplayResources (
char *ObjectArg);
void
AcpiDbDisplayGpes (void);
void
AcpiDbCheckIntegrity (
void);
@ -274,6 +286,10 @@ AcpiDbWalkForSpecificObjects (
void *Context,
void **ReturnValue);
void
AcpiDbGenerateGpe (
char *GpeArg,
char *BlockArg);
/*
* dbdisply - debug display commands
@ -288,10 +304,6 @@ AcpiDbDecodeAndDisplayObject (
char *Target,
char *OutputType);
void
AcpiDbDecodeNode (
ACPI_NAMESPACE_NODE *Node);
void
AcpiDbDisplayResultObject (
ACPI_OPERAND_OBJECT *ObjDesc,
@ -301,11 +313,6 @@ ACPI_STATUS
AcpiDbDisplayAllMethods (
char *DisplayCountArg);
void
AcpiDbDisplayInternalObject (
ACPI_OPERAND_OBJECT *ObjDesc,
ACPI_WALK_STATE *WalkState);
void
AcpiDbDisplayArguments (
void);
@ -322,6 +329,10 @@ void
AcpiDbDisplayCallingTree (
void);
void
AcpiDbDisplayObjectType (
char *ObjectArg);
void
AcpiDbDisplayArgumentObject (
ACPI_OPERAND_OBJECT *ObjDesc,
@ -335,10 +346,6 @@ void *
AcpiDbGetPointer (
void *Target);
void
AcpiDbDecodeInternalObject (
ACPI_OPERAND_OBJECT *ObjDesc);
/*
* dbexec - debugger control method execution
@ -373,6 +380,13 @@ void ACPI_SYSTEM_XFACE
AcpiDbMethodThread (
void *Context);
ACPI_STATUS
AcpiDbExecutionWalk (
ACPI_HANDLE ObjHandle,
UINT32 NestingLevel,
void *Context,
void **ReturnValue);
/*
* dbfileio - Debugger file I/O commands
@ -400,8 +414,14 @@ AcpiDbLoadAcpiTable (
char *Filename);
ACPI_STATUS
AcpiDbGetAcpiTable (
char *Filename);
AcpiDbGetTableFromFile (
char *Filename,
ACPI_TABLE_HEADER **Table);
ACPI_STATUS
AcpiDbReadTableFromFile (
char *Filename,
ACPI_TABLE_HEADER **Table);
/*
* dbhistry - debugger HISTORY command

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acdisasm.h - AML disassembler
* $Revision: 1.8 $
* $Revision: 1.11 $
*
*****************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -226,10 +226,6 @@ void
AcpiDmDecodeInternalObject (
ACPI_OPERAND_OBJECT *ObjDesc);
void
AcpiDmDecodeNode (
ACPI_NAMESPACE_NODE *Node);
UINT32
AcpiDmBlockType (
ACPI_PARSE_OBJECT *Op);
@ -276,6 +272,34 @@ AcpiDmCommaIfFieldMember (
ACPI_PARSE_OBJECT *Op);
/*
* dmobject
*/
void
AcpiDmDecodeNode (
ACPI_NAMESPACE_NODE *Node);
void
AcpiDmDisplayInternalObject (
ACPI_OPERAND_OBJECT *ObjDesc,
ACPI_WALK_STATE *WalkState);
void
AcpiDmDisplayArguments (
ACPI_WALK_STATE *WalkState);
void
AcpiDmDisplayLocals (
ACPI_WALK_STATE *WalkState);
void
AcpiDmDumpMethodInfo (
ACPI_STATUS Status,
ACPI_WALK_STATE *WalkState,
ACPI_PARSE_OBJECT *Op);
/*
* dmbuffer
*/

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acdispat.h - dispatcher (parser to interpreter interface)
* $Revision: 1.56 $
* $Revision: 1.57 $
*
*****************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acevents.h - Event subcomponent prototypes and defines
* $Revision: 1.81 $
* $Revision: 1.93 $
*
*****************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -164,10 +164,6 @@ ACPI_STATUS
AcpiEvInitGlobalLockHandler (
void);
UINT32
AcpiEvGetGpeRegisterIndex (
UINT32 GpeNumber);
UINT32
AcpiEvGetGpeNumberIndex (
UINT32 GpeNumber);
@ -186,21 +182,44 @@ AcpiEvNotifyDispatch (
* Evgpe - GPE handling and dispatch
*/
ACPI_STATUS
AcpiEvWalkGpeList (
ACPI_GPE_CALLBACK GpeWalkCallback);
BOOLEAN
AcpiEvValidGpeEvent (
ACPI_GPE_EVENT_INFO *GpeEventInfo);
ACPI_GPE_EVENT_INFO *
AcpiEvGetGpeEventInfo (
ACPI_HANDLE GpeDevice,
UINT32 GpeNumber);
ACPI_STATUS
AcpiEvGpeInitialize (
void);
ACPI_STATUS
AcpiEvInitGpeControlMethods (
void);
AcpiEvCreateGpeBlock (
ACPI_NAMESPACE_NODE *GpeDevice,
ACPI_GENERIC_ADDRESS *GpeBlockAddress,
UINT32 RegisterCount,
UINT8 GpeBlockBaseNumber,
UINT32 InterruptLevel,
ACPI_GPE_BLOCK_INFO **ReturnGpeBlock);
ACPI_STATUS
AcpiEvDeleteGpeBlock (
ACPI_GPE_BLOCK_INFO *GpeBlock);
UINT32
AcpiEvGpeDispatch (
ACPI_GPE_EVENT_INFO *GpeEventInfo,
UINT32 GpeNumber);
UINT32
AcpiEvGpeDetect (
void);
ACPI_GPE_XRUPT_INFO *GpeXruptList);
/*
* Evregion - Address Space handling
@ -219,7 +238,7 @@ AcpiEvAddressSpaceDispatch (
void *Value);
ACPI_STATUS
AcpiEvAddrHandlerHelper (
AcpiEvInstallHandler (
ACPI_HANDLE ObjHandle,
UINT32 Level,
void *Context,
@ -236,6 +255,17 @@ AcpiEvDetachRegion (
ACPI_OPERAND_OBJECT *RegionObj,
BOOLEAN AcpiNsIsLocked);
ACPI_STATUS
AcpiEvExecuteRegMethod (
ACPI_OPERAND_OBJECT *RegionObj,
UINT32 Function);
ACPI_STATUS
AcpiEvRegRun (
ACPI_HANDLE ObjHandle,
UINT32 Level,
void *Context,
void **ReturnValue);
/*
* Evregini - Region initialization and setup
@ -293,6 +323,10 @@ AcpiEvInitializeRegion (
* Evsci - SCI (System Control Interrupt) handling/dispatch
*/
UINT32 ACPI_SYSTEM_XFACE
AcpiEvGpeXruptHandler (
void *Context);
UINT32
AcpiEvInstallSciHandler (
void);

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acexcep.h - Exception codes returned by the ACPI subsystem
* $Revision: 1.67 $
* $Revision: 1.70 $
*
*****************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -167,8 +167,9 @@
#define AE_NO_GLOBAL_LOCK (ACPI_STATUS) (0x001A | AE_CODE_ENVIRONMENTAL)
#define AE_LOGICAL_ADDRESS (ACPI_STATUS) (0x001B | AE_CODE_ENVIRONMENTAL)
#define AE_ABORT_METHOD (ACPI_STATUS) (0x001C | AE_CODE_ENVIRONMENTAL)
#define AE_SAME_HANDLER (ACPI_STATUS) (0x001D | AE_CODE_ENVIRONMENTAL)
#define AE_CODE_ENV_MAX 0x001C
#define AE_CODE_ENV_MAX 0x001D
/*
* Programmer exceptions
@ -235,6 +236,7 @@
#define AE_AML_NO_RESOURCE_END_TAG (ACPI_STATUS) (0x001E | AE_CODE_AML)
#define AE_AML_BAD_RESOURCE_VALUE (ACPI_STATUS) (0x001F | AE_CODE_AML)
#define AE_AML_CIRCULAR_REFERENCE (ACPI_STATUS) (0x0020 | AE_CODE_AML)
#define AE_AML_BAD_RESOURCE_LENGTH (ACPI_STATUS) (0x0021 | AE_CODE_AML)
#define AE_CODE_AML_MAX 0x0020
@ -292,7 +294,8 @@ char const *AcpiGbl_ExceptionNames_Env[] =
"AE_NO_HARDWARE_RESPONSE",
"AE_NO_GLOBAL_LOCK",
"AE_LOGICAL_ADDRESS",
"AE_ABORT_METHOD"
"AE_ABORT_METHOD",
"AE_SAME_HANDLER"
};
char const *AcpiGbl_ExceptionNames_Pgm[] =
@ -351,7 +354,8 @@ char const *AcpiGbl_ExceptionNames_Aml[] =
"AE_AML_ALIGNMENT",
"AE_AML_NO_RESOURCE_END_TAG",
"AE_AML_BAD_RESOURCE_VALUE",
"AE_AML_CIRCULAR_REFERENCE"
"AE_AML_CIRCULAR_REFERENCE",
"AE_AML_BAD_RESOURCE_LENGTH"
};
char const *AcpiGbl_ExceptionNames_Ctrl[] =

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acglobal.h - Declarations for global variables
* $Revision: 1.136 $
* $Revision: 1.145 $
*
*****************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -178,6 +178,12 @@ ACPI_EXTERN ACPI_COMMON_FACS AcpiGbl_CommonFACS;
*/
ACPI_EXTERN UINT8 AcpiGbl_IntegerBitWidth;
ACPI_EXTERN UINT8 AcpiGbl_IntegerByteWidth;
ACPI_EXTERN UINT8 AcpiGbl_IntegerNybbleWidth;
/* Keep local copies of these FADT-based registers */
ACPI_EXTERN ACPI_GENERIC_ADDRESS AcpiGbl_XPm1aEnable;
ACPI_EXTERN ACPI_GENERIC_ADDRESS AcpiGbl_XPm1bEnable;
/*
* Since there may be multiple SSDTs and PSDTS, a single pointer is not
@ -188,15 +194,15 @@ ACPI_EXTERN UINT8 AcpiGbl_IntegerByteWidth;
/*
* ACPI Table info arrays
*/
extern ACPI_TABLE_DESC AcpiGbl_AcpiTables[NUM_ACPI_TABLES];
extern ACPI_TABLE_SUPPORT AcpiGbl_AcpiTableData[NUM_ACPI_TABLES];
extern ACPI_TABLE_LIST AcpiGbl_TableLists[NUM_ACPI_TABLE_TYPES];
extern ACPI_TABLE_SUPPORT AcpiGbl_TableData[NUM_ACPI_TABLE_TYPES];
/*
* Predefined mutex objects. This array contains the
* actual OS mutex handles, indexed by the local ACPI_MUTEX_HANDLEs.
* (The table maps local handles to the real OS handles)
*/
ACPI_EXTERN ACPI_MUTEX_INFO AcpiGbl_AcpiMutexInfo [NUM_MTX];
ACPI_EXTERN ACPI_MUTEX_INFO AcpiGbl_MutexInfo[NUM_MUTEX];
/*****************************************************************************
@ -207,8 +213,8 @@ ACPI_EXTERN ACPI_MUTEX_INFO AcpiGbl_AcpiMutexInfo [NUM_MTX];
ACPI_EXTERN ACPI_MEMORY_LIST AcpiGbl_MemoryLists[ACPI_NUM_MEM_LISTS];
ACPI_EXTERN ACPI_OBJECT_NOTIFY_HANDLER AcpiGbl_DrvNotify;
ACPI_EXTERN ACPI_OBJECT_NOTIFY_HANDLER AcpiGbl_SysNotify;
ACPI_EXTERN ACPI_OBJECT_NOTIFY_HANDLER AcpiGbl_DeviceNotify;
ACPI_EXTERN ACPI_OBJECT_NOTIFY_HANDLER AcpiGbl_SystemNotify;
ACPI_EXTERN ACPI_INIT_HANDLER AcpiGbl_InitHandler;
ACPI_EXTERN ACPI_WALK_STATE *AcpiGbl_BreakpointWalk;
ACPI_EXTERN ACPI_HANDLE AcpiGbl_GlobalLockSemaphore;
@ -273,7 +279,7 @@ ACPI_EXTERN UINT32 AcpiGbl_DeepestNesting;
****************************************************************************/
ACPI_EXTERN ACPI_THREAD_STATE *AcpiGbl_CurrentWalkList;
ACPI_EXTERN ACPI_THREAD_STATE *AcpiGbl_CurrentWalkList;
/* Control method single step flag */
@ -286,7 +292,7 @@ ACPI_EXTERN UINT8 AcpiGbl_CmSingleStep;
*
****************************************************************************/
ACPI_EXTERN ACPI_PARSE_OBJECT *AcpiGbl_ParsedNamespaceRoot;
ACPI_EXTERN ACPI_PARSE_OBJECT *AcpiGbl_ParsedNamespaceRoot;
/*****************************************************************************
*
@ -307,22 +313,9 @@ ACPI_EXTERN UINT8 AcpiGbl_SleepTypeB;
extern ACPI_FIXED_EVENT_INFO AcpiGbl_FixedEventInfo[ACPI_NUM_FIXED_EVENTS];
ACPI_EXTERN ACPI_FIXED_EVENT_HANDLER AcpiGbl_FixedEventHandlers[ACPI_NUM_FIXED_EVENTS];
ACPI_EXTERN ACPI_HANDLE AcpiGbl_GpeObjHandle;
ACPI_EXTERN UINT32 AcpiGbl_GpeRegisterCount;
ACPI_EXTERN UINT32 AcpiGbl_GpeNumberMax;
ACPI_EXTERN ACPI_GPE_REGISTER_INFO *AcpiGbl_GpeRegisterInfo;
ACPI_EXTERN ACPI_GPE_NUMBER_INFO *AcpiGbl_GpeNumberInfo;
ACPI_EXTERN ACPI_GPE_BLOCK_INFO AcpiGbl_GpeBlockInfo[ACPI_MAX_GPE_BLOCKS];
/*
* GPE translation table
* Indexed by the GPE number, returns a valid index into the global GPE tables.
*
* This table is needed because the GPE numbers supported by block 1 do not
* have to be contiguous with the GPE numbers supported by block 0.
*/
ACPI_EXTERN ACPI_GPE_INDEX_INFO *AcpiGbl_GpeNumberToIndex;
ACPI_EXTERN ACPI_GPE_XRUPT_INFO *AcpiGbl_GpeXruptListHead;
ACPI_EXTERN ACPI_GPE_BLOCK_INFO *AcpiGbl_GpeFadtBlocks[ACPI_MAX_GPE_BLOCKS];
ACPI_EXTERN ACPI_HANDLE AcpiGbl_GpeLock;
/*****************************************************************************

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: achware.h -- hardware specific interfaces
* $Revision: 1.61 $
* $Revision: 1.68 $
*
*****************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -171,50 +171,54 @@ ACPI_STATUS
AcpiHwLowLevelRead (
UINT32 Width,
UINT32 *Value,
ACPI_GENERIC_ADDRESS *Reg,
UINT32 Offset);
ACPI_GENERIC_ADDRESS *Reg);
ACPI_STATUS
AcpiHwLowLevelWrite (
UINT32 Width,
UINT32 Value,
ACPI_GENERIC_ADDRESS *Reg,
UINT32 Offset);
ACPI_GENERIC_ADDRESS *Reg);
ACPI_STATUS
AcpiHwClearAcpiStatus (
void);
UINT32 Flags);
/* GPE support */
UINT8
AcpiHwGetGpeBitMask (
UINT32 GpeNumber);
ACPI_STATUS
AcpiHwEnableGpe (
UINT32 GpeNumber);
ACPI_GPE_EVENT_INFO *GpeEventInfo);
void
AcpiHwEnableGpeForWakeup (
UINT32 GpeNumber);
ACPI_GPE_EVENT_INFO *GpeEventInfo);
ACPI_STATUS
AcpiHwDisableGpe (
UINT32 GpeNumber);
ACPI_GPE_EVENT_INFO *GpeEventInfo);
ACPI_STATUS
AcpiHwDisableGpeBlock (
ACPI_GPE_XRUPT_INFO *GpeXruptInfo,
ACPI_GPE_BLOCK_INFO *GpeBlock);
void
AcpiHwDisableGpeForWakeup (
UINT32 GpeNumber);
ACPI_GPE_EVENT_INFO *GpeEventInfo);
ACPI_STATUS
AcpiHwClearGpe (
UINT32 GpeNumber);
ACPI_GPE_EVENT_INFO *GpeEventInfo);
ACPI_STATUS
AcpiHwClearGpeBlock (
ACPI_GPE_XRUPT_INFO *GpeXruptInfo,
ACPI_GPE_BLOCK_INFO *GpeBlock);
ACPI_STATUS
AcpiHwGetGpeStatus (
UINT32 GpeNumber,
ACPI_GPE_EVENT_INFO *GpeEventInfo,
ACPI_EVENT_STATUS *EventStatus);
ACPI_STATUS

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acinterp.h - Interpreter subcomponent prototypes and defines
* $Revision: 1.145 $
* $Revision: 1.147 $
*
*****************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -237,15 +237,17 @@ void
AcpiExGetBufferDatum(
ACPI_INTEGER *Datum,
void *Buffer,
UINT32 BufferLength,
UINT32 ByteGranularity,
UINT32 Offset);
UINT32 BufferOffset);
void
AcpiExSetBufferDatum (
ACPI_INTEGER MergedDatum,
void *Buffer,
UINT32 BufferLength,
UINT32 ByteGranularity,
UINT32 Offset);
UINT32 BufferOffset);
ACPI_STATUS
AcpiExReadDataFromField (

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: aclocal.h - Internal data types used across the ACPI subsystem
* $Revision: 1.186 $
* $Revision: 1.198 $
*
*****************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -120,7 +120,7 @@
#define ACPI_WAIT_FOREVER 0xFFFF /* UINT16, as per ACPI spec */
typedef void* ACPI_MUTEX;
typedef void * ACPI_MUTEX;
typedef UINT32 ACPI_MUTEX_HANDLE;
@ -160,8 +160,8 @@ typedef UINT32 ACPI_MUTEX_HANDLE;
#define ACPI_MTX_DEBUG_CMD_COMPLETE 11
#define ACPI_MTX_DEBUG_CMD_READY 12
#define MAX_MTX 12
#define NUM_MTX MAX_MTX+1
#define MAX_MUTEX 12
#define NUM_MUTEX MAX_MUTEX+1
#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
@ -214,12 +214,8 @@ typedef struct acpi_mutex_info
typedef UINT16 ACPI_OWNER_ID;
#define ACPI_OWNER_TYPE_TABLE 0x0
#define ACPI_OWNER_TYPE_METHOD 0x1
#define ACPI_FIRST_METHOD_ID 0x0000
#define ACPI_FIRST_TABLE_ID 0x8000
/* TBD: [Restructure] get rid of the need for this! */
#define TABLE_ID_DSDT (ACPI_OWNER_ID) 0x8000
#define ACPI_FIRST_METHOD_ID 0x0001
#define ACPI_FIRST_TABLE_ID 0xF000
/* Field access granularities */
@ -257,8 +253,8 @@ typedef enum
typedef union acpi_name_union
{
UINT32 Integer;
char Ascii[4];
UINT32 Integer;
char Ascii[4];
} ACPI_NAME_UNION;
@ -271,7 +267,7 @@ typedef struct acpi_namespace_node
union acpi_operand_object *Object; /* Pointer to attached ACPI object (optional) */
struct acpi_namespace_node *Child; /* first child */
struct acpi_namespace_node *Child; /* First child */
struct acpi_namespace_node *Peer; /* Next peer*/
UINT16 ReferenceCount; /* Current count of references and children */
UINT8 Flags;
@ -308,7 +304,6 @@ typedef struct acpi_table_desc
UINT64 PhysicalAddress;
UINT32 AmlLength;
ACPI_SIZE Length;
UINT32 Count;
ACPI_OWNER_ID TableId;
UINT8 Type;
UINT8 Allocation;
@ -316,6 +311,13 @@ typedef struct acpi_table_desc
} ACPI_TABLE_DESC;
typedef struct acpi_table_list
{
struct acpi_table_desc *Next;
UINT32 Count;
} ACPI_TABLE_LIST;
typedef struct acpi_find_context
{
@ -390,53 +392,65 @@ typedef struct acpi_create_field_info
*
****************************************************************************/
/* Information about each GPE register block */
/* Information about a GPE, one per each GPE in an array */
typedef struct acpi_gpe_block_info
typedef struct acpi_gpe_event_info
{
ACPI_GENERIC_ADDRESS *BlockAddress;
UINT16 RegisterCount;
UINT8 BlockBaseNumber;
ACPI_NAMESPACE_NODE *MethodNode; /* Method node for this GPE level */
ACPI_GPE_HANDLER Handler; /* Address of handler, if any */
void *Context; /* Context to be passed to handler */
struct acpi_gpe_register_info *RegisterInfo; /* Backpointer to register info */
UINT8 Flags; /* Level or Edge */
UINT8 BitMask; /* This GPE within the register */
} ACPI_GPE_BLOCK_INFO;
} ACPI_GPE_EVENT_INFO;
/* Information about a particular GPE register pair */
/* Information about a GPE register pair, one per each status/enable pair in an array */
typedef struct acpi_gpe_register_info
{
ACPI_GENERIC_ADDRESS StatusAddress; /* Address of status reg */
ACPI_GENERIC_ADDRESS EnableAddress; /* Address of enable reg */
UINT8 Status; /* Current value of status reg */
UINT8 Enable; /* Current value of enable reg */
UINT8 WakeEnable; /* Mask of bits to keep enabled when sleeping */
UINT8 BaseGpeNumber; /* Base GPE number for this register */
ACPI_GENERIC_ADDRESS StatusAddress; /* Address of status reg */
ACPI_GENERIC_ADDRESS EnableAddress; /* Address of enable reg */
UINT8 Status; /* Current value of status reg */
UINT8 Enable; /* Current value of enable reg */
UINT8 WakeEnable; /* Mask of bits to keep enabled when sleeping */
UINT8 BaseGpeNumber; /* Base GPE number for this register */
} ACPI_GPE_REGISTER_INFO;
#define ACPI_GPE_LEVEL_TRIGGERED 1
#define ACPI_GPE_EDGE_TRIGGERED 2
/* Information about each particular GPE level */
typedef struct acpi_gpe_number_info
/*
* Information about a GPE register block, one per each installed block --
* GPE0, GPE1, and one per each installed GPE Block Device.
*/
typedef struct acpi_gpe_block_info
{
ACPI_NAMESPACE_NODE *MethodNode; /* Method node for this GPE level */
ACPI_GPE_HANDLER Handler; /* Address of handler, if any */
void *Context; /* Context to be passed to handler */
UINT8 Type; /* Level or Edge */
UINT8 BitMask;
struct acpi_gpe_block_info *Previous;
struct acpi_gpe_block_info *Next;
struct acpi_gpe_xrupt_info *XruptBlock; /* Backpointer to interrupt block */
ACPI_GPE_REGISTER_INFO *RegisterInfo; /* One per GPE register pair */
ACPI_GPE_EVENT_INFO *EventInfo; /* One for each GPE */
ACPI_GENERIC_ADDRESS BlockAddress; /* Base address of the block */
UINT32 RegisterCount; /* Number of register pairs in block */
UINT8 BlockBaseNumber;/* Base GPE number for this block */
} ACPI_GPE_BLOCK_INFO;
} ACPI_GPE_NUMBER_INFO;
/* Information about GPE interrupt handlers, one per each interrupt level used for GPEs */
typedef struct acpi_gpe_index_info
typedef struct acpi_gpe_xrupt_info
{
UINT8 NumberIndex;
struct acpi_gpe_xrupt_info *Previous;
struct acpi_gpe_xrupt_info *Next;
ACPI_GPE_BLOCK_INFO *GpeBlockListHead; /* List of GPE blocks for this xrupt */
UINT32 InterruptLevel; /* System interrupt level */
} ACPI_GPE_XRUPT_INFO;
typedef ACPI_STATUS (*ACPI_GPE_CALLBACK) (
ACPI_GPE_XRUPT_INFO *GpeXruptInfo,
ACPI_GPE_BLOCK_INFO *GpeBlock);
} ACPI_GPE_INDEX_INFO;
/* Information about each particular fixed event */
@ -447,7 +461,6 @@ typedef struct acpi_fixed_event_handler
} ACPI_FIXED_EVENT_HANDLER;
typedef struct acpi_fixed_event_info
{
UINT8 StatusRegisterId;
@ -558,10 +571,10 @@ typedef struct acpi_scope_state
typedef struct acpi_pscope_state
{
ACPI_STATE_COMMON
union acpi_parse_object *Op; /* current op being parsed */
UINT8 *ArgEnd; /* current argument end */
UINT8 *PkgEnd; /* current package end */
UINT32 ArgList; /* next argument to parse */
union acpi_parse_object *Op; /* Current op being parsed */
UINT8 *ArgEnd; /* Current argument end */
UINT8 *PkgEnd; /* Current package end */
UINT32 ArgList; /* Next argument to parse */
UINT32 ArgCount; /* Number of fixed arguments */
} ACPI_PSCOPE_STATE;
@ -673,11 +686,8 @@ typedef struct acpi_opcode_info
typedef union acpi_parse_value
{
ACPI_INTEGER Integer; /* integer constant (Up to 64 bits) */
ACPI_INTEGER Integer; /* Integer constant (Up to 64 bits) */
UINT64_STRUCT Integer64; /* Structure overlay for 2 32-bit Dwords */
UINT32 Integer32; /* integer constant, 32 bits only */
UINT16 Integer16; /* integer constant, 16 bits only */
UINT8 Integer8; /* integer constant, 8 bits only */
UINT32 Size; /* bytelist or field size */
char *String; /* NULL terminated string */
UINT8 *Buffer; /* buffer or string */
@ -691,15 +701,15 @@ typedef union acpi_parse_value
UINT8 DataType; /* To differentiate various internal objs */\
UINT8 Flags; /* Type of Op */\
UINT16 AmlOpcode; /* AML opcode */\
UINT32 AmlOffset; /* offset of declaration in AML */\
union acpi_parse_object *Parent; /* parent op */\
union acpi_parse_object *Next; /* next op */\
UINT32 AmlOffset; /* Offset of declaration in AML */\
union acpi_parse_object *Parent; /* Parent op */\
union acpi_parse_object *Next; /* Next op */\
ACPI_DISASM_ONLY_MEMBERS (\
UINT8 DisasmFlags; /* Used during AML disassembly */\
UINT8 DisasmOpcode; /* Subtype used for disassembly */\
char AmlOpName[16]) /* op name (debug only) */\
/* NON-DEBUG members below: */\
ACPI_NAMESPACE_NODE *Node; /* for use by interpreter */\
char AmlOpName[16]) /* Op name (debug only) */\
/* NON-DEBUG members below: */\
ACPI_NAMESPACE_NODE *Node; /* For use by interpreter */\
ACPI_PARSE_VALUE Value; /* Value or args associated with the opcode */\
@ -739,10 +749,7 @@ typedef struct acpi_parse_obj_named
typedef struct acpi_parse_obj_asl
{
ACPI_PARSE_COMMON
union acpi_parse_object *Child;
union acpi_parse_object *ParentMethod;
char *Filename;
char *ExternalName;
@ -786,14 +793,14 @@ typedef union acpi_parse_object
typedef struct acpi_parse_state
{
UINT32 AmlSize;
UINT8 *AmlStart; /* first AML byte */
UINT8 *Aml; /* next AML byte */
UINT8 *AmlStart; /* First AML byte */
UINT8 *Aml; /* Next AML byte */
UINT8 *AmlEnd; /* (last + 1) AML byte */
UINT8 *PkgStart; /* current package begin */
UINT8 *PkgEnd; /* current package end */
union acpi_parse_object *StartOp; /* root of parse tree */
UINT8 *PkgStart; /* Current package begin */
UINT8 *PkgEnd; /* Current package end */
union acpi_parse_object *StartOp; /* Root of parse tree */
struct acpi_namespace_node *StartNode;
union acpi_generic_state *Scope; /* current scope */
union acpi_generic_state *Scope; /* Current scope */
union acpi_parse_object *StartScope;
} ACPI_PARSE_STATE;
@ -955,17 +962,6 @@ typedef struct acpi_bit_register_info
#define ACPI_RDESC_TYPE_QWORD_ADDRESS_SPACE 0x8A
/* String version of device HIDs and UIDs */
#define ACPI_DEVICE_ID_LENGTH 0x09
typedef struct acpi_device_id
{
char Buffer[ACPI_DEVICE_ID_LENGTH];
} ACPI_DEVICE_ID;
/*****************************************************************************
*
* Miscellaneous

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acmacros.h - C macros for the entire subsystem.
* $Revision: 1.137 $
* $Revision: 1.148 $
*
*****************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -121,7 +121,6 @@
/*
* Data manipulation macros
*/
#define ACPI_LOWORD(l) ((UINT16)(UINT32)(l))
#define ACPI_HIWORD(l) ((UINT16)((((UINT32)(l)) >> 16) & 0xFFFF))
#define ACPI_LOBYTE(l) ((UINT8)(UINT16)(l))
@ -167,10 +166,18 @@
#endif
#endif
/*
* Extract a byte of data using a pointer. Any more than a byte and we
* get into potential aligment issues -- see the STORE macros below
*/
/*
* printf() format helpers
*/
/* Split 64-bit integer into two 32-bit values. Use with %8,8X%8.8X */
#define ACPI_FORMAT_UINT64(i) ACPI_HIDWORD(i),ACPI_LODWORD(i)
/*
* Extract a byte of data using a pointer. Any more than a byte and we
* get into potential aligment issues -- see the STORE macros below
*/
#define ACPI_GET8(addr) (*(UINT8*)(addr))
/* Pointer arithmetic */
@ -189,7 +196,7 @@
#define ACPI_CAST_INDIRECT_PTR(t, p) ((t **)(void *)(p))
#if ACPI_MACHINE_WIDTH == 16
#define ACPI_STORE_POINTER(d,s) ACPI_MOVE_UNALIGNED32_TO_32(d,s)
#define ACPI_STORE_POINTER(d,s) ACPI_MOVE_32_TO_32(d,s)
#define ACPI_PHYSADDR_TO_PTR(i) (void *)(i)
#define ACPI_PTR_TO_PHYSADDR(i) (UINT32) (char *)(i)
#else
@ -202,49 +209,175 @@
* If the hardware supports the transfer of unaligned data, just do the store.
* Otherwise, we have to move one byte at a time.
*/
#ifdef ACPI_BIG_ENDIAN
/*
* Macros for big-endian machines
*/
#ifdef _HW_ALIGNMENT_SUPPORT
/* This macro sets a buffer index, starting from the end of the buffer */
/* The hardware supports unaligned transfers, just do the move */
#define ACPI_BUFFER_INDEX(BufLen,BufOffset,ByteGran) ((BufLen) - (((BufOffset)+1) * (ByteGran)))
#define ACPI_MOVE_UNALIGNED16_TO_16(d,s) *(UINT16 *)(void *)(d) = *(UINT16 *)(void *)(s)
#define ACPI_MOVE_UNALIGNED32_TO_32(d,s) *(UINT32 *)(void *)(d) = *(UINT32 *)(void *)(s)
#define ACPI_MOVE_UNALIGNED16_TO_32(d,s) *(UINT32 *)(void *)(d) = *(UINT16 *)(void *)(s)
#define ACPI_MOVE_UNALIGNED64_TO_64(d,s) *(UINT64 *)(void *)(d) = *(UINT64 *)(void *)(s)
/* These macros reverse the bytes during the move, converting little-endian to big endian */
/* Big Endian <== Little Endian */
/* Hi...Lo Lo...Hi */
/* 16-bit source, 16/32/64 destination */
#define ACPI_MOVE_16_TO_16(d,s) {(( UINT8 *)(void *)(d))[0] = ((UINT8 *)(void *)(s))[1];\
(( UINT8 *)(void *)(d))[1] = ((UINT8 *)(void *)(s))[0];}
#define ACPI_MOVE_16_TO_32(d,s) {(*(UINT32 *)(void *)(d))=0;\
((UINT8 *)(void *)(d))[2] = ((UINT8 *)(void *)(s))[1];\
((UINT8 *)(void *)(d))[3] = ((UINT8 *)(void *)(s))[0];}
#define ACPI_MOVE_16_TO_64(d,s) {(*(UINT64 *)(void *)(d))=0;\
((UINT8 *)(void *)(d))[6] = ((UINT8 *)(void *)(s))[1];\
((UINT8 *)(void *)(d))[7] = ((UINT8 *)(void *)(s))[0];}
/* 32-bit source, 16/32/64 destination */
#define ACPI_MOVE_32_TO_16(d,s) ACPI_MOVE_16_TO_16(d,s) /* Truncate to 16 */
#define ACPI_MOVE_32_TO_32(d,s) {(( UINT8 *)(void *)(d))[0] = ((UINT8 *)(void *)(s))[3];\
(( UINT8 *)(void *)(d))[1] = ((UINT8 *)(void *)(s))[2];\
(( UINT8 *)(void *)(d))[2] = ((UINT8 *)(void *)(s))[1];\
(( UINT8 *)(void *)(d))[3] = ((UINT8 *)(void *)(s))[0];}
#define ACPI_MOVE_32_TO_64(d,s) {(*(UINT64 *)(void *)(d))=0;\
((UINT8 *)(void *)(d))[4] = ((UINT8 *)(void *)(s))[3];\
((UINT8 *)(void *)(d))[5] = ((UINT8 *)(void *)(s))[2];\
((UINT8 *)(void *)(d))[6] = ((UINT8 *)(void *)(s))[1];\
((UINT8 *)(void *)(d))[7] = ((UINT8 *)(void *)(s))[0];}
/* 64-bit source, 16/32/64 destination */
#define ACPI_MOVE_64_TO_16(d,s) ACPI_MOVE_16_TO_16(d,s) /* Truncate to 16 */
#define ACPI_MOVE_64_TO_32(d,s) ACPI_MOVE_32_TO_32(d,s) /* Truncate to 32 */
#define ACPI_MOVE_64_TO_64(d,s) {(( UINT8 *)(void *)(d))[0] = ((UINT8 *)(void *)(s))[7];\
(( UINT8 *)(void *)(d))[1] = ((UINT8 *)(void *)(s))[6];\
(( UINT8 *)(void *)(d))[2] = ((UINT8 *)(void *)(s))[5];\
(( UINT8 *)(void *)(d))[3] = ((UINT8 *)(void *)(s))[4];\
(( UINT8 *)(void *)(d))[4] = ((UINT8 *)(void *)(s))[3];\
(( UINT8 *)(void *)(d))[5] = ((UINT8 *)(void *)(s))[2];\
(( UINT8 *)(void *)(d))[6] = ((UINT8 *)(void *)(s))[1];\
(( UINT8 *)(void *)(d))[7] = ((UINT8 *)(void *)(s))[0];}
#else
/*
* Macros for little-endian machines
*/
/* This macro sets a buffer index, starting from the beginning of the buffer */
#define ACPI_BUFFER_INDEX(BufLen,BufOffset,ByteGran) (BufOffset)
#ifdef ACPI_MISALIGNED_TRANSFERS
/* The hardware supports unaligned transfers, just do the little-endian move */
#if ACPI_MACHINE_WIDTH == 16
/* No 64-bit integers */
/* 16-bit source, 16/32/64 destination */
#define ACPI_MOVE_16_TO_16(d,s) *(UINT16 *)(void *)(d) = *(UINT16 *)(void *)(s)
#define ACPI_MOVE_16_TO_32(d,s) *(UINT32 *)(void *)(d) = *(UINT16 *)(void *)(s)
#define ACPI_MOVE_16_TO_64(d,s) ACPI_MOVE_16_TO_32(d,s)
/* 32-bit source, 16/32/64 destination */
#define ACPI_MOVE_32_TO_16(d,s) ACPI_MOVE_16_TO_16(d,s) /* Truncate to 16 */
#define ACPI_MOVE_32_TO_32(d,s) *(UINT32 *)(void *)(d) = *(UINT32 *)(void *)(s)
#define ACPI_MOVE_32_TO_64(d,s) ACPI_MOVE_32_TO_32(d,s)
/* 64-bit source, 16/32/64 destination */
#define ACPI_MOVE_64_TO_16(d,s) ACPI_MOVE_16_TO_16(d,s) /* Truncate to 16 */
#define ACPI_MOVE_64_TO_32(d,s) ACPI_MOVE_32_TO_32(d,s) /* Truncate to 32 */
#define ACPI_MOVE_64_TO_64(d,s) ACPI_MOVE_32_TO_32(d,s)
#else
/* 16-bit source, 16/32/64 destination */
#define ACPI_MOVE_16_TO_16(d,s) *(UINT16 *)(void *)(d) = *(UINT16 *)(void *)(s)
#define ACPI_MOVE_16_TO_32(d,s) *(UINT32 *)(void *)(d) = *(UINT16 *)(void *)(s)
#define ACPI_MOVE_16_TO_64(d,s) *(UINT64 *)(void *)(d) = *(UINT16 *)(void *)(s)
/* 32-bit source, 16/32/64 destination */
#define ACPI_MOVE_32_TO_16(d,s) ACPI_MOVE_16_TO_16(d,s) /* Truncate to 16 */
#define ACPI_MOVE_32_TO_32(d,s) *(UINT32 *)(void *)(d) = *(UINT32 *)(void *)(s)
#define ACPI_MOVE_32_TO_64(d,s) *(UINT64 *)(void *)(d) = *(UINT32 *)(void *)(s)
/* 64-bit source, 16/32/64 destination */
#define ACPI_MOVE_64_TO_16(d,s) ACPI_MOVE_16_TO_16(d,s) /* Truncate to 16 */
#define ACPI_MOVE_64_TO_32(d,s) ACPI_MOVE_32_TO_32(d,s) /* Truncate to 32 */
#define ACPI_MOVE_64_TO_64(d,s) *(UINT64 *)(void *)(d) = *(UINT64 *)(void *)(s)
#endif
#else
/*
* The hardware does not support unaligned transfers. We must move the
* data one byte at a time. These macros work whether the source or
* the destination (or both) is/are unaligned.
* the destination (or both) is/are unaligned. (Little-endian move)
*/
#define ACPI_MOVE_UNALIGNED16_TO_16(d,s) {((UINT8 *)(void *)(d))[0] = ((UINT8 *)(void *)(s))[0];\
((UINT8 *)(void *)(d))[1] = ((UINT8 *)(void *)(s))[1];}
/* 16-bit source, 16/32/64 destination */
#define ACPI_MOVE_UNALIGNED32_TO_32(d,s) {((UINT8 *)(void *)(d))[0] = ((UINT8 *)(void *)(s))[0];\
((UINT8 *)(void *)(d))[1] = ((UINT8 *)(void *)(s))[1];\
((UINT8 *)(void *)(d))[2] = ((UINT8 *)(void *)(s))[2];\
((UINT8 *)(void *)(d))[3] = ((UINT8 *)(void *)(s))[3];}
#define ACPI_MOVE_16_TO_16(d,s) {(( UINT8 *)(void *)(d))[0] = ((UINT8 *)(void *)(s))[0];\
(( UINT8 *)(void *)(d))[1] = ((UINT8 *)(void *)(s))[1];}
#define ACPI_MOVE_UNALIGNED16_TO_32(d,s) {(*(UINT32*)(void *)(d)) = 0; ACPI_MOVE_UNALIGNED16_TO_16(d,s);}
#define ACPI_MOVE_16_TO_32(d,s) {(*(UINT32 *)(void *)(d)) = 0; ACPI_MOVE_16_TO_16(d,s);}
#define ACPI_MOVE_16_TO_64(d,s) {(*(UINT64 *)(void *)(d)) = 0; ACPI_MOVE_16_TO_16(d,s);}
#define ACPI_MOVE_UNALIGNED64_TO_64(d,s) {((UINT8 *)(void *)(d))[0] = ((UINT8 *)(void *)(s))[0];\
((UINT8 *)(void *)(d))[1] = ((UINT8 *)(void *)(s))[1];\
((UINT8 *)(void *)(d))[2] = ((UINT8 *)(void *)(s))[2];\
((UINT8 *)(void *)(d))[3] = ((UINT8 *)(void *)(s))[3];\
((UINT8 *)(void *)(d))[4] = ((UINT8 *)(void *)(s))[4];\
((UINT8 *)(void *)(d))[5] = ((UINT8 *)(void *)(s))[5];\
((UINT8 *)(void *)(d))[6] = ((UINT8 *)(void *)(s))[6];\
((UINT8 *)(void *)(d))[7] = ((UINT8 *)(void *)(s))[7];}
/* 32-bit source, 16/32/64 destination */
#define ACPI_MOVE_32_TO_16(d,s) ACPI_MOVE_16_TO_16(d,s) /* Truncate to 16 */
#define ACPI_MOVE_32_TO_32(d,s) {(( UINT8 *)(void *)(d))[0] = ((UINT8 *)(void *)(s))[0];\
(( UINT8 *)(void *)(d))[1] = ((UINT8 *)(void *)(s))[1];\
(( UINT8 *)(void *)(d))[2] = ((UINT8 *)(void *)(s))[2];\
(( UINT8 *)(void *)(d))[3] = ((UINT8 *)(void *)(s))[3];}
#define ACPI_MOVE_32_TO_64(d,s) {(*(UINT64 *)(void *)(d)) = 0; ACPI_MOVE_32_TO_32(d,s);}
/* 64-bit source, 16/32/64 destination */
#define ACPI_MOVE_64_TO_16(d,s) ACPI_MOVE_16_TO_16(d,s) /* Truncate to 16 */
#define ACPI_MOVE_64_TO_32(d,s) ACPI_MOVE_32_TO_32(d,s) /* Truncate to 32 */
#define ACPI_MOVE_64_TO_64(d,s) {(( UINT8 *)(void *)(d))[0] = ((UINT8 *)(void *)(s))[0];\
(( UINT8 *)(void *)(d))[1] = ((UINT8 *)(void *)(s))[1];\
(( UINT8 *)(void *)(d))[2] = ((UINT8 *)(void *)(s))[2];\
(( UINT8 *)(void *)(d))[3] = ((UINT8 *)(void *)(s))[3];\
(( UINT8 *)(void *)(d))[4] = ((UINT8 *)(void *)(s))[4];\
(( UINT8 *)(void *)(d))[5] = ((UINT8 *)(void *)(s))[5];\
(( UINT8 *)(void *)(d))[6] = ((UINT8 *)(void *)(s))[6];\
(( UINT8 *)(void *)(d))[7] = ((UINT8 *)(void *)(s))[7];}
#endif
#endif
/* Macros based on machine integer width */
#if ACPI_MACHINE_WIDTH == 16
#define ACPI_MOVE_SIZE_TO_16(d,s) ACPI_MOVE_16_TO_16(d,s)
#elif ACPI_MACHINE_WIDTH == 32
#define ACPI_MOVE_SIZE_TO_16(d,s) ACPI_MOVE_32_TO_16(d,s)
#elif ACPI_MACHINE_WIDTH == 64
#define ACPI_MOVE_SIZE_TO_16(d,s) ACPI_MOVE_64_TO_16(d,s)
#else
#error unknown ACPI_MACHINE_WIDTH
#endif
/*
* Fast power-of-two math macros for non-optimized compilers
*/
#define _ACPI_DIV(value,PowerOf2) ((UINT32) ((value) >> (PowerOf2)))
#define _ACPI_MUL(value,PowerOf2) ((UINT32) ((value) << (PowerOf2)))
#define _ACPI_MOD(value,Divisor) ((UINT32) ((value) & ((Divisor) -1)))
@ -305,21 +438,6 @@
#if ACPI_MACHINE_WIDTH != 16
#define ACPI_PCI_DEVICE_MASK (UINT64) 0x0000FFFF00000000
#define ACPI_PCI_FUNCTION_MASK (UINT64) 0x00000000FFFF0000
#define ACPI_PCI_REGISTER_MASK (UINT64) 0x000000000000FFFF
/*
* Obsolete
*/
/*
#define ACPI_PCI_FUNCTION(a) (UINT16) ((((UINT64)((UINT64)(a) & ACPI_PCI_FUNCTION_MASK)) >> 16))
#define ACPI_PCI_DEVICE(a) (UINT16) ((((UINT64)((UINT64)(a) & ACPI_PCI_DEVICE_MASK)) >> 32))
#define ACPI_PCI_REGISTER(a) (UINT16) (((UINT64)((UINT64)(a) & ACPI_PCI_REGISTER_MASK)))
*/
#define ACPI_PCI_DEVICE(a) (UINT16) ((ACPI_HIDWORD ((a))) & 0x0000FFFF)
#define ACPI_PCI_FUNCTION(a) (UINT16) ((ACPI_LODWORD ((a))) >> 16)
#define ACPI_PCI_REGISTER(a) (UINT16) ((ACPI_LODWORD ((a))) & 0x0000FFFF)
@ -400,38 +518,16 @@
#define INCREMENT_ARG_LIST(List) (List >>= ((UINT32) ARG_TYPE_WIDTH))
/*
* Build a GAS structure from earlier ACPI table entries (V1.0 and 0.71 extensions)
*
* 1) Address space
* 2) Length in bytes -- convert to length in bits
* 3) Bit offset is zero
* 4) Reserved field is zero
* 5) Expand address to 64 bits
*/
#define ASL_BUILD_GAS_FROM_ENTRY(a,b,c,d) do {a.AddressSpaceId = (UINT8) d;\
a.RegisterBitWidth = (UINT8) ACPI_MUL_8 (b);\
a.RegisterBitOffset = 0;\
a.Reserved = 0;\
ACPI_STORE_ADDRESS (a.Address,(ACPI_PHYSICAL_ADDRESS) c);} while (0)
/* ACPI V1.0 entries -- address space is always I/O */
#define ASL_BUILD_GAS_FROM_V1_ENTRY(a,b,c) ASL_BUILD_GAS_FROM_ENTRY(a,b,c,ACPI_ADR_SPACE_SYSTEM_IO)
/*
* Reporting macros that are never compiled out
*/
#define ACPI_PARAM_LIST(pl) pl
#define ACPI_PARAM_LIST(pl) pl
/*
* Error reporting. These versions add callers module and line#. Since
* _THIS_MODULE gets compiled out when ACPI_DEBUG_OUTPUT isn't defined, only
* use it in debug mode.
*/
#ifdef ACPI_DEBUG_OUTPUT
#define ACPI_REPORT_INFO(fp) {AcpiUtReportInfo(_THIS_MODULE,__LINE__,_COMPONENT); \
@ -470,7 +566,6 @@
/*
* Debug macros that are conditionally compiled
*/
#ifdef ACPI_DEBUG_OUTPUT
#define ACPI_MODULE_NAME(name) static char ACPI_UNUSED_VAR *_THIS_MODULE = name;
@ -480,22 +575,21 @@
* The first parameter should be the procedure name as a quoted string. This is declared
* as a local string ("_ProcName) so that it can be also used by the function exit macros below.
*/
#define ACPI_FUNCTION_NAME(a) ACPI_DEBUG_PRINT_INFO _Dbg; \
_Dbg.ComponentId = _COMPONENT; \
_Dbg.ProcName = a; \
_Dbg.ModuleName = _THIS_MODULE;
#define ACPI_FUNCTION_NAME(a) ACPI_DEBUG_PRINT_INFO _Dbg; \
_Dbg.ComponentId = _COMPONENT; \
_Dbg.ProcName = a; \
_Dbg.ModuleName = _THIS_MODULE;
#define ACPI_FUNCTION_TRACE(a) ACPI_FUNCTION_NAME(a) \
AcpiUtTrace(__LINE__,&_Dbg)
#define ACPI_FUNCTION_TRACE_PTR(a,b) ACPI_FUNCTION_NAME(a) \
AcpiUtTracePtr(__LINE__,&_Dbg,(void *)b)
#define ACPI_FUNCTION_TRACE_U32(a,b) ACPI_FUNCTION_NAME(a) \
AcpiUtTraceU32(__LINE__,&_Dbg,(UINT32)b)
#define ACPI_FUNCTION_TRACE_STR(a,b) ACPI_FUNCTION_NAME(a) \
AcpiUtTraceStr(__LINE__,&_Dbg,(char *)b)
#define ACPI_FUNCTION_TRACE(a) ACPI_FUNCTION_NAME(a)\
AcpiUtTrace(__LINE__,&_Dbg)
#define ACPI_FUNCTION_TRACE_PTR(a,b) ACPI_FUNCTION_NAME(a)\
AcpiUtTracePtr(__LINE__,&_Dbg,(void *)b)
#define ACPI_FUNCTION_TRACE_U32(a,b) ACPI_FUNCTION_NAME(a)\
AcpiUtTraceU32(__LINE__,&_Dbg,(UINT32)b)
#define ACPI_FUNCTION_TRACE_STR(a,b) ACPI_FUNCTION_NAME(a)\
AcpiUtTraceStr(__LINE__,&_Dbg,(char *)b)
#define ACPI_FUNCTION_ENTRY() AcpiUtTrackStackPtr()
#define ACPI_FUNCTION_ENTRY() AcpiUtTrackStackPtr()
/*
* Function exit tracing.
@ -542,7 +636,6 @@
/*
* Generate INT3 on ACPI_ERROR (Debug only!)
*/
#define ACPI_ERROR_BREAK
#ifdef ACPI_ERROR_BREAK
#define ACPI_BREAK_ON_ERROR(lvl) if ((lvl)&ACPI_ERROR) \
@ -557,7 +650,6 @@
* 1) Debug print for the current component is enabled
* 2) Debug error level or trace level for the print statement is enabled
*/
#define ACPI_DEBUG_PRINT(pl) AcpiUtDebugPrint ACPI_PARAM_LIST(pl)
#define ACPI_DEBUG_PRINT_RAW(pl) AcpiUtDebugPrintRaw ACPI_PARAM_LIST(pl)
@ -567,7 +659,6 @@
* This is the non-debug case -- make everything go away,
* leaving no executable debug code!
*/
#define ACPI_MODULE_NAME(name)
#define _THIS_MODULE ""
@ -642,7 +733,6 @@
/*
* Memory allocation tracking (DEBUG ONLY)
*/
#ifndef ACPI_DBG_TRACK_ALLOCATIONS
/* Memory allocation */

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acnamesp.h - Namespace subcomponent prototypes and defines
* $Revision: 1.133 $
* $Revision: 1.135 $
*
*****************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -274,6 +274,11 @@ AcpiNsCompareNames (
char *Name1,
char *Name2);
void
AcpiNsRemoveReference (
ACPI_NAMESPACE_NODE *Node);
/*
* Namespace modification - nsmodify
*/

View File

@ -2,7 +2,7 @@
/******************************************************************************
*
* Name: acobject.h - Definition of ACPI_OPERAND_OBJECT (Internal object only)
* $Revision: 1.118 $
* $Revision: 1.123 $
*
*****************************************************************************/
@ -10,7 +10,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -185,9 +185,9 @@
* Common fields for objects that support ASL notifications
*/
#define ACPI_COMMON_NOTIFY_INFO \
union acpi_operand_object *SysHandler; /* Handler for system notifies */\
union acpi_operand_object *DrvHandler; /* Handler for driver notifies */\
union acpi_operand_object *AddrHandler; /* Handler for Address space */
union acpi_operand_object *SystemNotify; /* Handler for system notifies */\
union acpi_operand_object *DeviceNotify; /* Handler for driver notifies */\
union acpi_operand_object *Handler; /* Handler for Address space */
/******************************************************************************
@ -295,7 +295,7 @@ typedef struct acpi_object_region
ACPI_OBJECT_COMMON_HEADER
UINT8 SpaceId;
union acpi_operand_object *AddrHandler; /* Handler for system notifies */
union acpi_operand_object *Handler; /* Handler for region access */
ACPI_NAMESPACE_NODE *Node; /* containing object */
union acpi_operand_object *Next;
UINT32 Length;
@ -322,6 +322,7 @@ typedef struct acpi_object_device
{
ACPI_OBJECT_COMMON_HEADER
ACPI_COMMON_NOTIFY_INFO
ACPI_GPE_BLOCK_INFO *GpeBlock;
} ACPI_OBJECT_DEVICE;
@ -542,8 +543,8 @@ typedef union acpi_operand_object
ACPI_OBJECT_BUFFER_FIELD BufferField;
ACPI_OBJECT_BANK_FIELD BankField;
ACPI_OBJECT_INDEX_FIELD IndexField;
ACPI_OBJECT_NOTIFY_HANDLER NotifyHandler;
ACPI_OBJECT_ADDR_HANDLER AddrHandler;
ACPI_OBJECT_NOTIFY_HANDLER Notify;
ACPI_OBJECT_ADDR_HANDLER AddressSpace;
ACPI_OBJECT_REFERENCE Reference;
ACPI_OBJECT_EXTRA Extra;
ACPI_OBJECT_DATA Data;
@ -561,21 +562,22 @@ typedef union acpi_operand_object
/* Object descriptor types */
#define ACPI_DESC_TYPE_CACHED 0x11 /* Used only when object is cached */
#define ACPI_DESC_TYPE_STATE 0x20
#define ACPI_DESC_TYPE_STATE_UPDATE 0x21
#define ACPI_DESC_TYPE_STATE_PACKAGE 0x22
#define ACPI_DESC_TYPE_STATE_CONTROL 0x23
#define ACPI_DESC_TYPE_STATE_RPSCOPE 0x24
#define ACPI_DESC_TYPE_STATE_PSCOPE 0x25
#define ACPI_DESC_TYPE_STATE_WSCOPE 0x26
#define ACPI_DESC_TYPE_STATE_RESULT 0x27
#define ACPI_DESC_TYPE_STATE_NOTIFY 0x28
#define ACPI_DESC_TYPE_STATE_THREAD 0x29
#define ACPI_DESC_TYPE_WALK 0x44
#define ACPI_DESC_TYPE_PARSER 0x66
#define ACPI_DESC_TYPE_OPERAND 0x88
#define ACPI_DESC_TYPE_NAMED 0xAA
#define ACPI_DESC_TYPE_CACHED 0x01 /* Used only when object is cached */
#define ACPI_DESC_TYPE_STATE 0x02
#define ACPI_DESC_TYPE_STATE_UPDATE 0x03
#define ACPI_DESC_TYPE_STATE_PACKAGE 0x04
#define ACPI_DESC_TYPE_STATE_CONTROL 0x05
#define ACPI_DESC_TYPE_STATE_RPSCOPE 0x06
#define ACPI_DESC_TYPE_STATE_PSCOPE 0x07
#define ACPI_DESC_TYPE_STATE_WSCOPE 0x08
#define ACPI_DESC_TYPE_STATE_RESULT 0x09
#define ACPI_DESC_TYPE_STATE_NOTIFY 0x0A
#define ACPI_DESC_TYPE_STATE_THREAD 0x0B
#define ACPI_DESC_TYPE_WALK 0x0C
#define ACPI_DESC_TYPE_PARSER 0x0D
#define ACPI_DESC_TYPE_OPERAND 0x0E
#define ACPI_DESC_TYPE_NAMED 0x0F
#define ACPI_DESC_TYPE_MAX 0x0F
typedef union acpi_descriptor

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acoutput.h -- debug output
* $Revision: 1.93 $
* $Revision: 1.94 $
*
*****************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: acparser.h - AML Parser subcomponent prototypes and defines
* $Revision: 1.65 $
* $Revision: 1.66 $
*
*****************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acpi.h - Master include file, Publics and external data.
* $Revision: 1.56 $
* $Revision: 1.57 $
*
*****************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License

View File

@ -12,7 +12,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -150,19 +150,6 @@ typedef struct acpi_signal_fatal_info
} ACPI_SIGNAL_FATAL_INFO;
/*
* Types specific to the OS service interfaces
*/
typedef UINT32
(ACPI_SYSTEM_XFACE *OSD_HANDLER) (
void *Context);
typedef void
(ACPI_SYSTEM_XFACE *OSD_EXECUTION_CALLBACK) (
void *Context);
/*
* OSL Initialization and shutdown primitives
*/
@ -185,6 +172,11 @@ AcpiOsGetRootPointer (
UINT32 Flags,
ACPI_POINTER *Address);
ACPI_STATUS
AcpiOsPredefinedOverride (
const ACPI_PREDEFINED_NAMES *InitVal,
ACPI_STRING *NewVal);
ACPI_STATUS
AcpiOsTableOverride (
ACPI_TABLE_HEADER *ExistingTable,
@ -216,6 +208,24 @@ AcpiOsSignalSemaphore (
ACPI_HANDLE Handle,
UINT32 Units);
ACPI_STATUS
AcpiOsCreateLock (
ACPI_HANDLE *OutHandle);
void
AcpiOsDeleteLock (
ACPI_HANDLE Handle);
void
AcpiOsAcquireLock (
ACPI_HANDLE Handle,
UINT32 Flags);
void
AcpiOsReleaseLock (
ACPI_HANDLE Handle,
UINT32 Flags);
/*
* Memory allocation and mapping
@ -293,13 +303,13 @@ AcpiOsStall (
ACPI_STATUS
AcpiOsReadPort (
ACPI_IO_ADDRESS Address,
void *Value,
UINT32 *Value,
UINT32 Width);
ACPI_STATUS
AcpiOsWritePort (
ACPI_IO_ADDRESS Address,
ACPI_INTEGER Value,
UINT32 Value,
UINT32 Width);
@ -310,13 +320,13 @@ AcpiOsWritePort (
ACPI_STATUS
AcpiOsReadMemory (
ACPI_PHYSICAL_ADDRESS Address,
void *Value,
UINT32 *Value,
UINT32 Width);
ACPI_STATUS
AcpiOsWriteMemory (
ACPI_PHYSICAL_ADDRESS Address,
ACPI_INTEGER Value,
UINT32 Value,
UINT32 Width);
@ -354,12 +364,12 @@ AcpiOsDerivePciId(
BOOLEAN
AcpiOsReadable (
void *Pointer,
UINT32 Length);
ACPI_SIZE Length);
BOOLEAN
AcpiOsWritable (
void *Pointer,
UINT32 Length);
ACPI_SIZE Length);
UINT32
AcpiOsGetTimer (
@ -398,6 +408,30 @@ AcpiOsGetLine (
char *Buffer);
/*
* Directory manipulation
*/
void *
AcpiOsOpenDirectory (
char *Pathname,
char *WildcardSpec,
char RequestedFileType);
/* RequesteFileType values */
#define REQUEST_FILE_ONLY 0
#define REQUEST_DIR_ONLY 1
char *
AcpiOsGetNextFilename (
void *DirHandle);
void
AcpiOsCloseDirectory (
void *DirHandle);
/*
* Debug
*/

View File

@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -240,7 +240,7 @@ AcpiWalkNamespace (
UINT32 MaxDepth,
ACPI_WALK_CALLBACK UserFunction,
void *Context,
void * *ReturnValue);
void **ReturnValue);
ACPI_STATUS
AcpiGetDevices (
@ -300,8 +300,8 @@ AcpiEvaluateObjectTyped (
ACPI_STATUS
AcpiGetObjectInfo (
ACPI_HANDLE Device,
ACPI_DEVICE_INFO *Info);
ACPI_HANDLE Handle,
ACPI_BUFFER *ReturnBuffer);
ACPI_STATUS
AcpiGetNextObject (
@ -365,6 +365,7 @@ AcpiRemoveAddressSpaceHandler (
ACPI_STATUS
AcpiInstallGpeHandler (
ACPI_HANDLE GpeDevice,
UINT32 GpeNumber,
UINT32 Type,
ACPI_GPE_HANDLER Handler,
@ -381,36 +382,76 @@ AcpiReleaseGlobalLock (
ACPI_STATUS
AcpiRemoveGpeHandler (
ACPI_HANDLE GpeDevice,
UINT32 GpeNumber,
ACPI_GPE_HANDLER Handler);
ACPI_STATUS
AcpiEnableEvent (
UINT32 AcpiEvent,
UINT32 Type,
UINT32 Event,
UINT32 Flags);
ACPI_STATUS
AcpiDisableEvent (
UINT32 AcpiEvent,
UINT32 Type,
UINT32 Event,
UINT32 Flags);
ACPI_STATUS
AcpiClearEvent (
UINT32 AcpiEvent,
UINT32 Type);
UINT32 Event);
ACPI_STATUS
AcpiGetEventStatus (
UINT32 AcpiEvent,
UINT32 Type,
UINT32 Event,
ACPI_EVENT_STATUS *EventStatus);
ACPI_STATUS
AcpiEnableGpe (
ACPI_HANDLE GpeDevice,
UINT32 GpeNumber,
UINT32 Flags);
ACPI_STATUS
AcpiDisableGpe (
ACPI_HANDLE GpeDevice,
UINT32 GpeNumber,
UINT32 Flags);
ACPI_STATUS
AcpiClearGpe (
ACPI_HANDLE GpeDevice,
UINT32 GpeNumber,
UINT32 Flags);
ACPI_STATUS
AcpiGetGpeStatus (
ACPI_HANDLE GpeDevice,
UINT32 GpeNumber,
UINT32 Flags,
ACPI_EVENT_STATUS *EventStatus);
ACPI_STATUS
AcpiInstallGpeBlock (
ACPI_HANDLE GpeDevice,
ACPI_GENERIC_ADDRESS *GpeBlockAddress,
UINT32 RegisterCount,
UINT32 InterruptLevel);
ACPI_STATUS
AcpiRemoveGpeBlock (
ACPI_HANDLE GpeDevice);
/*
* Resource interfaces
*/
typedef
ACPI_STATUS (*ACPI_WALK_RESOURCE_CALLBACK) (
ACPI_RESOURCE *Resource,
void *Context);
ACPI_STATUS
AcpiGetCurrentResources(
ACPI_HANDLE DeviceHandle,
@ -421,6 +462,13 @@ AcpiGetPossibleResources(
ACPI_HANDLE DeviceHandle,
ACPI_BUFFER *RetBuffer);
ACPI_STATUS
AcpiWalkResources (
ACPI_HANDLE DeviceHandle,
char *Path,
ACPI_WALK_RESOURCE_CALLBACK UserFunction,
void *Context);
ACPI_STATUS
AcpiSetCurrentResources (
ACPI_HANDLE DeviceHandle,
@ -431,6 +479,10 @@ AcpiGetIrqRoutingTable (
ACPI_HANDLE BusDeviceHandle,
ACPI_BUFFER *RetBuffer);
ACPI_STATUS
AcpiResourceToAddress64 (
ACPI_RESOURCE *Resource,
ACPI_RESOURCE_ADDRESS64 *Out);
/*
* Hardware (ACPI device) interfaces
@ -470,6 +522,10 @@ ACPI_STATUS
AcpiEnterSleepState (
UINT8 SleepState);
ACPI_STATUS
AcpiEnterSleepStateS4bios (
void);
ACPI_STATUS
AcpiLeaveSleepState (
UINT8 SleepState);

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acresrc.h - Resource Manager function prototypes
* $Revision: 1.35 $
* $Revision: 1.38 $
*
*****************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -139,6 +139,12 @@ AcpiRsGetPrsMethodData (
ACPI_HANDLE Handle,
ACPI_BUFFER *RetBuffer);
ACPI_STATUS
AcpiRsGetMethodData (
ACPI_HANDLE Handle,
char *Path,
ACPI_BUFFER *RetBuffer);
ACPI_STATUS
AcpiRsSetSrsMethodData (
ACPI_HANDLE Handle,

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acstruct.h - Internal structs
* $Revision: 1.25 $
* $Revision: 1.27 $
*
*****************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -164,11 +164,12 @@ typedef struct acpi_walk_state
struct acpi_namespace_node Arguments[ACPI_METHOD_NUM_ARGS]; /* Control method arguments */
union acpi_operand_object **CallerReturnDesc;
ACPI_GENERIC_STATE *ControlState; /* List of control states (nested IFs) */
struct acpi_namespace_node *DeferredNode; /* Used when executing deferred opcodes */
struct acpi_namespace_node LocalVariables[ACPI_METHOD_NUM_LOCALS]; /* Control method locals */
struct acpi_namespace_node *MethodCallNode; /* Called method Node*/
ACPI_PARSE_OBJECT *MethodCallOp; /* MethodCall Op if running a method */
union acpi_operand_object *MethodDesc; /* Method descriptor if running a method */
struct acpi_namespace_node *MethodNode; /* Method Node if running a method */
struct acpi_namespace_node *MethodNode; /* Method node if running a method. */
ACPI_PARSE_OBJECT *Op; /* Current parser op */
union acpi_operand_object *Operands[ACPI_OBJ_NUM_OPERANDS+1]; /* Operands passed to the interpreter (+1 for NULL terminator) */
const ACPI_OPCODE_INFO *OpInfo; /* Info on current opcode */

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: actables.h - ACPI table management
* $Revision: 1.44 $
* $Revision: 1.46 $
*
*****************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -230,7 +230,7 @@ AcpiTbMatchSignature (
ACPI_STATUS
AcpiTbRecognizeTable (
ACPI_TABLE_DESC *TableInfo,
UINT8 SearchType);
UINT8 SearchType);
ACPI_STATUS
AcpiTbInitTableDescriptor (
@ -243,11 +243,11 @@ AcpiTbInitTableDescriptor (
*/
void
AcpiTbDeleteAcpiTables (
AcpiTbDeleteAllTables (
void);
void
AcpiTbDeleteAcpiTable (
AcpiTbDeleteTablesByType (
ACPI_TABLE_TYPE Type);
void
@ -258,10 +258,6 @@ ACPI_TABLE_DESC *
AcpiTbUninstallTable (
ACPI_TABLE_DESC *TableDesc);
void
AcpiTbFreeAcpiTablesOfType (
ACPI_TABLE_DESC *TableInfo);
/*
* tbrsd - RSDP, RSDT utilities

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: actbl.h - Table data structures defined in ACPI specification
* $Revision: 1.56 $
* $Revision: 1.64 $
*
*****************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -138,16 +138,6 @@
#define GL_OWNED 0x02 /* Ownership of global lock is bit 1 */
/* values of Mapic.Model */
#define DUAL_PIC 0
#define MULTIPLE_APIC 1
/* values of Type in APIC_HEADER */
#define APIC_PROC 0
#define APIC_IO 1
/*
* Common table types. The base code can remain
@ -162,8 +152,10 @@
#pragma pack(1)
/*
* Architecture-independent tables
* The architecture dependent tables are in separate files
* ACPI Version-independent tables
*
* NOTE: The tables that are specific to ACPI versions (1.0, 2.0, etc.)
* are in separate files.
*/
typedef struct rsdp_descriptor /* Root System Descriptor Pointer */
{
@ -180,21 +172,6 @@ typedef struct rsdp_descriptor /* Root System Descriptor Pointer */
} RSDP_DESCRIPTOR;
typedef struct acpi_table_header /* ACPI common table header */
{
char Signature [4]; /* ACPI signature (4 ASCII characters) */
UINT32 Length; /* Length of table, in bytes, including header */
UINT8 Revision; /* ACPI Specification minor version # */
UINT8 Checksum; /* To make sum of entire table == 0 */
char OemId [6]; /* OEM identification */
char OemTableId [8]; /* OEM table identification */
UINT32 OemRevision; /* OEM revision number */
char AslCompilerId [4]; /* ASL compiler vendor ID */
UINT32 AslCompilerRevision; /* ASL compiler revision number */
} ACPI_TABLE_HEADER;
typedef struct acpi_common_facs /* Common FACS for internal use */
{
UINT32 *GlobalLock;
@ -204,64 +181,214 @@ typedef struct acpi_common_facs /* Common FACS for internal use */
} ACPI_COMMON_FACS;
typedef struct /* APIC Table */
#define ACPI_TABLE_HEADER_DEF /* ACPI common table header */ \
char Signature [4]; /* ACPI signature (4 ASCII characters) */\
UINT32 Length; /* Length of table, in bytes, including header */\
UINT8 Revision; /* ACPI Specification minor version # */\
UINT8 Checksum; /* To make sum of entire table == 0 */\
char OemId [6]; /* OEM identification */\
char OemTableId [8]; /* OEM table identification */\
UINT32 OemRevision; /* OEM revision number */\
char AslCompilerId [4]; /* ASL compiler vendor ID */\
UINT32 AslCompilerRevision; /* ASL compiler revision number */
typedef struct acpi_table_header /* ACPI common table header */
{
ACPI_TABLE_HEADER Header; /* ACPI table header */
UINT32 LocalApicAddress; /* Physical address for accessing local APICs */
UINT32_BIT PCATCompat : 1; /* a one indicates system also has dual 8259s */
ACPI_TABLE_HEADER_DEF
} ACPI_TABLE_HEADER;
/*
* MADT values and structures
*/
/* Values for MADT PCATCompat */
#define DUAL_PIC 0
#define MULTIPLE_APIC 1
/* Master MADT */
typedef struct multiple_apic_table
{
ACPI_TABLE_HEADER_DEF /* ACPI common table header */
UINT32 LocalApicAddress; /* Physical address of local APIC */
UINT32_BIT PCATCompat : 1; /* A one indicates system also has dual 8259s */
UINT32_BIT Reserved1 : 31;
} APIC_TABLE;
} MULTIPLE_APIC_TABLE;
typedef struct /* APIC Header */
/* Values for Type in APIC_HEADER_DEF */
#define APIC_PROCESSOR 0
#define APIC_IO 1
#define APIC_XRUPT_OVERRIDE 2
#define APIC_NMI 3
#define APIC_LOCAL_NMI 4
#define APIC_ADDRESS_OVERRIDE 5
#define APIC_IO_SAPIC 6
#define APIC_LOCAL_SAPIC 7
#define APIC_XRUPT_SOURCE 8
#define APIC_RESERVED 9 /* 9 and greater are reserved */
/*
* MADT sub-structures (Follow MULTIPLE_APIC_DESCRIPTION_TABLE)
*/
#define APIC_HEADER_DEF /* Common APIC sub-structure header */\
UINT8 Type; \
UINT8 Length;
typedef struct apic_header
{
UINT8 Type; /* APIC type. Either APIC_PROC or APIC_IO */
UINT8 Length; /* Length of APIC structure */
APIC_HEADER_DEF
} APIC_HEADER;
/* Values for MPS INTI flags */
typedef struct /* Processor APIC */
#define POLARITY_CONFORMS 0
#define POLARITY_ACTIVE_HIGH 1
#define POLARITY_RESERVED 2
#define POLARITY_ACTIVE_LOW 3
#define TRIGGER_CONFORMS 0
#define TRIGGER_EDGE 1
#define TRIGGER_RESERVED 2
#define TRIGGER_LEVEL 3
/* Common flag definitions */
#define MPS_INTI_FLAGS \
UINT16_BIT Polarity : 2; /* Polarity of APIC I/O input signals */\
UINT16_BIT TriggerMode : 2; /* Trigger mode of APIC input signals */\
UINT16_BIT Reserved1 : 12; /* Reserved, must be zero */
#define LOCAL_APIC_FLAGS \
UINT32_BIT ProcessorEnabled: 1; /* Processor is usable if set */\
UINT32_BIT Reserved2 : 31; /* Reserved, must be zero */
/* Sub-structures for MADT */
typedef struct madt_processor_apic
{
APIC_HEADER Header;
UINT8 ProcessorApicId; /* ACPI processor id */
APIC_HEADER_DEF
UINT8 ProcessorId; /* ACPI processor id */
UINT8 LocalApicId; /* Processor's local APIC id */
UINT32_BIT ProcessorEnabled: 1; /* Processor is usable if set */
UINT32_BIT Reserved1 : 31;
LOCAL_APIC_FLAGS
} PROCESSOR_APIC;
} MADT_PROCESSOR_APIC;
typedef struct /* IO APIC */
typedef struct madt_io_apic
{
APIC_HEADER Header;
APIC_HEADER_DEF
UINT8 IoApicId; /* I/O APIC ID */
UINT8 Reserved; /* Reserved - must be zero */
UINT32 IoApicAddress; /* APIC's physical address */
UINT32 Vector; /* Interrupt vector index where INTI
UINT32 Address; /* APIC physical address */
UINT32 Interrupt; /* Global system interrupt where INTI
* lines start */
} IO_APIC;
} MADT_IO_APIC;
/*
* IA64 TBD: Add SAPIC Tables
*/
/*
* IA64 TBD: Modify Smart Battery Description to comply with ACPI IA64
* extensions.
*/
typedef struct /* Smart Battery Description Table */
typedef struct madt_interrupt_override
{
ACPI_TABLE_HEADER Header;
APIC_HEADER_DEF
UINT8 Bus; /* 0 - ISA */
UINT8 Source; /* Interrupt source (IRQ) */
UINT32 Interrupt; /* Global system interrupt */
MPS_INTI_FLAGS
} MADT_INTERRUPT_OVERRIDE;
typedef struct madt_nmi_source
{
APIC_HEADER_DEF
MPS_INTI_FLAGS
UINT32 Interrupt; /* Global system interrupt */
} MADT_NMI_SOURCE;
typedef struct madt_local_apic_nmi
{
APIC_HEADER_DEF
UINT8 ProcessorId; /* ACPI processor id */
MPS_INTI_FLAGS
UINT8 Lint; /* LINTn to which NMI is connected */
} MADT_LOCAL_APIC_NMI;
typedef struct madt_address_override
{
APIC_HEADER_DEF
UINT16 Reserved; /* Reserved - must be zero */
UINT64 Address; /* APIC physical address */
} MADT_ADDRESS_OVERRIDE;
typedef struct madt_io_sapic
{
APIC_HEADER_DEF
UINT8 IoSapicId; /* I/O SAPIC ID */
UINT8 Reserved; /* Reserved - must be zero */
UINT32 InterruptBase; /* Glocal interrupt for SAPIC start */
UINT64 Address; /* SAPIC physical address */
} MADT_IO_SAPIC;
typedef struct madt_local_sapic
{
APIC_HEADER_DEF
UINT8 ProcessorId; /* ACPI processor id */
UINT8 LocalSapicId; /* SAPIC ID */
UINT8 LocalSapicEid; /* SAPIC EID */
UINT8 Reserved [3]; /* Reserved - must be zero */
LOCAL_APIC_FLAGS
} MADT_LOCAL_SAPIC;
typedef struct madt_interrupt_source
{
APIC_HEADER_DEF
MPS_INTI_FLAGS
UINT8 InterruptType; /* 1=PMI, 2=INIT, 3=corrected */
UINT8 ProcessorId; /* Processor ID */
UINT8 ProcessorEid; /* Processor EID */
UINT8 IoSapicVector; /* Vector value for PMI interrupts */
UINT32 Interrupt; /* Global system interrupt */
UINT32 Reserved; /* Reserved - must be zero */
} MADT_INTERRUPT_SOURCE;
/*
* Smart Battery
*/
typedef struct smart_battery_table
{
ACPI_TABLE_HEADER_DEF
UINT32 WarningLevel;
UINT32 LowLevel;
UINT32 CriticalLevel;
} SMART_BATTERY_DESCRIPTION_TABLE;
} SMART_BATTERY_TABLE;
/*
* High performance timer
*/
typedef struct hpet_table
{
ACPI_TABLE_HEADER_DEF
UINT32 HardwareId;
UINT32 BaseAddress [3];
UINT8 HpetNumber;
UINT16 ClockTick;
UINT8 Attributes;
} HPET_TABLE;
#pragma pack()
@ -283,12 +410,12 @@ typedef struct /* Smart Battery Description Table */
#define ACPI_TABLE_ROOT 0x00
#define ACPI_TABLE_PRIMARY 0x10
#define ACPI_TABLE_SECONDARY 0x20
#define ACPI_TABLE_OTHER 0x30
#define ACPI_TABLE_ALL 0x30
#define ACPI_TABLE_TYPE_MASK 0x30
/* Data about each known table type */
typedef struct _AcpiTableSupport
typedef struct acpi_table_support
{
char *Name;
char *Signature;
@ -300,9 +427,10 @@ typedef struct _AcpiTableSupport
/*
* Get the architecture-specific tables
* Get the ACPI version-specific tables
*/
#include "actbl1.h" /* Acpi 1.0 table definitions */
#include "actbl2.h" /* Acpi 2.0 table definitions */
#endif /* __ACTBL_H__ */

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: actbl1.h - ACPI 1.0 tables
* $Revision: 1.26 $
* $Revision: 1.28 $
*
*****************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -124,7 +124,7 @@
*/
typedef struct rsdt_descriptor_rev1
{
ACPI_TABLE_HEADER Header; /* ACPI Table header */
ACPI_TABLE_HEADER_DEF /* ACPI common table header */
UINT32 TableOffsetEntry [1]; /* Array of pointers to other */
/* ACPI tables */
} RSDT_DESCRIPTOR_REV1;
@ -152,7 +152,7 @@ typedef struct facs_descriptor_rev1
*/
typedef struct fadt_descriptor_rev1
{
ACPI_TABLE_HEADER Header; /* ACPI Table header */
ACPI_TABLE_HEADER_DEF /* ACPI common table header */
UINT32 FirmwareCtrl; /* Physical address of FACS */
UINT32 Dsdt; /* Physical address of DSDT */
UINT8 Model; /* System Interrupt Model */

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: actbl2.h - ACPI Specification Revision 2.0 Tables
* $Revision: 1.32 $
* $Revision: 1.35 $
*
*****************************************************************************/
@ -9,7 +9,7 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
* All rights reserved.
*
* 2. License
@ -144,7 +144,7 @@
*/
typedef struct rsdt_descriptor_rev2
{
ACPI_TABLE_HEADER Header; /* ACPI table header */
ACPI_TABLE_HEADER_DEF /* ACPI common table header */
UINT32 TableOffsetEntry [1]; /* Array of pointers to */
/* ACPI table headers */
} RSDT_DESCRIPTOR_REV2;
@ -155,7 +155,7 @@ typedef struct rsdt_descriptor_rev2
*/
typedef struct xsdt_descriptor_rev2
{
ACPI_TABLE_HEADER Header; /* ACPI table header */
ACPI_TABLE_HEADER_DEF /* ACPI common table header */
UINT64 TableOffsetEntry [1]; /* Array of pointers to */
/* ACPI table headers */
} XSDT_DESCRIPTOR_REV2;
@ -199,7 +199,7 @@ typedef struct acpi_generic_address
*/
typedef struct fadt_descriptor_rev2
{
ACPI_TABLE_HEADER Header; /* ACPI table header */
ACPI_TABLE_HEADER_DEF /* ACPI common table header */
UINT32 V1_FirmwareCtrl; /* 32-bit physical address of FACS */
UINT32 V1_Dsdt; /* 32-bit physical address of DSDT */
UINT8 Reserved1; /* System Interrupt Model isn't used in ACPI 2.0*/
@ -271,6 +271,20 @@ typedef struct fadt_descriptor_rev2
} FADT_DESCRIPTOR_REV2;
/* Embedded Controller */
typedef struct ec_boot_resources
{
ACPI_TABLE_HEADER_DEF
ACPI_GENERIC_ADDRESS EcControl; /* Address of EC command/status register */
ACPI_GENERIC_ADDRESS EcData; /* Address of EC data register */
UINT32 Uid; /* Unique ID - must be same as the EC _UID method */
UINT8 GpeBit; /* The GPE for the EC */
UINT8 EcId[1]; /* Full namepath of the EC in the ACPI namespace */
} EC_BOOT_RESOURCES;
#pragma pack()
#endif /* __ACTBL2_H__ */