1100966Siwasaki/******************************************************************************* 2100966Siwasaki * 3100966Siwasaki * Module Name: dmresrcl.c - "Large" Resource Descriptor disassembly 4100966Siwasaki * 5100966Siwasaki ******************************************************************************/ 6100966Siwasaki 7217365Sjkim/* 8217365Sjkim * Copyright (C) 2000 - 2011, 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: 156167802Sjkim AcpiDmDumpInteger16 (ACPI_CAST_PTR (UINT16, Source)[i], 157167802Sjkim AcpiDmMemoryNames[i]); 158151937Sjkim break; 159151937Sjkim 160151937Sjkim case 32: 161167802Sjkim AcpiDmDumpInteger32 (ACPI_CAST_PTR (UINT32, Source)[i], 162167802Sjkim AcpiDmMemoryNames[i]); 163151937Sjkim break; 164151937Sjkim 165151937Sjkim default: 166151937Sjkim return; 167151937Sjkim } 168151937Sjkim } 169151937Sjkim} 170151937Sjkim 171151937Sjkim 172151937Sjkim/******************************************************************************* 173151937Sjkim * 174167802Sjkim * FUNCTION: AcpiDmAddressFields 175151937Sjkim * 176151937Sjkim * PARAMETERS: Source - Pointer to the contiguous data fields 177151937Sjkim * Type - 16, 32, or 64 (bit) 178151937Sjkim * Level - Current source code indentation level 179151937Sjkim * 180151937Sjkim * RETURN: None 181151937Sjkim * 182151937Sjkim * DESCRIPTION: Decode fields common to address descriptors 183151937Sjkim * 184151937Sjkim ******************************************************************************/ 185151937Sjkim 186151937Sjkimstatic void 187151937SjkimAcpiDmAddressFields ( 188151937Sjkim void *Source, 189151937Sjkim UINT8 Type, 190151937Sjkim UINT32 Level) 191151937Sjkim{ 192193267Sjkim UINT32 i; 193151937Sjkim 194151937Sjkim 195151937Sjkim AcpiOsPrintf ("\n"); 196151937Sjkim 197151937Sjkim for (i = 0; i < 5; i++) 198151937Sjkim { 199151937Sjkim AcpiDmIndent (Level + 1); 200151937Sjkim 201151937Sjkim switch (Type) 202151937Sjkim { 203151937Sjkim case 16: 204167802Sjkim AcpiDmDumpInteger16 (ACPI_CAST_PTR (UINT16, Source)[i], 205167802Sjkim AcpiDmAddressNames[i]); 206151937Sjkim break; 207151937Sjkim 208151937Sjkim case 32: 209167802Sjkim AcpiDmDumpInteger32 (ACPI_CAST_PTR (UINT32, Source)[i], 210167802Sjkim AcpiDmAddressNames[i]); 211151937Sjkim break; 212151937Sjkim 213151937Sjkim case 64: 214167802Sjkim AcpiDmDumpInteger64 (ACPI_CAST_PTR (UINT64, Source)[i], 215167802Sjkim AcpiDmAddressNames[i]); 216151937Sjkim break; 217151937Sjkim 218151937Sjkim default: 219151937Sjkim return; 220151937Sjkim } 221151937Sjkim } 222151937Sjkim} 223151937Sjkim 224151937Sjkim 225151937Sjkim/******************************************************************************* 226151937Sjkim * 227151937Sjkim * FUNCTION: AcpiDmAddressPrefix 228151937Sjkim * 229151937Sjkim * PARAMETERS: Type - Descriptor type 230151937Sjkim * 231151937Sjkim * RETURN: None 232151937Sjkim * 233151937Sjkim * DESCRIPTION: Emit name prefix representing the address descriptor type 234151937Sjkim * 235151937Sjkim ******************************************************************************/ 236151937Sjkim 237151937Sjkimstatic void 238151937SjkimAcpiDmAddressPrefix ( 239151937Sjkim UINT8 Type) 240151937Sjkim{ 241151937Sjkim 242151937Sjkim switch (Type) 243151937Sjkim { 244151937Sjkim case ACPI_RESOURCE_TYPE_ADDRESS16: 245151937Sjkim AcpiOsPrintf ("Word"); 246151937Sjkim break; 247151937Sjkim 248151937Sjkim case ACPI_RESOURCE_TYPE_ADDRESS32: 249151937Sjkim AcpiOsPrintf ("DWord"); 250151937Sjkim break; 251151937Sjkim 252151937Sjkim case ACPI_RESOURCE_TYPE_ADDRESS64: 253151937Sjkim AcpiOsPrintf ("QWord"); 254151937Sjkim break; 255151937Sjkim 256151937Sjkim case ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64: 257151937Sjkim AcpiOsPrintf ("Extended"); 258151937Sjkim break; 259151937Sjkim 260151937Sjkim default: 261151937Sjkim return; 262151937Sjkim } 263151937Sjkim} 264151937Sjkim 265151937Sjkim 266151937Sjkim/******************************************************************************* 267151937Sjkim * 268151937Sjkim * FUNCTION: AcpiDmAddressCommon 269151937Sjkim * 270151937Sjkim * PARAMETERS: Resource - Raw AML descriptor 271151937Sjkim * Type - Descriptor type 272151937Sjkim * Level - Current source code indentation level 273151937Sjkim * 274151937Sjkim * RETURN: None 275151937Sjkim * 276151937Sjkim * DESCRIPTION: Emit common name and flag fields common to address descriptors 277151937Sjkim * 278151937Sjkim ******************************************************************************/ 279151937Sjkim 280151937Sjkimstatic void 281151937SjkimAcpiDmAddressCommon ( 282151937Sjkim AML_RESOURCE *Resource, 283151937Sjkim UINT8 Type, 284151937Sjkim UINT32 Level) 285151937Sjkim{ 286151937Sjkim UINT8 ResourceType; 287151937Sjkim UINT8 SpecificFlags; 288151937Sjkim UINT8 Flags; 289151937Sjkim 290151937Sjkim 291151937Sjkim ResourceType = Resource->Address.ResourceType; 292151937Sjkim SpecificFlags = Resource->Address.SpecificFlags; 293151937Sjkim Flags = Resource->Address.Flags; 294151937Sjkim 295151937Sjkim AcpiDmIndent (Level); 296151937Sjkim 297151937Sjkim /* Validate ResourceType */ 298151937Sjkim 299151937Sjkim if ((ResourceType > 2) && (ResourceType < 0xC0)) 300151937Sjkim { 301151937Sjkim AcpiOsPrintf ("/**** Invalid Resource Type: 0x%X ****/", ResourceType); 302151937Sjkim return; 303151937Sjkim } 304151937Sjkim 305151937Sjkim /* Prefix is either Word, DWord, QWord, or Extended */ 306151937Sjkim 307151937Sjkim AcpiDmAddressPrefix (Type); 308151937Sjkim 309151937Sjkim /* Resource Types above 0xC0 are vendor-defined */ 310151937Sjkim 311151937Sjkim if (ResourceType > 2) 312151937Sjkim { 313151937Sjkim AcpiOsPrintf ("Space (0x%2.2X, ", ResourceType); 314151937Sjkim AcpiDmSpaceFlags (Flags); 315151937Sjkim AcpiOsPrintf (" 0x%2.2X,", SpecificFlags); 316151937Sjkim return; 317151937Sjkim } 318151937Sjkim 319151937Sjkim /* This is either a Memory, IO, or BusNumber descriptor (0,1,2) */ 320151937Sjkim 321167802Sjkim AcpiOsPrintf ("%s (", AcpiGbl_WordDecode [ResourceType & 0x3]); 322151937Sjkim 323151937Sjkim /* Decode the general and type-specific flags */ 324151937Sjkim 325151937Sjkim if (ResourceType == ACPI_MEMORY_RANGE) 326151937Sjkim { 327151937Sjkim AcpiDmMemoryFlags (Flags, SpecificFlags); 328151937Sjkim } 329151937Sjkim else /* IO range or BusNumberRange */ 330151937Sjkim { 331151937Sjkim AcpiDmIoFlags (Flags); 332151937Sjkim if (ResourceType == ACPI_IO_RANGE) 333151937Sjkim { 334167802Sjkim AcpiOsPrintf (" %s,", AcpiGbl_RngDecode [SpecificFlags & 0x3]); 335151937Sjkim } 336151937Sjkim } 337151937Sjkim} 338151937Sjkim 339151937Sjkim 340151937Sjkim/******************************************************************************* 341151937Sjkim * 342151937Sjkim * FUNCTION: AcpiDmAddressFlags 343151937Sjkim * 344151937Sjkim * PARAMETERS: Resource - Raw AML descriptor 345151937Sjkim * 346151937Sjkim * RETURN: None 347151937Sjkim * 348151937Sjkim * DESCRIPTION: Emit flags common to address descriptors 349151937Sjkim * 350151937Sjkim ******************************************************************************/ 351151937Sjkim 352151937Sjkimstatic void 353151937SjkimAcpiDmAddressFlags ( 354151937Sjkim AML_RESOURCE *Resource) 355151937Sjkim{ 356151937Sjkim 357151937Sjkim if (Resource->Address.ResourceType == ACPI_IO_RANGE) 358151937Sjkim { 359151937Sjkim AcpiDmIoFlags2 (Resource->Address.SpecificFlags); 360151937Sjkim } 361151937Sjkim else if (Resource->Address.ResourceType == ACPI_MEMORY_RANGE) 362151937Sjkim { 363151937Sjkim AcpiDmMemoryFlags2 (Resource->Address.SpecificFlags); 364151937Sjkim } 365151937Sjkim} 366151937Sjkim 367151937Sjkim 368151937Sjkim/******************************************************************************* 369151937Sjkim * 370151937Sjkim * FUNCTION: AcpiDmSpaceFlags 371151937Sjkim * 372151937Sjkim * PARAMETERS: Flags - Flag byte to be decoded 373151937Sjkim * 374151937Sjkim * RETURN: None 375151937Sjkim * 376151937Sjkim * DESCRIPTION: Decode the flags specific to Space Address space descriptors 377151937Sjkim * 378151937Sjkim ******************************************************************************/ 379151937Sjkim 380151937Sjkimstatic void 381151937SjkimAcpiDmSpaceFlags ( 382151937Sjkim UINT8 Flags) 383151937Sjkim{ 384151937Sjkim 385151937Sjkim AcpiOsPrintf ("%s, %s, %s, %s,", 386151937Sjkim AcpiGbl_ConsumeDecode [(Flags & 1)], 387167802Sjkim AcpiGbl_DecDecode [(Flags & 0x2) >> 1], 388151937Sjkim AcpiGbl_MinDecode [(Flags & 0x4) >> 2], 389151937Sjkim AcpiGbl_MaxDecode [(Flags & 0x8) >> 3]); 390151937Sjkim} 391151937Sjkim 392151937Sjkim 393151937Sjkim/******************************************************************************* 394151937Sjkim * 395100966Siwasaki * FUNCTION: AcpiDmIoFlags 396100966Siwasaki * 397100966Siwasaki * PARAMETERS: Flags - Flag byte to be decoded 398100966Siwasaki * 399100966Siwasaki * RETURN: None 400100966Siwasaki * 401100966Siwasaki * DESCRIPTION: Decode the flags specific to IO Address space descriptors 402100966Siwasaki * 403100966Siwasaki ******************************************************************************/ 404100966Siwasaki 405151937Sjkimstatic void 406100966SiwasakiAcpiDmIoFlags ( 407100966Siwasaki UINT8 Flags) 408100966Siwasaki{ 409100966Siwasaki AcpiOsPrintf ("%s, %s, %s, %s,", 410100966Siwasaki AcpiGbl_ConsumeDecode [(Flags & 1)], 411100966Siwasaki AcpiGbl_MinDecode [(Flags & 0x4) >> 2], 412100966Siwasaki AcpiGbl_MaxDecode [(Flags & 0x8) >> 3], 413167802Sjkim AcpiGbl_DecDecode [(Flags & 0x2) >> 1]); 414100966Siwasaki} 415100966Siwasaki 416100966Siwasaki 417100966Siwasaki/******************************************************************************* 418100966Siwasaki * 419151937Sjkim * FUNCTION: AcpiDmIoFlags2 420151937Sjkim * 421151937Sjkim * PARAMETERS: SpecificFlags - "Specific" flag byte to be decoded 422151937Sjkim * 423151937Sjkim * RETURN: None 424151937Sjkim * 425151937Sjkim * DESCRIPTION: Decode the flags specific to IO Address space descriptors 426151937Sjkim * 427151937Sjkim ******************************************************************************/ 428151937Sjkim 429151937Sjkimstatic void 430151937SjkimAcpiDmIoFlags2 ( 431151937Sjkim UINT8 SpecificFlags) 432151937Sjkim{ 433151937Sjkim 434151937Sjkim AcpiOsPrintf (", %s", 435167802Sjkim AcpiGbl_TtpDecode [(SpecificFlags & 0x10) >> 4]); 436151937Sjkim 437151937Sjkim /* TRS is only used if TTP is TypeTranslation */ 438151937Sjkim 439151937Sjkim if (SpecificFlags & 0x10) 440151937Sjkim { 441151937Sjkim AcpiOsPrintf (", %s", 442167802Sjkim AcpiGbl_TrsDecode [(SpecificFlags & 0x20) >> 5]); 443151937Sjkim } 444151937Sjkim} 445151937Sjkim 446151937Sjkim 447151937Sjkim/******************************************************************************* 448151937Sjkim * 449100966Siwasaki * FUNCTION: AcpiDmMemoryFlags 450100966Siwasaki * 451100966Siwasaki * PARAMETERS: Flags - Flag byte to be decoded 452100966Siwasaki * SpecificFlags - "Specific" flag byte to be decoded 453100966Siwasaki * 454100966Siwasaki * RETURN: None 455100966Siwasaki * 456100966Siwasaki * DESCRIPTION: Decode flags specific to Memory Address Space descriptors 457100966Siwasaki * 458100966Siwasaki ******************************************************************************/ 459100966Siwasaki 460151937Sjkimstatic void 461100966SiwasakiAcpiDmMemoryFlags ( 462100966Siwasaki UINT8 Flags, 463100966Siwasaki UINT8 SpecificFlags) 464100966Siwasaki{ 465151937Sjkim 466100966Siwasaki AcpiOsPrintf ("%s, %s, %s, %s, %s, %s,", 467100966Siwasaki AcpiGbl_ConsumeDecode [(Flags & 1)], 468167802Sjkim AcpiGbl_DecDecode [(Flags & 0x2) >> 1], 469100966Siwasaki AcpiGbl_MinDecode [(Flags & 0x4) >> 2], 470100966Siwasaki AcpiGbl_MaxDecode [(Flags & 0x8) >> 3], 471167802Sjkim AcpiGbl_MemDecode [(SpecificFlags & 0x6) >> 1], 472167802Sjkim AcpiGbl_RwDecode [(SpecificFlags & 0x1)]); 473100966Siwasaki} 474100966Siwasaki 475100966Siwasaki 476100966Siwasaki/******************************************************************************* 477100966Siwasaki * 478151937Sjkim * FUNCTION: AcpiDmMemoryFlags2 479151937Sjkim * 480151937Sjkim * PARAMETERS: SpecificFlags - "Specific" flag byte to be decoded 481151937Sjkim * 482151937Sjkim * RETURN: None 483151937Sjkim * 484151937Sjkim * DESCRIPTION: Decode flags specific to Memory Address Space descriptors 485151937Sjkim * 486151937Sjkim ******************************************************************************/ 487151937Sjkim 488151937Sjkimstatic void 489151937SjkimAcpiDmMemoryFlags2 ( 490151937Sjkim UINT8 SpecificFlags) 491151937Sjkim{ 492151937Sjkim 493151937Sjkim AcpiOsPrintf (", %s, %s", 494167802Sjkim AcpiGbl_MtpDecode [(SpecificFlags & 0x18) >> 3], 495167802Sjkim AcpiGbl_TtpDecode [(SpecificFlags & 0x20) >> 5]); 496151937Sjkim} 497151937Sjkim 498151937Sjkim 499151937Sjkim/******************************************************************************* 500151937Sjkim * 501151937Sjkim * FUNCTION: AcpiDmResourceSource 502151937Sjkim * 503151937Sjkim * PARAMETERS: Resource - Raw AML descriptor 504151937Sjkim * MinimumLength - descriptor length without optional fields 505151937Sjkim * ResourceLength 506151937Sjkim * 507151937Sjkim * RETURN: None 508151937Sjkim * 509151937Sjkim * DESCRIPTION: Dump optional ResourceSource fields of an address descriptor 510151937Sjkim * 511151937Sjkim ******************************************************************************/ 512151937Sjkim 513151937Sjkimstatic void 514151937SjkimAcpiDmResourceSource ( 515151937Sjkim AML_RESOURCE *Resource, 516151937Sjkim ACPI_SIZE MinimumTotalLength, 517151937Sjkim UINT32 ResourceLength) 518151937Sjkim{ 519151937Sjkim UINT8 *AmlResourceSource; 520151937Sjkim UINT32 TotalLength; 521151937Sjkim 522151937Sjkim 523151937Sjkim TotalLength = ResourceLength + sizeof (AML_RESOURCE_LARGE_HEADER); 524151937Sjkim 525151937Sjkim /* Check if the optional ResourceSource fields are present */ 526151937Sjkim 527151937Sjkim if (TotalLength <= MinimumTotalLength) 528151937Sjkim { 529151937Sjkim /* The two optional fields are not used */ 530151937Sjkim 531167802Sjkim AcpiOsPrintf (",, "); 532151937Sjkim return; 533151937Sjkim } 534151937Sjkim 535151937Sjkim /* Get a pointer to the ResourceSource */ 536151937Sjkim 537167802Sjkim AmlResourceSource = ACPI_ADD_PTR (UINT8, Resource, MinimumTotalLength); 538151937Sjkim 539151937Sjkim /* 540151937Sjkim * Always emit the ResourceSourceIndex (Byte) 541151937Sjkim * 542151937Sjkim * NOTE: Some ASL compilers always create a 0 byte (in the AML) for the 543151937Sjkim * Index even if the String does not exist. Although this is in violation 544151937Sjkim * of the ACPI specification, it is very important to emit ASL code that 545151937Sjkim * can be compiled back to the identical AML. There may be fields and/or 546151937Sjkim * indexes into the resource template buffer that are compiled to absolute 547151937Sjkim * offsets, and these will be broken if the AML length is changed. 548151937Sjkim */ 549151937Sjkim AcpiOsPrintf ("0x%2.2X,", (UINT32) AmlResourceSource[0]); 550151937Sjkim 551151937Sjkim /* Make sure that the ResourceSource string exists before dumping it */ 552151937Sjkim 553151937Sjkim if (TotalLength > (MinimumTotalLength + 1)) 554151937Sjkim { 555151937Sjkim AcpiOsPrintf (" "); 556151937Sjkim AcpiUtPrintString ((char *) &AmlResourceSource[1], ACPI_UINT8_MAX); 557151937Sjkim } 558151937Sjkim 559167802Sjkim AcpiOsPrintf (", "); 560151937Sjkim} 561151937Sjkim 562151937Sjkim 563151937Sjkim/******************************************************************************* 564151937Sjkim * 565100966Siwasaki * FUNCTION: AcpiDmWordDescriptor 566100966Siwasaki * 567100966Siwasaki * PARAMETERS: Resource - Pointer to the resource descriptor 568100966Siwasaki * Length - Length of the descriptor in bytes 569100966Siwasaki * Level - Current source code indentation level 570100966Siwasaki * 571100966Siwasaki * RETURN: None 572100966Siwasaki * 573100966Siwasaki * DESCRIPTION: Decode a Word Address Space descriptor 574100966Siwasaki * 575100966Siwasaki ******************************************************************************/ 576100966Siwasaki 577100966Siwasakivoid 578100966SiwasakiAcpiDmWordDescriptor ( 579151937Sjkim AML_RESOURCE *Resource, 580100966Siwasaki UINT32 Length, 581100966Siwasaki UINT32 Level) 582100966Siwasaki{ 583100966Siwasaki 584151937Sjkim /* Dump resource name and flags */ 585100966Siwasaki 586151937Sjkim AcpiDmAddressCommon (Resource, ACPI_RESOURCE_TYPE_ADDRESS16, Level); 587100966Siwasaki 588151937Sjkim /* Dump the 5 contiguous WORD values */ 589100966Siwasaki 590151937Sjkim AcpiDmAddressFields (&Resource->Address16.Granularity, 16, Level); 591100966Siwasaki 592151937Sjkim /* The ResourceSource fields are optional */ 593151937Sjkim 594100966Siwasaki AcpiDmIndent (Level + 1); 595151937Sjkim AcpiDmResourceSource (Resource, sizeof (AML_RESOURCE_ADDRESS16), Length); 596100966Siwasaki 597167802Sjkim /* Insert a descriptor name */ 598167802Sjkim 599167802Sjkim AcpiDmDescriptorName (); 600167802Sjkim 601151937Sjkim /* Type-specific flags */ 602100966Siwasaki 603151937Sjkim AcpiDmAddressFlags (Resource); 604100966Siwasaki AcpiOsPrintf (")\n"); 605100966Siwasaki} 606100966Siwasaki 607100966Siwasaki 608100966Siwasaki/******************************************************************************* 609100966Siwasaki * 610100966Siwasaki * FUNCTION: AcpiDmDwordDescriptor 611100966Siwasaki * 612100966Siwasaki * PARAMETERS: Resource - Pointer to the resource descriptor 613100966Siwasaki * Length - Length of the descriptor in bytes 614100966Siwasaki * Level - Current source code indentation level 615100966Siwasaki * 616100966Siwasaki * RETURN: None 617100966Siwasaki * 618100966Siwasaki * DESCRIPTION: Decode a DWord Address Space descriptor 619100966Siwasaki * 620100966Siwasaki ******************************************************************************/ 621100966Siwasaki 622100966Siwasakivoid 623100966SiwasakiAcpiDmDwordDescriptor ( 624151937Sjkim AML_RESOURCE *Resource, 625100966Siwasaki UINT32 Length, 626100966Siwasaki UINT32 Level) 627100966Siwasaki{ 628100966Siwasaki 629151937Sjkim /* Dump resource name and flags */ 630100966Siwasaki 631151937Sjkim AcpiDmAddressCommon (Resource, ACPI_RESOURCE_TYPE_ADDRESS32, Level); 632100966Siwasaki 633151937Sjkim /* Dump the 5 contiguous DWORD values */ 634100966Siwasaki 635151937Sjkim AcpiDmAddressFields (&Resource->Address32.Granularity, 32, Level); 636151937Sjkim 637151937Sjkim /* The ResourceSource fields are optional */ 638151937Sjkim 639100966Siwasaki AcpiDmIndent (Level + 1); 640151937Sjkim AcpiDmResourceSource (Resource, sizeof (AML_RESOURCE_ADDRESS32), Length); 641100966Siwasaki 642167802Sjkim /* Insert a descriptor name */ 643167802Sjkim 644167802Sjkim AcpiDmDescriptorName (); 645167802Sjkim 646151937Sjkim /* Type-specific flags */ 647100966Siwasaki 648151937Sjkim AcpiDmAddressFlags (Resource); 649100966Siwasaki AcpiOsPrintf (")\n"); 650100966Siwasaki} 651100966Siwasaki 652100966Siwasaki 653100966Siwasaki/******************************************************************************* 654100966Siwasaki * 655100966Siwasaki * FUNCTION: AcpiDmQwordDescriptor 656100966Siwasaki * 657100966Siwasaki * PARAMETERS: Resource - Pointer to the resource descriptor 658100966Siwasaki * Length - Length of the descriptor in bytes 659100966Siwasaki * Level - Current source code indentation level 660100966Siwasaki * 661100966Siwasaki * RETURN: None 662100966Siwasaki * 663100966Siwasaki * DESCRIPTION: Decode a QWord Address Space descriptor 664100966Siwasaki * 665100966Siwasaki ******************************************************************************/ 666100966Siwasaki 667100966Siwasakivoid 668100966SiwasakiAcpiDmQwordDescriptor ( 669151937Sjkim AML_RESOURCE *Resource, 670100966Siwasaki UINT32 Length, 671100966Siwasaki UINT32 Level) 672100966Siwasaki{ 673100966Siwasaki 674151937Sjkim /* Dump resource name and flags */ 675100966Siwasaki 676151937Sjkim AcpiDmAddressCommon (Resource, ACPI_RESOURCE_TYPE_ADDRESS64, Level); 677100966Siwasaki 678151937Sjkim /* Dump the 5 contiguous QWORD values */ 679100966Siwasaki 680151937Sjkim AcpiDmAddressFields (&Resource->Address64.Granularity, 64, Level); 681100966Siwasaki 682151937Sjkim /* The ResourceSource fields are optional */ 683100966Siwasaki 684100966Siwasaki AcpiDmIndent (Level + 1); 685151937Sjkim AcpiDmResourceSource (Resource, sizeof (AML_RESOURCE_ADDRESS64), Length); 686100966Siwasaki 687167802Sjkim /* Insert a descriptor name */ 688167802Sjkim 689167802Sjkim AcpiDmDescriptorName (); 690167802Sjkim 691151937Sjkim /* Type-specific flags */ 692100966Siwasaki 693151937Sjkim AcpiDmAddressFlags (Resource); 694151937Sjkim AcpiOsPrintf (")\n"); 695151937Sjkim} 696151937Sjkim 697151937Sjkim 698151937Sjkim/******************************************************************************* 699151937Sjkim * 700151937Sjkim * FUNCTION: AcpiDmExtendedDescriptor 701151937Sjkim * 702151937Sjkim * PARAMETERS: Resource - Pointer to the resource descriptor 703151937Sjkim * Length - Length of the descriptor in bytes 704151937Sjkim * Level - Current source code indentation level 705151937Sjkim * 706151937Sjkim * RETURN: None 707151937Sjkim * 708151937Sjkim * DESCRIPTION: Decode a Extended Address Space descriptor 709151937Sjkim * 710151937Sjkim ******************************************************************************/ 711151937Sjkim 712151937Sjkimvoid 713151937SjkimAcpiDmExtendedDescriptor ( 714151937Sjkim AML_RESOURCE *Resource, 715151937Sjkim UINT32 Length, 716151937Sjkim UINT32 Level) 717151937Sjkim{ 718151937Sjkim 719151937Sjkim /* Dump resource name and flags */ 720151937Sjkim 721151937Sjkim AcpiDmAddressCommon (Resource, ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64, Level); 722151937Sjkim 723151937Sjkim /* Dump the 5 contiguous QWORD values */ 724151937Sjkim 725151937Sjkim AcpiDmAddressFields (&Resource->ExtAddress64.Granularity, 64, Level); 726151937Sjkim 727151937Sjkim /* Extra field for this descriptor only */ 728151937Sjkim 729100966Siwasaki AcpiDmIndent (Level + 1); 730151937Sjkim AcpiDmDumpInteger64 (Resource->ExtAddress64.TypeSpecific, 731151937Sjkim "Type-Specific Attributes"); 732100966Siwasaki 733167802Sjkim /* Insert a descriptor name */ 734167802Sjkim 735167802Sjkim AcpiDmIndent (Level + 1); 736167802Sjkim AcpiDmDescriptorName (); 737167802Sjkim 738151937Sjkim /* Type-specific flags */ 739100966Siwasaki 740151937Sjkim AcpiDmAddressFlags (Resource); 741100966Siwasaki AcpiOsPrintf (")\n"); 742100966Siwasaki} 743100966Siwasaki 744100966Siwasaki 745100966Siwasaki/******************************************************************************* 746100966Siwasaki * 747100966Siwasaki * FUNCTION: AcpiDmMemory24Descriptor 748100966Siwasaki * 749100966Siwasaki * PARAMETERS: Resource - Pointer to the resource descriptor 750100966Siwasaki * Length - Length of the descriptor in bytes 751100966Siwasaki * Level - Current source code indentation level 752100966Siwasaki * 753100966Siwasaki * RETURN: None 754100966Siwasaki * 755100966Siwasaki * DESCRIPTION: Decode a Memory24 descriptor 756100966Siwasaki * 757100966Siwasaki ******************************************************************************/ 758100966Siwasaki 759100966Siwasakivoid 760100966SiwasakiAcpiDmMemory24Descriptor ( 761151937Sjkim AML_RESOURCE *Resource, 762100966Siwasaki UINT32 Length, 763100966Siwasaki UINT32 Level) 764100966Siwasaki{ 765100966Siwasaki 766151937Sjkim /* Dump name and read/write flag */ 767151937Sjkim 768100966Siwasaki AcpiDmIndent (Level); 769151937Sjkim AcpiOsPrintf ("Memory24 (%s,\n", 770167802Sjkim AcpiGbl_RwDecode [Resource->Memory24.Flags & 1]); 771151937Sjkim 772151937Sjkim /* Dump the 4 contiguous WORD values */ 773151937Sjkim 774151937Sjkim AcpiDmMemoryFields (&Resource->Memory24.Minimum, 16, Level); 775151937Sjkim 776167802Sjkim /* Insert a descriptor name */ 777167802Sjkim 778151937Sjkim AcpiDmIndent (Level + 1); 779167802Sjkim AcpiDmDescriptorName (); 780151937Sjkim AcpiOsPrintf (")\n"); 781100966Siwasaki} 782100966Siwasaki 783100966Siwasaki 784100966Siwasaki/******************************************************************************* 785100966Siwasaki * 786100966Siwasaki * FUNCTION: AcpiDmMemory32Descriptor 787100966Siwasaki * 788100966Siwasaki * PARAMETERS: Resource - Pointer to the resource descriptor 789100966Siwasaki * Length - Length of the descriptor in bytes 790100966Siwasaki * Level - Current source code indentation level 791100966Siwasaki * 792100966Siwasaki * RETURN: None 793100966Siwasaki * 794100966Siwasaki * DESCRIPTION: Decode a Memory32 descriptor 795100966Siwasaki * 796100966Siwasaki ******************************************************************************/ 797100966Siwasaki 798100966Siwasakivoid 799100966SiwasakiAcpiDmMemory32Descriptor ( 800151937Sjkim AML_RESOURCE *Resource, 801100966Siwasaki UINT32 Length, 802100966Siwasaki UINT32 Level) 803100966Siwasaki{ 804100966Siwasaki 805151937Sjkim /* Dump name and read/write flag */ 806151937Sjkim 807100966Siwasaki AcpiDmIndent (Level); 808151937Sjkim AcpiOsPrintf ("Memory32 (%s,\n", 809167802Sjkim AcpiGbl_RwDecode [Resource->Memory32.Flags & 1]); 810151937Sjkim 811151937Sjkim /* Dump the 4 contiguous DWORD values */ 812151937Sjkim 813151937Sjkim AcpiDmMemoryFields (&Resource->Memory32.Minimum, 32, Level); 814151937Sjkim 815167802Sjkim /* Insert a descriptor name */ 816167802Sjkim 817151937Sjkim AcpiDmIndent (Level + 1); 818167802Sjkim AcpiDmDescriptorName (); 819151937Sjkim AcpiOsPrintf (")\n"); 820100966Siwasaki} 821100966Siwasaki 822100966Siwasaki 823100966Siwasaki/******************************************************************************* 824100966Siwasaki * 825151937Sjkim * FUNCTION: AcpiDmFixedMemory32Descriptor 826100966Siwasaki * 827100966Siwasaki * PARAMETERS: Resource - Pointer to the resource descriptor 828100966Siwasaki * Length - Length of the descriptor in bytes 829100966Siwasaki * Level - Current source code indentation level 830100966Siwasaki * 831100966Siwasaki * RETURN: None 832100966Siwasaki * 833100966Siwasaki * DESCRIPTION: Decode a Fixed Memory32 descriptor 834100966Siwasaki * 835100966Siwasaki ******************************************************************************/ 836100966Siwasaki 837100966Siwasakivoid 838151937SjkimAcpiDmFixedMemory32Descriptor ( 839151937Sjkim AML_RESOURCE *Resource, 840100966Siwasaki UINT32 Length, 841100966Siwasaki UINT32 Level) 842100966Siwasaki{ 843100966Siwasaki 844151937Sjkim /* Dump name and read/write flag */ 845151937Sjkim 846100966Siwasaki AcpiDmIndent (Level); 847151937Sjkim AcpiOsPrintf ("Memory32Fixed (%s,\n", 848167802Sjkim AcpiGbl_RwDecode [Resource->FixedMemory32.Flags & 1]); 849151937Sjkim 850151937Sjkim AcpiDmIndent (Level + 1); 851151937Sjkim AcpiDmDumpInteger32 (Resource->FixedMemory32.Address, "Address Base"); 852151937Sjkim 853151937Sjkim AcpiDmIndent (Level + 1); 854151937Sjkim AcpiDmDumpInteger32 (Resource->FixedMemory32.AddressLength, "Address Length"); 855151937Sjkim 856167802Sjkim /* Insert a descriptor name */ 857167802Sjkim 858151937Sjkim AcpiDmIndent (Level + 1); 859167802Sjkim AcpiDmDescriptorName (); 860151937Sjkim AcpiOsPrintf (")\n"); 861100966Siwasaki} 862100966Siwasaki 863100966Siwasaki 864100966Siwasaki/******************************************************************************* 865100966Siwasaki * 866100966Siwasaki * FUNCTION: AcpiDmGenericRegisterDescriptor 867100966Siwasaki * 868100966Siwasaki * PARAMETERS: Resource - Pointer to the resource descriptor 869100966Siwasaki * Length - Length of the descriptor in bytes 870100966Siwasaki * Level - Current source code indentation level 871100966Siwasaki * 872100966Siwasaki * RETURN: None 873100966Siwasaki * 874100966Siwasaki * DESCRIPTION: Decode a Generic Register descriptor 875100966Siwasaki * 876100966Siwasaki ******************************************************************************/ 877100966Siwasaki 878100966Siwasakivoid 879100966SiwasakiAcpiDmGenericRegisterDescriptor ( 880151937Sjkim AML_RESOURCE *Resource, 881100966Siwasaki UINT32 Length, 882100966Siwasaki UINT32 Level) 883100966Siwasaki{ 884100966Siwasaki 885100966Siwasaki AcpiDmIndent (Level); 886100966Siwasaki AcpiOsPrintf ("Register ("); 887151937Sjkim AcpiDmAddressSpace (Resource->GenericReg.AddressSpaceId); 888151937Sjkim AcpiOsPrintf ("\n"); 889102550Siwasaki 890151937Sjkim AcpiDmIndent (Level + 1); 891167802Sjkim AcpiDmDumpInteger8 (Resource->GenericReg.BitWidth, "Bit Width"); 892102550Siwasaki 893151937Sjkim AcpiDmIndent (Level + 1); 894167802Sjkim AcpiDmDumpInteger8 (Resource->GenericReg.BitOffset, "Bit Offset"); 895151937Sjkim 896151937Sjkim AcpiDmIndent (Level + 1); 897167802Sjkim AcpiDmDumpInteger64 (Resource->GenericReg.Address, "Address"); 898151937Sjkim 899151937Sjkim /* Optional field for ACPI 3.0 */ 900151937Sjkim 901167802Sjkim AcpiDmIndent (Level + 1); 902151937Sjkim if (Resource->GenericReg.AccessSize) 903151937Sjkim { 904167802Sjkim AcpiOsPrintf ("0x%2.2X, // %s\n", 905167802Sjkim Resource->GenericReg.AccessSize, "Access Size"); 906151937Sjkim AcpiDmIndent (Level + 1); 907151937Sjkim } 908167802Sjkim else 909167802Sjkim { 910167802Sjkim AcpiOsPrintf (","); 911167802Sjkim } 912151937Sjkim 913167802Sjkim /* DescriptorName was added for ACPI 3.0+ */ 914167802Sjkim 915167802Sjkim AcpiDmDescriptorName (); 916151937Sjkim AcpiOsPrintf (")\n"); 917100966Siwasaki} 918100966Siwasaki 919100966Siwasaki 920100966Siwasaki/******************************************************************************* 921100966Siwasaki * 922100966Siwasaki * FUNCTION: AcpiDmInterruptDescriptor 923100966Siwasaki * 924100966Siwasaki * PARAMETERS: Resource - Pointer to the resource descriptor 925100966Siwasaki * Length - Length of the descriptor in bytes 926100966Siwasaki * Level - Current source code indentation level 927100966Siwasaki * 928100966Siwasaki * RETURN: None 929100966Siwasaki * 930100966Siwasaki * DESCRIPTION: Decode a extended Interrupt descriptor 931100966Siwasaki * 932100966Siwasaki ******************************************************************************/ 933100966Siwasaki 934100966Siwasakivoid 935100966SiwasakiAcpiDmInterruptDescriptor ( 936151937Sjkim AML_RESOURCE *Resource, 937100966Siwasaki UINT32 Length, 938100966Siwasaki UINT32 Level) 939100966Siwasaki{ 940100966Siwasaki UINT32 i; 941100966Siwasaki 942100966Siwasaki 943100966Siwasaki AcpiDmIndent (Level); 944151937Sjkim AcpiOsPrintf ("Interrupt (%s, %s, %s, %s, ", 945151937Sjkim AcpiGbl_ConsumeDecode [(Resource->ExtendedIrq.Flags & 1)], 946167802Sjkim AcpiGbl_HeDecode [(Resource->ExtendedIrq.Flags >> 1) & 1], 947167802Sjkim AcpiGbl_LlDecode [(Resource->ExtendedIrq.Flags >> 2) & 1], 948167802Sjkim AcpiGbl_ShrDecode [(Resource->ExtendedIrq.Flags >> 3) & 1]); 949100966Siwasaki 950151937Sjkim /* 951151937Sjkim * The ResourceSource fields are optional and appear after the interrupt 952151937Sjkim * list. Must compute length based on length of the list. First xrupt 953151937Sjkim * is included in the struct (reason for -1 below) 954151937Sjkim */ 955151937Sjkim AcpiDmResourceSource (Resource, 956151937Sjkim sizeof (AML_RESOURCE_EXTENDED_IRQ) + 957193267Sjkim ((UINT32) Resource->ExtendedIrq.InterruptCount - 1) * sizeof (UINT32), 958151937Sjkim Resource->ExtendedIrq.ResourceLength); 959100966Siwasaki 960167802Sjkim /* Insert a descriptor name */ 961167802Sjkim 962167802Sjkim AcpiDmDescriptorName (); 963167802Sjkim AcpiOsPrintf (")\n"); 964167802Sjkim 965151937Sjkim /* Dump the interrupt list */ 966114237Snjl 967100966Siwasaki AcpiDmIndent (Level); 968100966Siwasaki AcpiOsPrintf ("{\n"); 969151937Sjkim for (i = 0; i < Resource->ExtendedIrq.InterruptCount; i++) 970100966Siwasaki { 971100966Siwasaki AcpiDmIndent (Level + 1); 972151937Sjkim AcpiOsPrintf ("0x%8.8X,\n", 973151937Sjkim (UINT32) Resource->ExtendedIrq.Interrupts[i]); 974100966Siwasaki } 975100966Siwasaki 976100966Siwasaki AcpiDmIndent (Level); 977100966Siwasaki AcpiOsPrintf ("}\n"); 978100966Siwasaki} 979100966Siwasaki 980100966Siwasaki 981100966Siwasaki/******************************************************************************* 982100966Siwasaki * 983151937Sjkim * FUNCTION: AcpiDmVendorCommon 984100966Siwasaki * 985151937Sjkim * PARAMETERS: Name - Descriptor name suffix 986151937Sjkim * ByteData - Pointer to the vendor byte data 987151937Sjkim * Length - Length of the byte data 988100966Siwasaki * Level - Current source code indentation level 989100966Siwasaki * 990100966Siwasaki * RETURN: None 991100966Siwasaki * 992151937Sjkim * DESCRIPTION: Decode a Vendor descriptor, both Large and Small 993100966Siwasaki * 994100966Siwasaki ******************************************************************************/ 995100966Siwasaki 996100966Siwasakivoid 997151937SjkimAcpiDmVendorCommon ( 998151937Sjkim char *Name, 999151937Sjkim UINT8 *ByteData, 1000100966Siwasaki UINT32 Length, 1001100966Siwasaki UINT32 Level) 1002100966Siwasaki{ 1003100966Siwasaki 1004167802Sjkim /* Dump macro name */ 1005151937Sjkim 1006100966Siwasaki AcpiDmIndent (Level); 1007167802Sjkim AcpiOsPrintf ("Vendor%s (", Name); 1008151937Sjkim 1009167802Sjkim /* Insert a descriptor name */ 1010167802Sjkim 1011167802Sjkim AcpiDmDescriptorName (); 1012167802Sjkim AcpiOsPrintf (") // Length = 0x%.2X\n", Length); 1013167802Sjkim 1014151937Sjkim /* Dump the vendor bytes */ 1015151937Sjkim 1016100966Siwasaki AcpiDmIndent (Level); 1017100966Siwasaki AcpiOsPrintf ("{\n"); 1018100966Siwasaki 1019151937Sjkim AcpiDmDisasmByteList (Level + 1, ByteData, Length); 1020151937Sjkim 1021100966Siwasaki AcpiDmIndent (Level); 1022100966Siwasaki AcpiOsPrintf ("}\n"); 1023100966Siwasaki} 1024100966Siwasaki 1025100966Siwasaki 1026151937Sjkim/******************************************************************************* 1027151937Sjkim * 1028151937Sjkim * FUNCTION: AcpiDmVendorLargeDescriptor 1029151937Sjkim * 1030151937Sjkim * PARAMETERS: Resource - Pointer to the resource descriptor 1031151937Sjkim * Length - Length of the descriptor in bytes 1032151937Sjkim * Level - Current source code indentation level 1033151937Sjkim * 1034151937Sjkim * RETURN: None 1035151937Sjkim * 1036151937Sjkim * DESCRIPTION: Decode a Vendor Large descriptor 1037151937Sjkim * 1038151937Sjkim ******************************************************************************/ 1039151937Sjkim 1040151937Sjkimvoid 1041151937SjkimAcpiDmVendorLargeDescriptor ( 1042151937Sjkim AML_RESOURCE *Resource, 1043151937Sjkim UINT32 Length, 1044151937Sjkim UINT32 Level) 1045151937Sjkim{ 1046151937Sjkim 1047167802Sjkim AcpiDmVendorCommon ("Long ", 1048167802Sjkim ACPI_ADD_PTR (UINT8, Resource, sizeof (AML_RESOURCE_LARGE_HEADER)), 1049151937Sjkim Length, Level); 1050151937Sjkim} 1051151937Sjkim 1052100966Siwasaki#endif 1053100966Siwasaki 1054