1100966Siwasaki/******************************************************************************* 2100966Siwasaki * 3100966Siwasaki * Module Name: dmresrcl.c - "Large" Resource Descriptor disassembly 4100966Siwasaki * 5100966Siwasaki ******************************************************************************/ 6100966Siwasaki 7217365Sjkim/* 8306536Sjkim * Copyright (C) 2000 - 2016, 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 49102550Siwasaki#define _COMPONENT ACPI_CA_DEBUGGER 50100966Siwasaki ACPI_MODULE_NAME ("dbresrcl") 51100966Siwasaki 52100966Siwasaki 53151937Sjkim/* Common names for address and memory descriptors */ 54151937Sjkim 55306536Sjkimstatic const char *AcpiDmAddressNames[] = 56151937Sjkim{ 57167802Sjkim "Granularity", 58167802Sjkim "Range Minimum", 59167802Sjkim "Range Maximum", 60167802Sjkim "Translation Offset", 61167802Sjkim "Length" 62151937Sjkim}; 63151937Sjkim 64306536Sjkimstatic const char *AcpiDmMemoryNames[] = 65151937Sjkim{ 66167802Sjkim "Range Minimum", 67167802Sjkim "Range Maximum", 68167802Sjkim "Alignment", 69167802Sjkim "Length" 70151937Sjkim}; 71151937Sjkim 72151937Sjkim 73151937Sjkim/* Local prototypes */ 74151937Sjkim 75151937Sjkimstatic void 76151937SjkimAcpiDmSpaceFlags ( 77151937Sjkim UINT8 Flags); 78151937Sjkim 79151937Sjkimstatic void 80151937SjkimAcpiDmIoFlags ( 81151937Sjkim UINT8 Flags); 82151937Sjkim 83151937Sjkimstatic void 84151937SjkimAcpiDmIoFlags2 ( 85151937Sjkim UINT8 SpecificFlags); 86151937Sjkim 87151937Sjkimstatic void 88151937SjkimAcpiDmMemoryFlags ( 89151937Sjkim UINT8 Flags, 90151937Sjkim UINT8 SpecificFlags); 91151937Sjkim 92151937Sjkimstatic void 93151937SjkimAcpiDmMemoryFlags2 ( 94151937Sjkim UINT8 SpecificFlags); 95151937Sjkim 96151937Sjkimstatic void 97151937SjkimAcpiDmResourceSource ( 98151937Sjkim AML_RESOURCE *Resource, 99151937Sjkim ACPI_SIZE MinimumLength, 100151937Sjkim UINT32 Length); 101151937Sjkim 102151937Sjkimstatic void 103151937SjkimAcpiDmAddressFields ( 104151937Sjkim void *Source, 105151937Sjkim UINT8 Type, 106151937Sjkim UINT32 Level); 107151937Sjkim 108151937Sjkimstatic void 109151937SjkimAcpiDmAddressPrefix ( 110151937Sjkim UINT8 Type); 111151937Sjkim 112151937Sjkimstatic void 113151937SjkimAcpiDmAddressCommon ( 114151937Sjkim AML_RESOURCE *Resource, 115151937Sjkim UINT8 Type, 116151937Sjkim UINT32 Level); 117151937Sjkim 118151937Sjkimstatic void 119151937SjkimAcpiDmAddressFlags ( 120151937Sjkim AML_RESOURCE *Resource); 121151937Sjkim 122151937Sjkim 123100966Siwasaki/******************************************************************************* 124100966Siwasaki * 125151937Sjkim * FUNCTION: AcpiDmMemoryFields 126151937Sjkim * 127151937Sjkim * PARAMETERS: Source - Pointer to the contiguous data fields 128151937Sjkim * Type - 16 or 32 (bit) 129151937Sjkim * Level - Current source code indentation level 130151937Sjkim * 131151937Sjkim * RETURN: None 132151937Sjkim * 133151937Sjkim * DESCRIPTION: Decode fields common to Memory24 and Memory32 descriptors 134151937Sjkim * 135151937Sjkim ******************************************************************************/ 136151937Sjkim 137151937Sjkimstatic void 138151937SjkimAcpiDmMemoryFields ( 139151937Sjkim void *Source, 140151937Sjkim UINT8 Type, 141151937Sjkim UINT32 Level) 142151937Sjkim{ 143193267Sjkim UINT32 i; 144151937Sjkim 145151937Sjkim 146151937Sjkim for (i = 0; i < 4; i++) 147151937Sjkim { 148151937Sjkim AcpiDmIndent (Level + 1); 149151937Sjkim 150151937Sjkim switch (Type) 151151937Sjkim { 152151937Sjkim case 16: 153250838Sjkim 154167802Sjkim AcpiDmDumpInteger16 (ACPI_CAST_PTR (UINT16, Source)[i], 155167802Sjkim AcpiDmMemoryNames[i]); 156151937Sjkim break; 157151937Sjkim 158151937Sjkim case 32: 159250838Sjkim 160167802Sjkim AcpiDmDumpInteger32 (ACPI_CAST_PTR (UINT32, Source)[i], 161167802Sjkim AcpiDmMemoryNames[i]); 162151937Sjkim break; 163151937Sjkim 164151937Sjkim default: 165250838Sjkim 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: 204250838Sjkim 205167802Sjkim AcpiDmDumpInteger16 (ACPI_CAST_PTR (UINT16, Source)[i], 206167802Sjkim AcpiDmAddressNames[i]); 207151937Sjkim break; 208151937Sjkim 209151937Sjkim case 32: 210250838Sjkim 211167802Sjkim AcpiDmDumpInteger32 (ACPI_CAST_PTR (UINT32, Source)[i], 212167802Sjkim AcpiDmAddressNames[i]); 213151937Sjkim break; 214151937Sjkim 215151937Sjkim case 64: 216250838Sjkim 217167802Sjkim AcpiDmDumpInteger64 (ACPI_CAST_PTR (UINT64, Source)[i], 218167802Sjkim AcpiDmAddressNames[i]); 219151937Sjkim break; 220151937Sjkim 221151937Sjkim default: 222250838Sjkim 223151937Sjkim return; 224151937Sjkim } 225151937Sjkim } 226151937Sjkim} 227151937Sjkim 228151937Sjkim 229151937Sjkim/******************************************************************************* 230151937Sjkim * 231151937Sjkim * FUNCTION: AcpiDmAddressPrefix 232151937Sjkim * 233151937Sjkim * PARAMETERS: Type - Descriptor type 234151937Sjkim * 235151937Sjkim * RETURN: None 236151937Sjkim * 237151937Sjkim * DESCRIPTION: Emit name prefix representing the address descriptor type 238151937Sjkim * 239151937Sjkim ******************************************************************************/ 240151937Sjkim 241151937Sjkimstatic void 242151937SjkimAcpiDmAddressPrefix ( 243151937Sjkim UINT8 Type) 244151937Sjkim{ 245151937Sjkim 246151937Sjkim switch (Type) 247151937Sjkim { 248151937Sjkim case ACPI_RESOURCE_TYPE_ADDRESS16: 249250838Sjkim 250151937Sjkim AcpiOsPrintf ("Word"); 251151937Sjkim break; 252151937Sjkim 253151937Sjkim case ACPI_RESOURCE_TYPE_ADDRESS32: 254250838Sjkim 255151937Sjkim AcpiOsPrintf ("DWord"); 256151937Sjkim break; 257151937Sjkim 258151937Sjkim case ACPI_RESOURCE_TYPE_ADDRESS64: 259250838Sjkim 260151937Sjkim AcpiOsPrintf ("QWord"); 261151937Sjkim break; 262151937Sjkim 263151937Sjkim case ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64: 264250838Sjkim 265151937Sjkim AcpiOsPrintf ("Extended"); 266151937Sjkim break; 267151937Sjkim 268151937Sjkim default: 269250838Sjkim 270151937Sjkim return; 271151937Sjkim } 272151937Sjkim} 273151937Sjkim 274151937Sjkim 275151937Sjkim/******************************************************************************* 276151937Sjkim * 277151937Sjkim * FUNCTION: AcpiDmAddressCommon 278151937Sjkim * 279151937Sjkim * PARAMETERS: Resource - Raw AML descriptor 280151937Sjkim * Type - Descriptor type 281151937Sjkim * Level - Current source code indentation level 282151937Sjkim * 283151937Sjkim * RETURN: None 284151937Sjkim * 285151937Sjkim * DESCRIPTION: Emit common name and flag fields common to address descriptors 286151937Sjkim * 287151937Sjkim ******************************************************************************/ 288151937Sjkim 289151937Sjkimstatic void 290151937SjkimAcpiDmAddressCommon ( 291151937Sjkim AML_RESOURCE *Resource, 292151937Sjkim UINT8 Type, 293151937Sjkim UINT32 Level) 294151937Sjkim{ 295151937Sjkim UINT8 ResourceType; 296151937Sjkim UINT8 SpecificFlags; 297151937Sjkim UINT8 Flags; 298151937Sjkim 299151937Sjkim 300151937Sjkim ResourceType = Resource->Address.ResourceType; 301151937Sjkim SpecificFlags = Resource->Address.SpecificFlags; 302151937Sjkim Flags = Resource->Address.Flags; 303151937Sjkim 304151937Sjkim AcpiDmIndent (Level); 305151937Sjkim 306151937Sjkim /* Validate ResourceType */ 307151937Sjkim 308151937Sjkim if ((ResourceType > 2) && (ResourceType < 0xC0)) 309151937Sjkim { 310306536Sjkim AcpiOsPrintf ( 311306536Sjkim "/**** Invalid Resource Type: 0x%X ****/", ResourceType); 312151937Sjkim return; 313151937Sjkim } 314151937Sjkim 315151937Sjkim /* Prefix is either Word, DWord, QWord, or Extended */ 316151937Sjkim 317151937Sjkim AcpiDmAddressPrefix (Type); 318151937Sjkim 319151937Sjkim /* Resource Types above 0xC0 are vendor-defined */ 320151937Sjkim 321151937Sjkim if (ResourceType > 2) 322151937Sjkim { 323151937Sjkim AcpiOsPrintf ("Space (0x%2.2X, ", ResourceType); 324151937Sjkim AcpiDmSpaceFlags (Flags); 325151937Sjkim AcpiOsPrintf (" 0x%2.2X,", SpecificFlags); 326151937Sjkim return; 327151937Sjkim } 328151937Sjkim 329151937Sjkim /* This is either a Memory, IO, or BusNumber descriptor (0,1,2) */ 330151937Sjkim 331306536Sjkim AcpiOsPrintf ("%s (", 332306536Sjkim 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 { 345306536Sjkim AcpiOsPrintf (" %s,", 346306536Sjkim 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 * 579281075Sdim * PARAMETERS: Info - Extra resource info 580281075Sdim * Resource - Pointer to the resource descriptor 581100966Siwasaki * Length - Length of the descriptor in bytes 582100966Siwasaki * Level - Current source code indentation level 583100966Siwasaki * 584100966Siwasaki * RETURN: None 585100966Siwasaki * 586100966Siwasaki * DESCRIPTION: Decode a Word Address Space descriptor 587100966Siwasaki * 588100966Siwasaki ******************************************************************************/ 589100966Siwasaki 590100966Siwasakivoid 591100966SiwasakiAcpiDmWordDescriptor ( 592281075Sdim ACPI_OP_WALK_INFO *Info, 593151937Sjkim AML_RESOURCE *Resource, 594100966Siwasaki UINT32 Length, 595100966Siwasaki UINT32 Level) 596100966Siwasaki{ 597100966Siwasaki 598151937Sjkim /* Dump resource name and flags */ 599100966Siwasaki 600151937Sjkim AcpiDmAddressCommon (Resource, ACPI_RESOURCE_TYPE_ADDRESS16, Level); 601100966Siwasaki 602151937Sjkim /* Dump the 5 contiguous WORD values */ 603100966Siwasaki 604151937Sjkim AcpiDmAddressFields (&Resource->Address16.Granularity, 16, Level); 605100966Siwasaki 606151937Sjkim /* The ResourceSource fields are optional */ 607151937Sjkim 608100966Siwasaki AcpiDmIndent (Level + 1); 609151937Sjkim AcpiDmResourceSource (Resource, sizeof (AML_RESOURCE_ADDRESS16), Length); 610100966Siwasaki 611167802Sjkim /* Insert a descriptor name */ 612167802Sjkim 613167802Sjkim AcpiDmDescriptorName (); 614167802Sjkim 615151937Sjkim /* Type-specific flags */ 616100966Siwasaki 617151937Sjkim AcpiDmAddressFlags (Resource); 618100966Siwasaki AcpiOsPrintf (")\n"); 619100966Siwasaki} 620100966Siwasaki 621100966Siwasaki 622100966Siwasaki/******************************************************************************* 623100966Siwasaki * 624100966Siwasaki * FUNCTION: AcpiDmDwordDescriptor 625100966Siwasaki * 626281075Sdim * PARAMETERS: Info - Extra resource info 627281075Sdim * Resource - Pointer to the resource descriptor 628100966Siwasaki * Length - Length of the descriptor in bytes 629100966Siwasaki * Level - Current source code indentation level 630100966Siwasaki * 631100966Siwasaki * RETURN: None 632100966Siwasaki * 633100966Siwasaki * DESCRIPTION: Decode a DWord Address Space descriptor 634100966Siwasaki * 635100966Siwasaki ******************************************************************************/ 636100966Siwasaki 637100966Siwasakivoid 638100966SiwasakiAcpiDmDwordDescriptor ( 639281075Sdim ACPI_OP_WALK_INFO *Info, 640151937Sjkim AML_RESOURCE *Resource, 641100966Siwasaki UINT32 Length, 642100966Siwasaki UINT32 Level) 643100966Siwasaki{ 644100966Siwasaki 645151937Sjkim /* Dump resource name and flags */ 646100966Siwasaki 647151937Sjkim AcpiDmAddressCommon (Resource, ACPI_RESOURCE_TYPE_ADDRESS32, Level); 648100966Siwasaki 649151937Sjkim /* Dump the 5 contiguous DWORD values */ 650100966Siwasaki 651151937Sjkim AcpiDmAddressFields (&Resource->Address32.Granularity, 32, Level); 652151937Sjkim 653151937Sjkim /* The ResourceSource fields are optional */ 654151937Sjkim 655100966Siwasaki AcpiDmIndent (Level + 1); 656151937Sjkim AcpiDmResourceSource (Resource, sizeof (AML_RESOURCE_ADDRESS32), Length); 657100966Siwasaki 658167802Sjkim /* Insert a descriptor name */ 659167802Sjkim 660167802Sjkim AcpiDmDescriptorName (); 661167802Sjkim 662151937Sjkim /* Type-specific flags */ 663100966Siwasaki 664151937Sjkim AcpiDmAddressFlags (Resource); 665100966Siwasaki AcpiOsPrintf (")\n"); 666100966Siwasaki} 667100966Siwasaki 668100966Siwasaki 669100966Siwasaki/******************************************************************************* 670100966Siwasaki * 671100966Siwasaki * FUNCTION: AcpiDmQwordDescriptor 672100966Siwasaki * 673281075Sdim * PARAMETERS: Info - Extra resource info 674281075Sdim * Resource - Pointer to the resource descriptor 675100966Siwasaki * Length - Length of the descriptor in bytes 676100966Siwasaki * Level - Current source code indentation level 677100966Siwasaki * 678100966Siwasaki * RETURN: None 679100966Siwasaki * 680100966Siwasaki * DESCRIPTION: Decode a QWord Address Space descriptor 681100966Siwasaki * 682100966Siwasaki ******************************************************************************/ 683100966Siwasaki 684100966Siwasakivoid 685100966SiwasakiAcpiDmQwordDescriptor ( 686281075Sdim ACPI_OP_WALK_INFO *Info, 687151937Sjkim AML_RESOURCE *Resource, 688100966Siwasaki UINT32 Length, 689100966Siwasaki UINT32 Level) 690100966Siwasaki{ 691100966Siwasaki 692151937Sjkim /* Dump resource name and flags */ 693100966Siwasaki 694151937Sjkim AcpiDmAddressCommon (Resource, ACPI_RESOURCE_TYPE_ADDRESS64, Level); 695100966Siwasaki 696151937Sjkim /* Dump the 5 contiguous QWORD values */ 697100966Siwasaki 698151937Sjkim AcpiDmAddressFields (&Resource->Address64.Granularity, 64, Level); 699100966Siwasaki 700151937Sjkim /* The ResourceSource fields are optional */ 701100966Siwasaki 702100966Siwasaki AcpiDmIndent (Level + 1); 703151937Sjkim AcpiDmResourceSource (Resource, sizeof (AML_RESOURCE_ADDRESS64), Length); 704100966Siwasaki 705167802Sjkim /* Insert a descriptor name */ 706167802Sjkim 707167802Sjkim AcpiDmDescriptorName (); 708167802Sjkim 709151937Sjkim /* Type-specific flags */ 710100966Siwasaki 711151937Sjkim AcpiDmAddressFlags (Resource); 712151937Sjkim AcpiOsPrintf (")\n"); 713151937Sjkim} 714151937Sjkim 715151937Sjkim 716151937Sjkim/******************************************************************************* 717151937Sjkim * 718151937Sjkim * FUNCTION: AcpiDmExtendedDescriptor 719151937Sjkim * 720281075Sdim * PARAMETERS: Info - Extra resource info 721281075Sdim * Resource - Pointer to the resource descriptor 722151937Sjkim * Length - Length of the descriptor in bytes 723151937Sjkim * Level - Current source code indentation level 724151937Sjkim * 725151937Sjkim * RETURN: None 726151937Sjkim * 727151937Sjkim * DESCRIPTION: Decode a Extended Address Space descriptor 728151937Sjkim * 729151937Sjkim ******************************************************************************/ 730151937Sjkim 731151937Sjkimvoid 732151937SjkimAcpiDmExtendedDescriptor ( 733281075Sdim ACPI_OP_WALK_INFO *Info, 734151937Sjkim AML_RESOURCE *Resource, 735151937Sjkim UINT32 Length, 736151937Sjkim UINT32 Level) 737151937Sjkim{ 738151937Sjkim 739151937Sjkim /* Dump resource name and flags */ 740151937Sjkim 741306536Sjkim AcpiDmAddressCommon ( 742306536Sjkim Resource, ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64, Level); 743151937Sjkim 744151937Sjkim /* Dump the 5 contiguous QWORD values */ 745151937Sjkim 746151937Sjkim AcpiDmAddressFields (&Resource->ExtAddress64.Granularity, 64, Level); 747151937Sjkim 748151937Sjkim /* Extra field for this descriptor only */ 749151937Sjkim 750100966Siwasaki AcpiDmIndent (Level + 1); 751151937Sjkim AcpiDmDumpInteger64 (Resource->ExtAddress64.TypeSpecific, 752151937Sjkim "Type-Specific Attributes"); 753100966Siwasaki 754167802Sjkim /* Insert a descriptor name */ 755167802Sjkim 756167802Sjkim AcpiDmIndent (Level + 1); 757167802Sjkim AcpiDmDescriptorName (); 758167802Sjkim 759151937Sjkim /* Type-specific flags */ 760100966Siwasaki 761151937Sjkim AcpiDmAddressFlags (Resource); 762100966Siwasaki AcpiOsPrintf (")\n"); 763100966Siwasaki} 764100966Siwasaki 765100966Siwasaki 766100966Siwasaki/******************************************************************************* 767100966Siwasaki * 768100966Siwasaki * FUNCTION: AcpiDmMemory24Descriptor 769100966Siwasaki * 770281075Sdim * PARAMETERS: Info - Extra resource info 771281075Sdim * Resource - Pointer to the resource descriptor 772100966Siwasaki * Length - Length of the descriptor in bytes 773100966Siwasaki * Level - Current source code indentation level 774100966Siwasaki * 775100966Siwasaki * RETURN: None 776100966Siwasaki * 777100966Siwasaki * DESCRIPTION: Decode a Memory24 descriptor 778100966Siwasaki * 779100966Siwasaki ******************************************************************************/ 780100966Siwasaki 781100966Siwasakivoid 782100966SiwasakiAcpiDmMemory24Descriptor ( 783281075Sdim ACPI_OP_WALK_INFO *Info, 784151937Sjkim AML_RESOURCE *Resource, 785100966Siwasaki UINT32 Length, 786100966Siwasaki UINT32 Level) 787100966Siwasaki{ 788100966Siwasaki 789151937Sjkim /* Dump name and read/write flag */ 790151937Sjkim 791100966Siwasaki AcpiDmIndent (Level); 792151937Sjkim AcpiOsPrintf ("Memory24 (%s,\n", 793243347Sjkim AcpiGbl_RwDecode [ACPI_GET_1BIT_FLAG (Resource->Memory24.Flags)]); 794151937Sjkim 795151937Sjkim /* Dump the 4 contiguous WORD values */ 796151937Sjkim 797151937Sjkim AcpiDmMemoryFields (&Resource->Memory24.Minimum, 16, Level); 798151937Sjkim 799167802Sjkim /* Insert a descriptor name */ 800167802Sjkim 801151937Sjkim AcpiDmIndent (Level + 1); 802167802Sjkim AcpiDmDescriptorName (); 803151937Sjkim AcpiOsPrintf (")\n"); 804100966Siwasaki} 805100966Siwasaki 806100966Siwasaki 807100966Siwasaki/******************************************************************************* 808100966Siwasaki * 809100966Siwasaki * FUNCTION: AcpiDmMemory32Descriptor 810100966Siwasaki * 811281075Sdim * PARAMETERS: Info - Extra resource info 812281075Sdim * Resource - Pointer to the resource descriptor 813100966Siwasaki * Length - Length of the descriptor in bytes 814100966Siwasaki * Level - Current source code indentation level 815100966Siwasaki * 816100966Siwasaki * RETURN: None 817100966Siwasaki * 818100966Siwasaki * DESCRIPTION: Decode a Memory32 descriptor 819100966Siwasaki * 820100966Siwasaki ******************************************************************************/ 821100966Siwasaki 822100966Siwasakivoid 823100966SiwasakiAcpiDmMemory32Descriptor ( 824281075Sdim ACPI_OP_WALK_INFO *Info, 825151937Sjkim AML_RESOURCE *Resource, 826100966Siwasaki UINT32 Length, 827100966Siwasaki UINT32 Level) 828100966Siwasaki{ 829100966Siwasaki 830151937Sjkim /* Dump name and read/write flag */ 831151937Sjkim 832100966Siwasaki AcpiDmIndent (Level); 833151937Sjkim AcpiOsPrintf ("Memory32 (%s,\n", 834243347Sjkim AcpiGbl_RwDecode [ACPI_GET_1BIT_FLAG (Resource->Memory32.Flags)]); 835151937Sjkim 836151937Sjkim /* Dump the 4 contiguous DWORD values */ 837151937Sjkim 838151937Sjkim AcpiDmMemoryFields (&Resource->Memory32.Minimum, 32, Level); 839151937Sjkim 840167802Sjkim /* Insert a descriptor name */ 841167802Sjkim 842151937Sjkim AcpiDmIndent (Level + 1); 843167802Sjkim AcpiDmDescriptorName (); 844151937Sjkim AcpiOsPrintf (")\n"); 845100966Siwasaki} 846100966Siwasaki 847100966Siwasaki 848100966Siwasaki/******************************************************************************* 849100966Siwasaki * 850151937Sjkim * FUNCTION: AcpiDmFixedMemory32Descriptor 851100966Siwasaki * 852281075Sdim * PARAMETERS: Info - Extra resource info 853281075Sdim * Resource - Pointer to the resource descriptor 854100966Siwasaki * Length - Length of the descriptor in bytes 855100966Siwasaki * Level - Current source code indentation level 856100966Siwasaki * 857100966Siwasaki * RETURN: None 858100966Siwasaki * 859100966Siwasaki * DESCRIPTION: Decode a Fixed Memory32 descriptor 860100966Siwasaki * 861100966Siwasaki ******************************************************************************/ 862100966Siwasaki 863100966Siwasakivoid 864151937SjkimAcpiDmFixedMemory32Descriptor ( 865281075Sdim ACPI_OP_WALK_INFO *Info, 866151937Sjkim AML_RESOURCE *Resource, 867100966Siwasaki UINT32 Length, 868100966Siwasaki UINT32 Level) 869100966Siwasaki{ 870100966Siwasaki 871151937Sjkim /* Dump name and read/write flag */ 872151937Sjkim 873100966Siwasaki AcpiDmIndent (Level); 874151937Sjkim AcpiOsPrintf ("Memory32Fixed (%s,\n", 875243347Sjkim AcpiGbl_RwDecode [ACPI_GET_1BIT_FLAG (Resource->FixedMemory32.Flags)]); 876151937Sjkim 877151937Sjkim AcpiDmIndent (Level + 1); 878306536Sjkim AcpiDmDumpInteger32 (Resource->FixedMemory32.Address, 879306536Sjkim "Address Base"); 880151937Sjkim 881151937Sjkim AcpiDmIndent (Level + 1); 882306536Sjkim AcpiDmDumpInteger32 (Resource->FixedMemory32.AddressLength, 883306536Sjkim "Address Length"); 884151937Sjkim 885167802Sjkim /* Insert a descriptor name */ 886167802Sjkim 887151937Sjkim AcpiDmIndent (Level + 1); 888167802Sjkim AcpiDmDescriptorName (); 889151937Sjkim AcpiOsPrintf (")\n"); 890100966Siwasaki} 891100966Siwasaki 892100966Siwasaki 893100966Siwasaki/******************************************************************************* 894100966Siwasaki * 895100966Siwasaki * FUNCTION: AcpiDmGenericRegisterDescriptor 896100966Siwasaki * 897281075Sdim * PARAMETERS: Info - Extra resource info 898281075Sdim * Resource - Pointer to the resource descriptor 899100966Siwasaki * Length - Length of the descriptor in bytes 900100966Siwasaki * Level - Current source code indentation level 901100966Siwasaki * 902100966Siwasaki * RETURN: None 903100966Siwasaki * 904100966Siwasaki * DESCRIPTION: Decode a Generic Register descriptor 905100966Siwasaki * 906100966Siwasaki ******************************************************************************/ 907100966Siwasaki 908100966Siwasakivoid 909100966SiwasakiAcpiDmGenericRegisterDescriptor ( 910281075Sdim ACPI_OP_WALK_INFO *Info, 911151937Sjkim AML_RESOURCE *Resource, 912100966Siwasaki UINT32 Length, 913100966Siwasaki UINT32 Level) 914100966Siwasaki{ 915100966Siwasaki 916100966Siwasaki AcpiDmIndent (Level); 917100966Siwasaki AcpiOsPrintf ("Register ("); 918151937Sjkim AcpiDmAddressSpace (Resource->GenericReg.AddressSpaceId); 919151937Sjkim AcpiOsPrintf ("\n"); 920102550Siwasaki 921151937Sjkim AcpiDmIndent (Level + 1); 922167802Sjkim AcpiDmDumpInteger8 (Resource->GenericReg.BitWidth, "Bit Width"); 923102550Siwasaki 924151937Sjkim AcpiDmIndent (Level + 1); 925167802Sjkim AcpiDmDumpInteger8 (Resource->GenericReg.BitOffset, "Bit Offset"); 926151937Sjkim 927151937Sjkim AcpiDmIndent (Level + 1); 928167802Sjkim AcpiDmDumpInteger64 (Resource->GenericReg.Address, "Address"); 929151937Sjkim 930151937Sjkim /* Optional field for ACPI 3.0 */ 931151937Sjkim 932167802Sjkim AcpiDmIndent (Level + 1); 933151937Sjkim if (Resource->GenericReg.AccessSize) 934151937Sjkim { 935167802Sjkim AcpiOsPrintf ("0x%2.2X, // %s\n", 936167802Sjkim Resource->GenericReg.AccessSize, "Access Size"); 937151937Sjkim AcpiDmIndent (Level + 1); 938151937Sjkim } 939167802Sjkim else 940167802Sjkim { 941167802Sjkim AcpiOsPrintf (","); 942167802Sjkim } 943151937Sjkim 944167802Sjkim /* DescriptorName was added for ACPI 3.0+ */ 945167802Sjkim 946167802Sjkim AcpiDmDescriptorName (); 947151937Sjkim AcpiOsPrintf (")\n"); 948100966Siwasaki} 949100966Siwasaki 950100966Siwasaki 951100966Siwasaki/******************************************************************************* 952100966Siwasaki * 953100966Siwasaki * FUNCTION: AcpiDmInterruptDescriptor 954100966Siwasaki * 955281075Sdim * PARAMETERS: Info - Extra resource info 956281075Sdim * Resource - Pointer to the resource descriptor 957100966Siwasaki * Length - Length of the descriptor in bytes 958100966Siwasaki * Level - Current source code indentation level 959100966Siwasaki * 960100966Siwasaki * RETURN: None 961100966Siwasaki * 962100966Siwasaki * DESCRIPTION: Decode a extended Interrupt descriptor 963100966Siwasaki * 964100966Siwasaki ******************************************************************************/ 965100966Siwasaki 966100966Siwasakivoid 967100966SiwasakiAcpiDmInterruptDescriptor ( 968281075Sdim ACPI_OP_WALK_INFO *Info, 969151937Sjkim AML_RESOURCE *Resource, 970100966Siwasaki UINT32 Length, 971100966Siwasaki UINT32 Level) 972100966Siwasaki{ 973100966Siwasaki UINT32 i; 974100966Siwasaki 975100966Siwasaki 976100966Siwasaki AcpiDmIndent (Level); 977151937Sjkim AcpiOsPrintf ("Interrupt (%s, %s, %s, %s, ", 978243347Sjkim AcpiGbl_ConsumeDecode [ACPI_GET_1BIT_FLAG (Resource->ExtendedIrq.Flags)], 979243347Sjkim AcpiGbl_HeDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->ExtendedIrq.Flags, 1)], 980243347Sjkim AcpiGbl_LlDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->ExtendedIrq.Flags, 2)], 981243347Sjkim AcpiGbl_ShrDecode [ACPI_EXTRACT_2BIT_FLAG (Resource->ExtendedIrq.Flags, 3)]); 982100966Siwasaki 983151937Sjkim /* 984151937Sjkim * The ResourceSource fields are optional and appear after the interrupt 985151937Sjkim * list. Must compute length based on length of the list. First xrupt 986151937Sjkim * is included in the struct (reason for -1 below) 987151937Sjkim */ 988151937Sjkim AcpiDmResourceSource (Resource, 989151937Sjkim sizeof (AML_RESOURCE_EXTENDED_IRQ) + 990193267Sjkim ((UINT32) Resource->ExtendedIrq.InterruptCount - 1) * sizeof (UINT32), 991151937Sjkim Resource->ExtendedIrq.ResourceLength); 992100966Siwasaki 993167802Sjkim /* Insert a descriptor name */ 994167802Sjkim 995167802Sjkim AcpiDmDescriptorName (); 996167802Sjkim AcpiOsPrintf (")\n"); 997167802Sjkim 998151937Sjkim /* Dump the interrupt list */ 999114237Snjl 1000100966Siwasaki AcpiDmIndent (Level); 1001100966Siwasaki AcpiOsPrintf ("{\n"); 1002151937Sjkim for (i = 0; i < Resource->ExtendedIrq.InterruptCount; i++) 1003100966Siwasaki { 1004100966Siwasaki AcpiDmIndent (Level + 1); 1005151937Sjkim AcpiOsPrintf ("0x%8.8X,\n", 1006151937Sjkim (UINT32) Resource->ExtendedIrq.Interrupts[i]); 1007100966Siwasaki } 1008100966Siwasaki 1009100966Siwasaki AcpiDmIndent (Level); 1010100966Siwasaki AcpiOsPrintf ("}\n"); 1011100966Siwasaki} 1012100966Siwasaki 1013100966Siwasaki 1014100966Siwasaki/******************************************************************************* 1015100966Siwasaki * 1016151937Sjkim * FUNCTION: AcpiDmVendorCommon 1017100966Siwasaki * 1018151937Sjkim * PARAMETERS: Name - Descriptor name suffix 1019151937Sjkim * ByteData - Pointer to the vendor byte data 1020151937Sjkim * Length - Length of the byte data 1021100966Siwasaki * Level - Current source code indentation level 1022100966Siwasaki * 1023100966Siwasaki * RETURN: None 1024100966Siwasaki * 1025151937Sjkim * DESCRIPTION: Decode a Vendor descriptor, both Large and Small 1026100966Siwasaki * 1027100966Siwasaki ******************************************************************************/ 1028100966Siwasaki 1029100966Siwasakivoid 1030151937SjkimAcpiDmVendorCommon ( 1031306536Sjkim const char *Name, 1032151937Sjkim UINT8 *ByteData, 1033100966Siwasaki UINT32 Length, 1034100966Siwasaki UINT32 Level) 1035100966Siwasaki{ 1036100966Siwasaki 1037167802Sjkim /* Dump macro name */ 1038151937Sjkim 1039100966Siwasaki AcpiDmIndent (Level); 1040167802Sjkim AcpiOsPrintf ("Vendor%s (", Name); 1041151937Sjkim 1042167802Sjkim /* Insert a descriptor name */ 1043167802Sjkim 1044167802Sjkim AcpiDmDescriptorName (); 1045167802Sjkim AcpiOsPrintf (") // Length = 0x%.2X\n", Length); 1046167802Sjkim 1047151937Sjkim /* Dump the vendor bytes */ 1048151937Sjkim 1049100966Siwasaki AcpiDmIndent (Level); 1050100966Siwasaki AcpiOsPrintf ("{\n"); 1051100966Siwasaki 1052151937Sjkim AcpiDmDisasmByteList (Level + 1, ByteData, Length); 1053151937Sjkim 1054100966Siwasaki AcpiDmIndent (Level); 1055100966Siwasaki AcpiOsPrintf ("}\n"); 1056100966Siwasaki} 1057100966Siwasaki 1058100966Siwasaki 1059151937Sjkim/******************************************************************************* 1060151937Sjkim * 1061151937Sjkim * FUNCTION: AcpiDmVendorLargeDescriptor 1062151937Sjkim * 1063281075Sdim * PARAMETERS: Info - Extra resource info 1064281075Sdim * Resource - Pointer to the resource descriptor 1065151937Sjkim * Length - Length of the descriptor in bytes 1066151937Sjkim * Level - Current source code indentation level 1067151937Sjkim * 1068151937Sjkim * RETURN: None 1069151937Sjkim * 1070151937Sjkim * DESCRIPTION: Decode a Vendor Large descriptor 1071151937Sjkim * 1072151937Sjkim ******************************************************************************/ 1073151937Sjkim 1074151937Sjkimvoid 1075151937SjkimAcpiDmVendorLargeDescriptor ( 1076281075Sdim ACPI_OP_WALK_INFO *Info, 1077151937Sjkim AML_RESOURCE *Resource, 1078151937Sjkim UINT32 Length, 1079151937Sjkim UINT32 Level) 1080151937Sjkim{ 1081151937Sjkim 1082167802Sjkim AcpiDmVendorCommon ("Long ", 1083167802Sjkim ACPI_ADD_PTR (UINT8, Resource, sizeof (AML_RESOURCE_LARGE_HEADER)), 1084151937Sjkim Length, Level); 1085151937Sjkim} 1086