[PATCH 02/11] acpica: updates to existing ACPICA sources
Keng-Yu Lin
kengyu at canonical.com
Thu Apr 12 02:25:04 UTC 2012
On Thu, Apr 12, 2012 at 7:50 AM, Colin King <colin.king at canonical.com> wrote:
> From: Colin Ian King <colin.king at canonical.com>
>
> Signed-off-by: Colin Ian King <colin.king at canonical.com>
> ---
> src/acpica/source/common/adfile.c | 2 +-
> src/acpica/source/common/adisasm.c | 106 +-
> src/acpica/source/common/adwalk.c | 6 +-
> src/acpica/source/common/dmextern.c | 2 +-
> src/acpica/source/common/dmrestag.c | 195 +++-
> src/acpica/source/common/dmtable.c | 64 +-
> src/acpica/source/common/dmtbdump.c | 586 +++++++++-
> src/acpica/source/common/dmtbinfo.c | 591 ++++++++--
> src/acpica/source/compiler/aslanalyze.c | 59 +-
> src/acpica/source/compiler/aslbtypes.c | 2 +-
> src/acpica/source/compiler/aslcodegen.c | 13 +-
> src/acpica/source/compiler/aslcompile.c | 81 +-
> src/acpica/source/compiler/aslcompiler.h | 75 +-
> src/acpica/source/compiler/aslcompiler.l | 1162 ++++++--------------
> src/acpica/source/compiler/aslcompiler.y | 1134 +++++++++++++------
> src/acpica/source/compiler/asldefine.h | 24 +-
> src/acpica/source/compiler/aslerror.c | 215 +++-
> src/acpica/source/compiler/aslfiles.c | 86 +-
> src/acpica/source/compiler/aslfold.c | 2 +-
> src/acpica/source/compiler/aslglobal.h | 15 +-
> src/acpica/source/compiler/asllength.c | 2 +-
> src/acpica/source/compiler/asllisting.c | 12 +-
> src/acpica/source/compiler/aslload.c | 22 +-
> src/acpica/source/compiler/asllookup.c | 113 +-
> src/acpica/source/compiler/aslmain.c | 139 ++-
> src/acpica/source/compiler/aslmap.c | 81 +-
> src/acpica/source/compiler/aslmessages.h | 194 ++--
> src/acpica/source/compiler/aslopcodes.c | 133 ++-
> src/acpica/source/compiler/asloperands.c | 10 +-
> src/acpica/source/compiler/aslopt.c | 2 +-
> src/acpica/source/compiler/aslpredef.c | 23 +-
> src/acpica/source/compiler/aslresource.c | 103 +-
> src/acpica/source/compiler/aslrestype1.c | 30 +-
> src/acpica/source/compiler/aslrestype1i.c | 96 +-
> src/acpica/source/compiler/aslrestype2.c | 7 +-
> src/acpica/source/compiler/aslrestype2d.c | 44 +-
> src/acpica/source/compiler/aslrestype2e.c | 50 +-
> src/acpica/source/compiler/aslrestype2q.c | 42 +-
> src/acpica/source/compiler/aslrestype2w.c | 36 +-
> src/acpica/source/compiler/aslstartup.c | 108 +-
> src/acpica/source/compiler/aslstubs.c | 18 +-
> src/acpica/source/compiler/asltransform.c | 19 +-
> src/acpica/source/compiler/asltree.c | 22 +-
> src/acpica/source/compiler/asltypes.h | 16 +-
> src/acpica/source/compiler/aslutils.c | 73 +-
> src/acpica/source/compiler/asluuid.c | 2 +-
> src/acpica/source/compiler/aslwalks.c | 75 +-
> src/acpica/source/compiler/dtcompile.c | 41 +-
> src/acpica/source/compiler/dtcompiler.h | 28 +-
> src/acpica/source/compiler/dtexpress.c | 13 +-
> src/acpica/source/compiler/dtfield.c | 15 +-
> src/acpica/source/compiler/dtio.c | 21 +-
> src/acpica/source/compiler/dtparser.l | 2 +-
> src/acpica/source/compiler/dtparser.y | 6 +-
> src/acpica/source/compiler/dtsubtable.c | 7 +-
> src/acpica/source/compiler/dttable.c | 453 +++++++-
> src/acpica/source/compiler/dttemplate.c | 2 +-
> src/acpica/source/compiler/dttemplate.h | 131 ++-
> src/acpica/source/compiler/dtutils.c | 13 +-
> src/acpica/source/components/debugger/dbcmds.c | 454 ++++++--
> src/acpica/source/components/debugger/dbdisply.c | 30 +-
> src/acpica/source/components/debugger/dbexec.c | 2 +-
> src/acpica/source/components/debugger/dbfileio.c | 7 +-
> src/acpica/source/components/debugger/dbhistry.c | 2 +-
> src/acpica/source/components/debugger/dbinput.c | 14 +-
> src/acpica/source/components/debugger/dbmethod.c | 2 +-
> src/acpica/source/components/debugger/dbnames.c | 2 +-
> src/acpica/source/components/debugger/dbstats.c | 2 +-
> src/acpica/source/components/debugger/dbutils.c | 9 +-
> src/acpica/source/components/debugger/dbxface.c | 2 +-
> .../source/components/disassembler/dmbuffer.c | 10 +-
> .../source/components/disassembler/dmnames.c | 2 +-
> .../source/components/disassembler/dmobject.c | 2 +-
> .../source/components/disassembler/dmopcode.c | 75 +-
> .../source/components/disassembler/dmresrc.c | 15 +-
> .../source/components/disassembler/dmresrcl.c | 3 +-
> .../source/components/disassembler/dmresrcs.c | 51 +-
> .../source/components/disassembler/dmutils.c | 52 +-
> src/acpica/source/components/disassembler/dmwalk.c | 5 +-
> src/acpica/source/components/dispatcher/dsargs.c | 12 +-
> .../source/components/dispatcher/dscontrol.c | 2 +-
> src/acpica/source/components/dispatcher/dsfield.c | 80 +-
> src/acpica/source/components/dispatcher/dsinit.c | 2 +-
> src/acpica/source/components/dispatcher/dsmethod.c | 2 +-
> src/acpica/source/components/dispatcher/dsmthdat.c | 2 +-
> src/acpica/source/components/dispatcher/dsobject.c | 2 +-
> src/acpica/source/components/dispatcher/dsopcode.c | 2 +-
> src/acpica/source/components/dispatcher/dsutils.c | 2 +-
> src/acpica/source/components/dispatcher/dswexec.c | 2 +-
> src/acpica/source/components/dispatcher/dswload.c | 2 +-
> src/acpica/source/components/dispatcher/dswload2.c | 2 +-
> src/acpica/source/components/dispatcher/dswscope.c | 2 +-
> src/acpica/source/components/dispatcher/dswstate.c | 2 +-
> src/acpica/source/components/events/evevent.c | 20 +-
> src/acpica/source/components/events/evglock.c | 12 +-
> src/acpica/source/components/events/evgpe.c | 5 +-
> src/acpica/source/components/events/evgpeblk.c | 5 +-
> src/acpica/source/components/events/evgpeinit.c | 5 +-
> src/acpica/source/components/events/evgpeutil.c | 5 +-
> src/acpica/source/components/events/evmisc.c | 27 +-
> src/acpica/source/components/events/evregion.c | 32 +-
> src/acpica/source/components/events/evrgnini.c | 2 +-
> src/acpica/source/components/events/evsci.c | 6 +-
> src/acpica/source/components/events/evxface.c | 506 ++++-----
> src/acpica/source/components/events/evxfevnt.c | 5 +-
> src/acpica/source/components/events/evxfgpe.c | 5 +-
> src/acpica/source/components/events/evxfregn.c | 2 +-
> src/acpica/source/components/executer/exconfig.c | 4 +-
> src/acpica/source/components/executer/exconvrt.c | 2 +-
> src/acpica/source/components/executer/excreate.c | 30 +-
> src/acpica/source/components/executer/exdebug.c | 2 +-
> src/acpica/source/components/executer/exdump.c | 13 +-
> src/acpica/source/components/executer/exfield.c | 28 +-
> src/acpica/source/components/executer/exfldio.c | 28 +-
> src/acpica/source/components/executer/exmisc.c | 2 +-
> src/acpica/source/components/executer/exmutex.c | 2 +-
> src/acpica/source/components/executer/exnames.c | 2 +-
> src/acpica/source/components/executer/exoparg1.c | 2 +-
> src/acpica/source/components/executer/exoparg2.c | 2 +-
> src/acpica/source/components/executer/exoparg3.c | 2 +-
> src/acpica/source/components/executer/exoparg6.c | 2 +-
> src/acpica/source/components/executer/exprep.c | 29 +-
> src/acpica/source/components/executer/exregion.c | 2 +-
> src/acpica/source/components/executer/exresnte.c | 2 +-
> src/acpica/source/components/executer/exresolv.c | 2 +-
> src/acpica/source/components/executer/exresop.c | 2 +-
> src/acpica/source/components/executer/exstore.c | 2 +-
> src/acpica/source/components/executer/exstoren.c | 2 +-
> src/acpica/source/components/executer/exstorob.c | 2 +-
> src/acpica/source/components/executer/exsystem.c | 2 +-
> src/acpica/source/components/executer/exutils.c | 32 +-
> src/acpica/source/components/hardware/hwacpi.c | 5 +-
> src/acpica/source/components/hardware/hwgpe.c | 5 +-
> src/acpica/source/components/hardware/hwpci.c | 2 +-
> src/acpica/source/components/hardware/hwregs.c | 16 +-
> src/acpica/source/components/hardware/hwsleep.c | 395 ++-----
> src/acpica/source/components/hardware/hwvalid.c | 4 +-
> src/acpica/source/components/hardware/hwxface.c | 57 +-
> src/acpica/source/components/namespace/nsaccess.c | 2 +-
> src/acpica/source/components/namespace/nsalloc.c | 2 +-
> src/acpica/source/components/namespace/nsdump.c | 18 +-
> src/acpica/source/components/namespace/nsdumpdv.c | 4 +-
> src/acpica/source/components/namespace/nseval.c | 2 +-
> src/acpica/source/components/namespace/nsinit.c | 2 +-
> src/acpica/source/components/namespace/nsload.c | 2 +-
> src/acpica/source/components/namespace/nsnames.c | 2 +-
> src/acpica/source/components/namespace/nsobject.c | 2 +-
> src/acpica/source/components/namespace/nsparse.c | 2 +-
> src/acpica/source/components/namespace/nspredef.c | 28 +-
> src/acpica/source/components/namespace/nsrepair.c | 167 +--
> src/acpica/source/components/namespace/nsrepair2.c | 7 +-
> src/acpica/source/components/namespace/nssearch.c | 2 +-
> src/acpica/source/components/namespace/nsutils.c | 4 +-
> src/acpica/source/components/namespace/nswalk.c | 2 +-
> src/acpica/source/components/namespace/nsxfeval.c | 2 +-
> src/acpica/source/components/namespace/nsxfname.c | 2 +-
> src/acpica/source/components/namespace/nsxfobj.c | 2 +-
> src/acpica/source/components/parser/psargs.c | 147 ++-
> src/acpica/source/components/parser/psloop.c | 2 +-
> src/acpica/source/components/parser/psopcode.c | 13 +-
> src/acpica/source/components/parser/psparse.c | 2 +-
> src/acpica/source/components/parser/psscope.c | 2 +-
> src/acpica/source/components/parser/pstree.c | 9 +-
> src/acpica/source/components/parser/psutils.c | 2 +-
> src/acpica/source/components/parser/pswalk.c | 2 +-
> src/acpica/source/components/parser/psxface.c | 2 +-
> src/acpica/source/components/resources/rsaddr.c | 2 +-
> src/acpica/source/components/resources/rscalc.c | 69 +-
> src/acpica/source/components/resources/rscreate.c | 75 +-
> src/acpica/source/components/resources/rsdump.c | 158 ++-
> src/acpica/source/components/resources/rsinfo.c | 61 +-
> src/acpica/source/components/resources/rsio.c | 2 +-
> src/acpica/source/components/resources/rsirq.c | 34 +-
> src/acpica/source/components/resources/rslist.c | 77 +-
> src/acpica/source/components/resources/rsmemory.c | 2 +-
> src/acpica/source/components/resources/rsmisc.c | 268 ++++-
> src/acpica/source/components/resources/rsutils.c | 61 +-
> src/acpica/source/components/resources/rsxface.c | 58 +-
> src/acpica/source/components/tables/tbfadt.c | 54 +-
> src/acpica/source/components/tables/tbfind.c | 2 +-
> src/acpica/source/components/tables/tbinstal.c | 121 +-
> src/acpica/source/components/tables/tbutils.c | 103 +-
> src/acpica/source/components/tables/tbxface.c | 2 +-
> src/acpica/source/components/tables/tbxfroot.c | 2 +-
> src/acpica/source/components/utilities/utalloc.c | 2 +-
> src/acpica/source/components/utilities/utcache.c | 2 +-
> src/acpica/source/components/utilities/utcopy.c | 2 +-
> src/acpica/source/components/utilities/utdebug.c | 2 +-
> src/acpica/source/components/utilities/utdecode.c | 41 +-
> src/acpica/source/components/utilities/utdelete.c | 12 +-
> src/acpica/source/components/utilities/uteval.c | 2 +-
> src/acpica/source/components/utilities/utglobal.c | 18 +-
> src/acpica/source/components/utilities/utids.c | 2 +-
> src/acpica/source/components/utilities/utinit.c | 46 +-
> src/acpica/source/components/utilities/utlock.c | 2 +-
> src/acpica/source/components/utilities/utmath.c | 2 +-
> src/acpica/source/components/utilities/utmisc.c | 40 +-
> src/acpica/source/components/utilities/utmutex.c | 11 +-
> src/acpica/source/components/utilities/utobject.c | 2 +-
> src/acpica/source/components/utilities/utosi.c | 2 +-
> src/acpica/source/components/utilities/utresrc.c | 295 ++++-
> src/acpica/source/components/utilities/utstate.c | 2 +-
> src/acpica/source/components/utilities/uttrack.c | 2 +-
> src/acpica/source/components/utilities/utxface.c | 54 +-
> src/acpica/source/components/utilities/utxferror.c | 2 +-
> src/acpica/source/include/acapps.h | 4 +-
> src/acpica/source/include/accommon.h | 2 +-
> src/acpica/source/include/acconfig.h | 30 +-
> src/acpica/source/include/acdebug.h | 12 +-
> src/acpica/source/include/acdisasm.h | 202 +++-
> src/acpica/source/include/acdispat.h | 2 +-
> src/acpica/source/include/acevents.h | 21 +-
> src/acpica/source/include/acexcep.h | 8 +-
> src/acpica/source/include/acglobal.h | 25 +-
> src/acpica/source/include/achware.h | 63 +-
> src/acpica/source/include/acinterp.h | 6 +-
> src/acpica/source/include/aclocal.h | 42 +-
> src/acpica/source/include/acmacros.h | 11 +-
> src/acpica/source/include/acnames.h | 15 +-
> src/acpica/source/include/acnamesp.h | 5 +-
> src/acpica/source/include/acobject.h | 6 +-
> src/acpica/source/include/acopcode.h | 6 +-
> src/acpica/source/include/acoutput.h | 3 +-
> src/acpica/source/include/acparser.h | 2 +-
> src/acpica/source/include/acpi.h | 2 +-
> src/acpica/source/include/acpiosxf.h | 12 +-
> src/acpica/source/include/acpixf.h | 200 +++-
> src/acpica/source/include/acpredef.h | 40 +-
> src/acpica/source/include/acresrc.h | 117 +-
> src/acpica/source/include/acrestyp.h | 228 +++-
> src/acpica/source/include/acstruct.h | 2 +-
> src/acpica/source/include/actables.h | 7 +-
> src/acpica/source/include/actbl.h | 32 +-
> src/acpica/source/include/actbl1.h | 87 +-
> src/acpica/source/include/actbl2.h | 2 +-
> src/acpica/source/include/actypes.h | 44 +-
> src/acpica/source/include/acutils.h | 50 +-
> src/acpica/source/include/amlcode.h | 31 +-
> src/acpica/source/include/amlresrc.h | 162 ++-
> src/acpica/source/include/platform/acenv.h | 2 +-
> src/acpica/source/include/platform/acgcc.h | 2 +-
> src/acpica/source/include/platform/aclinux.h | 2 +-
> .../source/os_specific/service_layers/osunixxf.c | 51 +-
> src/acpica/source/tools/acpiexec/aecommon.h | 4 +-
> src/acpica/source/tools/acpiexec/aehandlers.c | 278 ++++-
> 245 files changed, 9266 insertions(+), 3483 deletions(-)
>
> diff --git a/src/acpica/source/common/adfile.c b/src/acpica/source/common/adfile.c
> index a7020cb..f4e33e2 100644
> --- a/src/acpica/source/common/adfile.c
> +++ b/src/acpica/source/common/adfile.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/common/adisasm.c b/src/acpica/source/common/adisasm.c
> index 748561f..6cd67c7 100644
> --- a/src/acpica/source/common/adisasm.c
> +++ b/src/acpica/source/common/adisasm.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -147,6 +147,10 @@ LsSetupNsList (
>
> /* Local prototypes */
>
> +static UINT32
> +AdGetFileSize (
> + FILE *File);
> +
> static void
> AdCreateTableHeader (
> char *Filename,
> @@ -232,6 +236,38 @@ static ACPI_PARSE_OBJECT *AcpiGbl_ParseOpRoot;
>
> /*******************************************************************************
> *
> + * FUNCTION: AdGetFileSize
> + *
> + * PARAMETERS: File - Open file handle
> + *
> + * RETURN: File Size
> + *
> + * DESCRIPTION: Get current file size. Uses seek-to-EOF. File must be open.
> + *
> + ******************************************************************************/
> +
> +static UINT32
> +AdGetFileSize (
> + FILE *File)
> +{
> + UINT32 FileSize;
> + long Offset;
> +
> +
> + Offset = ftell (File);
> +
> + fseek (File, 0, SEEK_END);
> + FileSize = (UINT32) ftell (File);
> +
> + /* Restore file pointer */
> +
> + fseek (File, Offset, SEEK_SET);
> + return (FileSize);
> +}
> +
> +
> +/*******************************************************************************
> + *
> * FUNCTION: AdInitialize
> *
> * PARAMETERS: None
> @@ -448,11 +484,14 @@ AdAmlDisassemble (
> AdDisassemblerHeader (Filename);
> AcpiOsPrintf (" * ACPI Data Table [%4.4s]\n *\n",
> Table->Signature);
> - AcpiOsPrintf (" * Format: [HexOffset DecimalOffset ByteLength] FieldName : FieldValue\n */\n\n");
> + AcpiOsPrintf (" * Format: [HexOffset DecimalOffset ByteLength] "
> + "FieldName : FieldValue\n */\n\n");
>
> AcpiDmDumpDataTable (Table);
> - fprintf (stderr, "Acpi Data Table [%4.4s] decoded, written to \"%s\"\n",
> - Table->Signature, DisasmFilename);
> + fprintf (stderr, "Acpi Data Table [%4.4s] decoded\n",
> + Table->Signature);
> + fprintf (stderr, "Formatted output: %s - %u bytes\n",
> + DisasmFilename, AdGetFileSize (File));
> }
> else
> {
> @@ -475,15 +514,17 @@ AdAmlDisassemble (
> AcpiOsPrintf ("*****/\n");
> }
>
> - /*
> - * Load namespace from names created within control methods
> - */
> - AcpiDmFinishNamespaceLoad (AcpiGbl_ParseOpRoot, AcpiGbl_RootNode, OwnerId);
> + /* Load namespace from names created within control methods */
> +
> + AcpiDmFinishNamespaceLoad (AcpiGbl_ParseOpRoot,
> + AcpiGbl_RootNode, OwnerId);
>
> /*
> - * Cross reference the namespace here, in order to generate External() statements
> + * Cross reference the namespace here, in order to
> + * generate External() statements
> */
> - AcpiDmCrossReferenceNamespace (AcpiGbl_ParseOpRoot, AcpiGbl_RootNode, OwnerId);
> + AcpiDmCrossReferenceNamespace (AcpiGbl_ParseOpRoot,
> + AcpiGbl_RootNode, OwnerId);
>
> if (AslCompilerdebug)
> {
> @@ -494,24 +535,20 @@ AdAmlDisassemble (
>
> AcpiDmFindOrphanMethods (AcpiGbl_ParseOpRoot);
>
> - /* Convert fixed-offset references to resource descriptors to symbolic references */
> -
> - AcpiDmConvertResourceIndexes (AcpiGbl_ParseOpRoot, AcpiGbl_RootNode);
> -
> /*
> - * If we found any external control methods, we must reparse the entire
> - * tree with the new information (namely, the number of arguments per
> - * method)
> + * If we found any external control methods, we must reparse
> + * the entire tree with the new information (namely, the
> + * number of arguments per method)
> */
> if (AcpiDmGetExternalMethodCount ())
> {
> fprintf (stderr,
> - "\nFound %u external control methods, reparsing with new information\n",
> + "\nFound %u external control methods, "
> + "reparsing with new information\n",
> AcpiDmGetExternalMethodCount ());
>
> - /*
> - * Reparse, rebuild namespace. no need to xref namespace
> - */
> + /* Reparse, rebuild namespace. no need to xref namespace */
> +
> AcpiPsDeleteParseTree (AcpiGbl_ParseOpRoot);
> AcpiNsDeleteNamespaceSubtree (AcpiGbl_RootNode);
>
> @@ -528,7 +565,7 @@ AdAmlDisassemble (
> Status = AcpiNsRootInitialize ();
> AcpiDmAddExternalsToNamespace ();
>
> - /* Parse table. No need to reload it, however (FALSE) */
> + /* Parse the table again. No need to reload it, however */
>
> Status = AdParseTable (Table, NULL, FALSE, FALSE);
> if (ACPI_FAILURE (Status))
> @@ -549,14 +586,23 @@ AdAmlDisassemble (
> }
> }
>
> + /*
> + * Now that the namespace is finalized, we can perform namespace
> + * transforms.
> + *
> + * 1) Convert fixed-offset references to resource descriptors
> + * to symbolic references (Note: modifies namespace)
> + */
> + AcpiDmConvertResourceIndexes (AcpiGbl_ParseOpRoot, AcpiGbl_RootNode);
> +
> /* Optional displays */
>
> if (AcpiGbl_DbOpt_disasm)
> {
> AdDisplayTables (Filename, Table);
> - fprintf (stderr,
> - "Disassembly completed, written to \"%s\"\n",
> - DisasmFilename);
> + fprintf (stderr, "Disassembly completed\n");
> + fprintf (stderr, "ASL Output: %s - %u bytes\n",
> + DisasmFilename, AdGetFileSize (File));
> }
> }
>
> @@ -574,11 +620,12 @@ Cleanup:
>
> if (OutToFile && File)
> {
> + if (AslCompilerdebug) /* Display final namespace, with transforms */
> + {
> + LsSetupNsList (File);
> + LsDisplayNamespace ();
> + }
>
> -#ifdef ASL_DISASM_DEBUG
> - LsSetupNsList (File);
> - LsDisplayNamespace ();
> -#endif
> fclose (File);
> AcpiOsRedirectOutput (stdout);
> }
> @@ -940,6 +987,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:
> diff --git a/src/acpica/source/common/adwalk.c b/src/acpica/source/common/adwalk.c
> index b4e227d..eeb61d8 100644
> --- a/src/acpica/source/common/adwalk.c
> +++ b/src/acpica/source/common/adwalk.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -450,6 +450,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)
> {
> diff --git a/src/acpica/source/common/dmextern.c b/src/acpica/source/common/dmextern.c
> index b2e2acb..8b8402e 100644
> --- a/src/acpica/source/common/dmextern.c
> +++ b/src/acpica/source/common/dmextern.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/common/dmrestag.c b/src/acpica/source/common/dmrestag.c
> index 827dc26..1f0c5fb 100644
> --- a/src/acpica/source/common/dmrestag.c
> +++ b/src/acpica/source/common/dmrestag.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -135,7 +135,7 @@ AcpiDmUpdateResourceName (
> static char *
> AcpiDmSearchTagList (
> UINT32 BitIndex,
> - ACPI_RESOURCE_TAG *TagList);
> + const ACPI_RESOURCE_TAG *TagList);
>
> static char *
> AcpiDmGetResourceTag (
> @@ -180,7 +180,7 @@ AcpiDmAddResourcesToNamespace (
> *
> ******************************************************************************/
>
> -static ACPI_RESOURCE_TAG AcpiDmIrqTags[] =
> +static const ACPI_RESOURCE_TAG AcpiDmIrqTags[] =
> {
> {( 1 * 8), ACPI_RESTAG_INTERRUPT},
> {( 3 * 8) + 0, ACPI_RESTAG_INTERRUPTTYPE},
> @@ -189,7 +189,7 @@ static ACPI_RESOURCE_TAG AcpiDmIrqTags[] =
> {0, NULL}
> };
>
> -static ACPI_RESOURCE_TAG AcpiDmDmaTags[] =
> +static const ACPI_RESOURCE_TAG AcpiDmDmaTags[] =
> {
> {( 1 * 8), ACPI_RESTAG_DMA},
> {( 2 * 8) + 0, ACPI_RESTAG_XFERTYPE},
> @@ -198,7 +198,7 @@ static ACPI_RESOURCE_TAG AcpiDmDmaTags[] =
> {0, NULL}
> };
>
> -static ACPI_RESOURCE_TAG AcpiDmIoTags[] =
> +static const ACPI_RESOURCE_TAG AcpiDmIoTags[] =
> {
> {( 1 * 8) + 0, ACPI_RESTAG_DECODE},
> {( 2 * 8), ACPI_RESTAG_MINADDR},
> @@ -208,14 +208,22 @@ static ACPI_RESOURCE_TAG AcpiDmIoTags[] =
> {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},
> @@ -225,7 +233,7 @@ static ACPI_RESOURCE_TAG AcpiDmMemory24Tags[] =
> {0, NULL}
> };
>
> -static ACPI_RESOURCE_TAG AcpiDmRegisterTags[] =
> +static const ACPI_RESOURCE_TAG AcpiDmRegisterTags[] =
> {
> {( 3 * 8), ACPI_RESTAG_ADDRESSSPACE},
> {( 4 * 8), ACPI_RESTAG_REGISTERBITWIDTH},
> @@ -235,7 +243,7 @@ static ACPI_RESOURCE_TAG AcpiDmRegisterTags[] =
> {0, NULL}
> };
>
> -static ACPI_RESOURCE_TAG AcpiDmMemory32Tags[] =
> +static const ACPI_RESOURCE_TAG AcpiDmMemory32Tags[] =
> {
> {( 3 * 8) + 0, ACPI_RESTAG_READWRITETYPE},
> {( 4 * 8), ACPI_RESTAG_MINADDR},
> @@ -245,7 +253,7 @@ static ACPI_RESOURCE_TAG AcpiDmMemory32Tags[] =
> {0, NULL}
> };
>
> -static ACPI_RESOURCE_TAG AcpiDmFixedMemory32Tags[] =
> +static const ACPI_RESOURCE_TAG AcpiDmFixedMemory32Tags[] =
> {
> {( 3 * 8) + 0, ACPI_RESTAG_READWRITETYPE},
> {( 4 * 8), ACPI_RESTAG_BASEADDRESS},
> @@ -253,7 +261,7 @@ static ACPI_RESOURCE_TAG AcpiDmFixedMemory32Tags[] =
> {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},
> @@ -262,7 +270,7 @@ static ACPI_RESOURCE_TAG AcpiDmInterruptTags[] =
> {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},
> @@ -275,7 +283,7 @@ static ACPI_RESOURCE_TAG AcpiDmAddress16Tags[] =
> {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},
> @@ -288,7 +296,7 @@ static ACPI_RESOURCE_TAG AcpiDmAddress32Tags[] =
> {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},
> @@ -301,7 +309,7 @@ static ACPI_RESOURCE_TAG AcpiDmAddress64Tags[] =
> {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},
> @@ -315,9 +323,71 @@ static ACPI_RESOURCE_TAG AcpiDmExtendedAddressTags[] =
> {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},
> @@ -326,7 +396,7 @@ static ACPI_RESOURCE_TAG AcpiDmMemoryFlagTags[] =
> {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},
> @@ -335,9 +405,15 @@ static ACPI_RESOURCE_TAG AcpiDmIoFlagTags[] =
> };
>
>
> -/* 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 */
>
> @@ -351,7 +427,7 @@ static ACPI_RESOURCE_TAG *AcpiGbl_ResourceTags [] =
> 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 */
> @@ -371,9 +447,29 @@ static ACPI_RESOURCE_TAG *AcpiGbl_ResourceTags [] =
> 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
> @@ -738,6 +834,9 @@ AcpiDmUpdateResourceName (
> *
> * DESCRIPTION: Convert a BitIndex into a symbolic resource tag.
> *
> + * Note: ResourceIndex should be previously validated and guaranteed to ve
> + * valid.
> + *
> ******************************************************************************/
>
> static char *
> @@ -746,23 +845,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)
> {
> @@ -771,6 +863,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);
> @@ -788,13 +884,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);
> }
>
> @@ -816,7 +941,7 @@ AcpiDmGetResourceTag (
> static char *
> AcpiDmSearchTagList (
> UINT32 BitIndex,
> - ACPI_RESOURCE_TAG *TagList)
> + const ACPI_RESOURCE_TAG *TagList)
> {
>
> /*
> diff --git a/src/acpica/source/common/dmtable.c b/src/acpica/source/common/dmtable.c
> index b2ed5dd..5c9d5be 100644
> --- a/src/acpica/source/common/dmtable.c
> +++ b/src/acpica/source/common/dmtable.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -268,6 +268,16 @@ static const char *AcpiDmMadtSubnames[] =
> "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 */
> };
>
> @@ -294,7 +304,7 @@ static const char *AcpiDmIvrsSubnames[] =
> };
>
>
> -#define ACPI_FADT_PM_RESERVED 8
> +#define ACPI_FADT_PM_RESERVED 9
>
> static const char *AcpiDmFadtProfiles[] =
> {
> @@ -306,6 +316,7 @@ static const char *AcpiDmFadtProfiles[] =
> "SOHO Server",
> "Appliance PC",
> "Performance Server",
> + "Tablet",
> "Unknown Profile Type"
> };
>
> @@ -340,6 +351,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"},
> @@ -347,14 +359,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"},
> @@ -472,7 +490,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))
> {
> @@ -483,6 +501,10 @@ AcpiDmDumpDataTable (
> {
> Length = AcpiDmDumpRsdp (Table);
> }
> + else if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_S3PT))
> + {
> + Length = AcpiDmDumpS3pt (Table);
> + }
> else
> {
> /*
> @@ -718,6 +740,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:
> @@ -742,6 +765,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;
> @@ -790,6 +817,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);
> @@ -817,17 +850,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:
> /*
> @@ -1093,6 +1138,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 */
> diff --git a/src/acpica/source/common/dmtbdump.c b/src/acpica/source/common/dmtbdump.c
> index 2102bab..0ff0082 100644
> --- a/src/acpica/source/common/dmtbdump.c
> +++ b/src/acpica/source/common/dmtbdump.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -302,11 +302,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 */
> @@ -362,6 +369,10 @@ AcpiDmValidateFadtLength (
> ExpectedLength = ACPI_FADT_V3_SIZE;
> break;
>
> + case 5:
> + ExpectedLength = ACPI_FADT_V5_SIZE;
> + break;
> +
> default:
> return;
> }
> @@ -823,6 +834,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
> @@ -1206,6 +1295,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);
>
> @@ -1295,6 +1390,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);
> + }
> +
> + /* Point to next Memory Power Node subtable */
> +
> + SubtableCount--;
> + SubTable0 = ACPI_ADD_PTR (ACPI_MPST_POWER_NODE, SubTable0,
> + sizeof (ACPI_MPST_POWER_NODE) +
> + (sizeof (ACPI_MPST_POWER_STATE) * SubTable0->NumPowerStates) +
> + (sizeof (ACPI_MPST_COMPONENT) * SubTable0->NumPhysicalComponents));
> + }
> +
> + /* Subtable: Count of Memory Power State Characteristic structures */
> +
> + AcpiOsPrintf ("\n");
> + SubTable1 = ACPI_CAST_PTR (ACPI_MPST_DATA_HDR, SubTable0);
> + Status = AcpiDmDumpTable (Table->Length, Offset, SubTable1,
> + sizeof (ACPI_MPST_DATA_HDR), AcpiDmTableInfoMpst1);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + SubtableCount = SubTable1->CharacteristicsCount;
> + Offset += sizeof (ACPI_MPST_DATA_HDR);
> +
> + /* Subtable: Memory Power State Characteristics structure(s) */
> +
> + SubTable2 = ACPI_ADD_PTR (ACPI_MPST_POWER_DATA, SubTable1, sizeof (ACPI_MPST_DATA_HDR));
> +
> + while ((Offset < Table->Length) && SubtableCount)
> + {
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Table->Length, Offset, SubTable2,
> + sizeof (ACPI_MPST_POWER_DATA), AcpiDmTableInfoMpst2);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + SubTable2++;
> + SubtableCount--;
> + Offset += sizeof (ACPI_MPST_POWER_DATA);
> + }
> +}
> +
> +
> +/*******************************************************************************
> + *
> * FUNCTION: AcpiDmDumpMsct
> *
> * PARAMETERS: Table - A MSCT table
> @@ -1347,6 +1586,349 @@ AcpiDmDumpMsct (
>
> /*******************************************************************************
> *
> + * FUNCTION: AcpiDmDumpPcct
> + *
> + * PARAMETERS: Table - A PCCT table
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Format the contents of a PCCT. This table type consists
> + * of an open-ended number of subtables.
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDmDumpPcct (
> + ACPI_TABLE_HEADER *Table)
> +{
> + ACPI_STATUS Status;
> + ACPI_PCCT_SUBSPACE *SubTable;
> + UINT32 Length = Table->Length;
> + UINT32 Offset = sizeof (ACPI_TABLE_PCCT);
> +
> +
> + /* Main table */
> +
> + Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoPcct);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Sub-tables */
> +
> + SubTable = ACPI_ADD_PTR (ACPI_PCCT_SUBSPACE, Table, Offset);
> + while (Offset < Table->Length)
> + {
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Length, Offset, SubTable,
> + SubTable->Header.Length, AcpiDmTableInfoPcct0);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Point to next sub-table */
> +
> + Offset += SubTable->Header.Length;
> + SubTable = ACPI_ADD_PTR (ACPI_PCCT_SUBSPACE, SubTable,
> + SubTable->Header.Length);
> + }
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiDmDumpPmtt
> + *
> + * PARAMETERS: Table - A PMTT table
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Format the contents of a PMTT. This table type consists
> + * of an open-ended number of subtables.
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDmDumpPmtt (
> + ACPI_TABLE_HEADER *Table)
> +{
> + ACPI_STATUS Status;
> + ACPI_PMTT_HEADER *SubTable;
> + ACPI_PMTT_HEADER *MemSubTable;
> + ACPI_PMTT_HEADER *DimmSubTable;
> + ACPI_PMTT_DOMAIN *DomainArray;
> + UINT32 Length = Table->Length;
> + UINT32 Offset = sizeof (ACPI_TABLE_PMTT);
> + UINT32 MemOffset;
> + UINT32 DimmOffset;
> + UINT32 DomainOffset;
> + UINT32 DomainCount;
> +
> +
> + /* Main table */
> +
> + Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoPmtt);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Subtables */
> +
> + SubTable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, Table, Offset);
> + while (Offset < Table->Length)
> + {
> + /* Common subtable header */
> +
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Length, Offset, SubTable,
> + SubTable->Length, AcpiDmTableInfoPmttHdr);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Only Socket subtables are expected at this level */
> +
> + if (SubTable->Type != ACPI_PMTT_TYPE_SOCKET)
> + {
> + AcpiOsPrintf (
> + "\n**** Unexpected or unknown PMTT subtable type 0x%X\n\n",
> + SubTable->Type);
> + return;
> + }
> +
> + /* Dump the fixed-length portion of the subtable */
> +
> + Status = AcpiDmDumpTable (Length, Offset, SubTable,
> + SubTable->Length, AcpiDmTableInfoPmtt0);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Walk the memory controller subtables */
> +
> + MemOffset = sizeof (ACPI_PMTT_SOCKET);
> + MemSubTable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, SubTable,
> + sizeof (ACPI_PMTT_SOCKET));
> +
> + while (((Offset + MemOffset) < Table->Length) &&
> + (MemOffset < SubTable->Length))
> + {
> + /* Common subtable header */
> +
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Length,
> + Offset + MemOffset, MemSubTable,
> + MemSubTable->Length, AcpiDmTableInfoPmttHdr);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Only memory controller subtables are expected at this level */
> +
> + if (MemSubTable->Type != ACPI_PMTT_TYPE_CONTROLLER)
> + {
> + AcpiOsPrintf (
> + "\n**** Unexpected or unknown PMTT subtable type 0x%X\n\n",
> + MemSubTable->Type);
> + return;
> + }
> +
> + /* Dump the fixed-length portion of the controller subtable */
> +
> + Status = AcpiDmDumpTable (Length,
> + Offset + MemOffset, MemSubTable,
> + MemSubTable->Length, AcpiDmTableInfoPmtt1);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Walk the variable count of proximity domains */
> +
> + DomainCount = ((ACPI_PMTT_CONTROLLER *) MemSubTable)->DomainCount;
> + DomainOffset = sizeof (ACPI_PMTT_CONTROLLER);
> + DomainArray = ACPI_ADD_PTR (ACPI_PMTT_DOMAIN, MemSubTable,
> + sizeof (ACPI_PMTT_CONTROLLER));
> +
> + while (((Offset + MemOffset + DomainOffset) < Table->Length) &&
> + ((MemOffset + DomainOffset) < SubTable->Length) &&
> + DomainCount)
> + {
> + Status = AcpiDmDumpTable (Length,
> + Offset + MemOffset + DomainOffset, DomainArray,
> + sizeof (ACPI_PMTT_DOMAIN), AcpiDmTableInfoPmtt1a);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + DomainOffset += sizeof (ACPI_PMTT_DOMAIN);
> + DomainArray++;
> + DomainCount--;
> + }
> +
> + if (DomainCount)
> + {
> + AcpiOsPrintf (
> + "\n**** DomainCount exceeds subtable length\n\n",
> + MemSubTable->Type);
> + }
> +
> + /* Walk the physical component (DIMM) subtables */
> +
> + DimmOffset = DomainOffset;
> + DimmSubTable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, MemSubTable,
> + DomainOffset);
> +
> + while (((Offset + MemOffset + DimmOffset) < Table->Length) &&
> + (DimmOffset < MemSubTable->Length))
> + {
> + /* Common subtable header */
> +
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Length,
> + Offset + MemOffset + DimmOffset, DimmSubTable,
> + DimmSubTable->Length, AcpiDmTableInfoPmttHdr);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Only DIMM subtables are expected at this level */
> +
> + if (DimmSubTable->Type != ACPI_PMTT_TYPE_DIMM)
> + {
> + AcpiOsPrintf (
> + "\n**** Unexpected or unknown PMTT subtable type 0x%X\n\n",
> + DimmSubTable->Type);
> + return;
> + }
> +
> + /* Dump the fixed-length DIMM subtable */
> +
> + Status = AcpiDmDumpTable (Length,
> + Offset + MemOffset + DimmOffset, DimmSubTable,
> + DimmSubTable->Length, AcpiDmTableInfoPmtt2);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Point to next DIMM subtable */
> +
> + DimmOffset += DimmSubTable->Length;
> + DimmSubTable = ACPI_ADD_PTR (ACPI_PMTT_HEADER,
> + DimmSubTable, DimmSubTable->Length);
> + }
> +
> + /* Point to next Controller subtable */
> +
> + MemOffset += MemSubTable->Length;
> + MemSubTable = ACPI_ADD_PTR (ACPI_PMTT_HEADER,
> + MemSubTable, MemSubTable->Length);
> + }
> +
> + /* Point to next Socket subtable */
> +
> + Offset += SubTable->Length;
> + SubTable = ACPI_ADD_PTR (ACPI_PMTT_HEADER,
> + SubTable, SubTable->Length);
> + }
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiDmDumpS3pt
> + *
> + * PARAMETERS: Table - A S3PT table
> + *
> + * RETURN: Length of the table
> + *
> + * DESCRIPTION: Format the contents of a S3PT
> + *
> + ******************************************************************************/
> +
> +UINT32
> +AcpiDmDumpS3pt (
> + ACPI_TABLE_HEADER *Tables)
> +{
> + ACPI_STATUS Status;
> + UINT32 Offset = sizeof (ACPI_TABLE_S3PT);
> + ACPI_S3PT_HEADER *SubTable;
> + ACPI_DMTABLE_INFO *InfoTable;
> + ACPI_TABLE_S3PT *S3ptTable = ACPI_CAST_PTR (ACPI_TABLE_S3PT, Tables);
> +
> +
> + /* Main table */
> +
> + Status = AcpiDmDumpTable (Offset, 0, S3ptTable, 0, AcpiDmTableInfoS3pt);
> + if (ACPI_FAILURE (Status))
> + {
> + return 0;
> + }
> +
> + SubTable = ACPI_ADD_PTR (ACPI_S3PT_HEADER, S3ptTable, Offset);
> + while (Offset < S3ptTable->Length)
> + {
> + /* Common sub-table header */
> +
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (S3ptTable->Length, Offset, SubTable,
> + SubTable->Length, AcpiDmTableInfoS3ptHdr);
> + if (ACPI_FAILURE (Status))
> + {
> + return 0;
> + }
> +
> + switch (SubTable->Type)
> + {
> + case ACPI_S3PT_TYPE_RESUME:
> + InfoTable = AcpiDmTableInfoS3pt0;
> + break;
> + case ACPI_S3PT_TYPE_SUSPEND:
> + InfoTable = AcpiDmTableInfoS3pt1;
> + break;
> + default:
> + AcpiOsPrintf ("\n**** Unknown S3PT sub-table type 0x%X\n", SubTable->Type);
> +
> + /* Attempt to continue */
> +
> + if (!SubTable->Length)
> + {
> + AcpiOsPrintf ("Invalid zero length subtable\n");
> + return 0;
> + }
> + goto NextSubTable;
> + }
> +
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (S3ptTable->Length, Offset, SubTable,
> + SubTable->Length, InfoTable);
> + if (ACPI_FAILURE (Status))
> + {
> + return 0;
> + }
> +
> +NextSubTable:
> + /* Point to next sub-table */
> +
> + Offset += SubTable->Length;
> + SubTable = ACPI_ADD_PTR (ACPI_S3PT_HEADER, SubTable, SubTable->Length);
> + }
> +
> + return (S3ptTable->Length);
> +}
> +
> +
> +/*******************************************************************************
> + *
> * FUNCTION: AcpiDmDumpSlic
> *
> * PARAMETERS: Table - A SLIC table
> diff --git a/src/acpica/source/common/dmtbinfo.c b/src/acpica/source/common/dmtbinfo.c
> index 05e5709..361e7fb 100644
> --- a/src/acpica/source/common/dmtbinfo.c
> +++ b/src/acpica/source/common/dmtbinfo.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -150,97 +150,123 @@
> /*
> * Macros used to generate offsets to specific table fields
> */
> -#define ACPI_FACS_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_FACS,f)
> -#define ACPI_GAS_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_GENERIC_ADDRESS,f)
> -#define ACPI_HDR_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_HEADER,f)
> -#define ACPI_RSDP_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_RSDP,f)
> -#define ACPI_BOOT_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_BOOT,f)
> -#define ACPI_BERT_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_BERT,f)
> -#define ACPI_CPEP_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_CPEP,f)
> -#define ACPI_DBGP_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_DBGP,f)
> -#define ACPI_DMAR_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_DMAR,f)
> -#define ACPI_ECDT_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_ECDT,f)
> -#define ACPI_EINJ_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_EINJ,f)
> -#define ACPI_ERST_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_ERST,f)
> -#define ACPI_HEST_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_HEST,f)
> -#define ACPI_HPET_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_HPET,f)
> -#define ACPI_IVRS_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_IVRS,f)
> -#define ACPI_MADT_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_MADT,f)
> -#define ACPI_MCFG_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_MCFG,f)
> -#define ACPI_MCHI_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_MCHI,f)
> -#define ACPI_MSCT_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_MSCT,f)
> -#define ACPI_SBST_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_SBST,f)
> -#define ACPI_SLIT_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_SLIT,f)
> -#define ACPI_SPCR_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_SPCR,f)
> -#define ACPI_SPMI_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_SPMI,f)
> -#define ACPI_SRAT_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_SRAT,f)
> -#define ACPI_TCPA_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_TCPA,f)
> -#define ACPI_UEFI_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_UEFI,f)
> -#define ACPI_WAET_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_WAET,f)
> -#define ACPI_WDAT_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_WDAT,f)
> -#define ACPI_WDDT_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_WDDT,f)
> -#define ACPI_WDRT_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_WDRT,f)
> +#define ACPI_FACS_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_FACS,f)
> +#define ACPI_GAS_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_GENERIC_ADDRESS,f)
> +#define ACPI_HDR_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_HEADER,f)
> +#define ACPI_RSDP_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_RSDP,f)
> +#define ACPI_BERT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_BERT,f)
> +#define ACPI_BGRT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_BGRT,f)
> +#define ACPI_BOOT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_BOOT,f)
> +#define ACPI_CPEP_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_CPEP,f)
> +#define ACPI_DBGP_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_DBGP,f)
> +#define ACPI_DMAR_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_DMAR,f)
> +#define ACPI_DRTM_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_DRTM,f)
> +#define ACPI_ECDT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_ECDT,f)
> +#define ACPI_EINJ_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_EINJ,f)
> +#define ACPI_ERST_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_ERST,f)
> +#define ACPI_GTDT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_GTDT,f)
> +#define ACPI_HEST_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_HEST,f)
> +#define ACPI_HPET_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_HPET,f)
> +#define ACPI_IVRS_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_IVRS,f)
> +#define ACPI_MADT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_MADT,f)
> +#define ACPI_MCFG_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_MCFG,f)
> +#define ACPI_MCHI_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_MCHI,f)
> +#define ACPI_MPST_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_MPST,f)
> +#define ACPI_MSCT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_MSCT,f)
> +#define ACPI_PCCT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_PCCT,f)
> +#define ACPI_PMTT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_PMTT,f)
> +#define ACPI_S3PT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_S3PT,f)
> +#define ACPI_SBST_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_SBST,f)
> +#define ACPI_SLIT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_SLIT,f)
> +#define ACPI_SPCR_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_SPCR,f)
> +#define ACPI_SPMI_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_SPMI,f)
> +#define ACPI_SRAT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_SRAT,f)
> +#define ACPI_TCPA_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_TCPA,f)
> +#define ACPI_UEFI_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_UEFI,f)
> +#define ACPI_WAET_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_WAET,f)
> +#define ACPI_WDAT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_WDAT,f)
> +#define ACPI_WDDT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_WDDT,f)
> +#define ACPI_WDRT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_WDRT,f)
>
> /* Subtables */
>
> -#define ACPI_ASF0_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_ASF_INFO,f)
> -#define ACPI_ASF1_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_ASF_ALERT,f)
> -#define ACPI_ASF1a_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_ASF_ALERT_DATA,f)
> -#define ACPI_ASF2_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_ASF_REMOTE,f)
> -#define ACPI_ASF2a_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_ASF_CONTROL_DATA,f)
> -#define ACPI_ASF3_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_ASF_RMCP,f)
> -#define ACPI_ASF4_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_ASF_ADDRESS,f)
> -#define ACPI_CPEP0_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_CPEP_POLLING,f)
> -#define ACPI_DMARS_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_DMAR_DEVICE_SCOPE,f)
> -#define ACPI_DMAR0_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_DMAR_HARDWARE_UNIT,f)
> -#define ACPI_DMAR1_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_DMAR_RESERVED_MEMORY,f)
> -#define ACPI_DMAR2_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_DMAR_ATSR,f)
> -#define ACPI_DMAR3_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_DMAR_RHSA,f)
> -#define ACPI_EINJ0_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_WHEA_HEADER,f)
> -#define ACPI_ERST0_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_WHEA_HEADER,f)
> -#define ACPI_HEST0_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_HEST_IA_MACHINE_CHECK,f)
> -#define ACPI_HEST1_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_HEST_IA_CORRECTED,f)
> -#define ACPI_HEST2_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_HEST_IA_NMI,f)
> -#define ACPI_HEST6_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_HEST_AER_ROOT,f)
> -#define ACPI_HEST7_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_HEST_AER,f)
> -#define ACPI_HEST8_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_HEST_AER_BRIDGE,f)
> -#define ACPI_HEST9_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_HEST_GENERIC,f)
> -#define ACPI_HESTN_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_HEST_NOTIFY,f)
> -#define ACPI_HESTB_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_HEST_IA_ERROR_BANK,f)
> -#define ACPI_IVRSH_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_IVRS_HEADER,f)
> -#define ACPI_IVRS0_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_IVRS_HARDWARE,f)
> -#define ACPI_IVRS1_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_IVRS_MEMORY,f)
> -#define ACPI_IVRSD_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_IVRS_DE_HEADER,f)
> -#define ACPI_IVRS8A_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_IVRS_DEVICE8A,f)
> -#define ACPI_IVRS8B_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_IVRS_DEVICE8B,f)
> -#define ACPI_IVRS8C_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_IVRS_DEVICE8C,f)
> -#define ACPI_MADT0_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_MADT_LOCAL_APIC,f)
> -#define ACPI_MADT1_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_MADT_IO_APIC,f)
> -#define ACPI_MADT2_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_MADT_INTERRUPT_OVERRIDE,f)
> -#define ACPI_MADT3_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_MADT_NMI_SOURCE,f)
> -#define ACPI_MADT4_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_MADT_LOCAL_APIC_NMI,f)
> -#define ACPI_MADT5_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_MADT_LOCAL_APIC_OVERRIDE,f)
> -#define ACPI_MADT6_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_MADT_IO_SAPIC,f)
> -#define ACPI_MADT7_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_MADT_LOCAL_SAPIC,f)
> -#define ACPI_MADT8_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_MADT_INTERRUPT_SOURCE,f)
> -#define ACPI_MADT9_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_MADT_LOCAL_X2APIC,f)
> -#define ACPI_MADT10_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_MADT_LOCAL_X2APIC_NMI,f)
> -#define ACPI_MADTH_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_SUBTABLE_HEADER,f)
> -#define ACPI_MCFG0_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_MCFG_ALLOCATION,f)
> -#define ACPI_MSCT0_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_MSCT_PROXIMITY,f)
> -#define ACPI_SLICH_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_SLIC_HEADER,f)
> -#define ACPI_SLIC0_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_SLIC_KEY,f)
> -#define ACPI_SLIC1_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_SLIC_MARKER,f)
> -#define ACPI_SRATH_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_SUBTABLE_HEADER,f)
> -#define ACPI_SRAT0_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_SRAT_CPU_AFFINITY,f)
> -#define ACPI_SRAT1_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_SRAT_MEM_AFFINITY,f)
> -#define ACPI_SRAT2_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_SRAT_X2APIC_CPU_AFFINITY,f)
> -#define ACPI_WDAT0_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_WDAT_ENTRY,f)
> +#define ACPI_ASF0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ASF_INFO,f)
> +#define ACPI_ASF1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ASF_ALERT,f)
> +#define ACPI_ASF1a_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ASF_ALERT_DATA,f)
> +#define ACPI_ASF2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ASF_REMOTE,f)
> +#define ACPI_ASF2a_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ASF_CONTROL_DATA,f)
> +#define ACPI_ASF3_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ASF_RMCP,f)
> +#define ACPI_ASF4_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ASF_ADDRESS,f)
> +#define ACPI_CPEP0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_CPEP_POLLING,f)
> +#define ACPI_DMARS_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DMAR_DEVICE_SCOPE,f)
> +#define ACPI_DMAR0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DMAR_HARDWARE_UNIT,f)
> +#define ACPI_DMAR1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DMAR_RESERVED_MEMORY,f)
> +#define ACPI_DMAR2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DMAR_ATSR,f)
> +#define ACPI_DMAR3_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DMAR_RHSA,f)
> +#define ACPI_EINJ0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_WHEA_HEADER,f)
> +#define ACPI_ERST0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_WHEA_HEADER,f)
> +#define ACPI_FPDTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_FPDT_HEADER,f)
> +#define ACPI_FPDT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_FPDT_BOOT,f)
> +#define ACPI_FPDT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_FPDT_S3PT_PTR,f)
> +#define ACPI_HEST0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_HEST_IA_MACHINE_CHECK,f)
> +#define ACPI_HEST1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_HEST_IA_CORRECTED,f)
> +#define ACPI_HEST2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_HEST_IA_NMI,f)
> +#define ACPI_HEST6_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_HEST_AER_ROOT,f)
> +#define ACPI_HEST7_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_HEST_AER,f)
> +#define ACPI_HEST8_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_HEST_AER_BRIDGE,f)
> +#define ACPI_HEST9_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_HEST_GENERIC,f)
> +#define ACPI_HESTN_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_HEST_NOTIFY,f)
> +#define ACPI_HESTB_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_HEST_IA_ERROR_BANK,f)
> +#define ACPI_IVRSH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IVRS_HEADER,f)
> +#define ACPI_IVRS0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IVRS_HARDWARE,f)
> +#define ACPI_IVRS1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IVRS_MEMORY,f)
> +#define ACPI_IVRSD_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IVRS_DE_HEADER,f)
> +#define ACPI_IVRS8A_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IVRS_DEVICE8A,f)
> +#define ACPI_IVRS8B_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IVRS_DEVICE8B,f)
> +#define ACPI_IVRS8C_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IVRS_DEVICE8C,f)
> +#define ACPI_MADT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_LOCAL_APIC,f)
> +#define ACPI_MADT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_IO_APIC,f)
> +#define ACPI_MADT2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_INTERRUPT_OVERRIDE,f)
> +#define ACPI_MADT3_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_NMI_SOURCE,f)
> +#define ACPI_MADT4_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_LOCAL_APIC_NMI,f)
> +#define ACPI_MADT5_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_LOCAL_APIC_OVERRIDE,f)
> +#define ACPI_MADT6_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_IO_SAPIC,f)
> +#define ACPI_MADT7_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_LOCAL_SAPIC,f)
> +#define ACPI_MADT8_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_INTERRUPT_SOURCE,f)
> +#define ACPI_MADT9_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_LOCAL_X2APIC,f)
> +#define ACPI_MADT10_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_LOCAL_X2APIC_NMI,f)
> +#define ACPI_MADT11_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_GENERIC_INTERRUPT,f)
> +#define ACPI_MADT12_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_GENERIC_DISTRIBUTOR,f)
> +#define ACPI_MADTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SUBTABLE_HEADER,f)
> +#define ACPI_MCFG0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MCFG_ALLOCATION,f)
> +#define ACPI_MPST0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MPST_POWER_NODE,f)
> +#define ACPI_MPST0A_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MPST_POWER_STATE,f)
> +#define ACPI_MPST0B_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MPST_COMPONENT,f)
> +#define ACPI_MPST1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MPST_DATA_HDR,f)
> +#define ACPI_MPST2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MPST_POWER_DATA,f)
> +#define ACPI_MSCT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MSCT_PROXIMITY,f)
> +#define ACPI_PCCT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PCCT_SUBSPACE,f)
> +#define ACPI_PMTT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PMTT_SOCKET,f)
> +#define ACPI_PMTT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PMTT_CONTROLLER,f)
> +#define ACPI_PMTT1A_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PMTT_DOMAIN,f)
> +#define ACPI_PMTT2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PMTT_PHYSICAL_COMPONENT,f)
> +#define ACPI_PMTTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PMTT_HEADER,f)
> +#define ACPI_S3PTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_S3PT_HEADER,f)
> +#define ACPI_S3PT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_S3PT_RESUME,f)
> +#define ACPI_S3PT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_S3PT_SUSPEND,f)
> +#define ACPI_SLICH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SLIC_HEADER,f)
> +#define ACPI_SLIC0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SLIC_KEY,f)
> +#define ACPI_SLIC1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SLIC_MARKER,f)
> +#define ACPI_SRATH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SUBTABLE_HEADER,f)
> +#define ACPI_SRAT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SRAT_CPU_AFFINITY,f)
> +#define ACPI_SRAT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SRAT_MEM_AFFINITY,f)
> +#define ACPI_SRAT2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SRAT_X2APIC_CPU_AFFINITY,f)
> +#define ACPI_WDAT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_WDAT_ENTRY,f)
>
> /*
> * Simplify access to flag fields by breaking them up into bytes
> */
> -#define ACPI_FLAG_OFFSET(d,f,o) (UINT8) (ACPI_OFFSET (d,f) + o)
> +#define ACPI_FLAG_OFFSET(d,f,o) (UINT16) (ACPI_OFFSET (d,f) + o)
>
> /* Flags */
>
> @@ -250,6 +276,7 @@
> #define ACPI_SRAT0_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_SRAT_CPU_AFFINITY,f,o)
> #define ACPI_SRAT1_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_SRAT_MEM_AFFINITY,f,o)
> #define ACPI_SRAT2_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_SRAT_X2APIC_CPU_AFFINITY,f,o)
> +#define ACPI_GTDT_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_TABLE_GTDT,f,o)
> #define ACPI_MADT_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_TABLE_MADT,f,o)
> #define ACPI_MADT0_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_LOCAL_APIC,f,o)
> #define ACPI_MADT2_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_INTERRUPT_OVERRIDE,f,o)
> @@ -259,6 +286,11 @@
> #define ACPI_MADT8_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_INTERRUPT_SOURCE,f,o)
> #define ACPI_MADT9_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_LOCAL_X2APIC,f,o)
> #define ACPI_MADT10_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_LOCAL_X2APIC_NMI,f,o)
> +#define ACPI_MADT11_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_GENERIC_INTERRUPT,f,o)
> +#define ACPI_MPST0_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MPST_POWER_NODE,f,o)
> +#define ACPI_MPST2_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MPST_POWER_DATA,f,o)
> +#define ACPI_PCCT_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_TABLE_PCCT,f,o)
> +#define ACPI_PMTTH_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_PMTT_HEADER,f,o)
> #define ACPI_WDDT_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_TABLE_WDDT,f,o)
> #define ACPI_EINJ0_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_WHEA_HEADER,f,o)
> #define ACPI_ERST0_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_WHEA_HEADER,f,o)
> @@ -270,6 +302,7 @@
> * Required terminator for all tables below
> */
> #define ACPI_DMT_TERMINATOR {ACPI_DMT_EXIT, 0, NULL, 0}
> +#define ACPI_DMT_NEW_LINE {ACPI_DMT_EXTRA_TEXT, 0, "\n", 0}
>
>
> /*
> @@ -423,6 +456,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoFadt1[] =
> {ACPI_DMT_FLAG2, ACPI_FADT_FLAG_OFFSET (BootFlags,0), "VGA Not Present (V4)", 0},
> {ACPI_DMT_FLAG3, ACPI_FADT_FLAG_OFFSET (BootFlags,0), "MSI Not Supported (V4)", 0},
> {ACPI_DMT_FLAG4, ACPI_FADT_FLAG_OFFSET (BootFlags,0), "PCIe ASPM Not Supported (V4)", 0},
> + {ACPI_DMT_FLAG5, ACPI_FADT_FLAG_OFFSET (BootFlags,0), "CMOS RTC Not Present (V5)", 0},
>
> {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Reserved), "Reserved", 0},
> {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> @@ -455,6 +489,8 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoFadt1[] =
> {ACPI_DMT_FLAG1, ACPI_FADT_FLAG_OFFSET (Flags,2), "Remote Power-on capable (V4)", 0},
> {ACPI_DMT_FLAG2, ACPI_FADT_FLAG_OFFSET (Flags,2), "Use APIC Cluster Model (V4)", 0},
> {ACPI_DMT_FLAG3, ACPI_FADT_FLAG_OFFSET (Flags,2), "Use APIC Physical Destination Mode (V4)", 0},
> + {ACPI_DMT_FLAG4, ACPI_FADT_FLAG_OFFSET (Flags,2), "Hardware Reduced (V5)", 0},
> + {ACPI_DMT_FLAG5, ACPI_FADT_FLAG_OFFSET (Flags,2), "Low Power S0 Idle (V5)", 0},
> ACPI_DMT_TERMINATOR
> };
>
> @@ -468,7 +504,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoFadt2[] =
> ACPI_DMT_TERMINATOR
> };
>
> -/* ACPI 2.0+ Extensions (FADT version 3+) */
> +/* ACPI 2.0+ Extensions (FADT version 3 and 4) */
>
> ACPI_DMTABLE_INFO AcpiDmTableInfoFadt3[] =
> {
> @@ -488,6 +524,15 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoFadt3[] =
> ACPI_DMT_TERMINATOR
> };
>
> +/* ACPI 5.0 Extensions (FADT version 5) */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoFadt5[] =
> +{
> + {ACPI_DMT_GAS, ACPI_FADT_OFFSET (SleepControl), "Sleep Control Register", 0},
> + {ACPI_DMT_GAS, ACPI_FADT_OFFSET (SleepStatus), "Sleep Status Register", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
>
> /*
> * Remaining tables are not consumed directly by the ACPICA subsystem
> @@ -613,6 +658,24 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoBert[] =
>
> /*******************************************************************************
> *
> + * BGRT - Boot Graphics Resource Table (ACPI 5.0)
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoBgrt[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_BGRT_OFFSET (Version), "Version", 0},
> + {ACPI_DMT_UINT8, ACPI_BGRT_OFFSET (Status), "Status", 0},
> + {ACPI_DMT_UINT8, ACPI_BGRT_OFFSET (ImageType), "Image Type", 0},
> + {ACPI_DMT_UINT64, ACPI_BGRT_OFFSET (ImageAddress), "Image Address", 0},
> + {ACPI_DMT_UINT32, ACPI_BGRT_OFFSET (ImageOffsetX), "Image OffsetX", 0},
> + {ACPI_DMT_UINT32, ACPI_BGRT_OFFSET (ImageOffsetY), "Image OffsetY", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> * BOOT - Simple Boot Flag Table
> *
> ******************************************************************************/
> @@ -744,6 +807,19 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoDmar3[] =
>
> /*******************************************************************************
> *
> + * DRTM - Dynamic Root of Trust for Measurement table
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoDrtm[] =
> +{
> +
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> * ECDT - Embedded Controller Boot Resources Table
> *
> ******************************************************************************/
> @@ -820,6 +896,82 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoErst0[] =
>
> /*******************************************************************************
> *
> + * FPDT - Firmware Performance Data Table (ACPI 5.0)
> + *
> + ******************************************************************************/
> +
> +/* Main table consists of only the standard ACPI header - subtables follow */
> +
> +/* FPDT subtable header */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoFpdtHdr[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_FPDTH_OFFSET (Type), "Subtable Type", 0},
> + {ACPI_DMT_UINT8, ACPI_FPDTH_OFFSET (Length), "Length", DT_LENGTH},
> + {ACPI_DMT_UINT8, ACPI_FPDTH_OFFSET (Revision), "Revision", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 0: Firmware Basic Boot Performance Record */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoFpdt0[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_FPDT0_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT64, ACPI_FPDT0_OFFSET (ResetEnd), "Reset End", 0},
> + {ACPI_DMT_UINT64, ACPI_FPDT0_OFFSET (LoadStart), "Load Image Start", 0},
> + {ACPI_DMT_UINT64, ACPI_FPDT0_OFFSET (StartupStart), "Start Image Start", 0},
> + {ACPI_DMT_UINT64, ACPI_FPDT0_OFFSET (ExitServicesEntry), "Exit Services Entry", 0},
> + {ACPI_DMT_UINT64, ACPI_FPDT0_OFFSET (ExitServicesExit), "Exit Services Exit", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 1: S3 Performance Table Pointer Record */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoFpdt1[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_FPDT1_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT64, ACPI_FPDT1_OFFSET (Address), "S3PT Address", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * GTDT - Generic Timer Description Table
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoGtdt[] =
> +{
> + {ACPI_DMT_UINT64, ACPI_GTDT_OFFSET (Address), "Timer Address", 0},
> + {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_GTDT_FLAG_OFFSET (Flags,0), "Memory Present", 0},
> + ACPI_DMT_NEW_LINE,
> + {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (SecurePl1Interrupt), "Secure PL1 Interrupt", 0},
> + {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (SecurePl1Flags), "SPL1 Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_GTDT_FLAG_OFFSET (SecurePl1Flags,0), "Trigger Mode", 0},
> + {ACPI_DMT_FLAG1, ACPI_GTDT_FLAG_OFFSET (SecurePl1Flags,0), "Polarity", 0},
> + ACPI_DMT_NEW_LINE,
> + {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (NonSecurePl1Interrupt), "Non-Secure PL1 Interrupt", 0},
> + {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (NonSecurePl1Flags), "NSPL1 Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_GTDT_FLAG_OFFSET (NonSecurePl1Flags,0),"Trigger Mode", 0},
> + {ACPI_DMT_FLAG1, ACPI_GTDT_FLAG_OFFSET (NonSecurePl1Flags,0),"Polarity", 0},
> + ACPI_DMT_NEW_LINE,
> + {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (VirtualTimerInterrupt), "Virtual Timer Interrupt", 0},
> + {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (VirtualTimerFlags), "VT Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_GTDT_FLAG_OFFSET (VirtualTimerFlags,0),"Trigger Mode", 0},
> + {ACPI_DMT_FLAG1, ACPI_GTDT_FLAG_OFFSET (VirtualTimerFlags,0),"Polarity", 0},
> + ACPI_DMT_NEW_LINE,
> + {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (NonSecurePl2Interrupt), "Non-Secure PL2 Interrupt", 0},
> + {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (NonSecurePl2Flags), "NSPL2 Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_GTDT_FLAG_OFFSET (NonSecurePl2Flags,0),"Trigger Mode", 0},
> + {ACPI_DMT_FLAG1, ACPI_GTDT_FLAG_OFFSET (NonSecurePl2Flags,0),"Polarity", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> * HEST - Hardware Error Source table
> *
> ******************************************************************************/
> @@ -1262,6 +1414,34 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoMadt10[] =
> ACPI_DMT_TERMINATOR
> };
>
> +/* 11: Generic Interrupt Controller (ACPI 5.0) */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoMadt11[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_MADT11_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT32, ACPI_MADT11_OFFSET (GicId), "Local GIC Hardware ID", 0},
> + {ACPI_DMT_UINT32, ACPI_MADT11_OFFSET (Uid), "Processor UID", 0},
> + {ACPI_DMT_UINT32, ACPI_MADT11_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_MADT11_FLAG_OFFSET (Flags,0), "Processor Enabled", 0},
> + {ACPI_DMT_UINT32, ACPI_MADT11_OFFSET (ParkingVersion), "Parking Protocol Version", 0},
> + {ACPI_DMT_UINT32, ACPI_MADT11_OFFSET (PerformanceInterrupt), "Performance Interrupt", 0},
> + {ACPI_DMT_UINT64, ACPI_MADT11_OFFSET (ParkedAddress), "Parked Address", 0},
> + {ACPI_DMT_UINT64, ACPI_MADT11_OFFSET (BaseAddress), "Base Address", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 12: Generic Interrupt Distributor (ACPI 5.0) */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoMadt12[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_MADT12_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT32, ACPI_MADT12_OFFSET (GicId), "Local GIC Hardware ID", 0},
> + {ACPI_DMT_UINT64, ACPI_MADT12_OFFSET (BaseAddress), "Base Address", 0},
> + {ACPI_DMT_UINT32, ACPI_MADT12_OFFSET (GlobalIrqBase), "Interrupt Base", 0},
> + {ACPI_DMT_UINT32, ACPI_MADT12_OFFSET (Reserved2), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
>
> /*******************************************************************************
> *
> @@ -1312,6 +1492,87 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoMchi[] =
>
> /*******************************************************************************
> *
> + * MPST - Memory Power State Table
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoMpst[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_MPST_OFFSET (Reserved1), "Reserved", 0},
> + {ACPI_DMT_UINT8, ACPI_MPST_OFFSET (ChannelId), "Channel ID", 0},
> + {ACPI_DMT_UINT8, ACPI_MPST_OFFSET (Reserved2), "Reserved", 0},
> + {ACPI_DMT_UINT16, ACPI_MPST_OFFSET (PowerNodeCount), "Power Node Count", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* MPST subtables */
> +
> +/* 0: Memory Power Node Structure */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoMpst0[] =
> +{
> + {ACPI_DMT_UINT8, ACPI_MPST0_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_MPST0_FLAG_OFFSET (Flags,0), "Node Enabled", 0},
> + {ACPI_DMT_FLAG1, ACPI_MPST0_FLAG_OFFSET (Flags,0), "Power Managed", 0},
> + {ACPI_DMT_FLAG2, ACPI_MPST0_FLAG_OFFSET (Flags,0), "Hot Plug Capable", 0},
> +
> + {ACPI_DMT_UINT8, ACPI_MPST0_OFFSET (Reserved1), "Reserved", 0},
> + {ACPI_DMT_UINT16, ACPI_MPST0_OFFSET (NodeId), "Node ID", 0},
> + {ACPI_DMT_UINT32, ACPI_MPST0_OFFSET (Length), "Length", DT_LENGTH},
> + {ACPI_DMT_UINT64, ACPI_MPST0_OFFSET (RangeAddress), "Range Address", 0},
> + {ACPI_DMT_UINT64, ACPI_MPST0_OFFSET (RangeLength), "Range Length", 0},
> + {ACPI_DMT_UINT8, ACPI_MPST0_OFFSET (NumPowerStates), "Num Power States", 0},
> + {ACPI_DMT_UINT8, ACPI_MPST0_OFFSET (NumPhysicalComponents), "Num Physical Components", 0},
> + {ACPI_DMT_UINT16, ACPI_MPST0_OFFSET (Reserved2), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 0A: Sub-subtable - Memory Power State Structure (follows Memory Power Node above) */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoMpst0A[] =
> +{
> + {ACPI_DMT_UINT8, ACPI_MPST0A_OFFSET (PowerState), "Power State", 0},
> + {ACPI_DMT_UINT8, ACPI_MPST0A_OFFSET (InfoIndex), "InfoIndex", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 0B: Sub-subtable - Physical Component ID Structure (follows Memory Power State(s) above) */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoMpst0B[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_MPST0B_OFFSET (ComponentId), "Component Id", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 01: Power Characteristics Count (follows all Power Node(s) above) */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoMpst1[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_MPST1_OFFSET (CharacteristicsCount), "Characteristics Count", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 02: Memory Power State Characteristics Structure */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoMpst2[] =
> +{
> + {ACPI_DMT_UINT8, ACPI_MPST2_OFFSET (Revision), "Revision", 0},
> + {ACPI_DMT_UINT8, ACPI_MPST2_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_MPST2_FLAG_OFFSET (Flags,0), "Memory Preserved", 0},
> + {ACPI_DMT_FLAG1, ACPI_MPST2_FLAG_OFFSET (Flags,0), "Auto Entry", 0},
> + {ACPI_DMT_FLAG2, ACPI_MPST2_FLAG_OFFSET (Flags,0), "Auto Exit", 0},
> +
> + {ACPI_DMT_UINT16, ACPI_MPST2_OFFSET (Reserved1), "Reserved", 0},
> + {ACPI_DMT_UINT32, ACPI_MPST2_OFFSET (AveragePower), "Average Power", 0},
> + {ACPI_DMT_UINT32, ACPI_MPST2_OFFSET (PowerSaving), "Power Saving", 0},
> + {ACPI_DMT_UINT64, ACPI_MPST2_OFFSET (ExitLatency), "Exit Latency", 0},
> + {ACPI_DMT_UINT64, ACPI_MPST2_OFFSET (Reserved2), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> * MSCT - Maximum System Characteristics Table (ACPI 4.0)
> *
> ******************************************************************************/
> @@ -1341,6 +1602,155 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoMsct0[] =
>
> /*******************************************************************************
> *
> + * PCCT - Platform Communications Channel Table (ACPI 5.0)
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoPcct[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_PCCT_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_PCCT_FLAG_OFFSET (Flags,0), "Doorbell", 0},
> + {ACPI_DMT_UINT32, ACPI_PCCT_OFFSET (Latency), "Command Latency", 0},
> + {ACPI_DMT_UINT32, ACPI_PCCT_OFFSET (Reserved), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* PCCT subtables */
> +
> +/* 0: Generic Communications Subspace */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoPcct0[] =
> +{
> + {ACPI_DMT_UINT8, ACPI_PCCT0_OFFSET (Header.Type), "Subtable Type", 0},
> + {ACPI_DMT_UINT8, ACPI_PCCT0_OFFSET (Header.Length), "Length", DT_LENGTH},
> + {ACPI_DMT_UINT48, ACPI_PCCT0_OFFSET (Reserved[0]), "Reserved", 0},
> + {ACPI_DMT_UINT64, ACPI_PCCT0_OFFSET (BaseAddress), "Base Address", 0},
> + {ACPI_DMT_UINT64, ACPI_PCCT0_OFFSET (Length), "Address Length", 0},
> + {ACPI_DMT_GAS, ACPI_PCCT0_OFFSET (DoorbellRegister), "Doorbell Register", 0},
> + {ACPI_DMT_UINT64, ACPI_PCCT0_OFFSET (PreserveMask), "Preserve Mask", 0},
> + {ACPI_DMT_UINT64, ACPI_PCCT0_OFFSET (WriteMask), "Write Mask", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * PMTT - Platform Memory Topology Table
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_PMTT_OFFSET (Reserved), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* Common Subtable header (one per Subtable) */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoPmttHdr[] =
> +{
> + {ACPI_DMT_PMTT, ACPI_PMTTH_OFFSET (Type), "Subtable Type", 0},
> + {ACPI_DMT_UINT8, ACPI_PMTTH_OFFSET (Reserved1), "Reserved", 0},
> + {ACPI_DMT_UINT16, ACPI_PMTTH_OFFSET (Length), "Length", DT_LENGTH},
> + {ACPI_DMT_UINT16, ACPI_PMTTH_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_PMTTH_FLAG_OFFSET (Flags,0), "Top-level Device", 0},
> + {ACPI_DMT_FLAG1, ACPI_PMTTH_FLAG_OFFSET (Flags,0), "Physical Element", 0},
> + {ACPI_DMT_FLAGS2, ACPI_PMTTH_FLAG_OFFSET (Flags,0), "Memory Type", 0},
> + {ACPI_DMT_UINT16, ACPI_PMTTH_OFFSET (Reserved2), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* PMTT Subtables */
> +
> +/* 0: Socket */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt0[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_PMTT0_OFFSET (SocketId), "Socket ID", 0},
> + {ACPI_DMT_UINT16, ACPI_PMTT0_OFFSET (Reserved), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 1: Memory Controller */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt1[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_PMTT1_OFFSET (ReadLatency), "Read Latency", 0},
> + {ACPI_DMT_UINT32, ACPI_PMTT1_OFFSET (WriteLatency), "Write Latency", 0},
> + {ACPI_DMT_UINT32, ACPI_PMTT1_OFFSET (ReadBandwidth), "Read Bandwidth", 0},
> + {ACPI_DMT_UINT32, ACPI_PMTT1_OFFSET (WriteBandwidth), "Write Bandwidth", 0},
> + {ACPI_DMT_UINT16, ACPI_PMTT1_OFFSET (AccessWidth), "Access Width", 0},
> + {ACPI_DMT_UINT16, ACPI_PMTT1_OFFSET (Alignment), "Alignment", 0},
> + {ACPI_DMT_UINT16, ACPI_PMTT1_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT16, ACPI_PMTT1_OFFSET (DomainCount), "Domain Count", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 1a: Proximity Domain */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt1a[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_PMTT1A_OFFSET (ProximityDomain), "Proximity Domain", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 2: Physical Component */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt2[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_PMTT2_OFFSET (ComponentId), "Component ID", 0},
> + {ACPI_DMT_UINT16, ACPI_PMTT2_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT32, ACPI_PMTT2_OFFSET (MemorySize), "Memory Size", 0},
> + {ACPI_DMT_UINT32, ACPI_PMTT2_OFFSET (BiosHandle), "Bios Handle", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * S3PT - S3 Performance Table
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoS3pt[] =
> +{
> + {ACPI_DMT_SIG, ACPI_S3PT_OFFSET (Signature[0]), "Signature", 0},
> + {ACPI_DMT_UINT32, ACPI_S3PT_OFFSET (Length), "Length", DT_LENGTH},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* S3PT subtable header */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoS3ptHdr[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_S3PTH_OFFSET (Type), "Type", 0},
> + {ACPI_DMT_UINT8, ACPI_S3PTH_OFFSET (Length), "Length", DT_LENGTH},
> + {ACPI_DMT_UINT8, ACPI_S3PTH_OFFSET (Revision), "Revision", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 0: Basic S3 Resume Performance Record */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoS3pt0[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_S3PT0_OFFSET (ResumeCount), "Resume Count", 0},
> + {ACPI_DMT_UINT64, ACPI_S3PT0_OFFSET (FullResume), "Full Resume", 0},
> + {ACPI_DMT_UINT64, ACPI_S3PT0_OFFSET (AverageResume), "Average Resume", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 1: Basic S3 Suspend Performance Record */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoS3pt1[] =
> +{
> + {ACPI_DMT_UINT64, ACPI_S3PT1_OFFSET (SuspendStart), "Suspend Start", 0},
> + {ACPI_DMT_UINT64, ACPI_S3PT1_OFFSET (SuspendEnd), "Suspend End", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> * SBST - Smart Battery Specification Table
> *
> ******************************************************************************/
> @@ -1681,8 +2091,10 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoWdrt[] =
> ACPI_DMT_TERMINATOR
> };
>
> +/*! [Begin] no source code translation */
> +
> /*
> - * Generic types (used in UEFI)
> + * Generic types (used in UEFI and custom tables)
> *
> * Examples:
> *
> @@ -1701,7 +2113,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoWdrt[] =
> * DevicePath : "\PciRoot(0)\Pci(0x1f,1)\Usb(0,0)"
> */
>
> -#define ACPI_DM_GENERIC_ENTRY(FieldType, FieldName)\
> +#define ACPI_DM_GENERIC_ENTRY(FieldType, FieldName) \
> {{FieldType, 0, FieldName, 0}, ACPI_DMT_TERMINATOR}
>
> ACPI_DMTABLE_INFO AcpiDmTableInfoGeneric[][2] =
> @@ -1710,6 +2122,8 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoGeneric[][2] =
> ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT16, "UINT16"),
> ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT24, "UINT24"),
> ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT32, "UINT32"),
> + ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT40, "UINT40"),
> + ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT48, "UINT48"),
> ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT56, "UINT56"),
> ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT64, "UINT64"),
> ACPI_DM_GENERIC_ENTRY (ACPI_DMT_STRING, "String"),
> @@ -1720,3 +2134,4 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoGeneric[][2] =
> ACPI_DM_GENERIC_ENTRY (ACPI_DMT_LABEL, "Label"),
> {ACPI_DMT_TERMINATOR}
> };
> +/*! [End] no source code translation !*/
> diff --git a/src/acpica/source/compiler/aslanalyze.c b/src/acpica/source/compiler/aslanalyze.c
> index 256ea6f..4a39e41 100644
> --- a/src/acpica/source/compiler/aslanalyze.c
> +++ b/src/acpica/source/compiler/aslanalyze.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -198,7 +198,6 @@ AnCheckId (
> {
> UINT32 i;
> ACPI_SIZE Length;
> - UINT32 AlphaPrefixLength;
>
>
> /* Only care about string versions of _HID/_CID (integers are legal) */
> @@ -246,12 +245,18 @@ AnCheckId (
> {
> AslError (ASL_ERROR, ASL_MSG_ALPHANUMERIC_STRING,
> Op, Op->Asl.Value.String);
> - break;
> + return;
> }
> }
>
> - /* _HID String must be of the form "XXX####" or "ACPI####" */
> -
> + /*
> + * _HID String must be one of these forms:
> + *
> + * "AAA####" A is an uppercase letter and # is a hex digit
> + * "ACPI####" # is a hex digit
> + * "NNNN####" N is an uppercase letter or decimal digit (0-9)
> + * # is a hex digit (ACPI 5.0)
> + */
> if ((Length < 7) || (Length > 8))
> {
> AslError (ASL_ERROR, ASL_MSG_HID_LENGTH,
> @@ -259,22 +264,48 @@ AnCheckId (
> return;
> }
>
> - /* _HID Length is valid, now check for uppercase (first 3 or 4 chars) */
> + /* _HID Length is valid (7 or 8), now check the prefix (first 3 or 4 chars) */
>
> - AlphaPrefixLength = 3;
> - if (Length >= 8)
> + if (Length == 7)
> {
> - AlphaPrefixLength = 4;
> + /* AAA####: Ensure the alphabetic prefix is all uppercase */
> +
> + for (i = 0; i < 3; i++)
> + {
> + if (!isupper ((int) Op->Asl.Value.String[i]))
> + {
> + AslError (ASL_ERROR, ASL_MSG_UPPER_CASE,
> + Op, &Op->Asl.Value.String[i]);
> + return;
> + }
> + }
> + }
> + else /* Length == 8 */
> + {
> + /*
> + * ACPI#### or NNNN####:
> + * Ensure the prefix contains only uppercase alpha or decimal digits
> + */
> + for (i = 0; i < 4; i++)
> + {
> + if (!isupper ((int) Op->Asl.Value.String[i]) &&
> + !isdigit ((int) Op->Asl.Value.String[i]))
> + {
> + AslError (ASL_ERROR, ASL_MSG_HID_PREFIX,
> + Op, &Op->Asl.Value.String[i]);
> + return;
> + }
> + }
> }
>
> - /* Ensure the alphabetic prefix is all uppercase */
> + /* Remaining characters (suffix) must be hex digits */
>
> - for (i = 0; (i < AlphaPrefixLength) && Op->Asl.Value.String[i]; i++)
> + for (; i < Length; i++)
> {
> - if (!isupper ((int) Op->Asl.Value.String[i]))
> + if (!isxdigit ((int) Op->Asl.Value.String[i]))
> {
> - AslError (ASL_ERROR, ASL_MSG_UPPER_CASE,
> - Op, &Op->Asl.Value.String[i]);
> + AslError (ASL_ERROR, ASL_MSG_HID_SUFFIX,
> + Op, &Op->Asl.Value.String[i]);
> break;
> }
> }
> diff --git a/src/acpica/source/compiler/aslbtypes.c b/src/acpica/source/compiler/aslbtypes.c
> index d170671..962ae7a 100644
> --- a/src/acpica/source/compiler/aslbtypes.c
> +++ b/src/acpica/source/compiler/aslbtypes.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/compiler/aslcodegen.c b/src/acpica/source/compiler/aslcodegen.c
> index 715e537..2252ab4 100644
> --- a/src/acpica/source/compiler/aslcodegen.c
> +++ b/src/acpica/source/compiler/aslcodegen.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -336,19 +336,24 @@ CgWriteAmlOpcode (
> /* These opcodes should not get here */
>
> printf ("Found a node with an unassigned AML opcode\n");
> - fprintf (stderr, "Found a node with an unassigned AML opcode\n");
> + FlPrintFile (ASL_FILE_STDERR, "Found a node with an unassigned AML opcode\n");
> return;
>
> case AML_INT_RESERVEDFIELD_OP:
>
> /* Special opcodes for within a field definition */
>
> - Aml.Opcode = 0x00;
> + Aml.Opcode = AML_FIELD_OFFSET_OP;
> break;
>
> case AML_INT_ACCESSFIELD_OP:
>
> - Aml.Opcode = 0x01;
> + Aml.Opcode = AML_FIELD_ACCESS_OP;
> + break;
> +
> + case AML_INT_CONNECTION_OP:
> +
> + Aml.Opcode = AML_FIELD_CONNECTION_OP;
> break;
>
> default:
> diff --git a/src/acpica/source/compiler/aslcompile.c b/src/acpica/source/compiler/aslcompile.c
> index 5becc6e..371a6e3 100644
> --- a/src/acpica/source/compiler/aslcompile.c
> +++ b/src/acpica/source/compiler/aslcompile.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -314,10 +314,10 @@ CmFlushSourceCode (
>
> while (FlReadFile (ASL_FILE_INPUT, &Buffer, 1) != AE_ERROR)
> {
> - InsertLineBuffer ((int) Buffer);
> + AslInsertLineBuffer ((int) Buffer);
> }
>
> - ResetCurrentLineBuffer ();
> + AslResetCurrentLineBuffer ();
> }
>
>
> @@ -529,6 +529,21 @@ CmDoCompile (
> Event = UtBeginEvent ("Open input and output files");
> UtEndEvent (Event);
>
> + Event = UtBeginEvent ("Preprocess input file");
> + if (Gbl_PreprocessFlag)
> + {
> + /* Preprocessor */
> +
> + PrDoPreprocess ();
> + if (Gbl_PreprocessOnly)
> + {
> + UtEndEvent (Event);
> + CmCleanupAndExit ();
> + return 0;
> + }
> + }
> + UtEndEvent (Event);
> +
> /* Build the parse tree */
>
> Event = UtBeginEvent ("Parse source code and build parse tree");
> @@ -544,8 +559,18 @@ CmDoCompile (
>
> if (!RootNode)
> {
> - CmCleanupAndExit ();
> - return -1;
> + /*
> + * If there are no errors, then we have some sort of
> + * internal problem.
> + */
> + Status = AslCheckForErrorExit ();
> + if (Status == AE_OK)
> + {
> + AslError (ASL_ERROR, ASL_MSG_COMPILER_INTERNAL,
> + NULL, "- Could not resolve parse tree root node");
> + }
> +
> + goto ErrorExit;
> }
>
> /* Optional parse tree dump, compiler debug output only */
> @@ -578,12 +603,12 @@ CmDoCompile (
> */
> Event = UtBeginEvent ("Open AML output file");
> Status = FlOpenAmlOutputFile (Gbl_OutputFilenamePrefix);
> + UtEndEvent (Event);
> if (ACPI_FAILURE (Status))
> {
> AePrintErrorLog (ASL_FILE_STDERR);
> return -1;
> }
> - UtEndEvent (Event);
>
> /* Interpret and generate all compile-time constants */
>
> @@ -613,15 +638,16 @@ CmDoCompile (
>
> if (Gbl_ParseOnlyFlag)
> {
> - AePrintErrorLog (ASL_FILE_STDOUT);
> - UtDisplaySummary (ASL_FILE_STDOUT);
> + AePrintErrorLog (ASL_FILE_STDERR);
> + UtDisplaySummary (ASL_FILE_STDERR);
> if (Gbl_DebugFlag)
> {
> - /* Print error summary to the debug file */
> + /* Print error summary to the stdout also */
>
> - AePrintErrorLog (ASL_FILE_STDERR);
> - UtDisplaySummary (ASL_FILE_STDERR);
> + AePrintErrorLog (ASL_FILE_STDOUT);
> + UtDisplaySummary (ASL_FILE_STDOUT);
> }
> + UtEndEvent (FullCompile);
> return 0;
> }
>
> @@ -636,7 +662,7 @@ CmDoCompile (
> UtEndEvent (Event);
> if (ACPI_FAILURE (Status))
> {
> - return -1;
> + goto ErrorExit;
> }
>
> /* Namespace cross-reference */
> @@ -645,7 +671,7 @@ CmDoCompile (
> Status = LkCrossReferenceNamespace ();
> if (ACPI_FAILURE (Status))
> {
> - return -1;
> + goto ErrorExit;
> }
>
> /* Namespace - Check for non-referenced objects */
> @@ -716,6 +742,11 @@ CmDoCompile (
> UtEndEvent (FullCompile);
> CmCleanupAndExit ();
> return 0;
> +
> +ErrorExit:
> + UtEndEvent (FullCompile);
> + CmCleanupAndExit ();
> + return (-1);
> }
>
>
> @@ -810,12 +841,12 @@ CmCleanupAndExit (
> UINT32 i;
>
>
> - AePrintErrorLog (ASL_FILE_STDOUT);
> + AePrintErrorLog (ASL_FILE_STDERR);
> if (Gbl_DebugFlag)
> {
> - /* Print error summary to the debug file */
> + /* Print error summary to stdout also */
>
> - AePrintErrorLog (ASL_FILE_STDERR);
> + AePrintErrorLog (ASL_FILE_STDOUT);
> }
>
> DbgPrint (ASL_DEBUG_OUTPUT, "\n\nElapsed time for major events\n\n");
> @@ -869,7 +900,9 @@ CmCleanupAndExit (
>
> /* Close all open files */
>
> - for (i = 2; i < ASL_MAX_FILE_TYPE; i++)
> + Gbl_Files[ASL_FILE_PREPROCESSOR].Handle = NULL; /* the .i file is same as source file */
> +
> + for (i = ASL_FILE_INPUT; i < ASL_MAX_FILE_TYPE; i++)
> {
> FlCloseFile (i);
> }
> @@ -887,6 +920,20 @@ CmCleanupAndExit (
> }
> }
>
> + /* Delete the preprocessor output file (.i) unless -li flag is set */
> +
> + if (!Gbl_PreprocessorOutputFlag &&
> + Gbl_PreprocessFlag &&
> + Gbl_Files[ASL_FILE_PREPROCESSOR].Filename)
> + {
> + if (remove (Gbl_Files[ASL_FILE_PREPROCESSOR].Filename))
> + {
> + printf ("%s: ",
> + Gbl_Files[ASL_FILE_PREPROCESSOR].Filename);
> + perror ("Could not delete preprocessor .i file");
> + }
> + }
> +
> /*
> * Delete intermediate ("combined") source file (if -ls flag not set)
> * This file is created during normal ASL/AML compiles. It is not
> diff --git a/src/acpica/source/compiler/aslcompiler.h b/src/acpica/source/compiler/aslcompiler.h
> index ba5b7f8..29558fc 100644
> --- a/src/acpica/source/compiler/aslcompiler.h
> +++ b/src/acpica/source/compiler/aslcompiler.h
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -147,6 +147,7 @@
> #include "asltypes.h"
> #include "aslmessages.h"
> #include "aslglobal.h"
> +#include "preprocess.h"
>
>
> /*******************************************************************************
> @@ -156,7 +157,7 @@
> ******************************************************************************/
>
> /*
> - * parser - generated from flex/bison, lex/yacc, etc.
> + * Main ASL parser - generated from flex/bison, lex/yacc, etc.
> */
> int
> AslCompilerparse(
> @@ -171,11 +172,11 @@ AslCompilerlex(
> void);
>
> void
> -ResetCurrentLineBuffer (
> +AslResetCurrentLineBuffer (
> void);
>
> void
> -InsertLineBuffer (
> +AslInsertLineBuffer (
> int SourceChar);
>
> int
> @@ -207,6 +208,11 @@ ACPI_STATUS
> AslDoOneFile (
> char *Filename);
>
> +ACPI_STATUS
> +AslCheckForErrorExit (
> + void);
> +
> +
> /*
> * aslcompile - compile mainline
> */
> @@ -375,6 +381,16 @@ AslCommonError (
> char *ExtraMessage);
>
> void
> +AslCommonError2 (
> + UINT8 Level,
> + UINT8 MessageId,
> + UINT32 LineNumber,
> + UINT32 Column,
> + char *SourceLine,
> + char *Filename,
> + char *ExtraMessage);
> +
> +void
> AePrintException (
> UINT32 FileId,
> ASL_ERROR_MSG *Enode,
> @@ -706,7 +722,11 @@ FlPrintFile (
>
> void
> FlSetLineNumber (
> - ACPI_PARSE_OBJECT *Op);
> + UINT32 LineNumber);
> +
> +void
> +FlSetFilename (
> + char *Filename);
>
> ACPI_STATUS
> FlOpenInputFile (
> @@ -901,21 +921,23 @@ RsAllocateResourceNode (
> UINT32 Size);
>
> void
> -RsCreateBitField (
> +RsCreateResourceField (
> ACPI_PARSE_OBJECT *Op,
> char *Name,
> UINT32 ByteOffset,
> - UINT32 BitOffset);
> + UINT32 BitOffset,
> + UINT32 BitLength);
>
> void
> -RsCreateByteField (
> +RsSetFlagBits (
> + UINT8 *Flags,
> ACPI_PARSE_OBJECT *Op,
> - char *Name,
> - UINT32 ByteOffset);
> + UINT8 Position,
> + UINT8 DefaultBit);
>
> void
> -RsSetFlagBits (
> - UINT8 *Flags,
> +RsSetFlagBits16 (
> + UINT16 *Flags,
> ACPI_PARSE_OBJECT *Op,
> UINT8 Position,
> UINT8 DefaultBit);
> @@ -1003,6 +1025,11 @@ RsDoDmaDescriptor (
> UINT32 CurrentByteOffset);
>
> ASL_RESOURCE_NODE *
> +RsDoFixedDmaDescriptor (
> + ACPI_PARSE_OBJECT *Op,
> + UINT32 CurrentByteOffset);
> +
> +ASL_RESOURCE_NODE *
> RsDoFixedIoDescriptor (
> ACPI_PARSE_OBJECT *Op,
> UINT32 CurrentByteOffset);
> @@ -1041,6 +1068,30 @@ RsDoGeneralRegisterDescriptor (
> ACPI_PARSE_OBJECT *Op,
> UINT32 CurrentByteOffset);
>
> +ASL_RESOURCE_NODE *
> +RsDoGpioIntDescriptor (
> + ACPI_PARSE_OBJECT *Op,
> + UINT32 CurrentByteOffset);
> +
> +ASL_RESOURCE_NODE *
> +RsDoGpioIoDescriptor (
> + ACPI_PARSE_OBJECT *Op,
> + UINT32 CurrentByteOffset);
> +
> +ASL_RESOURCE_NODE *
> +RsDoI2cSerialBusDescriptor (
> + ACPI_PARSE_OBJECT *Op,
> + UINT32 CurrentByteOffset);
> +
> +ASL_RESOURCE_NODE *
> +RsDoSpiSerialBusDescriptor (
> + ACPI_PARSE_OBJECT *Op,
> + UINT32 CurrentByteOffset);
> +
> +ASL_RESOURCE_NODE *
> +RsDoUartSerialBusDescriptor (
> + ACPI_PARSE_OBJECT *Op,
> + UINT32 CurrentByteOffset);
>
> /*
> * aslrestype2d - DWord address descriptors
> diff --git a/src/acpica/source/compiler/aslcompiler.l b/src/acpica/source/compiler/aslcompiler.l
> index 4215ee3..f911072 100644
> --- a/src/acpica/source/compiler/aslcompiler.l
> +++ b/src/acpica/source/compiler/aslcompiler.l
> @@ -1,8 +1,7 @@
> -
> %{
> /******************************************************************************
> *
> - * Module Name: aslcompiler.l - Flex input file
> + * Module Name: aslcompiler.l - Flex/lex input file
> *
> *****************************************************************************/
>
> @@ -10,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -131,22 +130,31 @@ YYSTYPE AslCompilerlval;
> */
>
> #define _COMPONENT ACPI_COMPILER
> - ACPI_MODULE_NAME ("aslscan")
> -char
> -comment (void);
> -char
> -comment2 (void);
> -void
> + ACPI_MODULE_NAME ("aslscanner")
> +
> +
> +/* Local prototypes */
> +
> +static void
> +AslDoLineDirective (void);
> +
> +static char
> +AslDoComment (void);
> +
> +static char
> +AslDoCommentType2 (void);
> +
> +static char
> +AslDoStringLiteral (void);
> +
> +static void
> count (int type);
> -char
> -literal (void);
> -void
> -copy (void);
> +
>
> /*! [Begin] no source code translation */
>
> %}
> -
> + /* Definitions */
>
> LeadNameChar [A-Za-z_]
> DigitChar [0-9]
> @@ -166,6 +174,7 @@ NonEmptyNamePath {NameSeg}{NamePathTail}*
> NamePathTail [.]{NameSeg}
>
> %%
> + /* Rules */
>
> [ ] { count (0); }
> [\n] { count (0); } /* Handle files with both LF and CR/LF */
> @@ -173,10 +182,11 @@ NamePathTail [.]{NameSeg}
> [ \t] { count (0); }
>
>
> -"/*" { if (!comment ()) yyterminate (); }
> -"//" { if (!comment2 ()) yyterminate (); }
> +"/*" { if (!AslDoComment ()) yyterminate (); }
> +"//" { if (!AslDoCommentType2 ()) yyterminate (); }
>
> -"\"" { if (literal ()) return (PARSEOP_STRING_LITERAL); else yyterminate (); }
> +"\"" { if (AslDoStringLiteral ()) return (PARSEOP_STRING_LITERAL); else yyterminate (); }
> +";" { count (0); return(';'); }
>
>
> 0[xX]{HexDigitChar}+ |
> @@ -184,77 +194,66 @@ NamePathTail [.]{NameSeg}
> count (1); return (PARSEOP_INTEGER); }
>
> "Include" { count (1); return (PARSEOP_INCLUDE); }
> -"#include" { count (1); return (PARSEOP_INCLUDE_CSTYLE); }
> -"#line" { count (1); return (PARSEOP_LINE_CSTYLE); }
> "External" { count (1); return (PARSEOP_EXTERNAL); }
>
> + /*
> + * The #line directive is emitted by the preprocessor and handled
> + * here in the main iASL lexer - simply set the line number and
> + * optionally the current filename.
> + */
> +"#line" { AslDoLineDirective ();}
>
> -"Ones" { count (1); return (PARSEOP_ONES); }
> -"One" { count (1); return (PARSEOP_ONE); }
> -"Zero" { count (1); return (PARSEOP_ZERO); }
> -"Revision" { count (1); return (PARSEOP_REVISION); }
>
> -"Offset" { count (1); return (PARSEOP_OFFSET); }
> + /****************************************************************************
> + *
> + * Main ASL operators
> + *
> + ****************************************************************************/
> +
> "AccessAs" { count (1); return (PARSEOP_ACCESSAS); }
> -"BankField" { count (2); return (PARSEOP_BANKFIELD); }
> -"CreateBitField" { count (2); return (PARSEOP_CREATEBITFIELD); }
> -"CreateByteField" { count (2); return (PARSEOP_CREATEBYTEFIELD); }
> -"CreateDWordField" { count (2); return (PARSEOP_CREATEDWORDFIELD); }
> -"CreateField" { count (2); return (PARSEOP_CREATEFIELD); }
> -"CreateQWordField" { count (2); return (PARSEOP_CREATEQWORDFIELD); }
> -"CreateWordField" { count (2); return (PARSEOP_CREATEWORDFIELD); }
> -"DataTableRegion" { count (2); return (PARSEOP_DATATABLEREGION); }
> -"Device" { count (2); return (PARSEOP_DEVICE); }
> -"Event" { count (2); return (PARSEOP_EVENT); }
> -"Field" { count (2); return (PARSEOP_FIELD); }
> -"Function" { count (2); return (PARSEOP_FUNCTION); }
> -"IndexField" { count (2); return (PARSEOP_INDEXFIELD); }
> -"Method" { count (2); return (PARSEOP_METHOD); }
> -"Mutex" { count (2); return (PARSEOP_MUTEX); }
> -"OperationRegion" { count (2); return (PARSEOP_OPERATIONREGION); }
> -"PowerResource" { count (2); return (PARSEOP_POWERRESOURCE); }
> -"Processor" { count (2); return (PARSEOP_PROCESSOR); }
> -"ThermalZone" { count (2); return (PARSEOP_THERMALZONE); }
> +"Acquire" { count (3); return (PARSEOP_ACQUIRE); }
> +"Add" { count (3); return (PARSEOP_ADD); }
> "Alias" { count (2); return (PARSEOP_ALIAS); }
> -"Name" { count (2); return (PARSEOP_NAME); }
> -"Scope" { count (2); return (PARSEOP_SCOPE); }
> +"And" { count (3); return (PARSEOP_AND); }
> +"BankField" { count (2); return (PARSEOP_BANKFIELD); }
> "Break" { count (3); return (PARSEOP_BREAK); }
> "BreakPoint" { count (3); return (PARSEOP_BREAKPOINT); }
> -"Continue" { count (3); return (PARSEOP_CONTINUE); }
> -"Fatal" { count (3); return (PARSEOP_FATAL); }
> -"If" { count (3); return (PARSEOP_IF); }
> -"Else" { count (3); return (PARSEOP_ELSE); }
> -"ElseIf" { count (3); return (PARSEOP_ELSEIF); }
> -"Load" { count (3); return (PARSEOP_LOAD); }
> -"Noop" { count (3); return (PARSEOP_NOOP); }
> -"Notify" { count (3); return (PARSEOP_NOTIFY); }
> -"Release" { count (3); return (PARSEOP_RELEASE); }
> -"Reset" { count (3); return (PARSEOP_RESET); }
> -"Return" { count (3); return (PARSEOP_RETURN); }
> -"Signal" { count (3); return (PARSEOP_SIGNAL); }
> -"Sleep" { count (3); return (PARSEOP_SLEEP); }
> -"Stall" { count (3); return (PARSEOP_STALL); }
> -"Switch" { count (3); return (PARSEOP_SWITCH); }
> +"Buffer" { count (1); return (PARSEOP_BUFFER); }
> "Case" { count (3); return (PARSEOP_CASE); }
> -"Default" { count (3); return (PARSEOP_DEFAULT); }
> -"Unload" { count (3); return (PARSEOP_UNLOAD); }
> -"While" { count (3); return (PARSEOP_WHILE); }
> -
> -"Acquire" { count (3); return (PARSEOP_ACQUIRE); }
> -"Add" { count (3); return (PARSEOP_ADD); }
> -"And" { count (3); return (PARSEOP_AND); }
> "Concatenate" { count (3); return (PARSEOP_CONCATENATE); }
> "ConcatenateResTemplate" { count (3); return (PARSEOP_CONCATENATERESTEMPLATE); }
> "CondRefOf" { count (3); return (PARSEOP_CONDREFOF); }
> +"Connection" { count (2); return (PARSEOP_CONNECTION); }
> +"Continue" { count (3); return (PARSEOP_CONTINUE); }
> "CopyObject" { count (3); return (PARSEOP_COPYOBJECT); }
> +"CreateBitField" { count (2); return (PARSEOP_CREATEBITFIELD); }
> +"CreateByteField" { count (2); return (PARSEOP_CREATEBYTEFIELD); }
> +"CreateDWordField" { count (2); return (PARSEOP_CREATEDWORDFIELD); }
> +"CreateField" { count (2); return (PARSEOP_CREATEFIELD); }
> +"CreateQWordField" { count (2); return (PARSEOP_CREATEQWORDFIELD); }
> +"CreateWordField" { count (2); return (PARSEOP_CREATEWORDFIELD); }
> +"DataTableRegion" { count (2); return (PARSEOP_DATATABLEREGION); }
> +"Debug" { count (1); return (PARSEOP_DEBUG); }
> "Decrement" { count (3); return (PARSEOP_DECREMENT); }
> +"Default" { count (3); return (PARSEOP_DEFAULT); }
> +"DefinitionBlock" { count (1); return (PARSEOP_DEFINITIONBLOCK); }
> "DeRefOf" { count (3); return (PARSEOP_DEREFOF); }
> +"Device" { count (2); return (PARSEOP_DEVICE); }
> "Divide" { count (3); return (PARSEOP_DIVIDE); }
> +"Eisaid" { count (1); return (PARSEOP_EISAID); }
> +"Else" { count (3); return (PARSEOP_ELSE); }
> +"ElseIf" { count (3); return (PARSEOP_ELSEIF); }
> +"Event" { count (2); return (PARSEOP_EVENT); }
> +"Fatal" { count (3); return (PARSEOP_FATAL); }
> +"Field" { count (2); return (PARSEOP_FIELD); }
> "FindSetLeftBit" { count (3); return (PARSEOP_FINDSETLEFTBIT); }
> "FindSetRightBit" { count (3); return (PARSEOP_FINDSETRIGHTBIT); }
> -"FromBCD" { count (3); return (PARSEOP_FROMBCD); }
> +"FromBcd" { count (3); return (PARSEOP_FROMBCD); }
> +"Function" { count (2); return (PARSEOP_FUNCTION); }
> +"If" { count (3); return (PARSEOP_IF); }
> "Increment" { count (3); return (PARSEOP_INCREMENT); }
> "Index" { count (3); return (PARSEOP_INDEX); }
> +"IndexField" { count (2); return (PARSEOP_INDEXFIELD); }
> "LAnd" { count (3); return (PARSEOP_LAND); }
> "LEqual" { count (3); return (PARSEOP_LEQUAL); }
> "LGreater" { count (3); return (PARSEOP_LGREATER); }
> @@ -263,32 +262,62 @@ NamePathTail [.]{NameSeg}
> "LLessEqual" { count (3); return (PARSEOP_LLESSEQUAL); }
> "LNot" { count (3); return (PARSEOP_LNOT); }
> "LNotEqual" { count (3); return (PARSEOP_LNOTEQUAL); }
> +"Load" { count (3); return (PARSEOP_LOAD); }
> "LoadTable" { count (3); return (PARSEOP_LOADTABLE); }
> "LOr" { count (3); return (PARSEOP_LOR); }
> "Match" { count (3); return (PARSEOP_MATCH); }
> +"Method" { count (2); return (PARSEOP_METHOD); }
> "Mid" { count (3); return (PARSEOP_MID); }
> "Mod" { count (3); return (PARSEOP_MOD); }
> "Multiply" { count (3); return (PARSEOP_MULTIPLY); }
> +"Mutex" { count (2); return (PARSEOP_MUTEX); }
> +"Name" { count (2); return (PARSEOP_NAME); }
> "NAnd" { count (3); return (PARSEOP_NAND); }
> +"Noop" { count (3); return (PARSEOP_NOOP); }
> "NOr" { count (3); return (PARSEOP_NOR); }
> "Not" { count (3); return (PARSEOP_NOT); }
> +"Notify" { count (3); return (PARSEOP_NOTIFY); }
> "ObjectType" { count (3); return (PARSEOP_OBJECTTYPE); }
> +"Offset" { count (1); return (PARSEOP_OFFSET); }
> +"One" { count (1); return (PARSEOP_ONE); }
> +"Ones" { count (1); return (PARSEOP_ONES); }
> +"OperationRegion" { count (2); return (PARSEOP_OPERATIONREGION); }
> "Or" { count (3); return (PARSEOP_OR); }
> +"Package" { count (1); return (PARSEOP_PACKAGE); }
> +"PowerResource" { count (2); return (PARSEOP_POWERRESOURCE); }
> +"Processor" { count (2); return (PARSEOP_PROCESSOR); }
> "RefOf" { count (3); return (PARSEOP_REFOF); }
> +"Release" { count (3); return (PARSEOP_RELEASE); }
> +"Reset" { count (3); return (PARSEOP_RESET); }
> +"Return" { count (3); return (PARSEOP_RETURN); }
> +"Revision" { count (1); return (PARSEOP_REVISION); }
> +"Scope" { count (2); return (PARSEOP_SCOPE); }
> "ShiftLeft" { count (3); return (PARSEOP_SHIFTLEFT); }
> "ShiftRight" { count (3); return (PARSEOP_SHIFTRIGHT); }
> +"Signal" { count (3); return (PARSEOP_SIGNAL); }
> "SizeOf" { count (3); return (PARSEOP_SIZEOF); }
> +"Sleep" { count (3); return (PARSEOP_SLEEP); }
> +"Stall" { count (3); return (PARSEOP_STALL); }
> "Store" { count (3); return (PARSEOP_STORE); }
> "Subtract" { count (3); return (PARSEOP_SUBTRACT); }
> +"Switch" { count (3); return (PARSEOP_SWITCH); }
> +"ThermalZone" { count (2); return (PARSEOP_THERMALZONE); }
> "Timer" { count (3); return (PARSEOP_TIMER); }
> -"ToBCD" { count (3); return (PARSEOP_TOBCD); }
> +"ToBcd" { count (3); return (PARSEOP_TOBCD); }
> "ToBuffer" { count (3); return (PARSEOP_TOBUFFER); }
> "ToDecimalString" { count (3); return (PARSEOP_TODECIMALSTRING); }
> "ToHexString" { count (3); return (PARSEOP_TOHEXSTRING); }
> "ToInteger" { count (3); return (PARSEOP_TOINTEGER); }
> "ToString" { count (3); return (PARSEOP_TOSTRING); }
> +"ToUuid" { count (1); return (PARSEOP_TOUUID); }
> +"Unicode" { count (1); return (PARSEOP_UNICODE); }
> +"Unload" { count (3); return (PARSEOP_UNLOAD); }
> "Wait" { count (3); return (PARSEOP_WAIT); }
> +"While" { count (3); return (PARSEOP_WHILE); }
> "XOr" { count (3); return (PARSEOP_XOR); }
> +"Zero" { count (1); return (PARSEOP_ZERO); }
> +
> + /* Control method arguments and locals */
>
> "Arg0" { count (1); return (PARSEOP_ARG0); }
> "Arg1" { count (1); return (PARSEOP_ARG1); }
> @@ -297,7 +326,6 @@ NamePathTail [.]{NameSeg}
> "Arg4" { count (1); return (PARSEOP_ARG4); }
> "Arg5" { count (1); return (PARSEOP_ARG5); }
> "Arg6" { count (1); return (PARSEOP_ARG6); }
> -
> "Local0" { count (1); return (PARSEOP_LOCAL0); }
> "Local1" { count (1); return (PARSEOP_LOCAL1); }
> "Local2" { count (1); return (PARSEOP_LOCAL2); }
> @@ -307,16 +335,16 @@ NamePathTail [.]{NameSeg}
> "Local6" { count (1); return (PARSEOP_LOCAL6); }
> "Local7" { count (1); return (PARSEOP_LOCAL7); }
>
> -"Debug" { count (1); return (PARSEOP_DEBUG); }
>
> -"DefinitionBlock" { count (1); return (PARSEOP_DEFINITIONBLOCK); }
> -"Buffer" { count (1); return (PARSEOP_BUFFER); }
> -"Package" { count (1); return (PARSEOP_PACKAGE); }
> + /****************************************************************************
> + *
> + * Resource Descriptor macros
> + *
> + ****************************************************************************/
>
> -"EISAID" { count (1); return (PARSEOP_EISAID); }
> "ResourceTemplate" { count (1); return (PARSEOP_RESOURCETEMPLATE); }
> -"ToUUID" { count (1); return (PARSEOP_TOUUID); }
> -"Unicode" { count (1); return (PARSEOP_UNICODE); }
> +"RawDataBuffer" { count (1); return (PARSEOP_DATABUFFER); }
> +
> "DMA" { count (1); return (PARSEOP_DMA); }
> "DWordIO" { count (1); return (PARSEOP_DWORDIO); }
> "DWordMemory" { count (1); return (PARSEOP_DWORDMEMORY); }
> @@ -325,70 +353,50 @@ NamePathTail [.]{NameSeg}
> "ExtendedIO" { count (1); return (PARSEOP_EXTENDEDIO); }
> "ExtendedMemory" { count (1); return (PARSEOP_EXTENDEDMEMORY); }
> "ExtendedSpace" { count (1); return (PARSEOP_EXTENDEDSPACE); }
> +"FixedDma" { count (1); return (PARSEOP_FIXEDDMA); }
> "FixedIO" { count (1); return (PARSEOP_FIXEDIO); }
> +"GpioInt" { count (1); return (PARSEOP_GPIO_INT); }
> +"GpioIo" { count (1); return (PARSEOP_GPIO_IO); }
> +"I2cSerialBus" { count (1); return (PARSEOP_I2C_SERIALBUS); }
> "Interrupt" { count (1); return (PARSEOP_INTERRUPT); }
> "IO" { count (1); return (PARSEOP_IO); }
> -"IRQNoFlags" { count (1); return (PARSEOP_IRQNOFLAGS); }
> "IRQ" { count (1); return (PARSEOP_IRQ); }
> +"IRQNoFlags" { count (1); return (PARSEOP_IRQNOFLAGS); }
> "Memory24" { count (1); return (PARSEOP_MEMORY24); }
> -"Memory32Fixed" { count (1); return (PARSEOP_MEMORY32FIXED); }
> "Memory32" { count (1); return (PARSEOP_MEMORY32); }
> +"Memory32Fixed" { count (1); return (PARSEOP_MEMORY32FIXED); }
> "QWordIO" { count (1); return (PARSEOP_QWORDIO); }
> "QWordMemory" { count (1); return (PARSEOP_QWORDMEMORY); }
> "QWordSpace" { count (1); return (PARSEOP_QWORDSPACE); }
> "Register" { count (1); return (PARSEOP_REGISTER); }
> +"SpiSerialBus" { count (1); return (PARSEOP_SPI_SERIALBUS); }
> "StartDependentFn" { count (1); return (PARSEOP_STARTDEPENDENTFN); }
> "StartDependentFnNoPri" { count (1); return (PARSEOP_STARTDEPENDENTFN_NOPRI); }
> +"UartSerialBus" { count (1); return (PARSEOP_UART_SERIALBUS); }
> "VendorLong" { count (1); return (PARSEOP_VENDORLONG); }
> "VendorShort" { count (1); return (PARSEOP_VENDORSHORT); }
> "WordBusNumber" { count (1); return (PARSEOP_WORDBUSNUMBER); }
> "WordIO" { count (1); return (PARSEOP_WORDIO); }
> "WordSpace" { count (1); return (PARSEOP_WORDSPACE); }
>
> -"UnknownObj" { count (0); return (PARSEOP_OBJECTTYPE_UNK); }
> -"IntObj" { count (0); return (PARSEOP_OBJECTTYPE_INT); }
> -"StrObj" { count (0); return (PARSEOP_OBJECTTYPE_STR); }
> -"BuffObj" { count (0); return (PARSEOP_OBJECTTYPE_BUF); }
> -"PkgObj" { count (0); return (PARSEOP_OBJECTTYPE_PKG); }
> -"FieldUnitObj" { count (0); return (PARSEOP_OBJECTTYPE_FLD); }
> -"DeviceObj" { count (0); return (PARSEOP_OBJECTTYPE_DEV); }
> -"EventObj" { count (0); return (PARSEOP_OBJECTTYPE_EVT); }
> -"MethodObj" { count (0); return (PARSEOP_OBJECTTYPE_MTH); }
> -"MutexObj" { count (0); return (PARSEOP_OBJECTTYPE_MTX); }
> -"OpRegionObj" { count (0); return (PARSEOP_OBJECTTYPE_OPR); }
> -"PowerResObj" { count (0); return (PARSEOP_OBJECTTYPE_POW); }
> -"ProcessorObj" { count (0); return (PARSEOP_OBJECTTYPE_PRO); }
> -"ThermalZoneObj" { count (0); return (PARSEOP_OBJECTTYPE_THZ); }
> -"BuffFieldObj" { count (0); return (PARSEOP_OBJECTTYPE_BFF); }
> -"DDBHandleObj" { count (0); return (PARSEOP_OBJECTTYPE_DDB); }
> -
> -"AnyAcc" { count (0); return (PARSEOP_ACCESSTYPE_ANY); }
> -"ByteAcc" { count (0); return (PARSEOP_ACCESSTYPE_BYTE); }
> -"WordAcc" { count (0); return (PARSEOP_ACCESSTYPE_WORD); }
> -"DWordAcc" { count (0); return (PARSEOP_ACCESSTYPE_DWORD); }
> -"QWordAcc" { count (0); return (PARSEOP_ACCESSTYPE_QWORD); }
> -"BufferAcc" { count (0); return (PARSEOP_ACCESSTYPE_BUF); }
> -
> -"Lock" { count (0); return (PARSEOP_LOCKRULE_LOCK); }
> -"NoLock" { count (0); return (PARSEOP_LOCKRULE_NOLOCK); }
>
> -"Preserve" { count (0); return (PARSEOP_UPDATERULE_PRESERVE); }
> -"WriteAsOnes" { count (0); return (PARSEOP_UPDATERULE_ONES); }
> -"WriteAsZeros" { count (0); return (PARSEOP_UPDATERULE_ZEROS); }
> + /****************************************************************************
> + *
> + * Keywords used as arguments to ASL operators and macros
> + *
> + ****************************************************************************/
>
> -"Serialized" { count (0); return (PARSEOP_SERIALIZERULE_SERIAL); }
> -"NotSerialized" { count (0); return (PARSEOP_SERIALIZERULE_NOTSERIAL); }
> + /* AccessAttribKeyword: Serial Bus Attributes (ACPI 5.0) */
>
> -"SystemIO" { count (0); return (PARSEOP_REGIONSPACE_IO); }
> -"SystemMemory" { count (0); return (PARSEOP_REGIONSPACE_MEM); }
> -"PCI_Config" { count (0); return (PARSEOP_REGIONSPACE_PCI); }
> -"EmbeddedControl" { count (0); return (PARSEOP_REGIONSPACE_EC); }
> -"SMBus" { count (0); return (PARSEOP_REGIONSPACE_SMBUS); }
> -"SystemCMOS" { count (0); return (PARSEOP_REGIONSPACE_CMOS); }
> -"PciBarTarget" { count (0); return (PARSEOP_REGIONSPACE_PCIBAR); }
> -"IPMI" { count (0); return (PARSEOP_REGIONSPACE_IPMI); }
> +"AttribQuick" { count (0); return (PARSEOP_ACCESSATTRIB_QUICK); }
> +"AttribSendReceive" { count (0); return (PARSEOP_ACCESSATTRIB_SND_RCV); }
> +"AttribByte" { count (0); return (PARSEOP_ACCESSATTRIB_BYTE); }
> +"AttribWord" { count (0); return (PARSEOP_ACCESSATTRIB_WORD); }
> +"AttribBlock" { count (0); return (PARSEOP_ACCESSATTRIB_BLOCK); }
> +"AttribProcessCall" { count (0); return (PARSEOP_ACCESSATTRIB_WORD_CALL); }
> +"AttribBlockProcessCall" { count (0); return (PARSEOP_ACCESSATTRIB_BLOCK_CALL); }
>
> -"FFixedHW" { count (0); return (PARSEOP_ADDRESSSPACE_FFIXEDHW); }
> + /* AccessAttribKeyword: Legacy synonyms for above (pre-ACPI 5.0) */
>
> "SMBQuick" { count (0); return (PARSEOP_ACCESSATTRIB_QUICK); }
> "SMBSendReceive" { count (0); return (PARSEOP_ACCESSATTRIB_SND_RCV); }
> @@ -398,789 +406,319 @@ NamePathTail [.]{NameSeg}
> "SMBProcessCall" { count (0); return (PARSEOP_ACCESSATTRIB_WORD_CALL); }
> "SMBBlockProcessCall" { count (0); return (PARSEOP_ACCESSATTRIB_BLOCK_CALL); }
>
> -"MTR" { count (0); return (PARSEOP_MATCHTYPE_MTR); }
> -"MEQ" { count (0); return (PARSEOP_MATCHTYPE_MEQ); }
> -"MLE" { count (0); return (PARSEOP_MATCHTYPE_MLE); }
> -"MLT" { count (0); return (PARSEOP_MATCHTYPE_MLT); }
> -"MGE" { count (0); return (PARSEOP_MATCHTYPE_MGE); }
> -"MGT" { count (0); return (PARSEOP_MATCHTYPE_MGT); }
> + /* AccessTypeKeyword: Field Access Types */
>
> -"Compatibility" { count (0); return (PARSEOP_DMATYPE_COMPATIBILITY); }
> -"TypeA" { count (0); return (PARSEOP_DMATYPE_A); }
> -"TypeB" { count (0); return (PARSEOP_DMATYPE_B); }
> -"TypeF" { count (0); return (PARSEOP_DMATYPE_F); }
> -
> -"BusMaster" { count (0); return (PARSEOP_BUSMASTERTYPE_MASTER); }
> -"NotBusMaster" { count (0); return (PARSEOP_BUSMASTERTYPE_NOTMASTER); }
> -
> -"Transfer8" { count (0); return (PARSEOP_XFERTYPE_8); }
> -"Transfer8_16" { count (0); return (PARSEOP_XFERTYPE_8_16); }
> -"Transfer16" { count (0); return (PARSEOP_XFERTYPE_16); }
> -
> -"ResourceConsumer" { count (0); return (PARSEOP_RESOURCETYPE_CONSUMER); }
> -"ResourceProducer" { count (0); return (PARSEOP_RESOURCETYPE_PRODUCER); }
> -
> -"MinFixed" { count (0); return (PARSEOP_MINTYPE_FIXED); }
> -"MinNotFixed" { count (0); return (PARSEOP_MINTYPE_NOTFIXED); }
> -
> -"MaxFixed" { count (0); return (PARSEOP_MAXTYPE_FIXED); }
> -"MaxNotFixed" { count (0); return (PARSEOP_MAXTYPE_NOTFIXED); }
> -
> -"PosDecode" { count (0); return (PARSEOP_DECODETYPE_POS); }
> -"SubDecode" { count (0); return (PARSEOP_DECODETYPE_SUB); }
> -
> -"ISAOnlyRanges" { count (0); return (PARSEOP_RANGETYPE_ISAONLY); }
> -"NonISAOnlyRanges" { count (0); return (PARSEOP_RANGETYPE_NONISAONLY); }
> -"EntireRange" { count (0); return (PARSEOP_RANGETYPE_ENTIRE); }
> -
> -"Cacheable" { count (0); return (PARSEOP_MEMTYPE_CACHEABLE); }
> -"WriteCombining" { count (0); return (PARSEOP_MEMTYPE_WRITECOMBINING); }
> -"Prefetchable" { count (0); return (PARSEOP_MEMTYPE_PREFETCHABLE); }
> -"NonCacheable" { count (0); return (PARSEOP_MEMTYPE_NONCACHEABLE); }
> -
> -"ReadWrite" { count (0); return (PARSEOP_READWRITETYPE_BOTH); }
> -"ReadOnly" { count (0); return (PARSEOP_READWRITETYPE_READONLY); }
> -
> -"Edge" { count (0); return (PARSEOP_INTTYPE_EDGE); }
> -"Level" { count (0); return (PARSEOP_INTTYPE_LEVEL); }
> -
> -"ActiveHigh" { count (0); return (PARSEOP_INTLEVEL_ACTIVEHIGH); }
> -"ActiveLow" { count (0); return (PARSEOP_INTLEVEL_ACTIVELOW); }
> -
> -"Shared" { count (0); return (PARSEOP_SHARETYPE_SHARED); }
> -"Exclusive" { count (0); return (PARSEOP_SHARETYPE_EXCLUSIVE); }
> +"AnyAcc" { count (0); return (PARSEOP_ACCESSTYPE_ANY); }
> +"ByteAcc" { count (0); return (PARSEOP_ACCESSTYPE_BYTE); }
> +"WordAcc" { count (0); return (PARSEOP_ACCESSTYPE_WORD); }
> +"DWordAcc" { count (0); return (PARSEOP_ACCESSTYPE_DWORD); }
> +"QWordAcc" { count (0); return (PARSEOP_ACCESSTYPE_QWORD); }
> +"BufferAcc" { count (0); return (PARSEOP_ACCESSTYPE_BUF); }
>
> -"Decode10" { count (0); return (PARSEOP_IODECODETYPE_10); }
> -"Decode16" { count (0); return (PARSEOP_IODECODETYPE_16); }
> + /* AddressingModeKeyword: Mode - Resource Descriptors (ACPI 5.0) */
>
> -"TypeTranslation" { count (0); return (PARSEOP_TYPE_TRANSLATION); }
> -"TypeStatic" { count (0); return (PARSEOP_TYPE_STATIC); }
> +"AddressingMode7Bit" { count (0); return (PARSEOP_ADDRESSINGMODE_7BIT); }
> +"AddressingMode10Bit" { count (0); return (PARSEOP_ADDRESSINGMODE_10BIT); }
>
> -"SparseTranslation" { count (0); return (PARSEOP_TRANSLATIONTYPE_SPARSE); }
> -"DenseTranslation" { count (0); return (PARSEOP_TRANSLATIONTYPE_DENSE); }
> + /* AddressKeyword: ACPI memory range types */
>
> "AddressRangeMemory" { count (0); return (PARSEOP_ADDRESSTYPE_MEMORY); }
> "AddressRangeReserved" { count (0); return (PARSEOP_ADDRESSTYPE_RESERVED); }
> "AddressRangeNVS" { count (0); return (PARSEOP_ADDRESSTYPE_NVS); }
> "AddressRangeACPI" { count (0); return (PARSEOP_ADDRESSTYPE_ACPI); }
>
> -"__DATE__" { count (0); return (PARSEOP___DATE__); }
> -"__FILE__" { count (0); return (PARSEOP___FILE__); }
> -"__LINE__" { count (0); return (PARSEOP___LINE__); }
> -
> -"{" { count (0); return('{'); }
> -"}" { count (0); return('}'); }
> -"," { count (0); return(','); }
> -"(" { count (0); return('('); }
> -")" { count (0); return(')'); }
> -
> -
> -{NameSeg} { char *s;
> - count (0);
> - s=malloc (ACPI_NAME_SIZE + 1);
> - if (strcmp (AslCompilertext, "\\"))
> - {
> - strcpy (s, "____");
> - AcpiUtStrupr (AslCompilertext);
> - }
> - memcpy (s, AslCompilertext, strlen (AslCompilertext));
> - AslCompilerlval.s = s;
> - DbgPrint (ASL_PARSE_OUTPUT, "NameSeg: %s\n", s);
> - return (PARSEOP_NAMESEG); }
> -
> -{NameString} { char *s;
> - count (0);
> - s=malloc (strlen (AslCompilertext)+1);
> - AcpiUtStrupr (AslCompilertext);
> - strcpy (s, AslCompilertext);
> - s[strlen (AslCompilertext)] = 0;
> - AslCompilerlval.s = s;
> - DbgPrint (ASL_PARSE_OUTPUT, "NameString: %s\n", s);
> - return (PARSEOP_NAMESTRING); }
> -
> -"*" |
> -"/" { count (1);
> - AslCompilererror ("Parse error, expecting ASL keyword or name");}
> -
> -. { count (1);
> - sprintf (MsgBuffer,
> - "Invalid character (0x%2.2X), expecting ASL keyword or name",
> - *AslCompilertext);
> - AslCompilererror (MsgBuffer);}
> -
> -<<EOF>> { if (AslPopInputFileStack ())
> - yyterminate();
> - else
> - return (PARSEOP_INCLUDE_END);};
> -
> -%%
> -
> -/*! [End] no source code translation !*/
> -
> -typedef struct asl_file_node
> -{
> - FILE *File;
> - UINT32 CurrentLineNumber;
> - YY_BUFFER_STATE State;
> - char *Filename;
> - struct asl_file_node *Next;
> -
> -} ASL_FILE_NODE;
> -
> -ASL_FILE_NODE *InputStack = NULL;
> + /* BusMasterKeyword: DMA Bus Mastering */
>
> +"BusMaster" { count (0); return (PARSEOP_BUSMASTERTYPE_MASTER); }
> +"NotBusMaster" { count (0); return (PARSEOP_BUSMASTERTYPE_NOTMASTER); }
>
> -/*******************************************************************************
> - *
> - * FUNCTION: AslPopInputFileStack
> - *
> - * PARAMETERS: None
> - *
> - * RETURN: 0 if a node was popped, -1 otherwise
> - *
> - * DESCRIPTION: Pop the top of the input file stack and point the parser to
> - * the saved parse buffer contained in the fnode. Also, set the
> - * global line counters to the saved values. This function is
> - * called when an include file reaches EOF.
> - *
> - ******************************************************************************/
> -
> -int
> -AslPopInputFileStack (
> - void)
> -{
> - ASL_FILE_NODE *Fnode;
> - FILE *InputFile = NULL;
> -
> -
> - Fnode = InputStack;
> - DbgPrint (ASL_PARSE_OUTPUT, "\nPop InputFile Stack, Fnode %p\n\n", Fnode);
> -
> -
> - if (!Fnode)
> - {
> - return -1;
> - }
> -
> - /* Close the current include file */
> -
> - fclose (yyin);
> + /* ByteLengthKeyword: Bits per Byte - Resource Descriptors (ACPI 5.0) */
>
> - /* Update the top-of-stack */
> +"DataBitsFive" { count (0); return (PARSEOP_BITSPERBYTE_FIVE); }
> +"DataBitsSix" { count (0); return (PARSEOP_BITSPERBYTE_SIX); }
> +"DataBitsSeven" { count (0); return (PARSEOP_BITSPERBYTE_SEVEN); }
> +"DataBitsEight" { count (0); return (PARSEOP_BITSPERBYTE_EIGHT); }
> +"DataBitsNine" { count (0); return (PARSEOP_BITSPERBYTE_NINE); }
>
> - InputStack = Fnode->Next;
> - InputFile = Fnode->File;
> + /* ClockPhaseKeyword: Resource Descriptors (ACPI 5.0) */
>
> - /* Reset global line counter and filename */
> +"ClockPhaseFirst" { count (0); return (PARSEOP_CLOCKPHASE_FIRST); }
> +"ClockPhaseSecond" { count (0); return (PARSEOP_CLOCKPHASE_SECOND); }
>
> - Gbl_Files[ASL_FILE_INPUT].Filename = Fnode->Filename;
> - Gbl_CurrentLineNumber = Fnode->CurrentLineNumber;
> + /* ClockPolarityKeyword: Resource Descriptors (ACPI 5.0) */
>
> - /* Point the parser to the popped file */
> +"ClockPolarityLow" { count (0); return (PARSEOP_CLOCKPOLARITY_LOW); }
> +"ClockPolarityHigh" { count (0); return (PARSEOP_CLOCKPOLARITY_HIGH); }
>
> - yy_delete_buffer (YY_CURRENT_BUFFER);
> - yy_switch_to_buffer (Fnode->State);
> + /* DecodeKeyword: Type of Memory Decoding - Resource Descriptors */
>
> - /* All done with this node */
> +"PosDecode" { count (0); return (PARSEOP_DECODETYPE_POS); }
> +"SubDecode" { count (0); return (PARSEOP_DECODETYPE_SUB); }
>
> - ACPI_FREE (Fnode);
> - return 0;
> -}
> + /* DmaTypeKeyword: DMA Types - DMA Resource Descriptor */
>
> +"Compatibility" { count (0); return (PARSEOP_DMATYPE_COMPATIBILITY); }
> +"TypeA" { count (0); return (PARSEOP_DMATYPE_A); }
> +"TypeB" { count (0); return (PARSEOP_DMATYPE_B); }
> +"TypeF" { count (0); return (PARSEOP_DMATYPE_F); }
>
> -/*******************************************************************************
> - *
> - * FUNCTION: AslPushInputFileStack
> - *
> - * PARAMETERS: InputFile - Open file pointer
> - * Filename - Name of the file
> - *
> - * RETURN: None
> - *
> - * DESCRIPTION: Push the InputFile onto the file stack, and point the parser
> - * to this file. Called when an include file is successfully
> - * opened.
> - *
> - ******************************************************************************/
> + /* EndianKeyword: Endian type - Resource Descriptor (ACPI 5.0) */
>
> -void
> -AslPushInputFileStack (
> - FILE *InputFile,
> - char *Filename)
> -{
> - ASL_FILE_NODE *Fnode;
> - YY_BUFFER_STATE State;
> +"LittleEndian" { count (0); return (PARSEOP_ENDIAN_LITTLE); }
> +"BigEndian" { count (0); return (PARSEOP_ENDIAN_BIG); }
>
> + /* ExtendedAttribKeyword: Bus attributes, AccessAs operator (ACPI 5.0) */
>
> - /* Save the current state in an Fnode */
> +"AttribBytes" { count (0); return (PARSEOP_ACCESSATTRIB_MULTIBYTE); }
> +"AttribRawBytes" { count (0); return (PARSEOP_ACCESSATTRIB_RAW_BYTES); }
> +"AttribRawProcessBytes" { count (0); return (PARSEOP_ACCESSATTRIB_RAW_PROCESS); }
>
> - Fnode = UtLocalCalloc (sizeof (ASL_FILE_NODE));
> + /* FlowControlKeyword: Resource Descriptors (ACPI 5.0) */
>
> - Fnode->File = yyin;
> - Fnode->Next = InputStack;
> - Fnode->State = YY_CURRENT_BUFFER;
> - Fnode->CurrentLineNumber = Gbl_CurrentLineNumber;
> - Fnode->Filename = Gbl_Files[ASL_FILE_INPUT].Filename;
> +"FlowControlHardware" { count (0); return (PARSEOP_FLOWCONTROL_HW); }
> +"FlowControlNone" { count (0); return (PARSEOP_FLOWCONTROL_NONE); }
> +"FlowControlXon" { count (0); return (PARSEOP_FLOWCONTROL_SW); }
>
> - /* Push it on the stack */
> + /* InterruptLevelKeyword: Interrupt Active Types */
>
> - InputStack = Fnode;
> +"ActiveBoth" { count (0); return (PARSEOP_INTLEVEL_ACTIVEBOTH); }
> +"ActiveHigh" { count (0); return (PARSEOP_INTLEVEL_ACTIVEHIGH); }
> +"ActiveLow" { count (0); return (PARSEOP_INTLEVEL_ACTIVELOW); }
>
> - /* Point the parser to this file */
> + /* InterruptTypeKeyword: Interrupt Types */
>
> - State = yy_create_buffer (InputFile, YY_BUF_SIZE);
> - yy_switch_to_buffer (State);
> +"Edge" { count (0); return (PARSEOP_INTTYPE_EDGE); }
> +"Level" { count (0); return (PARSEOP_INTTYPE_LEVEL); }
>
> - DbgPrint (ASL_PARSE_OUTPUT, "\nPush InputFile Stack, returning %p\n\n", InputFile);
> + /* IoDecodeKeyword: Type of Memory Decoding - Resource Descriptors */
>
> - /* Reset the global line count and filename */
> +"Decode10" { count (0); return (PARSEOP_IODECODETYPE_10); }
> +"Decode16" { count (0); return (PARSEOP_IODECODETYPE_16); }
>
> - Gbl_Files[ASL_FILE_INPUT].Filename = Filename;
> - Gbl_CurrentLineNumber = 1;
> - yyin = InputFile;
> -}
> + /* IoRestrictionKeyword: I/O Restriction - GPIO Resource Descriptors (ACPI 5.0) */
>
> +"IoRestrictionNone" { count (0); return (PARSEOP_IORESTRICT_NONE); }
> +"IoRestrictionInputOnly" { count (0); return (PARSEOP_IORESTRICT_IN); }
> +"IoRestrictionOutputOnly" { count (0); return (PARSEOP_IORESTRICT_OUT); }
> +"IoRestrictionNoneAndPreserve" { count (0); return (PARSEOP_IORESTRICT_PRESERVE); }
>
> -/*******************************************************************************
> - *
> - * FUNCTION: ResetCurrentLineBuffer
> - *
> - * PARAMETERS: None
> - *
> - * RETURN: None
> - *
> - * DESCRIPTION: Reset the Line Buffer to zero, increment global line numbers.
> - *
> - ******************************************************************************/
> + /* LockRuleKeyword: Global Lock use for Field Operator */
>
> -void
> -ResetCurrentLineBuffer (
> - void)
> -{
> +"Lock" { count (0); return (PARSEOP_LOCKRULE_LOCK); }
> +"NoLock" { count (0); return (PARSEOP_LOCKRULE_NOLOCK); }
>
> - if (Gbl_Files[ASL_FILE_SOURCE_OUTPUT].Handle)
> - {
> - FlWriteFile (ASL_FILE_SOURCE_OUTPUT, Gbl_CurrentLineBuffer,
> - Gbl_LineBufPtr - Gbl_CurrentLineBuffer);
> - }
> + /* MatchOpKeyword: Types for Match Operator */
>
> - Gbl_CurrentLineOffset += Gbl_CurrentColumn;
> - Gbl_CurrentColumn = 0;
> +"MTR" { count (0); return (PARSEOP_MATCHTYPE_MTR); }
> +"MEQ" { count (0); return (PARSEOP_MATCHTYPE_MEQ); }
> +"MLE" { count (0); return (PARSEOP_MATCHTYPE_MLE); }
> +"MLT" { count (0); return (PARSEOP_MATCHTYPE_MLT); }
> +"MGE" { count (0); return (PARSEOP_MATCHTYPE_MGE); }
> +"MGT" { count (0); return (PARSEOP_MATCHTYPE_MGT); }
>
> - Gbl_CurrentLineNumber++;
> - Gbl_LogicalLineNumber++;
> - Gbl_LineBufPtr = Gbl_CurrentLineBuffer;
> -}
> + /* MaxKeyword: Max Range Type - Resource Descriptors */
>
> +"MaxFixed" { count (0); return (PARSEOP_MAXTYPE_FIXED); }
> +"MaxNotFixed" { count (0); return (PARSEOP_MAXTYPE_NOTFIXED); }
>
> -/*******************************************************************************
> - *
> - * FUNCTION: InsertLineBuffer
> - *
> - * PARAMETERS: SourceChar - One char from the input ASL source file
> - *
> - * RETURN: None
> - *
> - * DESCRIPTION: Put one character of the source file into the temp line buffer
> - *
> - ******************************************************************************/
> + /* MemTypeKeyword: Memory Types - Resource Descriptors */
>
> -#define ASL_SPACES_PER_TAB 4
> +"Cacheable" { count (0); return (PARSEOP_MEMTYPE_CACHEABLE); }
> +"WriteCombining" { count (0); return (PARSEOP_MEMTYPE_WRITECOMBINING); }
> +"Prefetchable" { count (0); return (PARSEOP_MEMTYPE_PREFETCHABLE); }
> +"NonCacheable" { count (0); return (PARSEOP_MEMTYPE_NONCACHEABLE); }
>
> -void
> -InsertLineBuffer (
> - int SourceChar)
> -{
> - UINT32 i;
> - UINT32 Count = 1;
> + /* MinKeyword: Min Range Type - Resource Descriptors */
>
> +"MinFixed" { count (0); return (PARSEOP_MINTYPE_FIXED); }
> +"MinNotFixed" { count (0); return (PARSEOP_MINTYPE_NOTFIXED); }
>
> - if (SourceChar == EOF)
> - {
> - return;
> - }
> + /* ObjectTypeKeyword: ACPI Object Types */
>
> - Gbl_InputByteCount++;
> +"UnknownObj" { count (0); return (PARSEOP_OBJECTTYPE_UNK); }
> +"IntObj" { count (0); return (PARSEOP_OBJECTTYPE_INT); }
> +"StrObj" { count (0); return (PARSEOP_OBJECTTYPE_STR); }
> +"BuffObj" { count (0); return (PARSEOP_OBJECTTYPE_BUF); }
> +"PkgObj" { count (0); return (PARSEOP_OBJECTTYPE_PKG); }
> +"FieldUnitObj" { count (0); return (PARSEOP_OBJECTTYPE_FLD); }
> +"DeviceObj" { count (0); return (PARSEOP_OBJECTTYPE_DEV); }
> +"EventObj" { count (0); return (PARSEOP_OBJECTTYPE_EVT); }
> +"MethodObj" { count (0); return (PARSEOP_OBJECTTYPE_MTH); }
> +"MutexObj" { count (0); return (PARSEOP_OBJECTTYPE_MTX); }
> +"OpRegionObj" { count (0); return (PARSEOP_OBJECTTYPE_OPR); }
> +"PowerResObj" { count (0); return (PARSEOP_OBJECTTYPE_POW); }
> +"ProcessorObj" { count (0); return (PARSEOP_OBJECTTYPE_PRO); }
> +"ThermalZoneObj" { count (0); return (PARSEOP_OBJECTTYPE_THZ); }
> +"BuffFieldObj" { count (0); return (PARSEOP_OBJECTTYPE_BFF); }
> +"DDBHandleObj" { count (0); return (PARSEOP_OBJECTTYPE_DDB); }
>
> - /* Handle tabs. Convert to spaces */
> + /* ParityKeyword: Resource Descriptors (ACPI 5.0) */
>
> - if (SourceChar == '\t')
> - {
> - SourceChar = ' ';
> - Count = ASL_SPACES_PER_TAB -
> - (Gbl_CurrentColumn & (ASL_SPACES_PER_TAB-1));
> - }
> +"ParityTypeSpace" { count (0); return (PARSEOP_PARITYTYPE_SPACE); }
> +"ParityTypeMark" { count (0); return (PARSEOP_PARITYTYPE_MARK); }
> +"ParityTypeOdd" { count (0); return (PARSEOP_PARITYTYPE_ODD); }
> +"ParityTypeEven" { count (0); return (PARSEOP_PARITYTYPE_EVEN); }
> +"ParityTypeNone" { count (0); return (PARSEOP_PARITYTYPE_NONE); }
>
> + /* PinConfigKeyword: Pin Configuration - GPIO Resource Descriptors (ACPI 5.0) */
>
> - for (i = 0; i < Count; i++)
> - {
> - Gbl_CurrentColumn++;
> +"PullDefault" { count (0); return (PARSEOP_PIN_PULLDEFAULT); }
> +"PullUp" { count (0); return (PARSEOP_PIN_PULLUP); }
> +"PullDown" { count (0); return (PARSEOP_PIN_PULLDOWN); }
> +"PullNone" { count (0); return (PARSEOP_PIN_NOPULL); }
>
> - /* Insert the character into the line buffer */
> + /* PolarityKeyword: Resource Descriptors (ACPI 5.0) */
>
> - *Gbl_LineBufPtr = (UINT8) SourceChar;
> - Gbl_LineBufPtr++;
> +"PolarityLow" { count (0); return (PARSEOP_DEVICEPOLARITY_LOW); }
> +"PolarityHigh" { count (0); return (PARSEOP_DEVICEPOLARITY_HIGH); }
>
> - if (Gbl_LineBufPtr > (Gbl_CurrentLineBuffer + (ASL_LINE_BUFFER_SIZE - 1)))
> - {
> -#if 0
> - /*
> - * Warning if we have split a long source line.
> - * <Probably overkill>
> - */
> - sprintf (MsgBuffer, "Max %u", ASL_LINE_BUFFER_SIZE);
> - AslCommonError (ASL_WARNING, ASL_MSG_LONG_LINE,
> - Gbl_CurrentLineNumber, Gbl_LogicalLineNumber,
> - Gbl_CurrentLineOffset, Gbl_CurrentColumn,
> - Gbl_Files[ASL_FILE_INPUT].Filename, MsgBuffer);
> -#endif
> + /* RangeTypeKeyword: I/O Range Types - Resource Descriptors */
>
> - ResetCurrentLineBuffer ();
> - }
> - else if (SourceChar == '\n')
> - {
> - /* End of line */
> +"ISAOnlyRanges" { count (0); return (PARSEOP_RANGETYPE_ISAONLY); }
> +"NonISAOnlyRanges" { count (0); return (PARSEOP_RANGETYPE_NONISAONLY); }
> +"EntireRange" { count (0); return (PARSEOP_RANGETYPE_ENTIRE); }
>
> - ResetCurrentLineBuffer ();
> - }
> - }
> -}
> + /* ReadWriteKeyword: Memory Access Types - Resource Descriptors */
>
> +"ReadWrite" { count (0); return (PARSEOP_READWRITETYPE_BOTH); }
> +"ReadOnly" { count (0); return (PARSEOP_READWRITETYPE_READONLY); }
>
> -/*******************************************************************************
> - *
> - * FUNCTION: count
> - *
> - * PARAMETERS: yytext - Contains the matched keyword.
> - * Type - Keyword/Character type:
> - * 0 = anything except a keyword
> - * 1 = pseudo-keywords
> - * 2 = non-executable ASL keywords
> - * 3 = executable ASL keywords
> - *
> - * RETURN: None
> - *
> - * DESCRIPTION: Count keywords and put them into the line buffer
> - *
> - ******************************************************************************/
> + /* RegionSpaceKeyword: Operation Region Address Space Types */
>
> -void
> -count (
> - int Type)
> -{
> - int i;
> +"SystemIO" { count (0); return (PARSEOP_REGIONSPACE_IO); }
> +"SystemMemory" { count (0); return (PARSEOP_REGIONSPACE_MEM); }
> +"PCI_Config" { count (0); return (PARSEOP_REGIONSPACE_PCI); }
> +"EmbeddedControl" { count (0); return (PARSEOP_REGIONSPACE_EC); }
> +"SMBus" { count (0); return (PARSEOP_REGIONSPACE_SMBUS); }
> +"SystemCMOS" { count (0); return (PARSEOP_REGIONSPACE_CMOS); }
> +"PciBarTarget" { count (0); return (PARSEOP_REGIONSPACE_PCIBAR); }
> +"IPMI" { count (0); return (PARSEOP_REGIONSPACE_IPMI); }
> +"GeneralPurposeIo" { count (0); return (PARSEOP_REGIONSPACE_GPIO); } /* ACPI 5.0 */
> +"GenericSerialBus" { count (0); return (PARSEOP_REGIONSPACE_GSBUS); } /* ACPI 5.0 */
> +"FFixedHW" { count (0); return (PARSEOP_REGIONSPACE_FFIXEDHW); }
>
> + /* ResourceTypeKeyword: Resource Usage - Resource Descriptors */
>
> - switch (Type)
> - {
> - case 2:
> - TotalKeywords++;
> - TotalNamedObjects++;
> - break;
> +"ResourceConsumer" { count (0); return (PARSEOP_RESOURCETYPE_CONSUMER); }
> +"ResourceProducer" { count (0); return (PARSEOP_RESOURCETYPE_PRODUCER); }
>
> - case 3:
> - TotalKeywords++;
> - TotalExecutableOpcodes++;
> - break;
> - }
> + /* SerializeRuleKeyword: Control Method Serialization */
>
> - for (i = 0; (yytext[i] != 0) && (yytext[i] != EOF); i++)
> - {
> - InsertLineBuffer (yytext[i]);
> - *Gbl_LineBufPtr = 0;
> - }
> -}
> +"Serialized" { count (0); return (PARSEOP_SERIALIZERULE_SERIAL); }
> +"NotSerialized" { count (0); return (PARSEOP_SERIALIZERULE_NOTSERIAL); }
>
> + /* ShareTypeKeyword: Interrupt Sharing - Resource Descriptors */
>
> -/*******************************************************************************
> - *
> - * FUNCTION: comment
> - *
> - * PARAMETERS: none
> - *
> - * RETURN: none
> - *
> - * DESCRIPTION: Process a standard comment.
> - *
> - ******************************************************************************/
> +"Shared" { count (0); return (PARSEOP_SHARETYPE_SHARED); }
> +"Exclusive" { count (0); return (PARSEOP_SHARETYPE_EXCLUSIVE); }
> +"SharedAndWake" { count (0); return (PARSEOP_SHARETYPE_SHAREDWAKE); } /* ACPI 5.0 */
> +"ExclusiveAndWake" { count (0); return (PARSEOP_SHARETYPE_EXCLUSIVEWAKE); } /* ACPI 5.0 */
>
> -char
> -comment (void)
> -{
> - char c;
> - char c1 = 0;
> + /* SlaveModeKeyword: Resource Descriptors (ACPI 5.0) */
>
> +"ControllerInitiated" { count (0); return (PARSEOP_SLAVEMODE_CONTROLLERINIT); }
> +"DeviceInitiated" { count (0); return (PARSEOP_SLAVEMODE_DEVICEINIT); }
>
> - InsertLineBuffer ('/');
> - InsertLineBuffer ('*');
> + /* StopBitsKeyword: Resource Descriptors (ACPI 5.0) */
>
> -loop:
> +"StopBitsOne" { count (0); return (PARSEOP_STOPBITS_ONE); }
> +"StopBitsOnePlusHalf" { count (0); return (PARSEOP_STOPBITS_ONEPLUSHALF); }
> +"StopBitsTwo" { count (0); return (PARSEOP_STOPBITS_TWO); }
> +"StopBitsZero" { count (0); return (PARSEOP_STOPBITS_ZERO); }
>
> - /* Eat chars until end-of-comment */
> + /* TransferWidthKeyword: DMA Widths - Fixed DMA Resource Descriptor (ACPI 5.0) */
>
> - while ((c = (char) input()) != '*' && c != EOF)
> - {
> - InsertLineBuffer (c);
> - c1 = c;
> - }
> +"Width8bit" { count (0); return (PARSEOP_XFERSIZE_8); }
> +"Width16bit" { count (0); return (PARSEOP_XFERSIZE_16); }
> +"Width32bit" { count (0); return (PARSEOP_XFERSIZE_32); }
> +"Width64bit" { count (0); return (PARSEOP_XFERSIZE_64); }
> +"Width128bit" { count (0); return (PARSEOP_XFERSIZE_128); }
> +"Width256bit" { count (0); return (PARSEOP_XFERSIZE_256); }
>
> - if (c == EOF)
> - {
> - goto EarlyEOF;
> - }
> + /* TranslationKeyword: Translation Density Types - Resource Descriptors */
>
> - /*
> - * Check for nested comment -- can help catch cases where a previous
> - * comment was accidently left unterminated
> - */
> - if ((c1 == '/') && (c == '*'))
> - {
> - AslCommonError (ASL_WARNING, ASL_MSG_NESTED_COMMENT,
> - Gbl_CurrentLineNumber, Gbl_LogicalLineNumber,
> - Gbl_InputByteCount, Gbl_CurrentColumn,
> - Gbl_Files[ASL_FILE_INPUT].Filename, NULL);
> - }
> +"SparseTranslation" { count (0); return (PARSEOP_TRANSLATIONTYPE_SPARSE); }
> +"DenseTranslation" { count (0); return (PARSEOP_TRANSLATIONTYPE_DENSE); }
>
> - /* Comment is closed only if the NEXT character is a slash */
> + /* TypeKeyword: Translation Types - Resource Descriptors */
>
> - InsertLineBuffer (c);
> +"TypeTranslation" { count (0); return (PARSEOP_TYPE_TRANSLATION); }
> +"TypeStatic" { count (0); return (PARSEOP_TYPE_STATIC); }
>
> - if ((c1 = (char) input()) != '/' && c1 != EOF)
> - {
> - unput(c1);
> - goto loop;
> - }
> + /* UpdateRuleKeyword: Field Update Rules */
>
> - if (c1 == EOF)
> - {
> - goto EarlyEOF;
> - }
> +"Preserve" { count (0); return (PARSEOP_UPDATERULE_PRESERVE); }
> +"WriteAsOnes" { count (0); return (PARSEOP_UPDATERULE_ONES); }
> +"WriteAsZeros" { count (0); return (PARSEOP_UPDATERULE_ZEROS); }
>
> - InsertLineBuffer (c1);
> - return TRUE;
> + /* WireModeKeyword: SPI Wire Mode - Resource Descriptors (ACPI 5.0) */
>
> +"FourWireMode" { count (0); return (PARSEOP_WIREMODE_FOUR); }
> +"ThreeWireMode" { count (0); return (PARSEOP_WIREMODE_THREE); }
>
> -EarlyEOF:
> - /*
> - * Premature End-Of-File
> - */
> - AslCommonError (ASL_ERROR, ASL_MSG_EARLY_EOF,
> - Gbl_CurrentLineNumber, Gbl_LogicalLineNumber,
> - Gbl_CurrentLineOffset, Gbl_CurrentColumn,
> - Gbl_Files[ASL_FILE_INPUT].Filename, NULL);
> - return (FALSE);
> -}
> + /* XferTypeKeyword: DMA Transfer Types */
>
> +"Transfer8" { count (0); return (PARSEOP_XFERTYPE_8); }
> +"Transfer8_16" { count (0); return (PARSEOP_XFERTYPE_8_16); }
> +"Transfer16" { count (0); return (PARSEOP_XFERTYPE_16); }
>
> -/*******************************************************************************
> - *
> - * FUNCTION: comment
> - *
> - * PARAMETERS: none
> - *
> - * RETURN: none
> - *
> - * DESCRIPTION: Process a new "//" comment.
> - *
> - ******************************************************************************/
> + /* Predefined compiler names */
>
> -char
> -comment2 (void)
> -{
> - char c;
> +"__DATE__" { count (0); return (PARSEOP___DATE__); }
> +"__FILE__" { count (0); return (PARSEOP___FILE__); }
> +"__LINE__" { count (0); return (PARSEOP___LINE__); }
> +"__PATH__" { count (0); return (PARSEOP___PATH__); }
>
>
> - InsertLineBuffer ('/');
> - InsertLineBuffer ('/');
> +"{" { count (0); return('{'); }
> +"}" { count (0); return('}'); }
> +"," { count (0); return(','); }
> +"(" { count (0); return('('); }
> +")" { count (0); return(')'); }
>
> - while ((c = (char) input()) != '\n' && c != EOF)
> - {
> - InsertLineBuffer (c);
> - }
> +{NameSeg} { char *s;
> + count (0);
> + s=malloc (ACPI_NAME_SIZE + 1);
> + if (strcmp (AslCompilertext, "\\"))
> + {
> + strcpy (s, "____");
> + AcpiUtStrupr (AslCompilertext);
> + }
> + memcpy (s, AslCompilertext, strlen (AslCompilertext));
> + AslCompilerlval.s = s;
> + DbgPrint (ASL_PARSE_OUTPUT, "NameSeg: %s\n", s);
> + return (PARSEOP_NAMESEG); }
>
> - if (c == EOF)
> - {
> - /* End of file is OK, change to newline. Let parser detect EOF later */
> +{NameString} { char *s;
> + count (0);
> + s=malloc (strlen (AslCompilertext)+1);
> + AcpiUtStrupr (AslCompilertext);
> + strcpy (s, AslCompilertext);
> + s[strlen (AslCompilertext)] = 0;
> + AslCompilerlval.s = s;
> + DbgPrint (ASL_PARSE_OUTPUT, "NameString: %s\n", s);
> + return (PARSEOP_NAMESTRING); }
>
> - c = '\n';
> - }
> +"*" |
> +"/" { count (1);
> + AslCompilererror ("Parse error, expecting ASL keyword or name");}
>
> - InsertLineBuffer (c);
> - return (TRUE);
> -}
> +. { count (1);
> + sprintf (MsgBuffer,
> + "Invalid character (0x%2.2X), expecting ASL keyword or name",
> + *AslCompilertext);
> + AslCompilererror (MsgBuffer);}
>
> +<<EOF>> { if (AslPopInputFileStack ())
> + yyterminate();
> + else
> + return (PARSEOP_INCLUDE_END);};
>
> -/*******************************************************************************
> - *
> - * FUNCTION: literal
> - *
> - * PARAMETERS: none
> - *
> - * RETURN: none
> - *
> - * DESCRIPTION: Process a string literal (surrounded by quotes)
> - *
> - ******************************************************************************/
> -
> -#define ASL_NORMAL_CHAR 0
> -#define ASL_ESCAPE_SEQUENCE 1
> -#define ASL_OCTAL_CONSTANT 2
> -#define ASL_HEX_CONSTANT 3
> -
> -char
> -literal (void)
> -{
> - char *StringBuffer = MsgBuffer;
> - char *EndBuffer = MsgBuffer + ASL_MSG_BUFFER_SIZE;
> - char *CleanString;
> - char StringChar;
> - UINT32 State = ASL_NORMAL_CHAR;
> - UINT32 i = 0;
> - UINT8 Digit;
> - char ConvertBuffer[4];
> -
> -
> - /*
> - * Eat chars until end-of-literal.
> - * NOTE: Put back the original surrounding quotes into the
> - * source line buffer.
> - */
> - InsertLineBuffer ('\"');
> - while ((StringChar = (char) input()) != EOF)
> - {
> - InsertLineBuffer (StringChar);
> -
> -DoCharacter:
> -
> - switch (State)
> - {
> - case ASL_NORMAL_CHAR:
> -
> - switch (StringChar)
> - {
> - case '\\':
> - /*
> - * Special handling for backslash-escape sequence. We will
> - * toss the backslash and translate the escape char(s).
> - */
> - State = ASL_ESCAPE_SEQUENCE;
> - continue;
> -
> - case '\"':
> -
> - /* String terminator */
> -
> - goto CompletedString;
> - }
> - break;
> -
> -
> - case ASL_ESCAPE_SEQUENCE:
> -
> - State = ASL_NORMAL_CHAR;
> - switch (StringChar)
> - {
> - case 'a':
> - StringChar = 0x07; /* BELL */
> - break;
> -
> - case 'b':
> - StringChar = 0x08; /* BACKSPACE */
> - break;
> -
> - case 'f':
> - StringChar = 0x0C; /* FORMFEED */
> - break;
> -
> - case 'n':
> - StringChar = 0x0A; /* LINEFEED */
> - break;
> -
> - case 'r':
> - StringChar = 0x0D; /* CARRIAGE RETURN*/
> - break;
> -
> - case 't':
> - StringChar = 0x09; /* HORIZONTAL TAB */
> - break;
> -
> - case 'v':
> - StringChar = 0x0B; /* VERTICAL TAB */
> - break;
> -
> - case 'x':
> - State = ASL_HEX_CONSTANT;
> - i = 0;
> - continue;
> -
> - case '\'': /* Single Quote */
> - case '\"': /* Double Quote */
> - case '\\': /* Backslash */
> - break;
> -
> - default:
> -
> - /* Check for an octal digit (0-7) */
> -
> - if (ACPI_IS_OCTAL_DIGIT (StringChar))
> - {
> - State = ASL_OCTAL_CONSTANT;
> - ConvertBuffer[0] = StringChar;
> - i = 1;
> - continue;
> - }
> -
> - /* Unknown escape sequence issue warning, but use the character */
> -
> - AslCommonError (ASL_WARNING, ASL_MSG_INVALID_ESCAPE,
> - Gbl_CurrentLineNumber, Gbl_LogicalLineNumber,
> - Gbl_CurrentLineOffset, Gbl_CurrentColumn,
> - Gbl_Files[ASL_FILE_INPUT].Filename, NULL);
> - break;
> - }
> - break;
> -
> -
> - case ASL_OCTAL_CONSTANT:
> -
> - /* Up to three octal digits allowed */
> -
> - if (!ACPI_IS_OCTAL_DIGIT (StringChar) ||
> - (i > 2))
> - {
> - /*
> - * Reached end of the constant. Convert the assembled ASCII
> - * string and resume processing of the next character
> - */
> - ConvertBuffer[i] = 0;
> - Digit = (UINT8) ACPI_STRTOUL (ConvertBuffer, NULL, 8);
> -
> - /* Check for NULL or non-ascii character (ignore if so) */
> -
> - if ((Digit == 0) || (Digit > ACPI_ASCII_MAX))
> - {
> - AslCommonError (ASL_WARNING, ASL_MSG_INVALID_STRING,
> - Gbl_CurrentLineNumber, Gbl_LogicalLineNumber,
> - Gbl_CurrentLineOffset, Gbl_CurrentColumn,
> - Gbl_Files[ASL_FILE_INPUT].Filename, NULL);
> - }
> - else
> - {
> - *StringBuffer = (char) Digit;
> - StringBuffer++;
> - if (StringBuffer >= EndBuffer)
> - {
> - goto BufferOverflow;
> - }
> - }
> -
> - State = ASL_NORMAL_CHAR;
> - goto DoCharacter;
> - break;
> - }
> -
> - /* Append another digit of the constant */
> -
> - ConvertBuffer[i] = StringChar;
> - i++;
> - continue;
> -
> -
> - case ASL_HEX_CONSTANT:
> -
> - /* Up to two hex digits allowed */
> -
> - if (!ACPI_IS_XDIGIT (StringChar) ||
> - (i > 1))
> - {
> - /*
> - * Reached end of the constant. Convert the assembled ASCII
> - * string and resume processing of the next character
> - */
> - ConvertBuffer[i] = 0;
> - Digit = (UINT8) ACPI_STRTOUL (ConvertBuffer, NULL, 16);
> -
> - /* Check for NULL or non-ascii character (ignore if so) */
> -
> - if ((Digit == 0) || (Digit > ACPI_ASCII_MAX))
> - {
> - AslCommonError (ASL_WARNING, ASL_MSG_INVALID_STRING,
> - Gbl_CurrentLineNumber, Gbl_LogicalLineNumber,
> - Gbl_CurrentLineOffset, Gbl_CurrentColumn,
> - Gbl_Files[ASL_FILE_INPUT].Filename, NULL);
> - }
> - else
> - {
> - *StringBuffer = (char) Digit;
> - StringBuffer++;
> - if (StringBuffer >= EndBuffer)
> - {
> - goto BufferOverflow;
> - }
> - }
> -
> - State = ASL_NORMAL_CHAR;
> - goto DoCharacter;
> - break;
> - }
> -
> - /* Append another digit of the constant */
> -
> - ConvertBuffer[i] = StringChar;
> - i++;
> - continue;
> - }
> -
> - /* Save the finished character */
> -
> - *StringBuffer = StringChar;
> - StringBuffer++;
> - if (StringBuffer >= EndBuffer)
> - {
> - goto BufferOverflow;
> - }
> - }
> -
> - /*
> - * Premature End-Of-File
> - */
> - AslCommonError (ASL_ERROR, ASL_MSG_EARLY_EOF,
> - Gbl_CurrentLineNumber, Gbl_LogicalLineNumber,
> - Gbl_CurrentLineOffset, Gbl_CurrentColumn,
> - Gbl_Files[ASL_FILE_INPUT].Filename, NULL);
> - return (FALSE);
> -
> -
> -CompletedString:
> - /*
> - * Null terminate the input string and copy string to a new buffer
> - */
> - *StringBuffer = 0;
> -
> - CleanString = UtGetStringBuffer (strlen (MsgBuffer) + 1);
> - if (!CleanString)
> - {
> - AslCommonError (ASL_ERROR, ASL_MSG_MEMORY_ALLOCATION,
> - Gbl_CurrentLineNumber, Gbl_LogicalLineNumber,
> - Gbl_CurrentLineOffset, Gbl_CurrentColumn,
> - Gbl_Files[ASL_FILE_INPUT].Filename, NULL);
> - return (FALSE);
> - }
> -
> - ACPI_STRCPY (CleanString, MsgBuffer);
> - AslCompilerlval.s = CleanString;
> - return (TRUE);
> -
> -
> -BufferOverflow:
> -
> - /* Literal was too long */
> -
> - AslCommonError (ASL_ERROR, ASL_MSG_STRING_LENGTH,
> - Gbl_CurrentLineNumber, Gbl_LogicalLineNumber,
> - Gbl_CurrentLineOffset, Gbl_CurrentColumn,
> - Gbl_Files[ASL_FILE_INPUT].Filename, "Max length 4096");
> - return (FALSE);
> -}
> +%%
>
> +/*! [End] no source code translation !*/
>
> +/*
> + * Bring in the scanner support routines
> + */
> +#include "aslsupport.l"
> diff --git a/src/acpica/source/compiler/aslcompiler.y b/src/acpica/source/compiler/aslcompiler.y
> index 6156b52..9aa8b51 100644
> --- a/src/acpica/source/compiler/aslcompiler.y
> +++ b/src/acpica/source/compiler/aslcompiler.y
> @@ -1,8 +1,7 @@
> -
> %{
> /******************************************************************************
> *
> - * Module Name: aslcompiler.y - Bison input file (ASL grammar and actions)
> + * Module Name: aslcompiler.y - Bison/Yacc input file (ASL grammar and actions)
> *
> *****************************************************************************/
>
> @@ -10,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -151,6 +150,11 @@ void * AslLocalAllocate (unsigned int Size);
> #define YYDEBUG 1 /* Enable debug output */
> #define YYERROR_VERBOSE 1 /* Verbose error messages */
>
> +/* Define YYMALLOC/YYFREE to prevent redefinition errors */
> +
> +#define YYMALLOC malloc
> +#define YYFREE free
> +
> /*
> * The windows version of bison defines this incorrectly as "32768" (Not negative).
> * We use a custom (edited binary) version of bison that defines YYFLAG as YYFBAD
> @@ -178,22 +182,28 @@ void * AslLocalAllocate (unsigned int Size);
> * These shift/reduce conflicts are expected. There should be zero
> * reduce/reduce conflicts.
> */
> -%expect 60
> +%expect 86
>
> -/*
> +/******************************************************************************
> + *
> * Token types: These are returned by the lexer
> *
> * NOTE: This list MUST match the AslKeywordMapping table found
> * in aslmap.c EXACTLY! Double check any changes!
> - */
> + *
> + *****************************************************************************/
> +
> %token <i> PARSEOP_ACCESSAS
> %token <i> PARSEOP_ACCESSATTRIB_BLOCK
> %token <i> PARSEOP_ACCESSATTRIB_BLOCK_CALL
> %token <i> PARSEOP_ACCESSATTRIB_BYTE
> -%token <i> PARSEOP_ACCESSATTRIB_WORD_CALL
> +%token <i> PARSEOP_ACCESSATTRIB_MULTIBYTE
> %token <i> PARSEOP_ACCESSATTRIB_QUICK
> +%token <i> PARSEOP_ACCESSATTRIB_RAW_BYTES
> +%token <i> PARSEOP_ACCESSATTRIB_RAW_PROCESS
> %token <i> PARSEOP_ACCESSATTRIB_SND_RCV
> %token <i> PARSEOP_ACCESSATTRIB_WORD
> +%token <i> PARSEOP_ACCESSATTRIB_WORD_CALL
> %token <i> PARSEOP_ACCESSTYPE_ANY
> %token <i> PARSEOP_ACCESSTYPE_BUF
> %token <i> PARSEOP_ACCESSTYPE_BYTE
> @@ -202,7 +212,8 @@ void * AslLocalAllocate (unsigned int Size);
> %token <i> PARSEOP_ACCESSTYPE_WORD
> %token <i> PARSEOP_ACQUIRE
> %token <i> PARSEOP_ADD
> -%token <i> PARSEOP_ADDRESSSPACE_FFIXEDHW
> +%token <i> PARSEOP_ADDRESSINGMODE_7BIT
> +%token <i> PARSEOP_ADDRESSINGMODE_10BIT
> %token <i> PARSEOP_ADDRESSTYPE_ACPI
> %token <i> PARSEOP_ADDRESSTYPE_MEMORY
> %token <i> PARSEOP_ADDRESSTYPE_NVS
> @@ -217,6 +228,11 @@ void * AslLocalAllocate (unsigned int Size);
> %token <i> PARSEOP_ARG5
> %token <i> PARSEOP_ARG6
> %token <i> PARSEOP_BANKFIELD
> +%token <i> PARSEOP_BITSPERBYTE_EIGHT
> +%token <i> PARSEOP_BITSPERBYTE_FIVE
> +%token <i> PARSEOP_BITSPERBYTE_NINE
> +%token <i> PARSEOP_BITSPERBYTE_SEVEN
> +%token <i> PARSEOP_BITSPERBYTE_SIX
> %token <i> PARSEOP_BREAK
> %token <i> PARSEOP_BREAKPOINT
> %token <i> PARSEOP_BUFFER
> @@ -224,9 +240,14 @@ void * AslLocalAllocate (unsigned int Size);
> %token <i> PARSEOP_BUSMASTERTYPE_NOTMASTER
> %token <i> PARSEOP_BYTECONST
> %token <i> PARSEOP_CASE
> +%token <i> PARSEOP_CLOCKPHASE_FIRST
> +%token <i> PARSEOP_CLOCKPHASE_SECOND
> +%token <i> PARSEOP_CLOCKPOLARITY_HIGH
> +%token <i> PARSEOP_CLOCKPOLARITY_LOW
> %token <i> PARSEOP_CONCATENATE
> %token <i> PARSEOP_CONCATENATERESTEMPLATE
> %token <i> PARSEOP_CONDREFOF
> +%token <i> PARSEOP_CONNECTION
> %token <i> PARSEOP_CONTINUE
> %token <i> PARSEOP_COPYOBJECT
> %token <i> PARSEOP_CREATEBITFIELD
> @@ -235,6 +256,7 @@ void * AslLocalAllocate (unsigned int Size);
> %token <i> PARSEOP_CREATEFIELD
> %token <i> PARSEOP_CREATEQWORDFIELD
> %token <i> PARSEOP_CREATEWORDFIELD
> +%token <i> PARSEOP_DATABUFFER
> %token <i> PARSEOP_DATATABLEREGION
> %token <i> PARSEOP_DEBUG
> %token <i> PARSEOP_DECODETYPE_POS
> @@ -245,6 +267,8 @@ void * AslLocalAllocate (unsigned int Size);
> %token <i> PARSEOP_DEFINITIONBLOCK
> %token <i> PARSEOP_DEREFOF
> %token <i> PARSEOP_DEVICE
> +%token <i> PARSEOP_DEVICEPOLARITY_HIGH
> +%token <i> PARSEOP_DEVICEPOLARITY_LOW
> %token <i> PARSEOP_DIVIDE
> %token <i> PARSEOP_DMA
> %token <i> PARSEOP_DMATYPE_A
> @@ -259,6 +283,8 @@ void * AslLocalAllocate (unsigned int Size);
> %token <i> PARSEOP_ELSE
> %token <i> PARSEOP_ELSEIF
> %token <i> PARSEOP_ENDDEPENDENTFN
> +%token <i> PARSEOP_ENDIAN_BIG
> +%token <i> PARSEOP_ENDIAN_LITTLE
> %token <i> PARSEOP_ENDTAG
> %token <i> PARSEOP_ERRORNODE
> %token <i> PARSEOP_EVENT
> @@ -270,18 +296,25 @@ void * AslLocalAllocate (unsigned int Size);
> %token <i> PARSEOP_FIELD
> %token <i> PARSEOP_FINDSETLEFTBIT
> %token <i> PARSEOP_FINDSETRIGHTBIT
> +%token <i> PARSEOP_FIXEDDMA
> %token <i> PARSEOP_FIXEDIO
> +%token <i> PARSEOP_FLOWCONTROL_HW
> +%token <i> PARSEOP_FLOWCONTROL_NONE
> +%token <i> PARSEOP_FLOWCONTROL_SW
> %token <i> PARSEOP_FROMBCD
> %token <i> PARSEOP_FUNCTION
> +%token <i> PARSEOP_GPIO_INT
> +%token <i> PARSEOP_GPIO_IO
> +%token <i> PARSEOP_I2C_SERIALBUS
> %token <i> PARSEOP_IF
> %token <i> PARSEOP_INCLUDE
> -%token <i> PARSEOP_INCLUDE_CSTYLE
> %token <i> PARSEOP_INCLUDE_END
> %token <i> PARSEOP_INCREMENT
> %token <i> PARSEOP_INDEX
> %token <i> PARSEOP_INDEXFIELD
> %token <i> PARSEOP_INTEGER
> %token <i> PARSEOP_INTERRUPT
> +%token <i> PARSEOP_INTLEVEL_ACTIVEBOTH
> %token <i> PARSEOP_INTLEVEL_ACTIVEHIGH
> %token <i> PARSEOP_INTLEVEL_ACTIVELOW
> %token <i> PARSEOP_INTTYPE_EDGE
> @@ -289,13 +322,16 @@ void * AslLocalAllocate (unsigned int Size);
> %token <i> PARSEOP_IO
> %token <i> PARSEOP_IODECODETYPE_10
> %token <i> PARSEOP_IODECODETYPE_16
> +%token <i> PARSEOP_IORESTRICT_IN
> +%token <i> PARSEOP_IORESTRICT_NONE
> +%token <i> PARSEOP_IORESTRICT_OUT
> +%token <i> PARSEOP_IORESTRICT_PRESERVE
> %token <i> PARSEOP_IRQ
> %token <i> PARSEOP_IRQNOFLAGS
> %token <i> PARSEOP_LAND
> %token <i> PARSEOP_LEQUAL
> %token <i> PARSEOP_LGREATER
> %token <i> PARSEOP_LGREATEREQUAL
> -%token <i> PARSEOP_LINE_CSTYLE
> %token <i> PARSEOP_LLESS
> %token <i> PARSEOP_LLESSEQUAL
> %token <i> PARSEOP_LNOT
> @@ -369,6 +405,15 @@ void * AslLocalAllocate (unsigned int Size);
> %token <i> PARSEOP_OR
> %token <i> PARSEOP_PACKAGE
> %token <i> PARSEOP_PACKAGE_LENGTH
> +%token <i> PARSEOP_PARITYTYPE_EVEN
> +%token <i> PARSEOP_PARITYTYPE_MARK
> +%token <i> PARSEOP_PARITYTYPE_NONE
> +%token <i> PARSEOP_PARITYTYPE_ODD
> +%token <i> PARSEOP_PARITYTYPE_SPACE
> +%token <i> PARSEOP_PIN_NOPULL
> +%token <i> PARSEOP_PIN_PULLDEFAULT
> +%token <i> PARSEOP_PIN_PULLDOWN
> +%token <i> PARSEOP_PIN_PULLUP
> %token <i> PARSEOP_POWERRESOURCE
> %token <i> PARSEOP_PROCESSOR
> %token <i> PARSEOP_QWORDCONST
> @@ -384,6 +429,9 @@ void * AslLocalAllocate (unsigned int Size);
> %token <i> PARSEOP_REFOF
> %token <i> PARSEOP_REGIONSPACE_CMOS
> %token <i> PARSEOP_REGIONSPACE_EC
> +%token <i> PARSEOP_REGIONSPACE_FFIXEDHW
> +%token <i> PARSEOP_REGIONSPACE_GPIO
> +%token <i> PARSEOP_REGIONSPACE_GSBUS
> %token <i> PARSEOP_REGIONSPACE_IO
> %token <i> PARSEOP_REGIONSPACE_IPMI
> %token <i> PARSEOP_REGIONSPACE_MEM
> @@ -403,15 +451,24 @@ void * AslLocalAllocate (unsigned int Size);
> %token <i> PARSEOP_SERIALIZERULE_NOTSERIAL
> %token <i> PARSEOP_SERIALIZERULE_SERIAL
> %token <i> PARSEOP_SHARETYPE_EXCLUSIVE
> +%token <i> PARSEOP_SHARETYPE_EXCLUSIVEWAKE
> %token <i> PARSEOP_SHARETYPE_SHARED
> +%token <i> PARSEOP_SHARETYPE_SHAREDWAKE
> %token <i> PARSEOP_SHIFTLEFT
> %token <i> PARSEOP_SHIFTRIGHT
> %token <i> PARSEOP_SIGNAL
> %token <i> PARSEOP_SIZEOF
> +%token <i> PARSEOP_SLAVEMODE_CONTROLLERINIT
> +%token <i> PARSEOP_SLAVEMODE_DEVICEINIT
> %token <i> PARSEOP_SLEEP
> +%token <i> PARSEOP_SPI_SERIALBUS
> %token <i> PARSEOP_STALL
> %token <i> PARSEOP_STARTDEPENDENTFN
> %token <i> PARSEOP_STARTDEPENDENTFN_NOPRI
> +%token <i> PARSEOP_STOPBITS_ONE
> +%token <i> PARSEOP_STOPBITS_ONEPLUSHALF
> +%token <i> PARSEOP_STOPBITS_TWO
> +%token <i> PARSEOP_STOPBITS_ZERO
> %token <i> PARSEOP_STORE
> %token <s> PARSEOP_STRING_LITERAL
> %token <i> PARSEOP_SUBTRACT
> @@ -429,6 +486,7 @@ void * AslLocalAllocate (unsigned int Size);
> %token <i> PARSEOP_TRANSLATIONTYPE_SPARSE
> %token <i> PARSEOP_TYPE_STATIC
> %token <i> PARSEOP_TYPE_TRANSLATION
> +%token <i> PARSEOP_UART_SERIALBUS
> %token <i> PARSEOP_UNICODE
> %token <i> PARSEOP_UNLOAD
> %token <i> PARSEOP_UPDATERULE_ONES
> @@ -439,10 +497,18 @@ void * AslLocalAllocate (unsigned int Size);
> %token <i> PARSEOP_VENDORSHORT
> %token <i> PARSEOP_WAIT
> %token <i> PARSEOP_WHILE
> +%token <i> PARSEOP_WIREMODE_FOUR
> +%token <i> PARSEOP_WIREMODE_THREE
> %token <i> PARSEOP_WORDBUSNUMBER
> %token <i> PARSEOP_WORDCONST
> %token <i> PARSEOP_WORDIO
> %token <i> PARSEOP_WORDSPACE
> +%token <i> PARSEOP_XFERSIZE_8
> +%token <i> PARSEOP_XFERSIZE_16
> +%token <i> PARSEOP_XFERSIZE_32
> +%token <i> PARSEOP_XFERSIZE_64
> +%token <i> PARSEOP_XFERSIZE_128
> +%token <i> PARSEOP_XFERSIZE_256
> %token <i> PARSEOP_XFERTYPE_8
> %token <i> PARSEOP_XFERTYPE_8_16
> %token <i> PARSEOP_XFERTYPE_16
> @@ -456,64 +522,62 @@ void * AslLocalAllocate (unsigned int Size);
> %token <i> PARSEOP___DATE__
> %token <i> PARSEOP___FILE__
> %token <i> PARSEOP___LINE__
> +%token <i> PARSEOP___PATH__
>
> -/*
> +
> +/******************************************************************************
> + *
> * Production names
> - */
> + *
> + *****************************************************************************/
>
> +%type <n> ArgList
> %type <n> ASLCode
> -%type <n> DefinitionBlockTerm
> -%type <n> TermList
> -%type <n> Term
> +%type <n> BufferData
> +%type <n> BufferTermData
> %type <n> CompilerDirective
> -%type <n> ObjectList
> -%type <n> Object
> %type <n> DataObject
> -%type <n> BufferData
> -%type <n> PackageData
> +%type <n> DefinitionBlockTerm
> %type <n> IntegerData
> -%type <n> StringData
> %type <n> NamedObject
> %type <n> NameSpaceModifier
> -%type <n> UserTerm
> -%type <n> ArgList
> -%type <n> TermArg
> -%type <n> Target
> -%type <n> RequiredTarget
> -%type <n> SimpleTarget
> -%type <n> BufferTermData
> +%type <n> Object
> +%type <n> ObjectList
> +%type <n> PackageData
> %type <n> ParameterTypePackage
> %type <n> ParameterTypePackageList
> %type <n> ParameterTypesPackage
> %type <n> ParameterTypesPackageList
> +%type <n> RequiredTarget
> +%type <n> SimpleTarget
> +%type <n> StringData
> +%type <n> Target
> +%type <n> Term
> +%type <n> TermArg
> +%type <n> TermList
> +%type <n> UserTerm
> +
> +/* Type4Opcode is obsolete */
>
> %type <n> Type1Opcode
> -%type <n> Type2Opcode
> -%type <n> Type2IntegerOpcode
> -%type <n> Type2StringOpcode
> %type <n> Type2BufferOpcode
> %type <n> Type2BufferOrStringOpcode
> +%type <n> Type2IntegerOpcode
> +%type <n> Type2Opcode
> +%type <n> Type2StringOpcode
> %type <n> Type3Opcode
> -
> -/* Obsolete %type <n> Type4Opcode */
> -
> %type <n> Type5Opcode
> %type <n> Type6Opcode
>
> -%type <n> LineTerm
> -%type <n> IncludeTerm
> -%type <n> IncludeCStyleTerm
> +%type <n> AccessAsTerm
> %type <n> ExternalTerm
> -
> -%type <n> FieldUnitList
> %type <n> FieldUnit
> %type <n> FieldUnitEntry
> -
> +%type <n> FieldUnitList
> +%type <n> IncludeTerm
> %type <n> OffsetTerm
> -%type <n> AccessAsTerm
> %type <n> OptionalAccessAttribTerm
>
> -
> /* Named Objects */
>
> %type <n> BankFieldTerm
> @@ -537,7 +601,6 @@ void * AslLocalAllocate (unsigned int Size);
> %type <n> ProcessorTerm
> %type <n> ThermalZoneTerm
>
> -
> /* Namespace modifiers */
>
> %type <n> AliasTerm
> @@ -546,13 +609,16 @@ void * AslLocalAllocate (unsigned int Size);
>
> /* Type 1 opcodes */
>
> -%type <n> BreakTerm
> %type <n> BreakPointTerm
> +%type <n> BreakTerm
> +%type <n> CaseDefaultTermList
> +%type <n> CaseTerm
> %type <n> ContinueTerm
> +%type <n> DefaultTerm
> +%type <n> ElseTerm
> %type <n> FatalTerm
> %type <n> IfElseTerm
> %type <n> IfTerm
> -%type <n> ElseTerm
> %type <n> LoadTerm
> %type <n> NoOpTerm
> %type <n> NotifyTerm
> @@ -563,20 +629,17 @@ void * AslLocalAllocate (unsigned int Size);
> %type <n> SleepTerm
> %type <n> StallTerm
> %type <n> SwitchTerm
> -%type <n> CaseDefaultTermList
> -//%type <n> CaseTermList
> -%type <n> CaseTerm
> -%type <n> DefaultTerm
> %type <n> UnloadTerm
> %type <n> WhileTerm
> +//%type <n> CaseTermList
>
> /* Type 2 opcodes */
>
> %type <n> AcquireTerm
> %type <n> AddTerm
> %type <n> AndTerm
> -%type <n> ConcatTerm
> %type <n> ConcatResTerm
> +%type <n> ConcatTerm
> %type <n> CondRefOfTerm
> %type <n> CopyObjectTerm
> %type <n> DecTerm
> @@ -589,12 +652,12 @@ void * AslLocalAllocate (unsigned int Size);
> %type <n> IndexTerm
> %type <n> LAndTerm
> %type <n> LEqualTerm
> -%type <n> LGreaterTerm
> %type <n> LGreaterEqualTerm
> -%type <n> LLessTerm
> +%type <n> LGreaterTerm
> %type <n> LLessEqualTerm
> -%type <n> LNotTerm
> +%type <n> LLessTerm
> %type <n> LNotEqualTerm
> +%type <n> LNotTerm
> %type <n> LoadTableTerm
> %type <n> LOrTerm
> %type <n> MatchTerm
> @@ -622,39 +685,49 @@ void * AslLocalAllocate (unsigned int Size);
> %type <n> WaitTerm
> %type <n> XOrTerm
>
> -%type <n> OptionalTermArg
> -%type <n> OptionalReturnArg
> -%type <n> OptionalListString
> -
> -
> /* Keywords */
>
> -%type <n> ObjectTypeKeyword
> -%type <n> AccessTypeKeyword
> %type <n> AccessAttribKeyword
> -%type <n> LockRuleKeyword
> -%type <n> UpdateRuleKeyword
> -%type <n> RegionSpaceKeyword
> +%type <n> AccessTypeKeyword
> +%type <n> AddressingModeKeyword
> +%type <n> AddressKeyword
> %type <n> AddressSpaceKeyword
> -%type <n> MatchOpKeyword
> -%type <n> SerializeRuleKeyword
> +%type <n> BitsPerByteKeyword
> +%type <n> ClockPhaseKeyword
> +%type <n> ClockPolarityKeyword
> +%type <n> DecodeKeyword
> +%type <n> DevicePolarityKeyword
> %type <n> DMATypeKeyword
> -%type <n> OptionalBusMasterKeyword
> -%type <n> XferTypeKeyword
> -%type <n> ResourceTypeKeyword
> -%type <n> MinKeyword
> +%type <n> EndianKeyword
> +%type <n> FlowControlKeyword
> +%type <n> InterruptLevel
> +%type <n> InterruptTypeKeyword
> +%type <n> IODecodeKeyword
> +%type <n> IoRestrictionKeyword
> +%type <n> LockRuleKeyword
> +%type <n> MatchOpKeyword
> %type <n> MaxKeyword
> -%type <n> DecodeKeyword
> -%type <n> RangeTypeKeyword
> %type <n> MemTypeKeyword
> +%type <n> MinKeyword
> +%type <n> ObjectTypeKeyword
> +%type <n> OptionalBusMasterKeyword
> %type <n> OptionalReadWriteKeyword
> -%type <n> InterruptTypeKeyword
> -%type <n> InterruptLevel
> +%type <n> ParityTypeKeyword
> +%type <n> PinConfigByte
> +%type <n> PinConfigKeyword
> +%type <n> RangeTypeKeyword
> +%type <n> RegionSpaceKeyword
> +%type <n> ResourceTypeKeyword
> +%type <n> SerializeRuleKeyword
> %type <n> ShareTypeKeyword
> -%type <n> IODecodeKeyword
> -%type <n> TypeKeyword
> +%type <n> SlaveModeKeyword
> +%type <n> StopBitsKeyword
> %type <n> TranslationKeyword
> -%type <n> AddressKeyword
> +%type <n> TypeKeyword
> +%type <n> UpdateRuleKeyword
> +%type <n> WireModeKeyword
> +%type <n> XferSizeKeyword
> +%type <n> XferTypeKeyword
>
> /* Types */
>
> @@ -671,31 +744,34 @@ void * AslLocalAllocate (unsigned int Size);
> %type <n> String
>
> %type <n> ConstTerm
> +%type <n> ConstExprTerm
> %type <n> ByteConstExpr
> %type <n> WordConstExpr
> %type <n> DWordConstExpr
> %type <n> QWordConstExpr
> -%type <n> ConstExprTerm
>
> +%type <n> DWordList
> %type <n> BufferTerm
> %type <n> ByteList
> -%type <n> DWordList
>
> -%type <n> PackageTerm
> -%type <n> PackageList
> %type <n> PackageElement
> -
> +%type <n> PackageList
> +%type <n> PackageTerm
> %type <n> VarPackageLengthTerm
>
> /* Macros */
>
> %type <n> EISAIDTerm
> +%type <n> ResourceMacroList
> +%type <n> ResourceMacroTerm
> %type <n> ResourceTemplateTerm
> %type <n> ToUUIDTerm
> %type <n> UnicodeTerm
> -%type <n> ResourceMacroList
> -%type <n> ResourceMacroTerm
>
> +/* Resource Descriptors */
> +
> +%type <n> ConnectionTerm
> +%type <n> DataBufferTerm
> %type <n> DMATerm
> %type <n> DWordIOTerm
> %type <n> DWordMemoryTerm
> @@ -704,7 +780,11 @@ void * AslLocalAllocate (unsigned int Size);
> %type <n> ExtendedIOTerm
> %type <n> ExtendedMemoryTerm
> %type <n> ExtendedSpaceTerm
> +%type <n> FixedDmaTerm
> %type <n> FixedIOTerm
> +%type <n> GpioIntTerm
> +%type <n> GpioIoTerm
> +%type <n> I2cSerialBusTerm
> %type <n> InterruptTerm
> %type <n> IOTerm
> %type <n> IRQNoFlagsTerm
> @@ -712,59 +792,75 @@ void * AslLocalAllocate (unsigned int Size);
> %type <n> Memory24Term
> %type <n> Memory32FixedTerm
> %type <n> Memory32Term
> +%type <n> NameSeg
> +%type <n> NameString
> %type <n> QWordIOTerm
> %type <n> QWordMemoryTerm
> %type <n> QWordSpaceTerm
> %type <n> RegisterTerm
> -%type <n> StartDependentFnTerm
> +%type <n> SpiSerialBusTerm
> %type <n> StartDependentFnNoPriTerm
> +%type <n> StartDependentFnTerm
> +%type <n> UartSerialBusTerm
> %type <n> VendorLongTerm
> %type <n> VendorShortTerm
> %type <n> WordBusNumberTerm
> %type <n> WordIOTerm
> %type <n> WordSpaceTerm
>
> -%type <n> NameString
> -%type <n> NameSeg
> -
> -
> /* Local types that help construct the AML, not in ACPI spec */
>
> -%type <n> IncludeEndTerm
> %type <n> AmlPackageLengthTerm
> +%type <n> IncludeEndTerm
> +%type <n> NameStringItem
> +%type <n> TermArgItem
> +
> +%type <n> OptionalAccessSize
> +%type <n> OptionalAddressingMode
> +%type <n> OptionalAddressRange
> +%type <n> OptionalBitsPerByte
> +%type <n> OptionalBuffer_Last
> %type <n> OptionalByteConstExpr
> +%type <n> OptionalCount
> +%type <n> OptionalDecodeType
> +%type <n> OptionalDevicePolarity
> %type <n> OptionalDWordConstExpr
> -%type <n> OptionalQWordConstExpr
> -%type <n> OptionalSerializeRuleKeyword
> -%type <n> OptionalResourceType_First
> -%type <n> OptionalResourceType
> -%type <n> OptionalMinType
> +%type <n> OptionalEndian
> +%type <n> OptionalFlowControl
> +%type <n> OptionalIoRestriction
> +%type <n> OptionalListString
> %type <n> OptionalMaxType
> %type <n> OptionalMemType
> -%type <n> OptionalCount
> -%type <n> OptionalDecodeType
> -%type <n> OptionalRangeType
> -%type <n> OptionalShareType
> -%type <n> OptionalType
> -%type <n> OptionalType_Last
> -%type <n> OptionalTranslationType_Last
> -%type <n> OptionalStringData
> +%type <n> OptionalMinType
> %type <n> OptionalNameString
> %type <n> OptionalNameString_First
> %type <n> OptionalNameString_Last
> -%type <n> OptionalAddressRange
> %type <n> OptionalObjectTypeKeyword
> %type <n> OptionalParameterTypePackage
> %type <n> OptionalParameterTypesPackage
> +%type <n> OptionalParityType
> +%type <n> OptionalQWordConstExpr
> +%type <n> OptionalRangeType
> %type <n> OptionalReference
> -%type <n> OptionalAccessSize
> -
> -%type <n> TermArgItem
> -%type <n> NameStringItem
> +%type <n> OptionalResourceType
> +%type <n> OptionalResourceType_First
> +%type <n> OptionalReturnArg
> +%type <n> OptionalSerializeRuleKeyword
> +%type <n> OptionalShareType
> +%type <n> OptionalShareType_First
> +%type <n> OptionalSlaveMode
> +%type <n> OptionalStopBits
> +%type <n> OptionalStringData
> +%type <n> OptionalTermArg
> +%type <n> OptionalTranslationType_Last
> +%type <n> OptionalType
> +%type <n> OptionalType_Last
> +%type <n> OptionalWireMode
> +%type <n> OptionalWordConst
> +%type <n> OptionalWordConstExpr
> +%type <n> OptionalXferSize
>
> %%
> -
> -
> /*******************************************************************************
> *
> * Production rules start here
> @@ -777,15 +873,19 @@ void * AslLocalAllocate (unsigned int Size);
>
>
> /*
> - * Blocks, Data, and Opcodes
> + * Root rule. Allow multiple #line directives before the definition block
> + * to handle output from preprocessors
> */
> -
> ASLCode
> : DefinitionBlockTerm
> | error {YYABORT; $$ = NULL;}
> ;
>
> /*
> + * Blocks, Data, and Opcodes
> + */
> +
> +/*
> * Note concerning support for "module-level code".
> *
> * ACPI 1.0 allowed Type1 and Type2 executable opcodes outside of control
> @@ -801,7 +901,7 @@ ASLCode
> * of Type1 and Type2 opcodes at module level.
> */
> DefinitionBlockTerm
> - : PARSEOP_DEFINITIONBLOCK '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEFINITIONBLOCK);}
> + : PARSEOP_DEFINITIONBLOCK '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEFINITIONBLOCK);}
> String ','
> String ','
> ByteConst ','
> @@ -817,7 +917,9 @@ DefinitionBlockTerm
> TermList
> : {$$ = NULL;}
> | TermList Term {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
> + | TermList Term ';' {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
> | TermList ';' Term {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
> + | TermList ';' Term ';' {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
> ;
>
> Term
> @@ -833,8 +935,6 @@ Term
>
> CompilerDirective
> : IncludeTerm {}
> - | IncludeCStyleTerm {$$ = NULL;}
> - | LineTerm {$$ = NULL;}
> | ExternalTerm {}
> ;
>
> @@ -1118,26 +1218,16 @@ Type6Opcode
> ;
>
> IncludeTerm
> - : PARSEOP_INCLUDE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INCLUDE);}
> + : PARSEOP_INCLUDE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INCLUDE);}
> String ')' {TrLinkChildren ($<n>3,1,$4);FlOpenIncludeFile ($4);}
> TermList
> IncludeEndTerm {$$ = TrLinkPeerNodes (3,$<n>3,$7,$8);}
> ;
>
> IncludeEndTerm
> - : PARSEOP_INCLUDE_END {$$ = TrCreateLeafNode (PARSEOP_INCLUDE_END);}
> + : PARSEOP_INCLUDE_END {$$ = TrCreateLeafNode (PARSEOP_INCLUDE_END);}
> ;
>
> -IncludeCStyleTerm
> - : PARSEOP_INCLUDE_CSTYLE
> - String {FlOpenIncludeFile ($2);}
> - ;
> -
> -LineTerm
> - : PARSEOP_LINE_CSTYLE
> - Integer {FlSetLineNumber ($2);}
> - ;
> -
> ExternalTerm
> : PARSEOP_EXTERNAL '('
> NameString
> @@ -1154,7 +1244,7 @@ ExternalTerm
>
>
> BankFieldTerm
> - : PARSEOP_BANKFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_BANKFIELD);}
> + : PARSEOP_BANKFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_BANKFIELD);}
> NameString
> NameStringItem
> TermArgItem
> @@ -1179,6 +1269,7 @@ FieldUnit
> : FieldUnitEntry {}
> | OffsetTerm {}
> | AccessAsTerm {}
> + | ConnectionTerm {}
> ;
>
> FieldUnitEntry
> @@ -1204,8 +1295,23 @@ AccessAsTerm
> error ')' {$$ = AslDoError(); yyclearin;}
> ;
>
> +ConnectionTerm
> + : PARSEOP_CONNECTION '('
> + NameString
> + ')' {$$ = TrCreateNode (PARSEOP_CONNECTION,1,$3);}
> + | PARSEOP_CONNECTION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONNECTION);}
> + ResourceMacroTerm
> + ')' {$$ = TrLinkChildren ($<n>3, 1,
> + TrLinkChildren (TrCreateLeafNode (PARSEOP_RESOURCETEMPLATE), 3,
> + TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
> + TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
> + $4));}
> + | PARSEOP_CONNECTION '('
> + error ')' {$$ = AslDoError(); yyclearin;}
> + ;
> +
> CreateBitFieldTerm
> - : PARSEOP_CREATEBITFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBITFIELD);}
> + : PARSEOP_CREATEBITFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBITFIELD);}
> TermArg
> TermArgItem
> NameStringItem
> @@ -1215,7 +1321,7 @@ CreateBitFieldTerm
> ;
>
> CreateByteFieldTerm
> - : PARSEOP_CREATEBYTEFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBYTEFIELD);}
> + : PARSEOP_CREATEBYTEFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBYTEFIELD);}
> TermArg
> TermArgItem
> NameStringItem
> @@ -1225,7 +1331,7 @@ CreateByteFieldTerm
> ;
>
> CreateDWordFieldTerm
> - : PARSEOP_CREATEDWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEDWORDFIELD);}
> + : PARSEOP_CREATEDWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEDWORDFIELD);}
> TermArg
> TermArgItem
> NameStringItem
> @@ -1235,7 +1341,7 @@ CreateDWordFieldTerm
> ;
>
> CreateFieldTerm
> - : PARSEOP_CREATEFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEFIELD);}
> + : PARSEOP_CREATEFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEFIELD);}
> TermArg
> TermArgItem
> TermArgItem
> @@ -1246,7 +1352,7 @@ CreateFieldTerm
> ;
>
> CreateQWordFieldTerm
> - : PARSEOP_CREATEQWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEQWORDFIELD);}
> + : PARSEOP_CREATEQWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEQWORDFIELD);}
> TermArg
> TermArgItem
> NameStringItem
> @@ -1256,7 +1362,7 @@ CreateQWordFieldTerm
> ;
>
> CreateWordFieldTerm
> - : PARSEOP_CREATEWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEWORDFIELD);}
> + : PARSEOP_CREATEWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEWORDFIELD);}
> TermArg
> TermArgItem
> NameStringItem
> @@ -1266,7 +1372,7 @@ CreateWordFieldTerm
> ;
>
> DataRegionTerm
> - : PARSEOP_DATATABLEREGION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DATATABLEREGION);}
> + : PARSEOP_DATATABLEREGION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DATATABLEREGION);}
> NameString
> TermArgItem
> TermArgItem
> @@ -1277,7 +1383,7 @@ DataRegionTerm
> ;
>
> DeviceTerm
> - : PARSEOP_DEVICE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEVICE);}
> + : PARSEOP_DEVICE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEVICE);}
> NameString
> ')' '{'
> ObjectList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
> @@ -1286,7 +1392,7 @@ DeviceTerm
> ;
>
> EventTerm
> - : PARSEOP_EVENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EVENT);}
> + : PARSEOP_EVENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EVENT);}
> NameString
> ')' {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION));}
> | PARSEOP_EVENT '('
> @@ -1294,7 +1400,7 @@ EventTerm
> ;
>
> FieldTerm
> - : PARSEOP_FIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FIELD);}
> + : PARSEOP_FIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FIELD);}
> NameString
> ',' AccessTypeKeyword
> ',' LockRuleKeyword
> @@ -1306,7 +1412,7 @@ FieldTerm
> ;
>
> FunctionTerm
> - : PARSEOP_FUNCTION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
> + : PARSEOP_FUNCTION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
> NameString
> OptionalParameterTypePackage
> OptionalParameterTypesPackage
> @@ -1320,7 +1426,7 @@ FunctionTerm
> ;
>
> IndexFieldTerm
> - : PARSEOP_INDEXFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INDEXFIELD);}
> + : PARSEOP_INDEXFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INDEXFIELD);}
> NameString
> NameStringItem
> ',' AccessTypeKeyword
> @@ -1333,7 +1439,7 @@ IndexFieldTerm
> ;
>
> MethodTerm
> - : PARSEOP_METHOD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
> + : PARSEOP_METHOD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
> NameString
> OptionalByteConstExpr {UtCheckIntegerRange ($5, 0, 7);}
> OptionalSerializeRuleKeyword
> @@ -1347,7 +1453,7 @@ MethodTerm
> ;
>
> MutexTerm
> - : PARSEOP_MUTEX '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MUTEX);}
> + : PARSEOP_MUTEX '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MUTEX);}
> NameString
> ',' ByteConstExpr
> ')' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
> @@ -1356,7 +1462,7 @@ MutexTerm
> ;
>
> OpRegionTerm
> - : PARSEOP_OPERATIONREGION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OPERATIONREGION);}
> + : PARSEOP_OPERATIONREGION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OPERATIONREGION);}
> NameString
> ',' OpRegionSpaceIdTerm
> TermArgItem
> @@ -1372,7 +1478,7 @@ OpRegionSpaceIdTerm
> ;
>
> PowerResTerm
> - : PARSEOP_POWERRESOURCE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_POWERRESOURCE);}
> + : PARSEOP_POWERRESOURCE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_POWERRESOURCE);}
> NameString
> ',' ByteConstExpr
> ',' WordConstExpr
> @@ -1383,7 +1489,7 @@ PowerResTerm
> ;
>
> ProcessorTerm
> - : PARSEOP_PROCESSOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_PROCESSOR);}
> + : PARSEOP_PROCESSOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_PROCESSOR);}
> NameString
> ',' ByteConstExpr
> OptionalDWordConstExpr
> @@ -1395,7 +1501,7 @@ ProcessorTerm
> ;
>
> ThermalZoneTerm
> - : PARSEOP_THERMALZONE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_THERMALZONE);}
> + : PARSEOP_THERMALZONE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_THERMALZONE);}
> NameString
> ')' '{'
> ObjectList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
> @@ -1408,7 +1514,7 @@ ThermalZoneTerm
>
>
> AliasTerm
> - : PARSEOP_ALIAS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ALIAS);}
> + : PARSEOP_ALIAS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ALIAS);}
> NameString
> NameStringItem
> ')' {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($5, NODE_IS_NAME_DECLARATION));}
> @@ -1417,7 +1523,7 @@ AliasTerm
> ;
>
> NameTerm
> - : PARSEOP_NAME '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NAME);}
> + : PARSEOP_NAME '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NAME);}
> NameString
> ',' DataObject
> ')' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
> @@ -1426,7 +1532,7 @@ NameTerm
> ;
>
> ScopeTerm
> - : PARSEOP_SCOPE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SCOPE);}
> + : PARSEOP_SCOPE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SCOPE);}
> NameString
> ')' '{'
> ObjectList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
> @@ -1439,19 +1545,19 @@ ScopeTerm
>
>
> BreakTerm
> - : PARSEOP_BREAK {$$ = TrCreateNode (PARSEOP_BREAK, 0);}
> + : PARSEOP_BREAK {$$ = TrCreateNode (PARSEOP_BREAK, 0);}
> ;
>
> BreakPointTerm
> - : PARSEOP_BREAKPOINT {$$ = TrCreateNode (PARSEOP_BREAKPOINT, 0);}
> + : PARSEOP_BREAKPOINT {$$ = TrCreateNode (PARSEOP_BREAKPOINT, 0);}
> ;
>
> ContinueTerm
> - : PARSEOP_CONTINUE {$$ = TrCreateNode (PARSEOP_CONTINUE, 0);}
> + : PARSEOP_CONTINUE {$$ = TrCreateNode (PARSEOP_CONTINUE, 0);}
> ;
>
> FatalTerm
> - : PARSEOP_FATAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FATAL);}
> + : PARSEOP_FATAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FATAL);}
> ByteConstExpr
> ',' DWordConstExpr
> TermArgItem
> @@ -1465,7 +1571,7 @@ IfElseTerm
> ;
>
> IfTerm
> - : PARSEOP_IF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
> + : PARSEOP_IF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
> TermArg
> ')' '{'
> TermList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
> @@ -1476,7 +1582,7 @@ IfTerm
>
> ElseTerm
> : {$$ = NULL;}
> - | PARSEOP_ELSE '{' {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
> + | PARSEOP_ELSE '{' {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
> TermList '}' {$$ = TrLinkChildren ($<n>3,1,$4);}
>
> | PARSEOP_ELSE '{'
> @@ -1485,10 +1591,10 @@ ElseTerm
> | PARSEOP_ELSE
> error {$$ = AslDoError(); yyclearin;}
>
> - | PARSEOP_ELSEIF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
> - TermArg {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
> + | PARSEOP_ELSEIF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
> + TermArg {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
> ')' '{'
> - TermList '}' {TrLinkChildren ($<n>5,2,$4,$8);}
> + TermList '}' {TrLinkChildren ($<n>5,2,$4,$8);}
> ElseTerm {TrLinkPeerNode ($<n>5,$11);}
> {$$ = TrLinkChildren ($<n>3,1,$<n>5);}
>
> @@ -1500,7 +1606,7 @@ ElseTerm
> ;
>
> LoadTerm
> - : PARSEOP_LOAD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOAD);}
> + : PARSEOP_LOAD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOAD);}
> NameString
> RequiredTarget
> ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> @@ -1509,11 +1615,11 @@ LoadTerm
> ;
>
> NoOpTerm
> - : PARSEOP_NOOP {$$ = TrCreateNode (PARSEOP_NOOP, 0);}
> + : PARSEOP_NOOP {$$ = TrCreateNode (PARSEOP_NOOP, 0);}
> ;
>
> NotifyTerm
> - : PARSEOP_NOTIFY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOTIFY);}
> + : PARSEOP_NOTIFY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOTIFY);}
> SuperName
> TermArgItem
> ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> @@ -1522,7 +1628,7 @@ NotifyTerm
> ;
>
> ReleaseTerm
> - : PARSEOP_RELEASE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RELEASE);}
> + : PARSEOP_RELEASE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RELEASE);}
> SuperName
> ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
> | PARSEOP_RELEASE '('
> @@ -1530,7 +1636,7 @@ ReleaseTerm
> ;
>
> ResetTerm
> - : PARSEOP_RESET '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RESET);}
> + : PARSEOP_RESET '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RESET);}
> SuperName
> ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
> | PARSEOP_RESET '('
> @@ -1538,16 +1644,16 @@ ResetTerm
> ;
>
> ReturnTerm
> - : PARSEOP_RETURN '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RETURN);}
> + : PARSEOP_RETURN '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RETURN);}
> OptionalReturnArg
> ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
> - | PARSEOP_RETURN {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_RETURN),1,TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN));}
> + | PARSEOP_RETURN {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_RETURN),1,TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN));}
> | PARSEOP_RETURN '('
> error ')' {$$ = AslDoError(); yyclearin;}
> ;
>
> SignalTerm
> - : PARSEOP_SIGNAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SIGNAL);}
> + : PARSEOP_SIGNAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SIGNAL);}
> SuperName
> ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
> | PARSEOP_SIGNAL '('
> @@ -1555,7 +1661,7 @@ SignalTerm
> ;
>
> SleepTerm
> - : PARSEOP_SLEEP '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SLEEP);}
> + : PARSEOP_SLEEP '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SLEEP);}
> TermArg
> ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
> | PARSEOP_SLEEP '('
> @@ -1563,7 +1669,7 @@ SleepTerm
> ;
>
> StallTerm
> - : PARSEOP_STALL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STALL);}
> + : PARSEOP_STALL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STALL);}
> TermArg
> ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
> | PARSEOP_STALL '('
> @@ -1571,7 +1677,7 @@ StallTerm
> ;
>
> SwitchTerm
> - : PARSEOP_SWITCH '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SWITCH);}
> + : PARSEOP_SWITCH '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SWITCH);}
> TermArg
> ')' '{'
> CaseDefaultTermList '}'
> @@ -1614,7 +1720,7 @@ CaseTermList
> */
>
> CaseTerm
> - : PARSEOP_CASE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CASE);}
> + : PARSEOP_CASE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CASE);}
> DataObject
> ')' '{'
> TermList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
> @@ -1623,14 +1729,14 @@ CaseTerm
> ;
>
> DefaultTerm
> - : PARSEOP_DEFAULT '{' {$<n>$ = TrCreateLeafNode (PARSEOP_DEFAULT);}
> + : PARSEOP_DEFAULT '{' {$<n>$ = TrCreateLeafNode (PARSEOP_DEFAULT);}
> TermList '}' {$$ = TrLinkChildren ($<n>3,1,$4);}
> | PARSEOP_DEFAULT '{'
> error '}' {$$ = AslDoError(); yyclearin;}
> ;
>
> UnloadTerm
> - : PARSEOP_UNLOAD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UNLOAD);}
> + : PARSEOP_UNLOAD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UNLOAD);}
> SuperName
> ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
> | PARSEOP_UNLOAD '('
> @@ -1638,7 +1744,7 @@ UnloadTerm
> ;
>
> WhileTerm
> - : PARSEOP_WHILE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WHILE);}
> + : PARSEOP_WHILE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WHILE);}
> TermArg
> ')' '{' TermList '}'
> {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
> @@ -1650,7 +1756,7 @@ WhileTerm
> /******* Type 2 opcodes *******************************************************/
>
> AcquireTerm
> - : PARSEOP_ACQUIRE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACQUIRE);}
> + : PARSEOP_ACQUIRE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACQUIRE);}
> SuperName
> ',' WordConstExpr
> ')' {$$ = TrLinkChildren ($<n>3,2,$4,$6);}
> @@ -1659,7 +1765,7 @@ AcquireTerm
> ;
>
> AddTerm
> - : PARSEOP_ADD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ADD);}
> + : PARSEOP_ADD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ADD);}
> TermArg
> TermArgItem
> Target
> @@ -1669,7 +1775,7 @@ AddTerm
> ;
>
> AndTerm
> - : PARSEOP_AND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_AND);}
> + : PARSEOP_AND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_AND);}
> TermArg
> TermArgItem
> Target
> @@ -1679,7 +1785,7 @@ AndTerm
> ;
>
> ConcatTerm
> - : PARSEOP_CONCATENATE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATE);}
> + : PARSEOP_CONCATENATE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATE);}
> TermArg
> TermArgItem
> Target
> @@ -1699,7 +1805,7 @@ ConcatResTerm
> ;
>
> CondRefOfTerm
> - : PARSEOP_CONDREFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONDREFOF);}
> + : PARSEOP_CONDREFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONDREFOF);}
> SuperName
> Target
> ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> @@ -1708,7 +1814,7 @@ CondRefOfTerm
> ;
>
> CopyObjectTerm
> - : PARSEOP_COPYOBJECT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_COPYOBJECT);}
> + : PARSEOP_COPYOBJECT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_COPYOBJECT);}
> TermArg
> ',' SimpleTarget
> ')' {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
> @@ -1717,7 +1823,7 @@ CopyObjectTerm
> ;
>
> DecTerm
> - : PARSEOP_DECREMENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DECREMENT);}
> + : PARSEOP_DECREMENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DECREMENT);}
> SuperName
> ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
> | PARSEOP_DECREMENT '('
> @@ -1725,7 +1831,7 @@ DecTerm
> ;
>
> DerefOfTerm
> - : PARSEOP_DEREFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEREFOF);}
> + : PARSEOP_DEREFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEREFOF);}
> TermArg
> ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
> | PARSEOP_DEREFOF '('
> @@ -1733,7 +1839,7 @@ DerefOfTerm
> ;
>
> DivideTerm
> - : PARSEOP_DIVIDE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DIVIDE);}
> + : PARSEOP_DIVIDE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DIVIDE);}
> TermArg
> TermArgItem
> Target
> @@ -1744,7 +1850,7 @@ DivideTerm
> ;
>
> FindSetLeftBitTerm
> - : PARSEOP_FINDSETLEFTBIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETLEFTBIT);}
> + : PARSEOP_FINDSETLEFTBIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETLEFTBIT);}
> TermArg
> Target
> ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> @@ -1753,7 +1859,7 @@ FindSetLeftBitTerm
> ;
>
> FindSetRightBitTerm
> - : PARSEOP_FINDSETRIGHTBIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETRIGHTBIT);}
> + : PARSEOP_FINDSETRIGHTBIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETRIGHTBIT);}
> TermArg
> Target
> ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> @@ -1762,7 +1868,7 @@ FindSetRightBitTerm
> ;
>
> FromBCDTerm
> - : PARSEOP_FROMBCD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FROMBCD);}
> + : PARSEOP_FROMBCD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FROMBCD);}
> TermArg
> Target
> ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> @@ -1771,7 +1877,7 @@ FromBCDTerm
> ;
>
> IncTerm
> - : PARSEOP_INCREMENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INCREMENT);}
> + : PARSEOP_INCREMENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INCREMENT);}
> SuperName
> ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
> | PARSEOP_INCREMENT '('
> @@ -1779,7 +1885,7 @@ IncTerm
> ;
>
> IndexTerm
> - : PARSEOP_INDEX '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INDEX);}
> + : PARSEOP_INDEX '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INDEX);}
> TermArg
> TermArgItem
> Target
> @@ -1789,7 +1895,7 @@ IndexTerm
> ;
>
> LAndTerm
> - : PARSEOP_LAND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LAND);}
> + : PARSEOP_LAND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LAND);}
> TermArg
> TermArgItem
> ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> @@ -1798,7 +1904,7 @@ LAndTerm
> ;
>
> LEqualTerm
> - : PARSEOP_LEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
> + : PARSEOP_LEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
> TermArg
> TermArgItem
> ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> @@ -1807,7 +1913,7 @@ LEqualTerm
> ;
>
> LGreaterTerm
> - : PARSEOP_LGREATER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
> + : PARSEOP_LGREATER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
> TermArg
> TermArgItem
> ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> @@ -1816,7 +1922,7 @@ LGreaterTerm
> ;
>
> LGreaterEqualTerm
> - : PARSEOP_LGREATEREQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
> + : PARSEOP_LGREATEREQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
> TermArg
> TermArgItem
> ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
> @@ -1825,7 +1931,7 @@ LGreaterEqualTerm
> ;
>
> LLessTerm
> - : PARSEOP_LLESS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
> + : PARSEOP_LLESS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
> TermArg
> TermArgItem
> ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> @@ -1834,7 +1940,7 @@ LLessTerm
> ;
>
> LLessEqualTerm
> - : PARSEOP_LLESSEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
> + : PARSEOP_LLESSEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
> TermArg
> TermArgItem
> ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
> @@ -1843,7 +1949,7 @@ LLessEqualTerm
> ;
>
> LNotTerm
> - : PARSEOP_LNOT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LNOT);}
> + : PARSEOP_LNOT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LNOT);}
> TermArg
> ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
> | PARSEOP_LNOT '('
> @@ -1851,7 +1957,7 @@ LNotTerm
> ;
>
> LNotEqualTerm
> - : PARSEOP_LNOTEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
> + : PARSEOP_LNOTEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
> TermArg
> TermArgItem
> ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
> @@ -1860,7 +1966,7 @@ LNotEqualTerm
> ;
>
> LoadTableTerm
> - : PARSEOP_LOADTABLE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOADTABLE);}
> + : PARSEOP_LOADTABLE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOADTABLE);}
> TermArg
> TermArgItem
> TermArgItem
> @@ -1873,7 +1979,7 @@ LoadTableTerm
> ;
>
> LOrTerm
> - : PARSEOP_LOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOR);}
> + : PARSEOP_LOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOR);}
> TermArg
> TermArgItem
> ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> @@ -1882,7 +1988,7 @@ LOrTerm
> ;
>
> MatchTerm
> - : PARSEOP_MATCH '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MATCH);}
> + : PARSEOP_MATCH '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MATCH);}
> TermArg
> ',' MatchOpKeyword
> TermArgItem
> @@ -1895,7 +2001,7 @@ MatchTerm
> ;
>
> MidTerm
> - : PARSEOP_MID '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MID);}
> + : PARSEOP_MID '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MID);}
> TermArg
> TermArgItem
> TermArgItem
> @@ -1906,7 +2012,7 @@ MidTerm
> ;
>
> ModTerm
> - : PARSEOP_MOD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MOD);}
> + : PARSEOP_MOD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MOD);}
> TermArg
> TermArgItem
> Target
> @@ -1916,7 +2022,7 @@ ModTerm
> ;
>
> MultiplyTerm
> - : PARSEOP_MULTIPLY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MULTIPLY);}
> + : PARSEOP_MULTIPLY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MULTIPLY);}
> TermArg
> TermArgItem
> Target
> @@ -1926,7 +2032,7 @@ MultiplyTerm
> ;
>
> NAndTerm
> - : PARSEOP_NAND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NAND);}
> + : PARSEOP_NAND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NAND);}
> TermArg
> TermArgItem
> Target
> @@ -1936,7 +2042,7 @@ NAndTerm
> ;
>
> NOrTerm
> - : PARSEOP_NOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOR);}
> + : PARSEOP_NOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOR);}
> TermArg
> TermArgItem
> Target
> @@ -1946,7 +2052,7 @@ NOrTerm
> ;
>
> NotTerm
> - : PARSEOP_NOT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOT);}
> + : PARSEOP_NOT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOT);}
> TermArg
> Target
> ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> @@ -1955,7 +2061,7 @@ NotTerm
> ;
>
> ObjectTypeTerm
> - : PARSEOP_OBJECTTYPE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE);}
> + : PARSEOP_OBJECTTYPE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE);}
> SuperName
> ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
> | PARSEOP_OBJECTTYPE '('
> @@ -1963,7 +2069,7 @@ ObjectTypeTerm
> ;
>
> OrTerm
> - : PARSEOP_OR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OR);}
> + : PARSEOP_OR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OR);}
> TermArg
> TermArgItem
> Target
> @@ -1977,7 +2083,7 @@ OrTerm
> * we've taken a pointer to it. (hard to tell if a local becomes initialized this way.)
> */
> RefOfTerm
> - : PARSEOP_REFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_REFOF);}
> + : PARSEOP_REFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_REFOF);}
> SuperName
> ')' {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_TARGET));}
> | PARSEOP_REFOF '('
> @@ -1985,7 +2091,7 @@ RefOfTerm
> ;
>
> ShiftLeftTerm
> - : PARSEOP_SHIFTLEFT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTLEFT);}
> + : PARSEOP_SHIFTLEFT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTLEFT);}
> TermArg
> TermArgItem
> Target
> @@ -1995,7 +2101,7 @@ ShiftLeftTerm
> ;
>
> ShiftRightTerm
> - : PARSEOP_SHIFTRIGHT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTRIGHT);}
> + : PARSEOP_SHIFTRIGHT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTRIGHT);}
> TermArg
> TermArgItem
> Target
> @@ -2005,7 +2111,7 @@ ShiftRightTerm
> ;
>
> SizeOfTerm
> - : PARSEOP_SIZEOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SIZEOF);}
> + : PARSEOP_SIZEOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SIZEOF);}
> SuperName
> ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
> | PARSEOP_SIZEOF '('
> @@ -2013,7 +2119,7 @@ SizeOfTerm
> ;
>
> StoreTerm
> - : PARSEOP_STORE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STORE);}
> + : PARSEOP_STORE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STORE);}
> TermArg
> ',' SuperName
> ')' {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
> @@ -2022,7 +2128,7 @@ StoreTerm
> ;
>
> SubtractTerm
> - : PARSEOP_SUBTRACT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SUBTRACT);}
> + : PARSEOP_SUBTRACT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SUBTRACT);}
> TermArg
> TermArgItem
> Target
> @@ -2032,15 +2138,15 @@ SubtractTerm
> ;
>
> TimerTerm
> - : PARSEOP_TIMER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TIMER);}
> + : PARSEOP_TIMER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TIMER);}
> ')' {$$ = TrLinkChildren ($<n>3,0);}
> - | PARSEOP_TIMER {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_TIMER),0);}
> + | PARSEOP_TIMER {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_TIMER),0);}
> | PARSEOP_TIMER '('
> error ')' {$$ = AslDoError(); yyclearin;}
> ;
>
> ToBCDTerm
> - : PARSEOP_TOBCD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOBCD);}
> + : PARSEOP_TOBCD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOBCD);}
> TermArg
> Target
> ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> @@ -2049,7 +2155,7 @@ ToBCDTerm
> ;
>
> ToBufferTerm
> - : PARSEOP_TOBUFFER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOBUFFER);}
> + : PARSEOP_TOBUFFER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOBUFFER);}
> TermArg
> Target
> ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> @@ -2058,7 +2164,7 @@ ToBufferTerm
> ;
>
> ToDecimalStringTerm
> - : PARSEOP_TODECIMALSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TODECIMALSTRING);}
> + : PARSEOP_TODECIMALSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TODECIMALSTRING);}
> TermArg
> Target
> ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> @@ -2067,7 +2173,7 @@ ToDecimalStringTerm
> ;
>
> ToHexStringTerm
> - : PARSEOP_TOHEXSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOHEXSTRING);}
> + : PARSEOP_TOHEXSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOHEXSTRING);}
> TermArg
> Target
> ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> @@ -2076,7 +2182,7 @@ ToHexStringTerm
> ;
>
> ToIntegerTerm
> - : PARSEOP_TOINTEGER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOINTEGER);}
> + : PARSEOP_TOINTEGER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOINTEGER);}
> TermArg
> Target
> ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> @@ -2085,7 +2191,7 @@ ToIntegerTerm
> ;
>
> ToStringTerm
> - : PARSEOP_TOSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOSTRING);}
> + : PARSEOP_TOSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOSTRING);}
> TermArg
> OptionalCount
> Target
> @@ -2102,7 +2208,7 @@ ToUUIDTerm
> ;
>
> WaitTerm
> - : PARSEOP_WAIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WAIT);}
> + : PARSEOP_WAIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WAIT);}
> SuperName
> TermArgItem
> ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> @@ -2111,7 +2217,7 @@ WaitTerm
> ;
>
> XOrTerm
> - : PARSEOP_XOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_XOR);}
> + : PARSEOP_XOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_XOR);}
> TermArg
> TermArgItem
> Target
> @@ -2124,23 +2230,23 @@ XOrTerm
> /******* Keywords *************************************************************/
>
>
> -ObjectTypeKeyword
> - : PARSEOP_OBJECTTYPE_UNK {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);}
> - | PARSEOP_OBJECTTYPE_INT {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_INT);}
> - | PARSEOP_OBJECTTYPE_STR {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_STR);}
> - | PARSEOP_OBJECTTYPE_BUF {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BUF);}
> - | PARSEOP_OBJECTTYPE_PKG {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PKG);}
> - | PARSEOP_OBJECTTYPE_FLD {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_FLD);}
> - | PARSEOP_OBJECTTYPE_DEV {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DEV);}
> - | PARSEOP_OBJECTTYPE_EVT {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_EVT);}
> - | PARSEOP_OBJECTTYPE_MTH {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTH);}
> - | PARSEOP_OBJECTTYPE_MTX {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTX);}
> - | PARSEOP_OBJECTTYPE_OPR {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_OPR);}
> - | PARSEOP_OBJECTTYPE_POW {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_POW);}
> - | PARSEOP_OBJECTTYPE_PRO {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PRO);}
> - | PARSEOP_OBJECTTYPE_THZ {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_THZ);}
> - | PARSEOP_OBJECTTYPE_BFF {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BFF);}
> - | PARSEOP_OBJECTTYPE_DDB {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DDB);}
> +AccessAttribKeyword
> + : PARSEOP_ACCESSATTRIB_BLOCK {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK);}
> + | PARSEOP_ACCESSATTRIB_BLOCK_CALL {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK_CALL);}
> + | PARSEOP_ACCESSATTRIB_BYTE {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BYTE);}
> + | PARSEOP_ACCESSATTRIB_QUICK {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_QUICK );}
> + | PARSEOP_ACCESSATTRIB_SND_RCV {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_SND_RCV);}
> + | PARSEOP_ACCESSATTRIB_WORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD);}
> + | PARSEOP_ACCESSATTRIB_WORD_CALL {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD_CALL);}
> + | PARSEOP_ACCESSATTRIB_MULTIBYTE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_MULTIBYTE);}
> + ByteConst
> + ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
> + | PARSEOP_ACCESSATTRIB_RAW_BYTES '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_RAW_BYTES);}
> + ByteConst
> + ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
> + | PARSEOP_ACCESSATTRIB_RAW_PROCESS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_RAW_PROCESS);}
> + ByteConst
> + ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
> ;
>
> AccessTypeKeyword
> @@ -2152,49 +2258,95 @@ AccessTypeKeyword
> | PARSEOP_ACCESSTYPE_BUF {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BUF);}
> ;
>
> -AccessAttribKeyword
> - : PARSEOP_ACCESSATTRIB_QUICK {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_QUICK );}
> - | PARSEOP_ACCESSATTRIB_SND_RCV {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_SND_RCV);}
> - | PARSEOP_ACCESSATTRIB_BYTE {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BYTE);}
> - | PARSEOP_ACCESSATTRIB_WORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD);}
> - | PARSEOP_ACCESSATTRIB_BLOCK {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK);}
> - | PARSEOP_ACCESSATTRIB_WORD_CALL {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD_CALL);}
> - | PARSEOP_ACCESSATTRIB_BLOCK_CALL {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK_CALL);}
> +AddressingModeKeyword
> + : PARSEOP_ADDRESSINGMODE_7BIT {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_7BIT);}
> + | PARSEOP_ADDRESSINGMODE_10BIT {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_10BIT);}
> ;
>
> -LockRuleKeyword
> - : PARSEOP_LOCKRULE_LOCK {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_LOCK);}
> - | PARSEOP_LOCKRULE_NOLOCK {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_NOLOCK);}
> +AddressKeyword
> + : PARSEOP_ADDRESSTYPE_MEMORY {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_MEMORY);}
> + | PARSEOP_ADDRESSTYPE_RESERVED {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_RESERVED);}
> + | PARSEOP_ADDRESSTYPE_NVS {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_NVS);}
> + | PARSEOP_ADDRESSTYPE_ACPI {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_ACPI);}
> ;
>
> -UpdateRuleKeyword
> - : PARSEOP_UPDATERULE_PRESERVE {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_PRESERVE);}
> - | PARSEOP_UPDATERULE_ONES {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ONES);}
> - | PARSEOP_UPDATERULE_ZEROS {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ZEROS);}
> +AddressSpaceKeyword
> + : ByteConst {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
> + | RegionSpaceKeyword {}
> ;
>
> +BitsPerByteKeyword
> + : PARSEOP_BITSPERBYTE_FIVE {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_FIVE);}
> + | PARSEOP_BITSPERBYTE_SIX {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_SIX);}
> + | PARSEOP_BITSPERBYTE_SEVEN {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_SEVEN);}
> + | PARSEOP_BITSPERBYTE_EIGHT {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_EIGHT);}
> + | PARSEOP_BITSPERBYTE_NINE {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_NINE);}
> + ;
>
> -RegionSpaceKeyword
> - : PARSEOP_REGIONSPACE_IO {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IO);}
> - | PARSEOP_REGIONSPACE_MEM {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_MEM);}
> - | PARSEOP_REGIONSPACE_PCI {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCI);}
> - | PARSEOP_REGIONSPACE_EC {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_EC);}
> - | PARSEOP_REGIONSPACE_SMBUS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_SMBUS);}
> - | PARSEOP_REGIONSPACE_CMOS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_CMOS);}
> - | PARSEOP_REGIONSPACE_PCIBAR {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCIBAR);}
> - | PARSEOP_REGIONSPACE_IPMI {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IPMI);}
> +ClockPhaseKeyword
> + : PARSEOP_CLOCKPHASE_FIRST {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_FIRST);}
> + | PARSEOP_CLOCKPHASE_SECOND {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_SECOND);}
> ;
>
> -AddressSpaceKeyword
> - : ByteConst {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
> - | RegionSpaceKeyword {}
> - | PARSEOP_ADDRESSSPACE_FFIXEDHW {$$ = TrCreateLeafNode (PARSEOP_ADDRESSSPACE_FFIXEDHW);}
> +ClockPolarityKeyword
> + : PARSEOP_CLOCKPOLARITY_LOW {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_LOW);}
> + | PARSEOP_CLOCKPOLARITY_HIGH {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_HIGH);}
> ;
>
> +DecodeKeyword
> + : PARSEOP_DECODETYPE_POS {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_POS);}
> + | PARSEOP_DECODETYPE_SUB {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_SUB);}
> + ;
>
> -SerializeRuleKeyword
> - : PARSEOP_SERIALIZERULE_SERIAL {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_SERIAL);}
> - | PARSEOP_SERIALIZERULE_NOTSERIAL {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL);}
> +DevicePolarityKeyword
> + : PARSEOP_DEVICEPOLARITY_LOW {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_LOW);}
> + | PARSEOP_DEVICEPOLARITY_HIGH {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_HIGH);}
> + ;
> +
> +DMATypeKeyword
> + : PARSEOP_DMATYPE_A {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_A);}
> + | PARSEOP_DMATYPE_COMPATIBILITY {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_COMPATIBILITY);}
> + | PARSEOP_DMATYPE_B {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_B);}
> + | PARSEOP_DMATYPE_F {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_F);}
> + ;
> +
> +EndianKeyword
> + : PARSEOP_ENDIAN_LITTLE {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_LITTLE);}
> + | PARSEOP_ENDIAN_BIG {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_BIG);}
> + ;
> +
> +FlowControlKeyword
> + : PARSEOP_FLOWCONTROL_HW {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_HW);}
> + | PARSEOP_FLOWCONTROL_NONE {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_NONE);}
> + | PARSEOP_FLOWCONTROL_SW {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_SW);}
> + ;
> +
> +InterruptLevel
> + : PARSEOP_INTLEVEL_ACTIVEBOTH {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEBOTH);}
> + | PARSEOP_INTLEVEL_ACTIVEHIGH {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEHIGH);}
> + | PARSEOP_INTLEVEL_ACTIVELOW {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVELOW);}
> + ;
> +
> +InterruptTypeKeyword
> + : PARSEOP_INTTYPE_EDGE {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_EDGE);}
> + | PARSEOP_INTTYPE_LEVEL {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_LEVEL);}
> + ;
> +
> +IODecodeKeyword
> + : PARSEOP_IODECODETYPE_16 {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_16);}
> + | PARSEOP_IODECODETYPE_10 {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_10);}
> + ;
> +
> +IoRestrictionKeyword
> + : PARSEOP_IORESTRICT_IN {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_IN);}
> + | PARSEOP_IORESTRICT_OUT {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_OUT);}
> + | PARSEOP_IORESTRICT_NONE {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_NONE);}
> + | PARSEOP_IORESTRICT_PRESERVE {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_PRESERVE);}
> + ;
> +
> +LockRuleKeyword
> + : PARSEOP_LOCKRULE_LOCK {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_LOCK);}
> + | PARSEOP_LOCKRULE_NOLOCK {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_NOLOCK);}
> ;
>
> MatchOpKeyword
> @@ -2206,22 +2358,16 @@ MatchOpKeyword
> | PARSEOP_MATCHTYPE_MGT {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGT);}
> ;
>
> -DMATypeKeyword
> - : PARSEOP_DMATYPE_A {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_A);}
> - | PARSEOP_DMATYPE_COMPATIBILITY {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_COMPATIBILITY);}
> - | PARSEOP_DMATYPE_B {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_B);}
> - | PARSEOP_DMATYPE_F {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_F);}
> - ;
> -
> -XferTypeKeyword
> - : PARSEOP_XFERTYPE_8 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8);}
> - | PARSEOP_XFERTYPE_8_16 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8_16);}
> - | PARSEOP_XFERTYPE_16 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_16);}
> +MaxKeyword
> + : PARSEOP_MAXTYPE_FIXED {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_FIXED);}
> + | PARSEOP_MAXTYPE_NOTFIXED {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_NOTFIXED);}
> ;
>
> -ResourceTypeKeyword
> - : PARSEOP_RESOURCETYPE_CONSUMER {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
> - | PARSEOP_RESOURCETYPE_PRODUCER {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_PRODUCER);}
> +MemTypeKeyword
> + : PARSEOP_MEMTYPE_CACHEABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_CACHEABLE);}
> + | PARSEOP_MEMTYPE_WRITECOMBINING {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_WRITECOMBINING);}
> + | PARSEOP_MEMTYPE_PREFETCHABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_PREFETCHABLE);}
> + | PARSEOP_MEMTYPE_NONCACHEABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_NONCACHEABLE);}
> ;
>
> MinKeyword
> @@ -2229,14 +2375,43 @@ MinKeyword
> | PARSEOP_MINTYPE_NOTFIXED {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_NOTFIXED);}
> ;
>
> -MaxKeyword
> - : PARSEOP_MAXTYPE_FIXED {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_FIXED);}
> - | PARSEOP_MAXTYPE_NOTFIXED {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_NOTFIXED);}
> +ObjectTypeKeyword
> + : PARSEOP_OBJECTTYPE_UNK {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);}
> + | PARSEOP_OBJECTTYPE_INT {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_INT);}
> + | PARSEOP_OBJECTTYPE_STR {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_STR);}
> + | PARSEOP_OBJECTTYPE_BUF {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BUF);}
> + | PARSEOP_OBJECTTYPE_PKG {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PKG);}
> + | PARSEOP_OBJECTTYPE_FLD {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_FLD);}
> + | PARSEOP_OBJECTTYPE_DEV {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DEV);}
> + | PARSEOP_OBJECTTYPE_EVT {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_EVT);}
> + | PARSEOP_OBJECTTYPE_MTH {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTH);}
> + | PARSEOP_OBJECTTYPE_MTX {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTX);}
> + | PARSEOP_OBJECTTYPE_OPR {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_OPR);}
> + | PARSEOP_OBJECTTYPE_POW {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_POW);}
> + | PARSEOP_OBJECTTYPE_PRO {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PRO);}
> + | PARSEOP_OBJECTTYPE_THZ {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_THZ);}
> + | PARSEOP_OBJECTTYPE_BFF {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BFF);}
> + | PARSEOP_OBJECTTYPE_DDB {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DDB);}
> ;
>
> -DecodeKeyword
> - : PARSEOP_DECODETYPE_POS {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_POS);}
> - | PARSEOP_DECODETYPE_SUB {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_SUB);}
> +ParityTypeKeyword
> + : PARSEOP_PARITYTYPE_SPACE {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_SPACE);}
> + | PARSEOP_PARITYTYPE_MARK {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_MARK);}
> + | PARSEOP_PARITYTYPE_ODD {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_ODD);}
> + | PARSEOP_PARITYTYPE_EVEN {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_EVEN);}
> + | PARSEOP_PARITYTYPE_NONE {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_NONE);}
> + ;
> +
> +PinConfigByte
> + : PinConfigKeyword {$$ = $1;}
> + | ByteConstExpr {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
> + ;
> +
> +PinConfigKeyword
> + : PARSEOP_PIN_NOPULL {$$ = TrCreateLeafNode (PARSEOP_PIN_NOPULL);}
> + | PARSEOP_PIN_PULLDOWN {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLDOWN);}
> + | PARSEOP_PIN_PULLUP {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLUP);}
> + | PARSEOP_PIN_PULLDEFAULT {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLDEFAULT);}
> ;
>
> RangeTypeKeyword
> @@ -2245,37 +2420,52 @@ RangeTypeKeyword
> | PARSEOP_RANGETYPE_ENTIRE {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ENTIRE);}
> ;
>
> -MemTypeKeyword
> - : PARSEOP_MEMTYPE_CACHEABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_CACHEABLE);}
> - | PARSEOP_MEMTYPE_WRITECOMBINING {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_WRITECOMBINING);}
> - | PARSEOP_MEMTYPE_PREFETCHABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_PREFETCHABLE);}
> - | PARSEOP_MEMTYPE_NONCACHEABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_NONCACHEABLE);}
> - ;
> -
> -OptionalReadWriteKeyword
> - : {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
> - | PARSEOP_READWRITETYPE_BOTH {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
> - | PARSEOP_READWRITETYPE_READONLY {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_READONLY);}
> +RegionSpaceKeyword
> + : PARSEOP_REGIONSPACE_IO {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IO);}
> + | PARSEOP_REGIONSPACE_MEM {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_MEM);}
> + | PARSEOP_REGIONSPACE_PCI {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCI);}
> + | PARSEOP_REGIONSPACE_EC {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_EC);}
> + | PARSEOP_REGIONSPACE_SMBUS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_SMBUS);}
> + | PARSEOP_REGIONSPACE_CMOS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_CMOS);}
> + | PARSEOP_REGIONSPACE_PCIBAR {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCIBAR);}
> + | PARSEOP_REGIONSPACE_IPMI {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IPMI);}
> + | PARSEOP_REGIONSPACE_GPIO {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_GPIO);}
> + | PARSEOP_REGIONSPACE_GSBUS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_GSBUS);}
> + | PARSEOP_REGIONSPACE_FFIXEDHW {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_FFIXEDHW);}
> ;
>
> -InterruptTypeKeyword
> - : PARSEOP_INTTYPE_EDGE {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_EDGE);}
> - | PARSEOP_INTTYPE_LEVEL {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_LEVEL);}
> +ResourceTypeKeyword
> + : PARSEOP_RESOURCETYPE_CONSUMER {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
> + | PARSEOP_RESOURCETYPE_PRODUCER {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_PRODUCER);}
> ;
>
> -InterruptLevel
> - : PARSEOP_INTLEVEL_ACTIVEHIGH {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEHIGH);}
> - | PARSEOP_INTLEVEL_ACTIVELOW {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVELOW);}
> +SerializeRuleKeyword
> + : PARSEOP_SERIALIZERULE_SERIAL {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_SERIAL);}
> + | PARSEOP_SERIALIZERULE_NOTSERIAL {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL);}
> ;
>
> ShareTypeKeyword
> : PARSEOP_SHARETYPE_SHARED {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHARED);}
> | PARSEOP_SHARETYPE_EXCLUSIVE {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVE);}
> + | PARSEOP_SHARETYPE_SHAREDWAKE {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHAREDWAKE);}
> + | PARSEOP_SHARETYPE_EXCLUSIVEWAKE {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVEWAKE);}
> + ;
> +
> +SlaveModeKeyword
> + : PARSEOP_SLAVEMODE_CONTROLLERINIT {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_CONTROLLERINIT);}
> + | PARSEOP_SLAVEMODE_DEVICEINIT {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_DEVICEINIT);}
> ;
>
> -IODecodeKeyword
> - : PARSEOP_IODECODETYPE_16 {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_16);}
> - | PARSEOP_IODECODETYPE_10 {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_10);}
> +StopBitsKeyword
> + : PARSEOP_STOPBITS_TWO {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_TWO);}
> + | PARSEOP_STOPBITS_ONEPLUSHALF {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ONEPLUSHALF);}
> + | PARSEOP_STOPBITS_ONE {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ONE);}
> + | PARSEOP_STOPBITS_ZERO {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ZERO);}
> + ;
> +
> +TranslationKeyword
> + : PARSEOP_TRANSLATIONTYPE_SPARSE {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_SPARSE);}
> + | PARSEOP_TRANSLATIONTYPE_DENSE {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_DENSE);}
> ;
>
> TypeKeyword
> @@ -2283,16 +2473,30 @@ TypeKeyword
> | PARSEOP_TYPE_STATIC {$$ = TrCreateLeafNode (PARSEOP_TYPE_STATIC);}
> ;
>
> -TranslationKeyword
> - : PARSEOP_TRANSLATIONTYPE_SPARSE {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_SPARSE);}
> - | PARSEOP_TRANSLATIONTYPE_DENSE {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_DENSE);}
> +UpdateRuleKeyword
> + : PARSEOP_UPDATERULE_PRESERVE {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_PRESERVE);}
> + | PARSEOP_UPDATERULE_ONES {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ONES);}
> + | PARSEOP_UPDATERULE_ZEROS {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ZEROS);}
> ;
>
> -AddressKeyword
> - : PARSEOP_ADDRESSTYPE_MEMORY {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_MEMORY);}
> - | PARSEOP_ADDRESSTYPE_RESERVED {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_RESERVED);}
> - | PARSEOP_ADDRESSTYPE_NVS {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_NVS);}
> - | PARSEOP_ADDRESSTYPE_ACPI {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_ACPI);}
> +WireModeKeyword
> + : PARSEOP_WIREMODE_FOUR {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_FOUR);}
> + | PARSEOP_WIREMODE_THREE {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_THREE);}
> + ;
> +
> +XferSizeKeyword
> + : PARSEOP_XFERSIZE_8 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_8, 0);}
> + | PARSEOP_XFERSIZE_16 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_16, 1);}
> + | PARSEOP_XFERSIZE_32 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);}
> + | PARSEOP_XFERSIZE_64 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_64, 3);}
> + | PARSEOP_XFERSIZE_128 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_128, 4);}
> + | PARSEOP_XFERSIZE_256 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_256, 5);}
> + ;
> +
> +XferTypeKeyword
> + : PARSEOP_XFERTYPE_8 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8);}
> + | PARSEOP_XFERTYPE_8_16 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8_16);}
> + | PARSEOP_XFERTYPE_16 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_16);}
> ;
>
>
> @@ -2363,6 +2567,16 @@ ConstTerm
> | PARSEOP_REVISION {$$ = TrCreateLeafNode (PARSEOP_REVISION);}
> ;
>
> +ConstExprTerm
> + : PARSEOP_ZERO {$$ = TrCreateValuedLeafNode (PARSEOP_ZERO, 0);}
> + | PARSEOP_ONE {$$ = TrCreateValuedLeafNode (PARSEOP_ONE, 1);}
> + | PARSEOP_ONES {$$ = TrCreateValuedLeafNode (PARSEOP_ONES, ACPI_UINT64_MAX);}
> + | PARSEOP___DATE__ {$$ = TrCreateConstantLeafNode (PARSEOP___DATE__);}
> + | PARSEOP___FILE__ {$$ = TrCreateConstantLeafNode (PARSEOP___FILE__);}
> + | PARSEOP___LINE__ {$$ = TrCreateConstantLeafNode (PARSEOP___LINE__);}
> + | PARSEOP___PATH__ {$$ = TrCreateConstantLeafNode (PARSEOP___PATH__);}
> + ;
> +
> ByteConstExpr
> : Type3Opcode {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
> | Type2IntegerOpcode {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
> @@ -2391,15 +2605,6 @@ QWordConstExpr
> | QWordConst {}
> ;
>
> -ConstExprTerm
> - : PARSEOP_ZERO {$$ = TrCreateValuedLeafNode (PARSEOP_ZERO, 0);}
> - | PARSEOP_ONE {$$ = TrCreateValuedLeafNode (PARSEOP_ONE, 1);}
> - | PARSEOP_ONES {$$ = TrCreateValuedLeafNode (PARSEOP_ONES, ACPI_UINT64_MAX);}
> - | PARSEOP___DATE__ {$$ = TrCreateConstantLeafNode (PARSEOP___DATE__);}
> - | PARSEOP___FILE__ {$$ = TrCreateConstantLeafNode (PARSEOP___FILE__);}
> - | PARSEOP___LINE__ {$$ = TrCreateConstantLeafNode (PARSEOP___LINE__);}
> - ;
> -
> /* OptionalCount must appear before ByteList or an incorrect reduction will result */
>
> OptionalCount
> @@ -2408,7 +2613,6 @@ OptionalCount
> | ',' TermArg {$$ = $2;}
> ;
>
> -
> BufferTerm
> : PARSEOP_BUFFER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_BUFFER);}
> OptionalTermArg
> @@ -2431,6 +2635,15 @@ ByteList
> ByteConstExpr {$$ = TrLinkPeerNode ($1,$3);}
> ;
>
> +DataBufferTerm
> + : PARSEOP_DATABUFFER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DATABUFFER);}
> + OptionalWordConst
> + ')' '{'
> + ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
> + | PARSEOP_DATABUFFER '('
> + error ')' {$$ = AslDoError(); yyclearin;}
> + ;
> +
> DWordList
> : {$$ = NULL;}
> | DWordConstExpr
> @@ -2448,11 +2661,6 @@ PackageTerm
> error ')' {$$ = AslDoError(); yyclearin;}
> ;
>
> -VarPackageLengthTerm
> - : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
> - | TermArg {$$ = $1;}
> - ;
> -
> PackageList
> : {$$ = NULL;}
> | PackageElement
> @@ -2466,6 +2674,15 @@ PackageElement
> | NameString {}
> ;
>
> +VarPackageLengthTerm
> + : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
> + | TermArg {$$ = $1;}
> + ;
> +
> +
> +/******* Macros ***********************************************/
> +
> +
> EISAIDTerm
> : PARSEOP_EISAID '('
> StringData ')' {$$ = TrUpdateNode (PARSEOP_EISAID, $3);}
> @@ -2473,6 +2690,14 @@ EISAIDTerm
> error ')' {$$ = AslDoError(); yyclearin;}
> ;
>
> +UnicodeTerm
> + : PARSEOP_UNICODE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UNICODE);}
> + StringData
> + ')' {$$ = TrLinkChildren ($<n>3,2,0,$4);}
> + | PARSEOP_UNICODE '('
> + error ')' {$$ = AslDoError(); yyclearin;}
> + ;
> +
>
> /******* Resources and Memory ***********************************************/
>
> @@ -2491,14 +2716,6 @@ ResourceTemplateTerm
> TrCreateLeafNode (PARSEOP_ENDTAG));}
> ;
>
> -UnicodeTerm
> - : PARSEOP_UNICODE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UNICODE);}
> - StringData
> - ')' {$$ = TrLinkChildren ($<n>3,2,0,$4);}
> - | PARSEOP_UNICODE '('
> - error ')' {$$ = AslDoError(); yyclearin;}
> - ;
> -
> ResourceMacroList
> : {$$ = NULL;}
> | ResourceMacroList
> @@ -2514,7 +2731,11 @@ ResourceMacroTerm
> | ExtendedIOTerm {}
> | ExtendedMemoryTerm {}
> | ExtendedSpaceTerm {}
> + | FixedDmaTerm {}
> | FixedIOTerm {}
> + | GpioIntTerm {}
> + | GpioIoTerm {}
> + | I2cSerialBusTerm {}
> | InterruptTerm {}
> | IOTerm {}
> | IRQNoFlagsTerm {}
> @@ -2526,8 +2747,10 @@ ResourceMacroTerm
> | QWordMemoryTerm {}
> | QWordSpaceTerm {}
> | RegisterTerm {}
> - | StartDependentFnTerm {}
> + | SpiSerialBusTerm {}
> | StartDependentFnNoPriTerm {}
> + | StartDependentFnTerm {}
> + | UartSerialBusTerm {}
> | VendorLongTerm {}
> | VendorShortTerm {}
> | WordBusNumberTerm {}
> @@ -2684,6 +2907,17 @@ ExtendedSpaceTerm
> error ')' {$$ = AslDoError(); yyclearin;}
> ;
>
> +FixedDmaTerm
> + : PARSEOP_FIXEDDMA '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FIXEDDMA);}
> + WordConstExpr // 04: DMA RequestLines
> + ',' WordConstExpr // 06: DMA Channels
> + OptionalXferSize // 07: DMA TransferSize
> + OptionalNameString // 08: DescriptorName
> + ')' {$$ = TrLinkChildren ($<n>3,4,$4,$6,$7,$8);}
> + | PARSEOP_FIXEDDMA '('
> + error ')' {$$ = AslDoError(); yyclearin;}
> + ;
> +
> FixedIOTerm
> : PARSEOP_FIXEDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FIXEDIO);}
> WordConstExpr
> @@ -2694,6 +2928,58 @@ FixedIOTerm
> error ')' {$$ = AslDoError(); yyclearin;}
> ;
>
> +GpioIntTerm
> + : PARSEOP_GPIO_INT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_GPIO_INT);}
> + InterruptTypeKeyword // 04: InterruptType
> + ',' InterruptLevel // 06: InterruptLevel
> + OptionalShareType // 07: SharedType
> + ',' PinConfigByte // 09: PinConfig
> + OptionalWordConstExpr // 10: DebounceTimeout
> + ',' StringData // 12: ResourceSource
> + OptionalByteConstExpr // 13: ResourceSourceIndex
> + OptionalResourceType // 14: ResourceType
> + OptionalNameString // 15: DescriptorName
> + OptionalBuffer_Last // 16: VendorData
> + ')' '{'
> + DWordConstExpr '}' {$$ = TrLinkChildren ($<n>3,11,$4,$6,$7,$9,$10,$12,$13,$14,$15,$16,$19);}
> + | PARSEOP_GPIO_INT '('
> + error ')' {$$ = AslDoError(); yyclearin;}
> + ;
> +
> +GpioIoTerm
> + : PARSEOP_GPIO_IO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_GPIO_IO);}
> + OptionalShareType_First // 04: SharedType
> + ',' PinConfigByte // 06: PinConfig
> + OptionalWordConstExpr // 07: DebounceTimeout
> + OptionalWordConstExpr // 08: DriveStrength
> + OptionalIoRestriction // 09: IoRestriction
> + ',' StringData // 11: ResourceSource
> + OptionalByteConstExpr // 12: ResourceSourceIndex
> + OptionalResourceType // 13: ResourceType
> + OptionalNameString // 14: DescriptorName
> + OptionalBuffer_Last // 15: VendorData
> + ')' '{'
> + DWordList '}' {$$ = TrLinkChildren ($<n>3,11,$4,$6,$7,$8,$9,$11,$12,$13,$14,$15,$18);}
> + | PARSEOP_GPIO_IO '('
> + error ')' {$$ = AslDoError(); yyclearin;}
> + ;
> +
> +I2cSerialBusTerm
> + : PARSEOP_I2C_SERIALBUS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_I2C_SERIALBUS);}
> + WordConstExpr // 04: SlaveAddress
> + OptionalSlaveMode // 05: SlaveMode
> + ',' DWordConstExpr // 07: ConnectionSpeed
> + OptionalAddressingMode // 08: AddressingMode
> + ',' StringData // 10: ResourceSource
> + OptionalByteConstExpr // 11: ResourceSourceIndex
> + OptionalResourceType // 12: ResourceType
> + OptionalNameString // 13: DescriptorName
> + OptionalBuffer_Last // 14: VendorData
> + ')' {$$ = TrLinkChildren ($<n>3,9,$4,$5,$7,$8,$10,$11,$12,$13,$14);}
> + | PARSEOP_I2C_SERIALBUS '('
> + error ')' {$$ = AslDoError(); yyclearin;}
> + ;
> +
> InterruptTerm
> : PARSEOP_INTERRUPT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INTERRUPT);}
> OptionalResourceType_First
> @@ -2859,6 +3145,34 @@ RegisterTerm
> error ')' {$$ = AslDoError(); yyclearin;}
> ;
>
> +SpiSerialBusTerm
> + : PARSEOP_SPI_SERIALBUS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SPI_SERIALBUS);}
> + WordConstExpr // 04: DeviceSelection
> + OptionalDevicePolarity // 05: DevicePolarity
> + OptionalWireMode // 06: WireMode
> + ',' ByteConstExpr // 08: DataBitLength
> + OptionalSlaveMode // 09: SlaveMode
> + ',' DWordConstExpr // 11: ConnectionSpeed
> + ',' ClockPolarityKeyword // 13: ClockPolarity
> + ',' ClockPhaseKeyword // 15: ClockPhase
> + ',' StringData // 17: ResourceSource
> + OptionalByteConstExpr // 18: ResourceSourceIndex
> + OptionalResourceType // 19: ResourceType
> + OptionalNameString // 20: DescriptorName
> + OptionalBuffer_Last // 21: VendorData
> + ')' {$$ = TrLinkChildren ($<n>3,13,$4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,$21);}
> + | PARSEOP_SPI_SERIALBUS '('
> + error ')' {$$ = AslDoError(); yyclearin;}
> + ;
> +
> +StartDependentFnNoPriTerm
> + : PARSEOP_STARTDEPENDENTFN_NOPRI '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN_NOPRI);}
> + ')' '{'
> + ResourceMacroList '}' {$$ = TrLinkChildren ($<n>3,1,$6);}
> + | PARSEOP_STARTDEPENDENTFN_NOPRI '('
> + error ')' {$$ = AslDoError(); yyclearin;}
> + ;
> +
> StartDependentFnTerm
> : PARSEOP_STARTDEPENDENTFN '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN);}
> ByteConstExpr
> @@ -2869,11 +3183,24 @@ StartDependentFnTerm
> error ')' {$$ = AslDoError(); yyclearin;}
> ;
>
> -StartDependentFnNoPriTerm
> - : PARSEOP_STARTDEPENDENTFN_NOPRI '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN_NOPRI);}
> - ')' '{'
> - ResourceMacroList '}' {$$ = TrLinkChildren ($<n>3,1,$6);}
> - | PARSEOP_STARTDEPENDENTFN_NOPRI '('
> +UartSerialBusTerm
> + : PARSEOP_UART_SERIALBUS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UART_SERIALBUS);}
> + DWordConstExpr // 04: ConnectionSpeed
> + OptionalBitsPerByte // 05: BitsPerByte
> + OptionalStopBits // 06: StopBits
> + ',' ByteConstExpr // 08: LinesInUse
> + OptionalEndian // 09: Endianess
> + OptionalParityType // 10: Parity
> + OptionalFlowControl // 11: FlowControl
> + ',' WordConstExpr // 13: Rx BufferSize
> + ',' WordConstExpr // 15: Tx BufferSize
> + ',' StringData // 17: ResourceSource
> + OptionalByteConstExpr // 18: ResourceSourceIndex
> + OptionalResourceType // 19: ResourceType
> + OptionalNameString // 20: DescriptorName
> + OptionalBuffer_Last // 21: VendorData
> + ')' {$$ = TrLinkChildren ($<n>3,14,$4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,$21);}
> + | PARSEOP_UART_SERIALBUS '('
> error ')' {$$ = AslDoError(); yyclearin;}
> ;
>
> @@ -2982,6 +3309,16 @@ AmlPackageLengthTerm
> : Integer {$$ = TrUpdateNode (PARSEOP_PACKAGE_LENGTH,(ACPI_PARSE_OBJECT *) $1);}
> ;
>
> +NameStringItem
> + : ',' NameString {$$ = $2;}
> + | ',' error {$$ = AslDoError (); yyclearin;}
> + ;
> +
> +TermArgItem
> + : ',' TermArg {$$ = $2;}
> + | ',' error {$$ = AslDoError (); yyclearin;}
> + ;
> +
> OptionalBusMasterKeyword
> : ',' {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);}
> | ',' PARSEOP_BUSMASTERTYPE_MASTER {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);}
> @@ -3001,12 +3338,28 @@ OptionalAccessSize
> | ',' ByteConstExpr {$$ = $2;}
> ;
>
> +OptionalAddressingMode
> + : ',' {$$ = NULL;}
> + | ',' AddressingModeKeyword {$$ = $2;}
> + ;
> +
> OptionalAddressRange
> : {$$ = NULL;}
> | ',' {$$ = NULL;}
> | ',' AddressKeyword {$$ = $2;}
> ;
>
> +OptionalBitsPerByte
> + : ',' {$$ = NULL;}
> + | ',' BitsPerByteKeyword {$$ = $2;}
> + ;
> +
> +OptionalBuffer_Last
> + : {$$ = NULL;}
> + | ',' {$$ = NULL;}
> + | ',' DataBufferTerm {$$ = $2;}
> + ;
> +
> OptionalByteConstExpr
> : {$$ = NULL;}
> | ',' {$$ = NULL;}
> @@ -3018,12 +3371,32 @@ OptionalDecodeType
> | ',' DecodeKeyword {$$ = $2;}
> ;
>
> +OptionalDevicePolarity
> + : ',' {$$ = NULL;}
> + | ',' DevicePolarityKeyword {$$ = $2;}
> + ;
> +
> OptionalDWordConstExpr
> : {$$ = NULL;}
> | ',' {$$ = NULL;}
> | ',' DWordConstExpr {$$ = $2;}
> ;
>
> +OptionalEndian
> + : ',' {$$ = NULL;}
> + | ',' EndianKeyword {$$ = $2;}
> + ;
> +
> +OptionalFlowControl
> + : ',' {$$ = NULL;}
> + | ',' FlowControlKeyword {$$ = $2;}
> + ;
> +
> +OptionalIoRestriction
> + : ',' {$$ = NULL;}
> + | ',' IoRestrictionKeyword {$$ = $2;}
> + ;
> +
> OptionalListString
> : {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));} /* Placeholder is a NULL string */
> | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));} /* Placeholder is a NULL string */
> @@ -3067,6 +3440,11 @@ OptionalObjectTypeKeyword
> | ',' ObjectTypeKeyword {$$ = $2;}
> ;
>
> +OptionalParityType
> + : ',' {$$ = NULL;}
> + | ',' ParityTypeKeyword {$$ = $2;}
> + ;
> +
> OptionalQWordConstExpr
> : {$$ = NULL;}
> | ',' {$$ = NULL;}
> @@ -3078,6 +3456,12 @@ OptionalRangeType
> | ',' RangeTypeKeyword {$$ = $2;}
> ;
>
> +OptionalReadWriteKeyword
> + : {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
> + | PARSEOP_READWRITETYPE_BOTH {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
> + | PARSEOP_READWRITETYPE_READONLY {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_READONLY);}
> + ;
> +
> OptionalReference
> : {$$ = TrCreateLeafNode (PARSEOP_ZERO);} /* Placeholder is a ZeroOp object */
> | ',' {$$ = TrCreateLeafNode (PARSEOP_ZERO);} /* Placeholder is a ZeroOp object */
> @@ -3085,27 +3469,48 @@ OptionalReference
> ;
>
> OptionalResourceType_First
> - : {$$ = NULL;}
> + : {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
> | ResourceTypeKeyword {$$ = $1;}
> ;
>
> OptionalResourceType
> - : ',' {$$ = NULL;}
> + : {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
> + | ',' {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
> | ',' ResourceTypeKeyword {$$ = $2;}
> ;
>
> +OptionalReturnArg
> + : {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN);} /* Placeholder is a ZeroOp object */
> + | TermArg {$$ = $1;}
> + ;
> +
> OptionalSerializeRuleKeyword
> : {$$ = NULL;}
> | ',' {$$ = NULL;}
> | ',' SerializeRuleKeyword {$$ = $2;}
> ;
>
> +OptionalSlaveMode
> + : ',' {$$ = NULL;}
> + | ',' SlaveModeKeyword {$$ = $2;}
> + ;
> +
> OptionalShareType
> : {$$ = NULL;}
> | ',' {$$ = NULL;}
> | ',' ShareTypeKeyword {$$ = $2;}
> ;
>
> +OptionalShareType_First
> + : {$$ = NULL;}
> + | ShareTypeKeyword {$$ = $1;}
> + ;
> +
> +OptionalStopBits
> + : ',' {$$ = NULL;}
> + | ',' StopBitsKeyword {$$ = $2;}
> + ;
> +
> OptionalStringData
> : {$$ = NULL;}
> | ',' {$$ = NULL;}
> @@ -3117,11 +3522,6 @@ OptionalTermArg
> | TermArg {$$ = $1;}
> ;
>
> -OptionalReturnArg
> - : {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN);} /* Placeholder is a ZeroOp object */
> - | TermArg {$$ = $1;}
> - ;
> -
> OptionalType
> : {$$ = NULL;}
> | ',' {$$ = NULL;}
> @@ -3140,23 +3540,33 @@ OptionalTranslationType_Last
> | ',' TranslationKeyword {$$ = $2;}
> ;
>
> -
> -TermArgItem
> - : ',' TermArg {$$ = $2;}
> - | ',' error {$$ = AslDoError (); yyclearin;}
> +OptionalWireMode
> + : ',' {$$ = NULL;}
> + | ',' WireModeKeyword {$$ = $2;}
> ;
>
> -NameStringItem
> - : ',' NameString {$$ = $2;}
> - | ',' error {$$ = AslDoError (); yyclearin;}
> +OptionalWordConst
> + : {$$ = NULL;}
> + | WordConst {$$ = $1;}
> ;
>
> -%%
> +OptionalWordConstExpr
> + : ',' {$$ = NULL;}
> + | ',' WordConstExpr {$$ = $2;}
> + ;
>
> +OptionalXferSize
> + : {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);}
> + | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);}
> + | ',' XferSizeKeyword {$$ = $2;}
> + ;
>
> -/*
> +%%
> +/******************************************************************************
> + *
> * Local support functions
> - */
> + *
> + *****************************************************************************/
>
> int
> AslCompilerwrap(void)
> diff --git a/src/acpica/source/compiler/asldefine.h b/src/acpica/source/compiler/asldefine.h
> index b09beab..146ab6d 100644
> --- a/src/acpica/source/compiler/asldefine.h
> +++ b/src/acpica/source/compiler/asldefine.h
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -128,7 +128,7 @@
> #define ASL_INVOCATION_NAME "iasl"
> #define ASL_CREATOR_ID "INTL"
>
> -#define ASL_COMPLIANCE "Supports ACPI Specification Revision 4.0a"
> +#define ASL_COMPLIANCE "Supports ACPI Specification Revision 5.0"
>
>
> /* Configuration constants */
> @@ -225,5 +225,25 @@
> #define POSITIVE 0
>
>
> +/* Helper macros for resource tag creation */
> +
> +#define RsCreateMultiBitField \
> + RsCreateResourceField
> +
> +#define RsCreateBitField(Op, Name, ByteOffset, BitOffset) \
> + RsCreateResourceField (Op, Name, ByteOffset, BitOffset, 1)
> +
> +#define RsCreateByteField(Op, Name, ByteOffset) \
> + RsCreateResourceField (Op, Name, ByteOffset, 0, 8);
> +
> +#define RsCreateWordField(Op, Name, ByteOffset) \
> + RsCreateResourceField (Op, Name, ByteOffset, 0, 16);
> +
> +#define RsCreateDwordField(Op, Name, ByteOffset) \
> + RsCreateResourceField (Op, Name, ByteOffset, 0, 32);
> +
> +#define RsCreateQwordField(Op, Name, ByteOffset) \
> + RsCreateResourceField (Op, Name, ByteOffset, 0, 64);
> +
> #endif /* ASLDEFINE.H */
>
> diff --git a/src/acpica/source/compiler/aslerror.c b/src/acpica/source/compiler/aslerror.c
> index 82dc85a..c93a1a2 100644
> --- a/src/acpica/source/compiler/aslerror.c
> +++ b/src/acpica/source/compiler/aslerror.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -127,6 +127,18 @@ AeAddToErrorLog (
> ASL_ERROR_MSG *Enode);
>
>
> +/*******************************************************************************
> + *
> + * FUNCTION: AeClearErrorLog
> + *
> + * PARAMETERS: None
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Empty the error list
> + *
> + ******************************************************************************/
> +
> void
> AeClearErrorLog (
> void)
> @@ -240,7 +252,7 @@ AePrintException (
> UINT32 SourceColumn;
> UINT32 ErrorColumn;
> FILE *OutputFile;
> - FILE *SourceFile;
> + FILE *SourceFile = NULL;
> long FileSize;
> BOOLEAN PrematureEOF = FALSE;
>
> @@ -283,24 +295,28 @@ AePrintException (
>
> OutputFile = Gbl_Files[FileId].Handle;
>
> - /* Use the merged header/source file if present, otherwise use input file */
>
> - SourceFile = Gbl_Files[ASL_FILE_SOURCE_OUTPUT].Handle;
> - if (!SourceFile)
> + if (!Enode->SourceLine)
> {
> - SourceFile = Gbl_Files[ASL_FILE_INPUT].Handle;
> - }
> + /* Use the merged header/source file if present, otherwise use input file */
>
> - if (SourceFile)
> - {
> - /* Determine if the error occurred at source file EOF */
> -
> - fseek (SourceFile, 0, SEEK_END);
> - FileSize = ftell (SourceFile);
> + SourceFile = Gbl_Files[ASL_FILE_SOURCE_OUTPUT].Handle;
> + if (!SourceFile)
> + {
> + SourceFile = Gbl_Files[ASL_FILE_INPUT].Handle;
> + }
>
> - if ((long) Enode->LogicalByteOffset >= FileSize)
> + if (SourceFile)
> {
> - PrematureEOF = TRUE;
> + /* Determine if the error occurred at source file EOF */
> +
> + fseek (SourceFile, 0, SEEK_END);
> + FileSize = ftell (SourceFile);
> +
> + if ((long) Enode->LogicalByteOffset >= FileSize)
> + {
> + PrematureEOF = TRUE;
> + }
> }
> }
>
> @@ -315,50 +331,58 @@ AePrintException (
> {
> if (Gbl_VerboseErrors)
> {
> - fprintf (OutputFile, "%6s", Enode->Filename);
> + fprintf (OutputFile, "%-8s", Enode->Filename);
>
> if (Enode->LineNumber)
> {
> - fprintf (OutputFile, " %6u: ", Enode->LineNumber);
> -
> - /*
> - * If not at EOF, get the corresponding source code line and
> - * display it. Don't attempt this if we have a premature EOF
> - * condition.
> - */
> - if (!PrematureEOF)
> + if (Enode->SourceLine)
> + {
> + fprintf (OutputFile, " %6u: %s",
> + Enode->LineNumber, Enode->SourceLine);
> + }
> + else
> {
> + fprintf (OutputFile, " %6u: ", Enode->LineNumber);
> +
> /*
> - * Seek to the offset in the combined source file, read
> - * the source line, and write it to the output.
> + * If not at EOF, get the corresponding source code line and
> + * display it. Don't attempt this if we have a premature EOF
> + * condition.
> */
> - Actual = fseek (SourceFile, (long) Enode->LogicalByteOffset,
> - (int) SEEK_SET);
> - if (Actual)
> - {
> - fprintf (OutputFile,
> - "[*** iASL: Seek error on source code temp file %s ***]",
> - Gbl_Files[ASL_FILE_SOURCE_OUTPUT].Filename);
> - }
> - else
> + if (!PrematureEOF)
> {
> - RActual = fread (&SourceByte, 1, 1, SourceFile);
> - if (!RActual)
> + /*
> + * Seek to the offset in the combined source file, read
> + * the source line, and write it to the output.
> + */
> + Actual = fseek (SourceFile, (long) Enode->LogicalByteOffset,
> + (int) SEEK_SET);
> + if (Actual)
> {
> fprintf (OutputFile,
> - "[*** iASL: Read error on source code temp file %s ***]",
> + "[*** iASL: Seek error on source code temp file %s ***]",
> Gbl_Files[ASL_FILE_SOURCE_OUTPUT].Filename);
> }
> -
> - else while (RActual && SourceByte && (SourceByte != '\n'))
> + else
> {
> - fwrite (&SourceByte, 1, 1, OutputFile);
> RActual = fread (&SourceByte, 1, 1, SourceFile);
> + if (!RActual)
> + {
> + fprintf (OutputFile,
> + "[*** iASL: Read error on source code temp file %s ***]",
> + Gbl_Files[ASL_FILE_SOURCE_OUTPUT].Filename);
> + }
> +
> + else while (RActual && SourceByte && (SourceByte != '\n'))
> + {
> + fwrite (&SourceByte, 1, 1, OutputFile);
> + RActual = fread (&SourceByte, 1, 1, SourceFile);
> + }
> }
> }
> - }
>
> - fprintf (OutputFile, "\n");
> + fprintf (OutputFile, "\n");
> + }
> }
> }
> else
> @@ -367,7 +391,8 @@ AePrintException (
>
> if (Enode->LineNumber)
> {
> - fprintf (OutputFile, "(%u) : ", Enode->LineNumber);
> + fprintf (OutputFile, "(%u) i:%6u : ",
> + Enode->LineNumber, Enode->LineNumber);
> }
> }
> }
> @@ -391,10 +416,23 @@ AePrintException (
>
> if (Enode->LineNumber)
> {
> + /* Main message: try to use string from AslMessages first */
> +
> + if (!MainMessage)
> + {
> + MainMessage = "";
> + }
> +
> MsgLength = strlen (MainMessage);
> if (MsgLength == 0)
> {
> + /* Use the secondary/extra message as main message */
> +
> MainMessage = Enode->Message;
> + if (!MainMessage)
> + {
> + MainMessage = "";
> + }
>
> MsgLength = strlen (MainMessage);
> ExtraMessage = NULL;
> @@ -480,6 +518,91 @@ AePrintErrorLog (
>
> /*******************************************************************************
> *
> + * FUNCTION: AslCommonError2
> + *
> + * PARAMETERS: Level - Seriousness (Warning/error, etc.)
> + * MessageId - Index into global message buffer
> + * LineNumber - Actual file line number
> + * Column - Column in current line
> + * SourceLine - Actual source code line
> + * Filename - source filename
> + * ExtraMessage - additional error message
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Create a new error node and add it to the error log
> + *
> + ******************************************************************************/
> +
> +void
> +AslCommonError2 (
> + UINT8 Level,
> + UINT8 MessageId,
> + UINT32 LineNumber,
> + UINT32 Column,
> + char *SourceLine,
> + char *Filename,
> + char *ExtraMessage)
> +{
> + char *MessageBuffer = NULL;
> + char *LineBuffer;
> + ASL_ERROR_MSG *Enode;
> +
> +
> + Enode = UtLocalCalloc (sizeof (ASL_ERROR_MSG));
> +
> + if (ExtraMessage)
> + {
> + /* Allocate a buffer for the message and a new error node */
> +
> + MessageBuffer = UtLocalCalloc (strlen (ExtraMessage) + 1);
> +
> + /* Keep a copy of the extra message */
> +
> + ACPI_STRCPY (MessageBuffer, ExtraMessage);
> + }
> +
> + LineBuffer = UtLocalCalloc (strlen (SourceLine) + 1);
> + ACPI_STRCPY (LineBuffer, SourceLine);
> +
> + /* Initialize the error node */
> +
> + if (Filename)
> + {
> + Enode->Filename = Filename;
> + Enode->FilenameLength = strlen (Filename);
> + if (Enode->FilenameLength < 6)
> + {
> + Enode->FilenameLength = 6;
> + }
> + }
> +
> + Enode->MessageId = MessageId;
> + Enode->Level = Level;
> + Enode->LineNumber = LineNumber;
> + Enode->LogicalLineNumber = LineNumber;
> + Enode->LogicalByteOffset = 0;
> + Enode->Column = Column;
> + Enode->Message = MessageBuffer;
> + Enode->SourceLine = LineBuffer;
> +
> + /* Add the new node to the error node list */
> +
> + AeAddToErrorLog (Enode);
> +
> + if (Gbl_DebugFlag)
> + {
> + /* stderr is a file, send error to it immediately */
> +
> + AePrintException (ASL_FILE_STDERR, Enode, NULL);
> + }
> +
> + Gbl_ExceptionCount[Level]++;
> +}
> +
> +
> +/*******************************************************************************
> + *
> * FUNCTION: AslCommonError
> *
> * PARAMETERS: Level - Seriousness (Warning/error, etc.)
> @@ -546,6 +669,7 @@ AslCommonError (
> Enode->LogicalByteOffset = LogicalByteOffset;
> Enode->Column = Column;
> Enode->Message = MessageBuffer;
> + Enode->SourceLine = NULL;
>
> /* Add the new node to the error node list */
>
> @@ -612,7 +736,6 @@ AslError (
> break;
> }
>
> -
> if (Op)
> {
> AslCommonError (Level, MessageId, Op->Asl.LineNumber,
> @@ -702,5 +825,3 @@ AslCompilererror (
>
> return 0;
> }
> -
> -
> diff --git a/src/acpica/source/compiler/aslfiles.c b/src/acpica/source/compiler/aslfiles.c
> index 8a1fcd0..ef10668 100644
> --- a/src/acpica/source/compiler/aslfiles.c
> +++ b/src/acpica/source/compiler/aslfiles.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -122,7 +122,7 @@
>
> /* Local prototypes */
>
> -static FILE *
> +FILE *
> FlOpenIncludeWithPrefix (
> char *PrefixDir,
> char *Filename);
> @@ -153,12 +153,12 @@ AslAbort (
> void)
> {
>
> - AePrintErrorLog (ASL_FILE_STDOUT);
> + AePrintErrorLog (ASL_FILE_STDERR);
> if (Gbl_DebugFlag)
> {
> - /* Print error summary to the debug file */
> + /* Print error summary to stdout also */
>
> - AePrintErrorLog (ASL_FILE_STDERR);
> + AePrintErrorLog (ASL_FILE_STDOUT);
> }
>
> exit (1);
> @@ -246,14 +246,18 @@ FlGetFileSize (
> {
> FILE *fp;
> UINT32 FileSize;
> + long Offset;
>
>
> fp = Gbl_Files[FileId].Handle;
> + Offset = ftell (fp);
>
> fseek (fp, 0, SEEK_END);
> FileSize = (UINT32) ftell (fp);
> - fseek (fp, 0, SEEK_SET);
>
> + /* Restore file pointer */
> +
> + fseek (fp, Offset, SEEK_SET);
> return (FileSize);
> }
>
> @@ -431,14 +435,13 @@ FlCloseFile (
> }
>
> Error = fclose (Gbl_Files[FileId].Handle);
> - Gbl_Files[FileId].Handle = NULL;
> -
> if (Error)
> {
> FlFileError (FileId, ASL_MSG_CLOSE);
> AslAbort ();
> }
>
> + Gbl_Files[FileId].Handle = NULL;
> return;
> }
>
> @@ -457,11 +460,38 @@ FlCloseFile (
>
> void
> FlSetLineNumber (
> - ACPI_PARSE_OBJECT *Op)
> + UINT32 LineNumber)
> {
>
> - Gbl_CurrentLineNumber = (UINT32) Op->Asl.Value.Integer;
> - Gbl_LogicalLineNumber = (UINT32) Op->Asl.Value.Integer;
> + DbgPrint (ASL_PARSE_OUTPUT, "\n#line: New line number %u (old %u)\n",
> + LineNumber, Gbl_LogicalLineNumber);
> +
> + Gbl_CurrentLineNumber = LineNumber;
> + Gbl_LogicalLineNumber = LineNumber;
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: FlSetFilename
> + *
> + * PARAMETERS: Op - Parse node for the LINE asl statement
> + *
> + * RETURN: None.
> + *
> + * DESCRIPTION: Set the current filename
> + *
> + ******************************************************************************/
> +
> +void
> +FlSetFilename (
> + char *Filename)
> +{
> +
> + DbgPrint (ASL_PARSE_OUTPUT, "\n#line: New filename %s (old %s)\n",
> + Filename, Gbl_Files[ASL_FILE_INPUT].Filename);
> +
> + Gbl_Files[ASL_FILE_INPUT].Filename = Filename;
> }
>
>
> @@ -546,7 +576,7 @@ FlAddIncludeDirectory (
> *
> ******************************************************************************/
>
> -static FILE *
> +FILE *
> FlOpenIncludeWithPrefix (
> char *PrefixDir,
> char *Filename)
> @@ -617,7 +647,7 @@ FlOpenIncludeFile (
> * Flush out the "include ()" statement on this line, start
> * the actual include file on the next line
> */
> - ResetCurrentLineBuffer ();
> + AslResetCurrentLineBuffer ();
> FlPrintFile (ASL_FILE_SOURCE_OUTPUT, "\n");
> Gbl_CurrentLineOffset++;
>
> @@ -808,6 +838,13 @@ FlOpenMiscOutputFiles (
> Gbl_Files[ASL_FILE_DEBUG_OUTPUT].Handle =
> freopen (Filename, "w+t", stderr);
>
> + if (!Gbl_Files[ASL_FILE_DEBUG_OUTPUT].Handle)
> + {
> + AslCommonError (ASL_ERROR, ASL_MSG_DEBUG_FILENAME,
> + 0, 0, 0, 0, NULL, NULL);
> + return (AE_ERROR);
> + }
> +
> AslCompilerSignon (ASL_FILE_DEBUG_OUTPUT);
> AslCompilerFileHeader (ASL_FILE_DEBUG_OUTPUT);
> }
> @@ -832,12 +869,29 @@ FlOpenMiscOutputFiles (
> AslCompilerFileHeader (ASL_FILE_LISTING_OUTPUT);
> }
>
> + /* Create the preprocessor output file if preprocessor enabled */
> +
> + if (Gbl_PreprocessFlag)
> + {
> + Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_PREPROCESSOR);
> + if (!Filename)
> + {
> + AslCommonError (ASL_ERROR, ASL_MSG_PREPROCESSOR_FILENAME,
> + 0, 0, 0, 0, NULL, NULL);
> + return (AE_ERROR);
> + }
> +
> + FlOpenFile (ASL_FILE_PREPROCESSOR, Filename, "w+b");
> + }
> +
> + /* All done for data table compiler */
> +
> if (Gbl_FileType == ASL_INPUT_TYPE_ASCII_DATA)
> {
> return (AE_OK);
> }
>
> - /* Create/Open a combined source output file */
> + /* Create/Open a combined source output file */
>
> Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_SOURCE);
> if (!Filename)
> @@ -854,6 +908,10 @@ FlOpenMiscOutputFiles (
> */
> FlOpenFile (ASL_FILE_SOURCE_OUTPUT, Filename, "w+b");
>
> +/*
> +// TBD: TEMP
> +// AslCompilerin = Gbl_Files[ASL_FILE_SOURCE_OUTPUT].Handle;
> +*/
> /* Create/Open a assembly code source output file if asked */
>
> if (Gbl_AsmOutputFlag)
> diff --git a/src/acpica/source/compiler/aslfold.c b/src/acpica/source/compiler/aslfold.c
> index d31c173..dffcc57 100644
> --- a/src/acpica/source/compiler/aslfold.c
> +++ b/src/acpica/source/compiler/aslfold.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/compiler/aslglobal.h b/src/acpica/source/compiler/aslglobal.h
> index f36e46a..5207f3b 100644
> --- a/src/acpica/source/compiler/aslglobal.h
> +++ b/src/acpica/source/compiler/aslglobal.h
> @@ -10,7 +10,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -142,10 +142,11 @@ extern int yydebug;
> extern FILE *AslCompilerin;
> extern int AslCompilerdebug;
> extern int DtParserdebug;
> +extern int PrParserdebug;
> extern const ASL_MAPPING_ENTRY AslKeywordMapping[];
> extern char *AslCompilertext;
>
> -#define ASL_LINE_BUFFER_SIZE 1024
> +#define ASL_LINE_BUFFER_SIZE (4096 * 4) /* 16K */
> #define ASL_MSG_BUFFER_SIZE 4096
> #define HEX_TABLE_LINE_SIZE 8
> #define HEX_LISTING_LINE_SIZE 8
> @@ -155,27 +156,29 @@ extern char *AslCompilertext;
>
> ASL_EXTERN char Gbl_CurrentLineBuffer[ASL_LINE_BUFFER_SIZE];
> ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_CurrentColumn, 0);
> +ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_PreviousLineNumber, 0);
> ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_CurrentLineNumber, 1);
> ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_LogicalLineNumber, 1);
> ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_CurrentLineOffset, 0);
> ASL_EXTERN char ASL_INIT_GLOBAL (*Gbl_LineBufPtr, Gbl_CurrentLineBuffer);
>
> -
> /* Exception reporting */
>
> ASL_EXTERN ASL_ERROR_MSG ASL_INIT_GLOBAL (*Gbl_ErrorLog,NULL);
> ASL_EXTERN ASL_ERROR_MSG ASL_INIT_GLOBAL (*Gbl_NextError,NULL);
>
> -
> /* Option flags */
>
> ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_DoCompile, TRUE);
> ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_DoSignon, TRUE);
> +ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_PreprocessOnly, FALSE);
> +ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_PreprocessFlag, TRUE);
> ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_DisassembleAll, FALSE);
>
> ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_Acpi2, FALSE);
> ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_UseDefaultAmlFilename, TRUE);
> ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_NsOutputFlag, FALSE);
> +ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_PreprocessorOutputFlag, FALSE);
> ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_DebugFlag, FALSE);
> ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_AsmOutputFlag, FALSE);
> ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_C_OutputFlag, FALSE);
> @@ -189,6 +192,7 @@ ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_CompileTimesFlag, FALSE
> ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_FoldConstants, TRUE);
> ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_VerboseErrors, TRUE);
> ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_NoErrors, FALSE);
> +ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_WarningsAsErrors, FALSE);
> ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_NoResourceChecking, FALSE);
> ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_DisasmFlag, FALSE);
> ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_GetAllTables, FALSE);
> @@ -200,6 +204,7 @@ ASL_EXTERN UINT8 ASL_INIT_GLOBAL (Gbl_WarningLevel, ASL_WARNI
> ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_UseOriginalCompilerId, FALSE);
> ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_VerboseTemplates, FALSE);
> ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_DoTemplates, FALSE);
> +ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_CompileGeneric, FALSE);
>
>
> #define HEX_OUTPUT_NONE 0
> @@ -274,7 +279,7 @@ extern char AslHexLookup[];
>
> /* Event timing */
>
> -#define ASL_NUM_EVENTS 19
> +#define ASL_NUM_EVENTS 20
> ASL_EXTERN ASL_EVENT_INFO AslGbl_Events[ASL_NUM_EVENTS];
> ASL_EXTERN UINT8 AslGbl_NextEvent;
> ASL_EXTERN UINT8 AslGbl_NamespaceEvent;
> diff --git a/src/acpica/source/compiler/asllength.c b/src/acpica/source/compiler/asllength.c
> index c330626..7b13669 100644
> --- a/src/acpica/source/compiler/asllength.c
> +++ b/src/acpica/source/compiler/asllength.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/compiler/asllisting.c b/src/acpica/source/compiler/asllisting.c
> index f46e2cd..7cb00d1 100644
> --- a/src/acpica/source/compiler/asllisting.c
> +++ b/src/acpica/source/compiler/asllisting.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -922,9 +922,9 @@ LsFinishSourceListing (
>
> FlPrintFile (FileId, "\n\nSummary of errors and warnings\n\n");
> AePrintErrorLog (FileId);
> - FlPrintFile (FileId, "\n\n");
> + FlPrintFile (FileId, "\n");
> UtDisplaySummary (FileId);
> - FlPrintFile (FileId, "\n\n");
> + FlPrintFile (FileId, "\n");
> }
> }
>
> @@ -1381,6 +1381,7 @@ LsDoHexOutputC (
> /* Get AML size, seek back to start */
>
> AmlFileSize = FlGetFileSize (ASL_FILE_AML_OUTPUT);
> + FlSeekFile (ASL_FILE_AML_OUTPUT, 0);
>
> FlPrintFile (ASL_FILE_HEX_OUTPUT, " * C source code output\n");
> FlPrintFile (ASL_FILE_HEX_OUTPUT, " * AML code block contains 0x%X bytes\n *\n */\n",
> @@ -1437,7 +1438,6 @@ LsDoHexOutputC (
> }
>
> FlPrintFile (ASL_FILE_HEX_OUTPUT, "};\n");
> - FlCloseFile (ASL_FILE_HEX_OUTPUT);
> }
>
>
> @@ -1469,6 +1469,7 @@ LsDoHexOutputAsl (
> /* Get AML size, seek back to start */
>
> AmlFileSize = FlGetFileSize (ASL_FILE_AML_OUTPUT);
> + FlSeekFile (ASL_FILE_AML_OUTPUT, 0);
>
> FlPrintFile (ASL_FILE_HEX_OUTPUT, " * ASL source code output\n");
> FlPrintFile (ASL_FILE_HEX_OUTPUT, " * AML code block contains 0x%X bytes\n *\n */\n",
> @@ -1525,7 +1526,6 @@ LsDoHexOutputAsl (
> }
>
> FlPrintFile (ASL_FILE_HEX_OUTPUT, " })\n");
> - FlCloseFile (ASL_FILE_HEX_OUTPUT);
> }
>
>
> @@ -1557,6 +1557,7 @@ LsDoHexOutputAsm (
> /* Get AML size, seek back to start */
>
> AmlFileSize = FlGetFileSize (ASL_FILE_AML_OUTPUT);
> + FlSeekFile (ASL_FILE_AML_OUTPUT, 0);
>
> FlPrintFile (ASL_FILE_HEX_OUTPUT, "; Assembly code source output\n");
> FlPrintFile (ASL_FILE_HEX_OUTPUT, "; AML code block contains 0x%X bytes\n;\n",
> @@ -1608,7 +1609,6 @@ LsDoHexOutputAsm (
> }
>
> FlPrintFile (ASL_FILE_HEX_OUTPUT, "\n");
> - FlCloseFile (ASL_FILE_HEX_OUTPUT);
> }
>
>
> diff --git a/src/acpica/source/compiler/aslload.c b/src/acpica/source/compiler/aslload.c
> index 4a8eefd..8bac44a 100644
> --- a/src/acpica/source/compiler/aslload.c
> +++ b/src/acpica/source/compiler/aslload.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -261,7 +261,7 @@ LdLoadFieldElements (
> {
> case AML_INT_RESERVEDFIELD_OP:
> case AML_INT_ACCESSFIELD_OP:
> -
> + case AML_INT_CONNECTION_OP:
> break;
>
> default:
> @@ -296,8 +296,10 @@ LdLoadFieldElements (
> }
> break;
> }
> +
> Child = Child->Asl.Next;
> }
> +
> return (AE_OK);
> }
>
> @@ -362,7 +364,6 @@ LdLoadResourceElements (
> InitializerOp = ASL_GET_CHILD_NODE (Op);
> while (InitializerOp)
> {
> -
> if (InitializerOp->Asl.ExternalName)
> {
> Status = AcpiNsLookup (WalkState->ScopeInfo,
> @@ -377,20 +378,15 @@ LdLoadResourceElements (
> }
>
> /*
> - * Store the field offset in the namespace node so it
> - * can be used when the field is referenced
> + * Store the field offset and length in the namespace node
> + * so it can be used when the field is referenced
> */
> - Node->Value = (UINT32) InitializerOp->Asl.Value.Integer;
> + Node->Value = InitializerOp->Asl.Value.Tag.BitOffset;
> + Node->Length = InitializerOp->Asl.Value.Tag.BitLength;
> InitializerOp->Asl.Node = Node;
> Node->Op = InitializerOp;
> -
> - /* Pass thru the field type (Bitfield or Bytefield) */
> -
> - if (InitializerOp->Asl.CompileFlags & NODE_IS_BIT_OFFSET)
> - {
> - Node->Flags |= ANOBJ_IS_BIT_OFFSET;
> - }
> }
> +
> InitializerOp = ASL_GET_PEER_NODE (InitializerOp);
> }
>
> diff --git a/src/acpica/source/compiler/asllookup.c b/src/acpica/source/compiler/asllookup.c
> index 0f62b94..0d92c91 100644
> --- a/src/acpica/source/compiler/asllookup.c
> +++ b/src/acpica/source/compiler/asllookup.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -894,7 +894,10 @@ LkNamespaceLocateBegin (
> ACPI_PARSE_OBJECT *OwningOp;
> ACPI_PARSE_OBJECT *SpaceIdOp;
> UINT32 MinimumLength;
> - UINT32 Temp;
> + UINT32 Offset;
> + UINT32 FieldBitLength;
> + UINT32 TagBitLength;
> + UINT8 Message = 0;
> const ACPI_OPCODE_INFO *OpInfo;
> UINT32 Flags;
>
> @@ -1098,74 +1101,106 @@ LkNamespaceLocateBegin (
> /* 2) Check for a reference to a resource descriptor */
>
> if ((Node->Type == ACPI_TYPE_LOCAL_RESOURCE_FIELD) ||
> - (Node->Type == ACPI_TYPE_LOCAL_RESOURCE))
> + (Node->Type == ACPI_TYPE_LOCAL_RESOURCE))
> {
> /*
> - * This was a reference to a field within a resource descriptor. Extract
> - * the associated field offset (either a bit or byte offset depending on
> - * the field type) and change the named reference into an integer for
> - * AML code generation
> + * This was a reference to a field within a resource descriptor.
> + * Extract the associated field offset (either a bit or byte
> + * offset depending on the field type) and change the named
> + * reference into an integer for AML code generation
> */
> - Temp = Node->Value;
> - if (Node->Flags & ANOBJ_IS_BIT_OFFSET)
> - {
> - Op->Asl.CompileFlags |= NODE_IS_BIT_OFFSET;
> - }
> -
> - /* Perform BitOffset <--> ByteOffset conversion if necessary */
> + Offset = Node->Value;
> + TagBitLength = Node->Length;
>
> + /*
> + * If a field is being created, generate the length (in bits) of
> + * the field. Note: Opcodes other than CreateXxxField and Index
> + * can come through here. For other opcodes, we just need to
> + * convert the resource tag reference to an integer offset.
> + */
> switch (Op->Asl.Parent->Asl.AmlOpcode)
> {
> - case AML_CREATE_FIELD_OP:
> + case AML_CREATE_FIELD_OP: /* Variable "Length" field, in bits */
> + /*
> + * We know the length operand is an integer constant because
> + * we know that it contains a reference to a resource
> + * descriptor tag.
> + */
> + FieldBitLength = (UINT32) Op->Asl.Next->Asl.Value.Integer;
> + break;
>
> - /* We allow a Byte offset to Bit Offset conversion for this op */
> + case AML_CREATE_BIT_FIELD_OP:
> + FieldBitLength = 1;
> + break;
>
> - if (!(Op->Asl.CompileFlags & NODE_IS_BIT_OFFSET))
> - {
> - /* Simply multiply byte offset times 8 to get bit offset */
> + case AML_CREATE_BYTE_FIELD_OP:
> + case AML_INDEX_OP:
> + FieldBitLength = 8;
> + break;
>
> - Temp = ACPI_MUL_8 (Temp);
> - }
> + case AML_CREATE_WORD_FIELD_OP:
> + FieldBitLength = 16;
> break;
>
> + case AML_CREATE_DWORD_FIELD_OP:
> + FieldBitLength = 32;
> + break;
>
> - case AML_CREATE_BIT_FIELD_OP:
> + case AML_CREATE_QWORD_FIELD_OP:
> + FieldBitLength = 64;
> + break;
> +
> + default:
> + FieldBitLength = 0;
> + break;
> + }
>
> - /* This op requires a Bit Offset */
> + /* Check the field length against the length of the resource tag */
>
> - if (!(Op->Asl.CompileFlags & NODE_IS_BIT_OFFSET))
> + if (FieldBitLength)
> + {
> + if (TagBitLength < FieldBitLength)
> {
> - AslError (ASL_ERROR, ASL_MSG_BYTES_TO_BITS, Op, NULL);
> + Message = ASL_MSG_TAG_SMALLER;
> }
> - break;
> + else if (TagBitLength > FieldBitLength)
> + {
> + Message = ASL_MSG_TAG_LARGER;
> + }
> +
> + if (Message)
> + {
> + sprintf (MsgBuffer, "Tag: %u bit%s, Field: %u bit%s",
> + TagBitLength, (TagBitLength > 1) ? "s" : "",
> + FieldBitLength, (FieldBitLength > 1) ? "s" : "");
>
> + AslError (ASL_WARNING, Message, Op, MsgBuffer);
> + }
> + }
>
> + /* Convert the BitOffset to a ByteOffset for certain opcodes */
> +
> + switch (Op->Asl.Parent->Asl.AmlOpcode)
> + {
> case AML_CREATE_BYTE_FIELD_OP:
> case AML_CREATE_WORD_FIELD_OP:
> case AML_CREATE_DWORD_FIELD_OP:
> case AML_CREATE_QWORD_FIELD_OP:
> case AML_INDEX_OP:
>
> - /* These Ops require Byte offsets */
> -
> - if (Op->Asl.CompileFlags & NODE_IS_BIT_OFFSET)
> - {
> - AslError (ASL_ERROR, ASL_MSG_BITS_TO_BYTES, Op, NULL);
> - }
> + Offset = ACPI_DIV_8 (Offset);
> break;
>
> -
> default:
> - /* Nothing to do for other opcodes */
> break;
> }
>
> /* Now convert this node to an integer whose value is the field offset */
>
> - Op->Asl.AmlLength = 0;
> - Op->Asl.ParseOpcode = PARSEOP_INTEGER;
> - Op->Asl.Value.Integer = (UINT64) Temp;
> - Op->Asl.CompileFlags |= NODE_IS_RESOURCE_FIELD;
> + Op->Asl.AmlLength = 0;
> + Op->Asl.ParseOpcode = PARSEOP_INTEGER;
> + Op->Asl.Value.Integer = (UINT64) Offset;
> + Op->Asl.CompileFlags |= NODE_IS_RESOURCE_FIELD;
>
> OpcGenerateAmlOpcode (Op);
> }
> @@ -1325,6 +1360,7 @@ LkNamespaceLocateBegin (
> {
> case ACPI_ADR_SPACE_EC:
> case ACPI_ADR_SPACE_CMOS:
> + case ACPI_ADR_SPACE_GPIO:
>
> if ((UINT8) Op->Asl.Parent->Asl.Value.Integer != AML_FIELD_ACCESS_BYTE)
> {
> @@ -1334,6 +1370,7 @@ LkNamespaceLocateBegin (
>
> case ACPI_ADR_SPACE_SMBUS:
> case ACPI_ADR_SPACE_IPMI:
> + case ACPI_ADR_SPACE_GSBUS:
>
> if ((UINT8) Op->Asl.Parent->Asl.Value.Integer != AML_FIELD_ACCESS_BUFFER)
> {
> diff --git a/src/acpica/source/compiler/aslmain.c b/src/acpica/source/compiler/aslmain.c
> index 69e5c4a..285d765 100644
> --- a/src/acpica/source/compiler/aslmain.c
> +++ b/src/acpica/source/compiler/aslmain.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -168,7 +168,7 @@ AslDoResponseFile (
>
>
> #define ASL_TOKEN_SEPARATORS " \t\n"
> -#define ASL_SUPPORTED_OPTIONS "@:2b:c:d^e:fgh^i^I:l^no:p:r:s:t:T:v:w:x:z"
> +#define ASL_SUPPORTED_OPTIONS "@:2b|c|d^D:e:fgh^i|I:l^mno|p:P^r:s|t|T:G^v|w|x:z"
>
>
> /*******************************************************************************
> @@ -192,6 +192,12 @@ Options (
> ACPI_OPTION ("-@ <file>", "Specify command file");
> ACPI_OPTION ("-I <dir>", "Specify additional include directory");
>
> + printf ("\nPreprocessor:\n");
> + ACPI_OPTION ("-D <symbol>", "Define symbol for preprocessor use");
> + ACPI_OPTION ("-li", "Create preprocessed output file (*.i)");
> + ACPI_OPTION ("-P", "Preprocess only and create preprocessor output file (*.i)");
> + ACPI_OPTION ("-Pn", "Disable preprocessor");
> +
> printf ("\nGeneral Output:\n");
> ACPI_OPTION ("-p <prefix>", "Specify path/filename prefix for all output files");
> ACPI_OPTION ("-va", "Disable all errors and warnings (summary only)");
> @@ -199,12 +205,13 @@ Options (
> ACPI_OPTION ("-vo", "Enable optimization comments");
> ACPI_OPTION ("-vr", "Disable remarks");
> ACPI_OPTION ("-vs", "Disable signon");
> - ACPI_OPTION ("-w <1|2|3>", "Set warning reporting level");
> + ACPI_OPTION ("-w1 -w2 -w3", "Set warning reporting level");
> + ACPI_OPTION ("-we", "Report warnings as errors");
>
> printf ("\nAML Output Files:\n");
> - ACPI_OPTION ("-s <a|c>", "Create AML in assembler or C source file (*.asm or *.c)");
> - ACPI_OPTION ("-i <a|c>", "Create assembler or C include file (*.inc or *.h)");
> - ACPI_OPTION ("-t <a|c|s>", "Create AML in assembler, C, or ASL hex table (*.hex)");
> + ACPI_OPTION ("-sa -sc", "Create AML in assembler or C source file (*.asm or *.c)");
> + ACPI_OPTION ("-ia -ic", "Create assembler or C include file (*.inc or *.h)");
> + ACPI_OPTION ("-ta -tc -ts", "Create AML in assembler, C, or ASL hex table (*.hex)");
>
> printf ("\nAML Code Generation:\n");
> ACPI_OPTION ("-oa", "Disable all optimizations (compatibility mode)");
> @@ -220,6 +227,7 @@ Options (
> ACPI_OPTION ("-ls", "Create combined source file (expanded includes) (*.src)");
>
> printf ("\nACPI Data Tables:\n");
> + ACPI_OPTION ("-G", "Compile custom table containing generic operators");
> ACPI_OPTION ("-T <sig>|ALL|*", "Create table template file(s) for <Sig>");
> ACPI_OPTION ("-vt", "Create verbose templates (full disassembly)");
>
> @@ -229,6 +237,7 @@ Options (
> ACPI_OPTION ("-dc [file]", "Disassemble AML and immediately compile it");
> ACPI_OPTION ("", "(Obtain DSDT from current system if no input file)");
> ACPI_OPTION ("-e [f1,f2]", "Include ACPI table(s) for external symbol resolution");
> + ACPI_OPTION ("-m", "Do not translate Buffers to Resource Templates");
> ACPI_OPTION ("-2", "Emit ACPI 2.0 compatible ASL code");
> ACPI_OPTION ("-g", "Get ACPI tables and write to files (*.dat)");
>
> @@ -269,12 +278,12 @@ HelpMessage (
> Options ();
>
> printf ("\nCompiler/Disassembler Debug Options:\n");
> - ACPI_OPTION ("-b<p|t|b>", "Create compiler debug/trace file (*.txt)");
> + ACPI_OPTION ("-bb -bp -bt", "Create compiler debug/trace file (*.txt)");
> ACPI_OPTION ("", "Types: Parse/Tree/Both");
> ACPI_OPTION ("-f", "Ignore errors, force creation of AML output file(s)");
> ACPI_OPTION ("-n", "Parse only, no output generation");
> ACPI_OPTION ("-ot", "Display compile times");
> - ACPI_OPTION ("-x<level>", "Set debug level for trace output");
> + ACPI_OPTION ("-x <level>", "Set debug level for trace output");
> ACPI_OPTION ("-z", "Do not insert new compiler ID for DataTables");
> }
>
> @@ -475,34 +484,34 @@ AslDoOptions (
> if (IsResponseFile)
> {
> printf ("Nested command files are not supported\n");
> - return -1;
> + return (-1);
> }
>
> if (AslDoResponseFile (AcpiGbl_Optarg))
> {
> - return -1;
> + return (-1);
> }
> break;
>
>
> - case '2':
> -
> + case '2': /* ACPI 2.0 compatibility mode */
> Gbl_Acpi2 = TRUE;
> break;
>
>
> - case 'b':
> -
> + case 'b': /* Debug output options */
> switch (AcpiGbl_Optarg[0])
> {
> case 'b':
> AslCompilerdebug = 1; /* same as yydebug */
> DtParserdebug = 1;
> + PrParserdebug = 1;
> break;
>
> case 'p':
> AslCompilerdebug = 1; /* same as yydebug */
> DtParserdebug = 1;
> + PrParserdebug = 1;
> break;
>
> case 't':
> @@ -533,7 +542,7 @@ AslDoOptions (
> break;
>
>
> - case 'd':
> + case 'd': /* Disassembler */
> switch (AcpiGbl_Optarg[0])
> {
> case '^':
> @@ -557,7 +566,12 @@ AslDoOptions (
> break;
>
>
> - case 'e':
> + case 'D': /* Define a symbol */
> + PrAddDefine (AcpiGbl_Optarg, NULL, TRUE);
> + break;
> +
> +
> + case 'e': /* External files for disassembler */
> Status = AcpiDmAddToExternalFileList (AcpiGbl_Optarg);
> if (ACPI_FAILURE (Status))
> {
> @@ -567,17 +581,17 @@ AslDoOptions (
> break;
>
>
> - case 'f':
> -
> - /* Ignore errors and force creation of aml file */
> -
> + case 'f': /* Ignore errors and force creation of aml file */
> Gbl_IgnoreErrors = TRUE;
> break;
>
>
> - case 'g':
> + case 'G':
> + Gbl_CompileGeneric = TRUE;
> + break;
> +
>
> - /* Get all ACPI tables */
> + case 'g': /* Get all ACPI tables */
>
> Gbl_GetAllTables = TRUE;
> Gbl_DoCompile = FALSE;
> @@ -585,7 +599,6 @@ AslDoOptions (
>
>
> case 'h':
> -
> switch (AcpiGbl_Optarg[0])
> {
> case '^':
> @@ -612,14 +625,12 @@ AslDoOptions (
> }
>
>
> - case 'I': /* Add an include file search directory */
> -
> + case 'I': /* Add an include file search directory */
> FlAddIncludeDirectory (AcpiGbl_Optarg);
> break;
>
>
> - case 'i':
> -
> + case 'i': /* Output AML as an include file */
> switch (AcpiGbl_Optarg[0])
> {
> case 'a':
> @@ -637,14 +648,13 @@ AslDoOptions (
> break;
>
> default:
> - printf ("Unknown option: -s%s\n", AcpiGbl_Optarg);
> + printf ("Unknown option: -i%s\n", AcpiGbl_Optarg);
> return (-1);
> }
> break;
>
>
> - case 'l':
> -
> + case 'l': /* Listing files */
> switch (AcpiGbl_Optarg[0])
> {
> case '^':
> @@ -653,6 +663,12 @@ AslDoOptions (
> Gbl_ListingFlag = TRUE;
> break;
>
> + case 'i':
> + /* Produce preprocessor output file */
> +
> + Gbl_PreprocessorOutputFlag = TRUE;
> + break;
> +
> case 'n':
> /* Produce namespace file */
>
> @@ -672,8 +688,17 @@ AslDoOptions (
> break;
>
>
> - case 'o':
> + case 'm': /* Do not convert buffers to resource descriptors */
> + AcpiGbl_NoResourceDisassembly = TRUE;
> + break;
> +
>
> + case 'n': /* Parse only */
> + Gbl_ParseOnlyFlag = TRUE;
> + break;
> +
> +
> + case 'o': /* Control compiler AML optimizations */
> switch (AcpiGbl_Optarg[0])
> {
> case 'a':
> @@ -720,30 +745,37 @@ AslDoOptions (
> break;
>
>
> - case 'n':
> + case 'P': /* Preprocessor options */
> + switch (AcpiGbl_Optarg[0])
> + {
> + case '^': /* Proprocess only, emit (.i) file */
> + Gbl_PreprocessOnly = TRUE;
> + Gbl_PreprocessorOutputFlag = TRUE;
> + break;
>
> - /* Parse only */
> + case 'n': /* Disable preprocessor */
> + Gbl_PreprocessFlag = FALSE;
> + break;
>
> - Gbl_ParseOnlyFlag = TRUE;
> + default:
> + printf ("Unknown option: -P%s\n", AcpiGbl_Optarg);
> + return (-1);
> + }
> break;
>
>
> - case 'p':
> -
> - /* Override default AML output filename */
> -
> + case 'p': /* Override default AML output filename */
> Gbl_OutputFilenamePrefix = AcpiGbl_Optarg;
> Gbl_UseDefaultAmlFilename = FALSE;
> break;
>
>
> - case 'r':
> + case 'r': /* Override revision found in table header */
> Gbl_RevisionOverride = (UINT8) strtoul (AcpiGbl_Optarg, NULL, 0);
> break;
>
>
> - case 's':
> -
> + case 's': /* Create AML in a source code file */
> switch (AcpiGbl_Optarg[0])
> {
> case 'a':
> @@ -767,10 +799,7 @@ AslDoOptions (
> break;
>
>
> - case 't':
> -
> - /* Produce hex table output file */
> -
> + case 't': /* Produce hex table output file */
> switch (AcpiGbl_Optarg[0])
> {
> case 'a':
> @@ -792,14 +821,13 @@ AslDoOptions (
> break;
>
>
> - case 'T':
> + case 'T': /* Create a ACPI table template file */
> Gbl_DoTemplates = TRUE;
> Gbl_TemplateSignature = AcpiGbl_Optarg;
> break;
>
>
> - case 'v':
> -
> + case 'v': /* Verbosity settings */
> switch (AcpiGbl_Optarg[0])
> {
> case 'a':
> @@ -838,7 +866,6 @@ AslDoOptions (
>
>
> case 'w': /* Set warning levels */
> -
> switch (AcpiGbl_Optarg[0])
> {
> case '1':
> @@ -853,6 +880,10 @@ AslDoOptions (
> Gbl_WarningLevel = ASL_WARNING3;
> break;
>
> + case 'e':
> + Gbl_WarningsAsErrors = TRUE;
> + break;
> +
> default:
> printf ("Unknown option: -w%s\n", AcpiGbl_Optarg);
> return (-1);
> @@ -860,20 +891,17 @@ AslDoOptions (
> break;
>
>
> - case 'x':
> -
> + case 'x': /* Set debug print output level */
> AcpiDbgLevel = strtoul (AcpiGbl_Optarg, NULL, 16);
> break;
>
>
> case 'z':
> -
> Gbl_UseOriginalCompilerId = TRUE;
> break;
>
>
> default:
> -
> return (-1);
> }
>
> @@ -938,6 +966,10 @@ AslCommandLine (
> if (Gbl_DoSignon)
> {
> printf (ACPI_COMMON_SIGNON (ASL_COMPILER_NAME));
> + if (Gbl_IgnoreErrors)
> + {
> + printf ("Ignoring all errors, forcing AML file generation\n\n");
> + }
> }
>
> /* Abort if anything went wrong on the command line */
> @@ -986,6 +1018,7 @@ main (
> /* Init and command line */
>
> AslInitialize ();
> + PrInitializePreprocessor ();
> Index1 = Index2 = AslCommandLine (argc, argv);
>
> /* Options that have no additional parameters or pathnames */
> diff --git a/src/acpica/source/compiler/aslmap.c b/src/acpica/source/compiler/aslmap.c
> index 6e2a7e8..498ca42 100644
> --- a/src/acpica/source/compiler/aslmap.c
> +++ b/src/acpica/source/compiler/aslmap.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -198,13 +198,16 @@ const ASL_MAPPING_ENTRY AslKeywordMapping [] =
>
>
> /* ACCESSAS */ OP_TABLE_ENTRY (AML_INT_ACCESSFIELD_OP, 0, 0, 0),
> -/* ACCESSATTRIB_BLOCK */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ATTRIB_SMB_BLOCK, 0, 0),
> -/* ACCESSATTRIB_BLOCK_CALL */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ATTRIB_SMB_BLOCK_CALL,0, 0),
> -/* ACCESSATTRIB_BYTE */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ATTRIB_SMB_BYTE, 0, 0),
> -/* ACCESSATTRIB_WORD_CALL */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ATTRIB_SMB_WORD_CALL, 0, 0),
> -/* ACCESSATTRIB_QUICK */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ATTRIB_SMB_QUICK, 0, 0),
> -/* ACCESSATTRIB_SND_RCV */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ATTRIB_SMB_SEND_RCV, 0, 0),
> -/* ACCESSATTRIB_WORD */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ATTRIB_SMB_WORD, 0, 0),
> +/* ACCESSATTRIB_BLOCK */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ATTRIB_BLOCK, 0, 0),
> +/* ACCESSATTRIB_BLOCK_CALL */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ATTRIB_BLOCK_CALL, 0, 0),
> +/* ACCESSATTRIB_BYTE */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ATTRIB_BYTE, 0, 0),
> +/* ACCESSATTRIB_MULTIBYTE */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ATTRIB_MULTIBYTE, 0, 0),
> +/* ACCESSATTRIB_QUICK */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ATTRIB_QUICK, 0, 0),
> +/* ACCESSATTRIB_RAW_BYTES */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ATTRIB_RAW_BYTES, 0, 0),
> +/* ACCESSATTRIB_RAW_PROCESS */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ATTRIB_RAW_PROCESS, 0, 0),
> +/* ACCESSATTRIB_SND_RCV */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ATTRIB_SEND_RCV, 0, 0),
> +/* ACCESSATTRIB_WORD */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ATTRIB_WORD, 0, 0),
> +/* ACCESSATTRIB_WORD_CALL */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ATTRIB_WORD_CALL, 0, 0),
> /* ACCESSTYPE_ANY */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ACCESS_ANY, 0, 0),
> /* ACCESSTYPE_BUF */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ACCESS_BUFFER, 0, 0),
> /* ACCESSTYPE_BYTE */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ACCESS_BYTE, 0, 0),
> @@ -213,7 +216,8 @@ const ASL_MAPPING_ENTRY AslKeywordMapping [] =
> /* ACCESSTYPE_WORD */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ACCESS_WORD, 0, 0),
> /* ACQUIRE */ OP_TABLE_ENTRY (AML_ACQUIRE_OP, 0, 0, ACPI_BTYPE_INTEGER),
> /* ADD */ OP_TABLE_ENTRY (AML_ADD_OP, 0, 0, ACPI_BTYPE_INTEGER),
> -/* ADDRESSSPACE_FFIXEDHW */ OP_TABLE_ENTRY (AML_BYTE_OP, ACPI_ADR_SPACE_FIXED_HARDWARE, 0, 0),
> +/* ADDRESSINGMODE_7BIT */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
> +/* ADDRESSINGMODE_10BIT */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0),
> /* ADDRESSTYPE_ACPI */ OP_TABLE_ENTRY (AML_BYTE_OP, 2, 0, 0),
> /* ADDRESSTYPE_MEMORY */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
> /* ADDRESSTYPE_NVS */ OP_TABLE_ENTRY (AML_BYTE_OP, 3, 0, 0),
> @@ -228,6 +232,11 @@ const ASL_MAPPING_ENTRY AslKeywordMapping [] =
> /* ARG5 */ OP_TABLE_ENTRY (AML_ARG5, 0, 0, ACPI_BTYPE_OBJECTS_AND_REFS),
> /* ARG6 */ OP_TABLE_ENTRY (AML_ARG6, 0, 0, ACPI_BTYPE_OBJECTS_AND_REFS),
> /* BANKFIELD */ OP_TABLE_ENTRY (AML_BANK_FIELD_OP, 0, NODE_AML_PACKAGE, 0),
> +/* BITSPERBYTE_EIGHT */ OP_TABLE_ENTRY (AML_BYTE_OP, 3, 0, 0),
> +/* BITSPERBYTE_FIVE */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
> +/* BITSPERBYTE_NINE */ OP_TABLE_ENTRY (AML_BYTE_OP, 4, 0, 0),
> +/* BITSPERBYTE_SEVEN */ OP_TABLE_ENTRY (AML_BYTE_OP, 2, 0, 0),
> +/* BITSPERBYTE_SIX */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0),
> /* BREAK */ OP_TABLE_ENTRY (AML_BREAK_OP, 0, 0, 0),
> /* BREAKPOINT */ OP_TABLE_ENTRY (AML_BREAK_POINT_OP, 0, 0, 0),
> /* BUFFER */ OP_TABLE_ENTRY (AML_BUFFER_OP, 0, NODE_AML_PACKAGE, ACPI_BTYPE_BUFFER),
> @@ -235,9 +244,14 @@ const ASL_MAPPING_ENTRY AslKeywordMapping [] =
> /* BUSMASTERTYPE_NOTMASTER */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
> /* BYTECONST */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, 0, 0, ACPI_BTYPE_INTEGER),
> /* CASE */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0),
> +/* CLOCKPHASE_FIRST */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
> +/* CLOCKPHASE_SECOND */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0),
> +/* CLOCKPOLARITY_HIGH */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0),
> +/* CLOCKPOLARITY_LOW */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
> /* CONCATENATE */ OP_TABLE_ENTRY (AML_CONCAT_OP, 0, 0, ACPI_BTYPE_COMPUTE_DATA),
> /* CONCATENATERESTEMPLATE */ OP_TABLE_ENTRY (AML_CONCAT_RES_OP, 0, 0, ACPI_BTYPE_BUFFER),
> /* CONDREFOF */ OP_TABLE_ENTRY (AML_COND_REF_OF_OP, 0, 0, ACPI_BTYPE_INTEGER),
> +/* CONNECTION */ OP_TABLE_ENTRY (AML_INT_CONNECTION_OP, 0, 0, 0),
> /* CONTINUE */ OP_TABLE_ENTRY (AML_CONTINUE_OP, 0, 0, 0),
> /* COPY */ OP_TABLE_ENTRY (AML_COPY_OP, 0, 0, ACPI_BTYPE_DATA_REFERENCE),
> /* CREATEBITFIELD */ OP_TABLE_ENTRY (AML_CREATE_BIT_FIELD_OP, 0, 0, 0),
> @@ -246,6 +260,7 @@ const ASL_MAPPING_ENTRY AslKeywordMapping [] =
> /* CREATEFIELD */ OP_TABLE_ENTRY (AML_CREATE_FIELD_OP, 0, 0, 0),
> /* CREATEQWORDFIELD */ OP_TABLE_ENTRY (AML_CREATE_QWORD_FIELD_OP, 0, 0, 0),
> /* CREATEWORDFIELD */ OP_TABLE_ENTRY (AML_CREATE_WORD_FIELD_OP, 0, 0, 0),
> +/* DATABUFFER */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0),
> /* DATATABLEREGION */ OP_TABLE_ENTRY (AML_DATA_REGION_OP, 0, 0, 0),
> /* DEBUG */ OP_TABLE_ENTRY (AML_DEBUG_OP, 0, 0, ACPI_BTYPE_DEBUG_OBJECT),
> /* DECODETYPE_POS */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
> @@ -256,6 +271,8 @@ const ASL_MAPPING_ENTRY AslKeywordMapping [] =
> /* DEFINITIONBLOCK */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0),
> /* DEREFOF */ OP_TABLE_ENTRY (AML_DEREF_OF_OP, 0, 0, ACPI_BTYPE_DATA_REFERENCE | ACPI_BTYPE_STRING),
> /* DEVICE */ OP_TABLE_ENTRY (AML_DEVICE_OP, 0, NODE_AML_PACKAGE, 0),
> +/* DEVICEPOLARITY_HIGH */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0),
> +/* DEVICEPOLARITY_LOW */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
> /* DIVIDE */ OP_TABLE_ENTRY (AML_DIVIDE_OP, 0, 0, ACPI_BTYPE_INTEGER),
> /* DMA */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0),
> /* DMATYPE_A */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0),
> @@ -270,6 +287,8 @@ const ASL_MAPPING_ENTRY AslKeywordMapping [] =
> /* ELSE */ OP_TABLE_ENTRY (AML_ELSE_OP, 0, NODE_AML_PACKAGE, 0),
> /* ELSEIF */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, NODE_AML_PACKAGE, 0),
> /* ENDDEPENDENTFN */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0),
> +/* ENDIAN_BIG */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0),
> +/* ENDIAN_LITTLE */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
> /* ENDTAG */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0),
> /* ERRORNODE */ OP_TABLE_ENTRY (AML_NOOP_OP, 0, 0, 0),
> /* EVENT */ OP_TABLE_ENTRY (AML_EVENT_OP, 0, 0, 0),
> @@ -281,18 +300,25 @@ const ASL_MAPPING_ENTRY AslKeywordMapping [] =
> /* FIELD */ OP_TABLE_ENTRY (AML_FIELD_OP, 0, NODE_AML_PACKAGE, 0),
> /* FINDSETLEFTBIT */ OP_TABLE_ENTRY (AML_FIND_SET_LEFT_BIT_OP, 0, 0, ACPI_BTYPE_INTEGER),
> /* FINDSETRIGHTBIT */ OP_TABLE_ENTRY (AML_FIND_SET_RIGHT_BIT_OP, 0, 0, ACPI_BTYPE_INTEGER),
> +/* FIXEDDMA */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0),
> /* FIXEDIO */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0),
> +/* FLOWCONTROL_HW */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0),
> +/* FLOWCONTROL_NONE */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
> +/* FLOWCONTROL_SW */ OP_TABLE_ENTRY (AML_BYTE_OP, 2, 0, 0),
> /* FROMBCD */ OP_TABLE_ENTRY (AML_FROM_BCD_OP, 0, 0, ACPI_BTYPE_INTEGER),
> /* FUNCTION */ OP_TABLE_ENTRY (AML_METHOD_OP, 0, NODE_AML_PACKAGE, 0),
> +/* GPIOINT */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0),
> +/* GPIOIO */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0),
> +/* I2CSERIALBUS */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0),
> /* IF */ OP_TABLE_ENTRY (AML_IF_OP, 0, NODE_AML_PACKAGE, 0),
> /* INCLUDE */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0),
> -/* INCLUDE_CSTYLE */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0),
> /* INCLUDE_END */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0),
> /* INCREMENT */ OP_TABLE_ENTRY (AML_INCREMENT_OP, 0, 0, ACPI_BTYPE_INTEGER),
> /* INDEX */ OP_TABLE_ENTRY (AML_INDEX_OP, 0, 0, ACPI_BTYPE_REFERENCE),
> /* INDEXFIELD */ OP_TABLE_ENTRY (AML_INDEX_FIELD_OP, 0, NODE_AML_PACKAGE, 0),
> /* INTEGER */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, ACPI_BTYPE_INTEGER),
> /* INTERRUPT */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0),
> +/* INTLEVEL_ACTIVEBOTH */ OP_TABLE_ENTRY (AML_BYTE_OP, 2, 0, 0),
> /* INTLEVEL_ACTIVEHIGH */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
> /* INTLEVEL_ACTIVELOW */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0),
> /* INTTYPE_EDGE */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0),
> @@ -300,13 +326,16 @@ const ASL_MAPPING_ENTRY AslKeywordMapping [] =
> /* IO */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0),
> /* IODECODETYPE_10 */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
> /* IODECODETYPE_16 */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0),
> +/* IORESTRICT_IN */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0),
> +/* IORESTRICT_NONE */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
> +/* IORESTRICT_OUT */ OP_TABLE_ENTRY (AML_BYTE_OP, 2, 0, 0),
> +/* IORESTRICT_PRESERVE */ OP_TABLE_ENTRY (AML_BYTE_OP, 3, 0, 0),
> /* IRQ */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0),
> /* IRQNOFLAGS */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0),
> /* LAND */ OP_TABLE_ENTRY (AML_LAND_OP, 0, 0, ACPI_BTYPE_INTEGER),
> /* LEQUAL */ OP_TABLE_ENTRY (AML_LEQUAL_OP, 0, 0, ACPI_BTYPE_INTEGER),
> /* LGREATER */ OP_TABLE_ENTRY (AML_LGREATER_OP, 0, 0, ACPI_BTYPE_INTEGER),
> /* LGREATEREQUAL */ OP_TABLE_ENTRY (AML_LGREATEREQUAL_OP, 0, 0, ACPI_BTYPE_INTEGER),
> -/* LINE */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0),
> /* LLESS */ OP_TABLE_ENTRY (AML_LLESS_OP, 0, 0, ACPI_BTYPE_INTEGER),
> /* LLESSEQUAL */ OP_TABLE_ENTRY (AML_LLESSEQUAL_OP, 0, 0, ACPI_BTYPE_INTEGER),
> /* LNOT */ OP_TABLE_ENTRY (AML_LNOT_OP, 0, 0, ACPI_BTYPE_INTEGER),
> @@ -380,6 +409,15 @@ const ASL_MAPPING_ENTRY AslKeywordMapping [] =
> /* OR */ OP_TABLE_ENTRY (AML_BIT_OR_OP, 0, 0, ACPI_BTYPE_INTEGER),
> /* PACKAGE */ OP_TABLE_ENTRY (AML_PACKAGE_OP, 0, NODE_AML_PACKAGE, ACPI_BTYPE_PACKAGE),
> /* PACKAGEP_LENGTH */ OP_TABLE_ENTRY (AML_PACKAGE_LENGTH, 0, NODE_AML_PACKAGE, 0),
> +/* PARITYTYPE_EVEN */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0),
> +/* PARITYTYPE_MARK */ OP_TABLE_ENTRY (AML_BYTE_OP, 3, 0, 0),
> +/* PARITYTYPE_NONE */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
> +/* PARITYTYPE_ODD */ OP_TABLE_ENTRY (AML_BYTE_OP, 2, 0, 0),
> +/* PARITYTYPE_SPACE */ OP_TABLE_ENTRY (AML_BYTE_OP, 4, 0, 0),
> +/* PIN_NOPULL */ OP_TABLE_ENTRY (AML_BYTE_OP, 3, 0, 0),
> +/* PIN_PULLDEFAULT */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
> +/* PIN_PULLDOWN */ OP_TABLE_ENTRY (AML_BYTE_OP, 2, 0, 0),
> +/* PIN_PULLUP */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0),
> /* POWERRESOURCE */ OP_TABLE_ENTRY (AML_POWER_RES_OP, 0, NODE_AML_PACKAGE, 0),
> /* PROCESSOR */ OP_TABLE_ENTRY (AML_PROCESSOR_OP, 0, NODE_AML_PACKAGE, 0),
> /* QWORDCONST */ OP_TABLE_ENTRY (AML_RAW_DATA_QWORD, 0, 0, ACPI_BTYPE_INTEGER),
> @@ -395,6 +433,9 @@ const ASL_MAPPING_ENTRY AslKeywordMapping [] =
> /* REFOF */ OP_TABLE_ENTRY (AML_REF_OF_OP, 0, 0, ACPI_BTYPE_REFERENCE),
> /* REGIONSPACE_CMOS */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_CMOS, 0, 0),
> /* REGIONSPACE_EC */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_EC, 0, 0),
> +/* REGIONSPACE_FFIXEDHW */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_FIXED_HARDWARE, 0, 0),
> +/* REGIONSPACE_GPIO */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_GPIO, 0, 0),
> +/* REGIONSPACE_GSBUS */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_GSBUS, 0, 0),
> /* REGIONSPACE_IO */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_SYSTEM_IO, 0, 0),
> /* REGIONSPACE_IPMI */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_IPMI, 0, 0),
> /* REGIONSPACE_MEM */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_SYSTEM_MEMORY, 0, 0),
> @@ -414,15 +455,24 @@ const ASL_MAPPING_ENTRY AslKeywordMapping [] =
> /* SERIALIZERULE_NOTSERIAL */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
> /* SERIALIZERULE_SERIAL */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0),
> /* SHARETYPE_EXCLUSIVE */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
> +/* SHARETYPE_EXCLUSIVEWAKE */ OP_TABLE_ENTRY (AML_BYTE_OP, 2, 0, 0),
> /* SHARETYPE_SHARED */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0),
> +/* SHARETYPE_SHAREDWAKE */ OP_TABLE_ENTRY (AML_BYTE_OP, 3, 0, 0),
> /* SHIFTLEFT */ OP_TABLE_ENTRY (AML_SHIFT_LEFT_OP, 0, 0, ACPI_BTYPE_INTEGER),
> /* SHIFTRIGHT */ OP_TABLE_ENTRY (AML_SHIFT_RIGHT_OP, 0, 0, ACPI_BTYPE_INTEGER),
> /* SIGNAL */ OP_TABLE_ENTRY (AML_SIGNAL_OP, 0, 0, 0),
> /* SIZEOF */ OP_TABLE_ENTRY (AML_SIZE_OF_OP, 0, 0, ACPI_BTYPE_INTEGER),
> +/* SLAVEMODE_CONTROLLERINIT */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
> +/* SLAVEMODE_DEVICEINIT */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0),
> /* SLEEP */ OP_TABLE_ENTRY (AML_SLEEP_OP, 0, 0, 0),
> +/* SPISERIALBUS */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0),
> /* STALL */ OP_TABLE_ENTRY (AML_STALL_OP, 0, 0, 0),
> /* STARTDEPENDENTFN */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
> /* STARTDEPENDENTFN_NOPRI */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
> +/* STOPBITS_ONE */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0),
> +/* STOPBITS_ONEPLUSHALF */ OP_TABLE_ENTRY (AML_BYTE_OP, 2, 0, 0),
> +/* STOPBITS_TWO */ OP_TABLE_ENTRY (AML_BYTE_OP, 3, 0, 0),
> +/* STOPBITS_ZERO */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
> /* STORE */ OP_TABLE_ENTRY (AML_STORE_OP, 0, 0, ACPI_BTYPE_DATA_REFERENCE),
> /* STRING_LITERAL */ OP_TABLE_ENTRY (AML_STRING_OP, 0, 0, ACPI_BTYPE_STRING),
> /* SUBTRACT */ OP_TABLE_ENTRY (AML_SUBTRACT_OP, 0, 0, ACPI_BTYPE_INTEGER),
> @@ -440,6 +490,7 @@ const ASL_MAPPING_ENTRY AslKeywordMapping [] =
> /* TRANSLATIONTYPE_SPARSE */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0),
> /* TYPE_STATIC */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
> /* TYPE_TRANSLATION */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0),
> +/* UART_SERIALBUS */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0),
> /* UNICODE */ OP_TABLE_ENTRY (AML_BUFFER_OP, 0, NODE_AML_PACKAGE, 0),
> /* UNLOAD */ OP_TABLE_ENTRY (AML_UNLOAD_OP, 0, 0, 0),
> /* UPDATERULE_ONES */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_UPDATE_WRITE_AS_ONES, 0, 0),
> @@ -450,10 +501,18 @@ const ASL_MAPPING_ENTRY AslKeywordMapping [] =
> /* VENDORSHORT */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
> /* WAIT */ OP_TABLE_ENTRY (AML_WAIT_OP, 0, 0, ACPI_BTYPE_INTEGER),
> /* WHILE */ OP_TABLE_ENTRY (AML_WHILE_OP, 0, NODE_AML_PACKAGE, 0),
> +/* WIREMODE_FOUR */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
> +/* WIREMODE_THREE */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0),
> /* WORDBUSNUMBER */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
> /* WORDCONST */ OP_TABLE_ENTRY (AML_RAW_DATA_WORD, 0, 0, ACPI_BTYPE_INTEGER),
> /* WORDIO */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
> /* WORDSPACE */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
> +/* XFERSIZE_8 */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
> +/* XFERSIZE_16 */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
> +/* XFERSIZE_32 */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
> +/* XFERSIZE_64 */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
> +/* XFERSIZE_128 */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
> +/* XFERSIZE_256 */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
> /* XFERTYPE_8 */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
> /* XFERTYPE_8_16 */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0),
> /* XFERTYPE_16 */ OP_TABLE_ENTRY (AML_BYTE_OP, 2, 0, 0),
> diff --git a/src/acpica/source/compiler/aslmessages.h b/src/acpica/source/compiler/aslmessages.h
> index 957b413..4e5bb31 100644
> --- a/src/acpica/source/compiler/aslmessages.h
> +++ b/src/acpica/source/compiler/aslmessages.h
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -133,17 +133,20 @@
> typedef enum
> {
> ASL_MSG_RESERVED = 0,
> +
> + ASL_MSG_ALIGNMENT,
> ASL_MSG_ALPHANUMERIC_STRING,
> ASL_MSG_AML_NOT_IMPLEMENTED,
> ASL_MSG_ARG_COUNT_HI,
> ASL_MSG_ARG_COUNT_LO,
> ASL_MSG_ARG_INIT,
> ASL_MSG_BACKWARDS_OFFSET,
> - ASL_MSG_BITS_TO_BYTES,
> ASL_MSG_BUFFER_LENGTH,
> - ASL_MSG_BYTES_TO_BITS,
> ASL_MSG_CLOSE,
> ASL_MSG_COMPILER_INTERNAL,
> + ASL_MSG_COMPILER_RESERVED,
> + ASL_MSG_CONNECTION_MISSING,
> + ASL_MSG_CONNECTION_INVALID,
> ASL_MSG_CONSTANT_EVALUATION,
> ASL_MSG_CONSTANT_FOLDED,
> ASL_MSG_CORE_EXCEPTION,
> @@ -162,15 +165,26 @@ typedef enum
> ASL_MSG_FIELD_ACCESS_WIDTH,
> ASL_MSG_FIELD_UNIT_ACCESS_WIDTH,
> ASL_MSG_FIELD_UNIT_OFFSET,
> + ASL_MSG_GPE_NAME_CONFLICT,
> + ASL_MSG_HID_LENGTH,
> + ASL_MSG_HID_PREFIX,
> + ASL_MSG_HID_SUFFIX,
> ASL_MSG_INCLUDE_FILE_OPEN,
> ASL_MSG_INPUT_FILE_OPEN,
> ASL_MSG_INTEGER_LENGTH,
> ASL_MSG_INTEGER_OPTIMIZATION,
> ASL_MSG_INTERRUPT_LIST,
> ASL_MSG_INTERRUPT_NUMBER,
> + ASL_MSG_INVALID_ACCESS_SIZE,
> + ASL_MSG_INVALID_ADDR_FLAGS,
> ASL_MSG_INVALID_CONSTANT_OP,
> ASL_MSG_INVALID_EISAID,
> ASL_MSG_INVALID_ESCAPE,
> + ASL_MSG_INVALID_GRAN_FIXED,
> + ASL_MSG_INVALID_GRANULARITY,
> + ASL_MSG_INVALID_LENGTH,
> + ASL_MSG_INVALID_LENGTH_FIXED,
> + ASL_MSG_INVALID_MIN_MAX,
> ASL_MSG_INVALID_OPERAND,
> ASL_MSG_INVALID_PERFORMANCE,
> ASL_MSG_INVALID_PRIORITY,
> @@ -179,32 +193,43 @@ typedef enum
> ASL_MSG_INVALID_TIME,
> ASL_MSG_INVALID_TYPE,
> ASL_MSG_INVALID_UUID,
> + ASL_MSG_ISA_ADDRESS,
> + ASL_MSG_LEADING_ASTERISK,
> ASL_MSG_LIST_LENGTH_LONG,
> ASL_MSG_LIST_LENGTH_SHORT,
> ASL_MSG_LISTING_FILE_OPEN,
> ASL_MSG_LISTING_FILENAME,
> ASL_MSG_LOCAL_INIT,
> + ASL_MSG_LOCAL_OUTSIDE_METHOD,
> ASL_MSG_LONG_LINE,
> ASL_MSG_MEMORY_ALLOCATION,
> ASL_MSG_MISSING_ENDDEPENDENT,
> ASL_MSG_MISSING_STARTDEPENDENT,
> + ASL_MSG_MULTIPLE_DEFAULT,
> ASL_MSG_MULTIPLE_TYPES,
> ASL_MSG_NAME_EXISTS,
> ASL_MSG_NAME_OPTIMIZATION,
> + ASL_MSG_NAMED_OBJECT_IN_WHILE,
> ASL_MSG_NESTED_COMMENT,
> ASL_MSG_NO_CASES,
> + ASL_MSG_NO_REGION,
> ASL_MSG_NO_RETVAL,
> ASL_MSG_NO_WHILE,
> ASL_MSG_NON_ASCII,
> + ASL_MSG_NON_ZERO,
> ASL_MSG_NOT_EXIST,
> ASL_MSG_NOT_FOUND,
> ASL_MSG_NOT_METHOD,
> ASL_MSG_NOT_PARAMETER,
> ASL_MSG_NOT_REACHABLE,
> + ASL_MSG_NOT_REFERENCED,
> + ASL_MSG_NULL_DESCRIPTOR,
> + ASL_MSG_NULL_STRING,
> ASL_MSG_OPEN,
> ASL_MSG_OUTPUT_FILE_OPEN,
> ASL_MSG_OUTPUT_FILENAME,
> ASL_MSG_PACKAGE_LENGTH,
> + ASL_MSG_PREPROCESSOR_FILENAME,
> ASL_MSG_READ,
> ASL_MSG_RECURSION,
> ASL_MSG_REGION_BUFFER_ACCESS,
> @@ -212,6 +237,7 @@ typedef enum
> ASL_MSG_RESERVED_ARG_COUNT_HI,
> ASL_MSG_RESERVED_ARG_COUNT_LO,
> ASL_MSG_RESERVED_METHOD,
> + ASL_MSG_RESERVED_NO_RETURN_VAL,
> ASL_MSG_RESERVED_OPERAND_TYPE,
> ASL_MSG_RESERVED_RETURN_VALUE,
> ASL_MSG_RESERVED_USE,
> @@ -220,63 +246,58 @@ typedef enum
> ASL_MSG_RESOURCE_INDEX,
> ASL_MSG_RESOURCE_LIST,
> ASL_MSG_RESOURCE_SOURCE,
> + ASL_MSG_RESULT_NOT_USED,
> ASL_MSG_RETURN_TYPES,
> ASL_MSG_SCOPE_FWD_REF,
> ASL_MSG_SCOPE_TYPE,
> ASL_MSG_SEEK,
> + ASL_MSG_SERIALIZED,
> ASL_MSG_SINGLE_NAME_OPTIMIZATION,
> ASL_MSG_SOME_NO_RETVAL,
> + ASL_MSG_STRING_LENGTH,
> ASL_MSG_SWITCH_TYPE,
> ASL_MSG_SYNC_LEVEL,
> ASL_MSG_SYNTAX,
> ASL_MSG_TABLE_SIGNATURE,
> + ASL_MSG_TAG_LARGER,
> + ASL_MSG_TAG_SMALLER,
> + ASL_MSG_TIMEOUT,
> ASL_MSG_TOO_MANY_TEMPS,
> ASL_MSG_UNKNOWN_RESERVED_NAME,
> ASL_MSG_UNREACHABLE_CODE,
> ASL_MSG_UNSUPPORTED,
> + ASL_MSG_UPPER_CASE,
> ASL_MSG_VENDOR_LIST,
> ASL_MSG_WRITE,
> - ASL_MSG_MULTIPLE_DEFAULT,
> - ASL_MSG_TIMEOUT,
> - ASL_MSG_RESULT_NOT_USED,
> - ASL_MSG_NOT_REFERENCED,
> - ASL_MSG_NON_ZERO,
> - ASL_MSG_STRING_LENGTH,
> - ASL_MSG_SERIALIZED,
> - ASL_MSG_COMPILER_RESERVED,
> - ASL_MSG_NAMED_OBJECT_IN_WHILE,
> - ASL_MSG_LOCAL_OUTSIDE_METHOD,
> - ASL_MSG_ALIGNMENT,
> - ASL_MSG_ISA_ADDRESS,
> - ASL_MSG_INVALID_MIN_MAX,
> - ASL_MSG_INVALID_LENGTH,
> - ASL_MSG_INVALID_LENGTH_FIXED,
> - ASL_MSG_INVALID_GRANULARITY,
> - ASL_MSG_INVALID_GRAN_FIXED,
> - ASL_MSG_INVALID_ACCESS_SIZE,
> - ASL_MSG_INVALID_ADDR_FLAGS,
> - ASL_MSG_NULL_DESCRIPTOR,
> - ASL_MSG_UPPER_CASE,
> - ASL_MSG_HID_LENGTH,
> - ASL_MSG_NULL_STRING,
> - ASL_MSG_LEADING_ASTERISK,
> - ASL_MSG_RESERVED_NO_RETURN_VAL,
> - ASL_MSG_GPE_NAME_CONFLICT,
> - ASL_MSG_NO_REGION,
>
> - ASL_MSG_INVALID_FIELD_NAME,
> - ASL_MSG_INTEGER_SIZE,
> - ASL_MSG_INVALID_HEX_INTEGER,
> + /* These messages are used by the Preprocessor only */
> +
> + ASL_MSG_DIRECTIVE_SYNTAX,
> + ASL_MSG_ENDIF_MISMATCH,
> + ASL_MSG_ERROR_DIRECTIVE,
> + ASL_MSG_EXISTING_NAME,
> + ASL_MSG_INVALID_INVOCATION,
> + ASL_MSG_MACRO_SYNTAX,
> + ASL_MSG_TOO_MANY_ARGUMENTS,
> + ASL_MSG_UNKNOWN_DIRECTIVE,
> + ASL_MSG_UNKNOWN_PRAGMA,
> +
> +
> + /* These messages are used by the data table compiler only */
> +
> ASL_MSG_BUFFER_ELEMENT,
> - ASL_MSG_RESERVED_VALUE,
> + ASL_MSG_DIVIDE_BY_ZERO,
> ASL_MSG_FLAG_VALUE,
> - ASL_MSG_ZERO_VALUE,
> - ASL_MSG_UNKNOWN_TABLE,
> - ASL_MSG_UNKNOWN_SUBTABLE,
> + ASL_MSG_INTEGER_SIZE,
> + ASL_MSG_INVALID_EXPRESSION,
> + ASL_MSG_INVALID_FIELD_NAME,
> + ASL_MSG_INVALID_HEX_INTEGER,
> ASL_MSG_OEM_TABLE,
> + ASL_MSG_RESERVED_VALUE,
> ASL_MSG_UNKNOWN_LABEL,
> - ASL_MSG_INVALID_EXPRESSION,
> - ASL_MSG_DIVIDE_BY_ZERO
> + ASL_MSG_UNKNOWN_SUBTABLE,
> + ASL_MSG_UNKNOWN_TABLE,
> + ASL_MSG_ZERO_VALUE
>
> } ASL_MESSAGE_IDS;
>
> @@ -287,17 +308,19 @@ typedef enum
>
> char *AslMessages [] = {
> /* The zeroth message is reserved */ "",
> +/* ASL_MSG_ALIGNMENT */ "Must be a multiple of alignment/granularity value",
> /* ASL_MSG_ALPHANUMERIC_STRING */ "String must be entirely alphanumeric",
> /* ASL_MSG_AML_NOT_IMPLEMENTED */ "Opcode is not implemented in compiler AML code generator",
> /* ASL_MSG_ARG_COUNT_HI */ "Too many arguments",
> /* ASL_MSG_ARG_COUNT_LO */ "Too few arguments",
> /* ASL_MSG_ARG_INIT */ "Method argument is not initialized",
> /* ASL_MSG_BACKWARDS_OFFSET */ "Invalid backwards offset",
> -/* ASL_MSG_BITS_TO_BYTES */ "Field offset is in bits, but a byte offset is required",
> /* ASL_MSG_BUFFER_LENGTH */ "Effective AML buffer length is zero",
> -/* ASL_MSG_BYTES_TO_BITS */ "Field offset is in bytes, but a bit offset is required",
> /* ASL_MSG_CLOSE */ "Could not close file",
> /* ASL_MSG_COMPILER_INTERNAL */ "Internal compiler error",
> +/* ASL_MSG_COMPILER_RESERVED */ "Use of compiler reserved name",
> +/* ASL_MSG_CONNECTION_MISSING */ "A Connection operator is required for this field SpaceId",
> +/* ASL_MSG_CONNECTION_INVALID */ "Invalid OpRegion SpaceId for use of Connection operator",
> /* ASL_MSG_CONSTANT_EVALUATION */ "Could not evaluate constant expression",
> /* ASL_MSG_CONSTANT_FOLDED */ "Constant expression evaluated and reduced",
> /* ASL_MSG_CORE_EXCEPTION */ "From ACPI CA Subsystem",
> @@ -316,15 +339,26 @@ char *AslMessages [] = {
> /* ASL_MSG_FIELD_ACCESS_WIDTH */ "Access width is greater than region size",
> /* ASL_MSG_FIELD_UNIT_ACCESS_WIDTH */ "Access width of Field Unit extends beyond region limit",
> /* ASL_MSG_FIELD_UNIT_OFFSET */ "Field Unit extends beyond region limit",
> +/* ASL_MSG_GPE_NAME_CONFLICT */ "Name conflicts with a previous GPE method",
> +/* ASL_MSG_HID_LENGTH */ "_HID string must be exactly 7 or 8 characters",
> +/* ASL_MSG_HID_PREFIX */ "_HID prefix must be all uppercase or decimal digits",
> +/* ASL_MSG_HID_SUFFIX */ "_HID suffix must be all hex digits",
> /* ASL_MSG_INCLUDE_FILE_OPEN */ "Could not open include file",
> /* ASL_MSG_INPUT_FILE_OPEN */ "Could not open input file",
> /* ASL_MSG_INTEGER_LENGTH */ "64-bit integer in 32-bit table, truncating",
> /* ASL_MSG_INTEGER_OPTIMIZATION */ "Integer optimized to single-byte AML opcode",
> /* ASL_MSG_INTERRUPT_LIST */ "Too many interrupts (16 max)",
> /* ASL_MSG_INTERRUPT_NUMBER */ "Invalid interrupt number (must be 0-15)",
> +/* ASL_MSG_INVALID_ACCESS_SIZE */ "Invalid AccessSize (Maximum is 4 - QWord access)",
> +/* ASL_MSG_INVALID_ADDR_FLAGS */ "Invalid combination of Length and Min/Max fixed flags",
> /* ASL_MSG_INVALID_CONSTANT_OP */ "Invalid operator in constant expression (not type 3/4/5)",
> /* ASL_MSG_INVALID_EISAID */ "EISAID string must be of the form \"UUUXXXX\" (3 uppercase, 4 hex digits)",
> /* ASL_MSG_INVALID_ESCAPE */ "Invalid or unknown escape sequence",
> +/* ASL_MSG_INVALID_GRAN_FIXED */ "Granularity must be zero for fixed Min/Max",
> +/* ASL_MSG_INVALID_GRANULARITY */ "Granularity must be zero or a power of two minus one",
> +/* ASL_MSG_INVALID_LENGTH */ "Length is larger than Min/Max window",
> +/* ASL_MSG_INVALID_LENGTH_FIXED */ "Length is not equal to fixed Min/Max window",
> +/* ASL_MSG_INVALID_MIN_MAX */ "Address Min is greater than Address Max",
> /* ASL_MSG_INVALID_OPERAND */ "Invalid operand",
> /* ASL_MSG_INVALID_PERFORMANCE */ "Invalid performance/robustness value",
> /* ASL_MSG_INVALID_PRIORITY */ "Invalid priority value",
> @@ -333,32 +367,43 @@ char *AslMessages [] = {
> /* ASL_MSG_INVALID_TIME */ "Time parameter too long (255 max)",
> /* ASL_MSG_INVALID_TYPE */ "Invalid type",
> /* ASL_MSG_INVALID_UUID */ "UUID string must be of the form \"aabbccdd-eeff-gghh-iijj-kkllmmnnoopp\"",
> +/* ASL_MSG_ISA_ADDRESS */ "Maximum 10-bit ISA address (0x3FF)",
> +/* ASL_MSG_LEADING_ASTERISK */ "Invalid leading asterisk",
> /* ASL_MSG_LIST_LENGTH_LONG */ "Initializer list longer than declared package length",
> /* ASL_MSG_LIST_LENGTH_SHORT */ "Initializer list shorter than declared package length",
> /* ASL_MSG_LISTING_FILE_OPEN */ "Could not open listing file",
> /* ASL_MSG_LISTING_FILENAME */ "Could not create listing filename",
> /* ASL_MSG_LOCAL_INIT */ "Method local variable is not initialized",
> +/* ASL_MSG_LOCAL_OUTSIDE_METHOD */ "Local or Arg used outside a control method",
> /* ASL_MSG_LONG_LINE */ "Splitting long input line",
> /* ASL_MSG_MEMORY_ALLOCATION */ "Memory allocation failure",
> /* ASL_MSG_MISSING_ENDDEPENDENT */ "Missing EndDependentFn() macro in dependent resource list",
> /* ASL_MSG_MISSING_STARTDEPENDENT */ "Missing StartDependentFn() macro in dependent resource list",
> +/* ASL_MSG_MULTIPLE_DEFAULT */ "More than one Default statement within Switch construct",
> /* ASL_MSG_MULTIPLE_TYPES */ "Multiple types",
> /* ASL_MSG_NAME_EXISTS */ "Name already exists in scope",
> /* ASL_MSG_NAME_OPTIMIZATION */ "NamePath optimized",
> +/* ASL_MSG_NAMED_OBJECT_IN_WHILE */ "Creating a named object in a While loop",
> /* ASL_MSG_NESTED_COMMENT */ "Nested comment found",
> /* ASL_MSG_NO_CASES */ "No Case statements under Switch",
> +/* ASL_MSG_NO_REGION */ "_REG has no corresponding Operation Region",
> /* ASL_MSG_NO_RETVAL */ "Called method returns no value",
> /* ASL_MSG_NO_WHILE */ "No enclosing While statement",
> /* ASL_MSG_NON_ASCII */ "Invalid characters found in file",
> +/* ASL_MSG_NON_ZERO */ "Operand evaluates to zero",
> /* ASL_MSG_NOT_EXIST */ "Object does not exist",
> /* ASL_MSG_NOT_FOUND */ "Object not found or not accessible from scope",
> /* ASL_MSG_NOT_METHOD */ "Not a control method, cannot invoke",
> /* ASL_MSG_NOT_PARAMETER */ "Not a parameter, used as local only",
> /* ASL_MSG_NOT_REACHABLE */ "Object is not accessible from this scope",
> +/* ASL_MSG_NOT_REFERENCED */ "Namespace object is not referenced",
> +/* ASL_MSG_NULL_DESCRIPTOR */ "Min/Max/Length/Gran are all zero, but no resource tag",
> +/* ASL_MSG_NULL_STRING */ "Invalid zero-length (null) string",
> /* ASL_MSG_OPEN */ "Could not open file",
> /* ASL_MSG_OUTPUT_FILE_OPEN */ "Could not open output AML file",
> /* ASL_MSG_OUTPUT_FILENAME */ "Could not create output filename",
> /* ASL_MSG_PACKAGE_LENGTH */ "Effective AML package length is zero",
> +/* ASL_MSG_PREPROCESSOR_FILENAME */ "Could not create preprocessor filename",
> /* ASL_MSG_READ */ "Could not read file",
> /* ASL_MSG_RECURSION */ "Recursive method call",
> /* ASL_MSG_REGION_BUFFER_ACCESS */ "Host Operation Region requires BufferAcc access",
> @@ -366,6 +411,7 @@ char *AslMessages [] = {
> /* ASL_MSG_RESERVED_ARG_COUNT_HI */ "Reserved method has too many arguments",
> /* ASL_MSG_RESERVED_ARG_COUNT_LO */ "Reserved method has too few arguments",
> /* ASL_MSG_RESERVED_METHOD */ "Reserved name must be a control method",
> +/* ASL_MSG_RESERVED_NO_RETURN_VAL */ "Reserved method should not return a value",
> /* ASL_MSG_RESERVED_OPERAND_TYPE */ "Invalid object type for reserved name",
> /* ASL_MSG_RESERVED_RETURN_VALUE */ "Reserved method must return a value",
> /* ASL_MSG_RESERVED_USE */ "Invalid use of reserved name",
> @@ -374,65 +420,57 @@ char *AslMessages [] = {
> /* ASL_MSG_RESOURCE_INDEX */ "Missing ResourceSourceIndex (required)",
> /* ASL_MSG_RESOURCE_LIST */ "Too many resource items (internal error)",
> /* ASL_MSG_RESOURCE_SOURCE */ "Missing ResourceSource string (required)",
> +/* ASL_MSG_RESULT_NOT_USED */ "Result is not used, operator has no effect",
> /* ASL_MSG_RETURN_TYPES */ "Not all control paths return a value",
> /* ASL_MSG_SCOPE_FWD_REF */ "Forward references from Scope operator not allowed",
> /* ASL_MSG_SCOPE_TYPE */ "Existing object has invalid type for Scope operator",
> /* ASL_MSG_SEEK */ "Could not seek file",
> +/* ASL_MSG_SERIALIZED */ "Control Method marked Serialized",
> /* ASL_MSG_SINGLE_NAME_OPTIMIZATION */ "NamePath optimized to NameSeg (uses run-time search path)",
> /* ASL_MSG_SOME_NO_RETVAL */ "Called method may not always return a value",
> +/* ASL_MSG_STRING_LENGTH */ "String literal too long",
> /* ASL_MSG_SWITCH_TYPE */ "Switch expression is not a static Integer/Buffer/String data type, defaulting to Integer",
> /* ASL_MSG_SYNC_LEVEL */ "SyncLevel must be in the range 0-15",
> /* ASL_MSG_SYNTAX */ "",
> /* ASL_MSG_TABLE_SIGNATURE */ "Invalid Table Signature",
> +/* ASL_MSG_TAG_LARGER */ "ResourceTag larger than Field",
> +/* ASL_MSG_TAG_SMALLER */ "ResourceTag smaller than Field",
> +/* ASL_MSG_TIMEOUT */ "Result is not used, possible operator timeout will be missed",
> /* ASL_MSG_TOO_MANY_TEMPS */ "Method requires too many temporary variables (_T_x)",
> /* ASL_MSG_UNKNOWN_RESERVED_NAME */ "Unknown reserved name",
> /* ASL_MSG_UNREACHABLE_CODE */ "Statement is unreachable",
> /* ASL_MSG_UNSUPPORTED */ "Unsupported feature",
> +/* ASL_MSG_UPPER_CASE */ "Non-hex letters must be upper case",
> /* ASL_MSG_VENDOR_LIST */ "Too many vendor data bytes (7 max)",
> /* ASL_MSG_WRITE */ "Could not write file",
> -/* ASL_MSG_MULTIPLE_DEFAULT */ "More than one Default statement within Switch construct",
> -/* ASL_MSG_TIMEOUT */ "Result is not used, possible operator timeout will be missed",
> -/* ASL_MSG_RESULT_NOT_USED */ "Result is not used, operator has no effect",
> -/* ASL_MSG_NOT_REFERENCED */ "Namespace object is not referenced",
> -/* ASL_MSG_NON_ZERO */ "Operand evaluates to zero",
> -/* ASL_MSG_STRING_LENGTH */ "String literal too long",
> -/* ASL_MSG_SERIALIZED */ "Control Method marked Serialized",
> -/* ASL_MSG_COMPILER_RESERVED */ "Use of compiler reserved name",
> -/* ASL_MSG_NAMED_OBJECT_IN_WHILE */ "Creating a named object in a While loop",
> -/* ASL_MSG_LOCAL_OUTSIDE_METHOD */ "Local or Arg used outside a control method",
> -/* ASL_MSG_ALIGNMENT */ "Must be a multiple of alignment/granularity value",
> -/* ASL_MSG_ISA_ADDRESS */ "Maximum 10-bit ISA address (0x3FF)",
> -/* ASL_MSG_INVALID_MIN_MAX */ "Address Min is greater than Address Max",
> -/* ASL_MSG_INVALID_LENGTH */ "Length is larger than Min/Max window",
> -/* ASL_MSG_INVALID_LENGTH_FIXED */ "Length is not equal to fixed Min/Max window",
> -/* ASL_MSG_INVALID_GRANULARITY */ "Granularity must be zero or a power of two minus one",
> -/* ASL_MSG_INVALID_GRAN_FIXED */ "Granularity must be zero for fixed Min/Max",
> -/* ASL_MSG_INVALID_ACCESS_SIZE */ "Invalid AccessSize (Maximum is 4 - QWord access)",
> -/* ASL_MSG_INVALID_ADDR_FLAGS */ "Invalid combination of Length and Min/Max fixed flags",
> -/* ASL_MSG_NULL_DESCRIPTOR */ "Min/Max/Length/Gran are all zero, but no resource tag",
> -/* ASL_MSG_UPPER_CASE */ "Non-hex letters must be upper case",
> -/* ASL_MSG_HID_LENGTH */ "_HID string must be exactly 7 or 8 characters",
> -/* ASL_MSG_NULL_STRING */ "Invalid zero-length (null) string",
> -/* ASL_MSG_LEADING_ASTERISK */ "Invalid leading asterisk",
> -/* ASL_MSG_RESERVED_NO_RETURN_VAL */ "Reserved method should not return a value",
> -/* ASL_MSG_GPE_NAME_CONFLICT */ "Name conflicts with a previous GPE method",
> -/* ASL_MSG_NO_REGION */ "_REG has no corresponding Operation Region",
>
> -/* These messages are used by the data table compiler only */
> +/* Preprocessor */
> +
> +/* ASL_MSG_DIRECTIVE_SYNTAX */ "Invalid directive syntax",
> +/* ASL_MSG_ENDIF_MISMATCH */ "Mismatched #endif",
> +/* ASL_MSG_ERROR_DIRECTIVE */ "#error",
> +/* ASL_MSG_EXISTING_NAME */ "Name is already defined",
> +/* ASL_MSG_INVALID_INVOCATION */ "Invalid macro invocation",
> +/* ASL_MSG_MACRO_SYNTAX */ "Invalid macro syntax",
> +/* ASL_MSG_TOO_MANY_ARGUMENTS */ "Too many macro arguments",
> +/* ASL_MSG_UNKNOWN_DIRECTIVE */ "Unknown directive",
> +/* ASL_MSG_UNKNOWN_PRAGMA */ "Unknown pragma",
> +
> +/* Table compiler */
>
> -/* ASL_MSG_INVALID_FIELD_NAME */ "Invalid Field Name",
> -/* ASL_MSG_INTEGER_SIZE */ "Integer too large for target",
> -/* ASL_MSG_INVALID_HEX_INTEGER */ "Invalid hex integer constant",
> /* ASL_MSG_BUFFER_ELEMENT */ "Invalid element in buffer initializer list",
> -/* ASL_MSG_RESERVED_VALUE */ "Reserved field must be zero",
> +/* ASL_MSG_DIVIDE_BY_ZERO */ "Expression contains divide-by-zero",
> /* ASL_MSG_FLAG_VALUE */ "Flag value is too large",
> -/* ASL_MSG_ZERO_VALUE */ "Value must be non-zero",
> -/* ASL_MSG_UNKNOWN_TABLE */ "Unknown ACPI table signature",
> -/* ASL_MSG_UNKNOWN_SUBTABLE */ "Unknown subtable type",
> +/* ASL_MSG_INTEGER_SIZE */ "Integer too large for target",
> +/* ASL_MSG_INVALID_EXPRESSION */ "Invalid expression",
> +/* ASL_MSG_INVALID_FIELD_NAME */ "Invalid Field Name",
> +/* ASL_MSG_INVALID_HEX_INTEGER */ "Invalid hex integer constant",
> /* ASL_MSG_OEM_TABLE */ "OEM table - unknown contents",
> +/* ASL_MSG_RESERVED_VALUE */ "Reserved field must be zero",
> /* ASL_MSG_UNKNOWN_LABEL */ "Label is undefined",
> -/* ASL_MSG_INVALID_EXPRESSION */ "Invalid expression",
> -/* ASL_MSG_DIVIDE_BY_ZERO */ "Expression contains divide-by-zero"
> +/* ASL_MSG_UNKNOWN_SUBTABLE */ "Unknown subtable type",
> +/* ASL_MSG_UNKNOWN_TABLE */ "Unknown ACPI table signature",
> +/* ASL_MSG_ZERO_VALUE */ "Value must be non-zero"
> };
>
>
> diff --git a/src/acpica/source/compiler/aslopcodes.c b/src/acpica/source/compiler/aslopcodes.c
> index 9f84953..cddc945 100644
> --- a/src/acpica/source/compiler/aslopcodes.c
> +++ b/src/acpica/source/compiler/aslopcodes.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -130,6 +130,10 @@ OpcDoAccessAs (
> ACPI_PARSE_OBJECT *Op);
>
> static void
> +OpcDoConnection (
> + ACPI_PARSE_OBJECT *Op);
> +
> +static void
> OpcDoUnicode (
> ACPI_PARSE_OBJECT *Op);
>
> @@ -393,26 +397,128 @@ static void
> OpcDoAccessAs (
> ACPI_PARSE_OBJECT *Op)
> {
> - ACPI_PARSE_OBJECT *Next;
> + ACPI_PARSE_OBJECT *TypeOp;
> + ACPI_PARSE_OBJECT *AttribOp;
> + ACPI_PARSE_OBJECT *LengthOp;
> + UINT8 Attribute;
>
>
> Op->Asl.AmlOpcodeLength = 1;
> - Next = Op->Asl.Child;
> + TypeOp = Op->Asl.Child;
>
> /* First child is the access type */
>
> - Next->Asl.AmlOpcode = AML_RAW_DATA_BYTE;
> - Next->Asl.ParseOpcode = PARSEOP_RAW_DATA;
> + TypeOp->Asl.AmlOpcode = AML_RAW_DATA_BYTE;
> + TypeOp->Asl.ParseOpcode = PARSEOP_RAW_DATA;
>
> /* Second child is the optional access attribute */
>
> - Next = Next->Asl.Next;
> - if (Next->Asl.ParseOpcode == PARSEOP_DEFAULT_ARG)
> + AttribOp = TypeOp->Asl.Next;
> + if (AttribOp->Asl.ParseOpcode == PARSEOP_DEFAULT_ARG)
> + {
> + AttribOp->Asl.Value.Integer = 0;
> + }
> + AttribOp->Asl.AmlOpcode = AML_RAW_DATA_BYTE;
> + AttribOp->Asl.ParseOpcode = PARSEOP_RAW_DATA;
> +
> + /* Only a few AccessAttributes support AccessLength */
> +
> + Attribute = (UINT8) AttribOp->Asl.Value.Integer;
> + if ((Attribute != AML_FIELD_ATTRIB_MULTIBYTE) &&
> + (Attribute != AML_FIELD_ATTRIB_RAW_BYTES) &&
> + (Attribute != AML_FIELD_ATTRIB_RAW_PROCESS))
> + {
> + return;
> + }
> +
> + Op->Asl.AmlOpcode = AML_FIELD_EXT_ACCESS_OP;
> +
> + /*
> + * Child of Attributes is the AccessLength (required for Multibyte,
> + * RawBytes, RawProcess.)
> + */
> + LengthOp = AttribOp->Asl.Child;
> + if (!LengthOp)
> + {
> + return;
> + }
> +
> + /* TBD: probably can remove */
> +
> + if (LengthOp->Asl.ParseOpcode == PARSEOP_DEFAULT_ARG)
> + {
> + LengthOp->Asl.Value.Integer = 16;
> + }
> +
> + LengthOp->Asl.AmlOpcode = AML_RAW_DATA_BYTE;
> + LengthOp->Asl.ParseOpcode = PARSEOP_RAW_DATA;
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: OpcDoConnection
> + *
> + * PARAMETERS: Op - Parse node
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Implement the Connection ASL keyword.
> + *
> + ******************************************************************************/
> +
> +static void
> +OpcDoConnection (
> + ACPI_PARSE_OBJECT *Op)
> +{
> + ASL_RESOURCE_NODE *Rnode;
> + ACPI_PARSE_OBJECT *BufferOp;
> + ACPI_PARSE_OBJECT *BufferLengthOp;
> + ACPI_PARSE_OBJECT *BufferDataOp;
> + UINT8 State;
> +
> +
> + Op->Asl.AmlOpcodeLength = 1;
> +
> + if (Op->Asl.Child->Asl.AmlOpcode == AML_INT_NAMEPATH_OP)
> + {
> + return;
> + }
> +
> + BufferOp = Op->Asl.Child;
> + BufferLengthOp = BufferOp->Asl.Child;
> + BufferDataOp = BufferLengthOp->Asl.Next;
> +
> + State = ACPI_RSTATE_NORMAL;
> + Rnode = RsDoOneResourceDescriptor (BufferDataOp->Asl.Next, 0, &State);
> + if (!Rnode)
> {
> - Next->Asl.Value.Integer = 0;
> + return; /* error */
> }
> - Next->Asl.AmlOpcode = AML_RAW_DATA_BYTE;
> - Next->Asl.ParseOpcode = PARSEOP_RAW_DATA;
> +
> + /*
> + * Transform the nodes into the following
> + *
> + * Op -> AML_BUFFER_OP
> + * First Child -> BufferLength
> + * Second Child -> Descriptor Buffer (raw byte data)
> + */
> + BufferOp->Asl.ParseOpcode = PARSEOP_BUFFER;
> + BufferOp->Asl.AmlOpcode = AML_BUFFER_OP;
> + BufferOp->Asl.CompileFlags = NODE_AML_PACKAGE | NODE_IS_RESOURCE_DESC;
> + UtSetParseOpName (BufferOp);
> +
> + BufferLengthOp->Asl.ParseOpcode = PARSEOP_INTEGER;
> + BufferLengthOp->Asl.Value.Integer = Rnode->BufferLength;
> + (void) OpcSetOptimalIntegerSize (BufferLengthOp);
> + UtSetParseOpName (BufferLengthOp);
> +
> + BufferDataOp->Asl.ParseOpcode = PARSEOP_RAW_DATA;
> + BufferDataOp->Asl.AmlOpcode = AML_RAW_DATA_CHAIN;
> + BufferDataOp->Asl.AmlOpcodeLength = 0;
> + BufferDataOp->Asl.AmlLength = Rnode->BufferLength;
> + BufferDataOp->Asl.Value.Buffer = (UINT8 *) Rnode;
> + UtSetParseOpName (BufferDataOp);
> }
>
>
> @@ -617,7 +723,7 @@ OpcDoEisaId (
>
> /*******************************************************************************
> *
> - * FUNCTION: OpcDoUiId
> + * FUNCTION: OpcDoUuId
> *
> * PARAMETERS: Op - Parse node
> *
> @@ -737,6 +843,11 @@ OpcGenerateAmlOpcode (
> OpcDoAccessAs (Op);
> break;
>
> + case PARSEOP_CONNECTION:
> +
> + OpcDoConnection (Op);
> + break;
> +
> case PARSEOP_EISAID:
>
> OpcDoEisaId (Op);
> diff --git a/src/acpica/source/compiler/asloperands.c b/src/acpica/source/compiler/asloperands.c
> index e0280be..cc65d24 100644
> --- a/src/acpica/source/compiler/asloperands.c
> +++ b/src/acpica/source/compiler/asloperands.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -833,6 +833,7 @@ OpnDoPackage (
>
> if ((PackageLengthOp->Asl.ParseOpcode == PARSEOP_INTEGER) ||
> (PackageLengthOp->Asl.ParseOpcode == PARSEOP_QWORDCONST) ||
> + (PackageLengthOp->Asl.ParseOpcode == PARSEOP_ZERO) ||
> (PackageLengthOp->Asl.ParseOpcode == PARSEOP_DEFAULT_ARG))
> {
> if (!PackageLength)
> @@ -850,8 +851,11 @@ OpnDoPackage (
> * If the PackageLength is a constant <= 255, we can change the
> * AML opcode from VarPackage to a simple (ACPI 1.0) Package opcode.
> */
> - if ((Op->Asl.Child->Asl.ParseOpcode == PARSEOP_INTEGER) &&
> - (Op->Asl.Child->Asl.Value.Integer <= 255))
> + if (((Op->Asl.Child->Asl.ParseOpcode == PARSEOP_INTEGER) &&
> + (Op->Asl.Child->Asl.Value.Integer <= 255)) ||
> + (Op->Asl.Child->Asl.ParseOpcode == PARSEOP_ONE) ||
> + (Op->Asl.Child->Asl.ParseOpcode == PARSEOP_ONES)||
> + (Op->Asl.Child->Asl.ParseOpcode == PARSEOP_ZERO))
> {
> Op->Asl.AmlOpcode = AML_PACKAGE_OP;
> Op->Asl.ParseOpcode = PARSEOP_PACKAGE;
> diff --git a/src/acpica/source/compiler/aslopt.c b/src/acpica/source/compiler/aslopt.c
> index 6ea357a..8080a70 100644
> --- a/src/acpica/source/compiler/aslopt.c
> +++ b/src/acpica/source/compiler/aslopt.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/compiler/aslpredef.c b/src/acpica/source/compiler/aslpredef.c
> index b72bca8..01c8eac 100644
> --- a/src/acpica/source/compiler/aslpredef.c
> +++ b/src/acpica/source/compiler/aslpredef.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -172,30 +172,49 @@ static const ACPI_PREDEFINED_INFO ResourceNames[] = {
> {{"_ATT", 0, 0}},
> {{"_BAS", 0, 0}},
> {{"_BM_", 0, 0}},
> + {{"_DBT", 0, 0}}, /* Acpi 5.0 */
> {{"_DEC", 0, 0}},
> + {{"_DPL", 0, 0}}, /* Acpi 5.0 */
> + {{"_DRS", 0, 0}}, /* Acpi 5.0 */
> + {{"_END", 0, 0}}, /* Acpi 5.0 */
> + {{"_FLC", 0, 0}}, /* Acpi 5.0 */
> {{"_GRA", 0, 0}},
> {{"_HE_", 0, 0}},
> {{"_INT", 0, 0}},
> + {{"_IOR", 0, 0}}, /* Acpi 5.0 */
> {{"_LEN", 0, 0}},
> + {{"_LIN", 0, 0}}, /* Acpi 5.0 */
> {{"_LL_", 0, 0}},
> {{"_MAF", 0, 0}},
> {{"_MAX", 0, 0}},
> {{"_MEM", 0, 0}},
> {{"_MIF", 0, 0}},
> {{"_MIN", 0, 0}},
> + {{"_MOD", 0, 0}}, /* Acpi 5.0 */
> {{"_MTP", 0, 0}},
> + {{"_PAR", 0, 0}}, /* Acpi 5.0 */
> + {{"_PHA", 0, 0}}, /* Acpi 5.0 */
> + {{"_PIN", 0, 0}}, /* Acpi 5.0 */
> + {{"_PPI", 0, 0}}, /* Acpi 5.0 */
> + {{"_POL", 0, 0}}, /* Acpi 5.0 */
> {{"_RBO", 0, 0}},
> {{"_RBW", 0, 0}},
> {{"_RNG", 0, 0}},
> {{"_RT_", 0, 0}}, /* Acpi 3.0 */
> {{"_RW_", 0, 0}},
> + {{"_RXL", 0, 0}}, /* Acpi 5.0 */
> {{"_SHR", 0, 0}},
> {{"_SIZ", 0, 0}},
> + {{"_SLV", 0, 0}}, /* Acpi 5.0 */
> + {{"_SPE", 0, 0}}, /* Acpi 5.0 */
> + {{"_STB", 0, 0}}, /* Acpi 5.0 */
> {{"_TRA", 0, 0}},
> {{"_TRS", 0, 0}},
> {{"_TSF", 0, 0}}, /* Acpi 3.0 */
> {{"_TTP", 0, 0}},
> + {{"_TXL", 0, 0}}, /* Acpi 5.0 */
> {{"_TYP", 0, 0}},
> + {{"_VEN", 0, 0}}, /* Acpi 5.0 */
> {{{0,0,0,0}, 0, 0}} /* Table terminator */
> };
>
> @@ -730,6 +749,7 @@ ApCheckObjectType (
> break;
>
> case PARSEOP_PACKAGE:
> + case PARSEOP_VAR_PACKAGE:
> ReturnBtype = ACPI_RTYPE_PACKAGE;
> break;
>
> @@ -889,4 +909,3 @@ ApGetExpectedTypes (
> ThisRtype <<= 1; /* Next Rtype */
> }
> }
> -
> diff --git a/src/acpica/source/compiler/aslresource.c b/src/acpica/source/compiler/aslresource.c
> index 116c083..9eb8baf 100644
> --- a/src/acpica/source/compiler/aslresource.c
> +++ b/src/acpica/source/compiler/aslresource.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -509,13 +509,14 @@ RsAllocateResourceNode (
>
> /*******************************************************************************
> *
> - * FUNCTION: RsCreateBitField
> + * FUNCTION: RsCreateResourceField
> *
> * PARAMETERS: Op - Resource field node
> * Name - Name of the field (Used only to reference
> * the field in the ASL, not in the AML)
> * ByteOffset - Offset from the field start
> * BitOffset - Additional bit offset
> + * BitLength - Number of bits in the field
> *
> * RETURN: None, sets fields within the input node
> *
> @@ -526,46 +527,20 @@ RsAllocateResourceNode (
> ******************************************************************************/
>
> void
> -RsCreateBitField (
> +RsCreateResourceField (
> ACPI_PARSE_OBJECT *Op,
> char *Name,
> UINT32 ByteOffset,
> - UINT32 BitOffset)
> + UINT32 BitOffset,
> + UINT32 BitLength)
> {
>
> - Op->Asl.ExternalName = Name;
> - Op->Asl.Value.Integer = ((UINT64) ByteOffset * 8) + BitOffset;
> - Op->Asl.CompileFlags |= (NODE_IS_RESOURCE_FIELD | NODE_IS_BIT_OFFSET);
> -}
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: RsCreateByteField
> - *
> - * PARAMETERS: Op - Resource field node
> - * Name - Name of the field (Used only to reference
> - * the field in the ASL, not in the AML)
> - * ByteOffset - Offset from the field start
> - *
> - * RETURN: None, sets fields within the input node
> - *
> - * DESCRIPTION: Utility function to generate a named byte field within a
> - * resource descriptor. Mark a node as 1) a field in a resource
> - * descriptor, and 2) set the value to be a BYTE offset
> - *
> - ******************************************************************************/
> + Op->Asl.ExternalName = Name;
> + Op->Asl.CompileFlags |= NODE_IS_RESOURCE_FIELD;
>
> -void
> -RsCreateByteField (
> - ACPI_PARSE_OBJECT *Op,
> - char *Name,
> - UINT32 ByteOffset)
> -{
>
> - Op->Asl.ExternalName = Name;
> - Op->Asl.Value.Integer = ByteOffset;
> - Op->Asl.CompileFlags |= NODE_IS_RESOURCE_FIELD;
> + Op->Asl.Value.Tag.BitOffset = (ByteOffset * 8) + BitOffset;
> + Op->Asl.Value.Tag.BitLength = BitLength;
> }
>
>
> @@ -610,6 +585,29 @@ RsSetFlagBits (
> }
>
>
> +void
> +RsSetFlagBits16 (
> + UINT16 *Flags,
> + ACPI_PARSE_OBJECT *Op,
> + UINT8 Position,
> + UINT8 DefaultBit)
> +{
> +
> + if (Op->Asl.ParseOpcode == PARSEOP_DEFAULT_ARG)
> + {
> + /* Use the default bit */
> +
> + *Flags |= (DefaultBit << Position);
> + }
> + else
> + {
> + /* Use the bit specified in the initialization node */
> +
> + *Flags |= (((UINT16) Op->Asl.Value.Integer) << Position);
> + }
> +}
> +
> +
> /*******************************************************************************
> *
> * FUNCTION: RsCompleteNodeAndGetNext
> @@ -734,6 +732,11 @@ RsDoOneResourceDescriptor (
> CurrentByteOffset);
> break;
>
> + case PARSEOP_FIXEDDMA:
> + Rnode = RsDoFixedDmaDescriptor (DescriptorTypeOp,
> + CurrentByteOffset);
> + break;
> +
> case PARSEOP_DWORDIO:
> Rnode = RsDoDwordIoDescriptor (DescriptorTypeOp,
> CurrentByteOffset);
> @@ -917,6 +920,31 @@ RsDoOneResourceDescriptor (
> CurrentByteOffset);
> break;
>
> + case PARSEOP_GPIO_INT:
> + Rnode = RsDoGpioIntDescriptor (DescriptorTypeOp,
> + CurrentByteOffset);
> + break;
> +
> + case PARSEOP_GPIO_IO:
> + Rnode = RsDoGpioIoDescriptor (DescriptorTypeOp,
> + CurrentByteOffset);
> + break;
> +
> + case PARSEOP_I2C_SERIALBUS:
> + Rnode = RsDoI2cSerialBusDescriptor (DescriptorTypeOp,
> + CurrentByteOffset);
> + break;
> +
> + case PARSEOP_SPI_SERIALBUS:
> + Rnode = RsDoSpiSerialBusDescriptor (DescriptorTypeOp,
> + CurrentByteOffset);
> + break;
> +
> + case PARSEOP_UART_SERIALBUS:
> + Rnode = RsDoUartSerialBusDescriptor (DescriptorTypeOp,
> + CurrentByteOffset);
> + break;
> +
> case PARSEOP_DEFAULT_ARG:
> /* Just ignore any of these, they are used as fillers/placeholders */
> break;
> @@ -1091,10 +1119,12 @@ RsDoResourceTemplate (
> Op->Asl.ParseOpcode = PARSEOP_BUFFER;
> Op->Asl.AmlOpcode = AML_BUFFER_OP;
> Op->Asl.CompileFlags = NODE_AML_PACKAGE | NODE_IS_RESOURCE_DESC;
> + UtSetParseOpName (Op);
>
> BufferLengthOp->Asl.ParseOpcode = PARSEOP_INTEGER;
> BufferLengthOp->Asl.Value.Integer = CurrentByteOffset;
> (void) OpcSetOptimalIntegerSize (BufferLengthOp);
> + UtSetParseOpName (BufferLengthOp);
>
> BufferOp->Asl.ParseOpcode = PARSEOP_RAW_DATA;
> BufferOp->Asl.AmlOpcode = AML_RAW_DATA_CHAIN;
> @@ -1102,8 +1132,7 @@ RsDoResourceTemplate (
> BufferOp->Asl.AmlLength = CurrentByteOffset;
> BufferOp->Asl.Value.Buffer = (UINT8 *) HeadRnode.Next;
> BufferOp->Asl.CompileFlags |= NODE_IS_RESOURCE_DATA;
> + UtSetParseOpName (BufferOp);
>
> return;
> }
> -
> -
> diff --git a/src/acpica/source/compiler/aslrestype1.c b/src/acpica/source/compiler/aslrestype1.c
> index 0d0e6cc..5b92151 100644
> --- a/src/acpica/source/compiler/aslrestype1.c
> +++ b/src/acpica/source/compiler/aslrestype1.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -251,7 +251,7 @@ RsDoMemory24Descriptor (
> case 1: /* Min Address */
>
> Descriptor->Memory24.Minimum = (UINT16) InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
> + RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.Minimum));
> MinOp = InitializerOp;
> break;
> @@ -259,7 +259,7 @@ RsDoMemory24Descriptor (
> case 2: /* Max Address */
>
> Descriptor->Memory24.Maximum = (UINT16) InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
> + RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.Maximum));
> MaxOp = InitializerOp;
> break;
> @@ -267,14 +267,14 @@ RsDoMemory24Descriptor (
> case 3: /* Alignment */
>
> Descriptor->Memory24.Alignment = (UINT16) InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_ALIGNMENT,
> + RsCreateWordField (InitializerOp, ACPI_RESTAG_ALIGNMENT,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.Alignment));
> break;
>
> case 4: /* Length */
>
> Descriptor->Memory24.AddressLength = (UINT16) InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
> + RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.AddressLength));
> LengthOp = InitializerOp;
> break;
> @@ -358,7 +358,7 @@ RsDoMemory32Descriptor (
> case 1: /* Min Address */
>
> Descriptor->Memory32.Minimum = (UINT32) InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
> + RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.Minimum));
> MinOp = InitializerOp;
> break;
> @@ -366,7 +366,7 @@ RsDoMemory32Descriptor (
> case 2: /* Max Address */
>
> Descriptor->Memory32.Maximum = (UINT32) InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
> + RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.Maximum));
> MaxOp = InitializerOp;
> break;
> @@ -374,7 +374,7 @@ RsDoMemory32Descriptor (
> case 3: /* Alignment */
>
> Descriptor->Memory32.Alignment = (UINT32) InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_ALIGNMENT,
> + RsCreateDwordField (InitializerOp, ACPI_RESTAG_ALIGNMENT,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.Alignment));
> AlignOp = InitializerOp;
> break;
> @@ -382,7 +382,7 @@ RsDoMemory32Descriptor (
> case 4: /* Length */
>
> Descriptor->Memory32.AddressLength = (UINT32) InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
> + RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.AddressLength));
> LengthOp = InitializerOp;
> break;
> @@ -462,14 +462,14 @@ RsDoMemory32FixedDescriptor (
> case 1: /* Address */
>
> Descriptor->FixedMemory32.Address = (UINT32) InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_BASEADDRESS,
> + RsCreateDwordField (InitializerOp, ACPI_RESTAG_BASEADDRESS,
> CurrentByteOffset + ASL_RESDESC_OFFSET (FixedMemory32.Address));
> break;
>
> case 2: /* Length */
>
> Descriptor->FixedMemory32.AddressLength = (UINT32) InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
> + RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH,
> CurrentByteOffset + ASL_RESDESC_OFFSET (FixedMemory32.AddressLength));
> break;
>
> @@ -525,6 +525,10 @@ RsDoStartDependentDescriptor (
> PreviousRnode = Rnode;
> Descriptor = Rnode->Buffer;
>
> + /* Increment offset past StartDependent descriptor */
> +
> + CurrentByteOffset += sizeof (AML_RESOURCE_START_DEPENDENT);
> +
> /* Descriptor has priority byte */
>
> Descriptor->StartDpf.DescriptorType = ACPI_RESOURCE_NAME_START_DEPENDENT |
> @@ -617,6 +621,10 @@ RsDoStartDependentNoPriDescriptor (
> ASL_RDESC_ST_DEPEND_SIZE;
> PreviousRnode = Rnode;
>
> + /* Increment offset past StartDependentNoPri descriptor */
> +
> + CurrentByteOffset += sizeof (AML_RESOURCE_START_DEPENDENT_NOPRIO);
> +
> /* Process all child initialization nodes */
>
> State = ACPI_RSTATE_START_DEPENDENT;
> diff --git a/src/acpica/source/compiler/aslrestype1i.c b/src/acpica/source/compiler/aslrestype1i.c
> index 491ae2f..8335e8f 100644
> --- a/src/acpica/source/compiler/aslrestype1i.c
> +++ b/src/acpica/source/compiler/aslrestype1i.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -125,6 +125,7 @@
> * This module contains the I/O-related small resource descriptors:
> *
> * DMA
> + * FixedDMA
> * FixedIO
> * IO
> * IRQ
> @@ -174,8 +175,8 @@ RsDoDmaDescriptor (
> case 0: /* DMA type */
>
> RsSetFlagBits (&Descriptor->Dma.Flags, InitializerOp, 5, 0);
> - RsCreateBitField (InitializerOp, ACPI_RESTAG_DMATYPE,
> - CurrentByteOffset + ASL_RESDESC_OFFSET (Dma.Flags), 5);
> + RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_DMATYPE,
> + CurrentByteOffset + ASL_RESDESC_OFFSET (Dma.Flags), 5, 2);
> break;
>
> case 1: /* Bus Master */
> @@ -188,8 +189,8 @@ RsDoDmaDescriptor (
> case 2: /* Xfer Type (transfer width) */
>
> RsSetFlagBits (&Descriptor->Dma.Flags, InitializerOp, 0, 0);
> - RsCreateBitField (InitializerOp, ACPI_RESTAG_XFERTYPE,
> - CurrentByteOffset + ASL_RESDESC_OFFSET (Dma.Flags), 0);
> + RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_XFERTYPE,
> + CurrentByteOffset + ASL_RESDESC_OFFSET (Dma.Flags), 0, 2);
> break;
>
> case 3: /* Name */
> @@ -254,6 +255,81 @@ RsDoDmaDescriptor (
>
> /*******************************************************************************
> *
> + * FUNCTION: RsDoFixedDmaDescriptor
> + *
> + * PARAMETERS: Op - Parent resource descriptor parse node
> + * CurrentByteOffset - Offset into the resource template AML
> + * buffer (to track references to the desc)
> + *
> + * RETURN: Completed resource node
> + *
> + * DESCRIPTION: Construct a short "FixedDMA" descriptor
> + *
> + ******************************************************************************/
> +
> +ASL_RESOURCE_NODE *
> +RsDoFixedDmaDescriptor (
> + ACPI_PARSE_OBJECT *Op,
> + UINT32 CurrentByteOffset)
> +{
> + AML_RESOURCE *Descriptor;
> + ACPI_PARSE_OBJECT *InitializerOp;
> + ASL_RESOURCE_NODE *Rnode;
> + UINT32 i;
> +
> +
> + InitializerOp = Op->Asl.Child;
> + Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_FIXED_DMA));
> +
> + Descriptor = Rnode->Buffer;
> + Descriptor->FixedDma.DescriptorType =
> + ACPI_RESOURCE_NAME_FIXED_DMA | ASL_RDESC_FIXED_DMA_SIZE;
> +
> + /* Process all child initialization nodes */
> +
> + for (i = 0; InitializerOp; i++)
> + {
> + switch (i)
> + {
> + case 0: /* DMA Request Lines [WORD] (_DMA) */
> +
> + Descriptor->FixedDma.RequestLines = (UINT16) InitializerOp->Asl.Value.Integer;
> + RsCreateWordField (InitializerOp, ACPI_RESTAG_DMA,
> + CurrentByteOffset + ASL_RESDESC_OFFSET (FixedDma.RequestLines));
> + break;
> +
> + case 1: /* DMA Channel [WORD] (_TYP) */
> +
> + Descriptor->FixedDma.Channels = (UINT16) InitializerOp->Asl.Value.Integer;
> + RsCreateWordField (InitializerOp, ACPI_RESTAG_DMATYPE,
> + CurrentByteOffset + ASL_RESDESC_OFFSET (FixedDma.Channels));
> + break;
> +
> + case 2: /* Transfer Width [BYTE] (_SIZ) */
> +
> + Descriptor->FixedDma.Width = (UINT8) InitializerOp->Asl.Value.Integer;
> + RsCreateByteField (InitializerOp, ACPI_RESTAG_XFERTYPE,
> + CurrentByteOffset + ASL_RESDESC_OFFSET (FixedDma.Width));
> + break;
> +
> + case 3: /* Descriptor Name (optional) */
> +
> + UtAttachNamepathToOwner (Op, InitializerOp);
> + break;
> +
> + default: /* Ignore any extra nodes */
> + break;
> + }
> +
> + InitializerOp = RsCompleteNodeAndGetNext (InitializerOp);
> + }
> +
> + return (Rnode);
> +}
> +
> +
> +/*******************************************************************************
> + *
> * FUNCTION: RsDoFixedIoDescriptor
> *
> * PARAMETERS: Op - Parent resource descriptor parse node
> @@ -295,7 +371,7 @@ RsDoFixedIoDescriptor (
>
> Descriptor->FixedIo.Address =
> (UINT16) InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_BASEADDRESS,
> + RsCreateWordField (InitializerOp, ACPI_RESTAG_BASEADDRESS,
> CurrentByteOffset + ASL_RESDESC_OFFSET (FixedIo.Address));
> AddressOp = InitializerOp;
> break;
> @@ -386,7 +462,7 @@ RsDoIoDescriptor (
>
> Descriptor->Io.Minimum =
> (UINT16) InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
> + RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Io.Minimum));
> MinOp = InitializerOp;
> break;
> @@ -395,7 +471,7 @@ RsDoIoDescriptor (
>
> Descriptor->Io.Maximum =
> (UINT16) InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
> + RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Io.Maximum));
> MaxOp = InitializerOp;
> break;
> @@ -552,7 +628,7 @@ RsDoIrqDescriptor (
>
> /* Create a named field at the start of the list */
>
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_INTERRUPT,
> + RsCreateWordField (InitializerOp, ACPI_RESTAG_INTERRUPT,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Irq.IrqMask));
> }
> break;
> @@ -652,7 +728,7 @@ RsDoIrqNoFlagsDescriptor (
>
> /* Create a named field at the start of the list */
>
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_INTERRUPT,
> + RsCreateWordField (InitializerOp, ACPI_RESTAG_INTERRUPT,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Irq.IrqMask));
> }
> break;
> diff --git a/src/acpica/source/compiler/aslrestype2.c b/src/acpica/source/compiler/aslrestype2.c
> index 7b3d869..f0de854 100644
> --- a/src/acpica/source/compiler/aslrestype2.c
> +++ b/src/acpica/source/compiler/aslrestype2.c
> @@ -1,4 +1,3 @@
> -
> /******************************************************************************
> *
> * Module Name: aslrestype2 - Miscellaneous Large resource descriptors
> @@ -9,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -192,7 +191,7 @@ RsDoGeneralRegisterDescriptor (
> case 3: /* Register Address */
>
> Descriptor->GenericReg.Address = InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_ADDRESS,
> + RsCreateQwordField (InitializerOp, ACPI_RESTAG_ADDRESS,
> CurrentByteOffset + ASL_RESDESC_OFFSET (GenericReg.Address));
> break;
>
> @@ -426,7 +425,7 @@ RsDoInterruptDescriptor (
>
> /* Create a named field at the start of the list */
>
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_INTERRUPT,
> + RsCreateDwordField (InitializerOp, ACPI_RESTAG_INTERRUPT,
> CurrentByteOffset +
> ASL_RESDESC_OFFSET (ExtendedIrq.Interrupts[0]));
> }
> diff --git a/src/acpica/source/compiler/aslrestype2d.c b/src/acpica/source/compiler/aslrestype2d.c
> index dc2482d..1ca0f2d 100644
> --- a/src/acpica/source/compiler/aslrestype2d.c
> +++ b/src/acpica/source/compiler/aslrestype2d.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -216,15 +216,15 @@ RsDoDwordIoDescriptor (
> case 4: /* Range Type */
>
> RsSetFlagBits (&Descriptor->Address32.SpecificFlags, InitializerOp, 0, 3);
> - RsCreateBitField (InitializerOp, ACPI_RESTAG_RANGETYPE,
> - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.SpecificFlags), 0);
> + RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_RANGETYPE,
> + CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.SpecificFlags), 0, 2);
> break;
>
> case 5: /* Address Granularity */
>
> Descriptor->Address32.Granularity =
> (UINT32) InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
> + RsCreateDwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Granularity));
> GranOp = InitializerOp;
> break;
> @@ -233,7 +233,7 @@ RsDoDwordIoDescriptor (
>
> Descriptor->Address32.Minimum =
> (UINT32) InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
> + RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Minimum));
> MinOp = InitializerOp;
> break;
> @@ -242,7 +242,7 @@ RsDoDwordIoDescriptor (
>
> Descriptor->Address32.Maximum =
> (UINT32) InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
> + RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Maximum));
> MaxOp = InitializerOp;
> break;
> @@ -251,7 +251,7 @@ RsDoDwordIoDescriptor (
>
> Descriptor->Address32.TranslationOffset =
> (UINT32) InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
> + RsCreateDwordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.TranslationOffset));
> break;
>
> @@ -259,7 +259,7 @@ RsDoDwordIoDescriptor (
>
> Descriptor->Address32.AddressLength =
> (UINT32) InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
> + RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.AddressLength));
> LengthOp = InitializerOp;
> break;
> @@ -448,8 +448,8 @@ RsDoDwordMemoryDescriptor (
> case 4: /* Memory Type */
>
> RsSetFlagBits (&Descriptor->Address32.SpecificFlags, InitializerOp, 1, 0);
> - RsCreateBitField (InitializerOp, ACPI_RESTAG_MEMTYPE,
> - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.SpecificFlags), 1);
> + RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_MEMTYPE,
> + CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.SpecificFlags), 1, 2);
> break;
>
> case 5: /* Read/Write Type */
> @@ -463,7 +463,7 @@ RsDoDwordMemoryDescriptor (
>
> Descriptor->Address32.Granularity =
> (UINT32) InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
> + RsCreateDwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Granularity));
> GranOp = InitializerOp;
> break;
> @@ -472,7 +472,7 @@ RsDoDwordMemoryDescriptor (
>
> Descriptor->Address32.Minimum =
> (UINT32) InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
> + RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Minimum));
> MinOp = InitializerOp;
> break;
> @@ -481,7 +481,7 @@ RsDoDwordMemoryDescriptor (
>
> Descriptor->Address32.Maximum =
> (UINT32) InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
> + RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Maximum));
> MaxOp = InitializerOp;
> break;
> @@ -490,7 +490,7 @@ RsDoDwordMemoryDescriptor (
>
> Descriptor->Address32.TranslationOffset =
> (UINT32) InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
> + RsCreateDwordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.TranslationOffset));
> break;
>
> @@ -498,7 +498,7 @@ RsDoDwordMemoryDescriptor (
>
> Descriptor->Address32.AddressLength =
> (UINT32) InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
> + RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.AddressLength));
> LengthOp = InitializerOp;
> break;
> @@ -560,8 +560,8 @@ RsDoDwordMemoryDescriptor (
> case 14: /* Address Range */
>
> RsSetFlagBits (&Descriptor->Address32.SpecificFlags, InitializerOp, 3, 0);
> - RsCreateBitField (InitializerOp, ACPI_RESTAG_MEMATTRIBUTES,
> - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.SpecificFlags), 3);
> + RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_MEMATTRIBUTES,
> + CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.SpecificFlags), 3, 2);
> break;
>
> case 15: /* Type */
> @@ -695,7 +695,7 @@ RsDoDwordSpaceDescriptor (
>
> Descriptor->Address32.Granularity =
> (UINT32) InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
> + RsCreateDwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Granularity));
> GranOp = InitializerOp;
> break;
> @@ -704,7 +704,7 @@ RsDoDwordSpaceDescriptor (
>
> Descriptor->Address32.Minimum =
> (UINT32) InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
> + RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Minimum));
> MinOp = InitializerOp;
> break;
> @@ -713,7 +713,7 @@ RsDoDwordSpaceDescriptor (
>
> Descriptor->Address32.Maximum =
> (UINT32) InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
> + RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Maximum));
> MaxOp = InitializerOp;
> break;
> @@ -722,7 +722,7 @@ RsDoDwordSpaceDescriptor (
>
> Descriptor->Address32.TranslationOffset =
> (UINT32) InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
> + RsCreateDwordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.TranslationOffset));
> break;
>
> @@ -730,7 +730,7 @@ RsDoDwordSpaceDescriptor (
>
> Descriptor->Address32.AddressLength =
> (UINT32) InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
> + RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.AddressLength));
> LengthOp = InitializerOp;
> break;
> diff --git a/src/acpica/source/compiler/aslrestype2e.c b/src/acpica/source/compiler/aslrestype2e.c
> index 89da933..e5fff47 100644
> --- a/src/acpica/source/compiler/aslrestype2e.c
> +++ b/src/acpica/source/compiler/aslrestype2e.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -208,14 +208,14 @@ RsDoExtendedIoDescriptor (
> case 4: /* Range Type */
>
> RsSetFlagBits (&Descriptor->ExtAddress64.SpecificFlags, InitializerOp, 0, 3);
> - RsCreateBitField (InitializerOp, ACPI_RESTAG_RANGETYPE,
> - CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.SpecificFlags), 0);
> + RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_RANGETYPE,
> + CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.SpecificFlags), 0, 2);
> break;
>
> case 5: /* Address Granularity */
>
> Descriptor->ExtAddress64.Granularity = InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
> + RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
> CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Granularity));
> GranOp = InitializerOp;
> break;
> @@ -223,7 +223,7 @@ RsDoExtendedIoDescriptor (
> case 6: /* Address Min */
>
> Descriptor->ExtAddress64.Minimum = InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
> + RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR,
> CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Minimum));
> MinOp = InitializerOp;
> break;
> @@ -231,7 +231,7 @@ RsDoExtendedIoDescriptor (
> case 7: /* Address Max */
>
> Descriptor->ExtAddress64.Maximum = InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
> + RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
> CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Maximum));
> MaxOp = InitializerOp;
> break;
> @@ -239,14 +239,14 @@ RsDoExtendedIoDescriptor (
> case 8: /* Translation Offset */
>
> Descriptor->ExtAddress64.TranslationOffset = InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
> + RsCreateQwordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
> CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TranslationOffset));
> break;
>
> case 9: /* Address Length */
>
> Descriptor->ExtAddress64.AddressLength = InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
> + RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH,
> CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.AddressLength));
> LengthOp = InitializerOp;
> break;
> @@ -254,7 +254,7 @@ RsDoExtendedIoDescriptor (
> case 10: /* Type-Specific Attributes */
>
> Descriptor->ExtAddress64.TypeSpecific = InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES,
> + RsCreateQwordField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES,
> CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TypeSpecific));
> break;
>
> @@ -381,8 +381,8 @@ RsDoExtendedMemoryDescriptor (
> case 4: /* Memory Type */
>
> RsSetFlagBits (&Descriptor->ExtAddress64.SpecificFlags, InitializerOp, 1, 0);
> - RsCreateBitField (InitializerOp, ACPI_RESTAG_MEMTYPE,
> - CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.SpecificFlags), 1);
> + RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_MEMTYPE,
> + CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.SpecificFlags), 1, 2);
> break;
>
> case 5: /* Read/Write Type */
> @@ -395,7 +395,7 @@ RsDoExtendedMemoryDescriptor (
> case 6: /* Address Granularity */
>
> Descriptor->ExtAddress64.Granularity = InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
> + RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
> CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Granularity));
> GranOp = InitializerOp;
> break;
> @@ -403,7 +403,7 @@ RsDoExtendedMemoryDescriptor (
> case 7: /* Min Address */
>
> Descriptor->ExtAddress64.Minimum = InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
> + RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR,
> CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Minimum));
> MinOp = InitializerOp;
> break;
> @@ -411,7 +411,7 @@ RsDoExtendedMemoryDescriptor (
> case 8: /* Max Address */
>
> Descriptor->ExtAddress64.Maximum = InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
> + RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
> CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Maximum));
> MaxOp = InitializerOp;
> break;
> @@ -419,14 +419,14 @@ RsDoExtendedMemoryDescriptor (
> case 9: /* Translation Offset */
>
> Descriptor->ExtAddress64.TranslationOffset = InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
> + RsCreateQwordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
> CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TranslationOffset));
> break;
>
> case 10: /* Address Length */
>
> Descriptor->ExtAddress64.AddressLength = InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
> + RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH,
> CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.AddressLength));
> LengthOp = InitializerOp;
> break;
> @@ -434,7 +434,7 @@ RsDoExtendedMemoryDescriptor (
> case 11: /* Type-Specific Attributes */
>
> Descriptor->ExtAddress64.TypeSpecific = InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES,
> + RsCreateQwordField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES,
> CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TypeSpecific));
> break;
>
> @@ -447,8 +447,8 @@ RsDoExtendedMemoryDescriptor (
> case 13: /* Address Range */
>
> RsSetFlagBits (&Descriptor->ExtAddress64.SpecificFlags, InitializerOp, 3, 0);
> - RsCreateBitField (InitializerOp, ACPI_RESTAG_MEMATTRIBUTES,
> - CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.SpecificFlags), 3);
> + RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_MEMATTRIBUTES,
> + CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.SpecificFlags), 3, 2);
> break;
>
> case 14: /* Type */
> @@ -573,7 +573,7 @@ RsDoExtendedSpaceDescriptor (
> case 6: /* Address Granularity */
>
> Descriptor->ExtAddress64.Granularity = InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
> + RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
> CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Granularity));
> GranOp = InitializerOp;
> break;
> @@ -581,7 +581,7 @@ RsDoExtendedSpaceDescriptor (
> case 7: /* Min Address */
>
> Descriptor->ExtAddress64.Minimum = InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
> + RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR,
> CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Minimum));
> MinOp = InitializerOp;
> break;
> @@ -589,7 +589,7 @@ RsDoExtendedSpaceDescriptor (
> case 8: /* Max Address */
>
> Descriptor->ExtAddress64.Maximum = InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
> + RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
> CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Maximum));
> MaxOp = InitializerOp;
> break;
> @@ -597,14 +597,14 @@ RsDoExtendedSpaceDescriptor (
> case 9: /* Translation Offset */
>
> Descriptor->ExtAddress64.TranslationOffset = InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
> + RsCreateQwordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
> CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TranslationOffset));
> break;
>
> case 10: /* Address Length */
>
> Descriptor->ExtAddress64.AddressLength = InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
> + RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH,
> CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.AddressLength));
> LengthOp = InitializerOp;
> break;
> @@ -612,7 +612,7 @@ RsDoExtendedSpaceDescriptor (
> case 11: /* Type-Specific Attributes */
>
> Descriptor->ExtAddress64.TypeSpecific = InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES,
> + RsCreateQwordField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES,
> CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TypeSpecific));
> break;
>
> diff --git a/src/acpica/source/compiler/aslrestype2q.c b/src/acpica/source/compiler/aslrestype2q.c
> index e652890..65c242a 100644
> --- a/src/acpica/source/compiler/aslrestype2q.c
> +++ b/src/acpica/source/compiler/aslrestype2q.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -216,14 +216,14 @@ RsDoQwordIoDescriptor (
> case 4: /* Range Type */
>
> RsSetFlagBits (&Descriptor->Address64.SpecificFlags, InitializerOp, 0, 3);
> - RsCreateBitField (InitializerOp, ACPI_RESTAG_RANGETYPE,
> - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.SpecificFlags), 0);
> + RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_RANGETYPE,
> + CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.SpecificFlags), 0, 2);
> break;
>
> case 5: /* Address Granularity */
>
> Descriptor->Address64.Granularity = InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
> + RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Granularity));
> GranOp = InitializerOp;
> break;
> @@ -231,7 +231,7 @@ RsDoQwordIoDescriptor (
> case 6: /* Address Min */
>
> Descriptor->Address64.Minimum = InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
> + RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Minimum));
> MinOp = InitializerOp;
> break;
> @@ -239,7 +239,7 @@ RsDoQwordIoDescriptor (
> case 7: /* Address Max */
>
> Descriptor->Address64.Maximum = InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
> + RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Maximum));
> MaxOp = InitializerOp;
> break;
> @@ -254,7 +254,7 @@ RsDoQwordIoDescriptor (
> case 9: /* Address Length */
>
> Descriptor->Address64.AddressLength = InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
> + RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.AddressLength));
> LengthOp = InitializerOp;
> break;
> @@ -438,8 +438,8 @@ RsDoQwordMemoryDescriptor (
> case 4: /* Memory Type */
>
> RsSetFlagBits (&Descriptor->Address64.SpecificFlags, InitializerOp, 1, 0);
> - RsCreateBitField (InitializerOp, ACPI_RESTAG_MEMTYPE,
> - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.SpecificFlags), 1);
> + RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_MEMTYPE,
> + CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.SpecificFlags), 1, 2);
> break;
>
> case 5: /* Read/Write Type */
> @@ -452,7 +452,7 @@ RsDoQwordMemoryDescriptor (
> case 6: /* Address Granularity */
>
> Descriptor->Address64.Granularity = InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
> + RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Granularity));
> GranOp = InitializerOp;
> break;
> @@ -460,7 +460,7 @@ RsDoQwordMemoryDescriptor (
> case 7: /* Min Address */
>
> Descriptor->Address64.Minimum = InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
> + RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Minimum));
> MinOp = InitializerOp;
> break;
> @@ -468,7 +468,7 @@ RsDoQwordMemoryDescriptor (
> case 8: /* Max Address */
>
> Descriptor->Address64.Maximum = InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
> + RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Maximum));
> MaxOp = InitializerOp;
> break;
> @@ -476,14 +476,14 @@ RsDoQwordMemoryDescriptor (
> case 9: /* Translation Offset */
>
> Descriptor->Address64.TranslationOffset = InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
> + RsCreateQwordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.TranslationOffset));
> break;
>
> case 10: /* Address Length */
>
> Descriptor->Address64.AddressLength = InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
> + RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.AddressLength));
> LengthOp = InitializerOp;
> break;
> @@ -545,8 +545,8 @@ RsDoQwordMemoryDescriptor (
> case 14: /* Address Range */
>
> RsSetFlagBits (&Descriptor->Address64.SpecificFlags, InitializerOp, 3, 0);
> - RsCreateBitField (InitializerOp, ACPI_RESTAG_MEMATTRIBUTES,
> - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.SpecificFlags), 3);
> + RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_MEMATTRIBUTES,
> + CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.SpecificFlags), 3, 2);
> break;
>
> case 15: /* Type */
> @@ -679,7 +679,7 @@ RsDoQwordSpaceDescriptor (
> case 6: /* Address Granularity */
>
> Descriptor->Address64.Granularity = InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
> + RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Granularity));
> GranOp = InitializerOp;
> break;
> @@ -687,7 +687,7 @@ RsDoQwordSpaceDescriptor (
> case 7: /* Min Address */
>
> Descriptor->Address64.Minimum = InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
> + RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Minimum));
> MinOp = InitializerOp;
> break;
> @@ -695,7 +695,7 @@ RsDoQwordSpaceDescriptor (
> case 8: /* Max Address */
>
> Descriptor->Address64.Maximum = InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
> + RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Maximum));
> MaxOp = InitializerOp;
> break;
> @@ -703,14 +703,14 @@ RsDoQwordSpaceDescriptor (
> case 9: /* Translation Offset */
>
> Descriptor->Address64.TranslationOffset = InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
> + RsCreateQwordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.TranslationOffset));
> break;
>
> case 10: /* Address Length */
>
> Descriptor->Address64.AddressLength = InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
> + RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.AddressLength));
> LengthOp = InitializerOp;
> break;
> diff --git a/src/acpica/source/compiler/aslrestype2w.c b/src/acpica/source/compiler/aslrestype2w.c
> index c9d98fe..79d7bcc 100644
> --- a/src/acpica/source/compiler/aslrestype2w.c
> +++ b/src/acpica/source/compiler/aslrestype2w.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -216,14 +216,14 @@ RsDoWordIoDescriptor (
> case 4: /* Range Type */
>
> RsSetFlagBits (&Descriptor->Address16.SpecificFlags, InitializerOp, 0, 3);
> - RsCreateBitField (InitializerOp, ACPI_RESTAG_RANGETYPE,
> - CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.SpecificFlags), 0);
> + RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_RANGETYPE,
> + CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.SpecificFlags), 0, 2);
> break;
>
> case 5: /* Address Granularity */
>
> Descriptor->Address16.Granularity = (UINT16) InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
> + RsCreateWordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Granularity));
> GranOp = InitializerOp;
> break;
> @@ -231,7 +231,7 @@ RsDoWordIoDescriptor (
> case 6: /* Address Min */
>
> Descriptor->Address16.Minimum = (UINT16) InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
> + RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Minimum));
> MinOp = InitializerOp;
> break;
> @@ -239,7 +239,7 @@ RsDoWordIoDescriptor (
> case 7: /* Address Max */
>
> Descriptor->Address16.Maximum = (UINT16) InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
> + RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Maximum));
> MaxOp = InitializerOp;
> break;
> @@ -247,14 +247,14 @@ RsDoWordIoDescriptor (
> case 8: /* Translation Offset */
>
> Descriptor->Address16.TranslationOffset = (UINT16) InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
> + RsCreateWordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.TranslationOffset));
> break;
>
> case 9: /* Address Length */
>
> Descriptor->Address16.AddressLength = (UINT16) InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
> + RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.AddressLength));
> LengthOp = InitializerOp;
> break;
> @@ -439,7 +439,7 @@ RsDoWordBusNumberDescriptor (
>
> Descriptor->Address16.Granularity =
> (UINT16) InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
> + RsCreateWordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Granularity));
> GranOp = InitializerOp;
> break;
> @@ -448,7 +448,7 @@ RsDoWordBusNumberDescriptor (
>
> Descriptor->Address16.Minimum =
> (UINT16) InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
> + RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Minimum));
> MinOp = InitializerOp;
> break;
> @@ -457,7 +457,7 @@ RsDoWordBusNumberDescriptor (
>
> Descriptor->Address16.Maximum =
> (UINT16) InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
> + RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Maximum));
> MaxOp = InitializerOp;
> break;
> @@ -466,7 +466,7 @@ RsDoWordBusNumberDescriptor (
>
> Descriptor->Address16.TranslationOffset =
> (UINT16) InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
> + RsCreateWordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.TranslationOffset));
> break;
>
> @@ -474,7 +474,7 @@ RsDoWordBusNumberDescriptor (
>
> Descriptor->Address16.AddressLength =
> (UINT16) InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
> + RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.AddressLength));
> LengthOp = InitializerOp;
> break;
> @@ -656,7 +656,7 @@ RsDoWordSpaceDescriptor (
>
> Descriptor->Address16.Granularity =
> (UINT16) InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
> + RsCreateWordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Granularity));
> GranOp = InitializerOp;
> break;
> @@ -665,7 +665,7 @@ RsDoWordSpaceDescriptor (
>
> Descriptor->Address16.Minimum =
> (UINT16) InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
> + RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Minimum));
> MinOp = InitializerOp;
> break;
> @@ -674,7 +674,7 @@ RsDoWordSpaceDescriptor (
>
> Descriptor->Address16.Maximum =
> (UINT16) InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
> + RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Maximum));
> MaxOp = InitializerOp;
> break;
> @@ -683,7 +683,7 @@ RsDoWordSpaceDescriptor (
>
> Descriptor->Address16.TranslationOffset =
> (UINT16) InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
> + RsCreateWordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.TranslationOffset));
> break;
>
> @@ -691,7 +691,7 @@ RsDoWordSpaceDescriptor (
>
> Descriptor->Address16.AddressLength =
> (UINT16) InitializerOp->Asl.Value.Integer;
> - RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
> + RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH,
> CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.AddressLength));
> LengthOp = InitializerOp;
> break;
> diff --git a/src/acpica/source/compiler/aslstartup.c b/src/acpica/source/compiler/aslstartup.c
> index 6c3ba54..49b25d9 100644
> --- a/src/acpica/source/compiler/aslstartup.c
> +++ b/src/acpica/source/compiler/aslstartup.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -167,6 +167,8 @@ AslInitializeGlobals (
> Gbl_LogicalLineNumber = 1;
> Gbl_CurrentLineOffset = 0;
> Gbl_InputFieldCount = 0;
> + Gbl_InputByteCount = 0;
> + Gbl_NsLookupCount = 0;
> Gbl_LineBufPtr = Gbl_CurrentLineBuffer;
>
> Gbl_ErrorLog = NULL;
> @@ -174,17 +176,26 @@ AslInitializeGlobals (
> Gbl_Signature = NULL;
> Gbl_FileType = 0;
>
> + TotalExecutableOpcodes = 0;
> + TotalNamedObjects = 0;
> + TotalKeywords = 0;
> + TotalParseNodes = 0;
> + TotalMethods = 0;
> + TotalAllocations = 0;
> + TotalAllocated = 0;
> + TotalFolds = 0;
> +
> AslGbl_NextEvent = 0;
> for (i = 0; i < ASL_NUM_REPORT_LEVELS; i++)
> {
> Gbl_ExceptionCount[i] = 0;
> }
>
> - Gbl_Files[ASL_FILE_AML_OUTPUT].Filename = NULL;
> - Gbl_Files[ASL_FILE_AML_OUTPUT].Handle = NULL;
> -
> - Gbl_Files[ASL_FILE_SOURCE_OUTPUT].Filename = NULL;
> - Gbl_Files[ASL_FILE_SOURCE_OUTPUT].Handle = NULL;
> + for (i = ASL_FILE_INPUT; i <= ASL_MAX_FILE_TYPE; i++)
> + {
> + Gbl_Files[i].Handle = NULL;
> + Gbl_Files[i].Filename = NULL;
> + }
> }
>
>
> @@ -354,11 +365,12 @@ AslDoOneFile (
> ACPI_STATUS Status;
>
>
> - Gbl_Files[ASL_FILE_INPUT].Filename = Filename;
> -
> - /* Re-initialize "some" compiler globals */
> + /* Re-initialize "some" compiler/preprocessor globals */
>
> AslInitializeGlobals ();
> + PrInitializeGlobals ();
> +
> + Gbl_Files[ASL_FILE_INPUT].Filename = Filename;
>
> /*
> * AML Disassembly (Optional)
> @@ -464,17 +476,33 @@ AslDoOneFile (
> case ASL_INPUT_TYPE_ASCII_DATA:
>
> Status = DtDoCompile ();
> + if (ACPI_FAILURE (Status))
> + {
> + return (Status);
> + }
>
> if (Gbl_Signature)
> {
> ACPI_FREE (Gbl_Signature);
> Gbl_Signature = NULL;
> }
> +
> + /* Check if any errors occurred during compile */
> +
> + Status = AslCheckForErrorExit ();
> + if (ACPI_FAILURE (Status))
> + {
> + return (Status);
> + }
> +
> + /* Cleanup (for next source file) and exit */
> +
> AeClearErrorLog ();
> + PrTerminatePreprocessor ();
> return (Status);
>
> /*
> - * ASL Compilation (Optional)
> + * ASL Compilation
> */
> case ASL_INPUT_TYPE_ASCII_ASL:
>
> @@ -486,19 +514,21 @@ AslDoOneFile (
> return (Status);
> }
>
> - Status = CmDoCompile ();
> + (void) CmDoCompile ();
> (void) AcpiTerminate ();
>
> - /*
> - * Return non-zero exit code if there have been errors, unless the
> - * global ignore error flag has been set
> - */
> - if ((Gbl_ExceptionCount[ASL_ERROR] > 0) && (!Gbl_IgnoreErrors))
> + /* Check if any errors occurred during compile */
> +
> + Status = AslCheckForErrorExit ();
> + if (ACPI_FAILURE (Status))
> {
> - return (AE_ERROR);
> + return (Status);
> }
>
> + /* Cleanup (for next source file) and exit */
> +
> AeClearErrorLog ();
> + PrTerminatePreprocessor ();
> return (AE_OK);
>
> case ASL_INPUT_TYPE_BINARY:
> @@ -583,3 +613,47 @@ AslDoOnePathname (
> return (Status);
> }
>
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AslCheckForErrorExit
> + *
> + * PARAMETERS: None. Examines global exception count array
> + *
> + * RETURN: Status
> + *
> + * DESCRIPTION: Determine if compiler should abort with error status
> + *
> + ******************************************************************************/
> +
> +ACPI_STATUS
> +AslCheckForErrorExit (
> + void)
> +{
> +
> + /*
> + * Return non-zero exit code if there have been errors, unless the
> + * global ignore error flag has been set
> + */
> + if (!Gbl_IgnoreErrors)
> + {
> + if (Gbl_ExceptionCount[ASL_ERROR] > 0)
> + {
> + return (AE_ERROR);
> + }
> +
> + /* Optionally treat warnings as errors */
> +
> + if (Gbl_WarningsAsErrors)
> + {
> + if ((Gbl_ExceptionCount[ASL_WARNING] > 0) ||
> + (Gbl_ExceptionCount[ASL_WARNING2] > 0) ||
> + (Gbl_ExceptionCount[ASL_WARNING3] > 0))
> + {
> + return (AE_ERROR);
> + }
> + }
> + }
> +
> + return (AE_OK);
> +}
> diff --git a/src/acpica/source/compiler/aslstubs.c b/src/acpica/source/compiler/aslstubs.c
> index 69d30b0..bc8703c 100644
> --- a/src/acpica/source/compiler/aslstubs.c
> +++ b/src/acpica/source/compiler/aslstubs.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -200,13 +200,6 @@ AcpiDsStoreObjectToLocal (
> }
>
> ACPI_STATUS
> -AcpiEvDeleteGpeBlock (
> - ACPI_GPE_BLOCK_INFO *GpeBlock)
> -{
> - return (AE_OK);
> -}
> -
> -ACPI_STATUS
> AcpiEvQueueNotifyRequest (
> ACPI_NAMESPACE_NODE *Node,
> UINT32 NotifyValue)
> @@ -221,6 +214,14 @@ AcpiEvIsNotifyObject (
> return (FALSE);
> }
>
> +#if (!ACPI_REDUCED_HARDWARE)
> +ACPI_STATUS
> +AcpiEvDeleteGpeBlock (
> + ACPI_GPE_BLOCK_INFO *GpeBlock)
> +{
> + return (AE_OK);
> +}
> +
> ACPI_STATUS
> AcpiEvAcquireGlobalLock (
> UINT16 Timeout)
> @@ -234,6 +235,7 @@ AcpiEvReleaseGlobalLock (
> {
> return (AE_OK);
> }
> +#endif /* !ACPI_REDUCED_HARDWARE */
>
> ACPI_STATUS
> AcpiEvInitializeRegion (
> diff --git a/src/acpica/source/compiler/asltransform.c b/src/acpica/source/compiler/asltransform.c
> index b589040..0710b40 100644
> --- a/src/acpica/source/compiler/asltransform.c
> +++ b/src/acpica/source/compiler/asltransform.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -470,6 +470,7 @@ TrDoSwitch (
> ACPI_PARSE_OBJECT *MethodOp;
> ACPI_PARSE_OBJECT *StoreOp;
> ACPI_PARSE_OBJECT *BreakOp;
> + ACPI_PARSE_OBJECT *BufferOp;
> char *PredicateValueName;
> UINT16 Index;
> UINT32 Btype;
> @@ -719,6 +720,7 @@ TrDoSwitch (
>
> Predicate = StartNode->Asl.Child;
> NewOp = TrCreateLeafNode (PARSEOP_NAME);
> + TrAmlInitLineNumbers (NewOp, StartNode);
>
> /* Find the parent method */
>
> @@ -762,6 +764,7 @@ TrDoSwitch (
>
> NewOp2 = TrCreateValuedLeafNode (PARSEOP_NAMESEG,
> (UINT64) ACPI_TO_INTEGER (PredicateValueName));
> + TrAmlInitLineNumbers (NewOp2, NewOp);
> NewOp2->Asl.CompileFlags |= NODE_IS_NAME_DECLARATION;
> NewOp->Asl.Child = NewOp2;
>
> @@ -772,21 +775,27 @@ TrDoSwitch (
> case ACPI_BTYPE_INTEGER:
> NewOp2->Asl.Next = TrCreateValuedLeafNode (PARSEOP_ZERO,
> (UINT64) 0);
> + TrAmlInitLineNumbers (NewOp2->Asl.Next, NewOp);
> break;
>
> case ACPI_BTYPE_STRING:
> NewOp2->Asl.Next = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL,
> (UINT64) ACPI_TO_INTEGER (""));
> + TrAmlInitLineNumbers (NewOp2->Asl.Next, NewOp);
> break;
>
> case ACPI_BTYPE_BUFFER:
> (void) TrLinkPeerNode (NewOp2, TrCreateValuedLeafNode (PARSEOP_BUFFER,
> (UINT64) 0));
> Next = NewOp2->Asl.Next;
> + TrAmlInitLineNumbers (Next, NewOp2);
> (void) TrLinkChildren (Next, 1, TrCreateValuedLeafNode (PARSEOP_ZERO,
> (UINT64) 1));
> - (void) TrLinkPeerNode (Next->Asl.Child,
> - TrCreateValuedLeafNode (PARSEOP_DEFAULT_ARG, (UINT64) 0));
> + TrAmlInitLineNumbers (Next->Asl.Child, Next);
> +
> + BufferOp = TrCreateValuedLeafNode (PARSEOP_DEFAULT_ARG, (UINT64) 0);
> + TrAmlInitLineNumbers (BufferOp, Next->Asl.Child);
> + (void) TrLinkPeerNode (Next->Asl.Child, BufferOp);
>
> TrAmlSetSubtreeParent (Next->Asl.Child, Next);
> break;
> @@ -805,6 +814,7 @@ TrDoSwitch (
> */
> TrAmlInitNode (StartNode, PARSEOP_WHILE);
> NewOp = TrCreateLeafNode (PARSEOP_ONE);
> + TrAmlInitLineNumbers (NewOp, StartNode);
> NewOp->Asl.Next = Predicate->Asl.Next;
> NewOp->Asl.Parent = StartNode;
> StartNode->Asl.Child = NewOp;
> @@ -812,6 +822,7 @@ TrDoSwitch (
> /* Create a Store() node */
>
> StoreOp = TrCreateLeafNode (PARSEOP_STORE);
> + TrAmlInitLineNumbers (StoreOp, NewOp);
> StoreOp->Asl.Parent = StartNode;
> TrAmlInsertPeer (NewOp, StoreOp);
>
> @@ -822,6 +833,7 @@ TrDoSwitch (
>
> NewOp = TrCreateValuedLeafNode (PARSEOP_NAMESEG,
> (UINT64) ACPI_TO_INTEGER (PredicateValueName));
> + TrAmlInitLineNumbers (NewOp, StoreOp);
> NewOp->Asl.Parent = StoreOp;
> Predicate->Asl.Next = NewOp;
>
> @@ -834,6 +846,7 @@ TrDoSwitch (
> }
>
> BreakOp = TrCreateLeafNode (PARSEOP_BREAK);
> + TrAmlInitLineNumbers (BreakOp, NewOp);
> BreakOp->Asl.Parent = StartNode;
> TrAmlInsertPeer (Conditional, BreakOp);
> }
> diff --git a/src/acpica/source/compiler/asltree.c b/src/acpica/source/compiler/asltree.c
> index 88b33c3..f7a5fd7 100644
> --- a/src/acpica/source/compiler/asltree.c
> +++ b/src/acpica/source/compiler/asltree.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -117,6 +117,7 @@
>
> #include "aslcompiler.h"
> #include "aslcompiler.y.h"
> +#include "acapps.h"
> #include <time.h>
>
> #define _COMPONENT ACPI_COMPILER
> @@ -359,9 +360,6 @@ TrGetNodeFlagName (
> case NODE_METHOD_TYPED:
> return ("NODE_METHOD_TYPED");
>
> - case NODE_IS_BIT_OFFSET:
> - return ("NODE_IS_BIT_OFFSET");
> -
> case NODE_COMPILE_TIME_CONST:
> return ("NODE_COMPILE_TIME_CONST");
>
> @@ -500,6 +498,8 @@ TrCreateConstantLeafNode (
> time_t CurrentTime;
> char *StaticTimeString;
> char *TimeString;
> + char *Path;
> + char *Filename;
>
>
> switch (ParseOpcode)
> @@ -509,7 +509,7 @@ TrCreateConstantLeafNode (
> Op->Asl.Value.Integer = Op->Asl.LineNumber;
> break;
>
> - case PARSEOP___FILE__:
> + case PARSEOP___PATH__:
> Op = TrAllocateNode (PARSEOP_STRING_LITERAL);
>
> /* Op.Asl.Filename contains the full pathname to the file */
> @@ -517,7 +517,17 @@ TrCreateConstantLeafNode (
> Op->Asl.Value.String = Op->Asl.Filename;
> break;
>
> - case PARSEOP___DATE__:
> + case PARSEOP___FILE__:
> + Op = TrAllocateNode (PARSEOP_STRING_LITERAL);
> +
> + /* Get the simple filename from the full path */
> +
> + FlSplitInputPathname (Op->Asl.Filename, &Path, &Filename);
> + ACPI_FREE (Path);
> + Op->Asl.Value.String = Filename;
> + break;
> +
> + case PARSEOP___DATE__:
> Op = TrAllocateNode (PARSEOP_STRING_LITERAL);
>
> /* Get a copy of the current time */
> diff --git a/src/acpica/source/compiler/asltypes.h b/src/acpica/source/compiler/asltypes.h
> index 64e0c60..f208202 100644
> --- a/src/acpica/source/compiler/asltypes.h
> +++ b/src/acpica/source/compiler/asltypes.h
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -140,7 +140,7 @@
> #define NODE_METHOD_SOME_NO_RETVAL 0x00000200
> #define NODE_RESULT_NOT_USED 0x00000400
> #define NODE_METHOD_TYPED 0x00000800
> -#define NODE_IS_BIT_OFFSET 0x00001000
> +#define NODE_UNUSED_FLAG 0x00001000
> #define NODE_COMPILE_TIME_CONST 0x00002000
> #define NODE_IS_TERM_ARG 0x00004000
> #define NODE_WAS_ONES_OP 0x00008000
> @@ -216,15 +216,18 @@ typedef struct asl_file_status
> } ASL_FILE_STATUS;
>
>
> -/* File types */
> -
> +/*
> + * File types. Note: Any changes to this table must also be reflected
> + * in the AslFileTypeNames array.
> + */
> typedef enum
> {
> ASL_FILE_STDOUT = 0,
> ASL_FILE_STDERR,
> - ASL_FILE_INPUT,
> + ASL_FILE_INPUT, /* Don't move these first 3 file types */
> ASL_FILE_AML_OUTPUT,
> ASL_FILE_SOURCE_OUTPUT,
> + ASL_FILE_PREPROCESSOR,
> ASL_FILE_LISTING_OUTPUT,
> ASL_FILE_HEX_OUTPUT,
> ASL_FILE_NAMESPACE_OUTPUT,
> @@ -237,7 +240,7 @@ typedef enum
> } ASL_FILE_TYPES;
>
>
> -#define ASL_MAX_FILE_TYPE 12
> +#define ASL_MAX_FILE_TYPE 13
> #define ASL_NUM_FILES (ASL_MAX_FILE_TYPE + 1)
>
>
> @@ -260,6 +263,7 @@ typedef struct asl_error_msg
> char *Message;
> struct asl_error_msg *Next;
> char *Filename;
> + char *SourceLine;
> UINT32 FilenameLength;
> UINT8 MessageId;
> UINT8 Level;
> diff --git a/src/acpica/source/compiler/aslutils.c b/src/acpica/source/compiler/aslutils.c
> index c9a7c96..8a7dbba 100644
> --- a/src/acpica/source/compiler/aslutils.c
> +++ b/src/acpica/source/compiler/aslutils.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -125,11 +125,32 @@
> #define _COMPONENT ACPI_COMPILER
> ACPI_MODULE_NAME ("aslutils")
>
> +
> char AslHexLookup[] =
> {
> '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'
> };
>
> +/* Table below must match ASL_FILE_TYPES in asltypes.h */
> +
> +static const char *AslFileTypeNames [ASL_NUM_FILES] =
> +{
> + "stdout: ",
> + "stderr: ",
> + "Table Input: ",
> + "Binary Output:",
> + "Source Output:",
> + "Preprocessor: ",
> + "Listing File: ",
> + "Hex Dump: ",
> + "Namespace: ",
> + "Debug File: ",
> + "ASM Source: ",
> + "C Source: ",
> + "ASM Include: ",
> + "C Include: "
> +};
> +
>
> /* Local prototypes */
>
> @@ -523,35 +544,40 @@ void
> UtDisplaySummary (
> UINT32 FileId)
> {
> + UINT32 i;
> +
>
> if (FileId != ASL_FILE_STDOUT)
> {
> /* Compiler name and version number */
>
> - FlPrintFile (FileId, "%s version %X%s [%s]\n",
> + FlPrintFile (FileId, "%s version %X%s [%s]\n\n",
> ASL_COMPILER_NAME, (UINT32) ACPI_CA_VERSION, ACPI_WIDTH, __DATE__);
> }
>
> + /* Summary of main input and output files */
> +
> if (Gbl_FileType == ASL_INPUT_TYPE_ASCII_DATA)
> {
> FlPrintFile (FileId,
> - "Table Input: %s - %u lines, %u bytes, %u fields\n",
> + "%-14s %s - %u lines, %u bytes, %u fields\n",
> + "Table Input:",
> Gbl_Files[ASL_FILE_INPUT].Filename, Gbl_CurrentLineNumber,
> Gbl_InputByteCount, Gbl_InputFieldCount);
>
> if ((Gbl_ExceptionCount[ASL_ERROR] == 0) || (Gbl_IgnoreErrors))
> {
> FlPrintFile (FileId,
> - "Binary Output: %s - %u bytes\n\n",
> + "%-14s %s - %u bytes\n",
> + "Binary Output:",
> Gbl_Files[ASL_FILE_AML_OUTPUT].Filename, Gbl_TableLength);
> }
> }
> else
> {
> - /* Input/Output summary */
> -
> FlPrintFile (FileId,
> - "ASL Input: %s - %u lines, %u bytes, %u keywords\n",
> + "%-14s %s - %u lines, %u bytes, %u keywords\n",
> + "ASL Input:",
> Gbl_Files[ASL_FILE_INPUT].Filename, Gbl_CurrentLineNumber,
> Gbl_InputByteCount, TotalKeywords);
>
> @@ -560,16 +586,45 @@ UtDisplaySummary (
> if ((Gbl_ExceptionCount[ASL_ERROR] == 0) || (Gbl_IgnoreErrors))
> {
> FlPrintFile (FileId,
> - "AML Output: %s - %u bytes, %u named objects, %u executable opcodes\n\n",
> + "%-14s %s - %u bytes, %u named objects, %u executable opcodes\n",
> + "AML Output:",
> Gbl_Files[ASL_FILE_AML_OUTPUT].Filename, Gbl_TableLength,
> TotalNamedObjects, TotalExecutableOpcodes);
> }
> }
>
> + /* Display summary of any optional files */
> +
> + for (i = ASL_FILE_SOURCE_OUTPUT; i <= ASL_MAX_FILE_TYPE; i++)
> + {
> + if (!Gbl_Files[i].Filename || !Gbl_Files[i].Handle)
> + {
> + continue;
> + }
> +
> + /* .SRC is a temp file unless specifically requested */
> +
> + if ((i == ASL_FILE_SOURCE_OUTPUT) && (!Gbl_SourceOutputFlag))
> + {
> + continue;
> + }
> +
> + /* .I is a temp file unless specifically requested */
> +
> + if ((i == ASL_FILE_PREPROCESSOR) && (!Gbl_PreprocessorOutputFlag))
> + {
> + continue;
> + }
> +
> + FlPrintFile (FileId, "%14s %s - %u bytes\n",
> + AslFileTypeNames [i],
> + Gbl_Files[i].Filename, FlGetFileSize (i));
> + }
> +
> /* Error summary */
>
> FlPrintFile (FileId,
> - "Compilation complete. %u Errors, %u Warnings, %u Remarks",
> + "\nCompilation complete. %u Errors, %u Warnings, %u Remarks",
> Gbl_ExceptionCount[ASL_ERROR],
> Gbl_ExceptionCount[ASL_WARNING] +
> Gbl_ExceptionCount[ASL_WARNING2] +
> diff --git a/src/acpica/source/compiler/asluuid.c b/src/acpica/source/compiler/asluuid.c
> index ca6f089..93d56a3 100644
> --- a/src/acpica/source/compiler/asluuid.c
> +++ b/src/acpica/source/compiler/asluuid.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/compiler/aslwalks.c b/src/acpica/source/compiler/aslwalks.c
> index ae1716a..ac483b8 100644
> --- a/src/acpica/source/compiler/aslwalks.c
> +++ b/src/acpica/source/compiler/aslwalks.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -1104,6 +1104,7 @@ AnOtherSemanticAnalysisWalkBegin (
> ACPI_PARSE_OBJECT *ArgNode;
> ACPI_PARSE_OBJECT *PrevArgNode = NULL;
> const ACPI_OPCODE_INFO *OpInfo;
> + ACPI_NAMESPACE_NODE *Node;
>
>
> OpInfo = AcpiPsGetOpcodeInfo (Op->Asl.AmlOpcode);
> @@ -1228,6 +1229,78 @@ AnOtherSemanticAnalysisWalkBegin (
> }
> break;
>
> + case PARSEOP_CONNECTION:
> + /*
> + * Ensure that the referenced operation region has the correct SPACE_ID.
> + * From the grammar/parser, we know the parent is a FIELD definition.
> + */
> + ArgNode = Op->Asl.Parent; /* Field definition */
> + ArgNode = ArgNode->Asl.Child; /* First child is the OpRegion Name */
> + Node = ArgNode->Asl.Node; /* OpRegion namespace node */
> +
> + ArgNode = Node->Op; /* OpRegion definition */
> + ArgNode = ArgNode->Asl.Child; /* First child is the OpRegion Name */
> + ArgNode = ArgNode->Asl.Next; /* Next peer is the SPACE_ID (what we want) */
> +
> + /*
> + * The Connection() operator is only valid for the following operation
> + * region SpaceIds: GeneralPurposeIo and GenericSerialBus.
> + */
> + if ((ArgNode->Asl.Value.Integer != ACPI_ADR_SPACE_GPIO) &&
> + (ArgNode->Asl.Value.Integer != ACPI_ADR_SPACE_GSBUS))
> + {
> + AslError (ASL_ERROR, ASL_MSG_CONNECTION_INVALID, Op, NULL);
> + }
> + break;
> +
> + case PARSEOP_FIELD:
> + /*
> + * Ensure that fields for GeneralPurposeIo and GenericSerialBus
> + * contain at least one Connection() operator
> + */
> + ArgNode = Op->Asl.Child; /* 1st child is the OpRegion Name */
> + Node = ArgNode->Asl.Node; /* OpRegion namespace node */
> + if (!Node)
> + {
> + break;
> + }
> +
> + ArgNode = Node->Op; /* OpRegion definition */
> + ArgNode = ArgNode->Asl.Child; /* First child is the OpRegion Name */
> + ArgNode = ArgNode->Asl.Next; /* Next peer is the SPACE_ID (what we want) */
> +
> + /* We are only interested in GeneralPurposeIo and GenericSerialBus */
> +
> + if ((ArgNode->Asl.Value.Integer != ACPI_ADR_SPACE_GPIO) &&
> + (ArgNode->Asl.Value.Integer != ACPI_ADR_SPACE_GSBUS))
> + {
> + break;
> + }
> +
> + ArgNode = Op->Asl.Child; /* 1st child is the OpRegion Name */
> + ArgNode = ArgNode->Asl.Next; /* AccessType */
> + ArgNode = ArgNode->Asl.Next; /* LockRule */
> + ArgNode = ArgNode->Asl.Next; /* UpdateRule */
> + ArgNode = ArgNode->Asl.Next; /* Start of FieldUnitList */
> +
> + /* Walk the FieldUnitList */
> +
> + while (ArgNode)
> + {
> + if (ArgNode->Asl.ParseOpcode == PARSEOP_CONNECTION)
> + {
> + break;
> + }
> + else if (ArgNode->Asl.ParseOpcode == PARSEOP_NAMESEG)
> + {
> + AslError (ASL_ERROR, ASL_MSG_CONNECTION_MISSING, ArgNode, NULL);
> + break;
> + }
> +
> + ArgNode = ArgNode->Asl.Next;
> + }
> + break;
> +
> default:
> break;
> }
> diff --git a/src/acpica/source/compiler/dtcompile.c b/src/acpica/source/compiler/dtcompile.c
> index 86264fd..6c937d2 100644
> --- a/src/acpica/source/compiler/dtcompile.c
> +++ b/src/acpica/source/compiler/dtcompile.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -173,6 +173,17 @@ DtDoCompile (
> return (Status);
> }
>
> + /* Preprocessor */
> +
> + Event = UtBeginEvent ("Preprocess input file");
> + PrDoPreprocess ();
> + UtEndEvent (Event);
> +
> + if (Gbl_PreprocessOnly)
> + {
> + return AE_OK;
> + }
> +
> /*
> * Scan the input file (file is already open) and
> * build the parse tree
> @@ -382,6 +393,17 @@ DtCompileDataTable (
> Status = DtCompileRsdp (FieldList);
> return (Status);
> }
> + else if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_S3PT))
> + {
> + Status = DtCompileS3pt (FieldList);
> + if (ACPI_FAILURE (Status))
> + {
> + return (Status);
> + }
> +
> + DtSetTableLength ();
> + return (Status);
> + }
>
> /*
> * All other tables must use the common ACPI table header. Insert the
> @@ -401,7 +423,7 @@ DtCompileDataTable (
> /* Validate the signature via the ACPI table list */
>
> TableData = AcpiDmGetTableData (Signature);
> - if (!TableData)
> + if (!TableData || Gbl_CompileGeneric)
> {
> DtCompileGeneric ((void **) FieldList);
> goto Out;
> @@ -483,6 +505,7 @@ DtCompileTable (
> UINT8 FieldType;
> UINT8 *Buffer;
> UINT8 *FlagBuffer = NULL;
> + UINT32 CurrentFlagByteOffset = 0;
> ACPI_STATUS Status;
>
>
> @@ -514,6 +537,11 @@ DtCompileTable (
> */
> for (; Info->Name; Info++)
> {
> + if (Info->Opcode == ACPI_DMT_EXTRA_TEXT)
> + {
> + continue;
> + }
> +
> if (!LocalField)
> {
> sprintf (MsgBuffer, "Found NULL field - Field name \"%s\" needed",
> @@ -544,6 +572,7 @@ DtCompileTable (
> *Field = LocalField;
>
> FlagBuffer = Buffer;
> + CurrentFlagByteOffset = Info->Offset;
> break;
>
> case DT_FIELD_TYPE_FLAG:
> @@ -552,6 +581,14 @@ DtCompileTable (
>
> if (FlagBuffer)
> {
> + /*
> + * We must increment the FlagBuffer when we have crossed
> + * into the next flags byte within the flags field
> + * of type DT_FIELD_TYPE_FLAGS_INTEGER.
> + */
> + FlagBuffer += (Info->Offset - CurrentFlagByteOffset);
> + CurrentFlagByteOffset = Info->Offset;
> +
> DtCompileFlag (FlagBuffer, LocalField, Info);
> }
> else
> diff --git a/src/acpica/source/compiler/dtcompiler.h b/src/acpica/source/compiler/dtcompiler.h
> index 1521297..42c3116 100644
> --- a/src/acpica/source/compiler/dtcompiler.h
> +++ b/src/acpica/source/compiler/dtcompiler.h
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -227,6 +227,10 @@ DtCompileTable (
>
> /* dtio - binary and text input/output */
>
> +UINT32
> +DtGetNextLine (
> + FILE *Handle);
> +
> DT_FIELD *
> DtScanFile (
> FILE *Handle);
> @@ -471,6 +475,10 @@ DtCompileFadt (
> void **PFieldList);
>
> ACPI_STATUS
> +DtCompileFpdt (
> + void **PFieldList);
> +
> +ACPI_STATUS
> DtCompileHest (
> void **PFieldList);
>
> @@ -487,14 +495,26 @@ DtCompileMcfg (
> void **PFieldList);
>
> ACPI_STATUS
> +DtCompileMpst (
> + void **PFieldList);
> +
> +ACPI_STATUS
> DtCompileMsct (
> void **PFieldList);
>
> ACPI_STATUS
> +DtCompilePmtt (
> + void **PFieldList);
> +
> +ACPI_STATUS
> DtCompileRsdt (
> void **PFieldList);
>
> ACPI_STATUS
> +DtCompileS3pt (
> + DT_FIELD **PFieldList);
> +
> +ACPI_STATUS
> DtCompileSlic (
> void **PFieldList);
>
> @@ -531,6 +551,7 @@ DtGetGenericTableInfo (
> extern const unsigned char TemplateAsf[];
> extern const unsigned char TemplateBoot[];
> extern const unsigned char TemplateBert[];
> +extern const unsigned char TemplateBgrt[];
> extern const unsigned char TemplateCpep[];
> extern const unsigned char TemplateDbgp[];
> extern const unsigned char TemplateDmar[];
> @@ -538,14 +559,19 @@ extern const unsigned char TemplateEcdt[];
> extern const unsigned char TemplateEinj[];
> extern const unsigned char TemplateErst[];
> extern const unsigned char TemplateFadt[];
> +extern const unsigned char TemplateFpdt[];
> +extern const unsigned char TemplateGtdt[];
> extern const unsigned char TemplateHest[];
> extern const unsigned char TemplateHpet[];
> extern const unsigned char TemplateIvrs[];
> extern const unsigned char TemplateMadt[];
> extern const unsigned char TemplateMcfg[];
> extern const unsigned char TemplateMchi[];
> +extern const unsigned char TemplateMpst[];
> extern const unsigned char TemplateMsct[];
> +extern const unsigned char TemplatePmtt[];
> extern const unsigned char TemplateRsdt[];
> +extern const unsigned char TemplateS3pt[];
> extern const unsigned char TemplateSbst[];
> extern const unsigned char TemplateSlic[];
> extern const unsigned char TemplateSlit[];
> diff --git a/src/acpica/source/compiler/dtexpress.c b/src/acpica/source/compiler/dtexpress.c
> index 99de74f..2964902 100644
> --- a/src/acpica/source/compiler/dtexpress.c
> +++ b/src/acpica/source/compiler/dtexpress.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -214,7 +214,7 @@ DtDoOperator (
> if (!RightValue)
> {
> DtError (ASL_ERROR, ASL_MSG_DIVIDE_BY_ZERO,
> - Gbl_CurrentField, Gbl_CurrentField->Value);
> + Gbl_CurrentField, NULL);
> return (0);
> }
> Result = LeftValue / RightValue;
> @@ -224,7 +224,7 @@ DtDoOperator (
> if (!RightValue)
> {
> DtError (ASL_ERROR, ASL_MSG_DIVIDE_BY_ZERO,
> - Gbl_CurrentField, Gbl_CurrentField->Value);
> + Gbl_CurrentField, NULL);
> return (0);
> }
> Result = LeftValue % RightValue;
> @@ -263,7 +263,7 @@ DtDoOperator (
> break;
>
> case EXPOP_EQUAL:
> - Result = LeftValue = RightValue;
> + Result = LeftValue == RightValue;
> break;
>
> case EXPOP_NOT_EQUAL:
> @@ -295,13 +295,12 @@ DtDoOperator (
> /* Unknown operator */
>
> DtFatal (ASL_MSG_INVALID_EXPRESSION,
> - Gbl_CurrentField, Gbl_CurrentField->Value);
> + Gbl_CurrentField, NULL);
> return (0);
> }
>
> DbgPrint (ASL_DEBUG_OUTPUT,
> - "IntegerEval: %s (%8.8X%8.8X %s %8.8X%8.8X) = %8.8X%8.8X\n",
> - Gbl_CurrentField->Value,
> + "IntegerEval: (%8.8X%8.8X %s %8.8X%8.8X) = %8.8X%8.8X\n",
> ACPI_FORMAT_UINT64 (LeftValue),
> DtGetOpName (Operator),
> ACPI_FORMAT_UINT64 (RightValue),
> diff --git a/src/acpica/source/compiler/dtfield.c b/src/acpica/source/compiler/dtfield.c
> index c3e0677..5ac6f6e 100644
> --- a/src/acpica/source/compiler/dtfield.c
> +++ b/src/acpica/source/compiler/dtfield.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -595,12 +595,25 @@ DtCompileFlag (
> break;
>
>
> + case ACPI_DMT_FLAGS1:
> +
> + BitPosition = 1;
> + BitLength = 2;
> + break;
> +
> +
> case ACPI_DMT_FLAGS2:
>
> BitPosition = 2;
> BitLength = 2;
> break;
>
> + case ACPI_DMT_FLAGS4:
> +
> + BitPosition = 4;
> + BitLength = 2;
> + break;
> +
> default:
>
> DtFatal (ASL_MSG_COMPILER_INTERNAL, Field, "Invalid flag opcode");
> diff --git a/src/acpica/source/compiler/dtio.c b/src/acpica/source/compiler/dtio.c
> index 995df93..91d4aba 100644
> --- a/src/acpica/source/compiler/dtio.c
> +++ b/src/acpica/source/compiler/dtio.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -138,10 +138,6 @@ DtParseLine (
> UINT32 Line,
> UINT32 Offset);
>
> -UINT32
> -DtGetNextLine (
> - FILE *Handle);
> -
> static void
> DtWriteBinary (
> DT_SUBTABLE *Subtable,
> @@ -488,6 +484,7 @@ DtGetNextLine (
> BOOLEAN LineNotAllBlanks = FALSE;
> UINT32 State = DT_NORMAL_TEXT;
> UINT32 CurrentLineOffset;
> + UINT32 BeyondBufferCount;
> UINT32 i;
> char c;
>
> @@ -705,7 +702,19 @@ DtGetNextLine (
> }
> }
>
> - printf ("ERROR - Input line is too long (max %u)\n", ASL_LINE_BUFFER_SIZE);
> + /* Line is too long for internal buffer. Determine actual length */
> +
> + BeyondBufferCount = 1;
> + c = (char) getc (Handle);
> + while (c != '\n')
> + {
> + c = (char) getc (Handle);
> + BeyondBufferCount++;
> + }
> +
> + printf ("ERROR - At %u: Input line (%u bytes) is too long (max %u)\n",
> + Gbl_CurrentLineNumber++, ASL_LINE_BUFFER_SIZE + BeyondBufferCount,
> + ASL_LINE_BUFFER_SIZE);
> return (ASL_EOF);
> }
>
> diff --git a/src/acpica/source/compiler/dtparser.l b/src/acpica/source/compiler/dtparser.l
> index c753771..0ffe6f4 100644
> --- a/src/acpica/source/compiler/dtparser.l
> +++ b/src/acpica/source/compiler/dtparser.l
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/compiler/dtparser.y b/src/acpica/source/compiler/dtparser.y
> index 5e22337..6377a0d 100644
> --- a/src/acpica/source/compiler/dtparser.y
> +++ b/src/acpica/source/compiler/dtparser.y
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -135,6 +135,10 @@ UINT64 DtParserResult; /* Expression return value */
> #define YYERROR_VERBOSE 1 /* Verbose error messages */
> #define YYFLAG -32768
>
> +/* Define YYMALLOC/YYFREE to prevent redefinition errors */
> +
> +#define YYMALLOC malloc
> +#define YYFREE free
> %}
>
> %union
> diff --git a/src/acpica/source/compiler/dtsubtable.c b/src/acpica/source/compiler/dtsubtable.c
> index dadb7bc..0921841 100644
> --- a/src/acpica/source/compiler/dtsubtable.c
> +++ b/src/acpica/source/compiler/dtsubtable.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -368,6 +368,11 @@ DtGetSubtableLength (
>
> for (; Info->Name; Info++)
> {
> + if (Info->Opcode == ACPI_DMT_EXTRA_TEXT)
> + {
> + continue;
> + }
> +
> if (!Field)
> {
> goto Error;
> diff --git a/src/acpica/source/compiler/dttable.c b/src/acpica/source/compiler/dttable.c
> index 86b994b..e9668a2 100644
> --- a/src/acpica/source/compiler/dttable.c
> +++ b/src/acpica/source/compiler/dttable.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -732,6 +732,90 @@ DtCompileFadt (
> }
>
> DtInsertSubtable (ParentTable, Subtable);
> +
> + if (Revision >= 5)
> + {
> + Status = DtCompileTable (PFieldList, AcpiDmTableInfoFadt5,
> + &Subtable, TRUE);
> + if (ACPI_FAILURE (Status))
> + {
> + return (Status);
> + }
> +
> + DtInsertSubtable (ParentTable, Subtable);
> + }
> + }
> +
> + return (AE_OK);
> +}
> +
> +
> +/******************************************************************************
> + *
> + * FUNCTION: DtCompileFpdt
> + *
> + * PARAMETERS: List - Current field list pointer
> + *
> + * RETURN: Status
> + *
> + * DESCRIPTION: Compile FPDT.
> + *
> + *****************************************************************************/
> +
> +ACPI_STATUS
> +DtCompileFpdt (
> + void **List)
> +{
> + ACPI_STATUS Status;
> + ACPI_FPDT_HEADER *FpdtHeader;
> + DT_SUBTABLE *Subtable;
> + DT_SUBTABLE *ParentTable;
> + ACPI_DMTABLE_INFO *InfoTable;
> + DT_FIELD **PFieldList = (DT_FIELD **) List;
> + DT_FIELD *SubtableStart;
> +
> +
> + while (*PFieldList)
> + {
> + SubtableStart = *PFieldList;
> + Status = DtCompileTable (PFieldList, AcpiDmTableInfoFpdtHdr,
> + &Subtable, TRUE);
> + if (ACPI_FAILURE (Status))
> + {
> + return (Status);
> + }
> +
> + ParentTable = DtPeekSubtable ();
> + DtInsertSubtable (ParentTable, Subtable);
> + DtPushSubtable (Subtable);
> +
> + FpdtHeader = ACPI_CAST_PTR (ACPI_FPDT_HEADER, Subtable->Buffer);
> +
> + switch (FpdtHeader->Type)
> + {
> + case ACPI_FPDT_TYPE_BOOT:
> + InfoTable = AcpiDmTableInfoFpdt0;
> + break;
> +
> + case ACPI_FPDT_TYPE_S3PERF:
> + InfoTable = AcpiDmTableInfoFpdt1;
> + break;
> +
> + default:
> + DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "FPDT");
> + return (AE_ERROR);
> + break;
> + }
> +
> + Status = DtCompileTable (PFieldList, InfoTable, &Subtable, TRUE);
> + if (ACPI_FAILURE (Status))
> + {
> + return (Status);
> + }
> +
> + ParentTable = DtPeekSubtable ();
> + DtInsertSubtable (ParentTable, Subtable);
> + DtPopSubtable ();
> }
>
> return (AE_OK);
> @@ -1097,6 +1181,12 @@ DtCompileMadt (
> 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:
> DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "MADT");
> return (AE_ERROR);
> @@ -1144,6 +1234,143 @@ DtCompileMcfg (
>
> /******************************************************************************
> *
> + * FUNCTION: DtCompileMpst
> + *
> + * PARAMETERS: List - Current field list pointer
> + *
> + * RETURN: Status
> + *
> + * DESCRIPTION: Compile MPST.
> + *
> + *****************************************************************************/
> +
> +ACPI_STATUS
> +DtCompileMpst (
> + void **List)
> +{
> + ACPI_STATUS Status;
> + DT_SUBTABLE *Subtable;
> + DT_SUBTABLE *ParentTable;
> + DT_FIELD **PFieldList = (DT_FIELD **) List;
> + ACPI_MPST_CHANNEL *MpstChannelInfo;
> + ACPI_MPST_POWER_NODE *MpstPowerNode;
> + ACPI_MPST_DATA_HDR *MpstDataHeader;
> + UINT16 SubtableCount;
> + UINT8 PowerStateCount;
> + UINT8 ComponentCount;
> +
> +
> + /* Main table */
> +
> + Status = DtCompileTable (PFieldList, AcpiDmTableInfoMpst, &Subtable, TRUE);
> + if (ACPI_FAILURE (Status))
> + {
> + return (Status);
> + }
> +
> + ParentTable = DtPeekSubtable ();
> + DtInsertSubtable (ParentTable, Subtable);
> + DtPushSubtable (Subtable);
> +
> + MpstChannelInfo = ACPI_CAST_PTR (ACPI_MPST_CHANNEL, Subtable->Buffer);
> + SubtableCount = MpstChannelInfo->PowerNodeCount;
> +
> + while (*PFieldList && SubtableCount)
> + {
> + /* Subtable: Memory Power Node(s) */
> +
> + Status = DtCompileTable (PFieldList, AcpiDmTableInfoMpst0,
> + &Subtable, TRUE);
> + if (ACPI_FAILURE (Status))
> + {
> + return (Status);
> + }
> +
> + ParentTable = DtPeekSubtable ();
> + DtInsertSubtable (ParentTable, Subtable);
> + DtPushSubtable (Subtable);
> +
> + MpstPowerNode = ACPI_CAST_PTR (ACPI_MPST_POWER_NODE, Subtable->Buffer);
> + PowerStateCount = MpstPowerNode->NumPowerStates;
> + ComponentCount = MpstPowerNode->NumPhysicalComponents;
> +
> + ParentTable = DtPeekSubtable ();
> +
> + /* Sub-subtables - Memory Power State Structure(s) */
> +
> + while (*PFieldList && PowerStateCount)
> + {
> + Status = DtCompileTable (PFieldList, AcpiDmTableInfoMpst0A,
> + &Subtable, TRUE);
> + if (ACPI_FAILURE (Status))
> + {
> + return (Status);
> + }
> +
> + DtInsertSubtable (ParentTable, Subtable);
> + PowerStateCount--;
> + }
> +
> + /* Sub-subtables - Physical Component ID Structure(s) */
> +
> + while (*PFieldList && ComponentCount)
> + {
> + Status = DtCompileTable (PFieldList, AcpiDmTableInfoMpst0B,
> + &Subtable, TRUE);
> + if (ACPI_FAILURE (Status))
> + {
> + return (Status);
> + }
> +
> + DtInsertSubtable (ParentTable, Subtable);
> + ComponentCount--;
> + }
> +
> + SubtableCount--;
> + DtPopSubtable ();
> + }
> +
> + /* Subtable: Count of Memory Power State Characteristic structures */
> +
> + DtPopSubtable ();
> +
> + Status = DtCompileTable (PFieldList, AcpiDmTableInfoMpst1, &Subtable, TRUE);
> + if (ACPI_FAILURE (Status))
> + {
> + return (Status);
> + }
> +
> + ParentTable = DtPeekSubtable ();
> + DtInsertSubtable (ParentTable, Subtable);
> + DtPushSubtable (Subtable);
> +
> + MpstDataHeader = ACPI_CAST_PTR (ACPI_MPST_DATA_HDR, Subtable->Buffer);
> + SubtableCount = MpstDataHeader->CharacteristicsCount;
> +
> + ParentTable = DtPeekSubtable ();
> +
> + /* Subtable: Memory Power State Characteristics structure(s) */
> +
> + while (*PFieldList && SubtableCount)
> + {
> + Status = DtCompileTable (PFieldList, AcpiDmTableInfoMpst2,
> + &Subtable, TRUE);
> + if (ACPI_FAILURE (Status))
> + {
> + return (Status);
> + }
> +
> + DtInsertSubtable (ParentTable, Subtable);
> + SubtableCount--;
> + }
> +
> + DtPopSubtable ();
> + return (AE_OK);
> +}
> +
> +
> +/******************************************************************************
> + *
> * FUNCTION: DtCompileMsct
> *
> * PARAMETERS: List - Current field list pointer
> @@ -1169,6 +1396,147 @@ DtCompileMsct (
>
> /******************************************************************************
> *
> + * FUNCTION: DtCompilePmtt
> + *
> + * PARAMETERS: List - Current field list pointer
> + *
> + * RETURN: Status
> + *
> + * DESCRIPTION: Compile PMTT.
> + *
> + *****************************************************************************/
> +
> +ACPI_STATUS
> +DtCompilePmtt (
> + void **List)
> +{
> + ACPI_STATUS Status;
> + DT_SUBTABLE *Subtable;
> + DT_SUBTABLE *ParentTable;
> + DT_FIELD **PFieldList = (DT_FIELD **) List;
> + DT_FIELD *SubtableStart;
> + ACPI_PMTT_HEADER *PmttHeader;
> + ACPI_PMTT_CONTROLLER *PmttController;
> + UINT16 DomainCount;
> + UINT8 PrevType = ACPI_PMTT_TYPE_SOCKET;
> +
> +
> + /* Main table */
> +
> + Status = DtCompileTable (PFieldList, AcpiDmTableInfoPmtt, &Subtable, TRUE);
> + if (ACPI_FAILURE (Status))
> + {
> + return (Status);
> + }
> +
> + ParentTable = DtPeekSubtable ();
> + DtInsertSubtable (ParentTable, Subtable);
> + DtPushSubtable (Subtable);
> +
> + while (*PFieldList)
> + {
> + SubtableStart = *PFieldList;
> + Status = DtCompileTable (PFieldList, AcpiDmTableInfoPmttHdr,
> + &Subtable, TRUE);
> + if (ACPI_FAILURE (Status))
> + {
> + return (Status);
> + }
> +
> + PmttHeader = ACPI_CAST_PTR (ACPI_PMTT_HEADER, Subtable->Buffer);
> + while (PrevType >= PmttHeader->Type)
> + {
> + DtPopSubtable ();
> +
> + if (PrevType == ACPI_PMTT_TYPE_SOCKET)
> + {
> + break;
> + }
> + PrevType--;
> + }
> + PrevType = PmttHeader->Type;
> +
> + ParentTable = DtPeekSubtable ();
> + DtInsertSubtable (ParentTable, Subtable);
> + DtPushSubtable (Subtable);
> +
> + switch (PmttHeader->Type)
> + {
> + case ACPI_PMTT_TYPE_SOCKET:
> +
> + /* Subtable: Socket Structure */
> +
> + Status = DtCompileTable (PFieldList, AcpiDmTableInfoPmtt0,
> + &Subtable, TRUE);
> + if (ACPI_FAILURE (Status))
> + {
> + return (Status);
> + }
> +
> + ParentTable = DtPeekSubtable ();
> + DtInsertSubtable (ParentTable, Subtable);
> + break;
> +
> + case ACPI_PMTT_TYPE_CONTROLLER:
> +
> + /* Subtable: Memory Controller Structure */
> +
> + Status = DtCompileTable (PFieldList, AcpiDmTableInfoPmtt1,
> + &Subtable, TRUE);
> + if (ACPI_FAILURE (Status))
> + {
> + return (Status);
> + }
> +
> + ParentTable = DtPeekSubtable ();
> + DtInsertSubtable (ParentTable, Subtable);
> +
> + PmttController = ACPI_CAST_PTR (ACPI_PMTT_CONTROLLER,
> + (Subtable->Buffer - sizeof (ACPI_PMTT_HEADER)));
> + DomainCount = PmttController->DomainCount;
> +
> + while (DomainCount)
> + {
> + Status = DtCompileTable (PFieldList, AcpiDmTableInfoPmtt1a,
> + &Subtable, TRUE);
> + if (ACPI_FAILURE (Status))
> + {
> + return (Status);
> + }
> +
> + DtInsertSubtable (ParentTable, Subtable);
> + DomainCount--;
> + }
> + break;
> +
> + case ACPI_PMTT_TYPE_DIMM:
> +
> + /* Subtable: Physical Component Structure */
> +
> + Status = DtCompileTable (PFieldList, AcpiDmTableInfoPmtt2,
> + &Subtable, TRUE);
> + if (ACPI_FAILURE (Status))
> + {
> + return (Status);
> + }
> +
> + ParentTable = DtPeekSubtable ();
> + DtInsertSubtable (ParentTable, Subtable);
> + break;
> +
> + default:
> +
> + DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "PMTT");
> + return (AE_ERROR);
> + }
> + }
> +
> + return (Status);
> +}
> +
> +
> +/******************************************************************************
> + *
> * FUNCTION: DtCompileRsdt
> *
> * PARAMETERS: List - Current field list pointer
> @@ -1206,6 +1574,85 @@ DtCompileRsdt (
>
> /******************************************************************************
> *
> + * FUNCTION: DtCompileS3pt
> + *
> + * PARAMETERS: PFieldList - Current field list pointer
> + *
> + * RETURN: Status
> + *
> + * DESCRIPTION: Compile S3PT (Pointed to by FPDT)
> + *
> + *****************************************************************************/
> +
> +ACPI_STATUS
> +DtCompileS3pt (
> + DT_FIELD **PFieldList)
> +{
> + ACPI_STATUS Status;
> + ACPI_S3PT_HEADER *S3ptHeader;
> + DT_SUBTABLE *Subtable;
> + DT_SUBTABLE *ParentTable;
> + ACPI_DMTABLE_INFO *InfoTable;
> + DT_FIELD *SubtableStart;
> +
> +
> + Status = DtCompileTable (PFieldList, AcpiDmTableInfoS3pt,
> + &Gbl_RootTable, TRUE);
> + if (ACPI_FAILURE (Status))
> + {
> + return (Status);
> + }
> +
> + DtPushSubtable (Gbl_RootTable);
> +
> + while (*PFieldList)
> + {
> + SubtableStart = *PFieldList;
> + Status = DtCompileTable (PFieldList, AcpiDmTableInfoS3ptHdr,
> + &Subtable, TRUE);
> + if (ACPI_FAILURE (Status))
> + {
> + return (Status);
> + }
> +
> + ParentTable = DtPeekSubtable ();
> + DtInsertSubtable (ParentTable, Subtable);
> + DtPushSubtable (Subtable);
> +
> + S3ptHeader = ACPI_CAST_PTR (ACPI_S3PT_HEADER, Subtable->Buffer);
> +
> + switch (S3ptHeader->Type)
> + {
> + case ACPI_S3PT_TYPE_RESUME:
> + InfoTable = AcpiDmTableInfoS3pt0;
> + break;
> +
> + case ACPI_S3PT_TYPE_SUSPEND:
> + InfoTable = AcpiDmTableInfoS3pt1;
> + break;
> +
> + default:
> + DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "S3PT");
> + return (AE_ERROR);
> + }
> +
> + Status = DtCompileTable (PFieldList, InfoTable, &Subtable, TRUE);
> + if (ACPI_FAILURE (Status))
> + {
> + return (Status);
> + }
> +
> + ParentTable = DtPeekSubtable ();
> + DtInsertSubtable (ParentTable, Subtable);
> + DtPopSubtable ();
> + }
> +
> + return (AE_OK);
> +}
> +
> +
> +/******************************************************************************
> + *
> * FUNCTION: DtCompileSlic
> *
> * PARAMETERS: List - Current field list pointer
> @@ -1447,7 +1894,9 @@ DtGetGenericTableInfo (
> break;
> }
>
> - if (!ACPI_STRCMP (Name, Info->Name))
> + /* Use caseless compare for generic keywords */
> +
> + if (!AcpiUtStricmp (Name, Info->Name))
> {
> break;
> }
> diff --git a/src/acpica/source/compiler/dttemplate.c b/src/acpica/source/compiler/dttemplate.c
> index 30d6b2d..ed5f79b 100644
> --- a/src/acpica/source/compiler/dttemplate.c
> +++ b/src/acpica/source/compiler/dttemplate.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/compiler/dttemplate.h b/src/acpica/source/compiler/dttemplate.h
> index 7c2658f..8c3f2c1 100644
> --- a/src/acpica/source/compiler/dttemplate.h
> +++ b/src/acpica/source/compiler/dttemplate.h
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -159,6 +159,17 @@ const unsigned char TemplateAsf[] =
> 0x01,0x00 /* 00000070 ".." */
> };
>
> +const unsigned char TemplateBgrt[] =
> +{
> + 0x42,0x47,0x52,0x54,0x38,0x00,0x00,0x00, /* 00000000 "BGRT8..." */
> + 0x01,0x0D,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */
> + 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */
> + 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */
> + 0x23,0x06,0x11,0x20,0x01,0x00,0x00,0x00, /* 00000020 "#.. ...." */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 /* 00000030 "........" */
> +};
> +
> const unsigned char TemplateBert[] =
> {
> 0x42,0x45,0x52,0x54,0x30,0x00,0x00,0x00, /* 00000000 "BERT0..." */
> @@ -363,13 +374,15 @@ const unsigned char TemplateFacs[] =
> 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 /* 00000038 "........" */
> };
>
> +/* Version 5 FADT */
> +
> const unsigned char TemplateFadt[] =
> {
> - 0x46,0x41,0x43,0x50,0xF4,0x00,0x00,0x00, /* 00000000 "FACP...." */
> - 0x04,0x4E,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 ".NINTEL " */
> + 0x46,0x41,0x43,0x50,0x0C,0x01,0x00,0x00, /* 00000000 "FACP...." */
> + 0x05,0x18,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */
> 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */
> 0x00,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */
> - 0x28,0x05,0x10,0x20,0x01,0x00,0x00,0x00, /* 00000020 "(.. ...." */
> + 0x23,0x11,0x11,0x20,0x01,0x00,0x00,0x00, /* 00000020 "#.. ...." */
> 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */
> 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000030 "........" */
> 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */
> @@ -395,7 +408,41 @@ const unsigned char TemplateFadt[] =
> 0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x01, /* 000000D8 "........" */
> 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000E0 "........" */
> 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000E8 "........" */
> - 0x00,0x00,0x00,0x00 /* 000000F0 "...." */
> + 0x00,0x00,0x00,0x00,0x01,0x08,0x00,0x01, /* 000000F0 "........" */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000F8 "........" */
> + 0x01,0x08,0x00,0x01,0x00,0x00,0x00,0x00, /* 00000100 "........" */
> + 0x00,0x00,0x00,0x00 /* 00000108 "...." */
> +};
> +
> +const unsigned char TemplateFpdt[] =
> +{
> + 0x46,0x50,0x44,0x54,0x64,0x00,0x00,0x00, /* 00000000 "FPDTd..." */
> + 0x01,0xBD,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */
> + 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */
> + 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */
> + 0x04,0x08,0x11,0x20,0x00,0x00,0x30,0x01, /* 00000020 "... ..0." */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000030 "........" */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000040 "........" */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000048 "........" */
> + 0x00,0x00,0x00,0x00,0x01,0x00,0x10,0x01, /* 00000050 "........" */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000058 "........" */
> + 0x00,0x00,0x00,0x00 /* 00000060 "...." */
> +};
> +
> +const unsigned char TemplateGtdt[] =
> +{
> + 0x47,0x54,0x44,0x54,0x50,0x00,0x00,0x00, /* 00000000 "GTDTP..." */
> + 0x01,0xF1,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */
> + 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */
> + 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */
> + 0x23,0x06,0x11,0x20,0x00,0x00,0x00,0x00, /* 00000020 "#.. ...." */
> + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000028 "........" */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000030 "........" */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000040 "........" */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 /* 00000048 "........" */
> };
>
> const unsigned char TemplateHest[] =
> @@ -500,13 +547,15 @@ const unsigned char TemplateIvrs[] =
> 0x00,0x00,0x00,0x00 /* 000000B8 "...." */
> };
>
> +/* MADT with ACPI 5.0 subtables */
> +
> const unsigned char TemplateMadt[] =
> {
> - 0x41,0x50,0x49,0x43,0xB6,0x00,0x00,0x00, /* 00000000 "APIC...." */
> - 0x01,0x45,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 ".EINTEL " */
> + 0x41,0x50,0x49,0x43,0xF6,0x00,0x00,0x00, /* 00000000 "APIC...." */
> + 0x01,0xB0,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */
> 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */
> 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */
> - 0x28,0x05,0x10,0x20,0x00,0x00,0x00,0x00, /* 00000020 "(.. ...." */
> + 0x23,0x06,0x11,0x20,0x00,0x00,0x00,0x00, /* 00000020 "#.. ...." */
> 0x01,0x00,0x00,0x00,0x00,0x08,0x00,0x00, /* 00000028 "........" */
> 0x01,0x00,0x00,0x00,0x01,0x0C,0x01,0x00, /* 00000030 "........" */
> 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */
> @@ -524,7 +573,15 @@ const unsigned char TemplateMadt[] =
> 0x00,0x00,0x09,0x10,0x00,0x00,0x00,0x00, /* 00000098 "........" */
> 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00, /* 000000A0 "........" */
> 0x00,0x00,0x0A,0x0C,0x05,0x00,0x00,0x00, /* 000000A8 "........" */
> - 0x00,0x00,0x00,0x00,0x00,0x00 /* 000000B0 "......" */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x0B,0x28, /* 000000B0 ".......(" */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000B8 "........" */
> + 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00, /* 000000C0 "........" */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000C8 "........" */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000D0 "........" */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x18, /* 000000D8 "........" */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000E0 "........" */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000E8 "........" */
> + 0x00,0x00,0x00,0x00,0x00,0x00 /* 000000F0 "......" */
> };
>
> const unsigned char TemplateMcfg[] =
> @@ -552,6 +609,24 @@ const unsigned char TemplateMchi[] =
> 0x00,0x00,0x00,0x00,0x00 /* 00000040 "....." */
> };
>
> +const unsigned char TemplateMpst[] =
> +{
> + 0x4D,0x50,0x53,0x54,0x6E,0x00,0x00,0x00, /* 00000000 "MPSTn..." */
> + 0x01,0x98,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */
> + 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */
> + 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */
> + 0x04,0x08,0x11,0x20,0x00,0x00,0x00,0x00, /* 00000020 "... ...." */
> + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000030 "........" */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */
> + 0x00,0x00,0x02,0x03,0x00,0x00,0x00,0x00, /* 00000040 "........" */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000048 "........" */
> + 0x01,0x00,0x41,0x00,0x00,0x00,0x00,0x00, /* 00000050 "..A....." */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000058 "........" */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000060 "........" */
> + 0x00,0x00,0x00,0x00,0x00,0x00 /* 00000068 "......" */
> +};
> +
> const unsigned char TemplateMsct[] =
> {
> 0x4D,0x53,0x43,0x54,0x90,0x00,0x00,0x00, /* 00000000 "MSCT...." */
> @@ -574,6 +649,33 @@ const unsigned char TemplateMsct[] =
> 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 /* 00000088 "........" */
> };
>
> +const unsigned char TemplatePmtt[] =
> +{
> + 0x50,0x4D,0x54,0x54,0xB4,0x00,0x00,0x00, /* 00000000 "PMTT...." */
> + 0x01,0x3A,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 ".:INTEL " */
> + 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */
> + 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */
> + 0x26,0x08,0x11,0x20,0x00,0x00,0x00,0x00, /* 00000020 "&.. ...." */
> + 0x00,0x00,0x80,0x00,0x01,0x00,0x00,0x00, /* 00000028 "........" */
> + 0x00,0x00,0x00,0x00,0x01,0x00,0x54,0x00, /* 00000030 "......T." */
> + 0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000040 "........" */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000048 "........" */
> + 0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00, /* 00000050 "........" */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000058 "........" */
> + 0x02,0x00,0x14,0x00,0x02,0x00,0x00,0x00, /* 00000060 "........" */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000068 "........" */
> + 0x00,0x00,0x00,0x00,0x02,0x00,0x14,0x00, /* 00000070 "........" */
> + 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000078 "........" */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000080 "........" */
> + 0x01,0x00,0x20,0x00,0x01,0x00,0x00,0x00, /* 00000088 ".. ....." */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000090 "........" */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000098 "........" */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000A0 "........" */
> + 0x00,0x00,0x0C,0x00,0x01,0x00,0x00,0x00, /* 000000A8 "........" */
> + 0x00,0x00,0x00,0x00 /* 000000B0 "...." */
> +};
> +
> const unsigned char TemplateRsdp[] =
> {
> 0x52,0x53,0x44,0x20,0x50,0x54,0x52,0x20, /* 00000000 "RSD PTR " */
> @@ -596,6 +698,17 @@ const unsigned char TemplateRsdt[] =
> 0x80,0x00,0x00,0x00 /* 00000040 "...." */
> };
>
> +const unsigned char TemplateS3pt[] =
> +{
> + 0x53,0x33,0x50,0x54,0x34,0x00,0x00,0x00, /* 00000000 "S3PT4..." */
> + 0x00,0x00,0x18,0x01,0x00,0x00,0x00,0x00, /* 00000008 "........" */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000010 "........" */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000018 "........" */
> + 0x01,0x00,0x14,0x01,0x00,0x00,0x00,0x00, /* 00000020 "........" */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */
> + 0x00,0x00,0x00,0x00 /* 00000030 "...." */
> +};
> +
> const unsigned char TemplateSbst[] =
> {
> 0x53,0x42,0x53,0x54,0x30,0x00,0x00,0x00, /* 00000000 "SBST0..." */
> diff --git a/src/acpica/source/compiler/dtutils.c b/src/acpica/source/compiler/dtutils.c
> index 65371cd..ece6424 100644
> --- a/src/acpica/source/compiler/dtutils.c
> +++ b/src/acpica/source/compiler/dtutils.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -456,7 +456,9 @@ DtGetFieldType (
> case ACPI_DMT_FLAG6:
> case ACPI_DMT_FLAG7:
> case ACPI_DMT_FLAGS0:
> + case ACPI_DMT_FLAGS1:
> case ACPI_DMT_FLAGS2:
> + case ACPI_DMT_FLAGS4:
> Type = DT_FIELD_TYPE_FLAG;
> break;
>
> @@ -582,8 +584,11 @@ DtGetFieldLength (
> case ACPI_DMT_FLAG6:
> case ACPI_DMT_FLAG7:
> case ACPI_DMT_FLAGS0:
> + case ACPI_DMT_FLAGS1:
> case ACPI_DMT_FLAGS2:
> + case ACPI_DMT_FLAGS4:
> case ACPI_DMT_LABEL:
> + case ACPI_DMT_EXTRA_TEXT:
> ByteLength = 0;
> break;
>
> @@ -593,6 +598,7 @@ DtGetFieldLength (
> 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:
> @@ -622,6 +628,11 @@ DtGetFieldLength (
> ByteLength = 4;
> break;
>
> + case ACPI_DMT_UINT40:
> + ByteLength = 5;
> + break;
> +
> + case ACPI_DMT_UINT48:
> case ACPI_DMT_NAME6:
> ByteLength = 6;
> break;
> diff --git a/src/acpica/source/components/debugger/dbcmds.c b/src/acpica/source/components/debugger/dbcmds.c
> index 21bccc1..4c34a79 100644
> --- a/src/acpica/source/components/debugger/dbcmds.c
> +++ b/src/acpica/source/components/debugger/dbcmds.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -118,6 +118,7 @@
> #include "accommon.h"
> #include "acevents.h"
> #include "acdebug.h"
> +#include "acnamesp.h"
> #include "acresrc.h"
> #include "actables.h"
>
> @@ -141,6 +142,18 @@ AcpiDmTestResourceConversion (
> ACPI_NAMESPACE_NODE *Node,
> char *Name);
>
> +static ACPI_STATUS
> +AcpiDbResourceCallback (
> + ACPI_RESOURCE *Resource,
> + void *Context);
> +
> +static ACPI_STATUS
> +AcpiDbDeviceResources (
> + ACPI_HANDLE ObjHandle,
> + UINT32 NestingLevel,
> + void *Context,
> + void **ReturnValue);
> +
>
> /*******************************************************************************
> *
> @@ -220,28 +233,49 @@ AcpiDbSleep (
> UINT8 SleepState;
>
>
> + ACPI_FUNCTION_TRACE (AcpiDbSleep);
> +
> +
> SleepState = (UINT8) ACPI_STRTOUL (ObjectArg, NULL, 0);
>
> AcpiOsPrintf ("**** Prepare to sleep ****\n");
> Status = AcpiEnterSleepStatePrep (SleepState);
> if (ACPI_FAILURE (Status))
> {
> - return (Status);
> + goto ErrorExit;
> }
>
> AcpiOsPrintf ("**** Going to sleep ****\n");
> - Status = AcpiEnterSleepState (SleepState);
> + Status = AcpiEnterSleepState (SleepState, ACPI_NO_OPTIONAL_METHODS);
> if (ACPI_FAILURE (Status))
> {
> - return (Status);
> + goto ErrorExit;
> }
>
> - AcpiOsPrintf ("**** returning from sleep ****\n");
> + AcpiOsPrintf ("**** Prepare to return from sleep ****\n");
> + Status = AcpiLeaveSleepStatePrep (SleepState, ACPI_NO_OPTIONAL_METHODS);
> + if (ACPI_FAILURE (Status))
> + {
> + goto ErrorExit;
> + }
> +
> + AcpiOsPrintf ("**** Returning from sleep ****\n");
> Status = AcpiLeaveSleepState (SleepState);
> + if (ACPI_FAILURE (Status))
> + {
> + goto ErrorExit;
> + }
>
> return (Status);
> +
> +
> +ErrorExit:
> +
> + ACPI_EXCEPTION ((AE_INFO, Status, "During sleep test"));
> + return (Status);
> }
>
> +
> /*******************************************************************************
> *
> * FUNCTION: AcpiDbDisplayLocks
> @@ -528,6 +562,78 @@ AcpiDbDisplayInterfaces (
>
> /*******************************************************************************
> *
> + * FUNCTION: AcpiDbDisplayTemplate
> + *
> + * PARAMETERS: BufferArg - Buffer name or addrss
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Dump a buffer that contains a resource template
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDbDisplayTemplate (
> + char *BufferArg)
> +{
> + ACPI_NAMESPACE_NODE *Node;
> + ACPI_STATUS Status;
> + ACPI_BUFFER ReturnObj;
> +
> +
> + /* Translate BufferArg to an Named object */
> +
> + Node = AcpiDbConvertToNode (BufferArg);
> + if (!Node || (Node == AcpiGbl_RootNode))
> + {
> + AcpiOsPrintf ("Invalid argument: %s\n", BufferArg);
> + return;
> + }
> +
> + /* We must have a buffer object */
> +
> + if (Node->Type != ACPI_TYPE_BUFFER)
> + {
> + AcpiOsPrintf ("Not a Buffer object, cannot be a template: %s\n",
> + BufferArg);
> + return;
> + }
> +
> + ReturnObj.Length = ACPI_DEBUG_BUFFER_SIZE;
> + ReturnObj.Pointer = AcpiGbl_DbBuffer;
> +
> + /* Attempt to convert the raw buffer to a resource list */
> +
> + Status = AcpiRsCreateResourceList (Node->Object, &ReturnObj);
> +
> + AcpiDbSetOutputDestination (ACPI_DB_REDIRECTABLE_OUTPUT);
> + AcpiDbgLevel |= ACPI_LV_RESOURCES;
> +
> + if (ACPI_FAILURE (Status))
> + {
> + AcpiOsPrintf ("Could not convert Buffer to a resource list: %s, %s\n",
> + BufferArg, AcpiFormatException (Status));
> + goto DumpBuffer;
> + }
> +
> + /* Now we can dump the resource list */
> +
> + AcpiRsDumpResourceList (ACPI_CAST_PTR (ACPI_RESOURCE,
> + ReturnObj.Pointer));
> +
> +DumpBuffer:
> + AcpiOsPrintf ("\nRaw data buffer:\n");
> + AcpiUtDumpBuffer ((UINT8 *) Node->Object->Buffer.Pointer,
> + Node->Object->Buffer.Length,
> + DB_BYTE_DISPLAY, ACPI_UINT32_MAX);
> +
> + AcpiDbSetOutputDestination (ACPI_DB_CONSOLE_OUTPUT);
> + return;
> +}
> +
> +
> +/*******************************************************************************
> + *
> * FUNCTION: AcpiDmCompareAmlResources
> *
> * PARAMETERS: Aml1Buffer - Contains first resource list
> @@ -551,11 +657,14 @@ AcpiDmCompareAmlResources (
> {
> UINT8 *Aml1;
> UINT8 *Aml2;
> + UINT8 *Aml1End;
> + UINT8 *Aml2End;
> ACPI_RSDESC_SIZE Aml1Length;
> ACPI_RSDESC_SIZE Aml2Length;
> ACPI_RSDESC_SIZE Offset = 0;
> UINT8 ResourceType;
> UINT32 Count = 0;
> + UINT32 i;
>
>
> /* Compare overall buffer sizes (may be different due to size rounding) */
> @@ -563,16 +672,18 @@ AcpiDmCompareAmlResources (
> if (Aml1BufferLength != Aml2BufferLength)
> {
> AcpiOsPrintf (
> - "**** Buffer length mismatch in converted AML: original %X new %X ****\n",
> + "**** Buffer length mismatch in converted AML: Original %X, New %X ****\n",
> Aml1BufferLength, Aml2BufferLength);
> }
>
> Aml1 = Aml1Buffer;
> Aml2 = Aml2Buffer;
> + Aml1End = Aml1Buffer + Aml1BufferLength;
> + Aml2End = Aml2Buffer + Aml2BufferLength;
>
> /* Walk the descriptor lists, comparing each descriptor */
>
> - while (Aml1 < (Aml1Buffer + Aml1BufferLength))
> + while ((Aml1 < Aml1End) && (Aml2 < Aml2End))
> {
> /* Get the lengths of each descriptor */
>
> @@ -585,7 +696,7 @@ AcpiDmCompareAmlResources (
> if (Aml1Length != Aml2Length)
> {
> AcpiOsPrintf (
> - "**** Length mismatch in descriptor [%.2X] type %2.2X, Offset %8.8X L1 %X L2 %X ****\n",
> + "**** Length mismatch in descriptor [%.2X] type %2.2X, Offset %8.8X Len1 %X, Len2 %X ****\n",
> Count, ResourceType, Offset, Aml1Length, Aml2Length);
> }
>
> @@ -596,6 +707,15 @@ AcpiDmCompareAmlResources (
> AcpiOsPrintf (
> "**** Data mismatch in descriptor [%.2X] type %2.2X, Offset %8.8X ****\n",
> Count, ResourceType, Offset);
> +
> + for (i = 0; i < Aml1Length; i++)
> + {
> + if (Aml1[i] != Aml2[i])
> + {
> + AcpiOsPrintf ("Mismatch at byte offset %.2X: is %2.2X, should be %2.2X\n",
> + i, Aml2[i], Aml1[i]);
> + }
> + }
> }
>
> /* Exit on EndTag descriptor */
> @@ -698,160 +818,301 @@ Exit1:
>
> /*******************************************************************************
> *
> - * FUNCTION: AcpiDbDisplayResources
> + * FUNCTION: AcpiDbResourceCallback
> *
> - * PARAMETERS: ObjectArg - String with hex value of the object
> + * PARAMETERS: ACPI_WALK_RESOURCE_CALLBACK
> *
> - * RETURN: None
> + * RETURN: Status
> *
> - * DESCRIPTION: Display the resource objects associated with a device.
> + * DESCRIPTION: Simple callback to exercise AcpiWalkResources
> *
> ******************************************************************************/
>
> -void
> -AcpiDbDisplayResources (
> - char *ObjectArg)
> +static ACPI_STATUS
> +AcpiDbResourceCallback (
> + ACPI_RESOURCE *Resource,
> + void *Context)
> +{
> +
> + return (AE_OK);
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiDbDeviceResources
> + *
> + * PARAMETERS: ACPI_WALK_CALLBACK
> + *
> + * RETURN: Status
> + *
> + * DESCRIPTION: Display the _PRT/_CRS/_PRS resources for a device object.
> + *
> + ******************************************************************************/
> +
> +static ACPI_STATUS
> +AcpiDbDeviceResources (
> + ACPI_HANDLE ObjHandle,
> + UINT32 NestingLevel,
> + void *Context,
> + void **ReturnValue)
> {
> ACPI_NAMESPACE_NODE *Node;
> - ACPI_STATUS Status;
> + ACPI_NAMESPACE_NODE *PrtNode = NULL;
> + ACPI_NAMESPACE_NODE *CrsNode = NULL;
> + ACPI_NAMESPACE_NODE *PrsNode = NULL;
> + ACPI_NAMESPACE_NODE *AeiNode = NULL;
> + char *ParentPath;
> ACPI_BUFFER ReturnObj;
> + ACPI_STATUS Status;
>
>
> - AcpiDbSetOutputDestination (ACPI_DB_REDIRECTABLE_OUTPUT);
> - AcpiDbgLevel |= ACPI_LV_RESOURCES;
> + Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, ObjHandle);
> + ParentPath = AcpiNsGetExternalPathname (Node);
> + if (!ParentPath)
> + {
> + return (AE_NO_MEMORY);
> + }
>
> - /* Convert string to object pointer */
> + /* Get handles to the resource methods for this device */
>
> - Node = AcpiDbConvertToNode (ObjectArg);
> - if (!Node)
> + (void) AcpiGetHandle (Node, METHOD_NAME__PRT, ACPI_CAST_PTR (ACPI_HANDLE, &PrtNode));
> + (void) AcpiGetHandle (Node, METHOD_NAME__CRS, ACPI_CAST_PTR (ACPI_HANDLE, &CrsNode));
> + (void) AcpiGetHandle (Node, METHOD_NAME__PRS, ACPI_CAST_PTR (ACPI_HANDLE, &PrsNode));
> + (void) AcpiGetHandle (Node, METHOD_NAME__AEI, ACPI_CAST_PTR (ACPI_HANDLE, &AeiNode));
> + if (!PrtNode && !CrsNode && !PrsNode && !AeiNode)
> {
> - return;
> + goto Cleanup; /* Nothing to do */
> }
>
> + AcpiOsPrintf ("\nDevice: %s\n", ParentPath);
> +
> /* Prepare for a return object of arbitrary size */
>
> ReturnObj.Pointer = AcpiGbl_DbBuffer;
> ReturnObj.Length = ACPI_DEBUG_BUFFER_SIZE;
>
> +
> /* _PRT */
>
> - AcpiOsPrintf ("Evaluating _PRT\n");
> + if (PrtNode)
> + {
> + AcpiOsPrintf ("Evaluating _PRT\n");
>
> - /* Check if _PRT exists */
> + Status = AcpiEvaluateObject (PrtNode, NULL, NULL, &ReturnObj);
> + if (ACPI_FAILURE (Status))
> + {
> + AcpiOsPrintf ("Could not evaluate _PRT: %s\n",
> + AcpiFormatException (Status));
> + goto GetCrs;
> + }
>
> - Status = AcpiEvaluateObject (Node, METHOD_NAME__PRT, NULL, &ReturnObj);
> - if (ACPI_FAILURE (Status))
> - {
> - AcpiOsPrintf ("Could not obtain _PRT: %s\n",
> - AcpiFormatException (Status));
> - goto GetCrs;
> - }
> + ReturnObj.Pointer = AcpiGbl_DbBuffer;
> + ReturnObj.Length = ACPI_DEBUG_BUFFER_SIZE;
>
> - ReturnObj.Pointer = AcpiGbl_DbBuffer;
> - ReturnObj.Length = ACPI_DEBUG_BUFFER_SIZE;
> + Status = AcpiGetIrqRoutingTable (Node, &ReturnObj);
> + if (ACPI_FAILURE (Status))
> + {
> + AcpiOsPrintf ("GetIrqRoutingTable failed: %s\n",
> + AcpiFormatException (Status));
> + goto GetCrs;
> + }
>
> - Status = AcpiGetIrqRoutingTable (Node, &ReturnObj);
> - if (ACPI_FAILURE (Status))
> - {
> - AcpiOsPrintf ("GetIrqRoutingTable failed: %s\n",
> - AcpiFormatException (Status));
> - goto GetCrs;
> + AcpiRsDumpIrqList (ACPI_CAST_PTR (UINT8, AcpiGbl_DbBuffer));
> }
>
> - AcpiRsDumpIrqList (ACPI_CAST_PTR (UINT8, AcpiGbl_DbBuffer));
> -
>
> /* _CRS */
>
> GetCrs:
> - AcpiOsPrintf ("Evaluating _CRS\n");
> + if (CrsNode)
> + {
> + AcpiOsPrintf ("Evaluating _CRS\n");
>
> - ReturnObj.Pointer = AcpiGbl_DbBuffer;
> - ReturnObj.Length = ACPI_DEBUG_BUFFER_SIZE;
> + ReturnObj.Pointer = AcpiGbl_DbBuffer;
> + ReturnObj.Length = ACPI_DEBUG_BUFFER_SIZE;
>
> - /* Check if _CRS exists */
> + Status = AcpiEvaluateObject (CrsNode, NULL, NULL, &ReturnObj);
> + if (ACPI_FAILURE (Status))
> + {
> + AcpiOsPrintf ("Could not evaluate _CRS: %s\n",
> + AcpiFormatException (Status));
> + goto GetPrs;
> + }
>
> - Status = AcpiEvaluateObject (Node, METHOD_NAME__CRS, NULL, &ReturnObj);
> - if (ACPI_FAILURE (Status))
> - {
> - AcpiOsPrintf ("Could not obtain _CRS: %s\n",
> - AcpiFormatException (Status));
> - goto GetPrs;
> - }
> + /* This code is here to exercise the AcpiWalkResources interface */
>
> - /* Get the _CRS resource list */
> + Status = AcpiWalkResources (Node, METHOD_NAME__CRS,
> + AcpiDbResourceCallback, NULL);
> + if (ACPI_FAILURE (Status))
> + {
> + AcpiOsPrintf ("AcpiWalkResources failed: %s\n",
> + AcpiFormatException (Status));
> + goto GetPrs;
> + }
>
> - ReturnObj.Pointer = AcpiGbl_DbBuffer;
> - ReturnObj.Length = ACPI_DEBUG_BUFFER_SIZE;
> + /* Get the _CRS resource list */
>
> - Status = AcpiGetCurrentResources (Node, &ReturnObj);
> - if (ACPI_FAILURE (Status))
> - {
> - AcpiOsPrintf ("AcpiGetCurrentResources failed: %s\n",
> - AcpiFormatException (Status));
> - goto GetPrs;
> - }
> + ReturnObj.Pointer = AcpiGbl_DbBuffer;
> + ReturnObj.Length = ACPI_DEBUG_BUFFER_SIZE;
>
> - /* Dump the _CRS resource list */
> + Status = AcpiGetCurrentResources (Node, &ReturnObj);
> + if (ACPI_FAILURE (Status))
> + {
> + AcpiOsPrintf ("AcpiGetCurrentResources failed: %s\n",
> + AcpiFormatException (Status));
> + goto GetPrs;
> + }
>
> - AcpiRsDumpResourceList (ACPI_CAST_PTR (ACPI_RESOURCE,
> - ReturnObj.Pointer));
> + /* Dump the _CRS resource list */
> +
> + AcpiRsDumpResourceList (ACPI_CAST_PTR (ACPI_RESOURCE,
> + ReturnObj.Pointer));
>
> - /*
> - * Perform comparison of original AML to newly created AML. This tests both
> - * the AML->Resource conversion and the Resource->Aml conversion.
> - */
> - Status = AcpiDmTestResourceConversion (Node, METHOD_NAME__CRS);
> + /*
> + * Perform comparison of original AML to newly created AML. This tests both
> + * the AML->Resource conversion and the Resource->Aml conversion.
> + */
> + Status = AcpiDmTestResourceConversion (Node, METHOD_NAME__CRS);
>
> - /* Execute _SRS with the resource list */
> + /* Execute _SRS with the resource list */
>
> - Status = AcpiSetCurrentResources (Node, &ReturnObj);
> - if (ACPI_FAILURE (Status))
> - {
> - AcpiOsPrintf ("AcpiSetCurrentResources failed: %s\n",
> - AcpiFormatException (Status));
> - goto GetPrs;
> + Status = AcpiSetCurrentResources (Node, &ReturnObj);
> + if (ACPI_FAILURE (Status))
> + {
> + AcpiOsPrintf ("AcpiSetCurrentResources failed: %s\n",
> + AcpiFormatException (Status));
> + goto GetPrs;
> + }
> }
>
>
> /* _PRS */
>
> GetPrs:
> - AcpiOsPrintf ("Evaluating _PRS\n");
> + if (PrsNode)
> + {
> + AcpiOsPrintf ("Evaluating _PRS\n");
>
> - ReturnObj.Pointer = AcpiGbl_DbBuffer;
> - ReturnObj.Length = ACPI_DEBUG_BUFFER_SIZE;
> + ReturnObj.Pointer = AcpiGbl_DbBuffer;
> + ReturnObj.Length = ACPI_DEBUG_BUFFER_SIZE;
>
> - /* Check if _PRS exists */
> + Status = AcpiEvaluateObject (PrsNode, NULL, NULL, &ReturnObj);
> + if (ACPI_FAILURE (Status))
> + {
> + AcpiOsPrintf ("Could not evaluate _PRS: %s\n",
> + AcpiFormatException (Status));
> + goto GetAei;
> + }
>
> - Status = AcpiEvaluateObject (Node, METHOD_NAME__PRS, NULL, &ReturnObj);
> - if (ACPI_FAILURE (Status))
> - {
> - AcpiOsPrintf ("Could not obtain _PRS: %s\n",
> - AcpiFormatException (Status));
> - goto Cleanup;
> + ReturnObj.Pointer = AcpiGbl_DbBuffer;
> + ReturnObj.Length = ACPI_DEBUG_BUFFER_SIZE;
> +
> + Status = AcpiGetPossibleResources (Node, &ReturnObj);
> + if (ACPI_FAILURE (Status))
> + {
> + AcpiOsPrintf ("AcpiGetPossibleResources failed: %s\n",
> + AcpiFormatException (Status));
> + goto GetAei;
> + }
> +
> + AcpiRsDumpResourceList (ACPI_CAST_PTR (ACPI_RESOURCE, AcpiGbl_DbBuffer));
> }
>
> - ReturnObj.Pointer = AcpiGbl_DbBuffer;
> - ReturnObj.Length = ACPI_DEBUG_BUFFER_SIZE;
>
> - Status = AcpiGetPossibleResources (Node, &ReturnObj);
> - if (ACPI_FAILURE (Status))
> + /* _AEI */
> +
> +GetAei:
> + if (AeiNode)
> {
> - AcpiOsPrintf ("AcpiGetPossibleResources failed: %s\n",
> - AcpiFormatException (Status));
> - goto Cleanup;
> + AcpiOsPrintf ("Evaluating _AEI\n");
> +
> + ReturnObj.Pointer = AcpiGbl_DbBuffer;
> + ReturnObj.Length = ACPI_DEBUG_BUFFER_SIZE;
> +
> + Status = AcpiEvaluateObject (AeiNode, NULL, NULL, &ReturnObj);
> + if (ACPI_FAILURE (Status))
> + {
> + AcpiOsPrintf ("Could not evaluate _AEI: %s\n",
> + AcpiFormatException (Status));
> + goto Cleanup;
> + }
> +
> + ReturnObj.Pointer = AcpiGbl_DbBuffer;
> + ReturnObj.Length = ACPI_DEBUG_BUFFER_SIZE;
> +
> + Status = AcpiGetEventResources (Node, &ReturnObj);
> + if (ACPI_FAILURE (Status))
> + {
> + AcpiOsPrintf ("AcpiGetEventResources failed: %s\n",
> + AcpiFormatException (Status));
> + goto Cleanup;
> + }
> +
> + AcpiRsDumpResourceList (ACPI_CAST_PTR (ACPI_RESOURCE, AcpiGbl_DbBuffer));
> }
>
> - AcpiRsDumpResourceList (ACPI_CAST_PTR (ACPI_RESOURCE, AcpiGbl_DbBuffer));
>
> Cleanup:
> + ACPI_FREE (ParentPath);
> + return (AE_OK);
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiDbDisplayResources
> + *
> + * PARAMETERS: ObjectArg - String object name or object pointer.
> + * "*" means "display resources for all devices"
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Display the resource objects associated with a device.
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDbDisplayResources (
> + char *ObjectArg)
> +{
> + ACPI_NAMESPACE_NODE *Node;
> +
> +
> + AcpiDbSetOutputDestination (ACPI_DB_REDIRECTABLE_OUTPUT);
> + AcpiDbgLevel |= ACPI_LV_RESOURCES;
> +
> + /* Asterisk means "display resources for all devices" */
> +
> + if (!ACPI_STRCMP (ObjectArg, "*"))
> + {
> + (void) AcpiWalkNamespace (ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT,
> + ACPI_UINT32_MAX, AcpiDbDeviceResources, NULL, NULL, NULL);
> + }
> + else
> + {
> + /* Convert string to object pointer */
> +
> + Node = AcpiDbConvertToNode (ObjectArg);
> + if (Node)
> + {
> + if (Node->Type != ACPI_TYPE_DEVICE)
> + {
> + AcpiOsPrintf ("%4.4s: Name is not a device object (%s)\n",
> + Node->Name.Ascii, AcpiUtGetTypeName (Node->Type));
> + }
> + else
> + {
> + (void) AcpiDbDeviceResources (Node, 0, NULL, NULL);
> + }
> + }
> + }
>
> AcpiDbSetOutputDestination (ACPI_DB_CONSOLE_OUTPUT);
> - return;
> }
>
>
> +#if (!ACPI_REDUCED_HARDWARE)
> /*******************************************************************************
> *
> * FUNCTION: AcpiDbGenerateGpe
> @@ -890,5 +1151,6 @@ AcpiDbGenerateGpe (
>
> (void) AcpiEvGpeDispatch (NULL, GpeEventInfo, GpeNumber);
> }
> +#endif /* !ACPI_REDUCED_HARDWARE */
>
> #endif /* ACPI_DEBUGGER */
> diff --git a/src/acpica/source/components/debugger/dbdisply.c b/src/acpica/source/components/debugger/dbdisply.c
> index fb5fd19..d8b3aa9 100644
> --- a/src/acpica/source/components/debugger/dbdisply.c
> +++ b/src/acpica/source/components/debugger/dbdisply.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -162,6 +162,8 @@ static ACPI_ADR_SPACE_TYPE AcpiGbl_SpaceIdList[] =
> ACPI_ADR_SPACE_CMOS,
> ACPI_ADR_SPACE_PCI_BAR_TARGET,
> ACPI_ADR_SPACE_IPMI,
> + ACPI_ADR_SPACE_GPIO,
> + ACPI_ADR_SPACE_GSBUS,
> ACPI_ADR_SPACE_DATA_TABLE,
> ACPI_ADR_SPACE_FIXED_HARDWARE
> };
> @@ -840,6 +842,7 @@ AcpiDbDisplayArgumentObject (
> }
>
>
> +#if (!ACPI_REDUCED_HARDWARE)
> /*******************************************************************************
> *
> * FUNCTION: AcpiDbDisplayGpes
> @@ -1002,6 +1005,7 @@ AcpiDbDisplayGpes (
> GpeXruptInfo = GpeXruptInfo->Next;
> }
> }
> +#endif /* !ACPI_REDUCED_HARDWARE */
>
>
> /*******************************************************************************
> @@ -1043,7 +1047,7 @@ AcpiDbDisplayHandlers (
>
> while (HandlerObj)
> {
> - if (i == HandlerObj->AddressSpace.SpaceId)
> + if (AcpiGbl_SpaceIdList[i] == HandlerObj->AddressSpace.SpaceId)
> {
> AcpiOsPrintf (ACPI_HANDLER_PRESENT_STRING,
> (HandlerObj->AddressSpace.HandlerFlags &
> @@ -1061,8 +1065,28 @@ AcpiDbDisplayHandlers (
>
> FoundHandler:;
> }
> +
> + /* Find all handlers for user-defined SpaceIDs */
> +
> + HandlerObj = ObjDesc->Device.Handler;
> + while (HandlerObj)
> + {
> + if (HandlerObj->AddressSpace.SpaceId >= ACPI_USER_REGION_BEGIN)
> + {
> + AcpiOsPrintf (ACPI_PREDEFINED_PREFIX,
> + "User-defined ID", HandlerObj->AddressSpace.SpaceId);
> + AcpiOsPrintf (ACPI_HANDLER_PRESENT_STRING,
> + (HandlerObj->AddressSpace.HandlerFlags &
> + ACPI_ADDR_HANDLER_DEFAULT_INSTALLED) ? "Default" : "User",
> + HandlerObj->AddressSpace.Handler);
> + }
> +
> + HandlerObj = HandlerObj->AddressSpace.Next;
> + }
> }
>
> +#if (!ACPI_REDUCED_HARDWARE)
> +
> /* Fixed event handlers */
>
> AcpiOsPrintf ("\nFixed Event Handlers:\n");
> @@ -1081,6 +1105,8 @@ AcpiDbDisplayHandlers (
> }
> }
>
> +#endif /* !ACPI_REDUCED_HARDWARE */
> +
> /* Miscellaneous global handlers */
>
> AcpiOsPrintf ("\nMiscellaneous Global Handlers:\n");
> diff --git a/src/acpica/source/components/debugger/dbexec.c b/src/acpica/source/components/debugger/dbexec.c
> index 53539b9..eb85998 100644
> --- a/src/acpica/source/components/debugger/dbexec.c
> +++ b/src/acpica/source/components/debugger/dbexec.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/debugger/dbfileio.c b/src/acpica/source/components/debugger/dbfileio.c
> index 66ff961..495d609 100644
> --- a/src/acpica/source/components/debugger/dbfileio.c
> +++ b/src/acpica/source/components/debugger/dbfileio.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -343,10 +343,11 @@ AcpiDbReadTable (
>
> fseek (fp, 0, SEEK_SET);
>
> - /* The RSDT and FACS tables do not have standard ACPI headers */
> + /* The RSDT, FACS and S3PT tables do not have standard ACPI headers */
>
> if (ACPI_COMPARE_NAME (TableHeader.Signature, "RSD ") ||
> - ACPI_COMPARE_NAME (TableHeader.Signature, "FACS"))
> + ACPI_COMPARE_NAME (TableHeader.Signature, "FACS") ||
> + ACPI_COMPARE_NAME (TableHeader.Signature, "S3PT"))
> {
> *TableLength = FileSize;
> StandardHeader = FALSE;
> diff --git a/src/acpica/source/components/debugger/dbhistry.c b/src/acpica/source/components/debugger/dbhistry.c
> index 6b42b7b..a95f53b 100644
> --- a/src/acpica/source/components/debugger/dbhistry.c
> +++ b/src/acpica/source/components/debugger/dbhistry.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/debugger/dbinput.c b/src/acpica/source/components/debugger/dbinput.c
> index 12f883d..3e61bdb 100644
> --- a/src/acpica/source/components/debugger/dbinput.c
> +++ b/src/acpica/source/components/debugger/dbinput.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -203,6 +203,7 @@ enum AcpiExDebuggerCommands
> CMD_STATS,
> CMD_STOP,
> CMD_TABLES,
> + CMD_TEMPLATE,
> CMD_TERMINATE,
> CMD_THREADS,
> CMD_TRACE,
> @@ -271,6 +272,7 @@ static const COMMAND_INFO AcpiGbl_DbCommands[] =
> {"STATS", 0},
> {"STOP", 0},
> {"TABLES", 0},
> + {"TEMPLATE", 1},
> {"TERMINATE", 0},
> {"THREADS", 3},
> {"TRACE", 1},
> @@ -340,9 +342,10 @@ AcpiDbDisplayHelp (
> AcpiOsPrintf (" Predefined Check all predefined names\n");
> AcpiOsPrintf (" Prefix [<NamePath>] Set or Get current execution prefix\n");
> AcpiOsPrintf (" References <Addr> Find all references to object at addr\n");
> - AcpiOsPrintf (" Resources <Device> Get and display Device resources\n");
> + AcpiOsPrintf (" Resources <DeviceName | *> Display Device resources (* = all devices)\n");
> AcpiOsPrintf (" Set N <NamedObject> <Value> Set value for named integer\n");
> AcpiOsPrintf (" Sleep <SleepState> Simulate sleep/wake sequence\n");
> + AcpiOsPrintf (" Template <Object> Format/dump a Buffer/ResourceTemplate\n");
> AcpiOsPrintf (" Terminate Delete namespace and all internal objects\n");
> AcpiOsPrintf (" Type <Object> Display object type\n");
>
> @@ -731,12 +734,15 @@ AcpiDbCommandDispatch (
> break;
>
> case CMD_ENABLEACPI:
> +#if (!ACPI_REDUCED_HARDWARE)
> +
> Status = AcpiEnable();
> if (ACPI_FAILURE(Status))
> {
> AcpiOsPrintf("AcpiEnable failed (Status=%X)\n", Status);
> return (Status);
> }
> +#endif /* !ACPI_REDUCED_HARDWARE */
> break;
>
> case CMD_EVENT:
> @@ -926,6 +932,10 @@ AcpiDbCommandDispatch (
> AcpiDbDisplayTableInfo (AcpiGbl_DbArgs[1]);
> break;
>
> + case CMD_TEMPLATE:
> + AcpiDbDisplayTemplate (AcpiGbl_DbArgs[1]);
> + break;
> +
> case CMD_TERMINATE:
> AcpiDbSetOutputDestination (ACPI_DB_REDIRECTABLE_OUTPUT);
> AcpiUtSubsystemShutdown ();
> diff --git a/src/acpica/source/components/debugger/dbmethod.c b/src/acpica/source/components/debugger/dbmethod.c
> index 110a7ba..47778cc 100644
> --- a/src/acpica/source/components/debugger/dbmethod.c
> +++ b/src/acpica/source/components/debugger/dbmethod.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/debugger/dbnames.c b/src/acpica/source/components/debugger/dbnames.c
> index b1d0712..d1faeef 100644
> --- a/src/acpica/source/components/debugger/dbnames.c
> +++ b/src/acpica/source/components/debugger/dbnames.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/debugger/dbstats.c b/src/acpica/source/components/debugger/dbstats.c
> index 5c1ce99..8a6e713 100644
> --- a/src/acpica/source/components/debugger/dbstats.c
> +++ b/src/acpica/source/components/debugger/dbstats.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/debugger/dbutils.c b/src/acpica/source/components/debugger/dbutils.c
> index 5e4f9eb..fd318d9 100644
> --- a/src/acpica/source/components/debugger/dbutils.c
> +++ b/src/acpica/source/components/debugger/dbutils.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -262,10 +262,7 @@ AcpiDbDumpExternalObject (
> case ACPI_TYPE_STRING:
>
> AcpiOsPrintf ("[String] Length %.2X = ", ObjDesc->String.Length);
> - for (i = 0; i < ObjDesc->String.Length; i++)
> - {
> - AcpiOsPrintf ("%c", ObjDesc->String.Pointer[i]);
> - }
> + AcpiUtPrintString (ObjDesc->String.Pointer, ACPI_UINT8_MAX);
> AcpiOsPrintf ("\n");
> break;
>
> @@ -280,7 +277,7 @@ AcpiDbDumpExternalObject (
> AcpiOsPrintf ("\n");
> }
> AcpiUtDumpBuffer (ACPI_CAST_PTR (UINT8, ObjDesc->Buffer.Pointer),
> - ObjDesc->Buffer.Length, DB_DWORD_DISPLAY, _COMPONENT);
> + ObjDesc->Buffer.Length, DB_BYTE_DISPLAY, _COMPONENT);
> }
> else
> {
> diff --git a/src/acpica/source/components/debugger/dbxface.c b/src/acpica/source/components/debugger/dbxface.c
> index 4ab4ac3..a53c26f 100644
> --- a/src/acpica/source/components/debugger/dbxface.c
> +++ b/src/acpica/source/components/debugger/dbxface.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/disassembler/dmbuffer.c b/src/acpica/source/components/disassembler/dmbuffer.c
> index 2399781..4f9dc15 100644
> --- a/src/acpica/source/components/disassembler/dmbuffer.c
> +++ b/src/acpica/source/components/disassembler/dmbuffer.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -180,19 +180,19 @@ AcpiDmDisasmByteList (
> }
>
> AcpiDmIndent (Level);
> - if (ByteCount > 7)
> + if (ByteCount > 8)
> {
> - AcpiOsPrintf ("/* %04X */ ", i);
> + AcpiOsPrintf ("/* %04X */ ", i);
> }
> }
>
> - AcpiOsPrintf ("0x%2.2X", (UINT32) ByteData[i]);
> + AcpiOsPrintf (" 0x%2.2X", (UINT32) ByteData[i]);
>
> /* Add comma if there are more bytes to display */
>
> if (i < (ByteCount -1))
> {
> - AcpiOsPrintf (", ");
> + AcpiOsPrintf (",");
> }
> }
>
> diff --git a/src/acpica/source/components/disassembler/dmnames.c b/src/acpica/source/components/disassembler/dmnames.c
> index a00aff1..02fc4e5 100644
> --- a/src/acpica/source/components/disassembler/dmnames.c
> +++ b/src/acpica/source/components/disassembler/dmnames.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/disassembler/dmobject.c b/src/acpica/source/components/disassembler/dmobject.c
> index 1aa7215..78d28d3 100644
> --- a/src/acpica/source/components/disassembler/dmobject.c
> +++ b/src/acpica/source/components/disassembler/dmobject.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/disassembler/dmopcode.c b/src/acpica/source/components/disassembler/dmopcode.c
> index 652c8a6..ed457ed 100644
> --- a/src/acpica/source/components/disassembler/dmopcode.c
> +++ b/src/acpica/source/components/disassembler/dmopcode.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -375,6 +375,7 @@ AcpiDmDisassembleOneOp (
> UINT32 Length;
> ACPI_PARSE_OBJECT *Child;
> ACPI_STATUS Status;
> + UINT8 *Aml;
>
>
> if (!Op)
> @@ -498,16 +499,19 @@ AcpiDmDisassembleOneOp (
> * types of buffers, we have to closely look at the data in the
> * buffer to determine the type.
> */
> - Status = AcpiDmIsResourceTemplate (Op);
> - if (ACPI_SUCCESS (Status))
> + if (!AcpiGbl_NoResourceDisassembly)
> {
> - Op->Common.DisasmOpcode = ACPI_DASM_RESOURCE;
> - AcpiOsPrintf ("ResourceTemplate");
> - break;
> - }
> - else if (Status == AE_AML_NO_RESOURCE_END_TAG)
> - {
> - AcpiOsPrintf ("/**** Is ResourceTemplate, but EndTag not at buffer end ****/ ");
> + Status = AcpiDmIsResourceTemplate (Op);
> + if (ACPI_SUCCESS (Status))
> + {
> + Op->Common.DisasmOpcode = ACPI_DASM_RESOURCE;
> + AcpiOsPrintf ("ResourceTemplate");
> + break;
> + }
> + else if (Status == AE_AML_NO_RESOURCE_END_TAG)
> + {
> + AcpiOsPrintf ("/**** Is ResourceTemplate, but EndTag not at buffer end ****/ ");
> + }
> }
>
> if (AcpiDmIsUnicodeBuffer (Op))
> @@ -567,7 +571,7 @@ AcpiDmDisassembleOneOp (
>
> if (Info->BitOffset % 8 == 0)
> {
> - AcpiOsPrintf (" Offset (0x%.2X)", ACPI_DIV_8 (Info->BitOffset));
> + AcpiOsPrintf ("Offset (0x%.2X)", ACPI_DIV_8 (Info->BitOffset));
> }
> else
> {
> @@ -579,16 +583,59 @@ AcpiDmDisassembleOneOp (
>
>
> case AML_INT_ACCESSFIELD_OP:
> + case AML_INT_EXTACCESSFIELD_OP:
>
> - AcpiOsPrintf (" AccessAs (%s, ",
> - AcpiGbl_AccessTypes [(UINT32) (Op->Common.Value.Integer >> 8) & 0x7]);
> + AcpiOsPrintf ("AccessAs (%s, ",
> + AcpiGbl_AccessTypes [(UINT32) (Op->Common.Value.Integer & 0x7)]);
> +
> + AcpiDmDecodeAttribute ((UINT8) (Op->Common.Value.Integer >> 8));
> +
> + if (Op->Common.AmlOpcode == AML_INT_EXTACCESSFIELD_OP)
> + {
> + AcpiOsPrintf (" (0x%2.2X)", (unsigned) ((Op->Common.Value.Integer >> 16) & 0xFF));
> + }
>
> - AcpiDmDecodeAttribute ((UINT8) Op->Common.Value.Integer);
> AcpiOsPrintf (")");
> AcpiDmCommaIfFieldMember (Op);
> break;
>
>
> + case AML_INT_CONNECTION_OP:
> +
> + /*
> + * Two types of Connection() - one with a buffer object, the
> + * other with a namestring that points to a buffer object.
> + */
> + AcpiOsPrintf ("Connection (");
> + Child = Op->Common.Value.Arg;
> +
> + if (Child->Common.AmlOpcode == AML_INT_BYTELIST_OP)
> + {
> + AcpiOsPrintf ("\n");
> +
> + Aml = Child->Named.Data;
> + Length = (UINT32) Child->Common.Value.Integer;
> +
> + Info->Level += 1;
> + Op->Common.DisasmOpcode = ACPI_DASM_RESOURCE;
> + AcpiDmResourceTemplate (Info, Op->Common.Parent, Aml, Length);
> +
> + Info->Level -= 1;
> + AcpiDmIndent (Info->Level);
> + }
> + else
> + {
> + AcpiDmNamestring (Child->Common.Value.Name);
> + }
> +
> + AcpiOsPrintf (")");
> + AcpiDmCommaIfFieldMember (Op);
> + AcpiOsPrintf ("\n");
> +
> + Op->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE; /* for now, ignore in AcpiDmAscendingOp */
> + Child->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE;
> + break;
> +
> case AML_INT_BYTELIST_OP:
>
> AcpiDmByteList (Info, Op);
> diff --git a/src/acpica/source/components/disassembler/dmresrc.c b/src/acpica/source/components/disassembler/dmresrc.c
> index 93a6c05..0bc5067 100644
> --- a/src/acpica/source/components/disassembler/dmresrc.c
> +++ b/src/acpica/source/components/disassembler/dmresrc.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -127,12 +127,6 @@
>
> /* Dispatch tables for Resource disassembly functions */
>
> -typedef
> -void (*ACPI_RESOURCE_HANDLER) (
> - AML_RESOURCE *Resource,
> - UINT32 Length,
> - UINT32 Level);
> -
> static ACPI_RESOURCE_HANDLER AcpiGbl_DmResourceDispatch [] =
> {
> /* Small descriptors */
> @@ -147,7 +141,7 @@ static ACPI_RESOURCE_HANDLER AcpiGbl_DmResourceDispatch [] =
> AcpiDmEndDependentDescriptor, /* 0x07, ACPI_RESOURCE_NAME_END_DEPENDENT */
> AcpiDmIoDescriptor, /* 0x08, ACPI_RESOURCE_NAME_IO_PORT */
> AcpiDmFixedIoDescriptor, /* 0x09, ACPI_RESOURCE_NAME_FIXED_IO_PORT */
> - NULL, /* 0x0A, Reserved */
> + AcpiDmFixedDmaDescriptor, /* 0x0A, ACPI_RESOURCE_NAME_FIXED_DMA */
> NULL, /* 0x0B, Reserved */
> NULL, /* 0x0C, Reserved */
> NULL, /* 0x0D, Reserved */
> @@ -167,7 +161,10 @@ static ACPI_RESOURCE_HANDLER AcpiGbl_DmResourceDispatch [] =
> AcpiDmWordDescriptor, /* 0x08, ACPI_RESOURCE_NAME_WORD_ADDRESS_SPACE */
> AcpiDmInterruptDescriptor, /* 0x09, ACPI_RESOURCE_NAME_EXTENDED_XRUPT */
> AcpiDmQwordDescriptor, /* 0x0A, ACPI_RESOURCE_NAME_QWORD_ADDRESS_SPACE */
> - AcpiDmExtendedDescriptor /* 0x0B, ACPI_RESOURCE_NAME_EXTENDED_ADDRESS_SPACE */
> + AcpiDmExtendedDescriptor, /* 0x0B, ACPI_RESOURCE_NAME_EXTENDED_ADDRESS_SPACE */
> + AcpiDmGpioDescriptor, /* 0x0C, ACPI_RESOURCE_NAME_GPIO */
> + NULL, /* 0x0D, Reserved */
> + AcpiDmSerialBusDescriptor /* 0x0E, ACPI_RESOURCE_NAME_SERIAL_BUS */
> };
>
>
> diff --git a/src/acpica/source/components/disassembler/dmresrcl.c b/src/acpica/source/components/disassembler/dmresrcl.c
> index d266c57..2060048 100644
> --- a/src/acpica/source/components/disassembler/dmresrcl.c
> +++ b/src/acpica/source/components/disassembler/dmresrcl.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -1122,4 +1122,3 @@ AcpiDmVendorLargeDescriptor (
> }
>
> #endif
> -
> diff --git a/src/acpica/source/components/disassembler/dmresrcs.c b/src/acpica/source/components/disassembler/dmresrcs.c
> index 2bb1c91..baf7d31 100644
> --- a/src/acpica/source/components/disassembler/dmresrcs.c
> +++ b/src/acpica/source/components/disassembler/dmresrcs.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -193,9 +193,9 @@ AcpiDmDmaDescriptor (
>
> AcpiDmIndent (Level);
> AcpiOsPrintf ("DMA (%s, %s, %s, ",
> - AcpiGbl_TypDecode [(Resource->Dma.Flags >> 5) & 3],
> - AcpiGbl_BmDecode [(Resource->Dma.Flags >> 2) & 1],
> - AcpiGbl_SizDecode [(Resource->Dma.Flags >> 0) & 3]);
> + AcpiGbl_TypDecode [(Resource->Dma.Flags >> 5) & 3],
> + AcpiGbl_BmDecode [(Resource->Dma.Flags >> 2) & 1],
> + AcpiGbl_SizDecode [(Resource->Dma.Flags >> 0) & 3]);
>
> /* Insert a descriptor name */
>
> @@ -209,6 +209,49 @@ AcpiDmDmaDescriptor (
>
> /*******************************************************************************
> *
> + * FUNCTION: AcpiDmFixedDmaDescriptor
> + *
> + * PARAMETERS: Resource - Pointer to the resource descriptor
> + * Length - Length of the descriptor in bytes
> + * Level - Current source code indentation level
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Decode a FixedDMA descriptor
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDmFixedDmaDescriptor (
> + AML_RESOURCE *Resource,
> + UINT32 Length,
> + UINT32 Level)
> +{
> +
> + AcpiDmIndent (Level);
> + AcpiOsPrintf ("FixedDMA (0x%4.4X, 0x%4.4X, ",
> + Resource->FixedDma.RequestLines,
> + Resource->FixedDma.Channels);
> +
> + if (Resource->FixedDma.Width <= 5)
> + {
> + AcpiOsPrintf ("%s, ",
> + AcpiGbl_DtsDecode [Resource->FixedDma.Width]);
> + }
> + else
> + {
> + AcpiOsPrintf ("%X /* INVALID DMA WIDTH */, ", Resource->FixedDma.Width);
> + }
> +
> + /* Insert a descriptor name */
> +
> + AcpiDmDescriptorName ();
> + AcpiOsPrintf (")\n");
> +}
> +
> +
> +/*******************************************************************************
> + *
> * FUNCTION: AcpiDmIoDescriptor
> *
> * PARAMETERS: Resource - Pointer to the resource descriptor
> diff --git a/src/acpica/source/components/disassembler/dmutils.c b/src/acpica/source/components/disassembler/dmutils.c
> index b64b8fb..bd40d23 100644
> --- a/src/acpica/source/components/disassembler/dmutils.c
> +++ b/src/acpica/source/components/disassembler/dmutils.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -207,7 +207,8 @@ const char *AcpiGbl_IrqDecode[] =
> *
> * RETURN: None
> *
> - * DESCRIPTION: Decode the AccessAs attribute byte. (Mostly SMBus stuff)
> + * DESCRIPTION: Decode the AccessAs attribute byte. (Mostly SMBus and
> + * GenericSerialBus stuff.)
> *
> ******************************************************************************/
>
> @@ -218,44 +219,61 @@ AcpiDmDecodeAttribute (
>
> switch (Attribute)
> {
> - case AML_FIELD_ATTRIB_SMB_QUICK:
> + case AML_FIELD_ATTRIB_QUICK:
>
> - AcpiOsPrintf ("SMBQuick");
> + AcpiOsPrintf ("AttribQuick");
> break;
>
> - case AML_FIELD_ATTRIB_SMB_SEND_RCV:
> + case AML_FIELD_ATTRIB_SEND_RCV:
>
> - AcpiOsPrintf ("SMBSendReceive");
> + AcpiOsPrintf ("AttribSendReceive");
> break;
>
> - case AML_FIELD_ATTRIB_SMB_BYTE:
> + case AML_FIELD_ATTRIB_BYTE:
>
> - AcpiOsPrintf ("SMBByte");
> + AcpiOsPrintf ("AttribByte");
> break;
>
> - case AML_FIELD_ATTRIB_SMB_WORD:
> + case AML_FIELD_ATTRIB_WORD:
>
> - AcpiOsPrintf ("SMBWord");
> + AcpiOsPrintf ("AttribWord");
> break;
>
> - case AML_FIELD_ATTRIB_SMB_WORD_CALL:
> + case AML_FIELD_ATTRIB_BLOCK:
>
> - AcpiOsPrintf ("SMBProcessCall");
> + AcpiOsPrintf ("AttribBlock");
> break;
>
> - case AML_FIELD_ATTRIB_SMB_BLOCK:
> + case AML_FIELD_ATTRIB_MULTIBYTE:
>
> - AcpiOsPrintf ("SMBBlock");
> + AcpiOsPrintf ("AttribBytes");
> break;
>
> - case AML_FIELD_ATTRIB_SMB_BLOCK_CALL:
> + case AML_FIELD_ATTRIB_WORD_CALL:
>
> - AcpiOsPrintf ("SMBBlockProcessCall");
> + AcpiOsPrintf ("AttribProcessCall");
> + break;
> +
> + case AML_FIELD_ATTRIB_BLOCK_CALL:
> +
> + AcpiOsPrintf ("AttribBlockProcessCall");
> + break;
> +
> + case AML_FIELD_ATTRIB_RAW_BYTES:
> +
> + AcpiOsPrintf ("AttribRawBytes");
> + break;
> +
> + case AML_FIELD_ATTRIB_RAW_PROCESS:
> +
> + AcpiOsPrintf ("AttribRawProcessBytes");
> break;
>
> default:
>
> - AcpiOsPrintf ("0x%.2X", Attribute);
> + /* A ByteConst is allowed by the grammar */
> +
> + AcpiOsPrintf ("0x%2.2X", Attribute);
> break;
> }
> }
> diff --git a/src/acpica/source/components/disassembler/dmwalk.c b/src/acpica/source/components/disassembler/dmwalk.c
> index 86aee3d..2bec308 100644
> --- a/src/acpica/source/components/disassembler/dmwalk.c
> +++ b/src/acpica/source/components/disassembler/dmwalk.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -536,7 +536,8 @@ AcpiDmDescendingOp (
>
> AcpiDmDisassembleOneOp (NULL, Info, Op);
>
> - if (Op->Common.DisasmOpcode == ACPI_DASM_LNOT_PREFIX)
> + if ((Op->Common.DisasmOpcode == ACPI_DASM_LNOT_PREFIX) ||
> + (Op->Common.AmlOpcode == AML_INT_CONNECTION_OP))
> {
> return (AE_OK);
> }
> diff --git a/src/acpica/source/components/dispatcher/dsargs.c b/src/acpica/source/components/dispatcher/dsargs.c
> index 44cc41b..1e7e167 100644
> --- a/src/acpica/source/components/dispatcher/dsargs.c
> +++ b/src/acpica/source/components/dispatcher/dsargs.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -496,7 +496,15 @@ AcpiDsGetRegionArguments (
>
> /* Execute the argument AML */
>
> - Status = AcpiDsExecuteArguments (Node, Node->Parent,
> + Status = AcpiDsExecuteArguments (Node, ExtraDesc->Extra.ScopeNode,
> ExtraDesc->Extra.AmlLength, ExtraDesc->Extra.AmlStart);
> + if (ACPI_FAILURE (Status))
> + {
> + return_ACPI_STATUS (Status);
> + }
> +
> + Status = AcpiUtAddAddressRange (ObjDesc->Region.SpaceId,
> + ObjDesc->Region.Address, ObjDesc->Region.Length,
> + Node);
> return_ACPI_STATUS (Status);
> }
> diff --git a/src/acpica/source/components/dispatcher/dscontrol.c b/src/acpica/source/components/dispatcher/dscontrol.c
> index 41435e0..0f689b2 100644
> --- a/src/acpica/source/components/dispatcher/dscontrol.c
> +++ b/src/acpica/source/components/dispatcher/dscontrol.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/dispatcher/dsfield.c b/src/acpica/source/components/dispatcher/dsfield.c
> index 39d2e88..526d478 100644
> --- a/src/acpica/source/components/dispatcher/dsfield.c
> +++ b/src/acpica/source/components/dispatcher/dsfield.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -315,6 +315,7 @@ AcpiDsGetFieldNames (
> {
> ACPI_STATUS Status;
> UINT64 Position;
> + ACPI_PARSE_OBJECT *Child;
>
>
> ACPI_FUNCTION_TRACE_PTR (DsGetFieldNames, Info);
> @@ -329,10 +330,11 @@ AcpiDsGetFieldNames (
> while (Arg)
> {
> /*
> - * Three types of field elements are handled:
> - * 1) Offset - specifies a bit offset
> - * 2) AccessAs - changes the access mode
> - * 3) Name - Enters a new named field into the namespace
> + * Four types of field elements are handled:
> + * 1) Name - Enters a new named field into the namespace
> + * 2) Offset - specifies a bit offset
> + * 3) AccessAs - changes the access mode/attributes
> + * 4) Connection - Associate a resource template with the field
> */
> switch (Arg->Common.AmlOpcode)
> {
> @@ -351,24 +353,67 @@ AcpiDsGetFieldNames (
> Info->FieldBitPosition = (UINT32) Position;
> break;
>
> -
> case AML_INT_ACCESSFIELD_OP:
> -
> + case AML_INT_EXTACCESSFIELD_OP:
> /*
> - * Get a new AccessType and AccessAttribute -- to be used for all
> - * field units that follow, until field end or another AccessAs
> - * keyword.
> + * Get new AccessType, AccessAttribute, and AccessLength fields
> + * -- to be used for all field units that follow, until the
> + * end-of-field or another AccessAs keyword is encountered.
> + * NOTE. These three bytes are encoded in the integer value
> + * of the parseop for convenience.
> *
> * In FieldFlags, preserve the flag bits other than the
> - * ACCESS_TYPE bits
> + * ACCESS_TYPE bits.
> */
> +
> + /* AccessType (ByteAcc, WordAcc, etc.) */
> +
> Info->FieldFlags = (UINT8)
> ((Info->FieldFlags & ~(AML_FIELD_ACCESS_TYPE_MASK)) |
> - ((UINT8) ((UINT32) Arg->Common.Value.Integer >> 8)));
> + ((UINT8) ((UINT32) (Arg->Common.Value.Integer & 0x07))));
> +
> + /* AccessAttribute (AttribQuick, AttribByte, etc.) */
> +
> + Info->Attribute = (UINT8) ((Arg->Common.Value.Integer >> 8) & 0xFF);
> +
> + /* AccessLength (for serial/buffer protocols) */
>
> - Info->Attribute = (UINT8) (Arg->Common.Value.Integer);
> + Info->AccessLength = (UINT8) ((Arg->Common.Value.Integer >> 16) & 0xFF);
> break;
>
> + case AML_INT_CONNECTION_OP:
> + /*
> + * Clear any previous connection. New connection is used for all
> + * fields that follow, similar to AccessAs
> + */
> + Info->ResourceBuffer = NULL;
> + Info->ConnectionNode = NULL;
> +
> + /*
> + * A Connection() is either an actual resource descriptor (buffer)
> + * or a named reference to a resource template
> + */
> + Child = Arg->Common.Value.Arg;
> + if (Child->Common.AmlOpcode == AML_INT_BYTELIST_OP)
> + {
> + Info->ResourceBuffer = Child->Named.Data;
> + Info->ResourceLength = (UINT16) Child->Named.Value.Integer;
> + }
> + else
> + {
> + /* Lookup the Connection() namepath, it should already exist */
> +
> + Status = AcpiNsLookup (WalkState->ScopeInfo,
> + Child->Common.Value.Name, ACPI_TYPE_ANY,
> + ACPI_IMODE_EXECUTE, ACPI_NS_DONT_OPEN_SCOPE,
> + WalkState, &Info->ConnectionNode);
> + if (ACPI_FAILURE (Status))
> + {
> + ACPI_ERROR_NAMESPACE (Child->Common.Value.Name, Status);
> + return_ACPI_STATUS (Status);
> + }
> + }
> + break;
>
> case AML_INT_NAMEDFIELD_OP:
>
> @@ -420,7 +465,6 @@ AcpiDsGetFieldNames (
> Info->FieldBitPosition += Info->FieldBitLength;
> break;
>
> -
> default:
>
> ACPI_ERROR ((AE_INFO,
> @@ -478,6 +522,8 @@ AcpiDsCreateField (
> }
> }
>
> + ACPI_MEMSET (&Info, 0, sizeof (ACPI_CREATE_FIELD_INFO));
> +
> /* Second arg is the field flags */
>
> Arg = Arg->Common.Next;
> @@ -490,7 +536,6 @@ AcpiDsCreateField (
> Info.RegionNode = RegionNode;
>
> Status = AcpiDsGetFieldNames (&Info, WalkState, Arg->Common.Next);
> -
> return_ACPI_STATUS (Status);
> }
>
> @@ -586,8 +631,8 @@ AcpiDsInitFieldObjects (
> while (Arg)
> {
> /*
> - * Ignore OFFSET and ACCESSAS terms here; we are only interested in the
> - * field names in order to enter them into the namespace.
> + * Ignore OFFSET/ACCESSAS/CONNECTION terms here; we are only interested
> + * in the field names in order to enter them into the namespace.
> */
> if (Arg->Common.AmlOpcode == AML_INT_NAMEDFIELD_OP)
> {
> @@ -769,7 +814,6 @@ AcpiDsCreateIndexField (
> Info.RegionNode = RegionNode;
>
> Status = AcpiDsGetFieldNames (&Info, WalkState, Arg->Common.Next);
> -
> return_ACPI_STATUS (Status);
> }
>
> diff --git a/src/acpica/source/components/dispatcher/dsinit.c b/src/acpica/source/components/dispatcher/dsinit.c
> index f9d1e24..51b19ee 100644
> --- a/src/acpica/source/components/dispatcher/dsinit.c
> +++ b/src/acpica/source/components/dispatcher/dsinit.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/dispatcher/dsmethod.c b/src/acpica/source/components/dispatcher/dsmethod.c
> index 8f7d6bd..4b80b4f 100644
> --- a/src/acpica/source/components/dispatcher/dsmethod.c
> +++ b/src/acpica/source/components/dispatcher/dsmethod.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/dispatcher/dsmthdat.c b/src/acpica/source/components/dispatcher/dsmthdat.c
> index a264b3a..2305d1f 100644
> --- a/src/acpica/source/components/dispatcher/dsmthdat.c
> +++ b/src/acpica/source/components/dispatcher/dsmthdat.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/dispatcher/dsobject.c b/src/acpica/source/components/dispatcher/dsobject.c
> index abf8672..1ff2265 100644
> --- a/src/acpica/source/components/dispatcher/dsobject.c
> +++ b/src/acpica/source/components/dispatcher/dsobject.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/dispatcher/dsopcode.c b/src/acpica/source/components/dispatcher/dsopcode.c
> index 0f5164e..5da09bd 100644
> --- a/src/acpica/source/components/dispatcher/dsopcode.c
> +++ b/src/acpica/source/components/dispatcher/dsopcode.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/dispatcher/dsutils.c b/src/acpica/source/components/dispatcher/dsutils.c
> index 22bd0bf..199cd90 100644
> --- a/src/acpica/source/components/dispatcher/dsutils.c
> +++ b/src/acpica/source/components/dispatcher/dsutils.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/dispatcher/dswexec.c b/src/acpica/source/components/dispatcher/dswexec.c
> index e243c7f..cd86061 100644
> --- a/src/acpica/source/components/dispatcher/dswexec.c
> +++ b/src/acpica/source/components/dispatcher/dswexec.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/dispatcher/dswload.c b/src/acpica/source/components/dispatcher/dswload.c
> index f30bbfc..1f689d6 100644
> --- a/src/acpica/source/components/dispatcher/dswload.c
> +++ b/src/acpica/source/components/dispatcher/dswload.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/dispatcher/dswload2.c b/src/acpica/source/components/dispatcher/dswload2.c
> index 8eba533..85a86ec 100644
> --- a/src/acpica/source/components/dispatcher/dswload2.c
> +++ b/src/acpica/source/components/dispatcher/dswload2.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/dispatcher/dswscope.c b/src/acpica/source/components/dispatcher/dswscope.c
> index b95c427..b8b5c6c 100644
> --- a/src/acpica/source/components/dispatcher/dswscope.c
> +++ b/src/acpica/source/components/dispatcher/dswscope.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/dispatcher/dswstate.c b/src/acpica/source/components/dispatcher/dswstate.c
> index 07ed6d4..d1b2ca8 100644
> --- a/src/acpica/source/components/dispatcher/dswstate.c
> +++ b/src/acpica/source/components/dispatcher/dswstate.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/events/evevent.c b/src/acpica/source/components/events/evevent.c
> index a85588f..1cdf7df 100644
> --- a/src/acpica/source/components/events/evevent.c
> +++ b/src/acpica/source/components/events/evevent.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -120,6 +120,8 @@
> #define _COMPONENT ACPI_EVENTS
> ACPI_MODULE_NAME ("evevent")
>
> +#if (!ACPI_REDUCED_HARDWARE) /* Entire module */
> +
> /* Local prototypes */
>
> static ACPI_STATUS
> @@ -153,6 +155,13 @@ AcpiEvInitializeEvents (
> ACPI_FUNCTION_TRACE (EvInitializeEvents);
>
>
> + /* If Hardware Reduced flag is set, there are no fixed events */
> +
> + if (AcpiGbl_ReducedHardware)
> + {
> + return_ACPI_STATUS (AE_OK);
> + }
> +
> /*
> * Initialize the Fixed and General Purpose Events. This is done prior to
> * enabling SCIs to prevent interrupts from occurring before the handlers
> @@ -200,6 +209,13 @@ AcpiEvInstallXruptHandlers (
> ACPI_FUNCTION_TRACE (EvInstallXruptHandlers);
>
>
> + /* If Hardware Reduced flag is set, there is no ACPI h/w */
> +
> + if (AcpiGbl_ReducedHardware)
> + {
> + return_ACPI_STATUS (AE_OK);
> + }
> +
> /* Install the SCI handler */
>
> Status = AcpiEvInstallSciHandler ();
> @@ -387,4 +403,6 @@ AcpiEvFixedEventDispatch (
> AcpiGbl_FixedEventHandlers[Event].Context));
> }
>
> +#endif /* !ACPI_REDUCED_HARDWARE */
> +
>
> diff --git a/src/acpica/source/components/events/evglock.c b/src/acpica/source/components/events/evglock.c
> index a7a585a..031233a 100644
> --- a/src/acpica/source/components/events/evglock.c
> +++ b/src/acpica/source/components/events/evglock.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -121,6 +121,7 @@
> #define _COMPONENT ACPI_EVENTS
> ACPI_MODULE_NAME ("evglock")
>
> +#if (!ACPI_REDUCED_HARDWARE) /* Entire module */
>
> /* Local prototypes */
>
> @@ -151,6 +152,13 @@ AcpiEvInitGlobalLockHandler (
> ACPI_FUNCTION_TRACE (EvInitGlobalLockHandler);
>
>
> + /* If Hardware Reduced flag is set, there is no global lock */
> +
> + if (AcpiGbl_ReducedHardware)
> + {
> + return_ACPI_STATUS (AE_OK);
> + }
> +
> /* Attempt installation of the global lock handler */
>
> Status = AcpiInstallFixedEventHandler (ACPI_EVENT_GLOBAL,
> @@ -437,3 +445,5 @@ AcpiEvReleaseGlobalLock (
> AcpiOsReleaseMutex (AcpiGbl_GlobalLockMutex->Mutex.OsMutex);
> return_ACPI_STATUS (Status);
> }
> +
> +#endif /* !ACPI_REDUCED_HARDWARE */
> diff --git a/src/acpica/source/components/events/evgpe.c b/src/acpica/source/components/events/evgpe.c
> index 59e5d55..de32275 100644
> --- a/src/acpica/source/components/events/evgpe.c
> +++ b/src/acpica/source/components/events/evgpe.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -121,6 +121,8 @@
> #define _COMPONENT ACPI_EVENTS
> ACPI_MODULE_NAME ("evgpe")
>
> +#if (!ACPI_REDUCED_HARDWARE) /* Entire module */
> +
> /* Local prototypes */
>
> static void ACPI_SYSTEM_XFACE
> @@ -898,3 +900,4 @@ AcpiEvGpeDispatch (
> return_UINT32 (ACPI_INTERRUPT_HANDLED);
> }
>
> +#endif /* !ACPI_REDUCED_HARDWARE */
> diff --git a/src/acpica/source/components/events/evgpeblk.c b/src/acpica/source/components/events/evgpeblk.c
> index c3ea571..622b772 100644
> --- a/src/acpica/source/components/events/evgpeblk.c
> +++ b/src/acpica/source/components/events/evgpeblk.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -121,6 +121,8 @@
> #define _COMPONENT ACPI_EVENTS
> ACPI_MODULE_NAME ("evgpeblk")
>
> +#if (!ACPI_REDUCED_HARDWARE) /* Entire module */
> +
> /* Local prototypes */
>
> static ACPI_STATUS
> @@ -617,3 +619,4 @@ AcpiEvInitializeGpeBlock (
> return_ACPI_STATUS (AE_OK);
> }
>
> +#endif /* !ACPI_REDUCED_HARDWARE */
> diff --git a/src/acpica/source/components/events/evgpeinit.c b/src/acpica/source/components/events/evgpeinit.c
> index 8bba111..4a85449 100644
> --- a/src/acpica/source/components/events/evgpeinit.c
> +++ b/src/acpica/source/components/events/evgpeinit.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -122,6 +122,7 @@
> #define _COMPONENT ACPI_EVENTS
> ACPI_MODULE_NAME ("evgpeinit")
>
> +#if (!ACPI_REDUCED_HARDWARE) /* Entire module */
>
> /*
> * Note: History of _PRW support in ACPICA
> @@ -529,3 +530,5 @@ AcpiEvMatchGpeMethod (
> Name, GpeNumber));
> return_ACPI_STATUS (AE_OK);
> }
> +
> +#endif /* !ACPI_REDUCED_HARDWARE */
> diff --git a/src/acpica/source/components/events/evgpeutil.c b/src/acpica/source/components/events/evgpeutil.c
> index eb422a1..a5ad320 100644
> --- a/src/acpica/source/components/events/evgpeutil.c
> +++ b/src/acpica/source/components/events/evgpeutil.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -113,7 +113,6 @@
> *
> *****************************************************************************/
>
> -
> #include "acpi.h"
> #include "accommon.h"
> #include "acevents.h"
> @@ -122,6 +121,7 @@
> ACPI_MODULE_NAME ("evgpeutil")
>
>
> +#if (!ACPI_REDUCED_HARDWARE) /* Entire module */
> /*******************************************************************************
> *
> * FUNCTION: AcpiEvWalkGpeList
> @@ -494,3 +494,4 @@ AcpiEvDeleteGpeHandlers (
> return_ACPI_STATUS (AE_OK);
> }
>
> +#endif /* !ACPI_REDUCED_HARDWARE */
> diff --git a/src/acpica/source/components/events/evmisc.c b/src/acpica/source/components/events/evmisc.c
> index 69d6c79..7369daa 100644
> --- a/src/acpica/source/components/events/evmisc.c
> +++ b/src/acpica/source/components/events/evmisc.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -192,27 +192,29 @@ AcpiEvQueueNotifyRequest (
>
>
> /*
> - * For value 3 (Ejection Request), some device method may need to be run.
> - * For value 2 (Device Wake) if _PRW exists, the _PS0 method may need
> - * to be run.
> + * For value 0x03 (Ejection Request), may need to run a device method.
> + * For value 0x02 (Device Wake), if _PRW exists, may need to run
> + * the _PS0 method.
> * For value 0x80 (Status Change) on the power button or sleep button,
> - * initiate soft-off or sleep operation?
> + * initiate soft-off or sleep operation.
> + *
> + * For all cases, simply dispatch the notify to the handler.
> */
> ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
> - "Dispatching Notify on [%4.4s] Node %p Value 0x%2.2X (%s)\n",
> - AcpiUtGetNodeName (Node), Node, NotifyValue,
> - AcpiUtGetNotifyName (NotifyValue)));
> + "Dispatching Notify on [%4.4s] (%s) Value 0x%2.2X (%s) Node %p\n",
> + AcpiUtGetNodeName (Node), AcpiUtGetTypeName (Node->Type),
> + NotifyValue, AcpiUtGetNotifyName (NotifyValue), Node));
>
> /* Get the notify object attached to the NS Node */
>
> ObjDesc = AcpiNsGetAttachedObject (Node);
> if (ObjDesc)
> {
> - /* We have the notify object, Get the right handler */
> + /* We have the notify object, Get the correct handler */
>
> switch (Node->Type)
> {
> - /* Notify allowed only on these types */
> + /* Notify is allowed only on these types */
>
> case ACPI_TYPE_DEVICE:
> case ACPI_TYPE_THERMAL:
> @@ -237,7 +239,7 @@ AcpiEvQueueNotifyRequest (
> }
>
> /*
> - * If there is any handler to run, schedule the dispatcher.
> + * If there is a handler to run, schedule the dispatcher.
> * Check for:
> * 1) Global system notify handler
> * 2) Global device notify handler
> @@ -363,6 +365,7 @@ AcpiEvNotifyDispatch (
> }
>
>
> +#if (!ACPI_REDUCED_HARDWARE)
> /******************************************************************************
> *
> * FUNCTION: AcpiEvTerminate
> @@ -442,3 +445,5 @@ AcpiEvTerminate (
> }
> return_VOID;
> }
> +
> +#endif /* !ACPI_REDUCED_HARDWARE */
> diff --git a/src/acpica/source/components/events/evregion.c b/src/acpica/source/components/events/evregion.c
> index bd50228..9ba3db5 100644
> --- a/src/acpica/source/components/events/evregion.c
> +++ b/src/acpica/source/components/events/evregion.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -444,6 +444,7 @@ Cleanup1:
> * FUNCTION: AcpiEvAddressSpaceDispatch
> *
> * PARAMETERS: RegionObj - Internal region object
> + * FieldObj - Corresponding field. Can be NULL.
> * Function - Read or Write operation
> * RegionOffset - Where in the region to read or write
> * BitWidth - Field width in bits (8, 16, 32, or 64)
> @@ -460,6 +461,7 @@ Cleanup1:
> ACPI_STATUS
> AcpiEvAddressSpaceDispatch (
> ACPI_OPERAND_OBJECT *RegionObj,
> + ACPI_OPERAND_OBJECT *FieldObj,
> UINT32 Function,
> UINT32 RegionOffset,
> UINT32 BitWidth,
> @@ -471,6 +473,7 @@ AcpiEvAddressSpaceDispatch (
> ACPI_OPERAND_OBJECT *HandlerDesc;
> ACPI_OPERAND_OBJECT *RegionObj2;
> void *RegionContext = NULL;
> + ACPI_CONNECTION_INFO *Context;
>
>
> ACPI_FUNCTION_TRACE (EvAddressSpaceDispatch);
> @@ -495,6 +498,8 @@ AcpiEvAddressSpaceDispatch (
> return_ACPI_STATUS (AE_NOT_EXIST);
> }
>
> + Context = HandlerDesc->AddressSpace.Context;
> +
> /*
> * It may be the case that the region has never been initialized.
> * Some types of regions require special init code
> @@ -522,7 +527,7 @@ AcpiEvAddressSpaceDispatch (
> AcpiExExitInterpreter ();
>
> Status = RegionSetup (RegionObj, ACPI_REGION_ACTIVATE,
> - HandlerDesc->AddressSpace.Context, &RegionContext);
> + Context, &RegionContext);
>
> /* Re-enter the interpreter */
>
> @@ -571,6 +576,27 @@ AcpiEvAddressSpaceDispatch (
> ACPI_FORMAT_NATIVE_UINT (RegionObj->Region.Address + RegionOffset),
> AcpiUtGetRegionName (RegionObj->Region.SpaceId)));
>
> +
> + /*
> + * Special handling for GenericSerialBus and GeneralPurposeIo:
> + * There are three extra parameters that must be passed to the
> + * handler via the context:
> + * 1) Connection buffer, a resource template from Connection() op.
> + * 2) Length of the above buffer.
> + * 3) Actual access length from the AccessAs() op.
> + */
> + if (((RegionObj->Region.SpaceId == ACPI_ADR_SPACE_GSBUS) ||
> + (RegionObj->Region.SpaceId == ACPI_ADR_SPACE_GPIO)) &&
> + Context &&
> + FieldObj)
> + {
> + /* Get the Connection (ResourceTemplate) buffer */
> +
> + Context->Connection = FieldObj->Field.ResourceBuffer;
> + Context->Length = FieldObj->Field.ResourceLength;
> + Context->AccessLength = FieldObj->Field.AccessLength;
> + }
> +
> if (!(HandlerDesc->AddressSpace.HandlerFlags &
> ACPI_ADDR_HANDLER_DEFAULT_INSTALLED))
> {
> @@ -586,7 +612,7 @@ AcpiEvAddressSpaceDispatch (
>
> Status = Handler (Function,
> (RegionObj->Region.Address + RegionOffset), BitWidth, Value,
> - HandlerDesc->AddressSpace.Context, RegionObj2->Extra.RegionContext);
> + Context, RegionObj2->Extra.RegionContext);
>
> if (ACPI_FAILURE (Status))
> {
> diff --git a/src/acpica/source/components/events/evrgnini.c b/src/acpica/source/components/events/evrgnini.c
> index cb9a2fd..121d2de 100644
> --- a/src/acpica/source/components/events/evrgnini.c
> +++ b/src/acpica/source/components/events/evrgnini.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/events/evsci.c b/src/acpica/source/components/events/evsci.c
> index e0d9261..6966067 100644
> --- a/src/acpica/source/components/events/evsci.c
> +++ b/src/acpica/source/components/events/evsci.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -123,6 +123,8 @@
> #define _COMPONENT ACPI_EVENTS
> ACPI_MODULE_NAME ("evsci")
>
> +#if (!ACPI_REDUCED_HARDWARE) /* Entire module */
> +
> /* Local prototypes */
>
> static UINT32 ACPI_SYSTEM_XFACE
> @@ -277,4 +279,4 @@ AcpiEvRemoveSciHandler (
> return_ACPI_STATUS (Status);
> }
>
> -
> +#endif /* !ACPI_REDUCED_HARDWARE */
> diff --git a/src/acpica/source/components/events/evxface.c b/src/acpica/source/components/events/evxface.c
> index 990ddfb..a6aea09 100644
> --- a/src/acpica/source/components/events/evxface.c
> +++ b/src/acpica/source/components/events/evxface.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -128,257 +128,6 @@
>
> /*******************************************************************************
> *
> - * FUNCTION: AcpiInstallExceptionHandler
> - *
> - * PARAMETERS: Handler - Pointer to the handler function for the
> - * event
> - *
> - * RETURN: Status
> - *
> - * DESCRIPTION: Saves the pointer to the handler function
> - *
> - ******************************************************************************/
> -
> -ACPI_STATUS
> -AcpiInstallExceptionHandler (
> - ACPI_EXCEPTION_HANDLER Handler)
> -{
> - ACPI_STATUS Status;
> -
> -
> - ACPI_FUNCTION_TRACE (AcpiInstallExceptionHandler);
> -
> -
> - Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS);
> - if (ACPI_FAILURE (Status))
> - {
> - return_ACPI_STATUS (Status);
> - }
> -
> - /* Don't allow two handlers. */
> -
> - if (AcpiGbl_ExceptionHandler)
> - {
> - Status = AE_ALREADY_EXISTS;
> - goto Cleanup;
> - }
> -
> - /* Install the handler */
> -
> - AcpiGbl_ExceptionHandler = Handler;
> -
> -Cleanup:
> - (void) AcpiUtReleaseMutex (ACPI_MTX_EVENTS);
> - return_ACPI_STATUS (Status);
> -}
> -
> -ACPI_EXPORT_SYMBOL (AcpiInstallExceptionHandler)
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: AcpiInstallGlobalEventHandler
> - *
> - * PARAMETERS: Handler - Pointer to the global event handler function
> - * Context - Value passed to the handler on each event
> - *
> - * RETURN: Status
> - *
> - * DESCRIPTION: Saves the pointer to the handler function. The global handler
> - * is invoked upon each incoming GPE and Fixed Event. It is
> - * invoked at interrupt level at the time of the event dispatch.
> - * Can be used to update event counters, etc.
> - *
> - ******************************************************************************/
> -
> -ACPI_STATUS
> -AcpiInstallGlobalEventHandler (
> - ACPI_GBL_EVENT_HANDLER Handler,
> - void *Context)
> -{
> - ACPI_STATUS Status;
> -
> -
> - ACPI_FUNCTION_TRACE (AcpiInstallGlobalEventHandler);
> -
> -
> - /* Parameter validation */
> -
> - if (!Handler)
> - {
> - return_ACPI_STATUS (AE_BAD_PARAMETER);
> - }
> -
> - Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS);
> - if (ACPI_FAILURE (Status))
> - {
> - return_ACPI_STATUS (Status);
> - }
> -
> - /* Don't allow two handlers. */
> -
> - if (AcpiGbl_GlobalEventHandler)
> - {
> - Status = AE_ALREADY_EXISTS;
> - goto Cleanup;
> - }
> -
> - AcpiGbl_GlobalEventHandler = Handler;
> - AcpiGbl_GlobalEventHandlerContext = Context;
> -
> -
> -Cleanup:
> - (void) AcpiUtReleaseMutex (ACPI_MTX_EVENTS);
> - return_ACPI_STATUS (Status);
> -}
> -
> -ACPI_EXPORT_SYMBOL (AcpiInstallGlobalEventHandler)
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: AcpiInstallFixedEventHandler
> - *
> - * PARAMETERS: Event - Event type to enable.
> - * Handler - Pointer to the handler function for the
> - * event
> - * Context - Value passed to the handler on each GPE
> - *
> - * RETURN: Status
> - *
> - * DESCRIPTION: Saves the pointer to the handler function and then enables the
> - * event.
> - *
> - ******************************************************************************/
> -
> -ACPI_STATUS
> -AcpiInstallFixedEventHandler (
> - UINT32 Event,
> - ACPI_EVENT_HANDLER Handler,
> - void *Context)
> -{
> - ACPI_STATUS Status;
> -
> -
> - ACPI_FUNCTION_TRACE (AcpiInstallFixedEventHandler);
> -
> -
> - /* Parameter validation */
> -
> - if (Event > ACPI_EVENT_MAX)
> - {
> - return_ACPI_STATUS (AE_BAD_PARAMETER);
> - }
> -
> - Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS);
> - if (ACPI_FAILURE (Status))
> - {
> - return_ACPI_STATUS (Status);
> - }
> -
> - /* Don't allow two handlers. */
> -
> - if (NULL != AcpiGbl_FixedEventHandlers[Event].Handler)
> - {
> - Status = AE_ALREADY_EXISTS;
> - goto Cleanup;
> - }
> -
> - /* Install the handler before enabling the event */
> -
> - AcpiGbl_FixedEventHandlers[Event].Handler = Handler;
> - AcpiGbl_FixedEventHandlers[Event].Context = Context;
> -
> - Status = AcpiEnableEvent (Event, 0);
> - if (ACPI_FAILURE (Status))
> - {
> - ACPI_WARNING ((AE_INFO, "Could not enable fixed event 0x%X", Event));
> -
> - /* Remove the handler */
> -
> - AcpiGbl_FixedEventHandlers[Event].Handler = NULL;
> - AcpiGbl_FixedEventHandlers[Event].Context = NULL;
> - }
> - else
> - {
> - ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
> - "Enabled fixed event %X, Handler=%p\n", Event, Handler));
> - }
> -
> -
> -Cleanup:
> - (void) AcpiUtReleaseMutex (ACPI_MTX_EVENTS);
> - return_ACPI_STATUS (Status);
> -}
> -
> -ACPI_EXPORT_SYMBOL (AcpiInstallFixedEventHandler)
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: AcpiRemoveFixedEventHandler
> - *
> - * PARAMETERS: Event - Event type to disable.
> - * Handler - Address of the handler
> - *
> - * RETURN: Status
> - *
> - * DESCRIPTION: Disables the event and unregisters the event handler.
> - *
> - ******************************************************************************/
> -
> -ACPI_STATUS
> -AcpiRemoveFixedEventHandler (
> - UINT32 Event,
> - ACPI_EVENT_HANDLER Handler)
> -{
> - ACPI_STATUS Status = AE_OK;
> -
> -
> - ACPI_FUNCTION_TRACE (AcpiRemoveFixedEventHandler);
> -
> -
> - /* Parameter validation */
> -
> - if (Event > ACPI_EVENT_MAX)
> - {
> - return_ACPI_STATUS (AE_BAD_PARAMETER);
> - }
> -
> - Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS);
> - if (ACPI_FAILURE (Status))
> - {
> - return_ACPI_STATUS (Status);
> - }
> -
> - /* Disable the event before removing the handler */
> -
> - Status = AcpiDisableEvent (Event, 0);
> -
> - /* Always Remove the handler */
> -
> - AcpiGbl_FixedEventHandlers[Event].Handler = NULL;
> - AcpiGbl_FixedEventHandlers[Event].Context = NULL;
> -
> - if (ACPI_FAILURE (Status))
> - {
> - ACPI_WARNING ((AE_INFO,
> - "Could not write to fixed event enable register 0x%X", Event));
> - }
> - else
> - {
> - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Disabled fixed event %X\n", Event));
> - }
> -
> - (void) AcpiUtReleaseMutex (ACPI_MTX_EVENTS);
> - return_ACPI_STATUS (Status);
> -}
> -
> -ACPI_EXPORT_SYMBOL (AcpiRemoveFixedEventHandler)
> -
> -
> -/*******************************************************************************
> - *
> * FUNCTION: AcpiInstallNotifyHandler
> *
> * PARAMETERS: Device - The device for which notifies will be handled
> @@ -730,6 +479,258 @@ ACPI_EXPORT_SYMBOL (AcpiRemoveNotifyHandler)
>
> /*******************************************************************************
> *
> + * FUNCTION: AcpiInstallExceptionHandler
> + *
> + * PARAMETERS: Handler - Pointer to the handler function for the
> + * event
> + *
> + * RETURN: Status
> + *
> + * DESCRIPTION: Saves the pointer to the handler function
> + *
> + ******************************************************************************/
> +
> +ACPI_STATUS
> +AcpiInstallExceptionHandler (
> + ACPI_EXCEPTION_HANDLER Handler)
> +{
> + ACPI_STATUS Status;
> +
> +
> + ACPI_FUNCTION_TRACE (AcpiInstallExceptionHandler);
> +
> +
> + Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS);
> + if (ACPI_FAILURE (Status))
> + {
> + return_ACPI_STATUS (Status);
> + }
> +
> + /* Don't allow two handlers. */
> +
> + if (AcpiGbl_ExceptionHandler)
> + {
> + Status = AE_ALREADY_EXISTS;
> + goto Cleanup;
> + }
> +
> + /* Install the handler */
> +
> + AcpiGbl_ExceptionHandler = Handler;
> +
> +Cleanup:
> + (void) AcpiUtReleaseMutex (ACPI_MTX_EVENTS);
> + return_ACPI_STATUS (Status);
> +}
> +
> +ACPI_EXPORT_SYMBOL (AcpiInstallExceptionHandler)
> +
> +
> +#if (!ACPI_REDUCED_HARDWARE)
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiInstallGlobalEventHandler
> + *
> + * PARAMETERS: Handler - Pointer to the global event handler function
> + * Context - Value passed to the handler on each event
> + *
> + * RETURN: Status
> + *
> + * DESCRIPTION: Saves the pointer to the handler function. The global handler
> + * is invoked upon each incoming GPE and Fixed Event. It is
> + * invoked at interrupt level at the time of the event dispatch.
> + * Can be used to update event counters, etc.
> + *
> + ******************************************************************************/
> +
> +ACPI_STATUS
> +AcpiInstallGlobalEventHandler (
> + ACPI_GBL_EVENT_HANDLER Handler,
> + void *Context)
> +{
> + ACPI_STATUS Status;
> +
> +
> + ACPI_FUNCTION_TRACE (AcpiInstallGlobalEventHandler);
> +
> +
> + /* Parameter validation */
> +
> + if (!Handler)
> + {
> + return_ACPI_STATUS (AE_BAD_PARAMETER);
> + }
> +
> + Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS);
> + if (ACPI_FAILURE (Status))
> + {
> + return_ACPI_STATUS (Status);
> + }
> +
> + /* Don't allow two handlers. */
> +
> + if (AcpiGbl_GlobalEventHandler)
> + {
> + Status = AE_ALREADY_EXISTS;
> + goto Cleanup;
> + }
> +
> + AcpiGbl_GlobalEventHandler = Handler;
> + AcpiGbl_GlobalEventHandlerContext = Context;
> +
> +
> +Cleanup:
> + (void) AcpiUtReleaseMutex (ACPI_MTX_EVENTS);
> + return_ACPI_STATUS (Status);
> +}
> +
> +ACPI_EXPORT_SYMBOL (AcpiInstallGlobalEventHandler)
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiInstallFixedEventHandler
> + *
> + * PARAMETERS: Event - Event type to enable.
> + * Handler - Pointer to the handler function for the
> + * event
> + * Context - Value passed to the handler on each GPE
> + *
> + * RETURN: Status
> + *
> + * DESCRIPTION: Saves the pointer to the handler function and then enables the
> + * event.
> + *
> + ******************************************************************************/
> +
> +ACPI_STATUS
> +AcpiInstallFixedEventHandler (
> + UINT32 Event,
> + ACPI_EVENT_HANDLER Handler,
> + void *Context)
> +{
> + ACPI_STATUS Status;
> +
> +
> + ACPI_FUNCTION_TRACE (AcpiInstallFixedEventHandler);
> +
> +
> + /* Parameter validation */
> +
> + if (Event > ACPI_EVENT_MAX)
> + {
> + return_ACPI_STATUS (AE_BAD_PARAMETER);
> + }
> +
> + Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS);
> + if (ACPI_FAILURE (Status))
> + {
> + return_ACPI_STATUS (Status);
> + }
> +
> + /* Don't allow two handlers. */
> +
> + if (NULL != AcpiGbl_FixedEventHandlers[Event].Handler)
> + {
> + Status = AE_ALREADY_EXISTS;
> + goto Cleanup;
> + }
> +
> + /* Install the handler before enabling the event */
> +
> + AcpiGbl_FixedEventHandlers[Event].Handler = Handler;
> + AcpiGbl_FixedEventHandlers[Event].Context = Context;
> +
> + Status = AcpiEnableEvent (Event, 0);
> + if (ACPI_FAILURE (Status))
> + {
> + ACPI_WARNING ((AE_INFO, "Could not enable fixed event 0x%X", Event));
> +
> + /* Remove the handler */
> +
> + AcpiGbl_FixedEventHandlers[Event].Handler = NULL;
> + AcpiGbl_FixedEventHandlers[Event].Context = NULL;
> + }
> + else
> + {
> + ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
> + "Enabled fixed event %X, Handler=%p\n", Event, Handler));
> + }
> +
> +
> +Cleanup:
> + (void) AcpiUtReleaseMutex (ACPI_MTX_EVENTS);
> + return_ACPI_STATUS (Status);
> +}
> +
> +ACPI_EXPORT_SYMBOL (AcpiInstallFixedEventHandler)
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiRemoveFixedEventHandler
> + *
> + * PARAMETERS: Event - Event type to disable.
> + * Handler - Address of the handler
> + *
> + * RETURN: Status
> + *
> + * DESCRIPTION: Disables the event and unregisters the event handler.
> + *
> + ******************************************************************************/
> +
> +ACPI_STATUS
> +AcpiRemoveFixedEventHandler (
> + UINT32 Event,
> + ACPI_EVENT_HANDLER Handler)
> +{
> + ACPI_STATUS Status = AE_OK;
> +
> +
> + ACPI_FUNCTION_TRACE (AcpiRemoveFixedEventHandler);
> +
> +
> + /* Parameter validation */
> +
> + if (Event > ACPI_EVENT_MAX)
> + {
> + return_ACPI_STATUS (AE_BAD_PARAMETER);
> + }
> +
> + Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS);
> + if (ACPI_FAILURE (Status))
> + {
> + return_ACPI_STATUS (Status);
> + }
> +
> + /* Disable the event before removing the handler */
> +
> + Status = AcpiDisableEvent (Event, 0);
> +
> + /* Always Remove the handler */
> +
> + AcpiGbl_FixedEventHandlers[Event].Handler = NULL;
> + AcpiGbl_FixedEventHandlers[Event].Context = NULL;
> +
> + if (ACPI_FAILURE (Status))
> + {
> + ACPI_WARNING ((AE_INFO,
> + "Could not write to fixed event enable register 0x%X", Event));
> + }
> + else
> + {
> + ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Disabled fixed event %X\n", Event));
> + }
> +
> + (void) AcpiUtReleaseMutex (ACPI_MTX_EVENTS);
> + return_ACPI_STATUS (Status);
> +}
> +
> +ACPI_EXPORT_SYMBOL (AcpiRemoveFixedEventHandler)
> +
> +
> +/*******************************************************************************
> + *
> * FUNCTION: AcpiInstallGpeHandler
> *
> * PARAMETERS: GpeDevice - Namespace node for the GPE (NULL for FADT
> @@ -1047,3 +1048,4 @@ AcpiReleaseGlobalLock (
>
> ACPI_EXPORT_SYMBOL (AcpiReleaseGlobalLock)
>
> +#endif /* !ACPI_REDUCED_HARDWARE */
> diff --git a/src/acpica/source/components/events/evxfevnt.c b/src/acpica/source/components/events/evxfevnt.c
> index 437f6e3..9e5bf62 100644
> --- a/src/acpica/source/components/events/evxfevnt.c
> +++ b/src/acpica/source/components/events/evxfevnt.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -124,6 +124,7 @@
> ACPI_MODULE_NAME ("evxfevnt")
>
>
> +#if (!ACPI_REDUCED_HARDWARE) /* Entire module */
> /*******************************************************************************
> *
> * FUNCTION: AcpiEnable
> @@ -449,4 +450,4 @@ AcpiGetEventStatus (
>
> ACPI_EXPORT_SYMBOL (AcpiGetEventStatus)
>
> -
> +#endif /* !ACPI_REDUCED_HARDWARE */
> diff --git a/src/acpica/source/components/events/evxfgpe.c b/src/acpica/source/components/events/evxfgpe.c
> index 8cd73b3..7018513 100644
> --- a/src/acpica/source/components/events/evxfgpe.c
> +++ b/src/acpica/source/components/events/evxfgpe.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -125,6 +125,7 @@
> ACPI_MODULE_NAME ("evxfgpe")
>
>
> +#if (!ACPI_REDUCED_HARDWARE) /* Entire module */
> /*******************************************************************************
> *
> * FUNCTION: AcpiUpdateAllGpes
> @@ -970,3 +971,5 @@ AcpiGetGpeDevice (
> }
>
> ACPI_EXPORT_SYMBOL (AcpiGetGpeDevice)
> +
> +#endif /* !ACPI_REDUCED_HARDWARE */
> diff --git a/src/acpica/source/components/events/evxfregn.c b/src/acpica/source/components/events/evxfregn.c
> index 552b0e0..7edb8b4 100644
> --- a/src/acpica/source/components/events/evxfregn.c
> +++ b/src/acpica/source/components/events/evxfregn.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/executer/exconfig.c b/src/acpica/source/components/executer/exconfig.c
> index 341a05b..69361d5 100644
> --- a/src/acpica/source/components/executer/exconfig.c
> +++ b/src/acpica/source/components/executer/exconfig.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -407,7 +407,7 @@ AcpiExRegionRead (
>
> for (i = 0; i < Length; i++)
> {
> - Status = AcpiEvAddressSpaceDispatch (ObjDesc, ACPI_READ,
> + Status = AcpiEvAddressSpaceDispatch (ObjDesc, NULL, ACPI_READ,
> RegionOffset, 8, &Value);
> if (ACPI_FAILURE (Status))
> {
> diff --git a/src/acpica/source/components/executer/exconvrt.c b/src/acpica/source/components/executer/exconvrt.c
> index 67a0a26..8036441 100644
> --- a/src/acpica/source/components/executer/exconvrt.c
> +++ b/src/acpica/source/components/executer/exconvrt.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/executer/excreate.c b/src/acpica/source/components/executer/excreate.c
> index a9b92c1..4138fcf 100644
> --- a/src/acpica/source/components/executer/excreate.c
> +++ b/src/acpica/source/components/executer/excreate.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -357,7 +357,7 @@ Cleanup:
> *
> * PARAMETERS: AmlStart - Pointer to the region declaration AML
> * AmlLength - Max length of the declaration AML
> - * RegionSpace - SpaceID for the region
> + * SpaceId - Address space ID for the region
> * WalkState - Current state
> *
> * RETURN: Status
> @@ -370,7 +370,7 @@ ACPI_STATUS
> AcpiExCreateRegion (
> UINT8 *AmlStart,
> UINT32 AmlLength,
> - UINT8 RegionSpace,
> + UINT8 SpaceId,
> ACPI_WALK_STATE *WalkState)
> {
> ACPI_STATUS Status;
> @@ -399,16 +399,18 @@ AcpiExCreateRegion (
> * Space ID must be one of the predefined IDs, or in the user-defined
> * range
> */
> - if ((RegionSpace >= ACPI_NUM_PREDEFINED_REGIONS) &&
> - (RegionSpace < ACPI_USER_REGION_BEGIN) &&
> - (RegionSpace != ACPI_ADR_SPACE_DATA_TABLE))
> + if (!AcpiIsValidSpaceId (SpaceId))
> {
> - ACPI_ERROR ((AE_INFO, "Invalid AddressSpace type 0x%X", RegionSpace));
> - return_ACPI_STATUS (AE_AML_INVALID_SPACE_ID);
> + /*
> + * Print an error message, but continue. We don't want to abort
> + * a table load for this exception. Instead, if the region is
> + * actually used at runtime, abort the executing method.
> + */
> + ACPI_ERROR ((AE_INFO, "Invalid/unknown Address Space ID: 0x%2.2X", SpaceId));
> }
>
> ACPI_DEBUG_PRINT ((ACPI_DB_LOAD, "Region Type - %s (0x%X)\n",
> - AcpiUtGetRegionName (RegionSpace), RegionSpace));
> + AcpiUtGetRegionName (SpaceId), SpaceId));
>
> /* Create the region descriptor */
>
> @@ -426,10 +428,18 @@ AcpiExCreateRegion (
> RegionObj2 = ObjDesc->Common.NextObject;
> RegionObj2->Extra.AmlStart = AmlStart;
> RegionObj2->Extra.AmlLength = AmlLength;
> + if (WalkState->ScopeInfo)
> + {
> + RegionObj2->Extra.ScopeNode = WalkState->ScopeInfo->Scope.Node;
> + }
> + else
> + {
> + RegionObj2->Extra.ScopeNode = Node;
> + }
>
> /* Init the region from the operands */
>
> - ObjDesc->Region.SpaceId = RegionSpace;
> + ObjDesc->Region.SpaceId = SpaceId;
> ObjDesc->Region.Address = 0;
> ObjDesc->Region.Length = 0;
> ObjDesc->Region.Node = Node;
> diff --git a/src/acpica/source/components/executer/exdebug.c b/src/acpica/source/components/executer/exdebug.c
> index b1d7e07..8098e19 100644
> --- a/src/acpica/source/components/executer/exdebug.c
> +++ b/src/acpica/source/components/executer/exdebug.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/executer/exdump.c b/src/acpica/source/components/executer/exdump.c
> index 44f7d3b..5aab606 100644
> --- a/src/acpica/source/components/executer/exdump.c
> +++ b/src/acpica/source/components/executer/exdump.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -281,11 +281,13 @@ static ACPI_EXDUMP_INFO AcpiExDumpBufferField[3] =
> {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (BufferField.BufferObj), "Buffer Object"}
> };
>
> -static ACPI_EXDUMP_INFO AcpiExDumpRegionField[3] =
> +static ACPI_EXDUMP_INFO AcpiExDumpRegionField[5] =
> {
> {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpRegionField), NULL},
> {ACPI_EXD_FIELD, 0, NULL},
> - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Field.RegionObj), "Region Object"}
> + {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Field.AccessLength), "AccessLength"},
> + {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Field.RegionObj), "Region Object"},
> + {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Field.ResourceBuffer), "ResourceBuffer"}
> };
>
> static ACPI_EXDUMP_INFO AcpiExDumpBankField[5] =
> @@ -1071,10 +1073,7 @@ AcpiExDumpPackageObj (
> case ACPI_TYPE_STRING:
>
> AcpiOsPrintf ("[String] Value: ");
> - for (i = 0; i < ObjDesc->String.Length; i++)
> - {
> - AcpiOsPrintf ("%c", ObjDesc->String.Pointer[i]);
> - }
> + AcpiUtPrintString (ObjDesc->String.Pointer, ACPI_UINT8_MAX);
> AcpiOsPrintf ("\n");
> break;
>
> diff --git a/src/acpica/source/components/executer/exfield.c b/src/acpica/source/components/executer/exfield.c
> index 3cec69a..1f500ea 100644
> --- a/src/acpica/source/components/executer/exfield.c
> +++ b/src/acpica/source/components/executer/exfield.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -185,19 +185,25 @@ AcpiExReadDataFromField (
> }
> else if ((ObjDesc->Common.Type == ACPI_TYPE_LOCAL_REGION_FIELD) &&
> (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_SMBUS ||
> + ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_GSBUS ||
> ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_IPMI))
> {
> /*
> - * This is an SMBus or IPMI read. We must create a buffer to hold
> + * This is an SMBus, GSBus or IPMI read. We must create a buffer to hold
> * the data and then directly access the region handler.
> *
> - * Note: Smbus protocol value is passed in upper 16-bits of Function
> + * Note: SMBus and GSBus protocol value is passed in upper 16-bits of Function
> */
> if (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_SMBUS)
> {
> Length = ACPI_SMBUS_BUFFER_SIZE;
> Function = ACPI_READ | (ObjDesc->Field.Attribute << 16);
> }
> + else if (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_GSBUS)
> + {
> + Length = ACPI_GSBUS_BUFFER_SIZE;
> + Function = ACPI_READ | (ObjDesc->Field.Attribute << 16);
> + }
> else /* IPMI */
> {
> Length = ACPI_IPMI_BUFFER_SIZE;
> @@ -346,23 +352,24 @@ AcpiExWriteDataToField (
> }
> else if ((ObjDesc->Common.Type == ACPI_TYPE_LOCAL_REGION_FIELD) &&
> (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_SMBUS ||
> + ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_GSBUS ||
> ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_IPMI))
> {
> /*
> - * This is an SMBus or IPMI write. We will bypass the entire field
> + * This is an SMBus, GSBus or IPMI write. We will bypass the entire field
> * mechanism and handoff the buffer directly to the handler. For
> * these address spaces, the buffer is bi-directional; on a write,
> * return data is returned in the same buffer.
> *
> * Source must be a buffer of sufficient size:
> - * ACPI_SMBUS_BUFFER_SIZE or ACPI_IPMI_BUFFER_SIZE.
> + * ACPI_SMBUS_BUFFER_SIZE, ACPI_GSBUS_BUFFER_SIZE, or ACPI_IPMI_BUFFER_SIZE.
> *
> - * Note: SMBus protocol type is passed in upper 16-bits of Function
> + * Note: SMBus and GSBus protocol type is passed in upper 16-bits of Function
> */
> if (SourceDesc->Common.Type != ACPI_TYPE_BUFFER)
> {
> ACPI_ERROR ((AE_INFO,
> - "SMBus or IPMI write requires Buffer, found type %s",
> + "SMBus/IPMI/GenericSerialBus write requires Buffer, found type %s",
> AcpiUtGetObjectTypeName (SourceDesc)));
>
> return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
> @@ -373,6 +380,11 @@ AcpiExWriteDataToField (
> Length = ACPI_SMBUS_BUFFER_SIZE;
> Function = ACPI_WRITE | (ObjDesc->Field.Attribute << 16);
> }
> + else if (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_GSBUS)
> + {
> + Length = ACPI_GSBUS_BUFFER_SIZE;
> + Function = ACPI_WRITE | (ObjDesc->Field.Attribute << 16);
> + }
> else /* IPMI */
> {
> Length = ACPI_IPMI_BUFFER_SIZE;
> @@ -382,7 +394,7 @@ AcpiExWriteDataToField (
> if (SourceDesc->Buffer.Length < Length)
> {
> ACPI_ERROR ((AE_INFO,
> - "SMBus or IPMI write requires Buffer of length %u, found length %u",
> + "SMBus/IPMI/GenericSerialBus write requires Buffer of length %u, found length %u",
> Length, SourceDesc->Buffer.Length));
>
> return_ACPI_STATUS (AE_AML_BUFFER_LIMIT);
> diff --git a/src/acpica/source/components/executer/exfldio.c b/src/acpica/source/components/executer/exfldio.c
> index 55aacef..0aa7605 100644
> --- a/src/acpica/source/components/executer/exfldio.c
> +++ b/src/acpica/source/components/executer/exfldio.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -170,6 +170,7 @@ AcpiExSetupRegion (
> {
> ACPI_STATUS Status = AE_OK;
> ACPI_OPERAND_OBJECT *RgnDesc;
> + UINT8 SpaceId;
>
>
> ACPI_FUNCTION_TRACE_U32 (ExSetupRegion, FieldDatumByteOffset);
> @@ -188,6 +189,16 @@ AcpiExSetupRegion (
> return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
> }
>
> + SpaceId = RgnDesc->Region.SpaceId;
> +
> + /* Validate the Space ID */
> +
> + if (!AcpiIsValidSpaceId (SpaceId))
> + {
> + ACPI_ERROR ((AE_INFO, "Invalid/unknown Address Space ID: 0x%2.2X", SpaceId));
> + return_ACPI_STATUS (AE_AML_INVALID_SPACE_ID);
> + }
> +
> /*
> * If the Region Address and Length have not been previously evaluated,
> * evaluate them now and save the results.
> @@ -202,11 +213,12 @@ AcpiExSetupRegion (
> }
>
> /*
> - * Exit now for SMBus or IPMI address space, it has a non-linear
> + * Exit now for SMBus, GSBus or IPMI address space, it has a non-linear
> * address space and the request cannot be directly validated
> */
> - if (RgnDesc->Region.SpaceId == ACPI_ADR_SPACE_SMBUS ||
> - RgnDesc->Region.SpaceId == ACPI_ADR_SPACE_IPMI)
> + if (SpaceId == ACPI_ADR_SPACE_SMBUS ||
> + SpaceId == ACPI_ADR_SPACE_GSBUS ||
> + SpaceId == ACPI_ADR_SPACE_IPMI)
> {
> /* SMBus or IPMI has a non-linear address space */
>
> @@ -362,7 +374,8 @@ AcpiExAccessRegion (
>
> /* Invoke the appropriate AddressSpace/OpRegion handler */
>
> - Status = AcpiEvAddressSpaceDispatch (RgnDesc, Function, RegionOffset,
> + Status = AcpiEvAddressSpaceDispatch (RgnDesc, ObjDesc,
> + Function, RegionOffset,
> ACPI_MUL_8 (ObjDesc->CommonField.AccessByteWidth), Value);
>
> if (ACPI_FAILURE (Status))
> @@ -425,6 +438,11 @@ AcpiExRegisterOverflow (
> * The Value is larger than the maximum value that can fit into
> * the register.
> */
> + ACPI_ERROR ((AE_INFO,
> + "Index value 0x%8.8X%8.8X overflows field width 0x%X",
> + ACPI_FORMAT_UINT64 (Value),
> + ObjDesc->CommonField.BitLength));
> +
> return (TRUE);
> }
>
> diff --git a/src/acpica/source/components/executer/exmisc.c b/src/acpica/source/components/executer/exmisc.c
> index 41a6d3a..27e04d0 100644
> --- a/src/acpica/source/components/executer/exmisc.c
> +++ b/src/acpica/source/components/executer/exmisc.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/executer/exmutex.c b/src/acpica/source/components/executer/exmutex.c
> index 1ce8992..eb1f4de 100644
> --- a/src/acpica/source/components/executer/exmutex.c
> +++ b/src/acpica/source/components/executer/exmutex.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/executer/exnames.c b/src/acpica/source/components/executer/exnames.c
> index 8fd6098..f56bebc 100644
> --- a/src/acpica/source/components/executer/exnames.c
> +++ b/src/acpica/source/components/executer/exnames.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/executer/exoparg1.c b/src/acpica/source/components/executer/exoparg1.c
> index 5b37a5e..e2a3378 100644
> --- a/src/acpica/source/components/executer/exoparg1.c
> +++ b/src/acpica/source/components/executer/exoparg1.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/executer/exoparg2.c b/src/acpica/source/components/executer/exoparg2.c
> index b7c19ec..e55f40c 100644
> --- a/src/acpica/source/components/executer/exoparg2.c
> +++ b/src/acpica/source/components/executer/exoparg2.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/executer/exoparg3.c b/src/acpica/source/components/executer/exoparg3.c
> index e583c53..0ff732e 100644
> --- a/src/acpica/source/components/executer/exoparg3.c
> +++ b/src/acpica/source/components/executer/exoparg3.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/executer/exoparg6.c b/src/acpica/source/components/executer/exoparg6.c
> index 92afffc..215e4f6 100644
> --- a/src/acpica/source/components/executer/exoparg6.c
> +++ b/src/acpica/source/components/executer/exoparg6.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/executer/exprep.c b/src/acpica/source/components/executer/exprep.c
> index 3355eac..0b65ab9 100644
> --- a/src/acpica/source/components/executer/exprep.c
> +++ b/src/acpica/source/components/executer/exprep.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -121,6 +121,7 @@
> #include "acinterp.h"
> #include "amlcode.h"
> #include "acnamesp.h"
> +#include "acdispat.h"
>
>
> #define _COMPONENT ACPI_EXECUTER
> @@ -556,6 +557,32 @@ AcpiExPrepFieldValue (
>
> ObjDesc->Field.RegionObj = AcpiNsGetAttachedObject (Info->RegionNode);
>
> + /* Fields specific to GenericSerialBus fields */
> +
> + ObjDesc->Field.AccessLength = Info->AccessLength;
> +
> + if (Info->ConnectionNode)
> + {
> + SecondDesc = Info->ConnectionNode->Object;
> + if (!(SecondDesc->Common.Flags & AOPOBJ_DATA_VALID))
> + {
> + Status = AcpiDsGetBufferArguments (SecondDesc);
> + if (ACPI_FAILURE (Status))
> + {
> + AcpiUtDeleteObjectDesc (ObjDesc);
> + return_ACPI_STATUS (Status);
> + }
> + }
> +
> + ObjDesc->Field.ResourceBuffer = SecondDesc->Buffer.Pointer;
> + ObjDesc->Field.ResourceLength = (UINT16) SecondDesc->Buffer.Length;
> + }
> + else if (Info->ResourceBuffer)
> + {
> + ObjDesc->Field.ResourceBuffer = Info->ResourceBuffer;
> + ObjDesc->Field.ResourceLength = Info->ResourceLength;
> + }
> +
> /* Allow full data read from EC address space */
>
> if ((ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_EC) &&
> diff --git a/src/acpica/source/components/executer/exregion.c b/src/acpica/source/components/executer/exregion.c
> index 2a308db..8f31593 100644
> --- a/src/acpica/source/components/executer/exregion.c
> +++ b/src/acpica/source/components/executer/exregion.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/executer/exresnte.c b/src/acpica/source/components/executer/exresnte.c
> index 494d154..4f6d279 100644
> --- a/src/acpica/source/components/executer/exresnte.c
> +++ b/src/acpica/source/components/executer/exresnte.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/executer/exresolv.c b/src/acpica/source/components/executer/exresolv.c
> index 27a6c52..8d3893b 100644
> --- a/src/acpica/source/components/executer/exresolv.c
> +++ b/src/acpica/source/components/executer/exresolv.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/executer/exresop.c b/src/acpica/source/components/executer/exresop.c
> index 3a6be3b..4d4879e 100644
> --- a/src/acpica/source/components/executer/exresop.c
> +++ b/src/acpica/source/components/executer/exresop.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/executer/exstore.c b/src/acpica/source/components/executer/exstore.c
> index 30414f0..8bea79b 100644
> --- a/src/acpica/source/components/executer/exstore.c
> +++ b/src/acpica/source/components/executer/exstore.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/executer/exstoren.c b/src/acpica/source/components/executer/exstoren.c
> index cee5bc6..6d2291f 100644
> --- a/src/acpica/source/components/executer/exstoren.c
> +++ b/src/acpica/source/components/executer/exstoren.c
> @@ -10,7 +10,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/executer/exstorob.c b/src/acpica/source/components/executer/exstorob.c
> index e9adf5f..8e110fe 100644
> --- a/src/acpica/source/components/executer/exstorob.c
> +++ b/src/acpica/source/components/executer/exstorob.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/executer/exsystem.c b/src/acpica/source/components/executer/exsystem.c
> index ab36f75..3282b5d 100644
> --- a/src/acpica/source/components/executer/exsystem.c
> +++ b/src/acpica/source/components/executer/exsystem.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/executer/exutils.c b/src/acpica/source/components/executer/exutils.c
> index 5a0a9a5..3ebcbe5 100644
> --- a/src/acpica/source/components/executer/exutils.c
> +++ b/src/acpica/source/components/executer/exutils.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -571,4 +571,34 @@ AcpiExIntegerToString (
> }
> }
>
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiIsValidSpaceId
> + *
> + * PARAMETERS: SpaceId - ID to be validated
> + *
> + * RETURN: TRUE if valid/supported ID.
> + *
> + * DESCRIPTION: Validate an operation region SpaceID.
> + *
> + ******************************************************************************/
> +
> +BOOLEAN
> +AcpiIsValidSpaceId (
> + UINT8 SpaceId)
> +{
> +
> + if ((SpaceId >= ACPI_NUM_PREDEFINED_REGIONS) &&
> + (SpaceId < ACPI_USER_REGION_BEGIN) &&
> + (SpaceId != ACPI_ADR_SPACE_DATA_TABLE) &&
> + (SpaceId != ACPI_ADR_SPACE_FIXED_HARDWARE))
> + {
> + return (FALSE);
> + }
> +
> + return (TRUE);
> +}
> +
> +
> #endif
> diff --git a/src/acpica/source/components/hardware/hwacpi.c b/src/acpica/source/components/hardware/hwacpi.c
> index b4ceb39..b95385a 100644
> --- a/src/acpica/source/components/hardware/hwacpi.c
> +++ b/src/acpica/source/components/hardware/hwacpi.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -124,6 +124,7 @@
> ACPI_MODULE_NAME ("hwacpi")
>
>
> +#if (!ACPI_REDUCED_HARDWARE) /* Entire module */
> /******************************************************************************
> *
> * FUNCTION: AcpiHwSetMode
> @@ -276,3 +277,5 @@ AcpiHwGetMode (
> return_UINT32 (ACPI_SYS_MODE_LEGACY);
> }
> }
> +
> +#endif /* !ACPI_REDUCED_HARDWARE */
> diff --git a/src/acpica/source/components/hardware/hwgpe.c b/src/acpica/source/components/hardware/hwgpe.c
> index b12bab6..0483f62 100644
> --- a/src/acpica/source/components/hardware/hwgpe.c
> +++ b/src/acpica/source/components/hardware/hwgpe.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -121,6 +121,8 @@
> #define _COMPONENT ACPI_HARDWARE
> ACPI_MODULE_NAME ("hwgpe")
>
> +#if (!ACPI_REDUCED_HARDWARE) /* Entire module */
> +
> /* Local prototypes */
>
> static ACPI_STATUS
> @@ -610,3 +612,4 @@ AcpiHwEnableAllWakeupGpes (
> return_ACPI_STATUS (Status);
> }
>
> +#endif /* !ACPI_REDUCED_HARDWARE */
> diff --git a/src/acpica/source/components/hardware/hwpci.c b/src/acpica/source/components/hardware/hwpci.c
> index d733b11..902e80d 100644
> --- a/src/acpica/source/components/hardware/hwpci.c
> +++ b/src/acpica/source/components/hardware/hwpci.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/hardware/hwregs.c b/src/acpica/source/components/hardware/hwregs.c
> index 2e43a4a..5a9a776 100644
> --- a/src/acpica/source/components/hardware/hwregs.c
> +++ b/src/acpica/source/components/hardware/hwregs.c
> @@ -10,7 +10,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -125,6 +125,8 @@
> ACPI_MODULE_NAME ("hwregs")
>
>
> +#if (!ACPI_REDUCED_HARDWARE)
> +
> /* Local Prototypes */
>
> static ACPI_STATUS
> @@ -139,6 +141,7 @@ AcpiHwWriteMultiple (
> ACPI_GENERIC_ADDRESS *RegisterA,
> ACPI_GENERIC_ADDRESS *RegisterB);
>
> +#endif /* !ACPI_REDUCED_HARDWARE */
>
> /******************************************************************************
> *
> @@ -242,6 +245,7 @@ AcpiHwRead (
> ACPI_GENERIC_ADDRESS *Reg)
> {
> UINT64 Address;
> + UINT64 Value64;
> ACPI_STATUS Status;
>
>
> @@ -267,7 +271,9 @@ AcpiHwRead (
> if (Reg->SpaceId == ACPI_ADR_SPACE_SYSTEM_MEMORY)
> {
> Status = AcpiOsReadMemory ((ACPI_PHYSICAL_ADDRESS)
> - Address, Value, Reg->BitWidth);
> + Address, &Value64, Reg->BitWidth);
> +
> + *Value = (UINT32) Value64;
> }
> else /* ACPI_ADR_SPACE_SYSTEM_IO, validated earlier */
> {
> @@ -326,7 +332,7 @@ AcpiHwWrite (
> if (Reg->SpaceId == ACPI_ADR_SPACE_SYSTEM_MEMORY)
> {
> Status = AcpiOsWriteMemory ((ACPI_PHYSICAL_ADDRESS)
> - Address, Value, Reg->BitWidth);
> + Address, (UINT64) Value, Reg->BitWidth);
> }
> else /* ACPI_ADR_SPACE_SYSTEM_IO, validated earlier */
> {
> @@ -343,6 +349,7 @@ AcpiHwWrite (
> }
>
>
> +#if (!ACPI_REDUCED_HARDWARE)
> /*******************************************************************************
> *
> * FUNCTION: AcpiHwClearAcpiStatus
> @@ -393,7 +400,7 @@ UnlockAndExit:
>
> /*******************************************************************************
> *
> - * FUNCTION: AcpiHwGetRegisterBitMask
> + * FUNCTION: AcpiHwGetBitRegisterInfo
> *
> * PARAMETERS: RegisterId - Index of ACPI Register to access
> *
> @@ -803,3 +810,4 @@ AcpiHwWriteMultiple (
> return (Status);
> }
>
> +#endif /* !ACPI_REDUCED_HARDWARE */
> diff --git a/src/acpica/source/components/hardware/hwsleep.c b/src/acpica/source/components/hardware/hwsleep.c
> index fe796ec..6fd9d66 100644
> --- a/src/acpica/source/components/hardware/hwsleep.c
> +++ b/src/acpica/source/components/hardware/hwsleep.c
> @@ -1,7 +1,7 @@
> -
> /******************************************************************************
> *
> - * Name: hwsleep.c - ACPI Hardware Sleep/Wake Interface
> + * Name: hwsleep.c - ACPI Hardware Sleep/Wake Support functions for the
> + * original/legacy sleep/PM registers.
> *
> *****************************************************************************/
>
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -121,210 +121,38 @@
> ACPI_MODULE_NAME ("hwsleep")
>
>
> +#if (!ACPI_REDUCED_HARDWARE) /* Entire module */
> /*******************************************************************************
> *
> - * FUNCTION: AcpiSetFirmwareWakingVector
> - *
> - * PARAMETERS: PhysicalAddress - 32-bit physical address of ACPI real mode
> - * entry point.
> - *
> - * RETURN: Status
> - *
> - * DESCRIPTION: Sets the 32-bit FirmwareWakingVector field of the FACS
> - *
> - ******************************************************************************/
> -
> -ACPI_STATUS
> -AcpiSetFirmwareWakingVector (
> - UINT32 PhysicalAddress)
> -{
> - ACPI_FUNCTION_TRACE (AcpiSetFirmwareWakingVector);
> -
> -
> - /* Set the 32-bit vector */
> -
> - AcpiGbl_FACS->FirmwareWakingVector = PhysicalAddress;
> -
> - /* Clear the 64-bit vector if it exists */
> -
> - if ((AcpiGbl_FACS->Length > 32) && (AcpiGbl_FACS->Version >= 1))
> - {
> - AcpiGbl_FACS->XFirmwareWakingVector = 0;
> - }
> -
> - return_ACPI_STATUS (AE_OK);
> -}
> -
> -ACPI_EXPORT_SYMBOL (AcpiSetFirmwareWakingVector)
> -
> -
> -#if ACPI_MACHINE_WIDTH == 64
> -/*******************************************************************************
> - *
> - * FUNCTION: AcpiSetFirmwareWakingVector64
> - *
> - * PARAMETERS: PhysicalAddress - 64-bit physical address of ACPI protected
> - * mode entry point.
> - *
> - * RETURN: Status
> - *
> - * DESCRIPTION: Sets the 64-bit X_FirmwareWakingVector field of the FACS, if
> - * it exists in the table. This function is intended for use with
> - * 64-bit host operating systems.
> - *
> - ******************************************************************************/
> -
> -ACPI_STATUS
> -AcpiSetFirmwareWakingVector64 (
> - UINT64 PhysicalAddress)
> -{
> - ACPI_FUNCTION_TRACE (AcpiSetFirmwareWakingVector64);
> -
> -
> - /* Determine if the 64-bit vector actually exists */
> -
> - if ((AcpiGbl_FACS->Length <= 32) || (AcpiGbl_FACS->Version < 1))
> - {
> - return_ACPI_STATUS (AE_NOT_EXIST);
> - }
> -
> - /* Clear 32-bit vector, set the 64-bit X_ vector */
> -
> - AcpiGbl_FACS->FirmwareWakingVector = 0;
> - AcpiGbl_FACS->XFirmwareWakingVector = PhysicalAddress;
> - return_ACPI_STATUS (AE_OK);
> -}
> -
> -ACPI_EXPORT_SYMBOL (AcpiSetFirmwareWakingVector64)
> -#endif
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: AcpiEnterSleepStatePrep
> + * FUNCTION: AcpiHwLegacySleep
> *
> * PARAMETERS: SleepState - Which sleep state to enter
> + * Flags - ACPI_EXECUTE_GTS to run optional method
> *
> * RETURN: Status
> *
> - * DESCRIPTION: Prepare to enter a system sleep state (see ACPI 2.0 spec p 231)
> - * This function must execute with interrupts enabled.
> - * We break sleeping into 2 stages so that OSPM can handle
> - * various OS-specific tasks between the two steps.
> - *
> - ******************************************************************************/
> -
> -ACPI_STATUS
> -AcpiEnterSleepStatePrep (
> - UINT8 SleepState)
> -{
> - ACPI_STATUS Status;
> - ACPI_OBJECT_LIST ArgList;
> - ACPI_OBJECT Arg;
> -
> -
> - ACPI_FUNCTION_TRACE (AcpiEnterSleepStatePrep);
> -
> -
> - /* _PSW methods could be run here to enable wake-on keyboard, LAN, etc. */
> -
> - Status = AcpiGetSleepTypeData (SleepState,
> - &AcpiGbl_SleepTypeA, &AcpiGbl_SleepTypeB);
> - if (ACPI_FAILURE (Status))
> - {
> - return_ACPI_STATUS (Status);
> - }
> -
> - /* Execute the _PTS method (Prepare To Sleep) */
> -
> - ArgList.Count = 1;
> - ArgList.Pointer = &Arg;
> - Arg.Type = ACPI_TYPE_INTEGER;
> - Arg.Integer.Value = SleepState;
> -
> - Status = AcpiEvaluateObject (NULL, METHOD_NAME__PTS, &ArgList, NULL);
> - if (ACPI_FAILURE (Status) && Status != AE_NOT_FOUND)
> - {
> - return_ACPI_STATUS (Status);
> - }
> -
> - /* Setup the argument to the _SST method (System STatus) */
> -
> - switch (SleepState)
> - {
> - case ACPI_STATE_S0:
> - Arg.Integer.Value = ACPI_SST_WORKING;
> - break;
> -
> - case ACPI_STATE_S1:
> - case ACPI_STATE_S2:
> - case ACPI_STATE_S3:
> - Arg.Integer.Value = ACPI_SST_SLEEPING;
> - break;
> -
> - case ACPI_STATE_S4:
> - Arg.Integer.Value = ACPI_SST_SLEEP_CONTEXT;
> - break;
> -
> - default:
> - Arg.Integer.Value = ACPI_SST_INDICATOR_OFF; /* Default is off */
> - break;
> - }
> -
> - /*
> - * Set the system indicators to show the desired sleep state.
> - * _SST is an optional method (return no error if not found)
> - */
> - Status = AcpiEvaluateObject (NULL, METHOD_NAME__SST, &ArgList, NULL);
> - if (ACPI_FAILURE (Status) && Status != AE_NOT_FOUND)
> - {
> - ACPI_EXCEPTION ((AE_INFO, Status, "While executing method _SST"));
> - }
> -
> - return_ACPI_STATUS (AE_OK);
> -}
> -
> -ACPI_EXPORT_SYMBOL (AcpiEnterSleepStatePrep)
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: AcpiEnterSleepState
> - *
> - * PARAMETERS: SleepState - Which sleep state to enter
> - *
> - * RETURN: Status
> - *
> - * DESCRIPTION: Enter a system sleep state
> + * DESCRIPTION: Enter a system sleep state via the legacy FADT PM registers
> * THIS FUNCTION MUST BE CALLED WITH INTERRUPTS DISABLED
> *
> ******************************************************************************/
>
> ACPI_STATUS
> -AcpiEnterSleepState (
> - UINT8 SleepState)
> +AcpiHwLegacySleep (
> + UINT8 SleepState,
> + UINT8 Flags)
> {
> - UINT32 Pm1aControl;
> - UINT32 Pm1bControl;
> ACPI_BIT_REGISTER_INFO *SleepTypeRegInfo;
> ACPI_BIT_REGISTER_INFO *SleepEnableRegInfo;
> + UINT32 Pm1aControl;
> + UINT32 Pm1bControl;
> UINT32 InValue;
> - ACPI_OBJECT_LIST ArgList;
> - ACPI_OBJECT Arg;
> ACPI_STATUS Status;
>
>
> - ACPI_FUNCTION_TRACE (AcpiEnterSleepState);
> + ACPI_FUNCTION_TRACE (HwLegacySleep);
>
>
> - if ((AcpiGbl_SleepTypeA > ACPI_SLEEP_TYPE_MAX) ||
> - (AcpiGbl_SleepTypeB > ACPI_SLEEP_TYPE_MAX))
> - {
> - ACPI_ERROR ((AE_INFO, "Sleep values out of range: A=0x%X B=0x%X",
> - AcpiGbl_SleepTypeA, AcpiGbl_SleepTypeB));
> - return_ACPI_STATUS (AE_AML_OPERAND_VALUE);
> - }
> -
> - SleepTypeRegInfo = AcpiHwGetBitRegisterInfo (ACPI_BITREG_SLEEP_TYPE);
> + SleepTypeRegInfo = AcpiHwGetBitRegisterInfo (ACPI_BITREG_SLEEP_TYPE);
> SleepEnableRegInfo = AcpiHwGetBitRegisterInfo (ACPI_BITREG_SLEEP_ENABLE);
>
> /* Clear wake status */
> @@ -374,17 +202,11 @@ AcpiEnterSleepState (
> return_ACPI_STATUS (Status);
> }
>
> - /* Execute the _GTS method (Going To Sleep) */
> -
> - ArgList.Count = 1;
> - ArgList.Pointer = &Arg;
> - Arg.Type = ACPI_TYPE_INTEGER;
> - Arg.Integer.Value = SleepState;
> + /* Optionally execute _GTS (Going To Sleep) */
>
> - Status = AcpiEvaluateObject (NULL, METHOD_NAME__GTS, &ArgList, NULL);
> - if (ACPI_FAILURE (Status) && Status != AE_NOT_FOUND)
> + if (Flags & ACPI_EXECUTE_GTS)
> {
> - return_ACPI_STATUS (Status);
> + AcpiHwExecuteSleepMethod (METHOD_PATHNAME__GTS, SleepState);
> }
>
> /* Get current value of PM1A control */
> @@ -462,7 +284,7 @@ AcpiEnterSleepState (
> }
> }
>
> - /* Wait until we enter sleep state */
> + /* Wait for transition back to Working State */
>
> do
> {
> @@ -472,110 +294,32 @@ AcpiEnterSleepState (
> return_ACPI_STATUS (Status);
> }
>
> - /* Spin until we wake */
> -
> } while (!InValue);
>
> return_ACPI_STATUS (AE_OK);
> }
>
> -ACPI_EXPORT_SYMBOL (AcpiEnterSleepState)
> -
>
> /*******************************************************************************
> *
> - * FUNCTION: AcpiEnterSleepStateS4bios
> - *
> - * PARAMETERS: None
> - *
> - * RETURN: Status
> - *
> - * DESCRIPTION: Perform a S4 bios request.
> - * THIS FUNCTION MUST BE CALLED WITH INTERRUPTS DISABLED
> - *
> - ******************************************************************************/
> -
> -ACPI_STATUS
> -AcpiEnterSleepStateS4bios (
> - void)
> -{
> - UINT32 InValue;
> - ACPI_STATUS Status;
> -
> -
> - ACPI_FUNCTION_TRACE (AcpiEnterSleepStateS4bios);
> -
> -
> - /* Clear the wake status bit (PM1) */
> -
> - Status = AcpiWriteBitRegister (ACPI_BITREG_WAKE_STATUS, ACPI_CLEAR_STATUS);
> - if (ACPI_FAILURE (Status))
> - {
> - return_ACPI_STATUS (Status);
> - }
> -
> - Status = AcpiHwClearAcpiStatus ();
> - if (ACPI_FAILURE (Status))
> - {
> - return_ACPI_STATUS (Status);
> - }
> -
> - /*
> - * 1) Disable/Clear all GPEs
> - * 2) Enable all wakeup GPEs
> - */
> - Status = AcpiHwDisableAllGpes ();
> - if (ACPI_FAILURE (Status))
> - {
> - return_ACPI_STATUS (Status);
> - }
> - AcpiGbl_SystemAwakeAndRunning = FALSE;
> -
> - Status = AcpiHwEnableAllWakeupGpes ();
> - if (ACPI_FAILURE (Status))
> - {
> - return_ACPI_STATUS (Status);
> - }
> -
> - ACPI_FLUSH_CPU_CACHE ();
> -
> - Status = AcpiHwWritePort (AcpiGbl_FADT.SmiCommand,
> - (UINT32) AcpiGbl_FADT.S4BiosRequest, 8);
> -
> - do {
> - AcpiOsStall(1000);
> - Status = AcpiReadBitRegister (ACPI_BITREG_WAKE_STATUS, &InValue);
> - if (ACPI_FAILURE (Status))
> - {
> - return_ACPI_STATUS (Status);
> - }
> - } while (!InValue);
> -
> - return_ACPI_STATUS (AE_OK);
> -}
> -
> -ACPI_EXPORT_SYMBOL (AcpiEnterSleepStateS4bios)
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: AcpiLeaveSleepState
> + * FUNCTION: AcpiHwLegacyWakePrep
> *
> * PARAMETERS: SleepState - Which sleep state we just exited
> + * Flags - ACPI_EXECUTE_BFS to run optional method
> *
> * RETURN: Status
> *
> - * DESCRIPTION: Perform OS-independent ACPI cleanup after a sleep
> + * DESCRIPTION: Perform the first state of OS-independent ACPI cleanup after a
> + * sleep.
> * Called with interrupts ENABLED.
> *
> ******************************************************************************/
>
> ACPI_STATUS
> -AcpiLeaveSleepState (
> - UINT8 SleepState)
> +AcpiHwLegacyWakePrep (
> + UINT8 SleepState,
> + UINT8 Flags)
> {
> - ACPI_OBJECT_LIST ArgList;
> - ACPI_OBJECT Arg;
> ACPI_STATUS Status;
> ACPI_BIT_REGISTER_INFO *SleepTypeRegInfo;
> ACPI_BIT_REGISTER_INFO *SleepEnableRegInfo;
> @@ -583,8 +327,7 @@ AcpiLeaveSleepState (
> UINT32 Pm1bControl;
>
>
> - ACPI_FUNCTION_TRACE (AcpiLeaveSleepState);
> -
> + ACPI_FUNCTION_TRACE (HwLegacyWakePrep);
>
> /*
> * Set SLP_TYPE and SLP_EN to state S0.
> @@ -625,40 +368,50 @@ AcpiLeaveSleepState (
> }
> }
>
> - /* Ensure EnterSleepStatePrep -> EnterSleepState ordering */
> + /* Optionally execute _BFS (Back From Sleep) */
>
> - AcpiGbl_SleepTypeA = ACPI_SLEEP_TYPE_INVALID;
> + if (Flags & ACPI_EXECUTE_BFS)
> + {
> + AcpiHwExecuteSleepMethod (METHOD_PATHNAME__BFS, SleepState);
> + }
> + return_ACPI_STATUS (Status);
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiHwLegacyWake
> + *
> + * PARAMETERS: SleepState - Which sleep state we just exited
> + * Flags - Reserved, set to zero
> + *
> + * RETURN: Status
> + *
> + * DESCRIPTION: Perform OS-independent ACPI cleanup after a sleep
> + * Called with interrupts ENABLED.
> + *
> + ******************************************************************************/
>
> - /* Setup parameter object */
> +ACPI_STATUS
> +AcpiHwLegacyWake (
> + UINT8 SleepState,
> + UINT8 Flags)
> +{
> + ACPI_STATUS Status;
>
> - ArgList.Count = 1;
> - ArgList.Pointer = &Arg;
> - Arg.Type = ACPI_TYPE_INTEGER;
>
> - /* Ignore any errors from these methods */
> + ACPI_FUNCTION_TRACE (HwLegacyWake);
>
> - Arg.Integer.Value = ACPI_SST_WAKING;
> - Status = AcpiEvaluateObject (NULL, METHOD_NAME__SST, &ArgList, NULL);
> - if (ACPI_FAILURE (Status) && Status != AE_NOT_FOUND)
> - {
> - ACPI_EXCEPTION ((AE_INFO, Status, "During Method _SST"));
> - }
>
> - Arg.Integer.Value = SleepState;
> - Status = AcpiEvaluateObject (NULL, METHOD_NAME__BFS, &ArgList, NULL);
> - if (ACPI_FAILURE (Status) && Status != AE_NOT_FOUND)
> - {
> - ACPI_EXCEPTION ((AE_INFO, Status, "During Method _BFS"));
> - }
> + /* Ensure EnterSleepStatePrep -> EnterSleepState ordering */
>
> - Status = AcpiEvaluateObject (NULL, METHOD_NAME__WAK, &ArgList, NULL);
> - if (ACPI_FAILURE (Status) && Status != AE_NOT_FOUND)
> - {
> - ACPI_EXCEPTION ((AE_INFO, Status, "During Method _WAK"));
> - }
> - /* TBD: _WAK "sometimes" returns stuff - do we want to look at it? */
> + AcpiGbl_SleepTypeA = ACPI_SLEEP_TYPE_INVALID;
> + AcpiHwExecuteSleepMethod (METHOD_PATHNAME__SST, ACPI_SST_WAKING);
>
> /*
> + * GPEs must be enabled before _WAK is called as GPEs
> + * might get fired there
> + *
> * Restore the GPEs:
> * 1) Disable/Clear all GPEs
> * 2) Enable all runtime GPEs
> @@ -668,7 +421,6 @@ AcpiLeaveSleepState (
> {
> return_ACPI_STATUS (Status);
> }
> - AcpiGbl_SystemAwakeAndRunning = TRUE;
>
> Status = AcpiHwEnableAllRuntimeGpes ();
> if (ACPI_FAILURE (Status))
> @@ -676,6 +428,20 @@ AcpiLeaveSleepState (
> return_ACPI_STATUS (Status);
> }
>
> + /*
> + * Now we can execute _WAK, etc. Some machines require that the GPEs
> + * are enabled before the wake methods are executed.
> + */
> + AcpiHwExecuteSleepMethod (METHOD_PATHNAME__WAK, SleepState);
> +
> + /*
> + * Some BIOS code assumes that WAK_STS will be cleared on resume
> + * and use it to determine whether the system is rebooting or
> + * resuming. Clear WAK_STS for compatibility.
> + */
> + (void) AcpiWriteBitRegister (ACPI_BITREG_WAKE_STATUS, ACPI_CLEAR_STATUS);
> + AcpiGbl_SystemAwakeAndRunning = TRUE;
> +
> /* Enable power button */
>
> (void) AcpiWriteBitRegister(
> @@ -697,15 +463,8 @@ AcpiLeaveSleepState (
> return_ACPI_STATUS (Status);
> }
>
> - Arg.Integer.Value = ACPI_SST_WORKING;
> - Status = AcpiEvaluateObject (NULL, METHOD_NAME__SST, &ArgList, NULL);
> - if (ACPI_FAILURE (Status) && Status != AE_NOT_FOUND)
> - {
> - ACPI_EXCEPTION ((AE_INFO, Status, "During Method _SST"));
> - }
> -
> + AcpiHwExecuteSleepMethod (METHOD_PATHNAME__SST, ACPI_SST_WORKING);
> return_ACPI_STATUS (Status);
> }
>
> -ACPI_EXPORT_SYMBOL (AcpiLeaveSleepState)
> -
> +#endif /* !ACPI_REDUCED_HARDWARE */
> diff --git a/src/acpica/source/components/hardware/hwvalid.c b/src/acpica/source/components/hardware/hwvalid.c
> index 92b9a4e..a5e8ba5 100644
> --- a/src/acpica/source/components/hardware/hwvalid.c
> +++ b/src/acpica/source/components/hardware/hwvalid.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -221,6 +221,8 @@ AcpiHwValidateIoRequest (
> (BitWidth != 16) &&
> (BitWidth != 32))
> {
> + ACPI_ERROR ((AE_INFO,
> + "Bad BitWidth parameter: %8.8X", BitWidth));
> return (AE_BAD_PARAMETER);
> }
>
> diff --git a/src/acpica/source/components/hardware/hwxface.c b/src/acpica/source/components/hardware/hwxface.c
> index e7bcbe0..de4daae 100644
> --- a/src/acpica/source/components/hardware/hwxface.c
> +++ b/src/acpica/source/components/hardware/hwxface.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -226,12 +226,6 @@ AcpiRead (
> return (Status);
> }
>
> - Width = Reg->BitWidth;
> - if (Width == 64)
> - {
> - Width = 32; /* Break into two 32-bit transfers */
> - }
> -
> /* Initialize entire 64-bit return value to zero */
>
> *ReturnValue = 0;
> @@ -244,28 +238,20 @@ AcpiRead (
> if (Reg->SpaceId == ACPI_ADR_SPACE_SYSTEM_MEMORY)
> {
> Status = AcpiOsReadMemory ((ACPI_PHYSICAL_ADDRESS)
> - Address, &Value, Width);
> + Address, ReturnValue, Reg->BitWidth);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> }
> - *ReturnValue = Value;
> -
> - if (Reg->BitWidth == 64)
> - {
> - /* Read the top 32 bits */
> -
> - Status = AcpiOsReadMemory ((ACPI_PHYSICAL_ADDRESS)
> - (Address + 4), &Value, 32);
> - if (ACPI_FAILURE (Status))
> - {
> - return (Status);
> - }
> - *ReturnValue |= ((UINT64) Value << 32);
> - }
> }
> else /* ACPI_ADR_SPACE_SYSTEM_IO, validated earlier */
> {
> + Width = Reg->BitWidth;
> + if (Width == 64)
> + {
> + Width = 32; /* Break into two 32-bit transfers */
> + }
> +
> Status = AcpiHwReadPort ((ACPI_IO_ADDRESS)
> Address, &Value, Width);
> if (ACPI_FAILURE (Status))
> @@ -334,12 +320,6 @@ AcpiWrite (
> return (Status);
> }
>
> - Width = Reg->BitWidth;
> - if (Width == 64)
> - {
> - Width = 32; /* Break into two 32-bit transfers */
> - }
> -
> /*
> * Two address spaces supported: Memory or IO. PCI_Config is
> * not supported here because the GAS structure is insufficient
> @@ -347,24 +327,20 @@ AcpiWrite (
> if (Reg->SpaceId == ACPI_ADR_SPACE_SYSTEM_MEMORY)
> {
> Status = AcpiOsWriteMemory ((ACPI_PHYSICAL_ADDRESS)
> - Address, ACPI_LODWORD (Value), Width);
> + Address, Value, Reg->BitWidth);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> }
> -
> - if (Reg->BitWidth == 64)
> - {
> - Status = AcpiOsWriteMemory ((ACPI_PHYSICAL_ADDRESS)
> - (Address + 4), ACPI_HIDWORD (Value), 32);
> - if (ACPI_FAILURE (Status))
> - {
> - return (Status);
> - }
> - }
> }
> else /* ACPI_ADR_SPACE_SYSTEM_IO, validated earlier */
> {
> + Width = Reg->BitWidth;
> + if (Width == 64)
> + {
> + Width = 32; /* Break into two 32-bit transfers */
> + }
> +
> Status = AcpiHwWritePort ((ACPI_IO_ADDRESS)
> Address, ACPI_LODWORD (Value), Width);
> if (ACPI_FAILURE (Status))
> @@ -395,6 +371,7 @@ AcpiWrite (
> ACPI_EXPORT_SYMBOL (AcpiWrite)
>
>
> +#if (!ACPI_REDUCED_HARDWARE)
> /*******************************************************************************
> *
> * FUNCTION: AcpiReadBitRegister
> @@ -577,6 +554,8 @@ UnlockAndExit:
>
> ACPI_EXPORT_SYMBOL (AcpiWriteBitRegister)
>
> +#endif /* !ACPI_REDUCED_HARDWARE */
> +
>
> /*******************************************************************************
> *
> diff --git a/src/acpica/source/components/namespace/nsaccess.c b/src/acpica/source/components/namespace/nsaccess.c
> index e098e52..4751fdc 100644
> --- a/src/acpica/source/components/namespace/nsaccess.c
> +++ b/src/acpica/source/components/namespace/nsaccess.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/namespace/nsalloc.c b/src/acpica/source/components/namespace/nsalloc.c
> index de9f229..4bc619b 100644
> --- a/src/acpica/source/components/namespace/nsalloc.c
> +++ b/src/acpica/source/components/namespace/nsalloc.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/namespace/nsdump.c b/src/acpica/source/components/namespace/nsdump.c
> index 2bc0eba..f07694f 100644
> --- a/src/acpica/source/components/namespace/nsdump.c
> +++ b/src/acpica/source/components/namespace/nsdump.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -343,7 +343,21 @@ AcpiNsDumpOneObject (
>
> if (!ObjDesc)
> {
> - /* No attached object, we are done */
> + /* No attached object. Some types should always have an object */
> +
> + switch (Type)
> + {
> + case ACPI_TYPE_INTEGER:
> + case ACPI_TYPE_PACKAGE:
> + case ACPI_TYPE_BUFFER:
> + case ACPI_TYPE_STRING:
> + case ACPI_TYPE_METHOD:
> + AcpiOsPrintf ("<No attached object>");
> + break;
> +
> + default:
> + break;
> + }
>
> AcpiOsPrintf ("\n");
> return (AE_OK);
> diff --git a/src/acpica/source/components/namespace/nsdumpdv.c b/src/acpica/source/components/namespace/nsdumpdv.c
> index 98fb8bd..8dce21c 100644
> --- a/src/acpica/source/components/namespace/nsdumpdv.c
> +++ b/src/acpica/source/components/namespace/nsdumpdv.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -214,7 +214,7 @@ AcpiNsDumpRootDevices (
> return;
> }
>
> - Status = AcpiGetHandle (NULL, ACPI_NS_SYSTEM_BUS, &SysBusHandle);
> + Status = AcpiGetHandle (NULL, METHOD_NAME__SB_, &SysBusHandle);
> if (ACPI_FAILURE (Status))
> {
> return;
> diff --git a/src/acpica/source/components/namespace/nseval.c b/src/acpica/source/components/namespace/nseval.c
> index c200e92..eb7b206 100644
> --- a/src/acpica/source/components/namespace/nseval.c
> +++ b/src/acpica/source/components/namespace/nseval.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/namespace/nsinit.c b/src/acpica/source/components/namespace/nsinit.c
> index d5f9daa..06e1462 100644
> --- a/src/acpica/source/components/namespace/nsinit.c
> +++ b/src/acpica/source/components/namespace/nsinit.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/namespace/nsload.c b/src/acpica/source/components/namespace/nsload.c
> index 45ab0df..e59096c 100644
> --- a/src/acpica/source/components/namespace/nsload.c
> +++ b/src/acpica/source/components/namespace/nsload.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/namespace/nsnames.c b/src/acpica/source/components/namespace/nsnames.c
> index 59ecfd6..f72482f 100644
> --- a/src/acpica/source/components/namespace/nsnames.c
> +++ b/src/acpica/source/components/namespace/nsnames.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/namespace/nsobject.c b/src/acpica/source/components/namespace/nsobject.c
> index d2747f3..d1ca214 100644
> --- a/src/acpica/source/components/namespace/nsobject.c
> +++ b/src/acpica/source/components/namespace/nsobject.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/namespace/nsparse.c b/src/acpica/source/components/namespace/nsparse.c
> index cd47940..234aa2c 100644
> --- a/src/acpica/source/components/namespace/nsparse.c
> +++ b/src/acpica/source/components/namespace/nsparse.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/namespace/nspredef.c b/src/acpica/source/components/namespace/nspredef.c
> index 4c0cc82..e6c7cf6 100644
> --- a/src/acpica/source/components/namespace/nspredef.c
> +++ b/src/acpica/source/components/namespace/nspredef.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -737,6 +737,7 @@ AcpiNsCheckPackage (
> case ACPI_PTYPE2_FIXED:
> case ACPI_PTYPE2_MIN:
> case ACPI_PTYPE2_COUNT:
> + case ACPI_PTYPE2_FIX_VAR:
>
> /*
> * These types all return a single Package that consists of a
> @@ -752,7 +753,7 @@ AcpiNsCheckPackage (
> {
> /* Create the new outer package and populate it */
>
> - Status = AcpiNsRepairPackageList (Data, ReturnObjectPtr);
> + Status = AcpiNsWrapWithPackage (Data, *Elements, ReturnObjectPtr);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -879,6 +880,29 @@ AcpiNsCheckPackageList (
> break;
>
>
> + case ACPI_PTYPE2_FIX_VAR:
> + /*
> + * Each subpackage has a fixed number of elements and an
> + * optional element
> + */
> + ExpectedCount = Package->RetInfo.Count1 + Package->RetInfo.Count2;
> + if (SubPackage->Package.Count < ExpectedCount)
> + {
> + goto PackageTooSmall;
> + }
> +
> + Status = AcpiNsCheckPackageElements (Data, SubElements,
> + Package->RetInfo.ObjectType1,
> + Package->RetInfo.Count1,
> + Package->RetInfo.ObjectType2,
> + SubPackage->Package.Count - Package->RetInfo.Count1, 0);
> + if (ACPI_FAILURE (Status))
> + {
> + return (Status);
> + }
> + break;
> +
> +
> case ACPI_PTYPE2_FIXED:
>
> /* Each sub-package has a fixed length */
> diff --git a/src/acpica/source/components/namespace/nsrepair.c b/src/acpica/source/components/namespace/nsrepair.c
> index 702e53e..94c3ba1 100644
> --- a/src/acpica/source/components/namespace/nsrepair.c
> +++ b/src/acpica/source/components/namespace/nsrepair.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -146,11 +146,10 @@
> * Buffer -> String
> * Buffer -> Package of Integers
> * Package -> Package of one Package
> + * An incorrect standalone object is wrapped with required outer package
> *
> * Additional possible repairs:
> - *
> * Required package elements that are NULL replaced by Integer/String/Buffer
> - * Incorrect standalone package wrapped with required outer package
> *
> ******************************************************************************/
>
> @@ -172,11 +171,6 @@ AcpiNsConvertToBuffer (
> ACPI_OPERAND_OBJECT *OriginalObject,
> ACPI_OPERAND_OBJECT **ReturnObject);
>
> -static ACPI_STATUS
> -AcpiNsConvertToPackage (
> - ACPI_OPERAND_OBJECT *OriginalObject,
> - ACPI_OPERAND_OBJECT **ReturnObject);
> -
>
> /*******************************************************************************
> *
> @@ -244,10 +238,24 @@ AcpiNsRepairObject (
> }
> if (ExpectedBtypes & ACPI_RTYPE_PACKAGE)
> {
> - Status = AcpiNsConvertToPackage (ReturnObject, &NewObject);
> + /*
> + * A package is expected. We will wrap the existing object with a
> + * new package object. It is often the case that if a variable-length
> + * package is required, but there is only a single object needed, the
> + * BIOS will return that object instead of wrapping it with a Package
> + * object. Note: after the wrapping, the package will be validated
> + * for correct contents (expected object type or types).
> + */
> + Status = AcpiNsWrapWithPackage (Data, ReturnObject, &NewObject);
> if (ACPI_SUCCESS (Status))
> {
> - goto ObjectRepaired;
> + /*
> + * The original object just had its reference count
> + * incremented for being inserted into the new package.
> + */
> + *ReturnObjectPtr = NewObject; /* New Package object */
> + Data->Flags |= ACPI_OBJECT_REPAIRED;
> + return (AE_OK);
> }
> }
>
> @@ -260,24 +268,30 @@ ObjectRepaired:
>
> /* Object was successfully repaired */
>
> - /*
> - * If the original object is a package element, we need to:
> - * 1. Set the reference count of the new object to match the
> - * reference count of the old object.
> - * 2. Decrement the reference count of the original object.
> - */
> if (PackageIndex != ACPI_NOT_PACKAGE_ELEMENT)
> {
> - NewObject->Common.ReferenceCount =
> - ReturnObject->Common.ReferenceCount;
> -
> - if (ReturnObject->Common.ReferenceCount > 1)
> + /*
> + * The original object is a package element. We need to
> + * decrement the reference count of the original object,
> + * for removing it from the package.
> + *
> + * However, if the original object was just wrapped with a
> + * package object as part of the repair, we don't need to
> + * change the reference count.
> + */
> + if (!(Data->Flags & ACPI_OBJECT_WRAPPED))
> {
> - ReturnObject->Common.ReferenceCount--;
> + NewObject->Common.ReferenceCount =
> + ReturnObject->Common.ReferenceCount;
> +
> + if (ReturnObject->Common.ReferenceCount > 1)
> + {
> + ReturnObject->Common.ReferenceCount--;
> + }
> }
>
> ACPI_DEBUG_PRINT ((ACPI_DB_REPAIR,
> - "%s: Converted %s to expected %s at index %u\n",
> + "%s: Converted %s to expected %s at Package index %u\n",
> Data->Pathname, AcpiUtGetObjectTypeName (ReturnObject),
> AcpiUtGetObjectTypeName (NewObject), PackageIndex));
> }
> @@ -570,71 +584,6 @@ AcpiNsConvertToBuffer (
>
> /*******************************************************************************
> *
> - * FUNCTION: AcpiNsConvertToPackage
> - *
> - * PARAMETERS: OriginalObject - Object to be converted
> - * ReturnObject - Where the new converted object is returned
> - *
> - * RETURN: Status. AE_OK if conversion was successful.
> - *
> - * DESCRIPTION: Attempt to convert a Buffer object to a Package. Each byte of
> - * the buffer is converted to a single integer package element.
> - *
> - ******************************************************************************/
> -
> -static ACPI_STATUS
> -AcpiNsConvertToPackage (
> - ACPI_OPERAND_OBJECT *OriginalObject,
> - ACPI_OPERAND_OBJECT **ReturnObject)
> -{
> - ACPI_OPERAND_OBJECT *NewObject;
> - ACPI_OPERAND_OBJECT **Elements;
> - UINT32 Length;
> - UINT8 *Buffer;
> -
> -
> - switch (OriginalObject->Common.Type)
> - {
> - case ACPI_TYPE_BUFFER:
> -
> - /* Buffer-to-Package conversion */
> -
> - Length = OriginalObject->Buffer.Length;
> - NewObject = AcpiUtCreatePackageObject (Length);
> - if (!NewObject)
> - {
> - return (AE_NO_MEMORY);
> - }
> -
> - /* Convert each buffer byte to an integer package element */
> -
> - Elements = NewObject->Package.Elements;
> - Buffer = OriginalObject->Buffer.Pointer;
> -
> - while (Length--)
> - {
> - *Elements = AcpiUtCreateIntegerObject ((UINT64) *Buffer);
> - if (!*Elements)
> - {
> - AcpiUtRemoveReference (NewObject);
> - return (AE_NO_MEMORY);
> - }
> - Elements++;
> - Buffer++;
> - }
> - break;
> -
> - default:
> - return (AE_AML_OPERAND_TYPE);
> - }
> -
> - *ReturnObject = NewObject;
> - return (AE_OK);
> -}
> -
> -
> -/*******************************************************************************
> - *
> * FUNCTION: AcpiNsRepairNullElement
> *
> * PARAMETERS: Data - Pointer to validation data structure
> @@ -768,6 +717,7 @@ AcpiNsRemoveNullElements (
> case ACPI_PTYPE2_FIXED:
> case ACPI_PTYPE2_MIN:
> case ACPI_PTYPE2_REV_FIXED:
> + case ACPI_PTYPE2_FIX_VAR:
> break;
>
> default:
> @@ -816,42 +766,43 @@ AcpiNsRemoveNullElements (
>
> /*******************************************************************************
> *
> - * FUNCTION: AcpiNsRepairPackageList
> + * FUNCTION: AcpiNsWrapWithPackage
> *
> * PARAMETERS: Data - Pointer to validation data structure
> - * ObjDescPtr - Pointer to the object to repair. The new
> - * package object is returned here,
> - * overwriting the old object.
> + * OriginalObject - Pointer to the object to repair.
> + * ObjDescPtr - The new package object is returned here
> *
> * RETURN: Status, new object in *ObjDescPtr
> *
> - * DESCRIPTION: Repair a common problem with objects that are defined to return
> - * a variable-length Package of Packages. If the variable-length
> - * is one, some BIOS code mistakenly simply declares a single
> - * Package instead of a Package with one sub-Package. This
> - * function attempts to repair this error by wrapping a Package
> - * object around the original Package, creating the correct
> - * Package with one sub-Package.
> + * DESCRIPTION: Repair a common problem with objects that are defined to
> + * return a variable-length Package of sub-objects. If there is
> + * only one sub-object, some BIOS code mistakenly simply declares
> + * the single object instead of a Package with one sub-object.
> + * This function attempts to repair this error by wrapping a
> + * Package object around the original object, creating the
> + * correct and expected Package with one sub-object.
> *
> * Names that can be repaired in this manner include:
> - * _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, TSS
> + * _ALR, _CSD, _HPX, _MLS, _PLD, _PRT, _PSS, _TRT, _TSS,
> + * _BCL, _DOD, _FIX, _Sx
> *
> ******************************************************************************/
>
> ACPI_STATUS
> -AcpiNsRepairPackageList (
> +AcpiNsWrapWithPackage (
> ACPI_PREDEFINED_DATA *Data,
> + ACPI_OPERAND_OBJECT *OriginalObject,
> ACPI_OPERAND_OBJECT **ObjDescPtr)
> {
> ACPI_OPERAND_OBJECT *PkgObjDesc;
>
>
> - ACPI_FUNCTION_NAME (NsRepairPackageList);
> + ACPI_FUNCTION_NAME (NsWrapWithPackage);
>
>
> /*
> * Create the new outer package and populate it. The new package will
> - * have a single element, the lone subpackage.
> + * have a single element, the lone sub-object.
> */
> PkgObjDesc = AcpiUtCreatePackageObject (1);
> if (!PkgObjDesc)
> @@ -859,15 +810,15 @@ AcpiNsRepairPackageList (
> return (AE_NO_MEMORY);
> }
>
> - PkgObjDesc->Package.Elements[0] = *ObjDescPtr;
> + PkgObjDesc->Package.Elements[0] = OriginalObject;
> +
> + ACPI_DEBUG_PRINT ((ACPI_DB_REPAIR,
> + "%s: Wrapped %s with expected Package object\n",
> + Data->Pathname, AcpiUtGetObjectTypeName (OriginalObject)));
>
> /* Return the new object in the object pointer */
>
> *ObjDescPtr = PkgObjDesc;
> - Data->Flags |= ACPI_OBJECT_REPAIRED;
> -
> - ACPI_DEBUG_PRINT ((ACPI_DB_REPAIR,
> - "%s: Repaired incorrectly formed Package\n", Data->Pathname));
> -
> + Data->Flags |= ACPI_OBJECT_REPAIRED | ACPI_OBJECT_WRAPPED;
> return (AE_OK);
> }
> diff --git a/src/acpica/source/components/namespace/nsrepair2.c b/src/acpica/source/components/namespace/nsrepair2.c
> index 7f8862d..3ab9146 100644
> --- a/src/acpica/source/components/namespace/nsrepair2.c
> +++ b/src/acpica/source/components/namespace/nsrepair2.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -588,11 +588,12 @@ AcpiNsRepair_HID (
> }
>
> /*
> - * Copy and uppercase the string. From the ACPI specification:
> + * Copy and uppercase the string. From the ACPI 5.0 specification:
> *
> * A valid PNP ID must be of the form "AAA####" where A is an uppercase
> * letter and # is a hex digit. A valid ACPI ID must be of the form
> - * "ACPI####" where # is a hex digit.
> + * "NNNN####" where N is an uppercase letter or decimal digit, and
> + * # is a hex digit.
> */
> for (Dest = NewString->String.Pointer; *Source; Dest++, Source++)
> {
> diff --git a/src/acpica/source/components/namespace/nssearch.c b/src/acpica/source/components/namespace/nssearch.c
> index c1ba96e..c741287 100644
> --- a/src/acpica/source/components/namespace/nssearch.c
> +++ b/src/acpica/source/components/namespace/nssearch.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/namespace/nsutils.c b/src/acpica/source/components/namespace/nsutils.c
> index 603a00f..7200882 100644
> --- a/src/acpica/source/components/namespace/nsutils.c
> +++ b/src/acpica/source/components/namespace/nsutils.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -477,7 +477,7 @@ AcpiNsBuildInternalName (
> if (!AcpiNsValidPathSeparator (*ExternalName) &&
> (*ExternalName != 0))
> {
> - return_ACPI_STATUS (AE_BAD_PARAMETER);
> + return_ACPI_STATUS (AE_BAD_PATHNAME);
> }
>
> /* Move on the next segment */
> diff --git a/src/acpica/source/components/namespace/nswalk.c b/src/acpica/source/components/namespace/nswalk.c
> index c7d95e8..bd0b01b 100644
> --- a/src/acpica/source/components/namespace/nswalk.c
> +++ b/src/acpica/source/components/namespace/nswalk.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/namespace/nsxfeval.c b/src/acpica/source/components/namespace/nsxfeval.c
> index c3b96e3..1e84d0b 100644
> --- a/src/acpica/source/components/namespace/nsxfeval.c
> +++ b/src/acpica/source/components/namespace/nsxfeval.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/namespace/nsxfname.c b/src/acpica/source/components/namespace/nsxfname.c
> index 911fad4..406836c 100644
> --- a/src/acpica/source/components/namespace/nsxfname.c
> +++ b/src/acpica/source/components/namespace/nsxfname.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/namespace/nsxfobj.c b/src/acpica/source/components/namespace/nsxfobj.c
> index 5dca29c..dede01c 100644
> --- a/src/acpica/source/components/namespace/nsxfobj.c
> +++ b/src/acpica/source/components/namespace/nsxfobj.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/parser/psargs.c b/src/acpica/source/components/parser/psargs.c
> index 1dcb1b7..1e6972c 100644
> --- a/src/acpica/source/components/parser/psargs.c
> +++ b/src/acpica/source/components/parser/psargs.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -603,37 +603,57 @@ static ACPI_PARSE_OBJECT *
> AcpiPsGetNextField (
> ACPI_PARSE_STATE *ParserState)
> {
> - UINT32 AmlOffset = (UINT32)
> - ACPI_PTR_DIFF (ParserState->Aml,
> - ParserState->AmlStart);
> + UINT32 AmlOffset;
> ACPI_PARSE_OBJECT *Field;
> + ACPI_PARSE_OBJECT *Arg = NULL;
> UINT16 Opcode;
> UINT32 Name;
> + UINT8 AccessType;
> + UINT8 AccessAttribute;
> + UINT8 AccessLength;
> + UINT32 PkgLength;
> + UINT8 *PkgEnd;
> + UINT32 BufferLength;
>
>
> ACPI_FUNCTION_TRACE (PsGetNextField);
>
>
> + AmlOffset = (UINT32) ACPI_PTR_DIFF (
> + ParserState->Aml, ParserState->AmlStart);
> +
> /* Determine field type */
>
> switch (ACPI_GET8 (ParserState->Aml))
> {
> - default:
> + case AML_FIELD_OFFSET_OP:
>
> - Opcode = AML_INT_NAMEDFIELD_OP;
> + Opcode = AML_INT_RESERVEDFIELD_OP;
> + ParserState->Aml++;
> break;
>
> - case 0x00:
> + case AML_FIELD_ACCESS_OP:
>
> - Opcode = AML_INT_RESERVEDFIELD_OP;
> + Opcode = AML_INT_ACCESSFIELD_OP;
> ParserState->Aml++;
> break;
>
> - case 0x01:
> + case AML_FIELD_CONNECTION_OP:
>
> - Opcode = AML_INT_ACCESSFIELD_OP;
> + Opcode = AML_INT_CONNECTION_OP;
> + ParserState->Aml++;
> + break;
> +
> + case AML_FIELD_EXT_ACCESS_OP:
> +
> + Opcode = AML_INT_EXTACCESSFIELD_OP;
> ParserState->Aml++;
> break;
> +
> + default:
> +
> + Opcode = AML_INT_NAMEDFIELD_OP;
> + break;
> }
>
> /* Allocate a new field op */
> @@ -673,17 +693,118 @@ AcpiPsGetNextField (
>
>
> case AML_INT_ACCESSFIELD_OP:
> + case AML_INT_EXTACCESSFIELD_OP:
>
> /*
> * Get AccessType and AccessAttrib and merge into the field Op
> - * AccessType is first operand, AccessAttribute is second
> + * AccessType is first operand, AccessAttribute is second. stuff
> + * these bytes into the node integer value for convenience.
> */
> - Field->Common.Value.Integer = (((UINT32) ACPI_GET8 (ParserState->Aml) << 8));
> +
> + /* Get the two bytes (Type/Attribute) */
> +
> + AccessType = ACPI_GET8 (ParserState->Aml);
> ParserState->Aml++;
> - Field->Common.Value.Integer |= ACPI_GET8 (ParserState->Aml);
> + AccessAttribute = ACPI_GET8 (ParserState->Aml);
> ParserState->Aml++;
> +
> + Field->Common.Value.Integer = (UINT8) AccessType;
> + Field->Common.Value.Integer |= (UINT16) (AccessAttribute << 8);
> +
> + /* This opcode has a third byte, AccessLength */
> +
> + if (Opcode == AML_INT_EXTACCESSFIELD_OP)
> + {
> + AccessLength = ACPI_GET8 (ParserState->Aml);
> + ParserState->Aml++;
> +
> + Field->Common.Value.Integer |= (UINT32) (AccessLength << 16);
> + }
> break;
>
> +
> + case AML_INT_CONNECTION_OP:
> +
> + /*
> + * Argument for Connection operator can be either a Buffer
> + * (resource descriptor), or a NameString.
> + */
> + if (ACPI_GET8 (ParserState->Aml) == AML_BUFFER_OP)
> + {
> + ParserState->Aml++;
> +
> + PkgEnd = ParserState->Aml;
> + PkgLength = AcpiPsGetNextPackageLength (ParserState);
> + PkgEnd += PkgLength;
> +
> + if (ParserState->Aml < PkgEnd)
> + {
> + /* Non-empty list */
> +
> + Arg = AcpiPsAllocOp (AML_INT_BYTELIST_OP);
> + if (!Arg)
> + {
> + AcpiPsFreeOp (Field);
> + return_PTR (NULL);
> + }
> +
> + /* Get the actual buffer length argument */
> +
> + Opcode = ACPI_GET8 (ParserState->Aml);
> + ParserState->Aml++;
> +
> + switch (Opcode)
> + {
> + case AML_BYTE_OP: /* AML_BYTEDATA_ARG */
> + BufferLength = ACPI_GET8 (ParserState->Aml);
> + ParserState->Aml += 1;
> + break;
> +
> + case AML_WORD_OP: /* AML_WORDDATA_ARG */
> + BufferLength = ACPI_GET16 (ParserState->Aml);
> + ParserState->Aml += 2;
> + break;
> +
> + case AML_DWORD_OP: /* AML_DWORDATA_ARG */
> + BufferLength = ACPI_GET32 (ParserState->Aml);
> + ParserState->Aml += 4;
> + break;
> +
> + default:
> + BufferLength = 0;
> + break;
> + }
> +
> + /* Fill in bytelist data */
> +
> + Arg->Named.Value.Size = BufferLength;
> + Arg->Named.Data = ParserState->Aml;
> + }
> +
> + /* Skip to End of byte data */
> +
> + ParserState->Aml = PkgEnd;
> + }
> + else
> + {
> + Arg = AcpiPsAllocOp (AML_INT_NAMEPATH_OP);
> + if (!Arg)
> + {
> + AcpiPsFreeOp (Field);
> + return_PTR (NULL);
> + }
> +
> + /* Get the Namestring argument */
> +
> + Arg->Common.Value.Name = AcpiPsGetNextNamestring (ParserState);
> + }
> +
> + /* Link the buffer/namestring to parent (CONNECTION_OP) */
> +
> + AcpiPsAppendArg (Field, Arg);
> + break;
> +
> +
> default:
>
> /* Opcode was set in previous switch */
> diff --git a/src/acpica/source/components/parser/psloop.c b/src/acpica/source/components/parser/psloop.c
> index 9791efc..20b3abf 100644
> --- a/src/acpica/source/components/parser/psloop.c
> +++ b/src/acpica/source/components/parser/psloop.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/parser/psopcode.c b/src/acpica/source/components/parser/psopcode.c
> index 30a393f..0cd777b 100644
> --- a/src/acpica/source/components/parser/psopcode.c
> +++ b/src/acpica/source/components/parser/psopcode.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -400,12 +400,17 @@ const ACPI_OPCODE_INFO AcpiGbl_AmlOpInfo[AML_NUM_OPCODES] =
> /* 79 */ ACPI_OP ("Mid", ARGP_MID_OP, ARGI_MID_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_3A_1T_1R, AML_FLAGS_EXEC_3A_1T_1R | AML_CONSTANT),
> /* 7A */ ACPI_OP ("Continue", ARGP_CONTINUE_OP, ARGI_CONTINUE_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, 0),
> /* 7B */ ACPI_OP ("LoadTable", ARGP_LOAD_TABLE_OP, ARGI_LOAD_TABLE_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_6A_0T_1R, AML_FLAGS_EXEC_6A_0T_1R),
> -/* 7C */ ACPI_OP ("DataTableRegion", ARGP_DATA_REGION_OP, ARGI_DATA_REGION_OP, ACPI_TYPE_REGION, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_COMPLEX, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED | AML_DEFER),
> +/* 7C */ ACPI_OP ("DataTableRegion", ARGP_DATA_REGION_OP, ARGI_DATA_REGION_OP, ACPI_TYPE_REGION, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_COMPLEX, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED | AML_DEFER),
> /* 7D */ ACPI_OP ("[EvalSubTree]", ARGP_SCOPE_OP, ARGI_SCOPE_OP, ACPI_TYPE_ANY, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_NO_OBJ, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE),
>
> /* ACPI 3.0 opcodes */
>
> -/* 7E */ ACPI_OP ("Timer", ARGP_TIMER_OP, ARGI_TIMER_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_0A_0T_1R, AML_FLAGS_EXEC_0A_0T_1R)
> +/* 7E */ ACPI_OP ("Timer", ARGP_TIMER_OP, ARGI_TIMER_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_0A_0T_1R, AML_FLAGS_EXEC_0A_0T_1R),
> +
> +/* ACPI 5.0 opcodes */
> +
> +/* 7F */ ACPI_OP ("-ConnectField-", ARGP_CONNECTFIELD_OP, ARGI_CONNECTFIELD_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, AML_HAS_ARGS),
> +/* 80 */ ACPI_OP ("-ExtAccessField-", ARGP_CONNECTFIELD_OP, ARGI_CONNECTFIELD_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, 0)
>
> /*! [End] no source code translation !*/
> };
> @@ -425,7 +430,7 @@ static const UINT8 AcpiGbl_ShortOpIndex[256] =
> /* 0x20 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
> /* 0x28 */ _UNK, _UNK, _UNK, _UNK, _UNK, 0x63, _PFX, _PFX,
> /* 0x30 */ 0x67, 0x66, 0x68, 0x65, 0x69, 0x64, 0x6A, 0x7D,
> -/* 0x38 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
> +/* 0x38 */ 0x7F, 0x80, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
> /* 0x40 */ _UNK, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC,
> /* 0x48 */ _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC,
> /* 0x50 */ _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC,
> diff --git a/src/acpica/source/components/parser/psparse.c b/src/acpica/source/components/parser/psparse.c
> index 59af839..18e2e21 100644
> --- a/src/acpica/source/components/parser/psparse.c
> +++ b/src/acpica/source/components/parser/psparse.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/parser/psscope.c b/src/acpica/source/components/parser/psscope.c
> index 10fe186..ce2d243 100644
> --- a/src/acpica/source/components/parser/psscope.c
> +++ b/src/acpica/source/components/parser/psscope.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/parser/pstree.c b/src/acpica/source/components/parser/pstree.c
> index 950dedf..f682885 100644
> --- a/src/acpica/source/components/parser/pstree.c
> +++ b/src/acpica/source/components/parser/pstree.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -157,7 +157,12 @@ AcpiPsGetArg (
>
> ACPI_FUNCTION_ENTRY ();
>
> -
> +/*
> + if (Op->Common.AmlOpcode == AML_INT_CONNECTION_OP)
> + {
> + return (Op->Common.Value.Arg);
> + }
> +*/
> /* Get the info structure for this opcode */
>
> OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode);
> diff --git a/src/acpica/source/components/parser/psutils.c b/src/acpica/source/components/parser/psutils.c
> index e676a40..f69f20b 100644
> --- a/src/acpica/source/components/parser/psutils.c
> +++ b/src/acpica/source/components/parser/psutils.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/parser/pswalk.c b/src/acpica/source/components/parser/pswalk.c
> index 0de366c..4e710d6 100644
> --- a/src/acpica/source/components/parser/pswalk.c
> +++ b/src/acpica/source/components/parser/pswalk.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/parser/psxface.c b/src/acpica/source/components/parser/psxface.c
> index 54af318..11c5fc2 100644
> --- a/src/acpica/source/components/parser/psxface.c
> +++ b/src/acpica/source/components/parser/psxface.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/resources/rsaddr.c b/src/acpica/source/components/resources/rsaddr.c
> index 0ee032c..d233e82 100644
> --- a/src/acpica/source/components/resources/rsaddr.c
> +++ b/src/acpica/source/components/resources/rsaddr.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/resources/rscalc.c b/src/acpica/source/components/resources/rscalc.c
> index ceb8cd9..7e23c6e 100644
> --- a/src/acpica/source/components/resources/rscalc.c
> +++ b/src/acpica/source/components/resources/rscalc.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -417,6 +417,26 @@ AcpiRsGetAmlLength (
> break;
>
>
> + case ACPI_RESOURCE_TYPE_GPIO:
> +
> + TotalSize = (ACPI_RS_LENGTH) (TotalSize + (Resource->Data.Gpio.PinTableLength * 2) +
> + Resource->Data.Gpio.ResourceSource.StringLength +
> + Resource->Data.Gpio.VendorLength);
> +
> + break;
> +
> +
> + case ACPI_RESOURCE_TYPE_SERIAL_BUS:
> +
> + TotalSize = AcpiGbl_AmlResourceSerialBusSizes [Resource->Data.CommonSerialBus.Type];
> +
> + TotalSize = (ACPI_RS_LENGTH) (TotalSize +
> + Resource->Data.I2cSerialBus.ResourceSource.StringLength +
> + Resource->Data.I2cSerialBus.VendorLength);
> +
> + break;
> +
> +
> default:
> break;
> }
> @@ -467,12 +487,13 @@ AcpiRsGetListLength (
> UINT32 ExtraStructBytes;
> UINT8 ResourceIndex;
> UINT8 MinimumAmlResourceLength;
> + AML_RESOURCE *AmlResource;
>
>
> ACPI_FUNCTION_TRACE (RsGetListLength);
>
>
> - *SizeNeeded = 0;
> + *SizeNeeded = ACPI_RS_SIZE_MIN; /* Minimum size is one EndTag */
> EndAml = AmlBuffer + AmlBufferLength;
>
> /* Walk the list of AML resource descriptors */
> @@ -484,9 +505,15 @@ AcpiRsGetListLength (
> Status = AcpiUtValidateResource (AmlBuffer, &ResourceIndex);
> if (ACPI_FAILURE (Status))
> {
> + /*
> + * Exit on failure. Cannot continue because the descriptor length
> + * may be bogus also.
> + */
> return_ACPI_STATUS (Status);
> }
>
> + AmlResource = (void *) AmlBuffer;
> +
> /* Get the resource length and base (minimum) AML size */
>
> ResourceLength = AcpiUtGetResourceLength (AmlBuffer);
> @@ -532,10 +559,8 @@ AcpiRsGetListLength (
>
> case ACPI_RESOURCE_NAME_END_TAG:
> /*
> - * End Tag:
> - * This is the normal exit, add size of EndTag
> + * End Tag: This is the normal exit
> */
> - *SizeNeeded += ACPI_RS_SIZE_MIN;
> return_ACPI_STATUS (AE_OK);
>
>
> @@ -566,6 +591,30 @@ AcpiRsGetListLength (
> ResourceLength - ExtraStructBytes, MinimumAmlResourceLength);
> break;
>
> + case ACPI_RESOURCE_NAME_GPIO:
> +
> + /* Vendor data is optional */
> +
> + if (AmlResource->Gpio.VendorLength)
> + {
> + ExtraStructBytes += AmlResource->Gpio.VendorOffset -
> + AmlResource->Gpio.PinTableOffset + AmlResource->Gpio.VendorLength;
> + }
> + else
> + {
> + ExtraStructBytes += AmlResource->LargeHeader.ResourceLength +
> + sizeof (AML_RESOURCE_LARGE_HEADER) -
> + AmlResource->Gpio.PinTableOffset;
> + }
> + break;
> +
> + case ACPI_RESOURCE_NAME_SERIAL_BUS:
> +
> + MinimumAmlResourceLength = AcpiGbl_ResourceAmlSerialBusSizes[
> + AmlResource->CommonSerialBus.Type];
> + ExtraStructBytes += AmlResource->CommonSerialBus.ResourceLength -
> + MinimumAmlResourceLength;
> + break;
>
> default:
> break;
> @@ -577,8 +626,16 @@ AcpiRsGetListLength (
> * Important: Round the size up for the appropriate alignment. This
> * is a requirement on IA64.
> */
> - BufferSize = AcpiGbl_ResourceStructSizes[ResourceIndex] +
> + if (AcpiUtGetResourceType (AmlBuffer) == ACPI_RESOURCE_NAME_SERIAL_BUS)
> + {
> + BufferSize = AcpiGbl_ResourceStructSerialBusSizes[
> + AmlResource->CommonSerialBus.Type] + ExtraStructBytes;
> + }
> + else
> + {
> + BufferSize = AcpiGbl_ResourceStructSizes[ResourceIndex] +
> ExtraStructBytes;
> + }
> BufferSize = (UINT32) ACPI_ROUND_UP_TO_NATIVE_WORD (BufferSize);
>
> *SizeNeeded += BufferSize;
> diff --git a/src/acpica/source/components/resources/rscreate.c b/src/acpica/source/components/resources/rscreate.c
> index 11db3a4..d75ceb6 100644
> --- a/src/acpica/source/components/resources/rscreate.c
> +++ b/src/acpica/source/components/resources/rscreate.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -126,6 +126,79 @@
>
> /*******************************************************************************
> *
> + * FUNCTION: AcpiBufferToResource
> + *
> + * PARAMETERS: AmlBuffer - Pointer to the resource byte stream
> + * AmlBufferLength - Length of the AmlBuffer
> + * ResourcePtr - Where the converted resource is returned
> + *
> + * RETURN: Status
> + *
> + * DESCRIPTION: Convert a raw AML buffer to a resource list
> + *
> + ******************************************************************************/
> +
> +ACPI_STATUS
> +AcpiBufferToResource (
> + UINT8 *AmlBuffer,
> + UINT16 AmlBufferLength,
> + ACPI_RESOURCE **ResourcePtr)
> +{
> + ACPI_STATUS Status;
> + ACPI_SIZE ListSizeNeeded;
> + void *Resource;
> + void *CurrentResourcePtr;
> +
> + /*
> + * Note: we allow AE_AML_NO_RESOURCE_END_TAG, since an end tag
> + * is not required here.
> + */
> +
> + /* Get the required length for the converted resource */
> +
> + Status = AcpiRsGetListLength (AmlBuffer, AmlBufferLength,
> + &ListSizeNeeded);
> + if (Status == AE_AML_NO_RESOURCE_END_TAG)
> + {
> + Status = AE_OK;
> + }
> + if (ACPI_FAILURE (Status))
> + {
> + return (Status);
> + }
> +
> + /* Allocate a buffer for the converted resource */
> +
> + Resource = ACPI_ALLOCATE_ZEROED (ListSizeNeeded);
> + CurrentResourcePtr = Resource;
> + if (!Resource)
> + {
> + return (AE_NO_MEMORY);
> + }
> +
> + /* Perform the AML-to-Resource conversion */
> +
> + Status = AcpiUtWalkAmlResources (AmlBuffer, AmlBufferLength,
> + AcpiRsConvertAmlToResources, &CurrentResourcePtr);
> + if (Status == AE_AML_NO_RESOURCE_END_TAG)
> + {
> + Status = AE_OK;
> + }
> + if (ACPI_FAILURE (Status))
> + {
> + ACPI_FREE (Resource);
> + }
> + else
> + {
> + *ResourcePtr = Resource;
> + }
> +
> + return (Status);
> +}
> +
> +
> +/*******************************************************************************
> + *
> * FUNCTION: AcpiRsCreateResourceList
> *
> * PARAMETERS: AmlBuffer - Pointer to the resource byte stream
> diff --git a/src/acpica/source/components/resources/rsdump.c b/src/acpica/source/components/resources/rsdump.c
> index d2db725..29682d6 100644
> --- a/src/acpica/source/components/resources/rsdump.c
> +++ b/src/acpica/source/components/resources/rsdump.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -163,6 +163,11 @@ AcpiRsDumpByteList (
> UINT8 *Data);
>
> static void
> +AcpiRsDumpWordList (
> + UINT16 Length,
> + UINT16 *Data);
> +
> +static void
> AcpiRsDumpDwordList (
> UINT8 Length,
> UINT32 *Data);
> @@ -361,6 +366,87 @@ ACPI_RSDUMP_INFO AcpiRsDumpGenericReg[6] =
> {ACPI_RSD_UINT64, ACPI_RSD_OFFSET (GenericReg.Address), "Address", NULL}
> };
>
> +ACPI_RSDUMP_INFO AcpiRsDumpGpio[16] =
> +{
> + {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpGpio), "GPIO", NULL},
> + {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (Gpio.RevisionId), "RevisionId", NULL},
> + {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (Gpio.ConnectionType), "ConnectionType", AcpiGbl_CtDecode},
> + {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Gpio.ProducerConsumer), "ProducerConsumer", AcpiGbl_ConsumeDecode},
> + {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (Gpio.PinConfig), "PinConfig", AcpiGbl_PpcDecode},
> + {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Gpio.Sharable), "Sharable", AcpiGbl_ShrDecode},
> + {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Gpio.IoRestriction), "IoRestriction", AcpiGbl_IorDecode},
> + {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Gpio.Triggering), "Triggering", AcpiGbl_HeDecode},
> + {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Gpio.Polarity), "Polarity", AcpiGbl_LlDecode},
> + {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (Gpio.DriveStrength), "DriveStrength", NULL},
> + {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (Gpio.DebounceTimeout), "DebounceTimeout", NULL},
> + {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET (Gpio.ResourceSource), "ResourceSource", NULL},
> + {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (Gpio.PinTableLength), "PinTableLength", NULL},
> + {ACPI_RSD_WORDLIST, ACPI_RSD_OFFSET (Gpio.PinTable), "PinTable", NULL},
> + {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (Gpio.VendorLength), "VendorLength", NULL},
> + {ACPI_RSD_SHORTLISTX,ACPI_RSD_OFFSET (Gpio.VendorData), "VendorData", NULL},
> +};
> +
> +ACPI_RSDUMP_INFO AcpiRsDumpFixedDma[4] =
> +{
> + {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpFixedDma), "FixedDma", NULL},
> + {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (FixedDma.RequestLines), "RequestLines", NULL},
> + {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (FixedDma.Channels), "Channels", NULL},
> + {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (FixedDma.Width), "TransferWidth", AcpiGbl_DtsDecode},
> +};
> +
> +#define ACPI_RS_DUMP_COMMON_SERIAL_BUS \
> + {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (CommonSerialBus.RevisionId), "RevisionId", NULL}, \
> + {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (CommonSerialBus.Type), "Type", AcpiGbl_SbtDecode}, \
> + {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (CommonSerialBus.ProducerConsumer), "ProducerConsumer", AcpiGbl_ConsumeDecode}, \
> + {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (CommonSerialBus.SlaveMode), "SlaveMode", AcpiGbl_SmDecode}, \
> + {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (CommonSerialBus.TypeRevisionId), "TypeRevisionId", NULL}, \
> + {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (CommonSerialBus.TypeDataLength), "TypeDataLength", NULL}, \
> + {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET (CommonSerialBus.ResourceSource), "ResourceSource", NULL}, \
> + {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (CommonSerialBus.VendorLength), "VendorLength", NULL}, \
> + {ACPI_RSD_SHORTLISTX,ACPI_RSD_OFFSET (CommonSerialBus.VendorData), "VendorData", NULL},
> +
> +ACPI_RSDUMP_INFO AcpiRsDumpCommonSerialBus[10] =
> +{
> + {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpCommonSerialBus), "Common Serial Bus", NULL},
> + ACPI_RS_DUMP_COMMON_SERIAL_BUS
> +};
> +
> +ACPI_RSDUMP_INFO AcpiRsDumpI2cSerialBus[13] =
> +{
> + {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpI2cSerialBus), "I2C Serial Bus", NULL},
> + ACPI_RS_DUMP_COMMON_SERIAL_BUS
> + {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (I2cSerialBus.AccessMode), "AccessMode", AcpiGbl_AmDecode},
> + {ACPI_RSD_UINT32, ACPI_RSD_OFFSET (I2cSerialBus.ConnectionSpeed), "ConnectionSpeed", NULL},
> + {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (I2cSerialBus.SlaveAddress), "SlaveAddress", NULL},
> +};
> +
> +ACPI_RSDUMP_INFO AcpiRsDumpSpiSerialBus[17] =
> +{
> + {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpSpiSerialBus), "Spi Serial Bus", NULL},
> + ACPI_RS_DUMP_COMMON_SERIAL_BUS
> + {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (SpiSerialBus.WireMode), "WireMode", AcpiGbl_WmDecode},
> + {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (SpiSerialBus.DevicePolarity), "DevicePolarity", AcpiGbl_DpDecode},
> + {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (SpiSerialBus.DataBitLength), "DataBitLength", NULL},
> + {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (SpiSerialBus.ClockPhase), "ClockPhase", AcpiGbl_CphDecode},
> + {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (SpiSerialBus.ClockPolarity), "ClockPolarity", AcpiGbl_CpoDecode},
> + {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (SpiSerialBus.DeviceSelection), "DeviceSelection", NULL},
> + {ACPI_RSD_UINT32, ACPI_RSD_OFFSET (SpiSerialBus.ConnectionSpeed), "ConnectionSpeed", NULL},
> +};
> +
> +ACPI_RSDUMP_INFO AcpiRsDumpUartSerialBus[19] =
> +{
> + {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpUartSerialBus), "Uart Serial Bus", NULL},
> + ACPI_RS_DUMP_COMMON_SERIAL_BUS
> + {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (UartSerialBus.FlowControl), "FlowControl", AcpiGbl_FcDecode},
> + {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (UartSerialBus.StopBits), "StopBits", AcpiGbl_SbDecode},
> + {ACPI_RSD_3BITFLAG, ACPI_RSD_OFFSET (UartSerialBus.DataBits), "DataBits", AcpiGbl_BpbDecode},
> + {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (UartSerialBus.Endian), "Endian", AcpiGbl_EdDecode},
> + {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (UartSerialBus.Parity), "Parity", AcpiGbl_PtDecode},
> + {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (UartSerialBus.LinesEnabled), "LinesEnabled", NULL},
> + {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (UartSerialBus.RxFifoSize), "RxFifoSize", NULL},
> + {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (UartSerialBus.TxFifoSize), "TxFifoSize", NULL},
> + {ACPI_RSD_UINT32, ACPI_RSD_OFFSET (UartSerialBus.DefaultBaudRate), "ConnectionSpeed", NULL},
> +};
>
> /*
> * Tables used for common address descriptor flag fields
> @@ -463,7 +549,15 @@ AcpiRsDumpDescriptor (
> /* Data items, 8/16/32/64 bit */
>
> case ACPI_RSD_UINT8:
> - AcpiRsOutInteger8 (Name, ACPI_GET8 (Target));
> + if (Table->Pointer)
> + {
> + AcpiRsOutString (Name, ACPI_CAST_PTR (char,
> + Table->Pointer [*Target]));
> + }
> + else
> + {
> + AcpiRsOutInteger8 (Name, ACPI_GET8 (Target));
> + }
> break;
>
> case ACPI_RSD_UINT16:
> @@ -490,6 +584,11 @@ AcpiRsDumpDescriptor (
> Table->Pointer [*Target & 0x03]));
> break;
>
> + case ACPI_RSD_3BITFLAG:
> + AcpiRsOutString (Name, ACPI_CAST_PTR (char,
> + Table->Pointer [*Target & 0x07]));
> + break;
> +
> case ACPI_RSD_SHORTLIST:
> /*
> * Short byte list (single line output) for DMA and IRQ resources
> @@ -502,6 +601,19 @@ AcpiRsDumpDescriptor (
> }
> break;
>
> + case ACPI_RSD_SHORTLISTX:
> + /*
> + * Short byte list (single line output) for GPIO vendor data
> + * Note: The list length is obtained from the previous table entry
> + */
> + if (PreviousTarget)
> + {
> + AcpiRsOutTitle (Name);
> + AcpiRsDumpShortByteList (*PreviousTarget,
> + *(ACPI_CAST_INDIRECT_PTR (UINT8, Target)));
> + }
> + break;
> +
> case ACPI_RSD_LONGLIST:
> /*
> * Long byte list for Vendor resource data
> @@ -525,6 +637,18 @@ AcpiRsDumpDescriptor (
> }
> break;
>
> + case ACPI_RSD_WORDLIST:
> + /*
> + * Word list for GPIO Pin Table
> + * Note: The list length is obtained from the previous table entry
> + */
> + if (PreviousTarget)
> + {
> + AcpiRsDumpWordList (*PreviousTarget,
> + *(ACPI_CAST_INDIRECT_PTR (UINT16, Target)));
> + }
> + break;
> +
> case ACPI_RSD_ADDRESS:
> /*
> * Common flags for all Address resources
> @@ -685,13 +809,20 @@ AcpiRsDumpResourceList (
>
> /* Dump the resource descriptor */
>
> - AcpiRsDumpDescriptor (&ResourceList->Data,
> - AcpiGbl_DumpResourceDispatch[Type]);
> + if (Type == ACPI_RESOURCE_TYPE_SERIAL_BUS)
> + {
> + AcpiRsDumpDescriptor (&ResourceList->Data,
> + AcpiGbl_DumpSerialBusDispatch[ResourceList->Data.CommonSerialBus.Type]);
> + }
> + else
> + {
> + AcpiRsDumpDescriptor (&ResourceList->Data,
> + AcpiGbl_DumpResourceDispatch[Type]);
> + }
>
> /* Point to the next resource structure */
>
> - ResourceList = ACPI_ADD_PTR (ACPI_RESOURCE, ResourceList,
> - ResourceList->Length);
> + ResourceList = ACPI_NEXT_RESOURCE (ResourceList);
>
> /* Exit when END_TAG descriptor is reached */
>
> @@ -868,5 +999,20 @@ AcpiRsDumpDwordList (
> }
> }
>
> +static void
> +AcpiRsDumpWordList (
> + UINT16 Length,
> + UINT16 *Data)
> +{
> + UINT16 i;
> +
> +
> + for (i = 0; i < Length; i++)
> + {
> + AcpiOsPrintf ("%25s%2.2X : %4.4X\n",
> + "Word", i, Data[i]);
> + }
> +}
> +
> #endif
>
> diff --git a/src/acpica/source/components/resources/rsinfo.c b/src/acpica/source/components/resources/rsinfo.c
> index 5fca428..e997eec 100644
> --- a/src/acpica/source/components/resources/rsinfo.c
> +++ b/src/acpica/source/components/resources/rsinfo.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -154,7 +154,10 @@ ACPI_RSCONVERT_INFO *AcpiGbl_SetResourceDispatch[] =
> AcpiRsConvertAddress64, /* 0x0D, ACPI_RESOURCE_TYPE_ADDRESS64 */
> AcpiRsConvertExtAddress64, /* 0x0E, ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64 */
> AcpiRsConvertExtIrq, /* 0x0F, ACPI_RESOURCE_TYPE_EXTENDED_IRQ */
> - AcpiRsConvertGenericReg /* 0x10, ACPI_RESOURCE_TYPE_GENERIC_REGISTER */
> + AcpiRsConvertGenericReg, /* 0x10, ACPI_RESOURCE_TYPE_GENERIC_REGISTER */
> + AcpiRsConvertGpio, /* 0x11, ACPI_RESOURCE_TYPE_GPIO */
> + AcpiRsConvertFixedDma, /* 0x12, ACPI_RESOURCE_TYPE_FIXED_DMA */
> + NULL, /* 0x13, ACPI_RESOURCE_TYPE_SERIAL_BUS - Use subtype table below */
> };
>
> /* Dispatch tables for AML-to-resource (Get Resource) conversion functions */
> @@ -173,7 +176,7 @@ ACPI_RSCONVERT_INFO *AcpiGbl_GetResourceDispatch[] =
> AcpiRsConvertEndDpf, /* 0x07, ACPI_RESOURCE_NAME_END_DEPENDENT */
> AcpiRsConvertIo, /* 0x08, ACPI_RESOURCE_NAME_IO */
> AcpiRsConvertFixedIo, /* 0x09, ACPI_RESOURCE_NAME_FIXED_IO */
> - NULL, /* 0x0A, Reserved */
> + AcpiRsConvertFixedDma, /* 0x0A, ACPI_RESOURCE_NAME_FIXED_DMA */
> NULL, /* 0x0B, Reserved */
> NULL, /* 0x0C, Reserved */
> NULL, /* 0x0D, Reserved */
> @@ -193,7 +196,20 @@ ACPI_RSCONVERT_INFO *AcpiGbl_GetResourceDispatch[] =
> AcpiRsConvertAddress16, /* 0x08, ACPI_RESOURCE_NAME_ADDRESS16 */
> AcpiRsConvertExtIrq, /* 0x09, ACPI_RESOURCE_NAME_EXTENDED_IRQ */
> AcpiRsConvertAddress64, /* 0x0A, ACPI_RESOURCE_NAME_ADDRESS64 */
> - AcpiRsConvertExtAddress64 /* 0x0B, ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64 */
> + AcpiRsConvertExtAddress64, /* 0x0B, ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64 */
> + AcpiRsConvertGpio, /* 0x0C, ACPI_RESOURCE_NAME_GPIO */
> + NULL, /* 0x0D, Reserved */
> + NULL, /* 0x0E, ACPI_RESOURCE_NAME_SERIAL_BUS - Use subtype table below */
> +};
> +
> +/* Subtype table for SerialBus -- I2C, SPI, and UART */
> +
> +ACPI_RSCONVERT_INFO *AcpiGbl_ConvertResourceSerialBusDispatch[] =
> +{
> + NULL,
> + AcpiRsConvertI2cSerialBus,
> + AcpiRsConvertSpiSerialBus,
> + AcpiRsConvertUartSerialBus,
> };
>
>
> @@ -220,6 +236,17 @@ ACPI_RSDUMP_INFO *AcpiGbl_DumpResourceDispatch[] =
> AcpiRsDumpExtAddress64, /* ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64 */
> AcpiRsDumpExtIrq, /* ACPI_RESOURCE_TYPE_EXTENDED_IRQ */
> AcpiRsDumpGenericReg, /* ACPI_RESOURCE_TYPE_GENERIC_REGISTER */
> + AcpiRsDumpGpio, /* ACPI_RESOURCE_TYPE_GPIO */
> + AcpiRsDumpFixedDma, /* ACPI_RESOURCE_TYPE_FIXED_DMA */
> + NULL, /* ACPI_RESOURCE_TYPE_SERIAL_BUS */
> +};
> +
> +ACPI_RSDUMP_INFO *AcpiGbl_DumpSerialBusDispatch[] =
> +{
> + NULL,
> + AcpiRsDumpI2cSerialBus, /* AML_RESOURCE_I2C_BUS_TYPE */
> + AcpiRsDumpSpiSerialBus, /* AML_RESOURCE_SPI_BUS_TYPE */
> + AcpiRsDumpUartSerialBus, /* AML_RESOURCE_UART_BUS_TYPE */
> };
> #endif
>
> @@ -247,7 +274,10 @@ const UINT8 AcpiGbl_AmlResourceSizes[] =
> sizeof (AML_RESOURCE_ADDRESS64), /* ACPI_RESOURCE_TYPE_ADDRESS64 */
> sizeof (AML_RESOURCE_EXTENDED_ADDRESS64),/*ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64 */
> sizeof (AML_RESOURCE_EXTENDED_IRQ), /* ACPI_RESOURCE_TYPE_EXTENDED_IRQ */
> - sizeof (AML_RESOURCE_GENERIC_REGISTER) /* ACPI_RESOURCE_TYPE_GENERIC_REGISTER */
> + sizeof (AML_RESOURCE_GENERIC_REGISTER), /* ACPI_RESOURCE_TYPE_GENERIC_REGISTER */
> + sizeof (AML_RESOURCE_GPIO), /* ACPI_RESOURCE_TYPE_GPIO */
> + sizeof (AML_RESOURCE_FIXED_DMA), /* ACPI_RESOURCE_TYPE_FIXED_DMA */
> + sizeof (AML_RESOURCE_COMMON_SERIALBUS), /* ACPI_RESOURCE_TYPE_SERIAL_BUS */
> };
>
>
> @@ -265,7 +295,7 @@ const UINT8 AcpiGbl_ResourceStructSizes[] =
> ACPI_RS_SIZE_MIN,
> ACPI_RS_SIZE (ACPI_RESOURCE_IO),
> ACPI_RS_SIZE (ACPI_RESOURCE_FIXED_IO),
> - 0,
> + ACPI_RS_SIZE (ACPI_RESOURCE_FIXED_DMA),
> 0,
> 0,
> 0,
> @@ -285,6 +315,23 @@ const UINT8 AcpiGbl_ResourceStructSizes[] =
> ACPI_RS_SIZE (ACPI_RESOURCE_ADDRESS16),
> ACPI_RS_SIZE (ACPI_RESOURCE_EXTENDED_IRQ),
> ACPI_RS_SIZE (ACPI_RESOURCE_ADDRESS64),
> - ACPI_RS_SIZE (ACPI_RESOURCE_EXTENDED_ADDRESS64)
> + ACPI_RS_SIZE (ACPI_RESOURCE_EXTENDED_ADDRESS64),
> + ACPI_RS_SIZE (ACPI_RESOURCE_GPIO),
> + ACPI_RS_SIZE (ACPI_RESOURCE_COMMON_SERIALBUS)
> +};
> +
> +const UINT8 AcpiGbl_AmlResourceSerialBusSizes[] =
> +{
> + 0,
> + sizeof (AML_RESOURCE_I2C_SERIALBUS),
> + sizeof (AML_RESOURCE_SPI_SERIALBUS),
> + sizeof (AML_RESOURCE_UART_SERIALBUS),
> };
>
> +const UINT8 AcpiGbl_ResourceStructSerialBusSizes[] =
> +{
> + 0,
> + ACPI_RS_SIZE (ACPI_RESOURCE_I2C_SERIALBUS),
> + ACPI_RS_SIZE (ACPI_RESOURCE_SPI_SERIALBUS),
> + ACPI_RS_SIZE (ACPI_RESOURCE_UART_SERIALBUS),
> +};
> diff --git a/src/acpica/source/components/resources/rsio.c b/src/acpica/source/components/resources/rsio.c
> index 26e7988..f83d91e 100644
> --- a/src/acpica/source/components/resources/rsio.c
> +++ b/src/acpica/source/components/resources/rsio.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/resources/rsirq.c b/src/acpica/source/components/resources/rsirq.c
> index d424d12..c06197b 100644
> --- a/src/acpica/source/components/resources/rsirq.c
> +++ b/src/acpica/source/components/resources/rsirq.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -346,3 +346,35 @@ ACPI_RSCONVERT_INFO AcpiRsConvertDma[6] =
> ACPI_RS_OFFSET (Data.Dma.ChannelCount)}
> };
>
> +
> +/*******************************************************************************
> + *
> + * AcpiRsConvertFixedDma
> + *
> + ******************************************************************************/
> +
> +ACPI_RSCONVERT_INFO AcpiRsConvertFixedDma[4] =
> +{
> + {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_FIXED_DMA,
> + ACPI_RS_SIZE (ACPI_RESOURCE_FIXED_DMA),
> + ACPI_RSC_TABLE_SIZE (AcpiRsConvertFixedDma)},
> +
> + {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_FIXED_DMA,
> + sizeof (AML_RESOURCE_FIXED_DMA),
> + 0},
> +
> + /*
> + * These fields are contiguous in both the source and destination:
> + * RequestLines
> + * Channels
> + */
> +
> + {ACPI_RSC_MOVE16, ACPI_RS_OFFSET (Data.FixedDma.RequestLines),
> + AML_OFFSET (FixedDma.RequestLines),
> + 2},
> +
> + {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.FixedDma.Width),
> + AML_OFFSET (FixedDma.Width),
> + 1},
> +
> +};
> diff --git a/src/acpica/source/components/resources/rslist.c b/src/acpica/source/components/resources/rslist.c
> index 58bd395..fa22932 100644
> --- a/src/acpica/source/components/resources/rslist.c
> +++ b/src/acpica/source/components/resources/rslist.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -149,6 +149,8 @@ AcpiRsConvertAmlToResources (
> ACPI_RESOURCE **ResourcePtr = ACPI_CAST_INDIRECT_PTR (
> ACPI_RESOURCE, Context);
> ACPI_RESOURCE *Resource;
> + AML_RESOURCE *AmlResource;
> + ACPI_RSCONVERT_INFO *ConversionTable;
> ACPI_STATUS Status;
>
>
> @@ -166,11 +168,42 @@ AcpiRsConvertAmlToResources (
> "Misaligned resource pointer %p", Resource));
> }
>
> - /* Convert the AML byte stream resource to a local resource struct */
> + /* Get the appropriate conversion info table */
> +
> + AmlResource = ACPI_CAST_PTR (AML_RESOURCE, Aml);
> + if (AcpiUtGetResourceType (Aml) == ACPI_RESOURCE_NAME_SERIAL_BUS)
> + {
> + if (AmlResource->CommonSerialBus.Type > AML_RESOURCE_MAX_SERIALBUSTYPE)
> + {
> + ConversionTable = NULL;
> + }
> + else
> + {
> + /* This is an I2C, SPI, or UART SerialBus descriptor */
> +
> + ConversionTable =
> + AcpiGbl_ConvertResourceSerialBusDispatch[
> + AmlResource->CommonSerialBus.Type];
> + }
> + }
> + else
> + {
> + ConversionTable =
> + AcpiGbl_GetResourceDispatch[ResourceIndex];
> + }
> +
> + if (!ConversionTable)
> + {
> + ACPI_ERROR ((AE_INFO,
> + "Invalid/unsupported resource descriptor: Type 0x%2.2X",
> + ResourceIndex));
> + return (AE_AML_INVALID_RESOURCE_TYPE);
> + }
> +
> + /* Convert the AML byte stream resource to a local resource struct */
>
> Status = AcpiRsConvertAmlToResource (
> - Resource, ACPI_CAST_PTR (AML_RESOURCE, Aml),
> - AcpiGbl_GetResourceDispatch[ResourceIndex]);
> + Resource, AmlResource, ConversionTable);
> if (ACPI_FAILURE (Status))
> {
> ACPI_EXCEPTION ((AE_INFO, Status,
> @@ -185,7 +218,7 @@ AcpiRsConvertAmlToResources (
>
> /* Point to the next structure in the output buffer */
>
> - *ResourcePtr = ACPI_ADD_PTR (void, Resource, Resource->Length);
> + *ResourcePtr = ACPI_NEXT_RESOURCE (Resource);
> return_ACPI_STATUS (AE_OK);
> }
>
> @@ -217,6 +250,7 @@ AcpiRsConvertResourcesToAml (
> {
> UINT8 *Aml = OutputBuffer;
> UINT8 *EndAml = OutputBuffer + AmlSizeNeeded;
> + ACPI_RSCONVERT_INFO *ConversionTable;
> ACPI_STATUS Status;
>
>
> @@ -239,9 +273,36 @@ AcpiRsConvertResourcesToAml (
>
> /* Perform the conversion */
>
> + if (Resource->Type == ACPI_RESOURCE_TYPE_SERIAL_BUS)
> + {
> + if (Resource->Data.CommonSerialBus.Type > AML_RESOURCE_MAX_SERIALBUSTYPE)
> + {
> + ConversionTable = NULL;
> + }
> + else
> + {
> + /* This is an I2C, SPI, or UART SerialBus descriptor */
> +
> + ConversionTable = AcpiGbl_ConvertResourceSerialBusDispatch[
> + Resource->Data.CommonSerialBus.Type];
> + }
> + }
> + else
> + {
> + ConversionTable = AcpiGbl_SetResourceDispatch[Resource->Type];
> + }
> +
> + if (!ConversionTable)
> + {
> + ACPI_ERROR ((AE_INFO,
> + "Invalid/unsupported resource descriptor: Type 0x%2.2X",
> + Resource->Type));
> + return (AE_AML_INVALID_RESOURCE_TYPE);
> + }
> +
> Status = AcpiRsConvertResourceToAml (Resource,
> - ACPI_CAST_PTR (AML_RESOURCE, Aml),
> - AcpiGbl_SetResourceDispatch[Resource->Type]);
> + ACPI_CAST_PTR (AML_RESOURCE, Aml),
> + ConversionTable);
> if (ACPI_FAILURE (Status))
> {
> ACPI_EXCEPTION ((AE_INFO, Status,
> @@ -276,7 +337,7 @@ AcpiRsConvertResourcesToAml (
>
> /* Point to the next input resource descriptor */
>
> - Resource = ACPI_ADD_PTR (ACPI_RESOURCE, Resource, Resource->Length);
> + Resource = ACPI_NEXT_RESOURCE (Resource);
> }
>
> /* Completed buffer, but did not find an EndTag resource descriptor */
> diff --git a/src/acpica/source/components/resources/rsmemory.c b/src/acpica/source/components/resources/rsmemory.c
> index 708e604..d95503c 100644
> --- a/src/acpica/source/components/resources/rsmemory.c
> +++ b/src/acpica/source/components/resources/rsmemory.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/resources/rsmisc.c b/src/acpica/source/components/resources/rsmisc.c
> index 89c59a5..87702cb 100644
> --- a/src/acpica/source/components/resources/rsmisc.c
> +++ b/src/acpica/source/components/resources/rsmisc.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -166,6 +166,11 @@ AcpiRsConvertAmlToResource (
> ACPI_FUNCTION_TRACE (RsConvertAmlToResource);
>
>
> + if (!Info)
> + {
> + return_ACPI_STATUS (AE_BAD_PARAMETER);
> + }
> +
> if (((ACPI_SIZE) Resource) & 0x3)
> {
> /* Each internal resource struct is expected to be 32-bit aligned */
> @@ -184,7 +189,6 @@ AcpiRsConvertAmlToResource (
> * table length (# of table entries)
> */
> Count = INIT_TABLE_LENGTH (Info);
> -
> while (Count)
> {
> /*
> @@ -234,6 +238,15 @@ AcpiRsConvertAmlToResource (
> break;
>
>
> + case ACPI_RSC_3BITFLAG:
> + /*
> + * Mask and shift the flag bits
> + */
> + ACPI_SET8 (Destination) = (UINT8)
> + ((ACPI_GET8 (Source) >> Info->Value) & 0x07);
> + break;
> +
> +
> case ACPI_RSC_COUNT:
>
> ItemCount = ACPI_GET8 (Source);
> @@ -254,6 +267,75 @@ AcpiRsConvertAmlToResource (
> break;
>
>
> + case ACPI_RSC_COUNT_GPIO_PIN:
> +
> + Target = ACPI_ADD_PTR (void, Aml, Info->Value);
> + ItemCount = ACPI_GET16 (Target) - ACPI_GET16 (Source);
> +
> + Resource->Length = Resource->Length + ItemCount;
> + ItemCount = ItemCount / 2;
> + ACPI_SET16 (Destination) = ItemCount;
> + break;
> +
> +
> + case ACPI_RSC_COUNT_GPIO_VEN:
> +
> + ItemCount = ACPI_GET8 (Source);
> + ACPI_SET8 (Destination) = (UINT8) ItemCount;
> +
> + Resource->Length = Resource->Length +
> + (Info->Value * ItemCount);
> + break;
> +
> +
> + case ACPI_RSC_COUNT_GPIO_RES:
> +
> + /*
> + * Vendor data is optional (length/offset may both be zero)
> + * Examine vendor data length field first
> + */
> + Target = ACPI_ADD_PTR (void, Aml, (Info->Value + 2));
> + if (ACPI_GET16 (Target))
> + {
> + /* Use vendor offset to get resource source length */
> +
> + Target = ACPI_ADD_PTR (void, Aml, Info->Value);
> + ItemCount = ACPI_GET16 (Target) - ACPI_GET16 (Source);
> + }
> + else
> + {
> + /* No vendor data to worry about */
> +
> + ItemCount = Aml->LargeHeader.ResourceLength +
> + sizeof (AML_RESOURCE_LARGE_HEADER) -
> + ACPI_GET16 (Source);
> + }
> +
> + Resource->Length = Resource->Length + ItemCount;
> + ACPI_SET16 (Destination) = ItemCount;
> + break;
> +
> +
> + case ACPI_RSC_COUNT_SERIAL_VEN:
> +
> + ItemCount = ACPI_GET16 (Source) - Info->Value;
> +
> + Resource->Length = Resource->Length + ItemCount;
> + ACPI_SET16 (Destination) = ItemCount;
> + break;
> +
> +
> + case ACPI_RSC_COUNT_SERIAL_RES:
> +
> + ItemCount = (AmlResourceLength +
> + sizeof (AML_RESOURCE_LARGE_HEADER)) -
> + ACPI_GET16 (Source) - Info->Value;
> +
> + Resource->Length = Resource->Length + ItemCount;
> + ACPI_SET16 (Destination) = ItemCount;
> + break;
> +
> +
> case ACPI_RSC_LENGTH:
>
> Resource->Length = Resource->Length + Info->Value;
> @@ -276,6 +358,66 @@ AcpiRsConvertAmlToResource (
> break;
>
>
> + case ACPI_RSC_MOVE_GPIO_PIN:
> +
> + /* Generate and set the PIN data pointer */
> +
> + Target = (char *) ACPI_ADD_PTR (void, Resource,
> + (Resource->Length - ItemCount * 2));
> + *(UINT16 **) Destination = ACPI_CAST_PTR (UINT16, Target);
> +
> + /* Copy the PIN data */
> +
> + Source = ACPI_ADD_PTR (void, Aml, ACPI_GET16 (Source));
> + AcpiRsMoveData (Target, Source, ItemCount, Info->Opcode);
> + break;
> +
> +
> + case ACPI_RSC_MOVE_GPIO_RES:
> +
> + /* Generate and set the ResourceSource string pointer */
> +
> + Target = (char *) ACPI_ADD_PTR (void, Resource,
> + (Resource->Length - ItemCount));
> + *(UINT8 **) Destination = ACPI_CAST_PTR (UINT8, Target);
> +
> + /* Copy the ResourceSource string */
> +
> + Source = ACPI_ADD_PTR (void, Aml, ACPI_GET16 (Source));
> + AcpiRsMoveData (Target, Source, ItemCount, Info->Opcode);
> + break;
> +
> +
> + case ACPI_RSC_MOVE_SERIAL_VEN:
> +
> + /* Generate and set the Vendor Data pointer */
> +
> + Target = (char *) ACPI_ADD_PTR (void, Resource,
> + (Resource->Length - ItemCount));
> + *(UINT8 **) Destination = ACPI_CAST_PTR (UINT8, Target);
> +
> + /* Copy the Vendor Data */
> +
> + Source = ACPI_ADD_PTR (void, Aml, Info->Value);
> + AcpiRsMoveData (Target, Source, ItemCount, Info->Opcode);
> + break;
> +
> +
> + case ACPI_RSC_MOVE_SERIAL_RES:
> +
> + /* Generate and set the ResourceSource string pointer */
> +
> + Target = (char *) ACPI_ADD_PTR (void, Resource,
> + (Resource->Length - ItemCount));
> + *(UINT8 **) Destination = ACPI_CAST_PTR (UINT8, Target);
> +
> + /* Copy the ResourceSource string */
> +
> + Source = ACPI_ADD_PTR (void, Aml, (ACPI_GET16 (Source) + Info->Value));
> + AcpiRsMoveData (Target, Source, ItemCount, Info->Opcode);
> + break;
> +
> +
> case ACPI_RSC_SET8:
>
> ACPI_MEMSET (Destination, Info->AmlOffset, Info->Value);
> @@ -315,11 +457,12 @@ AcpiRsConvertAmlToResource (
> * Optional ResourceSource (Index and String). This is the more
> * complicated case used by the Interrupt() macro
> */
> - Target = ACPI_ADD_PTR (char, Resource, Info->AmlOffset + (ItemCount * 4));
> + Target = ACPI_ADD_PTR (char, Resource,
> + Info->AmlOffset + (ItemCount * 4));
>
> Resource->Length +=
> - AcpiRsGetResourceSource (AmlResourceLength,
> - (ACPI_RS_LENGTH) (((ItemCount - 1) * sizeof (UINT32)) + Info->Value),
> + AcpiRsGetResourceSource (AmlResourceLength, (ACPI_RS_LENGTH)
> + (((ItemCount - 1) * sizeof (UINT32)) + Info->Value),
> Destination, Aml, Target);
> break;
>
> @@ -428,6 +571,7 @@ AcpiRsConvertResourceToAml (
> {
> void *Source = NULL;
> void *Destination;
> + char *Target;
> ACPI_RSDESC_SIZE AmlLength = 0;
> UINT8 Count;
> UINT16 Temp16 = 0;
> @@ -437,6 +581,11 @@ AcpiRsConvertResourceToAml (
> ACPI_FUNCTION_TRACE (RsConvertResourceToAml);
>
>
> + if (!Info)
> + {
> + return_ACPI_STATUS (AE_BAD_PARAMETER);
> + }
> +
> /*
> * First table entry must be ACPI_RSC_INITxxx and must contain the
> * table length (# of table entries)
> @@ -492,6 +641,15 @@ AcpiRsConvertResourceToAml (
> break;
>
>
> + case ACPI_RSC_3BITFLAG:
> + /*
> + * Mask and shift the flag bits
> + */
> + ACPI_SET8 (Destination) |= (UINT8)
> + ((ACPI_GET8 (Source) & 0x07) << Info->Value);
> + break;
> +
> +
> case ACPI_RSC_COUNT:
>
> ItemCount = ACPI_GET8 (Source);
> @@ -509,6 +667,68 @@ AcpiRsConvertResourceToAml (
> break;
>
>
> + case ACPI_RSC_COUNT_GPIO_PIN:
> +
> + ItemCount = ACPI_GET16 (Source);
> + ACPI_SET16 (Destination) = (UINT16) AmlLength;
> +
> + AmlLength = (UINT16) (AmlLength + ItemCount * 2);
> + Target = ACPI_ADD_PTR (void, Aml, Info->Value);
> + ACPI_SET16 (Target) = (UINT16) AmlLength;
> + AcpiRsSetResourceLength (AmlLength, Aml);
> + break;
> +
> +
> + case ACPI_RSC_COUNT_GPIO_VEN:
> +
> + ItemCount = ACPI_GET16 (Source);
> + ACPI_SET16 (Destination) = (UINT16) ItemCount;
> +
> + AmlLength = (UINT16) (AmlLength + (Info->Value * ItemCount));
> + AcpiRsSetResourceLength (AmlLength, Aml);
> + break;
> +
> +
> + case ACPI_RSC_COUNT_GPIO_RES:
> +
> + /* Set resource source string length */
> +
> + ItemCount = ACPI_GET16 (Source);
> + ACPI_SET16 (Destination) = (UINT16) AmlLength;
> +
> + /* Compute offset for the Vendor Data */
> +
> + AmlLength = (UINT16) (AmlLength + ItemCount);
> + Target = ACPI_ADD_PTR (void, Aml, Info->Value);
> +
> + /* Set vendor offset only if there is vendor data */
> +
> + if (Resource->Data.Gpio.VendorLength)
> + {
> + ACPI_SET16 (Target) = (UINT16) AmlLength;
> + }
> +
> + AcpiRsSetResourceLength (AmlLength, Aml);
> + break;
> +
> +
> + case ACPI_RSC_COUNT_SERIAL_VEN:
> +
> + ItemCount = ACPI_GET16 (Source);
> + ACPI_SET16 (Destination) = ItemCount + Info->Value;
> + AmlLength = (UINT16) (AmlLength + ItemCount);
> + AcpiRsSetResourceLength (AmlLength, Aml);
> + break;
> +
> +
> + case ACPI_RSC_COUNT_SERIAL_RES:
> +
> + ItemCount = ACPI_GET16 (Source);
> + AmlLength = (UINT16) (AmlLength + ItemCount);
> + AcpiRsSetResourceLength (AmlLength, Aml);
> + break;
> +
> +
> case ACPI_RSC_LENGTH:
>
> AcpiRsSetResourceLength (Info->Value, Aml);
> @@ -528,6 +748,44 @@ AcpiRsConvertResourceToAml (
> break;
>
>
> + case ACPI_RSC_MOVE_GPIO_PIN:
> +
> + Destination = (char *) ACPI_ADD_PTR (void, Aml,
> + ACPI_GET16 (Destination));
> + Source = * (UINT16 **) Source;
> + AcpiRsMoveData (Destination, Source, ItemCount, Info->Opcode);
> + break;
> +
> +
> + case ACPI_RSC_MOVE_GPIO_RES:
> +
> + /* Used for both ResourceSource string and VendorData */
> +
> + Destination = (char *) ACPI_ADD_PTR (void, Aml,
> + ACPI_GET16 (Destination));
> + Source = * (UINT8 **) Source;
> + AcpiRsMoveData (Destination, Source, ItemCount, Info->Opcode);
> + break;
> +
> +
> + case ACPI_RSC_MOVE_SERIAL_VEN:
> +
> + Destination = (char *) ACPI_ADD_PTR (void, Aml,
> + (AmlLength - ItemCount));
> + Source = * (UINT8 **) Source;
> + AcpiRsMoveData (Destination, Source, ItemCount, Info->Opcode);
> + break;
> +
> +
> + case ACPI_RSC_MOVE_SERIAL_RES:
> +
> + Destination = (char *) ACPI_ADD_PTR (void, Aml,
> + (AmlLength - ItemCount));
> + Source = * (UINT8 **) Source;
> + AcpiRsMoveData (Destination, Source, ItemCount, Info->Opcode);
> + break;
> +
> +
> case ACPI_RSC_ADDRESS:
>
> /* Set the Resource Type, General Flags, and Type-Specific Flags */
> diff --git a/src/acpica/source/components/resources/rsutils.c b/src/acpica/source/components/resources/rsutils.c
> index f3c73f8..ce3143c 100644
> --- a/src/acpica/source/components/resources/rsutils.c
> +++ b/src/acpica/source/components/resources/rsutils.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -245,6 +245,9 @@ AcpiRsMoveData (
> * since there are no alignment or endian issues
> */
> case ACPI_RSC_MOVE8:
> + case ACPI_RSC_MOVE_GPIO_RES:
> + case ACPI_RSC_MOVE_SERIAL_VEN:
> + case ACPI_RSC_MOVE_SERIAL_RES:
> ACPI_MEMCPY (Destination, Source, ItemCount);
> return;
>
> @@ -254,6 +257,7 @@ AcpiRsMoveData (
> * misaligned memory transfers
> */
> case ACPI_RSC_MOVE16:
> + case ACPI_RSC_MOVE_GPIO_PIN:
> ACPI_MOVE_16_TO_16 (&ACPI_CAST_PTR (UINT16, Destination)[i],
> &ACPI_CAST_PTR (UINT16, Source)[i]);
> break;
> @@ -725,6 +729,61 @@ AcpiRsGetPrsMethodData (
>
> /*******************************************************************************
> *
> + * FUNCTION: AcpiRsGetAeiMethodData
> + *
> + * PARAMETERS: Node - Device node
> + * RetBuffer - Pointer to a buffer structure for the
> + * results
> + *
> + * RETURN: Status
> + *
> + * DESCRIPTION: This function is called to get the _AEI value of an object
> + * contained in an object specified by the handle passed in
> + *
> + * If the function fails an appropriate status will be returned
> + * and the contents of the callers buffer is undefined.
> + *
> + ******************************************************************************/
> +
> +ACPI_STATUS
> +AcpiRsGetAeiMethodData (
> + ACPI_NAMESPACE_NODE *Node,
> + ACPI_BUFFER *RetBuffer)
> +{
> + ACPI_OPERAND_OBJECT *ObjDesc;
> + ACPI_STATUS Status;
> +
> +
> + ACPI_FUNCTION_TRACE (RsGetAeiMethodData);
> +
> +
> + /* Parameters guaranteed valid by caller */
> +
> + /* Execute the method, no parameters */
> +
> + Status = AcpiUtEvaluateObject (Node, METHOD_NAME__AEI,
> + ACPI_BTYPE_BUFFER, &ObjDesc);
> + if (ACPI_FAILURE (Status))
> + {
> + return_ACPI_STATUS (Status);
> + }
> +
> + /*
> + * Make the call to create a resource linked list from the
> + * byte stream buffer that comes back from the _CRS method
> + * execution.
> + */
> + Status = AcpiRsCreateResourceList (ObjDesc, RetBuffer);
> +
> + /* On exit, we must delete the object returned by evaluateObject */
> +
> + AcpiUtRemoveReference (ObjDesc);
> + return_ACPI_STATUS (Status);
> +}
> +
> +
> +/*******************************************************************************
> + *
> * FUNCTION: AcpiRsGetMethodData
> *
> * PARAMETERS: Handle - Handle to the containing object
> diff --git a/src/acpica/source/components/resources/rsxface.c b/src/acpica/source/components/resources/rsxface.c
> index 6646ef1..db3b5a9 100644
> --- a/src/acpica/source/components/resources/rsxface.c
> +++ b/src/acpica/source/components/resources/rsxface.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -423,6 +423,52 @@ AcpiSetCurrentResources (
> ACPI_EXPORT_SYMBOL (AcpiSetCurrentResources)
>
>
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiGetEventResources
> + *
> + * PARAMETERS: DeviceHandle - Handle to the device object for the
> + * device we are getting resources
> + * InBuffer - Pointer to a buffer containing the
> + * resources to be set for the device
> + *
> + * RETURN: Status
> + *
> + * DESCRIPTION: This function is called to get the event resources for a
> + * specific device. The caller must first acquire a handle for
> + * the desired device. The resource data is passed to the routine
> + * the buffer pointed to by the InBuffer variable. Uses the
> + * _AEI method.
> + *
> + ******************************************************************************/
> +
> +ACPI_STATUS
> +AcpiGetEventResources (
> + ACPI_HANDLE DeviceHandle,
> + ACPI_BUFFER *RetBuffer)
> +{
> + ACPI_STATUS Status;
> + ACPI_NAMESPACE_NODE *Node;
> +
> +
> + ACPI_FUNCTION_TRACE (AcpiGetEventResources);
> +
> +
> + /* Validate parameters then dispatch to internal routine */
> +
> + Status = AcpiRsValidateParameters (DeviceHandle, RetBuffer, &Node);
> + if (ACPI_FAILURE (Status))
> + {
> + return_ACPI_STATUS (Status);
> + }
> +
> + Status = AcpiRsGetAeiMethodData (Node, RetBuffer);
> + return_ACPI_STATUS (Status);
> +}
> +
> +ACPI_EXPORT_SYMBOL (AcpiGetEventResources)
> +
> +
> /******************************************************************************
> *
> * FUNCTION: AcpiResourceToAddress64
> @@ -616,8 +662,9 @@ AcpiRsMatchVendorResource (
> *
> * PARAMETERS: DeviceHandle - Handle to the device object for the
> * device we are querying
> - * Name - Method name of the resources we want
> - * (METHOD_NAME__CRS or METHOD_NAME__PRS)
> + * Name - Method name of the resources we want.
> + * (METHOD_NAME__CRS, METHOD_NAME__PRS, or
> + * METHOD_NAME__AEI)
> * UserFunction - Called for each resource
> * Context - Passed to UserFunction
> *
> @@ -649,12 +696,13 @@ AcpiWalkResources (
>
> if (!DeviceHandle || !UserFunction || !Name ||
> (!ACPI_COMPARE_NAME (Name, METHOD_NAME__CRS) &&
> - !ACPI_COMPARE_NAME (Name, METHOD_NAME__PRS)))
> + !ACPI_COMPARE_NAME (Name, METHOD_NAME__PRS) &&
> + !ACPI_COMPARE_NAME (Name, METHOD_NAME__AEI)))
> {
> return_ACPI_STATUS (AE_BAD_PARAMETER);
> }
>
> - /* Get the _CRS or _PRS resource list */
> + /* Get the _CRS/_PRS/_AEI resource list */
>
> Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER;
> Status = AcpiRsGetMethodData (DeviceHandle, Name, &Buffer);
> diff --git a/src/acpica/source/components/tables/tbfadt.c b/src/acpica/source/components/tables/tbfadt.c
> index fae6428..fa43dbb 100644
> --- a/src/acpica/source/components/tables/tbfadt.c
> +++ b/src/acpica/source/components/tables/tbfadt.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -149,14 +149,15 @@ AcpiTbSetupFadtRegisters (
> typedef struct acpi_fadt_info
> {
> char *Name;
> - UINT8 Address64;
> - UINT8 Address32;
> - UINT8 Length;
> + UINT16 Address64;
> + UINT16 Address32;
> + UINT16 Length;
> UINT8 DefaultLength;
> UINT8 Type;
>
> } ACPI_FADT_INFO;
>
> +#define ACPI_FADT_OPTIONAL 0
> #define ACPI_FADT_REQUIRED 1
> #define ACPI_FADT_SEPARATE_LENGTH 2
>
> @@ -174,7 +175,7 @@ static ACPI_FADT_INFO FadtInfoTable[] =
> ACPI_FADT_OFFSET (Pm1bEventBlock),
> ACPI_FADT_OFFSET (Pm1EventLength),
> ACPI_PM1_REGISTER_WIDTH * 2, /* Enable + Status register */
> - 0},
> + ACPI_FADT_OPTIONAL},
>
> {"Pm1aControlBlock",
> ACPI_FADT_OFFSET (XPm1aControlBlock),
> @@ -188,7 +189,7 @@ static ACPI_FADT_INFO FadtInfoTable[] =
> ACPI_FADT_OFFSET (Pm1bControlBlock),
> ACPI_FADT_OFFSET (Pm1ControlLength),
> ACPI_PM1_REGISTER_WIDTH,
> - 0},
> + ACPI_FADT_OPTIONAL},
>
> {"Pm2ControlBlock",
> ACPI_FADT_OFFSET (XPm2ControlBlock),
> @@ -228,7 +229,7 @@ static ACPI_FADT_INFO FadtInfoTable[] =
> typedef struct acpi_fadt_pm_info
> {
> ACPI_GENERIC_ADDRESS *Target;
> - UINT8 Source;
> + UINT16 Source;
> UINT8 RegisterNum;
>
> } ACPI_FADT_PM_INFO;
> @@ -352,8 +353,13 @@ AcpiTbParseFadt (
> AcpiTbInstallTable ((ACPI_PHYSICAL_ADDRESS) AcpiGbl_FADT.XDsdt,
> ACPI_SIG_DSDT, ACPI_TABLE_INDEX_DSDT);
>
> - AcpiTbInstallTable ((ACPI_PHYSICAL_ADDRESS) AcpiGbl_FADT.XFacs,
> - ACPI_SIG_FACS, ACPI_TABLE_INDEX_FACS);
> + /* If Hardware Reduced flag is set, there is no FACS */
> +
> + if (!AcpiGbl_ReducedHardware)
> + {
> + AcpiTbInstallTable ((ACPI_PHYSICAL_ADDRESS) AcpiGbl_FADT.XFacs,
> + ACPI_SIG_FACS, ACPI_TABLE_INDEX_FACS);
> + }
> }
>
>
> @@ -381,13 +387,13 @@ AcpiTbCreateLocalFadt (
>
> /*
> * Check if the FADT is larger than the largest table that we expect
> - * (the ACPI 2.0/3.0 version). If so, truncate the table, and issue
> + * (the ACPI 5.0 version). If so, truncate the table, and issue
> * a warning.
> */
> if (Length > sizeof (ACPI_TABLE_FADT))
> {
> ACPI_WARNING ((AE_INFO,
> - "FADT (revision %u) is longer than ACPI 2.0 version, "
> + "FADT (revision %u) is longer than ACPI 5.0 version, "
> "truncating length %u to %u",
> Table->Revision, Length, (UINT32) sizeof (ACPI_TABLE_FADT)));
> }
> @@ -401,6 +407,14 @@ AcpiTbCreateLocalFadt (
> ACPI_MEMCPY (&AcpiGbl_FADT, Table,
> ACPI_MIN (Length, sizeof (ACPI_TABLE_FADT)));
>
> + /* Take a copy of the Hardware Reduced flag */
> +
> + AcpiGbl_ReducedHardware = FALSE;
> + if (AcpiGbl_FADT.Flags & ACPI_FADT_HW_REDUCED)
> + {
> + AcpiGbl_ReducedHardware = TRUE;
> + }
> +
> /* Convert the local copy of the FADT to the common internal format */
>
> AcpiTbConvertFadt ();
> @@ -458,10 +472,6 @@ AcpiTbConvertFadt (
> UINT32 i;
>
>
> - /* Update the local FADT table header length */
> -
> - AcpiGbl_FADT.Header.Length = sizeof (ACPI_TABLE_FADT);
> -
> /*
> * Expand the 32-bit FACS and DSDT addresses to 64-bit as necessary.
> * Later code will always use the X 64-bit field.
> @@ -495,6 +505,13 @@ AcpiTbConvertFadt (
> }
>
> /*
> + * Now we can update the local FADT length to the length of the
> + * current FADT version as defined by the ACPI specification.
> + * Thus, we will have a common FADT internally.
> + */
> + AcpiGbl_FADT.Header.Length = sizeof (ACPI_TABLE_FADT);
> +
> + /*
> * Expand the ACPI 1.0 32-bit addresses to the ACPI 2.0 64-bit "X"
> * generic address structures as necessary. Later code will always use
> * the 64-bit address structures.
> @@ -602,6 +619,13 @@ AcpiTbValidateFadt (
> AcpiGbl_FADT.XDsdt = (UINT64) AcpiGbl_FADT.Dsdt;
> }
>
> + /* If Hardware Reduced flag is set, we are all done */
> +
> + if (AcpiGbl_ReducedHardware)
> + {
> + return;
> + }
> +
> /* Examine all of the 64-bit extended address fields (X fields) */
>
> for (i = 0; i < ACPI_FADT_INFO_ENTRIES; i++)
> diff --git a/src/acpica/source/components/tables/tbfind.c b/src/acpica/source/components/tables/tbfind.c
> index 48ef817..65c52b7 100644
> --- a/src/acpica/source/components/tables/tbfind.c
> +++ b/src/acpica/source/components/tables/tbfind.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/tables/tbinstal.c b/src/acpica/source/components/tables/tbinstal.c
> index da3ccf4..00fd2a2 100644
> --- a/src/acpica/source/components/tables/tbinstal.c
> +++ b/src/acpica/source/components/tables/tbinstal.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -200,7 +200,6 @@ AcpiTbAddTable (
> {
> UINT32 i;
> ACPI_STATUS Status = AE_OK;
> - ACPI_TABLE_HEADER *OverrideTable = NULL;
>
>
> ACPI_FUNCTION_TRACE (TbAddTable);
> @@ -314,26 +313,10 @@ AcpiTbAddTable (
> /*
> * ACPI Table Override:
> * Allow the host to override dynamically loaded tables.
> + * NOTE: the table is fully mapped at this point, and the mapping will
> + * be deleted by TbTableOverride if the table is actually overridden.
> */
> - Status = AcpiOsTableOverride (TableDesc->Pointer, &OverrideTable);
> - if (ACPI_SUCCESS (Status) && OverrideTable)
> - {
> - ACPI_INFO ((AE_INFO,
> - "%4.4s @ 0x%p Table override, replaced with:",
> - TableDesc->Pointer->Signature,
> - ACPI_CAST_PTR (void, TableDesc->Address)));
> -
> - /* We can delete the table that was passed as a parameter */
> -
> - AcpiTbDeleteTable (TableDesc);
> -
> - /* Setup descriptor for the new table */
> -
> - TableDesc->Address = ACPI_PTR_TO_PHYSADDR (OverrideTable);
> - TableDesc->Pointer = OverrideTable;
> - TableDesc->Length = OverrideTable->Length;
> - TableDesc->Flags = ACPI_TABLE_ORIGIN_OVERRIDE;
> - }
> + (void) AcpiTbTableOverride (TableDesc->Pointer, TableDesc);
>
> /* Add the table to the global root table list */
>
> @@ -355,6 +338,98 @@ Release:
>
> /*******************************************************************************
> *
> + * FUNCTION: AcpiTbTableOverride
> + *
> + * PARAMETERS: TableHeader - Header for the original table
> + * TableDesc - Table descriptor initialized for the
> + * original table. May or may not be mapped.
> + *
> + * RETURN: Pointer to the entire new table. NULL if table not overridden.
> + * If overridden, installs the new table within the input table
> + * descriptor.
> + *
> + * DESCRIPTION: Attempt table override by calling the OSL override functions.
> + * Note: If the table is overridden, then the entire new table
> + * is mapped and returned by this function.
> + *
> + ******************************************************************************/
> +
> +ACPI_TABLE_HEADER *
> +AcpiTbTableOverride (
> + ACPI_TABLE_HEADER *TableHeader,
> + ACPI_TABLE_DESC *TableDesc)
> +{
> + ACPI_STATUS Status;
> + ACPI_TABLE_HEADER *NewTable = NULL;
> + ACPI_PHYSICAL_ADDRESS NewAddress = 0;
> + UINT32 NewTableLength = 0;
> + UINT8 NewFlags;
> + char *OverrideType;
> +
> +
> + /* (1) Attempt logical override (returns a logical address) */
> +
> + Status = AcpiOsTableOverride (TableHeader, &NewTable);
> + if (ACPI_SUCCESS (Status) && NewTable)
> + {
> + NewAddress = ACPI_PTR_TO_PHYSADDR (NewTable);
> + NewTableLength = NewTable->Length;
> + NewFlags = ACPI_TABLE_ORIGIN_OVERRIDE;
> + OverrideType = "Logical";
> + goto FinishOverride;
> + }
> +
> + /* (2) Attempt physical override (returns a physical address) */
> +
> + Status = AcpiOsPhysicalTableOverride (TableHeader,
> + &NewAddress, &NewTableLength);
> + if (ACPI_SUCCESS (Status) && NewAddress && NewTableLength)
> + {
> + /* Map the entire new table */
> +
> + NewTable = AcpiOsMapMemory (NewAddress, NewTableLength);
> + if (!NewTable)
> + {
> + ACPI_EXCEPTION ((AE_INFO, AE_NO_MEMORY,
> + "%4.4s %p Attempted physical table override failed",
> + TableHeader->Signature,
> + ACPI_CAST_PTR (void, TableDesc->Address)));
> + return (NULL);
> + }
> +
> + OverrideType = "Physical";
> + NewFlags = ACPI_TABLE_ORIGIN_MAPPED;
> + goto FinishOverride;
> + }
> +
> + return (NULL); /* There was no override */
> +
> +
> +FinishOverride:
> +
> + ACPI_INFO ((AE_INFO,
> + "%4.4s %p %s table override, new table: %p",
> + TableHeader->Signature,
> + ACPI_CAST_PTR (void, TableDesc->Address),
> + OverrideType, NewTable));
> +
> + /* We can now unmap/delete the original table (if fully mapped) */
> +
> + AcpiTbDeleteTable (TableDesc);
> +
> + /* Setup descriptor for the new table */
> +
> + TableDesc->Address = NewAddress;
> + TableDesc->Pointer = NewTable;
> + TableDesc->Length = NewTableLength;
> + TableDesc->Flags = NewFlags;
> +
> + return (NewTable);
> +}
> +
> +
> +/*******************************************************************************
> + *
> * FUNCTION: AcpiTbResizeRootTableList
> *
> * PARAMETERS: None
> @@ -507,8 +582,10 @@ AcpiTbDeleteTable (
> ACPI_FREE (TableDesc->Pointer);
> break;
>
> + /* Not mapped or allocated, there is nothing we can do */
> +
> default:
> - break;
> + return;
> }
>
> TableDesc->Pointer = NULL;
> diff --git a/src/acpica/source/components/tables/tbutils.c b/src/acpica/source/components/tables/tbutils.c
> index 3cb3cc2..4ad777c 100644
> --- a/src/acpica/source/components/tables/tbutils.c
> +++ b/src/acpica/source/components/tables/tbutils.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -122,6 +122,7 @@
> #define _COMPONENT ACPI_TABLES
> ACPI_MODULE_NAME ("tbutils")
>
> +
> /* Local prototypes */
>
> static void
> @@ -140,6 +141,7 @@ AcpiTbGetRootTableEntry (
> UINT32 TableEntrySize);
>
>
> +#if (!ACPI_REDUCED_HARDWARE)
> /*******************************************************************************
> *
> * FUNCTION: AcpiTbInitializeFacs
> @@ -160,10 +162,19 @@ AcpiTbInitializeFacs (
> ACPI_STATUS Status;
>
>
> + /* If Hardware Reduced flag is set, there is no FACS */
> +
> + if (AcpiGbl_ReducedHardware)
> + {
> + AcpiGbl_FACS = NULL;
> + return (AE_OK);
> + }
> +
> Status = AcpiGetTableByIndex (ACPI_TABLE_INDEX_FACS,
> ACPI_CAST_INDIRECT_PTR (ACPI_TABLE_HEADER, &AcpiGbl_FACS));
> return (Status);
> }
> +#endif /* !ACPI_REDUCED_HARDWARE */
>
>
> /*******************************************************************************
> @@ -487,7 +498,7 @@ AcpiTbCopyDsdt (
> * RETURN: None
> *
> * DESCRIPTION: Install an ACPI table into the global data structure. The
> - * table override mechanism is implemented here to allow the host
> + * table override mechanism is called to allow the host
> * OS to replace any table before it is installed in the root
> * table array.
> *
> @@ -499,11 +510,9 @@ AcpiTbInstallTable (
> char *Signature,
> UINT32 TableIndex)
> {
> - UINT8 Flags;
> - ACPI_STATUS Status;
> - ACPI_TABLE_HEADER *TableToInstall;
> - ACPI_TABLE_HEADER *MappedTable;
> - ACPI_TABLE_HEADER *OverrideTable = NULL;
> + ACPI_TABLE_HEADER *Table;
> + ACPI_TABLE_HEADER *FinalTable;
> + ACPI_TABLE_DESC *TableDesc;
>
>
> if (!Address)
> @@ -515,70 +524,84 @@ AcpiTbInstallTable (
>
> /* Map just the table header */
>
> - MappedTable = AcpiOsMapMemory (Address, sizeof (ACPI_TABLE_HEADER));
> - if (!MappedTable)
> + Table = AcpiOsMapMemory (Address, sizeof (ACPI_TABLE_HEADER));
> + if (!Table)
> {
> + ACPI_ERROR ((AE_INFO, "Could not map memory for table [%s] at %p",
> + Signature, ACPI_CAST_PTR (void, Address)));
> return;
> }
>
> /* If a particular signature is expected (DSDT/FACS), it must match */
>
> if (Signature &&
> - !ACPI_COMPARE_NAME (MappedTable->Signature, Signature))
> + !ACPI_COMPARE_NAME (Table->Signature, Signature))
> {
> ACPI_ERROR ((AE_INFO,
> "Invalid signature 0x%X for ACPI table, expected [%s]",
> - *ACPI_CAST_PTR (UINT32, MappedTable->Signature), Signature));
> + *ACPI_CAST_PTR (UINT32, Table->Signature), Signature));
> goto UnmapAndExit;
> }
>
> /*
> + * Initialize the table entry. Set the pointer to NULL, since the
> + * table is not fully mapped at this time.
> + */
> + TableDesc = &AcpiGbl_RootTableList.Tables[TableIndex];
> +
> + TableDesc->Address = Address;
> + TableDesc->Pointer = NULL;
> + TableDesc->Length = Table->Length;
> + TableDesc->Flags = ACPI_TABLE_ORIGIN_MAPPED;
> + ACPI_MOVE_32_TO_32 (TableDesc->Signature.Ascii, Table->Signature);
> +
> + /*
> * ACPI Table Override:
> *
> * Before we install the table, let the host OS override it with a new
> * one if desired. Any table within the RSDT/XSDT can be replaced,
> * including the DSDT which is pointed to by the FADT.
> + *
> + * NOTE: If the table is overridden, then FinalTable will contain a
> + * mapped pointer to the full new table. If the table is not overridden,
> + * or if there has been a physical override, then the table will be
> + * fully mapped later (in verify table). In any case, we must
> + * unmap the header that was mapped above.
> */
> - Status = AcpiOsTableOverride (MappedTable, &OverrideTable);
> - if (ACPI_SUCCESS (Status) && OverrideTable)
> + FinalTable = AcpiTbTableOverride (Table, TableDesc);
> + if (!FinalTable)
> {
> - ACPI_INFO ((AE_INFO,
> - "%4.4s @ 0x%p Table override, replaced with:",
> - MappedTable->Signature, ACPI_CAST_PTR (void, Address)));
> -
> - AcpiGbl_RootTableList.Tables[TableIndex].Pointer = OverrideTable;
> - Address = ACPI_PTR_TO_PHYSADDR (OverrideTable);
> -
> - TableToInstall = OverrideTable;
> - Flags = ACPI_TABLE_ORIGIN_OVERRIDE;
> - }
> - else
> - {
> - TableToInstall = MappedTable;
> - Flags = ACPI_TABLE_ORIGIN_MAPPED;
> + FinalTable = Table; /* There was no override */
> }
>
> - /* Initialize the table entry */
> -
> - AcpiGbl_RootTableList.Tables[TableIndex].Address = Address;
> - AcpiGbl_RootTableList.Tables[TableIndex].Length = TableToInstall->Length;
> - AcpiGbl_RootTableList.Tables[TableIndex].Flags = Flags;
> -
> - ACPI_MOVE_32_TO_32 (
> - &(AcpiGbl_RootTableList.Tables[TableIndex].Signature),
> - TableToInstall->Signature);
> + AcpiTbPrintTableHeader (TableDesc->Address, FinalTable);
>
> - AcpiTbPrintTableHeader (Address, TableToInstall);
> + /* Set the global integer width (based upon revision of the DSDT) */
>
> if (TableIndex == ACPI_TABLE_INDEX_DSDT)
> {
> - /* Global integer width is based upon revision of the DSDT */
> + AcpiUtSetIntegerWidth (FinalTable->Revision);
> + }
>
> - AcpiUtSetIntegerWidth (TableToInstall->Revision);
> + /*
> + * If we have a physical override during this early loading of the ACPI
> + * tables, unmap the table for now. It will be mapped again later when
> + * it is actually used. This supports very early loading of ACPI tables,
> + * before virtual memory is fully initialized and running within the
> + * host OS. Note: A logical override has the ACPI_TABLE_ORIGIN_OVERRIDE
> + * flag set and will not be deleted below.
> + */
> + if (FinalTable != Table)
> + {
> + AcpiTbDeleteTable (TableDesc);
> }
>
> +
> UnmapAndExit:
> - AcpiOsUnmapMemory (MappedTable, sizeof (ACPI_TABLE_HEADER));
> +
> + /* Always unmap the table header that we mapped above */
> +
> + AcpiOsUnmapMemory (Table, sizeof (ACPI_TABLE_HEADER));
> }
>
>
> diff --git a/src/acpica/source/components/tables/tbxface.c b/src/acpica/source/components/tables/tbxface.c
> index 507ea0b..860dc2e 100644
> --- a/src/acpica/source/components/tables/tbxface.c
> +++ b/src/acpica/source/components/tables/tbxface.c
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/tables/tbxfroot.c b/src/acpica/source/components/tables/tbxfroot.c
> index 7319a18..e85c1fd 100644
> --- a/src/acpica/source/components/tables/tbxfroot.c
> +++ b/src/acpica/source/components/tables/tbxfroot.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/utilities/utalloc.c b/src/acpica/source/components/utilities/utalloc.c
> index 7a276f8..6633d87 100644
> --- a/src/acpica/source/components/utilities/utalloc.c
> +++ b/src/acpica/source/components/utilities/utalloc.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/utilities/utcache.c b/src/acpica/source/components/utilities/utcache.c
> index ba13101..fa1168d 100644
> --- a/src/acpica/source/components/utilities/utcache.c
> +++ b/src/acpica/source/components/utilities/utcache.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/utilities/utcopy.c b/src/acpica/source/components/utilities/utcopy.c
> index 64484ad..0265a0b 100644
> --- a/src/acpica/source/components/utilities/utcopy.c
> +++ b/src/acpica/source/components/utilities/utcopy.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/utilities/utdebug.c b/src/acpica/source/components/utilities/utdebug.c
> index b21f07f..03e331b 100644
> --- a/src/acpica/source/components/utilities/utdebug.c
> +++ b/src/acpica/source/components/utilities/utdebug.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/utilities/utdecode.c b/src/acpica/source/components/utilities/utdecode.c
> index 94b53d8..b36aa45 100644
> --- a/src/acpica/source/components/utilities/utdecode.c
> +++ b/src/acpica/source/components/utilities/utdecode.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -259,7 +259,9 @@ const char *AcpiGbl_RegionTypes[ACPI_NUM_PREDEFINED_REGIONS] =
> "SMBus",
> "SystemCMOS",
> "PCIBARTarget",
> - "IPMI"
> + "IPMI",
> + "GeneralPurposeIo",
> + "GenericSerialBus"
> };
>
>
> @@ -637,20 +639,21 @@ AcpiUtGetMutexName (
>
> /* Names for Notify() values, used for debug output */
>
> -static const char *AcpiGbl_NotifyValueNames[] =
> +static const char *AcpiGbl_NotifyValueNames[ACPI_NOTIFY_MAX + 1] =
> {
> - "Bus Check",
> - "Device Check",
> - "Device Wake",
> - "Eject Request",
> - "Device Check Light",
> - "Frequency Mismatch",
> - "Bus Mode Mismatch",
> - "Power Fault",
> - "Capabilities Check",
> - "Device PLD Check",
> - "Reserved",
> - "System Locality Update"
> + /* 00 */ "Bus Check",
> + /* 01 */ "Device Check",
> + /* 02 */ "Device Wake",
> + /* 03 */ "Eject Request",
> + /* 04 */ "Device Check Light",
> + /* 05 */ "Frequency Mismatch",
> + /* 06 */ "Bus Mode Mismatch",
> + /* 07 */ "Power Fault",
> + /* 08 */ "Capabilities Check",
> + /* 09 */ "Device PLD Check",
> + /* 10 */ "Reserved",
> + /* 11 */ "System Locality Update",
> + /* 12 */ "Shutdown Request"
> };
>
> const char *
> @@ -666,9 +669,13 @@ AcpiUtGetNotifyName (
> {
> return ("Reserved");
> }
> - else /* Greater or equal to 0x80 */
> + else if (NotifyValue <= ACPI_MAX_DEVICE_SPECIFIC_NOTIFY)
> {
> - return ("**Device Specific**");
> + return ("Device Specific");
> + }
> + else
> + {
> + return ("Hardware Specific");
> }
> }
> #endif
> diff --git a/src/acpica/source/components/utilities/utdelete.c b/src/acpica/source/components/utilities/utdelete.c
> index 801f957..3130e6d 100644
> --- a/src/acpica/source/components/utilities/utdelete.c
> +++ b/src/acpica/source/components/utilities/utdelete.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -307,6 +307,16 @@ AcpiUtDeleteInternalObj (
> ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS,
> "***** Region %p\n", Object));
>
> + /*
> + * Update AddressRange list. However, only permanent regions
> + * are installed in this list. (Not created within a method)
> + */
> + if (!(Object->Region.Node->Flags & ANOBJ_TEMPORARY))
> + {
> + AcpiUtRemoveAddressRange (Object->Region.SpaceId,
> + Object->Region.Node);
> + }
> +
> SecondDesc = AcpiNsGetSecondaryObject (Object);
> if (SecondDesc)
> {
> diff --git a/src/acpica/source/components/utilities/uteval.c b/src/acpica/source/components/utilities/uteval.c
> index eeaaebb..0292c05 100644
> --- a/src/acpica/source/components/utilities/uteval.c
> +++ b/src/acpica/source/components/utilities/uteval.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/utilities/utglobal.c b/src/acpica/source/components/utilities/utglobal.c
> index 30da582..8ebbaec 100644
> --- a/src/acpica/source/components/utilities/utglobal.c
> +++ b/src/acpica/source/components/utilities/utglobal.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -227,6 +227,7 @@ const ACPI_PREDEFINED_NAMES AcpiGbl_PreDefinedNames[] =
> };
>
>
> +#if (!ACPI_REDUCED_HARDWARE)
> /******************************************************************************
> *
> * Event and Hardware globals
> @@ -271,6 +272,7 @@ ACPI_FIXED_EVENT_INFO AcpiGbl_FixedEventInfo[ACPI_NUM_FIXED_EVENTS] =
> /* ACPI_EVENT_SLEEP_BUTTON */ {ACPI_BITREG_SLEEP_BUTTON_STATUS, ACPI_BITREG_SLEEP_BUTTON_ENABLE, ACPI_BITMASK_SLEEP_BUTTON_STATUS, ACPI_BITMASK_SLEEP_BUTTON_ENABLE},
> /* ACPI_EVENT_RTC */ {ACPI_BITREG_RT_CLOCK_STATUS, ACPI_BITREG_RT_CLOCK_ENABLE, ACPI_BITMASK_RT_CLOCK_STATUS, ACPI_BITMASK_RT_CLOCK_ENABLE},
> };
> +#endif /* !ACPI_REDUCED_HARDWARE */
>
>
> /*******************************************************************************
> @@ -305,6 +307,13 @@ AcpiUtInitGlobals (
> return_ACPI_STATUS (Status);
> }
>
> + /* Address Range lists */
> +
> + for (i = 0; i < ACPI_ADDRESS_RANGE_MAX; i++)
> + {
> + AcpiGbl_AddressRangeList[i] = NULL;
> + }
> +
> /* Mutex locked flags */
>
> for (i = 0; i < ACPI_NUM_MUTEX; i++)
> @@ -334,6 +343,8 @@ AcpiUtInitGlobals (
> AcpiFixedEventCount[i] = 0;
> }
>
> +#if (!ACPI_REDUCED_HARDWARE)
> +
> /* GPE support */
>
> AcpiGbl_AllGpesInitialized = FALSE;
> @@ -342,6 +353,10 @@ AcpiUtInitGlobals (
> AcpiGbl_GpeFadtBlocks[1] = NULL;
> AcpiCurrentGpeCount = 0;
>
> + AcpiGbl_GlobalEventHandler = NULL;
> +
> +#endif /* !ACPI_REDUCED_HARDWARE */
> +
> /* Global handlers */
>
> AcpiGbl_SystemNotify.Handler = NULL;
> @@ -350,7 +365,6 @@ AcpiUtInitGlobals (
> AcpiGbl_InitHandler = NULL;
> AcpiGbl_TableHandler = NULL;
> AcpiGbl_InterfaceHandler = NULL;
> - AcpiGbl_GlobalEventHandler = NULL;
>
> /* Global Lock support */
>
> diff --git a/src/acpica/source/components/utilities/utids.c b/src/acpica/source/components/utilities/utids.c
> index c24541d..6ef73c9 100644
> --- a/src/acpica/source/components/utilities/utids.c
> +++ b/src/acpica/source/components/utilities/utids.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/utilities/utinit.c b/src/acpica/source/components/utilities/utinit.c
> index 9e06711..9b52755 100644
> --- a/src/acpica/source/components/utilities/utinit.c
> +++ b/src/acpica/source/components/utilities/utinit.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -130,21 +130,33 @@
> static void AcpiUtTerminate (
> void);
>
> +#if (!ACPI_REDUCED_HARDWARE)
>
> +static void
> +AcpiUtFreeGpeLists (
> + void);
> +
> +#else
> +
> +#define AcpiUtFreeGpeLists()
> +#endif /* !ACPI_REDUCED_HARDWARE */
> +
> +
> +#if (!ACPI_REDUCED_HARDWARE)
> /******************************************************************************
> *
> - * FUNCTION: AcpiUtTerminate
> + * FUNCTION: AcpiUtFreeGpeLists
> *
> * PARAMETERS: none
> *
> * RETURN: none
> *
> - * DESCRIPTION: Free global memory
> + * DESCRIPTION: Free global GPE lists
> *
> ******************************************************************************/
>
> static void
> -AcpiUtTerminate (
> +AcpiUtFreeGpeLists (
> void)
> {
> ACPI_GPE_BLOCK_INFO *GpeBlock;
> @@ -153,9 +165,6 @@ AcpiUtTerminate (
> ACPI_GPE_XRUPT_INFO *NextGpeXruptInfo;
>
>
> - ACPI_FUNCTION_TRACE (UtTerminate);
> -
> -
> /* Free global GPE blocks and related info structures */
>
> GpeXruptInfo = AcpiGbl_GpeXruptListHead;
> @@ -175,7 +184,30 @@ AcpiUtTerminate (
> ACPI_FREE (GpeXruptInfo);
> GpeXruptInfo = NextGpeXruptInfo;
> }
> +}
> +#endif /* !ACPI_REDUCED_HARDWARE */
> +
> +
> +/******************************************************************************
> + *
> + * FUNCTION: AcpiUtTerminate
> + *
> + * PARAMETERS: none
> + *
> + * RETURN: none
> + *
> + * DESCRIPTION: Free global memory
> + *
> + ******************************************************************************/
> +
> +static void
> +AcpiUtTerminate (
> + void)
> +{
> + ACPI_FUNCTION_TRACE (UtTerminate);
>
> + AcpiUtFreeGpeLists ();
> + AcpiUtDeleteAddressLists ();
> return_VOID;
> }
>
> diff --git a/src/acpica/source/components/utilities/utlock.c b/src/acpica/source/components/utilities/utlock.c
> index 6e68ec0..a09857f 100644
> --- a/src/acpica/source/components/utilities/utlock.c
> +++ b/src/acpica/source/components/utilities/utlock.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/utilities/utmath.c b/src/acpica/source/components/utilities/utmath.c
> index 5c6d20e..06665e0 100644
> --- a/src/acpica/source/components/utilities/utmath.c
> +++ b/src/acpica/source/components/utilities/utmath.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/utilities/utmisc.c b/src/acpica/source/components/utilities/utmisc.c
> index d379a22..44dd533 100644
> --- a/src/acpica/source/components/utilities/utmisc.c
> +++ b/src/acpica/source/components/utilities/utmisc.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -538,6 +538,44 @@ AcpiUtStrlwr (
>
> return;
> }
> +
> +
> +/******************************************************************************
> + *
> + * FUNCTION: AcpiUtStricmp
> + *
> + * PARAMETERS: String1 - first string to compare
> + * String2 - second string to compare
> + *
> + * RETURN: int that signifies string relationship. Zero means strings
> + * are equal.
> + *
> + * DESCRIPTION: Implementation of the non-ANSI stricmp function (compare
> + * strings with no case sensitivity)
> + *
> + ******************************************************************************/
> +
> +int
> +AcpiUtStricmp (
> + char *String1,
> + char *String2)
> +{
> + int c1;
> + int c2;
> +
> +
> + do
> + {
> + c1 = tolower ((int) *String1);
> + c2 = tolower ((int) *String2);
> +
> + String1++;
> + String2++;
> + }
> + while ((c1 == c2) && (c1));
> +
> + return (c1 - c2);
> +}
> #endif
>
>
> diff --git a/src/acpica/source/components/utilities/utmutex.c b/src/acpica/source/components/utilities/utmutex.c
> index 01a2422..0ddfb36 100644
> --- a/src/acpica/source/components/utilities/utmutex.c
> +++ b/src/acpica/source/components/utilities/utmutex.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -407,15 +407,10 @@ ACPI_STATUS
> AcpiUtReleaseMutex (
> ACPI_MUTEX_HANDLE MutexId)
> {
> - ACPI_THREAD_ID ThisThreadId;
> -
> -
> ACPI_FUNCTION_NAME (UtReleaseMutex);
>
> -
> - ThisThreadId = AcpiOsGetThreadId ();
> ACPI_DEBUG_PRINT ((ACPI_DB_MUTEX, "Thread %u releasing Mutex [%s]\n",
> - (UINT32) ThisThreadId, AcpiUtGetMutexName (MutexId)));
> + (UINT32) AcpiOsGetThreadId (), AcpiUtGetMutexName (MutexId)));
>
> if (MutexId > ACPI_MAX_MUTEX)
> {
> @@ -446,7 +441,7 @@ AcpiUtReleaseMutex (
> */
> for (i = MutexId; i < ACPI_NUM_MUTEX; i++)
> {
> - if (AcpiGbl_MutexInfo[i].ThreadId == ThisThreadId)
> + if (AcpiGbl_MutexInfo[i].ThreadId == AcpiOsGetThreadId ())
> {
> if (i == MutexId)
> {
> diff --git a/src/acpica/source/components/utilities/utobject.c b/src/acpica/source/components/utilities/utobject.c
> index f62ebe0..ade2980 100644
> --- a/src/acpica/source/components/utilities/utobject.c
> +++ b/src/acpica/source/components/utilities/utobject.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/utilities/utosi.c b/src/acpica/source/components/utilities/utosi.c
> index 2b64d67..9604bd0 100644
> --- a/src/acpica/source/components/utilities/utosi.c
> +++ b/src/acpica/source/components/utilities/utosi.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/utilities/utresrc.c b/src/acpica/source/components/utilities/utresrc.c
> index a6b6d9c..69df740 100644
> --- a/src/acpica/source/components/utilities/utresrc.c
> +++ b/src/acpica/source/components/utilities/utresrc.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -118,7 +118,7 @@
>
> #include "acpi.h"
> #include "accommon.h"
> -#include "amlresrc.h"
> +#include "acresrc.h"
>
>
> #define _COMPONENT ACPI_UTILITIES
> @@ -251,6 +251,154 @@ const char *AcpiGbl_TypDecode[] =
> "TypeF"
> };
>
> +const char *AcpiGbl_PpcDecode[] =
> +{
> + "PullDefault",
> + "PullUp",
> + "PullDown",
> + "PullNone"
> +};
> +
> +const char *AcpiGbl_IorDecode[] =
> +{
> + "IoRestrictionNone",
> + "IoRestrictionInputOnly",
> + "IoRestrictionOutputOnly",
> + "IoRestrictionNoneAndPreserve"
> +};
> +
> +const char *AcpiGbl_DtsDecode[] =
> +{
> + "Width8bit",
> + "Width16bit",
> + "Width32bit",
> + "Width64bit",
> + "Width128bit",
> + "Width256bit",
> +};
> +
> +/* GPIO connection type */
> +
> +const char *AcpiGbl_CtDecode[] =
> +{
> + "Interrupt",
> + "I/O"
> +};
> +
> +/* Serial bus type */
> +
> +const char *AcpiGbl_SbtDecode[] =
> +{
> + "/* UNKNOWN serial bus type */",
> + "I2C",
> + "SPI",
> + "UART"
> +};
> +
> +/* I2C serial bus access mode */
> +
> +const char *AcpiGbl_AmDecode[] =
> +{
> + "AddressingMode7Bit",
> + "AddressingMode10Bit"
> +};
> +
> +/* I2C serial bus slave mode */
> +
> +const char *AcpiGbl_SmDecode[] =
> +{
> + "ControllerInitiated",
> + "DeviceInitiated"
> +};
> +
> +/* SPI serial bus wire mode */
> +
> +const char *AcpiGbl_WmDecode[] =
> +{
> + "FourWireMode",
> + "ThreeWireMode"
> +};
> +
> +/* SPI serial clock phase */
> +
> +const char *AcpiGbl_CphDecode[] =
> +{
> + "ClockPhaseFirst",
> + "ClockPhaseSecond"
> +};
> +
> +/* SPI serial bus clock polarity */
> +
> +const char *AcpiGbl_CpoDecode[] =
> +{
> + "ClockPolarityLow",
> + "ClockPolarityHigh"
> +};
> +
> +/* SPI serial bus device polarity */
> +
> +const char *AcpiGbl_DpDecode[] =
> +{
> + "PolarityLow",
> + "PolarityHigh"
> +};
> +
> +/* UART serial bus endian */
> +
> +const char *AcpiGbl_EdDecode[] =
> +{
> + "LittleEndian",
> + "BigEndian"
> +};
> +
> +/* UART serial bus bits per byte */
> +
> +const char *AcpiGbl_BpbDecode[] =
> +{
> + "DataBitsFive",
> + "DataBitsSix",
> + "DataBitsSeven",
> + "DataBitsEight",
> + "DataBitsNine",
> + "/* UNKNOWN Bits per byte */",
> + "/* UNKNOWN Bits per byte */",
> + "/* UNKNOWN Bits per byte */"
> +};
> +
> +/* UART serial bus stop bits */
> +
> +const char *AcpiGbl_SbDecode[] =
> +{
> + "StopBitsNone",
> + "StopBitsOne",
> + "StopBitsOnePlusHalf",
> + "StopBitsTwo"
> +};
> +
> +/* UART serial bus flow control */
> +
> +const char *AcpiGbl_FcDecode[] =
> +{
> + "FlowControlNone",
> + "FlowControlHardware",
> + "FlowControlXON",
> + "/* UNKNOWN flow control keyword */"
> +};
> +
> +/* UART serial bus parity type */
> +
> +const char *AcpiGbl_PtDecode[] =
> +{
> + "ParityTypeNone",
> + "ParityTypeEven",
> + "ParityTypeOdd",
> + "ParityTypeMark",
> + "ParityTypeSpace",
> + "/* UNKNOWN parity keyword */",
> + "/* UNKNOWN parity keyword */",
> + "/* UNKNOWN parity keyword */"
> +};
> +
> #endif
>
>
> @@ -272,7 +420,7 @@ const UINT8 AcpiGbl_ResourceAmlSizes[] =
> ACPI_AML_SIZE_SMALL (AML_RESOURCE_END_DEPENDENT),
> ACPI_AML_SIZE_SMALL (AML_RESOURCE_IO),
> ACPI_AML_SIZE_SMALL (AML_RESOURCE_FIXED_IO),
> - 0,
> + ACPI_AML_SIZE_SMALL (AML_RESOURCE_FIXED_DMA),
> 0,
> 0,
> 0,
> @@ -292,7 +440,18 @@ const UINT8 AcpiGbl_ResourceAmlSizes[] =
> ACPI_AML_SIZE_LARGE (AML_RESOURCE_ADDRESS16),
> ACPI_AML_SIZE_LARGE (AML_RESOURCE_EXTENDED_IRQ),
> ACPI_AML_SIZE_LARGE (AML_RESOURCE_ADDRESS64),
> - ACPI_AML_SIZE_LARGE (AML_RESOURCE_EXTENDED_ADDRESS64)
> + ACPI_AML_SIZE_LARGE (AML_RESOURCE_EXTENDED_ADDRESS64),
> + ACPI_AML_SIZE_LARGE (AML_RESOURCE_GPIO),
> + 0,
> + ACPI_AML_SIZE_LARGE (AML_RESOURCE_COMMON_SERIALBUS),
> +};
> +
> +const UINT8 AcpiGbl_ResourceAmlSerialBusSizes[] =
> +{
> + 0,
> + ACPI_AML_SIZE_LARGE (AML_RESOURCE_I2C_SERIALBUS),
> + ACPI_AML_SIZE_LARGE (AML_RESOURCE_SPI_SERIALBUS),
> + ACPI_AML_SIZE_LARGE (AML_RESOURCE_UART_SERIALBUS),
> };
>
>
> @@ -310,35 +469,49 @@ static const UINT8 AcpiGbl_ResourceTypes[] =
> 0,
> 0,
> 0,
> - ACPI_SMALL_VARIABLE_LENGTH,
> - ACPI_FIXED_LENGTH,
> - ACPI_SMALL_VARIABLE_LENGTH,
> - ACPI_FIXED_LENGTH,
> - ACPI_FIXED_LENGTH,
> - ACPI_FIXED_LENGTH,
> - 0,
> + ACPI_SMALL_VARIABLE_LENGTH, /* 04 IRQ */
> + ACPI_FIXED_LENGTH, /* 05 DMA */
> + ACPI_SMALL_VARIABLE_LENGTH, /* 06 StartDependentFunctions */
> + ACPI_FIXED_LENGTH, /* 07 EndDependentFunctions */
> + ACPI_FIXED_LENGTH, /* 08 IO */
> + ACPI_FIXED_LENGTH, /* 09 FixedIO */
> + ACPI_FIXED_LENGTH, /* 0A FixedDMA */
> 0,
> 0,
> 0,
> - ACPI_VARIABLE_LENGTH,
> - ACPI_FIXED_LENGTH,
> + ACPI_VARIABLE_LENGTH, /* 0E VendorShort */
> + ACPI_FIXED_LENGTH, /* 0F EndTag */
>
> /* Large descriptors */
>
> 0,
> - ACPI_FIXED_LENGTH,
> - ACPI_FIXED_LENGTH,
> + ACPI_FIXED_LENGTH, /* 01 Memory24 */
> + ACPI_FIXED_LENGTH, /* 02 GenericRegister */
> + 0,
> + ACPI_VARIABLE_LENGTH, /* 04 VendorLong */
> + ACPI_FIXED_LENGTH, /* 05 Memory32 */
> + ACPI_FIXED_LENGTH, /* 06 Memory32Fixed */
> + ACPI_VARIABLE_LENGTH, /* 07 Dword* address */
> + ACPI_VARIABLE_LENGTH, /* 08 Word* address */
> + ACPI_VARIABLE_LENGTH, /* 09 ExtendedIRQ */
> + ACPI_VARIABLE_LENGTH, /* 0A Qword* address */
> + ACPI_FIXED_LENGTH, /* 0B Extended* address */
> + ACPI_VARIABLE_LENGTH, /* 0C Gpio* */
> 0,
> - ACPI_VARIABLE_LENGTH,
> - ACPI_FIXED_LENGTH,
> - ACPI_FIXED_LENGTH,
> - ACPI_VARIABLE_LENGTH,
> - ACPI_VARIABLE_LENGTH,
> - ACPI_VARIABLE_LENGTH,
> - ACPI_VARIABLE_LENGTH,
> - ACPI_FIXED_LENGTH
> + ACPI_VARIABLE_LENGTH /* 0E *SerialBus */
> };
>
> +/*
> + * For the iASL compiler/disassembler, we don't want any error messages
> + * because the disassembler uses the resource validation code to determine
> + * if Buffer objects are actually Resource Templates.
> + */
> +#ifdef ACPI_ASL_COMPILER
> +#define ACPI_RESOURCE_ERROR(plist)
> +#else
> +#define ACPI_RESOURCE_ERROR(plist) ACPI_ERROR(plist)
> +#endif
> +
>
> /*******************************************************************************
> *
> @@ -369,6 +542,7 @@ AcpiUtWalkAmlResources (
> UINT8 ResourceIndex;
> UINT32 Length;
> UINT32 Offset = 0;
> + UINT8 EndTag[2] = {0x79, 0x00};
>
>
> ACPI_FUNCTION_TRACE (UtWalkAmlResources);
> @@ -394,6 +568,10 @@ AcpiUtWalkAmlResources (
> Status = AcpiUtValidateResource (Aml, &ResourceIndex);
> if (ACPI_FAILURE (Status))
> {
> + /*
> + * Exit on failure. Cannot continue because the descriptor length
> + * may be bogus also.
> + */
> return_ACPI_STATUS (Status);
> }
>
> @@ -408,7 +586,7 @@ AcpiUtWalkAmlResources (
> Status = UserFunction (Aml, Length, Offset, ResourceIndex, Context);
> if (ACPI_FAILURE (Status))
> {
> - return (Status);
> + return_ACPI_STATUS (Status);
> }
> }
>
> @@ -443,7 +621,19 @@ AcpiUtWalkAmlResources (
>
> /* Did not find an EndTag descriptor */
>
> - return (AE_AML_NO_RESOURCE_END_TAG);
> + if (UserFunction)
> + {
> + /* Insert an EndTag anyway. AcpiRsGetListLength always leaves room */
> +
> + (void) AcpiUtValidateResource (EndTag, &ResourceIndex);
> + Status = UserFunction (EndTag, 2, Offset, ResourceIndex, Context);
> + if (ACPI_FAILURE (Status))
> + {
> + return_ACPI_STATUS (Status);
> + }
> + }
> +
> + return_ACPI_STATUS (AE_AML_NO_RESOURCE_END_TAG);
> }
>
>
> @@ -468,6 +658,7 @@ AcpiUtValidateResource (
> void *Aml,
> UINT8 *ReturnIndex)
> {
> + AML_RESOURCE *AmlResource;
> UINT8 ResourceType;
> UINT8 ResourceIndex;
> ACPI_RS_LENGTH ResourceLength;
> @@ -492,7 +683,7 @@ AcpiUtValidateResource (
>
> if (ResourceType > ACPI_RESOURCE_NAME_LARGE_MAX)
> {
> - return (AE_AML_INVALID_RESOURCE_TYPE);
> + goto InvalidResource;
> }
>
> /*
> @@ -511,17 +702,18 @@ AcpiUtValidateResource (
> ((ResourceType & ACPI_RESOURCE_NAME_SMALL_MASK) >> 3);
> }
>
> - /* Check validity of the resource type, zero indicates name is invalid */
> -
> + /*
> + * Check validity of the resource type, via AcpiGbl_ResourceTypes. Zero
> + * indicates an invalid resource.
> + */
> if (!AcpiGbl_ResourceTypes[ResourceIndex])
> {
> - return (AE_AML_INVALID_RESOURCE_TYPE);
> + goto InvalidResource;
> }
>
> -
> /*
> - * 2) Validate the ResourceLength field. This ensures that the length
> - * is at least reasonable, and guarantees that it is non-zero.
> + * Validate the ResourceLength field. This ensures that the length
> + * is at least reasonable, and guarantees that it is non-zero.
> */
> ResourceLength = AcpiUtGetResourceLength (Aml);
> MinimumResourceLength = AcpiGbl_ResourceAmlSizes[ResourceIndex];
> @@ -536,7 +728,7 @@ AcpiUtValidateResource (
>
> if (ResourceLength != MinimumResourceLength)
> {
> - return (AE_AML_BAD_RESOURCE_LENGTH);
> + goto BadResourceLength;
> }
> break;
>
> @@ -546,7 +738,7 @@ AcpiUtValidateResource (
>
> if (ResourceLength < MinimumResourceLength)
> {
> - return (AE_AML_BAD_RESOURCE_LENGTH);
> + goto BadResourceLength;
> }
> break;
>
> @@ -557,7 +749,7 @@ AcpiUtValidateResource (
> if ((ResourceLength > MinimumResourceLength) ||
> (ResourceLength < (MinimumResourceLength - 1)))
> {
> - return (AE_AML_BAD_RESOURCE_LENGTH);
> + goto BadResourceLength;
> }
> break;
>
> @@ -565,7 +757,22 @@ AcpiUtValidateResource (
>
> /* Shouldn't happen (because of validation earlier), but be sure */
>
> - return (AE_AML_INVALID_RESOURCE_TYPE);
> + goto InvalidResource;
> + }
> +
> + AmlResource = ACPI_CAST_PTR (AML_RESOURCE, Aml);
> + if (ResourceType == ACPI_RESOURCE_NAME_SERIAL_BUS)
> + {
> + /* Validate the BusType field */
> +
> + if ((AmlResource->CommonSerialBus.Type == 0) ||
> + (AmlResource->CommonSerialBus.Type > AML_RESOURCE_MAX_SERIALBUSTYPE))
> + {
> + ACPI_RESOURCE_ERROR ((AE_INFO,
> + "Invalid/unsupported SerialBus resource descriptor: BusType 0x%2.2X",
> + AmlResource->CommonSerialBus.Type));
> + return (AE_AML_INVALID_RESOURCE_TYPE);
> + }
> }
>
> /* Optionally return the resource table index */
> @@ -576,6 +783,22 @@ AcpiUtValidateResource (
> }
>
> return (AE_OK);
> +
> +
> +InvalidResource:
> +
> + ACPI_RESOURCE_ERROR ((AE_INFO,
> + "Invalid/unsupported resource descriptor: Type 0x%2.2X",
> + ResourceType));
> + return (AE_AML_INVALID_RESOURCE_TYPE);
> +
> +BadResourceLength:
> +
> + ACPI_RESOURCE_ERROR ((AE_INFO,
> + "Invalid resource descriptor length: Type "
> + "0x%2.2X, Length 0x%4.4X, MinLength 0x%4.4X",
> + ResourceType, ResourceLength, MinimumResourceLength));
> + return (AE_AML_BAD_RESOURCE_LENGTH);
> }
>
>
> diff --git a/src/acpica/source/components/utilities/utstate.c b/src/acpica/source/components/utilities/utstate.c
> index c23c701..689458e 100644
> --- a/src/acpica/source/components/utilities/utstate.c
> +++ b/src/acpica/source/components/utilities/utstate.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/utilities/uttrack.c b/src/acpica/source/components/utilities/uttrack.c
> index f5599b7..7f2311a 100644
> --- a/src/acpica/source/components/utilities/uttrack.c
> +++ b/src/acpica/source/components/utilities/uttrack.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/components/utilities/utxface.c b/src/acpica/source/components/utilities/utxface.c
> index d65c821..900bb19 100644
> --- a/src/acpica/source/components/utilities/utxface.c
> +++ b/src/acpica/source/components/utilities/utxface.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -128,7 +128,6 @@
>
>
> #ifndef ACPI_ASL_COMPILER
> -
> /*******************************************************************************
> *
> * FUNCTION: AcpiInitializeSubsystem
> @@ -234,6 +233,8 @@ AcpiEnableSubsystem (
> ACPI_FUNCTION_TRACE (AcpiEnableSubsystem);
>
>
> +#if (!ACPI_REDUCED_HARDWARE)
> +
> /* Enable ACPI mode */
>
> if (!(Flags & ACPI_NO_ACPI_ENABLE))
> @@ -261,6 +262,8 @@ AcpiEnableSubsystem (
> return_ACPI_STATUS (Status);
> }
>
> +#endif /* !ACPI_REDUCED_HARDWARE */
> +
> /*
> * Install the default OpRegion handlers. These are installed unless
> * other handlers have already been installed via the
> @@ -278,6 +281,7 @@ AcpiEnableSubsystem (
> }
> }
>
> +#if (!ACPI_REDUCED_HARDWARE)
> /*
> * Initialize ACPI Event handling (Fixed and General Purpose)
> *
> @@ -320,6 +324,8 @@ AcpiEnableSubsystem (
> }
> }
>
> +#endif /* !ACPI_REDUCED_HARDWARE */
> +
> return_ACPI_STATUS (Status);
> }
>
> @@ -857,5 +863,47 @@ AcpiInstallInterfaceHandler (
>
> ACPI_EXPORT_SYMBOL (AcpiInstallInterfaceHandler)
>
> -#endif /* !ACPI_ASL_COMPILER */
>
> +/*****************************************************************************
> + *
> + * FUNCTION: AcpiCheckAddressRange
> + *
> + * PARAMETERS: SpaceId - Address space ID
> + * Address - Start address
> + * Length - Length
> + * Warn - TRUE if warning on overlap desired
> + *
> + * RETURN: Count of the number of conflicts detected.
> + *
> + * DESCRIPTION: Check if the input address range overlaps any of the
> + * ASL operation region address ranges.
> + *
> + ****************************************************************************/
> +
> +UINT32
> +AcpiCheckAddressRange (
> + ACPI_ADR_SPACE_TYPE SpaceId,
> + ACPI_PHYSICAL_ADDRESS Address,
> + ACPI_SIZE Length,
> + BOOLEAN Warn)
> +{
> + UINT32 Overlaps;
> + ACPI_STATUS Status;
> +
> +
> + Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE);
> + if (ACPI_FAILURE (Status))
> + {
> + return (0);
> + }
> +
> + Overlaps = AcpiUtCheckAddressRange (SpaceId, Address,
> + (UINT32) Length, Warn);
> +
> + (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE);
> + return (Overlaps);
> +}
> +
> +ACPI_EXPORT_SYMBOL (AcpiCheckAddressRange)
> +
> +#endif /* !ACPI_ASL_COMPILER */
> diff --git a/src/acpica/source/components/utilities/utxferror.c b/src/acpica/source/components/utilities/utxferror.c
> index 60e6217..8a98a89 100644
> --- a/src/acpica/source/components/utilities/utxferror.c
> +++ b/src/acpica/source/components/utilities/utxferror.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/include/acapps.h b/src/acpica/source/include/acapps.h
> index d6a19f5..c87ab01 100644
> --- a/src/acpica/source/include/acapps.h
> +++ b/src/acpica/source/include/acapps.h
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -124,7 +124,7 @@
> /* Common info for tool signons */
>
> #define ACPICA_NAME "Intel ACPI Component Architecture"
> -#define ACPICA_COPYRIGHT "Copyright (c) 2000 - 2011 Intel Corporation"
> +#define ACPICA_COPYRIGHT "Copyright (c) 2000 - 2012 Intel Corporation"
>
> #if ACPI_MACHINE_WIDTH == 64
> #define ACPI_WIDTH "-64"
> diff --git a/src/acpica/source/include/accommon.h b/src/acpica/source/include/accommon.h
> index 7a5739e..a24bad7 100644
> --- a/src/acpica/source/include/accommon.h
> +++ b/src/acpica/source/include/accommon.h
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/include/acconfig.h b/src/acpica/source/include/acconfig.h
> index df826fa..8949ec5 100644
> --- a/src/acpica/source/include/acconfig.h
> +++ b/src/acpica/source/include/acconfig.h
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -158,6 +158,23 @@
> */
> #define ACPI_CHECKSUM_ABORT FALSE
>
> +/*
> + * Generate a version of ACPICA that only supports "reduced hardware"
> + * platforms (as defined in ACPI 5.0). Set to TRUE to generate a specialized
> + * version of ACPICA that ONLY supports the ACPI 5.0 "reduced hardware"
> + * model. In other words, no ACPI hardware is supported.
> + *
> + * If TRUE, this means no support for the following:
> + * PM Event and Control registers
> + * SCI interrupt (and handler)
> + * Fixed Events
> + * General Purpose Events (GPEs)
> + * Global Lock
> + * ACPI PM timer
> + * FACS table (Waking vectors and Global Lock)
> + */
> +#define ACPI_REDUCED_HARDWARE FALSE
> +
>
> /******************************************************************************
> *
> @@ -167,7 +184,7 @@
>
> /* Version of ACPI supported */
>
> -#define ACPI_CA_SUPPORT_LEVEL 3
> +#define ACPI_CA_SUPPORT_LEVEL 5
>
> /* Maximum count for a semaphore object */
>
> @@ -195,7 +212,11 @@
>
> /* Maximum sleep allowed via Sleep() operator */
>
> -#define ACPI_MAX_SLEEP 20000 /* Two seconds */
> +#define ACPI_MAX_SLEEP 2000 /* 2000 millisec == two seconds */
> +
> +/* Address Range lists are per-SpaceId (Memory and I/O only) */
> +
> +#define ACPI_ADDRESS_RANGE_MAX 2
>
>
> /******************************************************************************
> @@ -255,9 +276,10 @@
> #define ACPI_RSDP_CHECKSUM_LENGTH 20
> #define ACPI_RSDP_XCHECKSUM_LENGTH 36
>
> -/* SMBus and IPMI bidirectional buffer size */
> +/* SMBus, GSBus and IPMI bidirectional buffer size */
>
> #define ACPI_SMBUS_BUFFER_SIZE 34
> +#define ACPI_GSBUS_BUFFER_SIZE 34
> #define ACPI_IPMI_BUFFER_SIZE 66
>
> /* _SxD and _SxW control methods */
> diff --git a/src/acpica/source/include/acdebug.h b/src/acpica/source/include/acdebug.h
> index 05f9aa3..4a9ecf0 100644
> --- a/src/acpica/source/include/acdebug.h
> +++ b/src/acpica/source/include/acdebug.h
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -179,6 +179,10 @@ AcpiDbDisplayTableInfo (
> char *TableArg);
>
> void
> +AcpiDbDisplayTemplate (
> + char *BufferArg);
> +
> +void
> AcpiDbUnloadAcpiTable (
> char *TableArg,
> char *InstanceArg);
> @@ -205,18 +209,20 @@ void
> AcpiDbDisplayResources (
> char *ObjectArg);
>
> +ACPI_HW_DEPENDENT_RETURN_VOID (
> void
> AcpiDbDisplayGpes (
> - void);
> + void))
>
> void
> AcpiDbDisplayHandlers (
> void);
>
> +ACPI_HW_DEPENDENT_RETURN_VOID (
> void
> AcpiDbGenerateGpe (
> char *GpeArg,
> - char *BlockArg);
> + char *BlockArg))
>
>
> /*
> diff --git a/src/acpica/source/include/acdisasm.h b/src/acpica/source/include/acdisasm.h
> index b151ecd..9e8f2e3 100644
> --- a/src/acpica/source/include/acdisasm.h
> +++ b/src/acpica/source/include/acdisasm.h
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -135,7 +135,7 @@
> typedef const struct acpi_dmtable_info
> {
> UINT8 Opcode;
> - UINT8 Offset;
> + UINT16 Offset;
> char *Name;
> UINT8 Flags;
>
> @@ -152,57 +152,82 @@ typedef const struct acpi_dmtable_info
>
> /*
> * Values for Opcode above.
> - * Note: 0-7 must not change, used as a flag shift value
> + * Note: 0-7 must not change, they are used as a flag shift value. Other
> + * than those, new values can be added wherever appropriate.
> */
> -#define ACPI_DMT_FLAG0 0
> -#define ACPI_DMT_FLAG1 1
> -#define ACPI_DMT_FLAG2 2
> -#define ACPI_DMT_FLAG3 3
> -#define ACPI_DMT_FLAG4 4
> -#define ACPI_DMT_FLAG5 5
> -#define ACPI_DMT_FLAG6 6
> -#define ACPI_DMT_FLAG7 7
> -#define ACPI_DMT_FLAGS0 8
> -#define ACPI_DMT_FLAGS2 9
> -#define ACPI_DMT_UINT8 10
> -#define ACPI_DMT_UINT16 11
> -#define ACPI_DMT_UINT24 12
> -#define ACPI_DMT_UINT32 13
> -#define ACPI_DMT_UINT56 14
> -#define ACPI_DMT_UINT64 15
> -#define ACPI_DMT_STRING 16
> -#define ACPI_DMT_NAME4 17
> -#define ACPI_DMT_NAME6 18
> -#define ACPI_DMT_NAME8 19
> -#define ACPI_DMT_CHKSUM 20
> -#define ACPI_DMT_SPACEID 21
> -#define ACPI_DMT_GAS 22
> -#define ACPI_DMT_ASF 23
> -#define ACPI_DMT_DMAR 24
> -#define ACPI_DMT_HEST 25
> -#define ACPI_DMT_HESTNTFY 26
> -#define ACPI_DMT_HESTNTYP 27
> -#define ACPI_DMT_MADT 28
> -#define ACPI_DMT_SRAT 29
> -#define ACPI_DMT_EXIT 30
> -#define ACPI_DMT_SIG 31
> -#define ACPI_DMT_FADTPM 32
> -#define ACPI_DMT_BUF16 33
> -#define ACPI_DMT_IVRS 34
> -#define ACPI_DMT_BUFFER 35
> -#define ACPI_DMT_PCI_PATH 36
> -#define ACPI_DMT_EINJACT 37
> -#define ACPI_DMT_EINJINST 38
> -#define ACPI_DMT_ERSTACT 39
> -#define ACPI_DMT_ERSTINST 40
> -#define ACPI_DMT_ACCWIDTH 41
> -#define ACPI_DMT_UNICODE 42
> -#define ACPI_DMT_UUID 43
> -#define ACPI_DMT_DEVICE_PATH 44
> -#define ACPI_DMT_LABEL 45
> -#define ACPI_DMT_BUF7 46
> -#define ACPI_DMT_BUF128 47
> -#define ACPI_DMT_SLIC 48
> +typedef enum
> +{
> + /* Simple Data Types */
> +
> + ACPI_DMT_FLAG0 = 0,
> + ACPI_DMT_FLAG1 = 1,
> + ACPI_DMT_FLAG2 = 2,
> + ACPI_DMT_FLAG3 = 3,
> + ACPI_DMT_FLAG4 = 4,
> + ACPI_DMT_FLAG5 = 5,
> + ACPI_DMT_FLAG6 = 6,
> + ACPI_DMT_FLAG7 = 7,
> + ACPI_DMT_FLAGS0,
> + ACPI_DMT_FLAGS1,
> + ACPI_DMT_FLAGS2,
> + ACPI_DMT_FLAGS4,
> + ACPI_DMT_UINT8,
> + ACPI_DMT_UINT16,
> + ACPI_DMT_UINT24,
> + ACPI_DMT_UINT32,
> + ACPI_DMT_UINT40,
> + ACPI_DMT_UINT48,
> + ACPI_DMT_UINT56,
> + ACPI_DMT_UINT64,
> + ACPI_DMT_BUF7,
> + ACPI_DMT_BUF16,
> + ACPI_DMT_BUF128,
> + ACPI_DMT_SIG,
> + ACPI_DMT_STRING,
> + ACPI_DMT_NAME4,
> + ACPI_DMT_NAME6,
> + ACPI_DMT_NAME8,
> +
> + /* Types that are decoded to strings and miscellaneous */
> +
> + ACPI_DMT_ACCWIDTH,
> + ACPI_DMT_CHKSUM,
> + ACPI_DMT_GAS,
> + ACPI_DMT_SPACEID,
> + ACPI_DMT_UNICODE,
> + ACPI_DMT_UUID,
> +
> + /* Types used only for the Data Table Compiler */
> +
> + ACPI_DMT_BUFFER,
> + ACPI_DMT_DEVICE_PATH,
> + ACPI_DMT_LABEL,
> + ACPI_DMT_PCI_PATH,
> +
> + /* Types that are specific to particular ACPI tables */
> +
> + ACPI_DMT_ASF,
> + ACPI_DMT_DMAR,
> + ACPI_DMT_EINJACT,
> + ACPI_DMT_EINJINST,
> + ACPI_DMT_ERSTACT,
> + ACPI_DMT_ERSTINST,
> + ACPI_DMT_FADTPM,
> + ACPI_DMT_HEST,
> + ACPI_DMT_HESTNTFY,
> + ACPI_DMT_HESTNTYP,
> + ACPI_DMT_IVRS,
> + ACPI_DMT_MADT,
> + ACPI_DMT_PMTT,
> + ACPI_DMT_SLIC,
> + ACPI_DMT_SRAT,
> +
> + /* Special opcodes */
> +
> + ACPI_DMT_EXTRA_TEXT,
> + ACPI_DMT_EXIT
> +
> +} ACPI_ENTRY_TYPES;
>
> typedef
> void (*ACPI_DMTABLE_HANDLER) (
> @@ -247,6 +272,11 @@ ACPI_STATUS (*ASL_WALK_CALLBACK) (
> #define ASL_WALK_CALLBACK_DEFINED
> #endif
>
> +typedef
> +void (*ACPI_RESOURCE_HANDLER) (
> + AML_RESOURCE *Resource,
> + UINT32 Length,
> + UINT32 Level);
>
> typedef struct acpi_resource_tag
> {
> @@ -274,6 +304,7 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsf4[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsfHdr[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoBoot[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoBert[];
> +extern ACPI_DMTABLE_INFO AcpiDmTableInfoBgrt[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoCpep[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoCpep0[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoDbgp[];
> @@ -284,6 +315,7 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoDmar0[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoDmar1[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoDmar2[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoDmar3[];
> +extern ACPI_DMTABLE_INFO AcpiDmTableInfoDrtm[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoEcdt[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoEinj[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoEinj0[];
> @@ -293,7 +325,13 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoFacs[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoFadt1[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoFadt2[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoFadt3[];
> +extern ACPI_DMTABLE_INFO AcpiDmTableInfoFadt5[];
> +extern ACPI_DMTABLE_INFO AcpiDmTableInfoFpdt[];
> +extern ACPI_DMTABLE_INFO AcpiDmTableInfoFpdtHdr[];
> +extern ACPI_DMTABLE_INFO AcpiDmTableInfoFpdt0[];
> +extern ACPI_DMTABLE_INFO AcpiDmTableInfoFpdt1[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoGas[];
> +extern ACPI_DMTABLE_INFO AcpiDmTableInfoGtdt[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoHeader[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoHest[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoHest0[];
> @@ -326,14 +364,34 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt7[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt8[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt9[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt10[];
> +extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt11[];
> +extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt12[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadtHdr[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoMcfg[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoMcfg0[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoMchi[];
> +extern ACPI_DMTABLE_INFO AcpiDmTableInfoMpst[];
> +extern ACPI_DMTABLE_INFO AcpiDmTableInfoMpst0[];
> +extern ACPI_DMTABLE_INFO AcpiDmTableInfoMpst0A[];
> +extern ACPI_DMTABLE_INFO AcpiDmTableInfoMpst0B[];
> +extern ACPI_DMTABLE_INFO AcpiDmTableInfoMpst1[];
> +extern ACPI_DMTABLE_INFO AcpiDmTableInfoMpst2[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoMsct[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoMsct0[];
> +extern ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt[];
> +extern ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt0[];
> +extern ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt1[];
> +extern ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt1a[];
> +extern ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt2[];
> +extern ACPI_DMTABLE_INFO AcpiDmTableInfoPmttHdr[];
> +extern ACPI_DMTABLE_INFO AcpiDmTableInfoPcct[];
> +extern ACPI_DMTABLE_INFO AcpiDmTableInfoPcct0[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoRsdp1[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoRsdp2[];
> +extern ACPI_DMTABLE_INFO AcpiDmTableInfoS3pt[];
> +extern ACPI_DMTABLE_INFO AcpiDmTableInfoS3ptHdr[];
> +extern ACPI_DMTABLE_INFO AcpiDmTableInfoS3pt0[];
> +extern ACPI_DMTABLE_INFO AcpiDmTableInfoS3pt1[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoSbst[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoSlicHdr[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoSlic0[];
> @@ -426,6 +484,10 @@ AcpiDmDumpFadt (
> ACPI_TABLE_HEADER *Table);
>
> void
> +AcpiDmDumpFpdt (
> + ACPI_TABLE_HEADER *Table);
> +
> +void
> AcpiDmDumpHest (
> ACPI_TABLE_HEADER *Table);
>
> @@ -434,17 +496,29 @@ AcpiDmDumpIvrs (
> ACPI_TABLE_HEADER *Table);
>
> void
> +AcpiDmDumpMadt (
> + ACPI_TABLE_HEADER *Table);
> +
> +void
> AcpiDmDumpMcfg (
> ACPI_TABLE_HEADER *Table);
>
> void
> -AcpiDmDumpMadt (
> +AcpiDmDumpMpst (
> ACPI_TABLE_HEADER *Table);
>
> void
> AcpiDmDumpMsct (
> ACPI_TABLE_HEADER *Table);
>
> +void
> +AcpiDmDumpPcct (
> + ACPI_TABLE_HEADER *Table);
> +
> +void
> +AcpiDmDumpPmtt (
> + ACPI_TABLE_HEADER *Table);
> +
> UINT32
> AcpiDmDumpRsdp (
> ACPI_TABLE_HEADER *Table);
> @@ -453,6 +527,10 @@ void
> AcpiDmDumpRsdt (
> ACPI_TABLE_HEADER *Table);
>
> +UINT32
> +AcpiDmDumpS3pt (
> + ACPI_TABLE_HEADER *Table);
> +
> void
> AcpiDmDumpSlic (
> ACPI_TABLE_HEADER *Table);
> @@ -743,6 +821,18 @@ AcpiDmVendorLargeDescriptor (
> UINT32 Level);
>
> void
> +AcpiDmGpioDescriptor (
> + AML_RESOURCE *Resource,
> + UINT32 Length,
> + UINT32 Level);
> +
> +void
> +AcpiDmSerialBusDescriptor (
> + AML_RESOURCE *Resource,
> + UINT32 Length,
> + UINT32 Level);
> +
> +void
> AcpiDmVendorCommon (
> char *Name,
> UINT8 *ByteData,
> @@ -766,6 +856,12 @@ AcpiDmDmaDescriptor (
> UINT32 Level);
>
> void
> +AcpiDmFixedDmaDescriptor (
> + AML_RESOURCE *Resource,
> + UINT32 Length,
> + UINT32 Level);
> +
> +void
> AcpiDmIoDescriptor (
> AML_RESOURCE *Resource,
> UINT32 Length,
> diff --git a/src/acpica/source/include/acdispat.h b/src/acpica/source/include/acdispat.h
> index 9a47d1d..4b1cc3a 100644
> --- a/src/acpica/source/include/acdispat.h
> +++ b/src/acpica/source/include/acdispat.h
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/include/acevents.h b/src/acpica/source/include/acevents.h
> index 9944e32..3d95110 100644
> --- a/src/acpica/source/include/acevents.h
> +++ b/src/acpica/source/include/acevents.h
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -157,13 +157,15 @@ ACPI_STATUS
> AcpiEvInitGlobalLockHandler (
> void);
>
> +ACPI_HW_DEPENDENT_RETURN_OK (
> ACPI_STATUS
> AcpiEvAcquireGlobalLock(
> - UINT16 Timeout);
> + UINT16 Timeout))
>
> +ACPI_HW_DEPENDENT_RETURN_OK (
> ACPI_STATUS
> AcpiEvReleaseGlobalLock(
> - void);
> + void))
>
> ACPI_STATUS
> AcpiEvRemoveGlobalLockHandler (
> @@ -226,9 +228,10 @@ AcpiEvInitializeGpeBlock (
> ACPI_GPE_BLOCK_INFO *GpeBlock,
> void *Context);
>
> +ACPI_HW_DEPENDENT_RETURN_OK (
> ACPI_STATUS
> AcpiEvDeleteGpeBlock (
> - ACPI_GPE_BLOCK_INFO *GpeBlock);
> + ACPI_GPE_BLOCK_INFO *GpeBlock))
>
> UINT32
> AcpiEvGpeDispatch (
> @@ -243,9 +246,10 @@ ACPI_STATUS
> AcpiEvGpeInitialize (
> void);
>
> +ACPI_HW_DEPENDENT_RETURN_VOID (
> void
> AcpiEvUpdateGpes (
> - ACPI_OWNER_ID TableOwnerId);
> + ACPI_OWNER_ID TableOwnerId))
>
> ACPI_STATUS
> AcpiEvMatchGpeMethod (
> @@ -300,7 +304,8 @@ AcpiEvInitializeOpRegions (
>
> ACPI_STATUS
> AcpiEvAddressSpaceDispatch (
> - ACPI_OPERAND_OBJECT *RegionObj,
> + ACPI_OPERAND_OBJECT *RegionObj,
> + ACPI_OPERAND_OBJECT *FieldObj,
> UINT32 Function,
> UINT32 RegionOffset,
> UINT32 BitWidth,
> @@ -406,9 +411,9 @@ UINT32
> AcpiEvInitializeSCI (
> UINT32 ProgramSCI);
>
> +ACPI_HW_DEPENDENT_RETURN_VOID (
> void
> AcpiEvTerminate (
> - void);
> -
> + void))
>
> #endif /* __ACEVENTS_H__ */
> diff --git a/src/acpica/source/include/acexcep.h b/src/acpica/source/include/acexcep.h
> index 0985258..7129954 100644
> --- a/src/acpica/source/include/acexcep.h
> +++ b/src/acpica/source/include/acexcep.h
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -164,8 +164,9 @@
> #define AE_SAME_HANDLER (ACPI_STATUS) (0x0019 | AE_CODE_ENVIRONMENTAL)
> #define AE_NO_HANDLER (ACPI_STATUS) (0x001A | AE_CODE_ENVIRONMENTAL)
> #define AE_OWNER_ID_LIMIT (ACPI_STATUS) (0x001B | AE_CODE_ENVIRONMENTAL)
> +#define AE_NOT_CONFIGURED (ACPI_STATUS) (0x001C | AE_CODE_ENVIRONMENTAL)
>
> -#define AE_CODE_ENV_MAX 0x001B
> +#define AE_CODE_ENV_MAX 0x001C
>
>
> /*
> @@ -294,7 +295,8 @@ char const *AcpiGbl_ExceptionNames_Env[] =
> "AE_ABORT_METHOD",
> "AE_SAME_HANDLER",
> "AE_NO_HANDLER",
> - "AE_OWNER_ID_LIMIT"
> + "AE_OWNER_ID_LIMIT",
> + "AE_NOT_CONFIGURED"
> };
>
> char const *AcpiGbl_ExceptionNames_Pgm[] =
> diff --git a/src/acpica/source/include/acglobal.h b/src/acpica/source/include/acglobal.h
> index 1d55d7e..b27ee3a 100644
> --- a/src/acpica/source/include/acglobal.h
> +++ b/src/acpica/source/include/acglobal.h
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -215,7 +215,18 @@ UINT32 AcpiGbl_TraceFlags;
> ACPI_NAME AcpiGbl_TraceMethodName;
> BOOLEAN AcpiGbl_SystemAwakeAndRunning;
>
> -#endif
> +/*
> + * ACPI 5.0 introduces the concept of a "reduced hardware platform", meaning
> + * that the ACPI hardware is no longer required. A flag in the FADT indicates
> + * a reduced HW machine, and that flag is duplicated here for convenience.
> + */
> +BOOLEAN AcpiGbl_ReducedHardware;
> +
> +#endif /* DEFINE_ACPI_GLOBALS */
> +
> +/* Do not disassemble buffers to resource descriptors */
> +
> +ACPI_EXTERN UINT8 ACPI_INIT_GLOBAL (AcpiGbl_NoResourceDisassembly, FALSE);
>
> /*****************************************************************************
> *
> @@ -228,8 +239,12 @@ BOOLEAN AcpiGbl_SystemAwakeAndRunning;
> * found in the RSDT/XSDT.
> */
> ACPI_EXTERN ACPI_TABLE_LIST AcpiGbl_RootTableList;
> +
> +#if (!ACPI_REDUCED_HARDWARE)
> ACPI_EXTERN ACPI_TABLE_FACS *AcpiGbl_FACS;
>
> +#endif /* !ACPI_REDUCED_HARDWARE */
> +
> /* These addresses are calculated from the FADT Event Block addresses */
>
> ACPI_EXTERN ACPI_GENERIC_ADDRESS AcpiGbl_XPm1aStatus;
> @@ -255,7 +270,7 @@ ACPI_EXTERN UINT8 AcpiGbl_IntegerNybbleWidth;
>
> /*****************************************************************************
> *
> - * Mutual exlusion within ACPICA subsystem
> + * Mutual exclusion within ACPICA subsystem
> *
> ****************************************************************************/
>
> @@ -343,6 +358,7 @@ ACPI_EXTERN BOOLEAN AcpiGbl_AcpiHardwarePresent;
> ACPI_EXTERN BOOLEAN AcpiGbl_EventsInitialized;
> ACPI_EXTERN UINT8 AcpiGbl_OsiData;
> ACPI_EXTERN ACPI_INTERFACE_INFO *AcpiGbl_SupportedInterfaces;
> +ACPI_EXTERN ACPI_ADDRESS_RANGE *AcpiGbl_AddressRangeList[ACPI_ADDRESS_RANGE_MAX];
>
>
> #ifndef DEFINE_ACPI_GLOBALS
> @@ -440,6 +456,8 @@ ACPI_EXTERN UINT8 AcpiGbl_SleepTypeB;
> *
> ****************************************************************************/
>
> +#if (!ACPI_REDUCED_HARDWARE)
> +
> ACPI_EXTERN UINT8 AcpiGbl_AllGpesInitialized;
> ACPI_EXTERN ACPI_GPE_XRUPT_INFO *AcpiGbl_GpeXruptListHead;
> ACPI_EXTERN ACPI_GPE_BLOCK_INFO *AcpiGbl_GpeFadtBlocks[ACPI_MAX_GPE_BLOCKS];
> @@ -448,6 +466,7 @@ ACPI_EXTERN void *AcpiGbl_GlobalEventHandlerContext;
> ACPI_EXTERN ACPI_FIXED_EVENT_HANDLER AcpiGbl_FixedEventHandlers[ACPI_NUM_FIXED_EVENTS];
> extern ACPI_FIXED_EVENT_INFO AcpiGbl_FixedEventInfo[ACPI_NUM_FIXED_EVENTS];
>
> +#endif /* !ACPI_REDUCED_HARDWARE */
>
> /*****************************************************************************
> *
> diff --git a/src/acpica/source/include/achware.h b/src/acpica/source/include/achware.h
> index 32b9a01..5259cff 100644
> --- a/src/acpica/source/include/achware.h
> +++ b/src/acpica/source/include/achware.h
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -182,6 +182,49 @@ AcpiHwClearAcpiStatus (
>
>
> /*
> + * hwsleep - sleep/wake support (Legacy sleep registers)
> + */
> +ACPI_STATUS
> +AcpiHwLegacySleep (
> + UINT8 SleepState,
> + UINT8 Flags);
> +
> +ACPI_STATUS
> +AcpiHwLegacyWakePrep (
> + UINT8 SleepState,
> + UINT8 Flags);
> +
> +ACPI_STATUS
> +AcpiHwLegacyWake (
> + UINT8 SleepState,
> + UINT8 Flags);
> +
> +
> +/*
> + * hwesleep - sleep/wake support (Extended FADT-V5 sleep registers)
> + */
> +void
> +AcpiHwExecuteSleepMethod (
> + char *MethodName,
> + UINT32 IntegerArgument);
> +
> +ACPI_STATUS
> +AcpiHwExtendedSleep (
> + UINT8 SleepState,
> + UINT8 Flags);
> +
> +ACPI_STATUS
> +AcpiHwExtendedWakePrep (
> + UINT8 SleepState,
> + UINT8 Flags);
> +
> +ACPI_STATUS
> +AcpiHwExtendedWake (
> + UINT8 SleepState,
> + UINT8 Flags);
> +
> +
> +/*
> * hwvalid - Port I/O with validation
> */
> ACPI_STATUS
> @@ -260,22 +303,4 @@ AcpiHwDerivePciId (
> ACPI_HANDLE PciRegion);
>
>
> -/*
> - * hwtimer - ACPI Timer prototypes
> - */
> -ACPI_STATUS
> -AcpiGetTimerResolution (
> - UINT32 *Resolution);
> -
> -ACPI_STATUS
> -AcpiGetTimer (
> - UINT32 *Ticks);
> -
> -ACPI_STATUS
> -AcpiGetTimerDuration (
> - UINT32 StartTicks,
> - UINT32 EndTicks,
> - UINT32 *TimeElapsed);
> -
> -
> #endif /* __ACHWARE_H__ */
> diff --git a/src/acpica/source/include/acinterp.h b/src/acpica/source/include/acinterp.h
> index 8cb1e3b..3f98a8f 100644
> --- a/src/acpica/source/include/acinterp.h
> +++ b/src/acpica/source/include/acinterp.h
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -714,6 +714,10 @@ AcpiExIntegerToString (
> char *Dest,
> UINT64 Value);
>
> +BOOLEAN
> +AcpiIsValidSpaceId (
> + UINT8 SpaceId);
> +
>
> /*
> * exregion - default OpRegion handlers
> diff --git a/src/acpica/source/include/aclocal.h b/src/acpica/source/include/aclocal.h
> index 22b5dd3..f9065af 100644
> --- a/src/acpica/source/include/aclocal.h
> +++ b/src/acpica/source/include/aclocal.h
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -126,7 +126,7 @@ typedef UINT32 ACPI_MUTEX_HANDLE;
>
> /* Total number of aml opcodes defined */
>
> -#define AML_NUM_OPCODES 0x7F
> +#define AML_NUM_OPCODES 0x81
>
>
> /* Forward declarations */
> @@ -285,7 +285,6 @@ typedef struct acpi_namespace_node
> #define ANOBJ_IS_EXTERNAL 0x08 /* iASL only: This object created via External() */
> #define ANOBJ_METHOD_NO_RETVAL 0x10 /* iASL only: Method has no return value */
> #define ANOBJ_METHOD_SOME_NO_RETVAL 0x20 /* iASL only: Method has at least one return value */
> -#define ANOBJ_IS_BIT_OFFSET 0x40 /* iASL only: Reference is a bit offset */
> #define ANOBJ_IS_REFERENCED 0x80 /* iASL only: Object was referenced */
>
>
> @@ -358,12 +357,16 @@ typedef struct acpi_create_field_info
> ACPI_NAMESPACE_NODE *FieldNode;
> ACPI_NAMESPACE_NODE *RegisterNode;
> ACPI_NAMESPACE_NODE *DataRegisterNode;
> + ACPI_NAMESPACE_NODE *ConnectionNode;
> + UINT8 *ResourceBuffer;
> UINT32 BankValue;
> UINT32 FieldBitPosition;
> UINT32 FieldBitLength;
> + UINT16 ResourceLength;
> UINT8 FieldFlags;
> UINT8 Attribute;
> UINT8 FieldType;
> + UINT8 AccessLength;
>
> } ACPI_CREATE_FIELD_INFO;
>
> @@ -431,7 +434,8 @@ typedef struct acpi_name_info
>
> /*
> * Used for ACPI_PTYPE1_FIXED, ACPI_PTYPE1_VAR, ACPI_PTYPE2,
> - * ACPI_PTYPE2_MIN, ACPI_PTYPE2_PKG_COUNT, ACPI_PTYPE2_COUNT
> + * ACPI_PTYPE2_MIN, ACPI_PTYPE2_PKG_COUNT, ACPI_PTYPE2_COUNT,
> + * ACPI_PTYPE2_FIX_VAR
> */
> typedef struct acpi_package_info
> {
> @@ -492,6 +496,7 @@ typedef struct acpi_predefined_data
> /* Defines for Flags field above */
>
> #define ACPI_OBJECT_REPAIRED 1
> +#define ACPI_OBJECT_WRAPPED 2
>
>
> /*
> @@ -823,6 +828,17 @@ typedef
> ACPI_STATUS (*ACPI_EXECUTE_OP) (
> struct acpi_walk_state *WalkState);
>
> +/* Address Range info block */
> +
> +typedef struct acpi_address_range
> +{
> + struct acpi_address_range *Next;
> + ACPI_NAMESPACE_NODE *RegionNode;
> + ACPI_PHYSICAL_ADDRESS StartAddress;
> + ACPI_PHYSICAL_ADDRESS EndAddress;
> +
> +} ACPI_ADDRESS_RANGE;
> +
>
> /*****************************************************************************
> *
> @@ -847,6 +863,17 @@ typedef struct acpi_opcode_info
>
> } ACPI_OPCODE_INFO;
>
> +/* Structure for Resource Tag information */
> +
> +typedef struct acpi_tag_info
> +{
> + UINT32 BitOffset;
> + UINT32 BitLength;
> +
> +} ACPI_TAG_INFO;
> +
> +/* Value associated with the parse object */
> +
> typedef union acpi_parse_value
> {
> UINT64 Integer; /* Integer constant (Up to 64 bits) */
> @@ -855,6 +882,7 @@ typedef union acpi_parse_value
> UINT8 *Buffer; /* buffer or string */
> char *Name; /* NULL terminated string */
> union acpi_parse_object *Arg; /* arguments and contained ops */
> + ACPI_TAG_INFO Tag; /* Resource descriptor tag info */
>
> } ACPI_PARSE_VALUE;
>
> @@ -1185,7 +1213,7 @@ typedef struct acpi_port_info
> #define ACPI_RESOURCE_NAME_END_DEPENDENT 0x38
> #define ACPI_RESOURCE_NAME_IO 0x40
> #define ACPI_RESOURCE_NAME_FIXED_IO 0x48
> -#define ACPI_RESOURCE_NAME_RESERVED_S1 0x50
> +#define ACPI_RESOURCE_NAME_FIXED_DMA 0x50
> #define ACPI_RESOURCE_NAME_RESERVED_S2 0x58
> #define ACPI_RESOURCE_NAME_RESERVED_S3 0x60
> #define ACPI_RESOURCE_NAME_RESERVED_S4 0x68
> @@ -1207,7 +1235,9 @@ typedef struct acpi_port_info
> #define ACPI_RESOURCE_NAME_EXTENDED_IRQ 0x89
> #define ACPI_RESOURCE_NAME_ADDRESS64 0x8A
> #define ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64 0x8B
> -#define ACPI_RESOURCE_NAME_LARGE_MAX 0x8B
> +#define ACPI_RESOURCE_NAME_GPIO 0x8C
> +#define ACPI_RESOURCE_NAME_SERIAL_BUS 0x8E
> +#define ACPI_RESOURCE_NAME_LARGE_MAX 0x8E
>
>
> /*****************************************************************************
> diff --git a/src/acpica/source/include/acmacros.h b/src/acpica/source/include/acmacros.h
> index 5cc284e..5451d84 100644
> --- a/src/acpica/source/include/acmacros.h
> +++ b/src/acpica/source/include/acmacros.h
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -500,7 +500,6 @@
>
> #endif /* ACPI_SIMPLE_RETURN_MACROS */
>
> -
> /* Conditional execution */
>
> #define ACPI_DEBUG_EXEC(a) a
> @@ -549,6 +548,14 @@
>
> #endif /* ACPI_DEBUG_OUTPUT */
>
> +
> +#if (!ACPI_REDUCED_HARDWARE)
> +#define ACPI_HW_OPTIONAL_FUNCTION(addr) addr
> +#else
> +#define ACPI_HW_OPTIONAL_FUNCTION(addr) NULL
> +#endif
> +
> +
> /*
> * Some code only gets executed when the debugger is built in.
> * Note that this is entirely independent of whether the
> diff --git a/src/acpica/source/include/acnames.h b/src/acpica/source/include/acnames.h
> index 3fbc61c..bb9e2d3 100644
> --- a/src/acpica/source/include/acnames.h
> +++ b/src/acpica/source/include/acnames.h
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -118,6 +118,7 @@
>
> /* Method names - these methods can appear anywhere in the namespace */
>
> +#define METHOD_NAME__SB_ "_SB_"
> #define METHOD_NAME__HID "_HID"
> #define METHOD_NAME__CID "_CID"
> #define METHOD_NAME__UID "_UID"
> @@ -130,16 +131,17 @@
> #define METHOD_NAME__PRT "_PRT"
> #define METHOD_NAME__CRS "_CRS"
> #define METHOD_NAME__PRS "_PRS"
> +#define METHOD_NAME__AEI "_AEI"
> #define METHOD_NAME__PRW "_PRW"
> #define METHOD_NAME__SRS "_SRS"
>
> /* Method names - these methods must appear at the namespace root */
>
> -#define METHOD_NAME__BFS "\\_BFS"
> -#define METHOD_NAME__GTS "\\_GTS"
> -#define METHOD_NAME__PTS "\\_PTS"
> -#define METHOD_NAME__SST "\\_SI._SST"
> -#define METHOD_NAME__WAK "\\_WAK"
> +#define METHOD_PATHNAME__BFS "\\_BFS"
> +#define METHOD_PATHNAME__GTS "\\_GTS"
> +#define METHOD_PATHNAME__PTS "\\_PTS"
> +#define METHOD_PATHNAME__SST "\\_SI._SST"
> +#define METHOD_PATHNAME__WAK "\\_WAK"
>
> /* Definitions of the predefined namespace names */
>
> @@ -150,7 +152,6 @@
> #define ACPI_PREFIX_LOWER (UINT32) 0x69706361 /* "acpi" */
>
> #define ACPI_NS_ROOT_PATH "\\"
> -#define ACPI_NS_SYSTEM_BUS "_SB_"
>
> #endif /* __ACNAMES_H__ */
>
> diff --git a/src/acpica/source/include/acnamesp.h b/src/acpica/source/include/acnamesp.h
> index 0437a27..988631e 100644
> --- a/src/acpica/source/include/acnamesp.h
> +++ b/src/acpica/source/include/acnamesp.h
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -440,8 +440,9 @@ AcpiNsRepairObject (
> ACPI_OPERAND_OBJECT **ReturnObjectPtr);
>
> ACPI_STATUS
> -AcpiNsRepairPackageList (
> +AcpiNsWrapWithPackage (
> ACPI_PREDEFINED_DATA *Data,
> + ACPI_OPERAND_OBJECT *OriginalObject,
> ACPI_OPERAND_OBJECT **ObjDescPtr);
>
> ACPI_STATUS
> diff --git a/src/acpica/source/include/acobject.h b/src/acpica/source/include/acobject.h
> index 6a6ad33..009232a 100644
> --- a/src/acpica/source/include/acobject.h
> +++ b/src/acpica/source/include/acobject.h
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -392,6 +392,7 @@ typedef struct acpi_object_thermal_zone
> UINT32 BaseByteOffset; /* Byte offset within containing object */\
> UINT32 Value; /* Value to store into the Bank or Index register */\
> UINT8 StartFieldBitOffset;/* Bit offset within first field datum (0-63) */\
> + UINT8 AccessLength; /* For serial regions/fields */
>
>
> typedef struct acpi_object_field_common /* COMMON FIELD (for BUFFER, REGION, BANK, and INDEX fields) */
> @@ -407,7 +408,9 @@ typedef struct acpi_object_region_field
> {
> ACPI_OBJECT_COMMON_HEADER
> ACPI_COMMON_FIELD_INFO
> + UINT16 ResourceLength;
> union acpi_operand_object *RegionObj; /* Containing OpRegion object */
> + UINT8 *ResourceBuffer; /* ResourceTemplate for serial regions/fields */
>
> } ACPI_OBJECT_REGION_FIELD;
>
> @@ -535,6 +538,7 @@ typedef struct acpi_object_extra
> {
> ACPI_OBJECT_COMMON_HEADER
> ACPI_NAMESPACE_NODE *Method_REG; /* _REG method for this region (if any) */
> + ACPI_NAMESPACE_NODE *ScopeNode;
> void *RegionContext; /* Region-specific data */
> UINT8 *AmlStart;
> UINT32 AmlLength;
> diff --git a/src/acpica/source/include/acopcode.h b/src/acpica/source/include/acopcode.h
> index 5e42cc5..a19feee 100644
> --- a/src/acpica/source/include/acopcode.h
> +++ b/src/acpica/source/include/acopcode.h
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -166,6 +166,7 @@
> #define ARGP_CONCAT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
> #define ARGP_CONCAT_RES_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
> #define ARGP_COND_REF_OF_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_SUPERNAME)
> +#define ARGP_CONNECTFIELD_OP ARGP_LIST1 (ARGP_NAMESTRING)
> #define ARGP_CONTINUE_OP ARG_NONE
> #define ARGP_COPY_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_SIMPLENAME)
> #define ARGP_CREATE_BIT_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME)
> @@ -237,6 +238,7 @@
> #define ARGP_RETURN_OP ARGP_LIST1 (ARGP_TERMARG)
> #define ARGP_REVISION_OP ARG_NONE
> #define ARGP_SCOPE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_TERMLIST)
> +#define ARGP_SERIALFIELD_OP ARGP_LIST1 (ARGP_NAMESTRING)
> #define ARGP_SHIFT_LEFT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
> #define ARGP_SHIFT_RIGHT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
> #define ARGP_SIGNAL_OP ARGP_LIST1 (ARGP_SUPERNAME)
> @@ -297,6 +299,7 @@
> #define ARGI_CONCAT_OP ARGI_LIST3 (ARGI_COMPUTEDATA,ARGI_COMPUTEDATA, ARGI_TARGETREF)
> #define ARGI_CONCAT_RES_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_BUFFER, ARGI_TARGETREF)
> #define ARGI_COND_REF_OF_OP ARGI_LIST2 (ARGI_OBJECT_REF, ARGI_TARGETREF)
> +#define ARGI_CONNECTFIELD_OP ARGI_INVALID_OPCODE
> #define ARGI_CONTINUE_OP ARGI_INVALID_OPCODE
> #define ARGI_COPY_OP ARGI_LIST2 (ARGI_ANYTYPE, ARGI_SIMPLE_TARGET)
> #define ARGI_CREATE_BIT_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE)
> @@ -368,6 +371,7 @@
> #define ARGI_RETURN_OP ARGI_INVALID_OPCODE
> #define ARGI_REVISION_OP ARG_NONE
> #define ARGI_SCOPE_OP ARGI_INVALID_OPCODE
> +#define ARGI_SERIALFIELD_OP ARGI_INVALID_OPCODE
> #define ARGI_SHIFT_LEFT_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
> #define ARGI_SHIFT_RIGHT_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
> #define ARGI_SIGNAL_OP ARGI_LIST1 (ARGI_EVENT)
> diff --git a/src/acpica/source/include/acoutput.h b/src/acpica/source/include/acoutput.h
> index 0b319c8..12f7851 100644
> --- a/src/acpica/source/include/acoutput.h
> +++ b/src/acpica/source/include/acoutput.h
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -144,6 +144,7 @@
> #define ACPI_EXAMPLE 0x00004000
> #define ACPI_DRIVER 0x00008000
> #define DT_COMPILER 0x00010000
> +#define ASL_PREPROCESSOR 0x00020000
>
> #define ACPI_ALL_COMPONENTS 0x0001FFFF
> #define ACPI_COMPONENT_DEFAULT (ACPI_ALL_COMPONENTS)
> diff --git a/src/acpica/source/include/acparser.h b/src/acpica/source/include/acparser.h
> index 3ea2096..d40714e 100644
> --- a/src/acpica/source/include/acparser.h
> +++ b/src/acpica/source/include/acparser.h
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/include/acpi.h b/src/acpica/source/include/acpi.h
> index fcc027d..252c712 100644
> --- a/src/acpica/source/include/acpi.h
> +++ b/src/acpica/source/include/acpi.h
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/include/acpiosxf.h b/src/acpica/source/include/acpiosxf.h
> index 9f7fc42..d6d205f 100644
> --- a/src/acpica/source/include/acpiosxf.h
> +++ b/src/acpica/source/include/acpiosxf.h
> @@ -12,7 +12,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -185,6 +185,12 @@ AcpiOsTableOverride (
> ACPI_TABLE_HEADER *ExistingTable,
> ACPI_TABLE_HEADER **NewTable);
>
> +ACPI_STATUS
> +AcpiOsPhysicalTableOverride (
> + ACPI_TABLE_HEADER *ExistingTable,
> + ACPI_PHYSICAL_ADDRESS *NewAddress,
> + UINT32 *NewTableLength);
> +
>
> /*
> * Spinlock primitives
> @@ -375,13 +381,13 @@ AcpiOsWritePort (
> ACPI_STATUS
> AcpiOsReadMemory (
> ACPI_PHYSICAL_ADDRESS Address,
> - UINT32 *Value,
> + UINT64 *Value,
> UINT32 Width);
>
> ACPI_STATUS
> AcpiOsWriteMemory (
> ACPI_PHYSICAL_ADDRESS Address,
> - UINT32 Value,
> + UINT64 Value,
> UINT32 Width);
>
>
> diff --git a/src/acpica/source/include/acpixf.h b/src/acpica/source/include/acpixf.h
> index ca90112..2d4a5f8 100644
> --- a/src/acpica/source/include/acpixf.h
> +++ b/src/acpica/source/include/acpixf.h
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -120,8 +120,9 @@
>
> /* Current ACPICA subsystem version in YYYYMMDD format */
>
> -#define ACPI_CA_VERSION 0x20110623
> +#define ACPI_CA_VERSION 0x20120320
>
> +#include "acconfig.h"
> #include "actypes.h"
> #include "actbl.h"
>
> @@ -131,6 +132,7 @@
> extern UINT32 AcpiCurrentGpeCount;
> extern ACPI_TABLE_FADT AcpiGbl_FADT;
> extern BOOLEAN AcpiGbl_SystemAwakeAndRunning;
> +extern BOOLEAN AcpiGbl_ReducedHardware; /* ACPI 5.0 */
>
> /* Runtime configuration of debug print levels */
>
> @@ -152,6 +154,34 @@ extern UINT8 AcpiGbl_DisableAutoRepair;
>
>
> /*
> + * Hardware-reduced prototypes. All interfaces that use these macros will
> + * be configured out of the ACPICA build if the ACPI_REDUCED_HARDWARE flag
> + * is set to TRUE.
> + */
> +#if (!ACPI_REDUCED_HARDWARE)
> +#define ACPI_HW_DEPENDENT_RETURN_STATUS(Prototype) \
> + Prototype;
> +
> +#define ACPI_HW_DEPENDENT_RETURN_OK(Prototype) \
> + Prototype;
> +
> +#define ACPI_HW_DEPENDENT_RETURN_VOID(Prototype) \
> + Prototype;
> +
> +#else
> +#define ACPI_HW_DEPENDENT_RETURN_STATUS(Prototype) \
> + static ACPI_INLINE Prototype {return(AE_NOT_CONFIGURED);}
> +
> +#define ACPI_HW_DEPENDENT_RETURN_OK(Prototype) \
> + static ACPI_INLINE Prototype {return(AE_OK);}
> +
> +#define ACPI_HW_DEPENDENT_RETURN_VOID(Prototype) \
> + static ACPI_INLINE Prototype {}
> +
> +#endif /* !ACPI_REDUCED_HARDWARE */
> +
> +
> +/*
> * Initialization
> */
> ACPI_STATUS
> @@ -180,13 +210,15 @@ AcpiTerminate (
> /*
> * Miscellaneous global interfaces
> */
> +ACPI_HW_DEPENDENT_RETURN_STATUS (
> ACPI_STATUS
> AcpiEnable (
> - void);
> + void))
>
> +ACPI_HW_DEPENDENT_RETURN_STATUS (
> ACPI_STATUS
> AcpiDisable (
> - void);
> + void))
>
> ACPI_STATUS
> AcpiSubsystemStatus (
> @@ -216,6 +248,13 @@ ACPI_STATUS
> AcpiRemoveInterface (
> ACPI_STRING InterfaceName);
>
> +UINT32
> +AcpiCheckAddressRange (
> + ACPI_ADR_SPACE_TYPE SpaceId,
> + ACPI_PHYSICAL_ADDRESS Address,
> + ACPI_SIZE Length,
> + BOOLEAN Warn);
> +
>
> /*
> * ACPI Memory management
> @@ -385,35 +424,40 @@ AcpiInstallInitializationHandler (
> ACPI_INIT_HANDLER Handler,
> UINT32 Function);
>
> +ACPI_HW_DEPENDENT_RETURN_STATUS (
> ACPI_STATUS
> AcpiInstallGlobalEventHandler (
> ACPI_GBL_EVENT_HANDLER Handler,
> - void *Context);
> + void *Context))
>
> +ACPI_HW_DEPENDENT_RETURN_STATUS (
> ACPI_STATUS
> AcpiInstallFixedEventHandler (
> UINT32 AcpiEvent,
> ACPI_EVENT_HANDLER Handler,
> - void *Context);
> + void *Context))
>
> +ACPI_HW_DEPENDENT_RETURN_STATUS (
> ACPI_STATUS
> AcpiRemoveFixedEventHandler (
> UINT32 AcpiEvent,
> - ACPI_EVENT_HANDLER Handler);
> + ACPI_EVENT_HANDLER Handler))
>
> +ACPI_HW_DEPENDENT_RETURN_STATUS (
> ACPI_STATUS
> AcpiInstallGpeHandler (
> ACPI_HANDLE GpeDevice,
> UINT32 GpeNumber,
> UINT32 Type,
> ACPI_GPE_HANDLER Address,
> - void *Context);
> + void *Context))
>
> +ACPI_HW_DEPENDENT_RETURN_STATUS (
> ACPI_STATUS
> AcpiRemoveGpeHandler (
> ACPI_HANDLE GpeDevice,
> UINT32 GpeNumber,
> - ACPI_GPE_HANDLER Address);
> + ACPI_GPE_HANDLER Address))
>
> ACPI_STATUS
> AcpiInstallNotifyHandler (
> @@ -454,113 +498,148 @@ AcpiInstallInterfaceHandler (
> /*
> * Global Lock interfaces
> */
> +ACPI_HW_DEPENDENT_RETURN_STATUS (
> ACPI_STATUS
> AcpiAcquireGlobalLock (
> UINT16 Timeout,
> - UINT32 *Handle);
> + UINT32 *Handle))
>
> +ACPI_HW_DEPENDENT_RETURN_STATUS (
> ACPI_STATUS
> AcpiReleaseGlobalLock (
> - UINT32 Handle);
> + UINT32 Handle))
> +
> +
> +/*
> + * Interfaces to AML mutex objects
> + */
> +ACPI_STATUS
> +AcpiAcquireMutex (
> + ACPI_HANDLE Handle,
> + ACPI_STRING Pathname,
> + UINT16 Timeout);
> +
> +ACPI_STATUS
> +AcpiReleaseMutex (
> + ACPI_HANDLE Handle,
> + ACPI_STRING Pathname);
>
>
> /*
> * Fixed Event interfaces
> */
> +ACPI_HW_DEPENDENT_RETURN_STATUS (
> ACPI_STATUS
> AcpiEnableEvent (
> UINT32 Event,
> - UINT32 Flags);
> + UINT32 Flags))
>
> +ACPI_HW_DEPENDENT_RETURN_STATUS (
> ACPI_STATUS
> AcpiDisableEvent (
> UINT32 Event,
> - UINT32 Flags);
> + UINT32 Flags))
>
> +ACPI_HW_DEPENDENT_RETURN_STATUS (
> ACPI_STATUS
> AcpiClearEvent (
> - UINT32 Event);
> + UINT32 Event))
>
> +ACPI_HW_DEPENDENT_RETURN_STATUS (
> ACPI_STATUS
> AcpiGetEventStatus (
> UINT32 Event,
> - ACPI_EVENT_STATUS *EventStatus);
> + ACPI_EVENT_STATUS *EventStatus))
>
>
> /*
> * General Purpose Event (GPE) Interfaces
> */
> +ACPI_HW_DEPENDENT_RETURN_STATUS (
> ACPI_STATUS
> AcpiUpdateAllGpes (
> - void);
> + void))
>
> +ACPI_HW_DEPENDENT_RETURN_STATUS (
> ACPI_STATUS
> AcpiEnableGpe (
> ACPI_HANDLE GpeDevice,
> - UINT32 GpeNumber);
> + UINT32 GpeNumber))
>
> +ACPI_HW_DEPENDENT_RETURN_STATUS (
> ACPI_STATUS
> AcpiDisableGpe (
> ACPI_HANDLE GpeDevice,
> - UINT32 GpeNumber);
> + UINT32 GpeNumber))
>
> +ACPI_HW_DEPENDENT_RETURN_STATUS (
> ACPI_STATUS
> AcpiClearGpe (
> ACPI_HANDLE GpeDevice,
> - UINT32 GpeNumber);
> + UINT32 GpeNumber))
>
> +ACPI_HW_DEPENDENT_RETURN_STATUS (
> ACPI_STATUS
> AcpiSetGpe (
> ACPI_HANDLE GpeDevice,
> UINT32 GpeNumber,
> - UINT8 Action);
> + UINT8 Action))
>
> +ACPI_HW_DEPENDENT_RETURN_STATUS (
> ACPI_STATUS
> AcpiFinishGpe (
> ACPI_HANDLE GpeDevice,
> - UINT32 GpeNumber);
> + UINT32 GpeNumber))
>
> +ACPI_HW_DEPENDENT_RETURN_STATUS (
> ACPI_STATUS
> AcpiSetupGpeForWake (
> ACPI_HANDLE ParentDevice,
> ACPI_HANDLE GpeDevice,
> - UINT32 GpeNumber);
> + UINT32 GpeNumber))
>
> +ACPI_HW_DEPENDENT_RETURN_STATUS (
> ACPI_STATUS
> AcpiSetGpeWakeMask (
> ACPI_HANDLE GpeDevice,
> UINT32 GpeNumber,
> - UINT8 Action);
> + UINT8 Action))
>
> +ACPI_HW_DEPENDENT_RETURN_STATUS (
> ACPI_STATUS
> AcpiGetGpeStatus (
> ACPI_HANDLE GpeDevice,
> UINT32 GpeNumber,
> - ACPI_EVENT_STATUS *EventStatus);
> + ACPI_EVENT_STATUS *EventStatus))
>
> +ACPI_HW_DEPENDENT_RETURN_STATUS (
> ACPI_STATUS
> AcpiDisableAllGpes (
> - void);
> + void))
>
> +ACPI_HW_DEPENDENT_RETURN_STATUS (
> ACPI_STATUS
> AcpiEnableAllRuntimeGpes (
> - void);
> + void))
>
> +ACPI_HW_DEPENDENT_RETURN_STATUS (
> ACPI_STATUS
> AcpiGetGpeDevice (
> UINT32 GpeIndex,
> - ACPI_HANDLE *GpeDevice);
> + ACPI_HANDLE *GpeDevice))
>
> +ACPI_HW_DEPENDENT_RETURN_STATUS (
> ACPI_STATUS
> AcpiInstallGpeBlock (
> ACPI_HANDLE GpeDevice,
> ACPI_GENERIC_ADDRESS *GpeBlockAddress,
> UINT32 RegisterCount,
> - UINT32 InterruptNumber);
> + UINT32 InterruptNumber))
>
> +ACPI_HW_DEPENDENT_RETURN_STATUS (
> ACPI_STATUS
> AcpiRemoveGpeBlock (
> - ACPI_HANDLE GpeDevice);
> + ACPI_HANDLE GpeDevice))
>
>
> /*
> @@ -589,6 +668,11 @@ AcpiGetPossibleResources (
> ACPI_BUFFER *RetBuffer);
>
> ACPI_STATUS
> +AcpiGetEventResources (
> + ACPI_HANDLE DeviceHandle,
> + ACPI_BUFFER *RetBuffer);
> +
> +ACPI_STATUS
> AcpiWalkResources (
> ACPI_HANDLE Device,
> char *Name,
> @@ -610,6 +694,12 @@ AcpiResourceToAddress64 (
> ACPI_RESOURCE *Resource,
> ACPI_RESOURCE_ADDRESS64 *Out);
>
> +ACPI_STATUS
> +AcpiBufferToResource (
> + UINT8 *AmlBuffer,
> + UINT16 AmlBufferLength,
> + ACPI_RESOURCE **ResourcePtr);
> +
>
> /*
> * Hardware (ACPI device) interfaces
> @@ -628,16 +718,22 @@ AcpiWrite (
> UINT64 Value,
> ACPI_GENERIC_ADDRESS *Reg);
>
> +ACPI_HW_DEPENDENT_RETURN_STATUS (
> ACPI_STATUS
> AcpiReadBitRegister (
> UINT32 RegisterId,
> - UINT32 *ReturnValue);
> + UINT32 *ReturnValue))
>
> +ACPI_HW_DEPENDENT_RETURN_STATUS (
> ACPI_STATUS
> AcpiWriteBitRegister (
> UINT32 RegisterId,
> - UINT32 Value);
> + UINT32 Value))
>
> +
> +/*
> + * Sleep/Wake interfaces
> + */
> ACPI_STATUS
> AcpiGetSleepTypeData (
> UINT8 SleepState,
> @@ -650,28 +746,58 @@ AcpiEnterSleepStatePrep (
>
> ACPI_STATUS
> AcpiEnterSleepState (
> - UINT8 SleepState);
> + UINT8 SleepState,
> + UINT8 Flags);
>
> +ACPI_HW_DEPENDENT_RETURN_STATUS (
> ACPI_STATUS
> AcpiEnterSleepStateS4bios (
> - void);
> + void))
> +
> +ACPI_STATUS
> +AcpiLeaveSleepStatePrep (
> + UINT8 SleepState,
> + UINT8 Flags);
>
> ACPI_STATUS
> AcpiLeaveSleepState (
> - UINT8 SleepState)
> - ;
> + UINT8 SleepState);
> +
> +ACPI_HW_DEPENDENT_RETURN_STATUS (
> ACPI_STATUS
> AcpiSetFirmwareWakingVector (
> - UINT32 PhysicalAddress);
> + UINT32 PhysicalAddress))
>
> #if ACPI_MACHINE_WIDTH == 64
> +ACPI_HW_DEPENDENT_RETURN_STATUS (
> ACPI_STATUS
> AcpiSetFirmwareWakingVector64 (
> - UINT64 PhysicalAddress);
> + UINT64 PhysicalAddress))
> #endif
>
>
> /*
> + * ACPI Timer interfaces
> + */
> +ACPI_HW_DEPENDENT_RETURN_STATUS (
> +ACPI_STATUS
> +AcpiGetTimerResolution (
> + UINT32 *Resolution))
> +
> +ACPI_HW_DEPENDENT_RETURN_STATUS (
> +ACPI_STATUS
> +AcpiGetTimer (
> + UINT32 *Ticks))
> +
> +ACPI_HW_DEPENDENT_RETURN_STATUS (
> +ACPI_STATUS
> +AcpiGetTimerDuration (
> + UINT32 StartTicks,
> + UINT32 EndTicks,
> + UINT32 *TimeElapsed))
> +
> +
> +/*
> * Error/Warning output
> */
> void ACPI_INTERNAL_VAR_XFACE
> diff --git a/src/acpica/source/include/acpredef.h b/src/acpica/source/include/acpredef.h
> index 5b32270..82a1cb3 100644
> --- a/src/acpica/source/include/acpredef.h
> +++ b/src/acpica/source/include/acpredef.h
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -166,6 +166,14 @@
> * ACPI_PTYPE2_REV_FIXED: Revision at start, each subpackage is Fixed-length
> * (Used for _ART, _FPS)
> *
> + * ACPI_PTYPE2_FIX_VAR: Each subpackage consists of some fixed-length elements
> + * followed by an optional element
> + * object type
> + * count
> + * object type
> + * count = 0 (optional)
> + * (Used for _DLM)
> + *
> *****************************************************************************/
>
> enum AcpiReturnPackageTypes
> @@ -178,7 +186,8 @@ enum AcpiReturnPackageTypes
> ACPI_PTYPE2_PKG_COUNT = 6,
> ACPI_PTYPE2_FIXED = 7,
> ACPI_PTYPE2_MIN = 8,
> - ACPI_PTYPE2_REV_FIXED = 9
> + ACPI_PTYPE2_REV_FIXED = 9,
> + ACPI_PTYPE2_FIX_VAR = 10
> };
>
>
> @@ -231,6 +240,7 @@ static const ACPI_PREDEFINED_INFO PredefinedNames[] =
> {{"_AC8", 0, ACPI_RTYPE_INTEGER}},
> {{"_AC9", 0, ACPI_RTYPE_INTEGER}},
> {{"_ADR", 0, ACPI_RTYPE_INTEGER}},
> + {{"_AEI", 0, ACPI_RTYPE_BUFFER}},
> {{"_AL0", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
> {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
>
> @@ -303,6 +313,12 @@ static const ACPI_PREDEFINED_INFO PredefinedNames[] =
> {{"_CID", 0, ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING | ACPI_RTYPE_PACKAGE}}, /* Variable-length (Ints/Strs) */
> {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING, 0,0}, 0,0}},
>
> + {{"_CLS", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (3 Int) */
> + {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 3,0}, 0,0}},
> +
> + {{"_CPC", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Ints/Bufs) */
> + {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER | ACPI_RTYPE_BUFFER, 0,0}, 0,0}},
> +
> {{"_CRS", 0, ACPI_RTYPE_BUFFER}},
> {{"_CRT", 0, ACPI_RTYPE_INTEGER}},
> {{"_CSD", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (1 Int(n), n-1 Int) */
> @@ -311,12 +327,20 @@ static const ACPI_PREDEFINED_INFO PredefinedNames[] =
> {{"_CST", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (1 Int(n), n Pkg (1 Buf/3 Int) */
> {{{ACPI_PTYPE2_PKG_COUNT,ACPI_RTYPE_BUFFER, 1, ACPI_RTYPE_INTEGER}, 3,0}},
>
> + {{"_CWS", 1, ACPI_RTYPE_INTEGER}},
> {{"_DCK", 1, ACPI_RTYPE_INTEGER}},
> {{"_DCS", 0, ACPI_RTYPE_INTEGER}},
> {{"_DDC", 1, ACPI_RTYPE_INTEGER | ACPI_RTYPE_BUFFER}},
> {{"_DDN", 0, ACPI_RTYPE_STRING}},
> + {{"_DEP", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
> + {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
> +
> {{"_DGS", 0, ACPI_RTYPE_INTEGER}},
> {{"_DIS", 0, 0}},
> +
> + {{"_DLM", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each (1 Ref, 0/1 Optional Buf/Ref) */
> + {{{ACPI_PTYPE2_FIX_VAR, ACPI_RTYPE_REFERENCE, 1, ACPI_RTYPE_REFERENCE | ACPI_RTYPE_BUFFER}, 0,0}},
> +
> {{"_DMA", 0, ACPI_RTYPE_BUFFER}},
> {{"_DOD", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Ints) */
> {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 0,0}, 0,0}},
> @@ -336,6 +360,8 @@ static const ACPI_PREDEFINED_INFO PredefinedNames[] =
> {{"_EJ3", 1, 0}},
> {{"_EJ4", 1, 0}},
> {{"_EJD", 0, ACPI_RTYPE_STRING}},
> + {{"_ERR", 3, ACPI_RTYPE_INTEGER}}, /* Internal use only, used by ACPICA test suites */
> + {{"_EVT", 1, 0}},
> {{"_FDE", 0, ACPI_RTYPE_BUFFER}},
> {{"_FDI", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (16 Int) */
> {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 16,0}, 0,0}},
> @@ -356,14 +382,17 @@ static const ACPI_PREDEFINED_INFO PredefinedNames[] =
>
>
> {{"_GAI", 0, ACPI_RTYPE_INTEGER}},
> + {{"_GCP", 0, ACPI_RTYPE_INTEGER}},
> {{"_GHL", 0, ACPI_RTYPE_INTEGER}},
> {{"_GLK", 0, ACPI_RTYPE_INTEGER}},
> {{"_GPD", 0, ACPI_RTYPE_INTEGER}},
> {{"_GPE", 0, ACPI_RTYPE_INTEGER}}, /* _GPE method, not _GPE scope */
> + {{"_GRT", 0, ACPI_RTYPE_BUFFER}},
> {{"_GSB", 0, ACPI_RTYPE_INTEGER}},
> {{"_GTF", 0, ACPI_RTYPE_BUFFER}},
> {{"_GTM", 0, ACPI_RTYPE_BUFFER}},
> {{"_GTS", 1, 0}},
> + {{"_GWS", 1, ACPI_RTYPE_INTEGER}},
> {{"_HID", 0, ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING}},
> {{"_HOT", 0, ACPI_RTYPE_INTEGER}},
> {{"_HPP", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (4 Int) */
> @@ -378,6 +407,7 @@ static const ACPI_PREDEFINED_INFO PredefinedNames[] =
> {{"_HPX", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each (var Ints) */
> {{{ACPI_PTYPE2_MIN, ACPI_RTYPE_INTEGER, 5,0}, 0,0}},
>
> + {{"_HRV", 0, ACPI_RTYPE_INTEGER}},
> {{"_IFT", 0, ACPI_RTYPE_INTEGER}}, /* See IPMI spec */
> {{"_INI", 0, 0}},
> {{"_IRC", 0, 0}},
> @@ -435,6 +465,9 @@ static const ACPI_PREDEFINED_INFO PredefinedNames[] =
> {{"_PR3", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
> {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
>
> + {{"_PRE", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
> + {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
> +
> {{"_PRL", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
> {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
>
> @@ -465,6 +498,7 @@ static const ACPI_PREDEFINED_INFO PredefinedNames[] =
> {{"_PSD", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each (5 Int) with count */
> {{{ACPI_PTYPE2_COUNT, ACPI_RTYPE_INTEGER,0,0}, 0,0}},
>
> + {{"_PSE", 1, 0}},
> {{"_PSL", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
> {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
>
> @@ -531,6 +565,7 @@ static const ACPI_PREDEFINED_INFO PredefinedNames[] =
> {{"_SLI", 0, ACPI_RTYPE_BUFFER}},
> {{"_SPD", 1, ACPI_RTYPE_INTEGER}},
> {{"_SRS", 1, 0}},
> + {{"_SRT", 1, ACPI_RTYPE_INTEGER}},
> {{"_SRV", 0, ACPI_RTYPE_INTEGER}}, /* See IPMI spec */
> {{"_SST", 1, 0}},
> {{"_STA", 0, ACPI_RTYPE_INTEGER}},
> @@ -538,6 +573,7 @@ static const ACPI_PREDEFINED_INFO PredefinedNames[] =
> {{"_STP", 2, ACPI_RTYPE_INTEGER}},
> {{"_STR", 0, ACPI_RTYPE_BUFFER}},
> {{"_STV", 2, ACPI_RTYPE_INTEGER}},
> + {{"_SUB", 0, ACPI_RTYPE_STRING}},
> {{"_SUN", 0, ACPI_RTYPE_INTEGER}},
> {{"_SWS", 0, ACPI_RTYPE_INTEGER}},
> {{"_TC1", 0, ACPI_RTYPE_INTEGER}},
> diff --git a/src/acpica/source/include/acresrc.h b/src/acpica/source/include/acresrc.h
> index 05ff90c..ea14289 100644
> --- a/src/acpica/source/include/acresrc.h
> +++ b/src/acpica/source/include/acresrc.h
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -148,28 +148,42 @@ typedef const struct acpi_rsconvert_info
>
> /* Resource conversion opcodes */
>
> -#define ACPI_RSC_INITGET 0
> -#define ACPI_RSC_INITSET 1
> -#define ACPI_RSC_FLAGINIT 2
> -#define ACPI_RSC_1BITFLAG 3
> -#define ACPI_RSC_2BITFLAG 4
> -#define ACPI_RSC_COUNT 5
> -#define ACPI_RSC_COUNT16 6
> -#define ACPI_RSC_LENGTH 7
> -#define ACPI_RSC_MOVE8 8
> -#define ACPI_RSC_MOVE16 9
> -#define ACPI_RSC_MOVE32 10
> -#define ACPI_RSC_MOVE64 11
> -#define ACPI_RSC_SET8 12
> -#define ACPI_RSC_DATA8 13
> -#define ACPI_RSC_ADDRESS 14
> -#define ACPI_RSC_SOURCE 15
> -#define ACPI_RSC_SOURCEX 16
> -#define ACPI_RSC_BITMASK 17
> -#define ACPI_RSC_BITMASK16 18
> -#define ACPI_RSC_EXIT_NE 19
> -#define ACPI_RSC_EXIT_LE 20
> -#define ACPI_RSC_EXIT_EQ 21
> +typedef enum
> +{
> + ACPI_RSC_INITGET = 0,
> + ACPI_RSC_INITSET,
> + ACPI_RSC_FLAGINIT,
> + ACPI_RSC_1BITFLAG,
> + ACPI_RSC_2BITFLAG,
> + ACPI_RSC_3BITFLAG,
> + ACPI_RSC_ADDRESS,
> + ACPI_RSC_BITMASK,
> + ACPI_RSC_BITMASK16,
> + ACPI_RSC_COUNT,
> + ACPI_RSC_COUNT16,
> + ACPI_RSC_COUNT_GPIO_PIN,
> + ACPI_RSC_COUNT_GPIO_RES,
> + ACPI_RSC_COUNT_GPIO_VEN,
> + ACPI_RSC_COUNT_SERIAL_RES,
> + ACPI_RSC_COUNT_SERIAL_VEN,
> + ACPI_RSC_DATA8,
> + ACPI_RSC_EXIT_EQ,
> + ACPI_RSC_EXIT_LE,
> + ACPI_RSC_EXIT_NE,
> + ACPI_RSC_LENGTH,
> + ACPI_RSC_MOVE_GPIO_PIN,
> + ACPI_RSC_MOVE_GPIO_RES,
> + ACPI_RSC_MOVE_SERIAL_RES,
> + ACPI_RSC_MOVE_SERIAL_VEN,
> + ACPI_RSC_MOVE8,
> + ACPI_RSC_MOVE16,
> + ACPI_RSC_MOVE32,
> + ACPI_RSC_MOVE64,
> + ACPI_RSC_SET8,
> + ACPI_RSC_SOURCE,
> + ACPI_RSC_SOURCEX
> +
> +} ACPI_RSCONVERT_OPCODES;
>
> /* Resource Conversion sub-opcodes */
>
> @@ -182,6 +196,9 @@ typedef const struct acpi_rsconvert_info
> #define AML_OFFSET(f) (UINT8) ACPI_OFFSET (AML_RESOURCE,f)
>
>
> +/*
> + * Individual entry for the resource dump tables
> + */
> typedef const struct acpi_rsdump_info
> {
> UINT8 Opcode;
> @@ -193,20 +210,27 @@ typedef const struct acpi_rsdump_info
>
> /* Values for the Opcode field above */
>
> -#define ACPI_RSD_TITLE 0
> -#define ACPI_RSD_LITERAL 1
> -#define ACPI_RSD_STRING 2
> -#define ACPI_RSD_UINT8 3
> -#define ACPI_RSD_UINT16 4
> -#define ACPI_RSD_UINT32 5
> -#define ACPI_RSD_UINT64 6
> -#define ACPI_RSD_1BITFLAG 7
> -#define ACPI_RSD_2BITFLAG 8
> -#define ACPI_RSD_SHORTLIST 9
> -#define ACPI_RSD_LONGLIST 10
> -#define ACPI_RSD_DWORDLIST 11
> -#define ACPI_RSD_ADDRESS 12
> -#define ACPI_RSD_SOURCE 13
> +typedef enum
> +{
> + ACPI_RSD_TITLE = 0,
> + ACPI_RSD_1BITFLAG,
> + ACPI_RSD_2BITFLAG,
> + ACPI_RSD_3BITFLAG,
> + ACPI_RSD_ADDRESS,
> + ACPI_RSD_DWORDLIST,
> + ACPI_RSD_LITERAL,
> + ACPI_RSD_LONGLIST,
> + ACPI_RSD_SHORTLIST,
> + ACPI_RSD_SHORTLISTX,
> + ACPI_RSD_SOURCE,
> + ACPI_RSD_STRING,
> + ACPI_RSD_UINT8,
> + ACPI_RSD_UINT16,
> + ACPI_RSD_UINT32,
> + ACPI_RSD_UINT64,
> + ACPI_RSD_WORDLIST
> +
> +} ACPI_RSDUMP_OPCODES;
>
> /* restore default alignment */
>
> @@ -216,13 +240,16 @@ typedef const struct acpi_rsdump_info
> /* Resource tables indexed by internal resource type */
>
> extern const UINT8 AcpiGbl_AmlResourceSizes[];
> +extern const UINT8 AcpiGbl_AmlResourceSerialBusSizes[];
> extern ACPI_RSCONVERT_INFO *AcpiGbl_SetResourceDispatch[];
>
> /* Resource tables indexed by raw AML resource descriptor type */
>
> extern const UINT8 AcpiGbl_ResourceStructSizes[];
> +extern const UINT8 AcpiGbl_ResourceStructSerialBusSizes[];
> extern ACPI_RSCONVERT_INFO *AcpiGbl_GetResourceDispatch[];
>
> +extern ACPI_RSCONVERT_INFO *AcpiGbl_ConvertResourceSerialBusDispatch[];
>
> typedef struct acpi_vendor_walk_info
> {
> @@ -281,6 +308,10 @@ AcpiRsSetSrsMethodData (
> ACPI_NAMESPACE_NODE *Node,
> ACPI_BUFFER *RetBuffer);
>
> +ACPI_STATUS
> +AcpiRsGetAeiMethodData (
> + ACPI_NAMESPACE_NODE *Node,
> + ACPI_BUFFER *RetBuffer);
>
> /*
> * rscalc
> @@ -421,6 +452,11 @@ extern ACPI_RSCONVERT_INFO AcpiRsConvertAddress16[];
> extern ACPI_RSCONVERT_INFO AcpiRsConvertExtIrq[];
> extern ACPI_RSCONVERT_INFO AcpiRsConvertAddress64[];
> extern ACPI_RSCONVERT_INFO AcpiRsConvertExtAddress64[];
> +extern ACPI_RSCONVERT_INFO AcpiRsConvertGpio[];
> +extern ACPI_RSCONVERT_INFO AcpiRsConvertFixedDma[];
> +extern ACPI_RSCONVERT_INFO AcpiRsConvertI2cSerialBus[];
> +extern ACPI_RSCONVERT_INFO AcpiRsConvertSpiSerialBus[];
> +extern ACPI_RSCONVERT_INFO AcpiRsConvertUartSerialBus[];
>
> /* These resources require separate get/set tables */
>
> @@ -439,6 +475,7 @@ extern ACPI_RSCONVERT_INFO AcpiRsSetVendor[];
> * rsinfo
> */
> extern ACPI_RSDUMP_INFO *AcpiGbl_DumpResourceDispatch[];
> +extern ACPI_RSDUMP_INFO *AcpiGbl_DumpSerialBusDispatch[];
>
> /*
> * rsdump
> @@ -460,6 +497,12 @@ extern ACPI_RSDUMP_INFO AcpiRsDumpAddress64[];
> extern ACPI_RSDUMP_INFO AcpiRsDumpExtAddress64[];
> extern ACPI_RSDUMP_INFO AcpiRsDumpExtIrq[];
> extern ACPI_RSDUMP_INFO AcpiRsDumpGenericReg[];
> +extern ACPI_RSDUMP_INFO AcpiRsDumpGpio[];
> +extern ACPI_RSDUMP_INFO AcpiRsDumpFixedDma[];
> +extern ACPI_RSDUMP_INFO AcpiRsDumpCommonSerialBus[];
> +extern ACPI_RSDUMP_INFO AcpiRsDumpI2cSerialBus[];
> +extern ACPI_RSDUMP_INFO AcpiRsDumpSpiSerialBus[];
> +extern ACPI_RSDUMP_INFO AcpiRsDumpUartSerialBus[];
> #endif
>
> #endif /* __ACRESRC_H__ */
> diff --git a/src/acpica/source/include/acrestyp.h b/src/acpica/source/include/acrestyp.h
> index d85e4a9..797c1d1 100644
> --- a/src/acpica/source/include/acrestyp.h
> +++ b/src/acpica/source/include/acrestyp.h
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -134,11 +134,14 @@ typedef UINT32 ACPI_RSDESC_SIZE; /* Max Resource Descr
> #define ACPI_WRITE_COMBINING_MEMORY (UINT8) 0x02
> #define ACPI_PREFETCHABLE_MEMORY (UINT8) 0x03
>
> +/*! [Begin] no source code translation */
> /*
> * IO Attributes
> * The ISA IO ranges are: n000-n0FFh, n400-n4FFh, n800-n8FFh, nC00-nCFFh.
> * The non-ISA IO ranges are: n100-n3FFh, n500-n7FFh, n900-nBFFh, nCD0-nFFFh.
> */
> +/*! [End] no source code translation !*/
> +
> #define ACPI_NON_ISA_ONLY_RANGES (UINT8) 0x01
> #define ACPI_ISA_ONLY_RANGES (UINT8) 0x02
> #define ACPI_ENTIRE_RANGE (ACPI_NON_ISA_ONLY_RANGES | ACPI_ISA_ONLY_RANGES)
> @@ -154,16 +157,26 @@ typedef UINT32 ACPI_RSDESC_SIZE; /* Max Resource Descr
> #define ACPI_DECODE_16 (UINT8) 0x01 /* 16-bit IO address decode */
>
> /*
> - * IRQ Attributes
> + * Interrupt attributes - used in multiple descriptors
> */
> +
> +/* Triggering */
> +
> #define ACPI_LEVEL_SENSITIVE (UINT8) 0x00
> #define ACPI_EDGE_SENSITIVE (UINT8) 0x01
>
> +/* Polarity */
> +
> #define ACPI_ACTIVE_HIGH (UINT8) 0x00
> #define ACPI_ACTIVE_LOW (UINT8) 0x01
> +#define ACPI_ACTIVE_BOTH (UINT8) 0x02
> +
> +/* Sharing */
>
> #define ACPI_EXCLUSIVE (UINT8) 0x00
> #define ACPI_SHARED (UINT8) 0x01
> +#define ACPI_EXCLUSIVE_AND_WAKE (UINT8) 0x02
> +#define ACPI_SHARED_AND_WAKE (UINT8) 0x03
>
> /*
> * DMA Attributes
> @@ -200,6 +213,8 @@ typedef UINT32 ACPI_RSDESC_SIZE; /* Max Resource Descr
> #define ACPI_POS_DECODE (UINT8) 0x00
> #define ACPI_SUB_DECODE (UINT8) 0x01
>
> +/* Producer/Consumer */
> +
> #define ACPI_PRODUCER (UINT8) 0x00
> #define ACPI_CONSUMER (UINT8) 0x01
>
> @@ -239,7 +254,7 @@ typedef struct acpi_resource_irq
>
> } ACPI_RESOURCE_IRQ;
>
> -typedef struct ACPI_RESOURCE_DMA
> +typedef struct acpi_resource_dma
> {
> UINT8 Type;
> UINT8 BusMaster;
> @@ -281,6 +296,24 @@ typedef struct acpi_resource_fixed_io
>
> } ACPI_RESOURCE_FIXED_IO;
>
> +typedef struct acpi_resource_fixed_dma
> +{
> + UINT16 RequestLines;
> + UINT16 Channels;
> + UINT8 Width;
> +
> +} ACPI_RESOURCE_FIXED_DMA;
> +
> +/* Values for Width field above */
> +
> +#define ACPI_DMA_WIDTH8 0
> +#define ACPI_DMA_WIDTH16 1
> +#define ACPI_DMA_WIDTH32 2
> +#define ACPI_DMA_WIDTH64 3
> +#define ACPI_DMA_WIDTH128 4
> +#define ACPI_DMA_WIDTH256 5
> +
> +
> typedef struct acpi_resource_vendor
> {
> UINT16 ByteLength;
> @@ -457,6 +490,184 @@ typedef struct acpi_resource_generic_register
>
> } ACPI_RESOURCE_GENERIC_REGISTER;
>
> +typedef struct acpi_resource_gpio
> +{
> + UINT8 RevisionId;
> + UINT8 ConnectionType;
> + UINT8 ProducerConsumer; /* For values, see Producer/Consumer above */
> + UINT8 PinConfig;
> + UINT8 Sharable; /* For values, see Interrupt Attributes above */
> + UINT8 IoRestriction;
> + UINT8 Triggering; /* For values, see Interrupt Attributes above */
> + UINT8 Polarity; /* For values, see Interrupt Attributes above */
> + UINT16 DriveStrength;
> + UINT16 DebounceTimeout;
> + UINT16 PinTableLength;
> + UINT16 VendorLength;
> + ACPI_RESOURCE_SOURCE ResourceSource;
> + UINT16 *PinTable;
> + UINT8 *VendorData;
> +
> +} ACPI_RESOURCE_GPIO;
> +
> +/* Values for GPIO ConnectionType field above */
> +
> +#define ACPI_RESOURCE_GPIO_TYPE_INT 0
> +#define ACPI_RESOURCE_GPIO_TYPE_IO 1
> +
> +/* Values for PinConfig field above */
> +
> +#define ACPI_PIN_CONFIG_DEFAULT 0
> +#define ACPI_PIN_CONFIG_PULLUP 1
> +#define ACPI_PIN_CONFIG_PULLDOWN 2
> +#define ACPI_PIN_CONFIG_NOPULL 3
> +
> +/* Values for IoRestriction field above */
> +
> +#define ACPI_IO_RESTRICT_NONE 0
> +#define ACPI_IO_RESTRICT_INPUT 1
> +#define ACPI_IO_RESTRICT_OUTPUT 2
> +#define ACPI_IO_RESTRICT_NONE_PRESERVE 3
> +
> +
> +/* Common structure for I2C, SPI, and UART serial descriptors */
> +
> +#define ACPI_RESOURCE_SERIAL_COMMON \
> + UINT8 RevisionId; \
> + UINT8 Type; \
> + UINT8 ProducerConsumer; /* For values, see Producer/Consumer above */\
> + UINT8 SlaveMode; \
> + UINT8 TypeRevisionId; \
> + UINT16 TypeDataLength; \
> + UINT16 VendorLength; \
> + ACPI_RESOURCE_SOURCE ResourceSource; \
> + UINT8 *VendorData;
> +
> +typedef struct acpi_resource_common_serialbus
> +{
> + ACPI_RESOURCE_SERIAL_COMMON
> +
> +} ACPI_RESOURCE_COMMON_SERIALBUS;
> +
> +/* Values for the Type field above */
> +
> +#define ACPI_RESOURCE_SERIAL_TYPE_I2C 1
> +#define ACPI_RESOURCE_SERIAL_TYPE_SPI 2
> +#define ACPI_RESOURCE_SERIAL_TYPE_UART 3
> +
> +/* Values for SlaveMode field above */
> +
> +#define ACPI_CONTROLLER_INITIATED 0
> +#define ACPI_DEVICE_INITIATED 1
> +
> +
> +typedef struct acpi_resource_i2c_serialbus
> +{
> + ACPI_RESOURCE_SERIAL_COMMON
> + UINT8 AccessMode;
> + UINT16 SlaveAddress;
> + UINT32 ConnectionSpeed;
> +
> +} ACPI_RESOURCE_I2C_SERIALBUS;
> +
> +/* Values for AccessMode field above */
> +
> +#define ACPI_I2C_7BIT_MODE 0
> +#define ACPI_I2C_10BIT_MODE 1
> +
> +
> +typedef struct acpi_resource_spi_serialbus
> +{
> + ACPI_RESOURCE_SERIAL_COMMON
> + UINT8 WireMode;
> + UINT8 DevicePolarity;
> + UINT8 DataBitLength;
> + UINT8 ClockPhase;
> + UINT8 ClockPolarity;
> + UINT16 DeviceSelection;
> + UINT32 ConnectionSpeed;
> +
> +} ACPI_RESOURCE_SPI_SERIALBUS;
> +
> +/* Values for WireMode field above */
> +
> +#define ACPI_SPI_4WIRE_MODE 0
> +#define ACPI_SPI_3WIRE_MODE 1
> +
> +/* Values for DevicePolarity field above */
> +
> +#define ACPI_SPI_ACTIVE_LOW 0
> +#define ACPI_SPI_ACTIVE_HIGH 1
> +
> +/* Values for ClockPhase field above */
> +
> +#define ACPI_SPI_FIRST_PHASE 0
> +#define ACPI_SPI_SECOND_PHASE 1
> +
> +/* Values for ClockPolarity field above */
> +
> +#define ACPI_SPI_START_LOW 0
> +#define ACPI_SPI_START_HIGH 1
> +
> +
> +typedef struct acpi_resource_uart_serialbus
> +{
> + ACPI_RESOURCE_SERIAL_COMMON
> + UINT8 Endian;
> + UINT8 DataBits;
> + UINT8 StopBits;
> + UINT8 FlowControl;
> + UINT8 Parity;
> + UINT8 LinesEnabled;
> + UINT16 RxFifoSize;
> + UINT16 TxFifoSize;
> + UINT32 DefaultBaudRate;
> +
> +} ACPI_RESOURCE_UART_SERIALBUS;
> +
> +/* Values for Endian field above */
> +
> +#define ACPI_UART_LITTLE_ENDIAN 0
> +#define ACPI_UART_BIG_ENDIAN 1
> +
> +/* Values for DataBits field above */
> +
> +#define ACPI_UART_5_DATA_BITS 0
> +#define ACPI_UART_6_DATA_BITS 1
> +#define ACPI_UART_7_DATA_BITS 2
> +#define ACPI_UART_8_DATA_BITS 3
> +#define ACPI_UART_9_DATA_BITS 4
> +
> +/* Values for StopBits field above */
> +
> +#define ACPI_UART_NO_STOP_BITS 0
> +#define ACPI_UART_1_STOP_BIT 1
> +#define ACPI_UART_1P5_STOP_BITS 2
> +#define ACPI_UART_2_STOP_BITS 3
> +
> +/* Values for FlowControl field above */
> +
> +#define ACPI_UART_FLOW_CONTROL_NONE 0
> +#define ACPI_UART_FLOW_CONTROL_HW 1
> +#define ACPI_UART_FLOW_CONTROL_XON_XOFF 2
> +
> +/* Values for Parity field above */
> +
> +#define ACPI_UART_PARITY_NONE 0
> +#define ACPI_UART_PARITY_EVEN 1
> +#define ACPI_UART_PARITY_ODD 2
> +#define ACPI_UART_PARITY_MARK 3
> +#define ACPI_UART_PARITY_SPACE 4
> +
> +/* Values for LinesEnabled bitfield above */
> +
> +#define ACPI_UART_CARRIER_DETECT (1<<2)
> +#define ACPI_UART_RING_INDICATOR (1<<3)
> +#define ACPI_UART_DATA_SET_READY (1<<4)
> +#define ACPI_UART_DATA_TERMINAL_READY (1<<5)
> +#define ACPI_UART_CLEAR_TO_SEND (1<<6)
> +#define ACPI_UART_REQUEST_TO_SEND (1<<7)
> +
>
> /* ACPI_RESOURCE_TYPEs */
>
> @@ -477,7 +688,10 @@ typedef struct acpi_resource_generic_register
> #define ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64 14 /* ACPI 3.0 */
> #define ACPI_RESOURCE_TYPE_EXTENDED_IRQ 15
> #define ACPI_RESOURCE_TYPE_GENERIC_REGISTER 16
> -#define ACPI_RESOURCE_TYPE_MAX 16
> +#define ACPI_RESOURCE_TYPE_GPIO 17 /* ACPI 5.0 */
> +#define ACPI_RESOURCE_TYPE_FIXED_DMA 18 /* ACPI 5.0 */
> +#define ACPI_RESOURCE_TYPE_SERIAL_BUS 19 /* ACPI 5.0 */
> +#define ACPI_RESOURCE_TYPE_MAX 19
>
> /* Master union for resource descriptors */
>
> @@ -488,6 +702,7 @@ typedef union acpi_resource_data
> ACPI_RESOURCE_START_DEPENDENT StartDpf;
> ACPI_RESOURCE_IO Io;
> ACPI_RESOURCE_FIXED_IO FixedIo;
> + ACPI_RESOURCE_FIXED_DMA FixedDma;
> ACPI_RESOURCE_VENDOR Vendor;
> ACPI_RESOURCE_VENDOR_TYPED VendorTyped;
> ACPI_RESOURCE_END_TAG EndTag;
> @@ -500,6 +715,11 @@ typedef union acpi_resource_data
> ACPI_RESOURCE_EXTENDED_ADDRESS64 ExtAddress64;
> ACPI_RESOURCE_EXTENDED_IRQ ExtendedIrq;
> ACPI_RESOURCE_GENERIC_REGISTER GenericReg;
> + ACPI_RESOURCE_GPIO Gpio;
> + ACPI_RESOURCE_I2C_SERIALBUS I2cSerialBus;
> + ACPI_RESOURCE_SPI_SERIALBUS SpiSerialBus;
> + ACPI_RESOURCE_UART_SERIALBUS UartSerialBus;
> + ACPI_RESOURCE_COMMON_SERIALBUS CommonSerialBus;
>
> /* Common fields */
>
> diff --git a/src/acpica/source/include/acstruct.h b/src/acpica/source/include/acstruct.h
> index e90d8ec..411b195 100644
> --- a/src/acpica/source/include/acstruct.h
> +++ b/src/acpica/source/include/acstruct.h
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/include/actables.h b/src/acpica/source/include/actables.h
> index d19e684..7cde562 100644
> --- a/src/acpica/source/include/actables.h
> +++ b/src/acpica/source/include/actables.h
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -156,6 +156,11 @@ ACPI_STATUS
> AcpiTbVerifyTable (
> ACPI_TABLE_DESC *TableDesc);
>
> +ACPI_TABLE_HEADER *
> +AcpiTbTableOverride (
> + ACPI_TABLE_HEADER *TableHeader,
> + ACPI_TABLE_DESC *TableDesc);
> +
> ACPI_STATUS
> AcpiTbAddTable (
> ACPI_TABLE_DESC *TableDesc,
> diff --git a/src/acpica/source/include/actbl.h b/src/acpica/source/include/actbl.h
> index 3cec930..733715f 100644
> --- a/src/acpica/source/include/actbl.h
> +++ b/src/acpica/source/include/actbl.h
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -370,6 +370,8 @@ typedef struct acpi_table_fadt
> ACPI_GENERIC_ADDRESS XPmTimerBlock; /* 64-bit Extended Power Mgt Timer Ctrl Reg Blk address */
> ACPI_GENERIC_ADDRESS XGpe0Block; /* 64-bit Extended General Purpose Event 0 Reg Blk address */
> ACPI_GENERIC_ADDRESS XGpe1Block; /* 64-bit Extended General Purpose Event 1 Reg Blk address */
> + ACPI_GENERIC_ADDRESS SleepControl; /* 64-bit Sleep Control register */
> + ACPI_GENERIC_ADDRESS SleepStatus; /* 64-bit Sleep Status register */
>
> } ACPI_TABLE_FADT;
>
> @@ -381,6 +383,7 @@ typedef struct acpi_table_fadt
> #define ACPI_FADT_NO_VGA (1<<2) /* 02: [V4] It is not safe to probe for VGA hardware */
> #define ACPI_FADT_NO_MSI (1<<3) /* 03: [V4] Message Signaled Interrupts (MSI) must not be enabled */
> #define ACPI_FADT_NO_ASPM (1<<4) /* 04: [V4] PCIe ASPM control must not be enabled */
> +#define ACPI_FADT_NO_CMOS_RTC (1<<5) /* 05: [V5] No CMOS real-time clock present */
>
> /* Masks for FADT flags */
>
> @@ -404,6 +407,8 @@ typedef struct acpi_table_fadt
> #define ACPI_FADT_REMOTE_POWER_ON (1<<17) /* 17: [V4] System is compatible with remote power on (ACPI 3.0) */
> #define ACPI_FADT_APIC_CLUSTER (1<<18) /* 18: [V4] All local APICs must use cluster model (ACPI 3.0) */
> #define ACPI_FADT_APIC_PHYSICAL (1<<19) /* 19: [V4] All local xAPICs must use physical dest mode (ACPI 3.0) */
> +#define ACPI_FADT_HW_REDUCED (1<<20) /* 20: [V5] ACPI hardware is not implemented (ACPI 5.0) */
> +#define ACPI_FADT_LOW_POWER_S0 (1<<21) /* 21: [V5] S0 power savings are equal or better than S3 (ACPI 5.0) */
>
>
> /* Values for PreferredProfile (Prefered Power Management Profiles) */
> @@ -416,9 +421,18 @@ enum AcpiPreferedPmProfiles
> PM_WORKSTATION = 3,
> PM_ENTERPRISE_SERVER = 4,
> PM_SOHO_SERVER = 5,
> - PM_APPLIANCE_PC = 6
> + PM_APPLIANCE_PC = 6,
> + PM_PERFORMANCE_SERVER = 7,
> + PM_TABLET = 8
> };
>
> +/* Values for SleepStatus and SleepControl registers (V5 FADT) */
> +
> +#define ACPI_X_WAKE_STATUS 0x80
> +#define ACPI_X_SLEEP_TYPE_MASK 0x1C
> +#define ACPI_X_SLEEP_TYPE_POSITION 0x02
> +#define ACPI_X_SLEEP_ENABLE 0x20
> +
>
> /* Reset to default packing */
>
> @@ -464,10 +478,11 @@ typedef struct acpi_table_desc
> */
> #include "actbl1.h"
> #include "actbl2.h"
> +#include "actbl3.h"
>
> /* Macros used to generate offsets to specific table fields */
>
> -#define ACPI_FADT_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_FADT, f)
> +#define ACPI_FADT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_FADT, f)
>
> /*
> * Sizes of the various flavors of FADT. We need to look closely
> @@ -477,12 +492,15 @@ typedef struct acpi_table_desc
> * FADT is the bottom line as to what the version really is.
> *
> * For reference, the values below are as follows:
> - * FADT V1 size: 0x74
> - * FADT V2 size: 0x84
> - * FADT V3+ size: 0xF4
> + * FADT V1 size: 0x074
> + * FADT V2 size: 0x084
> + * FADT V3 size: 0x0F4
> + * FADT V4 size: 0x0F4
> + * FADT V5 size: 0x10C
> */
> #define ACPI_FADT_V1_SIZE (UINT32) (ACPI_FADT_OFFSET (Flags) + 4)
> #define ACPI_FADT_V2_SIZE (UINT32) (ACPI_FADT_OFFSET (Reserved4[0]) + 3)
> -#define ACPI_FADT_V3_SIZE (UINT32) (sizeof (ACPI_TABLE_FADT))
> +#define ACPI_FADT_V3_SIZE (UINT32) (ACPI_FADT_OFFSET (SleepControl))
> +#define ACPI_FADT_V5_SIZE (UINT32) (sizeof (ACPI_TABLE_FADT))
>
> #endif /* __ACTBL_H__ */
> diff --git a/src/acpica/source/include/actbl1.h b/src/acpica/source/include/actbl1.h
> index a593f44..6e6edcc 100644
> --- a/src/acpica/source/include/actbl1.h
> +++ b/src/acpica/source/include/actbl1.h
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -324,16 +324,17 @@ typedef struct acpi_einj_entry
>
> enum AcpiEinjActions
> {
> - ACPI_EINJ_BEGIN_OPERATION = 0,
> - ACPI_EINJ_GET_TRIGGER_TABLE = 1,
> - ACPI_EINJ_SET_ERROR_TYPE = 2,
> - ACPI_EINJ_GET_ERROR_TYPE = 3,
> - ACPI_EINJ_END_OPERATION = 4,
> - ACPI_EINJ_EXECUTE_OPERATION = 5,
> - ACPI_EINJ_CHECK_BUSY_STATUS = 6,
> - ACPI_EINJ_GET_COMMAND_STATUS = 7,
> - ACPI_EINJ_ACTION_RESERVED = 8, /* 8 and greater are reserved */
> - ACPI_EINJ_TRIGGER_ERROR = 0xFF /* Except for this value */
> + ACPI_EINJ_BEGIN_OPERATION = 0,
> + ACPI_EINJ_GET_TRIGGER_TABLE = 1,
> + ACPI_EINJ_SET_ERROR_TYPE = 2,
> + ACPI_EINJ_GET_ERROR_TYPE = 3,
> + ACPI_EINJ_END_OPERATION = 4,
> + ACPI_EINJ_EXECUTE_OPERATION = 5,
> + ACPI_EINJ_CHECK_BUSY_STATUS = 6,
> + ACPI_EINJ_GET_COMMAND_STATUS = 7,
> + ACPI_EINJ_SET_ERROR_TYPE_WITH_ADDRESS = 8,
> + ACPI_EINJ_ACTION_RESERVED = 9, /* 9 and greater are reserved */
> + ACPI_EINJ_TRIGGER_ERROR = 0xFF /* Except for this value */
> };
>
> /* Values for Instruction field above */
> @@ -345,9 +346,33 @@ enum AcpiEinjInstructions
> ACPI_EINJ_WRITE_REGISTER = 2,
> ACPI_EINJ_WRITE_REGISTER_VALUE = 3,
> ACPI_EINJ_NOOP = 4,
> - ACPI_EINJ_INSTRUCTION_RESERVED = 5 /* 5 and greater are reserved */
> + ACPI_EINJ_FLUSH_CACHELINE = 5,
> + ACPI_EINJ_INSTRUCTION_RESERVED = 6 /* 6 and greater are reserved */
> };
>
> +typedef struct acpi_einj_error_type_with_addr
> +{
> + UINT32 ErrorType;
> + UINT32 VendorStructOffset;
> + UINT32 Flags;
> + UINT32 ApicId;
> + UINT64 Address;
> + UINT64 Range;
> + UINT32 PcieId;
> +
> +} ACPI_EINJ_ERROR_TYPE_WITH_ADDR;
> +
> +typedef struct acpi_einj_vendor
> +{
> + UINT32 Length;
> + UINT32 PcieId;
> + UINT16 VendorId;
> + UINT16 DeviceId;
> + UINT8 RevisionId;
> + UINT8 Reserved[3];
> +
> +} ACPI_EINJ_VENDOR;
> +
>
> /* EINJ Trigger Error Action Table */
>
> @@ -385,6 +410,7 @@ enum AcpiEinjCommandStatus
> #define ACPI_EINJ_PLATFORM_CORRECTABLE (1<<9)
> #define ACPI_EINJ_PLATFORM_UNCORRECTABLE (1<<10)
> #define ACPI_EINJ_PLATFORM_FATAL (1<<11)
> +#define ACPI_EINJ_VENDOR_DEFINED (1<<31)
>
>
> /*******************************************************************************
> @@ -803,7 +829,9 @@ enum AcpiMadtType
> ACPI_MADT_TYPE_INTERRUPT_SOURCE = 8,
> ACPI_MADT_TYPE_LOCAL_X2APIC = 9,
> ACPI_MADT_TYPE_LOCAL_X2APIC_NMI = 10,
> - ACPI_MADT_TYPE_RESERVED = 11 /* 11 and greater are reserved */
> + ACPI_MADT_TYPE_GENERIC_INTERRUPT = 11,
> + ACPI_MADT_TYPE_GENERIC_DISTRIBUTOR = 12,
> + ACPI_MADT_TYPE_RESERVED = 13 /* 13 and greater are reserved */
> };
>
>
> @@ -958,11 +986,42 @@ typedef struct acpi_madt_local_x2apic_nmi
> } ACPI_MADT_LOCAL_X2APIC_NMI;
>
>
> +/* 11: Generic Interrupt (ACPI 5.0) */
> +
> +typedef struct acpi_madt_generic_interrupt
> +{
> + ACPI_SUBTABLE_HEADER Header;
> + UINT16 Reserved; /* Reserved - must be zero */
> + UINT32 GicId;
> + UINT32 Uid;
> + UINT32 Flags;
> + UINT32 ParkingVersion;
> + UINT32 PerformanceInterrupt;
> + UINT64 ParkedAddress;
> + UINT64 BaseAddress;
> +
> +} ACPI_MADT_GENERIC_INTERRUPT;
> +
> +
> +/* 12: Generic Distributor (ACPI 5.0) */
> +
> +typedef struct acpi_madt_generic_distributor
> +{
> + ACPI_SUBTABLE_HEADER Header;
> + UINT16 Reserved; /* Reserved - must be zero */
> + UINT32 GicId;
> + UINT64 BaseAddress;
> + UINT32 GlobalIrqBase;
> + UINT32 Reserved2; /* Reserved - must be zero */
> +
> +} ACPI_MADT_GENERIC_DISTRIBUTOR;
> +
> +
> /*
> * Common flags fields for MADT subtables
> */
>
> -/* MADT Local APIC flags (LapicFlags) */
> +/* MADT Local APIC flags (LapicFlags) and GIC flags */
>
> #define ACPI_MADT_ENABLED (1) /* 00: Processor is usable if set */
>
> diff --git a/src/acpica/source/include/actbl2.h b/src/acpica/source/include/actbl2.h
> index a093e85..9e0c5a6 100644
> --- a/src/acpica/source/include/actbl2.h
> +++ b/src/acpica/source/include/actbl2.h
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/include/actypes.h b/src/acpica/source/include/actypes.h
> index 10b1e67..ff90c38 100644
> --- a/src/acpica/source/include/actypes.h
> +++ b/src/acpica/source/include/actypes.h
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -592,6 +592,13 @@ typedef UINT64 ACPI_INTEGER;
> #define ACPI_SLEEP_TYPE_INVALID 0xFF
>
> /*
> + * Sleep/Wake flags
> + */
> +#define ACPI_NO_OPTIONAL_METHODS 0x00 /* Do not execute any optional methods */
> +#define ACPI_EXECUTE_GTS 0x01 /* For enter sleep interface */
> +#define ACPI_EXECUTE_BFS 0x02 /* For leave sleep prep interface */
> +
> +/*
> * Standard notify values
> */
> #define ACPI_NOTIFY_BUS_CHECK (UINT8) 0x00
> @@ -606,8 +613,9 @@ typedef UINT64 ACPI_INTEGER;
> #define ACPI_NOTIFY_DEVICE_PLD_CHECK (UINT8) 0x09
> #define ACPI_NOTIFY_RESERVED (UINT8) 0x0A
> #define ACPI_NOTIFY_LOCALITY_UPDATE (UINT8) 0x0B
> +#define ACPI_NOTIFY_SHUTDOWN_REQUEST (UINT8) 0x0C
>
> -#define ACPI_NOTIFY_MAX 0x0B
> +#define ACPI_NOTIFY_MAX 0x0C
>
> /*
> * Types associated with ACPI names and objects. The first group of
> @@ -773,7 +781,8 @@ typedef UINT32 ACPI_EVENT_STATUS;
> #define ACPI_ALL_NOTIFY (ACPI_SYSTEM_NOTIFY | ACPI_DEVICE_NOTIFY)
> #define ACPI_MAX_NOTIFY_HANDLER_TYPE 0x3
>
> -#define ACPI_MAX_SYS_NOTIFY 0x7f
> +#define ACPI_MAX_SYS_NOTIFY 0x7F
> +#define ACPI_MAX_DEVICE_SPECIFIC_NOTIFY 0xBF
>
>
> /* Address Space (Operation Region) Types */
> @@ -788,8 +797,10 @@ typedef UINT8 ACPI_ADR_SPACE_TYPE;
> #define ACPI_ADR_SPACE_CMOS (ACPI_ADR_SPACE_TYPE) 5
> #define ACPI_ADR_SPACE_PCI_BAR_TARGET (ACPI_ADR_SPACE_TYPE) 6
> #define ACPI_ADR_SPACE_IPMI (ACPI_ADR_SPACE_TYPE) 7
> +#define ACPI_ADR_SPACE_GPIO (ACPI_ADR_SPACE_TYPE) 8
> +#define ACPI_ADR_SPACE_GSBUS (ACPI_ADR_SPACE_TYPE) 9
>
> -#define ACPI_NUM_PREDEFINED_REGIONS 8
> +#define ACPI_NUM_PREDEFINED_REGIONS 10
>
> /*
> * Special Address Spaces
> @@ -862,6 +873,20 @@ typedef UINT8 ACPI_ADR_SPACE_TYPE;
> #define ACPI_DISABLE_EVENT 0
>
>
> +/* Sleep function dispatch */
> +
> +typedef ACPI_STATUS (*ACPI_SLEEP_FUNCTION) (
> + UINT8 SleepState,
> + UINT8 Flags);
> +
> +typedef struct acpi_sleep_functions
> +{
> + ACPI_SLEEP_FUNCTION LegacyFunction;
> + ACPI_SLEEP_FUNCTION ExtendedFunction;
> +
> +} ACPI_SLEEP_FUNCTIONS;
> +
> +
> /*
> * External ACPI object definition
> */
> @@ -1102,6 +1127,17 @@ ACPI_STATUS (*ACPI_ADR_SPACE_HANDLER) (
>
> #define ACPI_DEFAULT_HANDLER NULL
>
> +/* Special Context data for GenericSerialBus/GeneralPurposeIo (ACPI 5.0) */
> +
> +typedef struct acpi_connection_info
> +{
> + UINT8 *Connection;
> + UINT16 Length;
> + UINT8 AccessLength;
> +
> +} ACPI_CONNECTION_INFO;
> +
> +
> typedef
> ACPI_STATUS (*ACPI_ADR_SPACE_SETUP) (
> ACPI_HANDLE RegionHandle,
> diff --git a/src/acpica/source/include/acutils.h b/src/acpica/source/include/acutils.h
> index cef6ab3..5c21320 100644
> --- a/src/acpica/source/include/acutils.h
> +++ b/src/acpica/source/include/acutils.h
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -118,6 +118,7 @@
>
>
> extern const UINT8 AcpiGbl_ResourceAmlSizes[];
> +extern const UINT8 AcpiGbl_ResourceAmlSerialBusSizes[];
>
> /* Strings used by the disassembler and debugger resource dump routines */
>
> @@ -141,6 +142,22 @@ extern const char *AcpiGbl_SizDecode[];
> extern const char *AcpiGbl_TrsDecode[];
> extern const char *AcpiGbl_TtpDecode[];
> extern const char *AcpiGbl_TypDecode[];
> +extern const char *AcpiGbl_PpcDecode[];
> +extern const char *AcpiGbl_IorDecode[];
> +extern const char *AcpiGbl_DtsDecode[];
> +extern const char *AcpiGbl_CtDecode[];
> +extern const char *AcpiGbl_SbtDecode[];
> +extern const char *AcpiGbl_AmDecode[];
> +extern const char *AcpiGbl_SmDecode[];
> +extern const char *AcpiGbl_WmDecode[];
> +extern const char *AcpiGbl_CphDecode[];
> +extern const char *AcpiGbl_CpoDecode[];
> +extern const char *AcpiGbl_DpDecode[];
> +extern const char *AcpiGbl_EdDecode[];
> +extern const char *AcpiGbl_BpbDecode[];
> +extern const char *AcpiGbl_SbDecode[];
> +extern const char *AcpiGbl_FcDecode[];
> +extern const char *AcpiGbl_PtDecode[];
> #endif
>
> /* Types for Resource descriptor entries */
> @@ -185,7 +202,6 @@ typedef struct acpi_pkg_info
> #define DB_DWORD_DISPLAY 4
> #define DB_QWORD_DISPLAY 8
>
> -
> /*
> * utglobal - Global data structures and procedures
> */
> @@ -794,6 +810,11 @@ void
> AcpiUtStrlwr (
> char *SrcString);
>
> +int
> +AcpiUtStricmp (
> + char *String1,
> + char *String2);
> +
> void
> AcpiUtPrintString (
> char *String,
> @@ -969,6 +990,31 @@ AcpiUtCreateList (
>
> #endif /* ACPI_DBG_TRACK_ALLOCATIONS */
>
> +/*
> + * utaddress - address range check
> + */
> +ACPI_STATUS
> +AcpiUtAddAddressRange (
> + ACPI_ADR_SPACE_TYPE SpaceId,
> + ACPI_PHYSICAL_ADDRESS Address,
> + UINT32 Length,
> + ACPI_NAMESPACE_NODE *RegionNode);
> +
> +void
> +AcpiUtRemoveAddressRange (
> + ACPI_ADR_SPACE_TYPE SpaceId,
> + ACPI_NAMESPACE_NODE *RegionNode);
> +
> +UINT32
> +AcpiUtCheckAddressRange (
> + ACPI_ADR_SPACE_TYPE SpaceId,
> + ACPI_PHYSICAL_ADDRESS Address,
> + UINT32 Length,
> + BOOLEAN Warn);
> +
> +void
> +AcpiUtDeleteAddressLists (
> + void);
>
> /*
> * utxferror - various error/warning output functions
> diff --git a/src/acpica/source/include/amlcode.h b/src/acpica/source/include/amlcode.h
> index c6c62ea..2199a10 100644
> --- a/src/acpica/source/include/amlcode.h
> +++ b/src/acpica/source/include/amlcode.h
> @@ -10,7 +10,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -263,6 +263,15 @@
>
>
> /*
> + * Opcodes for "Field" operators
> + */
> +#define AML_FIELD_OFFSET_OP (UINT8) 0x00
> +#define AML_FIELD_ACCESS_OP (UINT8) 0x01
> +#define AML_FIELD_CONNECTION_OP (UINT8) 0x02 /* ACPI 5.0 */
> +#define AML_FIELD_EXT_ACCESS_OP (UINT8) 0x03 /* ACPI 5.0 */
> +
> +
> +/*
> * Internal opcodes
> * Use only "Unknown" AML opcodes, don't attempt to use
> * any valid ACPI ASCII values (A-Z, 0-9, '-')
> @@ -276,7 +285,8 @@
> #define AML_INT_METHODCALL_OP (UINT16) 0x0035
> #define AML_INT_RETURN_VALUE_OP (UINT16) 0x0036
> #define AML_INT_EVAL_SUBTREE_OP (UINT16) 0x0037
> -
> +#define AML_INT_CONNECTION_OP (UINT16) 0x0038
> +#define AML_INT_EXTACCESSFIELD_OP (UINT16) 0x0039
>
> #define ARG_NONE 0x0
>
> @@ -550,13 +560,16 @@ typedef enum
> */
> typedef enum
> {
> - AML_FIELD_ATTRIB_SMB_QUICK = 0x02,
> - AML_FIELD_ATTRIB_SMB_SEND_RCV = 0x04,
> - AML_FIELD_ATTRIB_SMB_BYTE = 0x06,
> - AML_FIELD_ATTRIB_SMB_WORD = 0x08,
> - AML_FIELD_ATTRIB_SMB_BLOCK = 0x0A,
> - AML_FIELD_ATTRIB_SMB_WORD_CALL = 0x0C,
> - AML_FIELD_ATTRIB_SMB_BLOCK_CALL = 0x0D
> + AML_FIELD_ATTRIB_QUICK = 0x02,
> + AML_FIELD_ATTRIB_SEND_RCV = 0x04,
> + AML_FIELD_ATTRIB_BYTE = 0x06,
> + AML_FIELD_ATTRIB_WORD = 0x08,
> + AML_FIELD_ATTRIB_BLOCK = 0x0A,
> + AML_FIELD_ATTRIB_MULTIBYTE = 0x0B,
> + AML_FIELD_ATTRIB_WORD_CALL = 0x0C,
> + AML_FIELD_ATTRIB_BLOCK_CALL = 0x0D,
> + AML_FIELD_ATTRIB_RAW_BYTES = 0x0E,
> + AML_FIELD_ATTRIB_RAW_PROCESS = 0x0F
>
> } AML_ACCESS_ATTRIBUTE;
>
> diff --git a/src/acpica/source/include/amlresrc.h b/src/acpica/source/include/amlresrc.h
> index ba0e324..9917ba9 100644
> --- a/src/acpica/source/include/amlresrc.h
> +++ b/src/acpica/source/include/amlresrc.h
> @@ -9,7 +9,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -131,29 +131,48 @@
> #define ACPI_RESTAG_TYPESPECIFICATTRIBUTES "_ATT"
> #define ACPI_RESTAG_BASEADDRESS "_BAS"
> #define ACPI_RESTAG_BUSMASTER "_BM_" /* Master(1), Slave(0) */
> +#define ACPI_RESTAG_DEBOUNCETIME "_DBT"
> #define ACPI_RESTAG_DECODE "_DEC"
> +#define ACPI_RESTAG_DEVICEPOLARITY "_DPL"
> #define ACPI_RESTAG_DMA "_DMA"
> #define ACPI_RESTAG_DMATYPE "_TYP" /* Compatible(0), A(1), B(2), F(3) */
> +#define ACPI_RESTAG_DRIVESTRENGTH "_DRS"
> +#define ACPI_RESTAG_ENDIANNESS "_END"
> +#define ACPI_RESTAG_FLOWCONTROL "_FLC"
> #define ACPI_RESTAG_GRANULARITY "_GRA"
> #define ACPI_RESTAG_INTERRUPT "_INT"
> #define ACPI_RESTAG_INTERRUPTLEVEL "_LL_" /* ActiveLo(1), ActiveHi(0) */
> #define ACPI_RESTAG_INTERRUPTSHARE "_SHR" /* Shareable(1), NoShare(0) */
> #define ACPI_RESTAG_INTERRUPTTYPE "_HE_" /* Edge(1), Level(0) */
> +#define ACPI_RESTAG_IORESTRICTION "_IOR"
> #define ACPI_RESTAG_LENGTH "_LEN"
> +#define ACPI_RESTAG_LINE "_LIN"
> #define ACPI_RESTAG_MEMATTRIBUTES "_MTP" /* Memory(0), Reserved(1), ACPI(2), NVS(3) */
> #define ACPI_RESTAG_MEMTYPE "_MEM" /* NonCache(0), Cacheable(1) Cache+combine(2), Cache+prefetch(3) */
> #define ACPI_RESTAG_MAXADDR "_MAX"
> #define ACPI_RESTAG_MINADDR "_MIN"
> #define ACPI_RESTAG_MAXTYPE "_MAF"
> #define ACPI_RESTAG_MINTYPE "_MIF"
> +#define ACPI_RESTAG_MODE "_MOD"
> +#define ACPI_RESTAG_PARITY "_PAR"
> +#define ACPI_RESTAG_PHASE "_PHA"
> +#define ACPI_RESTAG_PIN "_PIN"
> +#define ACPI_RESTAG_PINCONFIG "_PPI"
> +#define ACPI_RESTAG_POLARITY "_POL"
> #define ACPI_RESTAG_REGISTERBITOFFSET "_RBO"
> #define ACPI_RESTAG_REGISTERBITWIDTH "_RBW"
> #define ACPI_RESTAG_RANGETYPE "_RNG"
> #define ACPI_RESTAG_READWRITETYPE "_RW_" /* ReadOnly(0), Writeable (1) */
> +#define ACPI_RESTAG_LENGTH_RX "_RXL"
> +#define ACPI_RESTAG_LENGTH_TX "_TXL"
> +#define ACPI_RESTAG_SLAVEMODE "_SLV"
> +#define ACPI_RESTAG_SPEED "_SPE"
> +#define ACPI_RESTAG_STOPBITS "_STB"
> #define ACPI_RESTAG_TRANSLATION "_TRA"
> #define ACPI_RESTAG_TRANSTYPE "_TRS" /* Sparse(1), Dense(0) */
> #define ACPI_RESTAG_TYPE "_TTP" /* Translation(1), Static (0) */
> #define ACPI_RESTAG_XFERTYPE "_SIZ" /* 8(0), 8And16(1), 16(2) */
> +#define ACPI_RESTAG_VENDORDATA "_VEN"
>
>
> /* Default sizes for "small" resource descriptors */
> @@ -164,6 +183,7 @@
> #define ASL_RDESC_END_DEPEND_SIZE 0x00
> #define ASL_RDESC_IO_SIZE 0x07
> #define ASL_RDESC_FIXED_IO_SIZE 0x03
> +#define ASL_RDESC_FIXED_DMA_SIZE 0x05
> #define ASL_RDESC_END_TAG_SIZE 0x01
>
>
> @@ -286,6 +306,16 @@ typedef struct aml_resource_end_tag
> } AML_RESOURCE_END_TAG;
>
>
> +typedef struct aml_resource_fixed_dma
> +{
> + AML_RESOURCE_SMALL_HEADER_COMMON
> + UINT16 RequestLines;
> + UINT16 Channels;
> + UINT8 Width;
> +
> +} AML_RESOURCE_FIXED_DMA;
> +
> +
> /*
> * LARGE descriptors
> */
> @@ -440,6 +470,130 @@ typedef struct aml_resource_generic_register
>
> } AML_RESOURCE_GENERIC_REGISTER;
>
> +
> +/* Common descriptor for GpioInt and GpioIo (ACPI 5.0) */
> +
> +typedef struct aml_resource_gpio
> +{
> + AML_RESOURCE_LARGE_HEADER_COMMON
> + UINT8 RevisionId;
> + UINT8 ConnectionType;
> + UINT16 Flags;
> + UINT16 IntFlags;
> + UINT8 PinConfig;
> + UINT16 DriveStrength;
> + UINT16 DebounceTimeout;
> + UINT16 PinTableOffset;
> + UINT8 ResSourceIndex;
> + UINT16 ResSourceOffset;
> + UINT16 VendorOffset;
> + UINT16 VendorLength;
> + /*
> + * Optional fields follow immediately:
> + * 1) PIN list (Words)
> + * 2) Resource Source String
> + * 3) Vendor Data bytes
> + */
> +
> +} AML_RESOURCE_GPIO;
> +
> +#define AML_RESOURCE_GPIO_REVISION 1 /* ACPI 5.0 */
> +
> +/* Values for ConnectionType above */
> +
> +#define AML_RESOURCE_GPIO_TYPE_INT 0
> +#define AML_RESOURCE_GPIO_TYPE_IO 1
> +#define AML_RESOURCE_MAX_GPIOTYPE 1
> +
> +
> +/* Common preamble for all serial descriptors (ACPI 5.0) */
> +
> +#define AML_RESOURCE_SERIAL_COMMON \
> + UINT8 RevisionId; \
> + UINT8 ResSourceIndex; \
> + UINT8 Type; \
> + UINT8 Flags; \
> + UINT16 TypeSpecificFlags; \
> + UINT8 TypeRevisionId; \
> + UINT16 TypeDataLength; \
> +
> +/* Values for the type field above */
> +
> +#define AML_RESOURCE_I2C_SERIALBUSTYPE 1
> +#define AML_RESOURCE_SPI_SERIALBUSTYPE 2
> +#define AML_RESOURCE_UART_SERIALBUSTYPE 3
> +#define AML_RESOURCE_MAX_SERIALBUSTYPE 3
> +#define AML_RESOURCE_VENDOR_SERIALBUSTYPE 192 /* Vendor defined is 0xC0-0xFF (NOT SUPPORTED) */
> +
> +typedef struct aml_resource_common_serialbus
> +{
> + AML_RESOURCE_LARGE_HEADER_COMMON
> + AML_RESOURCE_SERIAL_COMMON
> +
> +} AML_RESOURCE_COMMON_SERIALBUS;
> +
> +typedef struct aml_resource_i2c_serialbus
> +{
> + AML_RESOURCE_LARGE_HEADER_COMMON
> + AML_RESOURCE_SERIAL_COMMON
> + UINT32 ConnectionSpeed;
> + UINT16 SlaveAddress;
> + /*
> + * Optional fields follow immediately:
> + * 1) Vendor Data bytes
> + * 2) Resource Source String
> + */
> +
> +} AML_RESOURCE_I2C_SERIALBUS;
> +
> +#define AML_RESOURCE_I2C_REVISION 1 /* ACPI 5.0 */
> +#define AML_RESOURCE_I2C_TYPE_REVISION 1 /* ACPI 5.0 */
> +#define AML_RESOURCE_I2C_MIN_DATA_LEN 6
> +
> +typedef struct aml_resource_spi_serialbus
> +{
> + AML_RESOURCE_LARGE_HEADER_COMMON
> + AML_RESOURCE_SERIAL_COMMON
> + UINT32 ConnectionSpeed;
> + UINT8 DataBitLength;
> + UINT8 ClockPhase;
> + UINT8 ClockPolarity;
> + UINT16 DeviceSelection;
> + /*
> + * Optional fields follow immediately:
> + * 1) Vendor Data bytes
> + * 2) Resource Source String
> + */
> +
> +} AML_RESOURCE_SPI_SERIALBUS;
> +
> +#define AML_RESOURCE_SPI_REVISION 1 /* ACPI 5.0 */
> +#define AML_RESOURCE_SPI_TYPE_REVISION 1 /* ACPI 5.0 */
> +#define AML_RESOURCE_SPI_MIN_DATA_LEN 9
> +
> +
> +typedef struct aml_resource_uart_serialbus
> +{
> + AML_RESOURCE_LARGE_HEADER_COMMON
> + AML_RESOURCE_SERIAL_COMMON
> + UINT32 DefaultBaudRate;
> + UINT16 RxFifoSize;
> + UINT16 TxFifoSize;
> + UINT8 Parity;
> + UINT8 LinesEnabled;
> + /*
> + * Optional fields follow immediately:
> + * 1) Vendor Data bytes
> + * 2) Resource Source String
> + */
> +
> +} AML_RESOURCE_UART_SERIALBUS;
> +
> +#define AML_RESOURCE_UART_REVISION 1 /* ACPI 5.0 */
> +#define AML_RESOURCE_UART_TYPE_REVISION 1 /* ACPI 5.0 */
> +#define AML_RESOURCE_UART_MIN_DATA_LEN 10
> +
> +
> /* restore default alignment */
>
> #pragma pack()
> @@ -462,6 +616,7 @@ typedef union aml_resource
> AML_RESOURCE_END_DEPENDENT EndDpf;
> AML_RESOURCE_IO Io;
> AML_RESOURCE_FIXED_IO FixedIo;
> + AML_RESOURCE_FIXED_DMA FixedDma;
> AML_RESOURCE_VENDOR_SMALL VendorSmall;
> AML_RESOURCE_END_TAG EndTag;
>
> @@ -477,6 +632,11 @@ typedef union aml_resource
> AML_RESOURCE_ADDRESS64 Address64;
> AML_RESOURCE_EXTENDED_ADDRESS64 ExtAddress64;
> AML_RESOURCE_EXTENDED_IRQ ExtendedIrq;
> + AML_RESOURCE_GPIO Gpio;
> + AML_RESOURCE_I2C_SERIALBUS I2cSerialBus;
> + AML_RESOURCE_SPI_SERIALBUS SpiSerialBus;
> + AML_RESOURCE_UART_SERIALBUS UartSerialBus;
> + AML_RESOURCE_COMMON_SERIALBUS CommonSerialBus;
>
> /* Utility overlays */
>
> diff --git a/src/acpica/source/include/platform/acenv.h b/src/acpica/source/include/platform/acenv.h
> index a0bf065..342615f 100644
> --- a/src/acpica/source/include/platform/acenv.h
> +++ b/src/acpica/source/include/platform/acenv.h
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/include/platform/acgcc.h b/src/acpica/source/include/platform/acgcc.h
> index 8743a8f..c046f91 100644
> --- a/src/acpica/source/include/platform/acgcc.h
> +++ b/src/acpica/source/include/platform/acgcc.h
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/include/platform/aclinux.h b/src/acpica/source/include/platform/aclinux.h
> index f1e3008..3bc85bc 100644
> --- a/src/acpica/source/include/platform/aclinux.h
> +++ b/src/acpica/source/include/platform/aclinux.h
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> diff --git a/src/acpica/source/os_specific/service_layers/osunixxf.c b/src/acpica/source/os_specific/service_layers/osunixxf.c
> index 7132bdd..d5e3af9 100644
> --- a/src/acpica/source/os_specific/service_layers/osunixxf.c
> +++ b/src/acpica/source/os_specific/service_layers/osunixxf.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -286,6 +286,33 @@ AcpiOsTableOverride (
>
> /******************************************************************************
> *
> + * FUNCTION: AcpiOsPhysicalTableOverride
> + *
> + * PARAMETERS: ExistingTable - Header of current table (probably firmware)
> + * NewAddress - Where new table address is returned
> + * (Physical address)
> + * NewTableLength - Where new table length is returned
> + *
> + * RETURN: Status, address/length of new table. Null pointer returned
> + * if no table is available to override.
> + *
> + * DESCRIPTION: Returns AE_SUPPORT, function not used in user space.
> + *
> + *****************************************************************************/
> +
> +ACPI_STATUS
> +AcpiOsPhysicalTableOverride (
> + ACPI_TABLE_HEADER *ExistingTable,
> + ACPI_PHYSICAL_ADDRESS *NewAddress,
> + UINT32 *NewTableLength)
> +{
> +
> + return (AE_SUPPORT);
> +}
> +
> +
> +/******************************************************************************
> + *
> * FUNCTION: AcpiOsRedirectOutput
> *
> * PARAMETERS: Destination - An open file handle/pointer
> @@ -349,7 +376,6 @@ AcpiOsVprintf (
> const char *Fmt,
> va_list Args)
> {
> - INT32 Count = 0;
> UINT8 Flags;
>
>
> @@ -362,7 +388,7 @@ AcpiOsVprintf (
> {
> /* Output file is open, send the output there */
>
> - Count = vfprintf (AcpiGbl_DebugFile, Fmt, Args);
> + vfprintf (AcpiGbl_DebugFile, Fmt, Args);
> }
> else
> {
> @@ -374,7 +400,7 @@ AcpiOsVprintf (
>
> if (Flags & ACPI_DB_CONSOLE_OUTPUT)
> {
> - Count = vfprintf (AcpiGbl_OutputFile, Fmt, Args);
> + vfprintf (AcpiGbl_OutputFile, Fmt, Args);
> }
> }
>
> @@ -1090,9 +1116,10 @@ AcpiOsWritePort (
> *
> * PARAMETERS: Address - Physical Memory Address to read
> * Value - Where value is placed
> - * Width - Number of bits
> + * Width - Number of bits (8,16,32, or 64)
> *
> - * RETURN: Value read from physical memory address
> + * RETURN: Value read from physical memory address. Always returned
> + * as a 64-bit integer, regardless of the read width.
> *
> * DESCRIPTION: Read data from a physical memory address
> *
> @@ -1101,7 +1128,7 @@ AcpiOsWritePort (
> ACPI_STATUS
> AcpiOsReadMemory (
> ACPI_PHYSICAL_ADDRESS Address,
> - UINT32 *Value,
> + UINT64 *Value,
> UINT32 Width)
> {
>
> @@ -1110,6 +1137,7 @@ AcpiOsReadMemory (
> case 8:
> case 16:
> case 32:
> + case 64:
> *Value = 0;
> break;
>
> @@ -1126,7 +1154,7 @@ AcpiOsReadMemory (
> *
> * PARAMETERS: Address - Physical Memory Address to write
> * Value - Value to write
> - * Width - Number of bits
> + * Width - Number of bits (8,16,32, or 64)
> *
> * RETURN: None
> *
> @@ -1137,7 +1165,7 @@ AcpiOsReadMemory (
> ACPI_STATUS
> AcpiOsWriteMemory (
> ACPI_PHYSICAL_ADDRESS Address,
> - UINT32 Value,
> + UINT64 Value,
> UINT32 Width)
> {
>
> @@ -1244,8 +1272,11 @@ ACPI_THREAD_ID
> AcpiOsGetThreadId (
> void)
> {
> + pthread_t thread;
> +
>
> - return (ACPI_CAST_PTHREAD_T (pthread_self()));
> + thread = pthread_self();
> + return (ACPI_CAST_PTHREAD_T (thread));
> }
>
>
> diff --git a/src/acpica/source/tools/acpiexec/aecommon.h b/src/acpica/source/tools/acpiexec/aecommon.h
> index 1352c6b..01615b1 100644
> --- a/src/acpica/source/tools/acpiexec/aecommon.h
> +++ b/src/acpica/source/tools/acpiexec/aecommon.h
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -138,6 +138,8 @@
> extern FILE *AcpiGbl_DebugFile;
> extern BOOLEAN AcpiGbl_IgnoreErrors;
> extern UINT8 AcpiGbl_RegionFillValue;
> +extern UINT8 AcpiGbl_UseHwReducedFadt;
> +extern BOOLEAN AcpiGbl_DisplayRegionAccess;
>
> /* Check for unexpected exceptions */
>
> diff --git a/src/acpica/source/tools/acpiexec/aehandlers.c b/src/acpica/source/tools/acpiexec/aehandlers.c
> index 6c0d245..ccf6966 100644
> --- a/src/acpica/source/tools/acpiexec/aehandlers.c
> +++ b/src/acpica/source/tools/acpiexec/aehandlers.c
> @@ -8,7 +8,7 @@
> *
> * 1. Copyright Notice
> *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
> * All rights reserved.
> *
> * 2. License
> @@ -163,12 +163,22 @@ AeInterfaceHandler (
> ACPI_STRING InterfaceName,
> UINT32 Supported);
>
> +#if (!ACPI_REDUCED_HARDWARE)
> static UINT32
> AeEventHandler (
> void *Context);
>
> +static char *TableEvents[] =
> +{
> + "LOAD",
> + "UNLOAD",
> + "UNKNOWN"
> +};
> +#endif /* !ACPI_REDUCED_HARDWARE */
> +
> static UINT32 SigintCount = 0;
> static AE_DEBUG_REGIONS AeRegions;
> +BOOLEAN AcpiGbl_DisplayRegionAccess = FALSE;
>
>
> /*
> @@ -180,27 +190,35 @@ static AE_DEBUG_REGIONS AeRegions;
> * declares that they must "always be available". Cannot override the
> * DataTable region handler either -- needed for test execution.
> */
> -static ACPI_ADR_SPACE_TYPE DefaultSpaceIdList[] = {
> +static ACPI_ADR_SPACE_TYPE DefaultSpaceIdList[] =
> +{
> ACPI_ADR_SPACE_SYSTEM_MEMORY,
> ACPI_ADR_SPACE_SYSTEM_IO
> };
>
> /*
> - * We will install handlers for some of the various address space IDs
> + * We will install handlers for some of the various address space IDs.
> * Test one user-defined address space (used by aslts.)
> */
> -#define ACPI_ADR_SPACE_USER_DEFINED 0x80
> +#define ACPI_ADR_SPACE_USER_DEFINED1 0x80
> +#define ACPI_ADR_SPACE_USER_DEFINED2 0xE4
>
> -static ACPI_ADR_SPACE_TYPE SpaceIdList[] = {
> +static ACPI_ADR_SPACE_TYPE SpaceIdList[] =
> +{
> ACPI_ADR_SPACE_EC,
> ACPI_ADR_SPACE_SMBUS,
> + ACPI_ADR_SPACE_GSBUS,
> + ACPI_ADR_SPACE_GPIO,
> ACPI_ADR_SPACE_PCI_BAR_TARGET,
> ACPI_ADR_SPACE_IPMI,
> ACPI_ADR_SPACE_FIXED_HARDWARE,
> - ACPI_ADR_SPACE_USER_DEFINED
> + ACPI_ADR_SPACE_USER_DEFINED1,
> + ACPI_ADR_SPACE_USER_DEFINED2
> };
>
>
> +static ACPI_CONNECTION_INFO AeMyContext;
> +
> /******************************************************************************
> *
> * FUNCTION: AeCtrlCHandler
> @@ -449,20 +467,15 @@ AeExceptionHandler (
> *
> *****************************************************************************/
>
> -static char *TableEvents[] =
> -{
> - "LOAD",
> - "UNLOAD",
> - "UNKNOWN"
> -};
> -
> static ACPI_STATUS
> AeTableHandler (
> UINT32 Event,
> void *Table,
> void *Context)
> {
> +#if (!ACPI_REDUCED_HARDWARE)
> ACPI_STATUS Status;
> +#endif /* !ACPI_REDUCED_HARDWARE */
>
>
> if (Event > ACPI_NUM_TABLE_EVENTS)
> @@ -470,6 +483,7 @@ AeTableHandler (
> Event = ACPI_NUM_TABLE_EVENTS;
> }
>
> +#if (!ACPI_REDUCED_HARDWARE)
> /* Enable any GPEs associated with newly-loaded GPE methods */
>
> Status = AcpiUpdateAllGpes ();
> @@ -477,6 +491,8 @@ AeTableHandler (
>
> printf ("[AcpiExec] Table Event %s, [%4.4s] %p\n",
> TableEvents[Event], ((ACPI_TABLE_HEADER *) Table)->Signature, Table);
> +#endif /* !ACPI_REDUCED_HARDWARE */
> +
> return (AE_OK);
> }
>
> @@ -589,6 +605,7 @@ AeInterfaceHandler (
> }
>
>
> +#if (!ACPI_REDUCED_HARDWARE)
> /******************************************************************************
> *
> * FUNCTION: AeEventHandler
> @@ -603,6 +620,7 @@ AeEventHandler (
> {
> return (0);
> }
> +#endif /* !ACPI_REDUCED_HARDWARE */
>
>
> /******************************************************************************
> @@ -653,13 +671,21 @@ AeInstallLateHandlers (
> UINT32 i;
>
>
> - /* Install some fixed event handlers */
> +#if (!ACPI_REDUCED_HARDWARE)
> + if (!AcpiGbl_ReducedHardware)
> + {
> + /* Install some fixed event handlers */
> +
> + Status = AcpiInstallFixedEventHandler (ACPI_EVENT_GLOBAL, AeEventHandler, NULL);
> + AE_CHECK_OK (AcpiInstallFixedEventHandler, Status);
>
> - Status = AcpiInstallFixedEventHandler (ACPI_EVENT_GLOBAL, AeEventHandler, NULL);
> - AE_CHECK_OK (AcpiInstallFixedEventHandler, Status);
> + Status = AcpiInstallFixedEventHandler (ACPI_EVENT_RTC, AeEventHandler, NULL);
> + AE_CHECK_OK (AcpiInstallFixedEventHandler, Status);
> + }
> +#endif /* !ACPI_REDUCED_HARDWARE */
>
> - Status = AcpiInstallFixedEventHandler (ACPI_EVENT_RTC, AeEventHandler, NULL);
> - AE_CHECK_OK (AcpiInstallFixedEventHandler, Status);
> + AeMyContext.Connection = NULL;
> + AeMyContext.AccessLength = 0xA5;
>
> /*
> * Install handlers for some of the "device driver" address spaces
> @@ -670,7 +696,8 @@ AeInstallLateHandlers (
> /* Install handler at the root object */
>
> Status = AcpiInstallAddressSpaceHandler (AcpiGbl_RootNode,
> - SpaceIdList[i], AeRegionHandler, AeRegionInit, NULL);
> + SpaceIdList[i], AeRegionHandler,
> + AeRegionInit, &AeMyContext);
> if (ACPI_FAILURE (Status))
> {
> ACPI_EXCEPTION ((AE_INFO, Status,
> @@ -810,7 +837,7 @@ AeInstallEarlyHandlers (
>
> Status = AcpiInstallAddressSpaceHandler (AcpiGbl_RootNode,
> DefaultSpaceIdList[i], AeRegionHandler,
> - AeRegionInit, NULL);
> + AeRegionInit, &AeMyContext);
> if (ACPI_FAILURE (Status))
> {
> ACPI_EXCEPTION ((AE_INFO, Status,
> @@ -865,6 +892,10 @@ AeRegionHandler (
> UINT32 ByteWidth;
> UINT32 i;
> UINT8 SpaceId;
> + ACPI_CONNECTION_INFO *MyContext;
> + UINT32 Value1;
> + UINT32 Value2;
> + ACPI_RESOURCE *Resource;
>
>
> ACPI_FUNCTION_NAME (AeRegionHandler);
> @@ -877,8 +908,30 @@ AeRegionHandler (
> return (AE_OK);
> }
>
> + /* Check that we actually got back our context parameter */
> +
> + if (HandlerContext != &AeMyContext)
> + {
> + printf ("Region handler received incorrect context %p, should be %p\n",
> + HandlerContext, &AeMyContext);
> + }
> +
> + MyContext = ACPI_CAST_PTR (ACPI_CONNECTION_INFO, HandlerContext);
> +
> + /*
> + * Find the region's address space and length before searching
> + * the linked list.
> + */
> + BaseAddress = RegionObject->Region.Address;
> + Length = (ACPI_SIZE) RegionObject->Region.Length;
> + SpaceId = RegionObject->Region.SpaceId;
> +
> + ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, "Operation Region request on %s at 0x%X\n",
> + AcpiUtGetRegionName (RegionObject->Region.SpaceId),
> + (UINT32) Address));
> +
> /*
> - * Region support can be disabled with the -r option.
> + * Region support can be disabled with the -do option.
> * We use this to support dynamically loaded tables where we pass a valid
> * address to the AML.
> */
> @@ -894,34 +947,52 @@ AeRegionHandler (
> goto DoFunction;
> }
>
> - /*
> - * Find the region's address space and length before searching
> - * the linked list.
> - */
> - BaseAddress = RegionObject->Region.Address;
> - Length = (ACPI_SIZE) RegionObject->Region.Length;
> - SpaceId = RegionObject->Region.SpaceId;
> -
> - ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, "Operation Region request on %s at 0x%X\n",
> - AcpiUtGetRegionName (RegionObject->Region.SpaceId),
> - (UINT32) Address));
> -
> switch (SpaceId)
> {
> case ACPI_ADR_SPACE_SYSTEM_IO:
> /*
> * For I/O space, exercise the port validation
> + * Note: ReadPort currently always returns all ones, length=BitLength
> */
> switch (Function & ACPI_IO_MASK)
> {
> case ACPI_READ:
> - Status = AcpiHwReadPort (Address, (UINT32 *) Value, BitWidth);
> - AE_CHECK_OK (AcpiHwReadPort, Status);
> +
> + if (BitWidth == 64)
> + {
> + /* Split the 64-bit request into two 32-bit requests */
> +
> + Status = AcpiHwReadPort (Address, &Value1, 32);
> + AE_CHECK_OK (AcpiHwReadPort, Status);
> + Status = AcpiHwReadPort (Address+4, &Value2, 32);
> + AE_CHECK_OK (AcpiHwReadPort, Status);
> +
> + *Value = Value1 | ((UINT64) Value2 << 32);
> + }
> + else
> + {
> + Status = AcpiHwReadPort (Address, &Value1, BitWidth);
> + AE_CHECK_OK (AcpiHwReadPort, Status);
> + *Value = (UINT64) Value1;
> + }
> break;
>
> case ACPI_WRITE:
> - Status = AcpiHwWritePort (Address, (UINT32) *Value, BitWidth);
> - AE_CHECK_OK (AcpiHwWritePort, Status);
> +
> + if (BitWidth == 64)
> + {
> + /* Split the 64-bit request into two 32-bit requests */
> +
> + Status = AcpiHwWritePort (Address, ACPI_LODWORD (*Value), 32);
> + AE_CHECK_OK (AcpiHwWritePort, Status);
> + Status = AcpiHwWritePort (Address+4, ACPI_HIDWORD (*Value), 32);
> + AE_CHECK_OK (AcpiHwWritePort, Status);
> + }
> + else
> + {
> + Status = AcpiHwWritePort (Address, (UINT32) *Value, BitWidth);
> + AE_CHECK_OK (AcpiHwWritePort, Status);
> + }
> break;
>
> default:
> @@ -937,8 +1008,12 @@ AeRegionHandler (
> /* Now go ahead and simulate the hardware */
> break;
>
> -
> + /*
> + * SMBus and GenericSerialBus support the various bidirectional
> + * protocols.
> + */
> case ACPI_ADR_SPACE_SMBUS:
> + case ACPI_ADR_SPACE_GSBUS: /* ACPI 5.0 */
>
> Length = 0;
>
> @@ -947,22 +1022,31 @@ AeRegionHandler (
> case ACPI_READ:
> switch (Function >> 16)
> {
> - case AML_FIELD_ATTRIB_SMB_QUICK:
> - case AML_FIELD_ATTRIB_SMB_SEND_RCV:
> - case AML_FIELD_ATTRIB_SMB_BYTE:
> + case AML_FIELD_ATTRIB_QUICK:
> + case AML_FIELD_ATTRIB_SEND_RCV:
> + case AML_FIELD_ATTRIB_BYTE:
> Length = 1;
> break;
>
> - case AML_FIELD_ATTRIB_SMB_WORD:
> - case AML_FIELD_ATTRIB_SMB_WORD_CALL:
> + case AML_FIELD_ATTRIB_WORD:
> + case AML_FIELD_ATTRIB_WORD_CALL:
> Length = 2;
> break;
>
> - case AML_FIELD_ATTRIB_SMB_BLOCK:
> - case AML_FIELD_ATTRIB_SMB_BLOCK_CALL:
> + case AML_FIELD_ATTRIB_BLOCK:
> + case AML_FIELD_ATTRIB_BLOCK_CALL:
> Length = 32;
> break;
>
> +
> + case AML_FIELD_ATTRIB_MULTIBYTE:
> + case AML_FIELD_ATTRIB_RAW_BYTES:
> + case AML_FIELD_ATTRIB_RAW_PROCESS:
> +
> + /* (-2) for status/length */
> + Length = MyContext->AccessLength - 2;
> + break;
> +
> default:
> break;
> }
> @@ -971,22 +1055,30 @@ AeRegionHandler (
> case ACPI_WRITE:
> switch (Function >> 16)
> {
> - case AML_FIELD_ATTRIB_SMB_QUICK:
> - case AML_FIELD_ATTRIB_SMB_SEND_RCV:
> - case AML_FIELD_ATTRIB_SMB_BYTE:
> - case AML_FIELD_ATTRIB_SMB_WORD:
> - case AML_FIELD_ATTRIB_SMB_BLOCK:
> + case AML_FIELD_ATTRIB_QUICK:
> + case AML_FIELD_ATTRIB_SEND_RCV:
> + case AML_FIELD_ATTRIB_BYTE:
> + case AML_FIELD_ATTRIB_WORD:
> + case AML_FIELD_ATTRIB_BLOCK:
> Length = 0;
> break;
>
> - case AML_FIELD_ATTRIB_SMB_WORD_CALL:
> + case AML_FIELD_ATTRIB_WORD_CALL:
> Length = 2;
> break;
>
> - case AML_FIELD_ATTRIB_SMB_BLOCK_CALL:
> + case AML_FIELD_ATTRIB_BLOCK_CALL:
> Length = 32;
> break;
>
> + case AML_FIELD_ATTRIB_MULTIBYTE:
> + case AML_FIELD_ATTRIB_RAW_BYTES:
> + case AML_FIELD_ATTRIB_RAW_PROCESS:
> +
> + /* (-2) for status/length */
> + Length = MyContext->AccessLength - 2;
> + break;
> +
> default:
> break;
> }
> @@ -996,6 +1088,31 @@ AeRegionHandler (
> break;
> }
>
> + if (AcpiGbl_DisplayRegionAccess)
> + {
> + AcpiOsPrintf ("AcpiExec: %s "
> + "%s: Attr %X Addr %.4X BaseAddr %.4X Len %.2X Width %X BufLen %X",
> + AcpiUtGetRegionName (SpaceId),
> + (Function & ACPI_IO_MASK) ? "Write" : "Read ",
> + (UINT32) (Function >> 16),
> + (UINT32) Address, (UINT32) BaseAddress,
> + Length, BitWidth, Buffer[1]);
> +
> + /* GenericSerialBus has a Connection() parameter */
> +
> + if (SpaceId == ACPI_ADR_SPACE_GSBUS)
> + {
> + Status = AcpiBufferToResource (MyContext->Connection,
> + MyContext->Length, &Resource);
> +
> + AcpiOsPrintf (" [AccLen %.2X Conn %p]",
> + MyContext->AccessLength, MyContext->Connection);
> + }
> + AcpiOsPrintf ("\n");
> + }
> +
> + /* Setup the return buffer. Note: ASLTS depends on these fill values */
> +
> for (i = 0; i < Length; i++)
> {
> Buffer[i+2] = (UINT8) (0xA0 + i);
> @@ -1008,10 +1125,14 @@ AeRegionHandler (
>
> case ACPI_ADR_SPACE_IPMI: /* ACPI 4.0 */
>
> - AcpiOsPrintf ("AcpiExec: Received IPMI request: "
> - "Address %X BaseAddress %X Length %X Width %X BufferLength %u\n",
> - (UINT32) Address, (UINT32) BaseAddress,
> - Length, BitWidth, Buffer[1]);
> + if (AcpiGbl_DisplayRegionAccess)
> + {
> + AcpiOsPrintf ("AcpiExec: IPMI "
> + "%s: Attr %X Addr %.4X BaseAddr %.4X Len %.2X Width %X BufLen %X\n",
> + (Function & ACPI_IO_MASK) ? "Write" : "Read ",
> + (UINT32) (Function >> 16), (UINT32) Address, (UINT32) BaseAddress,
> + Length, BitWidth, Buffer[1]);
> + }
>
> /*
> * Regardless of a READ or WRITE, this handler is passed a 66-byte
> @@ -1022,9 +1143,16 @@ AeRegionHandler (
> Buffer[0] = 0; /* Status byte */
> Buffer[1] = 64; /* Return buffer data length */
> Buffer[2] = 0; /* Completion code */
> - Buffer[3] = 0x34; /* Power measurement */
> - Buffer[4] = 0x12; /* Power measurement */
> - Buffer[65] = 0xEE; /* last buffer byte */
> + Buffer[3] = 0; /* Reserved */
> +
> + /*
> + * Fill the 66-byte buffer with the return data.
> + * Note: ASLTS depends on these fill values.
> + */
> + for (i = 4; i < 66; i++)
> + {
> + Buffer[i] = (UINT8) (i);
> + }
> return (AE_OK);
>
> default:
> @@ -1135,7 +1263,6 @@ AeRegionHandler (
> ((UINT64) Address - (UINT64) RegionElement->Address));
>
> DoFunction:
> -
> /*
> * Perform a read or write to the buffer space
> */
> @@ -1159,6 +1286,37 @@ DoFunction:
> return (AE_BAD_PARAMETER);
> }
>
> + if (AcpiGbl_DisplayRegionAccess)
> + {
> + switch (SpaceId)
> + {
> + case ACPI_ADR_SPACE_SYSTEM_MEMORY:
> +
> + AcpiOsPrintf ("AcpiExec: SystemMemory "
> + "%s: Val %.8X Addr %.4X Width %X [REGION: BaseAddr %.4X Len %.2X]\n",
> + (Function & ACPI_IO_MASK) ? "Write" : "Read ",
> + (UINT32) *Value, (UINT32) Address, BitWidth, (UINT32) BaseAddress, Length);
> + break;
> +
> + case ACPI_ADR_SPACE_GPIO: /* ACPI 5.0 */
> +
> + /* This space is required to always be ByteAcc */
> +
> + Status = AcpiBufferToResource (MyContext->Connection,
> + MyContext->Length, &Resource);
> +
> + AcpiOsPrintf ("AcpiExec: GeneralPurposeIo "
> + "%s: Val %.8X Addr %.4X BaseAddr %.4X Len %.2X Width %X AccLen %.2X Conn %p\n",
> + (Function & ACPI_IO_MASK) ? "Write" : "Read ", (UINT32) *Value,
> + (UINT32) Address, (UINT32) BaseAddress, Length, BitWidth,
> + MyContext->AccessLength, MyContext->Connection);
> + break;
> +
> + default:
> + break;
> + }
> + }
> +
> return (AE_OK);
> }
>
> --
> 1.7.9.5
>
Acked-by: Keng-Yu Lin <kengyu at canonical.com>
More information about the fwts-devel
mailing list