svn commit: r227896 - in vendor-sys/acpica/dist: . common compiler
debugger disassembler dispatcher events executer
generate/unix generate/unix/acpibin generate/unix/acpiexec
generate/unix/acpihelp...
Jung-uk Kim
jkim at FreeBSD.org
Wed Nov 23 18:05:38 UTC 2011
Author: jkim
Date: Wed Nov 23 18:05:37 2011
New Revision: 227896
URL: http://svn.freebsd.org/changeset/base/227896
Log:
Import ACPICA 20111123.
Added:
vendor-sys/acpica/dist/compiler/aslrestype2s.c (contents, props changed)
vendor-sys/acpica/dist/disassembler/dmresrcl2.c (contents, props changed)
vendor-sys/acpica/dist/include/actbl3.h (contents, props changed)
vendor-sys/acpica/dist/resources/rsserial.c (contents, props changed)
vendor-sys/acpica/dist/utilities/utxfmutex.c (contents, props changed)
Modified:
vendor-sys/acpica/dist/changes.txt
vendor-sys/acpica/dist/common/adisasm.c
vendor-sys/acpica/dist/common/adwalk.c
vendor-sys/acpica/dist/common/dmrestag.c
vendor-sys/acpica/dist/common/dmtable.c
vendor-sys/acpica/dist/common/dmtbdump.c
vendor-sys/acpica/dist/common/dmtbinfo.c
vendor-sys/acpica/dist/compiler/Makefile
vendor-sys/acpica/dist/compiler/aslanalyze.c
vendor-sys/acpica/dist/compiler/aslcodegen.c
vendor-sys/acpica/dist/compiler/aslcompiler.h
vendor-sys/acpica/dist/compiler/aslcompiler.l
vendor-sys/acpica/dist/compiler/aslcompiler.y
vendor-sys/acpica/dist/compiler/asldefine.h
vendor-sys/acpica/dist/compiler/aslerror.c
vendor-sys/acpica/dist/compiler/aslload.c
vendor-sys/acpica/dist/compiler/asllookup.c
vendor-sys/acpica/dist/compiler/aslmain.c
vendor-sys/acpica/dist/compiler/aslmap.c
vendor-sys/acpica/dist/compiler/aslmessages.h
vendor-sys/acpica/dist/compiler/aslopcodes.c
vendor-sys/acpica/dist/compiler/aslpredef.c
vendor-sys/acpica/dist/compiler/aslresource.c
vendor-sys/acpica/dist/compiler/aslrestype1i.c
vendor-sys/acpica/dist/compiler/aslrestype2.c
vendor-sys/acpica/dist/compiler/asltransform.c
vendor-sys/acpica/dist/compiler/asltree.c
vendor-sys/acpica/dist/compiler/aslwalks.c
vendor-sys/acpica/dist/compiler/dtcompile.c
vendor-sys/acpica/dist/compiler/dtcompiler.h
vendor-sys/acpica/dist/compiler/dtfield.c
vendor-sys/acpica/dist/compiler/dtsubtable.c
vendor-sys/acpica/dist/compiler/dttable.c
vendor-sys/acpica/dist/compiler/dttemplate.h
vendor-sys/acpica/dist/compiler/dtutils.c
vendor-sys/acpica/dist/debugger/dbcmds.c
vendor-sys/acpica/dist/debugger/dbdisply.c
vendor-sys/acpica/dist/debugger/dbfileio.c
vendor-sys/acpica/dist/debugger/dbinput.c
vendor-sys/acpica/dist/debugger/dbutils.c
vendor-sys/acpica/dist/disassembler/dmbuffer.c
vendor-sys/acpica/dist/disassembler/dmopcode.c
vendor-sys/acpica/dist/disassembler/dmresrc.c
vendor-sys/acpica/dist/disassembler/dmresrcl.c
vendor-sys/acpica/dist/disassembler/dmresrcs.c
vendor-sys/acpica/dist/disassembler/dmutils.c
vendor-sys/acpica/dist/disassembler/dmwalk.c
vendor-sys/acpica/dist/dispatcher/dsargs.c
vendor-sys/acpica/dist/dispatcher/dsfield.c
vendor-sys/acpica/dist/events/evevent.c
vendor-sys/acpica/dist/events/evglock.c
vendor-sys/acpica/dist/events/evregion.c
vendor-sys/acpica/dist/executer/exconfig.c
vendor-sys/acpica/dist/executer/excreate.c
vendor-sys/acpica/dist/executer/exdump.c
vendor-sys/acpica/dist/executer/exfield.c
vendor-sys/acpica/dist/executer/exfldio.c
vendor-sys/acpica/dist/executer/exprep.c
vendor-sys/acpica/dist/executer/exutils.c
vendor-sys/acpica/dist/generate/unix/Makefile
vendor-sys/acpica/dist/generate/unix/Makefile.config
vendor-sys/acpica/dist/generate/unix/acpibin/Makefile
vendor-sys/acpica/dist/generate/unix/acpiexec/Makefile
vendor-sys/acpica/dist/generate/unix/acpihelp/Makefile
vendor-sys/acpica/dist/generate/unix/acpinames/Makefile
vendor-sys/acpica/dist/generate/unix/acpisrc/Makefile
vendor-sys/acpica/dist/generate/unix/acpixtract/Makefile
vendor-sys/acpica/dist/generate/unix/iasl/Makefile
vendor-sys/acpica/dist/hardware/hwvalid.c
vendor-sys/acpica/dist/include/acconfig.h
vendor-sys/acpica/dist/include/acdebug.h
vendor-sys/acpica/dist/include/acdisasm.h
vendor-sys/acpica/dist/include/acevents.h
vendor-sys/acpica/dist/include/acglobal.h
vendor-sys/acpica/dist/include/acinterp.h
vendor-sys/acpica/dist/include/aclocal.h
vendor-sys/acpica/dist/include/acnames.h
vendor-sys/acpica/dist/include/acobject.h
vendor-sys/acpica/dist/include/acopcode.h
vendor-sys/acpica/dist/include/acpixf.h
vendor-sys/acpica/dist/include/acpredef.h
vendor-sys/acpica/dist/include/acresrc.h
vendor-sys/acpica/dist/include/acrestyp.h
vendor-sys/acpica/dist/include/actbl.h
vendor-sys/acpica/dist/include/actbl1.h
vendor-sys/acpica/dist/include/actypes.h
vendor-sys/acpica/dist/include/acutils.h
vendor-sys/acpica/dist/include/amlcode.h
vendor-sys/acpica/dist/include/amlresrc.h
vendor-sys/acpica/dist/namespace/nspredef.c
vendor-sys/acpica/dist/namespace/nsrepair.c
vendor-sys/acpica/dist/namespace/nsrepair2.c
vendor-sys/acpica/dist/os_specific/service_layers/osunixxf.c
vendor-sys/acpica/dist/os_specific/service_layers/oswinxf.c
vendor-sys/acpica/dist/parser/psargs.c
vendor-sys/acpica/dist/parser/psopcode.c
vendor-sys/acpica/dist/parser/pstree.c
vendor-sys/acpica/dist/resources/rscalc.c
vendor-sys/acpica/dist/resources/rscreate.c
vendor-sys/acpica/dist/resources/rsdump.c
vendor-sys/acpica/dist/resources/rsinfo.c
vendor-sys/acpica/dist/resources/rsirq.c
vendor-sys/acpica/dist/resources/rslist.c
vendor-sys/acpica/dist/resources/rsmisc.c
vendor-sys/acpica/dist/resources/rsutils.c
vendor-sys/acpica/dist/resources/rsxface.c
vendor-sys/acpica/dist/tables/tbfadt.c
vendor-sys/acpica/dist/tables/tbutils.c
vendor-sys/acpica/dist/tests/misc/badcode.asl
vendor-sys/acpica/dist/tools/acpiexec/Makefile
vendor-sys/acpica/dist/tools/acpiexec/aecommon.h
vendor-sys/acpica/dist/tools/acpiexec/aeexec.c
vendor-sys/acpica/dist/tools/acpiexec/aehandlers.c
vendor-sys/acpica/dist/tools/acpiexec/aemain.c
vendor-sys/acpica/dist/tools/acpiexec/aetables.c
vendor-sys/acpica/dist/tools/acpiexec/aetables.h
vendor-sys/acpica/dist/tools/acpihelp/acpihelp.h
vendor-sys/acpica/dist/tools/acpihelp/ahaslkey.c
vendor-sys/acpica/dist/tools/acpihelp/ahaslops.c
vendor-sys/acpica/dist/tools/acpihelp/ahdecode.c
vendor-sys/acpica/dist/tools/acpihelp/ahpredef.c
vendor-sys/acpica/dist/tools/acpisrc/asconvrt.c
vendor-sys/acpica/dist/tools/acpisrc/astable.c
vendor-sys/acpica/dist/utilities/utdecode.c
vendor-sys/acpica/dist/utilities/utmutex.c
vendor-sys/acpica/dist/utilities/utresrc.c
Modified: vendor-sys/acpica/dist/changes.txt
==============================================================================
--- vendor-sys/acpica/dist/changes.txt Wed Nov 23 18:04:53 2011 (r227895)
+++ vendor-sys/acpica/dist/changes.txt Wed Nov 23 18:05:37 2011 (r227896)
@@ -1,7 +1,214 @@
----------------------------------------
-22 September 2011. Summary of changes for version 20110922:
+23 November 2011. Summary of changes for version 20111123:
This release is available at www.acpica.org/downloads
+The ACPI 5.0 specification is available at www.acpi.info
+
+0) ACPI 5.0 Support:
+
+This release contains full support for the ACPI 5.0 specification, as
+summarized below.
+
+Reduced Hardware Support:
+-------------------------
+
+This support allows for ACPI systems without the usual ACPI hardware. This
+support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA will
+not attempt to initialize or use any of the usual ACPI hardware. Note, when
+this flag is set, all of the following ACPI hardware is assumed to be not
+present and is not initialized or accessed:
+
+ General Purpose Events (GPEs)
+ Fixed Events (PM1a/PM1b and PM Control)
+ Power Management Timer and Console Buttons (power/sleep)
+ Real-time Clock Alarm
+ Global Lock
+ System Control Interrupt (SCI)
+ The FACS is assumed to be non-existent
+
+ACPI Tables:
+------------
+
+All new tables and updates to existing tables are fully supported in the
+ACPICA headers (for use by device drivers), the disassembler, and the iASL
+Data Table Compiler. ACPI 5.0 defines these new tables:
+
+ BGRT /* Boot Graphics Resource Table */
+ DRTM /* Dynamic Root of Trust for Measurement table */
+ FPDT /* Firmware Performance Data Table */
+ GTDT /* Generic Timer Description Table */
+ MPST /* Memory Power State Table */
+ PCCT /* Platform Communications Channel Table */
+ PMTT /* Platform Memory Topology Table */
+ RASF /* RAS Feature table */
+
+Operation Regions/SpaceIDs:
+---------------------------
+
+All new operation regions are fully supported by the iASL compiler, the
+disassembler, and the ACPICA runtime code (for dispatch to region handlers.)
+The new operation region Space IDs are:
+
+ GeneralPurposeIo
+ GenericSerialBus
+
+Resource Descriptors:
+---------------------
+
+All new ASL resource descriptors are fully supported by the iASL compiler, the
+ASL/AML disassembler, and the ACPICA runtime Resource Manager code (including
+all new predefined resource tags). New descriptors are:
+
+ FixedDma
+ GpioIo
+ GpioInt
+ I2cSerialBus
+ SpiSerialBus
+ UartSerialBus
+
+ASL/AML Operators, New and Modified:
+------------------------------------
+
+One new operator is added, the Connection operator, which is used to associate
+a GeneralPurposeIo or GenericSerialBus resource descriptor with individual
+field objects within an operation region. Several new protocols are associated
+with the AccessAs operator. All are fully supported by the iASL compiler,
+disassembler, and runtime ACPICA AML interpreter:
+
+ Connection // Declare Field Connection attributes
+ AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol
+ AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes Protocol
+ AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
+ RawDataBuffer // Data type for Vendor Data fields
+
+Predefined ASL/AML Objects:
+---------------------------
+
+All new predefined objects/control-methods are supported by the iASL compiler
+and the ACPICA runtime validation/repair (arguments and return values.) New
+predefined names include the following:
+
+Standard Predefined Names (Objects or Control Methods):
+ _AEI, _CLS, _CPC, _CWS, _DEP,
+ _DLM, _EVT, _GCP, _CRT, _GWS,
+ _HRV, _PRE, _PSE, _SRT, _SUB.
+
+Resource Tags (Names used to access individual fields within resource
+descriptors):
+ _DBT, _DPL, _DRS, _END, _FLC,
+ _IOR, _LIN, _MOD, _PAR, _PHA,
+ _PIN, _PPI, _POL, _RXL, _SLV,
+ _SPE, _STB, _TXL, _VEN.
+
+ACPICA External Interfaces:
+---------------------------
+
+Several new interfaces have been defined for use by ACPI-related device
+drivers and other host OS services:
+
+AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS to
+acquire and release AML mutexes that are defined in the DSDT/SSDT tables
+provided by the BIOS. They are intended to be used in conjunction with the
+ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level
+mutual exclusion with the AML code/interpreter.
+
+AcpiGetEventResources: Returns the (formatted) resource descriptors as defined
+by the ACPI 5.0 _AEI object (ACPI Event Information). This object provides
+resource descriptors associated with hardware-reduced platform events, similar
+to the AcpiGetCurrentResources interface.
+
+Operation Region Handlers: For General Purpose IO and Generic Serial Bus
+operation regions, information about the Connection() object and any optional
+length information is passed to the region handler within the Context
+parameter.
+
+AcpiBufferToResource: This interface converts a raw AML buffer containing a
+resource template or resource descriptor to the ACPI_RESOURCE internal format
+suitable for use by device drivers. Can be used by an operation region handler
+to convert the Connection() buffer object into a ACPI_RESOURCE.
+
+Miscellaneous/Tools/TestSuites:
+-------------------------------
+
+Support for extended _HID names (Four alpha characters instead of three).
+Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities.
+Support for ACPI 5.0 features in the ASLTS test suite.
+Fully updated documentation (ACPICA and iASL reference documents.)
+
+ACPI Table Definition Language:
+-------------------------------
+
+Support for this language was implemented and released as a subsystem of the
+iASL compiler in 2010. (See the iASL compiler User Guide.)
+
+
+Non-ACPI 5.0 changes for this release:
+--------------------------------------
+
+1) ACPICA Core Subsystem:
+
+Fix a problem with operation region declarations where a failure can occur if
+the region name and an argument that evaluates to an object (such as the
+region address) are in different namespace scopes. Lin Ming, ACPICA BZ 937.
+
+Do not abort an ACPI table load if an invalid space ID is found within. This
+will be caught later if the offending method is executed. ACPICA BZ 925.
+
+Fixed an issue with the FFixedHW space ID where the ID was not always
+recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
+
+Fixed a problem with the 32-bit generation of the unix-specific OSL
+(osunixxf.c). Lin Ming, ACPICA BZ 936.
+
+Several changes made to enable generation with the GCC 4.6 compiler. ACPICA BZ
+935.
+
+New error messages: Unsupported I/O requests (not 8/16/32 bit), and Index/Bank
+field registers out-of-range.
+
+2) iASL Compiler/Disassembler and Tools:
+
+iASL: Implemented the __PATH__ operator, which returns the full pathname of
+the current source file.
+
+AcpiHelp: Automatically display expanded keyword information for all ASL
+operators.
+
+Debugger: Add "Template" command to disassemble/dump resource template
+buffers.
+
+Added a new master script to generate and execute the ASLTS test suite.
+Automatically handles 32- and 64-bit generation. See tests/aslts.sh
+
+iASL: Fix problem with listing generation during processing of the Switch()
+operator where AML listing was disabled until the entire Switch block was
+completed.
+
+iASL: Improve support for semicolon statement terminators. Fix "invalid
+character" message for some cases when the semicolon is used. Semicolons are
+now allowed after every <Term> grammar element. ACPICA BZ 927.
+
+iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ 923.
+
+Disassembler: Fix problem with disassembly of the DataTableRegion operator
+where an inadvertent "Unhandled deferred opcode" message could be generated.
+
+3) Example Code and Data Size
+
+These are the sizes for the OS-independent acpica.lib produced by the
+Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
+includes the debug output trace mechanism and has a much larger code and data
+size.
+
+ Previous Release:
+ Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total
+ Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
+ Current Release:
+ Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total
+ Debug Version: 170.8K Code, 72.6K Data, 243.4K Total
+
+----------------------------------------
+22 September 2011. Summary of changes for version 20110922:
0) ACPI 5.0 News:
Modified: vendor-sys/acpica/dist/common/adisasm.c
==============================================================================
--- vendor-sys/acpica/dist/common/adisasm.c Wed Nov 23 18:04:53 2011 (r227895)
+++ vendor-sys/acpica/dist/common/adisasm.c Wed Nov 23 18:05:37 2011 (r227896)
@@ -868,6 +868,7 @@ AdParseDeferredOps (
break;
case AML_REGION_OP:
+ case AML_DATA_REGION_OP:
case AML_CREATE_QWORD_FIELD_OP:
case AML_CREATE_DWORD_FIELD_OP:
case AML_CREATE_WORD_FIELD_OP:
Modified: vendor-sys/acpica/dist/common/adwalk.c
==============================================================================
--- vendor-sys/acpica/dist/common/adwalk.c Wed Nov 23 18:04:53 2011 (r227895)
+++ vendor-sys/acpica/dist/common/adwalk.c Wed Nov 23 18:05:37 2011 (r227896)
@@ -378,6 +378,10 @@ AcpiDmDumpDescending (
AcpiOsPrintf ("%X", (UINT32) Op->Common.Value.Integer);
break;
+ case AML_QWORD_OP:
+ AcpiOsPrintf ("%8.8X%8.8X", ACPI_FORMAT_UINT64 (Op->Common.Value.Integer));
+ break;
+
case AML_INT_NAMEPATH_OP:
if (Op->Common.Value.String)
{
Modified: vendor-sys/acpica/dist/common/dmrestag.c
==============================================================================
--- vendor-sys/acpica/dist/common/dmrestag.c Wed Nov 23 18:04:53 2011 (r227895)
+++ vendor-sys/acpica/dist/common/dmrestag.c Wed Nov 23 18:05:37 2011 (r227896)
@@ -63,7 +63,7 @@ AcpiDmUpdateResourceName (
static char *
AcpiDmSearchTagList (
UINT32 BitIndex,
- ACPI_RESOURCE_TAG *TagList);
+ const ACPI_RESOURCE_TAG *TagList);
static char *
AcpiDmGetResourceTag (
@@ -108,7 +108,7 @@ AcpiDmAddResourcesToNamespace (
*
******************************************************************************/
-static ACPI_RESOURCE_TAG AcpiDmIrqTags[] =
+static const ACPI_RESOURCE_TAG AcpiDmIrqTags[] =
{
{( 1 * 8), ACPI_RESTAG_INTERRUPT},
{( 3 * 8) + 0, ACPI_RESTAG_INTERRUPTTYPE},
@@ -117,7 +117,7 @@ static ACPI_RESOURCE_TAG AcpiDmIr
{0, NULL}
};
-static ACPI_RESOURCE_TAG AcpiDmDmaTags[] =
+static const ACPI_RESOURCE_TAG AcpiDmDmaTags[] =
{
{( 1 * 8), ACPI_RESTAG_DMA},
{( 2 * 8) + 0, ACPI_RESTAG_XFERTYPE},
@@ -126,7 +126,7 @@ static ACPI_RESOURCE_TAG AcpiDmDm
{0, NULL}
};
-static ACPI_RESOURCE_TAG AcpiDmIoTags[] =
+static const ACPI_RESOURCE_TAG AcpiDmIoTags[] =
{
{( 1 * 8) + 0, ACPI_RESTAG_DECODE},
{( 2 * 8), ACPI_RESTAG_MINADDR},
@@ -136,14 +136,22 @@ static ACPI_RESOURCE_TAG AcpiDmIo
{0, NULL}
};
-static ACPI_RESOURCE_TAG AcpiDmFixedIoTags[] =
+static const ACPI_RESOURCE_TAG AcpiDmFixedIoTags[] =
{
{( 1 * 8), ACPI_RESTAG_BASEADDRESS},
{( 3 * 8), ACPI_RESTAG_LENGTH},
{0, NULL}
};
-static ACPI_RESOURCE_TAG AcpiDmMemory24Tags[] =
+static const ACPI_RESOURCE_TAG AcpiDmFixedDmaTags[] =
+{
+ {( 1 * 8), ACPI_RESTAG_DMA},
+ {( 3 * 8), ACPI_RESTAG_DMATYPE},
+ {( 5 * 8), ACPI_RESTAG_XFERTYPE},
+ {0, NULL}
+};
+
+static const ACPI_RESOURCE_TAG AcpiDmMemory24Tags[] =
{
{( 3 * 8) + 0, ACPI_RESTAG_READWRITETYPE},
{( 4 * 8), ACPI_RESTAG_MINADDR},
@@ -153,7 +161,7 @@ static ACPI_RESOURCE_TAG AcpiDmMe
{0, NULL}
};
-static ACPI_RESOURCE_TAG AcpiDmRegisterTags[] =
+static const ACPI_RESOURCE_TAG AcpiDmRegisterTags[] =
{
{( 3 * 8), ACPI_RESTAG_ADDRESSSPACE},
{( 4 * 8), ACPI_RESTAG_REGISTERBITWIDTH},
@@ -163,7 +171,7 @@ static ACPI_RESOURCE_TAG AcpiDmRe
{0, NULL}
};
-static ACPI_RESOURCE_TAG AcpiDmMemory32Tags[] =
+static const ACPI_RESOURCE_TAG AcpiDmMemory32Tags[] =
{
{( 3 * 8) + 0, ACPI_RESTAG_READWRITETYPE},
{( 4 * 8), ACPI_RESTAG_MINADDR},
@@ -173,7 +181,7 @@ static ACPI_RESOURCE_TAG AcpiDmMe
{0, NULL}
};
-static ACPI_RESOURCE_TAG AcpiDmFixedMemory32Tags[] =
+static const ACPI_RESOURCE_TAG AcpiDmFixedMemory32Tags[] =
{
{( 3 * 8) + 0, ACPI_RESTAG_READWRITETYPE},
{( 4 * 8), ACPI_RESTAG_BASEADDRESS},
@@ -181,7 +189,7 @@ static ACPI_RESOURCE_TAG AcpiDmFi
{0, NULL}
};
-static ACPI_RESOURCE_TAG AcpiDmInterruptTags[] =
+static const ACPI_RESOURCE_TAG AcpiDmInterruptTags[] =
{
{( 3 * 8) + 1, ACPI_RESTAG_INTERRUPTTYPE},
{( 3 * 8) + 2, ACPI_RESTAG_INTERRUPTLEVEL},
@@ -190,7 +198,7 @@ static ACPI_RESOURCE_TAG AcpiDmIn
{0, NULL}
};
-static ACPI_RESOURCE_TAG AcpiDmAddress16Tags[] =
+static const ACPI_RESOURCE_TAG AcpiDmAddress16Tags[] =
{
{( 4 * 8) + 1, ACPI_RESTAG_DECODE},
{( 4 * 8) + 2, ACPI_RESTAG_MINTYPE},
@@ -203,7 +211,7 @@ static ACPI_RESOURCE_TAG AcpiDmAd
{0, NULL}
};
-static ACPI_RESOURCE_TAG AcpiDmAddress32Tags[] =
+static const ACPI_RESOURCE_TAG AcpiDmAddress32Tags[] =
{
{( 4 * 8) + 1, ACPI_RESTAG_DECODE},
{( 4 * 8) + 2, ACPI_RESTAG_MINTYPE},
@@ -216,7 +224,7 @@ static ACPI_RESOURCE_TAG AcpiDmAd
{0, NULL}
};
-static ACPI_RESOURCE_TAG AcpiDmAddress64Tags[] =
+static const ACPI_RESOURCE_TAG AcpiDmAddress64Tags[] =
{
{( 4 * 8) + 1, ACPI_RESTAG_DECODE},
{( 4 * 8) + 2, ACPI_RESTAG_MINTYPE},
@@ -229,7 +237,7 @@ static ACPI_RESOURCE_TAG AcpiDmAd
{0, NULL}
};
-static ACPI_RESOURCE_TAG AcpiDmExtendedAddressTags[] =
+static const ACPI_RESOURCE_TAG AcpiDmExtendedAddressTags[] =
{
{( 4 * 8) + 1, ACPI_RESTAG_DECODE},
{( 4 * 8) + 2, ACPI_RESTAG_MINTYPE},
@@ -243,9 +251,71 @@ static ACPI_RESOURCE_TAG AcpiDmEx
{0, NULL}
};
-/* Special-case tables for the type-specific flags */
+/* Subtype tables for GPIO descriptors */
+
+static const ACPI_RESOURCE_TAG AcpiDmGpioIntTags[] =
+{
+ {( 7 * 8) + 0, ACPI_RESTAG_MODE},
+ {( 7 * 8) + 1, ACPI_RESTAG_POLARITY},
+ {( 7 * 8) + 3, ACPI_RESTAG_INTERRUPTSHARE},
+ {( 9 * 8), ACPI_RESTAG_PINCONFIG},
+ {(10 * 8), ACPI_RESTAG_DRIVESTRENGTH},
+ {(12 * 8), ACPI_RESTAG_DEBOUNCETIME},
+ {0, NULL}
+};
+
+static const ACPI_RESOURCE_TAG AcpiDmGpioIoTags[] =
+{
+ {( 7 * 8) + 0, ACPI_RESTAG_IORESTRICTION},
+ {( 7 * 8) + 3, ACPI_RESTAG_INTERRUPTSHARE},
+ {( 9 * 8), ACPI_RESTAG_PINCONFIG},
+ {(10 * 8), ACPI_RESTAG_DRIVESTRENGTH},
+ {(12 * 8), ACPI_RESTAG_DEBOUNCETIME},
+ {0, NULL}
+};
+
+/* Subtype tables for SerialBus descriptors */
+
+static const ACPI_RESOURCE_TAG AcpiDmI2cSerialBusTags[] =
+{
+ {( 6 * 8) + 0, ACPI_RESTAG_SLAVEMODE},
+ {( 7 * 8) + 0, ACPI_RESTAG_MODE},
+ {(12 * 8), ACPI_RESTAG_SPEED},
+ {(16 * 8), ACPI_RESTAG_ADDRESS},
+ {0, NULL}
+};
+
+static const ACPI_RESOURCE_TAG AcpiDmSpiSerialBusTags[] =
+{
+ {( 6 * 8) + 0, ACPI_RESTAG_SLAVEMODE},
+ {( 7 * 8) + 0, ACPI_RESTAG_MODE},
+ {( 7 * 8) + 1, ACPI_RESTAG_DEVICEPOLARITY},
+ {(12 * 8), ACPI_RESTAG_SPEED},
+ {(16 * 8), ACPI_RESTAG_LENGTH},
+ {(17 * 8), ACPI_RESTAG_PHASE},
+ {(18 * 8), ACPI_RESTAG_POLARITY},
+ {(19 * 8), ACPI_RESTAG_ADDRESS},
+ {0, NULL}
+};
+
+static const ACPI_RESOURCE_TAG AcpiDmUartSerialBusTags[] =
+{
+ {( 6 * 8) + 0, ACPI_RESTAG_SLAVEMODE}, /* Note: not part of original macro */
+ {( 7 * 8) + 0, ACPI_RESTAG_FLOWCONTROL},
+ {( 7 * 8) + 2, ACPI_RESTAG_STOPBITS},
+ {( 7 * 8) + 4, ACPI_RESTAG_LENGTH},
+ {( 7 * 8) + 7, ACPI_RESTAG_ENDIANNESS},
+ {(12 * 8), ACPI_RESTAG_SPEED},
+ {(16 * 8), ACPI_RESTAG_LENGTH_RX},
+ {(18 * 8), ACPI_RESTAG_LENGTH_TX},
+ {(20 * 8), ACPI_RESTAG_PARITY},
+ {(21 * 8), ACPI_RESTAG_LINE},
+ {0, NULL}
+};
+
+/* Subtype tables for Address descriptor type-specific flags */
-static ACPI_RESOURCE_TAG AcpiDmMemoryFlagTags[] =
+static const ACPI_RESOURCE_TAG AcpiDmMemoryFlagTags[] =
{
{( 5 * 8) + 0, ACPI_RESTAG_READWRITETYPE},
{( 5 * 8) + 1, ACPI_RESTAG_MEMTYPE},
@@ -254,7 +324,7 @@ static ACPI_RESOURCE_TAG AcpiDmMe
{0, NULL}
};
-static ACPI_RESOURCE_TAG AcpiDmIoFlagTags[] =
+static const ACPI_RESOURCE_TAG AcpiDmIoFlagTags[] =
{
{( 5 * 8) + 0, ACPI_RESTAG_RANGETYPE},
{( 5 * 8) + 4, ACPI_RESTAG_TYPE},
@@ -263,9 +333,15 @@ static ACPI_RESOURCE_TAG AcpiDmIo
};
-/* Dispatch table used to obtain the correct tag table for a descriptor */
-
-static ACPI_RESOURCE_TAG *AcpiGbl_ResourceTags [] =
+/*
+ * Dispatch table used to obtain the correct tag table for a descriptor.
+ *
+ * A NULL in this table means one of three things:
+ * 1) The descriptor ID is reserved and invalid
+ * 2) The descriptor has no tags associated with it
+ * 3) The descriptor has subtypes and a separate table will be used.
+ */
+static const ACPI_RESOURCE_TAG *AcpiGbl_ResourceTags[] =
{
/* Small descriptors */
@@ -279,7 +355,7 @@ static ACPI_RESOURCE_TAG *AcpiGbl
NULL, /* 0x07, ACPI_RESOURCE_NAME_END_DEPENDENT */
AcpiDmIoTags, /* 0x08, ACPI_RESOURCE_NAME_IO_PORT */
AcpiDmFixedIoTags, /* 0x09, ACPI_RESOURCE_NAME_FIXED_IO_PORT */
- NULL, /* 0x0A, Reserved */
+ AcpiDmFixedDmaTags, /* 0x0A, ACPI_RESOURCE_NAME_FIXED_DMA */
NULL, /* 0x0B, Reserved */
NULL, /* 0x0C, Reserved */
NULL, /* 0x0D, Reserved */
@@ -299,9 +375,29 @@ static ACPI_RESOURCE_TAG *AcpiGbl
AcpiDmAddress16Tags, /* 0x08, ACPI_RESOURCE_NAME_WORD_ADDRESS_SPACE */
AcpiDmInterruptTags, /* 0x09, ACPI_RESOURCE_NAME_EXTENDED_XRUPT */
AcpiDmAddress64Tags, /* 0x0A, ACPI_RESOURCE_NAME_QWORD_ADDRESS_SPACE */
- AcpiDmExtendedAddressTags /* 0x0B, ACPI_RESOURCE_NAME_EXTENDED_ADDRESS_SPACE */
+ AcpiDmExtendedAddressTags, /* 0x0B, ACPI_RESOURCE_NAME_EXTENDED_ADDRESS_SPACE */
+ NULL, /* 0x0C, ACPI_RESOURCE_NAME_GPIO - Use Subtype table below */
+ NULL, /* 0x0D, Reserved */
+ NULL /* 0x0E, ACPI_RESOURCE_NAME_SERIAL_BUS - Use Subtype table below */
+};
+
+/* GPIO Subtypes */
+
+static const ACPI_RESOURCE_TAG *AcpiGbl_GpioResourceTags[] =
+{
+ AcpiDmGpioIntTags, /* 0x00 Interrupt Connection */
+ AcpiDmGpioIoTags /* 0x01 I/O Connection */
};
+/* Serial Bus Subtypes */
+
+static const ACPI_RESOURCE_TAG *AcpiGbl_SerialResourceTags[] =
+{
+ NULL, /* 0x00 Reserved */
+ AcpiDmI2cSerialBusTags, /* 0x01 I2C SerialBus */
+ AcpiDmSpiSerialBusTags, /* 0x02 SPI SerialBus */
+ AcpiDmUartSerialBusTags /* 0x03 UART SerialBus */
+};
/*
* Globals used to generate unique resource descriptor names. We use names that
@@ -666,6 +762,9 @@ AcpiDmUpdateResourceName (
*
* DESCRIPTION: Convert a BitIndex into a symbolic resource tag.
*
+ * Note: ResourceIndex should be previously validated and guaranteed to ve
+ * valid.
+ *
******************************************************************************/
static char *
@@ -674,23 +773,16 @@ AcpiDmGetResourceTag (
AML_RESOURCE *Resource,
UINT8 ResourceIndex)
{
- ACPI_RESOURCE_TAG *TagList;
+ const ACPI_RESOURCE_TAG *TagList;
char *Tag = NULL;
/* Get the tag list for this resource descriptor type */
TagList = AcpiGbl_ResourceTags[ResourceIndex];
- if (!TagList)
- {
- /* There are no tags for this resource type */
-
- return (NULL);
- }
/*
- * Handle the type-specific flags field for the address descriptors.
- * Kindof brute force, but just blindly search for an index match.
+ * Handle descriptors that have multiple subtypes
*/
switch (Resource->DescriptorType)
{
@@ -699,6 +791,10 @@ AcpiDmGetResourceTag (
case ACPI_RESOURCE_NAME_ADDRESS64:
case ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64:
+ /*
+ * Subtype differentiation is the flags.
+ * Kindof brute force, but just blindly search for an index match
+ */
if (Resource->Address.ResourceType == ACPI_ADDRESS_TYPE_MEMORY_RANGE)
{
Tag = AcpiDmSearchTagList (BitIndex, AcpiDmMemoryFlagTags);
@@ -716,13 +812,42 @@ AcpiDmGetResourceTag (
}
break;
+ case ACPI_RESOURCE_NAME_GPIO:
+
+ /* GPIO connection has 2 subtypes: Interrupt and I/O */
+
+ if (Resource->Gpio.ConnectionType > AML_RESOURCE_MAX_GPIOTYPE)
+ {
+ return (NULL);
+ }
+
+ TagList = AcpiGbl_GpioResourceTags[Resource->Gpio.ConnectionType];
+ break;
+
+ case ACPI_RESOURCE_NAME_SERIAL_BUS:
+
+ /* SerialBus has 3 subtypes: I2C, SPI, and UART */
+
+ if ((Resource->CommonSerialBus.Type == 0) ||
+ (Resource->CommonSerialBus.Type > AML_RESOURCE_MAX_SERIALBUSTYPE))
+ {
+ return (NULL);
+ }
+
+ TagList = AcpiGbl_SerialResourceTags[Resource->CommonSerialBus.Type];
+ break;
+
default:
break;
}
- /* Search the tag list for this descriptor type */
+ /* Search for a match against the BitIndex */
+
+ if (TagList)
+ {
+ Tag = AcpiDmSearchTagList (BitIndex, TagList);
+ }
- Tag = AcpiDmSearchTagList (BitIndex, TagList);
return (Tag);
}
@@ -744,7 +869,7 @@ AcpiDmGetResourceTag (
static char *
AcpiDmSearchTagList (
UINT32 BitIndex,
- ACPI_RESOURCE_TAG *TagList)
+ const ACPI_RESOURCE_TAG *TagList)
{
/*
Modified: vendor-sys/acpica/dist/common/dmtable.c
==============================================================================
--- vendor-sys/acpica/dist/common/dmtable.c Wed Nov 23 18:04:53 2011 (r227895)
+++ vendor-sys/acpica/dist/common/dmtable.c Wed Nov 23 18:05:37 2011 (r227896)
@@ -196,6 +196,16 @@ static const char *AcpiDmMadtS
"Platform Interrupt Sources", /* ACPI_MADT_TYPE_INTERRUPT_SOURCE */
"Processor Local x2APIC", /* ACPI_MADT_TYPE_LOCAL_X2APIC */
"Local x2APIC NMI", /* ACPI_MADT_TYPE_LOCAL_X2APIC_NMI */
+ "Generic Interrupt Controller", /* ACPI_MADT_GENERIC_INTERRUPT */
+ "Generic Interrupt Distributor",/* ACPI_MADT_GENERIC_DISTRIBUTOR */
+ "Unknown SubTable Type" /* Reserved */
+};
+
+static const char *AcpiDmPmttSubnames[] =
+{
+ "Socket", /* ACPI_PMTT_TYPE_SOCKET */
+ "Memory Controller", /* ACPI_PMTT_TYPE_CONTROLLER */
+ "Physical Component (DIMM)", /* ACPI_PMTT_TYPE_DIMM */
"Unknown SubTable Type" /* Reserved */
};
@@ -268,6 +278,7 @@ ACPI_DMTABLE_DATA AcpiDmTableData[] =
{ACPI_SIG_ASF, NULL, AcpiDmDumpAsf, DtCompileAsf, TemplateAsf, "Alert Standard Format table"},
{ACPI_SIG_BOOT, AcpiDmTableInfoBoot, NULL, NULL, TemplateBoot, "Simple Boot Flag Table"},
{ACPI_SIG_BERT, AcpiDmTableInfoBert, NULL, NULL, TemplateBert, "Boot Error Record Table"},
+ {ACPI_SIG_BGRT, AcpiDmTableInfoBgrt, NULL, NULL, TemplateBgrt, "Boot Graphics Resource Table"},
{ACPI_SIG_CPEP, NULL, AcpiDmDumpCpep, DtCompileCpep, TemplateCpep, "Corrected Platform Error Polling table"},
{ACPI_SIG_DBGP, AcpiDmTableInfoDbgp, NULL, NULL, TemplateDbgp, "Debug Port table"},
{ACPI_SIG_DMAR, NULL, AcpiDmDumpDmar, DtCompileDmar, TemplateDmar, "DMA Remapping table"},
@@ -275,14 +286,20 @@ ACPI_DMTABLE_DATA AcpiDmTableData[] =
{ACPI_SIG_EINJ, NULL, AcpiDmDumpEinj, DtCompileEinj, TemplateEinj, "Error Injection table"},
{ACPI_SIG_ERST, NULL, AcpiDmDumpErst, DtCompileErst, TemplateErst, "Error Record Serialization Table"},
{ACPI_SIG_FADT, NULL, AcpiDmDumpFadt, DtCompileFadt, TemplateFadt, "Fixed ACPI Description Table"},
+ {ACPI_SIG_FPDT, NULL, AcpiDmDumpFpdt, DtCompileFpdt, TemplateFpdt, "Firmware Performance Data Table"},
+ {ACPI_SIG_GTDT, AcpiDmTableInfoGtdt, NULL, NULL, TemplateGtdt, "Generic Timer Description Table"},
{ACPI_SIG_HEST, NULL, AcpiDmDumpHest, DtCompileHest, TemplateHest, "Hardware Error Source Table"},
{ACPI_SIG_HPET, AcpiDmTableInfoHpet, NULL, NULL, TemplateHpet, "High Precision Event Timer table"},
{ACPI_SIG_IVRS, NULL, AcpiDmDumpIvrs, DtCompileIvrs, TemplateIvrs, "I/O Virtualization Reporting Structure"},
{ACPI_SIG_MADT, NULL, AcpiDmDumpMadt, DtCompileMadt, TemplateMadt, "Multiple APIC Description Table"},
{ACPI_SIG_MCFG, NULL, AcpiDmDumpMcfg, DtCompileMcfg, TemplateMcfg, "Memory Mapped Configuration table"},
{ACPI_SIG_MCHI, AcpiDmTableInfoMchi, NULL, NULL, TemplateMchi, "Management Controller Host Interface table"},
+ {ACPI_SIG_MPST, AcpiDmTableInfoMpst, AcpiDmDumpMpst, DtCompileMpst, TemplateMpst, "Memory Power State Table"},
{ACPI_SIG_MSCT, NULL, AcpiDmDumpMsct, DtCompileMsct, TemplateMsct, "Maximum System Characteristics Table"},
+ {ACPI_SIG_PCCT, NULL, AcpiDmDumpPcct, NULL, NULL, "Platform Communications Channel Table"},
+ {ACPI_SIG_PMTT, NULL, AcpiDmDumpPmtt, DtCompilePmtt, TemplatePmtt, "Platform Memory Topology Table"},
{ACPI_SIG_RSDT, NULL, AcpiDmDumpRsdt, DtCompileRsdt, TemplateRsdt, "Root System Description Table"},
+ {ACPI_SIG_S3PT, NULL, NULL, NULL, TemplateS3pt, "S3 Performance Table"},
{ACPI_SIG_SBST, AcpiDmTableInfoSbst, NULL, NULL, TemplateSbst, "Smart Battery Specification Table"},
{ACPI_SIG_SLIC, NULL, AcpiDmDumpSlic, DtCompileSlic, TemplateSlic, "Software Licensing Description Table"},
{ACPI_SIG_SLIT, NULL, AcpiDmDumpSlit, DtCompileSlit, TemplateSlit, "System Locality Information Table"},
@@ -400,7 +417,7 @@ AcpiDmDumpDataTable (
/*
* Handle tables that don't use the common ACPI table header structure.
- * Currently, these are the FACS and RSDP.
+ * Currently, these are the FACS, RSDP, and S3PT.
*/
if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_FACS))
{
@@ -411,6 +428,10 @@ AcpiDmDumpDataTable (
{
Length = AcpiDmDumpRsdp (Table);
}
+ else if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_S3PT))
+ {
+ Length = AcpiDmDumpS3pt (Table);
+ }
else
{
/*
@@ -646,6 +667,7 @@ AcpiDmDumpTable (
case ACPI_DMT_ACCWIDTH:
case ACPI_DMT_IVRS:
case ACPI_DMT_MADT:
+ case ACPI_DMT_PMTT:
case ACPI_DMT_SRAT:
case ACPI_DMT_ASF:
case ACPI_DMT_HESTNTYP:
@@ -670,6 +692,10 @@ AcpiDmDumpTable (
case ACPI_DMT_SLIC:
ByteLength = 4;
break;
+ case ACPI_DMT_UINT40:
+ ByteLength = 5;
+ break;
+ case ACPI_DMT_UINT48:
case ACPI_DMT_NAME6:
ByteLength = 6;
break;
@@ -718,6 +744,12 @@ AcpiDmDumpTable (
return (AE_BAD_DATA);
}
+ if (Info->Opcode == ACPI_DMT_EXTRA_TEXT)
+ {
+ AcpiOsPrintf ("%s", Info->Name);
+ continue;
+ }
+
/* Start a new line and decode the opcode */
AcpiDmLineHeader (CurrentOffset, ByteLength, Info->Name);
@@ -745,17 +777,29 @@ AcpiDmDumpTable (
AcpiOsPrintf ("%1.1X\n", *Target & 0x03);
break;
+ case ACPI_DMT_FLAGS1:
+
+ AcpiOsPrintf ("%1.1X\n", (*Target >> 1) & 0x03);
+ break;
+
case ACPI_DMT_FLAGS2:
AcpiOsPrintf ("%1.1X\n", (*Target >> 2) & 0x03);
break;
+ case ACPI_DMT_FLAGS4:
+
+ AcpiOsPrintf ("%1.1X\n", (*Target >> 4) & 0x03);
+ break;
+
/* Integer Data Types */
case ACPI_DMT_UINT8:
case ACPI_DMT_UINT16:
case ACPI_DMT_UINT24:
case ACPI_DMT_UINT32:
+ case ACPI_DMT_UINT40:
+ case ACPI_DMT_UINT48:
case ACPI_DMT_UINT56:
case ACPI_DMT_UINT64:
/*
@@ -1021,6 +1065,19 @@ AcpiDmDumpTable (
AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmMadtSubnames[Temp8]);
break;
+ case ACPI_DMT_PMTT:
+
+ /* PMTT subtable types */
+
+ Temp8 = *Target;
+ if (Temp8 > ACPI_PMTT_TYPE_RESERVED)
+ {
+ Temp8 = ACPI_PMTT_TYPE_RESERVED;
+ }
+
+ AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmPmttSubnames[Temp8]);
+ break;
+
case ACPI_DMT_SLIC:
/* SLIC subtable types */
Modified: vendor-sys/acpica/dist/common/dmtbdump.c
==============================================================================
--- vendor-sys/acpica/dist/common/dmtbdump.c Wed Nov 23 18:04:53 2011 (r227895)
+++ vendor-sys/acpica/dist/common/dmtbdump.c Wed Nov 23 18:05:37 2011 (r227896)
@@ -230,11 +230,18 @@ AcpiDmDumpFadt (
AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoFadt2);
}
- /* Check for FADT revision 3 fields and up (ACPI 2.0+ extended data) */
+ /* Check for FADT revision 3/4 fields and up (ACPI 2.0+ extended data) */
else if (Table->Length > ACPI_FADT_V2_SIZE)
{
AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoFadt3);
+
+ /* Check for FADT revision 5 fields and up (ACPI 5.0+) */
+
+ if (Table->Length > ACPI_FADT_V3_SIZE)
+ {
+ AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoFadt5);
+ }
}
/* Validate various fields in the FADT, including length */
@@ -290,6 +297,10 @@ AcpiDmValidateFadtLength (
ExpectedLength = ACPI_FADT_V3_SIZE;
break;
+ case 5:
+ ExpectedLength = ACPI_FADT_V5_SIZE;
+ break;
+
default:
return;
}
@@ -751,6 +762,84 @@ AcpiDmDumpErst (
/*******************************************************************************
*
+ * FUNCTION: AcpiDmDumpFpdt
+ *
+ * PARAMETERS: Table - A FPDT table
+ *
+ * RETURN: None
+ *
+ * DESCRIPTION: Format the contents of a FPDT. This table type consists
+ * of an open-ended number of subtables.
+ *
+ ******************************************************************************/
+
+void
+AcpiDmDumpFpdt (
+ ACPI_TABLE_HEADER *Table)
+{
+ ACPI_STATUS Status;
+ ACPI_FPDT_HEADER *SubTable;
+ UINT32 Length = Table->Length;
+ UINT32 Offset = sizeof (ACPI_TABLE_FPDT);
+ ACPI_DMTABLE_INFO *InfoTable;
+
+
+ /* There is no main table (other than the standard ACPI header) */
+
+ /* Sub-tables */
+
+ SubTable = ACPI_ADD_PTR (ACPI_FPDT_HEADER, Table, Offset);
+ while (Offset < Table->Length)
+ {
+ /* Common sub-table header */
+
+ AcpiOsPrintf ("\n");
+ Status = AcpiDmDumpTable (Length, Offset, SubTable,
+ SubTable->Length, AcpiDmTableInfoFpdtHdr);
+ if (ACPI_FAILURE (Status))
+ {
+ return;
+ }
+
+ switch (SubTable->Type)
+ {
+ case ACPI_FPDT_TYPE_BOOT:
+ InfoTable = AcpiDmTableInfoFpdt0;
+ break;
+ case ACPI_FPDT_TYPE_S3PERF:
+ InfoTable = AcpiDmTableInfoFpdt1;
+ break;
+ default:
+ AcpiOsPrintf ("\n**** Unknown FPDT sub-table type 0x%X\n\n", SubTable->Type);
+
+ /* Attempt to continue */
+
+ if (!SubTable->Length)
+ {
+ AcpiOsPrintf ("Invalid zero length subtable\n");
+ return;
+ }
+ goto NextSubTable;
+ }
+
+ Status = AcpiDmDumpTable (Length, Offset, SubTable,
+ SubTable->Length, InfoTable);
+ if (ACPI_FAILURE (Status))
+ {
+ return;
+ }
+
+NextSubTable:
+ /* Point to next sub-table */
+
+ Offset += SubTable->Length;
+ SubTable = ACPI_ADD_PTR (ACPI_FPDT_HEADER, SubTable, SubTable->Length);
+ }
+}
+
+
+/*******************************************************************************
+ *
* FUNCTION: AcpiDmDumpHest
*
* PARAMETERS: Table - A HEST table
@@ -1134,6 +1223,12 @@ AcpiDmDumpMadt (
case ACPI_MADT_TYPE_LOCAL_X2APIC_NMI:
InfoTable = AcpiDmTableInfoMadt10;
break;
+ case ACPI_MADT_TYPE_GENERIC_INTERRUPT:
+ InfoTable = AcpiDmTableInfoMadt11;
+ break;
+ case ACPI_MADT_TYPE_GENERIC_DISTRIBUTOR:
+ InfoTable = AcpiDmTableInfoMadt12;
+ break;
default:
AcpiOsPrintf ("\n**** Unknown MADT sub-table type 0x%X\n\n", SubTable->Type);
@@ -1223,6 +1318,150 @@ AcpiDmDumpMcfg (
/*******************************************************************************
*
+ * FUNCTION: AcpiDmDumpMpst
+ *
+ * PARAMETERS: Table - A MPST Table
+ *
+ * RETURN: None
+ *
+ * DESCRIPTION: Format the contents of a MPST table
+ *
+ ******************************************************************************/
+
+void
+AcpiDmDumpMpst (
+ ACPI_TABLE_HEADER *Table)
+{
+ ACPI_STATUS Status;
+ UINT32 Offset = sizeof (ACPI_TABLE_MPST);
+ ACPI_MPST_POWER_NODE *SubTable0;
+ ACPI_MPST_POWER_STATE *SubTable0A;
+ ACPI_MPST_COMPONENT *SubTable0B;
+ ACPI_MPST_DATA_HDR *SubTable1;
+ ACPI_MPST_POWER_DATA *SubTable2;
+ UINT16 SubtableCount;
+ UINT8 PowerStateCount;
+ UINT8 ComponentCount;
+
+
+ /* Main table */
+
+ Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoMpst);
+ if (ACPI_FAILURE (Status))
+ {
+ return;
+ }
+
+ /* Subtable: Memory Power Node(s) */
+
+ SubtableCount = (ACPI_CAST_PTR (ACPI_TABLE_MPST, Table))->PowerNodeCount;
+ SubTable0 = ACPI_ADD_PTR (ACPI_MPST_POWER_NODE, Table, Offset);
+
+ while ((Offset < Table->Length) && SubtableCount)
+ {
+ AcpiOsPrintf ("\n");
+ Status = AcpiDmDumpTable (Table->Length, Offset, SubTable0,
+ sizeof (ACPI_MPST_POWER_NODE), AcpiDmTableInfoMpst0);
+ if (ACPI_FAILURE (Status))
+ {
+ return;
+ }
+
+ /* Extract the sub-subtable counts */
+
+ PowerStateCount = SubTable0->NumPowerStates;
+ ComponentCount = SubTable0->NumPhysicalComponents;
+ Offset += sizeof (ACPI_MPST_POWER_NODE);
+
+ /* Sub-subtables - Memory Power State Structure(s) */
+
+ SubTable0A = ACPI_ADD_PTR (ACPI_MPST_POWER_STATE, SubTable0,
+ sizeof (ACPI_MPST_POWER_NODE));
+
+ while (PowerStateCount)
+ {
+ AcpiOsPrintf ("\n");
+ Status = AcpiDmDumpTable (Table->Length, Offset, SubTable0A,
+ sizeof (ACPI_MPST_POWER_STATE), AcpiDmTableInfoMpst0A);
+ if (ACPI_FAILURE (Status))
+ {
+ return;
+ }
+
+ SubTable0A++;
+ PowerStateCount--;
+ Offset += sizeof (ACPI_MPST_POWER_STATE);
+ }
+
+ /* Sub-subtables - Physical Component ID Structure(s) */
+
+ SubTable0B = ACPI_CAST_PTR (ACPI_MPST_COMPONENT, SubTable0A);
+
+ if (ComponentCount)
+ {
+ AcpiOsPrintf ("\n");
+ }
+
+ while (ComponentCount)
+ {
+ Status = AcpiDmDumpTable (Table->Length, Offset, SubTable0B,
+ sizeof (ACPI_MPST_COMPONENT), AcpiDmTableInfoMpst0B);
+ if (ACPI_FAILURE (Status))
+ {
+ return;
+ }
+
+ SubTable0B++;
+ ComponentCount--;
+ Offset += sizeof (ACPI_MPST_COMPONENT);
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-all
mailing list