xref: /onnv-gate/usr/src/uts/intel/io/acpica/resources/rsdump.c (revision 9980:13d7f3eec672)
13446Smrj /*******************************************************************************
23446Smrj  *
33446Smrj  * Module Name: rsdump - Functions to display the resource structures.
43446Smrj  *
53446Smrj  ******************************************************************************/
63446Smrj 
73446Smrj /******************************************************************************
83446Smrj  *
93446Smrj  * 1. Copyright Notice
103446Smrj  *
11*9980SDana.Myers@Sun.COM  * Some or all of this work - Copyright (c) 1999 - 2009, Intel Corp.
123446Smrj  * All rights reserved.
133446Smrj  *
143446Smrj  * 2. License
153446Smrj  *
163446Smrj  * 2.1. This is your license from Intel Corp. under its intellectual property
173446Smrj  * rights.  You may have additional license terms from the party that provided
183446Smrj  * you this software, covering your right to use that party's intellectual
193446Smrj  * property rights.
203446Smrj  *
213446Smrj  * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
223446Smrj  * copy of the source code appearing in this file ("Covered Code") an
233446Smrj  * irrevocable, perpetual, worldwide license under Intel's copyrights in the
243446Smrj  * base code distributed originally by Intel ("Original Intel Code") to copy,
253446Smrj  * make derivatives, distribute, use and display any portion of the Covered
263446Smrj  * Code in any form, with the right to sublicense such rights; and
273446Smrj  *
283446Smrj  * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
293446Smrj  * license (with the right to sublicense), under only those claims of Intel
303446Smrj  * patents that are infringed by the Original Intel Code, to make, use, sell,
313446Smrj  * offer to sell, and import the Covered Code and derivative works thereof
323446Smrj  * solely to the minimum extent necessary to exercise the above copyright
333446Smrj  * license, and in no event shall the patent license extend to any additions
343446Smrj  * to or modifications of the Original Intel Code.  No other license or right
353446Smrj  * is granted directly or by implication, estoppel or otherwise;
363446Smrj  *
373446Smrj  * The above copyright and patent license is granted only if the following
383446Smrj  * conditions are met:
393446Smrj  *
403446Smrj  * 3. Conditions
413446Smrj  *
423446Smrj  * 3.1. Redistribution of Source with Rights to Further Distribute Source.
433446Smrj  * Redistribution of source code of any substantial portion of the Covered
443446Smrj  * Code or modification with rights to further distribute source must include
453446Smrj  * the above Copyright Notice, the above License, this list of Conditions,
463446Smrj  * and the following Disclaimer and Export Compliance provision.  In addition,
473446Smrj  * Licensee must cause all Covered Code to which Licensee contributes to
483446Smrj  * contain a file documenting the changes Licensee made to create that Covered
493446Smrj  * Code and the date of any change.  Licensee must include in that file the
503446Smrj  * documentation of any changes made by any predecessor Licensee.  Licensee
513446Smrj  * must include a prominent statement that the modification is derived,
523446Smrj  * directly or indirectly, from Original Intel Code.
533446Smrj  *
543446Smrj  * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
553446Smrj  * Redistribution of source code of any substantial portion of the Covered
563446Smrj  * Code or modification without rights to further distribute source must
573446Smrj  * include the following Disclaimer and Export Compliance provision in the
583446Smrj  * documentation and/or other materials provided with distribution.  In
593446Smrj  * addition, Licensee may not authorize further sublicense of source of any
603446Smrj  * portion of the Covered Code, and must include terms to the effect that the
613446Smrj  * license from Licensee to its licensee is limited to the intellectual
623446Smrj  * property embodied in the software Licensee provides to its licensee, and
633446Smrj  * not to intellectual property embodied in modifications its licensee may
643446Smrj  * make.
653446Smrj  *
663446Smrj  * 3.3. Redistribution of Executable. Redistribution in executable form of any
673446Smrj  * substantial portion of the Covered Code or modification must reproduce the
683446Smrj  * above Copyright Notice, and the following Disclaimer and Export Compliance
693446Smrj  * provision in the documentation and/or other materials provided with the
703446Smrj  * distribution.
713446Smrj  *
723446Smrj  * 3.4. Intel retains all right, title, and interest in and to the Original
733446Smrj  * Intel Code.
743446Smrj  *
753446Smrj  * 3.5. Neither the name Intel nor any other trademark owned or controlled by
763446Smrj  * Intel shall be used in advertising or otherwise to promote the sale, use or
773446Smrj  * other dealings in products derived from or relating to the Covered Code
783446Smrj  * without prior written authorization from Intel.
793446Smrj  *
803446Smrj  * 4. Disclaimer and Export Compliance
813446Smrj  *
823446Smrj  * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
833446Smrj  * HERE.  ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
843446Smrj  * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT,  ASSISTANCE,
853446Smrj  * INSTALLATION, TRAINING OR OTHER SERVICES.  INTEL WILL NOT PROVIDE ANY
863446Smrj  * UPDATES, ENHANCEMENTS OR EXTENSIONS.  INTEL SPECIFICALLY DISCLAIMS ANY
873446Smrj  * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
883446Smrj  * PARTICULAR PURPOSE.
893446Smrj  *
903446Smrj  * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
913446Smrj  * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
923446Smrj  * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
933446Smrj  * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
943446Smrj  * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
953446Smrj  * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.  THESE LIMITATIONS
963446Smrj  * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
973446Smrj  * LIMITED REMEDY.
983446Smrj  *
993446Smrj  * 4.3. Licensee shall not export, either directly or indirectly, any of this
1003446Smrj  * software or system incorporating such software without first obtaining any
1013446Smrj  * required license or other approval from the U. S. Department of Commerce or
1023446Smrj  * any other agency or department of the United States Government.  In the
1033446Smrj  * event Licensee exports any such software from the United States or
1043446Smrj  * re-exports any such software from a foreign destination, Licensee shall
1053446Smrj  * ensure that the distribution and export/re-export of the software is in
1063446Smrj  * compliance with all laws, regulations, orders, or other restrictions of the
1073446Smrj  * U.S. Export Administration Regulations. Licensee agrees that neither it nor
1083446Smrj  * any of its subsidiaries will export/re-export any technical data, process,
1093446Smrj  * software, or service, directly or indirectly, to any country for which the
1103446Smrj  * United States government or any agency thereof requires an export license,
1113446Smrj  * other governmental approval, or letter of assurance, without first obtaining
1123446Smrj  * such license, approval or letter.
1133446Smrj  *
1143446Smrj  *****************************************************************************/
1153446Smrj 
1163446Smrj 
1173446Smrj #define __RSDUMP_C__
1183446Smrj 
1193446Smrj #include "acpi.h"
120*9980SDana.Myers@Sun.COM #include "accommon.h"
1213446Smrj #include "acresrc.h"
1223446Smrj 
1233446Smrj #define _COMPONENT          ACPI_RESOURCES
1243446Smrj         ACPI_MODULE_NAME    ("rsdump")
1253446Smrj 
1263446Smrj 
1273446Smrj #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
1283446Smrj 
1293446Smrj /* Local prototypes */
1303446Smrj 
1313446Smrj static void
1323446Smrj AcpiRsOutString (
1333446Smrj     char                    *Title,
1343446Smrj     char                    *Value);
1353446Smrj 
1363446Smrj static void
1373446Smrj AcpiRsOutInteger8 (
1383446Smrj     char                    *Title,
1393446Smrj     UINT8                   Value);
1403446Smrj 
1413446Smrj static void
1423446Smrj AcpiRsOutInteger16 (
1433446Smrj     char                    *Title,
1443446Smrj     UINT16                  Value);
1453446Smrj 
1463446Smrj static void
1473446Smrj AcpiRsOutInteger32 (
1483446Smrj     char                    *Title,
1493446Smrj     UINT32                  Value);
1503446Smrj 
1513446Smrj static void
1523446Smrj AcpiRsOutInteger64 (
1533446Smrj     char                    *Title,
1543446Smrj     UINT64                  Value);
1553446Smrj 
1563446Smrj static void
1573446Smrj AcpiRsOutTitle (
1583446Smrj     char                    *Title);
1593446Smrj 
1603446Smrj static void
1613446Smrj AcpiRsDumpByteList (
1623446Smrj     UINT16                  Length,
1633446Smrj     UINT8                   *Data);
1643446Smrj 
1653446Smrj static void
1663446Smrj AcpiRsDumpDwordList (
1673446Smrj     UINT8                   Length,
1683446Smrj     UINT32                  *Data);
1693446Smrj 
1703446Smrj static void
1713446Smrj AcpiRsDumpShortByteList (
1723446Smrj     UINT8                  Length,
1733446Smrj     UINT8                  *Data);
1743446Smrj 
1753446Smrj static void
1763446Smrj AcpiRsDumpResourceSource (
1773446Smrj     ACPI_RESOURCE_SOURCE    *ResourceSource);
1783446Smrj 
1793446Smrj static void
1803446Smrj AcpiRsDumpAddressCommon (
1813446Smrj     ACPI_RESOURCE_DATA      *Resource);
1823446Smrj 
1833446Smrj static void
1843446Smrj AcpiRsDumpDescriptor (
1853446Smrj     void                    *Resource,
1863446Smrj     ACPI_RSDUMP_INFO *Table);
1873446Smrj 
1883446Smrj 
1893446Smrj #define ACPI_RSD_OFFSET(f)          (UINT8) ACPI_OFFSET (ACPI_RESOURCE_DATA,f)
1903446Smrj #define ACPI_PRT_OFFSET(f)          (UINT8) ACPI_OFFSET (ACPI_PCI_ROUTING_TABLE,f)
1913446Smrj #define ACPI_RSD_TABLE_SIZE(name)   (sizeof(name) / sizeof (ACPI_RSDUMP_INFO))
1923446Smrj 
1933446Smrj 
1943446Smrj /*******************************************************************************
1953446Smrj  *
1963446Smrj  * Resource Descriptor info tables
1973446Smrj  *
1983446Smrj  * Note: The first table entry must be a Title or Literal and must contain
1993446Smrj  * the table length (number of table entries)
2003446Smrj  *
2013446Smrj  ******************************************************************************/
2023446Smrj 
2037851SDana.Myers@Sun.COM ACPI_RSDUMP_INFO        AcpiRsDumpIrq[7] =
2043446Smrj {
2053446Smrj     {ACPI_RSD_TITLE,    ACPI_RSD_TABLE_SIZE (AcpiRsDumpIrq),                "IRQ",                      NULL},
2067851SDana.Myers@Sun.COM     {ACPI_RSD_UINT8 ,   ACPI_RSD_OFFSET (Irq.DescriptorLength),             "Descriptor Length",        NULL},
2073446Smrj     {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Irq.Triggering),                   "Triggering",               AcpiGbl_HeDecode},
2083446Smrj     {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Irq.Polarity),                     "Polarity",                 AcpiGbl_LlDecode},
2093446Smrj     {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Irq.Sharable),                     "Sharing",                  AcpiGbl_ShrDecode},
2103446Smrj     {ACPI_RSD_UINT8 ,   ACPI_RSD_OFFSET (Irq.InterruptCount),               "Interrupt Count",          NULL},
2113446Smrj     {ACPI_RSD_SHORTLIST,ACPI_RSD_OFFSET (Irq.Interrupts[0]),                "Interrupt List",           NULL}
2123446Smrj };
2133446Smrj 
2143446Smrj ACPI_RSDUMP_INFO        AcpiRsDumpDma[6] =
2153446Smrj {
2163446Smrj     {ACPI_RSD_TITLE,    ACPI_RSD_TABLE_SIZE (AcpiRsDumpDma),                "DMA",                      NULL},
2173446Smrj     {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Dma.Type),                         "Speed",                    AcpiGbl_TypDecode},
2183446Smrj     {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Dma.BusMaster),                    "Mastering",                AcpiGbl_BmDecode},
2193446Smrj     {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Dma.Transfer),                     "Transfer Type",            AcpiGbl_SizDecode},
2203446Smrj     {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (Dma.ChannelCount),                 "Channel Count",            NULL},
2213446Smrj     {ACPI_RSD_SHORTLIST,ACPI_RSD_OFFSET (Dma.Channels[0]),                  "Channel List",             NULL}
2223446Smrj };
2233446Smrj 
2247851SDana.Myers@Sun.COM ACPI_RSDUMP_INFO        AcpiRsDumpStartDpf[4] =
2253446Smrj {
2263446Smrj     {ACPI_RSD_TITLE,    ACPI_RSD_TABLE_SIZE (AcpiRsDumpStartDpf),           "Start-Dependent-Functions",NULL},
2277851SDana.Myers@Sun.COM     {ACPI_RSD_UINT8 ,   ACPI_RSD_OFFSET (StartDpf.DescriptorLength),        "Descriptor Length",        NULL},
2283446Smrj     {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (StartDpf.CompatibilityPriority),   "Compatibility Priority",   AcpiGbl_ConfigDecode},
2293446Smrj     {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (StartDpf.PerformanceRobustness),   "Performance/Robustness",   AcpiGbl_ConfigDecode}
2303446Smrj };
2313446Smrj 
2323446Smrj ACPI_RSDUMP_INFO        AcpiRsDumpEndDpf[1] =
2333446Smrj {
2343446Smrj     {ACPI_RSD_TITLE,    ACPI_RSD_TABLE_SIZE (AcpiRsDumpEndDpf),             "End-Dependent-Functions",  NULL}
2353446Smrj };
2363446Smrj 
2373446Smrj ACPI_RSDUMP_INFO        AcpiRsDumpIo[6] =
2383446Smrj {
2393446Smrj     {ACPI_RSD_TITLE,    ACPI_RSD_TABLE_SIZE (AcpiRsDumpIo),                 "I/O",                      NULL},
2403446Smrj     {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Io.IoDecode),                      "Address Decoding",         AcpiGbl_IoDecode},
2413446Smrj     {ACPI_RSD_UINT16,   ACPI_RSD_OFFSET (Io.Minimum),                       "Address Minimum",          NULL},
2423446Smrj     {ACPI_RSD_UINT16,   ACPI_RSD_OFFSET (Io.Maximum),                       "Address Maximum",          NULL},
2433446Smrj     {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (Io.Alignment),                     "Alignment",                NULL},
2443446Smrj     {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (Io.AddressLength),                 "Address Length",           NULL}
2453446Smrj };
2463446Smrj 
2473446Smrj ACPI_RSDUMP_INFO        AcpiRsDumpFixedIo[3] =
2483446Smrj {
2493446Smrj     {ACPI_RSD_TITLE,    ACPI_RSD_TABLE_SIZE (AcpiRsDumpFixedIo),            "Fixed I/O",                NULL},
2503446Smrj     {ACPI_RSD_UINT16,   ACPI_RSD_OFFSET (FixedIo.Address),                  "Address",                  NULL},
2513446Smrj     {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (FixedIo.AddressLength),            "Address Length",           NULL}
2523446Smrj };
2533446Smrj 
2543446Smrj ACPI_RSDUMP_INFO        AcpiRsDumpVendor[3] =
2553446Smrj {
2563446Smrj     {ACPI_RSD_TITLE,    ACPI_RSD_TABLE_SIZE (AcpiRsDumpVendor),             "Vendor Specific",          NULL},
2573446Smrj     {ACPI_RSD_UINT16,   ACPI_RSD_OFFSET (Vendor.ByteLength),                "Length",                   NULL},
2583446Smrj     {ACPI_RSD_LONGLIST, ACPI_RSD_OFFSET (Vendor.ByteData[0]),               "Vendor Data",              NULL}
2593446Smrj };
2603446Smrj 
2613446Smrj ACPI_RSDUMP_INFO        AcpiRsDumpEndTag[1] =
2623446Smrj {
2633446Smrj     {ACPI_RSD_TITLE,    ACPI_RSD_TABLE_SIZE (AcpiRsDumpEndTag),             "EndTag",                   NULL}
2643446Smrj };
2653446Smrj 
2663446Smrj ACPI_RSDUMP_INFO        AcpiRsDumpMemory24[6] =
2673446Smrj {
2683446Smrj     {ACPI_RSD_TITLE,    ACPI_RSD_TABLE_SIZE (AcpiRsDumpMemory24),           "24-Bit Memory Range",      NULL},
2693446Smrj     {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Memory24.WriteProtect),            "Write Protect",            AcpiGbl_RwDecode},
2703446Smrj     {ACPI_RSD_UINT16,   ACPI_RSD_OFFSET (Memory24.Minimum),                 "Address Minimum",          NULL},
2713446Smrj     {ACPI_RSD_UINT16,   ACPI_RSD_OFFSET (Memory24.Maximum),                 "Address Maximum",          NULL},
2723446Smrj     {ACPI_RSD_UINT16,   ACPI_RSD_OFFSET (Memory24.Alignment),               "Alignment",                NULL},
2733446Smrj     {ACPI_RSD_UINT16,   ACPI_RSD_OFFSET (Memory24.AddressLength),           "Address Length",           NULL}
2743446Smrj };
2753446Smrj 
2763446Smrj ACPI_RSDUMP_INFO        AcpiRsDumpMemory32[6] =
2773446Smrj {
2783446Smrj     {ACPI_RSD_TITLE,    ACPI_RSD_TABLE_SIZE (AcpiRsDumpMemory32),           "32-Bit Memory Range",      NULL},
2793446Smrj     {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Memory32.WriteProtect),            "Write Protect",            AcpiGbl_RwDecode},
2803446Smrj     {ACPI_RSD_UINT32,   ACPI_RSD_OFFSET (Memory32.Minimum),                 "Address Minimum",          NULL},
2813446Smrj     {ACPI_RSD_UINT32,   ACPI_RSD_OFFSET (Memory32.Maximum),                 "Address Maximum",          NULL},
2823446Smrj     {ACPI_RSD_UINT32,   ACPI_RSD_OFFSET (Memory32.Alignment),               "Alignment",                NULL},
2833446Smrj     {ACPI_RSD_UINT32,   ACPI_RSD_OFFSET (Memory32.AddressLength),           "Address Length",           NULL}
2843446Smrj };
2853446Smrj 
2863446Smrj ACPI_RSDUMP_INFO        AcpiRsDumpFixedMemory32[4] =
2873446Smrj {
2883446Smrj     {ACPI_RSD_TITLE,    ACPI_RSD_TABLE_SIZE (AcpiRsDumpFixedMemory32),      "32-Bit Fixed Memory Range",NULL},
2893446Smrj     {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (FixedMemory32.WriteProtect),       "Write Protect",            AcpiGbl_RwDecode},
2903446Smrj     {ACPI_RSD_UINT32,   ACPI_RSD_OFFSET (FixedMemory32.Address),            "Address",                  NULL},
2913446Smrj     {ACPI_RSD_UINT32,   ACPI_RSD_OFFSET (FixedMemory32.AddressLength),      "Address Length",           NULL}
2923446Smrj };
2933446Smrj 
2943446Smrj ACPI_RSDUMP_INFO        AcpiRsDumpAddress16[8] =
2953446Smrj {
2963446Smrj     {ACPI_RSD_TITLE,    ACPI_RSD_TABLE_SIZE (AcpiRsDumpAddress16),          "16-Bit WORD Address Space",NULL},
2973446Smrj     {ACPI_RSD_ADDRESS,  0,                                                  NULL,                       NULL},
2983446Smrj     {ACPI_RSD_UINT16,   ACPI_RSD_OFFSET (Address16.Granularity),            "Granularity",              NULL},
2993446Smrj     {ACPI_RSD_UINT16,   ACPI_RSD_OFFSET (Address16.Minimum),                "Address Minimum",          NULL},
3003446Smrj     {ACPI_RSD_UINT16,   ACPI_RSD_OFFSET (Address16.Maximum),                "Address Maximum",          NULL},
3013446Smrj     {ACPI_RSD_UINT16,   ACPI_RSD_OFFSET (Address16.TranslationOffset),      "Translation Offset",       NULL},
3023446Smrj     {ACPI_RSD_UINT16,   ACPI_RSD_OFFSET (Address16.AddressLength),          "Address Length",           NULL},
3033446Smrj     {ACPI_RSD_SOURCE,   ACPI_RSD_OFFSET (Address16.ResourceSource),         NULL,                       NULL}
3043446Smrj };
3053446Smrj 
3063446Smrj ACPI_RSDUMP_INFO        AcpiRsDumpAddress32[8] =
3073446Smrj {
3083446Smrj     {ACPI_RSD_TITLE,    ACPI_RSD_TABLE_SIZE (AcpiRsDumpAddress32),         "32-Bit DWORD Address Space", NULL},
3093446Smrj     {ACPI_RSD_ADDRESS,  0,                                                  NULL,                       NULL},
3103446Smrj     {ACPI_RSD_UINT32,   ACPI_RSD_OFFSET (Address32.Granularity),            "Granularity",              NULL},
3113446Smrj     {ACPI_RSD_UINT32,   ACPI_RSD_OFFSET (Address32.Minimum),                "Address Minimum",          NULL},
3123446Smrj     {ACPI_RSD_UINT32,   ACPI_RSD_OFFSET (Address32.Maximum),                "Address Maximum",          NULL},
3133446Smrj     {ACPI_RSD_UINT32,   ACPI_RSD_OFFSET (Address32.TranslationOffset),      "Translation Offset",       NULL},
3143446Smrj     {ACPI_RSD_UINT32,   ACPI_RSD_OFFSET (Address32.AddressLength),          "Address Length",           NULL},
3153446Smrj     {ACPI_RSD_SOURCE,   ACPI_RSD_OFFSET (Address32.ResourceSource),         NULL,                       NULL}
3163446Smrj };
3173446Smrj 
3183446Smrj ACPI_RSDUMP_INFO        AcpiRsDumpAddress64[8] =
3193446Smrj {
3203446Smrj     {ACPI_RSD_TITLE,    ACPI_RSD_TABLE_SIZE (AcpiRsDumpAddress64),          "64-Bit QWORD Address Space", NULL},
3213446Smrj     {ACPI_RSD_ADDRESS,  0,                                                  NULL,                       NULL},
3223446Smrj     {ACPI_RSD_UINT64,   ACPI_RSD_OFFSET (Address64.Granularity),            "Granularity",              NULL},
3233446Smrj     {ACPI_RSD_UINT64,   ACPI_RSD_OFFSET (Address64.Minimum),                "Address Minimum",          NULL},
3243446Smrj     {ACPI_RSD_UINT64,   ACPI_RSD_OFFSET (Address64.Maximum),                "Address Maximum",          NULL},
3253446Smrj     {ACPI_RSD_UINT64,   ACPI_RSD_OFFSET (Address64.TranslationOffset),      "Translation Offset",       NULL},
3263446Smrj     {ACPI_RSD_UINT64,   ACPI_RSD_OFFSET (Address64.AddressLength),          "Address Length",           NULL},
3273446Smrj     {ACPI_RSD_SOURCE,   ACPI_RSD_OFFSET (Address64.ResourceSource),         NULL,                       NULL}
3283446Smrj };
3293446Smrj 
3303446Smrj ACPI_RSDUMP_INFO        AcpiRsDumpExtAddress64[8] =
3313446Smrj {
3323446Smrj     {ACPI_RSD_TITLE,    ACPI_RSD_TABLE_SIZE (AcpiRsDumpExtAddress64),       "64-Bit Extended Address Space", NULL},
3333446Smrj     {ACPI_RSD_ADDRESS,  0,                                                  NULL,                       NULL},
3343446Smrj     {ACPI_RSD_UINT64,   ACPI_RSD_OFFSET (ExtAddress64.Granularity),         "Granularity",              NULL},
3353446Smrj     {ACPI_RSD_UINT64,   ACPI_RSD_OFFSET (ExtAddress64.Minimum),             "Address Minimum",          NULL},
3363446Smrj     {ACPI_RSD_UINT64,   ACPI_RSD_OFFSET (ExtAddress64.Maximum),             "Address Maximum",          NULL},
3373446Smrj     {ACPI_RSD_UINT64,   ACPI_RSD_OFFSET (ExtAddress64.TranslationOffset),   "Translation Offset",       NULL},
3383446Smrj     {ACPI_RSD_UINT64,   ACPI_RSD_OFFSET (ExtAddress64.AddressLength),       "Address Length",           NULL},
3393446Smrj     {ACPI_RSD_UINT64,   ACPI_RSD_OFFSET (ExtAddress64.TypeSpecific),        "Type-Specific Attribute",  NULL}
3403446Smrj };
3413446Smrj 
3423446Smrj ACPI_RSDUMP_INFO        AcpiRsDumpExtIrq[8] =
3433446Smrj {
3443446Smrj     {ACPI_RSD_TITLE,    ACPI_RSD_TABLE_SIZE (AcpiRsDumpExtIrq),             "Extended IRQ",             NULL},
3453446Smrj     {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (ExtendedIrq.ProducerConsumer),     "Type",                     AcpiGbl_ConsumeDecode},
3463446Smrj     {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (ExtendedIrq.Triggering),           "Triggering",               AcpiGbl_HeDecode},
3473446Smrj     {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (ExtendedIrq.Polarity),             "Polarity",                 AcpiGbl_LlDecode},
3483446Smrj     {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (ExtendedIrq.Sharable),             "Sharing",                  AcpiGbl_ShrDecode},
3493446Smrj     {ACPI_RSD_SOURCE,   ACPI_RSD_OFFSET (ExtendedIrq.ResourceSource),       NULL,                       NULL},
3503446Smrj     {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (ExtendedIrq.InterruptCount),       "Interrupt Count",          NULL},
3513446Smrj     {ACPI_RSD_DWORDLIST,ACPI_RSD_OFFSET (ExtendedIrq.Interrupts[0]),        "Interrupt List",           NULL}
3523446Smrj };
3533446Smrj 
3543446Smrj ACPI_RSDUMP_INFO        AcpiRsDumpGenericReg[6] =
3553446Smrj {
3563446Smrj     {ACPI_RSD_TITLE,    ACPI_RSD_TABLE_SIZE (AcpiRsDumpGenericReg),         "Generic Register",         NULL},
3573446Smrj     {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (GenericReg.SpaceId),               "Space ID",                 NULL},
3583446Smrj     {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (GenericReg.BitWidth),              "Bit Width",                NULL},
3593446Smrj     {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (GenericReg.BitOffset),             "Bit Offset",               NULL},
3603446Smrj     {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (GenericReg.AccessSize),            "Access Size",              NULL},
3613446Smrj     {ACPI_RSD_UINT64,   ACPI_RSD_OFFSET (GenericReg.Address),               "Address",                  NULL}
3623446Smrj };
3633446Smrj 
3643446Smrj 
3653446Smrj /*
3663446Smrj  * Tables used for common address descriptor flag fields
3673446Smrj  */
3683446Smrj static ACPI_RSDUMP_INFO AcpiRsDumpGeneralFlags[5] =
3693446Smrj {
3703446Smrj     {ACPI_RSD_TITLE,    ACPI_RSD_TABLE_SIZE (AcpiRsDumpGeneralFlags),       NULL,                       NULL},
3713446Smrj     {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Address.ProducerConsumer),         "Consumer/Producer",        AcpiGbl_ConsumeDecode},
3723446Smrj     {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Address.Decode),                   "Address Decode",           AcpiGbl_DecDecode},
3733446Smrj     {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Address.MinAddressFixed),          "Min Relocatability",       AcpiGbl_MinDecode},
3743446Smrj     {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Address.MaxAddressFixed),          "Max Relocatability",       AcpiGbl_MaxDecode}
3753446Smrj };
3763446Smrj 
3773446Smrj static ACPI_RSDUMP_INFO AcpiRsDumpMemoryFlags[5] =
3783446Smrj {
3793446Smrj     {ACPI_RSD_LITERAL,  ACPI_RSD_TABLE_SIZE (AcpiRsDumpMemoryFlags),        "Resource Type",            (void *) "Memory Range"},
3803446Smrj     {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Address.Info.Mem.WriteProtect),    "Write Protect",            AcpiGbl_RwDecode},
3813446Smrj     {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Address.Info.Mem.Caching),         "Caching",                  AcpiGbl_MemDecode},
3823446Smrj     {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Address.Info.Mem.RangeType),       "Range Type",               AcpiGbl_MtpDecode},
3833446Smrj     {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Address.Info.Mem.Translation),     "Translation",              AcpiGbl_TtpDecode}
3843446Smrj };
3853446Smrj 
3863446Smrj static ACPI_RSDUMP_INFO AcpiRsDumpIoFlags[4] =
3873446Smrj {
3883446Smrj     {ACPI_RSD_LITERAL,  ACPI_RSD_TABLE_SIZE (AcpiRsDumpIoFlags),            "Resource Type",            (void *) "I/O Range"},
3893446Smrj     {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Address.Info.Io.RangeType),        "Range Type",               AcpiGbl_RngDecode},
3903446Smrj     {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Address.Info.Io.Translation),      "Translation",              AcpiGbl_TtpDecode},
3913446Smrj     {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Address.Info.Io.TranslationType),  "Translation Type",         AcpiGbl_TrsDecode}
3923446Smrj };
3933446Smrj 
3943446Smrj 
3953446Smrj /*
3963446Smrj  * Table used to dump _PRT contents
3973446Smrj  */
3983446Smrj static ACPI_RSDUMP_INFO   AcpiRsDumpPrt[5] =
3993446Smrj {
4003446Smrj     {ACPI_RSD_TITLE,    ACPI_RSD_TABLE_SIZE (AcpiRsDumpPrt),                NULL,                       NULL},
4013446Smrj     {ACPI_RSD_UINT64,   ACPI_PRT_OFFSET (Address),                          "Address",                  NULL},
4023446Smrj     {ACPI_RSD_UINT32,   ACPI_PRT_OFFSET (Pin),                              "Pin",                      NULL},
4033446Smrj     {ACPI_RSD_STRING,   ACPI_PRT_OFFSET (Source[0]),                        "Source",                   NULL},
4043446Smrj     {ACPI_RSD_UINT32,   ACPI_PRT_OFFSET (SourceIndex),                      "Source Index",             NULL}
4053446Smrj };
4063446Smrj 
4073446Smrj 
4083446Smrj /*******************************************************************************
4093446Smrj  *
4103446Smrj  * FUNCTION:    AcpiRsDumpDescriptor
4113446Smrj  *
4123446Smrj  * PARAMETERS:  Resource
4133446Smrj  *
4143446Smrj  * RETURN:      None
4153446Smrj  *
4163446Smrj  * DESCRIPTION:
4173446Smrj  *
4183446Smrj  ******************************************************************************/
4193446Smrj 
4203446Smrj static void
AcpiRsDumpDescriptor(void * Resource,ACPI_RSDUMP_INFO * Table)4213446Smrj AcpiRsDumpDescriptor (
4223446Smrj     void                    *Resource,
4233446Smrj     ACPI_RSDUMP_INFO        *Table)
4243446Smrj {
4253446Smrj     UINT8                   *Target = NULL;
4263446Smrj     UINT8                   *PreviousTarget;
4273446Smrj     char                    *Name;
4283446Smrj     UINT8                    Count;
4293446Smrj 
4303446Smrj 
4313446Smrj     /* First table entry must contain the table length (# of table entries) */
4323446Smrj 
4333446Smrj     Count = Table->Offset;
4343446Smrj 
4353446Smrj     while (Count)
4363446Smrj     {
4373446Smrj         PreviousTarget = Target;
4383446Smrj         Target = ACPI_ADD_PTR (UINT8, Resource, Table->Offset);
4393446Smrj         Name = Table->Name;
4403446Smrj 
4413446Smrj         switch (Table->Opcode)
4423446Smrj         {
4433446Smrj         case ACPI_RSD_TITLE:
4443446Smrj             /*
4453446Smrj              * Optional resource title
4463446Smrj              */
4473446Smrj             if (Table->Name)
4483446Smrj             {
4493446Smrj                 AcpiOsPrintf ("%s Resource\n", Name);
4503446Smrj             }
4513446Smrj             break;
4523446Smrj 
4533446Smrj         /* Strings */
4543446Smrj 
4553446Smrj         case ACPI_RSD_LITERAL:
4563446Smrj             AcpiRsOutString (Name, ACPI_CAST_PTR (char, Table->Pointer));
4573446Smrj             break;
4583446Smrj 
4593446Smrj         case ACPI_RSD_STRING:
4603446Smrj             AcpiRsOutString (Name, ACPI_CAST_PTR (char, Target));
4613446Smrj             break;
4623446Smrj 
4633446Smrj         /* Data items, 8/16/32/64 bit */
4643446Smrj 
4653446Smrj         case ACPI_RSD_UINT8:
4663446Smrj             AcpiRsOutInteger8 (Name, ACPI_GET8 (Target));
4673446Smrj             break;
4683446Smrj 
4693446Smrj         case ACPI_RSD_UINT16:
4703446Smrj             AcpiRsOutInteger16 (Name, ACPI_GET16 (Target));
4713446Smrj             break;
4723446Smrj 
4733446Smrj         case ACPI_RSD_UINT32:
4743446Smrj             AcpiRsOutInteger32 (Name, ACPI_GET32 (Target));
4753446Smrj             break;
4763446Smrj 
4773446Smrj         case ACPI_RSD_UINT64:
4783446Smrj             AcpiRsOutInteger64 (Name, ACPI_GET64 (Target));
4793446Smrj             break;
4803446Smrj 
4813446Smrj         /* Flags: 1-bit and 2-bit flags supported */
4823446Smrj 
4833446Smrj         case ACPI_RSD_1BITFLAG:
4843446Smrj             AcpiRsOutString (Name, ACPI_CAST_PTR (char,
4853446Smrj                 Table->Pointer [*Target & 0x01]));
4863446Smrj             break;
4873446Smrj 
4883446Smrj         case ACPI_RSD_2BITFLAG:
4893446Smrj             AcpiRsOutString (Name, ACPI_CAST_PTR (char,
4903446Smrj                 Table->Pointer [*Target & 0x03]));
4913446Smrj             break;
4923446Smrj 
4933446Smrj         case ACPI_RSD_SHORTLIST:
4943446Smrj             /*
4953446Smrj              * Short byte list (single line output) for DMA and IRQ resources
4963446Smrj              * Note: The list length is obtained from the previous table entry
4973446Smrj              */
4983446Smrj             if (PreviousTarget)
4993446Smrj             {
5003446Smrj                 AcpiRsOutTitle (Name);
5013446Smrj                 AcpiRsDumpShortByteList (*PreviousTarget, Target);
5023446Smrj             }
5033446Smrj             break;
5043446Smrj 
5053446Smrj         case ACPI_RSD_LONGLIST:
5063446Smrj             /*
5073446Smrj              * Long byte list for Vendor resource data
5083446Smrj              * Note: The list length is obtained from the previous table entry
5093446Smrj              */
5103446Smrj             if (PreviousTarget)
5113446Smrj             {
5123446Smrj                 AcpiRsDumpByteList (ACPI_GET16 (PreviousTarget), Target);
5133446Smrj             }
5143446Smrj             break;
5153446Smrj 
5163446Smrj         case ACPI_RSD_DWORDLIST:
5173446Smrj             /*
5183446Smrj              * Dword list for Extended Interrupt resources
5193446Smrj              * Note: The list length is obtained from the previous table entry
5203446Smrj              */
5213446Smrj             if (PreviousTarget)
5223446Smrj             {
5233446Smrj                 AcpiRsDumpDwordList (*PreviousTarget,
5243446Smrj                     ACPI_CAST_PTR (UINT32, Target));
5253446Smrj             }
5263446Smrj             break;
5273446Smrj 
5283446Smrj         case ACPI_RSD_ADDRESS:
5293446Smrj             /*
5303446Smrj              * Common flags for all Address resources
5313446Smrj              */
5323446Smrj             AcpiRsDumpAddressCommon (ACPI_CAST_PTR (ACPI_RESOURCE_DATA, Target));
5333446Smrj             break;
5343446Smrj 
5353446Smrj         case ACPI_RSD_SOURCE:
5363446Smrj             /*
5373446Smrj              * Optional ResourceSource for Address resources
5383446Smrj              */
5393446Smrj             AcpiRsDumpResourceSource (ACPI_CAST_PTR (ACPI_RESOURCE_SOURCE, Target));
5403446Smrj             break;
5413446Smrj 
5423446Smrj         default:
5433446Smrj             AcpiOsPrintf ("**** Invalid table opcode [%X] ****\n",
5443446Smrj                 Table->Opcode);
5453446Smrj             return;
5463446Smrj         }
5473446Smrj 
5483446Smrj         Table++;
5493446Smrj         Count--;
5503446Smrj     }
5513446Smrj }
5523446Smrj 
5533446Smrj 
5543446Smrj /*******************************************************************************
5553446Smrj  *
5563446Smrj  * FUNCTION:    AcpiRsDumpResourceSource
5573446Smrj  *
5583446Smrj  * PARAMETERS:  ResourceSource      - Pointer to a Resource Source struct
5593446Smrj  *
5603446Smrj  * RETURN:      None
5613446Smrj  *
5623446Smrj  * DESCRIPTION: Common routine for dumping the optional ResourceSource and the
5633446Smrj  *              corresponding ResourceSourceIndex.
5643446Smrj  *
5653446Smrj  ******************************************************************************/
5663446Smrj 
5673446Smrj static void
AcpiRsDumpResourceSource(ACPI_RESOURCE_SOURCE * ResourceSource)5683446Smrj AcpiRsDumpResourceSource (
5693446Smrj     ACPI_RESOURCE_SOURCE    *ResourceSource)
5703446Smrj {
5713446Smrj     ACPI_FUNCTION_ENTRY ();
5723446Smrj 
5733446Smrj 
5743446Smrj     if (ResourceSource->Index == 0xFF)
5753446Smrj     {
5763446Smrj         return;
5773446Smrj     }
5783446Smrj 
5793446Smrj     AcpiRsOutInteger8 ("Resource Source Index",
5803446Smrj         ResourceSource->Index);
5813446Smrj 
5823446Smrj     AcpiRsOutString ("Resource Source",
5833446Smrj         ResourceSource->StringPtr ?
5843446Smrj             ResourceSource->StringPtr : "[Not Specified]");
5853446Smrj }
5863446Smrj 
5873446Smrj 
5883446Smrj /*******************************************************************************
5893446Smrj  *
5903446Smrj  * FUNCTION:    AcpiRsDumpAddressCommon
5913446Smrj  *
5923446Smrj  * PARAMETERS:  Resource        - Pointer to an internal resource descriptor
5933446Smrj  *
5943446Smrj  * RETURN:      None
5953446Smrj  *
5963446Smrj  * DESCRIPTION: Dump the fields that are common to all Address resource
5973446Smrj  *              descriptors
5983446Smrj  *
5993446Smrj  ******************************************************************************/
6003446Smrj 
6013446Smrj static void
AcpiRsDumpAddressCommon(ACPI_RESOURCE_DATA * Resource)6023446Smrj AcpiRsDumpAddressCommon (
6033446Smrj     ACPI_RESOURCE_DATA      *Resource)
6043446Smrj {
6053446Smrj     ACPI_FUNCTION_ENTRY ();
6063446Smrj 
6073446Smrj 
6083446Smrj    /* Decode the type-specific flags */
6093446Smrj 
6103446Smrj     switch (Resource->Address.ResourceType)
6113446Smrj     {
6123446Smrj     case ACPI_MEMORY_RANGE:
6133446Smrj 
6143446Smrj         AcpiRsDumpDescriptor (Resource, AcpiRsDumpMemoryFlags);
6153446Smrj         break;
6163446Smrj 
6173446Smrj     case ACPI_IO_RANGE:
6183446Smrj 
6193446Smrj         AcpiRsDumpDescriptor (Resource, AcpiRsDumpIoFlags);
6203446Smrj         break;
6213446Smrj 
6223446Smrj     case ACPI_BUS_NUMBER_RANGE:
6233446Smrj 
6243446Smrj         AcpiRsOutString ("Resource Type", "Bus Number Range");
6253446Smrj         break;
6263446Smrj 
6273446Smrj     default:
6283446Smrj 
6293446Smrj         AcpiRsOutInteger8 ("Resource Type",
6303446Smrj             (UINT8) Resource->Address.ResourceType);
6313446Smrj         break;
6323446Smrj     }
6333446Smrj 
6343446Smrj     /* Decode the general flags */
6353446Smrj 
6363446Smrj     AcpiRsDumpDescriptor (Resource, AcpiRsDumpGeneralFlags);
6373446Smrj }
6383446Smrj 
6393446Smrj 
6403446Smrj /*******************************************************************************
6413446Smrj  *
6423446Smrj  * FUNCTION:    AcpiRsDumpResourceList
6433446Smrj  *
6443446Smrj  * PARAMETERS:  ResourceList        - Pointer to a resource descriptor list
6453446Smrj  *
6463446Smrj  * RETURN:      None
6473446Smrj  *
6483446Smrj  * DESCRIPTION: Dispatches the structure to the correct dump routine.
6493446Smrj  *
6503446Smrj  ******************************************************************************/
6513446Smrj 
6523446Smrj void
AcpiRsDumpResourceList(ACPI_RESOURCE * ResourceList)6533446Smrj AcpiRsDumpResourceList (
6543446Smrj     ACPI_RESOURCE           *ResourceList)
6553446Smrj {
6563446Smrj     UINT32                  Count = 0;
6573446Smrj     UINT32                  Type;
6583446Smrj 
6593446Smrj 
6603446Smrj     ACPI_FUNCTION_ENTRY ();
6613446Smrj 
6623446Smrj 
6633446Smrj     if (!(AcpiDbgLevel & ACPI_LV_RESOURCES) || !( _COMPONENT & AcpiDbgLayer))
6643446Smrj     {
6653446Smrj         return;
6663446Smrj     }
6673446Smrj 
6683446Smrj     /* Walk list and dump all resource descriptors (END_TAG terminates) */
6693446Smrj 
6703446Smrj     do
6713446Smrj     {
6723446Smrj         AcpiOsPrintf ("\n[%02X] ", Count);
6733446Smrj         Count++;
6743446Smrj 
6753446Smrj         /* Validate Type before dispatch */
6763446Smrj 
6773446Smrj         Type = ResourceList->Type;
6783446Smrj         if (Type > ACPI_RESOURCE_TYPE_MAX)
6793446Smrj         {
6803446Smrj             AcpiOsPrintf (
6813446Smrj                 "Invalid descriptor type (%X) in resource list\n",
6823446Smrj                 ResourceList->Type);
6833446Smrj             return;
6843446Smrj         }
6853446Smrj 
6863446Smrj         /* Dump the resource descriptor */
6873446Smrj 
6883446Smrj         AcpiRsDumpDescriptor (&ResourceList->Data,
6893446Smrj             AcpiGbl_DumpResourceDispatch[Type]);
6903446Smrj 
6913446Smrj         /* Point to the next resource structure */
6923446Smrj 
6933446Smrj         ResourceList = ACPI_ADD_PTR (ACPI_RESOURCE, ResourceList,
6943446Smrj                             ResourceList->Length);
6953446Smrj 
6963446Smrj         /* Exit when END_TAG descriptor is reached */
6973446Smrj 
6983446Smrj     } while (Type != ACPI_RESOURCE_TYPE_END_TAG);
6993446Smrj }
7003446Smrj 
7013446Smrj 
7023446Smrj /*******************************************************************************
7033446Smrj  *
7043446Smrj  * FUNCTION:    AcpiRsDumpIrqList
7053446Smrj  *
7063446Smrj  * PARAMETERS:  RouteTable      - Pointer to the routing table to dump.
7073446Smrj  *
7083446Smrj  * RETURN:      None
7093446Smrj  *
7103446Smrj  * DESCRIPTION: Print IRQ routing table
7113446Smrj  *
7123446Smrj  ******************************************************************************/
7133446Smrj 
7143446Smrj void
AcpiRsDumpIrqList(UINT8 * RouteTable)7153446Smrj AcpiRsDumpIrqList (
7163446Smrj     UINT8                   *RouteTable)
7173446Smrj {
7183446Smrj     ACPI_PCI_ROUTING_TABLE  *PrtElement;
7193446Smrj     UINT8                   Count;
7203446Smrj 
7213446Smrj 
7223446Smrj     ACPI_FUNCTION_ENTRY ();
7233446Smrj 
7243446Smrj 
7253446Smrj     if (!(AcpiDbgLevel & ACPI_LV_RESOURCES) || !( _COMPONENT & AcpiDbgLayer))
7263446Smrj     {
7273446Smrj         return;
7283446Smrj     }
7293446Smrj 
7303446Smrj     PrtElement = ACPI_CAST_PTR (ACPI_PCI_ROUTING_TABLE, RouteTable);
7313446Smrj 
7323446Smrj     /* Dump all table elements, Exit on zero length element */
7333446Smrj 
7343446Smrj     for (Count = 0; PrtElement->Length; Count++)
7353446Smrj     {
7363446Smrj         AcpiOsPrintf ("\n[%02X] PCI IRQ Routing Table Package\n", Count);
7373446Smrj         AcpiRsDumpDescriptor (PrtElement, AcpiRsDumpPrt);
7383446Smrj 
7393446Smrj         PrtElement = ACPI_ADD_PTR (ACPI_PCI_ROUTING_TABLE,
7403446Smrj                         PrtElement, PrtElement->Length);
7413446Smrj     }
7423446Smrj }
7433446Smrj 
7443446Smrj 
7453446Smrj /*******************************************************************************
7463446Smrj  *
7473446Smrj  * FUNCTION:    AcpiRsOut*
7483446Smrj  *
7493446Smrj  * PARAMETERS:  Title       - Name of the resource field
7503446Smrj  *              Value       - Value of the resource field
7513446Smrj  *
7523446Smrj  * RETURN:      None
7533446Smrj  *
7543446Smrj  * DESCRIPTION: Miscellaneous helper functions to consistently format the
7553446Smrj  *              output of the resource dump routines
7563446Smrj  *
7573446Smrj  ******************************************************************************/
7583446Smrj 
7593446Smrj static void
AcpiRsOutString(char * Title,char * Value)7603446Smrj AcpiRsOutString (
7613446Smrj     char                    *Title,
7623446Smrj     char                    *Value)
7633446Smrj {
7643446Smrj     AcpiOsPrintf ("%27s : %s", Title, Value);
7653446Smrj     if (!*Value)
7663446Smrj     {
7673446Smrj         AcpiOsPrintf ("[NULL NAMESTRING]");
7683446Smrj     }
7693446Smrj     AcpiOsPrintf ("\n");
7703446Smrj }
7713446Smrj 
7723446Smrj static void
AcpiRsOutInteger8(char * Title,UINT8 Value)7733446Smrj AcpiRsOutInteger8 (
7743446Smrj     char                    *Title,
7753446Smrj     UINT8                   Value)
7763446Smrj {
7773446Smrj     AcpiOsPrintf ("%27s : %2.2X\n", Title, Value);
7783446Smrj }
7793446Smrj 
7803446Smrj static void
AcpiRsOutInteger16(char * Title,UINT16 Value)7813446Smrj AcpiRsOutInteger16 (
7823446Smrj     char                    *Title,
7833446Smrj     UINT16                  Value)
7843446Smrj {
7853446Smrj     AcpiOsPrintf ("%27s : %4.4X\n", Title, Value);
7863446Smrj }
7873446Smrj 
7883446Smrj static void
AcpiRsOutInteger32(char * Title,UINT32 Value)7893446Smrj AcpiRsOutInteger32 (
7903446Smrj     char                    *Title,
7913446Smrj     UINT32                  Value)
7923446Smrj {
7933446Smrj     AcpiOsPrintf ("%27s : %8.8X\n", Title, Value);
7943446Smrj }
7953446Smrj 
7963446Smrj static void
AcpiRsOutInteger64(char * Title,UINT64 Value)7973446Smrj AcpiRsOutInteger64 (
7983446Smrj     char                    *Title,
7993446Smrj     UINT64                  Value)
8003446Smrj {
8013446Smrj     AcpiOsPrintf ("%27s : %8.8X%8.8X\n", Title,
8023446Smrj         ACPI_FORMAT_UINT64 (Value));
8033446Smrj }
8043446Smrj 
8053446Smrj static void
AcpiRsOutTitle(char * Title)8063446Smrj AcpiRsOutTitle (
8073446Smrj     char                    *Title)
8083446Smrj {
8093446Smrj     AcpiOsPrintf ("%27s : ", Title);
8103446Smrj }
8113446Smrj 
8123446Smrj 
8133446Smrj /*******************************************************************************
8143446Smrj  *
8153446Smrj  * FUNCTION:    AcpiRsDump*List
8163446Smrj  *
8173446Smrj  * PARAMETERS:  Length      - Number of elements in the list
8183446Smrj  *              Data        - Start of the list
8193446Smrj  *
8203446Smrj  * RETURN:      None
8213446Smrj  *
8223446Smrj  * DESCRIPTION: Miscellaneous functions to dump lists of raw data
8233446Smrj  *
8243446Smrj  ******************************************************************************/
8253446Smrj 
8263446Smrj static void
AcpiRsDumpByteList(UINT16 Length,UINT8 * Data)8273446Smrj AcpiRsDumpByteList (
8283446Smrj     UINT16                  Length,
8293446Smrj     UINT8                   *Data)
8303446Smrj {
8313446Smrj     UINT8                   i;
8323446Smrj 
8333446Smrj 
8343446Smrj     for (i = 0; i < Length; i++)
8353446Smrj     {
8363446Smrj         AcpiOsPrintf ("%25s%2.2X : %2.2X\n",
8373446Smrj             "Byte", i, Data[i]);
8383446Smrj     }
8393446Smrj }
8403446Smrj 
8413446Smrj static void
AcpiRsDumpShortByteList(UINT8 Length,UINT8 * Data)8423446Smrj AcpiRsDumpShortByteList (
8433446Smrj     UINT8                  Length,
8443446Smrj     UINT8                  *Data)
8453446Smrj {
8463446Smrj     UINT8                   i;
8473446Smrj 
8483446Smrj 
8493446Smrj     for (i = 0; i < Length; i++)
8503446Smrj     {
8513446Smrj         AcpiOsPrintf ("%X ", Data[i]);
8523446Smrj     }
8533446Smrj     AcpiOsPrintf ("\n");
8543446Smrj }
8553446Smrj 
8563446Smrj static void
AcpiRsDumpDwordList(UINT8 Length,UINT32 * Data)8573446Smrj AcpiRsDumpDwordList (
8583446Smrj     UINT8                   Length,
8593446Smrj     UINT32                  *Data)
8603446Smrj {
8613446Smrj     UINT8                   i;
8623446Smrj 
8633446Smrj 
8643446Smrj     for (i = 0; i < Length; i++)
8653446Smrj     {
8663446Smrj         AcpiOsPrintf ("%25s%2.2X : %8.8X\n",
8673446Smrj             "Dword", i, Data[i]);
8683446Smrj     }
8693446Smrj }
8703446Smrj 
8713446Smrj #endif
8723446Smrj 
873