11a39cfb0SJung-uk Kim /****************************************************************************** 21a39cfb0SJung-uk Kim * 31a39cfb0SJung-uk Kim * Module Name: dmtable - Support for ACPI tables that contain no AML code 41a39cfb0SJung-uk Kim * 51a39cfb0SJung-uk Kim *****************************************************************************/ 61a39cfb0SJung-uk Kim 70d84335fSJung-uk Kim /****************************************************************************** 80d84335fSJung-uk Kim * 90d84335fSJung-uk Kim * 1. Copyright Notice 100d84335fSJung-uk Kim * 11804fe266SJung-uk Kim * Some or all of this work - Copyright (c) 1999 - 2024, Intel Corp. 121a39cfb0SJung-uk Kim * All rights reserved. 131a39cfb0SJung-uk Kim * 140d84335fSJung-uk Kim * 2. License 150d84335fSJung-uk Kim * 160d84335fSJung-uk Kim * 2.1. This is your license from Intel Corp. under its intellectual property 170d84335fSJung-uk Kim * rights. You may have additional license terms from the party that provided 180d84335fSJung-uk Kim * you this software, covering your right to use that party's intellectual 190d84335fSJung-uk Kim * property rights. 200d84335fSJung-uk Kim * 210d84335fSJung-uk Kim * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a 220d84335fSJung-uk Kim * copy of the source code appearing in this file ("Covered Code") an 230d84335fSJung-uk Kim * irrevocable, perpetual, worldwide license under Intel's copyrights in the 240d84335fSJung-uk Kim * base code distributed originally by Intel ("Original Intel Code") to copy, 250d84335fSJung-uk Kim * make derivatives, distribute, use and display any portion of the Covered 260d84335fSJung-uk Kim * Code in any form, with the right to sublicense such rights; and 270d84335fSJung-uk Kim * 280d84335fSJung-uk Kim * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent 290d84335fSJung-uk Kim * license (with the right to sublicense), under only those claims of Intel 300d84335fSJung-uk Kim * patents that are infringed by the Original Intel Code, to make, use, sell, 310d84335fSJung-uk Kim * offer to sell, and import the Covered Code and derivative works thereof 320d84335fSJung-uk Kim * solely to the minimum extent necessary to exercise the above copyright 330d84335fSJung-uk Kim * license, and in no event shall the patent license extend to any additions 340d84335fSJung-uk Kim * to or modifications of the Original Intel Code. No other license or right 350d84335fSJung-uk Kim * is granted directly or by implication, estoppel or otherwise; 360d84335fSJung-uk Kim * 370d84335fSJung-uk Kim * The above copyright and patent license is granted only if the following 380d84335fSJung-uk Kim * conditions are met: 390d84335fSJung-uk Kim * 400d84335fSJung-uk Kim * 3. Conditions 410d84335fSJung-uk Kim * 420d84335fSJung-uk Kim * 3.1. Redistribution of Source with Rights to Further Distribute Source. 430d84335fSJung-uk Kim * Redistribution of source code of any substantial portion of the Covered 440d84335fSJung-uk Kim * Code or modification with rights to further distribute source must include 450d84335fSJung-uk Kim * the above Copyright Notice, the above License, this list of Conditions, 460d84335fSJung-uk Kim * and the following Disclaimer and Export Compliance provision. In addition, 470d84335fSJung-uk Kim * Licensee must cause all Covered Code to which Licensee contributes to 480d84335fSJung-uk Kim * contain a file documenting the changes Licensee made to create that Covered 490d84335fSJung-uk Kim * Code and the date of any change. Licensee must include in that file the 500d84335fSJung-uk Kim * documentation of any changes made by any predecessor Licensee. Licensee 510d84335fSJung-uk Kim * must include a prominent statement that the modification is derived, 520d84335fSJung-uk Kim * directly or indirectly, from Original Intel Code. 530d84335fSJung-uk Kim * 540d84335fSJung-uk Kim * 3.2. Redistribution of Source with no Rights to Further Distribute Source. 550d84335fSJung-uk Kim * Redistribution of source code of any substantial portion of the Covered 560d84335fSJung-uk Kim * Code or modification without rights to further distribute source must 570d84335fSJung-uk Kim * include the following Disclaimer and Export Compliance provision in the 580d84335fSJung-uk Kim * documentation and/or other materials provided with distribution. In 590d84335fSJung-uk Kim * addition, Licensee may not authorize further sublicense of source of any 600d84335fSJung-uk Kim * portion of the Covered Code, and must include terms to the effect that the 610d84335fSJung-uk Kim * license from Licensee to its licensee is limited to the intellectual 620d84335fSJung-uk Kim * property embodied in the software Licensee provides to its licensee, and 630d84335fSJung-uk Kim * not to intellectual property embodied in modifications its licensee may 640d84335fSJung-uk Kim * make. 650d84335fSJung-uk Kim * 660d84335fSJung-uk Kim * 3.3. Redistribution of Executable. Redistribution in executable form of any 670d84335fSJung-uk Kim * substantial portion of the Covered Code or modification must reproduce the 680d84335fSJung-uk Kim * above Copyright Notice, and the following Disclaimer and Export Compliance 690d84335fSJung-uk Kim * provision in the documentation and/or other materials provided with the 700d84335fSJung-uk Kim * distribution. 710d84335fSJung-uk Kim * 720d84335fSJung-uk Kim * 3.4. Intel retains all right, title, and interest in and to the Original 730d84335fSJung-uk Kim * Intel Code. 740d84335fSJung-uk Kim * 750d84335fSJung-uk Kim * 3.5. Neither the name Intel nor any other trademark owned or controlled by 760d84335fSJung-uk Kim * Intel shall be used in advertising or otherwise to promote the sale, use or 770d84335fSJung-uk Kim * other dealings in products derived from or relating to the Covered Code 780d84335fSJung-uk Kim * without prior written authorization from Intel. 790d84335fSJung-uk Kim * 800d84335fSJung-uk Kim * 4. Disclaimer and Export Compliance 810d84335fSJung-uk Kim * 820d84335fSJung-uk Kim * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED 830d84335fSJung-uk Kim * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE 840d84335fSJung-uk Kim * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, 850d84335fSJung-uk Kim * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY 860d84335fSJung-uk Kim * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY 870d84335fSJung-uk Kim * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A 880d84335fSJung-uk Kim * PARTICULAR PURPOSE. 890d84335fSJung-uk Kim * 900d84335fSJung-uk Kim * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES 910d84335fSJung-uk Kim * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR 920d84335fSJung-uk Kim * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, 930d84335fSJung-uk Kim * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY 940d84335fSJung-uk Kim * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL 950d84335fSJung-uk Kim * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS 960d84335fSJung-uk Kim * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY 970d84335fSJung-uk Kim * LIMITED REMEDY. 980d84335fSJung-uk Kim * 990d84335fSJung-uk Kim * 4.3. Licensee shall not export, either directly or indirectly, any of this 1000d84335fSJung-uk Kim * software or system incorporating such software without first obtaining any 1010d84335fSJung-uk Kim * required license or other approval from the U. S. Department of Commerce or 1020d84335fSJung-uk Kim * any other agency or department of the United States Government. In the 1030d84335fSJung-uk Kim * event Licensee exports any such software from the United States or 1040d84335fSJung-uk Kim * re-exports any such software from a foreign destination, Licensee shall 1050d84335fSJung-uk Kim * ensure that the distribution and export/re-export of the software is in 1060d84335fSJung-uk Kim * compliance with all laws, regulations, orders, or other restrictions of the 1070d84335fSJung-uk Kim * U.S. Export Administration Regulations. Licensee agrees that neither it nor 1080d84335fSJung-uk Kim * any of its subsidiaries will export/re-export any technical data, process, 1090d84335fSJung-uk Kim * software, or service, directly or indirectly, to any country for which the 1100d84335fSJung-uk Kim * United States government or any agency thereof requires an export license, 1110d84335fSJung-uk Kim * other governmental approval, or letter of assurance, without first obtaining 1120d84335fSJung-uk Kim * such license, approval or letter. 1130d84335fSJung-uk Kim * 1140d84335fSJung-uk Kim ***************************************************************************** 1150d84335fSJung-uk Kim * 1160d84335fSJung-uk Kim * Alternatively, you may choose to be licensed under the terms of the 1170d84335fSJung-uk Kim * following license: 1180d84335fSJung-uk Kim * 119d244b227SJung-uk Kim * Redistribution and use in source and binary forms, with or without 120d244b227SJung-uk Kim * modification, are permitted provided that the following conditions 121d244b227SJung-uk Kim * are met: 122d244b227SJung-uk Kim * 1. Redistributions of source code must retain the above copyright 123d244b227SJung-uk Kim * notice, this list of conditions, and the following disclaimer, 124d244b227SJung-uk Kim * without modification. 125d244b227SJung-uk Kim * 2. Redistributions in binary form must reproduce at minimum a disclaimer 126d244b227SJung-uk Kim * substantially similar to the "NO WARRANTY" disclaimer below 127d244b227SJung-uk Kim * ("Disclaimer") and any redistribution must be conditioned upon 128d244b227SJung-uk Kim * including a substantially similar Disclaimer requirement for further 129d244b227SJung-uk Kim * binary redistribution. 130d244b227SJung-uk Kim * 3. Neither the names of the above-listed copyright holders nor the names 131d244b227SJung-uk Kim * of any contributors may be used to endorse or promote products derived 132d244b227SJung-uk Kim * from this software without specific prior written permission. 1331a39cfb0SJung-uk Kim * 1340d84335fSJung-uk Kim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1350d84335fSJung-uk Kim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1360d84335fSJung-uk Kim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1370d84335fSJung-uk Kim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 1380d84335fSJung-uk Kim * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 1390d84335fSJung-uk Kim * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 1400d84335fSJung-uk Kim * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 1410d84335fSJung-uk Kim * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 1420d84335fSJung-uk Kim * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 1430d84335fSJung-uk Kim * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 1440d84335fSJung-uk Kim * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 1450d84335fSJung-uk Kim * 1460d84335fSJung-uk Kim * Alternatively, you may choose to be licensed under the terms of the 147d244b227SJung-uk Kim * GNU General Public License ("GPL") version 2 as published by the Free 148d244b227SJung-uk Kim * Software Foundation. 1491a39cfb0SJung-uk Kim * 1500d84335fSJung-uk Kim *****************************************************************************/ 1511a39cfb0SJung-uk Kim 152ab6f3bf9SJung-uk Kim #include <contrib/dev/acpica/include/acpi.h> 153ab6f3bf9SJung-uk Kim #include <contrib/dev/acpica/include/accommon.h> 154ab6f3bf9SJung-uk Kim #include <contrib/dev/acpica/include/acdisasm.h> 155ab6f3bf9SJung-uk Kim #include <contrib/dev/acpica/include/actables.h> 156a88e22b7SJung-uk Kim #include <contrib/dev/acpica/compiler/aslcompiler.h> 1571a39cfb0SJung-uk Kim 1581a39cfb0SJung-uk Kim /* This module used for application-level code only */ 1591a39cfb0SJung-uk Kim 1601a39cfb0SJung-uk Kim #define _COMPONENT ACPI_CA_DISASSEMBLER 1611a39cfb0SJung-uk Kim ACPI_MODULE_NAME ("dmtable") 1621a39cfb0SJung-uk Kim 163a371a5fdSJung-uk Kim const AH_TABLE * 164a371a5fdSJung-uk Kim AcpiAhGetTableInfo ( 165a371a5fdSJung-uk Kim char *Signature); 166a371a5fdSJung-uk Kim 167a371a5fdSJung-uk Kim 168d052a1ccSJung-uk Kim /* Common format strings for commented values */ 169d052a1ccSJung-uk Kim 170d052a1ccSJung-uk Kim #define UINT8_FORMAT "%2.2X [%s]\n" 171ab71bbb7SJung-uk Kim #define UINT8_FORMAT_NO_NEWLINE "%2.2X [%s]" 172d052a1ccSJung-uk Kim #define UINT16_FORMAT "%4.4X [%s]\n" 173d052a1ccSJung-uk Kim #define UINT32_FORMAT "%8.8X [%s]\n" 174d052a1ccSJung-uk Kim #define STRING_FORMAT "[%s]\n" 175d052a1ccSJung-uk Kim 1761a39cfb0SJung-uk Kim /* These tables map a subtable type to a description string */ 1771a39cfb0SJung-uk Kim 17897c0b5abSJung-uk Kim static const char *AcpiDmAestResourceNames[] = 17997c0b5abSJung-uk Kim { 18097c0b5abSJung-uk Kim "Cache Resource", 18197c0b5abSJung-uk Kim "TLB Resource", 18297c0b5abSJung-uk Kim "Generic Resource", 18397c0b5abSJung-uk Kim "Unknown Resource Type" /* Reserved */ 18497c0b5abSJung-uk Kim }; 18597c0b5abSJung-uk Kim 18697c0b5abSJung-uk Kim static const char *AcpiDmAestSubnames[] = 18797c0b5abSJung-uk Kim { 18897c0b5abSJung-uk Kim "Processor Error Node", 18997c0b5abSJung-uk Kim "Memory Error Node", 19097c0b5abSJung-uk Kim "SMMU Error Node", 19197c0b5abSJung-uk Kim "Vendor-defined Error Node", 19297c0b5abSJung-uk Kim "GIC Error Node", 193*92f570c3SJung-uk Kim "PCIE Error Node", 194*92f570c3SJung-uk Kim "PROXY Error Node", 19597c0b5abSJung-uk Kim "Unknown Subtable Type" /* Reserved */ 19697c0b5abSJung-uk Kim }; 19797c0b5abSJung-uk Kim 19897c0b5abSJung-uk Kim static const char *AcpiDmAestCacheNames[] = 19997c0b5abSJung-uk Kim { 20097c0b5abSJung-uk Kim "Data Cache", 20197c0b5abSJung-uk Kim "Instruction Cache", 20297c0b5abSJung-uk Kim "Unified Cache", 20397c0b5abSJung-uk Kim "Unknown Cache Type" /* Reserved */ 20497c0b5abSJung-uk Kim }; 20597c0b5abSJung-uk Kim 20697c0b5abSJung-uk Kim static const char *AcpiDmAestGicNames[] = 20797c0b5abSJung-uk Kim { 20897c0b5abSJung-uk Kim "GIC CPU", 20997c0b5abSJung-uk Kim "GIC Distributor", 21097c0b5abSJung-uk Kim "GIC Redistributor", 21197c0b5abSJung-uk Kim "GIC ITS", 21297c0b5abSJung-uk Kim "Unknown GIC Interface Type" /* Reserved */ 21397c0b5abSJung-uk Kim }; 21497c0b5abSJung-uk Kim 21597c0b5abSJung-uk Kim static const char *AcpiDmAestXfaceNames[] = 21697c0b5abSJung-uk Kim { 21797c0b5abSJung-uk Kim "System Register Interface", 21897c0b5abSJung-uk Kim "Memory Mapped Interface", 219*92f570c3SJung-uk Kim "Single Record Memory Mapped Interface", 22097c0b5abSJung-uk Kim "Unknown Interface Type" /* Reserved */ 22197c0b5abSJung-uk Kim }; 22297c0b5abSJung-uk Kim 22397c0b5abSJung-uk Kim static const char *AcpiDmAestXruptNames[] = 22497c0b5abSJung-uk Kim { 22597c0b5abSJung-uk Kim "Fault Handling Interrupt", 22697c0b5abSJung-uk Kim "Error Recovery Interrupt", 22797c0b5abSJung-uk Kim "Unknown Interrupt Type" /* Reserved */ 22897c0b5abSJung-uk Kim }; 22997c0b5abSJung-uk Kim 230a9f12690SJung-uk Kim static const char *AcpiDmAsfSubnames[] = 231a9f12690SJung-uk Kim { 232a9f12690SJung-uk Kim "ASF Information", 233a9f12690SJung-uk Kim "ASF Alerts", 234a9f12690SJung-uk Kim "ASF Remote Control", 235a9f12690SJung-uk Kim "ASF RMCP Boot Options", 236a9f12690SJung-uk Kim "ASF Address", 237a371a5fdSJung-uk Kim "Unknown Subtable Type" /* Reserved */ 238a9f12690SJung-uk Kim }; 239a9f12690SJung-uk Kim 240722b1667SJung-uk Kim static const char *AcpiDmAsptSubnames[] = 241722b1667SJung-uk Kim { 242722b1667SJung-uk Kim "ASPT Global Registers", 243722b1667SJung-uk Kim "ASPT SEV Mailbox Registers", 244722b1667SJung-uk Kim "ASPT ACPI Mailbox Registers", 245722b1667SJung-uk Kim "Unknown Subtable Type" /* Reserved */ 246722b1667SJung-uk Kim }; 247722b1667SJung-uk Kim 2489a4bc520SJung-uk Kim static const char *AcpiDmCdatSubnames[] = 2499a4bc520SJung-uk Kim { 2509a4bc520SJung-uk Kim "Device Scoped Memory Affinity Structure (DSMAS)", 2519a4bc520SJung-uk Kim "Device scoped Latency and Bandwidth Information Structure (DSLBIS)", 2529a4bc520SJung-uk Kim "Device Scoped Memory Side Cache Information Structure (DSMSCIS)", 2539a4bc520SJung-uk Kim "Device Scoped Initiator Structure (DSIS)", 2549a4bc520SJung-uk Kim "Device Scoped EFI Memory Type Structure (DSEMTS)", 2559a4bc520SJung-uk Kim "Switch Scoped Latency and Bandwidth Information Structure (SSLBIS)", 2569a4bc520SJung-uk Kim "Unknown Subtable Type" /* Reserved */ 2579a4bc520SJung-uk Kim }; 2589a4bc520SJung-uk Kim 259cfd1ed46SJung-uk Kim static const char *AcpiDmCedtSubnames[] = 260cfd1ed46SJung-uk Kim { 261cfd1ed46SJung-uk Kim "CXL Host Bridge Structure", 2621970d693SJung-uk Kim "CXL Fixed Memory Window Structure", 263*92f570c3SJung-uk Kim "CXL XOR Interleave Math Structure", 264cfd1ed46SJung-uk Kim "Unknown Subtable Type" /* Reserved */ 265cfd1ed46SJung-uk Kim }; 266cfd1ed46SJung-uk Kim 2671a39cfb0SJung-uk Kim static const char *AcpiDmDmarSubnames[] = 2681a39cfb0SJung-uk Kim { 2691a39cfb0SJung-uk Kim "Hardware Unit Definition", 2701a39cfb0SJung-uk Kim "Reserved Memory Region", 271a9f12690SJung-uk Kim "Root Port ATS Capability", 272d6dd1baeSJung-uk Kim "Remapping Hardware Static Affinity", 273313a0c13SJung-uk Kim "ACPI Namespace Device Declaration", 274ab71bbb7SJung-uk Kim "SoC Integrated Address Translation Cache", 275a371a5fdSJung-uk Kim "Unknown Subtable Type" /* Reserved */ 2761a39cfb0SJung-uk Kim }; 2771a39cfb0SJung-uk Kim 278313a0c13SJung-uk Kim static const char *AcpiDmDmarScope[] = 279313a0c13SJung-uk Kim { 280313a0c13SJung-uk Kim "Reserved value", 281313a0c13SJung-uk Kim "PCI Endpoint Device", 282313a0c13SJung-uk Kim "PCI Bridge Device", 283313a0c13SJung-uk Kim "IOAPIC Device", 284313a0c13SJung-uk Kim "Message-capable HPET Device", 285313a0c13SJung-uk Kim "Namespace Device", 286313a0c13SJung-uk Kim "Unknown Scope Type" /* Reserved */ 287313a0c13SJung-uk Kim }; 288313a0c13SJung-uk Kim 289a88e22b7SJung-uk Kim static const char *AcpiDmEinjActions[] = 290a88e22b7SJung-uk Kim { 291a88e22b7SJung-uk Kim "Begin Operation", 292a88e22b7SJung-uk Kim "Get Trigger Table", 293a88e22b7SJung-uk Kim "Set Error Type", 294a88e22b7SJung-uk Kim "Get Error Type", 295a88e22b7SJung-uk Kim "End Operation", 296a88e22b7SJung-uk Kim "Execute Operation", 297a88e22b7SJung-uk Kim "Check Busy Status", 298a88e22b7SJung-uk Kim "Get Command Status", 2998d744e47SJung-uk Kim "Set Error Type With Address", 300f8146b88SJung-uk Kim "Get Execute Timings", 301a88e22b7SJung-uk Kim "Unknown Action" 302a88e22b7SJung-uk Kim }; 303a88e22b7SJung-uk Kim 304a88e22b7SJung-uk Kim static const char *AcpiDmEinjInstructions[] = 305a88e22b7SJung-uk Kim { 306a88e22b7SJung-uk Kim "Read Register", 307a88e22b7SJung-uk Kim "Read Register Value", 308a88e22b7SJung-uk Kim "Write Register", 309a88e22b7SJung-uk Kim "Write Register Value", 310a88e22b7SJung-uk Kim "Noop", 3118d744e47SJung-uk Kim "Flush Cacheline", 312a88e22b7SJung-uk Kim "Unknown Instruction" 313a88e22b7SJung-uk Kim }; 314a88e22b7SJung-uk Kim 315a88e22b7SJung-uk Kim static const char *AcpiDmErstActions[] = 316a88e22b7SJung-uk Kim { 317a88e22b7SJung-uk Kim "Begin Write Operation", 318a88e22b7SJung-uk Kim "Begin Read Operation", 319a88e22b7SJung-uk Kim "Begin Clear Operation", 320a88e22b7SJung-uk Kim "End Operation", 321a88e22b7SJung-uk Kim "Set Record Offset", 322a88e22b7SJung-uk Kim "Execute Operation", 323a88e22b7SJung-uk Kim "Check Busy Status", 324a88e22b7SJung-uk Kim "Get Command Status", 325a88e22b7SJung-uk Kim "Get Record Identifier", 326a88e22b7SJung-uk Kim "Set Record Identifier", 327a88e22b7SJung-uk Kim "Get Record Count", 328a88e22b7SJung-uk Kim "Begin Dummy Write", 329a88e22b7SJung-uk Kim "Unused/Unknown Action", 330a88e22b7SJung-uk Kim "Get Error Address Range", 331a88e22b7SJung-uk Kim "Get Error Address Length", 332a88e22b7SJung-uk Kim "Get Error Attributes", 333f8146b88SJung-uk Kim "Execute Timings", 334a88e22b7SJung-uk Kim "Unknown Action" 335a88e22b7SJung-uk Kim }; 336a88e22b7SJung-uk Kim 337a88e22b7SJung-uk Kim static const char *AcpiDmErstInstructions[] = 338a88e22b7SJung-uk Kim { 339a88e22b7SJung-uk Kim "Read Register", 340a88e22b7SJung-uk Kim "Read Register Value", 341a88e22b7SJung-uk Kim "Write Register", 342a88e22b7SJung-uk Kim "Write Register Value", 343a88e22b7SJung-uk Kim "Noop", 344a88e22b7SJung-uk Kim "Load Var1", 345a88e22b7SJung-uk Kim "Load Var2", 346a88e22b7SJung-uk Kim "Store Var1", 347a88e22b7SJung-uk Kim "Add", 348a88e22b7SJung-uk Kim "Subtract", 349a88e22b7SJung-uk Kim "Add Value", 350a88e22b7SJung-uk Kim "Subtract Value", 351a88e22b7SJung-uk Kim "Stall", 352a88e22b7SJung-uk Kim "Stall While True", 353a88e22b7SJung-uk Kim "Skip Next If True", 354a88e22b7SJung-uk Kim "GoTo", 355a88e22b7SJung-uk Kim "Set Source Address", 356a88e22b7SJung-uk Kim "Set Destination Address", 357a88e22b7SJung-uk Kim "Move Data", 358a88e22b7SJung-uk Kim "Unknown Instruction" 359a88e22b7SJung-uk Kim }; 360a88e22b7SJung-uk Kim 361313a0c13SJung-uk Kim static const char *AcpiDmGtdtSubnames[] = 362313a0c13SJung-uk Kim { 363313a0c13SJung-uk Kim "Generic Timer Block", 364313a0c13SJung-uk Kim "Generic Watchdog Timer", 365a371a5fdSJung-uk Kim "Unknown Subtable Type" /* Reserved */ 366313a0c13SJung-uk Kim }; 367313a0c13SJung-uk Kim 368a9f12690SJung-uk Kim static const char *AcpiDmHestSubnames[] = 369a9f12690SJung-uk Kim { 370d6dd1baeSJung-uk Kim "IA-32 Machine Check Exception", 371d6dd1baeSJung-uk Kim "IA-32 Corrected Machine Check", 372d6dd1baeSJung-uk Kim "IA-32 Non-Maskable Interrupt", 37367d9aa44SJung-uk Kim "Unknown Subtable Type", /* 3 - Reserved */ 37467d9aa44SJung-uk Kim "Unknown Subtable Type", /* 4 - Reserved */ 37567d9aa44SJung-uk Kim "Unknown Subtable Type", /* 5 - Reserved */ 376a9f12690SJung-uk Kim "PCI Express Root Port AER", 377a9f12690SJung-uk Kim "PCI Express AER (AER Endpoint)", 378a9f12690SJung-uk Kim "PCI Express/PCI-X Bridge AER", 379a9f12690SJung-uk Kim "Generic Hardware Error Source", 380f8146b88SJung-uk Kim "Generic Hardware Error Source V2", 381af051161SJung-uk Kim "IA-32 Deferred Machine Check", 382a371a5fdSJung-uk Kim "Unknown Subtable Type" /* Reserved */ 383a9f12690SJung-uk Kim }; 384a9f12690SJung-uk Kim 385a9f12690SJung-uk Kim static const char *AcpiDmHestNotifySubnames[] = 386a9f12690SJung-uk Kim { 387a9f12690SJung-uk Kim "Polled", 388a9f12690SJung-uk Kim "External Interrupt", 389a9f12690SJung-uk Kim "Local Interrupt", 390a9f12690SJung-uk Kim "SCI", 391a9f12690SJung-uk Kim "NMI", 3928d744e47SJung-uk Kim "CMCI", /* ACPI 5.0 */ 3938d744e47SJung-uk Kim "MCE", /* ACPI 5.0 */ 394f8146b88SJung-uk Kim "GPIO", /* ACPI 6.0 */ 395f8146b88SJung-uk Kim "SEA", /* ACPI 6.1 */ 396f8146b88SJung-uk Kim "SEI", /* ACPI 6.1 */ 397f8146b88SJung-uk Kim "GSIV", /* ACPI 6.1 */ 398af051161SJung-uk Kim "Software Delegated Exception", /* ACPI 6.2 */ 399a9f12690SJung-uk Kim "Unknown Notify Type" /* Reserved */ 400a9f12690SJung-uk Kim }; 401a9f12690SJung-uk Kim 402af051161SJung-uk Kim static const char *AcpiDmHmatSubnames[] = 403af051161SJung-uk Kim { 404cd6518c7SJung-uk Kim "Memory Proximity Domain Attributes", 405af051161SJung-uk Kim "System Locality Latency and Bandwidth Information", 406af051161SJung-uk Kim "Memory Side Cache Information", 407af051161SJung-uk Kim "Unknown Structure Type" /* Reserved */ 408af051161SJung-uk Kim }; 409af051161SJung-uk Kim 4101a39cfb0SJung-uk Kim static const char *AcpiDmMadtSubnames[] = 4111a39cfb0SJung-uk Kim { 4121a39cfb0SJung-uk Kim "Processor Local APIC", /* ACPI_MADT_TYPE_LOCAL_APIC */ 4131a39cfb0SJung-uk Kim "I/O APIC", /* ACPI_MADT_TYPE_IO_APIC */ 4141a39cfb0SJung-uk Kim "Interrupt Source Override", /* ACPI_MADT_TYPE_INTERRUPT_OVERRIDE */ 4151a39cfb0SJung-uk Kim "NMI Source", /* ACPI_MADT_TYPE_NMI_SOURCE */ 4161a39cfb0SJung-uk Kim "Local APIC NMI", /* ACPI_MADT_TYPE_LOCAL_APIC_NMI */ 4171a39cfb0SJung-uk Kim "Local APIC Address Override", /* ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE */ 4181a39cfb0SJung-uk Kim "I/O SAPIC", /* ACPI_MADT_TYPE_IO_SAPIC */ 4191a39cfb0SJung-uk Kim "Local SAPIC", /* ACPI_MADT_TYPE_LOCAL_SAPIC */ 4201a39cfb0SJung-uk Kim "Platform Interrupt Sources", /* ACPI_MADT_TYPE_INTERRUPT_SOURCE */ 421a9f12690SJung-uk Kim "Processor Local x2APIC", /* ACPI_MADT_TYPE_LOCAL_X2APIC */ 422a9f12690SJung-uk Kim "Local x2APIC NMI", /* ACPI_MADT_TYPE_LOCAL_X2APIC_NMI */ 4233f0275a0SJung-uk Kim "Generic Interrupt Controller", /* ACPI_MADT_GENERIC_INTERRUPT */ 4243f0275a0SJung-uk Kim "Generic Interrupt Distributor", /* ACPI_MADT_GENERIC_DISTRIBUTOR */ 425313a0c13SJung-uk Kim "Generic MSI Frame", /* ACPI_MADT_GENERIC_MSI_FRAME */ 426313a0c13SJung-uk Kim "Generic Interrupt Redistributor", /* ACPI_MADT_GENERIC_REDISTRIBUTOR */ 427a371a5fdSJung-uk Kim "Generic Interrupt Translator", /* ACPI_MADT_GENERIC_TRANSLATOR */ 4281970d693SJung-uk Kim "Mutiprocessor Wakeup", /* ACPI_MADT_TYPE_MULTIPROC_WAKEUP */ 4299a4bc520SJung-uk Kim "CPU Core Interrupt Controller", /* ACPI_MADT_TYPE_CORE_PIC */ 4309a4bc520SJung-uk Kim "Legacy I/O Interrupt Controller", /* ACPI_MADT_TYPE_LIO_PIC */ 4319a4bc520SJung-uk Kim "HT Interrupt Controller", /* ACPI_MADT_TYPE_HT_PIC */ 4329a4bc520SJung-uk Kim "Extend I/O Interrupt Controller", /* ACPI_MADT_TYPE_EIO_PIC */ 4339a4bc520SJung-uk Kim "MSI Interrupt Controller", /* ACPI_MADT_TYPE_MSI_PIC */ 4349a4bc520SJung-uk Kim "Bridge I/O Interrupt Controller", /* ACPI_MADT_TYPE_BIO_PIC */ 4359a4bc520SJung-uk Kim "LPC Interrupt Controller", /* ACPI_MADT_TYPE_LPC_PIC */ 436722b1667SJung-uk Kim "RISC-V Interrupt Controller", /* ACPI_MADT_TYPE_RINTC */ 43707c64d74SJung-uk Kim "RISC-V Incoming MSI Controller", /* ACPI_MADT_TYPE_IMSIC */ 43807c64d74SJung-uk Kim "RISC-V APLIC Controller", /* ACPI_MADT_TYPE_APLIC */ 43907c64d74SJung-uk Kim "RISC-V PLIC Controller", /* ACPI_MADT_TYPE_PLIC */ 440ab71bbb7SJung-uk Kim "Unknown Subtable Type", /* Reserved */ 441ab71bbb7SJung-uk Kim "Types 80-FF are used for OEM data" /* Reserved for OEM data */ 442a371a5fdSJung-uk Kim }; 443a371a5fdSJung-uk Kim 444722b1667SJung-uk Kim static const char *AcpiDmMpamSubnames[] = 445722b1667SJung-uk Kim { 446722b1667SJung-uk Kim "Processor cache", /* ACPI_MPAM_LOCATION_TYPE_PROCESSOR_CACHE */ 447722b1667SJung-uk Kim "Memory", /* ACPI_MPAM_LOCATION_TYPE_MEMORY */ 448722b1667SJung-uk Kim "SMMU", /* ACPI_MPAM_LOCATION_TYPE_SMMU */ 449722b1667SJung-uk Kim "Memory-side cache", /* ACPI_MPAM_LOCATION_TYPE_MEMORY_CACHE */ 450722b1667SJung-uk Kim "ACPI device", /* ACPI_MPAM_LOCATION_TYPE_ACPI_DEVICE */ 451722b1667SJung-uk Kim "Interconnect", /* ACPI_MPAM_LOCATION_TYPE_INTERCONNECT */ 452722b1667SJung-uk Kim "Unknown" /* ACPI_MPAM_LOCATION_TYPE_UNKNOWN */ 453722b1667SJung-uk Kim }; 454722b1667SJung-uk Kim 455a371a5fdSJung-uk Kim static const char *AcpiDmNfitSubnames[] = 456a371a5fdSJung-uk Kim { 457a371a5fdSJung-uk Kim "System Physical Address Range", /* ACPI_NFIT_TYPE_SYSTEM_ADDRESS */ 458a371a5fdSJung-uk Kim "Memory Range Map", /* ACPI_NFIT_TYPE_MEMORY_MAP */ 459a371a5fdSJung-uk Kim "Interleave Info", /* ACPI_NFIT_TYPE_INTERLEAVE */ 460a371a5fdSJung-uk Kim "SMBIOS Information", /* ACPI_NFIT_TYPE_SMBIOS */ 461a371a5fdSJung-uk Kim "NVDIMM Control Region", /* ACPI_NFIT_TYPE_CONTROL_REGION */ 462a371a5fdSJung-uk Kim "NVDIMM Block Data Window Region", /* ACPI_NFIT_TYPE_DATA_REGION */ 463a371a5fdSJung-uk Kim "Flush Hint Address", /* ACPI_NFIT_TYPE_FLUSH_ADDRESS */ 464b7b7e711SJung-uk Kim "Platform Capabilities", /* ACPI_NFIT_TYPE_CAPABILITIES */ 465a371a5fdSJung-uk Kim "Unknown Subtable Type" /* Reserved */ 466313a0c13SJung-uk Kim }; 467313a0c13SJung-uk Kim 468313a0c13SJung-uk Kim static const char *AcpiDmPcctSubnames[] = 469313a0c13SJung-uk Kim { 470313a0c13SJung-uk Kim "Generic Communications Subspace", /* ACPI_PCCT_TYPE_GENERIC_SUBSPACE */ 471a371a5fdSJung-uk Kim "HW-Reduced Comm Subspace", /* ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE */ 472f8146b88SJung-uk Kim "HW-Reduced Comm Subspace Type2", /* ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE_TYPE2 */ 473af051161SJung-uk Kim "Extended PCC Master Subspace", /* ACPI_PCCT_TYPE_EXT_PCC_MASTER_SUBSPACE */ 474af051161SJung-uk Kim "Extended PCC Slave Subspace", /* ACPI_PCCT_TYPE_EXT_PCC_SLAVE_SUBSPACE */ 475cfd1ed46SJung-uk Kim "HW Registers based Comm Subspace", /* ACPI_PCCT_TYPE_HW_REG_COMM_SUBSPACE */ 476cfd1ed46SJung-uk Kim "Unknown Subtable Type" /* Reserved */ 477cfd1ed46SJung-uk Kim }; 478cfd1ed46SJung-uk Kim 479cfd1ed46SJung-uk Kim static const char *AcpiDmPhatSubnames[] = 480cfd1ed46SJung-uk Kim { 481cfd1ed46SJung-uk Kim "Firmware Version Data", /* ACPI_PHAT_TYPE_FW_VERSION_DATA */ 482cfd1ed46SJung-uk Kim "Firmware Health Data", /* ACPI_PHAT_TYPE_FW_HEALTH_DATA */ 483a371a5fdSJung-uk Kim "Unknown Subtable Type" /* Reserved */ 4843f0275a0SJung-uk Kim }; 4853f0275a0SJung-uk Kim 4863f0275a0SJung-uk Kim static const char *AcpiDmPmttSubnames[] = 4873f0275a0SJung-uk Kim { 4883f0275a0SJung-uk Kim "Socket", /* ACPI_PMTT_TYPE_SOCKET */ 4893f0275a0SJung-uk Kim "Memory Controller", /* ACPI_PMTT_TYPE_CONTROLLER */ 4903f0275a0SJung-uk Kim "Physical Component (DIMM)", /* ACPI_PMTT_TYPE_DIMM */ 491cfd1ed46SJung-uk Kim "Unknown Subtable Type", /* Reserved */ 492cfd1ed46SJung-uk Kim "Vendor Specific" /* ACPI_PMTT_TYPE_VENDOR */ 4931a39cfb0SJung-uk Kim }; 4941a39cfb0SJung-uk Kim 495af051161SJung-uk Kim static const char *AcpiDmPpttSubnames[] = 496af051161SJung-uk Kim { 497af051161SJung-uk Kim "Processor Hierarchy Node", /* ACPI_PPTT_TYPE_PROCESSOR */ 498af051161SJung-uk Kim "Cache Type", /* ACPI_PPTT_TYPE_CACHE */ 49967d9aa44SJung-uk Kim "ID", /* ACPI_PPTT_TYPE_ID */ 50067d9aa44SJung-uk Kim "Unknown Subtable Type" /* Reserved */ 50167d9aa44SJung-uk Kim }; 50267d9aa44SJung-uk Kim 5031970d693SJung-uk Kim static const char *AcpiDmRgrtSubnames[] = 5041970d693SJung-uk Kim { 5051970d693SJung-uk Kim "Unknown/Reserved Image Type", /* ACPI_RGRT_TYPE_RESERVED0 */ 5061970d693SJung-uk Kim "Type PNG" /* ACPI_RGRT_IMAGE_TYPE_PNG */ 5071970d693SJung-uk Kim }; 5081970d693SJung-uk Kim 50967d9aa44SJung-uk Kim static const char *AcpiDmSdevSubnames[] = 51067d9aa44SJung-uk Kim { 51167d9aa44SJung-uk Kim "Namespace Device", /* ACPI_SDEV_TYPE_NAMESPACE_DEVICE */ 51267d9aa44SJung-uk Kim "PCIe Endpoint Device", /* ACPI_SDEV_TYPE_PCIE_ENDPOINT_DEVICE */ 513af051161SJung-uk Kim "Unknown Subtable Type" /* Reserved */ 514af051161SJung-uk Kim }; 515af051161SJung-uk Kim 5161a39cfb0SJung-uk Kim static const char *AcpiDmSratSubnames[] = 5171a39cfb0SJung-uk Kim { 5181a39cfb0SJung-uk Kim "Processor Local APIC/SAPIC Affinity", 5191a39cfb0SJung-uk Kim "Memory Affinity", 520a9f12690SJung-uk Kim "Processor Local x2APIC Affinity", 521313a0c13SJung-uk Kim "GICC Affinity", 522af051161SJung-uk Kim "GIC ITS Affinity", /* Acpi 6.2 */ 523cd6518c7SJung-uk Kim "Generic Initiator Affinity", /* Acpi 6.3 */ 5241b7a2680SJung-uk Kim "Generic Port Affinity", /* Acpi 6.4 */ 525804fe266SJung-uk Kim "RINTC Affinity", /* Acpi 6.6 */ 526a371a5fdSJung-uk Kim "Unknown Subtable Type" /* Reserved */ 5271a39cfb0SJung-uk Kim }; 5281a39cfb0SJung-uk Kim 52967d9aa44SJung-uk Kim static const char *AcpiDmTpm2Subnames[] = 53067d9aa44SJung-uk Kim { 53167d9aa44SJung-uk Kim "Illegal Start Method value", 53267d9aa44SJung-uk Kim "Reserved", 53367d9aa44SJung-uk Kim "ACPI Start Method", 53467d9aa44SJung-uk Kim "Reserved", 53567d9aa44SJung-uk Kim "Reserved", 53667d9aa44SJung-uk Kim "Reserved", 53767d9aa44SJung-uk Kim "Memory Mapped I/O", 53867d9aa44SJung-uk Kim "Command Response Buffer", 53967d9aa44SJung-uk Kim "Command Response Buffer with ACPI Start Method", 54067d9aa44SJung-uk Kim "Reserved", 54167d9aa44SJung-uk Kim "Reserved", 54267d9aa44SJung-uk Kim "Command Response Buffer with ARM SMC", 54367d9aa44SJung-uk Kim "Unknown Subtable Type" /* Reserved */ 54467d9aa44SJung-uk Kim }; 54567d9aa44SJung-uk Kim 546d6dd1baeSJung-uk Kim static const char *AcpiDmIvrsSubnames[] = 547d6dd1baeSJung-uk Kim { 5481970d693SJung-uk Kim "Hardware Definition Block (IVHD)", 5491970d693SJung-uk Kim "Hardware Definition Block - Mixed Format (IVHD)", 5501970d693SJung-uk Kim "Memory Definition Block (IVMD)", 5511970d693SJung-uk Kim "Unknown/Reserved Subtable Type" /* Reserved */ 5521970d693SJung-uk Kim }; 5531970d693SJung-uk Kim 5541970d693SJung-uk Kim static const char *AcpiDmIvrsDevEntryNames[] = 5551970d693SJung-uk Kim { 5561970d693SJung-uk Kim "Unknown/Reserved Device Entry Type", /* 0- Reserved */ 5571970d693SJung-uk Kim "Device Entry: Select All Devices", /* 1 */ 5581970d693SJung-uk Kim "Device Entry: Select One Device", /* 2 */ 5591970d693SJung-uk Kim "Device Entry: Start of Range", /* 3 */ 5601970d693SJung-uk Kim "Device Entry: End of Range", /* 4 */ 5611970d693SJung-uk Kim "Device Entry: Alias Select", /* 66 */ 5621970d693SJung-uk Kim "Device Entry: Alias Start of Range", /* 67 */ 5631970d693SJung-uk Kim "Unknown/Reserved Device Entry Type", /* 68- Reserved */ 5641970d693SJung-uk Kim "Unknown/Reserved Device Entry Type", /* 69- Reserved */ 5651970d693SJung-uk Kim "Device Entry: Extended Select", /* 70 */ 5661970d693SJung-uk Kim "Device Entry: Extended Start of Range", /* 71 */ 5671970d693SJung-uk Kim "Device Entry: Special Device", /* 72 */ 5681970d693SJung-uk Kim "Device Entry: ACPI HID Named Device", /* 240 */ 5691970d693SJung-uk Kim "Unknown/Reserved Device Entry Type" /* Reserved */ 570d6dd1baeSJung-uk Kim }; 571d6dd1baeSJung-uk Kim 572313a0c13SJung-uk Kim static const char *AcpiDmLpitSubnames[] = 573313a0c13SJung-uk Kim { 574313a0c13SJung-uk Kim "Native C-state Idle Structure", 575a371a5fdSJung-uk Kim "Unknown Subtable Type" /* Reserved */ 576313a0c13SJung-uk Kim }; 577d6dd1baeSJung-uk Kim 578cfd1ed46SJung-uk Kim static const char *AcpiDmViotSubnames[] = 579cfd1ed46SJung-uk Kim { 580cfd1ed46SJung-uk Kim "Unknown Subtable Type", /* 0 -Reserved */ 581cfd1ed46SJung-uk Kim "PCI Range", 582cfd1ed46SJung-uk Kim "MMIO Endpoint", 583cfd1ed46SJung-uk Kim "VirtIO-PCI IOMMU", 584cfd1ed46SJung-uk Kim "VirtIO-MMIO IOMMU", 585cfd1ed46SJung-uk Kim "Unknown Subtable Type" /* Reserved */ 586cfd1ed46SJung-uk Kim }; 587cfd1ed46SJung-uk Kim 588ec3fc72fSJung-uk Kim #define ACPI_FADT_PM_RESERVED 9 589a9f12690SJung-uk Kim 590a9f12690SJung-uk Kim static const char *AcpiDmFadtProfiles[] = 591a9f12690SJung-uk Kim { 592a9f12690SJung-uk Kim "Unspecified", 593a9f12690SJung-uk Kim "Desktop", 594a9f12690SJung-uk Kim "Mobile", 595a9f12690SJung-uk Kim "Workstation", 596a9f12690SJung-uk Kim "Enterprise Server", 597a9f12690SJung-uk Kim "SOHO Server", 598a9f12690SJung-uk Kim "Appliance PC", 599a9f12690SJung-uk Kim "Performance Server", 600ec3fc72fSJung-uk Kim "Tablet", 601a9f12690SJung-uk Kim "Unknown Profile Type" 602a9f12690SJung-uk Kim }; 603a9f12690SJung-uk Kim 6045a77b11bSJung-uk Kim #define ACPI_GAS_WIDTH_RESERVED 5 6055a77b11bSJung-uk Kim 6065a77b11bSJung-uk Kim static const char *AcpiDmGasAccessWidth[] = 6075a77b11bSJung-uk Kim { 6085a77b11bSJung-uk Kim "Undefined/Legacy", 6095a77b11bSJung-uk Kim "Byte Access:8", 6105a77b11bSJung-uk Kim "Word Access:16", 6115a77b11bSJung-uk Kim "DWord Access:32", 6125a77b11bSJung-uk Kim "QWord Access:64", 6135a77b11bSJung-uk Kim "Unknown Width Encoding" 6145a77b11bSJung-uk Kim }; 6155a77b11bSJung-uk Kim 61607c64d74SJung-uk Kim static const char *AcpiDmRhctSubnames[] = 61707c64d74SJung-uk Kim { 61807c64d74SJung-uk Kim "RISC-V ISA string structure", /* ACPI_RHCT_ISA_STRING */ 61907c64d74SJung-uk Kim "RISC-V CMO node structure", /* ACPI_RHCT_CMO_NODE */ 62007c64d74SJung-uk Kim "RISC-V MMU node structure", /* ACPI_RHCT_MMU_NODE */ 62107c64d74SJung-uk Kim "RISC-V Hart Info structure", /* ACPI_RHCT_HART_INFO */ 62207c64d74SJung-uk Kim }; 62307c64d74SJung-uk Kim 6245a77b11bSJung-uk Kim 6251a39cfb0SJung-uk Kim /******************************************************************************* 6261a39cfb0SJung-uk Kim * 6271a39cfb0SJung-uk Kim * ACPI Table Data, indexed by signature. 6281a39cfb0SJung-uk Kim * 629a88e22b7SJung-uk Kim * Each entry contains: Signature, Table Info, Handler, DtHandler, 630a88e22b7SJung-uk Kim * Template, Description 631d6dd1baeSJung-uk Kim * 632a88e22b7SJung-uk Kim * Simple tables have only a TableInfo structure, complex tables have a 633a88e22b7SJung-uk Kim * handler. This table must be NULL terminated. RSDP and FACS are 634a88e22b7SJung-uk Kim * special-cased elsewhere. 6351a39cfb0SJung-uk Kim * 636cfd1ed46SJung-uk Kim * Note: Any tables added here should be duplicated within 637cfd1ed46SJung-uk Kim * AcpiGbl_SupportedTables in the file common/ahtable.c 638a371a5fdSJung-uk Kim * 6391a39cfb0SJung-uk Kim ******************************************************************************/ 6401a39cfb0SJung-uk Kim 641a371a5fdSJung-uk Kim const ACPI_DMTABLE_DATA AcpiDmTableData[] = 6421a39cfb0SJung-uk Kim { 64397c0b5abSJung-uk Kim {ACPI_SIG_AEST, NULL, AcpiDmDumpAest, DtCompileAest, TemplateAest}, 644ab71bbb7SJung-uk Kim {ACPI_SIG_AGDI, AcpiDmTableInfoAgdi, NULL, NULL, TemplateAgdi}, 645ab71bbb7SJung-uk Kim {ACPI_SIG_APMT, NULL, AcpiDmDumpApmt, DtCompileApmt, TemplateApmt}, 646a371a5fdSJung-uk Kim {ACPI_SIG_ASF, NULL, AcpiDmDumpAsf, DtCompileAsf, TemplateAsf}, 647722b1667SJung-uk Kim {ACPI_SIG_ASPT, NULL, AcpiDmDumpAspt, DtCompileAspt, TemplateAspt}, 6481970d693SJung-uk Kim {ACPI_SIG_BDAT, AcpiDmTableInfoBdat, NULL, NULL, TemplateBdat}, 649a371a5fdSJung-uk Kim {ACPI_SIG_BERT, AcpiDmTableInfoBert, NULL, NULL, TemplateBert}, 650a371a5fdSJung-uk Kim {ACPI_SIG_BGRT, AcpiDmTableInfoBgrt, NULL, NULL, TemplateBgrt}, 651a371a5fdSJung-uk Kim {ACPI_SIG_BOOT, AcpiDmTableInfoBoot, NULL, NULL, TemplateBoot}, 6529a4bc520SJung-uk Kim {ACPI_SIG_CCEL, AcpiDmTableInfoCcel, NULL, NULL, TemplateCcel}, 6539a4bc520SJung-uk Kim {ACPI_SIG_CDAT, NULL, AcpiDmDumpCdat, NULL, TemplateCdat}, 654cfd1ed46SJung-uk Kim {ACPI_SIG_CEDT, NULL, AcpiDmDumpCedt, DtCompileCedt, TemplateCedt}, 655a371a5fdSJung-uk Kim {ACPI_SIG_CPEP, NULL, AcpiDmDumpCpep, DtCompileCpep, TemplateCpep}, 656a371a5fdSJung-uk Kim {ACPI_SIG_CSRT, NULL, AcpiDmDumpCsrt, DtCompileCsrt, TemplateCsrt}, 657a371a5fdSJung-uk Kim {ACPI_SIG_DBG2, AcpiDmTableInfoDbg2, AcpiDmDumpDbg2, DtCompileDbg2, TemplateDbg2}, 658a371a5fdSJung-uk Kim {ACPI_SIG_DBGP, AcpiDmTableInfoDbgp, NULL, NULL, TemplateDbgp}, 659a371a5fdSJung-uk Kim {ACPI_SIG_DMAR, NULL, AcpiDmDumpDmar, DtCompileDmar, TemplateDmar}, 660a371a5fdSJung-uk Kim {ACPI_SIG_DRTM, NULL, AcpiDmDumpDrtm, DtCompileDrtm, TemplateDrtm}, 661a371a5fdSJung-uk Kim {ACPI_SIG_ECDT, AcpiDmTableInfoEcdt, NULL, NULL, TemplateEcdt}, 662a371a5fdSJung-uk Kim {ACPI_SIG_EINJ, NULL, AcpiDmDumpEinj, DtCompileEinj, TemplateEinj}, 663a371a5fdSJung-uk Kim {ACPI_SIG_ERST, NULL, AcpiDmDumpErst, DtCompileErst, TemplateErst}, 664a371a5fdSJung-uk Kim {ACPI_SIG_FADT, NULL, AcpiDmDumpFadt, DtCompileFadt, TemplateFadt}, 665a371a5fdSJung-uk Kim {ACPI_SIG_FPDT, NULL, AcpiDmDumpFpdt, DtCompileFpdt, TemplateFpdt}, 666a371a5fdSJung-uk Kim {ACPI_SIG_GTDT, NULL, AcpiDmDumpGtdt, DtCompileGtdt, TemplateGtdt}, 667a371a5fdSJung-uk Kim {ACPI_SIG_HEST, NULL, AcpiDmDumpHest, DtCompileHest, TemplateHest}, 668af051161SJung-uk Kim {ACPI_SIG_HMAT, NULL, AcpiDmDumpHmat, DtCompileHmat, TemplateHmat}, 669a371a5fdSJung-uk Kim {ACPI_SIG_HPET, AcpiDmTableInfoHpet, NULL, NULL, TemplateHpet}, 670a371a5fdSJung-uk Kim {ACPI_SIG_IORT, NULL, AcpiDmDumpIort, DtCompileIort, TemplateIort}, 671a371a5fdSJung-uk Kim {ACPI_SIG_IVRS, NULL, AcpiDmDumpIvrs, DtCompileIvrs, TemplateIvrs}, 672a371a5fdSJung-uk Kim {ACPI_SIG_LPIT, NULL, AcpiDmDumpLpit, DtCompileLpit, TemplateLpit}, 673a371a5fdSJung-uk Kim {ACPI_SIG_MADT, NULL, AcpiDmDumpMadt, DtCompileMadt, TemplateMadt}, 674a371a5fdSJung-uk Kim {ACPI_SIG_MCFG, NULL, AcpiDmDumpMcfg, DtCompileMcfg, TemplateMcfg}, 675a371a5fdSJung-uk Kim {ACPI_SIG_MCHI, AcpiDmTableInfoMchi, NULL, NULL, TemplateMchi}, 676722b1667SJung-uk Kim {ACPI_SIG_MPAM, NULL, AcpiDmDumpMpam, DtCompileMpam, TemplateMpam}, 677a371a5fdSJung-uk Kim {ACPI_SIG_MPST, AcpiDmTableInfoMpst, AcpiDmDumpMpst, DtCompileMpst, TemplateMpst}, 678a371a5fdSJung-uk Kim {ACPI_SIG_MSCT, NULL, AcpiDmDumpMsct, DtCompileMsct, TemplateMsct}, 679a371a5fdSJung-uk Kim {ACPI_SIG_MSDM, NULL, AcpiDmDumpSlic, DtCompileSlic, TemplateMsdm}, 680a371a5fdSJung-uk Kim {ACPI_SIG_NFIT, AcpiDmTableInfoNfit, AcpiDmDumpNfit, DtCompileNfit, TemplateNfit}, 681804fe266SJung-uk Kim {ACPI_SIG_NHLT, NULL, NULL, NULL, NULL}, 682a371a5fdSJung-uk Kim {ACPI_SIG_PCCT, AcpiDmTableInfoPcct, AcpiDmDumpPcct, DtCompilePcct, TemplatePcct}, 68367d9aa44SJung-uk Kim {ACPI_SIG_PDTT, AcpiDmTableInfoPdtt, AcpiDmDumpPdtt, DtCompilePdtt, TemplatePdtt}, 684cfd1ed46SJung-uk Kim {ACPI_SIG_PHAT, NULL, AcpiDmDumpPhat, DtCompilePhat, TemplatePhat}, 685a371a5fdSJung-uk Kim {ACPI_SIG_PMTT, NULL, AcpiDmDumpPmtt, DtCompilePmtt, TemplatePmtt}, 686af051161SJung-uk Kim {ACPI_SIG_PPTT, NULL, AcpiDmDumpPptt, DtCompilePptt, TemplatePptt}, 6871970d693SJung-uk Kim {ACPI_SIG_PRMT, NULL, AcpiDmDumpPrmt, DtCompilePrmt, TemplatePrmt}, 688493deb39SJung-uk Kim {ACPI_SIG_RASF, AcpiDmTableInfoRasf, NULL, NULL, TemplateRasf}, 689804fe266SJung-uk Kim {ACPI_SIG_RAS2, AcpiDmTableInfoRas2, AcpiDmDumpRas2, DtCompileRas2, TemplateRas2}, 6901970d693SJung-uk Kim {ACPI_SIG_RGRT, NULL, AcpiDmDumpRgrt, DtCompileRgrt, TemplateRgrt}, 691722b1667SJung-uk Kim {ACPI_SIG_RHCT, NULL, AcpiDmDumpRhct, DtCompileRhct, TemplateRhct}, 692a371a5fdSJung-uk Kim {ACPI_SIG_RSDT, NULL, AcpiDmDumpRsdt, DtCompileRsdt, TemplateRsdt}, 693a371a5fdSJung-uk Kim {ACPI_SIG_S3PT, NULL, NULL, NULL, TemplateS3pt}, 694a371a5fdSJung-uk Kim {ACPI_SIG_SBST, AcpiDmTableInfoSbst, NULL, NULL, TemplateSbst}, 6955f9b24faSJung-uk Kim {ACPI_SIG_SDEI, AcpiDmTableInfoSdei, NULL, NULL, TemplateSdei}, 69667d9aa44SJung-uk Kim {ACPI_SIG_SDEV, AcpiDmTableInfoSdev, AcpiDmDumpSdev, DtCompileSdev, TemplateSdev}, 697a371a5fdSJung-uk Kim {ACPI_SIG_SLIC, NULL, AcpiDmDumpSlic, DtCompileSlic, TemplateSlic}, 698a371a5fdSJung-uk Kim {ACPI_SIG_SLIT, NULL, AcpiDmDumpSlit, DtCompileSlit, TemplateSlit}, 699a371a5fdSJung-uk Kim {ACPI_SIG_SPCR, AcpiDmTableInfoSpcr, NULL, NULL, TemplateSpcr}, 700a371a5fdSJung-uk Kim {ACPI_SIG_SPMI, AcpiDmTableInfoSpmi, NULL, NULL, TemplateSpmi}, 701a371a5fdSJung-uk Kim {ACPI_SIG_SRAT, NULL, AcpiDmDumpSrat, DtCompileSrat, TemplateSrat}, 702a371a5fdSJung-uk Kim {ACPI_SIG_STAO, NULL, AcpiDmDumpStao, DtCompileStao, TemplateStao}, 7031970d693SJung-uk Kim {ACPI_SIG_SVKL, AcpiDmTableInfoSvkl, AcpiDmDumpSvkl, DtCompileSvkl, TemplateSvkl}, 704fe0f0bbbSJung-uk Kim {ACPI_SIG_TCPA, NULL, AcpiDmDumpTcpa, DtCompileTcpa, TemplateTcpa}, 705ab71bbb7SJung-uk Kim {ACPI_SIG_TDEL, AcpiDmTableInfoTdel, NULL, NULL, TemplateTdel}, 70667d9aa44SJung-uk Kim {ACPI_SIG_TPM2, AcpiDmTableInfoTpm2, AcpiDmDumpTpm2, DtCompileTpm2, TemplateTpm2}, 707a371a5fdSJung-uk Kim {ACPI_SIG_UEFI, AcpiDmTableInfoUefi, NULL, DtCompileUefi, TemplateUefi}, 708cfd1ed46SJung-uk Kim {ACPI_SIG_VIOT, AcpiDmTableInfoViot, AcpiDmDumpViot, DtCompileViot, TemplateViot}, 709a371a5fdSJung-uk Kim {ACPI_SIG_WAET, AcpiDmTableInfoWaet, NULL, NULL, TemplateWaet}, 710a371a5fdSJung-uk Kim {ACPI_SIG_WDAT, NULL, AcpiDmDumpWdat, DtCompileWdat, TemplateWdat}, 711a371a5fdSJung-uk Kim {ACPI_SIG_WDDT, AcpiDmTableInfoWddt, NULL, NULL, TemplateWddt}, 712a371a5fdSJung-uk Kim {ACPI_SIG_WDRT, AcpiDmTableInfoWdrt, NULL, NULL, TemplateWdrt}, 713a371a5fdSJung-uk Kim {ACPI_SIG_WPBT, NULL, AcpiDmDumpWpbt, DtCompileWpbt, TemplateWpbt}, 714af051161SJung-uk Kim {ACPI_SIG_WSMT, AcpiDmTableInfoWsmt, NULL, NULL, TemplateWsmt}, 715a371a5fdSJung-uk Kim {ACPI_SIG_XENV, AcpiDmTableInfoXenv, NULL, NULL, TemplateXenv}, 716a371a5fdSJung-uk Kim {ACPI_SIG_XSDT, NULL, AcpiDmDumpXsdt, DtCompileXsdt, TemplateXsdt}, 717a371a5fdSJung-uk Kim {NULL, NULL, NULL, NULL, NULL} 7181a39cfb0SJung-uk Kim }; 7191a39cfb0SJung-uk Kim 7201a39cfb0SJung-uk Kim 7211a39cfb0SJung-uk Kim /******************************************************************************* 7221a39cfb0SJung-uk Kim * 7231a39cfb0SJung-uk Kim * FUNCTION: AcpiDmGetTableData 7241a39cfb0SJung-uk Kim * 7251a39cfb0SJung-uk Kim * PARAMETERS: Signature - ACPI signature (4 chars) to match 7261a39cfb0SJung-uk Kim * 7271a39cfb0SJung-uk Kim * RETURN: Pointer to a valid ACPI_DMTABLE_DATA. Null if no match found. 7281a39cfb0SJung-uk Kim * 7291a39cfb0SJung-uk Kim * DESCRIPTION: Find a match in the global table of supported ACPI tables 7301a39cfb0SJung-uk Kim * 7311a39cfb0SJung-uk Kim ******************************************************************************/ 7321a39cfb0SJung-uk Kim 733a371a5fdSJung-uk Kim const ACPI_DMTABLE_DATA * 7341a39cfb0SJung-uk Kim AcpiDmGetTableData ( 7351a39cfb0SJung-uk Kim char *Signature) 7361a39cfb0SJung-uk Kim { 737a371a5fdSJung-uk Kim const ACPI_DMTABLE_DATA *Info; 7381a39cfb0SJung-uk Kim 7391a39cfb0SJung-uk Kim 740a371a5fdSJung-uk Kim for (Info = AcpiDmTableData; Info->Signature; Info++) 7411a39cfb0SJung-uk Kim { 742278f0de6SJung-uk Kim if (ACPI_COMPARE_NAMESEG (Signature, Info->Signature)) 7431a39cfb0SJung-uk Kim { 744a371a5fdSJung-uk Kim return (Info); 7451a39cfb0SJung-uk Kim } 7461a39cfb0SJung-uk Kim } 7471a39cfb0SJung-uk Kim 7481a39cfb0SJung-uk Kim return (NULL); 7491a39cfb0SJung-uk Kim } 7501a39cfb0SJung-uk Kim 7511a39cfb0SJung-uk Kim 7521a39cfb0SJung-uk Kim /******************************************************************************* 7531a39cfb0SJung-uk Kim * 7541a39cfb0SJung-uk Kim * FUNCTION: AcpiDmDumpDataTable 7551a39cfb0SJung-uk Kim * 7561a39cfb0SJung-uk Kim * PARAMETERS: Table - An ACPI table 7571a39cfb0SJung-uk Kim * 7581a39cfb0SJung-uk Kim * RETURN: None. 7591a39cfb0SJung-uk Kim * 7601a39cfb0SJung-uk Kim * DESCRIPTION: Format the contents of an ACPI data table (any table other 7611a39cfb0SJung-uk Kim * than an SSDT or DSDT that does not contain executable AML code) 7621a39cfb0SJung-uk Kim * 7631a39cfb0SJung-uk Kim ******************************************************************************/ 7641a39cfb0SJung-uk Kim 7651a39cfb0SJung-uk Kim void 7661a39cfb0SJung-uk Kim AcpiDmDumpDataTable ( 7671a39cfb0SJung-uk Kim ACPI_TABLE_HEADER *Table) 7681a39cfb0SJung-uk Kim { 769a9f12690SJung-uk Kim ACPI_STATUS Status; 770a371a5fdSJung-uk Kim const ACPI_DMTABLE_DATA *TableData; 7711a39cfb0SJung-uk Kim UINT32 Length; 7721a39cfb0SJung-uk Kim 7731a39cfb0SJung-uk Kim 7741a39cfb0SJung-uk Kim /* Ignore tables that contain AML */ 7751a39cfb0SJung-uk Kim 7761a39cfb0SJung-uk Kim if (AcpiUtIsAmlTable (Table)) 7771a39cfb0SJung-uk Kim { 7786f1f1a63SJung-uk Kim if (AslGbl_VerboseTemplates) 7798ef1a331SJung-uk Kim { 7808ef1a331SJung-uk Kim /* Dump the raw table data */ 7818ef1a331SJung-uk Kim 7828ef1a331SJung-uk Kim Length = Table->Length; 7838ef1a331SJung-uk Kim 7848ef1a331SJung-uk Kim AcpiOsPrintf ("\n/*\n%s: Length %d (0x%X)\n\n", 7858ef1a331SJung-uk Kim ACPI_RAW_TABLE_DATA_HEADER, Length, Length); 7868ef1a331SJung-uk Kim AcpiUtDumpBuffer (ACPI_CAST_PTR (UINT8, Table), 7878ef1a331SJung-uk Kim Length, DB_BYTE_DISPLAY, 0); 7888ef1a331SJung-uk Kim AcpiOsPrintf (" */\n"); 7898ef1a331SJung-uk Kim } 7901a39cfb0SJung-uk Kim return; 7911a39cfb0SJung-uk Kim } 7921a39cfb0SJung-uk Kim 7931a39cfb0SJung-uk Kim /* 7941a39cfb0SJung-uk Kim * Handle tables that don't use the common ACPI table header structure. 7959a4bc520SJung-uk Kim * Currently, these are the FACS, RSDP, S3PT and CDAT. 7961a39cfb0SJung-uk Kim */ 797278f0de6SJung-uk Kim if (ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_FACS)) 7981a39cfb0SJung-uk Kim { 7991a39cfb0SJung-uk Kim Length = Table->Length; 800fe0f0bbbSJung-uk Kim Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoFacs); 801fe0f0bbbSJung-uk Kim if (ACPI_FAILURE (Status)) 802fe0f0bbbSJung-uk Kim { 803fe0f0bbbSJung-uk Kim return; 804fe0f0bbbSJung-uk Kim } 8051a39cfb0SJung-uk Kim } 806ab71bbb7SJung-uk Kim else if (ACPI_VALIDATE_RSDP_SIG (ACPI_CAST_PTR (ACPI_TABLE_RSDP, 807ab71bbb7SJung-uk Kim Table)->Signature)) 8081a39cfb0SJung-uk Kim { 8091a39cfb0SJung-uk Kim Length = AcpiDmDumpRsdp (Table); 8101a39cfb0SJung-uk Kim } 811278f0de6SJung-uk Kim else if (ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_S3PT)) 8123f0275a0SJung-uk Kim { 8133f0275a0SJung-uk Kim Length = AcpiDmDumpS3pt (Table); 8143f0275a0SJung-uk Kim } 8159a4bc520SJung-uk Kim else if (!AcpiUtValidNameseg (Table->Signature)) 8169a4bc520SJung-uk Kim { 8179a4bc520SJung-uk Kim /* 8189a4bc520SJung-uk Kim * For CDAT we are assuming that there should be at least one non-ASCII 8199a4bc520SJung-uk Kim * byte in the (normally) 4-character Signature field (at least the 8209a4bc520SJung-uk Kim * high-order byte should be zero). 8219a4bc520SJung-uk Kim */ 8229a4bc520SJung-uk Kim if (AcpiGbl_CDAT) 8239a4bc520SJung-uk Kim { 8249a4bc520SJung-uk Kim /* 8259a4bc520SJung-uk Kim * Invalid signature and <-ds CDAT> was specified on the command line. 8269a4bc520SJung-uk Kim * Therefore, we have a CDAT table. 8279a4bc520SJung-uk Kim */ 8289a4bc520SJung-uk Kim AcpiDmDumpCdat (Table); 8299a4bc520SJung-uk Kim } 8309a4bc520SJung-uk Kim else 8319a4bc520SJung-uk Kim { 8329a4bc520SJung-uk Kim fprintf (stderr, "Table has an invalid signature\n"); 8339a4bc520SJung-uk Kim } 8349a4bc520SJung-uk Kim 8359a4bc520SJung-uk Kim return; 8369a4bc520SJung-uk Kim } 8371a39cfb0SJung-uk Kim else 8381a39cfb0SJung-uk Kim { 8391a39cfb0SJung-uk Kim /* 8401a39cfb0SJung-uk Kim * All other tables must use the common ACPI table header, dump it now 8411a39cfb0SJung-uk Kim */ 8421a39cfb0SJung-uk Kim Length = Table->Length; 843a9f12690SJung-uk Kim Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoHeader); 844a9f12690SJung-uk Kim if (ACPI_FAILURE (Status)) 845a9f12690SJung-uk Kim { 846a9f12690SJung-uk Kim return; 847a9f12690SJung-uk Kim } 8481a39cfb0SJung-uk Kim AcpiOsPrintf ("\n"); 8491a39cfb0SJung-uk Kim 8501a39cfb0SJung-uk Kim /* Match signature and dispatch appropriately */ 8511a39cfb0SJung-uk Kim 8521a39cfb0SJung-uk Kim TableData = AcpiDmGetTableData (Table->Signature); 8531a39cfb0SJung-uk Kim if (!TableData) 8541a39cfb0SJung-uk Kim { 8555ef50723SJung-uk Kim if (!strncmp (Table->Signature, "OEM", 3)) 8561a39cfb0SJung-uk Kim { 8571a39cfb0SJung-uk Kim AcpiOsPrintf ("\n**** OEM-defined ACPI table [%4.4s], unknown contents\n\n", 8581a39cfb0SJung-uk Kim Table->Signature); 8591a39cfb0SJung-uk Kim } 8601a39cfb0SJung-uk Kim else 8611a39cfb0SJung-uk Kim { 8627cf3e94aSJung-uk Kim AcpiOsPrintf ("\n**** Unknown ACPI table signature [%4.4s]\n\n", 8631a39cfb0SJung-uk Kim Table->Signature); 8647cf3e94aSJung-uk Kim 8657cf3e94aSJung-uk Kim fprintf (stderr, "Unknown ACPI table signature [%4.4s], ", 8669c48c75eSJung-uk Kim Table->Signature); 8677cf3e94aSJung-uk Kim 8687cf3e94aSJung-uk Kim if (!AcpiGbl_ForceAmlDisassembly) 8697cf3e94aSJung-uk Kim { 8707cf3e94aSJung-uk Kim fprintf (stderr, "decoding ACPI table header only\n"); 8717cf3e94aSJung-uk Kim } 8727cf3e94aSJung-uk Kim else 8737cf3e94aSJung-uk Kim { 8747cf3e94aSJung-uk Kim fprintf (stderr, "assuming table contains valid AML code\n"); 8757cf3e94aSJung-uk Kim } 8761a39cfb0SJung-uk Kim } 8771a39cfb0SJung-uk Kim } 8781a39cfb0SJung-uk Kim else if (TableData->TableHandler) 8791a39cfb0SJung-uk Kim { 8801a39cfb0SJung-uk Kim /* Complex table, has a handler */ 8811a39cfb0SJung-uk Kim 8821a39cfb0SJung-uk Kim TableData->TableHandler (Table); 8831a39cfb0SJung-uk Kim } 8841a39cfb0SJung-uk Kim else if (TableData->TableInfo) 8851a39cfb0SJung-uk Kim { 8861a39cfb0SJung-uk Kim /* Simple table, just walk the info table */ 8871a39cfb0SJung-uk Kim 888fe0f0bbbSJung-uk Kim Status = AcpiDmDumpTable (Length, 0, Table, 0, TableData->TableInfo); 889fe0f0bbbSJung-uk Kim if (ACPI_FAILURE (Status)) 890fe0f0bbbSJung-uk Kim { 891fe0f0bbbSJung-uk Kim return; 892fe0f0bbbSJung-uk Kim } 8931a39cfb0SJung-uk Kim } 8941a39cfb0SJung-uk Kim } 8951a39cfb0SJung-uk Kim 8966f1f1a63SJung-uk Kim if (!AslGbl_DoTemplates || AslGbl_VerboseTemplates) 897a88e22b7SJung-uk Kim { 898a88e22b7SJung-uk Kim /* Dump the raw table data */ 8991a39cfb0SJung-uk Kim 900d244b227SJung-uk Kim AcpiOsPrintf ("\n%s: Length %d (0x%X)\n\n", 901d244b227SJung-uk Kim ACPI_RAW_TABLE_DATA_HEADER, Length, Length); 9028ef1a331SJung-uk Kim AcpiUtDumpBuffer (ACPI_CAST_PTR (UINT8, Table), 9038ef1a331SJung-uk Kim Length, DB_BYTE_DISPLAY, 0); 9041a39cfb0SJung-uk Kim } 905a88e22b7SJung-uk Kim } 9061a39cfb0SJung-uk Kim 9071a39cfb0SJung-uk Kim 9081a39cfb0SJung-uk Kim /******************************************************************************* 9091a39cfb0SJung-uk Kim * 9101a39cfb0SJung-uk Kim * FUNCTION: AcpiDmLineHeader 9111a39cfb0SJung-uk Kim * 9121a39cfb0SJung-uk Kim * PARAMETERS: Offset - Current byte offset, from table start 9131a39cfb0SJung-uk Kim * ByteLength - Length of the field in bytes, 0 for flags 9141a39cfb0SJung-uk Kim * Name - Name of this field 9151a39cfb0SJung-uk Kim * 9161a39cfb0SJung-uk Kim * RETURN: None 9171a39cfb0SJung-uk Kim * 9181a39cfb0SJung-uk Kim * DESCRIPTION: Utility routines for formatting output lines. Displays the 9191a39cfb0SJung-uk Kim * current table offset in hex and decimal, the field length, 9201a39cfb0SJung-uk Kim * and the field name. 9211a39cfb0SJung-uk Kim * 9221a39cfb0SJung-uk Kim ******************************************************************************/ 9231a39cfb0SJung-uk Kim 9241a39cfb0SJung-uk Kim void 9251a39cfb0SJung-uk Kim AcpiDmLineHeader ( 9261a39cfb0SJung-uk Kim UINT32 Offset, 9271a39cfb0SJung-uk Kim UINT32 ByteLength, 9281a39cfb0SJung-uk Kim char *Name) 9291a39cfb0SJung-uk Kim { 9301a39cfb0SJung-uk Kim 931dcbce41eSJung-uk Kim /* Allow a null name for fields that span multiple lines (large buffers) */ 932dcbce41eSJung-uk Kim 933dcbce41eSJung-uk Kim if (!Name) 934dcbce41eSJung-uk Kim { 935dcbce41eSJung-uk Kim Name = ""; 936dcbce41eSJung-uk Kim } 937dcbce41eSJung-uk Kim 9386f1f1a63SJung-uk Kim if (AslGbl_DoTemplates && !AslGbl_VerboseTemplates) /* Terse template */ 939a88e22b7SJung-uk Kim { 940a88e22b7SJung-uk Kim if (ByteLength) 941a88e22b7SJung-uk Kim { 942dcbce41eSJung-uk Kim AcpiOsPrintf ("[%.4d] %34s : ", ByteLength, Name); 943a88e22b7SJung-uk Kim } 944a88e22b7SJung-uk Kim else 945a88e22b7SJung-uk Kim { 946d052a1ccSJung-uk Kim if (*Name) 947d052a1ccSJung-uk Kim { 948dcbce41eSJung-uk Kim AcpiOsPrintf ("%41s : ", Name); 949a88e22b7SJung-uk Kim } 950d052a1ccSJung-uk Kim else 951d052a1ccSJung-uk Kim { 952d052a1ccSJung-uk Kim AcpiOsPrintf ("%41s ", Name); 953d052a1ccSJung-uk Kim } 954d052a1ccSJung-uk Kim } 955a88e22b7SJung-uk Kim } 956a88e22b7SJung-uk Kim else /* Normal disassembler or verbose template */ 957a88e22b7SJung-uk Kim { 9581a39cfb0SJung-uk Kim if (ByteLength) 9591a39cfb0SJung-uk Kim { 9609a4bc520SJung-uk Kim AcpiOsPrintf ("[%3.3Xh %4.4u %3.3Xh] %27s : ", 9611a39cfb0SJung-uk Kim Offset, Offset, ByteLength, Name); 9621a39cfb0SJung-uk Kim } 9631a39cfb0SJung-uk Kim else 9641a39cfb0SJung-uk Kim { 965d052a1ccSJung-uk Kim if (*Name) 966d052a1ccSJung-uk Kim { 967dcbce41eSJung-uk Kim AcpiOsPrintf ("%44s : ", Name); 9681a39cfb0SJung-uk Kim } 969d052a1ccSJung-uk Kim else 970d052a1ccSJung-uk Kim { 971d052a1ccSJung-uk Kim AcpiOsPrintf ("%44s ", Name); 972d052a1ccSJung-uk Kim } 973d052a1ccSJung-uk Kim } 9741a39cfb0SJung-uk Kim } 975a88e22b7SJung-uk Kim } 9761a39cfb0SJung-uk Kim 9771a39cfb0SJung-uk Kim void 9781a39cfb0SJung-uk Kim AcpiDmLineHeader2 ( 9791a39cfb0SJung-uk Kim UINT32 Offset, 9801a39cfb0SJung-uk Kim UINT32 ByteLength, 9811a39cfb0SJung-uk Kim char *Name, 9821a39cfb0SJung-uk Kim UINT32 Value) 9831a39cfb0SJung-uk Kim { 9841a39cfb0SJung-uk Kim 9856f1f1a63SJung-uk Kim if (AslGbl_DoTemplates && !AslGbl_VerboseTemplates) /* Terse template */ 986a88e22b7SJung-uk Kim { 987a88e22b7SJung-uk Kim if (ByteLength) 988a88e22b7SJung-uk Kim { 989d052a1ccSJung-uk Kim AcpiOsPrintf ("[%.4d] %30s %3d : ", 990a88e22b7SJung-uk Kim ByteLength, Name, Value); 991a88e22b7SJung-uk Kim } 992a88e22b7SJung-uk Kim else 993a88e22b7SJung-uk Kim { 994a88e22b7SJung-uk Kim AcpiOsPrintf ("%36s % 3d : ", 995a88e22b7SJung-uk Kim Name, Value); 996a88e22b7SJung-uk Kim } 997a88e22b7SJung-uk Kim } 998a88e22b7SJung-uk Kim else /* Normal disassembler or verbose template */ 999a88e22b7SJung-uk Kim { 10001a39cfb0SJung-uk Kim if (ByteLength) 10011a39cfb0SJung-uk Kim { 10029a4bc520SJung-uk Kim AcpiOsPrintf ("[%3.3Xh %4.4u %3.3Xh] %24s %3d : ", 10031a39cfb0SJung-uk Kim Offset, Offset, ByteLength, Name, Value); 10041a39cfb0SJung-uk Kim } 10051a39cfb0SJung-uk Kim else 10061a39cfb0SJung-uk Kim { 10079a4bc520SJung-uk Kim AcpiOsPrintf ("[%3.3Xh %4.4u ] %24s %3d : ", 10081a39cfb0SJung-uk Kim Offset, Offset, Name, Value); 10091a39cfb0SJung-uk Kim } 10101a39cfb0SJung-uk Kim } 1011a88e22b7SJung-uk Kim } 10121a39cfb0SJung-uk Kim 10131a39cfb0SJung-uk Kim 10141a39cfb0SJung-uk Kim /******************************************************************************* 10151a39cfb0SJung-uk Kim * 10161a39cfb0SJung-uk Kim * FUNCTION: AcpiDmDumpTable 10171a39cfb0SJung-uk Kim * 10181a39cfb0SJung-uk Kim * PARAMETERS: TableLength - Length of the entire ACPI table 10191a39cfb0SJung-uk Kim * TableOffset - Starting offset within the table for this 10201a39cfb0SJung-uk Kim * sub-descriptor (0 if main table) 10211a39cfb0SJung-uk Kim * Table - The ACPI table 1022a9f12690SJung-uk Kim * SubtableLength - Length of this sub-descriptor 10231a39cfb0SJung-uk Kim * Info - Info table for this ACPI table 10241a39cfb0SJung-uk Kim * 102570e6ab8fSJung-uk Kim * RETURN: Status 10261a39cfb0SJung-uk Kim * 10271a39cfb0SJung-uk Kim * DESCRIPTION: Display ACPI table contents by walking the Info table. 10281a39cfb0SJung-uk Kim * 1029a88e22b7SJung-uk Kim * Note: This function must remain in sync with DtGetFieldLength. 1030a88e22b7SJung-uk Kim * 10311a39cfb0SJung-uk Kim ******************************************************************************/ 10321a39cfb0SJung-uk Kim 1033a9f12690SJung-uk Kim ACPI_STATUS 10341a39cfb0SJung-uk Kim AcpiDmDumpTable ( 10351a39cfb0SJung-uk Kim UINT32 TableLength, 10361a39cfb0SJung-uk Kim UINT32 TableOffset, 10371a39cfb0SJung-uk Kim void *Table, 10381a39cfb0SJung-uk Kim UINT32 SubtableLength, 10391a39cfb0SJung-uk Kim ACPI_DMTABLE_INFO *Info) 10401a39cfb0SJung-uk Kim { 10411a39cfb0SJung-uk Kim UINT8 *Target; 10421a39cfb0SJung-uk Kim UINT32 CurrentOffset; 10431a39cfb0SJung-uk Kim UINT32 ByteLength; 10441a39cfb0SJung-uk Kim UINT8 Temp8; 10451a39cfb0SJung-uk Kim UINT16 Temp16; 10467cf3e94aSJung-uk Kim UINT32 Temp32; 1047313a0c13SJung-uk Kim UINT64 Value; 1048a371a5fdSJung-uk Kim const AH_TABLE *TableData; 1049d6dd1baeSJung-uk Kim const char *Name; 1050a9f12690SJung-uk Kim BOOLEAN LastOutputBlankLine = FALSE; 1051fe0f0bbbSJung-uk Kim ACPI_STATUS Status; 1052d6dd1baeSJung-uk Kim char RepairedName[8]; 10531a39cfb0SJung-uk Kim 10541a39cfb0SJung-uk Kim 10551a39cfb0SJung-uk Kim if (!Info) 10561a39cfb0SJung-uk Kim { 10571a39cfb0SJung-uk Kim AcpiOsPrintf ("Display not implemented\n"); 1058a9f12690SJung-uk Kim return (AE_NOT_IMPLEMENTED); 10591a39cfb0SJung-uk Kim } 10601a39cfb0SJung-uk Kim 10611a39cfb0SJung-uk Kim /* Walk entire Info table; Null name terminates */ 10621a39cfb0SJung-uk Kim 10631a39cfb0SJung-uk Kim for (; Info->Name; Info++) 10641a39cfb0SJung-uk Kim { 10651a39cfb0SJung-uk Kim /* 10661a39cfb0SJung-uk Kim * Target points to the field within the ACPI Table. CurrentOffset is 10671a39cfb0SJung-uk Kim * the offset of the field from the start of the main table. 10681a39cfb0SJung-uk Kim */ 10691a39cfb0SJung-uk Kim Target = ACPI_ADD_PTR (UINT8, Table, Info->Offset); 10701a39cfb0SJung-uk Kim CurrentOffset = TableOffset + Info->Offset; 10711a39cfb0SJung-uk Kim 1072a371a5fdSJung-uk Kim /* Check for beyond subtable end or (worse) beyond EOT */ 10731a39cfb0SJung-uk Kim 1074ab71bbb7SJung-uk Kim if (SubtableLength && (Info->Offset > SubtableLength)) 10751a39cfb0SJung-uk Kim { 10767cf3e94aSJung-uk Kim AcpiOsPrintf ( 10771970d693SJung-uk Kim "/**** ACPI subtable terminates early (Len %u) - " 10781970d693SJung-uk Kim "may be older version (dump table) */\n", SubtableLength); 1079a371a5fdSJung-uk Kim 1080a371a5fdSJung-uk Kim /* Move on to next subtable */ 1081a371a5fdSJung-uk Kim 1082a371a5fdSJung-uk Kim return (AE_OK); 1083a371a5fdSJung-uk Kim } 1084a371a5fdSJung-uk Kim 1085a371a5fdSJung-uk Kim if (CurrentOffset >= TableLength) 1086a371a5fdSJung-uk Kim { 1087a371a5fdSJung-uk Kim AcpiOsPrintf ( 1088a371a5fdSJung-uk Kim "/**** ACPI table terminates " 10899a4bc520SJung-uk Kim "in the middle of a data structure! (dump table)\n" 10909a4bc520SJung-uk Kim "CurrentOffset: %X, TableLength: %X ***/", CurrentOffset, TableLength); 1091a9f12690SJung-uk Kim return (AE_BAD_DATA); 10921a39cfb0SJung-uk Kim } 10931a39cfb0SJung-uk Kim 10941a39cfb0SJung-uk Kim /* Generate the byte length for this field */ 10951a39cfb0SJung-uk Kim 10961a39cfb0SJung-uk Kim switch (Info->Opcode) 10971a39cfb0SJung-uk Kim { 10981a39cfb0SJung-uk Kim case ACPI_DMT_UINT8: 10991a39cfb0SJung-uk Kim case ACPI_DMT_CHKSUM: 11001a39cfb0SJung-uk Kim case ACPI_DMT_SPACEID: 11015a77b11bSJung-uk Kim case ACPI_DMT_ACCWIDTH: 1102cfd1ed46SJung-uk Kim case ACPI_DMT_CEDT: 1103d6dd1baeSJung-uk Kim case ACPI_DMT_IVRS: 11041970d693SJung-uk Kim case ACPI_DMT_IVRS_DE: 1105313a0c13SJung-uk Kim case ACPI_DMT_GTDT: 11061a39cfb0SJung-uk Kim case ACPI_DMT_MADT: 1107722b1667SJung-uk Kim case ACPI_DMT_MPAM_LOCATOR: 1108313a0c13SJung-uk Kim case ACPI_DMT_PCCT: 11093f0275a0SJung-uk Kim case ACPI_DMT_PMTT: 1110af051161SJung-uk Kim case ACPI_DMT_PPTT: 11111970d693SJung-uk Kim case ACPI_DMT_RGRT: 111267d9aa44SJung-uk Kim case ACPI_DMT_SDEV: 11131a39cfb0SJung-uk Kim case ACPI_DMT_SRAT: 111497c0b5abSJung-uk Kim case ACPI_DMT_AEST: 111597c0b5abSJung-uk Kim case ACPI_DMT_AEST_RES: 111697c0b5abSJung-uk Kim case ACPI_DMT_AEST_XFACE: 111797c0b5abSJung-uk Kim case ACPI_DMT_AEST_XRUPT: 1118a9f12690SJung-uk Kim case ACPI_DMT_ASF: 11199a4bc520SJung-uk Kim case ACPI_DMT_CDAT: 1120a9f12690SJung-uk Kim case ACPI_DMT_HESTNTYP: 1121a9f12690SJung-uk Kim case ACPI_DMT_FADTPM: 1122a88e22b7SJung-uk Kim case ACPI_DMT_EINJACT: 1123a88e22b7SJung-uk Kim case ACPI_DMT_EINJINST: 1124a88e22b7SJung-uk Kim case ACPI_DMT_ERSTACT: 1125a88e22b7SJung-uk Kim case ACPI_DMT_ERSTINST: 1126313a0c13SJung-uk Kim case ACPI_DMT_DMAR_SCOPE: 1127cfd1ed46SJung-uk Kim case ACPI_DMT_VIOT: 1128a9d8d09cSJung-uk Kim 11291a39cfb0SJung-uk Kim ByteLength = 1; 11301a39cfb0SJung-uk Kim break; 1131a9d8d09cSJung-uk Kim 1132722b1667SJung-uk Kim case ACPI_DMT_ASPT: 11331a39cfb0SJung-uk Kim case ACPI_DMT_UINT16: 11341a39cfb0SJung-uk Kim case ACPI_DMT_DMAR: 1135a9f12690SJung-uk Kim case ACPI_DMT_HEST: 1136af051161SJung-uk Kim case ACPI_DMT_HMAT: 1137a371a5fdSJung-uk Kim case ACPI_DMT_NFIT: 1138cfd1ed46SJung-uk Kim case ACPI_DMT_PHAT: 113907c64d74SJung-uk Kim case ACPI_DMT_RHCT: 1140a9d8d09cSJung-uk Kim 11411a39cfb0SJung-uk Kim ByteLength = 2; 11421a39cfb0SJung-uk Kim break; 1143a9d8d09cSJung-uk Kim 11441a39cfb0SJung-uk Kim case ACPI_DMT_UINT24: 1145a9d8d09cSJung-uk Kim 11461a39cfb0SJung-uk Kim ByteLength = 3; 11471a39cfb0SJung-uk Kim break; 1148a9d8d09cSJung-uk Kim 11491a39cfb0SJung-uk Kim case ACPI_DMT_UINT32: 115097c0b5abSJung-uk Kim case ACPI_DMT_AEST_CACHE: 115197c0b5abSJung-uk Kim case ACPI_DMT_AEST_GIC: 11521a39cfb0SJung-uk Kim case ACPI_DMT_NAME4: 11531a39cfb0SJung-uk Kim case ACPI_DMT_SIG: 1154313a0c13SJung-uk Kim case ACPI_DMT_LPIT: 115567d9aa44SJung-uk Kim case ACPI_DMT_TPM2: 1156a9d8d09cSJung-uk Kim 11571a39cfb0SJung-uk Kim ByteLength = 4; 11581a39cfb0SJung-uk Kim break; 1159a9d8d09cSJung-uk Kim 11603f0275a0SJung-uk Kim case ACPI_DMT_UINT40: 1161a9d8d09cSJung-uk Kim 11623f0275a0SJung-uk Kim ByteLength = 5; 11633f0275a0SJung-uk Kim break; 1164a9d8d09cSJung-uk Kim 11653f0275a0SJung-uk Kim case ACPI_DMT_UINT48: 11661a39cfb0SJung-uk Kim case ACPI_DMT_NAME6: 1167a9d8d09cSJung-uk Kim 11681a39cfb0SJung-uk Kim ByteLength = 6; 11691a39cfb0SJung-uk Kim break; 1170a9d8d09cSJung-uk Kim 11711a39cfb0SJung-uk Kim case ACPI_DMT_UINT56: 11720b94ba42SJung-uk Kim case ACPI_DMT_BUF7: 1173a9d8d09cSJung-uk Kim 11741a39cfb0SJung-uk Kim ByteLength = 7; 11751a39cfb0SJung-uk Kim break; 1176a9d8d09cSJung-uk Kim 11771a39cfb0SJung-uk Kim case ACPI_DMT_UINT64: 11781a39cfb0SJung-uk Kim case ACPI_DMT_NAME8: 1179a9d8d09cSJung-uk Kim 11801a39cfb0SJung-uk Kim ByteLength = 8; 11811a39cfb0SJung-uk Kim break; 1182a9d8d09cSJung-uk Kim 11838d744e47SJung-uk Kim case ACPI_DMT_BUF10: 11848d744e47SJung-uk Kim 11858d744e47SJung-uk Kim ByteLength = 10; 11868d744e47SJung-uk Kim break; 11878d744e47SJung-uk Kim 1188493deb39SJung-uk Kim case ACPI_DMT_BUF12: 1189493deb39SJung-uk Kim 1190493deb39SJung-uk Kim ByteLength = 12; 1191493deb39SJung-uk Kim break; 1192493deb39SJung-uk Kim 1193d6dd1baeSJung-uk Kim case ACPI_DMT_BUF16: 1194d244b227SJung-uk Kim case ACPI_DMT_UUID: 1195a9d8d09cSJung-uk Kim 1196d6dd1baeSJung-uk Kim ByteLength = 16; 1197d6dd1baeSJung-uk Kim break; 1198a9d8d09cSJung-uk Kim 11991b7a2680SJung-uk Kim case ACPI_DMT_BUF18: 12001b7a2680SJung-uk Kim 12011b7a2680SJung-uk Kim ByteLength = 18; 12021b7a2680SJung-uk Kim break; 12031b7a2680SJung-uk Kim 1204*92f570c3SJung-uk Kim case ACPI_DMT_BUF32: 1205*92f570c3SJung-uk Kim 1206*92f570c3SJung-uk Kim ByteLength = 32; 1207*92f570c3SJung-uk Kim break; 1208*92f570c3SJung-uk Kim 1209*92f570c3SJung-uk Kim case ACPI_DMT_BUF112: 1210*92f570c3SJung-uk Kim 1211*92f570c3SJung-uk Kim ByteLength = 112; 1212*92f570c3SJung-uk Kim break; 1213*92f570c3SJung-uk Kim 1214dcbce41eSJung-uk Kim case ACPI_DMT_BUF128: 1215a9d8d09cSJung-uk Kim 1216dcbce41eSJung-uk Kim ByteLength = 128; 1217dcbce41eSJung-uk Kim break; 1218a9d8d09cSJung-uk Kim 121997c0b5abSJung-uk Kim case ACPI_DMT_WPBT_UNICODE: 122097c0b5abSJung-uk Kim 122197c0b5abSJung-uk Kim ByteLength = SubtableLength; 122297c0b5abSJung-uk Kim CurrentOffset = sizeof (ACPI_TABLE_WPBT); 122397c0b5abSJung-uk Kim break; 122497c0b5abSJung-uk Kim 1225a371a5fdSJung-uk Kim case ACPI_DMT_UNICODE: 12267cf3e94aSJung-uk Kim case ACPI_DMT_BUFFER: 12277cf3e94aSJung-uk Kim case ACPI_DMT_RAW_BUFFER: 12287cf3e94aSJung-uk Kim 12297cf3e94aSJung-uk Kim ByteLength = SubtableLength; 12307cf3e94aSJung-uk Kim break; 12317cf3e94aSJung-uk Kim 1232cfd1ed46SJung-uk Kim case ACPI_DMT_PMTT_VENDOR: 1233cfd1ed46SJung-uk Kim /* 1234cfd1ed46SJung-uk Kim * Calculate the length of the vendor data for the PMTT table: 1235cfd1ed46SJung-uk Kim * Length = (Current Subtable ptr + Subtable length) - 1236cfd1ed46SJung-uk Kim * Start of the vendor data (Target) 1237cfd1ed46SJung-uk Kim */ 1238cfd1ed46SJung-uk Kim ByteLength = ((ACPI_CAST_PTR (char, Table) + 1239cfd1ed46SJung-uk Kim (ACPI_CAST_PTR (ACPI_PMTT_HEADER, Table)->Length)) - 1240cfd1ed46SJung-uk Kim ACPI_CAST_PTR (char, Target)); 1241cfd1ed46SJung-uk Kim break; 1242cfd1ed46SJung-uk Kim 12431a39cfb0SJung-uk Kim case ACPI_DMT_STRING: 1244a9d8d09cSJung-uk Kim 12455ef50723SJung-uk Kim ByteLength = strlen (ACPI_CAST_PTR (char, Target)) + 1; 12461a39cfb0SJung-uk Kim break; 1247a9d8d09cSJung-uk Kim 12481970d693SJung-uk Kim case ACPI_DMT_IVRS_UNTERMINATED_STRING: 12491970d693SJung-uk Kim 12501970d693SJung-uk Kim ByteLength = ((ACPI_CAST_PTR (ACPI_IVRS_DEVICE_HID, Target) -1)->UidLength); 12511970d693SJung-uk Kim break; 12521970d693SJung-uk Kim 12531a39cfb0SJung-uk Kim case ACPI_DMT_GAS: 1254a9d8d09cSJung-uk Kim 1255a9f12690SJung-uk Kim if (!LastOutputBlankLine) 1256a9f12690SJung-uk Kim { 12571a39cfb0SJung-uk Kim AcpiOsPrintf ("\n"); 1258a9f12690SJung-uk Kim LastOutputBlankLine = TRUE; 1259a9f12690SJung-uk Kim } 1260f8146b88SJung-uk Kim 12611a39cfb0SJung-uk Kim ByteLength = sizeof (ACPI_GENERIC_ADDRESS); 12621a39cfb0SJung-uk Kim break; 1263a9d8d09cSJung-uk Kim 1264a9f12690SJung-uk Kim case ACPI_DMT_HESTNTFY: 1265a9d8d09cSJung-uk Kim 1266a9f12690SJung-uk Kim if (!LastOutputBlankLine) 1267a9f12690SJung-uk Kim { 1268a9f12690SJung-uk Kim AcpiOsPrintf ("\n"); 1269a9f12690SJung-uk Kim LastOutputBlankLine = TRUE; 1270a9f12690SJung-uk Kim } 1271f8146b88SJung-uk Kim 1272a9f12690SJung-uk Kim ByteLength = sizeof (ACPI_HEST_NOTIFY); 1273a9f12690SJung-uk Kim break; 1274a9d8d09cSJung-uk Kim 1275a371a5fdSJung-uk Kim case ACPI_DMT_IORTMEM: 1276a371a5fdSJung-uk Kim 1277a371a5fdSJung-uk Kim if (!LastOutputBlankLine) 1278a371a5fdSJung-uk Kim { 1279a371a5fdSJung-uk Kim LastOutputBlankLine = FALSE; 1280a371a5fdSJung-uk Kim } 1281f8146b88SJung-uk Kim 1282a371a5fdSJung-uk Kim ByteLength = sizeof (ACPI_IORT_MEMORY_ACCESS); 1283a371a5fdSJung-uk Kim break; 1284a371a5fdSJung-uk Kim 12851a39cfb0SJung-uk Kim default: 1286a9d8d09cSJung-uk Kim 12871a39cfb0SJung-uk Kim ByteLength = 0; 12881a39cfb0SJung-uk Kim break; 12891a39cfb0SJung-uk Kim } 12901a39cfb0SJung-uk Kim 1291a371a5fdSJung-uk Kim /* Check if we are beyond a subtable, or (worse) beyond EOT */ 1292a371a5fdSJung-uk Kim 1293a9f12690SJung-uk Kim if (CurrentOffset + ByteLength > TableLength) 1294a9f12690SJung-uk Kim { 1295a371a5fdSJung-uk Kim if (SubtableLength) 1296a371a5fdSJung-uk Kim { 12977cf3e94aSJung-uk Kim AcpiOsPrintf ( 1298a371a5fdSJung-uk Kim "/**** ACPI subtable terminates early - " 1299a371a5fdSJung-uk Kim "may be older version (dump table) */\n"); 1300a371a5fdSJung-uk Kim 1301a371a5fdSJung-uk Kim /* Move on to next subtable */ 1302a371a5fdSJung-uk Kim 1303a371a5fdSJung-uk Kim return (AE_OK); 1304a371a5fdSJung-uk Kim } 1305a371a5fdSJung-uk Kim 1306a371a5fdSJung-uk Kim AcpiOsPrintf ( 1307a371a5fdSJung-uk Kim "/**** ACPI table terminates " 1308a371a5fdSJung-uk Kim "in the middle of a data structure! */\n"); 1309a9f12690SJung-uk Kim return (AE_BAD_DATA); 1310a9f12690SJung-uk Kim } 1311a9f12690SJung-uk Kim 13123f0275a0SJung-uk Kim if (Info->Opcode == ACPI_DMT_EXTRA_TEXT) 13133f0275a0SJung-uk Kim { 13143f0275a0SJung-uk Kim AcpiOsPrintf ("%s", Info->Name); 13153f0275a0SJung-uk Kim continue; 13163f0275a0SJung-uk Kim } 13173f0275a0SJung-uk Kim 13181a39cfb0SJung-uk Kim /* Start a new line and decode the opcode */ 13191a39cfb0SJung-uk Kim 13201a39cfb0SJung-uk Kim AcpiDmLineHeader (CurrentOffset, ByteLength, Info->Name); 13211a39cfb0SJung-uk Kim 13221a39cfb0SJung-uk Kim switch (Info->Opcode) 13231a39cfb0SJung-uk Kim { 13241a39cfb0SJung-uk Kim /* Single-bit Flag fields. Note: Opcode is the bit position */ 13251a39cfb0SJung-uk Kim 13261a39cfb0SJung-uk Kim case ACPI_DMT_FLAG0: 13271a39cfb0SJung-uk Kim case ACPI_DMT_FLAG1: 13281a39cfb0SJung-uk Kim case ACPI_DMT_FLAG2: 13291a39cfb0SJung-uk Kim case ACPI_DMT_FLAG3: 13301a39cfb0SJung-uk Kim case ACPI_DMT_FLAG4: 13311a39cfb0SJung-uk Kim case ACPI_DMT_FLAG5: 13321a39cfb0SJung-uk Kim case ACPI_DMT_FLAG6: 13331a39cfb0SJung-uk Kim case ACPI_DMT_FLAG7: 13341a39cfb0SJung-uk Kim 13351a39cfb0SJung-uk Kim AcpiOsPrintf ("%1.1X\n", (*Target >> Info->Opcode) & 0x01); 13361a39cfb0SJung-uk Kim break; 13371a39cfb0SJung-uk Kim 13381a39cfb0SJung-uk Kim /* 2-bit Flag fields */ 13391a39cfb0SJung-uk Kim 13401a39cfb0SJung-uk Kim case ACPI_DMT_FLAGS0: 13411a39cfb0SJung-uk Kim 13421a39cfb0SJung-uk Kim AcpiOsPrintf ("%1.1X\n", *Target & 0x03); 13431a39cfb0SJung-uk Kim break; 13441a39cfb0SJung-uk Kim 13453f0275a0SJung-uk Kim case ACPI_DMT_FLAGS1: 13463f0275a0SJung-uk Kim 13473f0275a0SJung-uk Kim AcpiOsPrintf ("%1.1X\n", (*Target >> 1) & 0x03); 13483f0275a0SJung-uk Kim break; 13493f0275a0SJung-uk Kim 13501a39cfb0SJung-uk Kim case ACPI_DMT_FLAGS2: 13511a39cfb0SJung-uk Kim 13521a39cfb0SJung-uk Kim AcpiOsPrintf ("%1.1X\n", (*Target >> 2) & 0x03); 13531a39cfb0SJung-uk Kim break; 13541a39cfb0SJung-uk Kim 1355ab71bbb7SJung-uk Kim case ACPI_DMT_FLAGS8_2: 1356ab71bbb7SJung-uk Kim 1357ab71bbb7SJung-uk Kim AcpiOsPrintf ("%2.2X\n", (*Target >> 2) & 0xFF); 1358ab71bbb7SJung-uk Kim break; 1359ab71bbb7SJung-uk Kim 13603f0275a0SJung-uk Kim case ACPI_DMT_FLAGS4: 13613f0275a0SJung-uk Kim 13623f0275a0SJung-uk Kim AcpiOsPrintf ("%1.1X\n", (*Target >> 4) & 0x03); 13633f0275a0SJung-uk Kim break; 13643f0275a0SJung-uk Kim 1365af051161SJung-uk Kim case ACPI_DMT_FLAGS4_0: 1366af051161SJung-uk Kim 1367af051161SJung-uk Kim AcpiOsPrintf ("%1.1X\n", (*(UINT32 *)Target) & 0x0F); 1368af051161SJung-uk Kim break; 1369af051161SJung-uk Kim 1370af051161SJung-uk Kim case ACPI_DMT_FLAGS4_4: 1371af051161SJung-uk Kim 1372af051161SJung-uk Kim AcpiOsPrintf ("%1.1X\n", (*(UINT32 *)Target >> 4) & 0x0F); 1373af051161SJung-uk Kim break; 1374af051161SJung-uk Kim 1375af051161SJung-uk Kim case ACPI_DMT_FLAGS4_8: 1376af051161SJung-uk Kim 1377af051161SJung-uk Kim AcpiOsPrintf ("%1.1X\n", (*(UINT32 *)Target >> 8) & 0x0F); 1378af051161SJung-uk Kim break; 1379af051161SJung-uk Kim 1380af051161SJung-uk Kim case ACPI_DMT_FLAGS4_12: 1381af051161SJung-uk Kim 1382af051161SJung-uk Kim AcpiOsPrintf ("%1.1X\n", (*(UINT32 *)Target >> 12) & 0x0F); 1383af051161SJung-uk Kim break; 1384af051161SJung-uk Kim 1385af051161SJung-uk Kim case ACPI_DMT_FLAGS16_16: 1386af051161SJung-uk Kim 1387af051161SJung-uk Kim AcpiOsPrintf ("%4.4X\n", (*(UINT32 *)Target >> 16) & 0xFFFF); 1388af051161SJung-uk Kim break; 1389af051161SJung-uk Kim 13903f0275a0SJung-uk Kim /* Integer Data Types */ 13911a39cfb0SJung-uk Kim 13921a39cfb0SJung-uk Kim case ACPI_DMT_UINT8: 13931a39cfb0SJung-uk Kim case ACPI_DMT_UINT16: 13941a39cfb0SJung-uk Kim case ACPI_DMT_UINT24: 13951a39cfb0SJung-uk Kim case ACPI_DMT_UINT32: 13963f0275a0SJung-uk Kim case ACPI_DMT_UINT40: 13973f0275a0SJung-uk Kim case ACPI_DMT_UINT48: 13981a39cfb0SJung-uk Kim case ACPI_DMT_UINT56: 13993f0275a0SJung-uk Kim case ACPI_DMT_UINT64: 14003f0275a0SJung-uk Kim /* 14013f0275a0SJung-uk Kim * Dump bytes - high byte first, low byte last. 14023f0275a0SJung-uk Kim * Note: All ACPI tables are little-endian. 14033f0275a0SJung-uk Kim */ 1404313a0c13SJung-uk Kim Value = 0; 14053f0275a0SJung-uk Kim for (Temp8 = (UINT8) ByteLength; Temp8 > 0; Temp8--) 1406a9f12690SJung-uk Kim { 14073f0275a0SJung-uk Kim AcpiOsPrintf ("%2.2X", Target[Temp8 - 1]); 1408313a0c13SJung-uk Kim Value |= Target[Temp8 - 1]; 1409313a0c13SJung-uk Kim Value <<= 8; 1410a9f12690SJung-uk Kim } 1411313a0c13SJung-uk Kim 1412313a0c13SJung-uk Kim if (!Value && (Info->Flags & DT_DESCRIBES_OPTIONAL)) 1413313a0c13SJung-uk Kim { 1414313a0c13SJung-uk Kim AcpiOsPrintf (" [Optional field not present]"); 1415313a0c13SJung-uk Kim } 1416313a0c13SJung-uk Kim 1417a9f12690SJung-uk Kim AcpiOsPrintf ("\n"); 14181a39cfb0SJung-uk Kim break; 14191a39cfb0SJung-uk Kim 14200b94ba42SJung-uk Kim case ACPI_DMT_BUF7: 14218d744e47SJung-uk Kim case ACPI_DMT_BUF10: 1422493deb39SJung-uk Kim case ACPI_DMT_BUF12: 1423d6dd1baeSJung-uk Kim case ACPI_DMT_BUF16: 14241b7a2680SJung-uk Kim case ACPI_DMT_BUF18: 1425*92f570c3SJung-uk Kim case ACPI_DMT_BUF32: 1426*92f570c3SJung-uk Kim case ACPI_DMT_BUF112: 1427dcbce41eSJung-uk Kim case ACPI_DMT_BUF128: 14280b94ba42SJung-uk Kim /* 14290b94ba42SJung-uk Kim * Buffer: Size depends on the opcode and was set above. 14300b94ba42SJung-uk Kim * Each hex byte is separated with a space. 1431d052a1ccSJung-uk Kim * Multiple lines are separated by line continuation char. 14320b94ba42SJung-uk Kim */ 1433dcbce41eSJung-uk Kim for (Temp16 = 0; Temp16 < ByteLength; Temp16++) 1434d6dd1baeSJung-uk Kim { 1435dcbce41eSJung-uk Kim AcpiOsPrintf ("%2.2X", Target[Temp16]); 1436dcbce41eSJung-uk Kim if ((UINT32) (Temp16 + 1) < ByteLength) 1437dcbce41eSJung-uk Kim { 1438dcbce41eSJung-uk Kim if ((Temp16 > 0) && (!((Temp16+1) % 16))) 1439dcbce41eSJung-uk Kim { 1440d052a1ccSJung-uk Kim AcpiOsPrintf (" \\\n"); /* Line continuation */ 1441dcbce41eSJung-uk Kim AcpiDmLineHeader (0, 0, NULL); 1442dcbce41eSJung-uk Kim } 1443dcbce41eSJung-uk Kim else 1444a88e22b7SJung-uk Kim { 14450b94ba42SJung-uk Kim AcpiOsPrintf (" "); 1446a88e22b7SJung-uk Kim } 1447d6dd1baeSJung-uk Kim } 1448dcbce41eSJung-uk Kim } 1449f8146b88SJung-uk Kim 1450d6dd1baeSJung-uk Kim AcpiOsPrintf ("\n"); 1451d6dd1baeSJung-uk Kim break; 1452d6dd1baeSJung-uk Kim 1453d244b227SJung-uk Kim case ACPI_DMT_UUID: 1454d244b227SJung-uk Kim 1455d244b227SJung-uk Kim /* Convert 16-byte UUID buffer to 36-byte formatted UUID string */ 1456d244b227SJung-uk Kim 14571970d693SJung-uk Kim (void) AcpiUtConvertUuidToString ((char *) Target, AslGbl_MsgBuffer); 1458d244b227SJung-uk Kim 14596f1f1a63SJung-uk Kim AcpiOsPrintf ("%s\n", AslGbl_MsgBuffer); 1460d244b227SJung-uk Kim break; 1461d244b227SJung-uk Kim 14621a39cfb0SJung-uk Kim case ACPI_DMT_STRING: 14631a39cfb0SJung-uk Kim 1464d6dd1baeSJung-uk Kim AcpiOsPrintf ("\"%s\"\n", ACPI_CAST_PTR (char, Target)); 14651a39cfb0SJung-uk Kim break; 14661a39cfb0SJung-uk Kim 14671970d693SJung-uk Kim case ACPI_DMT_IVRS_UNTERMINATED_STRING: 14681970d693SJung-uk Kim 14691970d693SJung-uk Kim AcpiOsPrintf ("\"%.*s\"\n", ByteLength, ACPI_CAST_PTR (char, Target)); 14701970d693SJung-uk Kim break; 14711970d693SJung-uk Kim 14721a39cfb0SJung-uk Kim /* Fixed length ASCII name fields */ 14731a39cfb0SJung-uk Kim 14741a39cfb0SJung-uk Kim case ACPI_DMT_SIG: 14751a39cfb0SJung-uk Kim 1476f8146b88SJung-uk Kim AcpiUtCheckAndRepairAscii (Target, RepairedName, 4); 1477d6dd1baeSJung-uk Kim AcpiOsPrintf ("\"%.4s\" ", RepairedName); 1478f8146b88SJung-uk Kim 1479a371a5fdSJung-uk Kim TableData = AcpiAhGetTableInfo (ACPI_CAST_PTR (char, Target)); 14801a39cfb0SJung-uk Kim if (TableData) 14811a39cfb0SJung-uk Kim { 1482a371a5fdSJung-uk Kim AcpiOsPrintf (STRING_FORMAT, TableData->Description); 14831a39cfb0SJung-uk Kim } 1484d052a1ccSJung-uk Kim else 1485d052a1ccSJung-uk Kim { 14861a39cfb0SJung-uk Kim AcpiOsPrintf ("\n"); 1487d052a1ccSJung-uk Kim } 14881a39cfb0SJung-uk Kim break; 14891a39cfb0SJung-uk Kim 14901a39cfb0SJung-uk Kim case ACPI_DMT_NAME4: 14911a39cfb0SJung-uk Kim 1492f8146b88SJung-uk Kim AcpiUtCheckAndRepairAscii (Target, RepairedName, 4); 1493d6dd1baeSJung-uk Kim AcpiOsPrintf ("\"%.4s\"\n", RepairedName); 14941a39cfb0SJung-uk Kim break; 14951a39cfb0SJung-uk Kim 14961a39cfb0SJung-uk Kim case ACPI_DMT_NAME6: 14971a39cfb0SJung-uk Kim 1498f8146b88SJung-uk Kim AcpiUtCheckAndRepairAscii (Target, RepairedName, 6); 1499d6dd1baeSJung-uk Kim AcpiOsPrintf ("\"%.6s\"\n", RepairedName); 15001a39cfb0SJung-uk Kim break; 15011a39cfb0SJung-uk Kim 15021a39cfb0SJung-uk Kim case ACPI_DMT_NAME8: 15031a39cfb0SJung-uk Kim 1504f8146b88SJung-uk Kim AcpiUtCheckAndRepairAscii (Target, RepairedName, 8); 1505d6dd1baeSJung-uk Kim AcpiOsPrintf ("\"%.8s\"\n", RepairedName); 15061a39cfb0SJung-uk Kim break; 15071a39cfb0SJung-uk Kim 15081a39cfb0SJung-uk Kim /* Special Data Types */ 15091a39cfb0SJung-uk Kim 15101a39cfb0SJung-uk Kim case ACPI_DMT_CHKSUM: 15111a39cfb0SJung-uk Kim 15121a39cfb0SJung-uk Kim /* Checksum, display and validate */ 15131a39cfb0SJung-uk Kim 15141a39cfb0SJung-uk Kim AcpiOsPrintf ("%2.2X", *Target); 15159a4bc520SJung-uk Kim Temp8 = AcpiUtGenerateChecksum (Table, 1516a88e22b7SJung-uk Kim ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Length, 1517a88e22b7SJung-uk Kim ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Checksum); 15187cf3e94aSJung-uk Kim 15191a39cfb0SJung-uk Kim if (Temp8 != ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Checksum) 15201a39cfb0SJung-uk Kim { 15211a39cfb0SJung-uk Kim AcpiOsPrintf ( 15221a39cfb0SJung-uk Kim " /* Incorrect checksum, should be %2.2X */", Temp8); 15231a39cfb0SJung-uk Kim } 1524f8146b88SJung-uk Kim 15251a39cfb0SJung-uk Kim AcpiOsPrintf ("\n"); 15261a39cfb0SJung-uk Kim break; 15271a39cfb0SJung-uk Kim 15281a39cfb0SJung-uk Kim case ACPI_DMT_SPACEID: 15291a39cfb0SJung-uk Kim 15301a39cfb0SJung-uk Kim /* Address Space ID */ 15311a39cfb0SJung-uk Kim 1532d052a1ccSJung-uk Kim AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiUtGetRegionName (*Target)); 15331a39cfb0SJung-uk Kim break; 15341a39cfb0SJung-uk Kim 15355a77b11bSJung-uk Kim case ACPI_DMT_ACCWIDTH: 15365a77b11bSJung-uk Kim 15375a77b11bSJung-uk Kim /* Encoded Access Width */ 15385a77b11bSJung-uk Kim 15395a77b11bSJung-uk Kim Temp8 = *Target; 15405a77b11bSJung-uk Kim if (Temp8 > ACPI_GAS_WIDTH_RESERVED) 15415a77b11bSJung-uk Kim { 15425a77b11bSJung-uk Kim Temp8 = ACPI_GAS_WIDTH_RESERVED; 15435a77b11bSJung-uk Kim } 15445a77b11bSJung-uk Kim 15457cf3e94aSJung-uk Kim AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmGasAccessWidth[Temp8]); 15465a77b11bSJung-uk Kim break; 15475a77b11bSJung-uk Kim 15481a39cfb0SJung-uk Kim case ACPI_DMT_GAS: 15491a39cfb0SJung-uk Kim 15501a39cfb0SJung-uk Kim /* Generic Address Structure */ 15511a39cfb0SJung-uk Kim 1552d052a1ccSJung-uk Kim AcpiOsPrintf (STRING_FORMAT, "Generic Address Structure"); 1553fe0f0bbbSJung-uk Kim Status = AcpiDmDumpTable (TableLength, CurrentOffset, Target, 1554d6dd1baeSJung-uk Kim sizeof (ACPI_GENERIC_ADDRESS), AcpiDmTableInfoGas); 1555fe0f0bbbSJung-uk Kim if (ACPI_FAILURE (Status)) 1556fe0f0bbbSJung-uk Kim { 1557fe0f0bbbSJung-uk Kim return (Status); 1558fe0f0bbbSJung-uk Kim } 1559fe0f0bbbSJung-uk Kim 1560a9f12690SJung-uk Kim AcpiOsPrintf ("\n"); 1561a9f12690SJung-uk Kim LastOutputBlankLine = TRUE; 1562a9f12690SJung-uk Kim break; 1563a9f12690SJung-uk Kim 156497c0b5abSJung-uk Kim case ACPI_DMT_AEST: 156597c0b5abSJung-uk Kim 156697c0b5abSJung-uk Kim /* AEST subtable types */ 156797c0b5abSJung-uk Kim 156897c0b5abSJung-uk Kim Temp8 = *Target; 156997c0b5abSJung-uk Kim if (Temp8 > ACPI_AEST_NODE_TYPE_RESERVED) 157097c0b5abSJung-uk Kim { 157197c0b5abSJung-uk Kim Temp8 = ACPI_AEST_NODE_TYPE_RESERVED; 157297c0b5abSJung-uk Kim } 157397c0b5abSJung-uk Kim 157497c0b5abSJung-uk Kim AcpiOsPrintf (UINT8_FORMAT, *Target, 157597c0b5abSJung-uk Kim AcpiDmAestSubnames[Temp8]); 157697c0b5abSJung-uk Kim break; 157797c0b5abSJung-uk Kim 157897c0b5abSJung-uk Kim case ACPI_DMT_AEST_CACHE: 157997c0b5abSJung-uk Kim 158097c0b5abSJung-uk Kim /* AEST cache resource subtable */ 158197c0b5abSJung-uk Kim 158297c0b5abSJung-uk Kim Temp32 = *Target; 158397c0b5abSJung-uk Kim if (Temp32 > ACPI_AEST_CACHE_RESERVED) 158497c0b5abSJung-uk Kim { 158597c0b5abSJung-uk Kim Temp32 = ACPI_AEST_CACHE_RESERVED; 158697c0b5abSJung-uk Kim } 158797c0b5abSJung-uk Kim 158897c0b5abSJung-uk Kim AcpiOsPrintf (UINT32_FORMAT, *Target, 158997c0b5abSJung-uk Kim AcpiDmAestCacheNames[Temp32]); 159097c0b5abSJung-uk Kim break; 159197c0b5abSJung-uk Kim 159297c0b5abSJung-uk Kim case ACPI_DMT_AEST_GIC: 159397c0b5abSJung-uk Kim 159497c0b5abSJung-uk Kim /* AEST GIC error subtable */ 159597c0b5abSJung-uk Kim 159697c0b5abSJung-uk Kim Temp32 = *Target; 159797c0b5abSJung-uk Kim if (Temp32 > ACPI_AEST_GIC_RESERVED) 159897c0b5abSJung-uk Kim { 159997c0b5abSJung-uk Kim Temp32 = ACPI_AEST_GIC_RESERVED; 160097c0b5abSJung-uk Kim } 160197c0b5abSJung-uk Kim 160297c0b5abSJung-uk Kim AcpiOsPrintf (UINT32_FORMAT, *Target, 160397c0b5abSJung-uk Kim AcpiDmAestGicNames[Temp32]); 160497c0b5abSJung-uk Kim break; 160597c0b5abSJung-uk Kim 160697c0b5abSJung-uk Kim case ACPI_DMT_AEST_RES: 160797c0b5abSJung-uk Kim 160897c0b5abSJung-uk Kim /* AEST resource type subtable */ 160997c0b5abSJung-uk Kim 161097c0b5abSJung-uk Kim Temp8 = *Target; 161197c0b5abSJung-uk Kim if (Temp8 > ACPI_AEST_RESOURCE_RESERVED) 161297c0b5abSJung-uk Kim { 161397c0b5abSJung-uk Kim Temp8 = ACPI_AEST_RESOURCE_RESERVED; 161497c0b5abSJung-uk Kim } 161597c0b5abSJung-uk Kim 161697c0b5abSJung-uk Kim AcpiOsPrintf (UINT8_FORMAT, *Target, 161797c0b5abSJung-uk Kim AcpiDmAestResourceNames[Temp8]); 161897c0b5abSJung-uk Kim break; 161997c0b5abSJung-uk Kim 162097c0b5abSJung-uk Kim case ACPI_DMT_AEST_XFACE: 162197c0b5abSJung-uk Kim 162297c0b5abSJung-uk Kim /* AEST interface structure types */ 162397c0b5abSJung-uk Kim 162497c0b5abSJung-uk Kim Temp8 = *Target; 162597c0b5abSJung-uk Kim if (Temp8 > ACPI_AEST_XFACE_RESERVED) 162697c0b5abSJung-uk Kim { 162797c0b5abSJung-uk Kim Temp8 = ACPI_AEST_XFACE_RESERVED; 162897c0b5abSJung-uk Kim } 162997c0b5abSJung-uk Kim 163097c0b5abSJung-uk Kim AcpiOsPrintf (UINT8_FORMAT, *Target, 163197c0b5abSJung-uk Kim AcpiDmAestXfaceNames[Temp8]); 163297c0b5abSJung-uk Kim break; 163397c0b5abSJung-uk Kim 163497c0b5abSJung-uk Kim case ACPI_DMT_AEST_XRUPT: 163597c0b5abSJung-uk Kim 163697c0b5abSJung-uk Kim /* AEST interrupt structure types */ 163797c0b5abSJung-uk Kim 163897c0b5abSJung-uk Kim Temp8 = *Target; 163997c0b5abSJung-uk Kim if (Temp8 > ACPI_AEST_XRUPT_RESERVED) 164097c0b5abSJung-uk Kim { 164197c0b5abSJung-uk Kim Temp8 = ACPI_AEST_XRUPT_RESERVED; 164297c0b5abSJung-uk Kim } 164397c0b5abSJung-uk Kim 164497c0b5abSJung-uk Kim AcpiOsPrintf (UINT8_FORMAT, *Target, 164597c0b5abSJung-uk Kim AcpiDmAestXruptNames[Temp8]); 164697c0b5abSJung-uk Kim break; 164797c0b5abSJung-uk Kim 1648722b1667SJung-uk Kim case ACPI_DMT_ASPT: 1649722b1667SJung-uk Kim /* ASPT subtable types */ 1650722b1667SJung-uk Kim Temp16 = ACPI_GET16(Target); 1651722b1667SJung-uk Kim if (Temp16 > ACPI_ASPT_TYPE_UNKNOWN) 1652722b1667SJung-uk Kim { 1653722b1667SJung-uk Kim Temp16 = ACPI_ASPT_TYPE_UNKNOWN; 1654722b1667SJung-uk Kim } 1655722b1667SJung-uk Kim 1656722b1667SJung-uk Kim AcpiOsPrintf(UINT16_FORMAT, Temp16, AcpiDmAsptSubnames[Temp16]); 1657722b1667SJung-uk Kim break; 1658722b1667SJung-uk Kim 1659a9f12690SJung-uk Kim case ACPI_DMT_ASF: 1660a9f12690SJung-uk Kim 1661a9f12690SJung-uk Kim /* ASF subtable types */ 1662a9f12690SJung-uk Kim 1663a9f12690SJung-uk Kim Temp16 = (UINT16) ((*Target) & 0x7F); /* Top bit can be zero or one */ 1664a9f12690SJung-uk Kim if (Temp16 > ACPI_ASF_TYPE_RESERVED) 1665a9f12690SJung-uk Kim { 1666a9f12690SJung-uk Kim Temp16 = ACPI_ASF_TYPE_RESERVED; 1667a9f12690SJung-uk Kim } 1668a9f12690SJung-uk Kim 1669d052a1ccSJung-uk Kim AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmAsfSubnames[Temp16]); 16701a39cfb0SJung-uk Kim break; 16711a39cfb0SJung-uk Kim 16729a4bc520SJung-uk Kim case ACPI_DMT_CDAT: 16739a4bc520SJung-uk Kim 16749a4bc520SJung-uk Kim /* CDAT subtable types */ 16759a4bc520SJung-uk Kim 16769a4bc520SJung-uk Kim Temp8 = *Target; 16779a4bc520SJung-uk Kim if (Temp8 > ACPI_CDAT_TYPE_RESERVED) 16789a4bc520SJung-uk Kim { 16799a4bc520SJung-uk Kim Temp8 = ACPI_CDAT_TYPE_RESERVED; 16809a4bc520SJung-uk Kim } 16819a4bc520SJung-uk Kim 16829a4bc520SJung-uk Kim AcpiOsPrintf (UINT8_FORMAT, *Target, 16839a4bc520SJung-uk Kim AcpiDmCdatSubnames[Temp8]); 16849a4bc520SJung-uk Kim break; 16859a4bc520SJung-uk Kim 1686cfd1ed46SJung-uk Kim case ACPI_DMT_CEDT: 1687cfd1ed46SJung-uk Kim 1688cfd1ed46SJung-uk Kim /* CEDT subtable types */ 1689cfd1ed46SJung-uk Kim 1690cfd1ed46SJung-uk Kim Temp8 = *Target; 1691cfd1ed46SJung-uk Kim if (Temp8 > ACPI_CEDT_TYPE_RESERVED) 1692cfd1ed46SJung-uk Kim { 1693cfd1ed46SJung-uk Kim Temp8 = ACPI_CEDT_TYPE_RESERVED; 1694cfd1ed46SJung-uk Kim } 1695cfd1ed46SJung-uk Kim 1696cfd1ed46SJung-uk Kim AcpiOsPrintf (UINT8_FORMAT, *Target, 1697cfd1ed46SJung-uk Kim AcpiDmCedtSubnames[Temp8]); 1698cfd1ed46SJung-uk Kim break; 1699cfd1ed46SJung-uk Kim 17001a39cfb0SJung-uk Kim case ACPI_DMT_DMAR: 17011a39cfb0SJung-uk Kim 17021a39cfb0SJung-uk Kim /* DMAR subtable types */ 17031a39cfb0SJung-uk Kim 1704a9f12690SJung-uk Kim Temp16 = ACPI_GET16 (Target); 17051a39cfb0SJung-uk Kim if (Temp16 > ACPI_DMAR_TYPE_RESERVED) 17061a39cfb0SJung-uk Kim { 17071a39cfb0SJung-uk Kim Temp16 = ACPI_DMAR_TYPE_RESERVED; 17081a39cfb0SJung-uk Kim } 17091a39cfb0SJung-uk Kim 17107cf3e94aSJung-uk Kim AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target), 17117cf3e94aSJung-uk Kim AcpiDmDmarSubnames[Temp16]); 17121a39cfb0SJung-uk Kim break; 17131a39cfb0SJung-uk Kim 1714313a0c13SJung-uk Kim case ACPI_DMT_DMAR_SCOPE: 1715313a0c13SJung-uk Kim 1716313a0c13SJung-uk Kim /* DMAR device scope types */ 1717313a0c13SJung-uk Kim 1718313a0c13SJung-uk Kim Temp8 = *Target; 1719313a0c13SJung-uk Kim if (Temp8 > ACPI_DMAR_SCOPE_TYPE_RESERVED) 1720313a0c13SJung-uk Kim { 1721313a0c13SJung-uk Kim Temp8 = ACPI_DMAR_SCOPE_TYPE_RESERVED; 1722313a0c13SJung-uk Kim } 1723313a0c13SJung-uk Kim 17247cf3e94aSJung-uk Kim AcpiOsPrintf (UINT8_FORMAT, *Target, 17257cf3e94aSJung-uk Kim AcpiDmDmarScope[Temp8]); 1726313a0c13SJung-uk Kim break; 1727313a0c13SJung-uk Kim 1728a88e22b7SJung-uk Kim case ACPI_DMT_EINJACT: 1729a88e22b7SJung-uk Kim 1730a88e22b7SJung-uk Kim /* EINJ Action types */ 1731a88e22b7SJung-uk Kim 1732a88e22b7SJung-uk Kim Temp8 = *Target; 1733a88e22b7SJung-uk Kim if (Temp8 > ACPI_EINJ_ACTION_RESERVED) 1734a88e22b7SJung-uk Kim { 1735a88e22b7SJung-uk Kim Temp8 = ACPI_EINJ_ACTION_RESERVED; 1736a88e22b7SJung-uk Kim } 1737a88e22b7SJung-uk Kim 17387cf3e94aSJung-uk Kim AcpiOsPrintf (UINT8_FORMAT, *Target, 17397cf3e94aSJung-uk Kim AcpiDmEinjActions[Temp8]); 1740a88e22b7SJung-uk Kim break; 1741a88e22b7SJung-uk Kim 1742a88e22b7SJung-uk Kim case ACPI_DMT_EINJINST: 1743a88e22b7SJung-uk Kim 1744a88e22b7SJung-uk Kim /* EINJ Instruction types */ 1745a88e22b7SJung-uk Kim 1746a88e22b7SJung-uk Kim Temp8 = *Target; 1747a88e22b7SJung-uk Kim if (Temp8 > ACPI_EINJ_INSTRUCTION_RESERVED) 1748a88e22b7SJung-uk Kim { 1749a88e22b7SJung-uk Kim Temp8 = ACPI_EINJ_INSTRUCTION_RESERVED; 1750a88e22b7SJung-uk Kim } 1751a88e22b7SJung-uk Kim 17527cf3e94aSJung-uk Kim AcpiOsPrintf (UINT8_FORMAT, *Target, 17537cf3e94aSJung-uk Kim AcpiDmEinjInstructions[Temp8]); 1754a88e22b7SJung-uk Kim break; 1755a88e22b7SJung-uk Kim 1756a88e22b7SJung-uk Kim case ACPI_DMT_ERSTACT: 1757a88e22b7SJung-uk Kim 1758a88e22b7SJung-uk Kim /* ERST Action types */ 1759a88e22b7SJung-uk Kim 1760a88e22b7SJung-uk Kim Temp8 = *Target; 1761a88e22b7SJung-uk Kim if (Temp8 > ACPI_ERST_ACTION_RESERVED) 1762a88e22b7SJung-uk Kim { 1763a88e22b7SJung-uk Kim Temp8 = ACPI_ERST_ACTION_RESERVED; 1764a88e22b7SJung-uk Kim } 1765a88e22b7SJung-uk Kim 17667cf3e94aSJung-uk Kim AcpiOsPrintf (UINT8_FORMAT, *Target, 17677cf3e94aSJung-uk Kim AcpiDmErstActions[Temp8]); 1768a88e22b7SJung-uk Kim break; 1769a88e22b7SJung-uk Kim 1770a88e22b7SJung-uk Kim case ACPI_DMT_ERSTINST: 1771a88e22b7SJung-uk Kim 1772a88e22b7SJung-uk Kim /* ERST Instruction types */ 1773a88e22b7SJung-uk Kim 1774a88e22b7SJung-uk Kim Temp8 = *Target; 1775a88e22b7SJung-uk Kim if (Temp8 > ACPI_ERST_INSTRUCTION_RESERVED) 1776a88e22b7SJung-uk Kim { 1777a88e22b7SJung-uk Kim Temp8 = ACPI_ERST_INSTRUCTION_RESERVED; 1778a88e22b7SJung-uk Kim } 1779a88e22b7SJung-uk Kim 17807cf3e94aSJung-uk Kim AcpiOsPrintf (UINT8_FORMAT, *Target, 17817cf3e94aSJung-uk Kim AcpiDmErstInstructions[Temp8]); 1782a88e22b7SJung-uk Kim break; 1783a88e22b7SJung-uk Kim 1784313a0c13SJung-uk Kim case ACPI_DMT_GTDT: 1785313a0c13SJung-uk Kim 1786313a0c13SJung-uk Kim /* GTDT subtable types */ 1787313a0c13SJung-uk Kim 1788313a0c13SJung-uk Kim Temp8 = *Target; 1789313a0c13SJung-uk Kim if (Temp8 > ACPI_GTDT_TYPE_RESERVED) 1790313a0c13SJung-uk Kim { 1791313a0c13SJung-uk Kim Temp8 = ACPI_GTDT_TYPE_RESERVED; 1792313a0c13SJung-uk Kim } 1793313a0c13SJung-uk Kim 17947cf3e94aSJung-uk Kim AcpiOsPrintf (UINT8_FORMAT, *Target, 17957cf3e94aSJung-uk Kim AcpiDmGtdtSubnames[Temp8]); 1796313a0c13SJung-uk Kim break; 1797313a0c13SJung-uk Kim 1798a9f12690SJung-uk Kim case ACPI_DMT_HEST: 1799a9f12690SJung-uk Kim 1800a9f12690SJung-uk Kim /* HEST subtable types */ 1801a9f12690SJung-uk Kim 1802a9f12690SJung-uk Kim Temp16 = ACPI_GET16 (Target); 1803a9f12690SJung-uk Kim if (Temp16 > ACPI_HEST_TYPE_RESERVED) 1804a9f12690SJung-uk Kim { 1805a9f12690SJung-uk Kim Temp16 = ACPI_HEST_TYPE_RESERVED; 1806a9f12690SJung-uk Kim } 1807a9f12690SJung-uk Kim 18087cf3e94aSJung-uk Kim AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target), 18097cf3e94aSJung-uk Kim AcpiDmHestSubnames[Temp16]); 1810a9f12690SJung-uk Kim break; 1811a9f12690SJung-uk Kim 1812a9f12690SJung-uk Kim case ACPI_DMT_HESTNTFY: 1813a9f12690SJung-uk Kim 18147cf3e94aSJung-uk Kim AcpiOsPrintf (STRING_FORMAT, 18157cf3e94aSJung-uk Kim "Hardware Error Notification Structure"); 18167cf3e94aSJung-uk Kim 1817fe0f0bbbSJung-uk Kim Status = AcpiDmDumpTable (TableLength, CurrentOffset, Target, 1818d6dd1baeSJung-uk Kim sizeof (ACPI_HEST_NOTIFY), AcpiDmTableInfoHestNotify); 1819fe0f0bbbSJung-uk Kim if (ACPI_FAILURE (Status)) 1820fe0f0bbbSJung-uk Kim { 1821fe0f0bbbSJung-uk Kim return (Status); 1822fe0f0bbbSJung-uk Kim } 1823fe0f0bbbSJung-uk Kim 1824a9f12690SJung-uk Kim AcpiOsPrintf ("\n"); 1825a9f12690SJung-uk Kim LastOutputBlankLine = TRUE; 1826a9f12690SJung-uk Kim break; 1827a9f12690SJung-uk Kim 1828a9f12690SJung-uk Kim case ACPI_DMT_HESTNTYP: 1829a9f12690SJung-uk Kim 1830a9f12690SJung-uk Kim /* HEST Notify types */ 1831a9f12690SJung-uk Kim 1832a9f12690SJung-uk Kim Temp8 = *Target; 1833a9f12690SJung-uk Kim if (Temp8 > ACPI_HEST_NOTIFY_RESERVED) 1834a9f12690SJung-uk Kim { 1835a9f12690SJung-uk Kim Temp8 = ACPI_HEST_NOTIFY_RESERVED; 1836a9f12690SJung-uk Kim } 1837a9f12690SJung-uk Kim 18387cf3e94aSJung-uk Kim AcpiOsPrintf (UINT8_FORMAT, *Target, 18397cf3e94aSJung-uk Kim AcpiDmHestNotifySubnames[Temp8]); 1840a9f12690SJung-uk Kim break; 1841a9f12690SJung-uk Kim 1842af051161SJung-uk Kim case ACPI_DMT_HMAT: 1843af051161SJung-uk Kim 1844af051161SJung-uk Kim /* HMAT subtable types */ 1845af051161SJung-uk Kim 1846af051161SJung-uk Kim Temp16 = *Target; 1847af051161SJung-uk Kim if (Temp16 > ACPI_HMAT_TYPE_RESERVED) 1848af051161SJung-uk Kim { 1849af051161SJung-uk Kim Temp16 = ACPI_HMAT_TYPE_RESERVED; 1850af051161SJung-uk Kim } 1851af051161SJung-uk Kim 1852af051161SJung-uk Kim AcpiOsPrintf (UINT16_FORMAT, *Target, 1853af051161SJung-uk Kim AcpiDmHmatSubnames[Temp16]); 1854af051161SJung-uk Kim break; 1855af051161SJung-uk Kim 1856a371a5fdSJung-uk Kim case ACPI_DMT_IORTMEM: 1857a371a5fdSJung-uk Kim 1858a371a5fdSJung-uk Kim AcpiOsPrintf (STRING_FORMAT, 1859a371a5fdSJung-uk Kim "IORT Memory Access Properties"); 1860a371a5fdSJung-uk Kim 1861fe0f0bbbSJung-uk Kim Status = AcpiDmDumpTable (TableLength, CurrentOffset, Target, 1862a371a5fdSJung-uk Kim sizeof (ACPI_IORT_MEMORY_ACCESS), AcpiDmTableInfoIortAcc); 1863fe0f0bbbSJung-uk Kim if (ACPI_FAILURE (Status)) 1864fe0f0bbbSJung-uk Kim { 1865fe0f0bbbSJung-uk Kim return (Status); 1866fe0f0bbbSJung-uk Kim } 1867fe0f0bbbSJung-uk Kim 1868a371a5fdSJung-uk Kim LastOutputBlankLine = TRUE; 1869a371a5fdSJung-uk Kim break; 1870a371a5fdSJung-uk Kim 18711a39cfb0SJung-uk Kim case ACPI_DMT_MADT: 18721a39cfb0SJung-uk Kim 18731a39cfb0SJung-uk Kim /* MADT subtable types */ 18741a39cfb0SJung-uk Kim 18751a39cfb0SJung-uk Kim Temp8 = *Target; 1876ab71bbb7SJung-uk Kim if ((Temp8 >= ACPI_MADT_TYPE_RESERVED) && (Temp8 < ACPI_MADT_TYPE_OEM_RESERVED)) 18771a39cfb0SJung-uk Kim { 18781a39cfb0SJung-uk Kim Temp8 = ACPI_MADT_TYPE_RESERVED; 18791a39cfb0SJung-uk Kim } 1880ab71bbb7SJung-uk Kim else if (Temp8 >= ACPI_MADT_TYPE_OEM_RESERVED) 1881ab71bbb7SJung-uk Kim { 1882ab71bbb7SJung-uk Kim Temp8 = ACPI_MADT_TYPE_RESERVED + 1; 1883ab71bbb7SJung-uk Kim } 18847cf3e94aSJung-uk Kim AcpiOsPrintf (UINT8_FORMAT, *Target, 18857cf3e94aSJung-uk Kim AcpiDmMadtSubnames[Temp8]); 18861a39cfb0SJung-uk Kim break; 18871a39cfb0SJung-uk Kim 1888722b1667SJung-uk Kim case ACPI_DMT_MPAM_LOCATOR: 1889722b1667SJung-uk Kim 1890722b1667SJung-uk Kim /* MPAM subtable locator types */ 1891722b1667SJung-uk Kim 1892722b1667SJung-uk Kim Temp8 = *Target; 1893722b1667SJung-uk Kim if (Temp8 > ACPI_MPAM_LOCATION_TYPE_INTERCONNECT) 1894722b1667SJung-uk Kim { 1895722b1667SJung-uk Kim Temp8 = ACPI_MPAM_LOCATION_TYPE_INTERCONNECT + 1; 1896722b1667SJung-uk Kim } 1897722b1667SJung-uk Kim 1898722b1667SJung-uk Kim AcpiOsPrintf (UINT8_FORMAT, *Target, 1899722b1667SJung-uk Kim AcpiDmMpamSubnames[Temp8]); 1900722b1667SJung-uk Kim break; 1901722b1667SJung-uk Kim 1902a371a5fdSJung-uk Kim case ACPI_DMT_NFIT: 1903a371a5fdSJung-uk Kim 1904a371a5fdSJung-uk Kim /* NFIT subtable types */ 1905a371a5fdSJung-uk Kim 1906a371a5fdSJung-uk Kim Temp16 = ACPI_GET16 (Target); 1907a371a5fdSJung-uk Kim if (Temp16 > ACPI_NFIT_TYPE_RESERVED) 1908a371a5fdSJung-uk Kim { 1909a371a5fdSJung-uk Kim Temp16 = ACPI_NFIT_TYPE_RESERVED; 1910a371a5fdSJung-uk Kim } 1911a371a5fdSJung-uk Kim 1912a371a5fdSJung-uk Kim AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target), 1913a371a5fdSJung-uk Kim AcpiDmNfitSubnames[Temp16]); 1914a371a5fdSJung-uk Kim break; 1915a371a5fdSJung-uk Kim 1916313a0c13SJung-uk Kim case ACPI_DMT_PCCT: 1917313a0c13SJung-uk Kim 1918313a0c13SJung-uk Kim /* PCCT subtable types */ 1919313a0c13SJung-uk Kim 1920313a0c13SJung-uk Kim Temp8 = *Target; 1921313a0c13SJung-uk Kim if (Temp8 > ACPI_PCCT_TYPE_RESERVED) 1922313a0c13SJung-uk Kim { 1923313a0c13SJung-uk Kim Temp8 = ACPI_PCCT_TYPE_RESERVED; 1924313a0c13SJung-uk Kim } 1925313a0c13SJung-uk Kim 19267cf3e94aSJung-uk Kim AcpiOsPrintf (UINT8_FORMAT, *Target, 19277cf3e94aSJung-uk Kim AcpiDmPcctSubnames[Temp8]); 1928313a0c13SJung-uk Kim break; 1929313a0c13SJung-uk Kim 1930cfd1ed46SJung-uk Kim case ACPI_DMT_PHAT: 1931cfd1ed46SJung-uk Kim 19329a4bc520SJung-uk Kim /* PHAT subtable types */ 1933cfd1ed46SJung-uk Kim 19349a4bc520SJung-uk Kim Temp16 = ACPI_GET16 (Target); 1935cfd1ed46SJung-uk Kim if (Temp16 > ACPI_PHAT_TYPE_RESERVED) 1936cfd1ed46SJung-uk Kim { 1937cfd1ed46SJung-uk Kim Temp16 = ACPI_PHAT_TYPE_RESERVED; 1938cfd1ed46SJung-uk Kim } 1939cfd1ed46SJung-uk Kim 1940cfd1ed46SJung-uk Kim AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target), 1941cfd1ed46SJung-uk Kim AcpiDmPhatSubnames[Temp16]); 1942cfd1ed46SJung-uk Kim break; 1943cfd1ed46SJung-uk Kim 19443f0275a0SJung-uk Kim case ACPI_DMT_PMTT: 19453f0275a0SJung-uk Kim 19463f0275a0SJung-uk Kim /* PMTT subtable types */ 19473f0275a0SJung-uk Kim 19483f0275a0SJung-uk Kim Temp8 = *Target; 1949cfd1ed46SJung-uk Kim if (Temp8 == ACPI_PMTT_TYPE_VENDOR) 1950cfd1ed46SJung-uk Kim { 1951cfd1ed46SJung-uk Kim Temp8 = ACPI_PMTT_TYPE_RESERVED + 1; 1952cfd1ed46SJung-uk Kim } 1953cfd1ed46SJung-uk Kim else if (Temp8 > ACPI_PMTT_TYPE_RESERVED) 19543f0275a0SJung-uk Kim { 19553f0275a0SJung-uk Kim Temp8 = ACPI_PMTT_TYPE_RESERVED; 19563f0275a0SJung-uk Kim } 19577cf3e94aSJung-uk Kim AcpiOsPrintf (UINT8_FORMAT, *Target, 19587cf3e94aSJung-uk Kim AcpiDmPmttSubnames[Temp8]); 19593f0275a0SJung-uk Kim break; 19603f0275a0SJung-uk Kim 1961af051161SJung-uk Kim case ACPI_DMT_PPTT: 1962af051161SJung-uk Kim 1963af051161SJung-uk Kim /* PPTT subtable types */ 1964af051161SJung-uk Kim 1965af051161SJung-uk Kim Temp8 = *Target; 1966af051161SJung-uk Kim if (Temp8 > ACPI_PPTT_TYPE_RESERVED) 1967af051161SJung-uk Kim { 1968af051161SJung-uk Kim Temp8 = ACPI_PPTT_TYPE_RESERVED; 1969af051161SJung-uk Kim } 1970af051161SJung-uk Kim 1971af051161SJung-uk Kim AcpiOsPrintf (UINT8_FORMAT, *Target, 1972af051161SJung-uk Kim AcpiDmPpttSubnames[Temp8]); 1973af051161SJung-uk Kim break; 1974af051161SJung-uk Kim 1975a371a5fdSJung-uk Kim case ACPI_DMT_UNICODE: 197697c0b5abSJung-uk Kim case ACPI_DMT_WPBT_UNICODE: 1977dcbce41eSJung-uk Kim 1978a371a5fdSJung-uk Kim if (ByteLength == 0) 1979a371a5fdSJung-uk Kim { 1980a371a5fdSJung-uk Kim AcpiOsPrintf ("/* Zero-length Data */\n"); 1981a371a5fdSJung-uk Kim break; 1982a371a5fdSJung-uk Kim } 1983a371a5fdSJung-uk Kim 19849a4bc520SJung-uk Kim AcpiDmDumpUnicode (Table, 0, ByteLength); 1985a371a5fdSJung-uk Kim break; 1986a371a5fdSJung-uk Kim 1987a371a5fdSJung-uk Kim case ACPI_DMT_RAW_BUFFER: 1988cfd1ed46SJung-uk Kim case ACPI_DMT_BUFFER: 1989cfd1ed46SJung-uk Kim case ACPI_DMT_PMTT_VENDOR: 1990a371a5fdSJung-uk Kim 1991a371a5fdSJung-uk Kim if (ByteLength == 0) 1992a371a5fdSJung-uk Kim { 1993a371a5fdSJung-uk Kim AcpiOsPrintf ("/* Zero-length Data */\n"); 1994a371a5fdSJung-uk Kim break; 1995a371a5fdSJung-uk Kim } 1996a371a5fdSJung-uk Kim 1997ab71bbb7SJung-uk Kim AcpiDmDumpBuffer (Target, 0, ByteLength, CurrentOffset, NULL); 1998dcbce41eSJung-uk Kim break; 1999dcbce41eSJung-uk Kim 20001970d693SJung-uk Kim case ACPI_DMT_RGRT: 20011970d693SJung-uk Kim 20021970d693SJung-uk Kim /* RGRT subtable types */ 20031970d693SJung-uk Kim 20041970d693SJung-uk Kim Temp8 = *Target; 20051970d693SJung-uk Kim if (Temp8 >= ACPI_RGRT_TYPE_RESERVED) 20061970d693SJung-uk Kim { 20071970d693SJung-uk Kim Temp8 = ACPI_RGRT_TYPE_RESERVED0; 20081970d693SJung-uk Kim } 20091970d693SJung-uk Kim 20101970d693SJung-uk Kim AcpiOsPrintf (UINT8_FORMAT, *Target, 20111970d693SJung-uk Kim AcpiDmRgrtSubnames[Temp8]); 20121970d693SJung-uk Kim break; 20131970d693SJung-uk Kim 201407c64d74SJung-uk Kim case ACPI_DMT_RHCT: 201507c64d74SJung-uk Kim 201607c64d74SJung-uk Kim /* RHCT subtable types */ 201707c64d74SJung-uk Kim 201807c64d74SJung-uk Kim Temp16 = ACPI_GET16 (Target); 201907c64d74SJung-uk Kim if (Temp16 == ACPI_RHCT_NODE_TYPE_HART_INFO) 202007c64d74SJung-uk Kim { 202107c64d74SJung-uk Kim Temp16 = ACPI_RHCT_NODE_TYPE_RESERVED; 202207c64d74SJung-uk Kim } 202307c64d74SJung-uk Kim 202407c64d74SJung-uk Kim AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target), 202507c64d74SJung-uk Kim AcpiDmRhctSubnames[Temp16]); 202607c64d74SJung-uk Kim break; 202707c64d74SJung-uk Kim 202867d9aa44SJung-uk Kim case ACPI_DMT_SDEV: 202967d9aa44SJung-uk Kim 203067d9aa44SJung-uk Kim /* SDEV subtable types */ 203167d9aa44SJung-uk Kim 203267d9aa44SJung-uk Kim Temp8 = *Target; 203367d9aa44SJung-uk Kim if (Temp8 > ACPI_SDEV_TYPE_RESERVED) 203467d9aa44SJung-uk Kim { 203567d9aa44SJung-uk Kim Temp8 = ACPI_SDEV_TYPE_RESERVED; 203667d9aa44SJung-uk Kim } 203767d9aa44SJung-uk Kim 203867d9aa44SJung-uk Kim AcpiOsPrintf (UINT8_FORMAT, *Target, 203967d9aa44SJung-uk Kim AcpiDmSdevSubnames[Temp8]); 204067d9aa44SJung-uk Kim break; 204167d9aa44SJung-uk Kim 20421a39cfb0SJung-uk Kim case ACPI_DMT_SRAT: 20431a39cfb0SJung-uk Kim 20441a39cfb0SJung-uk Kim /* SRAT subtable types */ 20451a39cfb0SJung-uk Kim 20461a39cfb0SJung-uk Kim Temp8 = *Target; 20471a39cfb0SJung-uk Kim if (Temp8 > ACPI_SRAT_TYPE_RESERVED) 20481a39cfb0SJung-uk Kim { 20491a39cfb0SJung-uk Kim Temp8 = ACPI_SRAT_TYPE_RESERVED; 20501a39cfb0SJung-uk Kim } 20511a39cfb0SJung-uk Kim 20527cf3e94aSJung-uk Kim AcpiOsPrintf (UINT8_FORMAT, *Target, 20537cf3e94aSJung-uk Kim AcpiDmSratSubnames[Temp8]); 20541a39cfb0SJung-uk Kim break; 20551a39cfb0SJung-uk Kim 205667d9aa44SJung-uk Kim case ACPI_DMT_TPM2: 205767d9aa44SJung-uk Kim 205867d9aa44SJung-uk Kim /* TPM2 Start Method types */ 205967d9aa44SJung-uk Kim 206067d9aa44SJung-uk Kim Temp8 = *Target; 206167d9aa44SJung-uk Kim if (Temp8 > ACPI_TPM2_RESERVED) 206267d9aa44SJung-uk Kim { 206367d9aa44SJung-uk Kim Temp8 = ACPI_TPM2_RESERVED; 206467d9aa44SJung-uk Kim } 206567d9aa44SJung-uk Kim 206667d9aa44SJung-uk Kim AcpiOsPrintf (UINT8_FORMAT, *Target, 206767d9aa44SJung-uk Kim AcpiDmTpm2Subnames[Temp8]); 206867d9aa44SJung-uk Kim break; 206967d9aa44SJung-uk Kim 207067d9aa44SJung-uk Kim 2071a9f12690SJung-uk Kim case ACPI_DMT_FADTPM: 2072a9f12690SJung-uk Kim 2073a9f12690SJung-uk Kim /* FADT Preferred PM Profile names */ 2074a9f12690SJung-uk Kim 2075a9f12690SJung-uk Kim Temp8 = *Target; 2076a9f12690SJung-uk Kim if (Temp8 > ACPI_FADT_PM_RESERVED) 2077a9f12690SJung-uk Kim { 2078a9f12690SJung-uk Kim Temp8 = ACPI_FADT_PM_RESERVED; 2079a9f12690SJung-uk Kim } 2080a9f12690SJung-uk Kim 20817cf3e94aSJung-uk Kim AcpiOsPrintf (UINT8_FORMAT, *Target, 20827cf3e94aSJung-uk Kim AcpiDmFadtProfiles[Temp8]); 2083a9f12690SJung-uk Kim break; 2084a9f12690SJung-uk Kim 2085d6dd1baeSJung-uk Kim case ACPI_DMT_IVRS: 2086d6dd1baeSJung-uk Kim 2087d6dd1baeSJung-uk Kim /* IVRS subtable types */ 2088d6dd1baeSJung-uk Kim 2089d6dd1baeSJung-uk Kim Temp8 = *Target; 2090d6dd1baeSJung-uk Kim switch (Temp8) 2091d6dd1baeSJung-uk Kim { 20923ee58df5SJung-uk Kim case ACPI_IVRS_TYPE_HARDWARE1: 20933ee58df5SJung-uk Kim case ACPI_IVRS_TYPE_HARDWARE2: 2094a9d8d09cSJung-uk Kim 2095d6dd1baeSJung-uk Kim Name = AcpiDmIvrsSubnames[0]; 2096d6dd1baeSJung-uk Kim break; 2097d6dd1baeSJung-uk Kim 20981970d693SJung-uk Kim case ACPI_IVRS_TYPE_HARDWARE3: 20991970d693SJung-uk Kim 21001970d693SJung-uk Kim Name = AcpiDmIvrsSubnames[1]; 21011970d693SJung-uk Kim break; 21021970d693SJung-uk Kim 2103d6dd1baeSJung-uk Kim case ACPI_IVRS_TYPE_MEMORY1: 2104d6dd1baeSJung-uk Kim case ACPI_IVRS_TYPE_MEMORY2: 2105d6dd1baeSJung-uk Kim case ACPI_IVRS_TYPE_MEMORY3: 2106a9d8d09cSJung-uk Kim 21071970d693SJung-uk Kim Name = AcpiDmIvrsSubnames[2]; 2108d6dd1baeSJung-uk Kim break; 2109d6dd1baeSJung-uk Kim 2110d6dd1baeSJung-uk Kim default: 2111a9d8d09cSJung-uk Kim 21121970d693SJung-uk Kim Name = AcpiDmIvrsSubnames[3]; 21131970d693SJung-uk Kim break; 21141970d693SJung-uk Kim } 21151970d693SJung-uk Kim 21161970d693SJung-uk Kim AcpiOsPrintf (UINT8_FORMAT, *Target, Name); 21171970d693SJung-uk Kim break; 21181970d693SJung-uk Kim 21191970d693SJung-uk Kim case ACPI_DMT_IVRS_DE: 21201970d693SJung-uk Kim 21211970d693SJung-uk Kim /* IVRS device entry types */ 21221970d693SJung-uk Kim 21231970d693SJung-uk Kim Temp8 = *Target; 21241970d693SJung-uk Kim switch (Temp8) 21251970d693SJung-uk Kim { 21261970d693SJung-uk Kim case ACPI_IVRS_TYPE_ALL: 21271970d693SJung-uk Kim case ACPI_IVRS_TYPE_SELECT: 21281970d693SJung-uk Kim case ACPI_IVRS_TYPE_START: 21291970d693SJung-uk Kim case ACPI_IVRS_TYPE_END: 21301970d693SJung-uk Kim 21311970d693SJung-uk Kim Name = AcpiDmIvrsDevEntryNames[Temp8]; 21321970d693SJung-uk Kim break; 21331970d693SJung-uk Kim 21341970d693SJung-uk Kim case ACPI_IVRS_TYPE_ALIAS_SELECT: 21351970d693SJung-uk Kim case ACPI_IVRS_TYPE_ALIAS_START: 21361970d693SJung-uk Kim case ACPI_IVRS_TYPE_EXT_SELECT: 21371970d693SJung-uk Kim case ACPI_IVRS_TYPE_EXT_START: 21381970d693SJung-uk Kim case ACPI_IVRS_TYPE_SPECIAL: 21391970d693SJung-uk Kim 21401970d693SJung-uk Kim Name = AcpiDmIvrsDevEntryNames[Temp8 - 61]; 21411970d693SJung-uk Kim break; 21421970d693SJung-uk Kim 21431970d693SJung-uk Kim case ACPI_IVRS_TYPE_HID: 21441970d693SJung-uk Kim 21451970d693SJung-uk Kim Name = AcpiDmIvrsDevEntryNames[Temp8 - 228]; 21461970d693SJung-uk Kim break; 21471970d693SJung-uk Kim 21481970d693SJung-uk Kim default: 21491970d693SJung-uk Kim Name = AcpiDmIvrsDevEntryNames[0]; /* Unknown/Reserved */ 2150d6dd1baeSJung-uk Kim break; 2151d6dd1baeSJung-uk Kim } 2152d6dd1baeSJung-uk Kim 2153d052a1ccSJung-uk Kim AcpiOsPrintf (UINT8_FORMAT, *Target, Name); 2154d6dd1baeSJung-uk Kim break; 2155d6dd1baeSJung-uk Kim 2156313a0c13SJung-uk Kim case ACPI_DMT_LPIT: 2157313a0c13SJung-uk Kim 2158313a0c13SJung-uk Kim /* LPIT subtable types */ 2159313a0c13SJung-uk Kim 21607cf3e94aSJung-uk Kim Temp32 = ACPI_GET32 (Target); 21617cf3e94aSJung-uk Kim if (Temp32 > ACPI_LPIT_TYPE_RESERVED) 2162313a0c13SJung-uk Kim { 21637cf3e94aSJung-uk Kim Temp32 = ACPI_LPIT_TYPE_RESERVED; 2164313a0c13SJung-uk Kim } 2165313a0c13SJung-uk Kim 21667cf3e94aSJung-uk Kim AcpiOsPrintf (UINT32_FORMAT, ACPI_GET32 (Target), 21677cf3e94aSJung-uk Kim AcpiDmLpitSubnames[Temp32]); 2168313a0c13SJung-uk Kim break; 2169313a0c13SJung-uk Kim 2170cfd1ed46SJung-uk Kim case ACPI_DMT_VIOT: 2171cfd1ed46SJung-uk Kim 2172cfd1ed46SJung-uk Kim /* VIOT subtable types */ 2173cfd1ed46SJung-uk Kim 2174cfd1ed46SJung-uk Kim Temp8 = *Target; 2175cfd1ed46SJung-uk Kim if (Temp8 > ACPI_VIOT_RESERVED) 2176cfd1ed46SJung-uk Kim { 2177cfd1ed46SJung-uk Kim Temp8 = ACPI_VIOT_RESERVED; 2178cfd1ed46SJung-uk Kim } 2179cfd1ed46SJung-uk Kim 2180cfd1ed46SJung-uk Kim AcpiOsPrintf (UINT8_FORMAT, *Target, 2181cfd1ed46SJung-uk Kim AcpiDmViotSubnames[Temp8]); 2182cfd1ed46SJung-uk Kim break; 2183cfd1ed46SJung-uk Kim 21841a39cfb0SJung-uk Kim case ACPI_DMT_EXIT: 2185a9d8d09cSJung-uk Kim 2186a9f12690SJung-uk Kim return (AE_OK); 21871a39cfb0SJung-uk Kim 21881a39cfb0SJung-uk Kim default: 2189a9d8d09cSJung-uk Kim 21901a39cfb0SJung-uk Kim ACPI_ERROR ((AE_INFO, 2191ca3cf4faSJung-uk Kim "**** Invalid table opcode [0x%X] ****\n", Info->Opcode)); 2192a9f12690SJung-uk Kim return (AE_SUPPORT); 21931a39cfb0SJung-uk Kim } 21941a39cfb0SJung-uk Kim } 2195a9f12690SJung-uk Kim 2196a9f12690SJung-uk Kim if (TableOffset && !SubtableLength) 2197a9f12690SJung-uk Kim { 21987cf3e94aSJung-uk Kim /* 21997cf3e94aSJung-uk Kim * If this table is not the main table, the subtable must have a 22007cf3e94aSJung-uk Kim * valid length 22017cf3e94aSJung-uk Kim */ 2202a9f12690SJung-uk Kim AcpiOsPrintf ("Invalid zero length subtable\n"); 2203a9f12690SJung-uk Kim return (AE_BAD_DATA); 2204a9f12690SJung-uk Kim } 2205a9f12690SJung-uk Kim 2206a9f12690SJung-uk Kim return (AE_OK); 22071a39cfb0SJung-uk Kim } 2208