Author: tqh Date: 2010-05-19 23:33:02 +0200 (Wed, 19 May 2010) New Revision: 36867 Changeset: http://dev.haiku-os.org/changeset/36867/haiku Added: haiku/trunk/src/add-ons/kernel/bus_managers/acpi/compiler/aslpredef.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/compiler/aslrestype1i.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/compiler/aslrestype2d.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/compiler/aslrestype2e.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/compiler/aslrestype2q.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/compiler/aslrestype2w.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/executer/exdebug.c Modified: haiku/trunk/headers/os/drivers/ACPI.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/ 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_module.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/acpi_priv.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/common/adisasm.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/common/dmextern.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/compiler/Makefile haiku/trunk/src/add-ons/kernel/bus_managers/acpi/compiler/aslanalyze.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/compiler/aslcompile.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/compiler/aslcompiler.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/compiler/asldefine.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/compiler/aslfiles.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/compiler/aslglobal.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/compiler/asllisting.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/compiler/aslmain.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/compiler/aslmap.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/compiler/aslresource.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/compiler/aslrestype1.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/compiler/aslrestype2.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/compiler/aslstubs.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/compiler/asltypes.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/debugger/dbcmds.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/debugger/dbdisply.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/dispatcher/dsfield.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/dswexec.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/dispatcher/dswstate.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/events/evevent.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/evmisc.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/executer/exconfig.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/executer/exconvrt.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/executer/excreate.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/executer/exfield.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/executer/exfldio.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/executer/exmisc.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/executer/exmutex.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/executer/exnames.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/executer/exoparg1.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/executer/exoparg2.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/executer/exoparg3.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/executer/exoparg6.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/exresnte.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/executer/exresolv.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/executer/exresop.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/executer/exstore.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/executer/exsystem.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/hardware/hwregs.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/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/acinterp.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/include/aclocal.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/actables.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/amlresrc.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/include/platform/acfreebsd.h haiku/trunk/src/add-ons/kernel/bus_managers/acpi/namespace/nsaccess.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/namespace/nsdump.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/namespace/nsnames.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/parser/psargs.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/parser/psloop.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/parser/psxface.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/resources/rscreate.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/resources/rslist.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/resources/rsmisc.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/tables/tbfadt.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/tables/tbfind.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/tables/tbinstal.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/tables/tbutils.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/tables/tbxface.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/tables/tbxfroot.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/utilities/utalloc.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/utilities/utcopy.c haiku/trunk/src/add-ons/kernel/bus_managers/acpi/utilities/utdelete.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 [... truncated: 4 changed files follow ...] Log: Merge acpi from acpica vendor branch 20100428: * AcpiSetGpeType no longer exists, replaced with AcpiSetGpe. Since acpi changed gpe handling embedded controller might need improvements. Modified: haiku/trunk/headers/os/drivers/ACPI.h =================================================================== --- haiku/trunk/headers/os/drivers/ACPI.h 2010-05-19 14:03:41 UTC (rev 36866) +++ haiku/trunk/headers/os/drivers/ACPI.h 2010-05-19 21:33:02 UTC (rev 36867) @@ -170,8 +170,8 @@ status_t (*enable_gpe)(acpi_handle handle, uint32 gpeNumber, uint32 flags); - status_t (*set_gpe_type)(acpi_handle handle, uint32 gpeNumber, - uint8 type); + 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); status_t (*remove_gpe_handler)(acpi_handle handle, uint32 gpeNumber, Property changes on: haiku/trunk/src/add-ons/kernel/bus_managers/acpi ___________________________________________________________________ Modified: svn:mergeinfo - /haiku/vendor/acpica/20100121:35554-35558 /haiku/vendor/acpica/current:33139-35553 + /haiku/vendor/acpica/current:33139-36866 Modified: haiku/trunk/src/add-ons/kernel/bus_managers/acpi/Jamfile =================================================================== --- haiku/trunk/src/add-ons/kernel/bus_managers/acpi/Jamfile 2010-05-19 14:03:41 UTC (rev 36866) +++ haiku/trunk/src/add-ons/kernel/bus_managers/acpi/Jamfile 2010-05-19 21:33:02 UTC (rev 36867) @@ -10,6 +10,8 @@ evevent.c evgpe.c evgpeblk.c + evgpeinit.c + evgpeutil.c evmisc.c evregion.c evrgnini.c @@ -56,6 +58,7 @@ exconfig.c exconvrt.c excreate.c + exdebug.c exdump.c exfield.c exfldio.c 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-05-19 14:03:41 UTC (rev 36866) +++ haiku/trunk/src/add-ons/kernel/bus_managers/acpi/acpi_busman.c 2010-05-19 21:33:02 UTC (rev 36867) @@ -267,9 +267,9 @@ status_t -set_gpe_type(acpi_handle handle, uint32 gpeNumber, uint8 type) +set_gpe(acpi_handle handle, uint32 gpeNumber, uint8 action) { - return AcpiSetGpeType(handle, gpeNumber, type) == AE_OK ? B_OK : B_ERROR; + return AcpiSetGpe(handle, gpeNumber, action) == AE_OK ? B_OK : B_ERROR; } @@ -651,7 +651,7 @@ install_notify_handler, remove_notify_handler, enable_gpe, - set_gpe_type, + set_gpe, install_gpe_handler, remove_gpe_handler, install_address_space_handler, 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-05-19 14:03:41 UTC (rev 36866) +++ haiku/trunk/src/add-ons/kernel/bus_managers/acpi/acpi_embedded_controller.cpp 2010-05-19 21:33:02 UTC (rev 36867) @@ -374,8 +374,8 @@ } // Enable runtime GPEs for the handler. - status = sc->ec_acpi_module->set_gpe_type(sc->ec_gpehandle, sc->ec_gpebit, - ACPI_GPE_TYPE_RUNTIME); + status = sc->ec_acpi_module->set_gpe(sc->ec_gpehandle, sc->ec_gpebit, + ACPI_GPE_ENABLE); if (status != B_OK) { TRACE("AcpiSetGpeType failed.\n"); goto error; Modified: haiku/trunk/src/add-ons/kernel/bus_managers/acpi/acpi_module.c =================================================================== --- haiku/trunk/src/add-ons/kernel/bus_managers/acpi/acpi_module.c 2010-05-19 14:03:41 UTC (rev 36866) +++ haiku/trunk/src/add-ons/kernel/bus_managers/acpi/acpi_module.c 2010-05-19 21:33:02 UTC (rev 36867) @@ -197,7 +197,7 @@ install_notify_handler, remove_notify_handler, enable_gpe, - set_gpe_type, + set_gpe, install_gpe_handler, remove_gpe_handler, install_address_space_handler, 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-05-19 14:03:41 UTC (rev 36866) +++ haiku/trunk/src/add-ons/kernel/bus_managers/acpi/acpi_priv.h 2010-05-19 21:33:02 UTC (rev 36867) @@ -62,8 +62,8 @@ status_t (*enable_gpe)(acpi_handle handle, uint32 gpeNumber, uint32 flags); - status_t (*set_gpe_type)(acpi_handle handle, uint32 gpeNumber, - uint8 type); + 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); status_t (*remove_gpe_handler)(acpi_handle handle, uint32 gpeNumber, @@ -143,7 +143,7 @@ acpi_notify_handler handler); status_t enable_gpe(acpi_handle handle, uint32 gpeNumber, uint32 flags); -status_t set_gpe_type(acpi_handle handle, uint32 gpeNumber, uint8 type); +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); status_t remove_gpe_handler(acpi_handle handle, uint32 gpeNumber, 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-05-19 14:03:41 UTC (rev 36866) +++ haiku/trunk/src/add-ons/kernel/bus_managers/acpi/common/adisasm.c 2010-05-19 21:33:02 UTC (rev 36867) @@ -282,8 +282,8 @@ /* Setup the Table Manager (cheat - there is no RSDT) */ - AcpiGbl_RootTableList.Size = 1; - AcpiGbl_RootTableList.Count = 0; + AcpiGbl_RootTableList.MaxTableCount = 1; + AcpiGbl_RootTableList.CurrentTableCount = 0; AcpiGbl_RootTableList.Tables = LocalTables; return (Status); @@ -1156,7 +1156,7 @@ /* If LoadTable is FALSE, we are parsing the last loaded table */ - TableIndex = AcpiGbl_RootTableList.Count - 1; + TableIndex = AcpiGbl_RootTableList.CurrentTableCount - 1; /* Pass 2 */ 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-05-19 14:03:41 UTC (rev 36866) +++ haiku/trunk/src/add-ons/kernel/bus_managers/acpi/common/dmextern.c 2010-05-19 21:33:02 UTC (rev 36867) @@ -270,6 +270,15 @@ } Length = (ACPI_STRLEN (ParentPath) + ACPI_STRLEN (Path) + 1); + if (ParentPath[1]) + { + /* + * If ParentPath is not just a simple '\', increment the length + * for the required dot separator (ParentPath.Path) + */ + Length++; + } + Fullpath = ACPI_ALLOCATE_ZEROED (Length); if (!Fullpath) { @@ -374,7 +383,7 @@ (NextExternal->Value != Value)) { ACPI_ERROR ((AE_INFO, - "Argument count mismatch for method %s %d %d", + "Argument count mismatch for method %s %u %u", NextExternal->Path, NextExternal->Value, Value)); } 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-05-19 14:03:41 UTC (rev 36866) +++ haiku/trunk/src/add-ons/kernel/bus_managers/acpi/common/dmtable.c 2010-05-19 21:33:02 UTC (rev 36867) @@ -262,6 +262,7 @@ {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"}, @@ -911,7 +912,7 @@ default: ACPI_ERROR ((AE_INFO, - "**** Invalid table opcode [%X] ****\n", Info->Opcode)); + "**** Invalid table opcode [0x%X] ****\n", Info->Opcode)); return (AE_SUPPORT); } } Modified: haiku/trunk/src/add-ons/kernel/bus_managers/acpi/common/dmtbdump.c =================================================================== --- haiku/trunk/src/add-ons/kernel/bus_managers/acpi/common/dmtbdump.c 2010-05-19 14:03:41 UTC (rev 36866) +++ haiku/trunk/src/add-ons/kernel/bus_managers/acpi/common/dmtbdump.c 2010-05-19 21:33:02 UTC (rev 36867) @@ -363,7 +363,7 @@ break; default: - AcpiOsPrintf ("\n**** Unknown ASF sub-table type %X\n", SubTable->Header.Type); + AcpiOsPrintf ("\n**** Unknown ASF sub-table type 0x%X\n", SubTable->Header.Type); return; } @@ -561,7 +561,7 @@ ScopeOffset = sizeof (ACPI_DMAR_RHSA); break; default: - AcpiOsPrintf ("\n**** Unknown DMAR sub-table type %X\n\n", SubTable->Type); + AcpiOsPrintf ("\n**** Unknown DMAR sub-table type 0x%X\n\n", SubTable->Type); return; } @@ -809,7 +809,7 @@ default: /* Cannot continue on unknown type - no length */ - AcpiOsPrintf ("\n**** Unknown HEST sub-table type %X\n", SubTable->Type); + AcpiOsPrintf ("\n**** Unknown HEST sub-table type 0x%X\n", SubTable->Type); return; } @@ -916,7 +916,7 @@ InfoTable = AcpiDmTableInfoIvrs1; break; default: - AcpiOsPrintf ("\n**** Unknown IVRS sub-table type %X\n", + AcpiOsPrintf ("\n**** Unknown IVRS sub-table type 0x%X\n", SubTable->Type); /* Attempt to continue */ @@ -1002,7 +1002,7 @@ InfoTable = AcpiDmTableInfoIvrs4; AcpiOsPrintf ( "\n**** Unknown IVRS device entry type/length: " - "%.2X/%X at offset %.4X: (header below)\n", + "0x%.2X/0x%X at offset 0x%.4X: (header below)\n", EntryType, EntryLength, EntryOffset); break; } @@ -1110,7 +1110,7 @@ InfoTable = AcpiDmTableInfoMadt10; break; default: - AcpiOsPrintf ("\n**** Unknown MADT sub-table type %X\n\n", SubTable->Type); + AcpiOsPrintf ("\n**** Unknown MADT sub-table type 0x%X\n\n", SubTable->Type); /* Attempt to continue */ @@ -1378,7 +1378,7 @@ InfoTable = AcpiDmTableInfoSrat2; break; default: - AcpiOsPrintf ("\n**** Unknown SRAT sub-table type %X\n", SubTable->Type); + AcpiOsPrintf ("\n**** Unknown SRAT sub-table type 0x%X\n", SubTable->Type); /* Attempt to continue */ Modified: haiku/trunk/src/add-ons/kernel/bus_managers/acpi/common/dmtbinfo.c =================================================================== --- haiku/trunk/src/add-ons/kernel/bus_managers/acpi/common/dmtbinfo.c 2010-05-19 14:03:41 UTC (rev 36866) +++ haiku/trunk/src/add-ons/kernel/bus_managers/acpi/common/dmtbinfo.c 2010-05-19 21:33:02 UTC (rev 36867) @@ -142,6 +142,7 @@ #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) @@ -1226,6 +1227,30 @@ /******************************************************************************* * + * MCHI - Management Controller Host Interface table + * + ******************************************************************************/ + +ACPI_DMTABLE_INFO AcpiDmTableInfoMchi[] = +{ + {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (InterfaceType), "Interface Type"}, + {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (Protocol), "Protocol"}, + {ACPI_DMT_UINT64, ACPI_MCHI_OFFSET (ProtocolData), "Protocol Data"}, + {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (InterruptType), "Interrupt Type"}, + {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (Gpe), "Gpe"}, + {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (PciDeviceFlag), "Pci Device Flag"}, + {ACPI_DMT_UINT32, ACPI_MCHI_OFFSET (GlobalInterrupt), "Global Interrupt"}, + {ACPI_DMT_GAS, ACPI_MCHI_OFFSET (ControlRegister), "Control Register"}, + {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (PciSegment), "Pci Segment"}, + {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (PciBus), "Pci Bus"}, + {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (PciDevice), "Pci Device"}, + {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (PciFunction), "Pci Function"}, + {ACPI_DMT_EXIT, 0, NULL} +}; + + +/******************************************************************************* + * * MSCT - Maximum System Characteristics Table (ACPI 4.0) * ******************************************************************************/ Modified: haiku/trunk/src/add-ons/kernel/bus_managers/acpi/compiler/Makefile =================================================================== --- haiku/trunk/src/add-ons/kernel/bus_managers/acpi/compiler/Makefile 2010-05-19 14:03:41 UTC (rev 36866) +++ haiku/trunk/src/add-ons/kernel/bus_managers/acpi/compiler/Makefile 2010-05-19 21:33:02 UTC (rev 36867) @@ -1,11 +1,37 @@ - PROG= iasl -SRCS= aslcompilerparse.c aslcompilerlex.c aslanalyze.c aslcodegen.c \ - aslcompile.c aslerror.c aslfiles.c asllength.c \ - asllisting.c aslload.c asllookup.c aslmain.c aslmap.c aslopcodes.c \ - asloperands.c aslresource.c aslrestype1.c aslrestype2.c aslstartup.c \ - asltree.c aslutils.c asltransform.c aslfold.c aslstubs.c aslopt.c \ +SRCS= \ + aslcompilerparse.c \ + aslcompilerlex.c \ + aslanalyze.c \ + aslcodegen.c \ + aslcompile.c \ + aslerror.c \ + aslfiles.c \ + aslfold.c \ + asllength.c \ + asllisting.c \ + aslload.c \ + asllookup.c \ + aslmain.c \ + aslmap.c \ + aslopcodes.c \ + asloperands.c \ + aslopt.c \ + aslpredef.c \ + aslresource.c \ + aslrestype1.c \ + aslrestype1i.c \ + aslrestype2.c \ + aslrestype2d.c \ + aslrestype2e.c \ + aslrestype2q.c \ + aslrestype2w.c \ + aslstartup.c \ + aslstubs.c \ + asltransform.c \ + asltree.c \ + aslutils.c \ ../common/getopt.c \ ../utilities/utalloc.c \ ../utilities/utcache.c \ Modified: haiku/trunk/src/add-ons/kernel/bus_managers/acpi/compiler/aslanalyze.c =================================================================== --- haiku/trunk/src/add-ons/kernel/bus_managers/acpi/compiler/aslanalyze.c 2010-05-19 14:03:41 UTC (rev 36866) +++ haiku/trunk/src/add-ons/kernel/bus_managers/acpi/compiler/aslanalyze.c 2010-05-19 21:33:02 UTC (rev 36867) @@ -143,16 +143,6 @@ ACPI_PARSE_OBJECT *Op); static UINT32 -AnCheckForReservedName ( - ACPI_PARSE_OBJECT *Op, - char *Name); - -static void -AnCheckForReservedMethod ( - ACPI_PARSE_OBJECT *Op, - ASL_METHOD_INFO *MethodInfo); - -static UINT32 AnMapObjTypeToBtype ( ACPI_PARSE_OBJECT *Op); @@ -598,219 +588,6 @@ /******************************************************************************* * - * FUNCTION: AnCheckForReservedName - * - * PARAMETERS: Op - A parse node - * Name - NameSeg to check - * - * RETURN: None - * - * DESCRIPTION: Check a NameSeg against the reserved list. - * - ******************************************************************************/ - -static UINT32 -AnCheckForReservedName ( - ACPI_PARSE_OBJECT *Op, - char *Name) -{ - UINT32 i; - - - if (Name[0] == 0) - { - AcpiOsPrintf ("Found a null name, external = %s\n", - Op->Asl.ExternalName); - } - - /* All reserved names are prefixed with a single underscore */ - - if (Name[0] != '_') - { - return (ACPI_NOT_RESERVED_NAME); - } - - /* Check for a standard reserved method name */ - - for (i = 0; ReservedMethods[i].Name; i++) - { - if (ACPI_COMPARE_NAME (Name, ReservedMethods[i].Name)) - { - if (ReservedMethods[i].Flags & ASL_RSVD_SCOPE) - { - AslError (ASL_ERROR, ASL_MSG_RESERVED_WORD, Op, - Op->Asl.ExternalName); - return (ACPI_PREDEFINED_NAME); - } - else if (ReservedMethods[i].Flags & ASL_RSVD_RESOURCE_NAME) - { - AslError (ASL_ERROR, ASL_MSG_RESERVED_WORD, Op, - Op->Asl.ExternalName); - return (ACPI_PREDEFINED_NAME); - } - - /* Return index into reserved array */ - - return i; - } - } - - /* - * Now check for the "special" reserved names -- - * GPE: _Lxx - * GPE: _Exx - * EC: _Qxx - */ - if ((Name[1] == 'L') || - (Name[1] == 'E') || - (Name[1] == 'Q')) - { - /* The next two characters must be hex digits */ - - if ((isxdigit ((int) Name[2])) && - (isxdigit ((int) Name[3]))) - { - return (ACPI_EVENT_RESERVED_NAME); - } - } - - - /* Check for the names reserved for the compiler itself: _T_x */ - - else if ((Op->Asl.ExternalName[1] == 'T') && - (Op->Asl.ExternalName[2] == '_')) - { - /* Ignore if actually emitted by the compiler */ - - if (Op->Asl.CompileFlags & NODE_COMPILER_EMITTED) - { - return (ACPI_NOT_RESERVED_NAME); - } - - /* - * Was not actually emitted by the compiler. This is a special case, - * however. If the ASL code being compiled was the result of a - * dissasembly, it may possibly contain valid compiler-emitted names - * of the form "_T_x". We don't want to issue an error or even a - * warning and force the user to manually change the names. So, we - * will issue a remark instead. - */ - AslError (ASL_REMARK, ASL_MSG_COMPILER_RESERVED, Op, Op->Asl.ExternalName); - return (ACPI_COMPILER_RESERVED_NAME); - } - - /* - * The name didn't match any of the known reserved names. Flag it as a - * warning, since the entire namespace starting with an underscore is - * reserved by the ACPI spec. - */ - AslError (ASL_WARNING, ASL_MSG_UNKNOWN_RESERVED_NAME, Op, - Op->Asl.ExternalName); - - return (ACPI_NOT_RESERVED_NAME); -} - - -/******************************************************************************* - * - * FUNCTION: AnCheckForReservedMethod - * - * PARAMETERS: Op - A parse node of type "METHOD". - * MethodInfo - Saved info about this method - * - * RETURN: None - * - * DESCRIPTION: If method is a reserved name, check that the number of arguments - * and the return type (returns a value or not) is correct. - * - ******************************************************************************/ - -static void -AnCheckForReservedMethod ( - ACPI_PARSE_OBJECT *Op, - ASL_METHOD_INFO *MethodInfo) -{ - UINT32 Index; - UINT32 RequiredArgsCurrent; - UINT32 RequiredArgsOld; - - - /* Check for a match against the reserved name list */ - - Index = AnCheckForReservedName (Op, Op->Asl.NameSeg); - - switch (Index) - { - case ACPI_NOT_RESERVED_NAME: - case ACPI_PREDEFINED_NAME: - case ACPI_COMPILER_RESERVED_NAME: - - /* Just return, nothing to do */ - break; - - - case ACPI_EVENT_RESERVED_NAME: - - Gbl_ReservedMethods++; - - /* NumArguments must be zero for all _Lxx, _Exx, and _Qxx methods */ - - if (MethodInfo->NumArguments != 0) - { - sprintf (MsgBuffer, "%s requires %d", - Op->Asl.ExternalName, 0); - - AslError (ASL_WARNING, ASL_MSG_RESERVED_ARG_COUNT_HI, Op, MsgBuffer); - } - break; - - - default: - - Gbl_ReservedMethods++; - - /* - * Matched a reserved method name - * - * Validate the ASL-defined argument count. Allow two different legal - * arg counts. - */ - RequiredArgsCurrent = ReservedMethods[Index].NumArguments & 0x0F; - RequiredArgsOld = ReservedMethods[Index].NumArguments >> 4; - - if ((MethodInfo->NumArguments != RequiredArgsCurrent) && - (MethodInfo->NumArguments != RequiredArgsOld)) - { - sprintf (MsgBuffer, "%s requires %d", - ReservedMethods[Index].Name, - RequiredArgsCurrent); - - if (MethodInfo->NumArguments > RequiredArgsCurrent) - { - AslError (ASL_WARNING, ASL_MSG_RESERVED_ARG_COUNT_HI, Op, - MsgBuffer); - } - else - { - AslError (ASL_WARNING, ASL_MSG_RESERVED_ARG_COUNT_LO, Op, - MsgBuffer); - } - } - - if (MethodInfo->NumReturnNoValue && - ReservedMethods[Index].Flags & ASL_RSVD_RETURN_VALUE) - { - sprintf (MsgBuffer, "%s", ReservedMethods[Index].Name); - - AslError (ASL_WARNING, ASL_MSG_RESERVED_RETURN_VALUE, Op, MsgBuffer); - } - break; - } -} - - -/******************************************************************************* - * * FUNCTION: AnMapObjTypeToBtype * * PARAMETERS: Op - A parse node @@ -1187,7 +964,7 @@ * The first operand is a name to be created in the namespace. * Check against the reserved list. */ - i = AnCheckForReservedName (Op, Op->Asl.NameSeg); + i = ApCheckForPredefinedName (Op, Op->Asl.NameSeg); if (i < ACPI_VALID_RESERVED_NAME_MAX) { AslError (ASL_ERROR, ASL_MSG_RESERVED_USE, Op, Op->Asl.ExternalName); @@ -1197,51 +974,29 @@ case PARSEOP_NAME: - i = AnCheckForReservedName (Op, Op->Asl.NameSeg); - if (i < ACPI_VALID_RESERVED_NAME_MAX) + /* Typecheck any predefined names statically defined with Name() */ + + ApCheckForPredefinedObject (Op, Op->Asl.NameSeg); + + /* Special typechecking for _HID */ + + if (!ACPI_STRCMP (METHOD_NAME__HID, Op->Asl.NameSeg)) { - if (ReservedMethods[i].NumArguments > 0) + Next = Op->Asl.Child->Asl.Next; + if (Next->Asl.ParseOpcode == PARSEOP_STRING_LITERAL) { /* - * This reserved name must be a control method because - * it must have arguments + * _HID is a string, all characters must be alphanumeric. + * One of the things we want to catch here is the use of + * a leading asterisk in the string. */ - AslError (ASL_ERROR, ASL_MSG_RESERVED_METHOD, Op, - "with arguments"); - } - - /* Typechecking for _HID */ - - else if (!ACPI_STRCMP (METHOD_NAME__HID, ReservedMethods[i].Name)) - { - /* Examine the second operand to typecheck it */ - - Next = Op->Asl.Child->Asl.Next; - - if ((Next->Asl.ParseOpcode != PARSEOP_INTEGER) && - (Next->Asl.ParseOpcode != PARSEOP_STRING_LITERAL)) + for (i = 0; Next->Asl.Value.String[i]; i++) { - /* _HID must be a string or an integer */ - - AslError (ASL_ERROR, ASL_MSG_RESERVED_OPERAND_TYPE, Next, - "String or Integer"); - } - - if (Next->Asl.ParseOpcode == PARSEOP_STRING_LITERAL) - { - /* - * _HID is a string, all characters must be alphanumeric. - * One of the things we want to catch here is the use of - * a leading asterisk in the string. - */ - for (i = 0; Next->Asl.Value.String[i]; i++) + if (!isalnum ((int) Next->Asl.Value.String[i])) { - if (!isalnum ((int) Next->Asl.Value.String[i])) - { - AslError (ASL_ERROR, ASL_MSG_ALPHANUMERIC_STRING, - Next, Next->Asl.Value.String); - break; - } + AslError (ASL_ERROR, ASL_MSG_ALPHANUMERIC_STRING, + Next, Next->Asl.Value.String); + break; } } } @@ -1394,7 +1149,7 @@ * Check predefined method names for correct return behavior * and correct number of arguments */ - AnCheckForReservedMethod (Op, MethodInfo); + ApCheckForPredefinedMethod (Op, MethodInfo); ACPI_FREE (MethodInfo); break; @@ -1402,6 +1157,12 @@ case PARSEOP_RETURN: /* + * If the parent is a predefined method name, attempt to typecheck + * the return value. Only static types can be validated. + */ + ApCheckPredefinedReturnValue (Op, MethodInfo); + + /* * The parent block does not "exit" and continue execution -- the * method is terminated here with the Return() statement. */ Modified: haiku/trunk/src/add-ons/kernel/bus_managers/acpi/compiler/aslcompile.c =================================================================== --- haiku/trunk/src/add-ons/kernel/bus_managers/acpi/compiler/aslcompile.c 2010-05-19 14:03:41 UTC (rev 36866) +++ haiku/trunk/src/add-ons/kernel/bus_managers/acpi/compiler/aslcompile.c 2010-05-19 21:33:02 UTC (rev 36867) @@ -177,7 +177,8 @@ { Prefix = "; "; } - else if (Gbl_HexOutputFlag == HEX_OUTPUT_C) + else if ((Gbl_HexOutputFlag == HEX_OUTPUT_C) || + (Gbl_HexOutputFlag == HEX_OUTPUT_ASL)) { FlPrintFile (ASL_FILE_HEX_OUTPUT, "/*\n"); Prefix = " * "; @@ -265,7 +266,8 @@ { Prefix = "; "; } - else if (Gbl_HexOutputFlag == HEX_OUTPUT_C) + else if ((Gbl_HexOutputFlag == HEX_OUTPUT_C) || + (Gbl_HexOutputFlag == HEX_OUTPUT_ASL)) { Prefix = " * "; } Modified: haiku/trunk/src/add-ons/kernel/bus_managers/acpi/compiler/aslcompiler.h =================================================================== --- haiku/trunk/src/add-ons/kernel/bus_managers/acpi/compiler/aslcompiler.h 2010-05-19 14:03:41 UTC (rev 36866) +++ haiku/trunk/src/add-ons/kernel/bus_managers/acpi/compiler/aslcompiler.h 2010-05-19 21:33:02 UTC (rev 36867) @@ -452,8 +452,32 @@ AslMapNamedOpcodeToDataType ( UINT16 Opcode); + +/* + * aslpredef - ACPI predefined names support + */ void -MpDisplayReservedNames ( +ApCheckForPredefinedMethod ( + ACPI_PARSE_OBJECT *Op, + ASL_METHOD_INFO *MethodInfo); + +void +ApCheckPredefinedReturnValue ( + ACPI_PARSE_OBJECT *Op, + ASL_METHOD_INFO *MethodInfo); + +UINT32 +ApCheckForPredefinedName ( + ACPI_PARSE_OBJECT *Op, + char *Name); + +void +ApCheckForPredefinedObject ( + ACPI_PARSE_OBJECT *Op, + char *Name); + +void +ApDisplayReservedNames ( void); @@ -568,6 +592,10 @@ UINT32 FileId, UINT8 ErrorId); +UINT32 +FlGetFileSize ( + UINT32 FileId); + ACPI_STATUS FlReadFile ( UINT32 FileId, @@ -726,6 +754,34 @@ /* * aslresource - Resource template generation utilities */ +void +RsSmallAddressCheck ( + UINT8 Type, + UINT32 Minimum, + UINT32 Maximum, + UINT32 Length, + UINT32 Alignment, + ACPI_PARSE_OBJECT *MinOp, + ACPI_PARSE_OBJECT *MaxOp, + ACPI_PARSE_OBJECT *LengthOp, + ACPI_PARSE_OBJECT *AlignOp); + +void +RsLargeAddressCheck ( + UINT64 Minimum, + UINT64 Maximum, + UINT64 Length, + UINT64 Granularity, + UINT8 Flags, + ACPI_PARSE_OBJECT *MinOp, + ACPI_PARSE_OBJECT *MaxOp, + ACPI_PARSE_OBJECT *LengthOp, + ACPI_PARSE_OBJECT *GranOp); + +UINT16 +RsGetStringDataLength ( + ACPI_PARSE_OBJECT *InitializerOp); + ASL_RESOURCE_NODE * RsAllocateResourceNode ( UINT32 Size); @@ -781,7 +837,7 @@ /* - * aslrestype1 - generate Small descriptors + * aslrestype1 - Miscellaneous Small descriptors */ ASL_RESOURCE_NODE * RsDoEndTagDescriptor ( @@ -789,68 +845,72 @@ UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * -RsDoDmaDescriptor ( +RsDoEndDependentDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * -RsDoEndDependentDescriptor ( +RsDoMemory24Descriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * -RsDoFixedIoDescriptor ( +RsDoMemory32Descriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * -RsDoIoDescriptor ( +RsDoMemory32FixedDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * -RsDoIrqDescriptor ( +RsDoStartDependentDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * -RsDoIrqNoFlagsDescriptor ( +RsDoStartDependentNoPriDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * -RsDoMemory24Descriptor ( +RsDoVendorSmallDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); + +/* + * aslrestype1i - I/O-related Small descriptors + */ ASL_RESOURCE_NODE * -RsDoMemory32Descriptor ( +RsDoDmaDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * -RsDoMemory32FixedDescriptor ( +RsDoFixedIoDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * -RsDoStartDependentDescriptor ( +RsDoIoDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * -RsDoStartDependentNoPriDescriptor ( +RsDoIrqDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * -RsDoVendorSmallDescriptor ( +RsDoIrqNoFlagsDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); /* - * aslrestype2 - generate Large descriptors + * aslrestype2 - Large resource descriptors */ ASL_RESOURCE_NODE * RsDoInterruptDescriptor ( @@ -858,6 +918,20 @@ UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * +RsDoVendorLargeDescriptor ( + ACPI_PARSE_OBJECT *Op, + UINT32 CurrentByteOffset); + +ASL_RESOURCE_NODE * +RsDoGeneralRegisterDescriptor ( + ACPI_PARSE_OBJECT *Op, + UINT32 CurrentByteOffset); + + +/* + * aslrestype2d - DWord address descriptors + */ +ASL_RESOURCE_NODE * RsDoDwordIoDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); @@ -872,6 +946,10 @@ ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); + +/* + * aslrestype2e - Extended address descriptors + */ ASL_RESOURCE_NODE * RsDoExtendedIoDescriptor ( ACPI_PARSE_OBJECT *Op, @@ -887,6 +965,10 @@ ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); + +/* + * aslrestype2q - QWord address descriptors + */ ASL_RESOURCE_NODE * RsDoQwordIoDescriptor ( ACPI_PARSE_OBJECT *Op, @@ -902,6 +984,10 @@ ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); + +/* + * aslrestype2w - Word address descriptors + */ ASL_RESOURCE_NODE * RsDoWordIoDescriptor ( ACPI_PARSE_OBJECT *Op, @@ -917,15 +1003,5 @@ ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); -ASL_RESOURCE_NODE * -RsDoVendorLargeDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoGeneralRegisterDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - #endif /* __ASLCOMPILER_H */ Modified: haiku/trunk/src/add-ons/kernel/bus_managers/acpi/compiler/asldefine.h =================================================================== --- haiku/trunk/src/add-ons/kernel/bus_managers/acpi/compiler/asldefine.h 2010-05-19 14:03:41 UTC (rev 36866) +++ haiku/trunk/src/add-ons/kernel/bus_managers/acpi/compiler/asldefine.h 2010-05-19 21:33:02 UTC (rev 36867) @@ -128,7 +128,7 @@ #define CompilerId "ASL Optimizing Compiler" #define DisassemblerId "AML Disassembler" #define CompilerCopyright "Copyright (c) 2000 - 2010 Intel Corporation" -#define CompilerCompliance "Supports ACPI Specification Revision 4.0" +#define CompilerCompliance "Supports ACPI Specification Revision 4.0a" #define CompilerName "iasl" #define CompilerCreatorId "INTL" Modified: haiku/trunk/src/add-ons/kernel/bus_managers/acpi/compiler/aslfiles.c =================================================================== --- haiku/trunk/src/add-ons/kernel/bus_managers/acpi/compiler/aslfiles.c 2010-05-19 14:03:41 UTC (rev 36866) +++ haiku/trunk/src/add-ons/kernel/bus_managers/acpi/compiler/aslfiles.c 2010-05-19 21:33:02 UTC (rev 36867) [... truncated: 16221 lines follow ...]