Merge ACPICA 20130725.
This commit is contained in:
parent
97ac613107
commit
e0885a9b34
File diff suppressed because it is too large
Load Diff
@ -719,34 +719,54 @@ AcpiDmEmitExternals (
|
||||
|
||||
AcpiDmUnresolvedWarning (1);
|
||||
|
||||
/* Emit any unresolved method externals in a single text block */
|
||||
|
||||
NextExternal = AcpiGbl_ExternalList;
|
||||
while (NextExternal)
|
||||
{
|
||||
if ((NextExternal->Type == ACPI_TYPE_METHOD) &&
|
||||
(!NextExternal->Resolved))
|
||||
{
|
||||
AcpiOsPrintf (" External (%s%s",
|
||||
NextExternal->Path,
|
||||
AcpiDmGetObjectTypeName (NextExternal->Type));
|
||||
|
||||
AcpiOsPrintf (") // Warning: Unresolved Method, "
|
||||
"guessing %u arguments (may be incorrect, see warning above)\n",
|
||||
NextExternal->Value);
|
||||
|
||||
NextExternal->Emitted = TRUE;
|
||||
}
|
||||
|
||||
NextExternal = NextExternal->Next;
|
||||
}
|
||||
|
||||
AcpiOsPrintf ("\n");
|
||||
|
||||
/*
|
||||
* Walk the list of externals (unresolved references)
|
||||
* found during the AML parsing
|
||||
*/
|
||||
while (AcpiGbl_ExternalList)
|
||||
{
|
||||
AcpiOsPrintf (" External (%s%s",
|
||||
AcpiGbl_ExternalList->Path,
|
||||
AcpiDmGetObjectTypeName (AcpiGbl_ExternalList->Type));
|
||||
|
||||
if (AcpiGbl_ExternalList->Type == ACPI_TYPE_METHOD)
|
||||
if (!AcpiGbl_ExternalList->Emitted)
|
||||
{
|
||||
if (AcpiGbl_ExternalList->Resolved)
|
||||
AcpiOsPrintf (" External (%s%s",
|
||||
AcpiGbl_ExternalList->Path,
|
||||
AcpiDmGetObjectTypeName (AcpiGbl_ExternalList->Type));
|
||||
|
||||
/* For methods, add a comment with the number of arguments */
|
||||
|
||||
if (AcpiGbl_ExternalList->Type == ACPI_TYPE_METHOD)
|
||||
{
|
||||
AcpiOsPrintf (") // %u Arguments\n",
|
||||
AcpiGbl_ExternalList->Value);
|
||||
}
|
||||
else
|
||||
{
|
||||
AcpiOsPrintf (") // Warning: unresolved Method, "
|
||||
"assuming %u arguments (may be incorrect, see warning above)\n",
|
||||
AcpiGbl_ExternalList->Value);
|
||||
AcpiOsPrintf (")\n");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
AcpiOsPrintf (")\n");
|
||||
}
|
||||
|
||||
/* Free this external info block and move on to next external */
|
||||
|
||||
@ -931,5 +951,4 @@ AcpiDmUnresolvedWarning (
|
||||
(AcpiGbl_NumExternalMethods - AcpiGbl_ResolvedExternalMethods));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -197,6 +197,26 @@ AcpiGetopt(
|
||||
CurrentCharPtr = 1;
|
||||
}
|
||||
|
||||
/* Option has an optional argument? */
|
||||
|
||||
else if (*OptsPtr == '+')
|
||||
{
|
||||
if (argv[AcpiGbl_Optind][(int) (CurrentCharPtr+1)] != '\0')
|
||||
{
|
||||
AcpiGbl_Optarg = &argv[AcpiGbl_Optind++][(int) (CurrentCharPtr+1)];
|
||||
}
|
||||
else if (++AcpiGbl_Optind >= argc)
|
||||
{
|
||||
AcpiGbl_Optarg = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
AcpiGbl_Optarg = argv[AcpiGbl_Optind++];
|
||||
}
|
||||
|
||||
CurrentCharPtr = 1;
|
||||
}
|
||||
|
||||
/* Option has optional single-char arguments? */
|
||||
|
||||
else if (*OptsPtr == '^')
|
||||
|
@ -57,10 +57,12 @@ static void
|
||||
LsEmitOffsetTableEntry (
|
||||
UINT32 FileId,
|
||||
ACPI_NAMESPACE_NODE *Node,
|
||||
UINT32 NamepathOffset,
|
||||
UINT32 Offset,
|
||||
char *OpName,
|
||||
UINT64 Value,
|
||||
UINT8 AmlOpcode);
|
||||
UINT8 AmlOpcode,
|
||||
UINT16 ParentOpcode);
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
@ -94,7 +96,8 @@ LsAmlOffsetWalk (
|
||||
UINT32 FileId = (UINT32) ACPI_TO_INTEGER (Context);
|
||||
ACPI_NAMESPACE_NODE *Node;
|
||||
UINT32 Length;
|
||||
UINT32 OffsetOfOpcode;
|
||||
UINT32 NamepathOffset;
|
||||
UINT32 DataOffset;
|
||||
ACPI_PARSE_OBJECT *NextOp;
|
||||
|
||||
|
||||
@ -119,8 +122,9 @@ LsAmlOffsetWalk (
|
||||
if ((Node->Type == ACPI_TYPE_LOCAL_RESOURCE) &&
|
||||
(Op->Asl.CompileFlags & NODE_IS_RESOURCE_DESC))
|
||||
{
|
||||
LsEmitOffsetTableEntry (FileId, Node, Gbl_CurrentAmlOffset,
|
||||
Op->Asl.ParseOpName, 0, Op->Asl.Extra);
|
||||
LsEmitOffsetTableEntry (FileId, Node, 0, Gbl_CurrentAmlOffset,
|
||||
Op->Asl.ParseOpName, 0, Op->Asl.Extra, AML_BUFFER_OP);
|
||||
|
||||
Gbl_CurrentAmlOffset += Op->Asl.FinalAmlLength;
|
||||
return (AE_OK);
|
||||
}
|
||||
@ -138,22 +142,25 @@ LsAmlOffsetWalk (
|
||||
}
|
||||
|
||||
Length = Op->Asl.FinalAmlLength;
|
||||
NamepathOffset = Gbl_CurrentAmlOffset + Length;
|
||||
|
||||
/* Get to the NameSeg/NamePath Op (and length of the name) */
|
||||
|
||||
Op = Op->Asl.Child;
|
||||
OffsetOfOpcode = Length + Op->Asl.FinalAmlLength;
|
||||
|
||||
/* Get offset of last nameseg and the actual data */
|
||||
|
||||
NamepathOffset = Gbl_CurrentAmlOffset + Length +
|
||||
(Op->Asl.FinalAmlLength - ACPI_NAME_SIZE);
|
||||
|
||||
DataOffset = Gbl_CurrentAmlOffset + Length +
|
||||
Op->Asl.FinalAmlLength;
|
||||
|
||||
/* Get actual value associated with the name */
|
||||
|
||||
Op = Op->Asl.Next;
|
||||
switch (Op->Asl.AmlOpcode)
|
||||
{
|
||||
/*
|
||||
* We are only interested in integer constants that can be changed
|
||||
* at boot time. Note, the One/Ones/Zero opcodes are considered
|
||||
* non-changeable, so we ignore them here.
|
||||
*/
|
||||
case AML_BYTE_OP:
|
||||
case AML_WORD_OP:
|
||||
case AML_DWORD_OP:
|
||||
@ -161,22 +168,32 @@ LsAmlOffsetWalk (
|
||||
|
||||
/* The +1 is to handle the integer size prefix (opcode) */
|
||||
|
||||
LsEmitOffsetTableEntry (FileId, Node,
|
||||
(Gbl_CurrentAmlOffset + OffsetOfOpcode + 1),
|
||||
LsEmitOffsetTableEntry (FileId, Node, NamepathOffset, (DataOffset + 1),
|
||||
Op->Asl.ParseOpName, Op->Asl.Value.Integer,
|
||||
(UINT8) Op->Asl.AmlOpcode);
|
||||
(UINT8) Op->Asl.AmlOpcode, AML_NAME_OP);
|
||||
break;
|
||||
|
||||
case AML_ONE_OP:
|
||||
case AML_ONES_OP:
|
||||
case AML_ZERO_OP:
|
||||
|
||||
/* For these, offset will point to the opcode */
|
||||
|
||||
LsEmitOffsetTableEntry (FileId, Node, NamepathOffset, DataOffset,
|
||||
Op->Asl.ParseOpName, Op->Asl.Value.Integer,
|
||||
(UINT8) Op->Asl.AmlOpcode, AML_NAME_OP);
|
||||
break;
|
||||
|
||||
case AML_PACKAGE_OP:
|
||||
case AML_VAR_PACKAGE_OP:
|
||||
|
||||
/* Get the package element count */
|
||||
|
||||
NextOp = Op->Asl.Child;
|
||||
|
||||
LsEmitOffsetTableEntry (FileId, Node,
|
||||
(Gbl_CurrentAmlOffset + OffsetOfOpcode),
|
||||
Op->Asl.ParseOpName,
|
||||
NextOp->Asl.Value.Integer,
|
||||
(UINT8) Op->Asl.AmlOpcode);
|
||||
LsEmitOffsetTableEntry (FileId, Node, NamepathOffset, DataOffset,
|
||||
Op->Asl.ParseOpName, NextOp->Asl.Value.Integer,
|
||||
(UINT8) Op->Asl.AmlOpcode, AML_NAME_OP);
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -195,7 +212,14 @@ LsAmlOffsetWalk (
|
||||
/* Get the name/namepath node */
|
||||
|
||||
NextOp = Op->Asl.Child;
|
||||
OffsetOfOpcode = Length + NextOp->Asl.FinalAmlLength + 1;
|
||||
|
||||
/* Get offset of last nameseg and the actual data */
|
||||
|
||||
NamepathOffset = Gbl_CurrentAmlOffset + Length +
|
||||
(NextOp->Asl.FinalAmlLength - ACPI_NAME_SIZE);
|
||||
|
||||
DataOffset = Gbl_CurrentAmlOffset + Length +
|
||||
(NextOp->Asl.FinalAmlLength + 1);
|
||||
|
||||
/* Get the SpaceId node, then the Offset (address) node */
|
||||
|
||||
@ -214,10 +238,9 @@ LsAmlOffsetWalk (
|
||||
case AML_DWORD_OP:
|
||||
case AML_QWORD_OP:
|
||||
|
||||
LsEmitOffsetTableEntry (FileId, Node,
|
||||
(Gbl_CurrentAmlOffset + OffsetOfOpcode + 1),
|
||||
LsEmitOffsetTableEntry (FileId, Node, NamepathOffset, (DataOffset + 1),
|
||||
Op->Asl.ParseOpName, NextOp->Asl.Value.Integer,
|
||||
(UINT8) NextOp->Asl.AmlOpcode);
|
||||
(UINT8) NextOp->Asl.AmlOpcode, AML_REGION_OP);
|
||||
|
||||
Gbl_CurrentAmlOffset += Length;
|
||||
return (AE_OK);
|
||||
@ -237,15 +260,62 @@ LsAmlOffsetWalk (
|
||||
|
||||
NextOp = Op->Asl.Child;
|
||||
|
||||
/* Point to the *last* nameseg in the namepath */
|
||||
/* Get offset of last nameseg and the actual data (flags byte) */
|
||||
|
||||
OffsetOfOpcode = NextOp->Asl.FinalAmlLength - ACPI_NAME_SIZE;
|
||||
NamepathOffset = Gbl_CurrentAmlOffset + Length +
|
||||
(NextOp->Asl.FinalAmlLength - ACPI_NAME_SIZE);
|
||||
|
||||
LsEmitOffsetTableEntry (FileId, Node,
|
||||
(Gbl_CurrentAmlOffset + OffsetOfOpcode + Length),
|
||||
Op->Asl.ParseOpName,
|
||||
*((UINT32 *) &NextOp->Asl.Value.Buffer[OffsetOfOpcode]),
|
||||
(UINT8) Op->Asl.AmlOpcode);
|
||||
DataOffset = Gbl_CurrentAmlOffset + Length +
|
||||
NextOp->Asl.FinalAmlLength;
|
||||
|
||||
/* Get the flags byte Op */
|
||||
|
||||
NextOp = NextOp->Asl.Next;
|
||||
|
||||
LsEmitOffsetTableEntry (FileId, Node, NamepathOffset, DataOffset,
|
||||
Op->Asl.ParseOpName, NextOp->Asl.Value.Integer,
|
||||
(UINT8) Op->Asl.AmlOpcode, AML_METHOD_OP);
|
||||
break;
|
||||
|
||||
case AML_PROCESSOR_OP:
|
||||
|
||||
/* Processor (Namepath, ProcessorId, Address, Length) */
|
||||
|
||||
Length = Op->Asl.FinalAmlLength;
|
||||
NextOp = Op->Asl.Child; /* Get Namepath */
|
||||
|
||||
/* Get offset of last nameseg and the actual data (PBlock address) */
|
||||
|
||||
NamepathOffset = Gbl_CurrentAmlOffset + Length +
|
||||
(NextOp->Asl.FinalAmlLength - ACPI_NAME_SIZE);
|
||||
|
||||
DataOffset = Gbl_CurrentAmlOffset + Length +
|
||||
(NextOp->Asl.FinalAmlLength + 1);
|
||||
|
||||
NextOp = NextOp->Asl.Next; /* Get ProcessorID (BYTE) */
|
||||
NextOp = NextOp->Asl.Next; /* Get Address (DWORD) */
|
||||
|
||||
LsEmitOffsetTableEntry (FileId, Node, NamepathOffset, DataOffset,
|
||||
Op->Asl.ParseOpName, NextOp->Asl.Value.Integer,
|
||||
(UINT8) AML_DWORD_OP, AML_PROCESSOR_OP);
|
||||
break;
|
||||
|
||||
case AML_DEVICE_OP:
|
||||
case AML_SCOPE_OP:
|
||||
case AML_THERMAL_ZONE_OP:
|
||||
|
||||
/* Device/Scope/ThermalZone (Namepath) */
|
||||
|
||||
Length = Op->Asl.FinalAmlLength;
|
||||
NextOp = Op->Asl.Child; /* Get Namepath */
|
||||
|
||||
/* Get offset of last nameseg */
|
||||
|
||||
NamepathOffset = Gbl_CurrentAmlOffset + Length +
|
||||
(NextOp->Asl.FinalAmlLength - ACPI_NAME_SIZE);
|
||||
|
||||
LsEmitOffsetTableEntry (FileId, Node, NamepathOffset, 0,
|
||||
Op->Asl.ParseOpName, 0, (UINT8) 0, Op->Asl.AmlOpcode);
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -267,6 +337,7 @@ LsAmlOffsetWalk (
|
||||
* OpName - Name of the AML opcode
|
||||
* Value - Current value of the AML field
|
||||
* AmlOpcode - Opcode associated with the field
|
||||
* ObjectType - ACPI object type
|
||||
*
|
||||
* RETURN: None
|
||||
*
|
||||
@ -278,10 +349,12 @@ static void
|
||||
LsEmitOffsetTableEntry (
|
||||
UINT32 FileId,
|
||||
ACPI_NAMESPACE_NODE *Node,
|
||||
UINT32 NamepathOffset,
|
||||
UINT32 Offset,
|
||||
char *OpName,
|
||||
UINT64 Value,
|
||||
UINT8 AmlOpcode)
|
||||
UINT8 AmlOpcode,
|
||||
UINT16 ParentOpcode)
|
||||
{
|
||||
ACPI_BUFFER TargetPath;
|
||||
ACPI_STATUS Status;
|
||||
@ -308,8 +381,9 @@ LsEmitOffsetTableEntry (
|
||||
* Max Length for Integers is 8 bytes.
|
||||
*/
|
||||
FlPrintFile (FileId,
|
||||
" {%-29s 0x%8.8X, 0x%2.2X, 0x%8.8X%8.8X}, /* %s */\n",
|
||||
MsgBuffer, Offset, AmlOpcode, ACPI_FORMAT_UINT64 (Value), OpName);
|
||||
" {%-29s 0x%4.4X, 0x%8.8X, 0x%2.2X, 0x%8.8X, 0x%8.8X%8.8X}, /* %s */\n",
|
||||
MsgBuffer, ParentOpcode, NamepathOffset, AmlOpcode,
|
||||
Offset, ACPI_FORMAT_UINT64 (Value), OpName);
|
||||
}
|
||||
|
||||
|
||||
@ -335,10 +409,12 @@ LsDoOffsetTableHeader (
|
||||
"#define __AML_OFFSET_TABLE_H\n\n");
|
||||
|
||||
FlPrintFile (FileId, "typedef struct {\n"
|
||||
" char *Pathname;\n"
|
||||
" unsigned long Offset;\n"
|
||||
" unsigned char Opcode;\n"
|
||||
" unsigned long long Value;\n"
|
||||
" char *Pathname; /* Full pathname (from root) to the object */\n"
|
||||
" unsigned short ParentOpcode; /* AML opcode for the parent object */\n"
|
||||
" unsigned long NamesegOffset; /* Offset of last nameseg in the parent namepath */\n"
|
||||
" unsigned char Opcode; /* AML opcode for the data */\n"
|
||||
" unsigned long Offset; /* Offset for the data */\n"
|
||||
" unsigned long long Value; /* Original value of the data (as applicable) */\n"
|
||||
"} AML_OFFSET_TABLE_ENTRY;\n\n");
|
||||
|
||||
FlPrintFile (FileId,
|
||||
@ -346,29 +422,37 @@ LsDoOffsetTableHeader (
|
||||
|
||||
FlPrintFile (FileId,
|
||||
"/*\n"
|
||||
" * Information about supported object types:\n"
|
||||
" * Information specific to the supported object types:\n"
|
||||
" *\n"
|
||||
" * Integers:\n"
|
||||
" * Offset points to the actual integer data\n"
|
||||
" * Opcode is the integer prefix, indicates length of the data\n"
|
||||
" * (One of: BYTE, WORD, DWORD, QWORD, ZERO, ONE, ONES)\n"
|
||||
" * Offset points to the actual integer data\n"
|
||||
" * Value is the existing value in the AML\n"
|
||||
" *\n"
|
||||
" * Packages:\n"
|
||||
" * Offset points to the package opcode\n"
|
||||
" * Opcode is the package or var_package opcode\n"
|
||||
" * Value is the package element cound\n"
|
||||
" * Offset points to the package opcode\n"
|
||||
" * Value is the package element count\n"
|
||||
" *\n"
|
||||
" * Operation Regions:\n"
|
||||
" * Offset points to the region address data\n"
|
||||
" * Opcode is the address integer prefix, indicates length of the data\n"
|
||||
" * Offset points to the region address\n"
|
||||
" * Value is the existing address value in the AML\n"
|
||||
" *\n"
|
||||
" * Control Methods:\n"
|
||||
" * Offset points to the first byte of the namepath\n"
|
||||
" * Offset points to the method flags byte\n"
|
||||
" * Value is the existing flags value in the AML\n"
|
||||
" *\n"
|
||||
" * Processors:\n"
|
||||
" * Offset points to the first byte of the PBlock Address\n"
|
||||
" *\n"
|
||||
" * Resource Descriptors:\n"
|
||||
" * Offset points to the start of the descriptor\n"
|
||||
" * Opcode is the descriptor type\n"
|
||||
" * Offset points to the start of the descriptor\n"
|
||||
" *\n"
|
||||
" * Scopes/Devices/ThermalZones:\n"
|
||||
" * Nameseg offset only\n"
|
||||
" */\n");
|
||||
|
||||
FlPrintFile (FileId,
|
||||
@ -383,6 +467,6 @@ LsDoOffsetTableFooter (
|
||||
{
|
||||
|
||||
FlPrintFile (FileId,
|
||||
" {0,0,0,0} /* Table terminator */\n};\n\n");
|
||||
" {NULL,0,0,0,0,0} /* Table terminator */\n};\n\n");
|
||||
Gbl_CurrentAmlOffset = 0;
|
||||
}
|
||||
|
@ -971,12 +971,15 @@ OpnDoDefinitionBlock (
|
||||
Gbl_TableId = AcpiOsAllocate (Length + 1);
|
||||
ACPI_STRCPY (Gbl_TableId, Child->Asl.Value.String);
|
||||
|
||||
/*
|
||||
* Convert anything non-alphanumeric to an underscore. This
|
||||
* allows us to use the TableID to generate unique C symbols.
|
||||
*/
|
||||
for (i = 0; i < Length; i++)
|
||||
{
|
||||
if (Gbl_TableId[i] == ' ')
|
||||
if (!isalnum ((int) Gbl_TableId[i]))
|
||||
{
|
||||
Gbl_TableId[i] = 0;
|
||||
break;
|
||||
Gbl_TableId[i] = '_';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -68,7 +68,7 @@ AslDoResponseFile (
|
||||
|
||||
|
||||
#define ASL_TOKEN_SEPARATORS " \t\n"
|
||||
#define ASL_SUPPORTED_OPTIONS "@:b|c|d^D:e:fgh^i|I:l^m:no|p:P^r:s|t|T:G^v^w|x:z"
|
||||
#define ASL_SUPPORTED_OPTIONS "@:b|c|d^D:e:fgh^i|I:l^m:no|p:P^r:s|t|T+G^v^w|x:z"
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
|
@ -117,13 +117,21 @@ DtCreateTemplates (
|
||||
|
||||
|
||||
AslInitializeGlobals ();
|
||||
|
||||
/* Default (no signature) is DSDT */
|
||||
|
||||
if (!Signature)
|
||||
{
|
||||
Signature = "DSDT";
|
||||
goto GetTemplate;
|
||||
}
|
||||
|
||||
AcpiUtStrupr (Signature);
|
||||
|
||||
/* Create all known templates if requested */
|
||||
|
||||
if (!ACPI_STRNCMP (Signature, "ALL", 3) ||
|
||||
if (!ACPI_STRCMP (Signature, "ALL") ||
|
||||
!ACPI_STRCMP (Signature, "*"))
|
||||
{
|
||||
/* Create all available/known templates */
|
||||
|
||||
Status = DtCreateAllTemplates ();
|
||||
return (Status);
|
||||
}
|
||||
@ -136,7 +144,9 @@ DtCreateTemplates (
|
||||
*/
|
||||
if (strlen (Signature) != ACPI_NAME_SIZE)
|
||||
{
|
||||
fprintf (stderr, "%s, Invalid ACPI table signature\n", Signature);
|
||||
fprintf (stderr,
|
||||
"%s: Invalid ACPI table signature (length must be 4 characters)\n",
|
||||
Signature);
|
||||
return (AE_ERROR);
|
||||
}
|
||||
|
||||
@ -153,19 +163,20 @@ DtCreateTemplates (
|
||||
Signature = "FACP";
|
||||
}
|
||||
|
||||
GetTemplate:
|
||||
TableData = AcpiDmGetTableData (Signature);
|
||||
if (TableData)
|
||||
{
|
||||
if (!TableData->Template)
|
||||
{
|
||||
fprintf (stderr, "%4.4s, No template available\n", Signature);
|
||||
fprintf (stderr, "%4.4s: No template available\n", Signature);
|
||||
return (AE_ERROR);
|
||||
}
|
||||
}
|
||||
else if (!AcpiUtIsSpecialTable (Signature))
|
||||
{
|
||||
fprintf (stderr,
|
||||
"%4.4s, Unrecognized ACPI table signature\n", Signature);
|
||||
"%4.4s: Unrecognized ACPI table signature\n", Signature);
|
||||
return (AE_ERROR);
|
||||
}
|
||||
|
||||
|
@ -1009,10 +1009,17 @@ AcpiExOpcode_1A_0T_1R (
|
||||
* add another reference to the referenced object, however.
|
||||
*/
|
||||
ReturnDesc = *(Operand[0]->Reference.Where);
|
||||
if (ReturnDesc)
|
||||
if (!ReturnDesc)
|
||||
{
|
||||
AcpiUtAddReference (ReturnDesc);
|
||||
/*
|
||||
* Element is NULL, do not allow the dereference.
|
||||
* This provides compatibility with other ACPI
|
||||
* implementations.
|
||||
*/
|
||||
return_ACPI_STATUS (AE_AML_UNINITIALIZED_ELEMENT);
|
||||
}
|
||||
|
||||
AcpiUtAddReference (ReturnDesc);
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -1030,15 +1037,44 @@ AcpiExOpcode_1A_0T_1R (
|
||||
ReturnDesc = Operand[0]->Reference.Object;
|
||||
|
||||
if (ACPI_GET_DESCRIPTOR_TYPE (ReturnDesc) ==
|
||||
ACPI_DESC_TYPE_NAMED)
|
||||
ACPI_DESC_TYPE_NAMED)
|
||||
{
|
||||
ReturnDesc = AcpiNsGetAttachedObject (
|
||||
(ACPI_NAMESPACE_NODE *) ReturnDesc);
|
||||
(ACPI_NAMESPACE_NODE *) ReturnDesc);
|
||||
if (!ReturnDesc)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
/*
|
||||
* June 2013:
|
||||
* BufferFields/FieldUnits require additional resolution
|
||||
*/
|
||||
switch (ReturnDesc->Common.Type)
|
||||
{
|
||||
case ACPI_TYPE_BUFFER_FIELD:
|
||||
case ACPI_TYPE_LOCAL_REGION_FIELD:
|
||||
case ACPI_TYPE_LOCAL_BANK_FIELD:
|
||||
case ACPI_TYPE_LOCAL_INDEX_FIELD:
|
||||
|
||||
Status = AcpiExReadDataFromField (WalkState,
|
||||
ReturnDesc, &TempDesc);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
ReturnDesc = TempDesc;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
/* Add another reference to the object */
|
||||
|
||||
AcpiUtAddReference (ReturnDesc);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* Add another reference to the object! */
|
||||
|
||||
AcpiUtAddReference (ReturnDesc);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -115,8 +115,14 @@ AcpiGetTimer (
|
||||
return_ACPI_STATUS (AE_BAD_PARAMETER);
|
||||
}
|
||||
|
||||
Status = AcpiHwRead (Ticks, &AcpiGbl_FADT.XPmTimerBlock);
|
||||
/* ACPI 5.0A: PM Timer is optional */
|
||||
|
||||
if (!AcpiGbl_FADT.XPmTimerBlock.Address)
|
||||
{
|
||||
return_ACPI_STATUS (AE_SUPPORT);
|
||||
}
|
||||
|
||||
Status = AcpiHwRead (Ticks, &AcpiGbl_FADT.XPmTimerBlock);
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
@ -171,6 +177,13 @@ AcpiGetTimerDuration (
|
||||
return_ACPI_STATUS (AE_BAD_PARAMETER);
|
||||
}
|
||||
|
||||
/* ACPI 5.0A: PM Timer is optional */
|
||||
|
||||
if (!AcpiGbl_FADT.XPmTimerBlock.Address)
|
||||
{
|
||||
return_ACPI_STATUS (AE_SUPPORT);
|
||||
}
|
||||
|
||||
/*
|
||||
* Compute Tick Delta:
|
||||
* Handle (max one) timer rollovers on 24-bit versus 32-bit timers.
|
||||
|
@ -165,6 +165,16 @@ AcpiNsCheckReturnValue (
|
||||
goto Exit;
|
||||
}
|
||||
|
||||
/*
|
||||
*
|
||||
* 4) If there is no return value and it is optional, just return
|
||||
* AE_OK (_WAK).
|
||||
*/
|
||||
if (!(*ReturnObjectPtr))
|
||||
{
|
||||
goto Exit;
|
||||
}
|
||||
|
||||
/*
|
||||
* For returned Package objects, check the type of all sub-objects.
|
||||
* Note: Package may have been newly created by call above.
|
||||
@ -293,7 +303,13 @@ AcpiNsCheckObjectType (
|
||||
|
||||
AcpiUtGetExpectedReturnTypes (TypeBuffer, ExpectedBtypes);
|
||||
|
||||
if (PackageIndex == ACPI_NOT_PACKAGE_ELEMENT)
|
||||
if (!ReturnObject)
|
||||
{
|
||||
ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags,
|
||||
"Expected return object of type %s",
|
||||
TypeBuffer));
|
||||
}
|
||||
else if (PackageIndex == ACPI_NOT_PACKAGE_ELEMENT)
|
||||
{
|
||||
ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags,
|
||||
"Return type mismatch - found %s, expected %s",
|
||||
|
@ -165,9 +165,9 @@ AcpiNsGetNextNodeTyped (
|
||||
* MaxDepth - Depth to which search is to reach
|
||||
* Flags - Whether to unlock the NS before invoking
|
||||
* the callback routine
|
||||
* PreOrderVisit - Called during tree pre-order visit
|
||||
* DescendingCallback - Called during tree descent
|
||||
* when an object of "Type" is found
|
||||
* PostOrderVisit - Called during tree post-order visit
|
||||
* AscendingCallback - Called during tree ascent
|
||||
* when an object of "Type" is found
|
||||
* Context - Passed to user function(s) above
|
||||
* ReturnValue - from the UserFunction if terminated
|
||||
@ -195,8 +195,8 @@ AcpiNsWalkNamespace (
|
||||
ACPI_HANDLE StartNode,
|
||||
UINT32 MaxDepth,
|
||||
UINT32 Flags,
|
||||
ACPI_WALK_CALLBACK PreOrderVisit,
|
||||
ACPI_WALK_CALLBACK PostOrderVisit,
|
||||
ACPI_WALK_CALLBACK DescendingCallback,
|
||||
ACPI_WALK_CALLBACK AscendingCallback,
|
||||
void *Context,
|
||||
void **ReturnValue)
|
||||
{
|
||||
@ -274,22 +274,22 @@ AcpiNsWalkNamespace (
|
||||
}
|
||||
|
||||
/*
|
||||
* Invoke the user function, either pre-order or post-order
|
||||
* Invoke the user function, either descending, ascending,
|
||||
* or both.
|
||||
*/
|
||||
if (!NodePreviouslyVisited)
|
||||
{
|
||||
if (PreOrderVisit)
|
||||
if (DescendingCallback)
|
||||
{
|
||||
Status = PreOrderVisit (ChildNode, Level,
|
||||
Status = DescendingCallback (ChildNode, Level,
|
||||
Context, ReturnValue);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (PostOrderVisit)
|
||||
if (AscendingCallback)
|
||||
{
|
||||
Status = PostOrderVisit (ChildNode, Level,
|
||||
Status = AscendingCallback (ChildNode, Level,
|
||||
Context, ReturnValue);
|
||||
}
|
||||
}
|
||||
|
@ -574,9 +574,9 @@ AcpiNsResolveReferences (
|
||||
* PARAMETERS: Type - ACPI_OBJECT_TYPE to search for
|
||||
* StartObject - Handle in namespace where search begins
|
||||
* MaxDepth - Depth to which search is to reach
|
||||
* PreOrderVisit - Called during tree pre-order visit
|
||||
* DescendingCallback - Called during tree descent
|
||||
* when an object of "Type" is found
|
||||
* PostOrderVisit - Called during tree post-order visit
|
||||
* AscendingCallback - Called during tree ascent
|
||||
* when an object of "Type" is found
|
||||
* Context - Passed to user function(s) above
|
||||
* ReturnValue - Location where return value of
|
||||
@ -605,8 +605,8 @@ AcpiWalkNamespace (
|
||||
ACPI_OBJECT_TYPE Type,
|
||||
ACPI_HANDLE StartObject,
|
||||
UINT32 MaxDepth,
|
||||
ACPI_WALK_CALLBACK PreOrderVisit,
|
||||
ACPI_WALK_CALLBACK PostOrderVisit,
|
||||
ACPI_WALK_CALLBACK DescendingCallback,
|
||||
ACPI_WALK_CALLBACK AscendingCallback,
|
||||
void *Context,
|
||||
void **ReturnValue)
|
||||
{
|
||||
@ -620,7 +620,7 @@ AcpiWalkNamespace (
|
||||
|
||||
if ((Type > ACPI_TYPE_LOCAL_MAX) ||
|
||||
(!MaxDepth) ||
|
||||
(!PreOrderVisit && !PostOrderVisit))
|
||||
(!DescendingCallback && !AscendingCallback))
|
||||
{
|
||||
return_ACPI_STATUS (AE_BAD_PARAMETER);
|
||||
}
|
||||
@ -655,8 +655,8 @@ AcpiWalkNamespace (
|
||||
}
|
||||
|
||||
Status = AcpiNsWalkNamespace (Type, StartObject, MaxDepth,
|
||||
ACPI_NS_WALK_UNLOCK, PreOrderVisit,
|
||||
PostOrderVisit, Context, ReturnValue);
|
||||
ACPI_NS_WALK_UNLOCK, DescendingCallback,
|
||||
AscendingCallback, Context, ReturnValue);
|
||||
|
||||
(void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE);
|
||||
|
||||
|
@ -132,7 +132,7 @@ static ACPI_FADT_INFO FadtInfoTable[] =
|
||||
ACPI_FADT_OFFSET (PmTimerBlock),
|
||||
ACPI_FADT_OFFSET (PmTimerLength),
|
||||
ACPI_PM_TIMER_WIDTH,
|
||||
ACPI_FADT_REQUIRED},
|
||||
ACPI_FADT_SEPARATE_LENGTH}, /* ACPI 5.0A: Timer is optional */
|
||||
|
||||
{"Gpe0Block",
|
||||
ACPI_FADT_OFFSET (XGpe0Block),
|
||||
@ -606,7 +606,7 @@ AcpiTbValidateFadt (
|
||||
if (FadtInfoTable[i].Type & ACPI_FADT_REQUIRED)
|
||||
{
|
||||
/*
|
||||
* Field is required (PM1aEvent, PM1aControl, PmTimer).
|
||||
* Field is required (PM1aEvent, PM1aControl).
|
||||
* Both the address and length must be non-zero.
|
||||
*/
|
||||
if (!Address64->Address || !Length)
|
||||
|
@ -51,12 +51,6 @@
|
||||
#define _COMPONENT ACPI_TABLES
|
||||
ACPI_MODULE_NAME ("tbxfroot")
|
||||
|
||||
/* Local prototypes */
|
||||
|
||||
static ACPI_STATUS
|
||||
AcpiTbValidateRsdp (
|
||||
ACPI_TABLE_RSDP *Rsdp);
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
@ -70,7 +64,7 @@ AcpiTbValidateRsdp (
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
static ACPI_STATUS
|
||||
ACPI_STATUS
|
||||
AcpiTbValidateRsdp (
|
||||
ACPI_TABLE_RSDP *Rsdp)
|
||||
{
|
||||
@ -81,7 +75,7 @@ AcpiTbValidateRsdp (
|
||||
* Note: Sometimes there exists more than one RSDP in memory; the valid
|
||||
* RSDP has a valid checksum, all others have an invalid checksum.
|
||||
*/
|
||||
if (ACPI_STRNCMP ((char *) Rsdp, ACPI_SIG_RSDP,
|
||||
if (ACPI_STRNCMP ((char *) Rsdp->Signature, ACPI_SIG_RSDP,
|
||||
sizeof (ACPI_SIG_RSDP)-1) != 0)
|
||||
{
|
||||
/* Nope, BAD Signature */
|
||||
|
@ -319,7 +319,6 @@ AcpiUtInitGlobals (
|
||||
AcpiGbl_TraceDbgLayer = 0;
|
||||
AcpiGbl_DebuggerConfiguration = DEBUGGER_THREADING;
|
||||
AcpiGbl_DbOutputFlags = ACPI_DB_CONSOLE_OUTPUT;
|
||||
AcpiGbl_OsiData = 0;
|
||||
AcpiGbl_OsiMutex = NULL;
|
||||
AcpiGbl_RegMethodsExecuted = FALSE;
|
||||
|
||||
|
@ -81,21 +81,20 @@ static ACPI_INTERFACE_INFO AcpiDefaultSupportedInterfaces[] =
|
||||
|
||||
/* Feature Group Strings */
|
||||
|
||||
{"Extended Address Space Descriptor", NULL, 0, 0}
|
||||
{"Extended Address Space Descriptor", NULL, ACPI_OSI_FEATURE, 0},
|
||||
|
||||
/*
|
||||
* All "optional" feature group strings (features that are implemented
|
||||
* by the host) should be dynamically added by the host via
|
||||
* AcpiInstallInterface and should not be manually added here.
|
||||
*
|
||||
* Examples of optional feature group strings:
|
||||
*
|
||||
* "Module Device"
|
||||
* "Processor Device"
|
||||
* "3.0 Thermal Model"
|
||||
* "3.0 _SCP Extensions"
|
||||
* "Processor Aggregator Device"
|
||||
* by the host) should be dynamically modified to VALID by the host via
|
||||
* AcpiInstallInterface or AcpiUpdateInterfaces. Such optional feature
|
||||
* group strings are set as INVALID by default here.
|
||||
*/
|
||||
|
||||
{"Module Device", NULL, ACPI_OSI_OPTIONAL_FEATURE, 0},
|
||||
{"Processor Device", NULL, ACPI_OSI_OPTIONAL_FEATURE, 0},
|
||||
{"3.0 Thermal Model", NULL, ACPI_OSI_OPTIONAL_FEATURE, 0},
|
||||
{"3.0 _SCP Extensions", NULL, ACPI_OSI_OPTIONAL_FEATURE, 0},
|
||||
{"Processor Aggregator Device", NULL, ACPI_OSI_OPTIONAL_FEATURE, 0}
|
||||
};
|
||||
|
||||
|
||||
@ -172,13 +171,26 @@ AcpiUtInterfaceTerminate (
|
||||
{
|
||||
AcpiGbl_SupportedInterfaces = NextInterface->Next;
|
||||
|
||||
/* Only interfaces added at runtime can be freed */
|
||||
|
||||
if (NextInterface->Flags & ACPI_OSI_DYNAMIC)
|
||||
{
|
||||
/* Only interfaces added at runtime can be freed */
|
||||
|
||||
ACPI_FREE (NextInterface->Name);
|
||||
ACPI_FREE (NextInterface);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Interface is in static list. Reset it to invalid or valid. */
|
||||
|
||||
if (NextInterface->Flags & ACPI_OSI_DEFAULT_INVALID)
|
||||
{
|
||||
NextInterface->Flags |= ACPI_OSI_INVALID;
|
||||
}
|
||||
else
|
||||
{
|
||||
NextInterface->Flags &= ~ACPI_OSI_INVALID;
|
||||
}
|
||||
}
|
||||
|
||||
NextInterface = AcpiGbl_SupportedInterfaces;
|
||||
}
|
||||
@ -305,6 +317,57 @@ AcpiUtRemoveInterface (
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiUtUpdateInterfaces
|
||||
*
|
||||
* PARAMETERS: Action - Actions to be performed during the
|
||||
* update
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
* DESCRIPTION: Update _OSI interface strings, disabling or enabling OS vendor
|
||||
* strings or/and feature group strings.
|
||||
* Caller MUST hold AcpiGbl_OsiMutex
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiUtUpdateInterfaces (
|
||||
UINT8 Action)
|
||||
{
|
||||
ACPI_INTERFACE_INFO *NextInterface;
|
||||
|
||||
|
||||
NextInterface = AcpiGbl_SupportedInterfaces;
|
||||
while (NextInterface)
|
||||
{
|
||||
if (((NextInterface->Flags & ACPI_OSI_FEATURE) &&
|
||||
(Action & ACPI_FEATURE_STRINGS)) ||
|
||||
(!(NextInterface->Flags & ACPI_OSI_FEATURE) &&
|
||||
(Action & ACPI_VENDOR_STRINGS)))
|
||||
{
|
||||
if (Action & ACPI_DISABLE_INTERFACES)
|
||||
{
|
||||
/* Mark the interfaces as invalid */
|
||||
|
||||
NextInterface->Flags |= ACPI_OSI_INVALID;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Mark the interfaces as valid */
|
||||
|
||||
NextInterface->Flags &= ~ACPI_OSI_INVALID;
|
||||
}
|
||||
}
|
||||
|
||||
NextInterface = NextInterface->Next;
|
||||
}
|
||||
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiUtGetInterface
|
||||
|
@ -497,6 +497,40 @@ AcpiInstallInterfaceHandler (
|
||||
ACPI_EXPORT_SYMBOL (AcpiInstallInterfaceHandler)
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiUpdateInterfaces
|
||||
*
|
||||
* PARAMETERS: Action - Actions to be performed during the
|
||||
* update
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
* DESCRIPTION: Update _OSI interface strings, disabling or enabling OS vendor
|
||||
* string or/and feature group strings.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiUpdateInterfaces (
|
||||
UINT8 Action)
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
|
||||
|
||||
Status = AcpiOsAcquireMutex (AcpiGbl_OsiMutex, ACPI_WAIT_FOREVER);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return (Status);
|
||||
}
|
||||
|
||||
Status = AcpiUtUpdateInterfaces (Action);
|
||||
|
||||
AcpiOsReleaseMutex (AcpiGbl_OsiMutex);
|
||||
return (Status);
|
||||
}
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiCheckAddressRange
|
||||
|
@ -140,6 +140,12 @@ UINT8 ACPI_INIT_GLOBAL (AcpiGbl_DisableAutoRepair, FALSE);
|
||||
*/
|
||||
UINT8 ACPI_INIT_GLOBAL (AcpiGbl_DisableSsdtTableLoad, FALSE);
|
||||
|
||||
/*
|
||||
* We keep track of the latest version of Windows that has been requested by
|
||||
* the BIOS.
|
||||
*/
|
||||
UINT8 ACPI_INIT_GLOBAL (AcpiGbl_OsiData, 0);
|
||||
|
||||
|
||||
/* AcpiGbl_FADT is a local copy of the FADT, converted to a common format. */
|
||||
|
||||
@ -290,7 +296,6 @@ ACPI_EXTERN UINT8 AcpiGbl_DebuggerConfiguration;
|
||||
ACPI_EXTERN BOOLEAN AcpiGbl_StepToNextCall;
|
||||
ACPI_EXTERN BOOLEAN AcpiGbl_AcpiHardwarePresent;
|
||||
ACPI_EXTERN BOOLEAN AcpiGbl_EventsInitialized;
|
||||
ACPI_EXTERN UINT8 AcpiGbl_OsiData;
|
||||
ACPI_EXTERN ACPI_INTERFACE_INFO *AcpiGbl_SupportedInterfaces;
|
||||
ACPI_EXTERN ACPI_ADDRESS_RANGE *AcpiGbl_AddressRangeList[ACPI_ADDRESS_RANGE_MAX];
|
||||
|
||||
|
@ -1100,19 +1100,6 @@ typedef struct acpi_bit_register_info
|
||||
|
||||
/* Structs and definitions for _OSI support and I/O port validation */
|
||||
|
||||
#define ACPI_OSI_WIN_2000 0x01
|
||||
#define ACPI_OSI_WIN_XP 0x02
|
||||
#define ACPI_OSI_WIN_XP_SP1 0x03
|
||||
#define ACPI_OSI_WINSRV_2003 0x04
|
||||
#define ACPI_OSI_WIN_XP_SP2 0x05
|
||||
#define ACPI_OSI_WINSRV_2003_SP1 0x06
|
||||
#define ACPI_OSI_WIN_VISTA 0x07
|
||||
#define ACPI_OSI_WINSRV_2008 0x08
|
||||
#define ACPI_OSI_WIN_VISTA_SP1 0x09
|
||||
#define ACPI_OSI_WIN_VISTA_SP2 0x0A
|
||||
#define ACPI_OSI_WIN_7 0x0B
|
||||
#define ACPI_OSI_WIN_8 0x0C
|
||||
|
||||
#define ACPI_ALWAYS_ILLEGAL 0x00
|
||||
|
||||
typedef struct acpi_interface_info
|
||||
@ -1126,6 +1113,9 @@ typedef struct acpi_interface_info
|
||||
|
||||
#define ACPI_OSI_INVALID 0x01
|
||||
#define ACPI_OSI_DYNAMIC 0x02
|
||||
#define ACPI_OSI_FEATURE 0x04
|
||||
#define ACPI_OSI_DEFAULT_INVALID 0x08
|
||||
#define ACPI_OSI_OPTIONAL_FEATURE (ACPI_OSI_FEATURE | ACPI_OSI_DEFAULT_INVALID | ACPI_OSI_INVALID)
|
||||
|
||||
typedef struct acpi_port_info
|
||||
{
|
||||
@ -1221,6 +1211,7 @@ typedef struct acpi_external_list
|
||||
UINT8 Type;
|
||||
UINT8 Flags;
|
||||
BOOLEAN Resolved;
|
||||
BOOLEAN Emitted;
|
||||
|
||||
} ACPI_EXTERNAL_LIST;
|
||||
|
||||
|
@ -117,8 +117,8 @@ AcpiNsWalkNamespace (
|
||||
ACPI_HANDLE StartObject,
|
||||
UINT32 MaxDepth,
|
||||
UINT32 Flags,
|
||||
ACPI_WALK_CALLBACK PreOrderVisit,
|
||||
ACPI_WALK_CALLBACK PostOrderVisit,
|
||||
ACPI_WALK_CALLBACK DescendingCallback,
|
||||
ACPI_WALK_CALLBACK AscendingCallback,
|
||||
void *Context,
|
||||
void **ReturnValue);
|
||||
|
||||
|
@ -47,7 +47,7 @@
|
||||
|
||||
/* Current ACPICA subsystem version in YYYYMMDD format */
|
||||
|
||||
#define ACPI_CA_VERSION 0x20130626
|
||||
#define ACPI_CA_VERSION 0x20130725
|
||||
|
||||
#include <contrib/dev/acpica/include/acconfig.h>
|
||||
#include <contrib/dev/acpica/include/actypes.h>
|
||||
@ -61,6 +61,7 @@ extern UINT32 AcpiCurrentGpeCount;
|
||||
extern ACPI_TABLE_FADT AcpiGbl_FADT;
|
||||
extern BOOLEAN AcpiGbl_SystemAwakeAndRunning;
|
||||
extern BOOLEAN AcpiGbl_ReducedHardware; /* ACPI 5.0 */
|
||||
extern UINT8 AcpiGbl_OsiData;
|
||||
|
||||
/* Runtime configuration of debug print levels */
|
||||
|
||||
@ -177,6 +178,10 @@ ACPI_STATUS
|
||||
AcpiRemoveInterface (
|
||||
ACPI_STRING InterfaceName);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiUpdateInterfaces (
|
||||
UINT8 Action);
|
||||
|
||||
UINT32
|
||||
AcpiCheckAddressRange (
|
||||
ACPI_ADR_SPACE_TYPE SpaceId,
|
||||
@ -268,8 +273,8 @@ AcpiWalkNamespace (
|
||||
ACPI_OBJECT_TYPE Type,
|
||||
ACPI_HANDLE StartObject,
|
||||
UINT32 MaxDepth,
|
||||
ACPI_WALK_CALLBACK PreOrderVisit,
|
||||
ACPI_WALK_CALLBACK PostOrderVisit,
|
||||
ACPI_WALK_CALLBACK DescendingCallback,
|
||||
ACPI_WALK_CALLBACK AscendingCallback,
|
||||
void *Context,
|
||||
void **ReturnValue);
|
||||
|
||||
|
@ -52,6 +52,10 @@ AcpiAllocateRootTable (
|
||||
/*
|
||||
* tbxfroot - Root pointer utilities
|
||||
*/
|
||||
ACPI_STATUS
|
||||
AcpiTbValidateRsdp (
|
||||
ACPI_TABLE_RSDP *Rsdp);
|
||||
|
||||
UINT8 *
|
||||
AcpiTbScanMemoryForRsdp (
|
||||
UINT8 *StartAddress,
|
||||
|
@ -1244,4 +1244,32 @@ typedef struct acpi_memory_list
|
||||
} ACPI_MEMORY_LIST;
|
||||
|
||||
|
||||
/* Definitions of _OSI support */
|
||||
|
||||
#define ACPI_VENDOR_STRINGS 0x01
|
||||
#define ACPI_FEATURE_STRINGS 0x02
|
||||
#define ACPI_ENABLE_INTERFACES 0x00
|
||||
#define ACPI_DISABLE_INTERFACES 0x04
|
||||
|
||||
#define ACPI_DISABLE_ALL_VENDOR_STRINGS (ACPI_DISABLE_INTERFACES | ACPI_VENDOR_STRINGS)
|
||||
#define ACPI_DISABLE_ALL_FEATURE_STRINGS (ACPI_DISABLE_INTERFACES | ACPI_FEATURE_STRINGS)
|
||||
#define ACPI_DISABLE_ALL_STRINGS (ACPI_DISABLE_INTERFACES | ACPI_VENDOR_STRINGS | ACPI_FEATURE_STRINGS)
|
||||
#define ACPI_ENABLE_ALL_VENDOR_STRINGS (ACPI_ENABLE_INTERFACES | ACPI_VENDOR_STRINGS)
|
||||
#define ACPI_ENABLE_ALL_FEATURE_STRINGS (ACPI_ENABLE_INTERFACES | ACPI_FEATURE_STRINGS)
|
||||
#define ACPI_ENABLE_ALL_STRINGS (ACPI_ENABLE_INTERFACES | ACPI_VENDOR_STRINGS | ACPI_FEATURE_STRINGS)
|
||||
|
||||
#define ACPI_OSI_WIN_2000 0x01
|
||||
#define ACPI_OSI_WIN_XP 0x02
|
||||
#define ACPI_OSI_WIN_XP_SP1 0x03
|
||||
#define ACPI_OSI_WINSRV_2003 0x04
|
||||
#define ACPI_OSI_WIN_XP_SP2 0x05
|
||||
#define ACPI_OSI_WINSRV_2003_SP1 0x06
|
||||
#define ACPI_OSI_WIN_VISTA 0x07
|
||||
#define ACPI_OSI_WINSRV_2008 0x08
|
||||
#define ACPI_OSI_WIN_VISTA_SP1 0x09
|
||||
#define ACPI_OSI_WIN_VISTA_SP2 0x0A
|
||||
#define ACPI_OSI_WIN_7 0x0B
|
||||
#define ACPI_OSI_WIN_8 0x0C
|
||||
|
||||
|
||||
#endif /* __ACTYPES_H__ */
|
||||
|
@ -670,6 +670,10 @@ ACPI_STATUS
|
||||
AcpiUtRemoveInterface (
|
||||
ACPI_STRING InterfaceName);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiUtUpdateInterfaces (
|
||||
UINT8 Action);
|
||||
|
||||
ACPI_INTERFACE_INFO *
|
||||
AcpiUtGetInterface (
|
||||
ACPI_STRING InterfaceName);
|
||||
|
Loading…
Reference in New Issue
Block a user