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