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