167754Smsmith/******************************************************************************* 267754Smsmith * 3281687Sjkim * Module Name: rsdump - AML debugger support for resource structures. 467754Smsmith * 567754Smsmith ******************************************************************************/ 667754Smsmith 7217365Sjkim/* 8281075Sdim * Copyright (C) 2000 - 2015, Intel Corp. 970243Smsmith * All rights reserved. 1067754Smsmith * 11217365Sjkim * Redistribution and use in source and binary forms, with or without 12217365Sjkim * modification, are permitted provided that the following conditions 13217365Sjkim * are met: 14217365Sjkim * 1. Redistributions of source code must retain the above copyright 15217365Sjkim * notice, this list of conditions, and the following disclaimer, 16217365Sjkim * without modification. 17217365Sjkim * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18217365Sjkim * substantially similar to the "NO WARRANTY" disclaimer below 19217365Sjkim * ("Disclaimer") and any redistribution must be conditioned upon 20217365Sjkim * including a substantially similar Disclaimer requirement for further 21217365Sjkim * binary redistribution. 22217365Sjkim * 3. Neither the names of the above-listed copyright holders nor the names 23217365Sjkim * of any contributors may be used to endorse or promote products derived 24217365Sjkim * from this software without specific prior written permission. 2567754Smsmith * 26217365Sjkim * Alternatively, this software may be distributed under the terms of the 27217365Sjkim * GNU General Public License ("GPL") version 2 as published by the Free 28217365Sjkim * Software Foundation. 2967754Smsmith * 30217365Sjkim * NO WARRANTY 31217365Sjkim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32217365Sjkim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33217365Sjkim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34217365Sjkim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35217365Sjkim * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36217365Sjkim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37217365Sjkim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38217365Sjkim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39217365Sjkim * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40217365Sjkim * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41217365Sjkim * POSSIBILITY OF SUCH DAMAGES. 42217365Sjkim */ 4367754Smsmith 44193341Sjkim#include <contrib/dev/acpica/include/acpi.h> 45193341Sjkim#include <contrib/dev/acpica/include/accommon.h> 46193341Sjkim#include <contrib/dev/acpica/include/acresrc.h> 4767754Smsmith 4877424Smsmith#define _COMPONENT ACPI_RESOURCES 4991116Smsmith ACPI_MODULE_NAME ("rsdump") 5067754Smsmith 51281687Sjkim/* 52281687Sjkim * All functions in this module are used by the AML Debugger only 53281687Sjkim */ 54281687Sjkim#if defined(ACPI_DEBUGGER) 5567754Smsmith 56151937Sjkim/* Local prototypes */ 5767754Smsmith 58151937Sjkimstatic void 59151937SjkimAcpiRsOutString ( 60151937Sjkim char *Title, 61151937Sjkim char *Value); 6267754Smsmith 63151937Sjkimstatic void 64151937SjkimAcpiRsOutInteger8 ( 65151937Sjkim char *Title, 66151937Sjkim UINT8 Value); 6767754Smsmith 68151937Sjkimstatic void 69151937SjkimAcpiRsOutInteger16 ( 70151937Sjkim char *Title, 71151937Sjkim UINT16 Value); 7283174Smsmith 73151937Sjkimstatic void 74151937SjkimAcpiRsOutInteger32 ( 75151937Sjkim char *Title, 76151937Sjkim UINT32 Value); 7783174Smsmith 78151937Sjkimstatic void 79151937SjkimAcpiRsOutInteger64 ( 80151937Sjkim char *Title, 81151937Sjkim UINT64 Value); 8267754Smsmith 83151937Sjkimstatic void 84151937SjkimAcpiRsOutTitle ( 85151937Sjkim char *Title); 8667754Smsmith 87151937Sjkimstatic void 88151937SjkimAcpiRsDumpByteList ( 89151937Sjkim UINT16 Length, 90151937Sjkim UINT8 *Data); 9167754Smsmith 92151937Sjkimstatic void 93228110SjkimAcpiRsDumpWordList ( 94281687Sjkim UINT16 Length, 95281687Sjkim UINT16 *Data); 96228110Sjkim 97228110Sjkimstatic void 98151937SjkimAcpiRsDumpDwordList ( 99151937Sjkim UINT8 Length, 100151937Sjkim UINT32 *Data); 10167754Smsmith 102151937Sjkimstatic void 103151937SjkimAcpiRsDumpShortByteList ( 104281687Sjkim UINT8 Length, 105281687Sjkim UINT8 *Data); 10667754Smsmith 107151937Sjkimstatic void 108151937SjkimAcpiRsDumpResourceSource ( 109151937Sjkim ACPI_RESOURCE_SOURCE *ResourceSource); 11067754Smsmith 111151937Sjkimstatic void 112151937SjkimAcpiRsDumpAddressCommon ( 113151937Sjkim ACPI_RESOURCE_DATA *Resource); 11467754Smsmith 115151937Sjkimstatic void 116151937SjkimAcpiRsDumpDescriptor ( 117151937Sjkim void *Resource, 118281687Sjkim ACPI_RSDUMP_INFO *Table); 11967754Smsmith 12067754Smsmith 12167754Smsmith/******************************************************************************* 12267754Smsmith * 123281687Sjkim * FUNCTION: AcpiRsDumpResourceList 124281687Sjkim * 125281687Sjkim * PARAMETERS: ResourceList - Pointer to a resource descriptor list 126281687Sjkim * 127281687Sjkim * RETURN: None 128281687Sjkim * 129281687Sjkim * DESCRIPTION: Dispatches the structure to the correct dump routine. 130281687Sjkim * 131281687Sjkim ******************************************************************************/ 132281687Sjkim 133281687Sjkimvoid 134281687SjkimAcpiRsDumpResourceList ( 135281687Sjkim ACPI_RESOURCE *ResourceList) 136281687Sjkim{ 137281687Sjkim UINT32 Count = 0; 138281687Sjkim UINT32 Type; 139281687Sjkim 140281687Sjkim 141281687Sjkim ACPI_FUNCTION_ENTRY (); 142281687Sjkim 143281687Sjkim 144281687Sjkim /* Check if debug output enabled */ 145281687Sjkim 146281687Sjkim if (!ACPI_IS_DEBUG_ENABLED (ACPI_LV_RESOURCES, _COMPONENT)) 147281687Sjkim { 148281687Sjkim return; 149281687Sjkim } 150281687Sjkim 151281687Sjkim /* Walk list and dump all resource descriptors (END_TAG terminates) */ 152281687Sjkim 153281687Sjkim do 154281687Sjkim { 155281687Sjkim AcpiOsPrintf ("\n[%02X] ", Count); 156281687Sjkim Count++; 157281687Sjkim 158281687Sjkim /* Validate Type before dispatch */ 159281687Sjkim 160281687Sjkim Type = ResourceList->Type; 161281687Sjkim if (Type > ACPI_RESOURCE_TYPE_MAX) 162281687Sjkim { 163281687Sjkim AcpiOsPrintf ( 164281687Sjkim "Invalid descriptor type (%X) in resource list\n", 165281687Sjkim ResourceList->Type); 166281687Sjkim return; 167281687Sjkim } 168281687Sjkim 169281687Sjkim /* Sanity check the length. It must not be zero, or we loop forever */ 170281687Sjkim 171281687Sjkim if (!ResourceList->Length) 172281687Sjkim { 173281687Sjkim AcpiOsPrintf ( 174281687Sjkim "Invalid zero length descriptor in resource list\n"); 175281687Sjkim return; 176281687Sjkim } 177281687Sjkim 178281687Sjkim /* Dump the resource descriptor */ 179281687Sjkim 180281687Sjkim if (Type == ACPI_RESOURCE_TYPE_SERIAL_BUS) 181281687Sjkim { 182281687Sjkim AcpiRsDumpDescriptor (&ResourceList->Data, 183281687Sjkim AcpiGbl_DumpSerialBusDispatch[ 184281687Sjkim ResourceList->Data.CommonSerialBus.Type]); 185281687Sjkim } 186281687Sjkim else 187281687Sjkim { 188281687Sjkim AcpiRsDumpDescriptor (&ResourceList->Data, 189281687Sjkim AcpiGbl_DumpResourceDispatch[Type]); 190281687Sjkim } 191281687Sjkim 192281687Sjkim /* Point to the next resource structure */ 193281687Sjkim 194281687Sjkim ResourceList = ACPI_NEXT_RESOURCE (ResourceList); 195281687Sjkim 196281687Sjkim /* Exit when END_TAG descriptor is reached */ 197281687Sjkim 198281687Sjkim } while (Type != ACPI_RESOURCE_TYPE_END_TAG); 199281687Sjkim} 200281687Sjkim 201281687Sjkim 202281687Sjkim/******************************************************************************* 203281687Sjkim * 204281687Sjkim * FUNCTION: AcpiRsDumpIrqList 205281687Sjkim * 206281687Sjkim * PARAMETERS: RouteTable - Pointer to the routing table to dump. 207281687Sjkim * 208281687Sjkim * RETURN: None 209281687Sjkim * 210281687Sjkim * DESCRIPTION: Print IRQ routing table 211281687Sjkim * 212281687Sjkim ******************************************************************************/ 213281687Sjkim 214281687Sjkimvoid 215281687SjkimAcpiRsDumpIrqList ( 216281687Sjkim UINT8 *RouteTable) 217281687Sjkim{ 218281687Sjkim ACPI_PCI_ROUTING_TABLE *PrtElement; 219281687Sjkim UINT8 Count; 220281687Sjkim 221281687Sjkim 222281687Sjkim ACPI_FUNCTION_ENTRY (); 223281687Sjkim 224281687Sjkim 225281687Sjkim /* Check if debug output enabled */ 226281687Sjkim 227281687Sjkim if (!ACPI_IS_DEBUG_ENABLED (ACPI_LV_RESOURCES, _COMPONENT)) 228281687Sjkim { 229281687Sjkim return; 230281687Sjkim } 231281687Sjkim 232281687Sjkim PrtElement = ACPI_CAST_PTR (ACPI_PCI_ROUTING_TABLE, RouteTable); 233281687Sjkim 234281687Sjkim /* Dump all table elements, Exit on zero length element */ 235281687Sjkim 236281687Sjkim for (Count = 0; PrtElement->Length; Count++) 237281687Sjkim { 238281687Sjkim AcpiOsPrintf ("\n[%02X] PCI IRQ Routing Table Package\n", Count); 239281687Sjkim AcpiRsDumpDescriptor (PrtElement, AcpiRsDumpPrt); 240281687Sjkim 241281687Sjkim PrtElement = ACPI_ADD_PTR (ACPI_PCI_ROUTING_TABLE, 242281687Sjkim PrtElement, PrtElement->Length); 243281687Sjkim } 244281687Sjkim} 245281687Sjkim 246281687Sjkim 247281687Sjkim/******************************************************************************* 248281687Sjkim * 249151937Sjkim * FUNCTION: AcpiRsDumpDescriptor 25067754Smsmith * 251245582Sjkim * PARAMETERS: Resource - Buffer containing the resource 252245582Sjkim * Table - Table entry to decode the resource 25367754Smsmith * 25477424Smsmith * RETURN: None 25567754Smsmith * 256245582Sjkim * DESCRIPTION: Dump a resource descriptor based on a dump table entry. 25767754Smsmith * 25867754Smsmith ******************************************************************************/ 25967754Smsmith 260151937Sjkimstatic void 261151937SjkimAcpiRsDumpDescriptor ( 262151937Sjkim void *Resource, 263151937Sjkim ACPI_RSDUMP_INFO *Table) 26467754Smsmith{ 265167802Sjkim UINT8 *Target = NULL; 266167802Sjkim UINT8 *PreviousTarget; 267151937Sjkim char *Name; 268151937Sjkim UINT8 Count; 26967754Smsmith 27067754Smsmith 271151937Sjkim /* First table entry must contain the table length (# of table entries) */ 27283174Smsmith 273151937Sjkim Count = Table->Offset; 27483174Smsmith 275151937Sjkim while (Count) 27667754Smsmith { 277151937Sjkim PreviousTarget = Target; 278167802Sjkim Target = ACPI_ADD_PTR (UINT8, Resource, Table->Offset); 279151937Sjkim Name = Table->Name; 28067754Smsmith 281151937Sjkim switch (Table->Opcode) 282151937Sjkim { 283151937Sjkim case ACPI_RSD_TITLE: 284151937Sjkim /* 285151937Sjkim * Optional resource title 286151937Sjkim */ 287151937Sjkim if (Table->Name) 288151937Sjkim { 289151937Sjkim AcpiOsPrintf ("%s Resource\n", Name); 290151937Sjkim } 291151937Sjkim break; 29267754Smsmith 293151937Sjkim /* Strings */ 29467754Smsmith 295151937Sjkim case ACPI_RSD_LITERAL: 296250838Sjkim 297167802Sjkim AcpiRsOutString (Name, ACPI_CAST_PTR (char, Table->Pointer)); 298151937Sjkim break; 29967754Smsmith 300151937Sjkim case ACPI_RSD_STRING: 301250838Sjkim 302167802Sjkim AcpiRsOutString (Name, ACPI_CAST_PTR (char, Target)); 303151937Sjkim break; 30467754Smsmith 305151937Sjkim /* Data items, 8/16/32/64 bit */ 30667754Smsmith 307151937Sjkim case ACPI_RSD_UINT8: 308250838Sjkim 309228110Sjkim if (Table->Pointer) 310228110Sjkim { 311228110Sjkim AcpiRsOutString (Name, ACPI_CAST_PTR (char, 312228110Sjkim Table->Pointer [*Target])); 313228110Sjkim } 314228110Sjkim else 315228110Sjkim { 316228110Sjkim AcpiRsOutInteger8 (Name, ACPI_GET8 (Target)); 317228110Sjkim } 318151937Sjkim break; 31983174Smsmith 320151937Sjkim case ACPI_RSD_UINT16: 321250838Sjkim 322167802Sjkim AcpiRsOutInteger16 (Name, ACPI_GET16 (Target)); 323151937Sjkim break; 32483174Smsmith 325151937Sjkim case ACPI_RSD_UINT32: 326250838Sjkim 327167802Sjkim AcpiRsOutInteger32 (Name, ACPI_GET32 (Target)); 328151937Sjkim break; 32967754Smsmith 330151937Sjkim case ACPI_RSD_UINT64: 331252279Sjkim 332167802Sjkim AcpiRsOutInteger64 (Name, ACPI_GET64 (Target)); 333151937Sjkim break; 33467754Smsmith 335151937Sjkim /* Flags: 1-bit and 2-bit flags supported */ 33667754Smsmith 337151937Sjkim case ACPI_RSD_1BITFLAG: 338250838Sjkim 339167802Sjkim AcpiRsOutString (Name, ACPI_CAST_PTR (char, 340167802Sjkim Table->Pointer [*Target & 0x01])); 341151937Sjkim break; 34267754Smsmith 343151937Sjkim case ACPI_RSD_2BITFLAG: 344250838Sjkim 345167802Sjkim AcpiRsOutString (Name, ACPI_CAST_PTR (char, 346167802Sjkim Table->Pointer [*Target & 0x03])); 347151937Sjkim break; 34867754Smsmith 349228110Sjkim case ACPI_RSD_3BITFLAG: 350250838Sjkim 351228110Sjkim AcpiRsOutString (Name, ACPI_CAST_PTR (char, 352228110Sjkim Table->Pointer [*Target & 0x07])); 353228110Sjkim break; 354228110Sjkim 355151937Sjkim case ACPI_RSD_SHORTLIST: 356151937Sjkim /* 357151937Sjkim * Short byte list (single line output) for DMA and IRQ resources 358151937Sjkim * Note: The list length is obtained from the previous table entry 359151937Sjkim */ 360151937Sjkim if (PreviousTarget) 361151937Sjkim { 362151937Sjkim AcpiRsOutTitle (Name); 363167802Sjkim AcpiRsDumpShortByteList (*PreviousTarget, Target); 364151937Sjkim } 365151937Sjkim break; 36667754Smsmith 367228110Sjkim case ACPI_RSD_SHORTLISTX: 368228110Sjkim /* 369228110Sjkim * Short byte list (single line output) for GPIO vendor data 370228110Sjkim * Note: The list length is obtained from the previous table entry 371228110Sjkim */ 372228110Sjkim if (PreviousTarget) 373228110Sjkim { 374228110Sjkim AcpiRsOutTitle (Name); 375228110Sjkim AcpiRsDumpShortByteList (*PreviousTarget, 376228110Sjkim *(ACPI_CAST_INDIRECT_PTR (UINT8, Target))); 377228110Sjkim } 378228110Sjkim break; 379228110Sjkim 380151937Sjkim case ACPI_RSD_LONGLIST: 381151937Sjkim /* 382151937Sjkim * Long byte list for Vendor resource data 383151937Sjkim * Note: The list length is obtained from the previous table entry 384151937Sjkim */ 385151937Sjkim if (PreviousTarget) 386151937Sjkim { 387167802Sjkim AcpiRsDumpByteList (ACPI_GET16 (PreviousTarget), Target); 388151937Sjkim } 389151937Sjkim break; 39067754Smsmith 391151937Sjkim case ACPI_RSD_DWORDLIST: 392151937Sjkim /* 393151937Sjkim * Dword list for Extended Interrupt resources 394151937Sjkim * Note: The list length is obtained from the previous table entry 395151937Sjkim */ 396151937Sjkim if (PreviousTarget) 397151937Sjkim { 398167802Sjkim AcpiRsDumpDwordList (*PreviousTarget, 399167802Sjkim ACPI_CAST_PTR (UINT32, Target)); 400151937Sjkim } 401151937Sjkim break; 40267754Smsmith 403228110Sjkim case ACPI_RSD_WORDLIST: 404228110Sjkim /* 405228110Sjkim * Word list for GPIO Pin Table 406228110Sjkim * Note: The list length is obtained from the previous table entry 407228110Sjkim */ 408228110Sjkim if (PreviousTarget) 409228110Sjkim { 410228110Sjkim AcpiRsDumpWordList (*PreviousTarget, 411228110Sjkim *(ACPI_CAST_INDIRECT_PTR (UINT16, Target))); 412228110Sjkim } 413228110Sjkim break; 414228110Sjkim 415151937Sjkim case ACPI_RSD_ADDRESS: 416151937Sjkim /* 417151937Sjkim * Common flags for all Address resources 418151937Sjkim */ 419281687Sjkim AcpiRsDumpAddressCommon (ACPI_CAST_PTR ( 420281687Sjkim ACPI_RESOURCE_DATA, Target)); 421151937Sjkim break; 42267754Smsmith 423151937Sjkim case ACPI_RSD_SOURCE: 424151937Sjkim /* 425151937Sjkim * Optional ResourceSource for Address resources 426151937Sjkim */ 427281687Sjkim AcpiRsDumpResourceSource (ACPI_CAST_PTR ( 428281687Sjkim ACPI_RESOURCE_SOURCE, Target)); 429151937Sjkim break; 43067754Smsmith 431151937Sjkim default: 432250838Sjkim 433151937Sjkim AcpiOsPrintf ("**** Invalid table opcode [%X] ****\n", 434151937Sjkim Table->Opcode); 435151937Sjkim return; 436151937Sjkim } 43767754Smsmith 438151937Sjkim Table++; 439151937Sjkim Count--; 440151937Sjkim } 44167754Smsmith} 44267754Smsmith 44367754Smsmith 44467754Smsmith/******************************************************************************* 44567754Smsmith * 446151937Sjkim * FUNCTION: AcpiRsDumpResourceSource 44767754Smsmith * 448151937Sjkim * PARAMETERS: ResourceSource - Pointer to a Resource Source struct 44967754Smsmith * 450151937Sjkim * RETURN: None 45167754Smsmith * 452151937Sjkim * DESCRIPTION: Common routine for dumping the optional ResourceSource and the 453151937Sjkim * corresponding ResourceSourceIndex. 45467754Smsmith * 45567754Smsmith ******************************************************************************/ 45667754Smsmith 457151937Sjkimstatic void 458151937SjkimAcpiRsDumpResourceSource ( 459151937Sjkim ACPI_RESOURCE_SOURCE *ResourceSource) 46067754Smsmith{ 46191116Smsmith ACPI_FUNCTION_ENTRY (); 46283174Smsmith 46383174Smsmith 464151937Sjkim if (ResourceSource->Index == 0xFF) 465151937Sjkim { 466151937Sjkim return; 467151937Sjkim } 46867754Smsmith 469151937Sjkim AcpiRsOutInteger8 ("Resource Source Index", 470151937Sjkim ResourceSource->Index); 47167754Smsmith 472151937Sjkim AcpiRsOutString ("Resource Source", 473151937Sjkim ResourceSource->StringPtr ? 474151937Sjkim ResourceSource->StringPtr : "[Not Specified]"); 47567754Smsmith} 47667754Smsmith 47767754Smsmith 47867754Smsmith/******************************************************************************* 47967754Smsmith * 480151937Sjkim * FUNCTION: AcpiRsDumpAddressCommon 48167754Smsmith * 482151937Sjkim * PARAMETERS: Resource - Pointer to an internal resource descriptor 48367754Smsmith * 48477424Smsmith * RETURN: None 48567754Smsmith * 486151937Sjkim * DESCRIPTION: Dump the fields that are common to all Address resource 487151937Sjkim * descriptors 48867754Smsmith * 48967754Smsmith ******************************************************************************/ 49067754Smsmith 491151937Sjkimstatic void 492151937SjkimAcpiRsDumpAddressCommon ( 493151937Sjkim ACPI_RESOURCE_DATA *Resource) 49467754Smsmith{ 49591116Smsmith ACPI_FUNCTION_ENTRY (); 49683174Smsmith 49783174Smsmith 498151937Sjkim /* Decode the type-specific flags */ 49967754Smsmith 500151937Sjkim switch (Resource->Address.ResourceType) 50167754Smsmith { 50291116Smsmith case ACPI_MEMORY_RANGE: 50367754Smsmith 504151937Sjkim AcpiRsDumpDescriptor (Resource, AcpiRsDumpMemoryFlags); 50567754Smsmith break; 50667754Smsmith 50791116Smsmith case ACPI_IO_RANGE: 50867754Smsmith 509151937Sjkim AcpiRsDumpDescriptor (Resource, AcpiRsDumpIoFlags); 51067754Smsmith break; 51167754Smsmith 51291116Smsmith case ACPI_BUS_NUMBER_RANGE: 51367754Smsmith 514151937Sjkim AcpiRsOutString ("Resource Type", "Bus Number Range"); 51567754Smsmith break; 51667754Smsmith 51767754Smsmith default: 51867754Smsmith 519151937Sjkim AcpiRsOutInteger8 ("Resource Type", 520151937Sjkim (UINT8) Resource->Address.ResourceType); 521151937Sjkim break; 52267754Smsmith } 52367754Smsmith 524151937Sjkim /* Decode the general flags */ 52567754Smsmith 526151937Sjkim AcpiRsDumpDescriptor (Resource, AcpiRsDumpGeneralFlags); 52767754Smsmith} 52867754Smsmith 52967754Smsmith 53067754Smsmith/******************************************************************************* 53167754Smsmith * 532151937Sjkim * FUNCTION: AcpiRsOut* 53367754Smsmith * 534151937Sjkim * PARAMETERS: Title - Name of the resource field 535151937Sjkim * Value - Value of the resource field 53667754Smsmith * 53777424Smsmith * RETURN: None 53867754Smsmith * 539151937Sjkim * DESCRIPTION: Miscellaneous helper functions to consistently format the 540151937Sjkim * output of the resource dump routines 54167754Smsmith * 54267754Smsmith ******************************************************************************/ 54367754Smsmith 544151937Sjkimstatic void 545151937SjkimAcpiRsOutString ( 546151937Sjkim char *Title, 547151937Sjkim char *Value) 54867754Smsmith{ 549167802Sjkim AcpiOsPrintf ("%27s : %s", Title, Value); 550167802Sjkim if (!*Value) 551167802Sjkim { 552167802Sjkim AcpiOsPrintf ("[NULL NAMESTRING]"); 553167802Sjkim } 554167802Sjkim AcpiOsPrintf ("\n"); 555151937Sjkim} 55667754Smsmith 557151937Sjkimstatic void 558151937SjkimAcpiRsOutInteger8 ( 559151937Sjkim char *Title, 560151937Sjkim UINT8 Value) 561151937Sjkim{ 562151937Sjkim AcpiOsPrintf ("%27s : %2.2X\n", Title, Value); 563151937Sjkim} 56467754Smsmith 565151937Sjkimstatic void 566151937SjkimAcpiRsOutInteger16 ( 567151937Sjkim char *Title, 568151937Sjkim UINT16 Value) 569151937Sjkim{ 570151937Sjkim AcpiOsPrintf ("%27s : %4.4X\n", Title, Value); 571151937Sjkim} 57283174Smsmith 573151937Sjkimstatic void 574151937SjkimAcpiRsOutInteger32 ( 575151937Sjkim char *Title, 576151937Sjkim UINT32 Value) 577151937Sjkim{ 578151937Sjkim AcpiOsPrintf ("%27s : %8.8X\n", Title, Value); 579151937Sjkim} 58083174Smsmith 581151937Sjkimstatic void 582151937SjkimAcpiRsOutInteger64 ( 583151937Sjkim char *Title, 584151937Sjkim UINT64 Value) 585151937Sjkim{ 586151937Sjkim AcpiOsPrintf ("%27s : %8.8X%8.8X\n", Title, 587151937Sjkim ACPI_FORMAT_UINT64 (Value)); 588151937Sjkim} 58967754Smsmith 590151937Sjkimstatic void 591151937SjkimAcpiRsOutTitle ( 592151937Sjkim char *Title) 593151937Sjkim{ 594151937Sjkim AcpiOsPrintf ("%27s : ", Title); 59567754Smsmith} 59667754Smsmith 59767754Smsmith 59867754Smsmith/******************************************************************************* 59967754Smsmith * 600151937Sjkim * FUNCTION: AcpiRsDump*List 60167754Smsmith * 602151937Sjkim * PARAMETERS: Length - Number of elements in the list 603151937Sjkim * Data - Start of the list 60467754Smsmith * 60577424Smsmith * RETURN: None 60667754Smsmith * 607151937Sjkim * DESCRIPTION: Miscellaneous functions to dump lists of raw data 60867754Smsmith * 60967754Smsmith ******************************************************************************/ 61067754Smsmith 611151937Sjkimstatic void 612151937SjkimAcpiRsDumpByteList ( 613151937Sjkim UINT16 Length, 614151937Sjkim UINT8 *Data) 61567754Smsmith{ 616151937Sjkim UINT8 i; 61767754Smsmith 61867754Smsmith 619151937Sjkim for (i = 0; i < Length; i++) 62067754Smsmith { 621151937Sjkim AcpiOsPrintf ("%25s%2.2X : %2.2X\n", 622151937Sjkim "Byte", i, Data[i]); 623151937Sjkim } 624151937Sjkim} 62567754Smsmith 626151937Sjkimstatic void 627151937SjkimAcpiRsDumpShortByteList ( 628281687Sjkim UINT8 Length, 629281687Sjkim UINT8 *Data) 630151937Sjkim{ 631151937Sjkim UINT8 i; 63267754Smsmith 63367754Smsmith 634151937Sjkim for (i = 0; i < Length; i++) 635151937Sjkim { 636151937Sjkim AcpiOsPrintf ("%X ", Data[i]); 63767754Smsmith } 638151937Sjkim AcpiOsPrintf ("\n"); 63967754Smsmith} 64067754Smsmith 641151937Sjkimstatic void 642151937SjkimAcpiRsDumpDwordList ( 643151937Sjkim UINT8 Length, 644151937Sjkim UINT32 *Data) 64567754Smsmith{ 646151937Sjkim UINT8 i; 64767754Smsmith 64867754Smsmith 649151937Sjkim for (i = 0; i < Length; i++) 65067754Smsmith { 651151937Sjkim AcpiOsPrintf ("%25s%2.2X : %8.8X\n", 652151937Sjkim "Dword", i, Data[i]); 65367754Smsmith } 65467754Smsmith} 65567754Smsmith 656228110Sjkimstatic void 657228110SjkimAcpiRsDumpWordList ( 658228110Sjkim UINT16 Length, 659228110Sjkim UINT16 *Data) 660228110Sjkim{ 661228110Sjkim UINT16 i; 662228110Sjkim 663228110Sjkim 664228110Sjkim for (i = 0; i < Length; i++) 665228110Sjkim { 666228110Sjkim AcpiOsPrintf ("%25s%2.2X : %4.4X\n", 667228110Sjkim "Word", i, Data[i]); 668228110Sjkim } 669228110Sjkim} 670228110Sjkim 67183174Smsmith#endif 672