Author: tqh Date: 2010-11-21 22:58:06 +0100 (Sun, 21 Nov 2010) New Revision: 39565 Changeset: http://dev.haiku-os.org/changeset/39565 Added: haiku/trunk/src/add-ons/kernel/bus_managers/acpi/hardware/hwpci.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/utilities/utosi.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/utilities/utxferror.c Removed: haiku/trunk/src/add-ons/kernel/bus_managers/acpi/compiler/ haiku/trunk/src/add-ons/kernel/bus_managers/acpi/debugger/ haiku/trunk/src/add-ons/kernel/bus_managers/acpi/disassembler/ haiku/trunk/src/add-ons/kernel/bus_managers/acpi/include/platform/accygwin.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/include/platform/acfreebsd.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/include/platform/aclinux.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/include/platform/acnetbsd.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/include/platform/acos2.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/include/platform/acwin.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/include/platform/acwin64.h Modified: haiku/trunk/headers/os/drivers/ACPI.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/Jamfile haiku/trunk/src/add-ons/kernel/bus_managers/acpi/acpi_busman.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/acpi_embedded_controller.cpp haiku/trunk/src/add-ons/kernel/bus_managers/acpi/acpi_priv.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/common/adfile.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/common/adisasm.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/common/adwalk.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/common/dmextern.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/common/dmrestag.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/common/dmtable.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/common/dmtbdump.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/common/dmtbinfo.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/common/getopt.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/dispatcher/dsinit.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/dispatcher/dsmethod.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/dispatcher/dsmthdat.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/dispatcher/dsobject.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/dispatcher/dsopcode.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/dispatcher/dsutils.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/events/evgpe.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/events/evgpeblk.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/events/evgpeinit.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/events/evgpeutil.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/events/evrgnini.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/events/evxface.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/events/evxfevnt.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/events/evxfregn.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/executer/exdump.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/executer/exfldio.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/executer/exmutex.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/executer/exprep.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/executer/exregion.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/executer/exsystem.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/hardware/hwgpe.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/hardware/hwsleep.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/hardware/hwvalid.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/include/acapps.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/include/acconfig.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/include/acdebug.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/include/acdisasm.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/include/acevents.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/include/acexcep.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/include/acglobal.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/include/achware.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/include/aclocal.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/include/acmacros.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/include/acnamesp.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/include/acobject.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/include/acoutput.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/include/acpiosxf.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/include/acpixf.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/include/acpredef.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/include/acstruct.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/include/actbl.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/include/actbl2.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/include/actypes.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/include/acutils.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/include/platform/acenv.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/include/platform/acgcc.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/include/platform/achaiku.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/include/platform/acintel.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/include/platform/acmsvc.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/namespace/nsaccess.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/namespace/nsalloc.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/namespace/nsdump.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/namespace/nsinit.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/namespace/nsnames.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/namespace/nsparse.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/namespace/nsrepair.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/namespace/nsrepair2.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/namespace/nssearch.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/namespace/nsutils.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/namespace/nswalk.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/namespace/nsxfobj.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/oshaiku.cpp haiku/trunk/src/add-ons/kernel/bus_managers/acpi/tables/tbfadt.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/utilities/utdebug.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/utilities/uteval.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/utilities/utglobal.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/utilities/utids.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/utilities/utinit.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/utilities/utmath.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/utilities/utmisc.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/utilities/utmutex.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/utilities/uttrack.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/utilities/utxface.c Log: Updated ACPICA to 20101013 from 20100428. See http://www.acpica.org/download/changes.txt for changes. Embedded Controller still needs some looking into, and I had to remove the WIP code for dumping MADT. Both are on my TODO. Also removed a lot of unneeded parts of ACPICA from trunk and did some cleanup in Jamfile. Modified: haiku/trunk/headers/os/drivers/ACPI.h =================================================================== --- haiku/trunk/headers/os/drivers/ACPI.h 2010-11-21 21:00:10 UTC (rev 39564) +++ haiku/trunk/headers/os/drivers/ACPI.h 2010-11-21 21:58:06 UTC (rev 39565) @@ -168,8 +168,7 @@ /* GPE Handler */ - status_t (*enable_gpe)(acpi_handle handle, uint32 gpeNumber, - uint32 flags); + status_t (*enable_gpe)(acpi_handle handle, uint32 gpeNumber); status_t (*set_gpe)(acpi_handle handle, uint32 gpeNumber, uint8 action); status_t (*install_gpe_handler)(acpi_handle handle, uint32 gpeNumber, Modified: haiku/trunk/src/add-ons/kernel/bus_managers/acpi/Jamfile =================================================================== --- haiku/trunk/src/add-ons/kernel/bus_managers/acpi/Jamfile 2010-11-21 21:00:10 UTC (rev 39564) +++ haiku/trunk/src/add-ons/kernel/bus_managers/acpi/Jamfile 2010-11-21 21:58:06 UTC (rev 39565) @@ -6,46 +6,12 @@ SubDirHdrs [ FDirName $(SUBDIR) $(DOTDOT) pci ] ; SubDirCcFlags -fno-pic -D_KERNEL_MODE ; -local events_src = - evevent.c - evgpe.c - evgpeblk.c - evgpeinit.c - evgpeutil.c - evmisc.c - evregion.c - evrgnini.c - evsci.c - evxface.c - evxfevnt.c - evxfregn.c - ; -local hardware_src = - hwacpi.c - hwgpe.c - hwregs.c - hwsleep.c - hwtimer.c - hwvalid.c - hwxface.c -; - local common_src = - dmtable.c dmtbdump.c dmtbinfo.c -; + ; -local debugger_src = - dbdisply.c - dbxface.c -; - -local disassembler_src = - dmobject.c -; - local dispatcher_src = dsfield.c dsinit.c @@ -60,6 +26,21 @@ dswstate.c ; +local events_src = + evevent.c + evgpe.c + evgpeblk.c + evgpeinit.c + evgpeutil.c + evmisc.c + evregion.c + evrgnini.c + evsci.c + evxface.c + evxfevnt.c + evxfregn.c + ; + local executer_src = exconfig.c exconvrt.c @@ -87,17 +68,16 @@ exutils.c ; -local parser_src = - psargs.c - psloop.c - psopcode.c - psparse.c - psscope.c - pstree.c - psutils.c - pswalk.c - psxface.c - ; +local hardware_src = + hwacpi.c + hwgpe.c + hwpci.c + hwregs.c + hwsleep.c + hwtimer.c + hwvalid.c + hwxface.c +; local namespace_src = nsaccess.c @@ -121,6 +101,18 @@ nsxfobj.c ; +local parser_src = + psargs.c + psloop.c + psopcode.c + psparse.c + psscope.c + pstree.c + psutils.c + pswalk.c + psxface.c + ; + local resources_src = rsaddr.c rscalc.c @@ -161,35 +153,38 @@ utmisc.c utmutex.c utobject.c + utosi.c utresrc.c utstate.c uttrack.c utxface.c + utxferror.c ; StaticLibrary libacpi_ca.a : - $(events_src) - $(hardware_src) + $(common_src) + $(compiler_src) $(dispatcher_src) + $(events_src) $(executer_src) - $(parser_src) + $(hardware_src) $(namespace_src) + $(parser_src) $(resources_src) $(tables_src) $(utilities_src) - $(common_src) - ; + ; +SEARCH on [ FGristFiles $(common_src) ] = [ FDirName $(HAIKU_TOP) src add-ons kernel bus_managers acpi common ] ; +SEARCH on [ FGristFiles $(dispatcher_src) ] = [ FDirName $(HAIKU_TOP) src add-ons kernel bus_managers acpi dispatcher ] ; SEARCH on [ FGristFiles $(events_src) ] = [ FDirName $(HAIKU_TOP) src add-ons kernel bus_managers acpi events ] ; +SEARCH on [ FGristFiles $(executer_src) ] = [ FDirName $(HAIKU_TOP) src add-ons kernel bus_managers acpi executer ] ; SEARCH on [ FGristFiles $(hardware_src) ] = [ FDirName $(HAIKU_TOP) src add-ons kernel bus_managers acpi hardware ] ; SEARCH on [ FGristFiles $(namespace_src) ] = [ FDirName $(HAIKU_TOP) src add-ons kernel bus_managers acpi namespace ] ; +SEARCH on [ FGristFiles $(parser_src) ] = [ FDirName $(HAIKU_TOP) src add-ons kernel bus_managers acpi parser ] ; SEARCH on [ FGristFiles $(resources_src) ] = [ FDirName $(HAIKU_TOP) src add-ons kernel bus_managers acpi resources ] ; -SEARCH on [ FGristFiles $(tables_src) tbutils.c ] = [ FDirName $(HAIKU_TOP) src add-ons kernel bus_managers acpi tables ] ; +SEARCH on [ FGristFiles $(tables_src) ] = [ FDirName $(HAIKU_TOP) src add-ons kernel bus_managers acpi tables ] ; SEARCH on [ FGristFiles $(utilities_src) ] = [ FDirName $(HAIKU_TOP) src add-ons kernel bus_managers acpi utilities ] ; -SEARCH on [ FGristFiles $(dispatcher_src) ] = [ FDirName $(HAIKU_TOP) src add-ons kernel bus_managers acpi dispatcher ] ; -SEARCH on [ FGristFiles $(executer_src) ] = [ FDirName $(HAIKU_TOP) src add-ons kernel bus_managers acpi executer ] ; -SEARCH on [ FGristFiles $(parser_src) ] = [ FDirName $(HAIKU_TOP) src add-ons kernel bus_managers acpi parser ] ; -SEARCH on [ FGristFiles $(common_src) ] = [ FDirName $(HAIKU_TOP) src add-ons kernel bus_managers acpi common ] ; KernelAddon acpi : oshaiku.cpp Modified: haiku/trunk/src/add-ons/kernel/bus_managers/acpi/acpi_busman.c =================================================================== --- haiku/trunk/src/add-ons/kernel/bus_managers/acpi/acpi_busman.c 2010-11-21 21:00:10 UTC (rev 39564) +++ haiku/trunk/src/add-ons/kernel/bus_managers/acpi/acpi_busman.c 2010-11-21 21:58:06 UTC (rev 39565) @@ -84,10 +84,10 @@ while (true) { status = AcpiGetTable (ACPI_SIG_MADT, ++madtCount, &madt); if (status != AE_OK) break; - +/* dprintf("acpi: MADT TABLE:\n"); AcpiDmDumpDataTable( madt ); -/* entry = madt + 44; + entry = madt + 44; end = madt + madt->Header.Length; while (entry < end) { dprintf("\t\tType: %d\n", entry->Type); @@ -303,9 +303,9 @@ status_t -enable_gpe(acpi_handle handle, uint32 gpeNumber, uint32 flags) +enable_gpe(acpi_handle handle, uint32 gpeNumber) { - return AcpiEnableGpe(handle, gpeNumber, flags) == AE_OK ? B_OK : B_ERROR; + return AcpiEnableGpe(handle, gpeNumber) == AE_OK ? B_OK : B_ERROR; } Modified: haiku/trunk/src/add-ons/kernel/bus_managers/acpi/acpi_embedded_controller.cpp =================================================================== --- haiku/trunk/src/add-ons/kernel/bus_managers/acpi/acpi_embedded_controller.cpp 2010-11-21 21:00:10 UTC (rev 39564) +++ haiku/trunk/src/add-ons/kernel/bus_managers/acpi/acpi_embedded_controller.cpp 2010-11-21 21:58:06 UTC (rev 39565) @@ -374,8 +374,7 @@ } // Enable runtime GPEs for the handler. - status = sc->ec_acpi_module->enable_gpe(sc->ec_gpehandle, sc->ec_gpebit, - ACPI_GPE_TYPE_RUNTIME); + status = sc->ec_acpi_module->enable_gpe(sc->ec_gpehandle, sc->ec_gpebit); if (status != B_OK) { TRACE("AcpiEnableGpe failed.\n"); goto error; Modified: haiku/trunk/src/add-ons/kernel/bus_managers/acpi/acpi_priv.h =================================================================== --- haiku/trunk/src/add-ons/kernel/bus_managers/acpi/acpi_priv.h 2010-11-21 21:00:10 UTC (rev 39564) +++ haiku/trunk/src/add-ons/kernel/bus_managers/acpi/acpi_priv.h 2010-11-21 21:58:06 UTC (rev 39565) @@ -61,8 +61,7 @@ /* GPE Handler */ - status_t (*enable_gpe)(acpi_handle handle, uint32 gpeNumber, - uint32 flags); + status_t (*enable_gpe)(acpi_handle handle, uint32 gpeNumber); status_t (*set_gpe)(acpi_handle handle, uint32 gpeNumber, uint8 action); status_t (*install_gpe_handler)(acpi_handle handle, uint32 gpeNumber, @@ -154,7 +153,7 @@ status_t remove_notify_handler(acpi_handle device, uint32 handlerType, acpi_notify_handler handler); -status_t enable_gpe(acpi_handle handle, uint32 gpeNumber, uint32 flags); +status_t enable_gpe(acpi_handle handle, uint32 gpeNumber); status_t set_gpe(acpi_handle handle, uint32 gpeNumber, uint8 action); status_t install_gpe_handler(acpi_handle handle, uint32 gpeNumber, uint32 type, acpi_event_handler handler, void* data); Modified: haiku/trunk/src/add-ons/kernel/bus_managers/acpi/common/adfile.c =================================================================== --- haiku/trunk/src/add-ons/kernel/bus_managers/acpi/common/adfile.c 2010-11-21 21:00:10 UTC (rev 39564) +++ haiku/trunk/src/add-ons/kernel/bus_managers/acpi/common/adfile.c 2010-11-21 21:58:06 UTC (rev 39565) @@ -126,13 +126,13 @@ /* Local prototypes */ -INT32 +static INT32 AdWriteBuffer ( char *Filename, char *Buffer, UINT32 Length); -char FilenameBuf[20]; +static char FilenameBuf[20]; /****************************************************************************** @@ -190,7 +190,7 @@ * ******************************************************************************/ -INT32 +static INT32 AdWriteBuffer ( char *Filename, char *Buffer, Modified: haiku/trunk/src/add-ons/kernel/bus_managers/acpi/common/adisasm.c =================================================================== --- haiku/trunk/src/add-ons/kernel/bus_managers/acpi/common/adisasm.c 2010-11-21 21:00:10 UTC (rev 39564) +++ haiku/trunk/src/add-ons/kernel/bus_managers/acpi/common/adisasm.c 2010-11-21 21:58:06 UTC (rev 39565) @@ -134,7 +134,6 @@ extern int AslCompilerdebug; -extern char *Gbl_ExternalFilename; ACPI_STATUS @@ -148,22 +147,18 @@ /* Local prototypes */ -void +static void AdCreateTableHeader ( char *Filename, ACPI_TABLE_HEADER *Table); -void -AdDisassemblerHeader ( - char *Filename); - -ACPI_STATUS +static ACPI_STATUS AdDeferredParse ( ACPI_PARSE_OBJECT *Op, UINT8 *Aml, UINT32 AmlLength); -ACPI_STATUS +static ACPI_STATUS AdParseDeferredOps ( ACPI_PARSE_OBJECT *Root); @@ -317,6 +312,7 @@ ACPI_STATUS Status; char *DisasmFilename = NULL; char *ExternalFilename; + ACPI_EXTERNAL_FILE *ExternalFileList = AcpiGbl_ExternalFileList; FILE *File = NULL; ACPI_TABLE_HEADER *Table = NULL; ACPI_TABLE_HEADER *ExternalTable; @@ -339,46 +335,54 @@ * External filenames separated by commas * Example: iasl -e file1,file2,file3 -d xxx.aml */ - if (Gbl_ExternalFilename) + while (ExternalFileList) { - ExternalFilename = strtok (Gbl_ExternalFilename, ","); + ExternalFilename = ExternalFileList->Path; + if (!ACPI_STRCMP (ExternalFilename, Filename)) + { + /* Next external file */ - while (ExternalFilename) + ExternalFileList = ExternalFileList->Next; + + continue; + } + + Status = AcpiDbGetTableFromFile (ExternalFilename, &ExternalTable); + if (ACPI_FAILURE (Status)) { - Status = AcpiDbGetTableFromFile (ExternalFilename, &ExternalTable); + return Status; + } + + /* Load external table for symbol resolution */ + + if (ExternalTable) + { + Status = AdParseTable (ExternalTable, &OwnerId, TRUE, TRUE); if (ACPI_FAILURE (Status)) { + AcpiOsPrintf ("Could not parse external ACPI tables, %s\n", + AcpiFormatException (Status)); return Status; } - /* Load external table for symbol resolution */ + /* + * Load namespace from names created within control methods + * Set owner id of nodes in external table + */ + AcpiDmFinishNamespaceLoad (AcpiGbl_ParseOpRoot, + AcpiGbl_RootNode, OwnerId); + AcpiPsDeleteParseTree (AcpiGbl_ParseOpRoot); + } - if (ExternalTable) - { - Status = AdParseTable (ExternalTable, &OwnerId, TRUE, TRUE); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Could not parse external ACPI tables, %s\n", - AcpiFormatException (Status)); - return Status; - } + /* Next external file */ - /* - * Load namespace from names created within control methods - * Set owner id of nodes in external table - */ - AcpiDmFinishNamespaceLoad (AcpiGbl_ParseOpRoot, - AcpiGbl_RootNode, OwnerId); - AcpiPsDeleteParseTree (AcpiGbl_ParseOpRoot); - } + ExternalFileList = ExternalFileList->Next; + } - /* Next external file name */ + /* Clear external list generated by Scope in external tables */ - ExternalFilename = strtok (NULL, ","); - } - - /* Clear external list generated by Scope in external tables */ - + if (AcpiGbl_ExternalFileList) + { AcpiDmClearExternalList (); } } @@ -502,7 +506,7 @@ if (AcpiDmGetExternalMethodCount ()) { fprintf (stderr, - "\nFound %d external control methods, reparsing with new information\n", + "\nFound %u external control methods, reparsing with new information\n", AcpiDmGetExternalMethodCount ()); /* @@ -515,10 +519,11 @@ AcpiGbl_RootNodeStruct.Name.Integer = ACPI_ROOT_NAME; AcpiGbl_RootNodeStruct.DescriptorType = ACPI_DESC_TYPE_NAMED; AcpiGbl_RootNodeStruct.Type = ACPI_TYPE_DEVICE; + AcpiGbl_RootNodeStruct.Parent = NULL; AcpiGbl_RootNodeStruct.Child = NULL; AcpiGbl_RootNodeStruct.Peer = NULL; AcpiGbl_RootNodeStruct.Object = NULL; - AcpiGbl_RootNodeStruct.Flags = ANOBJ_END_OF_PEER_LIST; + AcpiGbl_RootNodeStruct.Flags = 0; Status = AcpiNsRootInitialize (); AcpiDmAddExternalsToNamespace (); @@ -607,10 +612,10 @@ /* Header and input table info */ - AcpiOsPrintf ("/*\n * Intel ACPI Component Architecture\n"); - AcpiOsPrintf (" * AML Disassembler version %8.8X\n", ACPI_CA_VERSION); + AcpiOsPrintf ("/*\n"); + AcpiOsPrintf (ACPI_COMMON_HEADER ("AML Disassembler", " * ")); - AcpiOsPrintf (" *\n * Disassembly of %s, %s", Filename, ctime (&Timer)); + AcpiOsPrintf (" * Disassembly of %s, %s", Filename, ctime (&Timer)); AcpiOsPrintf (" *\n"); } @@ -629,7 +634,7 @@ * *****************************************************************************/ -void +static void AdCreateTableHeader ( char *Filename, ACPI_TABLE_HEADER *Table) @@ -643,7 +648,7 @@ */ AdDisassemblerHeader (Filename); - AcpiOsPrintf (" *\n * Original Table Header:\n"); + AcpiOsPrintf (" * Original Table Header:\n"); AcpiOsPrintf (" * Signature \"%4.4s\"\n", Table->Signature); AcpiOsPrintf (" * Length 0x%8.8X (%u)\n", Table->Length, Table->Length); @@ -688,7 +693,7 @@ AcpiOsPrintf (" * OEM Revision 0x%8.8X (%u)\n", Table->OemRevision, Table->OemRevision); AcpiOsPrintf (" * Compiler ID \"%.4s\"\n", Table->AslCompilerId); AcpiOsPrintf (" * Compiler Version 0x%8.8X (%u)\n", Table->AslCompilerRevision, Table->AslCompilerRevision); - AcpiOsPrintf (" */\n"); + AcpiOsPrintf (" */\n\n"); /* Create AML output filename based on input filename */ @@ -706,7 +711,7 @@ /* Open the ASL definition block */ AcpiOsPrintf ( - "DefinitionBlock (\"%s\", \"%4.4s\", %hd, \"%.6s\", \"%.8s\", 0x%8.8X)\n", + "DefinitionBlock (\"%s\", \"%4.4s\", %hu, \"%.6s\", \"%.8s\", 0x%8.8X)\n", NewFilename, Table->Signature, Table->Revision, Table->OemId, Table->OemTableId, Table->OemRevision); @@ -776,7 +781,7 @@ * *****************************************************************************/ -ACPI_STATUS +static ACPI_STATUS AdDeferredParse ( ACPI_PARSE_OBJECT *Op, UINT8 *Aml, @@ -899,7 +904,7 @@ * *****************************************************************************/ -ACPI_STATUS +static ACPI_STATUS AdParseDeferredOps ( ACPI_PARSE_OBJECT *Root) { @@ -1018,7 +1023,7 @@ * is architecture-dependent. */ NumTables = (NewTable->Length - sizeof (ACPI_TABLE_HEADER)) / PointerSize; - AcpiOsPrintf ("There are %d tables defined in the %4.4s\n\n", + AcpiOsPrintf ("There are %u tables defined in the %4.4s\n\n", NumTables, NewTable->Signature); /* Get the FADT */ Modified: haiku/trunk/src/add-ons/kernel/bus_managers/acpi/common/adwalk.c =================================================================== --- haiku/trunk/src/add-ons/kernel/bus_managers/acpi/common/adwalk.c 2010-11-21 21:00:10 UTC (rev 39564) +++ haiku/trunk/src/add-ons/kernel/bus_managers/acpi/common/adwalk.c 2010-11-21 21:58:06 UTC (rev 39565) @@ -537,7 +537,7 @@ } ArgCount = AcpiDmInspectPossibleArgs (3, 1, NextOp); - AcpiOsPrintf ("/* A-CHILDREN: %d Actual %d */\n", ArgCount, AcpiDmCountChildren (Op)); + AcpiOsPrintf ("/* A-CHILDREN: %u Actual %u */\n", ArgCount, AcpiDmCountChildren (Op)); if (ArgCount < 1) { @@ -792,6 +792,7 @@ ACPI_PARSE_OBJECT *NextOp; ACPI_NAMESPACE_NODE *Node; ACPI_OPERAND_OBJECT *Object; + UINT32 ParamCount = 0; WalkState = Info->WalkState; @@ -880,18 +881,13 @@ if (Object) { ObjectType2 = Object->Common.Type; + if (ObjectType2 == ACPI_TYPE_METHOD) + { + ParamCount = Object->Method.ParamCount; + } } - if (ObjectType2 == ACPI_TYPE_METHOD) - { - AcpiDmAddToExternalList (Op, Path, ACPI_TYPE_METHOD, - Object->Method.ParamCount); - } - else - { - AcpiDmAddToExternalList (Op, Path, (UINT8) ObjectType2, 0); - } - + AcpiDmAddToExternalList (Op, Path, (UINT8) ObjectType2, ParamCount); Op->Common.Node = Node; } else Modified: haiku/trunk/src/add-ons/kernel/bus_managers/acpi/common/dmextern.c =================================================================== --- haiku/trunk/src/add-ons/kernel/bus_managers/acpi/common/dmextern.c 2010-11-21 21:00:10 UTC (rev 39564) +++ haiku/trunk/src/add-ons/kernel/bus_managers/acpi/common/dmextern.c 2010-11-21 21:58:06 UTC (rev 39565) @@ -252,7 +252,7 @@ Node = Op->Common.Node; while (Node && (*Path == (UINT8) AML_PARENT_PREFIX)) { - Node = AcpiNsGetParentNode (Node); + Node = Node->Parent; Path++; } @@ -312,6 +312,95 @@ /******************************************************************************* * + * FUNCTION: AcpiDmAddToExternalFileList + * + * PARAMETERS: PathList - Single path or list separated by comma + * + * RETURN: None + * + * DESCRIPTION: Add external files to global list + * + ******************************************************************************/ + +ACPI_STATUS +AcpiDmAddToExternalFileList ( + char *PathList) +{ + ACPI_EXTERNAL_FILE *ExternalFile; + char *Path; + char *TmpPath; + + + if (!PathList) + { + return (AE_OK); + } + + Path = strtok (PathList, ","); + + while (Path) + { + TmpPath = ACPI_ALLOCATE_ZEROED (ACPI_STRLEN (Path) + 1); + if (!TmpPath) + { + return (AE_NO_MEMORY); + } + + ACPI_STRCPY (TmpPath, Path); + + ExternalFile = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_EXTERNAL_FILE)); + if (!ExternalFile) + { + ACPI_FREE (TmpPath); + return (AE_NO_MEMORY); + } + + ExternalFile->Path = TmpPath; + + if (AcpiGbl_ExternalFileList) + { + ExternalFile->Next = AcpiGbl_ExternalFileList; + } + + AcpiGbl_ExternalFileList = ExternalFile; + Path = strtok (NULL, ","); + } + + return (AE_OK); +} + + +/******************************************************************************* + * + * FUNCTION: AcpiDmClearExternalFileList + * + * PARAMETERS: None + * + * RETURN: None + * + * DESCRIPTION: Clear the external file list + * + ******************************************************************************/ + +void +AcpiDmClearExternalFileList ( + void) +{ + ACPI_EXTERNAL_FILE *NextExternal; + + + while (AcpiGbl_ExternalFileList) + { + NextExternal = AcpiGbl_ExternalFileList->Next; + ACPI_FREE (AcpiGbl_ExternalFileList->Path); + ACPI_FREE (AcpiGbl_ExternalFileList); + AcpiGbl_ExternalFileList = NextExternal; + } +} + + +/******************************************************************************* + * * FUNCTION: AcpiDmAddToExternalList * * PARAMETERS: Op - Current parser Op @@ -629,7 +718,7 @@ if (AcpiGbl_ExternalList->Type == ACPI_TYPE_METHOD) { - AcpiOsPrintf (") // %d Arguments\n", + AcpiOsPrintf (") // %u Arguments\n", AcpiGbl_ExternalList->Value); } else Modified: haiku/trunk/src/add-ons/kernel/bus_managers/acpi/common/dmrestag.c =================================================================== --- haiku/trunk/src/add-ons/kernel/bus_managers/acpi/common/dmrestag.c 2010-11-21 21:00:10 UTC (rev 39564) +++ haiku/trunk/src/add-ons/kernel/bus_managers/acpi/common/dmrestag.c 2010-11-21 21:58:06 UTC (rev 39565) @@ -549,13 +549,6 @@ return (Node); } - /* List is circular, this flag marks the end */ - - if (Node->Flags & ANOBJ_END_OF_PEER_LIST) - { - return (NULL); - } - Node = Node->Peer; } @@ -711,8 +704,8 @@ Name[0] = '_'; Name[1] = AcpiGbl_Prefix[AcpiGbl_NextPrefix]; - Name[2] = AcpiUtHexToAsciiChar (AcpiGbl_NextResourceId, 4); - Name[3] = AcpiUtHexToAsciiChar (AcpiGbl_NextResourceId, 0); + Name[2] = AcpiUtHexToAsciiChar ((UINT64) AcpiGbl_NextResourceId, 4); + Name[3] = AcpiUtHexToAsciiChar ((UINT64) AcpiGbl_NextResourceId, 0); /* Update globals for next name */ Modified: haiku/trunk/src/add-ons/kernel/bus_managers/acpi/common/dmtable.c =================================================================== --- haiku/trunk/src/add-ons/kernel/bus_managers/acpi/common/dmtable.c 2010-11-21 21:00:10 UTC (rev 39564) +++ haiku/trunk/src/add-ons/kernel/bus_managers/acpi/common/dmtable.c 2010-11-21 21:58:06 UTC (rev 39565) @@ -117,6 +117,8 @@ #include "accommon.h" #include "acdisasm.h" #include "actables.h" +#include "aslcompiler.h" +#include "dtcompiler.h" /* This module used for application-level code only */ @@ -125,21 +127,13 @@ /* Local Prototypes */ -static ACPI_DMTABLE_DATA * -AcpiDmGetTableData ( - char *Signature); - static void AcpiDmCheckAscii ( UINT8 *Target, char *RepairedName, UINT32 Count); -UINT8 -AcpiTbGenerateChecksum ( - ACPI_TABLE_HEADER *Table); - /* These tables map a subtable type to a description string */ static const char *AcpiDmAsfSubnames[] = @@ -161,6 +155,74 @@ "Unknown SubTable Type" /* Reserved */ }; +static const char *AcpiDmEinjActions[] = +{ + "Begin Operation", + "Get Trigger Table", + "Set Error Type", + "Get Error Type", + "End Operation", + "Execute Operation", + "Check Busy Status", + "Get Command Status", + "Unknown Action" +}; + +static const char *AcpiDmEinjInstructions[] = +{ + "Read Register", + "Read Register Value", + "Write Register", + "Write Register Value", + "Noop", + "Unknown Instruction" +}; + +static const char *AcpiDmErstActions[] = +{ + "Begin Write Operation", + "Begin Read Operation", + "Begin Clear Operation", + "End Operation", + "Set Record Offset", + "Execute Operation", + "Check Busy Status", + "Get Command Status", + "Get Record Identifier", + "Set Record Identifier", + "Get Record Count", + "Begin Dummy Write", + "Unused/Unknown Action", + "Get Error Address Range", + "Get Error Address Length", + "Get Error Attributes", + "Unknown Action" +}; + +static const char *AcpiDmErstInstructions[] = +{ + "Read Register", + "Read Register Value", + "Write Register", + "Write Register Value", + "Noop", + "Load Var1", + "Load Var2", + "Store Var1", + "Add", + "Subtract", + "Add Value", + "Subtract Value", + "Stall", + "Stall While True", + "Skip Next If True", + "GoTo", + "Set Source Address", + "Set Destination Address", + "Move Data", + "Unknown Instruction" +}; + static const char *AcpiDmHestSubnames[] = { "IA-32 Machine Check Exception", @@ -237,56 +299,59 @@ * * ACPI Table Data, indexed by signature. * - * Each entry contains: Signature, Table Info, Handler, Description + * Each entry contains: Signature, Table Info, Handler, DtHandler, + * Template, Description * - * Simple tables have only a TableInfo structure, complex tables have a handler. - * This table must be NULL terminated. RSDP and FACS are special-cased - * elsewhere. + * Simple tables have only a TableInfo structure, complex tables have a + * handler. This table must be NULL terminated. RSDP and FACS are + * special-cased elsewhere. * ******************************************************************************/ -static ACPI_DMTABLE_DATA AcpiDmTableData[] = +ACPI_DMTABLE_DATA AcpiDmTableData[] = { - {ACPI_SIG_ASF, NULL, AcpiDmDumpAsf, "Alert Standard Format table"}, - {ACPI_SIG_BOOT, AcpiDmTableInfoBoot, NULL, "Simple Boot Flag Table"}, - {ACPI_SIG_BERT, AcpiDmTableInfoBert, NULL, "Boot Error Record Table"}, - {ACPI_SIG_CPEP, NULL, AcpiDmDumpCpep, "Corrected Platform Error Polling table"}, - {ACPI_SIG_DBGP, AcpiDmTableInfoDbgp, NULL, "Debug Port table"}, - {ACPI_SIG_DMAR, NULL, AcpiDmDumpDmar, "DMA Remapping table"}, - {ACPI_SIG_ECDT, AcpiDmTableInfoEcdt, NULL, "Embedded Controller Boot Resources Table"}, - {ACPI_SIG_EINJ, NULL, AcpiDmDumpEinj, "Error Injection table"}, - {ACPI_SIG_ERST, NULL, AcpiDmDumpErst, "Error Record Serialization Table"}, - {ACPI_SIG_FADT, NULL, AcpiDmDumpFadt, "Fixed ACPI Description Table"}, - {ACPI_SIG_HEST, NULL, AcpiDmDumpHest, "Hardware Error Source Table"}, - {ACPI_SIG_HPET, AcpiDmTableInfoHpet, NULL, "High Precision Event Timer table"}, - {ACPI_SIG_IVRS, NULL, AcpiDmDumpIvrs, "I/O Virtualization Reporting Structure"}, - {ACPI_SIG_MADT, NULL, AcpiDmDumpMadt, "Multiple APIC Description Table"}, - {ACPI_SIG_MCFG, NULL, AcpiDmDumpMcfg, "Memory Mapped Configuration table"}, - {ACPI_SIG_MCHI, AcpiDmTableInfoMchi, NULL, "Management Controller Host Interface table"}, - {ACPI_SIG_MSCT, NULL, AcpiDmDumpMsct, "Maximum System Characteristics Table"}, - {ACPI_SIG_RSDT, NULL, AcpiDmDumpRsdt, "Root System Description Table"}, - {ACPI_SIG_SBST, AcpiDmTableInfoSbst, NULL, "Smart Battery Specification Table"}, - {ACPI_SIG_SLIC, AcpiDmTableInfoSlic, NULL, "Software Licensing Description Table"}, - {ACPI_SIG_SLIT, NULL, AcpiDmDumpSlit, "System Locality Information Table"}, - {ACPI_SIG_SPCR, AcpiDmTableInfoSpcr, NULL, "Serial Port Console Redirection table"}, - {ACPI_SIG_SPMI, AcpiDmTableInfoSpmi, NULL, "Server Platform Management Interface table"}, - {ACPI_SIG_SRAT, NULL, AcpiDmDumpSrat, "System Resource Affinity Table"}, - {ACPI_SIG_TCPA, AcpiDmTableInfoTcpa, NULL, "Trusted Computing Platform Alliance table"}, - {ACPI_SIG_UEFI, AcpiDmTableInfoUefi, NULL, "UEFI Boot Optimization Table"}, - {ACPI_SIG_WAET, AcpiDmTableInfoWaet, NULL, "Windows ACPI Emulated Devices Table"}, - {ACPI_SIG_WDAT, NULL, AcpiDmDumpWdat, "Watchdog Action Table"}, - {ACPI_SIG_WDRT, AcpiDmTableInfoWdrt, NULL, "Watchdog Resource Table"}, - {ACPI_SIG_XSDT, NULL, AcpiDmDumpXsdt, "Extended System Description Table"}, - {NULL, NULL, NULL, NULL} + {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_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"}, + {ACPI_SIG_ECDT, AcpiDmTableInfoEcdt, NULL, NULL, TemplateEcdt, "Embedded Controller Boot Resources Table"}, + {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_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_MSCT, NULL, AcpiDmDumpMsct, DtCompileMsct, TemplateMsct, "Maximum System Characteristics Table"}, + {ACPI_SIG_RSDT, NULL, AcpiDmDumpRsdt, DtCompileRsdt, TemplateRsdt, "Root System Description Table"}, + {ACPI_SIG_SBST, AcpiDmTableInfoSbst, NULL, NULL, TemplateSbst, "Smart Battery Specification Table"}, + {ACPI_SIG_SLIC, AcpiDmTableInfoSlic, NULL, NULL, NULL, "Software Licensing Description Table"}, + {ACPI_SIG_SLIT, NULL, AcpiDmDumpSlit, DtCompileSlit, TemplateSlit, "System Locality Information Table"}, + {ACPI_SIG_SPCR, AcpiDmTableInfoSpcr, NULL, NULL, TemplateSpcr, "Serial Port Console Redirection table"}, + {ACPI_SIG_SPMI, AcpiDmTableInfoSpmi, NULL, NULL, TemplateSpmi, "Server Platform Management Interface table"}, + {ACPI_SIG_SRAT, NULL, AcpiDmDumpSrat, DtCompileSrat, TemplateSrat, "System Resource Affinity Table"}, + {ACPI_SIG_TCPA, AcpiDmTableInfoTcpa, NULL, NULL, TemplateTcpa, "Trusted Computing Platform Alliance table"}, + {ACPI_SIG_UEFI, AcpiDmTableInfoUefi, NULL, NULL, TemplateUefi, "UEFI Boot Optimization Table"}, + {ACPI_SIG_WAET, AcpiDmTableInfoWaet, NULL, NULL, TemplateWaet, "Windows ACPI Emulated Devices Table"}, + {ACPI_SIG_WDAT, NULL, AcpiDmDumpWdat, DtCompileWdat, TemplateWdat, "Watchdog Action Table"}, + {ACPI_SIG_WDDT, AcpiDmTableInfoWddt, NULL, NULL, TemplateWddt, "Watchdog Description Table"}, + {ACPI_SIG_WDRT, AcpiDmTableInfoWdrt, NULL, NULL, TemplateWdrt, "Watchdog Resource Table"}, + {ACPI_SIG_XSDT, NULL, AcpiDmDumpXsdt, DtCompileXsdt, TemplateXsdt, "Extended System Description Table"}, + {NULL, NULL, NULL, NULL, NULL, NULL} }; /******************************************************************************* * - * FUNCTION: AcpiTbGenerateChecksum + * FUNCTION: AcpiDmGenerateChecksum * - * PARAMETERS: Table - Pointer to a valid ACPI table (with a - * standard ACPI header) + * PARAMETERS: Table - Pointer to table to be checksummed + * Length - Length of the table + * OriginalChecksum - Value of the checksum field * * RETURN: 8 bit checksum of buffer * @@ -295,19 +360,21 @@ ******************************************************************************/ UINT8 -AcpiTbGenerateChecksum ( - ACPI_TABLE_HEADER *Table) +AcpiDmGenerateChecksum ( + void *Table, + UINT32 Length, + UINT8 OriginalChecksum) { UINT8 Checksum; /* Sum the entire table as-is */ - Checksum = AcpiTbChecksum ((UINT8 *) Table, Table->Length); + Checksum = AcpiTbChecksum ((UINT8 *) Table, Length); /* Subtract off the existing checksum value in the table */ - Checksum = (UINT8) (Checksum - Table->Checksum); + Checksum = (UINT8) (Checksum - OriginalChecksum); /* Compute the final checksum */ @@ -328,7 +395,7 @@ * ******************************************************************************/ -static ACPI_DMTABLE_DATA * +ACPI_DMTABLE_DATA * AcpiDmGetTableData ( char *Signature) { @@ -432,10 +499,13 @@ } } - /* Always dump the raw table data */ + if (!Gbl_DoTemplates || Gbl_VerboseTemplates) + { + /* Dump the raw table data */ - AcpiOsPrintf ("\nRaw Table Data\n\n"); - AcpiUtDumpBuffer2 (ACPI_CAST_PTR (UINT8, Table), Length, DB_BYTE_DISPLAY); + AcpiOsPrintf ("\nRaw Table Data\n\n"); + AcpiUtDumpBuffer2 (ACPI_CAST_PTR (UINT8, Table), Length, DB_BYTE_DISPLAY); + } } @@ -463,15 +533,31 @@ char *Name) { - if (ByteLength) + if (Gbl_DoTemplates && !Gbl_VerboseTemplates) /* Terse template */ { - AcpiOsPrintf ("[%3.3Xh %4.4d% 3d] %28s : ", - Offset, Offset, ByteLength, Name); + if (ByteLength) + { + AcpiOsPrintf ("[%.3d] %34s : ", + ByteLength, Name); + } + else + { + AcpiOsPrintf ("%40s : ", + Name); + } } - else + else /* Normal disassembler or verbose template */ { - AcpiOsPrintf ("%43s : ", - Name); + if (ByteLength) + { + AcpiOsPrintf ("[%3.3Xh %4.4d% 3d] %28s : ", + Offset, Offset, ByteLength, Name); + } [... truncated: 8810 lines follow ...]