1100966Siwasaki/******************************************************************************* 2100966Siwasaki * 3100966Siwasaki * Module Name: dmresrcl.c - "Large" Resource Descriptor disassembly 4100966Siwasaki * 5100966Siwasaki ******************************************************************************/ 6100966Siwasaki 7217365Sjkim/* 8281075Sdim * Copyright (C) 2000 - 2015, 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 44193341Sjkim#include <contrib/dev/acpica/include/acpi.h> 45193341Sjkim#include <contrib/dev/acpica/include/accommon.h> 46193341Sjkim#include <contrib/dev/acpica/include/acdisasm.h> 47100966Siwasaki 48100966Siwasaki 49100966Siwasaki#ifdef ACPI_DISASSEMBLER 50100966Siwasaki 51102550Siwasaki#define _COMPONENT ACPI_CA_DEBUGGER 52100966Siwasaki ACPI_MODULE_NAME ("dbresrcl") 53100966Siwasaki 54100966Siwasaki 55151937Sjkim/* Common names for address and memory descriptors */ 56151937Sjkim 57151937Sjkimstatic char *AcpiDmAddressNames[] = 58151937Sjkim{ 59167802Sjkim "Granularity", 60167802Sjkim "Range Minimum", 61167802Sjkim "Range Maximum", 62167802Sjkim "Translation Offset", 63167802Sjkim "Length" 64151937Sjkim}; 65151937Sjkim 66151937Sjkimstatic char *AcpiDmMemoryNames[] = 67151937Sjkim{ 68167802Sjkim "Range Minimum", 69167802Sjkim "Range Maximum", 70167802Sjkim "Alignment", 71167802Sjkim "Length" 72151937Sjkim}; 73151937Sjkim 74151937Sjkim 75151937Sjkim/* Local prototypes */ 76151937Sjkim 77151937Sjkimstatic void 78151937SjkimAcpiDmSpaceFlags ( 79151937Sjkim UINT8 Flags); 80151937Sjkim 81151937Sjkimstatic void 82151937SjkimAcpiDmIoFlags ( 83151937Sjkim UINT8 Flags); 84151937Sjkim 85151937Sjkimstatic void 86151937SjkimAcpiDmIoFlags2 ( 87151937Sjkim UINT8 SpecificFlags); 88151937Sjkim 89151937Sjkimstatic void 90151937SjkimAcpiDmMemoryFlags ( 91151937Sjkim UINT8 Flags, 92151937Sjkim UINT8 SpecificFlags); 93151937Sjkim 94151937Sjkimstatic void 95151937SjkimAcpiDmMemoryFlags2 ( 96151937Sjkim UINT8 SpecificFlags); 97151937Sjkim 98151937Sjkimstatic void 99151937SjkimAcpiDmResourceSource ( 100151937Sjkim AML_RESOURCE *Resource, 101151937Sjkim ACPI_SIZE MinimumLength, 102151937Sjkim UINT32 Length); 103151937Sjkim 104151937Sjkimstatic void 105151937SjkimAcpiDmAddressFields ( 106151937Sjkim void *Source, 107151937Sjkim UINT8 Type, 108151937Sjkim UINT32 Level); 109151937Sjkim 110151937Sjkimstatic void 111151937SjkimAcpiDmAddressPrefix ( 112151937Sjkim UINT8 Type); 113151937Sjkim 114151937Sjkimstatic void 115151937SjkimAcpiDmAddressCommon ( 116151937Sjkim AML_RESOURCE *Resource, 117151937Sjkim UINT8 Type, 118151937Sjkim UINT32 Level); 119151937Sjkim 120151937Sjkimstatic void 121151937SjkimAcpiDmAddressFlags ( 122151937Sjkim AML_RESOURCE *Resource); 123151937Sjkim 124151937Sjkim 125100966Siwasaki/******************************************************************************* 126100966Siwasaki * 127151937Sjkim * FUNCTION: AcpiDmMemoryFields 128151937Sjkim * 129151937Sjkim * PARAMETERS: Source - Pointer to the contiguous data fields 130151937Sjkim * Type - 16 or 32 (bit) 131151937Sjkim * Level - Current source code indentation level 132151937Sjkim * 133151937Sjkim * RETURN: None 134151937Sjkim * 135151937Sjkim * DESCRIPTION: Decode fields common to Memory24 and Memory32 descriptors 136151937Sjkim * 137151937Sjkim ******************************************************************************/ 138151937Sjkim 139151937Sjkimstatic void 140151937SjkimAcpiDmMemoryFields ( 141151937Sjkim void *Source, 142151937Sjkim UINT8 Type, 143151937Sjkim UINT32 Level) 144151937Sjkim{ 145193267Sjkim UINT32 i; 146151937Sjkim 147151937Sjkim 148151937Sjkim for (i = 0; i < 4; i++) 149151937Sjkim { 150151937Sjkim AcpiDmIndent (Level + 1); 151151937Sjkim 152151937Sjkim switch (Type) 153151937Sjkim { 154151937Sjkim case 16: 155250838Sjkim 156167802Sjkim AcpiDmDumpInteger16 (ACPI_CAST_PTR (UINT16, Source)[i], 157167802Sjkim AcpiDmMemoryNames[i]); 158151937Sjkim break; 159151937Sjkim 160151937Sjkim case 32: 161250838Sjkim 162167802Sjkim AcpiDmDumpInteger32 (ACPI_CAST_PTR (UINT32, Source)[i], 163167802Sjkim AcpiDmMemoryNames[i]); 164151937Sjkim break; 165151937Sjkim 166151937Sjkim default: 167250838Sjkim 168151937Sjkim return; 169151937Sjkim } 170151937Sjkim } 171151937Sjkim} 172151937Sjkim 173151937Sjkim 174151937Sjkim/******************************************************************************* 175151937Sjkim * 176167802Sjkim * FUNCTION: AcpiDmAddressFields 177151937Sjkim * 178151937Sjkim * PARAMETERS: Source - Pointer to the contiguous data fields 179151937Sjkim * Type - 16, 32, or 64 (bit) 180151937Sjkim * Level - Current source code indentation level 181151937Sjkim * 182151937Sjkim * RETURN: None 183151937Sjkim * 184151937Sjkim * DESCRIPTION: Decode fields common to address descriptors 185151937Sjkim * 186151937Sjkim ******************************************************************************/ 187151937Sjkim 188151937Sjkimstatic void 189151937SjkimAcpiDmAddressFields ( 190151937Sjkim void *Source, 191151937Sjkim UINT8 Type, 192151937Sjkim UINT32 Level) 193151937Sjkim{ 194193267Sjkim UINT32 i; 195151937Sjkim 196151937Sjkim 197151937Sjkim AcpiOsPrintf ("\n"); 198151937Sjkim 199151937Sjkim for (i = 0; i < 5; i++) 200151937Sjkim { 201151937Sjkim AcpiDmIndent (Level + 1); 202151937Sjkim 203151937Sjkim switch (Type) 204151937Sjkim { 205151937Sjkim case 16: 206250838Sjkim 207167802Sjkim AcpiDmDumpInteger16 (ACPI_CAST_PTR (UINT16, Source)[i], 208167802Sjkim AcpiDmAddressNames[i]); 209151937Sjkim break; 210151937Sjkim 211151937Sjkim case 32: 212250838Sjkim 213167802Sjkim AcpiDmDumpInteger32 (ACPI_CAST_PTR (UINT32, Source)[i], 214167802Sjkim AcpiDmAddressNames[i]); 215151937Sjkim break; 216151937Sjkim 217151937Sjkim case 64: 218250838Sjkim 219167802Sjkim AcpiDmDumpInteger64 (ACPI_CAST_PTR (UINT64, Source)[i], 220167802Sjkim AcpiDmAddressNames[i]); 221151937Sjkim break; 222151937Sjkim 223151937Sjkim default: 224250838Sjkim 225151937Sjkim return; 226151937Sjkim } 227151937Sjkim } 228151937Sjkim} 229151937Sjkim 230151937Sjkim 231151937Sjkim/******************************************************************************* 232151937Sjkim * 233151937Sjkim * FUNCTION: AcpiDmAddressPrefix 234151937Sjkim * 235151937Sjkim * PARAMETERS: Type - Descriptor type 236151937Sjkim * 237151937Sjkim * RETURN: None 238151937Sjkim * 239151937Sjkim * DESCRIPTION: Emit name prefix representing the address descriptor type 240151937Sjkim * 241151937Sjkim ******************************************************************************/ 242151937Sjkim 243151937Sjkimstatic void 244151937SjkimAcpiDmAddressPrefix ( 245151937Sjkim UINT8 Type) 246151937Sjkim{ 247151937Sjkim 248151937Sjkim switch (Type) 249151937Sjkim { 250151937Sjkim case ACPI_RESOURCE_TYPE_ADDRESS16: 251250838Sjkim 252151937Sjkim AcpiOsPrintf ("Word"); 253151937Sjkim break; 254151937Sjkim 255151937Sjkim case ACPI_RESOURCE_TYPE_ADDRESS32: 256250838Sjkim 257151937Sjkim AcpiOsPrintf ("DWord"); 258151937Sjkim break; 259151937Sjkim 260151937Sjkim case ACPI_RESOURCE_TYPE_ADDRESS64: 261250838Sjkim 262151937Sjkim AcpiOsPrintf ("QWord"); 263151937Sjkim break; 264151937Sjkim 265151937Sjkim case ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64: 266250838Sjkim 267151937Sjkim AcpiOsPrintf ("Extended"); 268151937Sjkim break; 269151937Sjkim 270151937Sjkim default: 271250838Sjkim 272151937Sjkim return; 273151937Sjkim } 274151937Sjkim} 275151937Sjkim 276151937Sjkim 277151937Sjkim/******************************************************************************* 278151937Sjkim * 279151937Sjkim * FUNCTION: AcpiDmAddressCommon 280151937Sjkim * 281151937Sjkim * PARAMETERS: Resource - Raw AML descriptor 282151937Sjkim * Type - Descriptor type 283151937Sjkim * Level - Current source code indentation level 284151937Sjkim * 285151937Sjkim * RETURN: None 286151937Sjkim * 287151937Sjkim * DESCRIPTION: Emit common name and flag fields common to address descriptors 288151937Sjkim * 289151937Sjkim ******************************************************************************/ 290151937Sjkim 291151937Sjkimstatic void 292151937SjkimAcpiDmAddressCommon ( 293151937Sjkim AML_RESOURCE *Resource, 294151937Sjkim UINT8 Type, 295151937Sjkim UINT32 Level) 296151937Sjkim{ 297151937Sjkim UINT8 ResourceType; 298151937Sjkim UINT8 SpecificFlags; 299151937Sjkim UINT8 Flags; 300151937Sjkim 301151937Sjkim 302151937Sjkim ResourceType = Resource->Address.ResourceType; 303151937Sjkim SpecificFlags = Resource->Address.SpecificFlags; 304151937Sjkim Flags = Resource->Address.Flags; 305151937Sjkim 306151937Sjkim AcpiDmIndent (Level); 307151937Sjkim 308151937Sjkim /* Validate ResourceType */ 309151937Sjkim 310151937Sjkim if ((ResourceType > 2) && (ResourceType < 0xC0)) 311151937Sjkim { 312151937Sjkim AcpiOsPrintf ("/**** Invalid Resource Type: 0x%X ****/", ResourceType); 313151937Sjkim return; 314151937Sjkim } 315151937Sjkim 316151937Sjkim /* Prefix is either Word, DWord, QWord, or Extended */ 317151937Sjkim 318151937Sjkim AcpiDmAddressPrefix (Type); 319151937Sjkim 320151937Sjkim /* Resource Types above 0xC0 are vendor-defined */ 321151937Sjkim 322151937Sjkim if (ResourceType > 2) 323151937Sjkim { 324151937Sjkim AcpiOsPrintf ("Space (0x%2.2X, ", ResourceType); 325151937Sjkim AcpiDmSpaceFlags (Flags); 326151937Sjkim AcpiOsPrintf (" 0x%2.2X,", SpecificFlags); 327151937Sjkim return; 328151937Sjkim } 329151937Sjkim 330151937Sjkim /* This is either a Memory, IO, or BusNumber descriptor (0,1,2) */ 331151937Sjkim 332243347Sjkim AcpiOsPrintf ("%s (", AcpiGbl_WordDecode [ACPI_GET_2BIT_FLAG (ResourceType)]); 333151937Sjkim 334151937Sjkim /* Decode the general and type-specific flags */ 335151937Sjkim 336151937Sjkim if (ResourceType == ACPI_MEMORY_RANGE) 337151937Sjkim { 338151937Sjkim AcpiDmMemoryFlags (Flags, SpecificFlags); 339151937Sjkim } 340151937Sjkim else /* IO range or BusNumberRange */ 341151937Sjkim { 342151937Sjkim AcpiDmIoFlags (Flags); 343151937Sjkim if (ResourceType == ACPI_IO_RANGE) 344151937Sjkim { 345243347Sjkim AcpiOsPrintf (" %s,", AcpiGbl_RngDecode [ACPI_GET_2BIT_FLAG (SpecificFlags)]); 346151937Sjkim } 347151937Sjkim } 348151937Sjkim} 349151937Sjkim 350151937Sjkim 351151937Sjkim/******************************************************************************* 352151937Sjkim * 353151937Sjkim * FUNCTION: AcpiDmAddressFlags 354151937Sjkim * 355151937Sjkim * PARAMETERS: Resource - Raw AML descriptor 356151937Sjkim * 357151937Sjkim * RETURN: None 358151937Sjkim * 359151937Sjkim * DESCRIPTION: Emit flags common to address descriptors 360151937Sjkim * 361151937Sjkim ******************************************************************************/ 362151937Sjkim 363151937Sjkimstatic void 364151937SjkimAcpiDmAddressFlags ( 365151937Sjkim AML_RESOURCE *Resource) 366151937Sjkim{ 367151937Sjkim 368151937Sjkim if (Resource->Address.ResourceType == ACPI_IO_RANGE) 369151937Sjkim { 370151937Sjkim AcpiDmIoFlags2 (Resource->Address.SpecificFlags); 371151937Sjkim } 372151937Sjkim else if (Resource->Address.ResourceType == ACPI_MEMORY_RANGE) 373151937Sjkim { 374151937Sjkim AcpiDmMemoryFlags2 (Resource->Address.SpecificFlags); 375151937Sjkim } 376151937Sjkim} 377151937Sjkim 378151937Sjkim 379151937Sjkim/******************************************************************************* 380151937Sjkim * 381151937Sjkim * FUNCTION: AcpiDmSpaceFlags 382151937Sjkim * 383151937Sjkim * PARAMETERS: Flags - Flag byte to be decoded 384151937Sjkim * 385151937Sjkim * RETURN: None 386151937Sjkim * 387151937Sjkim * DESCRIPTION: Decode the flags specific to Space Address space descriptors 388151937Sjkim * 389151937Sjkim ******************************************************************************/ 390151937Sjkim 391151937Sjkimstatic void 392151937SjkimAcpiDmSpaceFlags ( 393151937Sjkim UINT8 Flags) 394151937Sjkim{ 395151937Sjkim 396151937Sjkim AcpiOsPrintf ("%s, %s, %s, %s,", 397243347Sjkim AcpiGbl_ConsumeDecode [ACPI_GET_1BIT_FLAG (Flags)], 398243347Sjkim AcpiGbl_DecDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 1)], 399243347Sjkim AcpiGbl_MinDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 2)], 400243347Sjkim AcpiGbl_MaxDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 3)]); 401151937Sjkim} 402151937Sjkim 403151937Sjkim 404151937Sjkim/******************************************************************************* 405151937Sjkim * 406100966Siwasaki * FUNCTION: AcpiDmIoFlags 407100966Siwasaki * 408100966Siwasaki * PARAMETERS: Flags - Flag byte to be decoded 409100966Siwasaki * 410100966Siwasaki * RETURN: None 411100966Siwasaki * 412100966Siwasaki * DESCRIPTION: Decode the flags specific to IO Address space descriptors 413100966Siwasaki * 414100966Siwasaki ******************************************************************************/ 415100966Siwasaki 416151937Sjkimstatic void 417100966SiwasakiAcpiDmIoFlags ( 418100966Siwasaki UINT8 Flags) 419100966Siwasaki{ 420100966Siwasaki AcpiOsPrintf ("%s, %s, %s, %s,", 421243347Sjkim AcpiGbl_ConsumeDecode [ACPI_GET_1BIT_FLAG (Flags)], 422243347Sjkim AcpiGbl_MinDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 2)], 423243347Sjkim AcpiGbl_MaxDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 3)], 424243347Sjkim AcpiGbl_DecDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 1)]); 425100966Siwasaki} 426100966Siwasaki 427100966Siwasaki 428100966Siwasaki/******************************************************************************* 429100966Siwasaki * 430151937Sjkim * FUNCTION: AcpiDmIoFlags2 431151937Sjkim * 432151937Sjkim * PARAMETERS: SpecificFlags - "Specific" flag byte to be decoded 433151937Sjkim * 434151937Sjkim * RETURN: None 435151937Sjkim * 436151937Sjkim * DESCRIPTION: Decode the flags specific to IO Address space descriptors 437151937Sjkim * 438151937Sjkim ******************************************************************************/ 439151937Sjkim 440151937Sjkimstatic void 441151937SjkimAcpiDmIoFlags2 ( 442151937Sjkim UINT8 SpecificFlags) 443151937Sjkim{ 444151937Sjkim 445151937Sjkim AcpiOsPrintf (", %s", 446243347Sjkim AcpiGbl_TtpDecode [ACPI_EXTRACT_1BIT_FLAG (SpecificFlags, 4)]); 447151937Sjkim 448151937Sjkim /* TRS is only used if TTP is TypeTranslation */ 449151937Sjkim 450151937Sjkim if (SpecificFlags & 0x10) 451151937Sjkim { 452151937Sjkim AcpiOsPrintf (", %s", 453243347Sjkim AcpiGbl_TrsDecode [ACPI_EXTRACT_1BIT_FLAG (SpecificFlags, 5)]); 454151937Sjkim } 455151937Sjkim} 456151937Sjkim 457151937Sjkim 458151937Sjkim/******************************************************************************* 459151937Sjkim * 460100966Siwasaki * FUNCTION: AcpiDmMemoryFlags 461100966Siwasaki * 462100966Siwasaki * PARAMETERS: Flags - Flag byte to be decoded 463100966Siwasaki * SpecificFlags - "Specific" flag byte to be decoded 464100966Siwasaki * 465100966Siwasaki * RETURN: None 466100966Siwasaki * 467100966Siwasaki * DESCRIPTION: Decode flags specific to Memory Address Space descriptors 468100966Siwasaki * 469100966Siwasaki ******************************************************************************/ 470100966Siwasaki 471151937Sjkimstatic void 472100966SiwasakiAcpiDmMemoryFlags ( 473100966Siwasaki UINT8 Flags, 474100966Siwasaki UINT8 SpecificFlags) 475100966Siwasaki{ 476151937Sjkim 477100966Siwasaki AcpiOsPrintf ("%s, %s, %s, %s, %s, %s,", 478243347Sjkim AcpiGbl_ConsumeDecode [ACPI_GET_1BIT_FLAG (Flags)], 479243347Sjkim AcpiGbl_DecDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 1)], 480243347Sjkim AcpiGbl_MinDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 2)], 481243347Sjkim AcpiGbl_MaxDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 3)], 482243347Sjkim AcpiGbl_MemDecode [ACPI_EXTRACT_2BIT_FLAG (SpecificFlags, 1)], 483243347Sjkim AcpiGbl_RwDecode [ACPI_GET_1BIT_FLAG (SpecificFlags)]); 484100966Siwasaki} 485100966Siwasaki 486100966Siwasaki 487100966Siwasaki/******************************************************************************* 488100966Siwasaki * 489151937Sjkim * FUNCTION: AcpiDmMemoryFlags2 490151937Sjkim * 491151937Sjkim * PARAMETERS: SpecificFlags - "Specific" flag byte to be decoded 492151937Sjkim * 493151937Sjkim * RETURN: None 494151937Sjkim * 495151937Sjkim * DESCRIPTION: Decode flags specific to Memory Address Space descriptors 496151937Sjkim * 497151937Sjkim ******************************************************************************/ 498151937Sjkim 499151937Sjkimstatic void 500151937SjkimAcpiDmMemoryFlags2 ( 501151937Sjkim UINT8 SpecificFlags) 502151937Sjkim{ 503151937Sjkim 504151937Sjkim AcpiOsPrintf (", %s, %s", 505243347Sjkim AcpiGbl_MtpDecode [ACPI_EXTRACT_2BIT_FLAG (SpecificFlags, 3)], 506243347Sjkim AcpiGbl_TtpDecode [ACPI_EXTRACT_1BIT_FLAG (SpecificFlags, 5)]); 507151937Sjkim} 508151937Sjkim 509151937Sjkim 510151937Sjkim/******************************************************************************* 511151937Sjkim * 512151937Sjkim * FUNCTION: AcpiDmResourceSource 513151937Sjkim * 514151937Sjkim * PARAMETERS: Resource - Raw AML descriptor 515151937Sjkim * MinimumLength - descriptor length without optional fields 516151937Sjkim * ResourceLength 517151937Sjkim * 518151937Sjkim * RETURN: None 519151937Sjkim * 520151937Sjkim * DESCRIPTION: Dump optional ResourceSource fields of an address descriptor 521151937Sjkim * 522151937Sjkim ******************************************************************************/ 523151937Sjkim 524151937Sjkimstatic void 525151937SjkimAcpiDmResourceSource ( 526151937Sjkim AML_RESOURCE *Resource, 527151937Sjkim ACPI_SIZE MinimumTotalLength, 528151937Sjkim UINT32 ResourceLength) 529151937Sjkim{ 530151937Sjkim UINT8 *AmlResourceSource; 531151937Sjkim UINT32 TotalLength; 532151937Sjkim 533151937Sjkim 534151937Sjkim TotalLength = ResourceLength + sizeof (AML_RESOURCE_LARGE_HEADER); 535151937Sjkim 536151937Sjkim /* Check if the optional ResourceSource fields are present */ 537151937Sjkim 538151937Sjkim if (TotalLength <= MinimumTotalLength) 539151937Sjkim { 540151937Sjkim /* The two optional fields are not used */ 541151937Sjkim 542167802Sjkim AcpiOsPrintf (",, "); 543151937Sjkim return; 544151937Sjkim } 545151937Sjkim 546151937Sjkim /* Get a pointer to the ResourceSource */ 547151937Sjkim 548167802Sjkim AmlResourceSource = ACPI_ADD_PTR (UINT8, Resource, MinimumTotalLength); 549151937Sjkim 550151937Sjkim /* 551151937Sjkim * Always emit the ResourceSourceIndex (Byte) 552151937Sjkim * 553151937Sjkim * NOTE: Some ASL compilers always create a 0 byte (in the AML) for the 554151937Sjkim * Index even if the String does not exist. Although this is in violation 555151937Sjkim * of the ACPI specification, it is very important to emit ASL code that 556151937Sjkim * can be compiled back to the identical AML. There may be fields and/or 557151937Sjkim * indexes into the resource template buffer that are compiled to absolute 558151937Sjkim * offsets, and these will be broken if the AML length is changed. 559151937Sjkim */ 560151937Sjkim AcpiOsPrintf ("0x%2.2X,", (UINT32) AmlResourceSource[0]); 561151937Sjkim 562151937Sjkim /* Make sure that the ResourceSource string exists before dumping it */ 563151937Sjkim 564151937Sjkim if (TotalLength > (MinimumTotalLength + 1)) 565151937Sjkim { 566151937Sjkim AcpiOsPrintf (" "); 567252279Sjkim AcpiUtPrintString ((char *) &AmlResourceSource[1], ACPI_UINT16_MAX); 568151937Sjkim } 569151937Sjkim 570167802Sjkim AcpiOsPrintf (", "); 571151937Sjkim} 572151937Sjkim 573151937Sjkim 574151937Sjkim/******************************************************************************* 575151937Sjkim * 576100966Siwasaki * FUNCTION: AcpiDmWordDescriptor 577100966Siwasaki * 578281075Sdim * PARAMETERS: Info - Extra resource info 579281075Sdim * 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 ( 591281075Sdim ACPI_OP_WALK_INFO *Info, 592151937Sjkim AML_RESOURCE *Resource, 593100966Siwasaki UINT32 Length, 594100966Siwasaki UINT32 Level) 595100966Siwasaki{ 596100966Siwasaki 597151937Sjkim /* Dump resource name and flags */ 598100966Siwasaki 599151937Sjkim AcpiDmAddressCommon (Resource, ACPI_RESOURCE_TYPE_ADDRESS16, Level); 600100966Siwasaki 601151937Sjkim /* Dump the 5 contiguous WORD values */ 602100966Siwasaki 603151937Sjkim AcpiDmAddressFields (&Resource->Address16.Granularity, 16, Level); 604100966Siwasaki 605151937Sjkim /* The ResourceSource fields are optional */ 606151937Sjkim 607100966Siwasaki AcpiDmIndent (Level + 1); 608151937Sjkim AcpiDmResourceSource (Resource, sizeof (AML_RESOURCE_ADDRESS16), Length); 609100966Siwasaki 610167802Sjkim /* Insert a descriptor name */ 611167802Sjkim 612167802Sjkim AcpiDmDescriptorName (); 613167802Sjkim 614151937Sjkim /* Type-specific flags */ 615100966Siwasaki 616151937Sjkim AcpiDmAddressFlags (Resource); 617100966Siwasaki AcpiOsPrintf (")\n"); 618100966Siwasaki} 619100966Siwasaki 620100966Siwasaki 621100966Siwasaki/******************************************************************************* 622100966Siwasaki * 623100966Siwasaki * FUNCTION: AcpiDmDwordDescriptor 624100966Siwasaki * 625281075Sdim * PARAMETERS: Info - Extra resource info 626281075Sdim * Resource - Pointer to the resource descriptor 627100966Siwasaki * Length - Length of the descriptor in bytes 628100966Siwasaki * Level - Current source code indentation level 629100966Siwasaki * 630100966Siwasaki * RETURN: None 631100966Siwasaki * 632100966Siwasaki * DESCRIPTION: Decode a DWord Address Space descriptor 633100966Siwasaki * 634100966Siwasaki ******************************************************************************/ 635100966Siwasaki 636100966Siwasakivoid 637100966SiwasakiAcpiDmDwordDescriptor ( 638281075Sdim ACPI_OP_WALK_INFO *Info, 639151937Sjkim AML_RESOURCE *Resource, 640100966Siwasaki UINT32 Length, 641100966Siwasaki UINT32 Level) 642100966Siwasaki{ 643100966Siwasaki 644151937Sjkim /* Dump resource name and flags */ 645100966Siwasaki 646151937Sjkim AcpiDmAddressCommon (Resource, ACPI_RESOURCE_TYPE_ADDRESS32, Level); 647100966Siwasaki 648151937Sjkim /* Dump the 5 contiguous DWORD values */ 649100966Siwasaki 650151937Sjkim AcpiDmAddressFields (&Resource->Address32.Granularity, 32, Level); 651151937Sjkim 652151937Sjkim /* The ResourceSource fields are optional */ 653151937Sjkim 654100966Siwasaki AcpiDmIndent (Level + 1); 655151937Sjkim AcpiDmResourceSource (Resource, sizeof (AML_RESOURCE_ADDRESS32), Length); 656100966Siwasaki 657167802Sjkim /* Insert a descriptor name */ 658167802Sjkim 659167802Sjkim AcpiDmDescriptorName (); 660167802Sjkim 661151937Sjkim /* Type-specific flags */ 662100966Siwasaki 663151937Sjkim AcpiDmAddressFlags (Resource); 664100966Siwasaki AcpiOsPrintf (")\n"); 665100966Siwasaki} 666100966Siwasaki 667100966Siwasaki 668100966Siwasaki/******************************************************************************* 669100966Siwasaki * 670100966Siwasaki * FUNCTION: AcpiDmQwordDescriptor 671100966Siwasaki * 672281075Sdim * PARAMETERS: Info - Extra resource info 673281075Sdim * Resource - Pointer to the resource descriptor 674100966Siwasaki * Length - Length of the descriptor in bytes 675100966Siwasaki * Level - Current source code indentation level 676100966Siwasaki * 677100966Siwasaki * RETURN: None 678100966Siwasaki * 679100966Siwasaki * DESCRIPTION: Decode a QWord Address Space descriptor 680100966Siwasaki * 681100966Siwasaki ******************************************************************************/ 682100966Siwasaki 683100966Siwasakivoid 684100966SiwasakiAcpiDmQwordDescriptor ( 685281075Sdim ACPI_OP_WALK_INFO *Info, 686151937Sjkim AML_RESOURCE *Resource, 687100966Siwasaki UINT32 Length, 688100966Siwasaki UINT32 Level) 689100966Siwasaki{ 690100966Siwasaki 691151937Sjkim /* Dump resource name and flags */ 692100966Siwasaki 693151937Sjkim AcpiDmAddressCommon (Resource, ACPI_RESOURCE_TYPE_ADDRESS64, Level); 694100966Siwasaki 695151937Sjkim /* Dump the 5 contiguous QWORD values */ 696100966Siwasaki 697151937Sjkim AcpiDmAddressFields (&Resource->Address64.Granularity, 64, Level); 698100966Siwasaki 699151937Sjkim /* The ResourceSource fields are optional */ 700100966Siwasaki 701100966Siwasaki AcpiDmIndent (Level + 1); 702151937Sjkim AcpiDmResourceSource (Resource, sizeof (AML_RESOURCE_ADDRESS64), Length); 703100966Siwasaki 704167802Sjkim /* Insert a descriptor name */ 705167802Sjkim 706167802Sjkim AcpiDmDescriptorName (); 707167802Sjkim 708151937Sjkim /* Type-specific flags */ 709100966Siwasaki 710151937Sjkim AcpiDmAddressFlags (Resource); 711151937Sjkim AcpiOsPrintf (")\n"); 712151937Sjkim} 713151937Sjkim 714151937Sjkim 715151937Sjkim/******************************************************************************* 716151937Sjkim * 717151937Sjkim * FUNCTION: AcpiDmExtendedDescriptor 718151937Sjkim * 719281075Sdim * PARAMETERS: Info - Extra resource info 720281075Sdim * Resource - Pointer to the resource descriptor 721151937Sjkim * Length - Length of the descriptor in bytes 722151937Sjkim * Level - Current source code indentation level 723151937Sjkim * 724151937Sjkim * RETURN: None 725151937Sjkim * 726151937Sjkim * DESCRIPTION: Decode a Extended Address Space descriptor 727151937Sjkim * 728151937Sjkim ******************************************************************************/ 729151937Sjkim 730151937Sjkimvoid 731151937SjkimAcpiDmExtendedDescriptor ( 732281075Sdim ACPI_OP_WALK_INFO *Info, 733151937Sjkim AML_RESOURCE *Resource, 734151937Sjkim UINT32 Length, 735151937Sjkim UINT32 Level) 736151937Sjkim{ 737151937Sjkim 738151937Sjkim /* Dump resource name and flags */ 739151937Sjkim 740151937Sjkim AcpiDmAddressCommon (Resource, ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64, Level); 741151937Sjkim 742151937Sjkim /* Dump the 5 contiguous QWORD values */ 743151937Sjkim 744151937Sjkim AcpiDmAddressFields (&Resource->ExtAddress64.Granularity, 64, Level); 745151937Sjkim 746151937Sjkim /* Extra field for this descriptor only */ 747151937Sjkim 748100966Siwasaki AcpiDmIndent (Level + 1); 749151937Sjkim AcpiDmDumpInteger64 (Resource->ExtAddress64.TypeSpecific, 750151937Sjkim "Type-Specific Attributes"); 751100966Siwasaki 752167802Sjkim /* Insert a descriptor name */ 753167802Sjkim 754167802Sjkim AcpiDmIndent (Level + 1); 755167802Sjkim AcpiDmDescriptorName (); 756167802Sjkim 757151937Sjkim /* Type-specific flags */ 758100966Siwasaki 759151937Sjkim AcpiDmAddressFlags (Resource); 760100966Siwasaki AcpiOsPrintf (")\n"); 761100966Siwasaki} 762100966Siwasaki 763100966Siwasaki 764100966Siwasaki/******************************************************************************* 765100966Siwasaki * 766100966Siwasaki * FUNCTION: AcpiDmMemory24Descriptor 767100966Siwasaki * 768281075Sdim * PARAMETERS: Info - Extra resource info 769281075Sdim * Resource - Pointer to the resource descriptor 770100966Siwasaki * Length - Length of the descriptor in bytes 771100966Siwasaki * Level - Current source code indentation level 772100966Siwasaki * 773100966Siwasaki * RETURN: None 774100966Siwasaki * 775100966Siwasaki * DESCRIPTION: Decode a Memory24 descriptor 776100966Siwasaki * 777100966Siwasaki ******************************************************************************/ 778100966Siwasaki 779100966Siwasakivoid 780100966SiwasakiAcpiDmMemory24Descriptor ( 781281075Sdim ACPI_OP_WALK_INFO *Info, 782151937Sjkim AML_RESOURCE *Resource, 783100966Siwasaki UINT32 Length, 784100966Siwasaki UINT32 Level) 785100966Siwasaki{ 786100966Siwasaki 787151937Sjkim /* Dump name and read/write flag */ 788151937Sjkim 789100966Siwasaki AcpiDmIndent (Level); 790151937Sjkim AcpiOsPrintf ("Memory24 (%s,\n", 791243347Sjkim AcpiGbl_RwDecode [ACPI_GET_1BIT_FLAG (Resource->Memory24.Flags)]); 792151937Sjkim 793151937Sjkim /* Dump the 4 contiguous WORD values */ 794151937Sjkim 795151937Sjkim AcpiDmMemoryFields (&Resource->Memory24.Minimum, 16, Level); 796151937Sjkim 797167802Sjkim /* Insert a descriptor name */ 798167802Sjkim 799151937Sjkim AcpiDmIndent (Level + 1); 800167802Sjkim AcpiDmDescriptorName (); 801151937Sjkim AcpiOsPrintf (")\n"); 802100966Siwasaki} 803100966Siwasaki 804100966Siwasaki 805100966Siwasaki/******************************************************************************* 806100966Siwasaki * 807100966Siwasaki * FUNCTION: AcpiDmMemory32Descriptor 808100966Siwasaki * 809281075Sdim * PARAMETERS: Info - Extra resource info 810281075Sdim * Resource - Pointer to the resource descriptor 811100966Siwasaki * Length - Length of the descriptor in bytes 812100966Siwasaki * Level - Current source code indentation level 813100966Siwasaki * 814100966Siwasaki * RETURN: None 815100966Siwasaki * 816100966Siwasaki * DESCRIPTION: Decode a Memory32 descriptor 817100966Siwasaki * 818100966Siwasaki ******************************************************************************/ 819100966Siwasaki 820100966Siwasakivoid 821100966SiwasakiAcpiDmMemory32Descriptor ( 822281075Sdim ACPI_OP_WALK_INFO *Info, 823151937Sjkim AML_RESOURCE *Resource, 824100966Siwasaki UINT32 Length, 825100966Siwasaki UINT32 Level) 826100966Siwasaki{ 827100966Siwasaki 828151937Sjkim /* Dump name and read/write flag */ 829151937Sjkim 830100966Siwasaki AcpiDmIndent (Level); 831151937Sjkim AcpiOsPrintf ("Memory32 (%s,\n", 832243347Sjkim AcpiGbl_RwDecode [ACPI_GET_1BIT_FLAG (Resource->Memory32.Flags)]); 833151937Sjkim 834151937Sjkim /* Dump the 4 contiguous DWORD values */ 835151937Sjkim 836151937Sjkim AcpiDmMemoryFields (&Resource->Memory32.Minimum, 32, Level); 837151937Sjkim 838167802Sjkim /* Insert a descriptor name */ 839167802Sjkim 840151937Sjkim AcpiDmIndent (Level + 1); 841167802Sjkim AcpiDmDescriptorName (); 842151937Sjkim AcpiOsPrintf (")\n"); 843100966Siwasaki} 844100966Siwasaki 845100966Siwasaki 846100966Siwasaki/******************************************************************************* 847100966Siwasaki * 848151937Sjkim * FUNCTION: AcpiDmFixedMemory32Descriptor 849100966Siwasaki * 850281075Sdim * PARAMETERS: Info - Extra resource info 851281075Sdim * Resource - Pointer to the resource descriptor 852100966Siwasaki * Length - Length of the descriptor in bytes 853100966Siwasaki * Level - Current source code indentation level 854100966Siwasaki * 855100966Siwasaki * RETURN: None 856100966Siwasaki * 857100966Siwasaki * DESCRIPTION: Decode a Fixed Memory32 descriptor 858100966Siwasaki * 859100966Siwasaki ******************************************************************************/ 860100966Siwasaki 861100966Siwasakivoid 862151937SjkimAcpiDmFixedMemory32Descriptor ( 863281075Sdim ACPI_OP_WALK_INFO *Info, 864151937Sjkim AML_RESOURCE *Resource, 865100966Siwasaki UINT32 Length, 866100966Siwasaki UINT32 Level) 867100966Siwasaki{ 868100966Siwasaki 869151937Sjkim /* Dump name and read/write flag */ 870151937Sjkim 871100966Siwasaki AcpiDmIndent (Level); 872151937Sjkim AcpiOsPrintf ("Memory32Fixed (%s,\n", 873243347Sjkim AcpiGbl_RwDecode [ACPI_GET_1BIT_FLAG (Resource->FixedMemory32.Flags)]); 874151937Sjkim 875151937Sjkim AcpiDmIndent (Level + 1); 876151937Sjkim AcpiDmDumpInteger32 (Resource->FixedMemory32.Address, "Address Base"); 877151937Sjkim 878151937Sjkim AcpiDmIndent (Level + 1); 879151937Sjkim AcpiDmDumpInteger32 (Resource->FixedMemory32.AddressLength, "Address Length"); 880151937Sjkim 881167802Sjkim /* Insert a descriptor name */ 882167802Sjkim 883151937Sjkim AcpiDmIndent (Level + 1); 884167802Sjkim AcpiDmDescriptorName (); 885151937Sjkim AcpiOsPrintf (")\n"); 886100966Siwasaki} 887100966Siwasaki 888100966Siwasaki 889100966Siwasaki/******************************************************************************* 890100966Siwasaki * 891100966Siwasaki * FUNCTION: AcpiDmGenericRegisterDescriptor 892100966Siwasaki * 893281075Sdim * PARAMETERS: Info - Extra resource info 894281075Sdim * Resource - Pointer to the resource descriptor 895100966Siwasaki * Length - Length of the descriptor in bytes 896100966Siwasaki * Level - Current source code indentation level 897100966Siwasaki * 898100966Siwasaki * RETURN: None 899100966Siwasaki * 900100966Siwasaki * DESCRIPTION: Decode a Generic Register descriptor 901100966Siwasaki * 902100966Siwasaki ******************************************************************************/ 903100966Siwasaki 904100966Siwasakivoid 905100966SiwasakiAcpiDmGenericRegisterDescriptor ( 906281075Sdim ACPI_OP_WALK_INFO *Info, 907151937Sjkim AML_RESOURCE *Resource, 908100966Siwasaki UINT32 Length, 909100966Siwasaki UINT32 Level) 910100966Siwasaki{ 911100966Siwasaki 912100966Siwasaki AcpiDmIndent (Level); 913100966Siwasaki AcpiOsPrintf ("Register ("); 914151937Sjkim AcpiDmAddressSpace (Resource->GenericReg.AddressSpaceId); 915151937Sjkim AcpiOsPrintf ("\n"); 916102550Siwasaki 917151937Sjkim AcpiDmIndent (Level + 1); 918167802Sjkim AcpiDmDumpInteger8 (Resource->GenericReg.BitWidth, "Bit Width"); 919102550Siwasaki 920151937Sjkim AcpiDmIndent (Level + 1); 921167802Sjkim AcpiDmDumpInteger8 (Resource->GenericReg.BitOffset, "Bit Offset"); 922151937Sjkim 923151937Sjkim AcpiDmIndent (Level + 1); 924167802Sjkim AcpiDmDumpInteger64 (Resource->GenericReg.Address, "Address"); 925151937Sjkim 926151937Sjkim /* Optional field for ACPI 3.0 */ 927151937Sjkim 928167802Sjkim AcpiDmIndent (Level + 1); 929151937Sjkim if (Resource->GenericReg.AccessSize) 930151937Sjkim { 931167802Sjkim AcpiOsPrintf ("0x%2.2X, // %s\n", 932167802Sjkim Resource->GenericReg.AccessSize, "Access Size"); 933151937Sjkim AcpiDmIndent (Level + 1); 934151937Sjkim } 935167802Sjkim else 936167802Sjkim { 937167802Sjkim AcpiOsPrintf (","); 938167802Sjkim } 939151937Sjkim 940167802Sjkim /* DescriptorName was added for ACPI 3.0+ */ 941167802Sjkim 942167802Sjkim AcpiDmDescriptorName (); 943151937Sjkim AcpiOsPrintf (")\n"); 944100966Siwasaki} 945100966Siwasaki 946100966Siwasaki 947100966Siwasaki/******************************************************************************* 948100966Siwasaki * 949100966Siwasaki * FUNCTION: AcpiDmInterruptDescriptor 950100966Siwasaki * 951281075Sdim * PARAMETERS: Info - Extra resource info 952281075Sdim * Resource - Pointer to the resource descriptor 953100966Siwasaki * Length - Length of the descriptor in bytes 954100966Siwasaki * Level - Current source code indentation level 955100966Siwasaki * 956100966Siwasaki * RETURN: None 957100966Siwasaki * 958100966Siwasaki * DESCRIPTION: Decode a extended Interrupt descriptor 959100966Siwasaki * 960100966Siwasaki ******************************************************************************/ 961100966Siwasaki 962100966Siwasakivoid 963100966SiwasakiAcpiDmInterruptDescriptor ( 964281075Sdim ACPI_OP_WALK_INFO *Info, 965151937Sjkim AML_RESOURCE *Resource, 966100966Siwasaki UINT32 Length, 967100966Siwasaki UINT32 Level) 968100966Siwasaki{ 969100966Siwasaki UINT32 i; 970100966Siwasaki 971100966Siwasaki 972100966Siwasaki AcpiDmIndent (Level); 973151937Sjkim AcpiOsPrintf ("Interrupt (%s, %s, %s, %s, ", 974243347Sjkim AcpiGbl_ConsumeDecode [ACPI_GET_1BIT_FLAG (Resource->ExtendedIrq.Flags)], 975243347Sjkim AcpiGbl_HeDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->ExtendedIrq.Flags, 1)], 976243347Sjkim AcpiGbl_LlDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->ExtendedIrq.Flags, 2)], 977243347Sjkim AcpiGbl_ShrDecode [ACPI_EXTRACT_2BIT_FLAG (Resource->ExtendedIrq.Flags, 3)]); 978100966Siwasaki 979151937Sjkim /* 980151937Sjkim * The ResourceSource fields are optional and appear after the interrupt 981151937Sjkim * list. Must compute length based on length of the list. First xrupt 982151937Sjkim * is included in the struct (reason for -1 below) 983151937Sjkim */ 984151937Sjkim AcpiDmResourceSource (Resource, 985151937Sjkim sizeof (AML_RESOURCE_EXTENDED_IRQ) + 986193267Sjkim ((UINT32) Resource->ExtendedIrq.InterruptCount - 1) * sizeof (UINT32), 987151937Sjkim Resource->ExtendedIrq.ResourceLength); 988100966Siwasaki 989167802Sjkim /* Insert a descriptor name */ 990167802Sjkim 991167802Sjkim AcpiDmDescriptorName (); 992167802Sjkim AcpiOsPrintf (")\n"); 993167802Sjkim 994151937Sjkim /* Dump the interrupt list */ 995114237Snjl 996100966Siwasaki AcpiDmIndent (Level); 997100966Siwasaki AcpiOsPrintf ("{\n"); 998151937Sjkim for (i = 0; i < Resource->ExtendedIrq.InterruptCount; i++) 999100966Siwasaki { 1000100966Siwasaki AcpiDmIndent (Level + 1); 1001151937Sjkim AcpiOsPrintf ("0x%8.8X,\n", 1002151937Sjkim (UINT32) Resource->ExtendedIrq.Interrupts[i]); 1003100966Siwasaki } 1004100966Siwasaki 1005100966Siwasaki AcpiDmIndent (Level); 1006100966Siwasaki AcpiOsPrintf ("}\n"); 1007100966Siwasaki} 1008100966Siwasaki 1009100966Siwasaki 1010100966Siwasaki/******************************************************************************* 1011100966Siwasaki * 1012151937Sjkim * FUNCTION: AcpiDmVendorCommon 1013100966Siwasaki * 1014151937Sjkim * PARAMETERS: Name - Descriptor name suffix 1015151937Sjkim * ByteData - Pointer to the vendor byte data 1016151937Sjkim * Length - Length of the byte data 1017100966Siwasaki * Level - Current source code indentation level 1018100966Siwasaki * 1019100966Siwasaki * RETURN: None 1020100966Siwasaki * 1021151937Sjkim * DESCRIPTION: Decode a Vendor descriptor, both Large and Small 1022100966Siwasaki * 1023100966Siwasaki ******************************************************************************/ 1024100966Siwasaki 1025100966Siwasakivoid 1026151937SjkimAcpiDmVendorCommon ( 1027151937Sjkim char *Name, 1028151937Sjkim UINT8 *ByteData, 1029100966Siwasaki UINT32 Length, 1030100966Siwasaki UINT32 Level) 1031100966Siwasaki{ 1032100966Siwasaki 1033167802Sjkim /* Dump macro name */ 1034151937Sjkim 1035100966Siwasaki AcpiDmIndent (Level); 1036167802Sjkim AcpiOsPrintf ("Vendor%s (", Name); 1037151937Sjkim 1038167802Sjkim /* Insert a descriptor name */ 1039167802Sjkim 1040167802Sjkim AcpiDmDescriptorName (); 1041167802Sjkim AcpiOsPrintf (") // Length = 0x%.2X\n", Length); 1042167802Sjkim 1043151937Sjkim /* Dump the vendor bytes */ 1044151937Sjkim 1045100966Siwasaki AcpiDmIndent (Level); 1046100966Siwasaki AcpiOsPrintf ("{\n"); 1047100966Siwasaki 1048151937Sjkim AcpiDmDisasmByteList (Level + 1, ByteData, Length); 1049151937Sjkim 1050100966Siwasaki AcpiDmIndent (Level); 1051100966Siwasaki AcpiOsPrintf ("}\n"); 1052100966Siwasaki} 1053100966Siwasaki 1054100966Siwasaki 1055151937Sjkim/******************************************************************************* 1056151937Sjkim * 1057151937Sjkim * FUNCTION: AcpiDmVendorLargeDescriptor 1058151937Sjkim * 1059281075Sdim * PARAMETERS: Info - Extra resource info 1060281075Sdim * Resource - Pointer to the resource descriptor 1061151937Sjkim * Length - Length of the descriptor in bytes 1062151937Sjkim * Level - Current source code indentation level 1063151937Sjkim * 1064151937Sjkim * RETURN: None 1065151937Sjkim * 1066151937Sjkim * DESCRIPTION: Decode a Vendor Large descriptor 1067151937Sjkim * 1068151937Sjkim ******************************************************************************/ 1069151937Sjkim 1070151937Sjkimvoid 1071151937SjkimAcpiDmVendorLargeDescriptor ( 1072281075Sdim ACPI_OP_WALK_INFO *Info, 1073151937Sjkim AML_RESOURCE *Resource, 1074151937Sjkim UINT32 Length, 1075151937Sjkim UINT32 Level) 1076151937Sjkim{ 1077151937Sjkim 1078167802Sjkim AcpiDmVendorCommon ("Long ", 1079167802Sjkim ACPI_ADD_PTR (UINT8, Resource, sizeof (AML_RESOURCE_LARGE_HEADER)), 1080151937Sjkim Length, Level); 1081151937Sjkim} 1082151937Sjkim 1083100966Siwasaki#endif 1084