1100966Siwasaki/******************************************************************************* 2100966Siwasaki * 3100966Siwasaki * Module Name: dmresrcl.c - "Large" Resource Descriptor disassembly 4100966Siwasaki * 5100966Siwasaki ******************************************************************************/ 6100966Siwasaki 7217365Sjkim/* 8245582Sjkim * Copyright (C) 2000 - 2013, Intel Corp. 9100966Siwasaki * All rights reserved. 10100966Siwasaki * 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. 25100966Siwasaki * 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. 29100966Siwasaki * 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 */ 43100966Siwasaki 44100966Siwasaki 45193341Sjkim#include <contrib/dev/acpica/include/acpi.h> 46193341Sjkim#include <contrib/dev/acpica/include/accommon.h> 47193341Sjkim#include <contrib/dev/acpica/include/acdisasm.h> 48100966Siwasaki 49100966Siwasaki 50100966Siwasaki#ifdef ACPI_DISASSEMBLER 51100966Siwasaki 52102550Siwasaki#define _COMPONENT ACPI_CA_DEBUGGER 53100966Siwasaki ACPI_MODULE_NAME ("dbresrcl") 54100966Siwasaki 55100966Siwasaki 56151937Sjkim/* Common names for address and memory descriptors */ 57151937Sjkim 58151937Sjkimstatic char *AcpiDmAddressNames[] = 59151937Sjkim{ 60167802Sjkim "Granularity", 61167802Sjkim "Range Minimum", 62167802Sjkim "Range Maximum", 63167802Sjkim "Translation Offset", 64167802Sjkim "Length" 65151937Sjkim}; 66151937Sjkim 67151937Sjkimstatic char *AcpiDmMemoryNames[] = 68151937Sjkim{ 69167802Sjkim "Range Minimum", 70167802Sjkim "Range Maximum", 71167802Sjkim "Alignment", 72167802Sjkim "Length" 73151937Sjkim}; 74151937Sjkim 75151937Sjkim 76151937Sjkim/* Local prototypes */ 77151937Sjkim 78151937Sjkimstatic void 79151937SjkimAcpiDmSpaceFlags ( 80151937Sjkim UINT8 Flags); 81151937Sjkim 82151937Sjkimstatic void 83151937SjkimAcpiDmIoFlags ( 84151937Sjkim UINT8 Flags); 85151937Sjkim 86151937Sjkimstatic void 87151937SjkimAcpiDmIoFlags2 ( 88151937Sjkim UINT8 SpecificFlags); 89151937Sjkim 90151937Sjkimstatic void 91151937SjkimAcpiDmMemoryFlags ( 92151937Sjkim UINT8 Flags, 93151937Sjkim UINT8 SpecificFlags); 94151937Sjkim 95151937Sjkimstatic void 96151937SjkimAcpiDmMemoryFlags2 ( 97151937Sjkim UINT8 SpecificFlags); 98151937Sjkim 99151937Sjkimstatic void 100151937SjkimAcpiDmResourceSource ( 101151937Sjkim AML_RESOURCE *Resource, 102151937Sjkim ACPI_SIZE MinimumLength, 103151937Sjkim UINT32 Length); 104151937Sjkim 105151937Sjkimstatic void 106151937SjkimAcpiDmAddressFields ( 107151937Sjkim void *Source, 108151937Sjkim UINT8 Type, 109151937Sjkim UINT32 Level); 110151937Sjkim 111151937Sjkimstatic void 112151937SjkimAcpiDmAddressPrefix ( 113151937Sjkim UINT8 Type); 114151937Sjkim 115151937Sjkimstatic void 116151937SjkimAcpiDmAddressCommon ( 117151937Sjkim AML_RESOURCE *Resource, 118151937Sjkim UINT8 Type, 119151937Sjkim UINT32 Level); 120151937Sjkim 121151937Sjkimstatic void 122151937SjkimAcpiDmAddressFlags ( 123151937Sjkim AML_RESOURCE *Resource); 124151937Sjkim 125151937Sjkim 126100966Siwasaki/******************************************************************************* 127100966Siwasaki * 128151937Sjkim * FUNCTION: AcpiDmMemoryFields 129151937Sjkim * 130151937Sjkim * PARAMETERS: Source - Pointer to the contiguous data fields 131151937Sjkim * Type - 16 or 32 (bit) 132151937Sjkim * Level - Current source code indentation level 133151937Sjkim * 134151937Sjkim * RETURN: None 135151937Sjkim * 136151937Sjkim * DESCRIPTION: Decode fields common to Memory24 and Memory32 descriptors 137151937Sjkim * 138151937Sjkim ******************************************************************************/ 139151937Sjkim 140151937Sjkimstatic void 141151937SjkimAcpiDmMemoryFields ( 142151937Sjkim void *Source, 143151937Sjkim UINT8 Type, 144151937Sjkim UINT32 Level) 145151937Sjkim{ 146193267Sjkim UINT32 i; 147151937Sjkim 148151937Sjkim 149151937Sjkim for (i = 0; i < 4; i++) 150151937Sjkim { 151151937Sjkim AcpiDmIndent (Level + 1); 152151937Sjkim 153151937Sjkim switch (Type) 154151937Sjkim { 155151937Sjkim case 16: 156250838Sjkim 157167802Sjkim AcpiDmDumpInteger16 (ACPI_CAST_PTR (UINT16, Source)[i], 158167802Sjkim AcpiDmMemoryNames[i]); 159151937Sjkim break; 160151937Sjkim 161151937Sjkim case 32: 162250838Sjkim 163167802Sjkim AcpiDmDumpInteger32 (ACPI_CAST_PTR (UINT32, Source)[i], 164167802Sjkim AcpiDmMemoryNames[i]); 165151937Sjkim break; 166151937Sjkim 167151937Sjkim default: 168250838Sjkim 169151937Sjkim return; 170151937Sjkim } 171151937Sjkim } 172151937Sjkim} 173151937Sjkim 174151937Sjkim 175151937Sjkim/******************************************************************************* 176151937Sjkim * 177167802Sjkim * FUNCTION: AcpiDmAddressFields 178151937Sjkim * 179151937Sjkim * PARAMETERS: Source - Pointer to the contiguous data fields 180151937Sjkim * Type - 16, 32, or 64 (bit) 181151937Sjkim * Level - Current source code indentation level 182151937Sjkim * 183151937Sjkim * RETURN: None 184151937Sjkim * 185151937Sjkim * DESCRIPTION: Decode fields common to address descriptors 186151937Sjkim * 187151937Sjkim ******************************************************************************/ 188151937Sjkim 189151937Sjkimstatic void 190151937SjkimAcpiDmAddressFields ( 191151937Sjkim void *Source, 192151937Sjkim UINT8 Type, 193151937Sjkim UINT32 Level) 194151937Sjkim{ 195193267Sjkim UINT32 i; 196151937Sjkim 197151937Sjkim 198151937Sjkim AcpiOsPrintf ("\n"); 199151937Sjkim 200151937Sjkim for (i = 0; i < 5; i++) 201151937Sjkim { 202151937Sjkim AcpiDmIndent (Level + 1); 203151937Sjkim 204151937Sjkim switch (Type) 205151937Sjkim { 206151937Sjkim case 16: 207250838Sjkim 208167802Sjkim AcpiDmDumpInteger16 (ACPI_CAST_PTR (UINT16, Source)[i], 209167802Sjkim AcpiDmAddressNames[i]); 210151937Sjkim break; 211151937Sjkim 212151937Sjkim case 32: 213250838Sjkim 214167802Sjkim AcpiDmDumpInteger32 (ACPI_CAST_PTR (UINT32, Source)[i], 215167802Sjkim AcpiDmAddressNames[i]); 216151937Sjkim break; 217151937Sjkim 218151937Sjkim case 64: 219250838Sjkim 220167802Sjkim AcpiDmDumpInteger64 (ACPI_CAST_PTR (UINT64, Source)[i], 221167802Sjkim AcpiDmAddressNames[i]); 222151937Sjkim break; 223151937Sjkim 224151937Sjkim default: 225250838Sjkim 226151937Sjkim return; 227151937Sjkim } 228151937Sjkim } 229151937Sjkim} 230151937Sjkim 231151937Sjkim 232151937Sjkim/******************************************************************************* 233151937Sjkim * 234151937Sjkim * FUNCTION: AcpiDmAddressPrefix 235151937Sjkim * 236151937Sjkim * PARAMETERS: Type - Descriptor type 237151937Sjkim * 238151937Sjkim * RETURN: None 239151937Sjkim * 240151937Sjkim * DESCRIPTION: Emit name prefix representing the address descriptor type 241151937Sjkim * 242151937Sjkim ******************************************************************************/ 243151937Sjkim 244151937Sjkimstatic void 245151937SjkimAcpiDmAddressPrefix ( 246151937Sjkim UINT8 Type) 247151937Sjkim{ 248151937Sjkim 249151937Sjkim switch (Type) 250151937Sjkim { 251151937Sjkim case ACPI_RESOURCE_TYPE_ADDRESS16: 252250838Sjkim 253151937Sjkim AcpiOsPrintf ("Word"); 254151937Sjkim break; 255151937Sjkim 256151937Sjkim case ACPI_RESOURCE_TYPE_ADDRESS32: 257250838Sjkim 258151937Sjkim AcpiOsPrintf ("DWord"); 259151937Sjkim break; 260151937Sjkim 261151937Sjkim case ACPI_RESOURCE_TYPE_ADDRESS64: 262250838Sjkim 263151937Sjkim AcpiOsPrintf ("QWord"); 264151937Sjkim break; 265151937Sjkim 266151937Sjkim case ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64: 267250838Sjkim 268151937Sjkim AcpiOsPrintf ("Extended"); 269151937Sjkim break; 270151937Sjkim 271151937Sjkim default: 272250838Sjkim 273151937Sjkim return; 274151937Sjkim } 275151937Sjkim} 276151937Sjkim 277151937Sjkim 278151937Sjkim/******************************************************************************* 279151937Sjkim * 280151937Sjkim * FUNCTION: AcpiDmAddressCommon 281151937Sjkim * 282151937Sjkim * PARAMETERS: Resource - Raw AML descriptor 283151937Sjkim * Type - Descriptor type 284151937Sjkim * Level - Current source code indentation level 285151937Sjkim * 286151937Sjkim * RETURN: None 287151937Sjkim * 288151937Sjkim * DESCRIPTION: Emit common name and flag fields common to address descriptors 289151937Sjkim * 290151937Sjkim ******************************************************************************/ 291151937Sjkim 292151937Sjkimstatic void 293151937SjkimAcpiDmAddressCommon ( 294151937Sjkim AML_RESOURCE *Resource, 295151937Sjkim UINT8 Type, 296151937Sjkim UINT32 Level) 297151937Sjkim{ 298151937Sjkim UINT8 ResourceType; 299151937Sjkim UINT8 SpecificFlags; 300151937Sjkim UINT8 Flags; 301151937Sjkim 302151937Sjkim 303151937Sjkim ResourceType = Resource->Address.ResourceType; 304151937Sjkim SpecificFlags = Resource->Address.SpecificFlags; 305151937Sjkim Flags = Resource->Address.Flags; 306151937Sjkim 307151937Sjkim AcpiDmIndent (Level); 308151937Sjkim 309151937Sjkim /* Validate ResourceType */ 310151937Sjkim 311151937Sjkim if ((ResourceType > 2) && (ResourceType < 0xC0)) 312151937Sjkim { 313151937Sjkim AcpiOsPrintf ("/**** Invalid Resource Type: 0x%X ****/", ResourceType); 314151937Sjkim return; 315151937Sjkim } 316151937Sjkim 317151937Sjkim /* Prefix is either Word, DWord, QWord, or Extended */ 318151937Sjkim 319151937Sjkim AcpiDmAddressPrefix (Type); 320151937Sjkim 321151937Sjkim /* Resource Types above 0xC0 are vendor-defined */ 322151937Sjkim 323151937Sjkim if (ResourceType > 2) 324151937Sjkim { 325151937Sjkim AcpiOsPrintf ("Space (0x%2.2X, ", ResourceType); 326151937Sjkim AcpiDmSpaceFlags (Flags); 327151937Sjkim AcpiOsPrintf (" 0x%2.2X,", SpecificFlags); 328151937Sjkim return; 329151937Sjkim } 330151937Sjkim 331151937Sjkim /* This is either a Memory, IO, or BusNumber descriptor (0,1,2) */ 332151937Sjkim 333243347Sjkim AcpiOsPrintf ("%s (", AcpiGbl_WordDecode [ACPI_GET_2BIT_FLAG (ResourceType)]); 334151937Sjkim 335151937Sjkim /* Decode the general and type-specific flags */ 336151937Sjkim 337151937Sjkim if (ResourceType == ACPI_MEMORY_RANGE) 338151937Sjkim { 339151937Sjkim AcpiDmMemoryFlags (Flags, SpecificFlags); 340151937Sjkim } 341151937Sjkim else /* IO range or BusNumberRange */ 342151937Sjkim { 343151937Sjkim AcpiDmIoFlags (Flags); 344151937Sjkim if (ResourceType == ACPI_IO_RANGE) 345151937Sjkim { 346243347Sjkim AcpiOsPrintf (" %s,", AcpiGbl_RngDecode [ACPI_GET_2BIT_FLAG (SpecificFlags)]); 347151937Sjkim } 348151937Sjkim } 349151937Sjkim} 350151937Sjkim 351151937Sjkim 352151937Sjkim/******************************************************************************* 353151937Sjkim * 354151937Sjkim * FUNCTION: AcpiDmAddressFlags 355151937Sjkim * 356151937Sjkim * PARAMETERS: Resource - Raw AML descriptor 357151937Sjkim * 358151937Sjkim * RETURN: None 359151937Sjkim * 360151937Sjkim * DESCRIPTION: Emit flags common to address descriptors 361151937Sjkim * 362151937Sjkim ******************************************************************************/ 363151937Sjkim 364151937Sjkimstatic void 365151937SjkimAcpiDmAddressFlags ( 366151937Sjkim AML_RESOURCE *Resource) 367151937Sjkim{ 368151937Sjkim 369151937Sjkim if (Resource->Address.ResourceType == ACPI_IO_RANGE) 370151937Sjkim { 371151937Sjkim AcpiDmIoFlags2 (Resource->Address.SpecificFlags); 372151937Sjkim } 373151937Sjkim else if (Resource->Address.ResourceType == ACPI_MEMORY_RANGE) 374151937Sjkim { 375151937Sjkim AcpiDmMemoryFlags2 (Resource->Address.SpecificFlags); 376151937Sjkim } 377151937Sjkim} 378151937Sjkim 379151937Sjkim 380151937Sjkim/******************************************************************************* 381151937Sjkim * 382151937Sjkim * FUNCTION: AcpiDmSpaceFlags 383151937Sjkim * 384151937Sjkim * PARAMETERS: Flags - Flag byte to be decoded 385151937Sjkim * 386151937Sjkim * RETURN: None 387151937Sjkim * 388151937Sjkim * DESCRIPTION: Decode the flags specific to Space Address space descriptors 389151937Sjkim * 390151937Sjkim ******************************************************************************/ 391151937Sjkim 392151937Sjkimstatic void 393151937SjkimAcpiDmSpaceFlags ( 394151937Sjkim UINT8 Flags) 395151937Sjkim{ 396151937Sjkim 397151937Sjkim AcpiOsPrintf ("%s, %s, %s, %s,", 398243347Sjkim AcpiGbl_ConsumeDecode [ACPI_GET_1BIT_FLAG (Flags)], 399243347Sjkim AcpiGbl_DecDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 1)], 400243347Sjkim AcpiGbl_MinDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 2)], 401243347Sjkim AcpiGbl_MaxDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 3)]); 402151937Sjkim} 403151937Sjkim 404151937Sjkim 405151937Sjkim/******************************************************************************* 406151937Sjkim * 407100966Siwasaki * FUNCTION: AcpiDmIoFlags 408100966Siwasaki * 409100966Siwasaki * PARAMETERS: Flags - Flag byte to be decoded 410100966Siwasaki * 411100966Siwasaki * RETURN: None 412100966Siwasaki * 413100966Siwasaki * DESCRIPTION: Decode the flags specific to IO Address space descriptors 414100966Siwasaki * 415100966Siwasaki ******************************************************************************/ 416100966Siwasaki 417151937Sjkimstatic void 418100966SiwasakiAcpiDmIoFlags ( 419100966Siwasaki UINT8 Flags) 420100966Siwasaki{ 421100966Siwasaki AcpiOsPrintf ("%s, %s, %s, %s,", 422243347Sjkim AcpiGbl_ConsumeDecode [ACPI_GET_1BIT_FLAG (Flags)], 423243347Sjkim AcpiGbl_MinDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 2)], 424243347Sjkim AcpiGbl_MaxDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 3)], 425243347Sjkim AcpiGbl_DecDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 1)]); 426100966Siwasaki} 427100966Siwasaki 428100966Siwasaki 429100966Siwasaki/******************************************************************************* 430100966Siwasaki * 431151937Sjkim * FUNCTION: AcpiDmIoFlags2 432151937Sjkim * 433151937Sjkim * PARAMETERS: SpecificFlags - "Specific" flag byte to be decoded 434151937Sjkim * 435151937Sjkim * RETURN: None 436151937Sjkim * 437151937Sjkim * DESCRIPTION: Decode the flags specific to IO Address space descriptors 438151937Sjkim * 439151937Sjkim ******************************************************************************/ 440151937Sjkim 441151937Sjkimstatic void 442151937SjkimAcpiDmIoFlags2 ( 443151937Sjkim UINT8 SpecificFlags) 444151937Sjkim{ 445151937Sjkim 446151937Sjkim AcpiOsPrintf (", %s", 447243347Sjkim AcpiGbl_TtpDecode [ACPI_EXTRACT_1BIT_FLAG (SpecificFlags, 4)]); 448151937Sjkim 449151937Sjkim /* TRS is only used if TTP is TypeTranslation */ 450151937Sjkim 451151937Sjkim if (SpecificFlags & 0x10) 452151937Sjkim { 453151937Sjkim AcpiOsPrintf (", %s", 454243347Sjkim AcpiGbl_TrsDecode [ACPI_EXTRACT_1BIT_FLAG (SpecificFlags, 5)]); 455151937Sjkim } 456151937Sjkim} 457151937Sjkim 458151937Sjkim 459151937Sjkim/******************************************************************************* 460151937Sjkim * 461100966Siwasaki * FUNCTION: AcpiDmMemoryFlags 462100966Siwasaki * 463100966Siwasaki * PARAMETERS: Flags - Flag byte to be decoded 464100966Siwasaki * SpecificFlags - "Specific" flag byte to be decoded 465100966Siwasaki * 466100966Siwasaki * RETURN: None 467100966Siwasaki * 468100966Siwasaki * DESCRIPTION: Decode flags specific to Memory Address Space descriptors 469100966Siwasaki * 470100966Siwasaki ******************************************************************************/ 471100966Siwasaki 472151937Sjkimstatic void 473100966SiwasakiAcpiDmMemoryFlags ( 474100966Siwasaki UINT8 Flags, 475100966Siwasaki UINT8 SpecificFlags) 476100966Siwasaki{ 477151937Sjkim 478100966Siwasaki AcpiOsPrintf ("%s, %s, %s, %s, %s, %s,", 479243347Sjkim AcpiGbl_ConsumeDecode [ACPI_GET_1BIT_FLAG (Flags)], 480243347Sjkim AcpiGbl_DecDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 1)], 481243347Sjkim AcpiGbl_MinDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 2)], 482243347Sjkim AcpiGbl_MaxDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 3)], 483243347Sjkim AcpiGbl_MemDecode [ACPI_EXTRACT_2BIT_FLAG (SpecificFlags, 1)], 484243347Sjkim AcpiGbl_RwDecode [ACPI_GET_1BIT_FLAG (SpecificFlags)]); 485100966Siwasaki} 486100966Siwasaki 487100966Siwasaki 488100966Siwasaki/******************************************************************************* 489100966Siwasaki * 490151937Sjkim * FUNCTION: AcpiDmMemoryFlags2 491151937Sjkim * 492151937Sjkim * PARAMETERS: SpecificFlags - "Specific" flag byte to be decoded 493151937Sjkim * 494151937Sjkim * RETURN: None 495151937Sjkim * 496151937Sjkim * DESCRIPTION: Decode flags specific to Memory Address Space descriptors 497151937Sjkim * 498151937Sjkim ******************************************************************************/ 499151937Sjkim 500151937Sjkimstatic void 501151937SjkimAcpiDmMemoryFlags2 ( 502151937Sjkim UINT8 SpecificFlags) 503151937Sjkim{ 504151937Sjkim 505151937Sjkim AcpiOsPrintf (", %s, %s", 506243347Sjkim AcpiGbl_MtpDecode [ACPI_EXTRACT_2BIT_FLAG (SpecificFlags, 3)], 507243347Sjkim AcpiGbl_TtpDecode [ACPI_EXTRACT_1BIT_FLAG (SpecificFlags, 5)]); 508151937Sjkim} 509151937Sjkim 510151937Sjkim 511151937Sjkim/******************************************************************************* 512151937Sjkim * 513151937Sjkim * FUNCTION: AcpiDmResourceSource 514151937Sjkim * 515151937Sjkim * PARAMETERS: Resource - Raw AML descriptor 516151937Sjkim * MinimumLength - descriptor length without optional fields 517151937Sjkim * ResourceLength 518151937Sjkim * 519151937Sjkim * RETURN: None 520151937Sjkim * 521151937Sjkim * DESCRIPTION: Dump optional ResourceSource fields of an address descriptor 522151937Sjkim * 523151937Sjkim ******************************************************************************/ 524151937Sjkim 525151937Sjkimstatic void 526151937SjkimAcpiDmResourceSource ( 527151937Sjkim AML_RESOURCE *Resource, 528151937Sjkim ACPI_SIZE MinimumTotalLength, 529151937Sjkim UINT32 ResourceLength) 530151937Sjkim{ 531151937Sjkim UINT8 *AmlResourceSource; 532151937Sjkim UINT32 TotalLength; 533151937Sjkim 534151937Sjkim 535151937Sjkim TotalLength = ResourceLength + sizeof (AML_RESOURCE_LARGE_HEADER); 536151937Sjkim 537151937Sjkim /* Check if the optional ResourceSource fields are present */ 538151937Sjkim 539151937Sjkim if (TotalLength <= MinimumTotalLength) 540151937Sjkim { 541151937Sjkim /* The two optional fields are not used */ 542151937Sjkim 543167802Sjkim AcpiOsPrintf (",, "); 544151937Sjkim return; 545151937Sjkim } 546151937Sjkim 547151937Sjkim /* Get a pointer to the ResourceSource */ 548151937Sjkim 549167802Sjkim AmlResourceSource = ACPI_ADD_PTR (UINT8, Resource, MinimumTotalLength); 550151937Sjkim 551151937Sjkim /* 552151937Sjkim * Always emit the ResourceSourceIndex (Byte) 553151937Sjkim * 554151937Sjkim * NOTE: Some ASL compilers always create a 0 byte (in the AML) for the 555151937Sjkim * Index even if the String does not exist. Although this is in violation 556151937Sjkim * of the ACPI specification, it is very important to emit ASL code that 557151937Sjkim * can be compiled back to the identical AML. There may be fields and/or 558151937Sjkim * indexes into the resource template buffer that are compiled to absolute 559151937Sjkim * offsets, and these will be broken if the AML length is changed. 560151937Sjkim */ 561151937Sjkim AcpiOsPrintf ("0x%2.2X,", (UINT32) AmlResourceSource[0]); 562151937Sjkim 563151937Sjkim /* Make sure that the ResourceSource string exists before dumping it */ 564151937Sjkim 565151937Sjkim if (TotalLength > (MinimumTotalLength + 1)) 566151937Sjkim { 567151937Sjkim AcpiOsPrintf (" "); 568252279Sjkim AcpiUtPrintString ((char *) &AmlResourceSource[1], ACPI_UINT16_MAX); 569151937Sjkim } 570151937Sjkim 571167802Sjkim AcpiOsPrintf (", "); 572151937Sjkim} 573151937Sjkim 574151937Sjkim 575151937Sjkim/******************************************************************************* 576151937Sjkim * 577100966Siwasaki * FUNCTION: AcpiDmWordDescriptor 578100966Siwasaki * 579100966Siwasaki * PARAMETERS: Resource - Pointer to the resource descriptor 580100966Siwasaki * Length - Length of the descriptor in bytes 581100966Siwasaki * Level - Current source code indentation level 582100966Siwasaki * 583100966Siwasaki * RETURN: None 584100966Siwasaki * 585100966Siwasaki * DESCRIPTION: Decode a Word Address Space descriptor 586100966Siwasaki * 587100966Siwasaki ******************************************************************************/ 588100966Siwasaki 589100966Siwasakivoid 590100966SiwasakiAcpiDmWordDescriptor ( 591151937Sjkim AML_RESOURCE *Resource, 592100966Siwasaki UINT32 Length, 593100966Siwasaki UINT32 Level) 594100966Siwasaki{ 595100966Siwasaki 596151937Sjkim /* Dump resource name and flags */ 597100966Siwasaki 598151937Sjkim AcpiDmAddressCommon (Resource, ACPI_RESOURCE_TYPE_ADDRESS16, Level); 599100966Siwasaki 600151937Sjkim /* Dump the 5 contiguous WORD values */ 601100966Siwasaki 602151937Sjkim AcpiDmAddressFields (&Resource->Address16.Granularity, 16, Level); 603100966Siwasaki 604151937Sjkim /* The ResourceSource fields are optional */ 605151937Sjkim 606100966Siwasaki AcpiDmIndent (Level + 1); 607151937Sjkim AcpiDmResourceSource (Resource, sizeof (AML_RESOURCE_ADDRESS16), Length); 608100966Siwasaki 609167802Sjkim /* Insert a descriptor name */ 610167802Sjkim 611167802Sjkim AcpiDmDescriptorName (); 612167802Sjkim 613151937Sjkim /* Type-specific flags */ 614100966Siwasaki 615151937Sjkim AcpiDmAddressFlags (Resource); 616100966Siwasaki AcpiOsPrintf (")\n"); 617100966Siwasaki} 618100966Siwasaki 619100966Siwasaki 620100966Siwasaki/******************************************************************************* 621100966Siwasaki * 622100966Siwasaki * FUNCTION: AcpiDmDwordDescriptor 623100966Siwasaki * 624100966Siwasaki * PARAMETERS: Resource - Pointer to the resource descriptor 625100966Siwasaki * Length - Length of the descriptor in bytes 626100966Siwasaki * Level - Current source code indentation level 627100966Siwasaki * 628100966Siwasaki * RETURN: None 629100966Siwasaki * 630100966Siwasaki * DESCRIPTION: Decode a DWord Address Space descriptor 631100966Siwasaki * 632100966Siwasaki ******************************************************************************/ 633100966Siwasaki 634100966Siwasakivoid 635100966SiwasakiAcpiDmDwordDescriptor ( 636151937Sjkim AML_RESOURCE *Resource, 637100966Siwasaki UINT32 Length, 638100966Siwasaki UINT32 Level) 639100966Siwasaki{ 640100966Siwasaki 641151937Sjkim /* Dump resource name and flags */ 642100966Siwasaki 643151937Sjkim AcpiDmAddressCommon (Resource, ACPI_RESOURCE_TYPE_ADDRESS32, Level); 644100966Siwasaki 645151937Sjkim /* Dump the 5 contiguous DWORD values */ 646100966Siwasaki 647151937Sjkim AcpiDmAddressFields (&Resource->Address32.Granularity, 32, Level); 648151937Sjkim 649151937Sjkim /* The ResourceSource fields are optional */ 650151937Sjkim 651100966Siwasaki AcpiDmIndent (Level + 1); 652151937Sjkim AcpiDmResourceSource (Resource, sizeof (AML_RESOURCE_ADDRESS32), Length); 653100966Siwasaki 654167802Sjkim /* Insert a descriptor name */ 655167802Sjkim 656167802Sjkim AcpiDmDescriptorName (); 657167802Sjkim 658151937Sjkim /* Type-specific flags */ 659100966Siwasaki 660151937Sjkim AcpiDmAddressFlags (Resource); 661100966Siwasaki AcpiOsPrintf (")\n"); 662100966Siwasaki} 663100966Siwasaki 664100966Siwasaki 665100966Siwasaki/******************************************************************************* 666100966Siwasaki * 667100966Siwasaki * FUNCTION: AcpiDmQwordDescriptor 668100966Siwasaki * 669100966Siwasaki * PARAMETERS: Resource - Pointer to the resource descriptor 670100966Siwasaki * Length - Length of the descriptor in bytes 671100966Siwasaki * Level - Current source code indentation level 672100966Siwasaki * 673100966Siwasaki * RETURN: None 674100966Siwasaki * 675100966Siwasaki * DESCRIPTION: Decode a QWord Address Space descriptor 676100966Siwasaki * 677100966Siwasaki ******************************************************************************/ 678100966Siwasaki 679100966Siwasakivoid 680100966SiwasakiAcpiDmQwordDescriptor ( 681151937Sjkim AML_RESOURCE *Resource, 682100966Siwasaki UINT32 Length, 683100966Siwasaki UINT32 Level) 684100966Siwasaki{ 685100966Siwasaki 686151937Sjkim /* Dump resource name and flags */ 687100966Siwasaki 688151937Sjkim AcpiDmAddressCommon (Resource, ACPI_RESOURCE_TYPE_ADDRESS64, Level); 689100966Siwasaki 690151937Sjkim /* Dump the 5 contiguous QWORD values */ 691100966Siwasaki 692151937Sjkim AcpiDmAddressFields (&Resource->Address64.Granularity, 64, Level); 693100966Siwasaki 694151937Sjkim /* The ResourceSource fields are optional */ 695100966Siwasaki 696100966Siwasaki AcpiDmIndent (Level + 1); 697151937Sjkim AcpiDmResourceSource (Resource, sizeof (AML_RESOURCE_ADDRESS64), Length); 698100966Siwasaki 699167802Sjkim /* Insert a descriptor name */ 700167802Sjkim 701167802Sjkim AcpiDmDescriptorName (); 702167802Sjkim 703151937Sjkim /* Type-specific flags */ 704100966Siwasaki 705151937Sjkim AcpiDmAddressFlags (Resource); 706151937Sjkim AcpiOsPrintf (")\n"); 707151937Sjkim} 708151937Sjkim 709151937Sjkim 710151937Sjkim/******************************************************************************* 711151937Sjkim * 712151937Sjkim * FUNCTION: AcpiDmExtendedDescriptor 713151937Sjkim * 714151937Sjkim * PARAMETERS: Resource - Pointer to the resource descriptor 715151937Sjkim * Length - Length of the descriptor in bytes 716151937Sjkim * Level - Current source code indentation level 717151937Sjkim * 718151937Sjkim * RETURN: None 719151937Sjkim * 720151937Sjkim * DESCRIPTION: Decode a Extended Address Space descriptor 721151937Sjkim * 722151937Sjkim ******************************************************************************/ 723151937Sjkim 724151937Sjkimvoid 725151937SjkimAcpiDmExtendedDescriptor ( 726151937Sjkim AML_RESOURCE *Resource, 727151937Sjkim UINT32 Length, 728151937Sjkim UINT32 Level) 729151937Sjkim{ 730151937Sjkim 731151937Sjkim /* Dump resource name and flags */ 732151937Sjkim 733151937Sjkim AcpiDmAddressCommon (Resource, ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64, Level); 734151937Sjkim 735151937Sjkim /* Dump the 5 contiguous QWORD values */ 736151937Sjkim 737151937Sjkim AcpiDmAddressFields (&Resource->ExtAddress64.Granularity, 64, Level); 738151937Sjkim 739151937Sjkim /* Extra field for this descriptor only */ 740151937Sjkim 741100966Siwasaki AcpiDmIndent (Level + 1); 742151937Sjkim AcpiDmDumpInteger64 (Resource->ExtAddress64.TypeSpecific, 743151937Sjkim "Type-Specific Attributes"); 744100966Siwasaki 745167802Sjkim /* Insert a descriptor name */ 746167802Sjkim 747167802Sjkim AcpiDmIndent (Level + 1); 748167802Sjkim AcpiDmDescriptorName (); 749167802Sjkim 750151937Sjkim /* Type-specific flags */ 751100966Siwasaki 752151937Sjkim AcpiDmAddressFlags (Resource); 753100966Siwasaki AcpiOsPrintf (")\n"); 754100966Siwasaki} 755100966Siwasaki 756100966Siwasaki 757100966Siwasaki/******************************************************************************* 758100966Siwasaki * 759100966Siwasaki * FUNCTION: AcpiDmMemory24Descriptor 760100966Siwasaki * 761100966Siwasaki * PARAMETERS: Resource - Pointer to the resource descriptor 762100966Siwasaki * Length - Length of the descriptor in bytes 763100966Siwasaki * Level - Current source code indentation level 764100966Siwasaki * 765100966Siwasaki * RETURN: None 766100966Siwasaki * 767100966Siwasaki * DESCRIPTION: Decode a Memory24 descriptor 768100966Siwasaki * 769100966Siwasaki ******************************************************************************/ 770100966Siwasaki 771100966Siwasakivoid 772100966SiwasakiAcpiDmMemory24Descriptor ( 773151937Sjkim AML_RESOURCE *Resource, 774100966Siwasaki UINT32 Length, 775100966Siwasaki UINT32 Level) 776100966Siwasaki{ 777100966Siwasaki 778151937Sjkim /* Dump name and read/write flag */ 779151937Sjkim 780100966Siwasaki AcpiDmIndent (Level); 781151937Sjkim AcpiOsPrintf ("Memory24 (%s,\n", 782243347Sjkim AcpiGbl_RwDecode [ACPI_GET_1BIT_FLAG (Resource->Memory24.Flags)]); 783151937Sjkim 784151937Sjkim /* Dump the 4 contiguous WORD values */ 785151937Sjkim 786151937Sjkim AcpiDmMemoryFields (&Resource->Memory24.Minimum, 16, Level); 787151937Sjkim 788167802Sjkim /* Insert a descriptor name */ 789167802Sjkim 790151937Sjkim AcpiDmIndent (Level + 1); 791167802Sjkim AcpiDmDescriptorName (); 792151937Sjkim AcpiOsPrintf (")\n"); 793100966Siwasaki} 794100966Siwasaki 795100966Siwasaki 796100966Siwasaki/******************************************************************************* 797100966Siwasaki * 798100966Siwasaki * FUNCTION: AcpiDmMemory32Descriptor 799100966Siwasaki * 800100966Siwasaki * PARAMETERS: Resource - Pointer to the resource descriptor 801100966Siwasaki * Length - Length of the descriptor in bytes 802100966Siwasaki * Level - Current source code indentation level 803100966Siwasaki * 804100966Siwasaki * RETURN: None 805100966Siwasaki * 806100966Siwasaki * DESCRIPTION: Decode a Memory32 descriptor 807100966Siwasaki * 808100966Siwasaki ******************************************************************************/ 809100966Siwasaki 810100966Siwasakivoid 811100966SiwasakiAcpiDmMemory32Descriptor ( 812151937Sjkim AML_RESOURCE *Resource, 813100966Siwasaki UINT32 Length, 814100966Siwasaki UINT32 Level) 815100966Siwasaki{ 816100966Siwasaki 817151937Sjkim /* Dump name and read/write flag */ 818151937Sjkim 819100966Siwasaki AcpiDmIndent (Level); 820151937Sjkim AcpiOsPrintf ("Memory32 (%s,\n", 821243347Sjkim AcpiGbl_RwDecode [ACPI_GET_1BIT_FLAG (Resource->Memory32.Flags)]); 822151937Sjkim 823151937Sjkim /* Dump the 4 contiguous DWORD values */ 824151937Sjkim 825151937Sjkim AcpiDmMemoryFields (&Resource->Memory32.Minimum, 32, Level); 826151937Sjkim 827167802Sjkim /* Insert a descriptor name */ 828167802Sjkim 829151937Sjkim AcpiDmIndent (Level + 1); 830167802Sjkim AcpiDmDescriptorName (); 831151937Sjkim AcpiOsPrintf (")\n"); 832100966Siwasaki} 833100966Siwasaki 834100966Siwasaki 835100966Siwasaki/******************************************************************************* 836100966Siwasaki * 837151937Sjkim * FUNCTION: AcpiDmFixedMemory32Descriptor 838100966Siwasaki * 839100966Siwasaki * PARAMETERS: Resource - Pointer to the resource descriptor 840100966Siwasaki * Length - Length of the descriptor in bytes 841100966Siwasaki * Level - Current source code indentation level 842100966Siwasaki * 843100966Siwasaki * RETURN: None 844100966Siwasaki * 845100966Siwasaki * DESCRIPTION: Decode a Fixed Memory32 descriptor 846100966Siwasaki * 847100966Siwasaki ******************************************************************************/ 848100966Siwasaki 849100966Siwasakivoid 850151937SjkimAcpiDmFixedMemory32Descriptor ( 851151937Sjkim AML_RESOURCE *Resource, 852100966Siwasaki UINT32 Length, 853100966Siwasaki UINT32 Level) 854100966Siwasaki{ 855100966Siwasaki 856151937Sjkim /* Dump name and read/write flag */ 857151937Sjkim 858100966Siwasaki AcpiDmIndent (Level); 859151937Sjkim AcpiOsPrintf ("Memory32Fixed (%s,\n", 860243347Sjkim AcpiGbl_RwDecode [ACPI_GET_1BIT_FLAG (Resource->FixedMemory32.Flags)]); 861151937Sjkim 862151937Sjkim AcpiDmIndent (Level + 1); 863151937Sjkim AcpiDmDumpInteger32 (Resource->FixedMemory32.Address, "Address Base"); 864151937Sjkim 865151937Sjkim AcpiDmIndent (Level + 1); 866151937Sjkim AcpiDmDumpInteger32 (Resource->FixedMemory32.AddressLength, "Address Length"); 867151937Sjkim 868167802Sjkim /* Insert a descriptor name */ 869167802Sjkim 870151937Sjkim AcpiDmIndent (Level + 1); 871167802Sjkim AcpiDmDescriptorName (); 872151937Sjkim AcpiOsPrintf (")\n"); 873100966Siwasaki} 874100966Siwasaki 875100966Siwasaki 876100966Siwasaki/******************************************************************************* 877100966Siwasaki * 878100966Siwasaki * FUNCTION: AcpiDmGenericRegisterDescriptor 879100966Siwasaki * 880100966Siwasaki * PARAMETERS: Resource - Pointer to the resource descriptor 881100966Siwasaki * Length - Length of the descriptor in bytes 882100966Siwasaki * Level - Current source code indentation level 883100966Siwasaki * 884100966Siwasaki * RETURN: None 885100966Siwasaki * 886100966Siwasaki * DESCRIPTION: Decode a Generic Register descriptor 887100966Siwasaki * 888100966Siwasaki ******************************************************************************/ 889100966Siwasaki 890100966Siwasakivoid 891100966SiwasakiAcpiDmGenericRegisterDescriptor ( 892151937Sjkim AML_RESOURCE *Resource, 893100966Siwasaki UINT32 Length, 894100966Siwasaki UINT32 Level) 895100966Siwasaki{ 896100966Siwasaki 897100966Siwasaki AcpiDmIndent (Level); 898100966Siwasaki AcpiOsPrintf ("Register ("); 899151937Sjkim AcpiDmAddressSpace (Resource->GenericReg.AddressSpaceId); 900151937Sjkim AcpiOsPrintf ("\n"); 901102550Siwasaki 902151937Sjkim AcpiDmIndent (Level + 1); 903167802Sjkim AcpiDmDumpInteger8 (Resource->GenericReg.BitWidth, "Bit Width"); 904102550Siwasaki 905151937Sjkim AcpiDmIndent (Level + 1); 906167802Sjkim AcpiDmDumpInteger8 (Resource->GenericReg.BitOffset, "Bit Offset"); 907151937Sjkim 908151937Sjkim AcpiDmIndent (Level + 1); 909167802Sjkim AcpiDmDumpInteger64 (Resource->GenericReg.Address, "Address"); 910151937Sjkim 911151937Sjkim /* Optional field for ACPI 3.0 */ 912151937Sjkim 913167802Sjkim AcpiDmIndent (Level + 1); 914151937Sjkim if (Resource->GenericReg.AccessSize) 915151937Sjkim { 916167802Sjkim AcpiOsPrintf ("0x%2.2X, // %s\n", 917167802Sjkim Resource->GenericReg.AccessSize, "Access Size"); 918151937Sjkim AcpiDmIndent (Level + 1); 919151937Sjkim } 920167802Sjkim else 921167802Sjkim { 922167802Sjkim AcpiOsPrintf (","); 923167802Sjkim } 924151937Sjkim 925167802Sjkim /* DescriptorName was added for ACPI 3.0+ */ 926167802Sjkim 927167802Sjkim AcpiDmDescriptorName (); 928151937Sjkim AcpiOsPrintf (")\n"); 929100966Siwasaki} 930100966Siwasaki 931100966Siwasaki 932100966Siwasaki/******************************************************************************* 933100966Siwasaki * 934100966Siwasaki * FUNCTION: AcpiDmInterruptDescriptor 935100966Siwasaki * 936100966Siwasaki * PARAMETERS: Resource - Pointer to the resource descriptor 937100966Siwasaki * Length - Length of the descriptor in bytes 938100966Siwasaki * Level - Current source code indentation level 939100966Siwasaki * 940100966Siwasaki * RETURN: None 941100966Siwasaki * 942100966Siwasaki * DESCRIPTION: Decode a extended Interrupt descriptor 943100966Siwasaki * 944100966Siwasaki ******************************************************************************/ 945100966Siwasaki 946100966Siwasakivoid 947100966SiwasakiAcpiDmInterruptDescriptor ( 948151937Sjkim AML_RESOURCE *Resource, 949100966Siwasaki UINT32 Length, 950100966Siwasaki UINT32 Level) 951100966Siwasaki{ 952100966Siwasaki UINT32 i; 953100966Siwasaki 954100966Siwasaki 955100966Siwasaki AcpiDmIndent (Level); 956151937Sjkim AcpiOsPrintf ("Interrupt (%s, %s, %s, %s, ", 957243347Sjkim AcpiGbl_ConsumeDecode [ACPI_GET_1BIT_FLAG (Resource->ExtendedIrq.Flags)], 958243347Sjkim AcpiGbl_HeDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->ExtendedIrq.Flags, 1)], 959243347Sjkim AcpiGbl_LlDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->ExtendedIrq.Flags, 2)], 960243347Sjkim AcpiGbl_ShrDecode [ACPI_EXTRACT_2BIT_FLAG (Resource->ExtendedIrq.Flags, 3)]); 961100966Siwasaki 962151937Sjkim /* 963151937Sjkim * The ResourceSource fields are optional and appear after the interrupt 964151937Sjkim * list. Must compute length based on length of the list. First xrupt 965151937Sjkim * is included in the struct (reason for -1 below) 966151937Sjkim */ 967151937Sjkim AcpiDmResourceSource (Resource, 968151937Sjkim sizeof (AML_RESOURCE_EXTENDED_IRQ) + 969193267Sjkim ((UINT32) Resource->ExtendedIrq.InterruptCount - 1) * sizeof (UINT32), 970151937Sjkim Resource->ExtendedIrq.ResourceLength); 971100966Siwasaki 972167802Sjkim /* Insert a descriptor name */ 973167802Sjkim 974167802Sjkim AcpiDmDescriptorName (); 975167802Sjkim AcpiOsPrintf (")\n"); 976167802Sjkim 977151937Sjkim /* Dump the interrupt list */ 978114237Snjl 979100966Siwasaki AcpiDmIndent (Level); 980100966Siwasaki AcpiOsPrintf ("{\n"); 981151937Sjkim for (i = 0; i < Resource->ExtendedIrq.InterruptCount; i++) 982100966Siwasaki { 983100966Siwasaki AcpiDmIndent (Level + 1); 984151937Sjkim AcpiOsPrintf ("0x%8.8X,\n", 985151937Sjkim (UINT32) Resource->ExtendedIrq.Interrupts[i]); 986100966Siwasaki } 987100966Siwasaki 988100966Siwasaki AcpiDmIndent (Level); 989100966Siwasaki AcpiOsPrintf ("}\n"); 990100966Siwasaki} 991100966Siwasaki 992100966Siwasaki 993100966Siwasaki/******************************************************************************* 994100966Siwasaki * 995151937Sjkim * FUNCTION: AcpiDmVendorCommon 996100966Siwasaki * 997151937Sjkim * PARAMETERS: Name - Descriptor name suffix 998151937Sjkim * ByteData - Pointer to the vendor byte data 999151937Sjkim * Length - Length of the byte data 1000100966Siwasaki * Level - Current source code indentation level 1001100966Siwasaki * 1002100966Siwasaki * RETURN: None 1003100966Siwasaki * 1004151937Sjkim * DESCRIPTION: Decode a Vendor descriptor, both Large and Small 1005100966Siwasaki * 1006100966Siwasaki ******************************************************************************/ 1007100966Siwasaki 1008100966Siwasakivoid 1009151937SjkimAcpiDmVendorCommon ( 1010151937Sjkim char *Name, 1011151937Sjkim UINT8 *ByteData, 1012100966Siwasaki UINT32 Length, 1013100966Siwasaki UINT32 Level) 1014100966Siwasaki{ 1015100966Siwasaki 1016167802Sjkim /* Dump macro name */ 1017151937Sjkim 1018100966Siwasaki AcpiDmIndent (Level); 1019167802Sjkim AcpiOsPrintf ("Vendor%s (", Name); 1020151937Sjkim 1021167802Sjkim /* Insert a descriptor name */ 1022167802Sjkim 1023167802Sjkim AcpiDmDescriptorName (); 1024167802Sjkim AcpiOsPrintf (") // Length = 0x%.2X\n", Length); 1025167802Sjkim 1026151937Sjkim /* Dump the vendor bytes */ 1027151937Sjkim 1028100966Siwasaki AcpiDmIndent (Level); 1029100966Siwasaki AcpiOsPrintf ("{\n"); 1030100966Siwasaki 1031151937Sjkim AcpiDmDisasmByteList (Level + 1, ByteData, Length); 1032151937Sjkim 1033100966Siwasaki AcpiDmIndent (Level); 1034100966Siwasaki AcpiOsPrintf ("}\n"); 1035100966Siwasaki} 1036100966Siwasaki 1037100966Siwasaki 1038151937Sjkim/******************************************************************************* 1039151937Sjkim * 1040151937Sjkim * FUNCTION: AcpiDmVendorLargeDescriptor 1041151937Sjkim * 1042151937Sjkim * PARAMETERS: Resource - Pointer to the resource descriptor 1043151937Sjkim * Length - Length of the descriptor in bytes 1044151937Sjkim * Level - Current source code indentation level 1045151937Sjkim * 1046151937Sjkim * RETURN: None 1047151937Sjkim * 1048151937Sjkim * DESCRIPTION: Decode a Vendor Large descriptor 1049151937Sjkim * 1050151937Sjkim ******************************************************************************/ 1051151937Sjkim 1052151937Sjkimvoid 1053151937SjkimAcpiDmVendorLargeDescriptor ( 1054151937Sjkim AML_RESOURCE *Resource, 1055151937Sjkim UINT32 Length, 1056151937Sjkim UINT32 Level) 1057151937Sjkim{ 1058151937Sjkim 1059167802Sjkim AcpiDmVendorCommon ("Long ", 1060167802Sjkim ACPI_ADD_PTR (UINT8, Resource, sizeof (AML_RESOURCE_LARGE_HEADER)), 1061151937Sjkim Length, Level); 1062151937Sjkim} 1063151937Sjkim 1064100966Siwasaki#endif 1065