xref: /freebsd/sys/contrib/dev/acpica/common/dmtable.c (revision 07c64d74917e7c8ca61c77413dbd533390e7dca7)
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  *
11722b1667SJung-uk Kim  * Some or all of this work - Copyright (c) 1999 - 2023, 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",
19397c0b5abSJung-uk Kim     "Unknown Subtable Type"         /* Reserved */
19497c0b5abSJung-uk Kim };
19597c0b5abSJung-uk Kim 
19697c0b5abSJung-uk Kim static const char           *AcpiDmAestCacheNames[] =
19797c0b5abSJung-uk Kim {
19897c0b5abSJung-uk Kim     "Data Cache",
19997c0b5abSJung-uk Kim     "Instruction Cache",
20097c0b5abSJung-uk Kim     "Unified Cache",
20197c0b5abSJung-uk Kim     "Unknown Cache Type"            /* Reserved */
20297c0b5abSJung-uk Kim };
20397c0b5abSJung-uk Kim 
20497c0b5abSJung-uk Kim static const char           *AcpiDmAestGicNames[] =
20597c0b5abSJung-uk Kim {
20697c0b5abSJung-uk Kim     "GIC CPU",
20797c0b5abSJung-uk Kim     "GIC Distributor",
20897c0b5abSJung-uk Kim     "GIC Redistributor",
20997c0b5abSJung-uk Kim     "GIC ITS",
21097c0b5abSJung-uk Kim     "Unknown GIC Interface Type"    /* Reserved */
21197c0b5abSJung-uk Kim };
21297c0b5abSJung-uk Kim 
21397c0b5abSJung-uk Kim static const char           *AcpiDmAestXfaceNames[] =
21497c0b5abSJung-uk Kim {
21597c0b5abSJung-uk Kim     "System Register Interface",
21697c0b5abSJung-uk Kim     "Memory Mapped Interface",
21797c0b5abSJung-uk Kim     "Unknown Interface Type"        /* Reserved */
21897c0b5abSJung-uk Kim };
21997c0b5abSJung-uk Kim 
22097c0b5abSJung-uk Kim static const char           *AcpiDmAestXruptNames[] =
22197c0b5abSJung-uk Kim {
22297c0b5abSJung-uk Kim     "Fault Handling Interrupt",
22397c0b5abSJung-uk Kim     "Error Recovery Interrupt",
22497c0b5abSJung-uk Kim     "Unknown Interrupt Type"        /* Reserved */
22597c0b5abSJung-uk Kim };
22697c0b5abSJung-uk Kim 
227a9f12690SJung-uk Kim static const char           *AcpiDmAsfSubnames[] =
228a9f12690SJung-uk Kim {
229a9f12690SJung-uk Kim     "ASF Information",
230a9f12690SJung-uk Kim     "ASF Alerts",
231a9f12690SJung-uk Kim     "ASF Remote Control",
232a9f12690SJung-uk Kim     "ASF RMCP Boot Options",
233a9f12690SJung-uk Kim     "ASF Address",
234a371a5fdSJung-uk Kim     "Unknown Subtable Type"         /* Reserved */
235a9f12690SJung-uk Kim };
236a9f12690SJung-uk Kim 
237722b1667SJung-uk Kim static const char           *AcpiDmAsptSubnames[] =
238722b1667SJung-uk Kim {
239722b1667SJung-uk Kim     "ASPT Global Registers",
240722b1667SJung-uk Kim     "ASPT SEV Mailbox Registers",
241722b1667SJung-uk Kim     "ASPT ACPI Mailbox Registers",
242722b1667SJung-uk Kim     "Unknown Subtable Type"         /* Reserved */
243722b1667SJung-uk Kim };
244722b1667SJung-uk Kim 
2459a4bc520SJung-uk Kim static const char           *AcpiDmCdatSubnames[] =
2469a4bc520SJung-uk Kim {
2479a4bc520SJung-uk Kim     "Device Scoped Memory Affinity Structure (DSMAS)",
2489a4bc520SJung-uk Kim     "Device scoped Latency and Bandwidth Information Structure (DSLBIS)",
2499a4bc520SJung-uk Kim     "Device Scoped Memory Side Cache Information Structure (DSMSCIS)",
2509a4bc520SJung-uk Kim     "Device Scoped Initiator Structure (DSIS)",
2519a4bc520SJung-uk Kim     "Device Scoped EFI Memory Type Structure (DSEMTS)",
2529a4bc520SJung-uk Kim     "Switch Scoped Latency and Bandwidth Information Structure (SSLBIS)",
2539a4bc520SJung-uk Kim     "Unknown Subtable Type"         /* Reserved */
2549a4bc520SJung-uk Kim };
2559a4bc520SJung-uk Kim 
256cfd1ed46SJung-uk Kim static const char           *AcpiDmCedtSubnames[] =
257cfd1ed46SJung-uk Kim {
258cfd1ed46SJung-uk Kim     "CXL Host Bridge Structure",
2591970d693SJung-uk Kim     "CXL Fixed Memory Window Structure",
260cfd1ed46SJung-uk Kim     "Unknown Subtable Type"         /* Reserved */
261cfd1ed46SJung-uk Kim };
262cfd1ed46SJung-uk Kim 
2631a39cfb0SJung-uk Kim static const char           *AcpiDmDmarSubnames[] =
2641a39cfb0SJung-uk Kim {
2651a39cfb0SJung-uk Kim     "Hardware Unit Definition",
2661a39cfb0SJung-uk Kim     "Reserved Memory Region",
267a9f12690SJung-uk Kim     "Root Port ATS Capability",
268d6dd1baeSJung-uk Kim     "Remapping Hardware Static Affinity",
269313a0c13SJung-uk Kim     "ACPI Namespace Device Declaration",
270ab71bbb7SJung-uk Kim     "SoC Integrated Address Translation Cache",
271a371a5fdSJung-uk Kim     "Unknown Subtable Type"         /* Reserved */
2721a39cfb0SJung-uk Kim };
2731a39cfb0SJung-uk Kim 
274313a0c13SJung-uk Kim static const char           *AcpiDmDmarScope[] =
275313a0c13SJung-uk Kim {
276313a0c13SJung-uk Kim     "Reserved value",
277313a0c13SJung-uk Kim     "PCI Endpoint Device",
278313a0c13SJung-uk Kim     "PCI Bridge Device",
279313a0c13SJung-uk Kim     "IOAPIC Device",
280313a0c13SJung-uk Kim     "Message-capable HPET Device",
281313a0c13SJung-uk Kim     "Namespace Device",
282313a0c13SJung-uk Kim     "Unknown Scope Type"            /* Reserved */
283313a0c13SJung-uk Kim };
284313a0c13SJung-uk Kim 
285a88e22b7SJung-uk Kim static const char           *AcpiDmEinjActions[] =
286a88e22b7SJung-uk Kim {
287a88e22b7SJung-uk Kim     "Begin Operation",
288a88e22b7SJung-uk Kim     "Get Trigger Table",
289a88e22b7SJung-uk Kim     "Set Error Type",
290a88e22b7SJung-uk Kim     "Get Error Type",
291a88e22b7SJung-uk Kim     "End Operation",
292a88e22b7SJung-uk Kim     "Execute Operation",
293a88e22b7SJung-uk Kim     "Check Busy Status",
294a88e22b7SJung-uk Kim     "Get Command Status",
2958d744e47SJung-uk Kim     "Set Error Type With Address",
296f8146b88SJung-uk Kim     "Get Execute Timings",
297a88e22b7SJung-uk Kim     "Unknown Action"
298a88e22b7SJung-uk Kim };
299a88e22b7SJung-uk Kim 
300a88e22b7SJung-uk Kim static const char           *AcpiDmEinjInstructions[] =
301a88e22b7SJung-uk Kim {
302a88e22b7SJung-uk Kim     "Read Register",
303a88e22b7SJung-uk Kim     "Read Register Value",
304a88e22b7SJung-uk Kim     "Write Register",
305a88e22b7SJung-uk Kim     "Write Register Value",
306a88e22b7SJung-uk Kim     "Noop",
3078d744e47SJung-uk Kim     "Flush Cacheline",
308a88e22b7SJung-uk Kim     "Unknown Instruction"
309a88e22b7SJung-uk Kim };
310a88e22b7SJung-uk Kim 
311a88e22b7SJung-uk Kim static const char           *AcpiDmErstActions[] =
312a88e22b7SJung-uk Kim {
313a88e22b7SJung-uk Kim     "Begin Write Operation",
314a88e22b7SJung-uk Kim     "Begin Read Operation",
315a88e22b7SJung-uk Kim     "Begin Clear Operation",
316a88e22b7SJung-uk Kim     "End Operation",
317a88e22b7SJung-uk Kim     "Set Record Offset",
318a88e22b7SJung-uk Kim     "Execute Operation",
319a88e22b7SJung-uk Kim     "Check Busy Status",
320a88e22b7SJung-uk Kim     "Get Command Status",
321a88e22b7SJung-uk Kim     "Get Record Identifier",
322a88e22b7SJung-uk Kim     "Set Record Identifier",
323a88e22b7SJung-uk Kim     "Get Record Count",
324a88e22b7SJung-uk Kim     "Begin Dummy Write",
325a88e22b7SJung-uk Kim     "Unused/Unknown Action",
326a88e22b7SJung-uk Kim     "Get Error Address Range",
327a88e22b7SJung-uk Kim     "Get Error Address Length",
328a88e22b7SJung-uk Kim     "Get Error Attributes",
329f8146b88SJung-uk Kim     "Execute Timings",
330a88e22b7SJung-uk Kim     "Unknown Action"
331a88e22b7SJung-uk Kim };
332a88e22b7SJung-uk Kim 
333a88e22b7SJung-uk Kim static const char           *AcpiDmErstInstructions[] =
334a88e22b7SJung-uk Kim {
335a88e22b7SJung-uk Kim     "Read Register",
336a88e22b7SJung-uk Kim     "Read Register Value",
337a88e22b7SJung-uk Kim     "Write Register",
338a88e22b7SJung-uk Kim     "Write Register Value",
339a88e22b7SJung-uk Kim     "Noop",
340a88e22b7SJung-uk Kim     "Load Var1",
341a88e22b7SJung-uk Kim     "Load Var2",
342a88e22b7SJung-uk Kim     "Store Var1",
343a88e22b7SJung-uk Kim     "Add",
344a88e22b7SJung-uk Kim     "Subtract",
345a88e22b7SJung-uk Kim     "Add Value",
346a88e22b7SJung-uk Kim     "Subtract Value",
347a88e22b7SJung-uk Kim     "Stall",
348a88e22b7SJung-uk Kim     "Stall While True",
349a88e22b7SJung-uk Kim     "Skip Next If True",
350a88e22b7SJung-uk Kim     "GoTo",
351a88e22b7SJung-uk Kim     "Set Source Address",
352a88e22b7SJung-uk Kim     "Set Destination Address",
353a88e22b7SJung-uk Kim     "Move Data",
354a88e22b7SJung-uk Kim     "Unknown Instruction"
355a88e22b7SJung-uk Kim };
356a88e22b7SJung-uk Kim 
357313a0c13SJung-uk Kim static const char           *AcpiDmGtdtSubnames[] =
358313a0c13SJung-uk Kim {
359313a0c13SJung-uk Kim     "Generic Timer Block",
360313a0c13SJung-uk Kim     "Generic Watchdog Timer",
361a371a5fdSJung-uk Kim     "Unknown Subtable Type"         /* Reserved */
362313a0c13SJung-uk Kim };
363313a0c13SJung-uk Kim 
364a9f12690SJung-uk Kim static const char           *AcpiDmHestSubnames[] =
365a9f12690SJung-uk Kim {
366d6dd1baeSJung-uk Kim     "IA-32 Machine Check Exception",
367d6dd1baeSJung-uk Kim     "IA-32 Corrected Machine Check",
368d6dd1baeSJung-uk Kim     "IA-32 Non-Maskable Interrupt",
36967d9aa44SJung-uk Kim     "Unknown Subtable Type",        /* 3 - Reserved */
37067d9aa44SJung-uk Kim     "Unknown Subtable Type",        /* 4 - Reserved */
37167d9aa44SJung-uk Kim     "Unknown Subtable Type",        /* 5 - Reserved */
372a9f12690SJung-uk Kim     "PCI Express Root Port AER",
373a9f12690SJung-uk Kim     "PCI Express AER (AER Endpoint)",
374a9f12690SJung-uk Kim     "PCI Express/PCI-X Bridge AER",
375a9f12690SJung-uk Kim     "Generic Hardware Error Source",
376f8146b88SJung-uk Kim     "Generic Hardware Error Source V2",
377af051161SJung-uk Kim     "IA-32 Deferred Machine Check",
378a371a5fdSJung-uk Kim     "Unknown Subtable Type"         /* Reserved */
379a9f12690SJung-uk Kim };
380a9f12690SJung-uk Kim 
381a9f12690SJung-uk Kim static const char           *AcpiDmHestNotifySubnames[] =
382a9f12690SJung-uk Kim {
383a9f12690SJung-uk Kim     "Polled",
384a9f12690SJung-uk Kim     "External Interrupt",
385a9f12690SJung-uk Kim     "Local Interrupt",
386a9f12690SJung-uk Kim     "SCI",
387a9f12690SJung-uk Kim     "NMI",
3888d744e47SJung-uk Kim     "CMCI",                         /* ACPI 5.0 */
3898d744e47SJung-uk Kim     "MCE",                          /* ACPI 5.0 */
390f8146b88SJung-uk Kim     "GPIO",                         /* ACPI 6.0 */
391f8146b88SJung-uk Kim     "SEA",                          /* ACPI 6.1 */
392f8146b88SJung-uk Kim     "SEI",                          /* ACPI 6.1 */
393f8146b88SJung-uk Kim     "GSIV",                         /* ACPI 6.1 */
394af051161SJung-uk Kim     "Software Delegated Exception", /* ACPI 6.2 */
395a9f12690SJung-uk Kim     "Unknown Notify Type"           /* Reserved */
396a9f12690SJung-uk Kim };
397a9f12690SJung-uk Kim 
398af051161SJung-uk Kim static const char           *AcpiDmHmatSubnames[] =
399af051161SJung-uk Kim {
400cd6518c7SJung-uk Kim     "Memory Proximity Domain Attributes",
401af051161SJung-uk Kim     "System Locality Latency and Bandwidth Information",
402af051161SJung-uk Kim     "Memory Side Cache Information",
403af051161SJung-uk Kim     "Unknown Structure Type"         /* Reserved */
404af051161SJung-uk Kim };
405af051161SJung-uk Kim 
4061a39cfb0SJung-uk Kim static const char           *AcpiDmMadtSubnames[] =
4071a39cfb0SJung-uk Kim {
4081a39cfb0SJung-uk Kim     "Processor Local APIC",             /* ACPI_MADT_TYPE_LOCAL_APIC */
4091a39cfb0SJung-uk Kim     "I/O APIC",                         /* ACPI_MADT_TYPE_IO_APIC */
4101a39cfb0SJung-uk Kim     "Interrupt Source Override",        /* ACPI_MADT_TYPE_INTERRUPT_OVERRIDE */
4111a39cfb0SJung-uk Kim     "NMI Source",                       /* ACPI_MADT_TYPE_NMI_SOURCE */
4121a39cfb0SJung-uk Kim     "Local APIC NMI",                   /* ACPI_MADT_TYPE_LOCAL_APIC_NMI */
4131a39cfb0SJung-uk Kim     "Local APIC Address Override",      /* ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE */
4141a39cfb0SJung-uk Kim     "I/O SAPIC",                        /* ACPI_MADT_TYPE_IO_SAPIC */
4151a39cfb0SJung-uk Kim     "Local SAPIC",                      /* ACPI_MADT_TYPE_LOCAL_SAPIC */
4161a39cfb0SJung-uk Kim     "Platform Interrupt Sources",       /* ACPI_MADT_TYPE_INTERRUPT_SOURCE */
417a9f12690SJung-uk Kim     "Processor Local x2APIC",           /* ACPI_MADT_TYPE_LOCAL_X2APIC */
418a9f12690SJung-uk Kim     "Local x2APIC NMI",                 /* ACPI_MADT_TYPE_LOCAL_X2APIC_NMI */
4193f0275a0SJung-uk Kim     "Generic Interrupt Controller",     /* ACPI_MADT_GENERIC_INTERRUPT */
4203f0275a0SJung-uk Kim     "Generic Interrupt Distributor",    /* ACPI_MADT_GENERIC_DISTRIBUTOR */
421313a0c13SJung-uk Kim     "Generic MSI Frame",                /* ACPI_MADT_GENERIC_MSI_FRAME */
422313a0c13SJung-uk Kim     "Generic Interrupt Redistributor",  /* ACPI_MADT_GENERIC_REDISTRIBUTOR */
423a371a5fdSJung-uk Kim     "Generic Interrupt Translator",     /* ACPI_MADT_GENERIC_TRANSLATOR */
4241970d693SJung-uk Kim     "Mutiprocessor Wakeup",             /* ACPI_MADT_TYPE_MULTIPROC_WAKEUP */
4259a4bc520SJung-uk Kim     "CPU Core Interrupt Controller",    /* ACPI_MADT_TYPE_CORE_PIC */
4269a4bc520SJung-uk Kim     "Legacy I/O Interrupt Controller",  /* ACPI_MADT_TYPE_LIO_PIC */
4279a4bc520SJung-uk Kim     "HT Interrupt Controller",          /* ACPI_MADT_TYPE_HT_PIC */
4289a4bc520SJung-uk Kim     "Extend I/O Interrupt Controller",  /* ACPI_MADT_TYPE_EIO_PIC */
4299a4bc520SJung-uk Kim     "MSI Interrupt Controller",         /* ACPI_MADT_TYPE_MSI_PIC */
4309a4bc520SJung-uk Kim     "Bridge I/O Interrupt Controller",  /* ACPI_MADT_TYPE_BIO_PIC */
4319a4bc520SJung-uk Kim     "LPC Interrupt Controller",         /* ACPI_MADT_TYPE_LPC_PIC */
432722b1667SJung-uk Kim     "RISC-V Interrupt Controller",      /* ACPI_MADT_TYPE_RINTC */
433*07c64d74SJung-uk Kim     "RISC-V Incoming MSI Controller",   /* ACPI_MADT_TYPE_IMSIC */
434*07c64d74SJung-uk Kim     "RISC-V APLIC Controller",          /* ACPI_MADT_TYPE_APLIC */
435*07c64d74SJung-uk Kim     "RISC-V PLIC Controller",           /* ACPI_MADT_TYPE_PLIC */
436ab71bbb7SJung-uk Kim     "Unknown Subtable Type",            /* Reserved */
437ab71bbb7SJung-uk Kim     "Types 80-FF are used for OEM data" /* Reserved for OEM data */
438a371a5fdSJung-uk Kim };
439a371a5fdSJung-uk Kim 
440722b1667SJung-uk Kim static const char           *AcpiDmMpamSubnames[] =
441722b1667SJung-uk Kim {
442722b1667SJung-uk Kim     "Processor cache",      /* ACPI_MPAM_LOCATION_TYPE_PROCESSOR_CACHE */
443722b1667SJung-uk Kim     "Memory",               /* ACPI_MPAM_LOCATION_TYPE_MEMORY */
444722b1667SJung-uk Kim     "SMMU",                 /* ACPI_MPAM_LOCATION_TYPE_SMMU */
445722b1667SJung-uk Kim     "Memory-side cache",    /* ACPI_MPAM_LOCATION_TYPE_MEMORY_CACHE */
446722b1667SJung-uk Kim     "ACPI device",          /* ACPI_MPAM_LOCATION_TYPE_ACPI_DEVICE */
447722b1667SJung-uk Kim     "Interconnect",         /* ACPI_MPAM_LOCATION_TYPE_INTERCONNECT */
448722b1667SJung-uk Kim     "Unknown"               /* ACPI_MPAM_LOCATION_TYPE_UNKNOWN */
449722b1667SJung-uk Kim };
450722b1667SJung-uk Kim 
451a371a5fdSJung-uk Kim static const char           *AcpiDmNfitSubnames[] =
452a371a5fdSJung-uk Kim {
453a371a5fdSJung-uk Kim     "System Physical Address Range",    /* ACPI_NFIT_TYPE_SYSTEM_ADDRESS */
454a371a5fdSJung-uk Kim     "Memory Range Map",                 /* ACPI_NFIT_TYPE_MEMORY_MAP */
455a371a5fdSJung-uk Kim     "Interleave Info",                  /* ACPI_NFIT_TYPE_INTERLEAVE */
456a371a5fdSJung-uk Kim     "SMBIOS Information",               /* ACPI_NFIT_TYPE_SMBIOS */
457a371a5fdSJung-uk Kim     "NVDIMM Control Region",            /* ACPI_NFIT_TYPE_CONTROL_REGION */
458a371a5fdSJung-uk Kim     "NVDIMM Block Data Window Region",  /* ACPI_NFIT_TYPE_DATA_REGION */
459a371a5fdSJung-uk Kim     "Flush Hint Address",               /* ACPI_NFIT_TYPE_FLUSH_ADDRESS */
460b7b7e711SJung-uk Kim     "Platform Capabilities",            /* ACPI_NFIT_TYPE_CAPABILITIES */
461a371a5fdSJung-uk Kim     "Unknown Subtable Type"             /* Reserved */
462313a0c13SJung-uk Kim };
463313a0c13SJung-uk Kim 
4641b7a2680SJung-uk Kim static const char           *AcpiDmNhltLinkTypeNames[] =
4651b7a2680SJung-uk Kim {
4661b7a2680SJung-uk Kim     "Reserved for HD-Audio",            /* ACPI_NHLT_RESERVED_HD_AUDIO */
4671b7a2680SJung-uk Kim     "Reserved for DSP",                 /* ACPI_NHLT_RESERVED_DSP */
4681b7a2680SJung-uk Kim     "Type PDM",                         /* ACPI_NHLT_PDM */
4691b7a2680SJung-uk Kim     "Type SSP",                         /* ACPI_NHLT_SSP */
4701b7a2680SJung-uk Kim     "Reserved for SlimBus",             /* ACPI_NHLT_RESERVED_SLIMBUS */
4711b7a2680SJung-uk Kim     "Reserved for SoundWire",           /* ACPI_NHLT_RESERVED_SOUNDWIRE */
4721b7a2680SJung-uk Kim     "Unknown Link Type"                 /* Reserved */
4731b7a2680SJung-uk Kim };
4741b7a2680SJung-uk Kim 
4751b7a2680SJung-uk Kim static const char           *AcpiDmNhltDirectionNames[] =
4761b7a2680SJung-uk Kim {
4771b7a2680SJung-uk Kim     "Render",                           /* ACPI_NHLT_DIR_RENDER */
4781b7a2680SJung-uk Kim     "Capture",                          /* ACPI_NHLT_DIR_CAPTURE */
4791b7a2680SJung-uk Kim     "Render with Loopback",             /* ACPI_NHLT_DIR_RENDER_LOOPBACK */
4801b7a2680SJung-uk Kim     "Feedback for Render",              /* ACPI_NHLT_DIR_RENDER_FEEDBACK */
4811b7a2680SJung-uk Kim     "Unknown Direction"                 /* Reserved */
4821b7a2680SJung-uk Kim };
4831b7a2680SJung-uk Kim 
484ab71bbb7SJung-uk Kim static const char           *AcpiDmNhltMicTypeNames[] =
485ab71bbb7SJung-uk Kim {
486ab71bbb7SJung-uk Kim     "Omnidirectional",                  /* ACPI_NHLT_MIC_OMNIDIRECTIONAL */
487ab71bbb7SJung-uk Kim     "Subcardioid",                      /* ACPI_NHLT_MIC_SUBCARDIOID */
488ab71bbb7SJung-uk Kim     "Cardioid",                         /* ACPI_NHLT_MIC_CARDIOID */
489ab71bbb7SJung-uk Kim     "SuperCardioid",                    /* ACPI_NHLT_MIC_SUPER_CARDIOID */
490ab71bbb7SJung-uk Kim     "HyperCardioid",                    /* ACPI_NHLT_MIC_HYPER_CARDIOID */
491ab71bbb7SJung-uk Kim     "8 Shaped",                         /* ACPI_NHLT_MIC_8_SHAPED */
492ab71bbb7SJung-uk Kim     "Reserved Mic Type",                /* Reserved */
493ab71bbb7SJung-uk Kim     "Vendor Defined",                   /* ACPI_NHLT_MIC_VENDOR_DEFINED */
494ab71bbb7SJung-uk Kim     "Unknown Mic Type"                  /* ACPI_NHLT_MIC_RESERVED */
495ab71bbb7SJung-uk Kim };
496ab71bbb7SJung-uk Kim 
497ab71bbb7SJung-uk Kim static const char           *AcpiDmNhltMicPositionNames[] =
498ab71bbb7SJung-uk Kim {
499ab71bbb7SJung-uk Kim     "Top",                              /* ACPI_NHLT_MIC_POSITION_TOP */
500ab71bbb7SJung-uk Kim     "Bottom",                           /* ACPI_NHLT_MIC_POSITION_BOTTOM */
501ab71bbb7SJung-uk Kim     "Left",                             /* ACPI_NHLT_MIC_POSITION_LEFT */
502ab71bbb7SJung-uk Kim     "Right",                            /* ACPI_NHLT_MIC_POSITION_RIGHT */
503ab71bbb7SJung-uk Kim     "Front",                            /* ACPI_NHLT_MIC_POSITION_FRONT */
504ab71bbb7SJung-uk Kim     "Back",                             /* ACPI_NHLT_MIC_POSITION_BACK */
505ab71bbb7SJung-uk Kim     "Unknown Mic Position"              /* 6 and above are reserved */
506ab71bbb7SJung-uk Kim };
507ab71bbb7SJung-uk Kim 
508ab71bbb7SJung-uk Kim static const char           *AcpiDmNhltMicArrayTypeNames[] =
509ab71bbb7SJung-uk Kim {
510ab71bbb7SJung-uk Kim     "Unknown Array Type",               /* ACPI_NHLT_ARRAY_TYPE_RESERVED */
511ab71bbb7SJung-uk Kim     "Small Linear 2-element",           /* ACPI_NHLT_SMALL_LINEAR_2ELEMENT */
512ab71bbb7SJung-uk Kim     "Big Linear 2-element",             /* ACPI_NHLT_BIG_LINEAR_2ELEMENT */
513ab71bbb7SJung-uk Kim     "Linear 4-element 1st Geometry",    /* ACPI_NHLT_FIRST_GEOMETRY_LINEAR_4ELEMENT */
514ab71bbb7SJung-uk Kim     "Planar L-shaped 4-element",        /* ACPI_NHLT_PLANAR_LSHAPED_4ELEMENT */
515ab71bbb7SJung-uk Kim     "Linear 4-element 2nd Geometry",    /* ACPI_NHLT_SECOND_GEOMETRY_LINEAR_4ELEMENT */
516ab71bbb7SJung-uk Kim     "Vendor Defined"                    /* ACPI_NHLT_VENDOR_DEFINED */
517ab71bbb7SJung-uk Kim };
518ab71bbb7SJung-uk Kim 
519ab71bbb7SJung-uk Kim static const char           *AcpiDmNhltConfigTypeNames[] =
520ab71bbb7SJung-uk Kim {
521ab71bbb7SJung-uk Kim     "Generic Type",                     /* ACPI_NHLT_CONFIG_TYPE_GENERIC */
522ab71bbb7SJung-uk Kim     "Microphone Array",                 /* ACPI_NHLT_CONFIG_TYPE_MIC_ARRAY */
523ab71bbb7SJung-uk Kim     "Reserved",                         /* ACPI_NHLT_CONFIG_TYPE_RESERVED */
524ab71bbb7SJung-uk Kim     "Render Feedback",                  /* ACPI_NHLT_CONFIG_TYPE_RENDER_FEEDBACK */
525ab71bbb7SJung-uk Kim     "Unknown Config Type"               /* ACPI_NHLT_CONFIG_TYPE_RESERVED */
526ab71bbb7SJung-uk Kim };
527ab71bbb7SJung-uk Kim 
528313a0c13SJung-uk Kim static const char           *AcpiDmPcctSubnames[] =
529313a0c13SJung-uk Kim {
530313a0c13SJung-uk Kim     "Generic Communications Subspace",  /* ACPI_PCCT_TYPE_GENERIC_SUBSPACE */
531a371a5fdSJung-uk Kim     "HW-Reduced Comm Subspace",         /* ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE */
532f8146b88SJung-uk Kim     "HW-Reduced Comm Subspace Type2",   /* ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE_TYPE2 */
533af051161SJung-uk Kim     "Extended PCC Master Subspace",     /* ACPI_PCCT_TYPE_EXT_PCC_MASTER_SUBSPACE */
534af051161SJung-uk Kim     "Extended PCC Slave Subspace",      /* ACPI_PCCT_TYPE_EXT_PCC_SLAVE_SUBSPACE */
535cfd1ed46SJung-uk Kim     "HW Registers based Comm Subspace", /* ACPI_PCCT_TYPE_HW_REG_COMM_SUBSPACE */
536cfd1ed46SJung-uk Kim     "Unknown Subtable Type"             /* Reserved */
537cfd1ed46SJung-uk Kim };
538cfd1ed46SJung-uk Kim 
539cfd1ed46SJung-uk Kim static const char           *AcpiDmPhatSubnames[] =
540cfd1ed46SJung-uk Kim {
541cfd1ed46SJung-uk Kim     "Firmware Version Data",        /* ACPI_PHAT_TYPE_FW_VERSION_DATA */
542cfd1ed46SJung-uk Kim     "Firmware Health Data",         /* ACPI_PHAT_TYPE_FW_HEALTH_DATA */
543a371a5fdSJung-uk Kim     "Unknown Subtable Type"         /* Reserved */
5443f0275a0SJung-uk Kim };
5453f0275a0SJung-uk Kim 
5463f0275a0SJung-uk Kim static const char           *AcpiDmPmttSubnames[] =
5473f0275a0SJung-uk Kim {
5483f0275a0SJung-uk Kim     "Socket",                       /* ACPI_PMTT_TYPE_SOCKET */
5493f0275a0SJung-uk Kim     "Memory Controller",            /* ACPI_PMTT_TYPE_CONTROLLER */
5503f0275a0SJung-uk Kim     "Physical Component (DIMM)",    /* ACPI_PMTT_TYPE_DIMM */
551cfd1ed46SJung-uk Kim     "Unknown Subtable Type",        /* Reserved */
552cfd1ed46SJung-uk Kim     "Vendor Specific"               /* ACPI_PMTT_TYPE_VENDOR */
5531a39cfb0SJung-uk Kim };
5541a39cfb0SJung-uk Kim 
555af051161SJung-uk Kim static const char           *AcpiDmPpttSubnames[] =
556af051161SJung-uk Kim {
557af051161SJung-uk Kim     "Processor Hierarchy Node",     /* ACPI_PPTT_TYPE_PROCESSOR */
558af051161SJung-uk Kim     "Cache Type",                   /* ACPI_PPTT_TYPE_CACHE */
55967d9aa44SJung-uk Kim     "ID",                           /* ACPI_PPTT_TYPE_ID */
56067d9aa44SJung-uk Kim     "Unknown Subtable Type"         /* Reserved */
56167d9aa44SJung-uk Kim };
56267d9aa44SJung-uk Kim 
5631970d693SJung-uk Kim static const char           *AcpiDmRgrtSubnames[] =
5641970d693SJung-uk Kim {
5651970d693SJung-uk Kim     "Unknown/Reserved Image Type",  /* ACPI_RGRT_TYPE_RESERVED0 */
5661970d693SJung-uk Kim     "Type PNG"                      /* ACPI_RGRT_IMAGE_TYPE_PNG */
5671970d693SJung-uk Kim };
5681970d693SJung-uk Kim 
56967d9aa44SJung-uk Kim static const char           *AcpiDmSdevSubnames[] =
57067d9aa44SJung-uk Kim {
57167d9aa44SJung-uk Kim     "Namespace Device",             /* ACPI_SDEV_TYPE_NAMESPACE_DEVICE */
57267d9aa44SJung-uk Kim     "PCIe Endpoint Device",         /* ACPI_SDEV_TYPE_PCIE_ENDPOINT_DEVICE */
573af051161SJung-uk Kim     "Unknown Subtable Type"         /* Reserved */
574af051161SJung-uk Kim };
575af051161SJung-uk Kim 
5761a39cfb0SJung-uk Kim static const char           *AcpiDmSratSubnames[] =
5771a39cfb0SJung-uk Kim {
5781a39cfb0SJung-uk Kim     "Processor Local APIC/SAPIC Affinity",
5791a39cfb0SJung-uk Kim     "Memory Affinity",
580a9f12690SJung-uk Kim     "Processor Local x2APIC Affinity",
581313a0c13SJung-uk Kim     "GICC Affinity",
582af051161SJung-uk Kim     "GIC ITS Affinity",             /* Acpi 6.2 */
583cd6518c7SJung-uk Kim     "Generic Initiator Affinity",   /* Acpi 6.3 */
5841b7a2680SJung-uk Kim     "Generic Port Affinity",        /* Acpi 6.4 */
585a371a5fdSJung-uk Kim     "Unknown Subtable Type"         /* Reserved */
5861a39cfb0SJung-uk Kim };
5871a39cfb0SJung-uk Kim 
58867d9aa44SJung-uk Kim static const char           *AcpiDmTpm2Subnames[] =
58967d9aa44SJung-uk Kim {
59067d9aa44SJung-uk Kim     "Illegal Start Method value",
59167d9aa44SJung-uk Kim     "Reserved",
59267d9aa44SJung-uk Kim     "ACPI Start Method",
59367d9aa44SJung-uk Kim     "Reserved",
59467d9aa44SJung-uk Kim     "Reserved",
59567d9aa44SJung-uk Kim     "Reserved",
59667d9aa44SJung-uk Kim     "Memory Mapped I/O",
59767d9aa44SJung-uk Kim     "Command Response Buffer",
59867d9aa44SJung-uk Kim     "Command Response Buffer with ACPI Start Method",
59967d9aa44SJung-uk Kim     "Reserved",
60067d9aa44SJung-uk Kim     "Reserved",
60167d9aa44SJung-uk Kim     "Command Response Buffer with ARM SMC",
60267d9aa44SJung-uk Kim     "Unknown Subtable Type"         /* Reserved */
60367d9aa44SJung-uk Kim };
60467d9aa44SJung-uk Kim 
605d6dd1baeSJung-uk Kim static const char           *AcpiDmIvrsSubnames[] =
606d6dd1baeSJung-uk Kim {
6071970d693SJung-uk Kim     "Hardware Definition Block (IVHD)",
6081970d693SJung-uk Kim     "Hardware Definition Block - Mixed Format (IVHD)",
6091970d693SJung-uk Kim     "Memory Definition Block (IVMD)",
6101970d693SJung-uk Kim     "Unknown/Reserved Subtable Type"            /* Reserved */
6111970d693SJung-uk Kim };
6121970d693SJung-uk Kim 
6131970d693SJung-uk Kim static const char           *AcpiDmIvrsDevEntryNames[] =
6141970d693SJung-uk Kim {
6151970d693SJung-uk Kim     "Unknown/Reserved Device Entry Type",       /* 0- Reserved */
6161970d693SJung-uk Kim     "Device Entry: Select All Devices",         /* 1 */
6171970d693SJung-uk Kim     "Device Entry: Select One Device",          /* 2 */
6181970d693SJung-uk Kim     "Device Entry: Start of Range",             /* 3 */
6191970d693SJung-uk Kim     "Device Entry: End of Range",               /* 4 */
6201970d693SJung-uk Kim     "Device Entry: Alias Select",               /* 66 */
6211970d693SJung-uk Kim     "Device Entry: Alias Start of Range",       /* 67 */
6221970d693SJung-uk Kim     "Unknown/Reserved Device Entry Type",       /* 68- Reserved */
6231970d693SJung-uk Kim     "Unknown/Reserved Device Entry Type",       /* 69- Reserved */
6241970d693SJung-uk Kim     "Device Entry: Extended Select",            /* 70 */
6251970d693SJung-uk Kim     "Device Entry: Extended Start of Range",    /* 71 */
6261970d693SJung-uk Kim     "Device Entry: Special Device",             /* 72 */
6271970d693SJung-uk Kim     "Device Entry: ACPI HID Named Device",      /* 240 */
6281970d693SJung-uk Kim     "Unknown/Reserved Device Entry Type"        /* Reserved */
629d6dd1baeSJung-uk Kim };
630d6dd1baeSJung-uk Kim 
631313a0c13SJung-uk Kim static const char           *AcpiDmLpitSubnames[] =
632313a0c13SJung-uk Kim {
633313a0c13SJung-uk Kim     "Native C-state Idle Structure",
634a371a5fdSJung-uk Kim     "Unknown Subtable Type"         /* Reserved */
635313a0c13SJung-uk Kim };
636d6dd1baeSJung-uk Kim 
637cfd1ed46SJung-uk Kim static const char           *AcpiDmViotSubnames[] =
638cfd1ed46SJung-uk Kim {
639cfd1ed46SJung-uk Kim     "Unknown Subtable Type",        /* 0 -Reserved */
640cfd1ed46SJung-uk Kim     "PCI Range",
641cfd1ed46SJung-uk Kim     "MMIO Endpoint",
642cfd1ed46SJung-uk Kim     "VirtIO-PCI IOMMU",
643cfd1ed46SJung-uk Kim     "VirtIO-MMIO IOMMU",
644cfd1ed46SJung-uk Kim     "Unknown Subtable Type"         /* Reserved */
645cfd1ed46SJung-uk Kim };
646cfd1ed46SJung-uk Kim 
647ec3fc72fSJung-uk Kim #define ACPI_FADT_PM_RESERVED       9
648a9f12690SJung-uk Kim 
649a9f12690SJung-uk Kim static const char           *AcpiDmFadtProfiles[] =
650a9f12690SJung-uk Kim {
651a9f12690SJung-uk Kim     "Unspecified",
652a9f12690SJung-uk Kim     "Desktop",
653a9f12690SJung-uk Kim     "Mobile",
654a9f12690SJung-uk Kim     "Workstation",
655a9f12690SJung-uk Kim     "Enterprise Server",
656a9f12690SJung-uk Kim     "SOHO Server",
657a9f12690SJung-uk Kim     "Appliance PC",
658a9f12690SJung-uk Kim     "Performance Server",
659ec3fc72fSJung-uk Kim     "Tablet",
660a9f12690SJung-uk Kim     "Unknown Profile Type"
661a9f12690SJung-uk Kim };
662a9f12690SJung-uk Kim 
6635a77b11bSJung-uk Kim #define ACPI_GAS_WIDTH_RESERVED     5
6645a77b11bSJung-uk Kim 
6655a77b11bSJung-uk Kim static const char           *AcpiDmGasAccessWidth[] =
6665a77b11bSJung-uk Kim {
6675a77b11bSJung-uk Kim     "Undefined/Legacy",
6685a77b11bSJung-uk Kim     "Byte Access:8",
6695a77b11bSJung-uk Kim     "Word Access:16",
6705a77b11bSJung-uk Kim     "DWord Access:32",
6715a77b11bSJung-uk Kim     "QWord Access:64",
6725a77b11bSJung-uk Kim     "Unknown Width Encoding"
6735a77b11bSJung-uk Kim };
6745a77b11bSJung-uk Kim 
675*07c64d74SJung-uk Kim static const char           *AcpiDmRhctSubnames[] =
676*07c64d74SJung-uk Kim {
677*07c64d74SJung-uk Kim     "RISC-V ISA string structure",  /* ACPI_RHCT_ISA_STRING */
678*07c64d74SJung-uk Kim     "RISC-V CMO node structure",    /* ACPI_RHCT_CMO_NODE */
679*07c64d74SJung-uk Kim     "RISC-V MMU node structure",    /* ACPI_RHCT_MMU_NODE */
680*07c64d74SJung-uk Kim     "RISC-V Hart Info structure",   /* ACPI_RHCT_HART_INFO */
681*07c64d74SJung-uk Kim };
682*07c64d74SJung-uk Kim 
6835a77b11bSJung-uk Kim 
6841a39cfb0SJung-uk Kim /*******************************************************************************
6851a39cfb0SJung-uk Kim  *
6861a39cfb0SJung-uk Kim  * ACPI Table Data, indexed by signature.
6871a39cfb0SJung-uk Kim  *
688a88e22b7SJung-uk Kim  * Each entry contains: Signature, Table Info, Handler, DtHandler,
689a88e22b7SJung-uk Kim  *  Template, Description
690d6dd1baeSJung-uk Kim  *
691a88e22b7SJung-uk Kim  * Simple tables have only a TableInfo structure, complex tables have a
692a88e22b7SJung-uk Kim  * handler. This table must be NULL terminated. RSDP and FACS are
693a88e22b7SJung-uk Kim  * special-cased elsewhere.
6941a39cfb0SJung-uk Kim  *
695cfd1ed46SJung-uk Kim  * Note: Any tables added here should be duplicated within
696cfd1ed46SJung-uk Kim  * AcpiGbl_SupportedTables in the file common/ahtable.c
697a371a5fdSJung-uk Kim  *
6981a39cfb0SJung-uk Kim  ******************************************************************************/
6991a39cfb0SJung-uk Kim 
700a371a5fdSJung-uk Kim const ACPI_DMTABLE_DATA     AcpiDmTableData[] =
7011a39cfb0SJung-uk Kim {
70297c0b5abSJung-uk Kim     {ACPI_SIG_AEST, NULL,                   AcpiDmDumpAest, DtCompileAest,  TemplateAest},
703ab71bbb7SJung-uk Kim     {ACPI_SIG_AGDI, AcpiDmTableInfoAgdi,    NULL,           NULL,           TemplateAgdi},
704ab71bbb7SJung-uk Kim     {ACPI_SIG_APMT, NULL,                   AcpiDmDumpApmt, DtCompileApmt,  TemplateApmt},
705a371a5fdSJung-uk Kim     {ACPI_SIG_ASF,  NULL,                   AcpiDmDumpAsf,  DtCompileAsf,   TemplateAsf},
706722b1667SJung-uk Kim     {ACPI_SIG_ASPT, NULL,                   AcpiDmDumpAspt, DtCompileAspt,  TemplateAspt},
7071970d693SJung-uk Kim     {ACPI_SIG_BDAT, AcpiDmTableInfoBdat,    NULL,           NULL,           TemplateBdat},
708a371a5fdSJung-uk Kim     {ACPI_SIG_BERT, AcpiDmTableInfoBert,    NULL,           NULL,           TemplateBert},
709a371a5fdSJung-uk Kim     {ACPI_SIG_BGRT, AcpiDmTableInfoBgrt,    NULL,           NULL,           TemplateBgrt},
710a371a5fdSJung-uk Kim     {ACPI_SIG_BOOT, AcpiDmTableInfoBoot,    NULL,           NULL,           TemplateBoot},
7119a4bc520SJung-uk Kim     {ACPI_SIG_CCEL, AcpiDmTableInfoCcel,    NULL,           NULL,           TemplateCcel},
7129a4bc520SJung-uk Kim     {ACPI_SIG_CDAT, NULL,                   AcpiDmDumpCdat, NULL,           TemplateCdat},
713cfd1ed46SJung-uk Kim     {ACPI_SIG_CEDT, NULL,                   AcpiDmDumpCedt, DtCompileCedt,  TemplateCedt},
714a371a5fdSJung-uk Kim     {ACPI_SIG_CPEP, NULL,                   AcpiDmDumpCpep, DtCompileCpep,  TemplateCpep},
715a371a5fdSJung-uk Kim     {ACPI_SIG_CSRT, NULL,                   AcpiDmDumpCsrt, DtCompileCsrt,  TemplateCsrt},
716a371a5fdSJung-uk Kim     {ACPI_SIG_DBG2, AcpiDmTableInfoDbg2,    AcpiDmDumpDbg2, DtCompileDbg2,  TemplateDbg2},
717a371a5fdSJung-uk Kim     {ACPI_SIG_DBGP, AcpiDmTableInfoDbgp,    NULL,           NULL,           TemplateDbgp},
718a371a5fdSJung-uk Kim     {ACPI_SIG_DMAR, NULL,                   AcpiDmDumpDmar, DtCompileDmar,  TemplateDmar},
719a371a5fdSJung-uk Kim     {ACPI_SIG_DRTM, NULL,                   AcpiDmDumpDrtm, DtCompileDrtm,  TemplateDrtm},
720a371a5fdSJung-uk Kim     {ACPI_SIG_ECDT, AcpiDmTableInfoEcdt,    NULL,           NULL,           TemplateEcdt},
721a371a5fdSJung-uk Kim     {ACPI_SIG_EINJ, NULL,                   AcpiDmDumpEinj, DtCompileEinj,  TemplateEinj},
722a371a5fdSJung-uk Kim     {ACPI_SIG_ERST, NULL,                   AcpiDmDumpErst, DtCompileErst,  TemplateErst},
723a371a5fdSJung-uk Kim     {ACPI_SIG_FADT, NULL,                   AcpiDmDumpFadt, DtCompileFadt,  TemplateFadt},
724a371a5fdSJung-uk Kim     {ACPI_SIG_FPDT, NULL,                   AcpiDmDumpFpdt, DtCompileFpdt,  TemplateFpdt},
725a371a5fdSJung-uk Kim     {ACPI_SIG_GTDT, NULL,                   AcpiDmDumpGtdt, DtCompileGtdt,  TemplateGtdt},
726a371a5fdSJung-uk Kim     {ACPI_SIG_HEST, NULL,                   AcpiDmDumpHest, DtCompileHest,  TemplateHest},
727af051161SJung-uk Kim     {ACPI_SIG_HMAT, NULL,                   AcpiDmDumpHmat, DtCompileHmat,  TemplateHmat},
728a371a5fdSJung-uk Kim     {ACPI_SIG_HPET, AcpiDmTableInfoHpet,    NULL,           NULL,           TemplateHpet},
729a371a5fdSJung-uk Kim     {ACPI_SIG_IORT, NULL,                   AcpiDmDumpIort, DtCompileIort,  TemplateIort},
730a371a5fdSJung-uk Kim     {ACPI_SIG_IVRS, NULL,                   AcpiDmDumpIvrs, DtCompileIvrs,  TemplateIvrs},
731a371a5fdSJung-uk Kim     {ACPI_SIG_LPIT, NULL,                   AcpiDmDumpLpit, DtCompileLpit,  TemplateLpit},
732a371a5fdSJung-uk Kim     {ACPI_SIG_MADT, NULL,                   AcpiDmDumpMadt, DtCompileMadt,  TemplateMadt},
733a371a5fdSJung-uk Kim     {ACPI_SIG_MCFG, NULL,                   AcpiDmDumpMcfg, DtCompileMcfg,  TemplateMcfg},
734a371a5fdSJung-uk Kim     {ACPI_SIG_MCHI, AcpiDmTableInfoMchi,    NULL,           NULL,           TemplateMchi},
735722b1667SJung-uk Kim     {ACPI_SIG_MPAM, NULL,                   AcpiDmDumpMpam, DtCompileMpam,  TemplateMpam},
736a371a5fdSJung-uk Kim     {ACPI_SIG_MPST, AcpiDmTableInfoMpst,    AcpiDmDumpMpst, DtCompileMpst,  TemplateMpst},
737a371a5fdSJung-uk Kim     {ACPI_SIG_MSCT, NULL,                   AcpiDmDumpMsct, DtCompileMsct,  TemplateMsct},
738a371a5fdSJung-uk Kim     {ACPI_SIG_MSDM, NULL,                   AcpiDmDumpSlic, DtCompileSlic,  TemplateMsdm},
739a371a5fdSJung-uk Kim     {ACPI_SIG_NFIT, AcpiDmTableInfoNfit,    AcpiDmDumpNfit, DtCompileNfit,  TemplateNfit},
740ab71bbb7SJung-uk Kim     {ACPI_SIG_NHLT, AcpiDmTableInfoNhlt,    AcpiDmDumpNhlt, DtCompileNhlt,  TemplateNhlt},
741a371a5fdSJung-uk Kim     {ACPI_SIG_PCCT, AcpiDmTableInfoPcct,    AcpiDmDumpPcct, DtCompilePcct,  TemplatePcct},
74267d9aa44SJung-uk Kim     {ACPI_SIG_PDTT, AcpiDmTableInfoPdtt,    AcpiDmDumpPdtt, DtCompilePdtt,  TemplatePdtt},
743cfd1ed46SJung-uk Kim     {ACPI_SIG_PHAT, NULL,                   AcpiDmDumpPhat, DtCompilePhat,  TemplatePhat},
744a371a5fdSJung-uk Kim     {ACPI_SIG_PMTT, NULL,                   AcpiDmDumpPmtt, DtCompilePmtt,  TemplatePmtt},
745af051161SJung-uk Kim     {ACPI_SIG_PPTT, NULL,                   AcpiDmDumpPptt, DtCompilePptt,  TemplatePptt},
7461970d693SJung-uk Kim     {ACPI_SIG_PRMT, NULL,                   AcpiDmDumpPrmt, DtCompilePrmt,  TemplatePrmt},
747493deb39SJung-uk Kim     {ACPI_SIG_RASF, AcpiDmTableInfoRasf,    NULL,           NULL,           TemplateRasf},
7481970d693SJung-uk Kim     {ACPI_SIG_RGRT, NULL,                   AcpiDmDumpRgrt, DtCompileRgrt,  TemplateRgrt},
749722b1667SJung-uk Kim     {ACPI_SIG_RHCT, NULL,                   AcpiDmDumpRhct, DtCompileRhct,  TemplateRhct},
750a371a5fdSJung-uk Kim     {ACPI_SIG_RSDT, NULL,                   AcpiDmDumpRsdt, DtCompileRsdt,  TemplateRsdt},
751a371a5fdSJung-uk Kim     {ACPI_SIG_S3PT, NULL,                   NULL,           NULL,           TemplateS3pt},
752a371a5fdSJung-uk Kim     {ACPI_SIG_SBST, AcpiDmTableInfoSbst,    NULL,           NULL,           TemplateSbst},
7535f9b24faSJung-uk Kim     {ACPI_SIG_SDEI, AcpiDmTableInfoSdei,    NULL,           NULL,           TemplateSdei},
75467d9aa44SJung-uk Kim     {ACPI_SIG_SDEV, AcpiDmTableInfoSdev,    AcpiDmDumpSdev, DtCompileSdev,  TemplateSdev},
755a371a5fdSJung-uk Kim     {ACPI_SIG_SLIC, NULL,                   AcpiDmDumpSlic, DtCompileSlic,  TemplateSlic},
756a371a5fdSJung-uk Kim     {ACPI_SIG_SLIT, NULL,                   AcpiDmDumpSlit, DtCompileSlit,  TemplateSlit},
757a371a5fdSJung-uk Kim     {ACPI_SIG_SPCR, AcpiDmTableInfoSpcr,    NULL,           NULL,           TemplateSpcr},
758a371a5fdSJung-uk Kim     {ACPI_SIG_SPMI, AcpiDmTableInfoSpmi,    NULL,           NULL,           TemplateSpmi},
759a371a5fdSJung-uk Kim     {ACPI_SIG_SRAT, NULL,                   AcpiDmDumpSrat, DtCompileSrat,  TemplateSrat},
760a371a5fdSJung-uk Kim     {ACPI_SIG_STAO, NULL,                   AcpiDmDumpStao, DtCompileStao,  TemplateStao},
7611970d693SJung-uk Kim     {ACPI_SIG_SVKL, AcpiDmTableInfoSvkl,    AcpiDmDumpSvkl, DtCompileSvkl,  TemplateSvkl},
762fe0f0bbbSJung-uk Kim     {ACPI_SIG_TCPA, NULL,                   AcpiDmDumpTcpa, DtCompileTcpa,  TemplateTcpa},
763ab71bbb7SJung-uk Kim     {ACPI_SIG_TDEL, AcpiDmTableInfoTdel,    NULL,           NULL,           TemplateTdel},
76467d9aa44SJung-uk Kim     {ACPI_SIG_TPM2, AcpiDmTableInfoTpm2,    AcpiDmDumpTpm2, DtCompileTpm2,  TemplateTpm2},
765a371a5fdSJung-uk Kim     {ACPI_SIG_UEFI, AcpiDmTableInfoUefi,    NULL,           DtCompileUefi,  TemplateUefi},
766cfd1ed46SJung-uk Kim     {ACPI_SIG_VIOT, AcpiDmTableInfoViot,    AcpiDmDumpViot, DtCompileViot,  TemplateViot},
767a371a5fdSJung-uk Kim     {ACPI_SIG_WAET, AcpiDmTableInfoWaet,    NULL,           NULL,           TemplateWaet},
768a371a5fdSJung-uk Kim     {ACPI_SIG_WDAT, NULL,                   AcpiDmDumpWdat, DtCompileWdat,  TemplateWdat},
769a371a5fdSJung-uk Kim     {ACPI_SIG_WDDT, AcpiDmTableInfoWddt,    NULL,           NULL,           TemplateWddt},
770a371a5fdSJung-uk Kim     {ACPI_SIG_WDRT, AcpiDmTableInfoWdrt,    NULL,           NULL,           TemplateWdrt},
771a371a5fdSJung-uk Kim     {ACPI_SIG_WPBT, NULL,                   AcpiDmDumpWpbt, DtCompileWpbt,  TemplateWpbt},
772af051161SJung-uk Kim     {ACPI_SIG_WSMT, AcpiDmTableInfoWsmt,    NULL,           NULL,           TemplateWsmt},
773a371a5fdSJung-uk Kim     {ACPI_SIG_XENV, AcpiDmTableInfoXenv,    NULL,           NULL,           TemplateXenv},
774a371a5fdSJung-uk Kim     {ACPI_SIG_XSDT, NULL,                   AcpiDmDumpXsdt, DtCompileXsdt,  TemplateXsdt},
775a371a5fdSJung-uk Kim     {NULL,          NULL,                   NULL,           NULL,           NULL}
7761a39cfb0SJung-uk Kim };
7771a39cfb0SJung-uk Kim 
7781a39cfb0SJung-uk Kim 
7791a39cfb0SJung-uk Kim /*******************************************************************************
7801a39cfb0SJung-uk Kim  *
7811a39cfb0SJung-uk Kim  * FUNCTION:    AcpiDmGetTableData
7821a39cfb0SJung-uk Kim  *
7831a39cfb0SJung-uk Kim  * PARAMETERS:  Signature           - ACPI signature (4 chars) to match
7841a39cfb0SJung-uk Kim  *
7851a39cfb0SJung-uk Kim  * RETURN:      Pointer to a valid ACPI_DMTABLE_DATA. Null if no match found.
7861a39cfb0SJung-uk Kim  *
7871a39cfb0SJung-uk Kim  * DESCRIPTION: Find a match in the global table of supported ACPI tables
7881a39cfb0SJung-uk Kim  *
7891a39cfb0SJung-uk Kim  ******************************************************************************/
7901a39cfb0SJung-uk Kim 
791a371a5fdSJung-uk Kim const ACPI_DMTABLE_DATA *
AcpiDmGetTableData(char * Signature)7921a39cfb0SJung-uk Kim AcpiDmGetTableData (
7931a39cfb0SJung-uk Kim     char                    *Signature)
7941a39cfb0SJung-uk Kim {
795a371a5fdSJung-uk Kim     const ACPI_DMTABLE_DATA *Info;
7961a39cfb0SJung-uk Kim 
7971a39cfb0SJung-uk Kim 
798a371a5fdSJung-uk Kim     for (Info = AcpiDmTableData; Info->Signature; Info++)
7991a39cfb0SJung-uk Kim     {
800278f0de6SJung-uk Kim         if (ACPI_COMPARE_NAMESEG (Signature, Info->Signature))
8011a39cfb0SJung-uk Kim         {
802a371a5fdSJung-uk Kim             return (Info);
8031a39cfb0SJung-uk Kim         }
8041a39cfb0SJung-uk Kim     }
8051a39cfb0SJung-uk Kim 
8061a39cfb0SJung-uk Kim     return (NULL);
8071a39cfb0SJung-uk Kim }
8081a39cfb0SJung-uk Kim 
8091a39cfb0SJung-uk Kim 
8101a39cfb0SJung-uk Kim /*******************************************************************************
8111a39cfb0SJung-uk Kim  *
8121a39cfb0SJung-uk Kim  * FUNCTION:    AcpiDmDumpDataTable
8131a39cfb0SJung-uk Kim  *
8141a39cfb0SJung-uk Kim  * PARAMETERS:  Table               - An ACPI table
8151a39cfb0SJung-uk Kim  *
8161a39cfb0SJung-uk Kim  * RETURN:      None.
8171a39cfb0SJung-uk Kim  *
8181a39cfb0SJung-uk Kim  * DESCRIPTION: Format the contents of an ACPI data table (any table other
8191a39cfb0SJung-uk Kim  *              than an SSDT or DSDT that does not contain executable AML code)
8201a39cfb0SJung-uk Kim  *
8211a39cfb0SJung-uk Kim  ******************************************************************************/
8221a39cfb0SJung-uk Kim 
8231a39cfb0SJung-uk Kim void
AcpiDmDumpDataTable(ACPI_TABLE_HEADER * Table)8241a39cfb0SJung-uk Kim AcpiDmDumpDataTable (
8251a39cfb0SJung-uk Kim     ACPI_TABLE_HEADER       *Table)
8261a39cfb0SJung-uk Kim {
827a9f12690SJung-uk Kim     ACPI_STATUS             Status;
828a371a5fdSJung-uk Kim     const ACPI_DMTABLE_DATA *TableData;
8291a39cfb0SJung-uk Kim     UINT32                  Length;
8301a39cfb0SJung-uk Kim 
8311a39cfb0SJung-uk Kim 
8321a39cfb0SJung-uk Kim     /* Ignore tables that contain AML */
8331a39cfb0SJung-uk Kim 
8341a39cfb0SJung-uk Kim     if (AcpiUtIsAmlTable (Table))
8351a39cfb0SJung-uk Kim     {
8366f1f1a63SJung-uk Kim         if (AslGbl_VerboseTemplates)
8378ef1a331SJung-uk Kim         {
8388ef1a331SJung-uk Kim             /* Dump the raw table data */
8398ef1a331SJung-uk Kim 
8408ef1a331SJung-uk Kim             Length = Table->Length;
8418ef1a331SJung-uk Kim 
8428ef1a331SJung-uk Kim             AcpiOsPrintf ("\n/*\n%s: Length %d (0x%X)\n\n",
8438ef1a331SJung-uk Kim                 ACPI_RAW_TABLE_DATA_HEADER, Length, Length);
8448ef1a331SJung-uk Kim             AcpiUtDumpBuffer (ACPI_CAST_PTR (UINT8, Table),
8458ef1a331SJung-uk Kim                 Length, DB_BYTE_DISPLAY, 0);
8468ef1a331SJung-uk Kim             AcpiOsPrintf (" */\n");
8478ef1a331SJung-uk Kim         }
8481a39cfb0SJung-uk Kim         return;
8491a39cfb0SJung-uk Kim     }
8501a39cfb0SJung-uk Kim 
8511a39cfb0SJung-uk Kim     /*
8521a39cfb0SJung-uk Kim      * Handle tables that don't use the common ACPI table header structure.
8539a4bc520SJung-uk Kim      * Currently, these are the FACS, RSDP, S3PT and CDAT.
8541a39cfb0SJung-uk Kim      */
855278f0de6SJung-uk Kim     if (ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_FACS))
8561a39cfb0SJung-uk Kim     {
8571a39cfb0SJung-uk Kim         Length = Table->Length;
858fe0f0bbbSJung-uk Kim         Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoFacs);
859fe0f0bbbSJung-uk Kim         if (ACPI_FAILURE (Status))
860fe0f0bbbSJung-uk Kim         {
861fe0f0bbbSJung-uk Kim             return;
862fe0f0bbbSJung-uk Kim         }
8631a39cfb0SJung-uk Kim     }
864ab71bbb7SJung-uk Kim     else if (ACPI_VALIDATE_RSDP_SIG (ACPI_CAST_PTR (ACPI_TABLE_RSDP,
865ab71bbb7SJung-uk Kim         Table)->Signature))
8661a39cfb0SJung-uk Kim     {
8671a39cfb0SJung-uk Kim         Length = AcpiDmDumpRsdp (Table);
8681a39cfb0SJung-uk Kim     }
869278f0de6SJung-uk Kim     else if (ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_S3PT))
8703f0275a0SJung-uk Kim     {
8713f0275a0SJung-uk Kim         Length = AcpiDmDumpS3pt (Table);
8723f0275a0SJung-uk Kim     }
8739a4bc520SJung-uk Kim     else if (!AcpiUtValidNameseg (Table->Signature))
8749a4bc520SJung-uk Kim     {
8759a4bc520SJung-uk Kim         /*
8769a4bc520SJung-uk Kim          * For CDAT we are assuming that there should be at least one non-ASCII
8779a4bc520SJung-uk Kim          * byte in the (normally) 4-character Signature field (at least the
8789a4bc520SJung-uk Kim          * high-order byte should be zero).
8799a4bc520SJung-uk Kim          */
8809a4bc520SJung-uk Kim         if (AcpiGbl_CDAT)
8819a4bc520SJung-uk Kim         {
8829a4bc520SJung-uk Kim             /*
8839a4bc520SJung-uk Kim              * Invalid signature and <-ds CDAT> was specified on the command line.
8849a4bc520SJung-uk Kim              * Therefore, we have a CDAT table.
8859a4bc520SJung-uk Kim              */
8869a4bc520SJung-uk Kim             AcpiDmDumpCdat (Table);
8879a4bc520SJung-uk Kim         }
8889a4bc520SJung-uk Kim         else
8899a4bc520SJung-uk Kim         {
8909a4bc520SJung-uk Kim             fprintf (stderr, "Table has an invalid signature\n");
8919a4bc520SJung-uk Kim         }
8929a4bc520SJung-uk Kim 
8939a4bc520SJung-uk Kim         return;
8949a4bc520SJung-uk Kim     }
8951a39cfb0SJung-uk Kim     else
8961a39cfb0SJung-uk Kim     {
8971a39cfb0SJung-uk Kim         /*
8981a39cfb0SJung-uk Kim          * All other tables must use the common ACPI table header, dump it now
8991a39cfb0SJung-uk Kim          */
9001a39cfb0SJung-uk Kim         Length = Table->Length;
901a9f12690SJung-uk Kim         Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoHeader);
902a9f12690SJung-uk Kim         if (ACPI_FAILURE (Status))
903a9f12690SJung-uk Kim         {
904a9f12690SJung-uk Kim             return;
905a9f12690SJung-uk Kim         }
9061a39cfb0SJung-uk Kim         AcpiOsPrintf ("\n");
9071a39cfb0SJung-uk Kim 
9081a39cfb0SJung-uk Kim         /* Match signature and dispatch appropriately */
9091a39cfb0SJung-uk Kim 
9101a39cfb0SJung-uk Kim         TableData = AcpiDmGetTableData (Table->Signature);
9111a39cfb0SJung-uk Kim         if (!TableData)
9121a39cfb0SJung-uk Kim         {
9135ef50723SJung-uk Kim             if (!strncmp (Table->Signature, "OEM", 3))
9141a39cfb0SJung-uk Kim             {
9151a39cfb0SJung-uk Kim                 AcpiOsPrintf ("\n**** OEM-defined ACPI table [%4.4s], unknown contents\n\n",
9161a39cfb0SJung-uk Kim                     Table->Signature);
9171a39cfb0SJung-uk Kim             }
9181a39cfb0SJung-uk Kim             else
9191a39cfb0SJung-uk Kim             {
9207cf3e94aSJung-uk Kim                 AcpiOsPrintf ("\n**** Unknown ACPI table signature [%4.4s]\n\n",
9211a39cfb0SJung-uk Kim                     Table->Signature);
9227cf3e94aSJung-uk Kim 
9237cf3e94aSJung-uk Kim                 fprintf (stderr, "Unknown ACPI table signature [%4.4s], ",
9249c48c75eSJung-uk Kim                     Table->Signature);
9257cf3e94aSJung-uk Kim 
9267cf3e94aSJung-uk Kim                 if (!AcpiGbl_ForceAmlDisassembly)
9277cf3e94aSJung-uk Kim                 {
9287cf3e94aSJung-uk Kim                     fprintf (stderr, "decoding ACPI table header only\n");
9297cf3e94aSJung-uk Kim                 }
9307cf3e94aSJung-uk Kim                 else
9317cf3e94aSJung-uk Kim                 {
9327cf3e94aSJung-uk Kim                     fprintf (stderr, "assuming table contains valid AML code\n");
9337cf3e94aSJung-uk Kim                 }
9341a39cfb0SJung-uk Kim             }
9351a39cfb0SJung-uk Kim         }
9361a39cfb0SJung-uk Kim         else if (TableData->TableHandler)
9371a39cfb0SJung-uk Kim         {
9381a39cfb0SJung-uk Kim             /* Complex table, has a handler */
9391a39cfb0SJung-uk Kim 
9401a39cfb0SJung-uk Kim             TableData->TableHandler (Table);
9411a39cfb0SJung-uk Kim         }
9421a39cfb0SJung-uk Kim         else if (TableData->TableInfo)
9431a39cfb0SJung-uk Kim         {
9441a39cfb0SJung-uk Kim             /* Simple table, just walk the info table */
9451a39cfb0SJung-uk Kim 
946fe0f0bbbSJung-uk Kim             Status = AcpiDmDumpTable (Length, 0, Table, 0, TableData->TableInfo);
947fe0f0bbbSJung-uk Kim             if (ACPI_FAILURE (Status))
948fe0f0bbbSJung-uk Kim             {
949fe0f0bbbSJung-uk Kim                 return;
950fe0f0bbbSJung-uk Kim             }
9511a39cfb0SJung-uk Kim         }
9521a39cfb0SJung-uk Kim     }
9531a39cfb0SJung-uk Kim 
9546f1f1a63SJung-uk Kim     if (!AslGbl_DoTemplates || AslGbl_VerboseTemplates)
955a88e22b7SJung-uk Kim     {
956a88e22b7SJung-uk Kim         /* Dump the raw table data */
9571a39cfb0SJung-uk Kim 
958d244b227SJung-uk Kim         AcpiOsPrintf ("\n%s: Length %d (0x%X)\n\n",
959d244b227SJung-uk Kim             ACPI_RAW_TABLE_DATA_HEADER, Length, Length);
9608ef1a331SJung-uk Kim         AcpiUtDumpBuffer (ACPI_CAST_PTR (UINT8, Table),
9618ef1a331SJung-uk Kim             Length, DB_BYTE_DISPLAY, 0);
9621a39cfb0SJung-uk Kim     }
963a88e22b7SJung-uk Kim }
9641a39cfb0SJung-uk Kim 
9651a39cfb0SJung-uk Kim 
9661a39cfb0SJung-uk Kim /*******************************************************************************
9671a39cfb0SJung-uk Kim  *
9681a39cfb0SJung-uk Kim  * FUNCTION:    AcpiDmLineHeader
9691a39cfb0SJung-uk Kim  *
9701a39cfb0SJung-uk Kim  * PARAMETERS:  Offset              - Current byte offset, from table start
9711a39cfb0SJung-uk Kim  *              ByteLength          - Length of the field in bytes, 0 for flags
9721a39cfb0SJung-uk Kim  *              Name                - Name of this field
9731a39cfb0SJung-uk Kim  *
9741a39cfb0SJung-uk Kim  * RETURN:      None
9751a39cfb0SJung-uk Kim  *
9761a39cfb0SJung-uk Kim  * DESCRIPTION: Utility routines for formatting output lines. Displays the
9771a39cfb0SJung-uk Kim  *              current table offset in hex and decimal, the field length,
9781a39cfb0SJung-uk Kim  *              and the field name.
9791a39cfb0SJung-uk Kim  *
9801a39cfb0SJung-uk Kim  ******************************************************************************/
9811a39cfb0SJung-uk Kim 
9821a39cfb0SJung-uk Kim void
AcpiDmLineHeader(UINT32 Offset,UINT32 ByteLength,char * Name)9831a39cfb0SJung-uk Kim AcpiDmLineHeader (
9841a39cfb0SJung-uk Kim     UINT32                  Offset,
9851a39cfb0SJung-uk Kim     UINT32                  ByteLength,
9861a39cfb0SJung-uk Kim     char                    *Name)
9871a39cfb0SJung-uk Kim {
9881a39cfb0SJung-uk Kim 
989dcbce41eSJung-uk Kim     /* Allow a null name for fields that span multiple lines (large buffers) */
990dcbce41eSJung-uk Kim 
991dcbce41eSJung-uk Kim     if (!Name)
992dcbce41eSJung-uk Kim     {
993dcbce41eSJung-uk Kim         Name = "";
994dcbce41eSJung-uk Kim     }
995dcbce41eSJung-uk Kim 
9966f1f1a63SJung-uk Kim     if (AslGbl_DoTemplates && !AslGbl_VerboseTemplates) /* Terse template */
997a88e22b7SJung-uk Kim     {
998a88e22b7SJung-uk Kim         if (ByteLength)
999a88e22b7SJung-uk Kim         {
1000dcbce41eSJung-uk Kim             AcpiOsPrintf ("[%.4d] %34s : ", ByteLength, Name);
1001a88e22b7SJung-uk Kim         }
1002a88e22b7SJung-uk Kim         else
1003a88e22b7SJung-uk Kim         {
1004d052a1ccSJung-uk Kim             if (*Name)
1005d052a1ccSJung-uk Kim             {
1006dcbce41eSJung-uk Kim                 AcpiOsPrintf ("%41s : ", Name);
1007a88e22b7SJung-uk Kim             }
1008d052a1ccSJung-uk Kim             else
1009d052a1ccSJung-uk Kim             {
1010d052a1ccSJung-uk Kim                 AcpiOsPrintf ("%41s   ", Name);
1011d052a1ccSJung-uk Kim             }
1012d052a1ccSJung-uk Kim         }
1013a88e22b7SJung-uk Kim     }
1014a88e22b7SJung-uk Kim     else /* Normal disassembler or verbose template */
1015a88e22b7SJung-uk Kim     {
10161a39cfb0SJung-uk Kim         if (ByteLength)
10171a39cfb0SJung-uk Kim         {
10189a4bc520SJung-uk Kim             AcpiOsPrintf ("[%3.3Xh %4.4u %3.3Xh] %27s : ",
10191a39cfb0SJung-uk Kim                 Offset, Offset, ByteLength, Name);
10201a39cfb0SJung-uk Kim         }
10211a39cfb0SJung-uk Kim         else
10221a39cfb0SJung-uk Kim         {
1023d052a1ccSJung-uk Kim             if (*Name)
1024d052a1ccSJung-uk Kim             {
1025dcbce41eSJung-uk Kim                 AcpiOsPrintf ("%44s : ", Name);
10261a39cfb0SJung-uk Kim             }
1027d052a1ccSJung-uk Kim             else
1028d052a1ccSJung-uk Kim             {
1029d052a1ccSJung-uk Kim                 AcpiOsPrintf ("%44s   ", Name);
1030d052a1ccSJung-uk Kim             }
1031d052a1ccSJung-uk Kim         }
10321a39cfb0SJung-uk Kim     }
1033a88e22b7SJung-uk Kim }
10341a39cfb0SJung-uk Kim 
10351a39cfb0SJung-uk Kim void
AcpiDmLineHeader2(UINT32 Offset,UINT32 ByteLength,char * Name,UINT32 Value)10361a39cfb0SJung-uk Kim AcpiDmLineHeader2 (
10371a39cfb0SJung-uk Kim     UINT32                  Offset,
10381a39cfb0SJung-uk Kim     UINT32                  ByteLength,
10391a39cfb0SJung-uk Kim     char                    *Name,
10401a39cfb0SJung-uk Kim     UINT32                  Value)
10411a39cfb0SJung-uk Kim {
10421a39cfb0SJung-uk Kim 
10436f1f1a63SJung-uk Kim     if (AslGbl_DoTemplates && !AslGbl_VerboseTemplates) /* Terse template */
1044a88e22b7SJung-uk Kim     {
1045a88e22b7SJung-uk Kim         if (ByteLength)
1046a88e22b7SJung-uk Kim         {
1047d052a1ccSJung-uk Kim             AcpiOsPrintf ("[%.4d] %30s %3d : ",
1048a88e22b7SJung-uk Kim                 ByteLength, Name, Value);
1049a88e22b7SJung-uk Kim         }
1050a88e22b7SJung-uk Kim         else
1051a88e22b7SJung-uk Kim         {
1052a88e22b7SJung-uk Kim             AcpiOsPrintf ("%36s % 3d : ",
1053a88e22b7SJung-uk Kim                 Name, Value);
1054a88e22b7SJung-uk Kim         }
1055a88e22b7SJung-uk Kim     }
1056a88e22b7SJung-uk Kim     else /* Normal disassembler or verbose template */
1057a88e22b7SJung-uk Kim     {
10581a39cfb0SJung-uk Kim         if (ByteLength)
10591a39cfb0SJung-uk Kim         {
10609a4bc520SJung-uk Kim             AcpiOsPrintf ("[%3.3Xh %4.4u %3.3Xh] %24s %3d : ",
10611a39cfb0SJung-uk Kim                 Offset, Offset, ByteLength, Name, Value);
10621a39cfb0SJung-uk Kim         }
10631a39cfb0SJung-uk Kim         else
10641a39cfb0SJung-uk Kim         {
10659a4bc520SJung-uk Kim             AcpiOsPrintf ("[%3.3Xh %4.4u   ] %24s %3d : ",
10661a39cfb0SJung-uk Kim                 Offset, Offset, Name, Value);
10671a39cfb0SJung-uk Kim         }
10681a39cfb0SJung-uk Kim     }
1069a88e22b7SJung-uk Kim }
10701a39cfb0SJung-uk Kim 
10711a39cfb0SJung-uk Kim 
10721a39cfb0SJung-uk Kim /*******************************************************************************
10731a39cfb0SJung-uk Kim  *
10741a39cfb0SJung-uk Kim  * FUNCTION:    AcpiDmDumpTable
10751a39cfb0SJung-uk Kim  *
10761a39cfb0SJung-uk Kim  * PARAMETERS:  TableLength         - Length of the entire ACPI table
10771a39cfb0SJung-uk Kim  *              TableOffset         - Starting offset within the table for this
10781a39cfb0SJung-uk Kim  *                                    sub-descriptor (0 if main table)
10791a39cfb0SJung-uk Kim  *              Table               - The ACPI table
1080a9f12690SJung-uk Kim  *              SubtableLength      - Length of this sub-descriptor
10811a39cfb0SJung-uk Kim  *              Info                - Info table for this ACPI table
10821a39cfb0SJung-uk Kim  *
108370e6ab8fSJung-uk Kim  * RETURN:      Status
10841a39cfb0SJung-uk Kim  *
10851a39cfb0SJung-uk Kim  * DESCRIPTION: Display ACPI table contents by walking the Info table.
10861a39cfb0SJung-uk Kim  *
1087a88e22b7SJung-uk Kim  * Note: This function must remain in sync with DtGetFieldLength.
1088a88e22b7SJung-uk Kim  *
10891a39cfb0SJung-uk Kim  ******************************************************************************/
10901a39cfb0SJung-uk Kim 
1091a9f12690SJung-uk Kim ACPI_STATUS
AcpiDmDumpTable(UINT32 TableLength,UINT32 TableOffset,void * Table,UINT32 SubtableLength,ACPI_DMTABLE_INFO * Info)10921a39cfb0SJung-uk Kim AcpiDmDumpTable (
10931a39cfb0SJung-uk Kim     UINT32                  TableLength,
10941a39cfb0SJung-uk Kim     UINT32                  TableOffset,
10951a39cfb0SJung-uk Kim     void                    *Table,
10961a39cfb0SJung-uk Kim     UINT32                  SubtableLength,
10971a39cfb0SJung-uk Kim     ACPI_DMTABLE_INFO       *Info)
10981a39cfb0SJung-uk Kim {
10991a39cfb0SJung-uk Kim     UINT8                   *Target;
11001a39cfb0SJung-uk Kim     UINT32                  CurrentOffset;
11011a39cfb0SJung-uk Kim     UINT32                  ByteLength;
11021a39cfb0SJung-uk Kim     UINT8                   Temp8;
11031a39cfb0SJung-uk Kim     UINT16                  Temp16;
11047cf3e94aSJung-uk Kim     UINT32                  Temp32;
1105313a0c13SJung-uk Kim     UINT64                  Value;
1106a371a5fdSJung-uk Kim     const AH_TABLE          *TableData;
1107d6dd1baeSJung-uk Kim     const char              *Name;
1108a9f12690SJung-uk Kim     BOOLEAN                 LastOutputBlankLine = FALSE;
1109fe0f0bbbSJung-uk Kim     ACPI_STATUS             Status;
1110d6dd1baeSJung-uk Kim     char                    RepairedName[8];
11111a39cfb0SJung-uk Kim 
11121a39cfb0SJung-uk Kim 
11131a39cfb0SJung-uk Kim     if (!Info)
11141a39cfb0SJung-uk Kim     {
11151a39cfb0SJung-uk Kim         AcpiOsPrintf ("Display not implemented\n");
1116a9f12690SJung-uk Kim         return (AE_NOT_IMPLEMENTED);
11171a39cfb0SJung-uk Kim     }
11181a39cfb0SJung-uk Kim 
11191a39cfb0SJung-uk Kim     /* Walk entire Info table; Null name terminates */
11201a39cfb0SJung-uk Kim 
11211a39cfb0SJung-uk Kim     for (; Info->Name; Info++)
11221a39cfb0SJung-uk Kim     {
11231a39cfb0SJung-uk Kim         /*
11241a39cfb0SJung-uk Kim          * Target points to the field within the ACPI Table. CurrentOffset is
11251a39cfb0SJung-uk Kim          * the offset of the field from the start of the main table.
11261a39cfb0SJung-uk Kim          */
11271a39cfb0SJung-uk Kim         Target = ACPI_ADD_PTR (UINT8, Table, Info->Offset);
11281a39cfb0SJung-uk Kim         CurrentOffset = TableOffset + Info->Offset;
11291a39cfb0SJung-uk Kim 
1130a371a5fdSJung-uk Kim         /* Check for beyond subtable end or (worse) beyond EOT */
11311a39cfb0SJung-uk Kim 
1132ab71bbb7SJung-uk Kim         if (SubtableLength && (Info->Offset > SubtableLength))
11331a39cfb0SJung-uk Kim         {
11347cf3e94aSJung-uk Kim             AcpiOsPrintf (
11351970d693SJung-uk Kim                 "/**** ACPI subtable terminates early (Len %u) - "
11361970d693SJung-uk Kim                 "may be older version (dump table) */\n", SubtableLength);
1137a371a5fdSJung-uk Kim 
1138a371a5fdSJung-uk Kim             /* Move on to next subtable */
1139a371a5fdSJung-uk Kim 
1140a371a5fdSJung-uk Kim             return (AE_OK);
1141a371a5fdSJung-uk Kim         }
1142a371a5fdSJung-uk Kim 
1143a371a5fdSJung-uk Kim         if (CurrentOffset >= TableLength)
1144a371a5fdSJung-uk Kim         {
1145a371a5fdSJung-uk Kim             AcpiOsPrintf (
1146a371a5fdSJung-uk Kim                 "/**** ACPI table terminates "
11479a4bc520SJung-uk Kim                 "in the middle of a data structure! (dump table) \n"
11489a4bc520SJung-uk Kim                 "CurrentOffset: %X, TableLength: %X ***/", CurrentOffset, TableLength);
1149a9f12690SJung-uk Kim             return (AE_BAD_DATA);
11501a39cfb0SJung-uk Kim         }
11511a39cfb0SJung-uk Kim 
11521a39cfb0SJung-uk Kim         /* Generate the byte length for this field */
11531a39cfb0SJung-uk Kim 
11541a39cfb0SJung-uk Kim         switch (Info->Opcode)
11551a39cfb0SJung-uk Kim         {
11561a39cfb0SJung-uk Kim         case ACPI_DMT_UINT8:
11571a39cfb0SJung-uk Kim         case ACPI_DMT_CHKSUM:
11581a39cfb0SJung-uk Kim         case ACPI_DMT_SPACEID:
11595a77b11bSJung-uk Kim         case ACPI_DMT_ACCWIDTH:
1160cfd1ed46SJung-uk Kim         case ACPI_DMT_CEDT:
1161d6dd1baeSJung-uk Kim         case ACPI_DMT_IVRS:
11621970d693SJung-uk Kim         case ACPI_DMT_IVRS_DE:
1163313a0c13SJung-uk Kim         case ACPI_DMT_GTDT:
11641a39cfb0SJung-uk Kim         case ACPI_DMT_MADT:
1165722b1667SJung-uk Kim         case ACPI_DMT_MPAM_LOCATOR:
11661b7a2680SJung-uk Kim         case ACPI_DMT_NHLT1:
11671b7a2680SJung-uk Kim         case ACPI_DMT_NHLT1a:
1168ab71bbb7SJung-uk Kim         case ACPI_DMT_NHLT1b:
1169ab71bbb7SJung-uk Kim         case ACPI_DMT_NHLT1c:
1170ab71bbb7SJung-uk Kim         case ACPI_DMT_NHLT1d:
1171ab71bbb7SJung-uk Kim         case ACPI_DMT_NHLT1f:
1172313a0c13SJung-uk Kim         case ACPI_DMT_PCCT:
11733f0275a0SJung-uk Kim         case ACPI_DMT_PMTT:
1174af051161SJung-uk Kim         case ACPI_DMT_PPTT:
11751970d693SJung-uk Kim         case ACPI_DMT_RGRT:
117667d9aa44SJung-uk Kim         case ACPI_DMT_SDEV:
11771a39cfb0SJung-uk Kim         case ACPI_DMT_SRAT:
117897c0b5abSJung-uk Kim         case ACPI_DMT_AEST:
117997c0b5abSJung-uk Kim         case ACPI_DMT_AEST_RES:
118097c0b5abSJung-uk Kim         case ACPI_DMT_AEST_XFACE:
118197c0b5abSJung-uk Kim         case ACPI_DMT_AEST_XRUPT:
1182a9f12690SJung-uk Kim         case ACPI_DMT_ASF:
11839a4bc520SJung-uk Kim         case ACPI_DMT_CDAT:
1184a9f12690SJung-uk Kim         case ACPI_DMT_HESTNTYP:
1185a9f12690SJung-uk Kim         case ACPI_DMT_FADTPM:
1186a88e22b7SJung-uk Kim         case ACPI_DMT_EINJACT:
1187a88e22b7SJung-uk Kim         case ACPI_DMT_EINJINST:
1188a88e22b7SJung-uk Kim         case ACPI_DMT_ERSTACT:
1189a88e22b7SJung-uk Kim         case ACPI_DMT_ERSTINST:
1190313a0c13SJung-uk Kim         case ACPI_DMT_DMAR_SCOPE:
1191cfd1ed46SJung-uk Kim         case ACPI_DMT_VIOT:
1192a9d8d09cSJung-uk Kim 
11931a39cfb0SJung-uk Kim             ByteLength = 1;
11941a39cfb0SJung-uk Kim             break;
1195a9d8d09cSJung-uk Kim 
1196722b1667SJung-uk Kim         case ACPI_DMT_ASPT:
11971a39cfb0SJung-uk Kim         case ACPI_DMT_UINT16:
11981a39cfb0SJung-uk Kim         case ACPI_DMT_DMAR:
1199a9f12690SJung-uk Kim         case ACPI_DMT_HEST:
1200af051161SJung-uk Kim         case ACPI_DMT_HMAT:
1201a371a5fdSJung-uk Kim         case ACPI_DMT_NFIT:
1202ab71bbb7SJung-uk Kim         case ACPI_DMT_NHLT1e:
1203cfd1ed46SJung-uk Kim         case ACPI_DMT_PHAT:
1204*07c64d74SJung-uk Kim         case ACPI_DMT_RHCT:
1205a9d8d09cSJung-uk Kim 
12061a39cfb0SJung-uk Kim             ByteLength = 2;
12071a39cfb0SJung-uk Kim             break;
1208a9d8d09cSJung-uk Kim 
12091a39cfb0SJung-uk Kim         case ACPI_DMT_UINT24:
1210a9d8d09cSJung-uk Kim 
12111a39cfb0SJung-uk Kim             ByteLength = 3;
12121a39cfb0SJung-uk Kim             break;
1213a9d8d09cSJung-uk Kim 
12141a39cfb0SJung-uk Kim         case ACPI_DMT_UINT32:
121597c0b5abSJung-uk Kim         case ACPI_DMT_AEST_CACHE:
121697c0b5abSJung-uk Kim         case ACPI_DMT_AEST_GIC:
12171a39cfb0SJung-uk Kim         case ACPI_DMT_NAME4:
12181a39cfb0SJung-uk Kim         case ACPI_DMT_SIG:
1219313a0c13SJung-uk Kim         case ACPI_DMT_LPIT:
122067d9aa44SJung-uk Kim         case ACPI_DMT_TPM2:
1221a9d8d09cSJung-uk Kim 
12221a39cfb0SJung-uk Kim             ByteLength = 4;
12231a39cfb0SJung-uk Kim             break;
1224a9d8d09cSJung-uk Kim 
12253f0275a0SJung-uk Kim         case ACPI_DMT_UINT40:
1226a9d8d09cSJung-uk Kim 
12273f0275a0SJung-uk Kim             ByteLength = 5;
12283f0275a0SJung-uk Kim             break;
1229a9d8d09cSJung-uk Kim 
12303f0275a0SJung-uk Kim         case ACPI_DMT_UINT48:
12311a39cfb0SJung-uk Kim         case ACPI_DMT_NAME6:
1232a9d8d09cSJung-uk Kim 
12331a39cfb0SJung-uk Kim             ByteLength = 6;
12341a39cfb0SJung-uk Kim             break;
1235a9d8d09cSJung-uk Kim 
12361a39cfb0SJung-uk Kim         case ACPI_DMT_UINT56:
12370b94ba42SJung-uk Kim         case ACPI_DMT_BUF7:
1238a9d8d09cSJung-uk Kim 
12391a39cfb0SJung-uk Kim             ByteLength = 7;
12401a39cfb0SJung-uk Kim             break;
1241a9d8d09cSJung-uk Kim 
12421a39cfb0SJung-uk Kim         case ACPI_DMT_UINT64:
12431a39cfb0SJung-uk Kim         case ACPI_DMT_NAME8:
1244a9d8d09cSJung-uk Kim 
12451a39cfb0SJung-uk Kim             ByteLength = 8;
12461a39cfb0SJung-uk Kim             break;
1247a9d8d09cSJung-uk Kim 
12488d744e47SJung-uk Kim         case ACPI_DMT_BUF10:
12498d744e47SJung-uk Kim 
12508d744e47SJung-uk Kim             ByteLength = 10;
12518d744e47SJung-uk Kim             break;
12528d744e47SJung-uk Kim 
1253493deb39SJung-uk Kim         case ACPI_DMT_BUF12:
1254493deb39SJung-uk Kim 
1255493deb39SJung-uk Kim             ByteLength = 12;
1256493deb39SJung-uk Kim             break;
1257493deb39SJung-uk Kim 
1258d6dd1baeSJung-uk Kim         case ACPI_DMT_BUF16:
1259d244b227SJung-uk Kim         case ACPI_DMT_UUID:
1260a9d8d09cSJung-uk Kim 
1261d6dd1baeSJung-uk Kim             ByteLength = 16;
1262d6dd1baeSJung-uk Kim             break;
1263a9d8d09cSJung-uk Kim 
12641b7a2680SJung-uk Kim         case ACPI_DMT_BUF18:
12651b7a2680SJung-uk Kim 
12661b7a2680SJung-uk Kim             ByteLength = 18;
12671b7a2680SJung-uk Kim             break;
12681b7a2680SJung-uk Kim 
1269dcbce41eSJung-uk Kim         case ACPI_DMT_BUF128:
1270a9d8d09cSJung-uk Kim 
1271dcbce41eSJung-uk Kim             ByteLength = 128;
1272dcbce41eSJung-uk Kim             break;
1273a9d8d09cSJung-uk Kim 
127497c0b5abSJung-uk Kim         case ACPI_DMT_WPBT_UNICODE:
127597c0b5abSJung-uk Kim 
127697c0b5abSJung-uk Kim             ByteLength = SubtableLength;
127797c0b5abSJung-uk Kim             CurrentOffset = sizeof (ACPI_TABLE_WPBT);
127897c0b5abSJung-uk Kim             break;
127997c0b5abSJung-uk Kim 
1280a371a5fdSJung-uk Kim         case ACPI_DMT_UNICODE:
12817cf3e94aSJung-uk Kim         case ACPI_DMT_BUFFER:
12827cf3e94aSJung-uk Kim         case ACPI_DMT_RAW_BUFFER:
12837cf3e94aSJung-uk Kim 
12847cf3e94aSJung-uk Kim             ByteLength = SubtableLength;
12857cf3e94aSJung-uk Kim             break;
12867cf3e94aSJung-uk Kim 
1287cfd1ed46SJung-uk Kim         case ACPI_DMT_PMTT_VENDOR:
1288cfd1ed46SJung-uk Kim             /*
1289cfd1ed46SJung-uk Kim              * Calculate the length of the vendor data for the PMTT table:
1290cfd1ed46SJung-uk Kim              * Length = (Current Subtable ptr + Subtable length) -
1291cfd1ed46SJung-uk Kim              *          Start of the vendor data (Target)
1292cfd1ed46SJung-uk Kim              */
1293cfd1ed46SJung-uk Kim             ByteLength = ((ACPI_CAST_PTR (char, Table) +
1294cfd1ed46SJung-uk Kim                             (ACPI_CAST_PTR (ACPI_PMTT_HEADER, Table)->Length)) -
1295cfd1ed46SJung-uk Kim                             ACPI_CAST_PTR (char, Target));
1296cfd1ed46SJung-uk Kim             break;
1297cfd1ed46SJung-uk Kim 
12981a39cfb0SJung-uk Kim         case ACPI_DMT_STRING:
1299a9d8d09cSJung-uk Kim 
13005ef50723SJung-uk Kim             ByteLength = strlen (ACPI_CAST_PTR (char, Target)) + 1;
13011a39cfb0SJung-uk Kim             break;
1302a9d8d09cSJung-uk Kim 
13031970d693SJung-uk Kim         case ACPI_DMT_IVRS_UNTERMINATED_STRING:
13041970d693SJung-uk Kim 
13051970d693SJung-uk Kim             ByteLength = ((ACPI_CAST_PTR (ACPI_IVRS_DEVICE_HID, Target) -1)->UidLength);
13061970d693SJung-uk Kim             break;
13071970d693SJung-uk Kim 
13081a39cfb0SJung-uk Kim         case ACPI_DMT_GAS:
1309a9d8d09cSJung-uk Kim 
1310a9f12690SJung-uk Kim             if (!LastOutputBlankLine)
1311a9f12690SJung-uk Kim             {
13121a39cfb0SJung-uk Kim                 AcpiOsPrintf ("\n");
1313a9f12690SJung-uk Kim                 LastOutputBlankLine = TRUE;
1314a9f12690SJung-uk Kim             }
1315f8146b88SJung-uk Kim 
13161a39cfb0SJung-uk Kim             ByteLength = sizeof (ACPI_GENERIC_ADDRESS);
13171a39cfb0SJung-uk Kim             break;
1318a9d8d09cSJung-uk Kim 
1319a9f12690SJung-uk Kim         case ACPI_DMT_HESTNTFY:
1320a9d8d09cSJung-uk Kim 
1321a9f12690SJung-uk Kim             if (!LastOutputBlankLine)
1322a9f12690SJung-uk Kim             {
1323a9f12690SJung-uk Kim                 AcpiOsPrintf ("\n");
1324a9f12690SJung-uk Kim                 LastOutputBlankLine = TRUE;
1325a9f12690SJung-uk Kim             }
1326f8146b88SJung-uk Kim 
1327a9f12690SJung-uk Kim             ByteLength = sizeof (ACPI_HEST_NOTIFY);
1328a9f12690SJung-uk Kim             break;
1329a9d8d09cSJung-uk Kim 
1330a371a5fdSJung-uk Kim         case ACPI_DMT_IORTMEM:
1331a371a5fdSJung-uk Kim 
1332a371a5fdSJung-uk Kim             if (!LastOutputBlankLine)
1333a371a5fdSJung-uk Kim             {
1334a371a5fdSJung-uk Kim                 LastOutputBlankLine = FALSE;
1335a371a5fdSJung-uk Kim             }
1336f8146b88SJung-uk Kim 
1337a371a5fdSJung-uk Kim             ByteLength = sizeof (ACPI_IORT_MEMORY_ACCESS);
1338a371a5fdSJung-uk Kim             break;
1339a371a5fdSJung-uk Kim 
13401a39cfb0SJung-uk Kim         default:
1341a9d8d09cSJung-uk Kim 
13421a39cfb0SJung-uk Kim             ByteLength = 0;
13431a39cfb0SJung-uk Kim             break;
13441a39cfb0SJung-uk Kim         }
13451a39cfb0SJung-uk Kim 
1346a371a5fdSJung-uk Kim         /* Check if we are beyond a subtable, or (worse) beyond EOT */
1347a371a5fdSJung-uk Kim 
1348a9f12690SJung-uk Kim         if (CurrentOffset + ByteLength > TableLength)
1349a9f12690SJung-uk Kim         {
1350a371a5fdSJung-uk Kim             if (SubtableLength)
1351a371a5fdSJung-uk Kim             {
13527cf3e94aSJung-uk Kim                 AcpiOsPrintf (
1353a371a5fdSJung-uk Kim                     "/**** ACPI subtable terminates early - "
1354a371a5fdSJung-uk Kim                     "may be older version (dump table) */\n");
1355a371a5fdSJung-uk Kim 
1356a371a5fdSJung-uk Kim                 /* Move on to next subtable */
1357a371a5fdSJung-uk Kim 
1358a371a5fdSJung-uk Kim                 return (AE_OK);
1359a371a5fdSJung-uk Kim             }
1360a371a5fdSJung-uk Kim 
1361a371a5fdSJung-uk Kim             AcpiOsPrintf (
1362a371a5fdSJung-uk Kim                 "/**** ACPI table terminates "
1363a371a5fdSJung-uk Kim                 "in the middle of a data structure! */\n");
1364a9f12690SJung-uk Kim             return (AE_BAD_DATA);
1365a9f12690SJung-uk Kim         }
1366a9f12690SJung-uk Kim 
13673f0275a0SJung-uk Kim         if (Info->Opcode == ACPI_DMT_EXTRA_TEXT)
13683f0275a0SJung-uk Kim         {
13693f0275a0SJung-uk Kim             AcpiOsPrintf ("%s", Info->Name);
13703f0275a0SJung-uk Kim             continue;
13713f0275a0SJung-uk Kim         }
13723f0275a0SJung-uk Kim 
13731a39cfb0SJung-uk Kim         /* Start a new line and decode the opcode */
13741a39cfb0SJung-uk Kim 
13751a39cfb0SJung-uk Kim         AcpiDmLineHeader (CurrentOffset, ByteLength, Info->Name);
13761a39cfb0SJung-uk Kim 
13771a39cfb0SJung-uk Kim         switch (Info->Opcode)
13781a39cfb0SJung-uk Kim         {
13791a39cfb0SJung-uk Kim         /* Single-bit Flag fields. Note: Opcode is the bit position */
13801a39cfb0SJung-uk Kim 
13811a39cfb0SJung-uk Kim         case ACPI_DMT_FLAG0:
13821a39cfb0SJung-uk Kim         case ACPI_DMT_FLAG1:
13831a39cfb0SJung-uk Kim         case ACPI_DMT_FLAG2:
13841a39cfb0SJung-uk Kim         case ACPI_DMT_FLAG3:
13851a39cfb0SJung-uk Kim         case ACPI_DMT_FLAG4:
13861a39cfb0SJung-uk Kim         case ACPI_DMT_FLAG5:
13871a39cfb0SJung-uk Kim         case ACPI_DMT_FLAG6:
13881a39cfb0SJung-uk Kim         case ACPI_DMT_FLAG7:
13891a39cfb0SJung-uk Kim 
13901a39cfb0SJung-uk Kim             AcpiOsPrintf ("%1.1X\n", (*Target >> Info->Opcode) & 0x01);
13911a39cfb0SJung-uk Kim             break;
13921a39cfb0SJung-uk Kim 
13931a39cfb0SJung-uk Kim         /* 2-bit Flag fields */
13941a39cfb0SJung-uk Kim 
13951a39cfb0SJung-uk Kim         case ACPI_DMT_FLAGS0:
13961a39cfb0SJung-uk Kim 
13971a39cfb0SJung-uk Kim             AcpiOsPrintf ("%1.1X\n", *Target & 0x03);
13981a39cfb0SJung-uk Kim             break;
13991a39cfb0SJung-uk Kim 
14003f0275a0SJung-uk Kim         case ACPI_DMT_FLAGS1:
14013f0275a0SJung-uk Kim 
14023f0275a0SJung-uk Kim             AcpiOsPrintf ("%1.1X\n", (*Target >> 1) & 0x03);
14033f0275a0SJung-uk Kim             break;
14043f0275a0SJung-uk Kim 
14051a39cfb0SJung-uk Kim         case ACPI_DMT_FLAGS2:
14061a39cfb0SJung-uk Kim 
14071a39cfb0SJung-uk Kim             AcpiOsPrintf ("%1.1X\n", (*Target >> 2) & 0x03);
14081a39cfb0SJung-uk Kim             break;
14091a39cfb0SJung-uk Kim 
1410ab71bbb7SJung-uk Kim         case ACPI_DMT_FLAGS8_2:
1411ab71bbb7SJung-uk Kim 
1412ab71bbb7SJung-uk Kim             AcpiOsPrintf ("%2.2X\n", (*Target >> 2) & 0xFF);
1413ab71bbb7SJung-uk Kim             break;
1414ab71bbb7SJung-uk Kim 
14153f0275a0SJung-uk Kim         case ACPI_DMT_FLAGS4:
14163f0275a0SJung-uk Kim 
14173f0275a0SJung-uk Kim             AcpiOsPrintf ("%1.1X\n", (*Target >> 4) & 0x03);
14183f0275a0SJung-uk Kim             break;
14193f0275a0SJung-uk Kim 
1420af051161SJung-uk Kim         case ACPI_DMT_FLAGS4_0:
1421af051161SJung-uk Kim 
1422af051161SJung-uk Kim             AcpiOsPrintf ("%1.1X\n", (*(UINT32 *)Target) & 0x0F);
1423af051161SJung-uk Kim             break;
1424af051161SJung-uk Kim 
1425af051161SJung-uk Kim         case ACPI_DMT_FLAGS4_4:
1426af051161SJung-uk Kim 
1427af051161SJung-uk Kim             AcpiOsPrintf ("%1.1X\n", (*(UINT32 *)Target >> 4) & 0x0F);
1428af051161SJung-uk Kim             break;
1429af051161SJung-uk Kim 
1430af051161SJung-uk Kim         case ACPI_DMT_FLAGS4_8:
1431af051161SJung-uk Kim 
1432af051161SJung-uk Kim             AcpiOsPrintf ("%1.1X\n", (*(UINT32 *)Target >> 8) & 0x0F);
1433af051161SJung-uk Kim             break;
1434af051161SJung-uk Kim 
1435af051161SJung-uk Kim         case ACPI_DMT_FLAGS4_12:
1436af051161SJung-uk Kim 
1437af051161SJung-uk Kim             AcpiOsPrintf ("%1.1X\n", (*(UINT32 *)Target >> 12) & 0x0F);
1438af051161SJung-uk Kim             break;
1439af051161SJung-uk Kim 
1440af051161SJung-uk Kim         case ACPI_DMT_FLAGS16_16:
1441af051161SJung-uk Kim 
1442af051161SJung-uk Kim             AcpiOsPrintf ("%4.4X\n", (*(UINT32 *)Target >> 16) & 0xFFFF);
1443af051161SJung-uk Kim             break;
1444af051161SJung-uk Kim 
14453f0275a0SJung-uk Kim         /* Integer Data Types */
14461a39cfb0SJung-uk Kim 
14471a39cfb0SJung-uk Kim         case ACPI_DMT_UINT8:
14481a39cfb0SJung-uk Kim         case ACPI_DMT_UINT16:
14491a39cfb0SJung-uk Kim         case ACPI_DMT_UINT24:
14501a39cfb0SJung-uk Kim         case ACPI_DMT_UINT32:
14513f0275a0SJung-uk Kim         case ACPI_DMT_UINT40:
14523f0275a0SJung-uk Kim         case ACPI_DMT_UINT48:
14531a39cfb0SJung-uk Kim         case ACPI_DMT_UINT56:
14543f0275a0SJung-uk Kim         case ACPI_DMT_UINT64:
14553f0275a0SJung-uk Kim             /*
14563f0275a0SJung-uk Kim              * Dump bytes - high byte first, low byte last.
14573f0275a0SJung-uk Kim              * Note: All ACPI tables are little-endian.
14583f0275a0SJung-uk Kim              */
1459313a0c13SJung-uk Kim             Value = 0;
14603f0275a0SJung-uk Kim             for (Temp8 = (UINT8) ByteLength; Temp8 > 0; Temp8--)
1461a9f12690SJung-uk Kim             {
14623f0275a0SJung-uk Kim                 AcpiOsPrintf ("%2.2X", Target[Temp8 - 1]);
1463313a0c13SJung-uk Kim                 Value |= Target[Temp8 - 1];
1464313a0c13SJung-uk Kim                 Value <<= 8;
1465a9f12690SJung-uk Kim             }
1466313a0c13SJung-uk Kim 
1467313a0c13SJung-uk Kim             if (!Value && (Info->Flags & DT_DESCRIBES_OPTIONAL))
1468313a0c13SJung-uk Kim             {
1469313a0c13SJung-uk Kim                 AcpiOsPrintf (" [Optional field not present]");
1470313a0c13SJung-uk Kim             }
1471313a0c13SJung-uk Kim 
1472a9f12690SJung-uk Kim             AcpiOsPrintf ("\n");
14731a39cfb0SJung-uk Kim             break;
14741a39cfb0SJung-uk Kim 
14750b94ba42SJung-uk Kim         case ACPI_DMT_BUF7:
14768d744e47SJung-uk Kim         case ACPI_DMT_BUF10:
1477493deb39SJung-uk Kim         case ACPI_DMT_BUF12:
1478d6dd1baeSJung-uk Kim         case ACPI_DMT_BUF16:
14791b7a2680SJung-uk Kim         case ACPI_DMT_BUF18:
1480dcbce41eSJung-uk Kim         case ACPI_DMT_BUF128:
14810b94ba42SJung-uk Kim             /*
14820b94ba42SJung-uk Kim              * Buffer: Size depends on the opcode and was set above.
14830b94ba42SJung-uk Kim              * Each hex byte is separated with a space.
1484d052a1ccSJung-uk Kim              * Multiple lines are separated by line continuation char.
14850b94ba42SJung-uk Kim              */
1486dcbce41eSJung-uk Kim             for (Temp16 = 0; Temp16 < ByteLength; Temp16++)
1487d6dd1baeSJung-uk Kim             {
1488dcbce41eSJung-uk Kim                 AcpiOsPrintf ("%2.2X", Target[Temp16]);
1489dcbce41eSJung-uk Kim                 if ((UINT32) (Temp16 + 1) < ByteLength)
1490dcbce41eSJung-uk Kim                 {
1491dcbce41eSJung-uk Kim                     if ((Temp16 > 0) && (!((Temp16+1) % 16)))
1492dcbce41eSJung-uk Kim                     {
1493d052a1ccSJung-uk Kim                         AcpiOsPrintf (" \\\n"); /* Line continuation */
1494dcbce41eSJung-uk Kim                         AcpiDmLineHeader (0, 0, NULL);
1495dcbce41eSJung-uk Kim                     }
1496dcbce41eSJung-uk Kim                     else
1497a88e22b7SJung-uk Kim                     {
14980b94ba42SJung-uk Kim                         AcpiOsPrintf (" ");
1499a88e22b7SJung-uk Kim                     }
1500d6dd1baeSJung-uk Kim                 }
1501dcbce41eSJung-uk Kim             }
1502f8146b88SJung-uk Kim 
1503d6dd1baeSJung-uk Kim             AcpiOsPrintf ("\n");
1504d6dd1baeSJung-uk Kim             break;
1505d6dd1baeSJung-uk Kim 
1506d244b227SJung-uk Kim         case ACPI_DMT_UUID:
1507d244b227SJung-uk Kim 
1508d244b227SJung-uk Kim             /* Convert 16-byte UUID buffer to 36-byte formatted UUID string */
1509d244b227SJung-uk Kim 
15101970d693SJung-uk Kim             (void) AcpiUtConvertUuidToString ((char *) Target, AslGbl_MsgBuffer);
1511d244b227SJung-uk Kim 
15126f1f1a63SJung-uk Kim             AcpiOsPrintf ("%s\n", AslGbl_MsgBuffer);
1513d244b227SJung-uk Kim             break;
1514d244b227SJung-uk Kim 
15151a39cfb0SJung-uk Kim         case ACPI_DMT_STRING:
15161a39cfb0SJung-uk Kim 
1517d6dd1baeSJung-uk Kim             AcpiOsPrintf ("\"%s\"\n", ACPI_CAST_PTR (char, Target));
15181a39cfb0SJung-uk Kim             break;
15191a39cfb0SJung-uk Kim 
15201970d693SJung-uk Kim         case ACPI_DMT_IVRS_UNTERMINATED_STRING:
15211970d693SJung-uk Kim 
15221970d693SJung-uk Kim             AcpiOsPrintf ("\"%.*s\"\n", ByteLength, ACPI_CAST_PTR (char, Target));
15231970d693SJung-uk Kim             break;
15241970d693SJung-uk Kim 
15251a39cfb0SJung-uk Kim         /* Fixed length ASCII name fields */
15261a39cfb0SJung-uk Kim 
15271a39cfb0SJung-uk Kim         case ACPI_DMT_SIG:
15281a39cfb0SJung-uk Kim 
1529f8146b88SJung-uk Kim             AcpiUtCheckAndRepairAscii (Target, RepairedName, 4);
1530d6dd1baeSJung-uk Kim             AcpiOsPrintf ("\"%.4s\"    ", RepairedName);
1531f8146b88SJung-uk Kim 
1532a371a5fdSJung-uk Kim             TableData = AcpiAhGetTableInfo (ACPI_CAST_PTR (char, Target));
15331a39cfb0SJung-uk Kim             if (TableData)
15341a39cfb0SJung-uk Kim             {
1535a371a5fdSJung-uk Kim                 AcpiOsPrintf (STRING_FORMAT, TableData->Description);
15361a39cfb0SJung-uk Kim             }
1537d052a1ccSJung-uk Kim             else
1538d052a1ccSJung-uk Kim             {
15391a39cfb0SJung-uk Kim                 AcpiOsPrintf ("\n");
1540d052a1ccSJung-uk Kim             }
15411a39cfb0SJung-uk Kim             break;
15421a39cfb0SJung-uk Kim 
15431a39cfb0SJung-uk Kim         case ACPI_DMT_NAME4:
15441a39cfb0SJung-uk Kim 
1545f8146b88SJung-uk Kim             AcpiUtCheckAndRepairAscii (Target, RepairedName, 4);
1546d6dd1baeSJung-uk Kim             AcpiOsPrintf ("\"%.4s\"\n", RepairedName);
15471a39cfb0SJung-uk Kim             break;
15481a39cfb0SJung-uk Kim 
15491a39cfb0SJung-uk Kim         case ACPI_DMT_NAME6:
15501a39cfb0SJung-uk Kim 
1551f8146b88SJung-uk Kim             AcpiUtCheckAndRepairAscii (Target, RepairedName, 6);
1552d6dd1baeSJung-uk Kim             AcpiOsPrintf ("\"%.6s\"\n", RepairedName);
15531a39cfb0SJung-uk Kim             break;
15541a39cfb0SJung-uk Kim 
15551a39cfb0SJung-uk Kim         case ACPI_DMT_NAME8:
15561a39cfb0SJung-uk Kim 
1557f8146b88SJung-uk Kim             AcpiUtCheckAndRepairAscii (Target, RepairedName, 8);
1558d6dd1baeSJung-uk Kim             AcpiOsPrintf ("\"%.8s\"\n", RepairedName);
15591a39cfb0SJung-uk Kim             break;
15601a39cfb0SJung-uk Kim 
15611a39cfb0SJung-uk Kim         /* Special Data Types */
15621a39cfb0SJung-uk Kim 
15631a39cfb0SJung-uk Kim         case ACPI_DMT_CHKSUM:
15641a39cfb0SJung-uk Kim 
15651a39cfb0SJung-uk Kim             /* Checksum, display and validate */
15661a39cfb0SJung-uk Kim 
15671a39cfb0SJung-uk Kim             AcpiOsPrintf ("%2.2X", *Target);
15689a4bc520SJung-uk Kim             Temp8 = AcpiUtGenerateChecksum (Table,
1569a88e22b7SJung-uk Kim                 ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Length,
1570a88e22b7SJung-uk Kim                 ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Checksum);
15717cf3e94aSJung-uk Kim 
15721a39cfb0SJung-uk Kim             if (Temp8 != ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Checksum)
15731a39cfb0SJung-uk Kim             {
15741a39cfb0SJung-uk Kim                 AcpiOsPrintf (
15751a39cfb0SJung-uk Kim                     "     /* Incorrect checksum, should be %2.2X */", Temp8);
15761a39cfb0SJung-uk Kim             }
1577f8146b88SJung-uk Kim 
15781a39cfb0SJung-uk Kim             AcpiOsPrintf ("\n");
15791a39cfb0SJung-uk Kim             break;
15801a39cfb0SJung-uk Kim 
15811a39cfb0SJung-uk Kim         case ACPI_DMT_SPACEID:
15821a39cfb0SJung-uk Kim 
15831a39cfb0SJung-uk Kim             /* Address Space ID */
15841a39cfb0SJung-uk Kim 
1585d052a1ccSJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiUtGetRegionName (*Target));
15861a39cfb0SJung-uk Kim             break;
15871a39cfb0SJung-uk Kim 
15885a77b11bSJung-uk Kim         case ACPI_DMT_ACCWIDTH:
15895a77b11bSJung-uk Kim 
15905a77b11bSJung-uk Kim             /* Encoded Access Width */
15915a77b11bSJung-uk Kim 
15925a77b11bSJung-uk Kim             Temp8 = *Target;
15935a77b11bSJung-uk Kim             if (Temp8 > ACPI_GAS_WIDTH_RESERVED)
15945a77b11bSJung-uk Kim             {
15955a77b11bSJung-uk Kim                 Temp8 = ACPI_GAS_WIDTH_RESERVED;
15965a77b11bSJung-uk Kim             }
15975a77b11bSJung-uk Kim 
15987cf3e94aSJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmGasAccessWidth[Temp8]);
15995a77b11bSJung-uk Kim             break;
16005a77b11bSJung-uk Kim 
16011a39cfb0SJung-uk Kim         case ACPI_DMT_GAS:
16021a39cfb0SJung-uk Kim 
16031a39cfb0SJung-uk Kim             /* Generic Address Structure */
16041a39cfb0SJung-uk Kim 
1605d052a1ccSJung-uk Kim             AcpiOsPrintf (STRING_FORMAT, "Generic Address Structure");
1606fe0f0bbbSJung-uk Kim             Status = AcpiDmDumpTable (TableLength, CurrentOffset, Target,
1607d6dd1baeSJung-uk Kim                 sizeof (ACPI_GENERIC_ADDRESS), AcpiDmTableInfoGas);
1608fe0f0bbbSJung-uk Kim             if (ACPI_FAILURE (Status))
1609fe0f0bbbSJung-uk Kim             {
1610fe0f0bbbSJung-uk Kim                 return (Status);
1611fe0f0bbbSJung-uk Kim             }
1612fe0f0bbbSJung-uk Kim 
1613a9f12690SJung-uk Kim             AcpiOsPrintf ("\n");
1614a9f12690SJung-uk Kim             LastOutputBlankLine = TRUE;
1615a9f12690SJung-uk Kim             break;
1616a9f12690SJung-uk Kim 
161797c0b5abSJung-uk Kim         case ACPI_DMT_AEST:
161897c0b5abSJung-uk Kim 
161997c0b5abSJung-uk Kim             /* AEST subtable types */
162097c0b5abSJung-uk Kim 
162197c0b5abSJung-uk Kim             Temp8 = *Target;
162297c0b5abSJung-uk Kim             if (Temp8 > ACPI_AEST_NODE_TYPE_RESERVED)
162397c0b5abSJung-uk Kim             {
162497c0b5abSJung-uk Kim                 Temp8 = ACPI_AEST_NODE_TYPE_RESERVED;
162597c0b5abSJung-uk Kim             }
162697c0b5abSJung-uk Kim 
162797c0b5abSJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
162897c0b5abSJung-uk Kim                 AcpiDmAestSubnames[Temp8]);
162997c0b5abSJung-uk Kim             break;
163097c0b5abSJung-uk Kim 
163197c0b5abSJung-uk Kim         case ACPI_DMT_AEST_CACHE:
163297c0b5abSJung-uk Kim 
163397c0b5abSJung-uk Kim             /* AEST cache resource subtable */
163497c0b5abSJung-uk Kim 
163597c0b5abSJung-uk Kim             Temp32 = *Target;
163697c0b5abSJung-uk Kim             if (Temp32 > ACPI_AEST_CACHE_RESERVED)
163797c0b5abSJung-uk Kim             {
163897c0b5abSJung-uk Kim                 Temp32 = ACPI_AEST_CACHE_RESERVED;
163997c0b5abSJung-uk Kim             }
164097c0b5abSJung-uk Kim 
164197c0b5abSJung-uk Kim             AcpiOsPrintf (UINT32_FORMAT, *Target,
164297c0b5abSJung-uk Kim                 AcpiDmAestCacheNames[Temp32]);
164397c0b5abSJung-uk Kim             break;
164497c0b5abSJung-uk Kim 
164597c0b5abSJung-uk Kim         case ACPI_DMT_AEST_GIC:
164697c0b5abSJung-uk Kim 
164797c0b5abSJung-uk Kim             /* AEST GIC error subtable */
164897c0b5abSJung-uk Kim 
164997c0b5abSJung-uk Kim             Temp32 = *Target;
165097c0b5abSJung-uk Kim             if (Temp32 > ACPI_AEST_GIC_RESERVED)
165197c0b5abSJung-uk Kim             {
165297c0b5abSJung-uk Kim                 Temp32 = ACPI_AEST_GIC_RESERVED;
165397c0b5abSJung-uk Kim             }
165497c0b5abSJung-uk Kim 
165597c0b5abSJung-uk Kim             AcpiOsPrintf (UINT32_FORMAT, *Target,
165697c0b5abSJung-uk Kim                 AcpiDmAestGicNames[Temp32]);
165797c0b5abSJung-uk Kim             break;
165897c0b5abSJung-uk Kim 
165997c0b5abSJung-uk Kim         case ACPI_DMT_AEST_RES:
166097c0b5abSJung-uk Kim 
166197c0b5abSJung-uk Kim             /* AEST resource type subtable */
166297c0b5abSJung-uk Kim 
166397c0b5abSJung-uk Kim             Temp8 = *Target;
166497c0b5abSJung-uk Kim             if (Temp8 > ACPI_AEST_RESOURCE_RESERVED)
166597c0b5abSJung-uk Kim             {
166697c0b5abSJung-uk Kim                 Temp8 = ACPI_AEST_RESOURCE_RESERVED;
166797c0b5abSJung-uk Kim             }
166897c0b5abSJung-uk Kim 
166997c0b5abSJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
167097c0b5abSJung-uk Kim                 AcpiDmAestResourceNames[Temp8]);
167197c0b5abSJung-uk Kim             break;
167297c0b5abSJung-uk Kim 
167397c0b5abSJung-uk Kim         case ACPI_DMT_AEST_XFACE:
167497c0b5abSJung-uk Kim 
167597c0b5abSJung-uk Kim             /* AEST interface structure types */
167697c0b5abSJung-uk Kim 
167797c0b5abSJung-uk Kim             Temp8 = *Target;
167897c0b5abSJung-uk Kim             if (Temp8 > ACPI_AEST_XFACE_RESERVED)
167997c0b5abSJung-uk Kim             {
168097c0b5abSJung-uk Kim                 Temp8 = ACPI_AEST_XFACE_RESERVED;
168197c0b5abSJung-uk Kim             }
168297c0b5abSJung-uk Kim 
168397c0b5abSJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
168497c0b5abSJung-uk Kim                 AcpiDmAestXfaceNames[Temp8]);
168597c0b5abSJung-uk Kim             break;
168697c0b5abSJung-uk Kim 
168797c0b5abSJung-uk Kim         case ACPI_DMT_AEST_XRUPT:
168897c0b5abSJung-uk Kim 
168997c0b5abSJung-uk Kim             /* AEST interrupt structure types */
169097c0b5abSJung-uk Kim 
169197c0b5abSJung-uk Kim             Temp8 = *Target;
169297c0b5abSJung-uk Kim             if (Temp8 > ACPI_AEST_XRUPT_RESERVED)
169397c0b5abSJung-uk Kim             {
169497c0b5abSJung-uk Kim                 Temp8 = ACPI_AEST_XRUPT_RESERVED;
169597c0b5abSJung-uk Kim             }
169697c0b5abSJung-uk Kim 
169797c0b5abSJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
169897c0b5abSJung-uk Kim                 AcpiDmAestXruptNames[Temp8]);
169997c0b5abSJung-uk Kim             break;
170097c0b5abSJung-uk Kim 
1701722b1667SJung-uk Kim         case ACPI_DMT_ASPT:
1702722b1667SJung-uk Kim             /* ASPT subtable types */
1703722b1667SJung-uk Kim             Temp16 = ACPI_GET16(Target);
1704722b1667SJung-uk Kim             if (Temp16 > ACPI_ASPT_TYPE_UNKNOWN)
1705722b1667SJung-uk Kim             {
1706722b1667SJung-uk Kim                 Temp16 = ACPI_ASPT_TYPE_UNKNOWN;
1707722b1667SJung-uk Kim             }
1708722b1667SJung-uk Kim 
1709722b1667SJung-uk Kim             AcpiOsPrintf(UINT16_FORMAT, Temp16, AcpiDmAsptSubnames[Temp16]);
1710722b1667SJung-uk Kim             break;
1711722b1667SJung-uk Kim 
1712a9f12690SJung-uk Kim         case ACPI_DMT_ASF:
1713a9f12690SJung-uk Kim 
1714a9f12690SJung-uk Kim             /* ASF subtable types */
1715a9f12690SJung-uk Kim 
1716a9f12690SJung-uk Kim             Temp16 = (UINT16) ((*Target) & 0x7F);  /* Top bit can be zero or one */
1717a9f12690SJung-uk Kim             if (Temp16 > ACPI_ASF_TYPE_RESERVED)
1718a9f12690SJung-uk Kim             {
1719a9f12690SJung-uk Kim                 Temp16 = ACPI_ASF_TYPE_RESERVED;
1720a9f12690SJung-uk Kim             }
1721a9f12690SJung-uk Kim 
1722d052a1ccSJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmAsfSubnames[Temp16]);
17231a39cfb0SJung-uk Kim             break;
17241a39cfb0SJung-uk Kim 
17259a4bc520SJung-uk Kim         case ACPI_DMT_CDAT:
17269a4bc520SJung-uk Kim 
17279a4bc520SJung-uk Kim             /* CDAT subtable types */
17289a4bc520SJung-uk Kim 
17299a4bc520SJung-uk Kim             Temp8 = *Target;
17309a4bc520SJung-uk Kim             if (Temp8 > ACPI_CDAT_TYPE_RESERVED)
17319a4bc520SJung-uk Kim             {
17329a4bc520SJung-uk Kim                 Temp8 = ACPI_CDAT_TYPE_RESERVED;
17339a4bc520SJung-uk Kim             }
17349a4bc520SJung-uk Kim 
17359a4bc520SJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
17369a4bc520SJung-uk Kim                 AcpiDmCdatSubnames[Temp8]);
17379a4bc520SJung-uk Kim             break;
17389a4bc520SJung-uk Kim 
1739cfd1ed46SJung-uk Kim         case ACPI_DMT_CEDT:
1740cfd1ed46SJung-uk Kim 
1741cfd1ed46SJung-uk Kim             /* CEDT subtable types */
1742cfd1ed46SJung-uk Kim 
1743cfd1ed46SJung-uk Kim             Temp8 = *Target;
1744cfd1ed46SJung-uk Kim             if (Temp8 > ACPI_CEDT_TYPE_RESERVED)
1745cfd1ed46SJung-uk Kim             {
1746cfd1ed46SJung-uk Kim                 Temp8 = ACPI_CEDT_TYPE_RESERVED;
1747cfd1ed46SJung-uk Kim             }
1748cfd1ed46SJung-uk Kim 
1749cfd1ed46SJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
1750cfd1ed46SJung-uk Kim                 AcpiDmCedtSubnames[Temp8]);
1751cfd1ed46SJung-uk Kim             break;
1752cfd1ed46SJung-uk Kim 
17531a39cfb0SJung-uk Kim         case ACPI_DMT_DMAR:
17541a39cfb0SJung-uk Kim 
17551a39cfb0SJung-uk Kim             /* DMAR subtable types */
17561a39cfb0SJung-uk Kim 
1757a9f12690SJung-uk Kim             Temp16 = ACPI_GET16 (Target);
17581a39cfb0SJung-uk Kim             if (Temp16 > ACPI_DMAR_TYPE_RESERVED)
17591a39cfb0SJung-uk Kim             {
17601a39cfb0SJung-uk Kim                 Temp16 = ACPI_DMAR_TYPE_RESERVED;
17611a39cfb0SJung-uk Kim             }
17621a39cfb0SJung-uk Kim 
17637cf3e94aSJung-uk Kim             AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target),
17647cf3e94aSJung-uk Kim                 AcpiDmDmarSubnames[Temp16]);
17651a39cfb0SJung-uk Kim             break;
17661a39cfb0SJung-uk Kim 
1767313a0c13SJung-uk Kim         case ACPI_DMT_DMAR_SCOPE:
1768313a0c13SJung-uk Kim 
1769313a0c13SJung-uk Kim             /* DMAR device scope types */
1770313a0c13SJung-uk Kim 
1771313a0c13SJung-uk Kim             Temp8 = *Target;
1772313a0c13SJung-uk Kim             if (Temp8 > ACPI_DMAR_SCOPE_TYPE_RESERVED)
1773313a0c13SJung-uk Kim             {
1774313a0c13SJung-uk Kim                 Temp8 = ACPI_DMAR_SCOPE_TYPE_RESERVED;
1775313a0c13SJung-uk Kim             }
1776313a0c13SJung-uk Kim 
17777cf3e94aSJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
17787cf3e94aSJung-uk Kim                 AcpiDmDmarScope[Temp8]);
1779313a0c13SJung-uk Kim             break;
1780313a0c13SJung-uk Kim 
1781a88e22b7SJung-uk Kim         case ACPI_DMT_EINJACT:
1782a88e22b7SJung-uk Kim 
1783a88e22b7SJung-uk Kim             /* EINJ Action types */
1784a88e22b7SJung-uk Kim 
1785a88e22b7SJung-uk Kim             Temp8 = *Target;
1786a88e22b7SJung-uk Kim             if (Temp8 > ACPI_EINJ_ACTION_RESERVED)
1787a88e22b7SJung-uk Kim             {
1788a88e22b7SJung-uk Kim                 Temp8 = ACPI_EINJ_ACTION_RESERVED;
1789a88e22b7SJung-uk Kim             }
1790a88e22b7SJung-uk Kim 
17917cf3e94aSJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
17927cf3e94aSJung-uk Kim                 AcpiDmEinjActions[Temp8]);
1793a88e22b7SJung-uk Kim             break;
1794a88e22b7SJung-uk Kim 
1795a88e22b7SJung-uk Kim         case ACPI_DMT_EINJINST:
1796a88e22b7SJung-uk Kim 
1797a88e22b7SJung-uk Kim             /* EINJ Instruction types */
1798a88e22b7SJung-uk Kim 
1799a88e22b7SJung-uk Kim             Temp8 = *Target;
1800a88e22b7SJung-uk Kim             if (Temp8 > ACPI_EINJ_INSTRUCTION_RESERVED)
1801a88e22b7SJung-uk Kim             {
1802a88e22b7SJung-uk Kim                 Temp8 = ACPI_EINJ_INSTRUCTION_RESERVED;
1803a88e22b7SJung-uk Kim             }
1804a88e22b7SJung-uk Kim 
18057cf3e94aSJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
18067cf3e94aSJung-uk Kim                 AcpiDmEinjInstructions[Temp8]);
1807a88e22b7SJung-uk Kim             break;
1808a88e22b7SJung-uk Kim 
1809a88e22b7SJung-uk Kim         case ACPI_DMT_ERSTACT:
1810a88e22b7SJung-uk Kim 
1811a88e22b7SJung-uk Kim             /* ERST Action types */
1812a88e22b7SJung-uk Kim 
1813a88e22b7SJung-uk Kim             Temp8 = *Target;
1814a88e22b7SJung-uk Kim             if (Temp8 > ACPI_ERST_ACTION_RESERVED)
1815a88e22b7SJung-uk Kim             {
1816a88e22b7SJung-uk Kim                 Temp8 = ACPI_ERST_ACTION_RESERVED;
1817a88e22b7SJung-uk Kim             }
1818a88e22b7SJung-uk Kim 
18197cf3e94aSJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
18207cf3e94aSJung-uk Kim                 AcpiDmErstActions[Temp8]);
1821a88e22b7SJung-uk Kim             break;
1822a88e22b7SJung-uk Kim 
1823a88e22b7SJung-uk Kim         case ACPI_DMT_ERSTINST:
1824a88e22b7SJung-uk Kim 
1825a88e22b7SJung-uk Kim             /* ERST Instruction types */
1826a88e22b7SJung-uk Kim 
1827a88e22b7SJung-uk Kim             Temp8 = *Target;
1828a88e22b7SJung-uk Kim             if (Temp8 > ACPI_ERST_INSTRUCTION_RESERVED)
1829a88e22b7SJung-uk Kim             {
1830a88e22b7SJung-uk Kim                 Temp8 = ACPI_ERST_INSTRUCTION_RESERVED;
1831a88e22b7SJung-uk Kim             }
1832a88e22b7SJung-uk Kim 
18337cf3e94aSJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
18347cf3e94aSJung-uk Kim                 AcpiDmErstInstructions[Temp8]);
1835a88e22b7SJung-uk Kim             break;
1836a88e22b7SJung-uk Kim 
1837313a0c13SJung-uk Kim         case ACPI_DMT_GTDT:
1838313a0c13SJung-uk Kim 
1839313a0c13SJung-uk Kim             /* GTDT subtable types */
1840313a0c13SJung-uk Kim 
1841313a0c13SJung-uk Kim             Temp8 = *Target;
1842313a0c13SJung-uk Kim             if (Temp8 > ACPI_GTDT_TYPE_RESERVED)
1843313a0c13SJung-uk Kim             {
1844313a0c13SJung-uk Kim                 Temp8 = ACPI_GTDT_TYPE_RESERVED;
1845313a0c13SJung-uk Kim             }
1846313a0c13SJung-uk Kim 
18477cf3e94aSJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
18487cf3e94aSJung-uk Kim                 AcpiDmGtdtSubnames[Temp8]);
1849313a0c13SJung-uk Kim             break;
1850313a0c13SJung-uk Kim 
1851a9f12690SJung-uk Kim         case ACPI_DMT_HEST:
1852a9f12690SJung-uk Kim 
1853a9f12690SJung-uk Kim             /* HEST subtable types */
1854a9f12690SJung-uk Kim 
1855a9f12690SJung-uk Kim             Temp16 = ACPI_GET16 (Target);
1856a9f12690SJung-uk Kim             if (Temp16 > ACPI_HEST_TYPE_RESERVED)
1857a9f12690SJung-uk Kim             {
1858a9f12690SJung-uk Kim                 Temp16 = ACPI_HEST_TYPE_RESERVED;
1859a9f12690SJung-uk Kim             }
1860a9f12690SJung-uk Kim 
18617cf3e94aSJung-uk Kim             AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target),
18627cf3e94aSJung-uk Kim                 AcpiDmHestSubnames[Temp16]);
1863a9f12690SJung-uk Kim             break;
1864a9f12690SJung-uk Kim 
1865a9f12690SJung-uk Kim         case ACPI_DMT_HESTNTFY:
1866a9f12690SJung-uk Kim 
18677cf3e94aSJung-uk Kim             AcpiOsPrintf (STRING_FORMAT,
18687cf3e94aSJung-uk Kim                 "Hardware Error Notification Structure");
18697cf3e94aSJung-uk Kim 
1870fe0f0bbbSJung-uk Kim             Status = AcpiDmDumpTable (TableLength, CurrentOffset, Target,
1871d6dd1baeSJung-uk Kim                 sizeof (ACPI_HEST_NOTIFY), AcpiDmTableInfoHestNotify);
1872fe0f0bbbSJung-uk Kim             if (ACPI_FAILURE (Status))
1873fe0f0bbbSJung-uk Kim             {
1874fe0f0bbbSJung-uk Kim                 return (Status);
1875fe0f0bbbSJung-uk Kim             }
1876fe0f0bbbSJung-uk Kim 
1877a9f12690SJung-uk Kim             AcpiOsPrintf ("\n");
1878a9f12690SJung-uk Kim             LastOutputBlankLine = TRUE;
1879a9f12690SJung-uk Kim             break;
1880a9f12690SJung-uk Kim 
1881a9f12690SJung-uk Kim         case ACPI_DMT_HESTNTYP:
1882a9f12690SJung-uk Kim 
1883a9f12690SJung-uk Kim             /* HEST Notify types */
1884a9f12690SJung-uk Kim 
1885a9f12690SJung-uk Kim             Temp8 = *Target;
1886a9f12690SJung-uk Kim             if (Temp8 > ACPI_HEST_NOTIFY_RESERVED)
1887a9f12690SJung-uk Kim             {
1888a9f12690SJung-uk Kim                 Temp8 = ACPI_HEST_NOTIFY_RESERVED;
1889a9f12690SJung-uk Kim             }
1890a9f12690SJung-uk Kim 
18917cf3e94aSJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
18927cf3e94aSJung-uk Kim                 AcpiDmHestNotifySubnames[Temp8]);
1893a9f12690SJung-uk Kim             break;
1894a9f12690SJung-uk Kim 
1895af051161SJung-uk Kim         case ACPI_DMT_HMAT:
1896af051161SJung-uk Kim 
1897af051161SJung-uk Kim             /* HMAT subtable types */
1898af051161SJung-uk Kim 
1899af051161SJung-uk Kim             Temp16 = *Target;
1900af051161SJung-uk Kim             if (Temp16 > ACPI_HMAT_TYPE_RESERVED)
1901af051161SJung-uk Kim             {
1902af051161SJung-uk Kim                 Temp16 = ACPI_HMAT_TYPE_RESERVED;
1903af051161SJung-uk Kim             }
1904af051161SJung-uk Kim 
1905af051161SJung-uk Kim             AcpiOsPrintf (UINT16_FORMAT, *Target,
1906af051161SJung-uk Kim                 AcpiDmHmatSubnames[Temp16]);
1907af051161SJung-uk Kim             break;
1908af051161SJung-uk Kim 
1909a371a5fdSJung-uk Kim         case ACPI_DMT_IORTMEM:
1910a371a5fdSJung-uk Kim 
1911a371a5fdSJung-uk Kim             AcpiOsPrintf (STRING_FORMAT,
1912a371a5fdSJung-uk Kim                 "IORT Memory Access Properties");
1913a371a5fdSJung-uk Kim 
1914fe0f0bbbSJung-uk Kim             Status = AcpiDmDumpTable (TableLength, CurrentOffset, Target,
1915a371a5fdSJung-uk Kim                 sizeof (ACPI_IORT_MEMORY_ACCESS), AcpiDmTableInfoIortAcc);
1916fe0f0bbbSJung-uk Kim             if (ACPI_FAILURE (Status))
1917fe0f0bbbSJung-uk Kim             {
1918fe0f0bbbSJung-uk Kim                 return (Status);
1919fe0f0bbbSJung-uk Kim             }
1920fe0f0bbbSJung-uk Kim 
1921a371a5fdSJung-uk Kim             LastOutputBlankLine = TRUE;
1922a371a5fdSJung-uk Kim             break;
1923a371a5fdSJung-uk Kim 
19241a39cfb0SJung-uk Kim         case ACPI_DMT_MADT:
19251a39cfb0SJung-uk Kim 
19261a39cfb0SJung-uk Kim             /* MADT subtable types */
19271a39cfb0SJung-uk Kim 
19281a39cfb0SJung-uk Kim             Temp8 = *Target;
1929ab71bbb7SJung-uk Kim             if ((Temp8 >= ACPI_MADT_TYPE_RESERVED) && (Temp8 < ACPI_MADT_TYPE_OEM_RESERVED))
19301a39cfb0SJung-uk Kim             {
19311a39cfb0SJung-uk Kim                 Temp8 = ACPI_MADT_TYPE_RESERVED;
19321a39cfb0SJung-uk Kim             }
1933ab71bbb7SJung-uk Kim             else if (Temp8 >= ACPI_MADT_TYPE_OEM_RESERVED)
1934ab71bbb7SJung-uk Kim             {
1935ab71bbb7SJung-uk Kim                 Temp8 = ACPI_MADT_TYPE_RESERVED + 1;
1936ab71bbb7SJung-uk Kim             }
19377cf3e94aSJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
19387cf3e94aSJung-uk Kim                 AcpiDmMadtSubnames[Temp8]);
19391a39cfb0SJung-uk Kim             break;
19401a39cfb0SJung-uk Kim 
1941722b1667SJung-uk Kim         case ACPI_DMT_MPAM_LOCATOR:
1942722b1667SJung-uk Kim 
1943722b1667SJung-uk Kim             /* MPAM subtable locator types */
1944722b1667SJung-uk Kim 
1945722b1667SJung-uk Kim             Temp8 = *Target;
1946722b1667SJung-uk Kim             if (Temp8 > ACPI_MPAM_LOCATION_TYPE_INTERCONNECT)
1947722b1667SJung-uk Kim             {
1948722b1667SJung-uk Kim                 Temp8 = ACPI_MPAM_LOCATION_TYPE_INTERCONNECT + 1;
1949722b1667SJung-uk Kim             }
1950722b1667SJung-uk Kim 
1951722b1667SJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
1952722b1667SJung-uk Kim                 AcpiDmMpamSubnames[Temp8]);
1953722b1667SJung-uk Kim             break;
1954722b1667SJung-uk Kim 
1955a371a5fdSJung-uk Kim         case ACPI_DMT_NFIT:
1956a371a5fdSJung-uk Kim 
1957a371a5fdSJung-uk Kim             /* NFIT subtable types */
1958a371a5fdSJung-uk Kim 
1959a371a5fdSJung-uk Kim             Temp16 = ACPI_GET16 (Target);
1960a371a5fdSJung-uk Kim             if (Temp16 > ACPI_NFIT_TYPE_RESERVED)
1961a371a5fdSJung-uk Kim             {
1962a371a5fdSJung-uk Kim                 Temp16 = ACPI_NFIT_TYPE_RESERVED;
1963a371a5fdSJung-uk Kim             }
1964a371a5fdSJung-uk Kim 
1965a371a5fdSJung-uk Kim             AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target),
1966a371a5fdSJung-uk Kim                 AcpiDmNfitSubnames[Temp16]);
1967a371a5fdSJung-uk Kim             break;
1968a371a5fdSJung-uk Kim 
19691b7a2680SJung-uk Kim         case ACPI_DMT_NHLT1:
19701b7a2680SJung-uk Kim 
19711b7a2680SJung-uk Kim             /* NHLT link types */
19721b7a2680SJung-uk Kim 
19731b7a2680SJung-uk Kim             Temp8 = *Target;
19741b7a2680SJung-uk Kim             if (Temp8 > ACPI_NHLT_TYPE_RESERVED)
19751b7a2680SJung-uk Kim             {
19761b7a2680SJung-uk Kim                 Temp8 = ACPI_NHLT_TYPE_RESERVED;
19771b7a2680SJung-uk Kim             }
19781b7a2680SJung-uk Kim 
19791b7a2680SJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
19801b7a2680SJung-uk Kim                 AcpiDmNhltLinkTypeNames[Temp8]);
19811b7a2680SJung-uk Kim             break;
19821b7a2680SJung-uk Kim 
19831b7a2680SJung-uk Kim         case ACPI_DMT_NHLT1a:
19841b7a2680SJung-uk Kim 
19851b7a2680SJung-uk Kim             /* NHLT direction */
19861b7a2680SJung-uk Kim 
19871b7a2680SJung-uk Kim             Temp8 = *Target;
19881b7a2680SJung-uk Kim             if (Temp8 > ACPI_NHLT_DIR_RESERVED)
19891b7a2680SJung-uk Kim             {
19901b7a2680SJung-uk Kim                 Temp8 = ACPI_NHLT_DIR_RESERVED;
19911b7a2680SJung-uk Kim             }
19921b7a2680SJung-uk Kim 
19931b7a2680SJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
19941b7a2680SJung-uk Kim                 AcpiDmNhltDirectionNames[Temp8]);
19951b7a2680SJung-uk Kim             break;
19961b7a2680SJung-uk Kim 
1997ab71bbb7SJung-uk Kim         case ACPI_DMT_NHLT1b:
1998ab71bbb7SJung-uk Kim 
1999ab71bbb7SJung-uk Kim             /* NHLT microphone type */
2000ab71bbb7SJung-uk Kim 
2001ab71bbb7SJung-uk Kim             Temp8 = *Target;
2002ab71bbb7SJung-uk Kim             if (Temp8 > ACPI_NHLT_MIC_RESERVED)
2003ab71bbb7SJung-uk Kim             {
2004ab71bbb7SJung-uk Kim                 Temp8 = ACPI_NHLT_MIC_RESERVED;
2005ab71bbb7SJung-uk Kim             }
2006ab71bbb7SJung-uk Kim 
2007ab71bbb7SJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
2008ab71bbb7SJung-uk Kim                 AcpiDmNhltMicTypeNames[Temp8]);
2009ab71bbb7SJung-uk Kim             break;
2010ab71bbb7SJung-uk Kim 
2011ab71bbb7SJung-uk Kim         case ACPI_DMT_NHLT1c:
2012ab71bbb7SJung-uk Kim 
2013ab71bbb7SJung-uk Kim             /* NHLT microphone position */
2014ab71bbb7SJung-uk Kim 
2015ab71bbb7SJung-uk Kim             Temp8 = *Target;
2016ab71bbb7SJung-uk Kim             if (Temp8 > ACPI_NHLT_MIC_POSITION_RESERVED)
2017ab71bbb7SJung-uk Kim             {
2018ab71bbb7SJung-uk Kim                 Temp8 = ACPI_NHLT_MIC_POSITION_RESERVED;
2019ab71bbb7SJung-uk Kim             }
2020ab71bbb7SJung-uk Kim 
2021ab71bbb7SJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
2022ab71bbb7SJung-uk Kim                 AcpiDmNhltMicPositionNames[Temp8]);
2023ab71bbb7SJung-uk Kim             break;
2024ab71bbb7SJung-uk Kim 
2025ab71bbb7SJung-uk Kim         case ACPI_DMT_NHLT1d:
2026ab71bbb7SJung-uk Kim 
2027ab71bbb7SJung-uk Kim             /* NHLT microphone array type */
2028ab71bbb7SJung-uk Kim 
2029ab71bbb7SJung-uk Kim             Temp8 = *Target & ACPI_NHLT_ARRAY_TYPE_MASK;
2030ab71bbb7SJung-uk Kim             if (Temp8 < ACPI_NHLT_ARRAY_TYPE_RESERVED)
2031ab71bbb7SJung-uk Kim             {
2032ab71bbb7SJung-uk Kim                 Temp8 = ACPI_NHLT_ARRAY_TYPE_RESERVED;
2033ab71bbb7SJung-uk Kim             }
2034ab71bbb7SJung-uk Kim 
2035ab71bbb7SJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT_NO_NEWLINE, *Target,
2036ab71bbb7SJung-uk Kim                 AcpiDmNhltMicArrayTypeNames[Temp8 - ACPI_NHLT_ARRAY_TYPE_RESERVED]);
2037ab71bbb7SJung-uk Kim 
2038ab71bbb7SJung-uk Kim             Temp8 = *Target;
2039ab71bbb7SJung-uk Kim             if (Temp8 & ACPI_NHLT_MIC_SNR_SENSITIVITY_EXT)
2040ab71bbb7SJung-uk Kim             {
2041ab71bbb7SJung-uk Kim                 AcpiOsPrintf (" [%s]", "SNR and Sensitivity");
2042ab71bbb7SJung-uk Kim             }
2043ab71bbb7SJung-uk Kim 
2044ab71bbb7SJung-uk Kim             AcpiOsPrintf ("\n");
2045ab71bbb7SJung-uk Kim             break;
2046ab71bbb7SJung-uk Kim 
2047ab71bbb7SJung-uk Kim         case ACPI_DMT_NHLT1e:
2048ab71bbb7SJung-uk Kim 
2049ab71bbb7SJung-uk Kim             /* NHLT Endpoint Device ID */
2050ab71bbb7SJung-uk Kim 
2051ab71bbb7SJung-uk Kim             Temp16 = ACPI_GET16 (Target);
2052ab71bbb7SJung-uk Kim             if (Temp16 == 0xAE20)
2053ab71bbb7SJung-uk Kim             {
2054ab71bbb7SJung-uk Kim                 Name = "PDM DMIC";
2055ab71bbb7SJung-uk Kim             }
2056ab71bbb7SJung-uk Kim             else if (Temp16 == 0xAE30)
2057ab71bbb7SJung-uk Kim             {
2058ab71bbb7SJung-uk Kim                 Name = "BT Sideband";
2059ab71bbb7SJung-uk Kim             }
2060ab71bbb7SJung-uk Kim             else if (Temp16 == 0xAE34)
2061ab71bbb7SJung-uk Kim             {
2062ab71bbb7SJung-uk Kim                 Name = "I2S/TDM Codecs";
2063ab71bbb7SJung-uk Kim             }
2064ab71bbb7SJung-uk Kim             else
2065ab71bbb7SJung-uk Kim             {
2066ab71bbb7SJung-uk Kim                 Name = "Unknown Device ID";
2067ab71bbb7SJung-uk Kim             }
2068ab71bbb7SJung-uk Kim 
2069ab71bbb7SJung-uk Kim             AcpiOsPrintf (UINT16_FORMAT, Temp16, Name);
2070ab71bbb7SJung-uk Kim             break;
2071ab71bbb7SJung-uk Kim 
2072ab71bbb7SJung-uk Kim         case ACPI_DMT_NHLT1f:
2073ab71bbb7SJung-uk Kim 
2074ab71bbb7SJung-uk Kim             /* NHLT ConfigType field */
2075ab71bbb7SJung-uk Kim 
2076ab71bbb7SJung-uk Kim             Temp8 = *Target;
2077ab71bbb7SJung-uk Kim             if (Temp8 > ACPI_NHLT_CONFIG_TYPE_RESERVED)
2078ab71bbb7SJung-uk Kim             {
2079ab71bbb7SJung-uk Kim                 Temp8 = ACPI_NHLT_CONFIG_TYPE_RESERVED;
2080ab71bbb7SJung-uk Kim             }
2081ab71bbb7SJung-uk Kim 
2082ab71bbb7SJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
2083ab71bbb7SJung-uk Kim                 AcpiDmNhltConfigTypeNames[Temp8]);
2084ab71bbb7SJung-uk Kim             break;
2085ab71bbb7SJung-uk Kim 
2086313a0c13SJung-uk Kim         case ACPI_DMT_PCCT:
2087313a0c13SJung-uk Kim 
2088313a0c13SJung-uk Kim             /* PCCT subtable types */
2089313a0c13SJung-uk Kim 
2090313a0c13SJung-uk Kim             Temp8 = *Target;
2091313a0c13SJung-uk Kim             if (Temp8 > ACPI_PCCT_TYPE_RESERVED)
2092313a0c13SJung-uk Kim             {
2093313a0c13SJung-uk Kim                 Temp8 = ACPI_PCCT_TYPE_RESERVED;
2094313a0c13SJung-uk Kim             }
2095313a0c13SJung-uk Kim 
20967cf3e94aSJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
20977cf3e94aSJung-uk Kim                 AcpiDmPcctSubnames[Temp8]);
2098313a0c13SJung-uk Kim             break;
2099313a0c13SJung-uk Kim 
2100cfd1ed46SJung-uk Kim         case ACPI_DMT_PHAT:
2101cfd1ed46SJung-uk Kim 
21029a4bc520SJung-uk Kim             /* PHAT subtable types */
2103cfd1ed46SJung-uk Kim 
21049a4bc520SJung-uk Kim             Temp16 = ACPI_GET16 (Target);
2105cfd1ed46SJung-uk Kim             if (Temp16 > ACPI_PHAT_TYPE_RESERVED)
2106cfd1ed46SJung-uk Kim             {
2107cfd1ed46SJung-uk Kim                 Temp16 = ACPI_PHAT_TYPE_RESERVED;
2108cfd1ed46SJung-uk Kim             }
2109cfd1ed46SJung-uk Kim 
2110cfd1ed46SJung-uk Kim             AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target),
2111cfd1ed46SJung-uk Kim                 AcpiDmPhatSubnames[Temp16]);
2112cfd1ed46SJung-uk Kim             break;
2113cfd1ed46SJung-uk Kim 
21143f0275a0SJung-uk Kim         case ACPI_DMT_PMTT:
21153f0275a0SJung-uk Kim 
21163f0275a0SJung-uk Kim             /* PMTT subtable types */
21173f0275a0SJung-uk Kim 
21183f0275a0SJung-uk Kim             Temp8 = *Target;
2119cfd1ed46SJung-uk Kim             if (Temp8 == ACPI_PMTT_TYPE_VENDOR)
2120cfd1ed46SJung-uk Kim             {
2121cfd1ed46SJung-uk Kim                 Temp8 = ACPI_PMTT_TYPE_RESERVED + 1;
2122cfd1ed46SJung-uk Kim             }
2123cfd1ed46SJung-uk Kim             else if (Temp8 > ACPI_PMTT_TYPE_RESERVED)
21243f0275a0SJung-uk Kim             {
21253f0275a0SJung-uk Kim                 Temp8 = ACPI_PMTT_TYPE_RESERVED;
21263f0275a0SJung-uk Kim             }
21277cf3e94aSJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
21287cf3e94aSJung-uk Kim                 AcpiDmPmttSubnames[Temp8]);
21293f0275a0SJung-uk Kim             break;
21303f0275a0SJung-uk Kim 
2131af051161SJung-uk Kim         case ACPI_DMT_PPTT:
2132af051161SJung-uk Kim 
2133af051161SJung-uk Kim             /* PPTT subtable types */
2134af051161SJung-uk Kim 
2135af051161SJung-uk Kim             Temp8 = *Target;
2136af051161SJung-uk Kim             if (Temp8 > ACPI_PPTT_TYPE_RESERVED)
2137af051161SJung-uk Kim             {
2138af051161SJung-uk Kim                 Temp8 = ACPI_PPTT_TYPE_RESERVED;
2139af051161SJung-uk Kim             }
2140af051161SJung-uk Kim 
2141af051161SJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
2142af051161SJung-uk Kim                 AcpiDmPpttSubnames[Temp8]);
2143af051161SJung-uk Kim             break;
2144af051161SJung-uk Kim 
2145a371a5fdSJung-uk Kim         case ACPI_DMT_UNICODE:
214697c0b5abSJung-uk Kim         case ACPI_DMT_WPBT_UNICODE:
2147dcbce41eSJung-uk Kim 
2148a371a5fdSJung-uk Kim             if (ByteLength == 0)
2149a371a5fdSJung-uk Kim             {
2150a371a5fdSJung-uk Kim                 AcpiOsPrintf ("/* Zero-length Data */\n");
2151a371a5fdSJung-uk Kim                 break;
2152a371a5fdSJung-uk Kim             }
2153a371a5fdSJung-uk Kim 
21549a4bc520SJung-uk Kim             AcpiDmDumpUnicode (Table, 0, ByteLength);
2155a371a5fdSJung-uk Kim             break;
2156a371a5fdSJung-uk Kim 
2157a371a5fdSJung-uk Kim         case ACPI_DMT_RAW_BUFFER:
2158cfd1ed46SJung-uk Kim         case ACPI_DMT_BUFFER:
2159cfd1ed46SJung-uk Kim         case ACPI_DMT_PMTT_VENDOR:
2160a371a5fdSJung-uk Kim 
2161a371a5fdSJung-uk Kim             if (ByteLength == 0)
2162a371a5fdSJung-uk Kim             {
2163a371a5fdSJung-uk Kim                 AcpiOsPrintf ("/* Zero-length Data */\n");
2164a371a5fdSJung-uk Kim                 break;
2165a371a5fdSJung-uk Kim             }
2166a371a5fdSJung-uk Kim 
2167ab71bbb7SJung-uk Kim             AcpiDmDumpBuffer (Target, 0, ByteLength, CurrentOffset, NULL);
2168dcbce41eSJung-uk Kim             break;
2169dcbce41eSJung-uk Kim 
21701970d693SJung-uk Kim         case ACPI_DMT_RGRT:
21711970d693SJung-uk Kim 
21721970d693SJung-uk Kim             /* RGRT subtable types */
21731970d693SJung-uk Kim 
21741970d693SJung-uk Kim             Temp8 = *Target;
21751970d693SJung-uk Kim             if (Temp8 >= ACPI_RGRT_TYPE_RESERVED)
21761970d693SJung-uk Kim             {
21771970d693SJung-uk Kim                 Temp8 = ACPI_RGRT_TYPE_RESERVED0;
21781970d693SJung-uk Kim             }
21791970d693SJung-uk Kim 
21801970d693SJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
21811970d693SJung-uk Kim                 AcpiDmRgrtSubnames[Temp8]);
21821970d693SJung-uk Kim             break;
21831970d693SJung-uk Kim 
2184*07c64d74SJung-uk Kim         case ACPI_DMT_RHCT:
2185*07c64d74SJung-uk Kim 
2186*07c64d74SJung-uk Kim             /* RHCT subtable types */
2187*07c64d74SJung-uk Kim 
2188*07c64d74SJung-uk Kim             Temp16 = ACPI_GET16 (Target);
2189*07c64d74SJung-uk Kim             if (Temp16 == ACPI_RHCT_NODE_TYPE_HART_INFO)
2190*07c64d74SJung-uk Kim             {
2191*07c64d74SJung-uk Kim                 Temp16 = ACPI_RHCT_NODE_TYPE_RESERVED;
2192*07c64d74SJung-uk Kim             }
2193*07c64d74SJung-uk Kim 
2194*07c64d74SJung-uk Kim             AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target),
2195*07c64d74SJung-uk Kim                 AcpiDmRhctSubnames[Temp16]);
2196*07c64d74SJung-uk Kim             break;
2197*07c64d74SJung-uk Kim 
219867d9aa44SJung-uk Kim         case ACPI_DMT_SDEV:
219967d9aa44SJung-uk Kim 
220067d9aa44SJung-uk Kim             /* SDEV subtable types */
220167d9aa44SJung-uk Kim 
220267d9aa44SJung-uk Kim             Temp8 = *Target;
220367d9aa44SJung-uk Kim             if (Temp8 > ACPI_SDEV_TYPE_RESERVED)
220467d9aa44SJung-uk Kim             {
220567d9aa44SJung-uk Kim                 Temp8 = ACPI_SDEV_TYPE_RESERVED;
220667d9aa44SJung-uk Kim             }
220767d9aa44SJung-uk Kim 
220867d9aa44SJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
220967d9aa44SJung-uk Kim                 AcpiDmSdevSubnames[Temp8]);
221067d9aa44SJung-uk Kim             break;
221167d9aa44SJung-uk Kim 
22121a39cfb0SJung-uk Kim         case ACPI_DMT_SRAT:
22131a39cfb0SJung-uk Kim 
22141a39cfb0SJung-uk Kim             /* SRAT subtable types */
22151a39cfb0SJung-uk Kim 
22161a39cfb0SJung-uk Kim             Temp8 = *Target;
22171a39cfb0SJung-uk Kim             if (Temp8 > ACPI_SRAT_TYPE_RESERVED)
22181a39cfb0SJung-uk Kim             {
22191a39cfb0SJung-uk Kim                 Temp8 = ACPI_SRAT_TYPE_RESERVED;
22201a39cfb0SJung-uk Kim             }
22211a39cfb0SJung-uk Kim 
22227cf3e94aSJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
22237cf3e94aSJung-uk Kim                 AcpiDmSratSubnames[Temp8]);
22241a39cfb0SJung-uk Kim             break;
22251a39cfb0SJung-uk Kim 
222667d9aa44SJung-uk Kim         case ACPI_DMT_TPM2:
222767d9aa44SJung-uk Kim 
222867d9aa44SJung-uk Kim             /* TPM2 Start Method types */
222967d9aa44SJung-uk Kim 
223067d9aa44SJung-uk Kim             Temp8 = *Target;
223167d9aa44SJung-uk Kim             if (Temp8 > ACPI_TPM2_RESERVED)
223267d9aa44SJung-uk Kim             {
223367d9aa44SJung-uk Kim                 Temp8 = ACPI_TPM2_RESERVED;
223467d9aa44SJung-uk Kim             }
223567d9aa44SJung-uk Kim 
223667d9aa44SJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
223767d9aa44SJung-uk Kim                 AcpiDmTpm2Subnames[Temp8]);
223867d9aa44SJung-uk Kim             break;
223967d9aa44SJung-uk Kim 
224067d9aa44SJung-uk Kim 
2241a9f12690SJung-uk Kim         case ACPI_DMT_FADTPM:
2242a9f12690SJung-uk Kim 
2243a9f12690SJung-uk Kim             /* FADT Preferred PM Profile names */
2244a9f12690SJung-uk Kim 
2245a9f12690SJung-uk Kim             Temp8 = *Target;
2246a9f12690SJung-uk Kim             if (Temp8 > ACPI_FADT_PM_RESERVED)
2247a9f12690SJung-uk Kim             {
2248a9f12690SJung-uk Kim                 Temp8 = ACPI_FADT_PM_RESERVED;
2249a9f12690SJung-uk Kim             }
2250a9f12690SJung-uk Kim 
22517cf3e94aSJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
22527cf3e94aSJung-uk Kim                 AcpiDmFadtProfiles[Temp8]);
2253a9f12690SJung-uk Kim             break;
2254a9f12690SJung-uk Kim 
2255d6dd1baeSJung-uk Kim         case ACPI_DMT_IVRS:
2256d6dd1baeSJung-uk Kim 
2257d6dd1baeSJung-uk Kim             /* IVRS subtable types */
2258d6dd1baeSJung-uk Kim 
2259d6dd1baeSJung-uk Kim             Temp8 = *Target;
2260d6dd1baeSJung-uk Kim             switch (Temp8)
2261d6dd1baeSJung-uk Kim             {
22623ee58df5SJung-uk Kim             case ACPI_IVRS_TYPE_HARDWARE1:
22633ee58df5SJung-uk Kim             case ACPI_IVRS_TYPE_HARDWARE2:
2264a9d8d09cSJung-uk Kim 
2265d6dd1baeSJung-uk Kim                 Name = AcpiDmIvrsSubnames[0];
2266d6dd1baeSJung-uk Kim                 break;
2267d6dd1baeSJung-uk Kim 
22681970d693SJung-uk Kim             case ACPI_IVRS_TYPE_HARDWARE3:
22691970d693SJung-uk Kim 
22701970d693SJung-uk Kim                 Name = AcpiDmIvrsSubnames[1];
22711970d693SJung-uk Kim                 break;
22721970d693SJung-uk Kim 
2273d6dd1baeSJung-uk Kim             case ACPI_IVRS_TYPE_MEMORY1:
2274d6dd1baeSJung-uk Kim             case ACPI_IVRS_TYPE_MEMORY2:
2275d6dd1baeSJung-uk Kim             case ACPI_IVRS_TYPE_MEMORY3:
2276a9d8d09cSJung-uk Kim 
22771970d693SJung-uk Kim                 Name = AcpiDmIvrsSubnames[2];
2278d6dd1baeSJung-uk Kim                 break;
2279d6dd1baeSJung-uk Kim 
2280d6dd1baeSJung-uk Kim             default:
2281a9d8d09cSJung-uk Kim 
22821970d693SJung-uk Kim                 Name = AcpiDmIvrsSubnames[3];
22831970d693SJung-uk Kim                 break;
22841970d693SJung-uk Kim             }
22851970d693SJung-uk Kim 
22861970d693SJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target, Name);
22871970d693SJung-uk Kim             break;
22881970d693SJung-uk Kim 
22891970d693SJung-uk Kim         case ACPI_DMT_IVRS_DE:
22901970d693SJung-uk Kim 
22911970d693SJung-uk Kim             /* IVRS device entry types */
22921970d693SJung-uk Kim 
22931970d693SJung-uk Kim             Temp8 = *Target;
22941970d693SJung-uk Kim             switch (Temp8)
22951970d693SJung-uk Kim             {
22961970d693SJung-uk Kim             case ACPI_IVRS_TYPE_ALL:
22971970d693SJung-uk Kim             case ACPI_IVRS_TYPE_SELECT:
22981970d693SJung-uk Kim             case ACPI_IVRS_TYPE_START:
22991970d693SJung-uk Kim             case ACPI_IVRS_TYPE_END:
23001970d693SJung-uk Kim 
23011970d693SJung-uk Kim                 Name = AcpiDmIvrsDevEntryNames[Temp8];
23021970d693SJung-uk Kim                 break;
23031970d693SJung-uk Kim 
23041970d693SJung-uk Kim             case ACPI_IVRS_TYPE_ALIAS_SELECT:
23051970d693SJung-uk Kim             case ACPI_IVRS_TYPE_ALIAS_START:
23061970d693SJung-uk Kim             case ACPI_IVRS_TYPE_EXT_SELECT:
23071970d693SJung-uk Kim             case ACPI_IVRS_TYPE_EXT_START:
23081970d693SJung-uk Kim             case ACPI_IVRS_TYPE_SPECIAL:
23091970d693SJung-uk Kim 
23101970d693SJung-uk Kim                 Name = AcpiDmIvrsDevEntryNames[Temp8 - 61];
23111970d693SJung-uk Kim                 break;
23121970d693SJung-uk Kim 
23131970d693SJung-uk Kim             case ACPI_IVRS_TYPE_HID:
23141970d693SJung-uk Kim 
23151970d693SJung-uk Kim                 Name = AcpiDmIvrsDevEntryNames[Temp8 - 228];
23161970d693SJung-uk Kim                 break;
23171970d693SJung-uk Kim 
23181970d693SJung-uk Kim             default:
23191970d693SJung-uk Kim                 Name = AcpiDmIvrsDevEntryNames[0];  /* Unknown/Reserved */
2320d6dd1baeSJung-uk Kim                 break;
2321d6dd1baeSJung-uk Kim             }
2322d6dd1baeSJung-uk Kim 
2323d052a1ccSJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target, Name);
2324d6dd1baeSJung-uk Kim             break;
2325d6dd1baeSJung-uk Kim 
2326313a0c13SJung-uk Kim         case ACPI_DMT_LPIT:
2327313a0c13SJung-uk Kim 
2328313a0c13SJung-uk Kim             /* LPIT subtable types */
2329313a0c13SJung-uk Kim 
23307cf3e94aSJung-uk Kim             Temp32 = ACPI_GET32 (Target);
23317cf3e94aSJung-uk Kim             if (Temp32 > ACPI_LPIT_TYPE_RESERVED)
2332313a0c13SJung-uk Kim             {
23337cf3e94aSJung-uk Kim                 Temp32 = ACPI_LPIT_TYPE_RESERVED;
2334313a0c13SJung-uk Kim             }
2335313a0c13SJung-uk Kim 
23367cf3e94aSJung-uk Kim             AcpiOsPrintf (UINT32_FORMAT, ACPI_GET32 (Target),
23377cf3e94aSJung-uk Kim                 AcpiDmLpitSubnames[Temp32]);
2338313a0c13SJung-uk Kim             break;
2339313a0c13SJung-uk Kim 
2340cfd1ed46SJung-uk Kim         case ACPI_DMT_VIOT:
2341cfd1ed46SJung-uk Kim 
2342cfd1ed46SJung-uk Kim             /* VIOT subtable types */
2343cfd1ed46SJung-uk Kim 
2344cfd1ed46SJung-uk Kim             Temp8 = *Target;
2345cfd1ed46SJung-uk Kim             if (Temp8 > ACPI_VIOT_RESERVED)
2346cfd1ed46SJung-uk Kim             {
2347cfd1ed46SJung-uk Kim                 Temp8 = ACPI_VIOT_RESERVED;
2348cfd1ed46SJung-uk Kim             }
2349cfd1ed46SJung-uk Kim 
2350cfd1ed46SJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
2351cfd1ed46SJung-uk Kim                 AcpiDmViotSubnames[Temp8]);
2352cfd1ed46SJung-uk Kim             break;
2353cfd1ed46SJung-uk Kim 
23541a39cfb0SJung-uk Kim         case ACPI_DMT_EXIT:
2355a9d8d09cSJung-uk Kim 
2356a9f12690SJung-uk Kim             return (AE_OK);
23571a39cfb0SJung-uk Kim 
23581a39cfb0SJung-uk Kim         default:
2359a9d8d09cSJung-uk Kim 
23601a39cfb0SJung-uk Kim             ACPI_ERROR ((AE_INFO,
2361ca3cf4faSJung-uk Kim                 "**** Invalid table opcode [0x%X] ****\n", Info->Opcode));
2362a9f12690SJung-uk Kim             return (AE_SUPPORT);
23631a39cfb0SJung-uk Kim         }
23641a39cfb0SJung-uk Kim     }
2365a9f12690SJung-uk Kim 
2366a9f12690SJung-uk Kim     if (TableOffset && !SubtableLength)
2367a9f12690SJung-uk Kim     {
23687cf3e94aSJung-uk Kim         /*
23697cf3e94aSJung-uk Kim          * If this table is not the main table, the subtable must have a
23707cf3e94aSJung-uk Kim          * valid length
23717cf3e94aSJung-uk Kim          */
2372a9f12690SJung-uk Kim         AcpiOsPrintf ("Invalid zero length subtable\n");
2373a9f12690SJung-uk Kim         return (AE_BAD_DATA);
2374a9f12690SJung-uk Kim     }
2375a9f12690SJung-uk Kim 
2376a9f12690SJung-uk Kim     return (AE_OK);
23771a39cfb0SJung-uk Kim }
2378