This commit was generated by cvs2svn to compensate for changes in r69450,
which included commits to RCS files with non-trunk default branches.
This commit is contained in:
commit
de17efd5b3
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=69451
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: cmalloc - local memory allocation routines
|
||||
* $Revision: 76 $
|
||||
* $Revision: 78 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -475,42 +475,42 @@ AcpiCmDumpAllocationInfo (
|
||||
DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES,
|
||||
("%30s: %4d (%3d Kb)\n", "Current allocations",
|
||||
AcpiGbl_CurrentAllocCount,
|
||||
(AcpiGbl_CurrentAllocSize + 1023) / 1024));
|
||||
ROUND_UP_TO_1K (AcpiGbl_CurrentAllocSize)));
|
||||
|
||||
DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES,
|
||||
("%30s: %4d (%3d Kb)\n", "Max concurrent allocations",
|
||||
AcpiGbl_MaxConcurrentAllocCount,
|
||||
(AcpiGbl_MaxConcurrentAllocSize + 1023) / 1024));
|
||||
ROUND_UP_TO_1K (AcpiGbl_MaxConcurrentAllocSize)));
|
||||
|
||||
DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES,
|
||||
("%30s: %4d (%3d Kb)\n", "Current Internal objects",
|
||||
AcpiGbl_CurrentObjectCount,
|
||||
(AcpiGbl_CurrentObjectSize + 1023) / 1024));
|
||||
ROUND_UP_TO_1K (AcpiGbl_CurrentObjectSize)));
|
||||
|
||||
DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES,
|
||||
("%30s: %4d (%3d Kb)\n", "Max internal objects",
|
||||
AcpiGbl_MaxConcurrentObjectCount,
|
||||
(AcpiGbl_MaxConcurrentObjectSize + 1023) / 1024));
|
||||
ROUND_UP_TO_1K (AcpiGbl_MaxConcurrentObjectSize)));
|
||||
|
||||
DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES,
|
||||
("%30s: %4d (%3d Kb)\n", "Current Nodes",
|
||||
AcpiGbl_CurrentNodeCount,
|
||||
(AcpiGbl_CurrentNodeSize + 1023) / 1024));
|
||||
ROUND_UP_TO_1K (AcpiGbl_CurrentNodeSize)));
|
||||
|
||||
DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES,
|
||||
("%30s: %4d (%3d Kb)\n", "Max Nodes",
|
||||
AcpiGbl_MaxConcurrentNodeCount,
|
||||
((AcpiGbl_MaxConcurrentNodeCount * sizeof (ACPI_NAMESPACE_NODE)) + 1023) / 1024));
|
||||
ROUND_UP_TO_1K ((AcpiGbl_MaxConcurrentNodeCount * sizeof (ACPI_NAMESPACE_NODE)))));
|
||||
|
||||
DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES,
|
||||
("%30s: %4d (%3d Kb)\n", "Total (all) internal objects",
|
||||
AcpiGbl_RunningObjectCount,
|
||||
(AcpiGbl_RunningObjectSize + 1023) / 1024));
|
||||
ROUND_UP_TO_1K (AcpiGbl_RunningObjectSize)));
|
||||
|
||||
DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES,
|
||||
("%30s: %4d (%3d Kb)\n", "Total (all) allocations",
|
||||
AcpiGbl_RunningAllocCount,
|
||||
(AcpiGbl_RunningAllocSize + 1023) / 1024));
|
||||
ROUND_UP_TO_1K (AcpiGbl_RunningAllocSize)));
|
||||
|
||||
return_VOID;
|
||||
}
|
||||
@ -642,7 +642,7 @@ _CmAllocate (
|
||||
UINT32 Line)
|
||||
{
|
||||
void *Address = NULL;
|
||||
DEBUG_EXEC (\
|
||||
DEBUG_ONLY_MEMBERS (\
|
||||
ACPI_STATUS Status)
|
||||
|
||||
|
||||
@ -709,7 +709,7 @@ _CmCallocate (
|
||||
UINT32 Line)
|
||||
{
|
||||
void *Address = NULL;
|
||||
DEBUG_EXEC (\
|
||||
DEBUG_ONLY_MEMBERS (\
|
||||
ACPI_STATUS Status)
|
||||
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: cmclib - Local implementation of C library functions
|
||||
* $Revision: 26 $
|
||||
* $Revision: 28 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -134,10 +134,6 @@
|
||||
MODULE_NAME ("cmclib")
|
||||
|
||||
|
||||
#ifdef _MSC_VER /* disable some level-4 warnings for VC++ */
|
||||
#pragma warning(disable:4706) /* warning C4706: assignment within conditional expression */
|
||||
#endif
|
||||
|
||||
#ifndef ACPI_USE_SYSTEM_CLIBRARY
|
||||
|
||||
/*******************************************************************************
|
||||
@ -738,7 +734,7 @@ AcpiCmStrstr (
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
/* Walk entire string, uppercasing the letters */
|
||||
/* Walk entire string, comparing the letters */
|
||||
|
||||
for (String = String1; *String2; )
|
||||
{
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: cmcopy - Internal to external object translation utilities
|
||||
* $Revision: 56 $
|
||||
* $Revision: 58 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -155,7 +155,7 @@ PKG_SEARCH_INFO Level[MAX_PACKAGE_DEPTH];
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
static ACPI_STATUS
|
||||
AcpiCmBuildExternalSimpleObject (
|
||||
ACPI_OPERAND_OBJECT *InternalObj,
|
||||
ACPI_OBJECT *ExternalObj,
|
||||
@ -296,7 +296,7 @@ AcpiCmBuildExternalSimpleObject (
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
static ACPI_STATUS
|
||||
AcpiCmBuildExternalPackageObject (
|
||||
ACPI_OPERAND_OBJECT *InternalObj,
|
||||
UINT8 *Buffer,
|
||||
@ -602,6 +602,10 @@ AcpiCmBuildInternalSimpleObject (
|
||||
}
|
||||
|
||||
|
||||
#ifdef ACPI_FUTURE_IMPLEMENTATION
|
||||
|
||||
/* Code to convert packages that are parameters to control methods */
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiCmBuildInternalPackageObject
|
||||
@ -621,7 +625,7 @@ AcpiCmBuildInternalSimpleObject (
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
static ACPI_STATUS
|
||||
AcpiCmBuildInternalPackageObject (
|
||||
ACPI_OPERAND_OBJECT *InternalObj,
|
||||
UINT8 *Buffer,
|
||||
@ -767,6 +771,8 @@ AcpiCmBuildInternalPackageObject (
|
||||
} /* while (1) */
|
||||
}
|
||||
|
||||
#endif /* Future implementation */
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
@ -797,6 +803,10 @@ AcpiCmBuildInternalObject (
|
||||
/*
|
||||
* Package objects contain other objects (which can be objects)
|
||||
* buildpackage does it all
|
||||
*
|
||||
* TBD: Package conversion must be completed and tested
|
||||
* NOTE: this code converts packages as input parameters to
|
||||
* control methods only. This is a very, very rare case.
|
||||
*/
|
||||
/*
|
||||
Status = AcpiCmBuildInternalPackageObject(InternalObj,
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Module Name: cmdelete - object deletion and reference count utilities
|
||||
* $Revision: 57 $
|
||||
* $Revision: 59 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -392,7 +392,7 @@ AcpiCmDeleteInternalObjectList (
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
void
|
||||
static void
|
||||
AcpiCmUpdateRefCount (
|
||||
ACPI_OPERAND_OBJECT *Object,
|
||||
UINT32 Action)
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: cmglobal - Global variables for the ACPI subsystem
|
||||
* $Revision: 104 $
|
||||
* $Revision: 110 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -166,6 +166,9 @@ UINT32 AcpiGbl_StartupFlags = 0;
|
||||
BOOLEAN AcpiGbl_Shutdown = TRUE;
|
||||
|
||||
|
||||
UINT8 AcpiGbl_DecodeTo8bit [8] = {1,2,4,8,16,32,64,128};
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* Namespace globals
|
||||
@ -230,18 +233,19 @@ UINT8 AcpiGbl_NsProperties[] =
|
||||
NSP_NORMAL, /* 21 Alias */
|
||||
NSP_NORMAL, /* 22 Notify */
|
||||
NSP_NORMAL, /* 23 Address Handler */
|
||||
NSP_NORMAL, /* 24 DefFieldDefn */
|
||||
NSP_NORMAL, /* 25 BankFieldDefn */
|
||||
NSP_NORMAL, /* 26 IndexFieldDefn */
|
||||
NSP_NORMAL, /* 27 If */
|
||||
NSP_NORMAL, /* 28 Else */
|
||||
NSP_NORMAL, /* 29 While */
|
||||
NSP_NEWSCOPE, /* 30 Scope */
|
||||
NSP_LOCAL, /* 31 DefAny */
|
||||
NSP_NORMAL, /* 32 Method Arg */
|
||||
NSP_NORMAL, /* 33 Method Local */
|
||||
NSP_NORMAL, /* 34 Extra */
|
||||
NSP_NORMAL /* 35 Invalid */
|
||||
NSP_NEWSCOPE | NSP_LOCAL, /* 24 Resource */
|
||||
NSP_NORMAL, /* 25 DefFieldDefn */
|
||||
NSP_NORMAL, /* 26 BankFieldDefn */
|
||||
NSP_NORMAL, /* 27 IndexFieldDefn */
|
||||
NSP_NORMAL, /* 28 If */
|
||||
NSP_NORMAL, /* 29 Else */
|
||||
NSP_NORMAL, /* 30 While */
|
||||
NSP_NEWSCOPE, /* 31 Scope */
|
||||
NSP_LOCAL, /* 32 DefAny */
|
||||
NSP_NORMAL, /* 33 Method Arg */
|
||||
NSP_NORMAL, /* 34 Method Local */
|
||||
NSP_NORMAL, /* 35 Extra */
|
||||
NSP_NORMAL /* 36 Invalid */
|
||||
};
|
||||
|
||||
|
||||
@ -249,6 +253,10 @@ UINT8 AcpiGbl_NsProperties[] =
|
||||
*
|
||||
* Table globals
|
||||
*
|
||||
* NOTE: This table includes ONLY the ACPI tables that the subsystem consumes.
|
||||
* it is NOT an exhaustive list of all possible ACPI tables. All ACPI tables
|
||||
* that are not used by the subsystem are simply ignored.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
@ -257,19 +265,15 @@ ACPI_TABLE_DESC AcpiGbl_AcpiTables[NUM_ACPI_TABLES];
|
||||
|
||||
ACPI_TABLE_SUPPORT AcpiGbl_AcpiTableData[NUM_ACPI_TABLES] =
|
||||
{
|
||||
/* Name, Signature, Signature size, How many allowed?, Supported? Global typed pointer */
|
||||
/*********** Name, Signature, Signature size, How many allowed?, Supported? Global typed pointer */
|
||||
|
||||
/* RSDP 0 */ {"RSDP", RSDP_SIG, sizeof (RSDP_SIG)-1, ACPI_TABLE_SINGLE, AE_OK, NULL},
|
||||
/* APIC 1 */ {APIC_SIG, APIC_SIG, sizeof (APIC_SIG)-1, ACPI_TABLE_SINGLE, AE_OK, (void **) &AcpiGbl_APIC},
|
||||
/* DSDT 2 */ {DSDT_SIG, DSDT_SIG, sizeof (DSDT_SIG)-1, ACPI_TABLE_SINGLE, AE_OK, (void **) &AcpiGbl_DSDT},
|
||||
/* FACP 3 */ {FACP_SIG, FACP_SIG, sizeof (FACP_SIG)-1, ACPI_TABLE_SINGLE, AE_OK, (void **) &AcpiGbl_FACP},
|
||||
/* FACS 4 */ {FACS_SIG, FACS_SIG, sizeof (FACS_SIG)-1, ACPI_TABLE_SINGLE, AE_OK, (void **) &AcpiGbl_FACS},
|
||||
/* PSDT 5 */ {PSDT_SIG, PSDT_SIG, sizeof (PSDT_SIG)-1, ACPI_TABLE_MULTIPLE, AE_OK, NULL},
|
||||
/* RSDT 6 */ {RSDT_SIG, RSDT_SIG, sizeof (RSDT_SIG)-1, ACPI_TABLE_SINGLE, AE_OK, NULL},
|
||||
/* SSDT 7 */ {SSDT_SIG, SSDT_SIG, sizeof (SSDT_SIG)-1, ACPI_TABLE_MULTIPLE, AE_OK, NULL},
|
||||
/* SBST 8 */ {SBST_SIG, SBST_SIG, sizeof (SBST_SIG)-1, ACPI_TABLE_SINGLE, AE_OK, (void **) &AcpiGbl_SBST},
|
||||
/* SPIC 9 */ {SPIC_SIG, SPIC_SIG, sizeof (SPIC_SIG)-1, ACPI_TABLE_MULTIPLE, AE_OK, NULL},
|
||||
/* BOOT 10 */{BOOT_SIG, BOOT_SIG, sizeof (BOOT_SIG)-1, ACPI_TABLE_SINGLE, AE_SUPPORT, NULL}
|
||||
/* RSDP 0 */ {RSDP_NAME, RSDP_SIG, sizeof (RSDP_SIG)-1, ACPI_TABLE_SINGLE, AE_OK, NULL},
|
||||
/* DSDT 1 */ {DSDT_SIG, DSDT_SIG, sizeof (DSDT_SIG)-1, ACPI_TABLE_SINGLE, AE_OK, (void **) &AcpiGbl_DSDT},
|
||||
/* FADT 2 */ {FADT_SIG, FADT_SIG, sizeof (FADT_SIG)-1, ACPI_TABLE_SINGLE, AE_OK, (void **) &AcpiGbl_FADT},
|
||||
/* FACS 3 */ {FACS_SIG, FACS_SIG, sizeof (FACS_SIG)-1, ACPI_TABLE_SINGLE, AE_OK, (void **) &AcpiGbl_FACS},
|
||||
/* PSDT 4 */ {PSDT_SIG, PSDT_SIG, sizeof (PSDT_SIG)-1, ACPI_TABLE_MULTIPLE, AE_OK, NULL},
|
||||
/* SSDT 5 */ {SSDT_SIG, SSDT_SIG, sizeof (SSDT_SIG)-1, ACPI_TABLE_MULTIPLE, AE_OK, NULL},
|
||||
/* XSDT 6 */ {XSDT_SIG, XSDT_SIG, sizeof (RSDT_SIG)-1, ACPI_TABLE_SINGLE, AE_OK, NULL},
|
||||
};
|
||||
|
||||
|
||||
@ -348,18 +352,19 @@ static NATIVE_CHAR *AcpiGbl_NsTypeNames[] = /* printable names of AC
|
||||
/* 21 */ "Alias",
|
||||
/* 22 */ "Notify",
|
||||
/* 23 */ "AddrHndlr",
|
||||
/* 24 */ "DefFldDfn",
|
||||
/* 25 */ "BnkFldDfn",
|
||||
/* 26 */ "IdxFldDfn",
|
||||
/* 27 */ "If",
|
||||
/* 28 */ "Else",
|
||||
/* 29 */ "While",
|
||||
/* 30 */ "Scope",
|
||||
/* 31 */ "DefAny",
|
||||
/* 32 */ "MethodArg",
|
||||
/* 33 */ "MethodLcl",
|
||||
/* 34 */ "Extra",
|
||||
/* 35 */ "Invalid"
|
||||
/* 24 */ "Resource",
|
||||
/* 25 */ "DefFldDfn",
|
||||
/* 26 */ "BnkFldDfn",
|
||||
/* 27 */ "IdxFldDfn",
|
||||
/* 28 */ "If",
|
||||
/* 29 */ "Else",
|
||||
/* 30 */ "While",
|
||||
/* 31 */ "Scope",
|
||||
/* 32 */ "DefAny",
|
||||
/* 33 */ "MethodArg",
|
||||
/* 34 */ "MethodLcl",
|
||||
/* 35 */ "Extra",
|
||||
/* 36 */ "Invalid"
|
||||
};
|
||||
|
||||
|
||||
@ -609,12 +614,10 @@ AcpiCmInitGlobals (
|
||||
/* Global "typed" ACPI table pointers */
|
||||
|
||||
AcpiGbl_RSDP = NULL;
|
||||
AcpiGbl_RSDT = NULL;
|
||||
AcpiGbl_XSDT = NULL;
|
||||
AcpiGbl_FACS = NULL;
|
||||
AcpiGbl_FACP = NULL;
|
||||
AcpiGbl_APIC = NULL;
|
||||
AcpiGbl_FADT = NULL;
|
||||
AcpiGbl_DSDT = NULL;
|
||||
AcpiGbl_SBST = NULL;
|
||||
|
||||
|
||||
/* Global Lock support */
|
||||
@ -628,7 +631,6 @@ AcpiCmInitGlobals (
|
||||
AcpiGbl_StartupFlags = 0;
|
||||
AcpiGbl_GlobalLockSet = FALSE;
|
||||
AcpiGbl_RsdpOriginalLocation = 0;
|
||||
AcpiGbl_WhenToParseMethods = METHOD_PARSE_CONFIGURATION;
|
||||
AcpiGbl_CmSingleStep = FALSE;
|
||||
AcpiGbl_DbTerminateThreads = FALSE;
|
||||
AcpiGbl_Shutdown = FALSE;
|
||||
@ -666,15 +668,6 @@ AcpiCmInitGlobals (
|
||||
AcpiGbl_WalkStateCacheRequests = 0;
|
||||
AcpiGbl_WalkStateCacheHits = 0;
|
||||
|
||||
/* Interpreter */
|
||||
|
||||
AcpiGbl_BufSeq = 0;
|
||||
AcpiGbl_NodeErr = FALSE;
|
||||
|
||||
/* Parser */
|
||||
|
||||
AcpiGbl_ParsedNamespaceRoot = NULL;
|
||||
|
||||
/* Hardware oriented */
|
||||
|
||||
AcpiGbl_Gpe0EnableRegisterSave = NULL;
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: cminit - Common ACPI subsystem initialization
|
||||
* $Revision: 84 $
|
||||
* $Revision: 88 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -130,7 +130,7 @@
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiCmFacpRegisterError
|
||||
* FUNCTION: AcpiCmFadtRegisterError
|
||||
*
|
||||
* PARAMETERS: *RegisterName - Pointer to string identifying register
|
||||
* Value - Actual register contents value
|
||||
@ -143,15 +143,15 @@
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiCmFacpRegisterError (
|
||||
static ACPI_STATUS
|
||||
AcpiCmFadtRegisterError (
|
||||
NATIVE_CHAR *RegisterName,
|
||||
UINT32 Value)
|
||||
UINT64 Value)
|
||||
{
|
||||
|
||||
REPORT_ERROR (
|
||||
("Invalid FACP register value, %s = 0x%X (FACP=0x%X)\n",
|
||||
RegisterName, Value, AcpiGbl_FACP));
|
||||
("Invalid FADT register value, %s = 0x%X (FADT=0x%X)\n",
|
||||
RegisterName, Value, AcpiGbl_FADT));
|
||||
|
||||
|
||||
return (AE_BAD_VALUE);
|
||||
@ -160,18 +160,18 @@ AcpiCmFacpRegisterError (
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiCmValidateFacp
|
||||
* FUNCTION: AcpiCmValidateFadt
|
||||
*
|
||||
* PARAMETERS: None
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
* DESCRIPTION: Validate various ACPI registers in the FACP
|
||||
* DESCRIPTION: Validate various ACPI registers in the FADT
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiCmValidateFacp (
|
||||
AcpiCmValidateFadt (
|
||||
void)
|
||||
{
|
||||
ACPI_STATUS Status = AE_OK;
|
||||
@ -182,61 +182,64 @@ AcpiCmValidateFacp (
|
||||
* but don't abort on any problems, just display error
|
||||
*/
|
||||
|
||||
if (AcpiGbl_FACP->Pm1EvtLen < 4)
|
||||
if (AcpiGbl_FADT->Pm1EvtLen < 4)
|
||||
{
|
||||
Status = AcpiCmFacpRegisterError ("PM1_EVT_LEN",
|
||||
(UINT32) AcpiGbl_FACP->Pm1EvtLen);
|
||||
Status = AcpiCmFadtRegisterError ("PM1_EVT_LEN",
|
||||
(UINT32) AcpiGbl_FADT->Pm1EvtLen);
|
||||
}
|
||||
|
||||
if (!AcpiGbl_FACP->Pm1CntLen)
|
||||
if (!AcpiGbl_FADT->Pm1CntLen)
|
||||
{
|
||||
Status = AcpiCmFacpRegisterError ("PM1_CNT_LEN",
|
||||
(UINT32) AcpiGbl_FACP->Pm1CntLen);
|
||||
Status = AcpiCmFadtRegisterError ("PM1_CNT_LEN",
|
||||
(UINT32) AcpiGbl_FADT->Pm1CntLen);
|
||||
}
|
||||
|
||||
if (!AcpiGbl_FACP->Pm1aEvtBlk)
|
||||
if (!AcpiGbl_FADT->XPm1aEvtBlk.Address)
|
||||
{
|
||||
Status = AcpiCmFacpRegisterError ("PM1a_EVT_BLK",
|
||||
AcpiGbl_FACP->Pm1aEvtBlk);
|
||||
Status = AcpiCmFadtRegisterError ("PM1a_EVT_BLK",
|
||||
AcpiGbl_FADT->XPm1aEvtBlk.Address);
|
||||
}
|
||||
|
||||
if (!AcpiGbl_FACP->Pm1aCntBlk)
|
||||
if (!AcpiGbl_FADT->XPm1aCntBlk.Address)
|
||||
{
|
||||
Status = AcpiCmFacpRegisterError ("PM1a_CNT_BLK",
|
||||
AcpiGbl_FACP->Pm1aCntBlk);
|
||||
Status = AcpiCmFadtRegisterError ("PM1a_CNT_BLK",
|
||||
AcpiGbl_FADT->XPm1aCntBlk.Address);
|
||||
}
|
||||
|
||||
if (!AcpiGbl_FACP->PmTmrBlk)
|
||||
if (!AcpiGbl_FADT->XPmTmrBlk.Address)
|
||||
{
|
||||
Status = AcpiCmFacpRegisterError ("PM_TMR_BLK",
|
||||
AcpiGbl_FACP->PmTmrBlk);
|
||||
Status = AcpiCmFadtRegisterError ("PM_TMR_BLK",
|
||||
AcpiGbl_FADT->XPmTmrBlk.Address);
|
||||
}
|
||||
|
||||
if (AcpiGbl_FACP->Pm2CntBlk && !AcpiGbl_FACP->Pm2CntLen)
|
||||
if ((AcpiGbl_FADT->XPm2CntBlk.Address &&
|
||||
!AcpiGbl_FADT->Pm2CntLen))
|
||||
{
|
||||
Status = AcpiCmFacpRegisterError ("PM2_CNT_LEN",
|
||||
(UINT32) AcpiGbl_FACP->Pm2CntLen);
|
||||
Status = AcpiCmFadtRegisterError ("PM2_CNT_LEN",
|
||||
(UINT32) AcpiGbl_FADT->Pm2CntLen);
|
||||
}
|
||||
|
||||
if (AcpiGbl_FACP->PmTmLen < 4)
|
||||
if (AcpiGbl_FADT->PmTmLen < 4)
|
||||
{
|
||||
Status = AcpiCmFacpRegisterError ("PM_TM_LEN",
|
||||
(UINT32) AcpiGbl_FACP->PmTmLen);
|
||||
Status = AcpiCmFadtRegisterError ("PM_TM_LEN",
|
||||
(UINT32) AcpiGbl_FADT->PmTmLen);
|
||||
}
|
||||
|
||||
/* length of GPE blocks must be a multiple of 2 */
|
||||
|
||||
|
||||
if (AcpiGbl_FACP->Gpe0Blk && (AcpiGbl_FACP->Gpe0BlkLen & 1))
|
||||
if (AcpiGbl_FADT->XGpe0Blk.Address &&
|
||||
(AcpiGbl_FADT->Gpe0BlkLen & 1))
|
||||
{
|
||||
Status = AcpiCmFacpRegisterError ("GPE0_BLK_LEN",
|
||||
(UINT32) AcpiGbl_FACP->Gpe0BlkLen);
|
||||
Status = AcpiCmFadtRegisterError ("GPE0_BLK_LEN",
|
||||
(UINT32) AcpiGbl_FADT->Gpe0BlkLen);
|
||||
}
|
||||
|
||||
if (AcpiGbl_FACP->Gpe1Blk && (AcpiGbl_FACP->Gpe1BlkLen & 1))
|
||||
if (AcpiGbl_FADT->XGpe1Blk.Address &&
|
||||
(AcpiGbl_FADT->Gpe1BlkLen & 1))
|
||||
{
|
||||
Status = AcpiCmFacpRegisterError ("GPE1_BLK_LEN",
|
||||
(UINT32) AcpiGbl_FACP->Gpe1BlkLen);
|
||||
Status = AcpiCmFadtRegisterError ("GPE1_BLK_LEN",
|
||||
(UINT32) AcpiGbl_FADT->Gpe1BlkLen);
|
||||
}
|
||||
|
||||
return (Status);
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: cmobject - ACPI object create/delete/size/cache routines
|
||||
* $Revision: 30 $
|
||||
* $Revision: 31 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -658,10 +658,10 @@ AcpiCmGetPackageObjectSize (
|
||||
{
|
||||
|
||||
ACPI_OPERAND_OBJECT *ThisInternalObj;
|
||||
ACPI_OPERAND_OBJECT *ParentObj[MAX_PACKAGE_DEPTH] = { 0,0,0,0,0 };
|
||||
ACPI_OPERAND_OBJECT *ParentObj[MAX_PACKAGE_DEPTH];
|
||||
ACPI_OPERAND_OBJECT *ThisParent;
|
||||
UINT32 ThisIndex;
|
||||
UINT32 Index[MAX_PACKAGE_DEPTH] = { 0,0,0,0,0 };
|
||||
UINT32 Index[MAX_PACKAGE_DEPTH];
|
||||
UINT32 Length = 0;
|
||||
UINT32 ObjectSpace;
|
||||
UINT32 CurrentDepth = 0;
|
||||
@ -672,6 +672,11 @@ AcpiCmGetPackageObjectSize (
|
||||
FUNCTION_TRACE_PTR ("CmGetPackageObjectSize", InternalObj);
|
||||
|
||||
|
||||
/* Init the package stack TBD: replace with linked list */
|
||||
|
||||
MEMSET(ParentObj, 0, MAX_PACKAGE_DEPTH);
|
||||
MEMSET(Index, 0, MAX_PACKAGE_DEPTH);
|
||||
|
||||
ParentObj[0] = InternalObj;
|
||||
|
||||
while (1)
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: cmxface - External interfaces for "global" ACPI functions
|
||||
* $Revision: 51 $
|
||||
* $Revision: 54 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -226,9 +226,9 @@ AcpiEnableSubsystem (
|
||||
FUNCTION_TRACE ("AcpiEnableSubsystem");
|
||||
|
||||
|
||||
/* Sanity check the FACP for valid values */
|
||||
/* Sanity check the FADT for valid values */
|
||||
|
||||
Status = AcpiCmValidateFacp ();
|
||||
Status = AcpiCmValidateFadt ();
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
@ -274,7 +274,11 @@ AcpiEnableSubsystem (
|
||||
{
|
||||
DEBUG_PRINT (TRACE_EXEC, ("[Init] Going into ACPI mode\n"));
|
||||
|
||||
AcpiEnable ();
|
||||
Status = AcpiEnable ();
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
@ -356,7 +360,7 @@ AcpiTerminate (void)
|
||||
|
||||
/* Terminate the AML Debuger if present */
|
||||
|
||||
AcpiGbl_DbTerminateThreads = TRUE;
|
||||
DEBUGGER_EXEC(AcpiGbl_DbTerminateThreads = TRUE);
|
||||
|
||||
/* TBD: [Investigate] This is no longer needed?*/
|
||||
/* AcpiCmReleaseMutex (ACPI_MTX_DEBUG_CMD_READY); */
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Module Name: dbdisply - debug display commands
|
||||
* $Revision: 34 $
|
||||
* $Revision: 35 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -579,7 +579,7 @@ AcpiDbDisplayMethodInfo (
|
||||
}
|
||||
|
||||
ObjDesc = WalkState->MethodDesc;
|
||||
Node = WalkState->Origin->Node;
|
||||
Node = WalkState->MethodNode;
|
||||
|
||||
NumArgs = ObjDesc->Method.ParamCount;
|
||||
Concurrency = ObjDesc->Method.Concurrency;
|
||||
@ -686,7 +686,7 @@ AcpiDbDisplayLocals (void)
|
||||
}
|
||||
|
||||
ObjDesc = WalkState->MethodDesc;
|
||||
Node = WalkState->Origin->Node;
|
||||
Node = WalkState->MethodNode;
|
||||
|
||||
|
||||
AcpiOsPrintf ("Local Variables for method [%4.4s]:\n", &Node->Name);
|
||||
@ -820,14 +820,14 @@ AcpiDbDisplayCallingTree (void)
|
||||
}
|
||||
|
||||
ObjDesc = WalkState->MethodDesc;
|
||||
Node = WalkState->Origin->Node;
|
||||
Node = WalkState->MethodNode;
|
||||
|
||||
AcpiOsPrintf ("Current Control Method Call Tree\n");
|
||||
|
||||
for (i = 0; WalkState; i++)
|
||||
{
|
||||
ObjDesc = WalkState->MethodDesc;
|
||||
Node = WalkState->Origin->Node;
|
||||
Node = WalkState->MethodNode;
|
||||
|
||||
AcpiOsPrintf (" [%4.4s]\n", &Node->Name);
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Module Name: dbexec - debugger control method execution
|
||||
* $Revision: 16 $
|
||||
* $Revision: 18 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -291,18 +291,21 @@ AcpiDbExecute (
|
||||
UINT32 Flags)
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
ACPI_BUFFER ReturnObj;
|
||||
|
||||
|
||||
#ifdef ACPI_DEBUG
|
||||
UINT32 PreviousAllocations;
|
||||
UINT32 PreviousSize;
|
||||
UINT32 Allocations;
|
||||
UINT32 Size;
|
||||
ACPI_BUFFER ReturnObj;
|
||||
|
||||
|
||||
/* Memory allocation tracking */
|
||||
|
||||
PreviousAllocations = AcpiGbl_CurrentAllocCount;
|
||||
PreviousSize = AcpiGbl_CurrentAllocSize;
|
||||
|
||||
#endif
|
||||
|
||||
Info.Name = Name;
|
||||
Info.Args = Args;
|
||||
@ -312,6 +315,8 @@ AcpiDbExecute (
|
||||
Status = AcpiDbExecuteMethod (&Info, &ReturnObj);
|
||||
|
||||
|
||||
#ifdef ACPI_DEBUG
|
||||
|
||||
/* Memory allocation tracking */
|
||||
|
||||
Allocations = AcpiGbl_CurrentAllocCount - PreviousAllocations;
|
||||
@ -324,7 +329,7 @@ AcpiDbExecute (
|
||||
AcpiOsPrintf ("Outstanding: %ld allocations of total size %ld after execution\n",
|
||||
Allocations, Size);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
|
@ -2,7 +2,7 @@
|
||||
*
|
||||
* Module Name: dbfileio - Debugger file I/O commands. These can't usually
|
||||
* be used when running the debugger in Ring 0 (Kernel mode)
|
||||
* $Revision: 30 $
|
||||
* $Revision: 33 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -270,28 +270,44 @@ AcpiDbLoadTable(
|
||||
UINT8 *AmlPtr;
|
||||
UINT32 AmlLength;
|
||||
UINT32 Actual;
|
||||
ACPI_STATUS Status;
|
||||
|
||||
|
||||
/* Read the table header */
|
||||
|
||||
if (fread (&TableHeader, 1, sizeof (TableHeader), fp) != sizeof (TableHeader))
|
||||
if (fread (&TableHeader, 1, sizeof (TableHeader), fp) != sizeof (ACPI_TABLE_HEADER))
|
||||
{
|
||||
AcpiOsPrintf ("Couldn't read the table header\n");
|
||||
return (AE_BAD_SIGNATURE);
|
||||
}
|
||||
|
||||
/* Get and validate the table length */
|
||||
|
||||
*TableLength = TableHeader.Length;
|
||||
if (!*TableLength)
|
||||
/* Validate the table header/length */
|
||||
|
||||
Status = AcpiTbValidateTableHeader (&TableHeader);
|
||||
if ((ACPI_FAILURE (Status)) ||
|
||||
(TableHeader.Length > (1024 * 1024)))
|
||||
{
|
||||
AcpiOsPrintf ("Found a table length of zero!\n");
|
||||
AcpiOsPrintf ("Table header is invalid!\n");
|
||||
return (AE_ERROR);
|
||||
}
|
||||
|
||||
|
||||
/* We only support a limited number of table types */
|
||||
|
||||
if (STRNCMP ((char *) TableHeader.Signature, DSDT_SIG, 4) &&
|
||||
STRNCMP ((char *) TableHeader.Signature, PSDT_SIG, 4) &&
|
||||
STRNCMP ((char *) TableHeader.Signature, SSDT_SIG, 4))
|
||||
{
|
||||
AcpiOsPrintf ("Table signature is invalid\n");
|
||||
DUMP_BUFFER (&TableHeader, sizeof (ACPI_TABLE_HEADER));
|
||||
return (AE_ERROR);
|
||||
}
|
||||
|
||||
/* Allocate a buffer for the table */
|
||||
|
||||
*TablePtr = (ACPI_TABLE_HEADER *) malloc ((size_t) *TableLength);
|
||||
*TableLength = TableHeader.Length;
|
||||
*TablePtr = (ACPI_TABLE_HEADER *) AcpiCmAllocate ((size_t) *TableLength);
|
||||
if (!*TablePtr)
|
||||
{
|
||||
AcpiOsPrintf ("Could not allocate memory for the table (size=0x%X)\n", TableHeader.Length);
|
||||
@ -322,7 +338,7 @@ AcpiDbLoadTable(
|
||||
|
||||
|
||||
AcpiOsPrintf ("Error - could not read the table file\n");
|
||||
free (*TablePtr);
|
||||
AcpiCmFree (*TablePtr);
|
||||
*TablePtr = NULL;
|
||||
*TableLength = 0;
|
||||
|
||||
@ -454,7 +470,7 @@ AcpiDbLoadAcpiTable (
|
||||
AcpiOsPrintf ("Could not install table, %s\n",
|
||||
AcpiCmFormatException (Status));
|
||||
}
|
||||
free (TablePtr);
|
||||
AcpiCmFree (TablePtr);
|
||||
return (Status);
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: dsobject - Dispatcher object management routines
|
||||
* $Revision: 48 $
|
||||
* $Revision: 51 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -157,9 +157,11 @@ AcpiDsInitOneObject (
|
||||
OBJECT_TYPE_INTERNAL Type;
|
||||
ACPI_STATUS Status;
|
||||
ACPI_INIT_WALK_INFO *Info = (ACPI_INIT_WALK_INFO *) Context;
|
||||
UINT8 TableRevision;
|
||||
|
||||
|
||||
Info->ObjectCount++;
|
||||
TableRevision = Info->TableDesc->Pointer->Revision;
|
||||
|
||||
/*
|
||||
* We are only interested in objects owned by the table that
|
||||
@ -194,6 +196,15 @@ AcpiDsInitOneObject (
|
||||
|
||||
DEBUG_PRINT_RAW (ACPI_OK, ("."));
|
||||
|
||||
/*
|
||||
* Set the execution data width (32 or 64) based upon the
|
||||
* revision number of the parent ACPI table.
|
||||
*/
|
||||
|
||||
if (TableRevision == 1)
|
||||
{
|
||||
((ACPI_NAMESPACE_NODE *)ObjHandle)->Flags |= ANOBJ_DATA_WIDTH_32;
|
||||
}
|
||||
|
||||
/*
|
||||
* Always parse methods to detect errors, we may delete
|
||||
@ -214,15 +225,10 @@ AcpiDsInitOneObject (
|
||||
}
|
||||
|
||||
/*
|
||||
* Keep the parse tree only if we are parsing all methods
|
||||
* at init time (versus just-in-time)
|
||||
* Delete the parse tree. We simple re-parse the method
|
||||
* for every execution since there isn't much overhead
|
||||
*/
|
||||
|
||||
if (AcpiGbl_WhenToParseMethods != METHOD_PARSE_AT_INIT)
|
||||
{
|
||||
AcpiNsDeleteNamespaceSubtree (ObjHandle);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -511,7 +517,7 @@ AcpiDsInitObjectFromOp (
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
static ACPI_STATUS
|
||||
AcpiDsBuildInternalSimpleObj (
|
||||
ACPI_WALK_STATE *WalkState,
|
||||
ACPI_PARSE_OBJECT *Op,
|
||||
@ -563,7 +569,6 @@ AcpiDsBuildInternalSimpleObj (
|
||||
Op->Value.String, Op->AmlOffset));
|
||||
}
|
||||
*ObjDescPtr = NULL;
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
}
|
||||
|
||||
return_ACPI_STATUS (Status);
|
||||
|
@ -2,7 +2,7 @@
|
||||
*
|
||||
* Module Name: dsopcode - Dispatcher Op Region support and handling of
|
||||
* "control" opcodes
|
||||
* $Revision: 21 $
|
||||
* $Revision: 25 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -728,26 +728,41 @@ AcpiDsEvalRegionOperands (
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/* Resolve the length and address operands to numbers */
|
||||
|
||||
Status = AcpiAmlResolveOperands (Op->Opcode, WALK_OPERANDS, WalkState);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
DUMP_OPERANDS (WALK_OPERANDS, IMODE_EXECUTE,
|
||||
AcpiPsGetOpcodeName (Op->Opcode),
|
||||
1, "after AcpiAmlResolveOperands");
|
||||
|
||||
|
||||
ObjDesc = AcpiNsGetAttachedObject (Node);
|
||||
if (!ObjDesc)
|
||||
{
|
||||
return_ACPI_STATUS (AE_NOT_EXIST);
|
||||
}
|
||||
|
||||
/* Get the length and save it */
|
||||
|
||||
/* Top of stack */
|
||||
/*
|
||||
* Get the length operand and save it
|
||||
* (at Top of stack)
|
||||
*/
|
||||
OperandDesc = WalkState->Operands[WalkState->NumOperands - 1];
|
||||
|
||||
ObjDesc->Region.Length = (UINT32) OperandDesc->Number.Value;
|
||||
AcpiCmRemoveReference (OperandDesc);
|
||||
|
||||
/* Get the address and save it */
|
||||
|
||||
/* Top of stack - 1 */
|
||||
/*
|
||||
* Get the address and save it
|
||||
* (at top of stack - 1)
|
||||
*/
|
||||
OperandDesc = WalkState->Operands[WalkState->NumOperands - 2];
|
||||
|
||||
ObjDesc->Region.Address = OperandDesc->Number.Value;
|
||||
ObjDesc->Region.Address = (ACPI_PHYSICAL_ADDRESS) OperandDesc->Number.Value;
|
||||
AcpiCmRemoveReference (OperandDesc);
|
||||
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Module Name: dsutils - Dispatcher utilities
|
||||
* $Revision: 45 $
|
||||
* $Revision: 48 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -239,7 +239,6 @@ AcpiDsIsResultUsed (
|
||||
/* Fall through to not used case below */
|
||||
|
||||
|
||||
|
||||
case OPTYPE_NAMED_OBJECT: /* Scope, method, etc. */
|
||||
|
||||
DEBUG_PRINT (TRACE_DISPATCH,
|
||||
@ -393,6 +392,7 @@ AcpiDsCreateOperand (
|
||||
ParentOp = Arg->Parent;
|
||||
if ((AcpiPsIsNodeOp (ParentOp->Opcode)) &&
|
||||
(ParentOp->Opcode != AML_METHODCALL_OP) &&
|
||||
(ParentOp->Opcode != AML_REGION_OP) &&
|
||||
(ParentOp->Opcode != AML_NAMEPATH_OP))
|
||||
{
|
||||
/* Enter name into namespace if not found */
|
||||
@ -521,7 +521,7 @@ AcpiDsCreateOperand (
|
||||
* a missing or null operand!
|
||||
*/
|
||||
DEBUG_PRINT (ACPI_ERROR,
|
||||
("DsCreateOperand: Could not pop result\n"));
|
||||
("DsCreateOperand: Missing or null operand, %s\n", AcpiCmFormatException (Status)));
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
*
|
||||
* Module Name: dswexec - Dispatcher method execution callbacks;
|
||||
* dispatch to interpreter.
|
||||
* $Revision: 45 $
|
||||
* $Revision: 48 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -130,7 +130,6 @@
|
||||
MODULE_NAME ("dswexec")
|
||||
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiDsGetPredicateValue
|
||||
@ -163,6 +162,10 @@ AcpiDsGetPredicateValue (
|
||||
Status = AcpiDsResultStackPop (&ObjDesc, WalkState);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
DEBUG_PRINT (ACPI_ERROR,
|
||||
("DsGetPredicateValue: Missing or null operand, %s\n",
|
||||
AcpiCmFormatException (Status)));
|
||||
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
}
|
||||
@ -210,6 +213,10 @@ AcpiDsGetPredicateValue (
|
||||
}
|
||||
|
||||
|
||||
/* TBD: 64/32-bit */
|
||||
|
||||
ObjDesc->Number.Value &= (UINT64) 0x00000000FFFFFFFF;
|
||||
|
||||
/*
|
||||
* Save the result of the predicate evaluation on
|
||||
* the control stack
|
||||
@ -232,7 +239,6 @@ AcpiDsGetPredicateValue (
|
||||
}
|
||||
|
||||
|
||||
|
||||
Cleanup:
|
||||
|
||||
DEBUG_PRINT (TRACE_EXEC,
|
||||
@ -756,6 +762,12 @@ AcpiDsExecEndOp (
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* ACPI 2.0 support for 64-bit integers:
|
||||
* Truncate numeric result value if we are executing from a 32-bit ACPI table
|
||||
*/
|
||||
AcpiAmlTruncateFor32bitTable (ResultObj, WalkState);
|
||||
|
||||
/*
|
||||
* Check if we just completed the evaluation of a
|
||||
* conditional predicate
|
||||
@ -766,14 +778,12 @@ AcpiDsExecEndOp (
|
||||
CONTROL_PREDICATE_EXECUTING) &&
|
||||
(WalkState->ControlState->Control.PredicateOp == Op))
|
||||
{
|
||||
|
||||
Status = AcpiDsGetPredicateValue (WalkState, Op, (UINT32) ResultObj);
|
||||
ResultObj = NULL;
|
||||
}
|
||||
|
||||
|
||||
Cleanup:
|
||||
|
||||
if (ResultObj)
|
||||
{
|
||||
/* Break to debugger to display result */
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: dswstate - Dispatcher parse tree walk management routines
|
||||
* $Revision: 31 $
|
||||
* $Revision: 34 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -217,8 +217,8 @@ AcpiDsResultStackPop (
|
||||
|
||||
if (WalkState->NumResults == 0)
|
||||
{
|
||||
DEBUG_PRINT (ACPI_ERROR,
|
||||
("DsResultStackPop: Underflow! State=%p Cur=%X Num=%X\n",
|
||||
DEBUG_PRINT (TRACE_EXEC,
|
||||
("DsResultStackPop: Underflow - State=%p Cur=%X Num=%X\n",
|
||||
WalkState, WalkState->CurrentResult, WalkState->NumResults));
|
||||
return (AE_AML_NO_OPERAND);
|
||||
}
|
||||
@ -574,7 +574,7 @@ AcpiDsGetCurrentWalkState (
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
void
|
||||
static void
|
||||
AcpiDsPushWalkState (
|
||||
ACPI_WALK_STATE *WalkState,
|
||||
ACPI_WALK_LIST *WalkList)
|
||||
@ -703,7 +703,9 @@ AcpiDsCreateWalkState (
|
||||
|
||||
/* Init the method args/local */
|
||||
|
||||
#ifndef _ACPI_ASL_COMPILER
|
||||
AcpiDsMethodDataInit (WalkState);
|
||||
#endif
|
||||
|
||||
/* Put the new state at the head of the walk list */
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
*
|
||||
* Module Name: evevent - Fixed and General Purpose AcpiEvent
|
||||
* handling and dispatch
|
||||
* $Revision: 17 $
|
||||
* $Revision: 26 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -205,11 +205,23 @@ AcpiEvInitialize (
|
||||
|
||||
/* Install handlers for control method GPE handlers (_Lxx, _Exx) */
|
||||
|
||||
AcpiEvInitGpeControlMethods ();
|
||||
Status = AcpiEvInitGpeControlMethods ();
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
DEBUG_PRINT (ACPI_FATAL,
|
||||
("EvInitialize: Unable to initialize Gpe control methods\n"));
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/* Install the handler for the Global Lock */
|
||||
|
||||
Status = AcpiEvInitGlobalLockHandler ();
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
DEBUG_PRINT (ACPI_FATAL,
|
||||
("EvInitialize: Unable to initialize Global Lock handler\n"));
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
|
||||
return_ACPI_STATUS (Status);
|
||||
@ -241,16 +253,11 @@ AcpiEvFixedEventInitialize(void)
|
||||
AcpiGbl_FixedEventHandlers[i].Context = NULL;
|
||||
}
|
||||
|
||||
AcpiHwRegisterAccess (ACPI_WRITE, ACPI_MTX_LOCK, ACPI_EVENT_PMTIMER +
|
||||
TMR_EN, 0);
|
||||
AcpiHwRegisterAccess (ACPI_WRITE, ACPI_MTX_LOCK, ACPI_EVENT_GLOBAL +
|
||||
TMR_EN, 0);
|
||||
AcpiHwRegisterAccess (ACPI_WRITE, ACPI_MTX_LOCK, ACPI_EVENT_POWER_BUTTON +
|
||||
TMR_EN, 0);
|
||||
AcpiHwRegisterAccess (ACPI_WRITE, ACPI_MTX_LOCK, ACPI_EVENT_SLEEP_BUTTON +
|
||||
TMR_EN, 0);
|
||||
AcpiHwRegisterAccess (ACPI_WRITE, ACPI_MTX_LOCK, ACPI_EVENT_RTC +
|
||||
TMR_EN, 0);
|
||||
AcpiHwRegisterBitAccess (ACPI_WRITE, ACPI_MTX_LOCK, TMR_EN, 0);
|
||||
AcpiHwRegisterBitAccess (ACPI_WRITE, ACPI_MTX_LOCK, GBL_EN, 0);
|
||||
AcpiHwRegisterBitAccess (ACPI_WRITE, ACPI_MTX_LOCK, PWRBTN_EN, 0);
|
||||
AcpiHwRegisterBitAccess (ACPI_WRITE, ACPI_MTX_LOCK, SLPBTN_EN, 0);
|
||||
AcpiHwRegisterBitAccess (ACPI_WRITE, ACPI_MTX_LOCK, RTC_EN, 0);
|
||||
|
||||
return (AE_OK);
|
||||
}
|
||||
@ -272,32 +279,22 @@ UINT32
|
||||
AcpiEvFixedEventDetect(void)
|
||||
{
|
||||
UINT32 IntStatus = INTERRUPT_NOT_HANDLED;
|
||||
UINT32 StatusRegister = 0;
|
||||
UINT32 EnableRegister = 0;
|
||||
UINT32 StatusRegister;
|
||||
UINT32 EnableRegister;
|
||||
|
||||
/*
|
||||
* Read the fixed feature status and enable registers, as all the cases
|
||||
* depend on their values.
|
||||
*/
|
||||
|
||||
StatusRegister = (UINT32) AcpiOsIn16 (AcpiGbl_FACP->Pm1aEvtBlk);
|
||||
if (AcpiGbl_FACP->Pm1bEvtBlk)
|
||||
{
|
||||
StatusRegister |= (UINT32) AcpiOsIn16 (AcpiGbl_FACP->Pm1bEvtBlk);
|
||||
}
|
||||
|
||||
EnableRegister = (UINT32) AcpiOsIn16 (AcpiGbl_FACP->Pm1aEvtBlk +
|
||||
DIV_2 (AcpiGbl_FACP->Pm1EvtLen));
|
||||
if (AcpiGbl_FACP->Pm1bEvtBlk)
|
||||
{
|
||||
EnableRegister |= (UINT32) AcpiOsIn16 (AcpiGbl_FACP->Pm1bEvtBlk +
|
||||
DIV_2 (AcpiGbl_FACP->Pm1EvtLen));
|
||||
}
|
||||
StatusRegister = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, PM1_STS);
|
||||
EnableRegister = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, PM1_EN);
|
||||
|
||||
DEBUG_PRINT (TRACE_INTERRUPTS,
|
||||
("Fixed AcpiEvent Block: Enable = %08x\tStatus = %08x\n",
|
||||
EnableRegister, StatusRegister));
|
||||
|
||||
|
||||
/* power management timer roll over */
|
||||
|
||||
if ((StatusRegister & ACPI_STATUS_PMTIMER) &&
|
||||
@ -351,10 +348,38 @@ UINT32
|
||||
AcpiEvFixedEventDispatch (
|
||||
UINT32 Event)
|
||||
{
|
||||
UINT32 RegisterId;
|
||||
|
||||
/* Clear the status bit */
|
||||
|
||||
AcpiHwRegisterAccess (ACPI_WRITE, ACPI_MTX_DO_NOT_LOCK, TMR_STS +
|
||||
Event, 1);
|
||||
switch (Event)
|
||||
{
|
||||
case ACPI_EVENT_PMTIMER:
|
||||
RegisterId = TMR_STS;
|
||||
break;
|
||||
|
||||
case ACPI_EVENT_GLOBAL:
|
||||
RegisterId = GBL_STS;
|
||||
break;
|
||||
|
||||
case ACPI_EVENT_POWER_BUTTON:
|
||||
RegisterId = PWRBTN_STS;
|
||||
break;
|
||||
|
||||
case ACPI_EVENT_SLEEP_BUTTON:
|
||||
RegisterId = SLPBTN_STS;
|
||||
break;
|
||||
|
||||
case ACPI_EVENT_RTC:
|
||||
RegisterId = RTC_STS;
|
||||
break;
|
||||
|
||||
default:
|
||||
return 0;
|
||||
break;
|
||||
}
|
||||
|
||||
AcpiHwRegisterBitAccess (ACPI_WRITE, ACPI_MTX_DO_NOT_LOCK, RegisterId, 1);
|
||||
|
||||
/*
|
||||
* Make sure we've got a handler. If not, report an error.
|
||||
@ -362,8 +387,10 @@ AcpiEvFixedEventDispatch (
|
||||
*/
|
||||
if (NULL == AcpiGbl_FixedEventHandlers[Event].Handler)
|
||||
{
|
||||
AcpiHwRegisterAccess (ACPI_WRITE, ACPI_MTX_DO_NOT_LOCK,
|
||||
TMR_EN + Event, 0);
|
||||
RegisterId = (PM1_EN | REGISTER_BIT_ID(RegisterId));
|
||||
|
||||
AcpiHwRegisterBitAccess (ACPI_WRITE, ACPI_MTX_DO_NOT_LOCK,
|
||||
RegisterId, 0);
|
||||
|
||||
REPORT_ERROR (
|
||||
("EvGpeDispatch: No installed handler for fixed event [0x%08X]\n",
|
||||
@ -404,29 +431,30 @@ AcpiEvGpeInitialize (void)
|
||||
|
||||
FUNCTION_TRACE ("EvGpeInitialize");
|
||||
|
||||
/*******************************************************************/
|
||||
/* Setting up various GPE counts */
|
||||
/* */
|
||||
/* You may ask,why are the GPE register block lengths divided by 2?*/
|
||||
/* From the ACPI 2.0 Spec, section, 4.7.1.6 General-Purpose Event */
|
||||
/* Registers, we have, */
|
||||
/* */
|
||||
/* "Each register block contains two registers of equal length: */
|
||||
/* GPEx_STS and GPEx_EN (where x is 0 or 1). The length of the */
|
||||
/* GPE0_STS and GPE0_EN registers is equal to half the GPE0_LEN. */
|
||||
/* The length of the GPE1_STS and GPE1_EN registers is equal to */
|
||||
/* half the GPE1_LEN. If a generic register block is not supported */
|
||||
/* then its respective block pointer and block length values in the*/
|
||||
/* FADT table contain zeros. The GPE0_LEN and GPE1_LEN do not need */
|
||||
/* to be the same size." */
|
||||
/*******************************************************************/
|
||||
Gpe0RegisterCount = (UINT16) DIV_2 (AcpiGbl_FACP->Gpe0BlkLen);
|
||||
Gpe1RegisterCount = (UINT16) DIV_2 (AcpiGbl_FACP->Gpe1BlkLen);
|
||||
/*
|
||||
* Set up various GPE counts
|
||||
*
|
||||
* You may ask,why are the GPE register block lengths divided by 2?
|
||||
* From the ACPI 2.0 Spec, section, 4.7.1.6 General-Purpose Event
|
||||
* Registers, we have,
|
||||
*
|
||||
* "Each register block contains two registers of equal length
|
||||
* GPEx_STS and GPEx_EN (where x is 0 or 1). The length of the
|
||||
* GPE0_STS and GPE0_EN registers is equal to half the GPE0_LEN
|
||||
* The length of the GPE1_STS and GPE1_EN registers is equal to
|
||||
* half the GPE1_LEN. If a generic register block is not supported
|
||||
* then its respective block pointer and block length values in the
|
||||
* FADT table contain zeros. The GPE0_LEN and GPE1_LEN do not need
|
||||
* to be the same size."
|
||||
*/
|
||||
|
||||
Gpe0RegisterCount = (UINT16) DIV_2 (AcpiGbl_FADT->Gpe0BlkLen);
|
||||
Gpe1RegisterCount = (UINT16) DIV_2 (AcpiGbl_FADT->Gpe1BlkLen);
|
||||
AcpiGbl_GpeRegisterCount = Gpe0RegisterCount + Gpe1RegisterCount;
|
||||
|
||||
if (!AcpiGbl_GpeRegisterCount)
|
||||
{
|
||||
REPORT_WARNING (("Zero GPEs are defined in the FACP\n"));
|
||||
REPORT_WARNING (("Zero GPEs are defined in the FADT\n"));
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
}
|
||||
|
||||
@ -476,10 +504,10 @@ AcpiEvGpeInitialize (void)
|
||||
for (i = 0; i < Gpe0RegisterCount; i++)
|
||||
{
|
||||
AcpiGbl_GpeRegisters[RegisterIndex].StatusAddr =
|
||||
(UINT16) (AcpiGbl_FACP->Gpe0Blk + i);
|
||||
(UINT16) (AcpiGbl_FADT->XGpe0Blk.Address + i);
|
||||
|
||||
AcpiGbl_GpeRegisters[RegisterIndex].EnableAddr =
|
||||
(UINT16) (AcpiGbl_FACP->Gpe0Blk + i + Gpe0RegisterCount);
|
||||
(UINT16) (AcpiGbl_FADT->XGpe0Blk.Address + i + Gpe0RegisterCount);
|
||||
|
||||
AcpiGbl_GpeRegisters[RegisterIndex].GpeBase = (UINT8) MUL_8 (i);
|
||||
|
||||
@ -505,13 +533,13 @@ AcpiEvGpeInitialize (void)
|
||||
for (i = 0; i < Gpe1RegisterCount; i++)
|
||||
{
|
||||
AcpiGbl_GpeRegisters[RegisterIndex].StatusAddr =
|
||||
(UINT16) (AcpiGbl_FACP->Gpe1Blk + i);
|
||||
(UINT16) (AcpiGbl_FADT->XGpe1Blk.Address + i);
|
||||
|
||||
AcpiGbl_GpeRegisters[RegisterIndex].EnableAddr =
|
||||
(UINT16) (AcpiGbl_FACP->Gpe1Blk + i + Gpe1RegisterCount);
|
||||
(UINT16) (AcpiGbl_FADT->XGpe1Blk.Address + i + Gpe1RegisterCount);
|
||||
|
||||
AcpiGbl_GpeRegisters[RegisterIndex].GpeBase =
|
||||
(UINT8) (AcpiGbl_FACP->Gpe1Base + MUL_8 (i));
|
||||
(UINT8) (AcpiGbl_FADT->Gpe1Base + MUL_8 (i));
|
||||
|
||||
for (j = 0; j < 8; j++)
|
||||
{
|
||||
@ -531,9 +559,9 @@ AcpiEvGpeInitialize (void)
|
||||
}
|
||||
|
||||
DEBUG_PRINT (ACPI_INFO,
|
||||
("GPE registers: %d@%X (Blk0) %d@%X (Blk1)\n",
|
||||
Gpe0RegisterCount, AcpiGbl_FACP->Gpe0Blk, Gpe1RegisterCount,
|
||||
AcpiGbl_FACP->Gpe1Blk));
|
||||
("GPE registers: %d@%p (Blk0) %d@%p (Blk1)\n",
|
||||
Gpe0RegisterCount, AcpiGbl_FADT->XGpe0Blk.Address, Gpe1RegisterCount,
|
||||
AcpiGbl_FADT->XGpe1Blk.Address));
|
||||
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
}
|
||||
@ -561,7 +589,7 @@ AcpiEvGpeInitialize (void)
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
static ACPI_STATUS
|
||||
AcpiEvSaveMethodInfo (
|
||||
ACPI_HANDLE ObjHandle,
|
||||
UINT32 Level,
|
||||
@ -684,31 +712,6 @@ AcpiEvInitGpeControlMethods (void)
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiEvGpeCleanup
|
||||
*
|
||||
* PARAMETERS: None
|
||||
*
|
||||
* RETURN: None
|
||||
*
|
||||
* DESCRIPTION: Cleanup in preparation for unload.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
void
|
||||
AcpiEvGpeCleanup (void)
|
||||
{
|
||||
FUNCTION_TRACE ("EvGpeCleanup");
|
||||
|
||||
|
||||
AcpiCmFree (AcpiGbl_GpeRegisters);
|
||||
AcpiCmFree (AcpiGbl_GpeInfo);
|
||||
|
||||
return_VOID;
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiEvGpeDetect
|
||||
@ -799,7 +802,7 @@ AcpiEvGpeDetect (void)
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
void
|
||||
static void
|
||||
AcpiEvAsynchExecuteGpeMethod (
|
||||
void *Context)
|
||||
{
|
||||
@ -816,22 +819,12 @@ AcpiEvAsynchExecuteGpeMethod (
|
||||
GpeInfo = AcpiGbl_GpeInfo [GpeNumber];
|
||||
AcpiCmReleaseMutex (ACPI_MTX_EVENTS);
|
||||
|
||||
/*
|
||||
* Function Handler (e.g. EC):
|
||||
* ---------------------------
|
||||
* Execute the installed function handler to handle this event.
|
||||
*/
|
||||
if (GpeInfo.Handler)
|
||||
{
|
||||
GpeInfo.Handler (GpeInfo.Context);
|
||||
}
|
||||
|
||||
/*
|
||||
* Method Handler (_Lxx, _Exx):
|
||||
* ----------------------------
|
||||
* AcpiEvaluate the _Lxx/_Exx control method that corresponds to this GPE.
|
||||
*/
|
||||
else if (GpeInfo.MethodHandle)
|
||||
if (GpeInfo.MethodHandle)
|
||||
{
|
||||
AcpiNsEvaluateByHandle (GpeInfo.MethodHandle, NULL, NULL);
|
||||
}
|
||||
@ -843,7 +836,7 @@ AcpiEvAsynchExecuteGpeMethod (
|
||||
* that edge-triggered events are cleared prior to calling (via DPC)
|
||||
* this function.
|
||||
*/
|
||||
if (GpeInfo.Type | ACPI_EVENT_LEVEL_TRIGGERED)
|
||||
if (GpeInfo.Type & ACPI_EVENT_LEVEL_TRIGGERED)
|
||||
{
|
||||
AcpiHwClearGpe (GpeNumber);
|
||||
}
|
||||
@ -907,7 +900,7 @@ AcpiEvGpeDispatch (
|
||||
* level-triggered events are cleared after the GPE is serviced
|
||||
* (see AcpiEvAsynchExecuteGpeMethod).
|
||||
*/
|
||||
if (AcpiGbl_GpeInfo [GpeNumber].Type | ACPI_EVENT_EDGE_TRIGGERED)
|
||||
if (AcpiGbl_GpeInfo[GpeNumber].Type & ACPI_EVENT_EDGE_TRIGGERED)
|
||||
{
|
||||
AcpiHwClearGpe (GpeNumber);
|
||||
}
|
||||
@ -918,8 +911,7 @@ AcpiEvGpeDispatch (
|
||||
* Queue the handler, which is either an installable function handler
|
||||
* (e.g. EC) or a control method (e.g. _Lxx/_Exx) for later execution.
|
||||
*/
|
||||
if (AcpiGbl_GpeInfo [GpeNumber].Handler ||
|
||||
AcpiGbl_GpeInfo [GpeNumber].MethodHandle)
|
||||
if (AcpiGbl_GpeInfo[GpeNumber].MethodHandle)
|
||||
{
|
||||
if (ACPI_FAILURE (AcpiOsQueueForExecution (OSD_PRIORITY_GPE,
|
||||
AcpiEvAsynchExecuteGpeMethod,
|
||||
@ -935,7 +927,24 @@ AcpiEvGpeDispatch (
|
||||
GpeNumber));
|
||||
}
|
||||
}
|
||||
else if (AcpiGbl_GpeInfo[GpeNumber].Handler)
|
||||
{
|
||||
ACPI_GPE_LEVEL_INFO GpeInfo;
|
||||
/*
|
||||
* Function Handler (e.g. EC):
|
||||
* ---------------------------
|
||||
* Execute the installed function handler to handle this event.
|
||||
* Without queueing.
|
||||
*/
|
||||
AcpiCmAcquireMutex (ACPI_MTX_EVENTS);
|
||||
GpeInfo = AcpiGbl_GpeInfo [GpeNumber];
|
||||
AcpiCmReleaseMutex (ACPI_MTX_EVENTS);
|
||||
|
||||
if (GpeInfo.Handler)
|
||||
{
|
||||
GpeInfo.Handler (GpeInfo.Context);
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Non Handled GPEs:
|
||||
* -----------------
|
||||
|
@ -2,7 +2,7 @@
|
||||
*
|
||||
* Module Name: evmisc - ACPI device notification handler dispatch
|
||||
* and ACPI Global Lock support
|
||||
* $Revision: 15 $
|
||||
* $Revision: 19 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -268,7 +268,7 @@ AcpiEvNotifyDispatch (
|
||||
*
|
||||
**************************************************************************/
|
||||
|
||||
void
|
||||
static void
|
||||
AcpiEvGlobalLockThread (
|
||||
void *Context)
|
||||
{
|
||||
@ -297,7 +297,7 @@ AcpiEvGlobalLockThread (
|
||||
*
|
||||
**************************************************************************/
|
||||
|
||||
UINT32
|
||||
static UINT32
|
||||
AcpiEvGlobalLockHandler (
|
||||
void *Context)
|
||||
{
|
||||
@ -311,7 +311,7 @@ AcpiEvGlobalLockHandler (
|
||||
* take another interrupt when it becomes free.
|
||||
*/
|
||||
|
||||
GlobalLock = &AcpiGbl_FACS->GlobalLock;
|
||||
GlobalLock = AcpiGbl_FACS->GlobalLock;
|
||||
ACPI_ACQUIRE_GLOBAL_LOCK (GlobalLock, Acquired);
|
||||
if (Acquired)
|
||||
{
|
||||
@ -398,7 +398,7 @@ AcpiEvAcquireGlobalLock(void)
|
||||
|
||||
/* We must acquire the actual hardware lock */
|
||||
|
||||
GlobalLock = &AcpiGbl_FACS->GlobalLock;
|
||||
GlobalLock = AcpiGbl_FACS->GlobalLock;
|
||||
ACPI_ACQUIRE_GLOBAL_LOCK (GlobalLock, Acquired);
|
||||
if (Acquired)
|
||||
{
|
||||
@ -467,7 +467,7 @@ AcpiEvReleaseGlobalLock (void)
|
||||
* release
|
||||
*/
|
||||
|
||||
GlobalLock = &AcpiGbl_FACS->GlobalLock;
|
||||
GlobalLock = AcpiGbl_FACS->GlobalLock;
|
||||
ACPI_RELEASE_GLOBAL_LOCK (GlobalLock, Pending);
|
||||
AcpiGbl_GlobalLockAcquired = FALSE;
|
||||
|
||||
@ -477,8 +477,8 @@ AcpiEvReleaseGlobalLock (void)
|
||||
*/
|
||||
if (Pending)
|
||||
{
|
||||
AcpiHwRegisterAccess (ACPI_WRITE, ACPI_MTX_LOCK,
|
||||
PM1_CONTROL | GBL_RLS, 1);
|
||||
AcpiHwRegisterBitAccess (ACPI_WRITE, ACPI_MTX_LOCK,
|
||||
GBL_RLS, 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: evregion - ACPI AddressSpace / OpRegion handler dispatch
|
||||
* $Revision: 85 $
|
||||
* Module Name: evregion - ACPI AddressSpace (OpRegion) handler dispatch
|
||||
* $Revision: 88 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -211,7 +211,7 @@ AcpiEvInstallDefaultAddressSpaceHandlers (
|
||||
*
|
||||
*************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
static ACPI_STATUS
|
||||
AcpiEvExecuteRegMethod (
|
||||
ACPI_OPERAND_OBJECT *RegionObj,
|
||||
UINT32 Function)
|
||||
@ -289,7 +289,7 @@ ACPI_STATUS
|
||||
AcpiEvAddressSpaceDispatch (
|
||||
ACPI_OPERAND_OBJECT *RegionObj,
|
||||
UINT32 Function,
|
||||
ACPI_INTEGER Address,
|
||||
ACPI_PHYSICAL_ADDRESS Address,
|
||||
UINT32 BitWidth,
|
||||
UINT32 *Value)
|
||||
{
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: evrgnini- ACPI AddressSpace / OpRegion init
|
||||
* $Revision: 27 $
|
||||
* Module Name: evrgnini- ACPI AddressSpace (OpRegion) init
|
||||
* $Revision: 29 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
*
|
||||
* Module Name: evsci - System Control Interrupt configuration and
|
||||
* legacy to ACPI mode state transition functions
|
||||
* $Revision: 60 $
|
||||
* $Revision: 67 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -150,7 +150,7 @@
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
UINT32
|
||||
static UINT32
|
||||
AcpiEvSciHandler (void *Context)
|
||||
{
|
||||
UINT32 InterruptHandled = INTERRUPT_NOT_HANDLED;
|
||||
@ -163,7 +163,7 @@ AcpiEvSciHandler (void *Context)
|
||||
* Make sure that ACPI is enabled by checking SCI_EN. Note that we are
|
||||
* required to treat the SCI interrupt as sharable, level, active low.
|
||||
*/
|
||||
if (!AcpiHwRegisterAccess (ACPI_READ, ACPI_MTX_DO_NOT_LOCK, SCI_EN))
|
||||
if (!AcpiHwRegisterBitAccess (ACPI_READ, ACPI_MTX_DO_NOT_LOCK, SCI_EN))
|
||||
{
|
||||
/* ACPI is not enabled; this interrupt cannot be for us */
|
||||
|
||||
@ -209,7 +209,7 @@ AcpiEvInstallSciHandler (void)
|
||||
FUNCTION_TRACE ("EvInstallSciHandler");
|
||||
|
||||
|
||||
Except = AcpiOsInstallInterruptHandler ((UINT32) AcpiGbl_FACP->SciInt,
|
||||
Except = AcpiOsInstallInterruptHandler ((UINT32) AcpiGbl_FADT->SciInt,
|
||||
AcpiEvSciHandler,
|
||||
NULL);
|
||||
|
||||
@ -269,7 +269,7 @@ AcpiEvRemoveSciHandler (void)
|
||||
|
||||
#endif
|
||||
|
||||
AcpiOsRemoveInterruptHandler ((UINT32) AcpiGbl_FACP->SciInt,
|
||||
AcpiOsRemoveInterruptHandler ((UINT32) AcpiGbl_FADT->SciInt,
|
||||
AcpiEvSciHandler);
|
||||
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
@ -347,23 +347,13 @@ AcpiEvRestoreAcpiState (void)
|
||||
{
|
||||
/* Restore the fixed events */
|
||||
|
||||
if (AcpiOsIn16 (AcpiGbl_FACP->Pm1aEvtBlk + 2) !=
|
||||
if (AcpiHwRegisterRead (ACPI_MTX_LOCK, PM1_EN) !=
|
||||
AcpiGbl_Pm1EnableRegisterSave)
|
||||
{
|
||||
AcpiOsOut16 ((AcpiGbl_FACP->Pm1aEvtBlk + 2),
|
||||
AcpiHwRegisterWrite (ACPI_MTX_LOCK, PM1_EN,
|
||||
AcpiGbl_Pm1EnableRegisterSave);
|
||||
}
|
||||
|
||||
if (AcpiGbl_FACP->Pm1bEvtBlk)
|
||||
{
|
||||
if (AcpiOsIn16 (AcpiGbl_FACP->Pm1bEvtBlk + 2) !=
|
||||
AcpiGbl_Pm1EnableRegisterSave)
|
||||
{
|
||||
AcpiOsOut16 ((AcpiGbl_FACP->Pm1bEvtBlk + 2),
|
||||
AcpiGbl_Pm1EnableRegisterSave);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Ensure that all status bits are clear */
|
||||
|
||||
@ -372,28 +362,26 @@ AcpiEvRestoreAcpiState (void)
|
||||
|
||||
/* Now restore the GPEs */
|
||||
|
||||
for (Index = 0; Index < DIV_2 (AcpiGbl_FACP->Gpe0BlkLen); Index++)
|
||||
for (Index = 0; Index < DIV_2 (AcpiGbl_FADT->Gpe0BlkLen); Index++)
|
||||
{
|
||||
if (AcpiOsIn8 (AcpiGbl_FACP->Gpe0Blk +
|
||||
DIV_2 (AcpiGbl_FACP->Gpe0BlkLen)) !=
|
||||
if (AcpiHwRegisterRead (ACPI_MTX_LOCK, GPE0_EN_BLOCK | Index) !=
|
||||
AcpiGbl_Gpe0EnableRegisterSave[Index])
|
||||
{
|
||||
AcpiOsOut8 ((AcpiGbl_FACP->Gpe0Blk +
|
||||
DIV_2 (AcpiGbl_FACP->Gpe0BlkLen)),
|
||||
AcpiHwRegisterWrite (ACPI_MTX_LOCK, GPE0_EN_BLOCK | Index,
|
||||
AcpiGbl_Gpe0EnableRegisterSave[Index]);
|
||||
}
|
||||
}
|
||||
|
||||
if (AcpiGbl_FACP->Gpe1Blk && AcpiGbl_FACP->Gpe1BlkLen)
|
||||
/* GPE 1 present? */
|
||||
|
||||
if (AcpiGbl_FADT->Gpe1BlkLen)
|
||||
{
|
||||
for (Index = 0; Index < DIV_2 (AcpiGbl_FACP->Gpe1BlkLen); Index++)
|
||||
for (Index = 0; Index < DIV_2 (AcpiGbl_FADT->Gpe1BlkLen); Index++)
|
||||
{
|
||||
if (AcpiOsIn8 (AcpiGbl_FACP->Gpe1Blk +
|
||||
DIV_2 (AcpiGbl_FACP->Gpe1BlkLen)) !=
|
||||
if (AcpiHwRegisterRead (ACPI_MTX_LOCK, GPE1_EN_BLOCK | Index) !=
|
||||
AcpiGbl_Gpe1EnableRegisterSave[Index])
|
||||
{
|
||||
AcpiOsOut8 ((AcpiGbl_FACP->Gpe1Blk +
|
||||
DIV_2 (AcpiGbl_FACP->Gpe1BlkLen)),
|
||||
AcpiHwRegisterWrite (ACPI_MTX_LOCK, GPE1_EN_BLOCK | Index,
|
||||
AcpiGbl_Gpe1EnableRegisterSave[Index]);
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: evxface - External interfaces for ACPI events
|
||||
* $Revision: 91 $
|
||||
* $Revision: 96 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -179,11 +179,11 @@ AcpiInstallFixedEventHandler (
|
||||
AcpiGbl_FixedEventHandlers[Event].Handler = Handler;
|
||||
AcpiGbl_FixedEventHandlers[Event].Context = Context;
|
||||
|
||||
if (1 != AcpiHwRegisterAccess (ACPI_WRITE,
|
||||
ACPI_MTX_LOCK, Event + TMR_EN, 1))
|
||||
Status = AcpiEnableEvent(Event, ACPI_EVENT_FIXED);
|
||||
|
||||
if (!ACPI_SUCCESS(Status))
|
||||
{
|
||||
DEBUG_PRINT (ACPI_WARN,
|
||||
("Could not write to fixed event enable register.\n"));
|
||||
DEBUG_PRINT (ACPI_WARN, ("Could not enable fixed event.\n"));
|
||||
|
||||
/* Remove the handler */
|
||||
|
||||
@ -239,13 +239,16 @@ AcpiRemoveFixedEventHandler (
|
||||
|
||||
/* Disable the event before removing the handler - just in case... */
|
||||
|
||||
if (0 != AcpiHwRegisterAccess (ACPI_WRITE,
|
||||
ACPI_MTX_LOCK, Event + TMR_EN, 0))
|
||||
Status = AcpiDisableEvent(Event, ACPI_EVENT_FIXED);
|
||||
|
||||
if (!ACPI_SUCCESS(Status))
|
||||
{
|
||||
DEBUG_PRINT (ACPI_WARN,
|
||||
("Could not write to fixed event enable register.\n"));
|
||||
|
||||
Status = AE_ERROR;
|
||||
goto Cleanup;
|
||||
AcpiCmReleaseMutex (ACPI_MTX_EVENTS);
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/* Remove the handler */
|
||||
@ -255,7 +258,6 @@ AcpiRemoveFixedEventHandler (
|
||||
|
||||
DEBUG_PRINT (ACPI_INFO, ("Disabled fixed event %d.\n", Event));
|
||||
|
||||
Cleanup:
|
||||
AcpiCmReleaseMutex (ACPI_MTX_EVENTS);
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: evxfevnt - External Interfaces, ACPI event disable/enable
|
||||
* $Revision: 22 $
|
||||
* $Revision: 26 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -287,7 +287,14 @@ AcpiEnableEvent (
|
||||
* enable register bit)
|
||||
*/
|
||||
|
||||
AcpiHwRegisterAccess (ACPI_WRITE, TRUE, RegisterId, 1);
|
||||
AcpiHwRegisterBitAccess (ACPI_WRITE, ACPI_MTX_LOCK, RegisterId, 1);
|
||||
|
||||
if (1 != AcpiHwRegisterBitAccess(ACPI_READ, ACPI_MTX_LOCK, RegisterId))
|
||||
{
|
||||
DEBUG_PRINT(ACPI_ERROR, ("Fixed event bit clear when it should be set,\n"));
|
||||
return_ACPI_STATUS (AE_ERROR);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
|
||||
@ -384,7 +391,14 @@ AcpiDisableEvent (
|
||||
* enable register bit)
|
||||
*/
|
||||
|
||||
AcpiHwRegisterAccess (ACPI_WRITE, TRUE, RegisterId, 0);
|
||||
AcpiHwRegisterBitAccess (ACPI_WRITE, ACPI_MTX_LOCK, RegisterId, 0);
|
||||
|
||||
if (0 != AcpiHwRegisterBitAccess(ACPI_READ, ACPI_MTX_LOCK, RegisterId))
|
||||
{
|
||||
DEBUG_PRINT(ACPI_ERROR, ("Fixed event bit set when it should be clear,\n"));
|
||||
return_ACPI_STATUS (AE_ERROR);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
|
||||
@ -478,7 +492,7 @@ AcpiClearEvent (
|
||||
* status register bit)
|
||||
*/
|
||||
|
||||
AcpiHwRegisterAccess (ACPI_WRITE, TRUE, RegisterId, 1);
|
||||
AcpiHwRegisterBitAccess (ACPI_WRITE, ACPI_MTX_LOCK, RegisterId, 1);
|
||||
break;
|
||||
|
||||
|
||||
@ -579,7 +593,7 @@ AcpiGetEventStatus (
|
||||
|
||||
/* Get the status of the requested fixed event */
|
||||
|
||||
*EventStatus = AcpiHwRegisterAccess (ACPI_READ, TRUE, RegisterId);
|
||||
*EventStatus = AcpiHwRegisterBitAccess (ACPI_READ, ACPI_MTX_LOCK, RegisterId);
|
||||
break;
|
||||
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: hwacpi - ACPI hardware functions - mode and timer
|
||||
* $Revision: 24 $
|
||||
* $Revision: 31 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -149,11 +149,11 @@ AcpiHwInitialize (
|
||||
|
||||
/* We must have the ACPI tables by the time we get here */
|
||||
|
||||
if (!AcpiGbl_FACP)
|
||||
if (!AcpiGbl_FADT)
|
||||
{
|
||||
AcpiGbl_RestoreAcpiChipset = FALSE;
|
||||
|
||||
DEBUG_PRINT (ACPI_ERROR, ("HwInitialize: No FACP!\n"));
|
||||
DEBUG_PRINT (ACPI_ERROR, ("HwInitialize: No FADT!\n"));
|
||||
|
||||
return_ACPI_STATUS (AE_NO_ACPI_TABLES);
|
||||
}
|
||||
@ -217,27 +217,21 @@ AcpiHwInitialize (
|
||||
/* Target system supports ACPI mode */
|
||||
|
||||
/*
|
||||
* The purpose of this block of code is to save the initial state
|
||||
* The purpose of this code is to save the initial state
|
||||
* of the ACPI event enable registers. An exit function will be
|
||||
* registered which will restore this state when the application
|
||||
* exits. The exit function will also clear all of the ACPI event
|
||||
* status bits prior to restoring the original mode.
|
||||
*
|
||||
* The location of the PM1aEvtBlk enable registers is defined as the
|
||||
* base of PM1aEvtBlk + PM1aEvtBlkLength / 2. Since the spec further
|
||||
* base of PM1aEvtBlk + DIV_2(PM1aEvtBlkLength). Since the spec further
|
||||
* fully defines the PM1aEvtBlk to be a total of 4 bytes, the offset
|
||||
* for the enable registers is always 2 from the base. It is hard
|
||||
* coded here. If this changes in the spec, this code will need to
|
||||
* be modified. The PM1bEvtBlk behaves as expected.
|
||||
*/
|
||||
|
||||
AcpiGbl_Pm1EnableRegisterSave =
|
||||
AcpiOsIn16 ((AcpiGbl_FACP->Pm1aEvtBlk + 2));
|
||||
if (AcpiGbl_FACP->Pm1bEvtBlk)
|
||||
{
|
||||
AcpiGbl_Pm1EnableRegisterSave |=
|
||||
AcpiOsIn16 ((AcpiGbl_FACP->Pm1bEvtBlk + 2));
|
||||
}
|
||||
AcpiGbl_Pm1EnableRegisterSave = (UINT16) AcpiHwRegisterRead (ACPI_MTX_LOCK, PM1_EN);
|
||||
|
||||
|
||||
/*
|
||||
@ -245,12 +239,12 @@ AcpiHwInitialize (
|
||||
* block is not fixed, so the buffer must be allocated with malloc
|
||||
*/
|
||||
|
||||
if (AcpiGbl_FACP->Gpe0Blk && AcpiGbl_FACP->Gpe0BlkLen)
|
||||
if (AcpiGbl_FADT->XGpe0Blk.Address && AcpiGbl_FADT->Gpe0BlkLen)
|
||||
{
|
||||
/* GPE0 specified in FACP */
|
||||
/* GPE0 specified in FADT */
|
||||
|
||||
AcpiGbl_Gpe0EnableRegisterSave =
|
||||
AcpiCmAllocate (DIV_2 (AcpiGbl_FACP->Gpe0BlkLen));
|
||||
AcpiCmAllocate (DIV_2 (AcpiGbl_FADT->Gpe0BlkLen));
|
||||
if (!AcpiGbl_Gpe0EnableRegisterSave)
|
||||
{
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
@ -258,11 +252,10 @@ AcpiHwInitialize (
|
||||
|
||||
/* Save state of GPE0 enable bits */
|
||||
|
||||
for (Index = 0; Index < DIV_2 (AcpiGbl_FACP->Gpe0BlkLen); Index++)
|
||||
for (Index = 0; Index < DIV_2 (AcpiGbl_FADT->Gpe0BlkLen); Index++)
|
||||
{
|
||||
AcpiGbl_Gpe0EnableRegisterSave[Index] =
|
||||
AcpiOsIn8 (AcpiGbl_FACP->Gpe0Blk +
|
||||
DIV_2 (AcpiGbl_FACP->Gpe0BlkLen));
|
||||
(UINT8) AcpiHwRegisterRead (ACPI_MTX_LOCK, GPE0_EN_BLOCK | Index);
|
||||
}
|
||||
}
|
||||
|
||||
@ -271,12 +264,12 @@ AcpiHwInitialize (
|
||||
AcpiGbl_Gpe0EnableRegisterSave = NULL;
|
||||
}
|
||||
|
||||
if (AcpiGbl_FACP->Gpe1Blk && AcpiGbl_FACP->Gpe1BlkLen)
|
||||
if (AcpiGbl_FADT->XGpe1Blk.Address && AcpiGbl_FADT->Gpe1BlkLen)
|
||||
{
|
||||
/* GPE1 defined */
|
||||
|
||||
AcpiGbl_Gpe1EnableRegisterSave =
|
||||
AcpiCmAllocate (DIV_2 (AcpiGbl_FACP->Gpe1BlkLen));
|
||||
AcpiCmAllocate (DIV_2 (AcpiGbl_FADT->Gpe1BlkLen));
|
||||
if (!AcpiGbl_Gpe1EnableRegisterSave)
|
||||
{
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
@ -284,11 +277,10 @@ AcpiHwInitialize (
|
||||
|
||||
/* save state of GPE1 enable bits */
|
||||
|
||||
for (Index = 0; Index < DIV_2 (AcpiGbl_FACP->Gpe1BlkLen); Index++)
|
||||
for (Index = 0; Index < DIV_2 (AcpiGbl_FADT->Gpe1BlkLen); Index++)
|
||||
{
|
||||
AcpiGbl_Gpe1EnableRegisterSave[Index] =
|
||||
AcpiOsIn8 (AcpiGbl_FACP->Gpe1Blk +
|
||||
DIV_2 (AcpiGbl_FACP->Gpe1BlkLen));
|
||||
(UINT8) AcpiHwRegisterRead (ACPI_MTX_LOCK, GPE1_EN_BLOCK | Index);
|
||||
}
|
||||
}
|
||||
|
||||
@ -329,7 +321,7 @@ AcpiHwSetMode (
|
||||
{
|
||||
/* BIOS should have disabled ALL fixed and GP events */
|
||||
|
||||
AcpiOsOut8 (AcpiGbl_FACP->SmiCmd, AcpiGbl_FACP->AcpiEnable);
|
||||
AcpiOsOut8 (AcpiGbl_FADT->SmiCmd, AcpiGbl_FADT->AcpiEnable);
|
||||
DEBUG_PRINT (ACPI_INFO, ("Attempting to enable ACPI mode\n"));
|
||||
}
|
||||
|
||||
@ -340,7 +332,7 @@ AcpiHwSetMode (
|
||||
* enable bits to default
|
||||
*/
|
||||
|
||||
AcpiOsOut8 (AcpiGbl_FACP->SmiCmd, AcpiGbl_FACP->AcpiDisable);
|
||||
AcpiOsOut8 (AcpiGbl_FADT->SmiCmd, AcpiGbl_FADT->AcpiDisable);
|
||||
DEBUG_PRINT (ACPI_INFO,
|
||||
("Attempting to enable Legacy (non-ACPI) mode\n"));
|
||||
}
|
||||
@ -375,7 +367,7 @@ AcpiHwGetMode (void)
|
||||
FUNCTION_TRACE ("HwGetMode");
|
||||
|
||||
|
||||
if (AcpiHwRegisterAccess (ACPI_READ, ACPI_MTX_LOCK, SCI_EN))
|
||||
if (AcpiHwRegisterBitAccess (ACPI_READ, ACPI_MTX_LOCK, SCI_EN))
|
||||
{
|
||||
return_VALUE (SYS_MODE_ACPI);
|
||||
}
|
||||
@ -468,7 +460,7 @@ AcpiHwPmtTicks (void)
|
||||
|
||||
FUNCTION_TRACE ("AcpiPmtTicks");
|
||||
|
||||
Ticks = AcpiOsIn32 (AcpiGbl_FACP->PmTmrBlk);
|
||||
Ticks = AcpiOsIn32 ((ACPI_IO_ADDRESS) AcpiGbl_FADT->XPmTmrBlk.Address);
|
||||
|
||||
return_VALUE (Ticks);
|
||||
}
|
||||
@ -491,7 +483,7 @@ AcpiHwPmtResolution (void)
|
||||
{
|
||||
FUNCTION_TRACE ("AcpiPmtResolution");
|
||||
|
||||
if (0 == AcpiGbl_FACP->TmrValExt)
|
||||
if (0 == AcpiGbl_FADT->TmrValExt)
|
||||
{
|
||||
return_VALUE (24);
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: hwcpu32.c - CPU support for IA32 (Throttling, CxStates)
|
||||
* $Revision: 33 $
|
||||
* $Revision: 39 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -226,7 +226,7 @@ AcpiHwEnterC2(
|
||||
* We have to do something useless after reading LVL2 because chipsets
|
||||
* cannot guarantee that STPCLK# gets asserted in time to freeze execution.
|
||||
*/
|
||||
AcpiOsIn8 ((ACPI_IO_ADDRESS) AcpiGbl_FACP->Pm2CntBlk);
|
||||
AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, PM2_CONTROL);
|
||||
|
||||
/*
|
||||
* Compute Time in C2:
|
||||
@ -265,7 +265,6 @@ AcpiHwEnterC3(
|
||||
UINT32 *PmTimerTicks)
|
||||
{
|
||||
UINT32 Timer = 0;
|
||||
UINT8 Pm2CntBlk = 0;
|
||||
UINT32 BusMasterStatus = 0;
|
||||
|
||||
|
||||
@ -282,12 +281,12 @@ AcpiHwEnterC3(
|
||||
* eventually cause a demotion to C2
|
||||
*/
|
||||
if (1 == (BusMasterStatus =
|
||||
AcpiHwRegisterAccess (ACPI_READ, ACPI_MTX_LOCK, BM_STS)))
|
||||
AcpiHwRegisterBitAccess (ACPI_READ, ACPI_MTX_LOCK, BM_STS)))
|
||||
{
|
||||
/*
|
||||
* Clear the BM_STS bit by setting it.
|
||||
*/
|
||||
AcpiHwRegisterAccess (ACPI_WRITE, ACPI_MTX_LOCK, BM_STS, 1);
|
||||
AcpiHwRegisterBitAccess (ACPI_WRITE, ACPI_MTX_LOCK, BM_STS, 1);
|
||||
*PmTimerTicks = 0;
|
||||
return (AE_OK);
|
||||
}
|
||||
@ -302,9 +301,7 @@ AcpiHwEnterC3(
|
||||
* ----------------------
|
||||
* Set the PM2_CNT.ARB_DIS bit (bit #0), preserving all other bits.
|
||||
*/
|
||||
Pm2CntBlk = AcpiOsIn8 ((ACPI_IO_ADDRESS) AcpiGbl_FACP->Pm2CntBlk);
|
||||
Pm2CntBlk |= 0x01;
|
||||
AcpiOsOut8 ((ACPI_IO_ADDRESS) AcpiGbl_FACP->Pm2CntBlk, Pm2CntBlk);
|
||||
AcpiHwRegisterBitAccess(ACPI_WRITE, ACPI_MTX_LOCK, ARB_DIS, 1);
|
||||
|
||||
/*
|
||||
* Get the timer base before entering C state
|
||||
@ -324,8 +321,7 @@ AcpiHwEnterC3(
|
||||
* We have to do something useless after reading LVL3 because chipsets
|
||||
* cannot guarantee that STPCLK# gets asserted in time to freeze execution.
|
||||
*/
|
||||
AcpiOsIn8 ((ACPI_IO_ADDRESS) AcpiGbl_FACP->Pm2CntBlk);
|
||||
|
||||
AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, PM2_CONTROL);
|
||||
/*
|
||||
* Immediately compute the time in the C state
|
||||
*/
|
||||
@ -336,9 +332,7 @@ AcpiHwEnterC3(
|
||||
* ------------------------
|
||||
* Clear the PM2_CNT.ARB_DIS bit (bit #0), preserving all other bits.
|
||||
*/
|
||||
Pm2CntBlk = AcpiOsIn8 ((ACPI_IO_ADDRESS) AcpiGbl_FACP->Pm2CntBlk);
|
||||
Pm2CntBlk &= 0xFE;
|
||||
AcpiOsOut8 ((ACPI_IO_ADDRESS) AcpiGbl_FACP->Pm2CntBlk, Pm2CntBlk);
|
||||
AcpiHwRegisterBitAccess(ACPI_WRITE, ACPI_MTX_LOCK, ARB_DIS, 0);
|
||||
|
||||
/* TBD: [Unhandled]: Support 24-bit timers (this algorithm assumes 32-bit) */
|
||||
|
||||
@ -431,7 +425,7 @@ AcpiHwSetCx (
|
||||
switch (CxState)
|
||||
{
|
||||
case 3:
|
||||
AcpiHwRegisterAccess (ACPI_WRITE, ACPI_MTX_LOCK, BM_RLD, 1);
|
||||
AcpiHwRegisterBitAccess (ACPI_WRITE, ACPI_MTX_LOCK, BM_RLD, 1);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -445,7 +439,7 @@ AcpiHwSetCx (
|
||||
switch (AcpiHwActiveCxState)
|
||||
{
|
||||
case 3:
|
||||
AcpiHwRegisterAccess (ACPI_WRITE, ACPI_MTX_LOCK, BM_RLD, 0);
|
||||
AcpiHwRegisterBitAccess (ACPI_WRITE, ACPI_MTX_LOCK, BM_RLD, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -511,18 +505,18 @@ AcpiHwGetCxInfo (
|
||||
* and on SMP systems when P_LVL2_UP (which indicates C2 only on UP)
|
||||
* is not set.
|
||||
*/
|
||||
if (AcpiGbl_FACP->Plvl2Lat <= 100)
|
||||
if (AcpiGbl_FADT->Plvl2Lat <= 100)
|
||||
{
|
||||
if (!SMP_system)
|
||||
{
|
||||
AcpiHwCxHandlers[2] = AcpiHwEnterC2;
|
||||
CxStates[2] = AcpiGbl_FACP->Plvl2Lat;
|
||||
CxStates[2] = AcpiGbl_FADT->Plvl2Lat;
|
||||
}
|
||||
|
||||
else if (!AcpiGbl_FACP->Plvl2Up)
|
||||
else if (!AcpiGbl_FADT->Plvl2Up)
|
||||
{
|
||||
AcpiHwCxHandlers[2] = AcpiHwEnterC2;
|
||||
CxStates[2] = AcpiGbl_FACP->Plvl2Lat;
|
||||
CxStates[2] = AcpiGbl_FADT->Plvl2Lat;
|
||||
}
|
||||
}
|
||||
|
||||
@ -537,13 +531,13 @@ AcpiHwGetCxInfo (
|
||||
* cannot be used on SMP systems, and flushing caches (e.g. WBINVD)
|
||||
* is simply too costly (at this time).
|
||||
*/
|
||||
if (AcpiGbl_FACP->Plvl3Lat <= 1000)
|
||||
if (AcpiGbl_FADT->Plvl3Lat <= 1000)
|
||||
{
|
||||
if (!SMP_system && (AcpiGbl_FACP->Pm2CntBlk &&
|
||||
AcpiGbl_FACP->Pm2CntLen))
|
||||
if (!SMP_system && (AcpiGbl_FADT->XPm2CntBlk.Address &&
|
||||
AcpiGbl_FADT->Pm2CntLen))
|
||||
{
|
||||
AcpiHwCxHandlers[3] = AcpiHwEnterC3;
|
||||
CxStates[3] = AcpiGbl_FACP->Plvl3Lat;
|
||||
CxStates[3] = AcpiGbl_FADT->Plvl3Lat;
|
||||
}
|
||||
}
|
||||
|
||||
@ -841,5 +835,3 @@ AcpiHwProgramDutyCycle (
|
||||
|
||||
return_VOID;
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: hwgpe - Low level GPE enable/disable/clear functions
|
||||
* $Revision: 22 $
|
||||
* $Revision: 25 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -123,9 +123,6 @@
|
||||
MODULE_NAME ("hwgpe")
|
||||
|
||||
|
||||
UINT8 DecodeTo8bit [8] = {1,2,4,8,16,32,64,128};
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiHwEnableGpe
|
||||
@ -154,7 +151,7 @@ AcpiHwEnableGpe (
|
||||
/*
|
||||
* Figure out the bit offset for this GPE within the target register.
|
||||
*/
|
||||
BitMask = DecodeTo8bit [MOD_8 (GpeNumber)];
|
||||
BitMask = AcpiGbl_DecodeTo8bit [MOD_8 (GpeNumber)];
|
||||
|
||||
/*
|
||||
* Read the current value of the register, set the appropriate bit
|
||||
@ -194,7 +191,7 @@ AcpiHwDisableGpe (
|
||||
/*
|
||||
* Figure out the bit offset for this GPE within the target register.
|
||||
*/
|
||||
BitMask = DecodeTo8bit [MOD_8 (GpeNumber)];
|
||||
BitMask = AcpiGbl_DecodeTo8bit [MOD_8 (GpeNumber)];
|
||||
|
||||
/*
|
||||
* Read the current value of the register, clear the appropriate bit,
|
||||
@ -233,7 +230,7 @@ AcpiHwClearGpe (
|
||||
/*
|
||||
* Figure out the bit offset for this GPE within the target register.
|
||||
*/
|
||||
BitMask = DecodeTo8bit [MOD_8 (GpeNumber)];
|
||||
BitMask = AcpiGbl_DecodeTo8bit [MOD_8 (GpeNumber)];
|
||||
|
||||
/*
|
||||
* Write a one to the appropriate bit in the status register to
|
||||
@ -279,7 +276,7 @@ AcpiHwGetGpeStatus (
|
||||
/*
|
||||
* Figure out the bit offset for this GPE within the target register.
|
||||
*/
|
||||
BitMask = DecodeTo8bit [MOD_8 (GpeNumber)];
|
||||
BitMask = AcpiGbl_DecodeTo8bit [MOD_8 (GpeNumber)];
|
||||
|
||||
/*
|
||||
* Enabled?:
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: accommon.h -- prototypes for the common (subsystem-wide) procedures
|
||||
* $Revision: 80 $
|
||||
* $Revision: 81 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -154,7 +154,7 @@ AcpiCmSubsystemShutdown (
|
||||
void);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiCmValidateFacp (
|
||||
AcpiCmValidateFadt (
|
||||
void);
|
||||
|
||||
/*
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: acdispat.h - dispatcher (parser to interpreter interface)
|
||||
* $Revision: 31 $
|
||||
* $Revision: 32 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -129,8 +129,6 @@
|
||||
#define MTH_TYPE_ARG 1
|
||||
|
||||
|
||||
|
||||
|
||||
/* Common interfaces */
|
||||
|
||||
ACPI_STATUS
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: acefi.h - OS specific defines, etc.
|
||||
* $Revision: 1 $
|
||||
* $Revision: 3 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -123,5 +123,14 @@
|
||||
#include <efistdarg.h>
|
||||
#include <efilib.h>
|
||||
|
||||
#undef UINT8
|
||||
#undef BOOLEAN
|
||||
#undef UCHAR
|
||||
#undef UINT16
|
||||
#undef INT32
|
||||
#undef UINT32
|
||||
#undef INT64
|
||||
#undef UINT64
|
||||
|
||||
|
||||
#endif /* __ACEFI_H__ */
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: acenv.h - Generation environment specific items
|
||||
* $Revision: 61 $
|
||||
* $Revision: 65 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -139,6 +139,13 @@
|
||||
#define ACPI_USE_SYSTEM_CLIBRARY
|
||||
#endif
|
||||
|
||||
#ifdef _ACPI_ASL_COMPILER
|
||||
#define ACPI_DEBUG
|
||||
#define ACPI_APPLICATION
|
||||
#define ENABLE_DEBUGGER
|
||||
#define ACPI_USE_SYSTEM_CLIBRARY
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* Environment configuration. The purpose of this file is to interface to the
|
||||
@ -359,16 +366,4 @@ typedef char *va_list;
|
||||
platform header. */
|
||||
|
||||
|
||||
|
||||
/* TBD: move this elsewhere! */
|
||||
|
||||
#ifdef __ia64__
|
||||
/* Look at interim FADT to determine IO or memory mapped */
|
||||
#define IoAddressSpace(flag) (AcpiGbl_FACP->AddressSpace & flag)
|
||||
#else
|
||||
/* always IO space */
|
||||
#define IoAddressSpace(flag) (1)
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* __ACENV_H__ */
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: acevents.h - Event subcomponent prototypes and defines
|
||||
* $Revision: 59 $
|
||||
* $Revision: 60 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -200,7 +200,7 @@ ACPI_STATUS
|
||||
AcpiEvAddressSpaceDispatch (
|
||||
ACPI_OPERAND_OBJECT *RegionObj,
|
||||
UINT32 Function,
|
||||
ACPI_INTEGER Address,
|
||||
ACPI_PHYSICAL_ADDRESS Address,
|
||||
UINT32 BitWidth,
|
||||
UINT32 *Value);
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: acglobal.h - Declarations for global variables
|
||||
* $Revision: 85 $
|
||||
* $Revision: 92 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -165,13 +165,12 @@ extern UINT32 AcpiGbl_NestingLevel;
|
||||
* of each in the system. Each global points to the actual table.
|
||||
*
|
||||
*/
|
||||
ACPI_EXTERN ROOT_SYSTEM_DESCRIPTOR_POINTER *AcpiGbl_RSDP;
|
||||
ACPI_EXTERN ROOT_SYSTEM_DESCRIPTION_TABLE *AcpiGbl_RSDT;
|
||||
ACPI_EXTERN FIRMWARE_ACPI_CONTROL_STRUCTURE *AcpiGbl_FACS;
|
||||
ACPI_EXTERN FIXED_ACPI_DESCRIPTION_TABLE *AcpiGbl_FACP;
|
||||
ACPI_EXTERN APIC_TABLE *AcpiGbl_APIC;
|
||||
ACPI_EXTERN RSDP_DESCRIPTOR *AcpiGbl_RSDP;
|
||||
ACPI_EXTERN XSDT_DESCRIPTOR *AcpiGbl_XSDT;
|
||||
ACPI_EXTERN FADT_DESCRIPTOR *AcpiGbl_FADT;
|
||||
ACPI_EXTERN ACPI_TABLE_HEADER *AcpiGbl_DSDT;
|
||||
ACPI_EXTERN ACPI_TABLE_HEADER *AcpiGbl_SBST;
|
||||
ACPI_EXTERN ACPI_COMMON_FACS *AcpiGbl_FACS;
|
||||
|
||||
/*
|
||||
* Since there may be multiple SSDTs and PSDTS, a single pointer is not
|
||||
* sufficient; Therefore, there isn't one!
|
||||
@ -254,6 +253,7 @@ ACPI_EXTERN ACPI_OBJECT_NOTIFY_HANDLER AcpiGbl_SysNotify;
|
||||
extern BOOLEAN AcpiGbl_Shutdown;
|
||||
extern UINT32 AcpiGbl_SystemFlags;
|
||||
extern UINT32 AcpiGbl_StartupFlags;
|
||||
extern UINT8 AcpiGbl_DecodeTo8bit[];
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
@ -288,23 +288,8 @@ ACPI_EXTERN ALLOCATION_INFO *AcpiGbl_TailAllocPtr;
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
ACPI_EXTERN UINT32 AcpiGbl_WhenToParseMethods;
|
||||
ACPI_EXTERN ACPI_WALK_LIST *AcpiGbl_CurrentWalkList;
|
||||
|
||||
/* Base of AML block, and pointer to current location in it */
|
||||
|
||||
ACPI_EXTERN UINT8 *AcpiGbl_PCodeBase;
|
||||
ACPI_EXTERN UINT8 *AcpiGbl_PCode;
|
||||
|
||||
/*
|
||||
* Length of AML block, and remaining length of current package.
|
||||
*/
|
||||
ACPI_EXTERN UINT32 AcpiGbl_PCodeBlockLen;
|
||||
ACPI_EXTERN UINT32 AcpiGbl_PCodeLen;
|
||||
|
||||
ACPI_EXTERN UINT32 AcpiGbl_BufSeq; /* Counts allocated Buffer descriptors */
|
||||
ACPI_EXTERN UINT32 AcpiGbl_NodeErr; /* Indicate if inc_error should be called */
|
||||
|
||||
/*
|
||||
* Handle to the last method found - used during pass1 of load
|
||||
*/
|
||||
@ -330,10 +315,6 @@ ACPI_EXTERN UINT8 AcpiGbl_CmSingleStep;
|
||||
|
||||
ACPI_EXTERN ACPI_PARSE_OBJECT *AcpiGbl_ParsedNamespaceRoot;
|
||||
|
||||
extern ACPI_OPCODE_INFO AcpiGbl_AmlOpInfo[];
|
||||
extern UINT8 AcpiGbl_AmlOpInfoIndex[256];
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
*
|
||||
* Hardware globals
|
||||
@ -380,9 +361,10 @@ ACPI_EXTERN UINT32 AcpiGbl_EventCount[NUM_FIXED_EVENTS];
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef ENABLE_DEBUGGER
|
||||
ACPI_EXTERN BOOLEAN AcpiGbl_MethodExecuting;
|
||||
ACPI_EXTERN BOOLEAN AcpiGbl_DbTerminateThreads;
|
||||
|
||||
#endif
|
||||
|
||||
/* Memory allocation metrics - Debug Only! */
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: achware.h -- hardware specific interfaces
|
||||
* $Revision: 42 $
|
||||
* $Revision: 48 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -147,11 +147,37 @@ AcpiHwGetModeCapabilities (
|
||||
|
||||
/* Register I/O Prototypes */
|
||||
|
||||
|
||||
UINT32
|
||||
AcpiHwRegisterAccess (
|
||||
AcpiHwRegisterBitAccess (
|
||||
NATIVE_UINT ReadWrite,
|
||||
BOOLEAN UseLock,
|
||||
UINT32 RegisterId, ... /* DWORD Value */);
|
||||
UINT32 RegisterId,
|
||||
... /* DWORD Write Value */);
|
||||
|
||||
UINT32
|
||||
AcpiHwRegisterRead (
|
||||
BOOLEAN UseLock,
|
||||
UINT32 RegisterId);
|
||||
|
||||
void
|
||||
AcpiHwRegisterWrite (
|
||||
BOOLEAN UseLock,
|
||||
UINT32 RegisterId,
|
||||
UINT32 Value);
|
||||
|
||||
UINT32
|
||||
AcpiHwLowLevelRead (
|
||||
UINT32 Width,
|
||||
ACPI_GAS *Reg,
|
||||
UINT32 Offset);
|
||||
|
||||
void
|
||||
AcpiHwLowLevelWrite (
|
||||
UINT32 Width,
|
||||
UINT32 Value,
|
||||
ACPI_GAS *Reg,
|
||||
UINT32 Offset);
|
||||
|
||||
void
|
||||
AcpiHwClearAcpiStatus (
|
||||
@ -216,6 +242,16 @@ ACPI_STATUS
|
||||
AcpiHwGetCxInfo (
|
||||
UINT32 CxStates[]);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiHwGetCxHandler (
|
||||
UINT32 CxState,
|
||||
ACPI_C_STATE_HANDLER *Handler);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiHwSetCxHandler (
|
||||
UINT32 CxState,
|
||||
ACPI_C_STATE_HANDLER Handler);
|
||||
|
||||
|
||||
/* Throttling Prototypes */
|
||||
|
||||
@ -256,5 +292,9 @@ UINT32
|
||||
AcpiHwPmtResolution (
|
||||
void);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiGetTimer (
|
||||
UINT32 *OutTicks);
|
||||
|
||||
|
||||
#endif /* __ACHWARE_H__ */
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: acinterp.h - Interpreter subcomponent prototypes and defines
|
||||
* $Revision: 82 $
|
||||
* $Revision: 85 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -417,7 +417,8 @@ AcpiAmlResolveToValue (
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiAmlResolveNodeToValue (
|
||||
ACPI_NAMESPACE_NODE **StackPtr);
|
||||
ACPI_NAMESPACE_NODE **StackPtr,
|
||||
ACPI_WALK_STATE *WalkState);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiAmlResolveObjectToValue (
|
||||
@ -533,6 +534,11 @@ void
|
||||
AcpiAmlExitInterpreter (
|
||||
void);
|
||||
|
||||
void
|
||||
AcpiAmlTruncateFor32bitTable (
|
||||
ACPI_OPERAND_OBJECT *ObjDesc,
|
||||
ACPI_WALK_STATE *WalkState);
|
||||
|
||||
BOOLEAN
|
||||
AcpiAmlValidateObjectType (
|
||||
ACPI_OBJECT_TYPE Type);
|
||||
@ -545,10 +551,6 @@ ACPI_STATUS
|
||||
AcpiAmlReleaseGlobalLock (
|
||||
BOOLEAN Locked);
|
||||
|
||||
UINT32
|
||||
AcpiAmlBufSeq (
|
||||
void);
|
||||
|
||||
UINT32
|
||||
AcpiAmlDigitsNeeded (
|
||||
ACPI_INTEGER Value,
|
||||
@ -578,7 +580,7 @@ AcpiAmlBuildCopyInternalPackageObject (
|
||||
ACPI_STATUS
|
||||
AcpiAmlSystemMemorySpaceHandler (
|
||||
UINT32 Function,
|
||||
ACPI_INTEGER Address,
|
||||
ACPI_PHYSICAL_ADDRESS Address,
|
||||
UINT32 BitWidth,
|
||||
UINT32 *Value,
|
||||
void *HandlerContext,
|
||||
@ -587,7 +589,7 @@ AcpiAmlSystemMemorySpaceHandler (
|
||||
ACPI_STATUS
|
||||
AcpiAmlSystemIoSpaceHandler (
|
||||
UINT32 Function,
|
||||
ACPI_INTEGER Address,
|
||||
ACPI_PHYSICAL_ADDRESS Address,
|
||||
UINT32 BitWidth,
|
||||
UINT32 *Value,
|
||||
void *HandlerContext,
|
||||
@ -596,7 +598,7 @@ AcpiAmlSystemIoSpaceHandler (
|
||||
ACPI_STATUS
|
||||
AcpiAmlPciConfigSpaceHandler (
|
||||
UINT32 Function,
|
||||
ACPI_INTEGER Address,
|
||||
ACPI_PHYSICAL_ADDRESS Address,
|
||||
UINT32 BitWidth,
|
||||
UINT32 *Value,
|
||||
void *HandlerContext,
|
||||
@ -605,7 +607,7 @@ AcpiAmlPciConfigSpaceHandler (
|
||||
ACPI_STATUS
|
||||
AcpiAmlEmbeddedControllerSpaceHandler (
|
||||
UINT32 Function,
|
||||
ACPI_INTEGER Address,
|
||||
ACPI_PHYSICAL_ADDRESS Address,
|
||||
UINT32 BitWidth,
|
||||
UINT32 *Value,
|
||||
void *HandlerContext,
|
||||
@ -614,7 +616,7 @@ AcpiAmlEmbeddedControllerSpaceHandler (
|
||||
ACPI_STATUS
|
||||
AcpiAmlSmBusSpaceHandler (
|
||||
UINT32 Function,
|
||||
ACPI_INTEGER Address,
|
||||
ACPI_PHYSICAL_ADDRESS Address,
|
||||
UINT32 BitWidth,
|
||||
UINT32 *Value,
|
||||
void *HandlerContext,
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: aclinux.h - OS specific defines, etc.
|
||||
* $Revision: 1 $
|
||||
* $Revision: 4 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -131,6 +131,14 @@
|
||||
|
||||
#include "acgcc.h"
|
||||
|
||||
#undef DEBUGGER_THREADING
|
||||
#define DEBUGGER_THREADING DEBUGGER_SINGLE_THREADED
|
||||
|
||||
/* Linux ia32 can't do int64 well */
|
||||
#ifndef _IA64
|
||||
#define ACPI_NO_INTEGER64_SUPPORT
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
|
||||
/* Use native Linux string library */
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: aclocal.h - Internal data types used across the ACPI subsystem
|
||||
* $Revision: 82 $
|
||||
* $Revision: 89 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -268,6 +268,7 @@ typedef struct acpi_node
|
||||
|
||||
#define ANOBJ_AML_ATTACHMENT 0x1
|
||||
#define ANOBJ_END_OF_PEER_LIST 0x2
|
||||
#define ANOBJ_DATA_WIDTH_32 0x4 /* Parent table is 64-bits */
|
||||
|
||||
|
||||
/*
|
||||
@ -281,6 +282,7 @@ typedef struct AcpiTableDesc
|
||||
ACPI_TABLE_HEADER *Pointer;
|
||||
void *BasePointer;
|
||||
UINT8 *AmlPointer;
|
||||
UINT64 PhysicalAddress;
|
||||
UINT32 AmlLength;
|
||||
UINT32 Length;
|
||||
UINT32 Count;
|
||||
@ -544,8 +546,7 @@ typedef struct acpi_opcode_info
|
||||
UINT32 ParseArgs; /* Grammar/Parse time arguments */
|
||||
UINT32 RuntimeArgs; /* Interpret time arguments */
|
||||
|
||||
DEBUG_ONLY_MEMBERS (
|
||||
NATIVE_CHAR *Name) /* op name (debug only) */
|
||||
DEBUG_ONLY_MEMBERS (NATIVE_CHAR *Name) /* op name (debug only) */
|
||||
|
||||
} ACPI_OPCODE_INFO;
|
||||
|
||||
@ -572,7 +573,7 @@ typedef union acpi_parse_val
|
||||
DEBUG_ONLY_MEMBERS (\
|
||||
NATIVE_CHAR OpName[16]) /* op name (debug only) */\
|
||||
/* NON-DEBUG members below: */\
|
||||
ACPI_NAMESPACE_NODE *Node;/* for use by interpreter */\
|
||||
ACPI_NAMESPACE_NODE *Node; /* for use by interpreter */\
|
||||
ACPI_PARSE_VALUE Value; /* Value or args associated with the opcode */\
|
||||
|
||||
|
||||
@ -649,7 +650,7 @@ typedef struct acpi_walk_state
|
||||
UINT8 CurrentResult; /* */
|
||||
|
||||
struct acpi_walk_state *Next; /* Next WalkState in list */
|
||||
ACPI_PARSE_OBJECT *Origin; /* Start of walk */
|
||||
ACPI_PARSE_OBJECT *Origin; /* Start of walk [Obsolete] */
|
||||
|
||||
/* TBD: Obsolete with removal of WALK procedure ? */
|
||||
ACPI_PARSE_OBJECT *PrevOp; /* Last op that was processed */
|
||||
@ -769,72 +770,92 @@ typedef struct acpi_get_devices_info
|
||||
#define MAX_CX_STATE_LATENCY 0xFFFFFFFF
|
||||
#define MAX_CX_STATES 4
|
||||
|
||||
|
||||
/*
|
||||
* The #define's and enum below establish an abstract way of identifying what
|
||||
* register block and register is to be accessed. Do not change any of the
|
||||
* values as they are used in switch statements and offset calculations.
|
||||
*/
|
||||
|
||||
#define REGISTER_BLOCK_MASK 0xFF00
|
||||
#define BIT_IN_REGISTER_MASK 0x00FF
|
||||
#define PM1_EVT 0x0100
|
||||
#define PM1_CONTROL 0x0200
|
||||
#define PM2_CONTROL 0x0300
|
||||
#define PM_TIMER 0x0400
|
||||
#define PROCESSOR_BLOCK 0x0500
|
||||
#define GPE0_STS_BLOCK 0x0600
|
||||
#define GPE0_EN_BLOCK 0x0700
|
||||
#define GPE1_STS_BLOCK 0x0800
|
||||
#define GPE1_EN_BLOCK 0x0900
|
||||
#define REGISTER_BLOCK_MASK 0xFF00 /* Register Block Id */
|
||||
#define BIT_IN_REGISTER_MASK 0x00FF /* Bit Id in the Register Block Id */
|
||||
#define BYTE_IN_REGISTER_MASK 0x00FF /* Register Offset in the Register Block */
|
||||
|
||||
enum
|
||||
{
|
||||
/* PM1 status register ids */
|
||||
#define REGISTER_BLOCK_ID(RegId) (RegId & REGISTER_BLOCK_MASK)
|
||||
#define REGISTER_BIT_ID(RegId) (RegId & BIT_IN_REGISTER_MASK)
|
||||
#define REGISTER_OFFSET(RegId) (RegId & BYTE_IN_REGISTER_MASK)
|
||||
|
||||
TMR_STS = (PM1_EVT | 0x01),
|
||||
BM_STS,
|
||||
GBL_STS,
|
||||
PWRBTN_STS,
|
||||
SLPBTN_STS,
|
||||
RTC_STS,
|
||||
WAK_STS,
|
||||
/*
|
||||
* Access Rule
|
||||
* To access a Register Bit:
|
||||
* -> Use Bit Name (= Register Block Id | Bit Id) defined in the enum.
|
||||
*
|
||||
* To access a Register:
|
||||
* -> Use Register Id (= Register Block Id | Register Offset)
|
||||
*/
|
||||
|
||||
/* PM1 enable register ids */
|
||||
|
||||
TMR_EN,
|
||||
/* need to skip 1 enable number since there's no bus master enable register */
|
||||
GBL_EN = (PM1_EVT | 0x0A),
|
||||
PWRBTN_EN,
|
||||
SLPBTN_EN,
|
||||
RTC_EN,
|
||||
/*
|
||||
* Register Block Id
|
||||
*/
|
||||
#define PM1_STS 0x0100
|
||||
#define PM1_EN 0x0200
|
||||
#define PM1_CONTROL 0x0300
|
||||
#define PM2_CONTROL 0x0400
|
||||
#define PM_TIMER 0x0500
|
||||
#define PROCESSOR_BLOCK 0x0600
|
||||
#define GPE0_STS_BLOCK 0x0700
|
||||
#define GPE0_EN_BLOCK 0x0800
|
||||
#define GPE1_STS_BLOCK 0x0900
|
||||
#define GPE1_EN_BLOCK 0x0A00
|
||||
#define SMI_CMD_BLOCK 0x0B00
|
||||
|
||||
/* PM1 control register ids */
|
||||
/*
|
||||
* Address space bitmasks for mmio or io spaces
|
||||
*/
|
||||
|
||||
SCI_EN = (PM1_CONTROL | 0x01),
|
||||
BM_RLD,
|
||||
GBL_RLS,
|
||||
SLP_TYPE_A,
|
||||
SLP_TYPE_B,
|
||||
SLP_EN,
|
||||
#define SMI_CMD_ADDRESS_SPACE 0x01
|
||||
#define PM1_BLK_ADDRESS_SPACE 0x02
|
||||
#define PM2_CNT_BLK_ADDRESS_SPACE 0x04
|
||||
#define PM_TMR_BLK_ADDRESS_SPACE 0x08
|
||||
#define GPE0_BLK_ADDRESS_SPACE 0x10
|
||||
#define GPE1_BLK_ADDRESS_SPACE 0x20
|
||||
|
||||
/* PM2 control register ids */
|
||||
/*
|
||||
* Control bit definitions
|
||||
*/
|
||||
#define TMR_STS (PM1_STS | 0x01)
|
||||
#define BM_STS (PM1_STS | 0x02)
|
||||
#define GBL_STS (PM1_STS | 0x03)
|
||||
#define PWRBTN_STS (PM1_STS | 0x04)
|
||||
#define SLPBTN_STS (PM1_STS | 0x05)
|
||||
#define RTC_STS (PM1_STS | 0x06)
|
||||
#define WAK_STS (PM1_STS | 0x07)
|
||||
|
||||
ARB_DIS = (PM2_CONTROL | 0x01),
|
||||
#define TMR_EN (PM1_EN | 0x01)
|
||||
/* no BM_EN */
|
||||
#define GBL_EN (PM1_EN | 0x03)
|
||||
#define PWRBTN_EN (PM1_EN | 0x04)
|
||||
#define SLPBTN_EN (PM1_EN | 0x05)
|
||||
#define RTC_EN (PM1_EN | 0x06)
|
||||
#define WAK_EN (PM1_EN | 0x07)
|
||||
|
||||
/* PM Timer register ids */
|
||||
#define SCI_EN (PM1_CONTROL | 0x01)
|
||||
#define BM_RLD (PM1_CONTROL | 0x02)
|
||||
#define GBL_RLS (PM1_CONTROL | 0x03)
|
||||
#define SLP_TYPE_A (PM1_CONTROL | 0x04)
|
||||
#define SLP_TYPE_B (PM1_CONTROL | 0x05)
|
||||
#define SLP_EN (PM1_CONTROL | 0x06)
|
||||
|
||||
TMR_VAL = (PM_TIMER | 0x01),
|
||||
#define ARB_DIS (PM2_CONTROL | 0x01)
|
||||
|
||||
GPE0_STS = (GPE0_STS_BLOCK | 0x01),
|
||||
GPE0_EN = (GPE0_EN_BLOCK | 0x01),
|
||||
#define TMR_VAL (PM_TIMER | 0x01)
|
||||
|
||||
GPE1_STS = (GPE1_STS_BLOCK | 0x01),
|
||||
GPE1_EN = (GPE0_EN_BLOCK | 0x01),
|
||||
#define GPE0_STS (GPE0_STS_BLOCK | 0x01)
|
||||
#define GPE0_EN (GPE0_EN_BLOCK | 0x01)
|
||||
|
||||
/* Last register value is one less than LAST_REG */
|
||||
|
||||
LAST_REG
|
||||
};
|
||||
#define GPE1_STS (GPE1_STS_BLOCK | 0x01)
|
||||
#define GPE1_EN (GPE1_EN_BLOCK | 0x01)
|
||||
|
||||
|
||||
#define TMR_STS_MASK 0x0001
|
||||
@ -845,8 +866,9 @@ enum
|
||||
#define RTC_STS_MASK 0x0400
|
||||
#define WAK_STS_MASK 0x8000
|
||||
|
||||
#define ALL_FIXED_STS_BITS (TMR_STS_MASK | BM_STS_MASK | GBL_STS_MASK | PWRBTN_STS_MASK | \
|
||||
SLPBTN_STS_MASK | RTC_STS_MASK | WAK_STS_MASK)
|
||||
#define ALL_FIXED_STS_BITS (TMR_STS_MASK | BM_STS_MASK | GBL_STS_MASK \
|
||||
| PWRBTN_STS_MASK | SLPBTN_STS_MASK \
|
||||
| RTC_STS_MASK | WAK_STS_MASK)
|
||||
|
||||
#define TMR_EN_MASK 0x0001
|
||||
#define GBL_EN_MASK 0x0020
|
||||
@ -861,6 +883,7 @@ enum
|
||||
#define SLP_EN_MASK 0x2000
|
||||
|
||||
#define ARB_DIS_MASK 0x0001
|
||||
#define TMR_VAL_MASK 0xFFFFFFFF
|
||||
|
||||
#define GPE0_STS_MASK
|
||||
#define GPE0_EN_MASK
|
||||
@ -872,16 +895,6 @@ enum
|
||||
#define ACPI_READ 1
|
||||
#define ACPI_WRITE 2
|
||||
|
||||
#define LOW_BYTE 0x00FF
|
||||
#define ONE_BYTE 0x08
|
||||
|
||||
#ifndef SET
|
||||
#define SET 1
|
||||
#endif
|
||||
#ifndef CLEAR
|
||||
#define CLEAR 0
|
||||
#endif
|
||||
|
||||
|
||||
/* Plug and play */
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: acmacros.h - C macros for the entire subsystem.
|
||||
* $Revision: 50 $
|
||||
* $Revision: 56 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -219,6 +219,11 @@
|
||||
#define MUL_16(a) _MUL(a,4)
|
||||
#define MOD_16(a) _MOD(a,16)
|
||||
|
||||
/*
|
||||
* Divide and Modulo
|
||||
*/
|
||||
#define ACPI_DIVIDE(n,d) ((n) / (d))
|
||||
#define ACPI_MODULO(n,d) ((n) % (d))
|
||||
|
||||
/*
|
||||
* Rounding macros (Power of two boundaries only)
|
||||
@ -228,18 +233,35 @@
|
||||
#define ROUND_UP(value,boundary) (((value) + ((boundary)-1)) & (~((boundary)-1)))
|
||||
|
||||
#define ROUND_DOWN_TO_32_BITS(a) ROUND_DOWN(a,4)
|
||||
#define ROUND_DOWN_TO_64_BITS(a) ROUND_DOWN(a,8)
|
||||
#define ROUND_DOWN_TO_NATIVE_WORD(a) ROUND_DOWN(a,ALIGNED_ADDRESS_BOUNDARY)
|
||||
|
||||
#define ROUND_UP_TO_32BITS(a) ROUND_UP(a,4)
|
||||
#define ROUND_UP_TO_64BITS(a) ROUND_UP(a,8)
|
||||
#define ROUND_UP_TO_NATIVE_WORD(a) ROUND_UP(a,ALIGNED_ADDRESS_BOUNDARY)
|
||||
|
||||
#define ROUND_PTR_UP_TO_4(a,b) ((b *)(((NATIVE_UINT)(a) + 3) & ~3))
|
||||
#define ROUND_PTR_UP_TO_8(a,b) ((b *)(((NATIVE_UINT)(a) + 7) & ~7))
|
||||
|
||||
#define ROUND_UP_TO_1K(a) (((a) + 1023) >> 10)
|
||||
|
||||
#ifdef DEBUG_ASSERT
|
||||
#undef DEBUG_ASSERT
|
||||
#endif
|
||||
|
||||
|
||||
/* Macros for GAS addressing */
|
||||
|
||||
#define ACPI_PCI_DEVICE_MASK (UINT64) 0x0000FFFF00000000
|
||||
#define ACPI_PCI_FUNCTION_MASK (UINT64) 0x00000000FFFF0000
|
||||
#define ACPI_PCI_REGISTER_MASK (UINT64) 0x000000000000FFFF
|
||||
|
||||
#define ACPI_PCI_FUNCTION(a) (UINT32) ((((a) & ACPI_PCI_FUNCTION_MASK) >> 16))
|
||||
#define ACPI_PCI_DEVICE(a) (UINT32) ((((a) & ACPI_PCI_DEVICE_MASK) >> 32))
|
||||
#define ACPI_PCI_REGISTER(a) (UINT32) (((a) & ACPI_PCI_REGISTER_MASK))
|
||||
#define ACPI_PCI_DEVFUN(a) (UINT32) ((ACPI_PCI_DEVICE(a) << 16) | ACPI_PCI_FUNCTION(a))
|
||||
|
||||
|
||||
/*
|
||||
* An ACPI_HANDLE (which is actually an ACPI_NAMESPACE_NODE *) can appear in some contexts,
|
||||
* such as on apObjStack, where a pointer to an ACPI_OPERAND_OBJECT can also
|
||||
@ -335,11 +357,11 @@
|
||||
|
||||
#else
|
||||
|
||||
#define REPORT_INFO(fp) {_ReportInfo("",__LINE__,_COMPONENT); \
|
||||
#define REPORT_INFO(fp) {_ReportInfo("ACPI",__LINE__,_COMPONENT); \
|
||||
DebugPrintRaw PARAM_LIST(fp);}
|
||||
#define REPORT_ERROR(fp) {_ReportError("",__LINE__,_COMPONENT); \
|
||||
#define REPORT_ERROR(fp) {_ReportError("ACPI",__LINE__,_COMPONENT); \
|
||||
DebugPrintRaw PARAM_LIST(fp);}
|
||||
#define REPORT_WARNING(fp) {_ReportWarning("",__LINE__,_COMPONENT); \
|
||||
#define REPORT_WARNING(fp) {_ReportWarning("ACPI",__LINE__,_COMPONENT); \
|
||||
DebugPrintRaw PARAM_LIST(fp);}
|
||||
|
||||
#endif
|
||||
@ -394,7 +416,7 @@
|
||||
|
||||
/* Conditional execution */
|
||||
|
||||
#define DEBUG_EXEC(a) a;
|
||||
#define DEBUG_EXEC(a) a
|
||||
#define NORMAL_EXEC(a)
|
||||
|
||||
#define DEBUG_DEFINE(a) a;
|
||||
@ -499,7 +521,7 @@
|
||||
* DEBUG_PRINT stuff (set by ACPI_DEBUG) is on, or not.
|
||||
*/
|
||||
#ifdef ENABLE_DEBUGGER
|
||||
#define DEBUGGER_EXEC(a) a;
|
||||
#define DEBUGGER_EXEC(a) a
|
||||
#else
|
||||
#define DEBUGGER_EXEC(a)
|
||||
#endif
|
||||
@ -533,4 +555,5 @@
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* ACMACROS_H */
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: acmsvc.h - VC specific defines, etc.
|
||||
* $Revision: 1 $
|
||||
* $Revision: 2 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -125,5 +125,8 @@
|
||||
/* warn C4127: conditional expression is constant */
|
||||
#pragma warning(disable:4127)
|
||||
|
||||
/* warn C4706: assignment within conditional expression */
|
||||
#pragma warning(disable:4706)
|
||||
|
||||
|
||||
#endif /* __ACMSVC_H__ */
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: acnamesp.h - Namespace subcomponent prototypes and defines
|
||||
* $Revision: 97 $
|
||||
* $Revision: 98 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -446,10 +446,6 @@ AcpiNsSearchNode (
|
||||
OBJECT_TYPE_INTERNAL Type,
|
||||
ACPI_NAMESPACE_NODE **RetNode);
|
||||
|
||||
ACPI_NAMESPACE_NODE *
|
||||
AcpiNsCreateNode (
|
||||
UINT32 AcpiName);
|
||||
|
||||
void
|
||||
AcpiNsInstallNode (
|
||||
ACPI_WALK_STATE *WalkState,
|
||||
|
@ -2,7 +2,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: acobject.h - Definition of ACPI_OPERAND_OBJECT (Internal object only)
|
||||
* $Revision: 74 $
|
||||
* $Revision: 75 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -310,7 +310,7 @@ typedef struct /* REGION */
|
||||
|
||||
UINT8 SpaceId;
|
||||
UINT32 Length;
|
||||
ACPI_INTEGER Address;
|
||||
ACPI_PHYSICAL_ADDRESS Address;
|
||||
union acpi_operand_obj *Extra; /* Pointer to executable AML (in region definition) */
|
||||
|
||||
union acpi_operand_obj *AddrHandler; /* Handler for system notifies */
|
||||
|
@ -203,7 +203,7 @@ AcpiOsFree (
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiOsMapMemory (
|
||||
void *PhysicalAddress,
|
||||
ACPI_PHYSICAL_ADDRESS PhysicalAddress,
|
||||
UINT32 Length,
|
||||
void **LogicalAddress);
|
||||
|
||||
@ -286,30 +286,29 @@ AcpiOsOut32 (
|
||||
|
||||
UINT8
|
||||
AcpiOsMemIn8 (
|
||||
ACPI_MEM_ADDRESS InAddr);
|
||||
|
||||
ACPI_PHYSICAL_ADDRESS InAddr);
|
||||
|
||||
UINT16
|
||||
AcpiOsMemIn16 (
|
||||
ACPI_MEM_ADDRESS InAddr);
|
||||
ACPI_PHYSICAL_ADDRESS InAddr);
|
||||
|
||||
UINT32
|
||||
AcpiOsMemIn32 (
|
||||
ACPI_MEM_ADDRESS InAddr);
|
||||
ACPI_PHYSICAL_ADDRESS InAddr);
|
||||
|
||||
void
|
||||
AcpiOsMemOut8 (
|
||||
ACPI_MEM_ADDRESS OutAddr,
|
||||
ACPI_PHYSICAL_ADDRESS OutAddr,
|
||||
UINT8 Value);
|
||||
|
||||
void
|
||||
AcpiOsMemOut16 (
|
||||
ACPI_MEM_ADDRESS OutAddr,
|
||||
ACPI_PHYSICAL_ADDRESS OutAddr,
|
||||
UINT16 Value);
|
||||
|
||||
void
|
||||
AcpiOsMemOut32 (
|
||||
ACPI_MEM_ADDRESS OutAddr,
|
||||
ACPI_PHYSICAL_ADDRESS OutAddr,
|
||||
UINT32 Value);
|
||||
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: actables.h - ACPI table management
|
||||
* $Revision: 22 $
|
||||
* $Revision: 27 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -128,6 +128,23 @@ AcpiTbHandleToObject (
|
||||
UINT16 TableId,
|
||||
ACPI_TABLE_DESC **TableDesc);
|
||||
|
||||
/*
|
||||
* tbconvrt - Table conversion routines
|
||||
*/
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiTbConvertToXsdt (
|
||||
ACPI_TABLE_DESC *TableInfo,
|
||||
UINT32 *NumberOfTables);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiTbConvertTableFadt (
|
||||
void);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiTbBuildCommonFacs (
|
||||
ACPI_TABLE_DESC *TableInfo);
|
||||
|
||||
|
||||
/*
|
||||
* tbget - Table "get" routines
|
||||
@ -141,13 +158,13 @@ AcpiTbGetTablePtr (
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiTbGetTable (
|
||||
void *PhysicalAddress,
|
||||
ACPI_PHYSICAL_ADDRESS PhysicalAddress,
|
||||
ACPI_TABLE_HEADER *BufferPtr,
|
||||
ACPI_TABLE_DESC *TableInfo);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiTbVerifyRsdp (
|
||||
void *RSDP_PhysicalAddress);
|
||||
ACPI_PHYSICAL_ADDRESS RSDP_PhysicalAddress);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiTbGetTableFacs (
|
||||
@ -238,7 +255,7 @@ AcpiTbSystemTablePointer (
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiTbMapAcpiTable (
|
||||
void *PhysicalAddress,
|
||||
ACPI_PHYSICAL_ADDRESS PhysicalAddress,
|
||||
UINT32 *Size,
|
||||
void **LogicalAddress);
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: actbl.h - Table data structures defined in ACPI specification
|
||||
* $Revision: 35 $
|
||||
* $Revision: 43 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -122,13 +122,15 @@
|
||||
* Values for description table header signatures
|
||||
*/
|
||||
|
||||
#define RSDP_NAME "RSDP"
|
||||
#define RSDP_SIG "RSD PTR " /* RSDT Pointer signature */
|
||||
#define APIC_SIG "APIC" /* Multiple APIC Description Table */
|
||||
#define DSDT_SIG "DSDT" /* Differentiated System Description Table */
|
||||
#define FACP_SIG "FACP" /* Fixed ACPI Description Table */
|
||||
#define FADT_SIG "FACP" /* Fixed ACPI Description Table */
|
||||
#define FACS_SIG "FACS" /* Firmware ACPI Control Structure */
|
||||
#define PSDT_SIG "PSDT" /* Persistent System Description Table */
|
||||
#define RSDT_SIG "RSDT" /* Root System Description Table */
|
||||
#define XSDT_SIG "XSDT" /* Extended System Description Table */
|
||||
#define SSDT_SIG "SSDT" /* Secondary System Description Table */
|
||||
#define SBST_SIG "SBST" /* Smart Battery Specification Table */
|
||||
#define SPIC_SIG "SPIC" /* iosapic table */
|
||||
@ -148,6 +150,18 @@
|
||||
#define APIC_IO 1
|
||||
|
||||
|
||||
/*
|
||||
* Common table types. The base code can remain
|
||||
* constant if the underlying tables are changed
|
||||
*/
|
||||
#define RSDT_DESCRIPTOR RSDT_DESCRIPTOR_REV2
|
||||
#define XSDT_DESCRIPTOR XSDT_DESCRIPTOR_REV2
|
||||
#define FACS_DESCRIPTOR FACS_DESCRIPTOR_REV2
|
||||
#define FADT_DESCRIPTOR FADT_DESCRIPTOR_REV2
|
||||
|
||||
|
||||
#pragma pack(1)
|
||||
|
||||
/*
|
||||
* Architecture-independent tables
|
||||
* The architecture dependent tables are in separate files
|
||||
@ -158,10 +172,14 @@ typedef struct /* Root System Descriptor Pointer */
|
||||
NATIVE_CHAR Signature [8]; /* contains "RSD PTR " */
|
||||
UINT8 Checksum; /* to make sum of struct == 0 */
|
||||
NATIVE_CHAR OemId [6]; /* OEM identification */
|
||||
UINT8 Reserved; /* reserved - must be zero */
|
||||
UINT32 RsdtPhysicalAddress; /* physical address of RSDT */
|
||||
UINT8 Revision; /* Must be 0 for 1.0, 2 for 2.0 */
|
||||
UINT32 RsdtPhysicalAddress; /* 32-bit physical address of RSDT */
|
||||
UINT32 Length; /* XSDT Length in bytes including hdr */
|
||||
UINT64 XsdtPhysicalAddress; /* 64-bit physical address of XSDT */
|
||||
UINT8 ExtendedChecksum; /* Checksum of entire table */
|
||||
NATIVE_CHAR Reserved [3]; /* reserved field must be 0 */
|
||||
|
||||
} ROOT_SYSTEM_DESCRIPTOR_POINTER;
|
||||
} RSDP_DESCRIPTOR;
|
||||
|
||||
|
||||
typedef struct /* ACPI common table header */
|
||||
@ -180,6 +198,15 @@ typedef struct /* ACPI common table header */
|
||||
} ACPI_TABLE_HEADER;
|
||||
|
||||
|
||||
typedef struct /* Common FACS for internal use */
|
||||
{
|
||||
UINT32 *GlobalLock;
|
||||
UINT64 *FirmwareWakingVector;
|
||||
UINT8 VectorWidth;
|
||||
|
||||
} ACPI_COMMON_FACS;
|
||||
|
||||
|
||||
typedef struct /* APIC Table */
|
||||
{
|
||||
ACPI_TABLE_HEADER header; /* table header */
|
||||
@ -238,6 +265,9 @@ typedef struct /* Smart Battery Description Table */
|
||||
} SMART_BATTERY_DESCRIPTION_TABLE;
|
||||
|
||||
|
||||
#pragma pack()
|
||||
|
||||
|
||||
/*
|
||||
* ACPI Table information. We save the table address, length,
|
||||
* and type of memory allocation (mapped or allocated) for each
|
||||
@ -267,16 +297,12 @@ typedef struct _AcpiTableSupport
|
||||
|
||||
} ACPI_TABLE_SUPPORT;
|
||||
|
||||
|
||||
/*
|
||||
* Get the architecture-specific tables
|
||||
*/
|
||||
|
||||
#ifdef IA64
|
||||
#include "actbl64.h"
|
||||
#else
|
||||
#include "actbl32.h"
|
||||
#endif
|
||||
|
||||
#include "actbl1.h" /* Acpi 1.0 table defintions */
|
||||
#include "actbl71.h" /* Acpi 0.71 IA-64 Extension table defintions */
|
||||
#include "actbl2.h" /* Acpi 2.0 table definitions */
|
||||
|
||||
#endif /* __ACTBL_H__ */
|
||||
|
214
sys/contrib/dev/acpica/Subsystem/Include/actbl1.h
Normal file
214
sys/contrib/dev/acpica/Subsystem/Include/actbl1.h
Normal file
@ -0,0 +1,214 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: actbl1.h - ACPI 1.0 tables
|
||||
* $Revision: 15 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* 1. Copyright Notice
|
||||
*
|
||||
* Some or all of this work - Copyright (c) 1999, Intel Corp. All rights
|
||||
* reserved.
|
||||
*
|
||||
* 2. License
|
||||
*
|
||||
* 2.1. This is your license from Intel Corp. under its intellectual property
|
||||
* rights. You may have additional license terms from the party that provided
|
||||
* you this software, covering your right to use that party's intellectual
|
||||
* property rights.
|
||||
*
|
||||
* 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
|
||||
* copy of the source code appearing in this file ("Covered Code") an
|
||||
* irrevocable, perpetual, worldwide license under Intel's copyrights in the
|
||||
* base code distributed originally by Intel ("Original Intel Code") to copy,
|
||||
* make derivatives, distribute, use and display any portion of the Covered
|
||||
* Code in any form, with the right to sublicense such rights; and
|
||||
*
|
||||
* 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
|
||||
* license (with the right to sublicense), under only those claims of Intel
|
||||
* patents that are infringed by the Original Intel Code, to make, use, sell,
|
||||
* offer to sell, and import the Covered Code and derivative works thereof
|
||||
* solely to the minimum extent necessary to exercise the above copyright
|
||||
* license, and in no event shall the patent license extend to any additions
|
||||
* to or modifications of the Original Intel Code. No other license or right
|
||||
* is granted directly or by implication, estoppel or otherwise;
|
||||
*
|
||||
* The above copyright and patent license is granted only if the following
|
||||
* conditions are met:
|
||||
*
|
||||
* 3. Conditions
|
||||
*
|
||||
* 3.1. Redistribution of Source with Rights to Further Distribute Source.
|
||||
* Redistribution of source code of any substantial portion of the Covered
|
||||
* Code or modification with rights to further distribute source must include
|
||||
* the above Copyright Notice, the above License, this list of Conditions,
|
||||
* and the following Disclaimer and Export Compliance provision. In addition,
|
||||
* Licensee must cause all Covered Code to which Licensee contributes to
|
||||
* contain a file documenting the changes Licensee made to create that Covered
|
||||
* Code and the date of any change. Licensee must include in that file the
|
||||
* documentation of any changes made by any predecessor Licensee. Licensee
|
||||
* must include a prominent statement that the modification is derived,
|
||||
* directly or indirectly, from Original Intel Code.
|
||||
*
|
||||
* 3.2. Redistribution of Source with no Rights to Further Distribute Source.
|
||||
* Redistribution of source code of any substantial portion of the Covered
|
||||
* Code or modification without rights to further distribute source must
|
||||
* include the following Disclaimer and Export Compliance provision in the
|
||||
* documentation and/or other materials provided with distribution. In
|
||||
* addition, Licensee may not authorize further sublicense of source of any
|
||||
* portion of the Covered Code, and must include terms to the effect that the
|
||||
* license from Licensee to its licensee is limited to the intellectual
|
||||
* property embodied in the software Licensee provides to its licensee, and
|
||||
* not to intellectual property embodied in modifications its licensee may
|
||||
* make.
|
||||
*
|
||||
* 3.3. Redistribution of Executable. Redistribution in executable form of any
|
||||
* substantial portion of the Covered Code or modification must reproduce the
|
||||
* above Copyright Notice, and the following Disclaimer and Export Compliance
|
||||
* provision in the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* 3.4. Intel retains all right, title, and interest in and to the Original
|
||||
* Intel Code.
|
||||
*
|
||||
* 3.5. Neither the name Intel nor any other trademark owned or controlled by
|
||||
* Intel shall be used in advertising or otherwise to promote the sale, use or
|
||||
* other dealings in products derived from or relating to the Covered Code
|
||||
* without prior written authorization from Intel.
|
||||
*
|
||||
* 4. Disclaimer and Export Compliance
|
||||
*
|
||||
* 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
|
||||
* HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
|
||||
* IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
|
||||
* INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
|
||||
* UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
|
||||
* PARTICULAR PURPOSE.
|
||||
*
|
||||
* 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
|
||||
* OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
|
||||
* COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
|
||||
* SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
|
||||
* CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
|
||||
* HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
|
||||
* SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
|
||||
* LIMITED REMEDY.
|
||||
*
|
||||
* 4.3. Licensee shall not export, either directly or indirectly, any of this
|
||||
* software or system incorporating such software without first obtaining any
|
||||
* required license or other approval from the U. S. Department of Commerce or
|
||||
* any other agency or department of the United States Government. In the
|
||||
* event Licensee exports any such software from the United States or
|
||||
* re-exports any such software from a foreign destination, Licensee shall
|
||||
* ensure that the distribution and export/re-export of the software is in
|
||||
* compliance with all laws, regulations, orders, or other restrictions of the
|
||||
* U.S. Export Administration Regulations. Licensee agrees that neither it nor
|
||||
* any of its subsidiaries will export/re-export any technical data, process,
|
||||
* software, or service, directly or indirectly, to any country for which the
|
||||
* United States government or any agency thereof requires an export license,
|
||||
* other governmental approval, or letter of assurance, without first obtaining
|
||||
* such license, approval or letter.
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
#ifndef __ACTBL1_H__
|
||||
#define __ACTBL1_H__
|
||||
|
||||
#pragma pack(1)
|
||||
|
||||
/*************************************/
|
||||
/* ACPI Specification Rev 1.0 for */
|
||||
/* the Root System Description Table */
|
||||
/*************************************/
|
||||
typedef struct
|
||||
{
|
||||
ACPI_TABLE_HEADER header; /* Table header */
|
||||
UINT32 TableOffsetEntry [1]; /* Array of pointers to other */
|
||||
/* ACPI tables */
|
||||
} RSDT_DESCRIPTOR_REV1;
|
||||
|
||||
|
||||
/***************************************/
|
||||
/* ACPI Specification Rev 1.0 for */
|
||||
/* the Firmware ACPI Control Structure */
|
||||
/***************************************/
|
||||
typedef struct
|
||||
{
|
||||
NATIVE_CHAR Signature[4]; /* signature "FACS" */
|
||||
UINT32 Length; /* length of structure, in bytes */
|
||||
UINT32 HardwareSignature; /* hardware configuration signature */
|
||||
UINT32 FirmwareWakingVector; /* ACPI OS waking vector */
|
||||
UINT32 GlobalLock; /* Global Lock */
|
||||
UINT32_BIT S4Bios_f : 1; /* Indicates if S4BIOS support is present */
|
||||
UINT32_BIT Reserved1 : 31; /* must be 0 */
|
||||
UINT8 Resverved3 [40]; /* reserved - must be zero */
|
||||
|
||||
} FACS_DESCRIPTOR_REV1;
|
||||
|
||||
|
||||
/************************************/
|
||||
/* ACPI Specification Rev 1.0 for */
|
||||
/* the Fixed ACPI Description Table */
|
||||
/************************************/
|
||||
typedef struct
|
||||
{
|
||||
ACPI_TABLE_HEADER header; /* table header */
|
||||
UINT32 FirmwareCtrl; /* Physical address of FACS */
|
||||
UINT32 Dsdt; /* Physical address of DSDT */
|
||||
UINT8 Model; /* System Interrupt Model */
|
||||
UINT8 Reserved1; /* reserved */
|
||||
UINT16 SciInt; /* System vector of SCI interrupt */
|
||||
UINT32 SmiCmd; /* Port address of SMI command port */
|
||||
UINT8 AcpiEnable; /* value to write to smi_cmd to enable ACPI */
|
||||
UINT8 AcpiDisable; /* value to write to smi_cmd to disable ACPI */
|
||||
UINT8 S4BiosReq; /* Value to write to SMI CMD to enter S4BIOS state */
|
||||
UINT8 Reserved2; /* reserved - must be zero */
|
||||
UINT32 Pm1aEvtBlk; /* Port address of Power Mgt 1a AcpiEvent Reg Blk */
|
||||
UINT32 Pm1bEvtBlk; /* Port address of Power Mgt 1b AcpiEvent Reg Blk */
|
||||
UINT32 Pm1aCntBlk; /* Port address of Power Mgt 1a Control Reg Blk */
|
||||
UINT32 Pm1bCntBlk; /* Port address of Power Mgt 1b Control Reg Blk */
|
||||
UINT32 Pm2CntBlk; /* Port address of Power Mgt 2 Control Reg Blk */
|
||||
UINT32 PmTmrBlk; /* Port address of Power Mgt Timer Ctrl Reg Blk */
|
||||
UINT32 Gpe0Blk; /* Port addr of General Purpose AcpiEvent 0 Reg Blk */
|
||||
UINT32 Gpe1Blk; /* Port addr of General Purpose AcpiEvent 1 Reg Blk */
|
||||
UINT8 Pm1EvtLen; /* Byte Length of ports at pm1X_evt_blk */
|
||||
UINT8 Pm1CntLen; /* Byte Length of ports at pm1X_cnt_blk */
|
||||
UINT8 Pm2CntLen; /* Byte Length of ports at pm2_cnt_blk */
|
||||
UINT8 PmTmLen; /* Byte Length of ports at pm_tm_blk */
|
||||
UINT8 Gpe0BlkLen; /* Byte Length of ports at gpe0_blk */
|
||||
UINT8 Gpe1BlkLen; /* Byte Length of ports at gpe1_blk */
|
||||
UINT8 Gpe1Base; /* offset in gpe model where gpe1 events start */
|
||||
UINT8 Reserved3; /* reserved */
|
||||
UINT16 Plvl2Lat; /* worst case HW latency to enter/exit C2 state */
|
||||
UINT16 Plvl3Lat; /* worst case HW latency to enter/exit C3 state */
|
||||
UINT16 FlushSize; /* Size of area read to flush caches */
|
||||
UINT16 FlushStride; /* Stride used in flushing caches */
|
||||
UINT8 DutyOffset; /* bit location of duty cycle field in p_cnt reg */
|
||||
UINT8 DutyWidth; /* bit width of duty cycle field in p_cnt reg */
|
||||
UINT8 DayAlrm; /* index to day-of-month alarm in RTC CMOS RAM */
|
||||
UINT8 MonAlrm; /* index to month-of-year alarm in RTC CMOS RAM */
|
||||
UINT8 Century; /* index to century in RTC CMOS RAM */
|
||||
UINT8 Reserved4; /* reserved */
|
||||
UINT8 Reserved4a; /* reserved */
|
||||
UINT8 Reserved4b; /* reserved */
|
||||
UINT32_BIT WbInvd : 1; /* wbinvd instruction works properly */
|
||||
UINT32_BIT WbInvdFlush : 1; /* wbinvd flushes but does not invalidate */
|
||||
UINT32_BIT ProcC1 : 1; /* all processors support C1 state */
|
||||
UINT32_BIT Plvl2Up : 1; /* C2 state works on MP system */
|
||||
UINT32_BIT PwrButton : 1; /* Power button is handled as a generic feature */
|
||||
UINT32_BIT SleepButton : 1; /* Sleep button is handled as a generic feature, or not present */
|
||||
UINT32_BIT FixedRTC : 1; /* RTC wakeup stat not in fixed register space */
|
||||
UINT32_BIT Rtcs4 : 1; /* RTC wakeup stat not possible from S4 */
|
||||
UINT32_BIT TmrValExt : 1; /* tmr_val is 32 bits */
|
||||
UINT32_BIT Reserved5 : 23; /* reserved - must be zero */
|
||||
|
||||
} FADT_DESCRIPTOR_REV1;
|
||||
|
||||
#pragma pack()
|
||||
|
||||
#endif /* __ACTBL1_H__ */
|
||||
|
||||
|
280
sys/contrib/dev/acpica/Subsystem/Include/actbl2.h
Normal file
280
sys/contrib/dev/acpica/Subsystem/Include/actbl2.h
Normal file
@ -0,0 +1,280 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: actbl2.h - ACPI Specification Revision 2.0 Tables
|
||||
* $Revision: 19 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* 1. Copyright Notice
|
||||
*
|
||||
* Some or all of this work - Copyright (c) 1999, Intel Corp. All rights
|
||||
* reserved.
|
||||
*
|
||||
* 2. License
|
||||
*
|
||||
* 2.1. This is your license from Intel Corp. under its intellectual property
|
||||
* rights. You may have additional license terms from the party that provided
|
||||
* you this software, covering your right to use that party's intellectual
|
||||
* property rights.
|
||||
*
|
||||
* 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
|
||||
* copy of the source code appearing in this file ("Covered Code") an
|
||||
* irrevocable, perpetual, worldwide license under Intel's copyrights in the
|
||||
* base code distributed originally by Intel ("Original Intel Code") to copy,
|
||||
* make derivatives, distribute, use and display any portion of the Covered
|
||||
* Code in any form, with the right to sublicense such rights; and
|
||||
*
|
||||
* 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
|
||||
* license (with the right to sublicense), under only those claims of Intel
|
||||
* patents that are infringed by the Original Intel Code, to make, use, sell,
|
||||
* offer to sell, and import the Covered Code and derivative works thereof
|
||||
* solely to the minimum extent necessary to exercise the above copyright
|
||||
* license, and in no event shall the patent license extend to any additions
|
||||
* to or modifications of the Original Intel Code. No other license or right
|
||||
* is granted directly or by implication, estoppel or otherwise;
|
||||
*
|
||||
* The above copyright and patent license is granted only if the following
|
||||
* conditions are met:
|
||||
*
|
||||
* 3. Conditions
|
||||
*
|
||||
* 3.1. Redistribution of Source with Rights to Further Distribute Source.
|
||||
* Redistribution of source code of any substantial portion of the Covered
|
||||
* Code or modification with rights to further distribute source must include
|
||||
* the above Copyright Notice, the above License, this list of Conditions,
|
||||
* and the following Disclaimer and Export Compliance provision. In addition,
|
||||
* Licensee must cause all Covered Code to which Licensee contributes to
|
||||
* contain a file documenting the changes Licensee made to create that Covered
|
||||
* Code and the date of any change. Licensee must include in that file the
|
||||
* documentation of any changes made by any predecessor Licensee. Licensee
|
||||
* must include a prominent statement that the modification is derived,
|
||||
* directly or indirectly, from Original Intel Code.
|
||||
*
|
||||
* 3.2. Redistribution of Source with no Rights to Further Distribute Source.
|
||||
* Redistribution of source code of any substantial portion of the Covered
|
||||
* Code or modification without rights to further distribute source must
|
||||
* include the following Disclaimer and Export Compliance provision in the
|
||||
* documentation and/or other materials provided with distribution. In
|
||||
* addition, Licensee may not authorize further sublicense of source of any
|
||||
* portion of the Covered Code, and must include terms to the effect that the
|
||||
* license from Licensee to its licensee is limited to the intellectual
|
||||
* property embodied in the software Licensee provides to its licensee, and
|
||||
* not to intellectual property embodied in modifications its licensee may
|
||||
* make.
|
||||
*
|
||||
* 3.3. Redistribution of Executable. Redistribution in executable form of any
|
||||
* substantial portion of the Covered Code or modification must reproduce the
|
||||
* above Copyright Notice, and the following Disclaimer and Export Compliance
|
||||
* provision in the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* 3.4. Intel retains all right, title, and interest in and to the Original
|
||||
* Intel Code.
|
||||
*
|
||||
* 3.5. Neither the name Intel nor any other trademark owned or controlled by
|
||||
* Intel shall be used in advertising or otherwise to promote the sale, use or
|
||||
* other dealings in products derived from or relating to the Covered Code
|
||||
* without prior written authorization from Intel.
|
||||
*
|
||||
* 4. Disclaimer and Export Compliance
|
||||
*
|
||||
* 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
|
||||
* HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
|
||||
* IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
|
||||
* INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
|
||||
* UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
|
||||
* PARTICULAR PURPOSE.
|
||||
*
|
||||
* 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
|
||||
* OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
|
||||
* COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
|
||||
* SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
|
||||
* CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
|
||||
* HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
|
||||
* SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
|
||||
* LIMITED REMEDY.
|
||||
*
|
||||
* 4.3. Licensee shall not export, either directly or indirectly, any of this
|
||||
* software or system incorporating such software without first obtaining any
|
||||
* required license or other approval from the U. S. Department of Commerce or
|
||||
* any other agency or department of the United States Government. In the
|
||||
* event Licensee exports any such software from the United States or
|
||||
* re-exports any such software from a foreign destination, Licensee shall
|
||||
* ensure that the distribution and export/re-export of the software is in
|
||||
* compliance with all laws, regulations, orders, or other restrictions of the
|
||||
* U.S. Export Administration Regulations. Licensee agrees that neither it nor
|
||||
* any of its subsidiaries will export/re-export any technical data, process,
|
||||
* software, or service, directly or indirectly, to any country for which the
|
||||
* United States government or any agency thereof requires an export license,
|
||||
* other governmental approval, or letter of assurance, without first obtaining
|
||||
* such license, approval or letter.
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
#ifndef __ACTBL2_H__
|
||||
#define __ACTBL2_H__
|
||||
|
||||
/**************************************/
|
||||
/* Prefered Power Management Profiles */
|
||||
/**************************************/
|
||||
#define PM_UNSPECIFIED 0
|
||||
#define PM_DESKTOP 1
|
||||
#define PM_MOBILE 2
|
||||
#define PM_WORKSTATION 3
|
||||
#define PM_ENTERPRISE_SERVER 4
|
||||
#define PM_SOHO_SERVER 5
|
||||
#define PM_APPLIANCE_PC 6
|
||||
|
||||
/*********************************************/
|
||||
/* ACPI Boot Arch Flags, See spec Table 5-10 */
|
||||
/*********************************************/
|
||||
#define BAF_LEGACY_DEVICES 0x0001
|
||||
#define BAF_8042_KEYBOARD_CONTROLLER 0x0002
|
||||
|
||||
#define FADT2_REVISION_ID 3
|
||||
|
||||
#pragma pack(1)
|
||||
|
||||
/*************************************/
|
||||
/* ACPI Specification Rev 2.0 for */
|
||||
/* the Root System Description Table */
|
||||
/*************************************/
|
||||
typedef struct
|
||||
{
|
||||
ACPI_TABLE_HEADER header; /* Table header */
|
||||
UINT32 TableOffsetEntry [1]; /* Array of pointers to */
|
||||
/* other tables' headers */
|
||||
} RSDT_DESCRIPTOR_REV2;
|
||||
|
||||
|
||||
/********************************************/
|
||||
/* ACPI Specification Rev 2.0 for the */
|
||||
/* Extended System Description Table (XSDT) */
|
||||
/********************************************/
|
||||
typedef struct
|
||||
{
|
||||
ACPI_TABLE_HEADER Header; /* Table header */
|
||||
UINT64 TableOffsetEntry [1]; /* Array of pointers to */
|
||||
/* other tables' headers */
|
||||
} XSDT_DESCRIPTOR_REV2;
|
||||
|
||||
/***************************************/
|
||||
/* ACPI Specification Rev 2.0 for */
|
||||
/* the Firmware ACPI Control Structure */
|
||||
/***************************************/
|
||||
typedef struct
|
||||
{
|
||||
NATIVE_CHAR Signature[4]; /* signature "FACS" */
|
||||
UINT32 Length; /* length of structure, in bytes */
|
||||
UINT32 HardwareSignature; /* hardware configuration signature */
|
||||
UINT32 FirmwareWakingVector; /* 32bit physical address of the Firmware Waking Vector. */
|
||||
UINT32 GlobalLock; /* Global Lock used to synchronize access to shared hardware resources */
|
||||
UINT32_BIT S4Bios_f : 1; /* Indicates if S4BIOS support is present */
|
||||
UINT32_BIT Reserved1 : 31; /* must be 0 */
|
||||
UINT64 XFirmwareWakingVector; /* 64bit physical address of the Firmware Waking Vector. */
|
||||
UINT8 Version; /* Version of this table */
|
||||
UINT8 Reserved3 [31]; /* reserved - must be zero */
|
||||
|
||||
} FACS_DESCRIPTOR_REV2;
|
||||
|
||||
|
||||
/***************************************/
|
||||
/* ACPI Specification Rev 2.0 for */
|
||||
/* the Generic Address Structure (GAS) */
|
||||
/***************************************/
|
||||
typedef struct
|
||||
{
|
||||
UINT8 AddressSpaceId; /* Address space where struct or register exists. */
|
||||
UINT8 RegisterBitWidth; /* Size in bits of given register */
|
||||
UINT8 RegisterBitOffset; /* Bit offset within the register */
|
||||
UINT8 Reserved; /* Must be 0 */
|
||||
UINT64 Address; /* 64-bit address of struct or register */
|
||||
|
||||
} ACPI_GAS;
|
||||
|
||||
|
||||
/************************************/
|
||||
/* ACPI Specification Rev 2.0 for */
|
||||
/* the Fixed ACPI Description Table */
|
||||
/************************************/
|
||||
typedef struct
|
||||
{
|
||||
ACPI_TABLE_HEADER header; /* table header */
|
||||
UINT32 V1_FirmwareCtrl; /* 32-bit physical address of FACS */
|
||||
UINT32 V1_Dsdt; /* 32-bit physical address of DSDT */
|
||||
UINT8 Reserved1; /* System Interrupt Model isn't used in ACPI 2.0*/
|
||||
UINT8 Prefer_PM_Profile; /* Conveys preferred power management profile to OSPM. */
|
||||
UINT16 SciInt; /* System vector of SCI interrupt */
|
||||
UINT32 SmiCmd; /* Port address of SMI command port */
|
||||
UINT8 AcpiEnable; /* value to write to smi_cmd to enable ACPI */
|
||||
UINT8 AcpiDisable; /* value to write to smi_cmd to disable ACPI */
|
||||
UINT8 S4BiosReq; /* Value to write to SMI CMD to enter S4BIOS state */
|
||||
UINT8 PstateCnt; /* processor performance state control*/
|
||||
UINT32 V1_Pm1aEvtBlk; /* Port address of Power Mgt 1a AcpiEvent Reg Blk */
|
||||
UINT32 V1_Pm1bEvtBlk; /* Port address of Power Mgt 1b AcpiEvent Reg Blk */
|
||||
UINT32 V1_Pm1aCntBlk; /* Port address of Power Mgt 1a Control Reg Blk */
|
||||
UINT32 V1_Pm1bCntBlk; /* Port address of Power Mgt 1b Control Reg Blk */
|
||||
UINT32 V1_Pm2CntBlk; /* Port address of Power Mgt 2 Control Reg Blk */
|
||||
UINT32 V1_PmTmrBlk; /* Port address of Power Mgt Timer Ctrl Reg Blk */
|
||||
UINT32 V1_Gpe0Blk; /* Port addr of General Purpose AcpiEvent 0 Reg Blk */
|
||||
UINT32 V1_Gpe1Blk; /* Port addr of General Purpose AcpiEvent 1 Reg Blk */
|
||||
UINT8 Pm1EvtLen; /* Byte Length of ports at pm1X_evt_blk */
|
||||
UINT8 Pm1CntLen; /* Byte Length of ports at pm1X_cnt_blk */
|
||||
UINT8 Pm2CntLen; /* Byte Length of ports at pm2_cnt_blk */
|
||||
UINT8 PmTmLen; /* Byte Length of ports at pm_tm_blk */
|
||||
UINT8 Gpe0BlkLen; /* Byte Length of ports at gpe0_blk */
|
||||
UINT8 Gpe1BlkLen; /* Byte Length of ports at gpe1_blk */
|
||||
UINT8 Gpe1Base; /* offset in gpe model where gpe1 events start */
|
||||
UINT8 CstCnt; /* Support for the _CST object and C States change notification.*/
|
||||
UINT16 Plvl2Lat; /* worst case HW latency to enter/exit C2 state */
|
||||
UINT16 Plvl3Lat; /* worst case HW latency to enter/exit C3 state */
|
||||
UINT16 FlushSize; /* number of flush strides that need to be read */
|
||||
UINT16 FlushStride; /* Processor's memory cache line width, in bytes */
|
||||
UINT8 DutyOffset; /* Processor’s duty cycle index in processor's P_CNT reg*/
|
||||
UINT8 DutyWidth; /* Processor’s duty cycle value bit width in P_CNT register.*/
|
||||
UINT8 DayAlrm; /* index to day-of-month alarm in RTC CMOS RAM */
|
||||
UINT8 MonAlrm; /* index to month-of-year alarm in RTC CMOS RAM */
|
||||
UINT8 Century; /* index to century in RTC CMOS RAM */
|
||||
UINT16 IapcBootArch; /* IA-PC Boot Architecture Flags. See Table 5-10 for description*/
|
||||
UINT8 Reserved2; /* reserved */
|
||||
UINT32_BIT WbInvd : 1; /* wbinvd instruction works properly */
|
||||
UINT32_BIT WbInvdFlush : 1; /* wbinvd flushes but does not invalidate */
|
||||
UINT32_BIT ProcC1 : 1; /* all processors support C1 state */
|
||||
UINT32_BIT Plvl2Up : 1; /* C2 state works on MP system */
|
||||
UINT32_BIT PwrButton : 1; /* Power button is handled as a generic feature */
|
||||
UINT32_BIT SleepButton : 1; /* Sleep button is handled as a generic feature, or not present */
|
||||
UINT32_BIT FixedRTC : 1; /* RTC wakeup stat not in fixed register space */
|
||||
UINT32_BIT Rtcs4 : 1; /* RTC wakeup stat not possible from S4 */
|
||||
UINT32_BIT TmrValExt : 1; /* tmr_val is 32 bits */
|
||||
UINT32_BIT DockCap : 1; /* Supports Docking */
|
||||
UINT32_BIT ResetRegSup : 1; /* Indicates system supports system reset via the FADT RESET_REG*/
|
||||
UINT32_BIT SealedCase : 1; /* Indicates system has no internal expansion capabilities and case is sealed. */
|
||||
UINT32_BIT Headless : 1; /* Indicates system does not have local video capabilities or local input devices.*/
|
||||
UINT32_BIT CpuSwSleep : 1; /* Indicates to OSPM that a processor native instruction */
|
||||
/* must be executed after writing the SLP_TYPx register. */
|
||||
UINT32_BIT Reserved6 : 18; /* reserved - must be zero */
|
||||
|
||||
ACPI_GAS ResetRegister; /* Reset register address in GAS format */
|
||||
UINT8 ResetValue; /* Value to write to the ResetRegister port to reset the system. */
|
||||
UINT8 Reserved7[3]; /* These three bytes must be zero */
|
||||
UINT64 XFirmwareCtrl; /* 64-bit physical address of FACS */
|
||||
UINT64 XDsdt; /* 64-bit physical address of DSDT */
|
||||
ACPI_GAS XPm1aEvtBlk; /* Extended Power Mgt 1a AcpiEvent Reg Blk address */
|
||||
ACPI_GAS XPm1bEvtBlk; /* Extended Power Mgt 1b AcpiEvent Reg Blk address */
|
||||
ACPI_GAS XPm1aCntBlk; /* Extended Power Mgt 1a Control Reg Blk address */
|
||||
ACPI_GAS XPm1bCntBlk; /* Extended Power Mgt 1b Control Reg Blk address */
|
||||
ACPI_GAS XPm2CntBlk; /* Extended Power Mgt 2 Control Reg Blk address */
|
||||
ACPI_GAS XPmTmrBlk; /* Extended Power Mgt Timer Ctrl Reg Blk address */
|
||||
ACPI_GAS XGpe0Blk; /* Extended General Purpose AcpiEvent 0 Reg Blk address */
|
||||
ACPI_GAS XGpe1Blk; /* Extended General Purpose AcpiEvent 1 Reg Blk address */
|
||||
|
||||
} FADT_DESCRIPTOR_REV2;
|
||||
|
||||
|
||||
#pragma pack()
|
||||
|
||||
#endif /* __ACTBL2_H__ */
|
||||
|
235
sys/contrib/dev/acpica/Subsystem/Include/actbl71.h
Normal file
235
sys/contrib/dev/acpica/Subsystem/Include/actbl71.h
Normal file
@ -0,0 +1,235 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: actbl71.h - IA-64 Extensions to the ACPI Spec Rev. 0.71
|
||||
* This file includes tables specific to this
|
||||
* specification revision.
|
||||
* $Revision: 7 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* 1. Copyright Notice
|
||||
*
|
||||
* Some or all of this work - Copyright (c) 1999, Intel Corp. All rights
|
||||
* reserved.
|
||||
*
|
||||
* 2. License
|
||||
*
|
||||
* 2.1. This is your license from Intel Corp. under its intellectual property
|
||||
* rights. You may have additional license terms from the party that provided
|
||||
* you this software, covering your right to use that party's intellectual
|
||||
* property rights.
|
||||
*
|
||||
* 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
|
||||
* copy of the source code appearing in this file ("Covered Code") an
|
||||
* irrevocable, perpetual, worldwide license under Intel's copyrights in the
|
||||
* base code distributed originally by Intel ("Original Intel Code") to copy,
|
||||
* make derivatives, distribute, use and display any portion of the Covered
|
||||
* Code in any form, with the right to sublicense such rights; and
|
||||
*
|
||||
* 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
|
||||
* license (with the right to sublicense), under only those claims of Intel
|
||||
* patents that are infringed by the Original Intel Code, to make, use, sell,
|
||||
* offer to sell, and import the Covered Code and derivative works thereof
|
||||
* solely to the minimum extent necessary to exercise the above copyright
|
||||
* license, and in no event shall the patent license extend to any additions
|
||||
* to or modifications of the Original Intel Code. No other license or right
|
||||
* is granted directly or by implication, estoppel or otherwise;
|
||||
*
|
||||
* The above copyright and patent license is granted only if the following
|
||||
* conditions are met:
|
||||
*
|
||||
* 3. Conditions
|
||||
*
|
||||
* 3.1. Redistribution of Source with Rights to Further Distribute Source.
|
||||
* Redistribution of source code of any substantial portion of the Covered
|
||||
* Code or modification with rights to further distribute source must include
|
||||
* the above Copyright Notice, the above License, this list of Conditions,
|
||||
* and the following Disclaimer and Export Compliance provision. In addition,
|
||||
* Licensee must cause all Covered Code to which Licensee contributes to
|
||||
* contain a file documenting the changes Licensee made to create that Covered
|
||||
* Code and the date of any change. Licensee must include in that file the
|
||||
* documentation of any changes made by any predecessor Licensee. Licensee
|
||||
* must include a prominent statement that the modification is derived,
|
||||
* directly or indirectly, from Original Intel Code.
|
||||
*
|
||||
* 3.2. Redistribution of Source with no Rights to Further Distribute Source.
|
||||
* Redistribution of source code of any substantial portion of the Covered
|
||||
* Code or modification without rights to further distribute source must
|
||||
* include the following Disclaimer and Export Compliance provision in the
|
||||
* documentation and/or other materials provided with distribution. In
|
||||
* addition, Licensee may not authorize further sublicense of source of any
|
||||
* portion of the Covered Code, and must include terms to the effect that the
|
||||
* license from Licensee to its licensee is limited to the intellectual
|
||||
* property embodied in the software Licensee provides to its licensee, and
|
||||
* not to intellectual property embodied in modifications its licensee may
|
||||
* make.
|
||||
*
|
||||
* 3.3. Redistribution of Executable. Redistribution in executable form of any
|
||||
* substantial portion of the Covered Code or modification must reproduce the
|
||||
* above Copyright Notice, and the following Disclaimer and Export Compliance
|
||||
* provision in the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* 3.4. Intel retains all right, title, and interest in and to the Original
|
||||
* Intel Code.
|
||||
*
|
||||
* 3.5. Neither the name Intel nor any other trademark owned or controlled by
|
||||
* Intel shall be used in advertising or otherwise to promote the sale, use or
|
||||
* other dealings in products derived from or relating to the Covered Code
|
||||
* without prior written authorization from Intel.
|
||||
*
|
||||
* 4. Disclaimer and Export Compliance
|
||||
*
|
||||
* 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
|
||||
* HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
|
||||
* IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
|
||||
* INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
|
||||
* UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
|
||||
* PARTICULAR PURPOSE.
|
||||
*
|
||||
* 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
|
||||
* OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
|
||||
* COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
|
||||
* SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
|
||||
* CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
|
||||
* HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
|
||||
* SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
|
||||
* LIMITED REMEDY.
|
||||
*
|
||||
* 4.3. Licensee shall not export, either directly or indirectly, any of this
|
||||
* software or system incorporating such software without first obtaining any
|
||||
* required license or other approval from the U. S. Department of Commerce or
|
||||
* any other agency or department of the United States Government. In the
|
||||
* event Licensee exports any such software from the United States or
|
||||
* re-exports any such software from a foreign destination, Licensee shall
|
||||
* ensure that the distribution and export/re-export of the software is in
|
||||
* compliance with all laws, regulations, orders, or other restrictions of the
|
||||
* U.S. Export Administration Regulations. Licensee agrees that neither it nor
|
||||
* any of its subsidiaries will export/re-export any technical data, process,
|
||||
* software, or service, directly or indirectly, to any country for which the
|
||||
* United States government or any agency thereof requires an export license,
|
||||
* other governmental approval, or letter of assurance, without first obtaining
|
||||
* such license, approval or letter.
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
#ifndef __ACTBL71_H__
|
||||
#define __ACTBL71_H__
|
||||
|
||||
/* 0.71 FADT AddressSpace data item bitmasks defines */
|
||||
/* If the associated bit is zero then it is in memory space else in io space */
|
||||
#define SMI_CMD_ADDRESS_SPACE 0x01
|
||||
#define PM1_BLK_ADDRESS_SPACE 0x02
|
||||
#define PM2_CNT_BLK_ADDRESS_SPACE 0x04
|
||||
#define PM_TMR_BLK_ADDRESS_SPACE 0x08
|
||||
#define GPE0_BLK_ADDRESS_SPACE 0x10
|
||||
#define GPE1_BLK_ADDRESS_SPACE 0x20
|
||||
|
||||
/* Only for clarity in declarations */
|
||||
typedef UINT64 IO_ADDRESS;
|
||||
|
||||
#pragma pack(1)
|
||||
|
||||
typedef struct /* Root System Descriptor Pointer */
|
||||
{
|
||||
NATIVE_CHAR Signature [8]; /* contains "RSD PTR " */
|
||||
UINT8 Checksum; /* to make sum of struct == 0 */
|
||||
NATIVE_CHAR OemId [6]; /* OEM identification */
|
||||
UINT8 Reserved; /* Must be 0 for 1.0, 2 for 2.0 */
|
||||
UINT64 RsdtPhysicalAddress; /* 64-bit physical address of RSDT */
|
||||
} RSDP_DESCRIPTOR_REV071;
|
||||
|
||||
|
||||
/*****************************************/
|
||||
/* IA64 Extensions to ACPI Spec Rev 0.71 */
|
||||
/* for the Root System Description Table */
|
||||
/*****************************************/
|
||||
typedef struct
|
||||
{
|
||||
ACPI_TABLE_HEADER header; /* Table header */
|
||||
UINT32 ReservedPad; /* IA64 alignment, must be 0 */
|
||||
UINT64 TableOffsetEntry [1]; /* Array of pointers to other */
|
||||
/* tables' headers */
|
||||
} RSDT_DESCRIPTOR_REV071;
|
||||
|
||||
|
||||
/*******************************************/
|
||||
/* IA64 Extensions to ACPI Spec Rev 0.71 */
|
||||
/* for the Firmware ACPI Control Structure */
|
||||
/*******************************************/
|
||||
typedef struct
|
||||
{
|
||||
NATIVE_CHAR Signature[4]; /* signature "FACS" */
|
||||
UINT32 Length; /* length of structure, in bytes */
|
||||
UINT32 HardwareSignature; /* hardware configuration signature */
|
||||
UINT32 Reserved4; /* must be 0 */
|
||||
UINT64 FirmwareWakingVector; /* ACPI OS waking vector */
|
||||
UINT64 GlobalLock; /* Global Lock */
|
||||
UINT32_BIT S4Bios_f : 1; /* Indicates if S4BIOS support is present */
|
||||
UINT32_BIT Reserved1 : 31; /* must be 0 */
|
||||
UINT8 Reserved3 [28]; /* reserved - must be zero */
|
||||
|
||||
} FACS_DESCRIPTOR_REV071;
|
||||
|
||||
|
||||
/******************************************/
|
||||
/* IA64 Extensions to ACPI Spec Rev 0.71 */
|
||||
/* for the Fixed ACPI Description Table */
|
||||
/******************************************/
|
||||
typedef struct
|
||||
{
|
||||
ACPI_TABLE_HEADER header; /* table header */
|
||||
UINT32 ReservedPad; /* IA64 alignment, must be 0 */
|
||||
UINT64 FirmwareCtrl; /* 64-bit Physical address of FACS */
|
||||
UINT64 Dsdt; /* 64-bit Physical address of DSDT */
|
||||
UINT8 Model; /* System Interrupt Model */
|
||||
UINT8 AddressSpace; /* Address Space Bitmask */
|
||||
UINT16 SciInt; /* System vector of SCI interrupt */
|
||||
UINT8 AcpiEnable; /* value to write to smi_cmd to enable ACPI */
|
||||
UINT8 AcpiDisable; /* value to write to smi_cmd to disable ACPI */
|
||||
UINT8 S4BiosReq; /* Value to write to SMI CMD to enter S4BIOS state */
|
||||
UINT8 Reserved2; /* reserved - must be zero */
|
||||
UINT64 SmiCmd; /* Port address of SMI command port */
|
||||
UINT64 Pm1aEvtBlk; /* Port address of Power Mgt 1a AcpiEvent Reg Blk */
|
||||
UINT64 Pm1bEvtBlk; /* Port address of Power Mgt 1b AcpiEvent Reg Blk */
|
||||
UINT64 Pm1aCntBlk; /* Port address of Power Mgt 1a Control Reg Blk */
|
||||
UINT64 Pm1bCntBlk; /* Port address of Power Mgt 1b Control Reg Blk */
|
||||
UINT64 Pm2CntBlk; /* Port address of Power Mgt 2 Control Reg Blk */
|
||||
UINT64 PmTmrBlk; /* Port address of Power Mgt Timer Ctrl Reg Blk */
|
||||
UINT64 Gpe0Blk; /* Port addr of General Purpose AcpiEvent 0 Reg Blk */
|
||||
UINT64 Gpe1Blk; /* Port addr of General Purpose AcpiEvent 1 Reg Blk */
|
||||
UINT8 Pm1EvtLen; /* Byte Length of ports at pm1X_evt_blk */
|
||||
UINT8 Pm1CntLen; /* Byte Length of ports at pm1X_cnt_blk */
|
||||
UINT8 Pm2CntLen; /* Byte Length of ports at pm2_cnt_blk */
|
||||
UINT8 PmTmLen; /* Byte Length of ports at pm_tm_blk */
|
||||
UINT8 Gpe0BlkLen; /* Byte Length of ports at gpe0_blk */
|
||||
UINT8 Gpe1BlkLen; /* Byte Length of ports at gpe1_blk */
|
||||
UINT8 Gpe1Base; /* offset in gpe model where gpe1 events start */
|
||||
UINT8 Reserved3; /* reserved */
|
||||
UINT16 Plvl2Lat; /* worst case HW latency to enter/exit C2 state */
|
||||
UINT16 Plvl3Lat; /* worst case HW latency to enter/exit C3 state */
|
||||
UINT8 DayAlrm; /* index to day-of-month alarm in RTC CMOS RAM */
|
||||
UINT8 MonAlrm; /* index to month-of-year alarm in RTC CMOS RAM */
|
||||
UINT8 Century; /* index to century in RTC CMOS RAM */
|
||||
UINT8 Reserved4; /* reserved */
|
||||
UINT32_BIT FlushCash : 1; /* PAL_FLUSH_CACHE is correctly supported */
|
||||
UINT32_BIT Reserved5 : 1; /* reserved - must be zero */
|
||||
UINT32_BIT ProcC1 : 1; /* all processors support C1 state */
|
||||
UINT32_BIT Plvl2Up : 1; /* C2 state works on MP system */
|
||||
UINT32_BIT PwrButton : 1; /* Power button is handled as a generic feature */
|
||||
UINT32_BIT SleepButton : 1; /* Sleep button is handled as a generic feature, or not present */
|
||||
UINT32_BIT FixedRTC : 1; /* RTC wakeup stat not in fixed register space */
|
||||
UINT32_BIT Rtcs4 : 1; /* RTC wakeup stat not possible from S4 */
|
||||
UINT32_BIT TmrValExt : 1; /* tmr_val is 32 bits */
|
||||
UINT32_BIT DockCap : 1; /* Supports Docking */
|
||||
UINT32_BIT Reserved6 : 22; /* reserved - must be zero */
|
||||
|
||||
} FADT_DESCRIPTOR_REV071;
|
||||
|
||||
#pragma pack()
|
||||
|
||||
#endif /* __ACTBL71_H__ */
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: actypes.h - Common data types for the entire ACPI subsystem
|
||||
* $Revision: 143 $
|
||||
* $Revision: 152 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -158,7 +158,7 @@ typedef INT64 NATIVE_INT;
|
||||
|
||||
typedef NATIVE_UINT ACPI_TBLPTR;
|
||||
typedef UINT64 ACPI_IO_ADDRESS;
|
||||
typedef UINT64 ACPI_MEM_ADDRESS;
|
||||
typedef UINT64 ACPI_PHYSICAL_ADDRESS;
|
||||
|
||||
#define ALIGNED_ADDRESS_BOUNDARY 0x00000008
|
||||
|
||||
@ -182,14 +182,16 @@ typedef INT16 NATIVE_INT;
|
||||
|
||||
typedef UINT32 ACPI_TBLPTR;
|
||||
typedef UINT32 ACPI_IO_ADDRESS;
|
||||
typedef UINT32 ACPI_MEM_ADDRESS;
|
||||
typedef UINT32 ACPI_PHYSICAL_ADDRESS;
|
||||
|
||||
#define ALIGNED_ADDRESS_BOUNDARY 0x00000002
|
||||
#define _HW_ALIGNMENT_SUPPORT
|
||||
|
||||
/* (16-bit only) Force internal integers to be 32, not 64 bits */
|
||||
|
||||
#define ACPI_VERSION_1
|
||||
/*
|
||||
* (16-bit only) internal integers must be 32-bits, so
|
||||
* 64-bit integers cannot be supported
|
||||
*/
|
||||
#define ACPI_NO_INTEGER64_SUPPORT
|
||||
|
||||
|
||||
#else
|
||||
@ -209,11 +211,10 @@ typedef INT32 NATIVE_INT;
|
||||
|
||||
typedef NATIVE_UINT ACPI_TBLPTR;
|
||||
typedef UINT32 ACPI_IO_ADDRESS;
|
||||
typedef UINT32 ACPI_MEM_ADDRESS;
|
||||
typedef UINT64 ACPI_PHYSICAL_ADDRESS;
|
||||
|
||||
#define ALIGNED_ADDRESS_BOUNDARY 0x00000004
|
||||
#define _HW_ALIGNMENT_SUPPORT
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@ -279,19 +280,14 @@ typedef char* ACPI_STRING; /* Null terminated ASCII
|
||||
typedef void* ACPI_HANDLE; /* Actually a ptr to an Node */
|
||||
|
||||
|
||||
/* TBD: TEMP ONLY! */
|
||||
|
||||
#define ACPI_VERSION_1
|
||||
|
||||
/*
|
||||
* Acpi integer width. In ACPI version 1, integers are
|
||||
* 32 bits. In ACPI version 2, integers are 64 bits. Period.
|
||||
* 32 bits. In ACPI version 2, integers are 64 bits.
|
||||
* Note that this pertains to the ACPI integer type only, not
|
||||
* other integers used in the implementation of the ACPI CA
|
||||
* subsystem.
|
||||
*/
|
||||
|
||||
#ifdef ACPI_VERSION_1
|
||||
#ifdef ACPI_NO_INTEGER64_SUPPORT
|
||||
|
||||
/* 32-bit Integers */
|
||||
|
||||
@ -306,6 +302,7 @@ typedef UINT32 ACPI_INTEGER;
|
||||
typedef UINT64 ACPI_INTEGER;
|
||||
#define ACPI_INTEGER_MAX ACPI_UINT64_MAX;
|
||||
#define ACPI_INTEGER_BIT_SIZE 64
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@ -345,17 +342,13 @@ typedef UINT64 ACPI_INTEGER;
|
||||
typedef UINT32 ACPI_TABLE_TYPE;
|
||||
|
||||
#define ACPI_TABLE_RSDP (ACPI_TABLE_TYPE) 0
|
||||
#define ACPI_TABLE_APIC (ACPI_TABLE_TYPE) 1
|
||||
#define ACPI_TABLE_DSDT (ACPI_TABLE_TYPE) 2
|
||||
#define ACPI_TABLE_FACP (ACPI_TABLE_TYPE) 3
|
||||
#define ACPI_TABLE_FACS (ACPI_TABLE_TYPE) 4
|
||||
#define ACPI_TABLE_PSDT (ACPI_TABLE_TYPE) 5
|
||||
#define ACPI_TABLE_RSDT (ACPI_TABLE_TYPE) 6
|
||||
#define ACPI_TABLE_SSDT (ACPI_TABLE_TYPE) 7
|
||||
#define ACPI_TABLE_SBST (ACPI_TABLE_TYPE) 8
|
||||
#define ACPI_TABLE_SPIC (ACPI_TABLE_TYPE) 9
|
||||
#define ACPI_TABLE_BOOT (ACPI_TABLE_TYPE) 10
|
||||
#define ACPI_TABLE_MAX 10
|
||||
#define ACPI_TABLE_DSDT (ACPI_TABLE_TYPE) 1
|
||||
#define ACPI_TABLE_FADT (ACPI_TABLE_TYPE) 2
|
||||
#define ACPI_TABLE_FACS (ACPI_TABLE_TYPE) 3
|
||||
#define ACPI_TABLE_PSDT (ACPI_TABLE_TYPE) 4
|
||||
#define ACPI_TABLE_SSDT (ACPI_TABLE_TYPE) 5
|
||||
#define ACPI_TABLE_XSDT (ACPI_TABLE_TYPE) 6
|
||||
#define ACPI_TABLE_MAX 6
|
||||
#define NUM_ACPI_TABLES (ACPI_TABLE_MAX+1)
|
||||
|
||||
|
||||
@ -408,26 +401,28 @@ typedef UINT8 OBJECT_TYPE_INTERNAL;
|
||||
#define INTERNAL_TYPE_ALIAS 21 /* 0x15 */
|
||||
#define INTERNAL_TYPE_NOTIFY 22 /* 0x16 */
|
||||
#define INTERNAL_TYPE_ADDRESS_HANDLER 23 /* 0x17 */
|
||||
#define INTERNAL_TYPE_RESOURCE 24 /* 0x18 */
|
||||
|
||||
#define INTERNAL_TYPE_NODE_MAX 23
|
||||
|
||||
#define INTERNAL_TYPE_NODE_MAX 24
|
||||
|
||||
/* These are pseudo-types because there are never any namespace nodes with these types */
|
||||
|
||||
#define INTERNAL_TYPE_DEF_FIELD_DEFN 24 /* 0x18 Name, ByteConst, multiple FieldElement */
|
||||
#define INTERNAL_TYPE_BANK_FIELD_DEFN 25 /* 0x19 2 Name,DWordConst,ByteConst,multi FieldElement */
|
||||
#define INTERNAL_TYPE_INDEX_FIELD_DEFN 26 /* 0x1A 2 Name, ByteConst, multiple FieldElement */
|
||||
#define INTERNAL_TYPE_IF 27 /* 0x1B OpCode, multiple Code */
|
||||
#define INTERNAL_TYPE_ELSE 28 /* 0x1C multiple Code */
|
||||
#define INTERNAL_TYPE_WHILE 29 /* 0x1D OpCode, multiple Code */
|
||||
#define INTERNAL_TYPE_SCOPE 30 /* 0x1E Name, multiple Node */
|
||||
#define INTERNAL_TYPE_DEF_ANY 31 /* 0x1F type is Any, suppress search of enclosing scopes */
|
||||
#define INTERNAL_TYPE_METHOD_ARGUMENT 32 /* 0x20 */
|
||||
#define INTERNAL_TYPE_METHOD_LOCAL_VAR 33 /* 0x21 */
|
||||
#define INTERNAL_TYPE_EXTRA 34 /* 0x22 */
|
||||
#define INTERNAL_TYPE_DEF_FIELD_DEFN 25 /* 0x19 Name, ByteConst, multiple FieldElement */
|
||||
#define INTERNAL_TYPE_BANK_FIELD_DEFN 26 /* 0x1A 2 Name,DWordConst,ByteConst,multi FieldElement */
|
||||
#define INTERNAL_TYPE_INDEX_FIELD_DEFN 27 /* 0x1B 2 Name, ByteConst, multiple FieldElement */
|
||||
#define INTERNAL_TYPE_IF 28 /* 0x1C OpCode, multiple Code */
|
||||
#define INTERNAL_TYPE_ELSE 29 /* 0x1D multiple Code */
|
||||
#define INTERNAL_TYPE_WHILE 30 /* 0x1E OpCode, multiple Code */
|
||||
#define INTERNAL_TYPE_SCOPE 31 /* 0x1F Name, multiple Node */
|
||||
#define INTERNAL_TYPE_DEF_ANY 32 /* 0x20 type is Any, suppress search of enclosing scopes */
|
||||
#define INTERNAL_TYPE_METHOD_ARGUMENT 33 /* 0x21 */
|
||||
#define INTERNAL_TYPE_METHOD_LOCAL_VAR 34 /* 0x22 */
|
||||
#define INTERNAL_TYPE_EXTRA 35 /* 0x23 */
|
||||
|
||||
#define INTERNAL_TYPE_MAX 34
|
||||
#define INTERNAL_TYPE_MAX 35
|
||||
|
||||
#define INTERNAL_TYPE_INVALID 35
|
||||
#define INTERNAL_TYPE_INVALID 36
|
||||
#define ACPI_TYPE_NOT_FOUND 0xFF
|
||||
|
||||
/*
|
||||
@ -482,6 +477,7 @@ typedef UINT32 ACPI_EVENT_TYPE;
|
||||
*/
|
||||
typedef UINT32 ACPI_EVENT_STATUS;
|
||||
|
||||
#define ACPI_EVENT_FLAG_DISABLED (ACPI_EVENT_STATUS) 0x00
|
||||
#define ACPI_EVENT_FLAG_ENABLED (ACPI_EVENT_STATUS) 0x01
|
||||
#define ACPI_EVENT_FLAG_SET (ACPI_EVENT_STATUS) 0x02
|
||||
|
||||
@ -696,7 +692,7 @@ void (*NOTIFY_HANDLER) (
|
||||
typedef
|
||||
ACPI_STATUS (*ADDRESS_SPACE_HANDLER) (
|
||||
UINT32 Function,
|
||||
ACPI_INTEGER Address,
|
||||
ACPI_PHYSICAL_ADDRESS Address,
|
||||
UINT32 BitWidth,
|
||||
UINT32 *Value,
|
||||
void *HandlerContext,
|
||||
@ -772,7 +768,7 @@ typedef struct
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT8 *MappedPhysicalAddress;
|
||||
UINT64 MappedPhysicalAddress;
|
||||
UINT8 *MappedLogicalAddress;
|
||||
UINT32 MappedLength;
|
||||
} MEM_HANDLER_CONTEXT;
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: amconfig - Namespace reconfiguration (Load/Unload opcodes)
|
||||
* $Revision: 24 $
|
||||
* $Revision: 25 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -144,7 +144,7 @@
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
static ACPI_STATUS
|
||||
AcpiAmlExecLoadTable (
|
||||
ACPI_OPERAND_OBJECT *RgnDesc,
|
||||
ACPI_HANDLE *DdbHandle)
|
||||
@ -290,7 +290,7 @@ AcpiAmlExecLoadTable (
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
static ACPI_STATUS
|
||||
AcpiAmlExecUnloadTable (
|
||||
ACPI_HANDLE DdbHandle)
|
||||
{
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: amcreate - Named object creation
|
||||
* $Revision: 48 $
|
||||
* $Revision: 50 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -213,16 +213,6 @@ AcpiAmlExecCreateField (
|
||||
ObjDesc->FieldUnit.Node = Node;
|
||||
|
||||
|
||||
/*
|
||||
Status = AcpiNsAttachObject (Node, ObjDesc,
|
||||
(UINT8) ACPI_TYPE_FIELD_UNIT);
|
||||
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
goto Cleanup;
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
* This operation is supposed to cause the destination Name to refer
|
||||
* to the defined FieldUnit -- it must not store the constructed
|
||||
@ -311,328 +301,6 @@ AcpiAmlExecCreateField (
|
||||
}
|
||||
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiAmlExecCreateField_original (
|
||||
UINT16 Opcode,
|
||||
ACPI_WALK_STATE *WalkState)
|
||||
{
|
||||
ACPI_OPERAND_OBJECT *ResDesc = NULL;
|
||||
ACPI_OPERAND_OBJECT *CntDesc = NULL;
|
||||
ACPI_OPERAND_OBJECT *OffDesc = NULL;
|
||||
ACPI_OPERAND_OBJECT *SrcDesc = NULL;
|
||||
ACPI_OPERAND_OBJECT *FieldDesc;
|
||||
ACPI_OPERAND_OBJECT *ObjDesc;
|
||||
OBJECT_TYPE_INTERNAL ResType;
|
||||
ACPI_STATUS Status;
|
||||
UINT32 NumOperands = 3;
|
||||
UINT32 Offset;
|
||||
UINT32 BitOffset;
|
||||
UINT16 BitCount;
|
||||
UINT8 TypeFound;
|
||||
|
||||
|
||||
FUNCTION_TRACE ("AmlExecCreateField");
|
||||
|
||||
|
||||
/* Resolve the operands */
|
||||
|
||||
Status = AcpiAmlResolveOperands (Opcode, WALK_OPERANDS, WalkState);
|
||||
DUMP_OPERANDS (WALK_OPERANDS, IMODE_EXECUTE, AcpiPsGetOpcodeName (Opcode),
|
||||
NumOperands, "after AcpiAmlResolveOperands");
|
||||
|
||||
|
||||
/* Get the operands */
|
||||
|
||||
Status |= AcpiDsObjStackPopObject (&ResDesc, WalkState);
|
||||
if (AML_CREATE_FIELD_OP == Opcode)
|
||||
{
|
||||
NumOperands = 4;
|
||||
Status |= AcpiDsObjStackPopObject (&CntDesc, WalkState);
|
||||
}
|
||||
|
||||
Status |= AcpiDsObjStackPopObject (&OffDesc, WalkState);
|
||||
Status |= AcpiDsObjStackPopObject (&SrcDesc, WalkState);
|
||||
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
/* Invalid parameters on object stack */
|
||||
|
||||
DEBUG_PRINT (ACPI_ERROR,
|
||||
("ExecCreateField/%s: bad operand(s) (0x%X)\n",
|
||||
AcpiPsGetOpcodeName (Opcode), Status));
|
||||
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
|
||||
Offset = (UINT32) OffDesc->Number.Value;
|
||||
|
||||
|
||||
/*
|
||||
* If ResDesc is a Name, it will be a direct name pointer after
|
||||
* AcpiAmlResolveOperands()
|
||||
*/
|
||||
|
||||
if (!VALID_DESCRIPTOR_TYPE (ResDesc, ACPI_DESC_TYPE_NAMED))
|
||||
{
|
||||
DEBUG_PRINT (ACPI_ERROR,
|
||||
("AmlExecCreateField (%s): destination must be a Node\n",
|
||||
AcpiPsGetOpcodeName (Opcode)));
|
||||
|
||||
Status = AE_AML_OPERAND_TYPE;
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Setup the Bit offsets and counts, according to the opcode
|
||||
*/
|
||||
|
||||
switch (Opcode)
|
||||
{
|
||||
|
||||
/* DefCreateBitField */
|
||||
|
||||
case AML_BIT_FIELD_OP:
|
||||
|
||||
/* Offset is in bits, Field is a bit */
|
||||
|
||||
BitOffset = Offset;
|
||||
BitCount = 1;
|
||||
break;
|
||||
|
||||
|
||||
/* DefCreateByteField */
|
||||
|
||||
case AML_BYTE_FIELD_OP:
|
||||
|
||||
/* Offset is in bytes, field is a byte */
|
||||
|
||||
BitOffset = 8 * Offset;
|
||||
BitCount = 8;
|
||||
break;
|
||||
|
||||
|
||||
/* DefCreateWordField */
|
||||
|
||||
case AML_WORD_FIELD_OP:
|
||||
|
||||
/* Offset is in bytes, field is a word */
|
||||
|
||||
BitOffset = 8 * Offset;
|
||||
BitCount = 16;
|
||||
break;
|
||||
|
||||
|
||||
/* DefCreateDWordField */
|
||||
|
||||
case AML_DWORD_FIELD_OP:
|
||||
|
||||
/* Offset is in bytes, field is a dword */
|
||||
|
||||
BitOffset = 8 * Offset;
|
||||
BitCount = 32;
|
||||
break;
|
||||
|
||||
|
||||
/* DefCreateField */
|
||||
|
||||
case AML_CREATE_FIELD_OP:
|
||||
|
||||
/* Offset is in bits, count is in bits */
|
||||
|
||||
BitOffset = Offset;
|
||||
BitCount = (UINT16) CntDesc->Number.Value;
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
DEBUG_PRINT (ACPI_ERROR,
|
||||
("AmlExecCreateField: Internal error - unknown field creation opcode %02x\n",
|
||||
Opcode));
|
||||
Status = AE_AML_BAD_OPCODE;
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Setup field according to the object type
|
||||
*/
|
||||
|
||||
switch (SrcDesc->Common.Type)
|
||||
{
|
||||
|
||||
/* SourceBuff := TermArg=>Buffer */
|
||||
|
||||
case ACPI_TYPE_BUFFER:
|
||||
|
||||
if (BitOffset + (UINT32) BitCount >
|
||||
(8 * (UINT32) SrcDesc->Buffer.Length))
|
||||
{
|
||||
DEBUG_PRINT (ACPI_ERROR,
|
||||
("AmlExecCreateField: Field exceeds Buffer %d > %d\n",
|
||||
BitOffset + (UINT32) BitCount,
|
||||
8 * (UINT32) SrcDesc->Buffer.Length));
|
||||
Status = AE_AML_BUFFER_LIMIT;
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
|
||||
/* Allocate an object for the field */
|
||||
|
||||
FieldDesc = AcpiCmCreateInternalObject (ACPI_TYPE_FIELD_UNIT);
|
||||
if (!FieldDesc)
|
||||
{
|
||||
Status = AE_NO_MEMORY;
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
/* Construct the field object */
|
||||
|
||||
FieldDesc->FieldUnit.Access = (UINT8) ACCESS_ANY_ACC;
|
||||
FieldDesc->FieldUnit.LockRule = (UINT8) GLOCK_NEVER_LOCK;
|
||||
FieldDesc->FieldUnit.UpdateRule = (UINT8) UPDATE_PRESERVE;
|
||||
FieldDesc->FieldUnit.Length = BitCount;
|
||||
FieldDesc->FieldUnit.BitOffset = (UINT8) (BitOffset % 8);
|
||||
FieldDesc->FieldUnit.Offset = DIV_8 (BitOffset);
|
||||
FieldDesc->FieldUnit.Container = SrcDesc;
|
||||
|
||||
/* An additional reference for SrcDesc */
|
||||
|
||||
AcpiCmAddReference (SrcDesc);
|
||||
|
||||
break;
|
||||
|
||||
|
||||
/* Improper object type */
|
||||
|
||||
default:
|
||||
|
||||
TypeFound = SrcDesc->Common.Type;
|
||||
|
||||
if ((TypeFound > (UINT8) INTERNAL_TYPE_REFERENCE) ||
|
||||
!AcpiCmValidObjectType (TypeFound))
|
||||
{
|
||||
DEBUG_PRINT (ACPI_ERROR,
|
||||
("AmlExecCreateField: Tried to create field in invalid object type - 0x%X\n",
|
||||
TypeFound));
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
DEBUG_PRINT (ACPI_ERROR,
|
||||
("AmlExecCreateField: Tried to create field in improper object type - %s\n",
|
||||
AcpiCmGetTypeName (TypeFound)));
|
||||
}
|
||||
|
||||
Status = AE_AML_OPERAND_TYPE;
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
|
||||
if (AML_CREATE_FIELD_OP == Opcode)
|
||||
{
|
||||
/* Delete object descriptor unique to CreateField */
|
||||
|
||||
AcpiCmRemoveReference (CntDesc);
|
||||
CntDesc = NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* This operation is supposed to cause the destination Name to refer
|
||||
* to the defined FieldUnit -- it must not store the constructed
|
||||
* FieldUnit object (or its current value) in some location that the
|
||||
* Name may already be pointing to. So, if the Name currently contains
|
||||
* a reference which would cause AcpiAmlExecStore() to perform an indirect
|
||||
* store rather than setting the value of the Name itself, clobber that
|
||||
* reference before calling AcpiAmlExecStore().
|
||||
*/
|
||||
|
||||
ResType = AcpiNsGetType (ResDesc);
|
||||
|
||||
/* Type of Name's existing value */
|
||||
|
||||
switch (ResType)
|
||||
{
|
||||
|
||||
case ACPI_TYPE_FIELD_UNIT:
|
||||
|
||||
case INTERNAL_TYPE_ALIAS:
|
||||
case INTERNAL_TYPE_BANK_FIELD:
|
||||
case INTERNAL_TYPE_DEF_FIELD:
|
||||
case INTERNAL_TYPE_INDEX_FIELD:
|
||||
|
||||
ObjDesc = AcpiNsGetAttachedObject (ResDesc);
|
||||
if (ObjDesc)
|
||||
{
|
||||
/*
|
||||
* There is an existing object here; delete it and zero out the
|
||||
* object field within the Node
|
||||
*/
|
||||
|
||||
DUMP_PATHNAME (ResDesc,
|
||||
"AmlExecCreateField: Removing Current Reference",
|
||||
TRACE_BFIELD, _COMPONENT);
|
||||
|
||||
DUMP_ENTRY (ResDesc, TRACE_BFIELD);
|
||||
DUMP_STACK_ENTRY (ObjDesc);
|
||||
|
||||
AcpiCmRemoveReference (ObjDesc);
|
||||
AcpiNsAttachObject ((ACPI_NAMESPACE_NODE *) ResDesc, NULL,
|
||||
ACPI_TYPE_ANY);
|
||||
}
|
||||
|
||||
/* Set the type to ANY (or the store below will fail) */
|
||||
|
||||
((ACPI_NAMESPACE_NODE *) ResDesc)->Type = ACPI_TYPE_ANY;
|
||||
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
/* Store constructed field descriptor in result location */
|
||||
|
||||
Status = AcpiAmlExecStore (FieldDesc, ResDesc, WalkState);
|
||||
|
||||
/*
|
||||
* If the field descriptor was not physically stored (or if a failure
|
||||
* above), we must delete it
|
||||
*/
|
||||
if (FieldDesc->Common.ReferenceCount <= 1)
|
||||
{
|
||||
AcpiCmRemoveReference (FieldDesc);
|
||||
}
|
||||
|
||||
|
||||
Cleanup:
|
||||
|
||||
/* Always delete the operands */
|
||||
|
||||
AcpiCmRemoveReference (OffDesc);
|
||||
AcpiCmRemoveReference (SrcDesc);
|
||||
|
||||
if (AML_CREATE_FIELD_OP == Opcode)
|
||||
{
|
||||
AcpiCmRemoveReference (CntDesc);
|
||||
}
|
||||
|
||||
/* On failure, delete the result descriptor */
|
||||
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
AcpiCmRemoveReference (ResDesc); /* Result descriptor */
|
||||
}
|
||||
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiAmlExecCreateAlias
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: amdyadic - ACPI AML (p-code) execution for dyadic operators
|
||||
* $Revision: 65 $
|
||||
* $Revision: 67 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -272,7 +272,6 @@ AcpiAmlExecDyadic2R (
|
||||
ACPI_OPERAND_OBJECT *RetDesc = NULL;
|
||||
ACPI_OPERAND_OBJECT *RetDesc2 = NULL;
|
||||
ACPI_STATUS Status = AE_OK;
|
||||
ACPI_INTEGER Remainder;
|
||||
UINT32 NumOperands = 3;
|
||||
NATIVE_CHAR *NewBuf;
|
||||
|
||||
@ -399,7 +398,7 @@ AcpiAmlExecDyadic2R (
|
||||
|
||||
case AML_DIVIDE_OP:
|
||||
|
||||
if ((UINT32) 0 == ObjDesc2->Number.Value)
|
||||
if (!ObjDesc2->Number.Value)
|
||||
{
|
||||
REPORT_ERROR
|
||||
(("AmlExecDyadic2R/DivideOp: Divide by zero\n"));
|
||||
@ -415,14 +414,15 @@ AcpiAmlExecDyadic2R (
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
Remainder = ObjDesc->Number.Value %
|
||||
ObjDesc2->Number.Value;
|
||||
RetDesc->Number.Value = Remainder;
|
||||
/* Remainder (modulo) */
|
||||
|
||||
RetDesc->Number.Value = ACPI_MODULO (ObjDesc->Number.Value,
|
||||
ObjDesc2->Number.Value);
|
||||
|
||||
/* Result (what we used to call the quotient) */
|
||||
|
||||
RetDesc2->Number.Value = ObjDesc->Number.Value /
|
||||
ObjDesc2->Number.Value;
|
||||
RetDesc2->Number.Value = ACPI_DIVIDE (ObjDesc->Number.Value,
|
||||
ObjDesc2->Number.Value);
|
||||
break;
|
||||
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: amfldio - Aml Field I/O
|
||||
* $Revision: 28 $
|
||||
* $Revision: 30 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -152,7 +152,7 @@ AcpiAmlReadFieldData (
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
ACPI_OPERAND_OBJECT *RgnDesc = NULL;
|
||||
ACPI_INTEGER Address;
|
||||
ACPI_PHYSICAL_ADDRESS Address;
|
||||
UINT32 LocalValue = 0;
|
||||
UINT32 FieldByteWidth;
|
||||
|
||||
@ -454,7 +454,7 @@ AcpiAmlReadField (
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
static ACPI_STATUS
|
||||
AcpiAmlWriteFieldData (
|
||||
ACPI_OPERAND_OBJECT *ObjDesc,
|
||||
UINT32 FieldByteOffset,
|
||||
@ -463,7 +463,7 @@ AcpiAmlWriteFieldData (
|
||||
{
|
||||
ACPI_STATUS Status = AE_OK;
|
||||
ACPI_OPERAND_OBJECT *RgnDesc = NULL;
|
||||
ACPI_INTEGER Address;
|
||||
ACPI_PHYSICAL_ADDRESS Address;
|
||||
UINT32 FieldByteWidth;
|
||||
|
||||
|
||||
@ -545,7 +545,7 @@ AcpiAmlWriteFieldData (
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
static ACPI_STATUS
|
||||
AcpiAmlWriteFieldDataWithUpdateRule (
|
||||
ACPI_OPERAND_OBJECT *ObjDesc,
|
||||
UINT32 Mask,
|
||||
|
@ -2,7 +2,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: ammonad - ACPI AML (p-code) execution for monadic operators
|
||||
* $Revision: 81 $
|
||||
* $Revision: 83 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -143,7 +143,7 @@
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
static ACPI_STATUS
|
||||
AcpiAmlGetObjectReference (
|
||||
ACPI_OPERAND_OBJECT *ObjDesc,
|
||||
ACPI_OPERAND_OBJECT **RetDesc,
|
||||
@ -461,6 +461,8 @@ AcpiAmlExecMonadic2R (
|
||||
|
||||
case AML_FROM_BCD_OP:
|
||||
|
||||
/* TBD: for ACPI 2.0, expand to 64 bits */
|
||||
|
||||
d0 = (UINT32) (ObjDesc->Number.Value & 15);
|
||||
d1 = (UINT32) (ObjDesc->Number.Value >> 4 & 15);
|
||||
d2 = (UINT32) (ObjDesc->Number.Value >> 8 & 15);
|
||||
@ -483,6 +485,7 @@ AcpiAmlExecMonadic2R (
|
||||
|
||||
case AML_TO_BCD_OP:
|
||||
|
||||
/* TBD: for ACPI 2.0, expand to 64 bits */
|
||||
|
||||
if (ObjDesc->Number.Value > 9999)
|
||||
{
|
||||
@ -493,10 +496,10 @@ AcpiAmlExecMonadic2R (
|
||||
}
|
||||
|
||||
RetDesc->Number.Value
|
||||
= ObjDesc->Number.Value % 10
|
||||
+ (ObjDesc->Number.Value / 10 % 10 << 4)
|
||||
+ (ObjDesc->Number.Value / 100 % 10 << 8)
|
||||
+ (ObjDesc->Number.Value / 1000 % 10 << 12);
|
||||
= ACPI_MODULO (ObjDesc->Number.Value, 10)
|
||||
+ (ACPI_MODULO (ACPI_DIVIDE (ObjDesc->Number.Value, 10), 10) << 4)
|
||||
+ (ACPI_MODULO (ACPI_DIVIDE (ObjDesc->Number.Value, 100), 10) << 8)
|
||||
+ (ACPI_MODULO (ACPI_DIVIDE (ObjDesc->Number.Value, 1000), 10) << 12);
|
||||
|
||||
break;
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: amprep - ACPI AML (p-code) execution - field prep utilities
|
||||
* $Revision: 67 $
|
||||
* $Revision: 68 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -140,7 +140,7 @@
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
UINT32
|
||||
static UINT32
|
||||
AcpiAmlDecodeFieldAccessType (
|
||||
UINT32 Access)
|
||||
{
|
||||
@ -192,7 +192,7 @@ AcpiAmlDecodeFieldAccessType (
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
static ACPI_STATUS
|
||||
AcpiAmlPrepCommonFieldObject (
|
||||
ACPI_OPERAND_OBJECT *ObjDesc,
|
||||
UINT8 FieldFlags,
|
||||
|
@ -2,7 +2,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: amregion - ACPI default OpRegion (address space) handlers
|
||||
* $Revision: 36 $
|
||||
* $Revision: 40 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -151,7 +151,7 @@
|
||||
ACPI_STATUS
|
||||
AcpiAmlSystemMemorySpaceHandler (
|
||||
UINT32 Function,
|
||||
ACPI_INTEGER Address,
|
||||
ACPI_PHYSICAL_ADDRESS Address,
|
||||
UINT32 BitWidth,
|
||||
UINT32 *Value,
|
||||
void *HandlerContext,
|
||||
@ -197,9 +197,9 @@ AcpiAmlSystemMemorySpaceHandler (
|
||||
* 2) Address beyond the current mapping?
|
||||
*/
|
||||
|
||||
if ((Address < (ACPI_INTEGER) MemInfo->MappedPhysicalAddress) ||
|
||||
if ((Address < MemInfo->MappedPhysicalAddress) ||
|
||||
((Address + Length) >
|
||||
(ACPI_INTEGER) (MemInfo->MappedPhysicalAddress + MemInfo->MappedLength)))
|
||||
(MemInfo->MappedPhysicalAddress + MemInfo->MappedLength)))
|
||||
{
|
||||
/*
|
||||
* The request cannot be resolved by the current memory mapping;
|
||||
@ -218,7 +218,7 @@ AcpiAmlSystemMemorySpaceHandler (
|
||||
|
||||
/* Create a new mapping starting at the address given */
|
||||
|
||||
Status = AcpiOsMapMemory ((void *) (UINT32) Address, SYSMEM_REGION_WINDOW_SIZE,
|
||||
Status = AcpiOsMapMemory (Address, SYSMEM_REGION_WINDOW_SIZE,
|
||||
(void **) &MemInfo->MappedLogicalAddress);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
@ -227,7 +227,7 @@ AcpiAmlSystemMemorySpaceHandler (
|
||||
|
||||
/* TBD: should these pointers go to 64-bit in all cases ? */
|
||||
|
||||
MemInfo->MappedPhysicalAddress = (UINT8 *) (UINT32) Address;
|
||||
MemInfo->MappedPhysicalAddress = Address;
|
||||
MemInfo->MappedLength = SYSMEM_REGION_WINDOW_SIZE;
|
||||
}
|
||||
|
||||
@ -240,7 +240,7 @@ AcpiAmlSystemMemorySpaceHandler (
|
||||
/* TBD: should these pointers go to 64-bit in all cases ? */
|
||||
|
||||
LogicalAddrPtr = MemInfo->MappedLogicalAddress +
|
||||
((UINT8 *) (UINT32) Address - MemInfo->MappedPhysicalAddress);
|
||||
(Address - MemInfo->MappedPhysicalAddress);
|
||||
|
||||
/* Perform the memory read or write */
|
||||
|
||||
@ -324,7 +324,7 @@ AcpiAmlSystemMemorySpaceHandler (
|
||||
ACPI_STATUS
|
||||
AcpiAmlSystemIoSpaceHandler (
|
||||
UINT32 Function,
|
||||
ACPI_INTEGER Address,
|
||||
ACPI_PHYSICAL_ADDRESS Address,
|
||||
UINT32 BitWidth,
|
||||
UINT32 *Value,
|
||||
void *HandlerContext,
|
||||
@ -432,7 +432,7 @@ AcpiAmlSystemIoSpaceHandler (
|
||||
ACPI_STATUS
|
||||
AcpiAmlPciConfigSpaceHandler (
|
||||
UINT32 Function,
|
||||
ACPI_INTEGER Address,
|
||||
ACPI_PHYSICAL_ADDRESS Address,
|
||||
UINT32 BitWidth,
|
||||
UINT32 *Value,
|
||||
void *HandlerContext,
|
||||
|
@ -2,7 +2,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: amresnte - AML Interpreter object resolution
|
||||
* $Revision: 23 $
|
||||
* $Revision: 24 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -157,7 +157,9 @@
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiAmlResolveNodeToValue (
|
||||
ACPI_NAMESPACE_NODE **StackPtr)
|
||||
ACPI_NAMESPACE_NODE **StackPtr,
|
||||
ACPI_WALK_STATE *WalkState)
|
||||
|
||||
{
|
||||
ACPI_STATUS Status = AE_OK;
|
||||
ACPI_OPERAND_OBJECT *ValDesc = NULL;
|
||||
@ -644,7 +646,7 @@ AcpiAmlResolveNodeToValue (
|
||||
|
||||
case AML_ONES_OP:
|
||||
|
||||
TempVal = ACPI_UINT32_MAX;
|
||||
TempVal = ACPI_INTEGER_MAX;
|
||||
break;
|
||||
|
||||
|
||||
@ -667,6 +669,9 @@ AcpiAmlResolveNodeToValue (
|
||||
|
||||
ObjDesc->Number.Value = TempVal;
|
||||
|
||||
/* Truncate value if we are executing from a 32-bit ACPI table */
|
||||
|
||||
AcpiAmlTruncateFor32bitTable (ObjDesc, WalkState);
|
||||
break;
|
||||
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: amresolv - AML Interpreter object resolution
|
||||
* $Revision: 76 $
|
||||
* $Revision: 77 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -316,7 +316,7 @@ AcpiAmlResolveToValue (
|
||||
|
||||
if (VALID_DESCRIPTOR_TYPE (*StackPtr, ACPI_DESC_TYPE_NAMED))
|
||||
{
|
||||
Status = AcpiAmlResolveNodeToValue ((ACPI_NAMESPACE_NODE **) StackPtr);
|
||||
Status = AcpiAmlResolveNodeToValue ((ACPI_NAMESPACE_NODE **) StackPtr, WalkState);
|
||||
}
|
||||
|
||||
|
||||
@ -495,6 +495,10 @@ AcpiAmlResolveObjectToValue (
|
||||
|
||||
StackDesc->Common.Type = (UINT8) ACPI_TYPE_NUMBER;
|
||||
StackDesc->Number.Value = ACPI_INTEGER_MAX;
|
||||
|
||||
/* Truncate value if we are executing from a 32-bit ACPI table */
|
||||
|
||||
AcpiAmlTruncateFor32bitTable (StackDesc, WalkState);
|
||||
break;
|
||||
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* Module Name: amstoren - AML Interpreter object store support,
|
||||
* Store to Node (namespace object)
|
||||
* $Revision: 22 $
|
||||
* $Revision: 23 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -669,7 +669,12 @@ AcpiAmlStoreObjectToNode (
|
||||
|
||||
case ACPI_TYPE_NUMBER:
|
||||
|
||||
|
||||
DestDesc->Number.Value = ValDesc->Number.Value;
|
||||
|
||||
/* Truncate value if we are executing from a 32-bit ACPI table */
|
||||
|
||||
AcpiAmlTruncateFor32bitTable (DestDesc, WalkState);
|
||||
break;
|
||||
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: amstorob - AML Interpreter object store support, store to object
|
||||
* $Revision: 16 $
|
||||
* $Revision: 17 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -416,6 +416,10 @@ AcpiAmlStoreObjectToObject (
|
||||
case ACPI_TYPE_NUMBER:
|
||||
|
||||
DestDesc->Number.Value = ValDesc->Number.Value;
|
||||
|
||||
/* Truncate value if we are executing from a 32-bit ACPI table */
|
||||
|
||||
AcpiAmlTruncateFor32bitTable (DestDesc, WalkState);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -2,7 +2,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: amutils - interpreter/scanner utilities
|
||||
* $Revision: 56 $
|
||||
* $Revision: 63 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -227,24 +227,45 @@ AcpiAmlValidateObjectType (
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiAmlBufSeq
|
||||
* FUNCTION: AcpiAmlTruncateFor32bitTable
|
||||
*
|
||||
* RETURN: The next buffer descriptor sequence number
|
||||
* PARAMETERS: ObjDesc - Object to be truncated
|
||||
* WalkState - Current walk state
|
||||
* (A method must be executing)
|
||||
*
|
||||
* DESCRIPTION: Provide a unique sequence number for each Buffer descriptor
|
||||
* allocated during the interpreter's existence. These numbers
|
||||
* are used to relate FieldUnit descriptors to the Buffers
|
||||
* within which the fields are defined.
|
||||
* RETURN: none
|
||||
*
|
||||
* Just increment the global counter and return it.
|
||||
* DESCRIPTION: Truncate a number to 32-bits if the currently executing method
|
||||
* belongs to a 32-bit ACPI table.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
UINT32
|
||||
AcpiAmlBufSeq (void)
|
||||
void
|
||||
AcpiAmlTruncateFor32bitTable (
|
||||
ACPI_OPERAND_OBJECT *ObjDesc,
|
||||
ACPI_WALK_STATE *WalkState)
|
||||
{
|
||||
|
||||
return (++AcpiGbl_BufSeq);
|
||||
/*
|
||||
* Object must be a valid number and we must be executing
|
||||
* a control method
|
||||
*/
|
||||
|
||||
if ((!ObjDesc) ||
|
||||
(ObjDesc->Common.Type != ACPI_TYPE_NUMBER) ||
|
||||
(!WalkState->MethodNode))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (WalkState->MethodNode->Flags & ANOBJ_DATA_WIDTH_32)
|
||||
{
|
||||
/*
|
||||
* We are running a method that exists in a 32-bit ACPI table.
|
||||
* Truncate the value to 32 bits by zeroing out the upper 32-bit field
|
||||
*/
|
||||
ObjDesc->Number.Value &= (UINT64) ACPI_UINT32_MAX;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -371,7 +392,7 @@ AcpiAmlDigitsNeeded (
|
||||
|
||||
else
|
||||
{
|
||||
for (NumDigits = 1 + (val < 0) ; val /= base ; ++NumDigits)
|
||||
for (NumDigits = 1 + (val < 0); (val = ACPI_DIVIDE (val,base)); ++NumDigits)
|
||||
{ ; }
|
||||
}
|
||||
|
||||
@ -389,7 +410,7 @@ AcpiAmlDigitsNeeded (
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
UINT32
|
||||
static UINT32
|
||||
_ntohl (
|
||||
UINT32 Value)
|
||||
{
|
||||
@ -478,8 +499,8 @@ AcpiAmlUnsignedIntegerToString (
|
||||
|
||||
for (Count = DigitsNeeded; Count > 0; Count--)
|
||||
{
|
||||
OutString[Count-1] = (NATIVE_CHAR) ('0' + (Value % 10));
|
||||
Value /= 10;
|
||||
OutString[Count-1] = (NATIVE_CHAR) ('0' + (ACPI_MODULO (Value, 10)));
|
||||
Value = ACPI_DIVIDE (Value, 10);
|
||||
}
|
||||
|
||||
return (AE_OK);
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Module Name: nsaccess - Top-level functions for accessing ACPI namespace
|
||||
* $Revision: 111 $
|
||||
* $Revision: 113 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -187,8 +187,7 @@ AcpiNsRootInitialize (void)
|
||||
IMODE_LOAD_PASS2, NS_NO_UPSEARCH,
|
||||
NULL, &NewNode);
|
||||
|
||||
if (ACPI_FAILURE (Status) ||
|
||||
(!NewNode))
|
||||
if (ACPI_FAILURE (Status) || (!NewNode)) /* Must be on same line for code converter */
|
||||
{
|
||||
DEBUG_PRINT (ACPI_ERROR,
|
||||
("Could not create predefined name %s, %s\n",
|
||||
@ -362,7 +361,8 @@ AcpiNsLookup (
|
||||
BOOLEAN NullNamePath = FALSE;
|
||||
OBJECT_TYPE_INTERNAL TypeToCheckFor;
|
||||
OBJECT_TYPE_INTERNAL ThisSearchType;
|
||||
DEBUG_EXEC (UINT32 i)
|
||||
|
||||
DEBUG_ONLY_MEMBERS (UINT32 i)
|
||||
|
||||
|
||||
FUNCTION_TRACE ("NsLookup");
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Module Name: nsalloc - Namespace allocation and deletion utilities
|
||||
* $Revision: 41 $
|
||||
* $Revision: 42 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -578,7 +578,7 @@ AcpiNsDeleteNamespaceSubtree (
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
void
|
||||
static void
|
||||
AcpiNsRemoveReference (
|
||||
ACPI_NAMESPACE_NODE *Node)
|
||||
{
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: nsdump - table dumping routines for debug
|
||||
* $Revision: 80 $
|
||||
* $Revision: 81 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -521,6 +521,7 @@ AcpiNsDumpObjects (
|
||||
}
|
||||
|
||||
|
||||
#ifndef _ACPI_ASL_COMPILER
|
||||
/****************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiNsDumpOneDevice
|
||||
@ -594,6 +595,7 @@ AcpiNsDumpRootDevices (void)
|
||||
AcpiNsDumpOneDevice, NULL, NULL);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
*
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: nsinit - namespace initialization
|
||||
* $Revision: 4 $
|
||||
* $Revision: 5 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -438,7 +438,6 @@ AcpiNsInitOneDevice (
|
||||
if (AE_NOT_FOUND == Status)
|
||||
{
|
||||
/* No _HID --> Can't be a PCI root bridge */
|
||||
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
}
|
||||
|
||||
@ -508,7 +507,7 @@ AcpiNsInitOneDevice (
|
||||
AcpiCmRemoveReference (RetObj);
|
||||
}
|
||||
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: nsload - namespace loading/expanding/contracting procedures
|
||||
* $Revision: 31 $
|
||||
* $Revision: 32 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -322,12 +322,6 @@ AcpiNsParseTable (
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
|
||||
/* TBD: no longer needed, remove */
|
||||
|
||||
AcpiGbl_ParsedNamespaceRoot = NULL;
|
||||
|
||||
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
*
|
||||
* Module Name: nsobject - Utilities for objects attached to namespace
|
||||
* table entries
|
||||
* $Revision: 46 $
|
||||
* $Revision: 47 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -513,7 +513,7 @@ AcpiNsGetAttachedObject (
|
||||
{
|
||||
/* handle invalid */
|
||||
|
||||
REPORT_WARNING (("NsGetAttachedObject: Null handle\n"));
|
||||
DEBUG_PRINT (ACPI_WARN, ("NsGetAttachedObject: Null handle\n"));
|
||||
return_PTR (NULL);
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Module Name: nssearch - Namespace search
|
||||
* $Revision: 58 $
|
||||
* $Revision: 59 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -284,7 +284,7 @@ AcpiNsSearchNode (
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
static ACPI_STATUS
|
||||
AcpiNsSearchParentTree (
|
||||
UINT32 TargetName,
|
||||
ACPI_NAMESPACE_NODE *Node,
|
||||
|
@ -2,7 +2,7 @@
|
||||
*
|
||||
* Module Name: nsutils - Utilities for accessing ACPI namespace, accessing
|
||||
* parents and siblings and Scope manipulation
|
||||
* $Revision: 71 $
|
||||
* $Revision: 72 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -248,9 +248,10 @@ AcpiNsInternalizeName (
|
||||
{
|
||||
NATIVE_CHAR *Result = NULL;
|
||||
NATIVE_CHAR *InternalName;
|
||||
UINT32 NumSegments;
|
||||
UINT32 NumSegments = 0;
|
||||
BOOLEAN FullyQualified = FALSE;
|
||||
UINT32 i;
|
||||
UINT32 NumCarats = 0;
|
||||
|
||||
|
||||
FUNCTION_TRACE ("NsInternalizeName");
|
||||
@ -280,6 +281,18 @@ AcpiNsInternalizeName (
|
||||
ExternalName++;
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
/*
|
||||
* Handle Carat prefixes
|
||||
*/
|
||||
|
||||
while (*ExternalName == '^')
|
||||
{
|
||||
NumCarats++;
|
||||
ExternalName++;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Determine the number of ACPI name "segments" by counting
|
||||
@ -288,6 +301,8 @@ AcpiNsInternalizeName (
|
||||
* + 1, and zero separators is ok.
|
||||
*/
|
||||
|
||||
if (*ExternalName)
|
||||
{
|
||||
NumSegments = 1;
|
||||
for (i = 0; ExternalName[i]; i++)
|
||||
{
|
||||
@ -296,11 +311,12 @@ AcpiNsInternalizeName (
|
||||
NumSegments++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* We need a segment to store the internal version of the name */
|
||||
|
||||
InternalName = AcpiCmCallocate ((ACPI_NAME_SIZE * NumSegments) + 4);
|
||||
InternalName = AcpiCmCallocate ((ACPI_NAME_SIZE * NumSegments) + 4 + NumCarats);
|
||||
if (!InternalName)
|
||||
{
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
@ -312,15 +328,58 @@ AcpiNsInternalizeName (
|
||||
if (FullyQualified)
|
||||
{
|
||||
InternalName[0] = '\\';
|
||||
|
||||
if (NumSegments <= 1)
|
||||
{
|
||||
Result = &InternalName[1];
|
||||
}
|
||||
else if (NumSegments == 2)
|
||||
{
|
||||
InternalName[1] = AML_DUAL_NAME_PREFIX;
|
||||
Result = &InternalName[2];
|
||||
}
|
||||
else
|
||||
{
|
||||
InternalName[1] = AML_MULTI_NAME_PREFIX_OP;
|
||||
InternalName[2] = (char) NumSegments;
|
||||
Result = &InternalName[3];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
InternalName[0] = AML_MULTI_NAME_PREFIX_OP;
|
||||
InternalName[1] = (char) NumSegments;
|
||||
Result = &InternalName[2];
|
||||
/*
|
||||
* Not fully qualified.
|
||||
* Handle Carats first, then append the name segments
|
||||
*/
|
||||
|
||||
i = 0;
|
||||
if (NumCarats)
|
||||
{
|
||||
for (i = 0; i < NumCarats; i++)
|
||||
{
|
||||
InternalName[i] = '^';
|
||||
}
|
||||
}
|
||||
|
||||
if (NumSegments == 1)
|
||||
{
|
||||
Result = &InternalName[i];
|
||||
}
|
||||
|
||||
else if (NumSegments == 2)
|
||||
{
|
||||
InternalName[i] = AML_DUAL_NAME_PREFIX;
|
||||
Result = &InternalName[i+1];
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
InternalName[i] = AML_MULTI_NAME_PREFIX_OP;
|
||||
InternalName[i+1] = (char) NumSegments;
|
||||
Result = &InternalName[i+2];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -378,7 +437,7 @@ AcpiNsInternalizeName (
|
||||
{
|
||||
DEBUG_PRINT (TRACE_EXEC,
|
||||
("NsInternalizeName: returning [%p] (abs) \"\\%s\"\n",
|
||||
InternalName, &InternalName[3]));
|
||||
InternalName, &InternalName[0]));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -2,7 +2,7 @@
|
||||
*
|
||||
* Module Name: nsxfname - Public interfaces to the ACPI subsystem
|
||||
* ACPI Namespace oriented interfaces
|
||||
* $Revision: 71 $
|
||||
* $Revision: 72 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -155,7 +155,7 @@ AcpiGetHandle (
|
||||
ACPI_HANDLE *RetHandle)
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
ACPI_NAMESPACE_NODE *Node;
|
||||
ACPI_NAMESPACE_NODE *Node = NULL;
|
||||
ACPI_NAMESPACE_NODE *PrefixNode = NULL;
|
||||
|
||||
|
||||
@ -168,14 +168,13 @@ AcpiGetHandle (
|
||||
{
|
||||
AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE);
|
||||
|
||||
Node = AcpiNsConvertHandleToEntry (Parent);
|
||||
if (!Node)
|
||||
PrefixNode = AcpiNsConvertHandleToEntry (Parent);
|
||||
if (!PrefixNode)
|
||||
{
|
||||
AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE);
|
||||
return (AE_BAD_PARAMETER);
|
||||
}
|
||||
|
||||
PrefixNode = Node->Child;
|
||||
AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE);
|
||||
}
|
||||
|
||||
@ -191,8 +190,7 @@ AcpiGetHandle (
|
||||
/*
|
||||
* Find the Node and convert to the user format
|
||||
*/
|
||||
Node = NULL;
|
||||
Status = AcpiNsGetNode (Pathname, PrefixNode, &Node);
|
||||
Status = AcpiNsGetNode (Pathname, Node, &Node);
|
||||
|
||||
*RetHandle = NULL;
|
||||
if(ACPI_SUCCESS(Status))
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: psargs - Parse AML opcode arguments
|
||||
* $Revision: 35 $
|
||||
* $Revision: 40 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -125,20 +125,6 @@
|
||||
MODULE_NAME ("psargs")
|
||||
|
||||
|
||||
UINT32
|
||||
AcpiPsPkgLengthEncodingSize (
|
||||
UINT32 FirstByte)
|
||||
{
|
||||
|
||||
/*
|
||||
* Bits 6-7 contain the number of bytes
|
||||
* in the encoded package length (-1)
|
||||
*/
|
||||
|
||||
return ((FirstByte >> 6) + 1);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiPsGetNextPackageLength
|
||||
@ -152,58 +138,6 @@ AcpiPsPkgLengthEncodingSize (
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
UINT32
|
||||
xxxAcpiPsGetNextPackageLength (
|
||||
ACPI_PARSE_STATE *ParserState)
|
||||
{
|
||||
UINT32 EncodingLength;
|
||||
UINT32 PackageLength = 0;
|
||||
UINT8 *AmlPtr = ParserState->Aml;
|
||||
|
||||
|
||||
FUNCTION_TRACE ("PsGetNextPackageLength");
|
||||
|
||||
|
||||
EncodingLength = AcpiPsPkgLengthEncodingSize ((UINT32) GET8 (AmlPtr));
|
||||
|
||||
|
||||
switch (EncodingLength)
|
||||
{
|
||||
case 1: /* 1-byte encoding (bits 0-5) */
|
||||
|
||||
PackageLength = ((UINT32) GET8 (AmlPtr) & 0x3f);
|
||||
break;
|
||||
|
||||
|
||||
case 2: /* 2-byte encoding (next byte + bits 0-3) */
|
||||
|
||||
PackageLength = ((((UINT32) GET8 (AmlPtr + 1)) << 4) |
|
||||
(((UINT32) GET8 (AmlPtr)) & 0x0f));
|
||||
break;
|
||||
|
||||
|
||||
case 3: /* 3-byte encoding (next 2 bytes + bits 0-3) */
|
||||
|
||||
PackageLength = ((((UINT32) GET8 (AmlPtr + 2)) << 12) |
|
||||
(((UINT32) GET8 (AmlPtr + 1)) << 4) |
|
||||
(((UINT32) GET8 (AmlPtr)) & 0x0f));
|
||||
break;
|
||||
|
||||
|
||||
case 4: /* 4-byte encoding (next 3 bytes + bits 0-3) */
|
||||
|
||||
PackageLength = ((((UINT32) GET8 (AmlPtr + 3)) << 20) |
|
||||
(((UINT32) GET8 (AmlPtr + 2)) << 12) |
|
||||
(((UINT32) GET8 (AmlPtr + 1)) << 4) |
|
||||
(((UINT32) GET8 (AmlPtr)) & 0x0f));
|
||||
break;
|
||||
}
|
||||
|
||||
ParserState->Aml += EncodingLength;
|
||||
|
||||
return_VALUE (PackageLength);
|
||||
}
|
||||
|
||||
UINT32
|
||||
AcpiPsGetNextPackageLength (
|
||||
ACPI_PARSE_STATE *ParserState)
|
||||
@ -223,32 +157,33 @@ AcpiPsGetNextPackageLength (
|
||||
{
|
||||
case 0: /* 1-byte encoding (bits 0-5) */
|
||||
|
||||
Length = (EncodedLength & 0x3f);
|
||||
Length = (EncodedLength & 0x3F);
|
||||
break;
|
||||
|
||||
|
||||
case 1: /* 2-byte encoding (next byte + bits 0-3) */
|
||||
|
||||
Length = (GET8 (ParserState->Aml) << 4) | (EncodedLength & 0xf);
|
||||
Length = ((GET8 (ParserState->Aml) << 04) |
|
||||
(EncodedLength & 0x0F));
|
||||
ParserState->Aml++;
|
||||
break;
|
||||
|
||||
|
||||
case 2: /* 3-byte encoding (next 2 bytes + bits 0-3) */
|
||||
|
||||
Length = ( (GET8 (ParserState->Aml + 1) << 12)
|
||||
| (GET8 (ParserState->Aml) << 4)
|
||||
| (EncodedLength & 0xf));
|
||||
Length = ((GET8 (ParserState->Aml + 1) << 12) |
|
||||
(GET8 (ParserState->Aml) << 04) |
|
||||
(EncodedLength & 0x0F));
|
||||
ParserState->Aml += 2;
|
||||
break;
|
||||
|
||||
|
||||
case 3: /* 4-byte encoding (next 3 bytes + bits 0-3) */
|
||||
|
||||
Length = ( (GET8 (ParserState->Aml + 2) << 20)
|
||||
| (GET8 (ParserState->Aml + 1) << 12)
|
||||
| (GET8 (ParserState->Aml) << 4)
|
||||
| (EncodedLength & 0xf));
|
||||
Length = ((GET8 (ParserState->Aml + 2) << 20) |
|
||||
(GET8 (ParserState->Aml + 1) << 12) |
|
||||
(GET8 (ParserState->Aml) << 04) |
|
||||
(EncodedLength & 0x0F));
|
||||
ParserState->Aml += 3;
|
||||
break;
|
||||
}
|
||||
@ -571,6 +506,11 @@ AcpiPsGetNextNamepath (
|
||||
NameOp->Node = MethodNode;
|
||||
AcpiPsAppendArg (Arg, NameOp);
|
||||
|
||||
if (!(ACPI_OPERAND_OBJECT *) MethodNode->Object)
|
||||
{
|
||||
return_VOID;
|
||||
}
|
||||
|
||||
*ArgCount = ((ACPI_OPERAND_OBJECT *) MethodNode->Object)->Method.ParamCount;
|
||||
}
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: psfind - Parse tree search routine
|
||||
* $Revision: 17 $
|
||||
* $Revision: 18 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -138,7 +138,7 @@
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_PARSE_OBJECT*
|
||||
static ACPI_PARSE_OBJECT*
|
||||
AcpiPsGetParent (
|
||||
ACPI_PARSE_OBJECT *Op)
|
||||
{
|
||||
@ -183,7 +183,7 @@ AcpiPsGetParent (
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_PARSE_OBJECT *
|
||||
static ACPI_PARSE_OBJECT *
|
||||
AcpiPsFindName (
|
||||
ACPI_PARSE_OBJECT *Scope,
|
||||
UINT32 Name,
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: psopcode - Parser opcode information table
|
||||
* $Revision: 20 $
|
||||
* $Revision: 24 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -124,9 +124,6 @@
|
||||
MODULE_NAME ("psopcode")
|
||||
|
||||
|
||||
UINT8 AcpiGbl_AmlShortOpInfoIndex[];
|
||||
UINT8 AcpiGbl_AmlLongOpInfoIndex[];
|
||||
|
||||
#define _UNK 0x6B
|
||||
/*
|
||||
* Reserved ASCII characters. Do not use any of these for
|
||||
@ -144,119 +141,6 @@ UINT8 AcpiGbl_AmlLongOpInfoIndex[];
|
||||
#define NUM_INTERNAL_OPCODE MAX_INTERNAL_OPCODE + 1
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiPsGetOpcodeInfo
|
||||
*
|
||||
* PARAMETERS: Opcode - The AML opcode
|
||||
*
|
||||
* RETURN: A pointer to the info about the opcode. NULL if the opcode was
|
||||
* not found in the table.
|
||||
*
|
||||
* DESCRIPTION: Find AML opcode description based on the opcode.
|
||||
* NOTE: This procedure must ALWAYS return a valid pointer!
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_OPCODE_INFO *
|
||||
AcpiPsGetOpcodeInfo (
|
||||
UINT16 Opcode)
|
||||
{
|
||||
ACPI_OPCODE_INFO *OpInfo;
|
||||
UINT8 UpperOpcode;
|
||||
UINT8 LowerOpcode;
|
||||
|
||||
|
||||
/* Split the 16-bit opcode into separate bytes */
|
||||
|
||||
UpperOpcode = (UINT8) (Opcode >> 8);
|
||||
LowerOpcode = (UINT8) Opcode;
|
||||
|
||||
/* Default is "unknown opcode" */
|
||||
|
||||
OpInfo = &AcpiGbl_AmlOpInfo [_UNK];
|
||||
|
||||
|
||||
/*
|
||||
* Detect normal 8-bit opcode or extended 16-bit opcode
|
||||
*/
|
||||
|
||||
switch (UpperOpcode)
|
||||
{
|
||||
case 0:
|
||||
|
||||
/* Simple (8-bit) opcode: 0-255, can't index beyond table */
|
||||
|
||||
OpInfo = &AcpiGbl_AmlOpInfo [AcpiGbl_AmlShortOpInfoIndex [LowerOpcode]];
|
||||
break;
|
||||
|
||||
|
||||
case AML_EXTOP:
|
||||
|
||||
/* Extended (16-bit, prefix+opcode) opcode */
|
||||
|
||||
if (LowerOpcode <= MAX_EXTENDED_OPCODE)
|
||||
{
|
||||
OpInfo = &AcpiGbl_AmlOpInfo [AcpiGbl_AmlLongOpInfoIndex [LowerOpcode]];
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case AML_LNOT_OP:
|
||||
|
||||
/* This case is for the bogus opcodes LNOTEQUAL, LLESSEQUAL, LGREATEREQUAL */
|
||||
/* TBD: [Investigate] remove this case? */
|
||||
|
||||
DEBUG_PRINT (ACPI_ERROR, ("PsGetOpcodeInfo: Bad multi-byte opcode=%X\n",
|
||||
Opcode));
|
||||
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
DEBUG_PRINT (ACPI_ERROR, ("PsGetOpcodeInfo: Unknown extended opcode=%X\n",
|
||||
Opcode));
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
/* Get the Op info pointer for this opcode */
|
||||
|
||||
return (OpInfo);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiPsGetOpcodeName
|
||||
*
|
||||
* PARAMETERS: Opcode - The AML opcode
|
||||
*
|
||||
* RETURN: A pointer to the name of the opcode (ASCII String)
|
||||
* Note: Never returns NULL.
|
||||
*
|
||||
* DESCRIPTION: Translate an opcode into a human-readable string
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
NATIVE_CHAR *
|
||||
AcpiPsGetOpcodeName (
|
||||
UINT16 Opcode)
|
||||
{
|
||||
ACPI_OPCODE_INFO *Op;
|
||||
|
||||
|
||||
Op = AcpiPsGetOpcodeInfo (Opcode);
|
||||
|
||||
/* Always guaranteed to return a valid pointer */
|
||||
|
||||
DEBUG_ONLY_MEMBERS (return Op->Name);
|
||||
return ("AE_NOT_CONFIGURED");
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* NAME: AcpiGbl_AmlOpInfo
|
||||
@ -485,7 +369,7 @@ AcpiPsGetOpcodeName (
|
||||
#define ARGI_REVISION_OP ARG_NONE
|
||||
#define ARGI_DEBUG_OP ARG_NONE
|
||||
#define ARGI_FATAL_OP ARGI_LIST3 (ARGI_NUMBER, ARGI_NUMBER, ARGI_NUMBER)
|
||||
#define ARGI_REGION_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_REGION_OP ARGI_LIST2 (ARGI_NUMBER, ARGI_NUMBER)
|
||||
#define ARGI_DEF_FIELD_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_DEVICE_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_PROCESSOR_OP ARGI_INVALID_OPCODE
|
||||
@ -510,7 +394,7 @@ AcpiPsGetOpcodeName (
|
||||
*/
|
||||
|
||||
|
||||
ACPI_OPCODE_INFO AcpiGbl_AmlOpInfo[] =
|
||||
static ACPI_OPCODE_INFO AmlOpInfo[] =
|
||||
{
|
||||
/* Index Opcode Type Class Has Arguments? Name Parser Args Interpreter Args */
|
||||
|
||||
@ -637,7 +521,7 @@ ACPI_OPCODE_INFO AcpiGbl_AmlOpInfo[] =
|
||||
* index into the table above
|
||||
*/
|
||||
|
||||
UINT8 AcpiGbl_AmlShortOpInfoIndex[256] =
|
||||
static UINT8 AmlShortOpInfoIndex[256] =
|
||||
{
|
||||
/* 0 1 2 3 4 5 6 7 */
|
||||
/* 0x00 */ 0x00, 0x01, _UNK, _UNK, _UNK, _UNK, 0x02, _UNK,
|
||||
@ -675,7 +559,7 @@ UINT8 AcpiGbl_AmlShortOpInfoIndex[256] =
|
||||
};
|
||||
|
||||
|
||||
UINT8 AcpiGbl_AmlLongOpInfoIndex[NUM_EXTENDED_OPCODE] =
|
||||
static UINT8 AmlLongOpInfoIndex[NUM_EXTENDED_OPCODE] =
|
||||
{
|
||||
/* 0 1 2 3 4 5 6 7 */
|
||||
/* 0x00 */ _UNK, 0x46, 0x47, _UNK, _UNK, _UNK, _UNK, _UNK,
|
||||
@ -702,3 +586,119 @@ UINT8 AcpiGbl_AmlLongOpInfoIndex[NUM_EXTENDED_OPCODE] =
|
||||
/* 0x00 */
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiPsGetOpcodeInfo
|
||||
*
|
||||
* PARAMETERS: Opcode - The AML opcode
|
||||
*
|
||||
* RETURN: A pointer to the info about the opcode. NULL if the opcode was
|
||||
* not found in the table.
|
||||
*
|
||||
* DESCRIPTION: Find AML opcode description based on the opcode.
|
||||
* NOTE: This procedure must ALWAYS return a valid pointer!
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_OPCODE_INFO *
|
||||
AcpiPsGetOpcodeInfo (
|
||||
UINT16 Opcode)
|
||||
{
|
||||
ACPI_OPCODE_INFO *OpInfo;
|
||||
UINT8 UpperOpcode;
|
||||
UINT8 LowerOpcode;
|
||||
|
||||
|
||||
/* Split the 16-bit opcode into separate bytes */
|
||||
|
||||
UpperOpcode = (UINT8) (Opcode >> 8);
|
||||
LowerOpcode = (UINT8) Opcode;
|
||||
|
||||
/* Default is "unknown opcode" */
|
||||
|
||||
OpInfo = &AmlOpInfo [_UNK];
|
||||
|
||||
|
||||
/*
|
||||
* Detect normal 8-bit opcode or extended 16-bit opcode
|
||||
*/
|
||||
|
||||
switch (UpperOpcode)
|
||||
{
|
||||
case 0:
|
||||
|
||||
/* Simple (8-bit) opcode: 0-255, can't index beyond table */
|
||||
|
||||
OpInfo = &AmlOpInfo [AmlShortOpInfoIndex [LowerOpcode]];
|
||||
break;
|
||||
|
||||
|
||||
case AML_EXTOP:
|
||||
|
||||
/* Extended (16-bit, prefix+opcode) opcode */
|
||||
|
||||
if (LowerOpcode <= MAX_EXTENDED_OPCODE)
|
||||
{
|
||||
OpInfo = &AmlOpInfo [AmlLongOpInfoIndex [LowerOpcode]];
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case AML_LNOT_OP:
|
||||
|
||||
/* This case is for the bogus opcodes LNOTEQUAL, LLESSEQUAL, LGREATEREQUAL */
|
||||
/* TBD: [Investigate] remove this case? */
|
||||
|
||||
DEBUG_PRINT (ACPI_ERROR, ("PsGetOpcodeInfo: Bad multi-byte opcode=%X\n",
|
||||
Opcode));
|
||||
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
DEBUG_PRINT (ACPI_ERROR, ("PsGetOpcodeInfo: Unknown extended opcode=%X\n",
|
||||
Opcode));
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
/* Get the Op info pointer for this opcode */
|
||||
|
||||
return (OpInfo);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiPsGetOpcodeName
|
||||
*
|
||||
* PARAMETERS: Opcode - The AML opcode
|
||||
*
|
||||
* RETURN: A pointer to the name of the opcode (ASCII String)
|
||||
* Note: Never returns NULL.
|
||||
*
|
||||
* DESCRIPTION: Translate an opcode into a human-readable string
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
NATIVE_CHAR *
|
||||
AcpiPsGetOpcodeName (
|
||||
UINT16 Opcode)
|
||||
{
|
||||
ACPI_OPCODE_INFO *Op;
|
||||
|
||||
|
||||
Op = AcpiPsGetOpcodeInfo (Opcode);
|
||||
|
||||
/* Always guaranteed to return a valid pointer */
|
||||
|
||||
#ifdef ACPI_DEBUG
|
||||
return (Op->Name);
|
||||
#else
|
||||
return ("AE_NOT_CONFIGURED");
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: pstree - Parser op tree manipulation/traversal/search
|
||||
* $Revision: 23 $
|
||||
* $Revision: 25 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -397,122 +397,3 @@ AcpiPsGetDepthNext (
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiPsFetchPrefix
|
||||
*
|
||||
* PARAMETERS: Scope - Op to fetch prefix for
|
||||
* Path - A namestring containing the prefix
|
||||
* io - Direction flag
|
||||
*
|
||||
* RETURN: Op referenced by the prefix
|
||||
*
|
||||
* DESCRIPTION: Fetch and handle path prefix ('\\' or '^')
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_PARSE_OBJECT *
|
||||
AcpiPsFetchPrefix (
|
||||
ACPI_PARSE_OBJECT *Scope,
|
||||
NATIVE_CHAR **Path,
|
||||
UINT32 io)
|
||||
{
|
||||
UINT32 prefix = io ? GET8 (*Path):**Path;
|
||||
|
||||
|
||||
switch (prefix)
|
||||
{
|
||||
case '\\':
|
||||
case '/':
|
||||
|
||||
/* go to the root */
|
||||
|
||||
*Path += 1;
|
||||
while (Scope->Parent)
|
||||
{
|
||||
Scope = Scope->Parent;
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case '^':
|
||||
|
||||
/* go up one level */
|
||||
|
||||
*Path += 1;
|
||||
Scope = Scope->Parent;
|
||||
break;
|
||||
}
|
||||
|
||||
if (Scope && !Scope->Parent)
|
||||
{
|
||||
/* searching from the root, start with its children */
|
||||
|
||||
Scope = AcpiPsGetChild (Scope);
|
||||
}
|
||||
|
||||
return (Scope);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiPsFetchName
|
||||
*
|
||||
* PARAMETERS: Path - A string containing the name segment
|
||||
* io - Direction flag
|
||||
*
|
||||
* RETURN: The 4-INT8 ASCII ACPI Name as a UINT32
|
||||
*
|
||||
* DESCRIPTION: Fetch ACPI name segment (dot-delimited)
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
UINT32
|
||||
AcpiPsFetchName (
|
||||
NATIVE_CHAR **Path,
|
||||
UINT32 io)
|
||||
{
|
||||
UINT32 Name = 0;
|
||||
NATIVE_CHAR *nm;
|
||||
UINT32 i;
|
||||
NATIVE_CHAR ch;
|
||||
|
||||
|
||||
if (io)
|
||||
{
|
||||
/* Get the name from the path pointer */
|
||||
|
||||
MOVE_UNALIGNED32_TO_32 (&Name, *Path);
|
||||
*Path += 4;
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
if (**Path == '.')
|
||||
{
|
||||
*Path += 1;
|
||||
}
|
||||
|
||||
nm = (NATIVE_CHAR *) &Name;
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
ch = **Path;
|
||||
if (ch && ch != '.')
|
||||
{
|
||||
*nm = ch;
|
||||
*Path += 1;
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
*nm = '_';
|
||||
}
|
||||
nm++;
|
||||
}
|
||||
}
|
||||
|
||||
return (Name);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: pswalk - Parser routines to walk parsed op tree(s)
|
||||
* $Revision: 47 $
|
||||
* $Revision: 50 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -184,63 +184,6 @@ AcpiPsGetNextWalkOp (
|
||||
|
||||
Status = AscendingCallback (WalkState, Op);
|
||||
|
||||
switch (Status)
|
||||
{
|
||||
case AE_CTRL_TERMINATE:
|
||||
|
||||
/*
|
||||
* A control method was terminated via a RETURN statement.
|
||||
* The walk of this method is complete.
|
||||
*/
|
||||
WalkState->PrevOp = WalkState->Origin;
|
||||
WalkState->NextOp = NULL;
|
||||
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
break;
|
||||
|
||||
|
||||
case AE_CTRL_FALSE:
|
||||
|
||||
/*
|
||||
* Either an IF/WHILE Predicate was false or we encountered a BREAK
|
||||
* opcode. In both cases, we do not execute the rest of the
|
||||
* package; We simply close out the parent (finishing the walk of
|
||||
* this branch of the tree) and continue execution at the parent
|
||||
* level.
|
||||
*/
|
||||
|
||||
Next = Parent->Next;
|
||||
Status = AE_OK;
|
||||
|
||||
/*
|
||||
* If there is a sibling to the parent, we must close out the
|
||||
* parent now, because we are going to continue to go downward (to
|
||||
* the sibling) in the parse tree.
|
||||
*/
|
||||
if (Next)
|
||||
{
|
||||
Status = AscendingCallback (WalkState, Parent);
|
||||
|
||||
/* The parent sibling will be next */
|
||||
|
||||
WalkState->PrevOp = Op;
|
||||
WalkState->NextOp = Next;
|
||||
WalkState->NextOpInfo = NEXT_OP_DOWNWARD;
|
||||
|
||||
/* Continue downward */
|
||||
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
}
|
||||
|
||||
/*
|
||||
* Drop into the loop below because we are moving upwards in
|
||||
* the tree
|
||||
*/
|
||||
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
/*
|
||||
* If we are back to the starting point, the walk is complete.
|
||||
*/
|
||||
@ -272,28 +215,11 @@ AcpiPsGetNextWalkOp (
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/*
|
||||
* No sibling, but check status.
|
||||
* Abort on error from callback routine
|
||||
*/
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
/* Next op will be the parent */
|
||||
|
||||
WalkState->PrevOp = Op;
|
||||
WalkState->NextOp = Parent;
|
||||
WalkState->NextOpInfo = NEXT_OP_UPWARD;
|
||||
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/*
|
||||
* Drop into the loop below because we are moving upwards in
|
||||
* the tree
|
||||
*/
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
else
|
||||
@ -321,69 +247,6 @@ AcpiPsGetNextWalkOp (
|
||||
|
||||
Status = AscendingCallback (WalkState, Parent);
|
||||
|
||||
|
||||
switch (Status)
|
||||
{
|
||||
case AE_CTRL_FALSE:
|
||||
|
||||
/*
|
||||
* Either an IF/WHILE Predicate was false or we encountered a
|
||||
* BREAK opcode. In both cases, we do not execute the rest of the
|
||||
* package; We simply close out the parent (finishing the walk of
|
||||
* this branch of the tree) and continue execution at the parent
|
||||
* level.
|
||||
*/
|
||||
|
||||
Parent = GrandParent;
|
||||
Next = GrandParent->Next;
|
||||
GrandParent = GrandParent->Parent;
|
||||
|
||||
Status = AscendingCallback (WalkState, Parent);
|
||||
|
||||
/* Now continue to the next node in the tree */
|
||||
|
||||
break;
|
||||
|
||||
|
||||
case AE_CTRL_TRUE:
|
||||
|
||||
/*
|
||||
* Predicate of a WHILE was true and the loop just completed an
|
||||
* execution. Go back to the start of the loop and reevaluate the
|
||||
* predicate.
|
||||
*/
|
||||
|
||||
Op = WalkState->ControlState->Control.PredicateOp;
|
||||
|
||||
WalkState->ControlState->Common.State = CONTROL_PREDICATE_EXECUTING;
|
||||
|
||||
/*
|
||||
* AcpiEvaluate the predicate again (next)
|
||||
* Because we will traverse WHILE tree again
|
||||
*/
|
||||
|
||||
WalkState->PrevOp = Op->Parent;
|
||||
WalkState->NextOp = Op;
|
||||
WalkState->NextOpInfo = NEXT_OP_DOWNWARD;
|
||||
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
break;
|
||||
|
||||
|
||||
case AE_CTRL_TERMINATE:
|
||||
|
||||
/*
|
||||
* A control method was terminated via a RETURN statement.
|
||||
* The walk of this method is complete.
|
||||
*/
|
||||
WalkState->PrevOp = WalkState->Origin;
|
||||
WalkState->NextOp = NULL;
|
||||
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* If we are back to the starting point, the walk is complete.
|
||||
*/
|
||||
@ -397,7 +260,6 @@ AcpiPsGetNextWalkOp (
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* If there is a sibling to this parent (it is not the starting point
|
||||
* Op), then we will visit it.
|
||||
@ -413,19 +275,6 @@ AcpiPsGetNextWalkOp (
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/*
|
||||
* No sibling, check for an error from closing the parent
|
||||
* (Also, AE_PENDING if a method call was encountered)
|
||||
*/
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
WalkState->PrevOp = Parent;
|
||||
WalkState->NextOp = GrandParent;
|
||||
WalkState->NextOpInfo = NEXT_OP_UPWARD;
|
||||
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/* No siblings, no errors, just move up one more level in the tree */
|
||||
|
||||
Op = Parent;
|
||||
@ -445,283 +294,94 @@ AcpiPsGetNextWalkOp (
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiPsWalkLoop
|
||||
* FUNCTION: AcpiPsDeleteCompletedOp
|
||||
*
|
||||
* PARAMETERS: WalkList - State of the walk
|
||||
* StartOp - Starting Op of the subtree to be walked
|
||||
* DescendingCallback - Procedure called when a new Op is
|
||||
* encountered
|
||||
* AscendingCallback - Procedure called when Op is complete
|
||||
* PARAMETERS: State - Walk state
|
||||
* Op - Completed op
|
||||
*
|
||||
* RETURN: Status
|
||||
* RETURN: AE_OK
|
||||
*
|
||||
* DESCRIPTION: Perform a walk of the parsed AML tree. Begins and terminates at
|
||||
* the StartOp.
|
||||
* DESCRIPTION: Callback function for AcpiPsGetNextWalkOp(). Used during
|
||||
* AcpiPsDeleteParse tree to delete Op objects when all sub-objects
|
||||
* have been visited (and deleted.)
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiPsWalkLoop (
|
||||
ACPI_WALK_LIST *WalkList,
|
||||
ACPI_PARSE_OBJECT *StartOp,
|
||||
ACPI_PARSE_DOWNWARDS DescendingCallback,
|
||||
ACPI_PARSE_UPWARDS AscendingCallback)
|
||||
static ACPI_STATUS
|
||||
AcpiPsDeleteCompletedOp (
|
||||
ACPI_WALK_STATE *State,
|
||||
ACPI_PARSE_OBJECT *Op)
|
||||
{
|
||||
ACPI_STATUS Status = AE_OK;
|
||||
ACPI_WALK_STATE *WalkState;
|
||||
ACPI_PARSE_OBJECT *Op = StartOp;
|
||||
|
||||
|
||||
FUNCTION_TRACE_PTR ("PsWalkLoop", StartOp);
|
||||
|
||||
|
||||
WalkState = AcpiDsGetCurrentWalkState (WalkList);
|
||||
|
||||
|
||||
/* Walk entire subtree, visiting all nodes depth-first */
|
||||
|
||||
while (Op)
|
||||
{
|
||||
if (WalkState->NextOpInfo != NEXT_OP_UPWARD)
|
||||
{
|
||||
Status = DescendingCallback (Op->Opcode, Op, WalkState, NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
* A TRUE exception means that an ELSE was detected, but the IF
|
||||
* predicate evaluated TRUE.
|
||||
*/
|
||||
if (Status == AE_CTRL_TRUE)
|
||||
{
|
||||
/*
|
||||
* Ignore the entire ELSE block by moving on to the the next opcode.
|
||||
* And we do that by simply going up in the tree (either to the next
|
||||
* sibling or to the parent) from here.
|
||||
*/
|
||||
|
||||
WalkState->NextOpInfo = NEXT_OP_UPWARD;
|
||||
}
|
||||
|
||||
/* Get the next node (op) in the depth-first walk */
|
||||
|
||||
Status = AcpiPsGetNextWalkOp (WalkState, Op, AscendingCallback);
|
||||
|
||||
/*
|
||||
* A PENDING exception means that a control method invocation has been
|
||||
* detected
|
||||
*/
|
||||
|
||||
if (Status == AE_CTRL_PENDING)
|
||||
{
|
||||
/* Transfer control to the called control method */
|
||||
|
||||
Status = AcpiDsCallControlMethod (WalkList, WalkState, Op);
|
||||
|
||||
/*
|
||||
* If the transfer to the new method method call worked, a new walk
|
||||
* state was created -- get it
|
||||
*/
|
||||
|
||||
WalkState = AcpiDsGetCurrentWalkState (WalkList);
|
||||
}
|
||||
|
||||
/* Abort the walk on any exception */
|
||||
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
Op = WalkState->NextOp;
|
||||
}
|
||||
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
AcpiPsFreeOp (Op);
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiPsWalkParsedAml
|
||||
* FUNCTION: AcpiPsDeleteParseTree
|
||||
*
|
||||
* PARAMETERS: StartOp - Starting Op of the subtree to be walked
|
||||
* EndOp - Where to terminate the walk
|
||||
* DescendingCallback - Procedure called when a new Op is
|
||||
* encountered
|
||||
* AscendingCallback - Procedure called when Op is complete
|
||||
* PARAMETERS: SubtreeRoot - Root of tree (or subtree) to delete
|
||||
*
|
||||
* RETURN: Status
|
||||
* RETURN: None
|
||||
*
|
||||
* DESCRIPTION: Top level interface to walk the parsed AML tree. Handles
|
||||
* preemption of executing control methods.
|
||||
*
|
||||
* NOTE: The EndOp is usually only different from the StartOp if
|
||||
* we don't want to visit the StartOp during the tree descent.
|
||||
* DESCRIPTION: Delete a portion of or an entire parse tree.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
mmmmAcpiPsWalkParsedAml (
|
||||
ACPI_PARSE_OBJECT *StartOp,
|
||||
ACPI_PARSE_OBJECT *EndOp,
|
||||
ACPI_OPERAND_OBJECT *MthDesc,
|
||||
ACPI_NAMESPACE_NODE *StartNode,
|
||||
ACPI_OPERAND_OBJECT **Params,
|
||||
ACPI_OPERAND_OBJECT **CallerReturnDesc,
|
||||
ACPI_OWNER_ID OwnerId,
|
||||
ACPI_PARSE_DOWNWARDS DescendingCallback,
|
||||
ACPI_PARSE_UPWARDS AscendingCallback)
|
||||
void
|
||||
AcpiPsDeleteParseTree (
|
||||
ACPI_PARSE_OBJECT *SubtreeRoot)
|
||||
{
|
||||
ACPI_PARSE_OBJECT *Op;
|
||||
ACPI_WALK_STATE *WalkState;
|
||||
ACPI_OPERAND_OBJECT *ReturnDesc;
|
||||
ACPI_STATUS Status;
|
||||
ACPI_WALK_LIST WalkList;
|
||||
ACPI_WALK_LIST *PrevWalkList;
|
||||
|
||||
|
||||
FUNCTION_TRACE_PTR ("PsWalkParsedAml", StartOp);
|
||||
FUNCTION_TRACE_PTR ("PsDeleteParseTree", SubtreeRoot);
|
||||
|
||||
|
||||
/* Parameter Validation */
|
||||
|
||||
if (!StartOp || !EndOp)
|
||||
if (!SubtreeRoot)
|
||||
{
|
||||
return (AE_BAD_PARAMETER);
|
||||
return_VOID;
|
||||
}
|
||||
|
||||
/* Initialize a new walk list */
|
||||
/* Create and initialize a new walk list */
|
||||
|
||||
WalkList.WalkState = NULL;
|
||||
|
||||
WalkState = AcpiDsCreateWalkState (OwnerId, EndOp, MthDesc, &WalkList);
|
||||
WalkState = AcpiDsCreateWalkState (TABLE_ID_DSDT, NULL, NULL, &WalkList);
|
||||
if (!WalkState)
|
||||
{
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
return_VOID;
|
||||
}
|
||||
|
||||
/* TBD: [Restructure] TEMP until we pass WalkState to the interpreter
|
||||
*/
|
||||
PrevWalkList = AcpiGbl_CurrentWalkList;
|
||||
AcpiGbl_CurrentWalkList = &WalkList;
|
||||
WalkState->ParserState = NULL;
|
||||
WalkState->ParseFlags = 0;
|
||||
WalkState->DescendingCallback = NULL;
|
||||
WalkState->AscendingCallback = NULL;
|
||||
|
||||
if (StartNode)
|
||||
{
|
||||
/* Push start scope on scope stack and make it current */
|
||||
|
||||
Status = AcpiDsScopeStackPush (StartNode, ACPI_TYPE_METHOD, WalkState);
|
||||
if (ACPI_FAILURE (Status))
|
||||
WalkState->Origin = SubtreeRoot;
|
||||
WalkState->NextOp = SubtreeRoot;
|
||||
|
||||
|
||||
/* Head downward in the tree */
|
||||
|
||||
WalkState->NextOpInfo = NEXT_OP_DOWNWARD;
|
||||
|
||||
/* Visit all nodes in the subtree */
|
||||
|
||||
while (WalkState->NextOp)
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
AcpiPsGetNextWalkOp (WalkState, WalkState->NextOp,
|
||||
AcpiPsDeleteCompletedOp);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (MthDesc)
|
||||
{
|
||||
/* Init arguments if this is a control method */
|
||||
/* TBD: [Restructure] add walkstate as a param */
|
||||
|
||||
AcpiDsMethodDataInitArgs (Params, MTH_NUM_ARGS, WalkState);
|
||||
}
|
||||
|
||||
Op = StartOp;
|
||||
Status = AE_OK;
|
||||
|
||||
|
||||
/*
|
||||
* Execute the walk loop as long as there is a valid Walk State. This
|
||||
* handles nested control method invocations without recursion.
|
||||
*/
|
||||
|
||||
DEBUG_PRINT (TRACE_PARSE, ("PsWalkParsedAml: Op=%p EndOp=%p State=%p\n",
|
||||
Op, EndOp, WalkState));
|
||||
|
||||
while (WalkState)
|
||||
{
|
||||
if (ACPI_SUCCESS (Status))
|
||||
{
|
||||
Status = AcpiPsWalkLoop (&WalkList, Op, DescendingCallback,
|
||||
AscendingCallback);
|
||||
}
|
||||
|
||||
DEBUG_PRINT (TRACE_PARSE,
|
||||
("PsWalkParsedAml: Completed one call to walk loop, State=%p\n",
|
||||
WalkState));
|
||||
|
||||
/* We are done with this walk, move on to the parent if any */
|
||||
|
||||
BREAKPOINT3;
|
||||
|
||||
WalkState = AcpiDsPopWalkState (&WalkList);
|
||||
|
||||
/* Extract return value before we delete WalkState */
|
||||
|
||||
ReturnDesc = WalkState->ReturnDesc;
|
||||
|
||||
DEBUG_PRINT (TRACE_PARSE,
|
||||
("PsWalkParsedAml: ReturnValue=%p, State=%p\n",
|
||||
WalkState->ReturnDesc, WalkState));
|
||||
|
||||
/* Reset the current scope to the beginning of scope stack */
|
||||
|
||||
AcpiDsScopeStackClear (WalkState);
|
||||
|
||||
/*
|
||||
* If we just returned from the execution of a control method,
|
||||
* there's lots of cleanup to do
|
||||
*/
|
||||
|
||||
if (WalkState->MethodDesc)
|
||||
{
|
||||
AcpiDsTerminateControlMethod (WalkState);
|
||||
}
|
||||
|
||||
/* Delete this walk state and all linked control states */
|
||||
/* We are done with this walk */
|
||||
|
||||
AcpiDsDeleteWalkState (WalkState);
|
||||
|
||||
/* Check if we have restarted a preempted walk */
|
||||
|
||||
WalkState = AcpiDsGetCurrentWalkState (&WalkList);
|
||||
if (WalkState &&
|
||||
ACPI_SUCCESS (Status))
|
||||
{
|
||||
/* There is another walk state, restart it */
|
||||
|
||||
/*
|
||||
* If the method returned value is not used by the parent,
|
||||
* The object is deleted
|
||||
*/
|
||||
|
||||
AcpiDsRestartControlMethod (WalkState, ReturnDesc);
|
||||
|
||||
/* Get the next Op to process */
|
||||
|
||||
Op = WalkState->NextOp;
|
||||
}
|
||||
|
||||
/*
|
||||
* Just completed a 1st-level method, save the final internal return
|
||||
* value (if any)
|
||||
*/
|
||||
|
||||
else if (CallerReturnDesc)
|
||||
{
|
||||
*CallerReturnDesc = ReturnDesc; /* NULL if no return value */
|
||||
}
|
||||
|
||||
else if (ReturnDesc)
|
||||
{
|
||||
/* Caller doesn't want it, must delete it */
|
||||
|
||||
AcpiCmRemoveReference (ReturnDesc);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
AcpiGbl_CurrentWalkList = PrevWalkList;
|
||||
|
||||
return_ACPI_STATUS (Status);
|
||||
return_VOID;
|
||||
}
|
||||
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
* AcpiRsAddress16Stream
|
||||
* AcpiRsAddress32Resource
|
||||
* AcpiRsAddress32Stream
|
||||
* $Revision: 11 $
|
||||
* $Revision: 12 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -120,6 +120,7 @@
|
||||
#define __RSADDR_C__
|
||||
|
||||
#include "acpi.h"
|
||||
#include "acresrc.h"
|
||||
|
||||
#define _COMPONENT RESOURCE_MANAGER
|
||||
MODULE_NAME ("rsaddr")
|
||||
|
@ -2,7 +2,7 @@
|
||||
*
|
||||
* Module Name: rscalc - AcpiRsCalculateByteStreamLength
|
||||
* AcpiRsCalculateListLength
|
||||
* $Revision: 11 $
|
||||
* $Revision: 16 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -118,6 +118,7 @@
|
||||
#define __RSCALC_C__
|
||||
|
||||
#include "acpi.h"
|
||||
#include "acresrc.h"
|
||||
|
||||
#define _COMPONENT RESOURCE_MANAGER
|
||||
MODULE_NAME ("rscalc")
|
||||
@ -884,7 +885,7 @@ AcpiRsCalculatePciRoutingTableLength (
|
||||
UINT32 *BufferSizeNeeded)
|
||||
{
|
||||
UINT32 NumberOfElements;
|
||||
UINT32 TempSizeNeeded;
|
||||
UINT32 TempSizeNeeded = 0;
|
||||
ACPI_OPERAND_OBJECT **TopObjectList;
|
||||
UINT32 Index;
|
||||
ACPI_OPERAND_OBJECT *PackageElement;
|
||||
@ -908,8 +909,6 @@ AcpiRsCalculatePciRoutingTableLength (
|
||||
* NOTE: The NumberOfElements is incremented by one to add an end
|
||||
* table structure that is essentially a structure of zeros.
|
||||
*/
|
||||
TempSizeNeeded = (NumberOfElements + 1) *
|
||||
(sizeof (PCI_ROUTING_TABLE) - 1);
|
||||
|
||||
/*
|
||||
* But each PRT_ENTRY structure has a pointer to a string and
|
||||
@ -951,6 +950,8 @@ AcpiRsCalculatePciRoutingTableLength (
|
||||
}
|
||||
}
|
||||
|
||||
TempSizeNeeded += (sizeof (PCI_ROUTING_TABLE) - 1);
|
||||
|
||||
/*
|
||||
* Was a String type found?
|
||||
*/
|
||||
@ -972,15 +973,20 @@ AcpiRsCalculatePciRoutingTableLength (
|
||||
TempSizeNeeded += sizeof(UINT32);
|
||||
}
|
||||
|
||||
|
||||
/* Round up the size since each element must be aligned */
|
||||
|
||||
TempSizeNeeded = ROUND_UP_TO_64BITS (TempSizeNeeded);
|
||||
|
||||
/*
|
||||
* Point to the next ACPI_OPERAND_OBJECT
|
||||
*/
|
||||
TopObjectList++;
|
||||
}
|
||||
|
||||
/* Align the count before returning it */
|
||||
|
||||
*BufferSizeNeeded = ROUND_UP_TO_32BITS (TempSizeNeeded);
|
||||
*BufferSizeNeeded = TempSizeNeeded + sizeof (PCI_ROUTING_TABLE);
|
||||
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
}
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
* Module Name: rscreate - AcpiRsCreateResourceList
|
||||
* AcpiRsCreatePciRoutingTable
|
||||
* AcpiRsCreateByteStream
|
||||
* $Revision: 19 $
|
||||
* $Revision: 21 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -303,6 +303,9 @@ AcpiRsCreatePciRoutingTable (
|
||||
NumberOfElements = PackageObject->Package.Count;
|
||||
UserPrt = (PCI_ROUTING_TABLE *) Buffer;
|
||||
|
||||
|
||||
Buffer = ROUND_PTR_UP_TO_8 (Buffer, UINT8);
|
||||
|
||||
for (Index = 0; Index < NumberOfElements; Index++)
|
||||
{
|
||||
/*
|
||||
@ -312,9 +315,9 @@ AcpiRsCreatePciRoutingTable (
|
||||
* be zero because we cleared the return buffer earlier
|
||||
*/
|
||||
Buffer += UserPrt->Length;
|
||||
Buffer = ROUND_PTR_UP_TO_4 (Buffer, UINT8);
|
||||
UserPrt = (PCI_ROUTING_TABLE *) Buffer;
|
||||
|
||||
|
||||
/*
|
||||
* Fill in the Length field with the information we
|
||||
* have at this point.
|
||||
@ -405,7 +408,7 @@ AcpiRsCreatePciRoutingTable (
|
||||
|
||||
/* Now align the current length */
|
||||
|
||||
UserPrt->Length = ROUND_UP_TO_32BITS (UserPrt->Length);
|
||||
UserPrt->Length = ROUND_UP_TO_64BITS (UserPrt->Length);
|
||||
|
||||
/*
|
||||
* Dereference the Source Index
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Module Name: rsdump - Functions do dump out the resource structures.
|
||||
* $Revision: 11 $
|
||||
* $Revision: 12 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -118,6 +118,7 @@
|
||||
#define __RSDUMP_C__
|
||||
|
||||
#include "acpi.h"
|
||||
#include "acresrc.h"
|
||||
|
||||
#define _COMPONENT RESOURCE_MANAGER
|
||||
MODULE_NAME ("rsdump")
|
||||
|
@ -6,7 +6,7 @@
|
||||
* AcpiRsFixedIoStream
|
||||
* AcpiRsDmaResource
|
||||
* AcpiRsDmaStream
|
||||
* $Revision: 9 $
|
||||
* $Revision: 10 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -122,6 +122,7 @@
|
||||
#define __RSIO_C__
|
||||
|
||||
#include "acpi.h"
|
||||
#include "acresrc.h"
|
||||
|
||||
#define _COMPONENT RESOURCE_MANAGER
|
||||
MODULE_NAME ("rsio")
|
||||
|
@ -4,7 +4,7 @@
|
||||
* AcpiRsIrqStream
|
||||
* AcpiRsExtendedIrqResource
|
||||
* AcpiRsExtendedIrqStream
|
||||
* $Revision: 10 $
|
||||
* $Revision: 11 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -120,6 +120,7 @@
|
||||
#define __RSIRQ_C__
|
||||
|
||||
#include "acpi.h"
|
||||
#include "acresrc.h"
|
||||
|
||||
#define _COMPONENT RESOURCE_MANAGER
|
||||
MODULE_NAME ("rsirq")
|
||||
|
@ -6,7 +6,7 @@
|
||||
* AcpiRsFixedMemory32Resource
|
||||
* AcpiRsMemory32RangeStream
|
||||
* AcpiRsFixedMemory32Stream
|
||||
* $Revision: 9 $
|
||||
* $Revision: 10 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -122,6 +122,7 @@
|
||||
#define __RSMEMORY_C__
|
||||
|
||||
#include "acpi.h"
|
||||
#include "acresrc.h"
|
||||
|
||||
#define _COMPONENT RESOURCE_MANAGER
|
||||
MODULE_NAME ("rsmemory")
|
||||
|
@ -8,7 +8,7 @@
|
||||
* AcpiRsEndDependentFunctionsResource
|
||||
* AcpiRsStartDependentFunctionsStream
|
||||
* AcpiRsEndDependentFunctionsStream
|
||||
* $Revision: 9 $
|
||||
* $Revision: 10 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -124,6 +124,7 @@
|
||||
#define __RSMISC_C__
|
||||
|
||||
#include "acpi.h"
|
||||
#include "acresrc.h"
|
||||
|
||||
#define _COMPONENT RESOURCE_MANAGER
|
||||
MODULE_NAME ("rsmisc")
|
||||
|
671
sys/contrib/dev/acpica/Subsystem/Tables/tbconvrt.c
Normal file
671
sys/contrib/dev/acpica/Subsystem/Tables/tbconvrt.c
Normal file
@ -0,0 +1,671 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: tbconvrt - ACPI Table conversion utilities
|
||||
* $Revision: 14 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* 1. Copyright Notice
|
||||
*
|
||||
* Some or all of this work - Copyright (c) 1999, Intel Corp. All rights
|
||||
* reserved.
|
||||
*
|
||||
* 2. License
|
||||
*
|
||||
* 2.1. This is your license from Intel Corp. under its intellectual property
|
||||
* rights. You may have additional license terms from the party that provided
|
||||
* you this software, covering your right to use that party's intellectual
|
||||
* property rights.
|
||||
*
|
||||
* 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
|
||||
* copy of the source code appearing in this file ("Covered Code") an
|
||||
* irrevocable, perpetual, worldwide license under Intel's copyrights in the
|
||||
* base code distributed originally by Intel ("Original Intel Code") to copy,
|
||||
* make derivatives, distribute, use and display any portion of the Covered
|
||||
* Code in any form, with the right to sublicense such rights; and
|
||||
*
|
||||
* 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
|
||||
* license (with the right to sublicense), under only those claims of Intel
|
||||
* patents that are infringed by the Original Intel Code, to make, use, sell,
|
||||
* offer to sell, and import the Covered Code and derivative works thereof
|
||||
* solely to the minimum extent necessary to exercise the above copyright
|
||||
* license, and in no event shall the patent license extend to any additions
|
||||
* to or modifications of the Original Intel Code. No other license or right
|
||||
* is granted directly or by implication, estoppel or otherwise;
|
||||
*
|
||||
* The above copyright and patent license is granted only if the following
|
||||
* conditions are met:
|
||||
*
|
||||
* 3. Conditions
|
||||
*
|
||||
* 3.1. Redistribution of Source with Rights to Further Distribute Source.
|
||||
* Redistribution of source code of any substantial portion of the Covered
|
||||
* Code or modification with rights to further distribute source must include
|
||||
* the above Copyright Notice, the above License, this list of Conditions,
|
||||
* and the following Disclaimer and Export Compliance provision. In addition,
|
||||
* Licensee must cause all Covered Code to which Licensee contributes to
|
||||
* contain a file documenting the changes Licensee made to create that Covered
|
||||
* Code and the date of any change. Licensee must include in that file the
|
||||
* documentation of any changes made by any predecessor Licensee. Licensee
|
||||
* must include a prominent statement that the modification is derived,
|
||||
* directly or indirectly, from Original Intel Code.
|
||||
*
|
||||
* 3.2. Redistribution of Source with no Rights to Further Distribute Source.
|
||||
* Redistribution of source code of any substantial portion of the Covered
|
||||
* Code or modification without rights to further distribute source must
|
||||
* include the following Disclaimer and Export Compliance provision in the
|
||||
* documentation and/or other materials provided with distribution. In
|
||||
* addition, Licensee may not authorize further sublicense of source of any
|
||||
* portion of the Covered Code, and must include terms to the effect that the
|
||||
* license from Licensee to its licensee is limited to the intellectual
|
||||
* property embodied in the software Licensee provides to its licensee, and
|
||||
* not to intellectual property embodied in modifications its licensee may
|
||||
* make.
|
||||
*
|
||||
* 3.3. Redistribution of Executable. Redistribution in executable form of any
|
||||
* substantial portion of the Covered Code or modification must reproduce the
|
||||
* above Copyright Notice, and the following Disclaimer and Export Compliance
|
||||
* provision in the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* 3.4. Intel retains all right, title, and interest in and to the Original
|
||||
* Intel Code.
|
||||
*
|
||||
* 3.5. Neither the name Intel nor any other trademark owned or controlled by
|
||||
* Intel shall be used in advertising or otherwise to promote the sale, use or
|
||||
* other dealings in products derived from or relating to the Covered Code
|
||||
* without prior written authorization from Intel.
|
||||
*
|
||||
* 4. Disclaimer and Export Compliance
|
||||
*
|
||||
* 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
|
||||
* HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
|
||||
* IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
|
||||
* INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
|
||||
* UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
|
||||
* PARTICULAR PURPOSE.
|
||||
*
|
||||
* 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
|
||||
* OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
|
||||
* COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
|
||||
* SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
|
||||
* CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
|
||||
* HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
|
||||
* SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
|
||||
* LIMITED REMEDY.
|
||||
*
|
||||
* 4.3. Licensee shall not export, either directly or indirectly, any of this
|
||||
* software or system incorporating such software without first obtaining any
|
||||
* required license or other approval from the U. S. Department of Commerce or
|
||||
* any other agency or department of the United States Government. In the
|
||||
* event Licensee exports any such software from the United States or
|
||||
* re-exports any such software from a foreign destination, Licensee shall
|
||||
* ensure that the distribution and export/re-export of the software is in
|
||||
* compliance with all laws, regulations, orders, or other restrictions of the
|
||||
* U.S. Export Administration Regulations. Licensee agrees that neither it nor
|
||||
* any of its subsidiaries will export/re-export any technical data, process,
|
||||
* software, or service, directly or indirectly, to any country for which the
|
||||
* United States government or any agency thereof requires an export license,
|
||||
* other governmental approval, or letter of assurance, without first obtaining
|
||||
* such license, approval or letter.
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
#define __TBCONVRT_C__
|
||||
|
||||
#include "acpi.h"
|
||||
#include "achware.h"
|
||||
#include "actables.h"
|
||||
#include "actbl.h"
|
||||
|
||||
|
||||
#define _COMPONENT TABLE_MANAGER
|
||||
MODULE_NAME ("tbconvrt")
|
||||
|
||||
|
||||
/*
|
||||
* 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) {a.AddressSpaceId = (UINT8) d;\
|
||||
a.RegisterBitWidth = (UINT8) MUL_8 (b);\
|
||||
a.RegisterBitOffset = 0;\
|
||||
a.Reserved = 0;\
|
||||
a.Address = (UINT64) c;}
|
||||
|
||||
|
||||
/* 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,ADDRESS_SPACE_SYSTEM_IO)
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiTbConvertToXsdt
|
||||
*
|
||||
* PARAMETERS:
|
||||
*
|
||||
* RETURN:
|
||||
*
|
||||
* DESCRIPTION:
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiTbConvertToXsdt (
|
||||
ACPI_TABLE_DESC *TableInfo,
|
||||
UINT32 *NumberOfTables)
|
||||
{
|
||||
UINT32 TableSize;
|
||||
UINT32 PointerSize;
|
||||
UINT32 i;
|
||||
XSDT_DESCRIPTOR *NewTable;
|
||||
|
||||
|
||||
#ifndef _IA64
|
||||
|
||||
if (AcpiGbl_RSDP->Revision < 2)
|
||||
{
|
||||
PointerSize = sizeof (UINT32);
|
||||
}
|
||||
|
||||
else
|
||||
#endif
|
||||
{
|
||||
PointerSize = sizeof (UINT64);
|
||||
}
|
||||
|
||||
/*
|
||||
* Determine the number of tables pointed to by the RSDT/XSDT.
|
||||
* This is defined by the ACPI Specification to be the number of
|
||||
* pointers contained within the RSDT/XSDT. The size of the pointers
|
||||
* is architecture-dependent.
|
||||
*/
|
||||
|
||||
TableSize = TableInfo->Pointer->Length;
|
||||
*NumberOfTables = (TableSize -
|
||||
sizeof (ACPI_TABLE_HEADER)) / PointerSize;
|
||||
|
||||
/* Compute size of the converted XSDT */
|
||||
|
||||
TableSize = (*NumberOfTables * sizeof (UINT64)) + sizeof (ACPI_TABLE_HEADER);
|
||||
|
||||
|
||||
/* Allocate an XSDT */
|
||||
|
||||
NewTable = AcpiCmCallocate (TableSize);
|
||||
if (!NewTable)
|
||||
{
|
||||
return (AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
/* Copy the header and set the length */
|
||||
|
||||
MEMCPY (NewTable, TableInfo->Pointer, sizeof (ACPI_TABLE_HEADER));
|
||||
NewTable->Header.Length = TableSize;
|
||||
|
||||
/* Copy the table pointers */
|
||||
|
||||
for (i = 0; i < *NumberOfTables; i++)
|
||||
{
|
||||
if (AcpiGbl_RSDP->Revision < 2)
|
||||
{
|
||||
#ifdef _IA64
|
||||
NewTable->TableOffsetEntry[i] =
|
||||
((RSDT_DESCRIPTOR_REV071 *) TableInfo->Pointer)->TableOffsetEntry[i];
|
||||
#else
|
||||
NewTable->TableOffsetEntry[i] =
|
||||
((RSDT_DESCRIPTOR_REV1 *) TableInfo->Pointer)->TableOffsetEntry[i];
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
NewTable->TableOffsetEntry[i] =
|
||||
((XSDT_DESCRIPTOR *) TableInfo->Pointer)->TableOffsetEntry[i];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Delete the original table (either mapped or in a buffer) */
|
||||
|
||||
AcpiTbDeleteSingleTable (TableInfo);
|
||||
|
||||
|
||||
/* Point the table descriptor to the new table */
|
||||
|
||||
TableInfo->Pointer = (ACPI_TABLE_HEADER *) NewTable;
|
||||
TableInfo->BasePointer = (ACPI_TABLE_HEADER *) NewTable;
|
||||
TableInfo->Length = TableSize;
|
||||
TableInfo->Allocation = ACPI_MEM_ALLOCATED;
|
||||
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiTbConvertTableFadt
|
||||
*
|
||||
* PARAMETERS:
|
||||
*
|
||||
* RETURN:
|
||||
*
|
||||
* DESCRIPTION:
|
||||
* Converts BIOS supplied 1.0 and 0.71 ACPI FADT to an intermediate
|
||||
* ACPI 2.0 FADT. If the BIOS supplied a 2.0 FADT then it is simply
|
||||
* copied to the intermediate FADT. The ACPI CA software uses this
|
||||
* intermediate FADT. Thus a significant amount of special #ifdef
|
||||
* type codeing is saved. This intermediate FADT will need to be
|
||||
* freed at some point.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiTbConvertTableFadt (void)
|
||||
{
|
||||
|
||||
#ifdef _IA64
|
||||
FADT_DESCRIPTOR_REV071 *FADT71;
|
||||
UINT8 Pm1AddressSpace;
|
||||
UINT8 Pm2AddressSpace;
|
||||
UINT8 PmTimerAddressSpace;
|
||||
UINT8 Gpe0AddressSpace;
|
||||
UINT8 Gpe1AddressSpace;
|
||||
#else
|
||||
FADT_DESCRIPTOR_REV1 *FADT1;
|
||||
#endif
|
||||
|
||||
FADT_DESCRIPTOR_REV2 *FADT2;
|
||||
ACPI_TABLE_DESC *TableDesc;
|
||||
|
||||
|
||||
FUNCTION_TRACE ("AcpiTbConvertTableFadt");
|
||||
|
||||
|
||||
/* AcpiGbl_FADT is valid */
|
||||
/* Allocate and zero the 2.0 buffer */
|
||||
|
||||
FADT2 = AcpiCmCallocate (sizeof (FADT_DESCRIPTOR_REV2));
|
||||
if (FADT2 == NULL)
|
||||
{
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
|
||||
/* The ACPI FADT revision number is FADT2_REVISION_ID=3 */
|
||||
/* So, if the current table revision is less than 3 it is type 1.0 or 0.71 */
|
||||
|
||||
if (AcpiGbl_FADT->header.Revision >= FADT2_REVISION_ID)
|
||||
{
|
||||
/* We have an ACPI 2.0 FADT but we must copy it to our local buffer */
|
||||
|
||||
*FADT2 = *((FADT_DESCRIPTOR_REV2*) AcpiGbl_FADT);
|
||||
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
|
||||
#ifdef _IA64
|
||||
/*
|
||||
* For the 64-bit case only, a revision ID less than V2.0 means the
|
||||
* tables are the 0.71 extensions
|
||||
*/
|
||||
|
||||
/* The BIOS stored FADT should agree with Revision 0.71 */
|
||||
|
||||
FADT71 = (FADT_DESCRIPTOR_REV071 *) AcpiGbl_FADT;
|
||||
|
||||
/* Copy the table header*/
|
||||
|
||||
FADT2->header = FADT71->header;
|
||||
|
||||
/* Copy the common fields */
|
||||
|
||||
FADT2->SciInt = FADT71->SciInt;
|
||||
FADT2->AcpiEnable = FADT71->AcpiEnable;
|
||||
FADT2->AcpiDisable = FADT71->AcpiDisable;
|
||||
FADT2->S4BiosReq = FADT71->S4BiosReq;
|
||||
FADT2->Plvl2Lat = FADT71->Plvl2Lat;
|
||||
FADT2->Plvl3Lat = FADT71->Plvl3Lat;
|
||||
FADT2->DayAlrm = FADT71->DayAlrm;
|
||||
FADT2->MonAlrm = FADT71->MonAlrm;
|
||||
FADT2->Century = FADT71->Century;
|
||||
FADT2->Gpe1Base = FADT71->Gpe1Base;
|
||||
|
||||
/*
|
||||
* We still use the block length registers even though
|
||||
* the GAS structure should obsolete them. This is because
|
||||
* these registers are byte lengths versus the GAS which
|
||||
* contains a bit width
|
||||
*/
|
||||
FADT2->Pm1EvtLen = FADT71->Pm1EvtLen;
|
||||
FADT2->Pm1CntLen = FADT71->Pm1CntLen;
|
||||
FADT2->Pm2CntLen = FADT71->Pm2CntLen;
|
||||
FADT2->PmTmLen = FADT71->PmTmLen;
|
||||
FADT2->Gpe0BlkLen = FADT71->Gpe0BlkLen;
|
||||
FADT2->Gpe1BlkLen = FADT71->Gpe1BlkLen;
|
||||
FADT2->Gpe1Base = FADT71->Gpe1Base;
|
||||
|
||||
/* Copy the existing 0.71 flags to 2.0. The other bits are zero.*/
|
||||
|
||||
FADT2->WbInvd = FADT71->FlushCash;
|
||||
FADT2->ProcC1 = FADT71->ProcC1;
|
||||
FADT2->Plvl2Up = FADT71->Plvl2Up;
|
||||
FADT2->PwrButton = FADT71->PwrButton;
|
||||
FADT2->SleepButton = FADT71->SleepButton;
|
||||
FADT2->FixedRTC = FADT71->FixedRTC;
|
||||
FADT2->Rtcs4 = FADT71->Rtcs4;
|
||||
FADT2->TmrValExt = FADT71->TmrValExt;
|
||||
FADT2->DockCap = FADT71->DockCap;
|
||||
|
||||
|
||||
/* We should not use these next two addresses */
|
||||
/* Since our buffer is pre-zeroed nothing to do for */
|
||||
/* the next three data items in the structure */
|
||||
/* FADT2->FirmwareCtrl = 0; */
|
||||
/* FADT2->Dsdt = 0; */
|
||||
|
||||
/* System Interrupt Model isn't used in ACPI 2.0*/
|
||||
/* FADT2->Reserved1 = 0; */
|
||||
|
||||
/* This field is set by the OEM to convey the preferred */
|
||||
/* power management profile to OSPM. It doesn't have any*/
|
||||
/* 0.71 equivalence. Since we don't know what kind of */
|
||||
/* 64-bit system this is, we will pick unspecified. */
|
||||
|
||||
FADT2->Prefer_PM_Profile = PM_UNSPECIFIED;
|
||||
|
||||
|
||||
/* Port address of SMI command port */
|
||||
/* We shouldn't use this port because IA64 doesn't */
|
||||
/* have or use SMI. It has PMI. */
|
||||
|
||||
FADT2->SmiCmd = (UINT32)(FADT71->SmiCmd & 0xFFFFFFFF);
|
||||
|
||||
|
||||
/* processor performance state control*/
|
||||
/* The value OSPM writes to the SMI_CMD register to assume */
|
||||
/* processor performance state control responsibility. */
|
||||
/* There isn't any equivalence in 0.71 */
|
||||
/* Again this should be meaningless for IA64 */
|
||||
/* FADT2->PstateCnt = 0; */
|
||||
|
||||
/* The 32-bit Power management and GPE registers are */
|
||||
/* not valid in IA-64 and we are not going to use them */
|
||||
/* so leaving them pre-zeroed. */
|
||||
|
||||
/* Support for the _CST object and C States change notification.*/
|
||||
/* This data item hasn't any 0.71 equivalence so leaving it zero.*/
|
||||
/* FADT2->CstCnt = 0; */
|
||||
|
||||
/* number of flush strides that need to be read */
|
||||
/* No 0.71 equivalence. Leave pre-zeroed. */
|
||||
/* FADT2->FlushSize = 0; */
|
||||
|
||||
/* Processor's memory cache line width, in bytes */
|
||||
/* No 0.71 equivalence. Leave pre-zeroed. */
|
||||
/* FADT2->FlushStride = 0; */
|
||||
|
||||
/* Processor’s duty cycle index in processor's P_CNT reg*/
|
||||
/* No 0.71 equivalence. Leave pre-zeroed. */
|
||||
/* FADT2->DutyOffset = 0; */
|
||||
|
||||
/* Processor’s duty cycle value bit width in P_CNT register.*/
|
||||
/* No 0.71 equivalence. Leave pre-zeroed. */
|
||||
/* FADT2->DutyWidth = 0; */
|
||||
|
||||
|
||||
/* Since there isn't any equivalence in 0.71 */
|
||||
/* and since BigSur had to support legacy */
|
||||
|
||||
FADT2->IapcBootArch = BAF_LEGACY_DEVICES;
|
||||
|
||||
/* Copy to ACPI 2.0 64-BIT Extended Addresses */
|
||||
|
||||
FADT2->XFirmwareCtrl = FADT71->FirmwareCtrl;
|
||||
FADT2->XDsdt = FADT71->Dsdt;
|
||||
|
||||
|
||||
/* Extract the address space IDs */
|
||||
|
||||
Pm1AddressSpace = (UINT8)((FADT71->AddressSpace & PM1_BLK_ADDRESS_SPACE) >> 1);
|
||||
Pm2AddressSpace = (UINT8)((FADT71->AddressSpace & PM2_CNT_BLK_ADDRESS_SPACE) >> 2);
|
||||
PmTimerAddressSpace = (UINT8)((FADT71->AddressSpace & PM_TMR_BLK_ADDRESS_SPACE) >> 3);
|
||||
Gpe0AddressSpace = (UINT8)((FADT71->AddressSpace & GPE0_BLK_ADDRESS_SPACE) >> 4);
|
||||
Gpe1AddressSpace = (UINT8)((FADT71->AddressSpace & GPE1_BLK_ADDRESS_SPACE) >> 5);
|
||||
|
||||
/*
|
||||
* Convert the 0.71 (non-GAS style) Block addresses to V2.0 GAS structures,
|
||||
* in this order:
|
||||
*
|
||||
* PM 1A Events
|
||||
* PM 1B Events
|
||||
* PM 1A Control
|
||||
* PM 1B Control
|
||||
* PM 2 Control
|
||||
* PM Timer Control
|
||||
* GPE Block 0
|
||||
* GPE Block 1
|
||||
*/
|
||||
|
||||
ASL_BUILD_GAS_FROM_ENTRY (FADT2->XPm1aEvtBlk, FADT71->Pm1EvtLen, FADT71->Pm1aEvtBlk, Pm1AddressSpace);
|
||||
ASL_BUILD_GAS_FROM_ENTRY (FADT2->XPm1bEvtBlk, FADT71->Pm1EvtLen, FADT71->Pm1bEvtBlk, Pm1AddressSpace);
|
||||
ASL_BUILD_GAS_FROM_ENTRY (FADT2->XPm1aCntBlk, FADT71->Pm1CntLen, FADT71->Pm1aCntBlk, Pm1AddressSpace);
|
||||
ASL_BUILD_GAS_FROM_ENTRY (FADT2->XPm1bCntBlk, FADT71->Pm1CntLen, FADT71->Pm1bCntBlk, Pm1AddressSpace);
|
||||
ASL_BUILD_GAS_FROM_ENTRY (FADT2->XPm2CntBlk, FADT71->Pm2CntLen, FADT71->Pm2CntBlk, Pm2AddressSpace);
|
||||
ASL_BUILD_GAS_FROM_ENTRY (FADT2->XPmTmrBlk, FADT71->PmTmLen, FADT71->PmTmrBlk, PmTimerAddressSpace);
|
||||
ASL_BUILD_GAS_FROM_ENTRY (FADT2->XGpe0Blk, FADT71->Gpe0BlkLen, FADT71->Gpe0Blk, Gpe0AddressSpace);
|
||||
ASL_BUILD_GAS_FROM_ENTRY (FADT2->XGpe1Blk, FADT71->Gpe1BlkLen, FADT71->Gpe1Blk, Gpe1AddressSpace);
|
||||
|
||||
#else
|
||||
|
||||
/* ACPI 1.0 FACS */
|
||||
|
||||
|
||||
/* The BIOS stored FADT should agree with Revision 1.0 */
|
||||
|
||||
FADT1 = (FADT_DESCRIPTOR_REV1*) AcpiGbl_FADT;
|
||||
|
||||
/*
|
||||
* Copy the table header and the common part of the tables
|
||||
* The 2.0 table is an extension of the 1.0 table, so the
|
||||
* entire 1.0 table can be copied first, then expand some
|
||||
* fields to 64 bits.
|
||||
*/
|
||||
|
||||
MEMCPY (FADT2, FADT1, sizeof (FADT_DESCRIPTOR_REV1));
|
||||
|
||||
|
||||
/* Convert table pointers to 64-bit fields */
|
||||
|
||||
FADT2->XFirmwareCtrl = (UINT64) FADT1->FirmwareCtrl;
|
||||
FADT2->XDsdt = (UINT64) FADT1->Dsdt;
|
||||
|
||||
/* System Interrupt Model isn't used in ACPI 2.0*/
|
||||
/* FADT2->Reserved1 = 0; */
|
||||
|
||||
/* This field is set by the OEM to convey the preferred */
|
||||
/* power management profile to OSPM. It doesn't have any*/
|
||||
/* 1.0 equivalence. Since we don't know what kind of */
|
||||
/* 32-bit system this is, we will pick unspecified. */
|
||||
|
||||
FADT2->Prefer_PM_Profile = PM_UNSPECIFIED;
|
||||
|
||||
|
||||
/* Processor Performance State Control. This is the value */
|
||||
/* OSPM writes to the SMI_CMD register to assume processor */
|
||||
/* performance state control responsibility. There isn't */
|
||||
/* any equivalence in 1.0. So leave it zeroed. */
|
||||
|
||||
FADT2->PstateCnt = 0;
|
||||
|
||||
|
||||
/* Support for the _CST object and C States change notification.*/
|
||||
/* This data item hasn't any 1.0 equivalence so leaving it zero.*/
|
||||
|
||||
FADT2->CstCnt = 0;
|
||||
|
||||
|
||||
/* Since there isn't any equivalence in 1.0 and since it */
|
||||
/* is highly likely that a 1.0 system has legacy support. */
|
||||
|
||||
FADT2->IapcBootArch = BAF_LEGACY_DEVICES;
|
||||
|
||||
|
||||
/*
|
||||
* Convert the V1.0 Block addresses to V2.0 GAS structures
|
||||
* in this order:
|
||||
*
|
||||
* PM 1A Events
|
||||
* PM 1B Events
|
||||
* PM 1A Control
|
||||
* PM 1B Control
|
||||
* PM 2 Control
|
||||
* PM Timer Control
|
||||
* GPE Block 0
|
||||
* GPE Block 1
|
||||
*/
|
||||
|
||||
ASL_BUILD_GAS_FROM_V1_ENTRY (FADT2->XPm1aEvtBlk, FADT1->Pm1EvtLen, FADT1->Pm1aEvtBlk);
|
||||
ASL_BUILD_GAS_FROM_V1_ENTRY (FADT2->XPm1bEvtBlk, FADT1->Pm1EvtLen, FADT1->Pm1bEvtBlk);
|
||||
ASL_BUILD_GAS_FROM_V1_ENTRY (FADT2->XPm1aCntBlk, FADT1->Pm1CntLen, FADT1->Pm1aCntBlk);
|
||||
ASL_BUILD_GAS_FROM_V1_ENTRY (FADT2->XPm1bCntBlk, FADT1->Pm1CntLen, FADT1->Pm1bCntBlk);
|
||||
ASL_BUILD_GAS_FROM_V1_ENTRY (FADT2->XPm2CntBlk, FADT1->Pm2CntLen, FADT1->Pm2CntBlk);
|
||||
ASL_BUILD_GAS_FROM_V1_ENTRY (FADT2->XPmTmrBlk, FADT1->PmTmLen, FADT1->PmTmrBlk);
|
||||
ASL_BUILD_GAS_FROM_V1_ENTRY (FADT2->XGpe0Blk, FADT1->Gpe0BlkLen, FADT1->Gpe0Blk);
|
||||
ASL_BUILD_GAS_FROM_V1_ENTRY (FADT2->XGpe1Blk, FADT1->Gpe1BlkLen, FADT1->Gpe1Blk);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Global FADT pointer will point to the common V2.0 FADT
|
||||
*/
|
||||
AcpiGbl_FADT = FADT2;
|
||||
|
||||
|
||||
/* Free the original table */
|
||||
|
||||
TableDesc = &AcpiGbl_AcpiTables[ACPI_TABLE_FADT];
|
||||
AcpiTbDeleteSingleTable (TableDesc);
|
||||
|
||||
|
||||
/* Install the new table */
|
||||
|
||||
TableDesc->Pointer = (ACPI_TABLE_HEADER *) AcpiGbl_FADT;
|
||||
TableDesc->BasePointer = AcpiGbl_FADT;
|
||||
TableDesc->Allocation = ACPI_MEM_ALLOCATED;
|
||||
TableDesc->Length = sizeof (FADT_DESCRIPTOR_REV2);
|
||||
|
||||
|
||||
/* Dump the FADT Header */
|
||||
|
||||
DEBUG_PRINT (TRACE_TABLES, ("Hex dump of FADT Header:\n"));
|
||||
DUMP_BUFFER ((UINT8 *) AcpiGbl_FADT, sizeof (ACPI_TABLE_HEADER));
|
||||
|
||||
/* Dump the entire FADT */
|
||||
|
||||
DEBUG_PRINT (TRACE_TABLES,
|
||||
("Hex dump of FADT (After header), size %d (0x%x)\n",
|
||||
AcpiGbl_FADT->header.Length, AcpiGbl_FADT->header.Length));
|
||||
DUMP_BUFFER ((UINT8 *) (&AcpiGbl_FADT->V1_FirmwareCtrl), AcpiGbl_FADT->header.Length);
|
||||
|
||||
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiTbConvertTableFacs
|
||||
*
|
||||
* PARAMETERS:
|
||||
*
|
||||
* RETURN:
|
||||
*
|
||||
* DESCRIPTION:
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiTbBuildCommonFacs (
|
||||
ACPI_TABLE_DESC *TableInfo)
|
||||
{
|
||||
ACPI_COMMON_FACS *CommonFacs;
|
||||
|
||||
#ifdef _IA64
|
||||
FACS_DESCRIPTOR_REV071 *FACS71;
|
||||
#else
|
||||
FACS_DESCRIPTOR_REV1 *FACS1;
|
||||
#endif
|
||||
|
||||
FACS_DESCRIPTOR_REV2 *FACS2;
|
||||
|
||||
|
||||
FUNCTION_TRACE ("AcpiTbBuildCommonFacs");
|
||||
|
||||
|
||||
/* Allocate a common FACS */
|
||||
|
||||
CommonFacs = AcpiCmCallocate (sizeof (ACPI_COMMON_FACS));
|
||||
if (!CommonFacs)
|
||||
{
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
|
||||
/* Copy fields to the new FACS */
|
||||
|
||||
if (AcpiGbl_RSDP->Revision < 2)
|
||||
{
|
||||
#ifdef _IA64
|
||||
/* 0.71 FACS */
|
||||
|
||||
FACS71 = (FACS_DESCRIPTOR_REV071 *) AcpiGbl_FACS;
|
||||
|
||||
CommonFacs->GlobalLock = (UINT32 *) &(FACS71->GlobalLock);
|
||||
CommonFacs->FirmwareWakingVector = &FACS71->FirmwareWakingVector;
|
||||
CommonFacs->VectorWidth = 64;
|
||||
#else
|
||||
/* ACPI 1.0 FACS */
|
||||
|
||||
FACS1 = (FACS_DESCRIPTOR_REV1 *) AcpiGbl_FACS;
|
||||
|
||||
CommonFacs->GlobalLock = &(FACS1->GlobalLock);
|
||||
CommonFacs->FirmwareWakingVector = (UINT64 *) &FACS1->FirmwareWakingVector;
|
||||
CommonFacs->VectorWidth = 32;
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
/* ACPI 2.0 FACS */
|
||||
|
||||
FACS2 = (FACS_DESCRIPTOR_REV2 *) AcpiGbl_FACS;
|
||||
|
||||
CommonFacs->GlobalLock = &(FACS2->GlobalLock);
|
||||
CommonFacs->FirmwareWakingVector = &FACS2->XFirmwareWakingVector;
|
||||
CommonFacs->VectorWidth = 64;
|
||||
}
|
||||
|
||||
|
||||
/* Set the global FACS pointer to point to the common FACS */
|
||||
|
||||
|
||||
AcpiGbl_FACS = CommonFacs;
|
||||
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: tbget - ACPI Table get* routines
|
||||
* $Revision: 26 $
|
||||
* $Revision: 39 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -124,6 +124,7 @@
|
||||
#define _COMPONENT TABLE_MANAGER
|
||||
MODULE_NAME ("tbget")
|
||||
|
||||
#define RSDP_CHECKSUM_LENGTH 20
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
@ -227,7 +228,7 @@ AcpiTbGetTablePtr (
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiTbGetTable (
|
||||
void *PhysicalAddress,
|
||||
ACPI_PHYSICAL_ADDRESS PhysicalAddress,
|
||||
ACPI_TABLE_HEADER *BufferPtr,
|
||||
ACPI_TABLE_DESC *TableInfo)
|
||||
{
|
||||
@ -353,9 +354,10 @@ AcpiTbGetAllTables (
|
||||
|
||||
MEMSET (&TableInfo, 0, sizeof (ACPI_TABLE_DESC));
|
||||
|
||||
/* Get the table via the RSDT */
|
||||
/* Get the table via the XSDT */
|
||||
|
||||
Status = AcpiTbGetTable ((void *) AcpiGbl_RSDT->TableOffsetEntry[Index],
|
||||
Status = AcpiTbGetTable ((ACPI_PHYSICAL_ADDRESS)
|
||||
AcpiGbl_XSDT->TableOffsetEntry[Index],
|
||||
TablePtr, &TableInfo);
|
||||
|
||||
/* Ignore a table that failed verification */
|
||||
@ -388,23 +390,21 @@ AcpiTbGetAllTables (
|
||||
}
|
||||
|
||||
|
||||
/* Dump the FACP Header */
|
||||
|
||||
DEBUG_PRINT (TRACE_TABLES, ("Hex dump of FADT Header:\n"));
|
||||
DUMP_BUFFER ((UINT8 *) AcpiGbl_FACP, sizeof (ACPI_TABLE_HEADER));
|
||||
|
||||
/* Dump the entire FACP */
|
||||
|
||||
DEBUG_PRINT (TRACE_TABLES,
|
||||
("Hex dump of FADT (After header), size %d (0x%x)\n",
|
||||
AcpiGbl_FACP->header.Length, AcpiGbl_FACP->header.Length));
|
||||
DUMP_BUFFER ((UINT8 *) (&AcpiGbl_FACP->FirmwareCtrl), AcpiGbl_FACP->header.Length);
|
||||
/*
|
||||
* Convert the FADT to a common format. This allows earlier revisions of the
|
||||
* table to coexist with newer versions, using common access code.
|
||||
*/
|
||||
Status = AcpiTbConvertTableFadt ();
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Get the minimum set of ACPI tables, namely:
|
||||
*
|
||||
* 1) FACP (via RSDT in loop above)
|
||||
* 1) FADT (via RSDT in loop above)
|
||||
* 2) FACS
|
||||
* 3) DSDT
|
||||
*
|
||||
@ -412,8 +412,8 @@ AcpiTbGetAllTables (
|
||||
|
||||
|
||||
/*
|
||||
* Get the FACS (must have the FACP first, from loop above)
|
||||
* AcpiTbGetTableFacs will fail if FACP pointer is not valid
|
||||
* Get the FACS (must have the FADT first, from loop above)
|
||||
* AcpiTbGetTableFacs will fail if FADT pointer is not valid
|
||||
*/
|
||||
|
||||
Status = AcpiTbGetTableFacs (TablePtr, &TableInfo);
|
||||
@ -422,6 +422,7 @@ AcpiTbGetAllTables (
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
|
||||
/* Install the FACS */
|
||||
|
||||
Status = AcpiTbInstallTable (TablePtr, &TableInfo);
|
||||
@ -430,10 +431,23 @@ AcpiTbGetAllTables (
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/*
|
||||
* Create the common FACS pointer table
|
||||
* (Contains pointers to the original table)
|
||||
*/
|
||||
|
||||
/* Get the DSDT (We know that the FACP if valid now) */
|
||||
Status = AcpiTbBuildCommonFacs (&TableInfo);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
Status = AcpiTbGetTable ((void *) AcpiGbl_FACP->Dsdt, TablePtr, &TableInfo);
|
||||
|
||||
/*
|
||||
* Get the DSDT (We know that the FADT is valid now)
|
||||
*/
|
||||
|
||||
Status = AcpiTbGetTable (AcpiGbl_FADT->XDsdt, TablePtr, &TableInfo);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
@ -463,9 +477,13 @@ AcpiTbGetAllTables (
|
||||
* Initialize the capabilities flags.
|
||||
* Assumes that platform supports ACPI_MODE since we have tables!
|
||||
*/
|
||||
|
||||
AcpiGbl_SystemFlags |= AcpiHwGetModeCapabilities ();
|
||||
|
||||
|
||||
/* Always delete the RSDP mapping, we are done with it */
|
||||
|
||||
AcpiTbDeleteAcpiTable (ACPI_TABLE_RSDP);
|
||||
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
@ -484,7 +502,7 @@ AcpiTbGetAllTables (
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiTbVerifyRsdp (
|
||||
void *RsdpPhysicalAddress)
|
||||
ACPI_PHYSICAL_ADDRESS RsdpPhysicalAddress)
|
||||
{
|
||||
ACPI_TABLE_DESC TableInfo;
|
||||
ACPI_STATUS Status;
|
||||
@ -498,7 +516,7 @@ AcpiTbVerifyRsdp (
|
||||
* Obtain access to the RSDP structure
|
||||
*/
|
||||
Status = AcpiOsMapMemory (RsdpPhysicalAddress,
|
||||
sizeof (ROOT_SYSTEM_DESCRIPTOR_POINTER),
|
||||
sizeof (RSDP_DESCRIPTOR),
|
||||
(void **) &TablePtr);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
@ -516,7 +534,7 @@ AcpiTbVerifyRsdp (
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
if (AcpiTbChecksum (TablePtr, sizeof (ROOT_SYSTEM_DESCRIPTOR_POINTER)) != 0)
|
||||
if (AcpiTbChecksum (TablePtr, RSDP_CHECKSUM_LENGTH) != 0)
|
||||
{
|
||||
/* Nope, BAD Checksum */
|
||||
|
||||
@ -524,10 +542,12 @@ AcpiTbVerifyRsdp (
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
/* TBD: Check extended checksum if table version >= 2 */
|
||||
|
||||
/* The RSDP supplied is OK */
|
||||
|
||||
TableInfo.Pointer = (ACPI_TABLE_HEADER *) TablePtr;
|
||||
TableInfo.Length = sizeof (ROOT_SYSTEM_DESCRIPTOR_POINTER);
|
||||
TableInfo.Length = sizeof (RSDP_DESCRIPTOR);
|
||||
TableInfo.Allocation = ACPI_MEM_MAPPED;
|
||||
TableInfo.BasePointer = TablePtr;
|
||||
|
||||
@ -542,14 +562,14 @@ AcpiTbVerifyRsdp (
|
||||
|
||||
/* Save the RSDP in a global for easy access */
|
||||
|
||||
AcpiGbl_RSDP = (ROOT_SYSTEM_DESCRIPTOR_POINTER *) TableInfo.Pointer;
|
||||
AcpiGbl_RSDP = (RSDP_DESCRIPTOR *) TableInfo.Pointer;
|
||||
return_ACPI_STATUS (Status);
|
||||
|
||||
|
||||
/* Error exit */
|
||||
Cleanup:
|
||||
|
||||
AcpiOsUnmapMemory (TablePtr, sizeof (ROOT_SYSTEM_DESCRIPTOR_POINTER));
|
||||
AcpiOsUnmapMemory (TablePtr, sizeof (RSDP_DESCRIPTOR));
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
@ -572,6 +592,9 @@ AcpiTbGetTableRsdt (
|
||||
{
|
||||
ACPI_TABLE_DESC TableInfo;
|
||||
ACPI_STATUS Status = AE_OK;
|
||||
ACPI_PHYSICAL_ADDRESS PhysicalAddress;
|
||||
UINT32 SignatureLength;
|
||||
char *TableSignature;
|
||||
|
||||
|
||||
FUNCTION_TRACE ("AcpiTbGetTableRsdt");
|
||||
@ -585,62 +608,84 @@ AcpiTbGetTableRsdt (
|
||||
("RSDP located at %p, RSDT physical=%p \n",
|
||||
AcpiGbl_RSDP, AcpiGbl_RSDP->RsdtPhysicalAddress));
|
||||
|
||||
Status = AcpiTbGetTable ((void *) AcpiGbl_RSDP->RsdtPhysicalAddress,
|
||||
NULL, &TableInfo);
|
||||
/*
|
||||
* For RSDP revision 0 or 1, we use the RSDT.
|
||||
* For RSDP revision 2 (and above), we use the XSDT
|
||||
*/
|
||||
if (AcpiGbl_RSDP->Revision < 2)
|
||||
{
|
||||
#ifdef _IA64
|
||||
/* 0.71 RSDP has 64bit Rsdt address field */
|
||||
PhysicalAddress = ((RSDP_DESCRIPTOR_REV071 *)AcpiGbl_RSDP)->RsdtPhysicalAddress;
|
||||
#else
|
||||
PhysicalAddress = AcpiGbl_RSDP->RsdtPhysicalAddress;
|
||||
#endif
|
||||
TableSignature = RSDT_SIG;
|
||||
SignatureLength = sizeof (RSDT_SIG) -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
PhysicalAddress = (ACPI_PHYSICAL_ADDRESS) AcpiGbl_RSDP->XsdtPhysicalAddress;
|
||||
TableSignature = XSDT_SIG;
|
||||
SignatureLength = sizeof (XSDT_SIG) -1;
|
||||
}
|
||||
|
||||
|
||||
/* Get the RSDT/XSDT */
|
||||
|
||||
Status = AcpiTbGetTable (PhysicalAddress, NULL, &TableInfo);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
DEBUG_PRINT (ACPI_ERROR, ("GetTableRsdt: Could not get the RSDT, %s\n",
|
||||
AcpiCmFormatException (Status)));
|
||||
|
||||
if (Status == AE_BAD_SIGNATURE)
|
||||
{
|
||||
/* Invalid RSDT signature */
|
||||
|
||||
REPORT_ERROR (("Invalid signature where RSDP indicates RSDT should be located\n"));
|
||||
|
||||
DUMP_BUFFER (AcpiGbl_RSDP, 20);
|
||||
|
||||
DEBUG_PRINT_RAW (ACPI_ERROR,
|
||||
("RSDP points to RSDT at %lXh, but RSDT signature is invalid\n",
|
||||
(void *) AcpiGbl_RSDP->RsdtPhysicalAddress));
|
||||
}
|
||||
|
||||
REPORT_ERROR (("Unable to locate the RSDT\n"));
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
|
||||
/* Always delete the RSDP mapping */
|
||||
/* Check the RSDT or XSDT signature */
|
||||
|
||||
AcpiTbDeleteAcpiTable (ACPI_TABLE_RSDP);
|
||||
if (STRNCMP ((char *) TableInfo.Pointer, TableSignature,
|
||||
SignatureLength))
|
||||
{
|
||||
/* Invalid RSDT or XSDT signature */
|
||||
|
||||
/* Save the table pointers and allocation info */
|
||||
REPORT_ERROR (("Invalid signature where RSDP indicates %s should be located\n",
|
||||
TableSignature));
|
||||
|
||||
Status = AcpiTbInitTableDescriptor (ACPI_TABLE_RSDT, &TableInfo);
|
||||
DUMP_BUFFER (AcpiGbl_RSDP, 20);
|
||||
|
||||
DEBUG_PRINT_RAW (ACPI_ERROR,
|
||||
("RSDP points to %X at %lXh, but signature is invalid\n",
|
||||
TableSignature, (void *) AcpiGbl_RSDP->RsdtPhysicalAddress));
|
||||
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
|
||||
/* Valid RSDT signature, verify the checksum */
|
||||
|
||||
Status = AcpiTbVerifyTableChecksum (TableInfo.Pointer);
|
||||
|
||||
|
||||
/* Convert and/or copy to an XSDT structure */
|
||||
|
||||
Status = AcpiTbConvertToXsdt (&TableInfo, NumberOfTables);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
AcpiGbl_RSDT = (ROOT_SYSTEM_DESCRIPTION_TABLE *) TableInfo.Pointer;
|
||||
/* Save the table pointers and allocation info */
|
||||
|
||||
Status = AcpiTbInitTableDescriptor (ACPI_TABLE_XSDT, &TableInfo);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/* Valid RSDT signature, verify the checksum */
|
||||
|
||||
DEBUG_PRINT (ACPI_INFO, ("RSDT located at %p\n", AcpiGbl_RSDT));
|
||||
|
||||
Status = AcpiTbVerifyTableChecksum ((ACPI_TABLE_HEADER *) AcpiGbl_RSDT);
|
||||
|
||||
/*
|
||||
* Determine the number of tables pointed to by the RSDT.
|
||||
* This is defined by the ACPI Specification to be the number of
|
||||
* pointers contained within the RSDT. The size of the pointers
|
||||
* is architecture-dependent.
|
||||
*/
|
||||
|
||||
*NumberOfTables = ((AcpiGbl_RSDT->header.Length -
|
||||
sizeof (ACPI_TABLE_HEADER)) / sizeof (void *));
|
||||
AcpiGbl_XSDT = (XSDT_DESCRIPTOR *) TableInfo.Pointer;
|
||||
|
||||
DEBUG_PRINT (ACPI_INFO, ("XSDT located at %p\n", AcpiGbl_XSDT));
|
||||
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
@ -656,9 +701,9 @@ AcpiTbGetTableRsdt (
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
* DESCRIPTION: Returns a pointer to the FACS as defined in FACP. This
|
||||
* function assumes the global variable FACP has been
|
||||
* correctly initialized. The value of FACP->FirmwareCtrl
|
||||
* DESCRIPTION: Returns a pointer to the FACS as defined in FADT. This
|
||||
* function assumes the global variable FADT has been
|
||||
* correctly initialized. The value of FADT->FirmwareCtrl
|
||||
* into a far pointer which is returned.
|
||||
*
|
||||
*****************************************************************************/
|
||||
@ -677,14 +722,14 @@ AcpiTbGetTableFacs (
|
||||
FUNCTION_TRACE ("TbGetTableFacs");
|
||||
|
||||
|
||||
/* Must have a valid FACP pointer */
|
||||
/* Must have a valid FADT pointer */
|
||||
|
||||
if (!AcpiGbl_FACP)
|
||||
if (!AcpiGbl_FADT)
|
||||
{
|
||||
return_ACPI_STATUS (AE_NO_ACPI_TABLES);
|
||||
}
|
||||
|
||||
Size = sizeof (FIRMWARE_ACPI_CONTROL_STRUCTURE);
|
||||
Size = sizeof (FACS_DESCRIPTOR);
|
||||
if (BufferPtr)
|
||||
{
|
||||
/*
|
||||
@ -708,7 +753,7 @@ AcpiTbGetTableFacs (
|
||||
{
|
||||
/* Just map the physical memory to our address space */
|
||||
|
||||
Status = AcpiTbMapAcpiTable ((void *) AcpiGbl_FACP->FirmwareCtrl,
|
||||
Status = AcpiTbMapAcpiTable (AcpiGbl_FADT->XFirmwareCtrl,
|
||||
&Size, &TablePtr);
|
||||
if (ACPI_FAILURE(Status))
|
||||
{
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: tbinstal - ACPI table installation and removal
|
||||
* $Revision: 32 $
|
||||
* $Revision: 33 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -479,38 +479,24 @@ AcpiTbDeleteAcpiTable (
|
||||
AcpiGbl_RSDP = NULL;
|
||||
break;
|
||||
|
||||
case ACPI_TABLE_APIC:
|
||||
AcpiGbl_APIC = NULL;
|
||||
break;
|
||||
|
||||
case ACPI_TABLE_DSDT:
|
||||
AcpiGbl_DSDT = NULL;
|
||||
break;
|
||||
|
||||
case ACPI_TABLE_FACP:
|
||||
AcpiGbl_FACP = NULL;
|
||||
case ACPI_TABLE_FADT:
|
||||
AcpiGbl_FADT = NULL;
|
||||
break;
|
||||
|
||||
case ACPI_TABLE_FACS:
|
||||
AcpiGbl_FACS = NULL;
|
||||
break;
|
||||
|
||||
case ACPI_TABLE_PSDT:
|
||||
break;
|
||||
|
||||
case ACPI_TABLE_RSDT:
|
||||
AcpiGbl_RSDT = NULL;
|
||||
case ACPI_TABLE_XSDT:
|
||||
AcpiGbl_XSDT = NULL;
|
||||
break;
|
||||
|
||||
case ACPI_TABLE_SSDT:
|
||||
break;
|
||||
|
||||
case ACPI_TABLE_SBST:
|
||||
AcpiGbl_SBST = NULL;
|
||||
|
||||
case ACPI_TABLE_SPIC:
|
||||
break;
|
||||
|
||||
case ACPI_TABLE_PSDT:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: tbutils - Table manipulation utilities
|
||||
* $Revision: 28 $
|
||||
* $Revision: 30 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -337,7 +337,7 @@ AcpiTbValidateTableHeader (
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiTbMapAcpiTable (
|
||||
void *PhysicalAddress,
|
||||
ACPI_PHYSICAL_ADDRESS PhysicalAddress,
|
||||
UINT32 *Size,
|
||||
void **LogicalAddress)
|
||||
{
|
||||
|
@ -2,7 +2,7 @@
|
||||
*
|
||||
* Module Name: tbxface - Public interfaces to the ACPI subsystem
|
||||
* ACPI table oriented interfaces
|
||||
* $Revision: 28 $
|
||||
* $Revision: 32 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -142,7 +142,7 @@
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiLoadTables (
|
||||
void *RsdpPhysicalAddress)
|
||||
ACPI_PHYSICAL_ADDRESS RsdpPhysicalAddress)
|
||||
{
|
||||
ACPI_STATUS Status = AE_OK;
|
||||
UINT32 NumberOfTables = 0;
|
||||
@ -156,6 +156,8 @@ AcpiLoadTables (
|
||||
Status = AcpiTbVerifyRsdp (RsdpPhysicalAddress);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
REPORT_ERROR (("AcpiLoadTables: RSDP Failed validation: %s\n",
|
||||
AcpiCmFormatException (Status)));
|
||||
goto ErrorExit;
|
||||
}
|
||||
|
||||
@ -164,6 +166,8 @@ AcpiLoadTables (
|
||||
Status = AcpiTbGetTableRsdt (&NumberOfTables);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
REPORT_ERROR (("AcpiLoadTables: Could not load RSDT: %s\n",
|
||||
AcpiCmFormatException (Status)));
|
||||
goto ErrorExit;
|
||||
}
|
||||
|
||||
@ -172,6 +176,8 @@ AcpiLoadTables (
|
||||
Status = AcpiTbGetAllTables (NumberOfTables, NULL);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
REPORT_ERROR (("AcpiLoadTables: Error getting required tables (DSDT/FADT/FACS): %s\n",
|
||||
AcpiCmFormatException (Status)));
|
||||
goto ErrorExit;
|
||||
}
|
||||
|
||||
@ -183,6 +189,8 @@ AcpiLoadTables (
|
||||
Status = AcpiNsLoadNamespace ();
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
REPORT_ERROR (("AcpiLoadTables: Could not load namespace: %s\n",
|
||||
AcpiCmFormatException (Status)));
|
||||
goto ErrorExit;
|
||||
}
|
||||
|
||||
@ -232,7 +240,7 @@ AcpiLoadTable (
|
||||
|
||||
/* Copy the table to a local buffer */
|
||||
|
||||
Status = AcpiTbGetTable (NULL, TablePtr, &TableInfo);
|
||||
Status = AcpiTbGetTable (0, TablePtr, &TableInfo);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
@ -481,7 +489,7 @@ AcpiGetTable (
|
||||
/*
|
||||
* RSD PTR is the only "table" without a header
|
||||
*/
|
||||
RetBufLen = sizeof (ROOT_SYSTEM_DESCRIPTOR_POINTER);
|
||||
RetBufLen = sizeof (RSDP_DESCRIPTOR);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: tbxfroot - Find the root ACPI table (RSDT)
|
||||
* $Revision: 28 $
|
||||
* $Revision: 33 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -124,6 +124,8 @@
|
||||
#define _COMPONENT TABLE_MANAGER
|
||||
MODULE_NAME ("tbxfroot")
|
||||
|
||||
#define RSDP_CHECKSUM_LENGTH 20
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
@ -139,7 +141,7 @@
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiFindRootPointer (
|
||||
void **RsdpPhysicalAddress)
|
||||
ACPI_PHYSICAL_ADDRESS *RsdpPhysicalAddress)
|
||||
{
|
||||
ACPI_TABLE_DESC TableInfo;
|
||||
ACPI_STATUS Status;
|
||||
@ -153,11 +155,11 @@ AcpiFindRootPointer (
|
||||
Status = AcpiTbFindRsdp (&TableInfo);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
REPORT_WARNING (("RSDP structure not found\n"));
|
||||
DEBUG_PRINT (ACPI_ERROR, ("RSDP structure not found\n"));
|
||||
return_ACPI_STATUS (AE_NO_ACPI_TABLES);
|
||||
}
|
||||
|
||||
*RsdpPhysicalAddress = TableInfo.Pointer;
|
||||
*RsdpPhysicalAddress = TableInfo.PhysicalAddress;
|
||||
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
}
|
||||
@ -198,8 +200,7 @@ AcpiTbScanMemoryForRsdp (
|
||||
|
||||
if (STRNCMP ((NATIVE_CHAR *) MemRover,
|
||||
RSDP_SIG, sizeof (RSDP_SIG)-1) == 0 &&
|
||||
AcpiTbChecksum (MemRover,
|
||||
sizeof (ROOT_SYSTEM_DESCRIPTOR_POINTER)) == 0)
|
||||
AcpiTbChecksum (MemRover, RSDP_CHECKSUM_LENGTH) == 0)
|
||||
{
|
||||
/* If so, we have found the RSDP */
|
||||
|
||||
@ -238,7 +239,7 @@ AcpiTbFindRsdp (
|
||||
{
|
||||
UINT8 *TablePtr;
|
||||
UINT8 *MemRover;
|
||||
UINT8 *PhysAddr;
|
||||
UINT64 PhysAddr;
|
||||
ACPI_STATUS Status = AE_OK;
|
||||
|
||||
|
||||
@ -274,7 +275,7 @@ AcpiTbFindRsdp (
|
||||
PhysAddr = LO_RSDP_WINDOW_BASE;
|
||||
PhysAddr += (MemRover - TablePtr);
|
||||
|
||||
TableInfo->Pointer = (ACPI_TABLE_HEADER *) PhysAddr;
|
||||
TableInfo->PhysicalAddress = PhysAddr;
|
||||
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
}
|
||||
@ -305,7 +306,7 @@ AcpiTbFindRsdp (
|
||||
PhysAddr = HI_RSDP_WINDOW_BASE;
|
||||
PhysAddr += (MemRover - TablePtr);
|
||||
|
||||
TableInfo->Pointer = (ACPI_TABLE_HEADER *) PhysAddr;
|
||||
TableInfo->PhysicalAddress = PhysAddr;
|
||||
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: acdispat.h - dispatcher (parser to interpreter interface)
|
||||
* $Revision: 31 $
|
||||
* $Revision: 32 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -129,8 +129,6 @@
|
||||
#define MTH_TYPE_ARG 1
|
||||
|
||||
|
||||
|
||||
|
||||
/* Common interfaces */
|
||||
|
||||
ACPI_STATUS
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: acefi.h - OS specific defines, etc.
|
||||
* $Revision: 1 $
|
||||
* $Revision: 3 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -123,5 +123,14 @@
|
||||
#include <efistdarg.h>
|
||||
#include <efilib.h>
|
||||
|
||||
#undef UINT8
|
||||
#undef BOOLEAN
|
||||
#undef UCHAR
|
||||
#undef UINT16
|
||||
#undef INT32
|
||||
#undef UINT32
|
||||
#undef INT64
|
||||
#undef UINT64
|
||||
|
||||
|
||||
#endif /* __ACEFI_H__ */
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: acenv.h - Generation environment specific items
|
||||
* $Revision: 61 $
|
||||
* $Revision: 65 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -139,6 +139,13 @@
|
||||
#define ACPI_USE_SYSTEM_CLIBRARY
|
||||
#endif
|
||||
|
||||
#ifdef _ACPI_ASL_COMPILER
|
||||
#define ACPI_DEBUG
|
||||
#define ACPI_APPLICATION
|
||||
#define ENABLE_DEBUGGER
|
||||
#define ACPI_USE_SYSTEM_CLIBRARY
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* Environment configuration. The purpose of this file is to interface to the
|
||||
@ -359,16 +366,4 @@ typedef char *va_list;
|
||||
platform header. */
|
||||
|
||||
|
||||
|
||||
/* TBD: move this elsewhere! */
|
||||
|
||||
#ifdef __ia64__
|
||||
/* Look at interim FADT to determine IO or memory mapped */
|
||||
#define IoAddressSpace(flag) (AcpiGbl_FACP->AddressSpace & flag)
|
||||
#else
|
||||
/* always IO space */
|
||||
#define IoAddressSpace(flag) (1)
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* __ACENV_H__ */
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: acevents.h - Event subcomponent prototypes and defines
|
||||
* $Revision: 59 $
|
||||
* $Revision: 60 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -200,7 +200,7 @@ ACPI_STATUS
|
||||
AcpiEvAddressSpaceDispatch (
|
||||
ACPI_OPERAND_OBJECT *RegionObj,
|
||||
UINT32 Function,
|
||||
ACPI_INTEGER Address,
|
||||
ACPI_PHYSICAL_ADDRESS Address,
|
||||
UINT32 BitWidth,
|
||||
UINT32 *Value);
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: acglobal.h - Declarations for global variables
|
||||
* $Revision: 85 $
|
||||
* $Revision: 92 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -165,13 +165,12 @@ extern UINT32 AcpiGbl_NestingLevel;
|
||||
* of each in the system. Each global points to the actual table.
|
||||
*
|
||||
*/
|
||||
ACPI_EXTERN ROOT_SYSTEM_DESCRIPTOR_POINTER *AcpiGbl_RSDP;
|
||||
ACPI_EXTERN ROOT_SYSTEM_DESCRIPTION_TABLE *AcpiGbl_RSDT;
|
||||
ACPI_EXTERN FIRMWARE_ACPI_CONTROL_STRUCTURE *AcpiGbl_FACS;
|
||||
ACPI_EXTERN FIXED_ACPI_DESCRIPTION_TABLE *AcpiGbl_FACP;
|
||||
ACPI_EXTERN APIC_TABLE *AcpiGbl_APIC;
|
||||
ACPI_EXTERN RSDP_DESCRIPTOR *AcpiGbl_RSDP;
|
||||
ACPI_EXTERN XSDT_DESCRIPTOR *AcpiGbl_XSDT;
|
||||
ACPI_EXTERN FADT_DESCRIPTOR *AcpiGbl_FADT;
|
||||
ACPI_EXTERN ACPI_TABLE_HEADER *AcpiGbl_DSDT;
|
||||
ACPI_EXTERN ACPI_TABLE_HEADER *AcpiGbl_SBST;
|
||||
ACPI_EXTERN ACPI_COMMON_FACS *AcpiGbl_FACS;
|
||||
|
||||
/*
|
||||
* Since there may be multiple SSDTs and PSDTS, a single pointer is not
|
||||
* sufficient; Therefore, there isn't one!
|
||||
@ -254,6 +253,7 @@ ACPI_EXTERN ACPI_OBJECT_NOTIFY_HANDLER AcpiGbl_SysNotify;
|
||||
extern BOOLEAN AcpiGbl_Shutdown;
|
||||
extern UINT32 AcpiGbl_SystemFlags;
|
||||
extern UINT32 AcpiGbl_StartupFlags;
|
||||
extern UINT8 AcpiGbl_DecodeTo8bit[];
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
@ -288,23 +288,8 @@ ACPI_EXTERN ALLOCATION_INFO *AcpiGbl_TailAllocPtr;
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
ACPI_EXTERN UINT32 AcpiGbl_WhenToParseMethods;
|
||||
ACPI_EXTERN ACPI_WALK_LIST *AcpiGbl_CurrentWalkList;
|
||||
|
||||
/* Base of AML block, and pointer to current location in it */
|
||||
|
||||
ACPI_EXTERN UINT8 *AcpiGbl_PCodeBase;
|
||||
ACPI_EXTERN UINT8 *AcpiGbl_PCode;
|
||||
|
||||
/*
|
||||
* Length of AML block, and remaining length of current package.
|
||||
*/
|
||||
ACPI_EXTERN UINT32 AcpiGbl_PCodeBlockLen;
|
||||
ACPI_EXTERN UINT32 AcpiGbl_PCodeLen;
|
||||
|
||||
ACPI_EXTERN UINT32 AcpiGbl_BufSeq; /* Counts allocated Buffer descriptors */
|
||||
ACPI_EXTERN UINT32 AcpiGbl_NodeErr; /* Indicate if inc_error should be called */
|
||||
|
||||
/*
|
||||
* Handle to the last method found - used during pass1 of load
|
||||
*/
|
||||
@ -330,10 +315,6 @@ ACPI_EXTERN UINT8 AcpiGbl_CmSingleStep;
|
||||
|
||||
ACPI_EXTERN ACPI_PARSE_OBJECT *AcpiGbl_ParsedNamespaceRoot;
|
||||
|
||||
extern ACPI_OPCODE_INFO AcpiGbl_AmlOpInfo[];
|
||||
extern UINT8 AcpiGbl_AmlOpInfoIndex[256];
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
*
|
||||
* Hardware globals
|
||||
@ -380,9 +361,10 @@ ACPI_EXTERN UINT32 AcpiGbl_EventCount[NUM_FIXED_EVENTS];
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef ENABLE_DEBUGGER
|
||||
ACPI_EXTERN BOOLEAN AcpiGbl_MethodExecuting;
|
||||
ACPI_EXTERN BOOLEAN AcpiGbl_DbTerminateThreads;
|
||||
|
||||
#endif
|
||||
|
||||
/* Memory allocation metrics - Debug Only! */
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: achware.h -- hardware specific interfaces
|
||||
* $Revision: 42 $
|
||||
* $Revision: 48 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -147,11 +147,37 @@ AcpiHwGetModeCapabilities (
|
||||
|
||||
/* Register I/O Prototypes */
|
||||
|
||||
|
||||
UINT32
|
||||
AcpiHwRegisterAccess (
|
||||
AcpiHwRegisterBitAccess (
|
||||
NATIVE_UINT ReadWrite,
|
||||
BOOLEAN UseLock,
|
||||
UINT32 RegisterId, ... /* DWORD Value */);
|
||||
UINT32 RegisterId,
|
||||
... /* DWORD Write Value */);
|
||||
|
||||
UINT32
|
||||
AcpiHwRegisterRead (
|
||||
BOOLEAN UseLock,
|
||||
UINT32 RegisterId);
|
||||
|
||||
void
|
||||
AcpiHwRegisterWrite (
|
||||
BOOLEAN UseLock,
|
||||
UINT32 RegisterId,
|
||||
UINT32 Value);
|
||||
|
||||
UINT32
|
||||
AcpiHwLowLevelRead (
|
||||
UINT32 Width,
|
||||
ACPI_GAS *Reg,
|
||||
UINT32 Offset);
|
||||
|
||||
void
|
||||
AcpiHwLowLevelWrite (
|
||||
UINT32 Width,
|
||||
UINT32 Value,
|
||||
ACPI_GAS *Reg,
|
||||
UINT32 Offset);
|
||||
|
||||
void
|
||||
AcpiHwClearAcpiStatus (
|
||||
@ -216,6 +242,16 @@ ACPI_STATUS
|
||||
AcpiHwGetCxInfo (
|
||||
UINT32 CxStates[]);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiHwGetCxHandler (
|
||||
UINT32 CxState,
|
||||
ACPI_C_STATE_HANDLER *Handler);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiHwSetCxHandler (
|
||||
UINT32 CxState,
|
||||
ACPI_C_STATE_HANDLER Handler);
|
||||
|
||||
|
||||
/* Throttling Prototypes */
|
||||
|
||||
@ -256,5 +292,9 @@ UINT32
|
||||
AcpiHwPmtResolution (
|
||||
void);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiGetTimer (
|
||||
UINT32 *OutTicks);
|
||||
|
||||
|
||||
#endif /* __ACHWARE_H__ */
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: acinterp.h - Interpreter subcomponent prototypes and defines
|
||||
* $Revision: 82 $
|
||||
* $Revision: 85 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -417,7 +417,8 @@ AcpiAmlResolveToValue (
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiAmlResolveNodeToValue (
|
||||
ACPI_NAMESPACE_NODE **StackPtr);
|
||||
ACPI_NAMESPACE_NODE **StackPtr,
|
||||
ACPI_WALK_STATE *WalkState);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiAmlResolveObjectToValue (
|
||||
@ -533,6 +534,11 @@ void
|
||||
AcpiAmlExitInterpreter (
|
||||
void);
|
||||
|
||||
void
|
||||
AcpiAmlTruncateFor32bitTable (
|
||||
ACPI_OPERAND_OBJECT *ObjDesc,
|
||||
ACPI_WALK_STATE *WalkState);
|
||||
|
||||
BOOLEAN
|
||||
AcpiAmlValidateObjectType (
|
||||
ACPI_OBJECT_TYPE Type);
|
||||
@ -545,10 +551,6 @@ ACPI_STATUS
|
||||
AcpiAmlReleaseGlobalLock (
|
||||
BOOLEAN Locked);
|
||||
|
||||
UINT32
|
||||
AcpiAmlBufSeq (
|
||||
void);
|
||||
|
||||
UINT32
|
||||
AcpiAmlDigitsNeeded (
|
||||
ACPI_INTEGER Value,
|
||||
@ -578,7 +580,7 @@ AcpiAmlBuildCopyInternalPackageObject (
|
||||
ACPI_STATUS
|
||||
AcpiAmlSystemMemorySpaceHandler (
|
||||
UINT32 Function,
|
||||
ACPI_INTEGER Address,
|
||||
ACPI_PHYSICAL_ADDRESS Address,
|
||||
UINT32 BitWidth,
|
||||
UINT32 *Value,
|
||||
void *HandlerContext,
|
||||
@ -587,7 +589,7 @@ AcpiAmlSystemMemorySpaceHandler (
|
||||
ACPI_STATUS
|
||||
AcpiAmlSystemIoSpaceHandler (
|
||||
UINT32 Function,
|
||||
ACPI_INTEGER Address,
|
||||
ACPI_PHYSICAL_ADDRESS Address,
|
||||
UINT32 BitWidth,
|
||||
UINT32 *Value,
|
||||
void *HandlerContext,
|
||||
@ -596,7 +598,7 @@ AcpiAmlSystemIoSpaceHandler (
|
||||
ACPI_STATUS
|
||||
AcpiAmlPciConfigSpaceHandler (
|
||||
UINT32 Function,
|
||||
ACPI_INTEGER Address,
|
||||
ACPI_PHYSICAL_ADDRESS Address,
|
||||
UINT32 BitWidth,
|
||||
UINT32 *Value,
|
||||
void *HandlerContext,
|
||||
@ -605,7 +607,7 @@ AcpiAmlPciConfigSpaceHandler (
|
||||
ACPI_STATUS
|
||||
AcpiAmlEmbeddedControllerSpaceHandler (
|
||||
UINT32 Function,
|
||||
ACPI_INTEGER Address,
|
||||
ACPI_PHYSICAL_ADDRESS Address,
|
||||
UINT32 BitWidth,
|
||||
UINT32 *Value,
|
||||
void *HandlerContext,
|
||||
@ -614,7 +616,7 @@ AcpiAmlEmbeddedControllerSpaceHandler (
|
||||
ACPI_STATUS
|
||||
AcpiAmlSmBusSpaceHandler (
|
||||
UINT32 Function,
|
||||
ACPI_INTEGER Address,
|
||||
ACPI_PHYSICAL_ADDRESS Address,
|
||||
UINT32 BitWidth,
|
||||
UINT32 *Value,
|
||||
void *HandlerContext,
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: aclocal.h - Internal data types used across the ACPI subsystem
|
||||
* $Revision: 82 $
|
||||
* $Revision: 89 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -268,6 +268,7 @@ typedef struct acpi_node
|
||||
|
||||
#define ANOBJ_AML_ATTACHMENT 0x1
|
||||
#define ANOBJ_END_OF_PEER_LIST 0x2
|
||||
#define ANOBJ_DATA_WIDTH_32 0x4 /* Parent table is 64-bits */
|
||||
|
||||
|
||||
/*
|
||||
@ -281,6 +282,7 @@ typedef struct AcpiTableDesc
|
||||
ACPI_TABLE_HEADER *Pointer;
|
||||
void *BasePointer;
|
||||
UINT8 *AmlPointer;
|
||||
UINT64 PhysicalAddress;
|
||||
UINT32 AmlLength;
|
||||
UINT32 Length;
|
||||
UINT32 Count;
|
||||
@ -544,8 +546,7 @@ typedef struct acpi_opcode_info
|
||||
UINT32 ParseArgs; /* Grammar/Parse time arguments */
|
||||
UINT32 RuntimeArgs; /* Interpret time arguments */
|
||||
|
||||
DEBUG_ONLY_MEMBERS (
|
||||
NATIVE_CHAR *Name) /* op name (debug only) */
|
||||
DEBUG_ONLY_MEMBERS (NATIVE_CHAR *Name) /* op name (debug only) */
|
||||
|
||||
} ACPI_OPCODE_INFO;
|
||||
|
||||
@ -572,7 +573,7 @@ typedef union acpi_parse_val
|
||||
DEBUG_ONLY_MEMBERS (\
|
||||
NATIVE_CHAR OpName[16]) /* op name (debug only) */\
|
||||
/* NON-DEBUG members below: */\
|
||||
ACPI_NAMESPACE_NODE *Node;/* for use by interpreter */\
|
||||
ACPI_NAMESPACE_NODE *Node; /* for use by interpreter */\
|
||||
ACPI_PARSE_VALUE Value; /* Value or args associated with the opcode */\
|
||||
|
||||
|
||||
@ -649,7 +650,7 @@ typedef struct acpi_walk_state
|
||||
UINT8 CurrentResult; /* */
|
||||
|
||||
struct acpi_walk_state *Next; /* Next WalkState in list */
|
||||
ACPI_PARSE_OBJECT *Origin; /* Start of walk */
|
||||
ACPI_PARSE_OBJECT *Origin; /* Start of walk [Obsolete] */
|
||||
|
||||
/* TBD: Obsolete with removal of WALK procedure ? */
|
||||
ACPI_PARSE_OBJECT *PrevOp; /* Last op that was processed */
|
||||
@ -769,72 +770,92 @@ typedef struct acpi_get_devices_info
|
||||
#define MAX_CX_STATE_LATENCY 0xFFFFFFFF
|
||||
#define MAX_CX_STATES 4
|
||||
|
||||
|
||||
/*
|
||||
* The #define's and enum below establish an abstract way of identifying what
|
||||
* register block and register is to be accessed. Do not change any of the
|
||||
* values as they are used in switch statements and offset calculations.
|
||||
*/
|
||||
|
||||
#define REGISTER_BLOCK_MASK 0xFF00
|
||||
#define BIT_IN_REGISTER_MASK 0x00FF
|
||||
#define PM1_EVT 0x0100
|
||||
#define PM1_CONTROL 0x0200
|
||||
#define PM2_CONTROL 0x0300
|
||||
#define PM_TIMER 0x0400
|
||||
#define PROCESSOR_BLOCK 0x0500
|
||||
#define GPE0_STS_BLOCK 0x0600
|
||||
#define GPE0_EN_BLOCK 0x0700
|
||||
#define GPE1_STS_BLOCK 0x0800
|
||||
#define GPE1_EN_BLOCK 0x0900
|
||||
#define REGISTER_BLOCK_MASK 0xFF00 /* Register Block Id */
|
||||
#define BIT_IN_REGISTER_MASK 0x00FF /* Bit Id in the Register Block Id */
|
||||
#define BYTE_IN_REGISTER_MASK 0x00FF /* Register Offset in the Register Block */
|
||||
|
||||
enum
|
||||
{
|
||||
/* PM1 status register ids */
|
||||
#define REGISTER_BLOCK_ID(RegId) (RegId & REGISTER_BLOCK_MASK)
|
||||
#define REGISTER_BIT_ID(RegId) (RegId & BIT_IN_REGISTER_MASK)
|
||||
#define REGISTER_OFFSET(RegId) (RegId & BYTE_IN_REGISTER_MASK)
|
||||
|
||||
TMR_STS = (PM1_EVT | 0x01),
|
||||
BM_STS,
|
||||
GBL_STS,
|
||||
PWRBTN_STS,
|
||||
SLPBTN_STS,
|
||||
RTC_STS,
|
||||
WAK_STS,
|
||||
/*
|
||||
* Access Rule
|
||||
* To access a Register Bit:
|
||||
* -> Use Bit Name (= Register Block Id | Bit Id) defined in the enum.
|
||||
*
|
||||
* To access a Register:
|
||||
* -> Use Register Id (= Register Block Id | Register Offset)
|
||||
*/
|
||||
|
||||
/* PM1 enable register ids */
|
||||
|
||||
TMR_EN,
|
||||
/* need to skip 1 enable number since there's no bus master enable register */
|
||||
GBL_EN = (PM1_EVT | 0x0A),
|
||||
PWRBTN_EN,
|
||||
SLPBTN_EN,
|
||||
RTC_EN,
|
||||
/*
|
||||
* Register Block Id
|
||||
*/
|
||||
#define PM1_STS 0x0100
|
||||
#define PM1_EN 0x0200
|
||||
#define PM1_CONTROL 0x0300
|
||||
#define PM2_CONTROL 0x0400
|
||||
#define PM_TIMER 0x0500
|
||||
#define PROCESSOR_BLOCK 0x0600
|
||||
#define GPE0_STS_BLOCK 0x0700
|
||||
#define GPE0_EN_BLOCK 0x0800
|
||||
#define GPE1_STS_BLOCK 0x0900
|
||||
#define GPE1_EN_BLOCK 0x0A00
|
||||
#define SMI_CMD_BLOCK 0x0B00
|
||||
|
||||
/* PM1 control register ids */
|
||||
/*
|
||||
* Address space bitmasks for mmio or io spaces
|
||||
*/
|
||||
|
||||
SCI_EN = (PM1_CONTROL | 0x01),
|
||||
BM_RLD,
|
||||
GBL_RLS,
|
||||
SLP_TYPE_A,
|
||||
SLP_TYPE_B,
|
||||
SLP_EN,
|
||||
#define SMI_CMD_ADDRESS_SPACE 0x01
|
||||
#define PM1_BLK_ADDRESS_SPACE 0x02
|
||||
#define PM2_CNT_BLK_ADDRESS_SPACE 0x04
|
||||
#define PM_TMR_BLK_ADDRESS_SPACE 0x08
|
||||
#define GPE0_BLK_ADDRESS_SPACE 0x10
|
||||
#define GPE1_BLK_ADDRESS_SPACE 0x20
|
||||
|
||||
/* PM2 control register ids */
|
||||
/*
|
||||
* Control bit definitions
|
||||
*/
|
||||
#define TMR_STS (PM1_STS | 0x01)
|
||||
#define BM_STS (PM1_STS | 0x02)
|
||||
#define GBL_STS (PM1_STS | 0x03)
|
||||
#define PWRBTN_STS (PM1_STS | 0x04)
|
||||
#define SLPBTN_STS (PM1_STS | 0x05)
|
||||
#define RTC_STS (PM1_STS | 0x06)
|
||||
#define WAK_STS (PM1_STS | 0x07)
|
||||
|
||||
ARB_DIS = (PM2_CONTROL | 0x01),
|
||||
#define TMR_EN (PM1_EN | 0x01)
|
||||
/* no BM_EN */
|
||||
#define GBL_EN (PM1_EN | 0x03)
|
||||
#define PWRBTN_EN (PM1_EN | 0x04)
|
||||
#define SLPBTN_EN (PM1_EN | 0x05)
|
||||
#define RTC_EN (PM1_EN | 0x06)
|
||||
#define WAK_EN (PM1_EN | 0x07)
|
||||
|
||||
/* PM Timer register ids */
|
||||
#define SCI_EN (PM1_CONTROL | 0x01)
|
||||
#define BM_RLD (PM1_CONTROL | 0x02)
|
||||
#define GBL_RLS (PM1_CONTROL | 0x03)
|
||||
#define SLP_TYPE_A (PM1_CONTROL | 0x04)
|
||||
#define SLP_TYPE_B (PM1_CONTROL | 0x05)
|
||||
#define SLP_EN (PM1_CONTROL | 0x06)
|
||||
|
||||
TMR_VAL = (PM_TIMER | 0x01),
|
||||
#define ARB_DIS (PM2_CONTROL | 0x01)
|
||||
|
||||
GPE0_STS = (GPE0_STS_BLOCK | 0x01),
|
||||
GPE0_EN = (GPE0_EN_BLOCK | 0x01),
|
||||
#define TMR_VAL (PM_TIMER | 0x01)
|
||||
|
||||
GPE1_STS = (GPE1_STS_BLOCK | 0x01),
|
||||
GPE1_EN = (GPE0_EN_BLOCK | 0x01),
|
||||
#define GPE0_STS (GPE0_STS_BLOCK | 0x01)
|
||||
#define GPE0_EN (GPE0_EN_BLOCK | 0x01)
|
||||
|
||||
/* Last register value is one less than LAST_REG */
|
||||
|
||||
LAST_REG
|
||||
};
|
||||
#define GPE1_STS (GPE1_STS_BLOCK | 0x01)
|
||||
#define GPE1_EN (GPE1_EN_BLOCK | 0x01)
|
||||
|
||||
|
||||
#define TMR_STS_MASK 0x0001
|
||||
@ -845,8 +866,9 @@ enum
|
||||
#define RTC_STS_MASK 0x0400
|
||||
#define WAK_STS_MASK 0x8000
|
||||
|
||||
#define ALL_FIXED_STS_BITS (TMR_STS_MASK | BM_STS_MASK | GBL_STS_MASK | PWRBTN_STS_MASK | \
|
||||
SLPBTN_STS_MASK | RTC_STS_MASK | WAK_STS_MASK)
|
||||
#define ALL_FIXED_STS_BITS (TMR_STS_MASK | BM_STS_MASK | GBL_STS_MASK \
|
||||
| PWRBTN_STS_MASK | SLPBTN_STS_MASK \
|
||||
| RTC_STS_MASK | WAK_STS_MASK)
|
||||
|
||||
#define TMR_EN_MASK 0x0001
|
||||
#define GBL_EN_MASK 0x0020
|
||||
@ -861,6 +883,7 @@ enum
|
||||
#define SLP_EN_MASK 0x2000
|
||||
|
||||
#define ARB_DIS_MASK 0x0001
|
||||
#define TMR_VAL_MASK 0xFFFFFFFF
|
||||
|
||||
#define GPE0_STS_MASK
|
||||
#define GPE0_EN_MASK
|
||||
@ -872,16 +895,6 @@ enum
|
||||
#define ACPI_READ 1
|
||||
#define ACPI_WRITE 2
|
||||
|
||||
#define LOW_BYTE 0x00FF
|
||||
#define ONE_BYTE 0x08
|
||||
|
||||
#ifndef SET
|
||||
#define SET 1
|
||||
#endif
|
||||
#ifndef CLEAR
|
||||
#define CLEAR 0
|
||||
#endif
|
||||
|
||||
|
||||
/* Plug and play */
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: acmacros.h - C macros for the entire subsystem.
|
||||
* $Revision: 50 $
|
||||
* $Revision: 56 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -219,6 +219,11 @@
|
||||
#define MUL_16(a) _MUL(a,4)
|
||||
#define MOD_16(a) _MOD(a,16)
|
||||
|
||||
/*
|
||||
* Divide and Modulo
|
||||
*/
|
||||
#define ACPI_DIVIDE(n,d) ((n) / (d))
|
||||
#define ACPI_MODULO(n,d) ((n) % (d))
|
||||
|
||||
/*
|
||||
* Rounding macros (Power of two boundaries only)
|
||||
@ -228,18 +233,35 @@
|
||||
#define ROUND_UP(value,boundary) (((value) + ((boundary)-1)) & (~((boundary)-1)))
|
||||
|
||||
#define ROUND_DOWN_TO_32_BITS(a) ROUND_DOWN(a,4)
|
||||
#define ROUND_DOWN_TO_64_BITS(a) ROUND_DOWN(a,8)
|
||||
#define ROUND_DOWN_TO_NATIVE_WORD(a) ROUND_DOWN(a,ALIGNED_ADDRESS_BOUNDARY)
|
||||
|
||||
#define ROUND_UP_TO_32BITS(a) ROUND_UP(a,4)
|
||||
#define ROUND_UP_TO_64BITS(a) ROUND_UP(a,8)
|
||||
#define ROUND_UP_TO_NATIVE_WORD(a) ROUND_UP(a,ALIGNED_ADDRESS_BOUNDARY)
|
||||
|
||||
#define ROUND_PTR_UP_TO_4(a,b) ((b *)(((NATIVE_UINT)(a) + 3) & ~3))
|
||||
#define ROUND_PTR_UP_TO_8(a,b) ((b *)(((NATIVE_UINT)(a) + 7) & ~7))
|
||||
|
||||
#define ROUND_UP_TO_1K(a) (((a) + 1023) >> 10)
|
||||
|
||||
#ifdef DEBUG_ASSERT
|
||||
#undef DEBUG_ASSERT
|
||||
#endif
|
||||
|
||||
|
||||
/* Macros for GAS addressing */
|
||||
|
||||
#define ACPI_PCI_DEVICE_MASK (UINT64) 0x0000FFFF00000000
|
||||
#define ACPI_PCI_FUNCTION_MASK (UINT64) 0x00000000FFFF0000
|
||||
#define ACPI_PCI_REGISTER_MASK (UINT64) 0x000000000000FFFF
|
||||
|
||||
#define ACPI_PCI_FUNCTION(a) (UINT32) ((((a) & ACPI_PCI_FUNCTION_MASK) >> 16))
|
||||
#define ACPI_PCI_DEVICE(a) (UINT32) ((((a) & ACPI_PCI_DEVICE_MASK) >> 32))
|
||||
#define ACPI_PCI_REGISTER(a) (UINT32) (((a) & ACPI_PCI_REGISTER_MASK))
|
||||
#define ACPI_PCI_DEVFUN(a) (UINT32) ((ACPI_PCI_DEVICE(a) << 16) | ACPI_PCI_FUNCTION(a))
|
||||
|
||||
|
||||
/*
|
||||
* An ACPI_HANDLE (which is actually an ACPI_NAMESPACE_NODE *) can appear in some contexts,
|
||||
* such as on apObjStack, where a pointer to an ACPI_OPERAND_OBJECT can also
|
||||
@ -335,11 +357,11 @@
|
||||
|
||||
#else
|
||||
|
||||
#define REPORT_INFO(fp) {_ReportInfo("",__LINE__,_COMPONENT); \
|
||||
#define REPORT_INFO(fp) {_ReportInfo("ACPI",__LINE__,_COMPONENT); \
|
||||
DebugPrintRaw PARAM_LIST(fp);}
|
||||
#define REPORT_ERROR(fp) {_ReportError("",__LINE__,_COMPONENT); \
|
||||
#define REPORT_ERROR(fp) {_ReportError("ACPI",__LINE__,_COMPONENT); \
|
||||
DebugPrintRaw PARAM_LIST(fp);}
|
||||
#define REPORT_WARNING(fp) {_ReportWarning("",__LINE__,_COMPONENT); \
|
||||
#define REPORT_WARNING(fp) {_ReportWarning("ACPI",__LINE__,_COMPONENT); \
|
||||
DebugPrintRaw PARAM_LIST(fp);}
|
||||
|
||||
#endif
|
||||
@ -394,7 +416,7 @@
|
||||
|
||||
/* Conditional execution */
|
||||
|
||||
#define DEBUG_EXEC(a) a;
|
||||
#define DEBUG_EXEC(a) a
|
||||
#define NORMAL_EXEC(a)
|
||||
|
||||
#define DEBUG_DEFINE(a) a;
|
||||
@ -499,7 +521,7 @@
|
||||
* DEBUG_PRINT stuff (set by ACPI_DEBUG) is on, or not.
|
||||
*/
|
||||
#ifdef ENABLE_DEBUGGER
|
||||
#define DEBUGGER_EXEC(a) a;
|
||||
#define DEBUGGER_EXEC(a) a
|
||||
#else
|
||||
#define DEBUGGER_EXEC(a)
|
||||
#endif
|
||||
@ -533,4 +555,5 @@
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* ACMACROS_H */
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: acnamesp.h - Namespace subcomponent prototypes and defines
|
||||
* $Revision: 97 $
|
||||
* $Revision: 98 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -446,10 +446,6 @@ AcpiNsSearchNode (
|
||||
OBJECT_TYPE_INTERNAL Type,
|
||||
ACPI_NAMESPACE_NODE **RetNode);
|
||||
|
||||
ACPI_NAMESPACE_NODE *
|
||||
AcpiNsCreateNode (
|
||||
UINT32 AcpiName);
|
||||
|
||||
void
|
||||
AcpiNsInstallNode (
|
||||
ACPI_WALK_STATE *WalkState,
|
||||
|
@ -2,7 +2,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: acobject.h - Definition of ACPI_OPERAND_OBJECT (Internal object only)
|
||||
* $Revision: 74 $
|
||||
* $Revision: 75 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -310,7 +310,7 @@ typedef struct /* REGION */
|
||||
|
||||
UINT8 SpaceId;
|
||||
UINT32 Length;
|
||||
ACPI_INTEGER Address;
|
||||
ACPI_PHYSICAL_ADDRESS Address;
|
||||
union acpi_operand_obj *Extra; /* Pointer to executable AML (in region definition) */
|
||||
|
||||
union acpi_operand_obj *AddrHandler; /* Handler for system notifies */
|
||||
|
@ -203,7 +203,7 @@ AcpiOsFree (
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiOsMapMemory (
|
||||
void *PhysicalAddress,
|
||||
ACPI_PHYSICAL_ADDRESS PhysicalAddress,
|
||||
UINT32 Length,
|
||||
void **LogicalAddress);
|
||||
|
||||
@ -286,30 +286,29 @@ AcpiOsOut32 (
|
||||
|
||||
UINT8
|
||||
AcpiOsMemIn8 (
|
||||
ACPI_MEM_ADDRESS InAddr);
|
||||
|
||||
ACPI_PHYSICAL_ADDRESS InAddr);
|
||||
|
||||
UINT16
|
||||
AcpiOsMemIn16 (
|
||||
ACPI_MEM_ADDRESS InAddr);
|
||||
ACPI_PHYSICAL_ADDRESS InAddr);
|
||||
|
||||
UINT32
|
||||
AcpiOsMemIn32 (
|
||||
ACPI_MEM_ADDRESS InAddr);
|
||||
ACPI_PHYSICAL_ADDRESS InAddr);
|
||||
|
||||
void
|
||||
AcpiOsMemOut8 (
|
||||
ACPI_MEM_ADDRESS OutAddr,
|
||||
ACPI_PHYSICAL_ADDRESS OutAddr,
|
||||
UINT8 Value);
|
||||
|
||||
void
|
||||
AcpiOsMemOut16 (
|
||||
ACPI_MEM_ADDRESS OutAddr,
|
||||
ACPI_PHYSICAL_ADDRESS OutAddr,
|
||||
UINT16 Value);
|
||||
|
||||
void
|
||||
AcpiOsMemOut32 (
|
||||
ACPI_MEM_ADDRESS OutAddr,
|
||||
ACPI_PHYSICAL_ADDRESS OutAddr,
|
||||
UINT32 Value);
|
||||
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user