dmresrcl.c revision 252279
1227569Sphilip/******************************************************************************* 2283514Sarybchik * 3283514Sarybchik * Module Name: dmresrcl.c - "Large" Resource Descriptor disassembly 4227569Sphilip * 5227569Sphilip ******************************************************************************/ 6283514Sarybchik 7227569Sphilip/* 8283514Sarybchik * Copyright (C) 2000 - 2013, Intel Corp. 9283514Sarybchik * All rights reserved. 10283514Sarybchik * 11283514Sarybchik * Redistribution and use in source and binary forms, with or without 12283514Sarybchik * modification, are permitted provided that the following conditions 13283514Sarybchik * are met: 14283514Sarybchik * 1. Redistributions of source code must retain the above copyright 15283514Sarybchik * notice, this list of conditions, and the following disclaimer, 16283514Sarybchik * without modification. 17283514Sarybchik * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18283514Sarybchik * substantially similar to the "NO WARRANTY" disclaimer below 19283514Sarybchik * ("Disclaimer") and any redistribution must be conditioned upon 20283514Sarybchik * including a substantially similar Disclaimer requirement for further 21283514Sarybchik * binary redistribution. 22283514Sarybchik * 3. Neither the names of the above-listed copyright holders nor the names 23283514Sarybchik * of any contributors may be used to endorse or promote products derived 24283514Sarybchik * from this software without specific prior written permission. 25283514Sarybchik * 26283514Sarybchik * Alternatively, this software may be distributed under the terms of the 27283514Sarybchik * GNU General Public License ("GPL") version 2 as published by the Free 28283514Sarybchik * Software Foundation. 29227569Sphilip * 30227569Sphilip * NO WARRANTY 31228078Sphilip * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32228078Sphilip * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33228078Sphilip * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34227569Sphilip * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35227569Sphilip * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36227569Sphilip * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37283514Sarybchik * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38299320Sarybchik * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39283514Sarybchik * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40291436Sarybchik * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41283514Sarybchik * POSSIBILITY OF SUCH DAMAGES. 42283514Sarybchik */ 43283514Sarybchik 44283514Sarybchik 45283514Sarybchik#include <contrib/dev/acpica/include/acpi.h> 46283514Sarybchik#include <contrib/dev/acpica/include/accommon.h> 47283514Sarybchik#include <contrib/dev/acpica/include/acdisasm.h> 48283514Sarybchik 49291436Sarybchik 50283514Sarybchik#ifdef ACPI_DISASSEMBLER 51283514Sarybchik 52283514Sarybchik#define _COMPONENT ACPI_CA_DEBUGGER 53283514Sarybchik ACPI_MODULE_NAME ("dbresrcl") 54283514Sarybchik 55283514Sarybchik 56291436Sarybchik/* Common names for address and memory descriptors */ 57283514Sarybchik 58283514Sarybchikstatic char *AcpiDmAddressNames[] = 59283514Sarybchik{ 60283514Sarybchik "Granularity", 61283514Sarybchik "Range Minimum", 62283514Sarybchik "Range Maximum", 63291436Sarybchik "Translation Offset", 64283514Sarybchik "Length" 65283514Sarybchik}; 66283514Sarybchik 67283514Sarybchikstatic char *AcpiDmMemoryNames[] = 68283514Sarybchik{ 69291436Sarybchik "Range Minimum", 70283514Sarybchik "Range Maximum", 71283514Sarybchik "Alignment", 72283514Sarybchik "Length" 73283514Sarybchik}; 74283514Sarybchik 75293807Sarybchik 76293807Sarybchik/* Local prototypes */ 77293807Sarybchik 78293807Sarybchikstatic void 79293807SarybchikAcpiDmSpaceFlags ( 80293807Sarybchik UINT8 Flags); 81293890Sarybchik 82293890Sarybchikstatic void 83293807SarybchikAcpiDmIoFlags ( 84293807Sarybchik UINT8 Flags); 85293807Sarybchik 86293807Sarybchikstatic void 87293807SarybchikAcpiDmIoFlags2 ( 88293807Sarybchik UINT8 SpecificFlags); 89283514Sarybchik 90283514Sarybchikstatic void 91283514SarybchikAcpiDmMemoryFlags ( 92283514Sarybchik UINT8 Flags, 93283514Sarybchik UINT8 SpecificFlags); 94283514Sarybchik 95283514Sarybchikstatic void 96283514SarybchikAcpiDmMemoryFlags2 ( 97283514Sarybchik UINT8 SpecificFlags); 98283514Sarybchik 99283514Sarybchikstatic void 100283514SarybchikAcpiDmResourceSource ( 101283514Sarybchik AML_RESOURCE *Resource, 102283514Sarybchik ACPI_SIZE MinimumLength, 103283514Sarybchik UINT32 Length); 104291436Sarybchik 105283514Sarybchikstatic void 106283514SarybchikAcpiDmAddressFields ( 107283514Sarybchik void *Source, 108283514Sarybchik UINT8 Type, 109283514Sarybchik UINT32 Level); 110283514Sarybchik 111283514Sarybchikstatic void 112291436SarybchikAcpiDmAddressPrefix ( 113283514Sarybchik UINT8 Type); 114283514Sarybchik 115283514Sarybchikstatic void 116283514SarybchikAcpiDmAddressCommon ( 117283514Sarybchik AML_RESOURCE *Resource, 118283514Sarybchik UINT8 Type, 119283514Sarybchik UINT32 Level); 120283514Sarybchik 121283514Sarybchikstatic void 122283514SarybchikAcpiDmAddressFlags ( 123283514Sarybchik AML_RESOURCE *Resource); 124283514Sarybchik 125283514Sarybchik 126283514Sarybchik/******************************************************************************* 127283514Sarybchik * 128299320Sarybchik * FUNCTION: AcpiDmMemoryFields 129283514Sarybchik * 130283514Sarybchik * PARAMETERS: Source - Pointer to the contiguous data fields 131283514Sarybchik * Type - 16 or 32 (bit) 132299517Sarybchik * Level - Current source code indentation level 133283514Sarybchik * 134283514Sarybchik * RETURN: None 135283514Sarybchik * 136283514Sarybchik * DESCRIPTION: Decode fields common to Memory24 and Memory32 descriptors 137283514Sarybchik * 138283514Sarybchik ******************************************************************************/ 139283514Sarybchik 140283514Sarybchikstatic void 141283514SarybchikAcpiDmMemoryFields ( 142293807Sarybchik void *Source, 143283514Sarybchik UINT8 Type, 144293807Sarybchik UINT32 Level) 145283514Sarybchik{ 146283514Sarybchik UINT32 i; 147283514Sarybchik 148283514Sarybchik 149283514Sarybchik for (i = 0; i < 4; i++) 150283514Sarybchik { 151283514Sarybchik AcpiDmIndent (Level + 1); 152283514Sarybchik 153283514Sarybchik switch (Type) 154293754Sarybchik { 155299517Sarybchik case 16: 156293754Sarybchik 157293754Sarybchik AcpiDmDumpInteger16 (ACPI_CAST_PTR (UINT16, Source)[i], 158283514Sarybchik AcpiDmMemoryNames[i]); 159293754Sarybchik break; 160283514Sarybchik 161283514Sarybchik case 32: 162293754Sarybchik 163293754Sarybchik AcpiDmDumpInteger32 (ACPI_CAST_PTR (UINT32, Source)[i], 164293754Sarybchik AcpiDmMemoryNames[i]); 165293807Sarybchik break; 166283514Sarybchik 167293807Sarybchik default: 168293754Sarybchik 169293754Sarybchik return; 170293754Sarybchik } 171293754Sarybchik } 172293754Sarybchik} 173293754Sarybchik 174283514Sarybchik 175293754Sarybchik/******************************************************************************* 176283514Sarybchik * 177283514Sarybchik * FUNCTION: AcpiDmAddressFields 178291436Sarybchik * 179227569Sphilip * PARAMETERS: Source - Pointer to the contiguous data fields 180283514Sarybchik * Type - 16, 32, or 64 (bit) 181227569Sphilip * Level - Current source code indentation level 182299517Sarybchik * 183291436Sarybchik * RETURN: None 184227569Sphilip * 185227569Sphilip * DESCRIPTION: Decode fields common to address descriptors 186227569Sphilip * 187227569Sphilip ******************************************************************************/ 188227569Sphilip 189227569Sphilipstatic void 190227569SphilipAcpiDmAddressFields ( 191227569Sphilip void *Source, 192227569Sphilip UINT8 Type, 193227569Sphilip UINT32 Level) 194227569Sphilip{ 195227569Sphilip UINT32 i; 196227569Sphilip 197227569Sphilip 198283514Sarybchik AcpiOsPrintf ("\n"); 199283514Sarybchik 200283514Sarybchik for (i = 0; i < 5; i++) 201299517Sarybchik { 202283514Sarybchik AcpiDmIndent (Level + 1); 203283514Sarybchik 204283514Sarybchik switch (Type) 205283514Sarybchik { 206283514Sarybchik case 16: 207299517Sarybchik 208283514Sarybchik AcpiDmDumpInteger16 (ACPI_CAST_PTR (UINT16, Source)[i], 209283514Sarybchik AcpiDmAddressNames[i]); 210283514Sarybchik break; 211293754Sarybchik 212293754Sarybchik case 32: 213299517Sarybchik 214293754Sarybchik AcpiDmDumpInteger32 (ACPI_CAST_PTR (UINT32, Source)[i], 215293754Sarybchik AcpiDmAddressNames[i]); 216293754Sarybchik break; 217283514Sarybchik 218283514Sarybchik case 64: 219283514Sarybchik 220283514Sarybchik AcpiDmDumpInteger64 (ACPI_CAST_PTR (UINT64, Source)[i], 221283514Sarybchik AcpiDmAddressNames[i]); 222283514Sarybchik break; 223283514Sarybchik 224283514Sarybchik default: 225283514Sarybchik 226283514Sarybchik return; 227283514Sarybchik } 228283514Sarybchik } 229283514Sarybchik} 230283514Sarybchik 231283514Sarybchik 232283514Sarybchik/******************************************************************************* 233283514Sarybchik * 234283514Sarybchik * FUNCTION: AcpiDmAddressPrefix 235283514Sarybchik * 236283514Sarybchik * PARAMETERS: Type - Descriptor type 237291436Sarybchik * 238283514Sarybchik * RETURN: None 239283514Sarybchik * 240283514Sarybchik * DESCRIPTION: Emit name prefix representing the address descriptor type 241283514Sarybchik * 242283514Sarybchik ******************************************************************************/ 243283514Sarybchik 244283514Sarybchikstatic void 245283514SarybchikAcpiDmAddressPrefix ( 246283514Sarybchik UINT8 Type) 247283514Sarybchik{ 248299517Sarybchik 249283514Sarybchik switch (Type) 250283514Sarybchik { 251283514Sarybchik case ACPI_RESOURCE_TYPE_ADDRESS16: 252283514Sarybchik 253283514Sarybchik AcpiOsPrintf ("Word"); 254283514Sarybchik break; 255283514Sarybchik 256283514Sarybchik case ACPI_RESOURCE_TYPE_ADDRESS32: 257283514Sarybchik 258283514Sarybchik AcpiOsPrintf ("DWord"); 259283514Sarybchik break; 260283514Sarybchik 261283514Sarybchik case ACPI_RESOURCE_TYPE_ADDRESS64: 262291436Sarybchik 263283514Sarybchik AcpiOsPrintf ("QWord"); 264283514Sarybchik break; 265283514Sarybchik 266283514Sarybchik case ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64: 267299517Sarybchik 268291436Sarybchik AcpiOsPrintf ("Extended"); 269283514Sarybchik break; 270283514Sarybchik 271283514Sarybchik default: 272283514Sarybchik 273283514Sarybchik return; 274283514Sarybchik } 275283514Sarybchik} 276283514Sarybchik 277283514Sarybchik 278283514Sarybchik/******************************************************************************* 279291436Sarybchik * 280283514Sarybchik * FUNCTION: AcpiDmAddressCommon 281283514Sarybchik * 282283514Sarybchik * PARAMETERS: Resource - Raw AML descriptor 283283514Sarybchik * Type - Descriptor type 284283514Sarybchik * Level - Current source code indentation level 285291436Sarybchik * 286283514Sarybchik * RETURN: None 287283514Sarybchik * 288283514Sarybchik * DESCRIPTION: Emit common name and flag fields common to address descriptors 289283514Sarybchik * 290291436Sarybchik ******************************************************************************/ 291283514Sarybchik 292283514Sarybchikstatic void 293283514SarybchikAcpiDmAddressCommon ( 294283514Sarybchik AML_RESOURCE *Resource, 295283514Sarybchik UINT8 Type, 296283514Sarybchik UINT32 Level) 297283514Sarybchik{ 298283514Sarybchik UINT8 ResourceType; 299283514Sarybchik UINT8 SpecificFlags; 300283514Sarybchik UINT8 Flags; 301283514Sarybchik 302283514Sarybchik 303283514Sarybchik ResourceType = Resource->Address.ResourceType; 304283514Sarybchik SpecificFlags = Resource->Address.SpecificFlags; 305283514Sarybchik Flags = Resource->Address.Flags; 306291436Sarybchik 307283514Sarybchik AcpiDmIndent (Level); 308283514Sarybchik 309283514Sarybchik /* Validate ResourceType */ 310283514Sarybchik 311291436Sarybchik if ((ResourceType > 2) && (ResourceType < 0xC0)) 312283514Sarybchik { 313283514Sarybchik AcpiOsPrintf ("/**** Invalid Resource Type: 0x%X ****/", ResourceType); 314283514Sarybchik return; 315283514Sarybchik } 316291436Sarybchik 317283514Sarybchik /* Prefix is either Word, DWord, QWord, or Extended */ 318283514Sarybchik 319283514Sarybchik AcpiDmAddressPrefix (Type); 320283514Sarybchik 321283514Sarybchik /* Resource Types above 0xC0 are vendor-defined */ 322283514Sarybchik 323283514Sarybchik if (ResourceType > 2) 324283514Sarybchik { 325283514Sarybchik AcpiOsPrintf ("Space (0x%2.2X, ", ResourceType); 326283514Sarybchik AcpiDmSpaceFlags (Flags); 327283514Sarybchik AcpiOsPrintf (" 0x%2.2X,", SpecificFlags); 328283514Sarybchik return; 329283514Sarybchik } 330283514Sarybchik 331283514Sarybchik /* This is either a Memory, IO, or BusNumber descriptor (0,1,2) */ 332291436Sarybchik 333283514Sarybchik AcpiOsPrintf ("%s (", AcpiGbl_WordDecode [ACPI_GET_2BIT_FLAG (ResourceType)]); 334283514Sarybchik 335283514Sarybchik /* Decode the general and type-specific flags */ 336283514Sarybchik 337291436Sarybchik if (ResourceType == ACPI_MEMORY_RANGE) 338283514Sarybchik { 339283514Sarybchik AcpiDmMemoryFlags (Flags, SpecificFlags); 340283514Sarybchik } 341283514Sarybchik else /* IO range or BusNumberRange */ 342283514Sarybchik { 343283514Sarybchik AcpiDmIoFlags (Flags); 344299517Sarybchik if (ResourceType == ACPI_IO_RANGE) 345291436Sarybchik { 346283514Sarybchik AcpiOsPrintf (" %s,", AcpiGbl_RngDecode [ACPI_GET_2BIT_FLAG (SpecificFlags)]); 347283514Sarybchik } 348283514Sarybchik } 349283514Sarybchik} 350283514Sarybchik 351283514Sarybchik 352283514Sarybchik/******************************************************************************* 353283514Sarybchik * 354283514Sarybchik * FUNCTION: AcpiDmAddressFlags 355283514Sarybchik * 356283514Sarybchik * PARAMETERS: Resource - Raw AML descriptor 357283514Sarybchik * 358283514Sarybchik * RETURN: None 359291436Sarybchik * 360283514Sarybchik * DESCRIPTION: Emit flags common to address descriptors 361283514Sarybchik * 362283514Sarybchik ******************************************************************************/ 363283514Sarybchik 364283514Sarybchikstatic void 365291436SarybchikAcpiDmAddressFlags ( 366283514Sarybchik AML_RESOURCE *Resource) 367283514Sarybchik{ 368283514Sarybchik 369283514Sarybchik if (Resource->Address.ResourceType == ACPI_IO_RANGE) 370283514Sarybchik { 371299517Sarybchik AcpiDmIoFlags2 (Resource->Address.SpecificFlags); 372291436Sarybchik } 373283514Sarybchik else if (Resource->Address.ResourceType == ACPI_MEMORY_RANGE) 374283514Sarybchik { 375283514Sarybchik AcpiDmMemoryFlags2 (Resource->Address.SpecificFlags); 376283514Sarybchik } 377283514Sarybchik} 378283514Sarybchik 379283514Sarybchik 380283514Sarybchik/******************************************************************************* 381283514Sarybchik * 382283514Sarybchik * FUNCTION: AcpiDmSpaceFlags 383291436Sarybchik * 384283514Sarybchik * PARAMETERS: Flags - Flag byte to be decoded 385283514Sarybchik * 386283514Sarybchik * RETURN: None 387283514Sarybchik * 388283514Sarybchik * DESCRIPTION: Decode the flags specific to Space Address space descriptors 389283514Sarybchik * 390291436Sarybchik ******************************************************************************/ 391283514Sarybchik 392283514Sarybchikstatic void 393283514SarybchikAcpiDmSpaceFlags ( 394283514Sarybchik UINT8 Flags) 395283514Sarybchik{ 396299517Sarybchik 397291436Sarybchik AcpiOsPrintf ("%s, %s, %s, %s,", 398283514Sarybchik AcpiGbl_ConsumeDecode [ACPI_GET_1BIT_FLAG (Flags)], 399283514Sarybchik AcpiGbl_DecDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 1)], 400283514Sarybchik AcpiGbl_MinDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 2)], 401283514Sarybchik AcpiGbl_MaxDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 3)]); 402283514Sarybchik} 403283514Sarybchik 404283514Sarybchik 405283514Sarybchik/******************************************************************************* 406283514Sarybchik * 407283514Sarybchik * FUNCTION: AcpiDmIoFlags 408291436Sarybchik * 409283514Sarybchik * PARAMETERS: Flags - Flag byte to be decoded 410283514Sarybchik * 411283514Sarybchik * RETURN: None 412283514Sarybchik * 413283514Sarybchik * DESCRIPTION: Decode the flags specific to IO Address space descriptors 414283514Sarybchik * 415283514Sarybchik ******************************************************************************/ 416283514Sarybchik 417283514Sarybchikstatic void 418283514SarybchikAcpiDmIoFlags ( 419283514Sarybchik UINT8 Flags) 420283514Sarybchik{ 421283514Sarybchik AcpiOsPrintf ("%s, %s, %s, %s,", 422283514Sarybchik AcpiGbl_ConsumeDecode [ACPI_GET_1BIT_FLAG (Flags)], 423283514Sarybchik AcpiGbl_MinDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 2)], 424299517Sarybchik AcpiGbl_MaxDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 3)], 425283514Sarybchik AcpiGbl_DecDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 1)]); 426283514Sarybchik} 427283514Sarybchik 428283514Sarybchik 429283514Sarybchik/******************************************************************************* 430283514Sarybchik * 431283514Sarybchik * FUNCTION: AcpiDmIoFlags2 432283514Sarybchik * 433283514Sarybchik * PARAMETERS: SpecificFlags - "Specific" flag byte to be decoded 434283514Sarybchik * 435283514Sarybchik * RETURN: None 436283514Sarybchik * 437283514Sarybchik * DESCRIPTION: Decode the flags specific to IO Address space descriptors 438299517Sarybchik * 439283514Sarybchik ******************************************************************************/ 440283514Sarybchik 441283514Sarybchikstatic void 442283514SarybchikAcpiDmIoFlags2 ( 443283514Sarybchik UINT8 SpecificFlags) 444283514Sarybchik{ 445291436Sarybchik 446283514Sarybchik AcpiOsPrintf (", %s", 447283514Sarybchik AcpiGbl_TtpDecode [ACPI_EXTRACT_1BIT_FLAG (SpecificFlags, 4)]); 448283514Sarybchik 449283514Sarybchik /* TRS is only used if TTP is TypeTranslation */ 450299517Sarybchik 451291436Sarybchik if (SpecificFlags & 0x10) 452283514Sarybchik { 453283514Sarybchik AcpiOsPrintf (", %s", 454283514Sarybchik AcpiGbl_TrsDecode [ACPI_EXTRACT_1BIT_FLAG (SpecificFlags, 5)]); 455283514Sarybchik } 456283514Sarybchik} 457283514Sarybchik 458283514Sarybchik 459283514Sarybchik/******************************************************************************* 460283514Sarybchik * 461291436Sarybchik * FUNCTION: AcpiDmMemoryFlags 462283514Sarybchik * 463283514Sarybchik * PARAMETERS: Flags - Flag byte to be decoded 464283514Sarybchik * SpecificFlags - "Specific" flag byte to be decoded 465283514Sarybchik * 466283514Sarybchik * RETURN: None 467283514Sarybchik * 468283514Sarybchik * DESCRIPTION: Decode flags specific to Memory Address Space descriptors 469283514Sarybchik * 470283514Sarybchik ******************************************************************************/ 471299517Sarybchik 472283514Sarybchikstatic void 473283514SarybchikAcpiDmMemoryFlags ( 474283514Sarybchik UINT8 Flags, 475283514Sarybchik UINT8 SpecificFlags) 476283514Sarybchik{ 477283514Sarybchik 478291436Sarybchik AcpiOsPrintf ("%s, %s, %s, %s, %s, %s,", 479283514Sarybchik AcpiGbl_ConsumeDecode [ACPI_GET_1BIT_FLAG (Flags)], 480283514Sarybchik AcpiGbl_DecDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 1)], 481283514Sarybchik AcpiGbl_MinDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 2)], 482283514Sarybchik AcpiGbl_MaxDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 3)], 483283514Sarybchik AcpiGbl_MemDecode [ACPI_EXTRACT_2BIT_FLAG (SpecificFlags, 1)], 484283514Sarybchik AcpiGbl_RwDecode [ACPI_GET_1BIT_FLAG (SpecificFlags)]); 485283514Sarybchik} 486283514Sarybchik 487283514Sarybchik 488283514Sarybchik/******************************************************************************* 489283514Sarybchik * 490299517Sarybchik * FUNCTION: AcpiDmMemoryFlags2 491283514Sarybchik * 492291436Sarybchik * PARAMETERS: SpecificFlags - "Specific" flag byte to be decoded 493283514Sarybchik * 494283514Sarybchik * RETURN: None 495283514Sarybchik * 496283514Sarybchik * DESCRIPTION: Decode flags specific to Memory Address Space descriptors 497283514Sarybchik * 498283514Sarybchik ******************************************************************************/ 499283514Sarybchik 500283514Sarybchikstatic void 501283514SarybchikAcpiDmMemoryFlags2 ( 502283514Sarybchik UINT8 SpecificFlags) 503283514Sarybchik{ 504283514Sarybchik 505283514Sarybchik AcpiOsPrintf (", %s, %s", 506283514Sarybchik AcpiGbl_MtpDecode [ACPI_EXTRACT_2BIT_FLAG (SpecificFlags, 3)], 507283514Sarybchik AcpiGbl_TtpDecode [ACPI_EXTRACT_1BIT_FLAG (SpecificFlags, 5)]); 508283514Sarybchik} 509283514Sarybchik 510283514Sarybchik 511283514Sarybchik/******************************************************************************* 512283514Sarybchik * 513283514Sarybchik * FUNCTION: AcpiDmResourceSource 514283514Sarybchik * 515283514Sarybchik * PARAMETERS: Resource - Raw AML descriptor 516283514Sarybchik * MinimumLength - descriptor length without optional fields 517283514Sarybchik * ResourceLength 518283514Sarybchik * 519283514Sarybchik * RETURN: None 520283514Sarybchik * 521283514Sarybchik * DESCRIPTION: Dump optional ResourceSource fields of an address descriptor 522283514Sarybchik * 523283514Sarybchik ******************************************************************************/ 524283514Sarybchik 525291436Sarybchikstatic void 526283514SarybchikAcpiDmResourceSource ( 527283514Sarybchik AML_RESOURCE *Resource, 528283514Sarybchik ACPI_SIZE MinimumTotalLength, 529283514Sarybchik UINT32 ResourceLength) 530283514Sarybchik{ 531283514Sarybchik UINT8 *AmlResourceSource; 532283514Sarybchik UINT32 TotalLength; 533283514Sarybchik 534283514Sarybchik 535299517Sarybchik TotalLength = ResourceLength + sizeof (AML_RESOURCE_LARGE_HEADER); 536283514Sarybchik 537283514Sarybchik /* Check if the optional ResourceSource fields are present */ 538283514Sarybchik 539283514Sarybchik if (TotalLength <= MinimumTotalLength) 540283514Sarybchik { 541283514Sarybchik /* The two optional fields are not used */ 542291436Sarybchik 543283514Sarybchik AcpiOsPrintf (",, "); 544283514Sarybchik return; 545283514Sarybchik } 546293807Sarybchik 547283514Sarybchik /* Get a pointer to the ResourceSource */ 548299517Sarybchik 549283514Sarybchik AmlResourceSource = ACPI_ADD_PTR (UINT8, Resource, MinimumTotalLength); 550293807Sarybchik 551283514Sarybchik /* 552283514Sarybchik * Always emit the ResourceSourceIndex (Byte) 553283514Sarybchik * 554293807Sarybchik * NOTE: Some ASL compilers always create a 0 byte (in the AML) for the 555283514Sarybchik * Index even if the String does not exist. Although this is in violation 556283514Sarybchik * of the ACPI specification, it is very important to emit ASL code that 557283514Sarybchik * can be compiled back to the identical AML. There may be fields and/or 558283514Sarybchik * indexes into the resource template buffer that are compiled to absolute 559283514Sarybchik * offsets, and these will be broken if the AML length is changed. 560299517Sarybchik */ 561293807Sarybchik AcpiOsPrintf ("0x%2.2X,", (UINT32) AmlResourceSource[0]); 562293807Sarybchik 563293807Sarybchik /* Make sure that the ResourceSource string exists before dumping it */ 564283514Sarybchik 565283514Sarybchik if (TotalLength > (MinimumTotalLength + 1)) 566283514Sarybchik { 567299320Sarybchik AcpiOsPrintf (" "); 568283514Sarybchik AcpiUtPrintString ((char *) &AmlResourceSource[1], ACPI_UINT16_MAX); 569291436Sarybchik } 570283514Sarybchik 571283514Sarybchik AcpiOsPrintf (", "); 572283514Sarybchik} 573283514Sarybchik 574283514Sarybchik 575283514Sarybchik/******************************************************************************* 576227569Sphilip * 577227569Sphilip * FUNCTION: AcpiDmWordDescriptor 578227569Sphilip * 579227569Sphilip * PARAMETERS: Resource - Pointer to the resource descriptor 580227569Sphilip * Length - Length of the descriptor in bytes 581227569Sphilip * Level - Current source code indentation level 582227569Sphilip * 583227569Sphilip * RETURN: None 584227569Sphilip * 585227569Sphilip * DESCRIPTION: Decode a Word Address Space descriptor 586227569Sphilip * 587227569Sphilip ******************************************************************************/ 588227569Sphilip 589227569Sphilipvoid 590227569SphilipAcpiDmWordDescriptor ( 591283514Sarybchik AML_RESOURCE *Resource, 592227569Sphilip UINT32 Length, 593227569Sphilip UINT32 Level) 594283514Sarybchik{ 595283514Sarybchik 596283514Sarybchik /* Dump resource name and flags */ 597227569Sphilip 598283514Sarybchik AcpiDmAddressCommon (Resource, ACPI_RESOURCE_TYPE_ADDRESS16, Level); 599283514Sarybchik 600283514Sarybchik /* Dump the 5 contiguous WORD values */ 601227569Sphilip 602283514Sarybchik AcpiDmAddressFields (&Resource->Address16.Granularity, 16, Level); 603227569Sphilip 604227569Sphilip /* The ResourceSource fields are optional */ 605227569Sphilip 606291436Sarybchik AcpiDmIndent (Level + 1); 607283514Sarybchik AcpiDmResourceSource (Resource, sizeof (AML_RESOURCE_ADDRESS16), Length); 608227569Sphilip 609227569Sphilip /* Insert a descriptor name */ 610227569Sphilip 611227569Sphilip AcpiDmDescriptorName (); 612227569Sphilip 613291436Sarybchik /* Type-specific flags */ 614227569Sphilip 615227569Sphilip AcpiDmAddressFlags (Resource); 616227569Sphilip AcpiOsPrintf (")\n"); 617227569Sphilip} 618227569Sphilip 619227569Sphilip 620227569Sphilip/******************************************************************************* 621227569Sphilip * 622227569Sphilip * FUNCTION: AcpiDmDwordDescriptor 623227569Sphilip * 624227569Sphilip * PARAMETERS: Resource - Pointer to the resource descriptor 625227569Sphilip * Length - Length of the descriptor in bytes 626227569Sphilip * Level - Current source code indentation level 627227569Sphilip * 628227569Sphilip * RETURN: None 629227569Sphilip * 630227569Sphilip * DESCRIPTION: Decode a DWord Address Space descriptor 631227569Sphilip * 632227569Sphilip ******************************************************************************/ 633227569Sphilip 634227569Sphilipvoid 635227569SphilipAcpiDmDwordDescriptor ( 636227569Sphilip AML_RESOURCE *Resource, 637227569Sphilip UINT32 Length, 638227569Sphilip UINT32 Level) 639227569Sphilip{ 640227569Sphilip 641227569Sphilip /* Dump resource name and flags */ 642227569Sphilip 643291436Sarybchik AcpiDmAddressCommon (Resource, ACPI_RESOURCE_TYPE_ADDRESS32, Level); 644227569Sphilip 645227569Sphilip /* Dump the 5 contiguous DWORD values */ 646227569Sphilip 647227569Sphilip AcpiDmAddressFields (&Resource->Address32.Granularity, 32, Level); 648227569Sphilip 649227569Sphilip /* The ResourceSource fields are optional */ 650227569Sphilip 651283514Sarybchik AcpiDmIndent (Level + 1); 652227569Sphilip AcpiDmResourceSource (Resource, sizeof (AML_RESOURCE_ADDRESS32), Length); 653227569Sphilip 654227569Sphilip /* Insert a descriptor name */ 655227569Sphilip 656227569Sphilip AcpiDmDescriptorName (); 657227569Sphilip 658227569Sphilip /* Type-specific flags */ 659227569Sphilip 660227569Sphilip AcpiDmAddressFlags (Resource); 661227569Sphilip AcpiOsPrintf (")\n"); 662227569Sphilip} 663227569Sphilip 664227569Sphilip 665227569Sphilip/******************************************************************************* 666227569Sphilip * 667227569Sphilip * FUNCTION: AcpiDmQwordDescriptor 668227569Sphilip * 669227569Sphilip * PARAMETERS: Resource - Pointer to the resource descriptor 670227569Sphilip * Length - Length of the descriptor in bytes 671227569Sphilip * Level - Current source code indentation level 672227569Sphilip * 673227569Sphilip * RETURN: None 674227569Sphilip * 675283514Sarybchik * DESCRIPTION: Decode a QWord Address Space descriptor 676227569Sphilip * 677227569Sphilip ******************************************************************************/ 678227569Sphilip 679227569Sphilipvoid 680227569SphilipAcpiDmQwordDescriptor ( 681227569Sphilip AML_RESOURCE *Resource, 682227569Sphilip UINT32 Length, 683227569Sphilip UINT32 Level) 684227569Sphilip{ 685227569Sphilip 686227569Sphilip /* Dump resource name and flags */ 687227569Sphilip 688227569Sphilip AcpiDmAddressCommon (Resource, ACPI_RESOURCE_TYPE_ADDRESS64, Level); 689227569Sphilip 690227569Sphilip /* Dump the 5 contiguous QWORD values */ 691227569Sphilip 692283514Sarybchik AcpiDmAddressFields (&Resource->Address64.Granularity, 64, Level); 693227569Sphilip 694227569Sphilip /* The ResourceSource fields are optional */ 695227569Sphilip 696227569Sphilip AcpiDmIndent (Level + 1); 697227569Sphilip AcpiDmResourceSource (Resource, sizeof (AML_RESOURCE_ADDRESS64), Length); 698227569Sphilip 699227569Sphilip /* Insert a descriptor name */ 700227569Sphilip 701227569Sphilip AcpiDmDescriptorName (); 702227569Sphilip 703227569Sphilip /* Type-specific flags */ 704227569Sphilip 705227569Sphilip AcpiDmAddressFlags (Resource); 706227569Sphilip AcpiOsPrintf (")\n"); 707227569Sphilip} 708227569Sphilip 709227569Sphilip 710227569Sphilip/******************************************************************************* 711283514Sarybchik * 712291436Sarybchik * FUNCTION: AcpiDmExtendedDescriptor 713283514Sarybchik * 714227569Sphilip * PARAMETERS: Resource - Pointer to the resource descriptor 715227569Sphilip * Length - Length of the descriptor in bytes 716227569Sphilip * Level - Current source code indentation level 717227569Sphilip * 718227569Sphilip * RETURN: None 719291436Sarybchik * 720227569Sphilip * DESCRIPTION: Decode a Extended Address Space descriptor 721227569Sphilip * 722227569Sphilip ******************************************************************************/ 723227569Sphilip 724227569Sphilipvoid 725227569SphilipAcpiDmExtendedDescriptor ( 726227569Sphilip AML_RESOURCE *Resource, 727227569Sphilip UINT32 Length, 728227569Sphilip UINT32 Level) 729227569Sphilip{ 730227569Sphilip 731227569Sphilip /* Dump resource name and flags */ 732227569Sphilip 733227569Sphilip AcpiDmAddressCommon (Resource, ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64, Level); 734227569Sphilip 735227569Sphilip /* Dump the 5 contiguous QWORD values */ 736227569Sphilip 737227569Sphilip AcpiDmAddressFields (&Resource->ExtAddress64.Granularity, 64, Level); 738227569Sphilip 739227569Sphilip /* Extra field for this descriptor only */ 740227569Sphilip 741227569Sphilip AcpiDmIndent (Level + 1); 742227569Sphilip AcpiDmDumpInteger64 (Resource->ExtAddress64.TypeSpecific, 743227569Sphilip "Type-Specific Attributes"); 744227569Sphilip 745227569Sphilip /* Insert a descriptor name */ 746227569Sphilip 747227569Sphilip AcpiDmIndent (Level + 1); 748227569Sphilip AcpiDmDescriptorName (); 749227569Sphilip 750291436Sarybchik /* Type-specific flags */ 751227569Sphilip 752227569Sphilip AcpiDmAddressFlags (Resource); 753227569Sphilip AcpiOsPrintf (")\n"); 754227569Sphilip} 755227569Sphilip 756227569Sphilip 757227569Sphilip/******************************************************************************* 758227569Sphilip * 759291436Sarybchik * FUNCTION: AcpiDmMemory24Descriptor 760283514Sarybchik * 761227569Sphilip * PARAMETERS: Resource - Pointer to the resource descriptor 762227569Sphilip * Length - Length of the descriptor in bytes 763227569Sphilip * Level - Current source code indentation level 764227569Sphilip * 765227569Sphilip * RETURN: None 766227569Sphilip * 767227569Sphilip * DESCRIPTION: Decode a Memory24 descriptor 768291436Sarybchik * 769227569Sphilip ******************************************************************************/ 770227569Sphilip 771227569Sphilipvoid 772283514SarybchikAcpiDmMemory24Descriptor ( 773227569Sphilip AML_RESOURCE *Resource, 774227569Sphilip UINT32 Length, 775227569Sphilip UINT32 Level) 776227569Sphilip{ 777227569Sphilip 778227569Sphilip /* Dump name and read/write flag */ 779227569Sphilip 780227569Sphilip AcpiDmIndent (Level); 781227569Sphilip AcpiOsPrintf ("Memory24 (%s,\n", 782227569Sphilip AcpiGbl_RwDecode [ACPI_GET_1BIT_FLAG (Resource->Memory24.Flags)]); 783283514Sarybchik 784227569Sphilip /* Dump the 4 contiguous WORD values */ 785227569Sphilip 786227569Sphilip AcpiDmMemoryFields (&Resource->Memory24.Minimum, 16, Level); 787227569Sphilip 788227569Sphilip /* Insert a descriptor name */ 789227569Sphilip 790227569Sphilip AcpiDmIndent (Level + 1); 791227569Sphilip AcpiDmDescriptorName (); 792227569Sphilip AcpiOsPrintf (")\n"); 793227569Sphilip} 794283514Sarybchik 795283514Sarybchik 796227569Sphilip/******************************************************************************* 797227569Sphilip * 798227569Sphilip * FUNCTION: AcpiDmMemory32Descriptor 799283514Sarybchik * 800227569Sphilip * PARAMETERS: Resource - Pointer to the resource descriptor 801227569Sphilip * Length - Length of the descriptor in bytes 802227569Sphilip * Level - Current source code indentation level 803227569Sphilip * 804227569Sphilip * RETURN: None 805227569Sphilip * 806227569Sphilip * DESCRIPTION: Decode a Memory32 descriptor 807227569Sphilip * 808227569Sphilip ******************************************************************************/ 809283514Sarybchik 810227569Sphilipvoid 811227569SphilipAcpiDmMemory32Descriptor ( 812227569Sphilip AML_RESOURCE *Resource, 813227569Sphilip UINT32 Length, 814227569Sphilip UINT32 Level) 815227569Sphilip{ 816227569Sphilip 817227569Sphilip /* Dump name and read/write flag */ 818227569Sphilip 819283514Sarybchik AcpiDmIndent (Level); 820227569Sphilip AcpiOsPrintf ("Memory32 (%s,\n", 821227569Sphilip AcpiGbl_RwDecode [ACPI_GET_1BIT_FLAG (Resource->Memory32.Flags)]); 822227569Sphilip 823227569Sphilip /* Dump the 4 contiguous DWORD values */ 824227569Sphilip 825227569Sphilip AcpiDmMemoryFields (&Resource->Memory32.Minimum, 32, Level); 826227569Sphilip 827227569Sphilip /* Insert a descriptor name */ 828227569Sphilip 829227569Sphilip AcpiDmIndent (Level + 1); 830227569Sphilip AcpiDmDescriptorName (); 831283514Sarybchik AcpiOsPrintf (")\n"); 832227569Sphilip} 833227569Sphilip 834227569Sphilip 835227569Sphilip/******************************************************************************* 836227569Sphilip * 837227569Sphilip * FUNCTION: AcpiDmFixedMemory32Descriptor 838227569Sphilip * 839283514Sarybchik * PARAMETERS: Resource - Pointer to the resource descriptor 840227569Sphilip * Length - Length of the descriptor in bytes 841227569Sphilip * Level - Current source code indentation level 842227569Sphilip * 843283514Sarybchik * RETURN: None 844227569Sphilip * 845227569Sphilip * DESCRIPTION: Decode a Fixed Memory32 descriptor 846227569Sphilip * 847227569Sphilip ******************************************************************************/ 848227569Sphilip 849227569Sphilipvoid 850227569SphilipAcpiDmFixedMemory32Descriptor ( 851283514Sarybchik AML_RESOURCE *Resource, 852227569Sphilip UINT32 Length, 853227569Sphilip UINT32 Level) 854227569Sphilip{ 855283514Sarybchik 856227569Sphilip /* Dump name and read/write flag */ 857227569Sphilip 858227569Sphilip AcpiDmIndent (Level); 859227569Sphilip AcpiOsPrintf ("Memory32Fixed (%s,\n", 860227569Sphilip AcpiGbl_RwDecode [ACPI_GET_1BIT_FLAG (Resource->FixedMemory32.Flags)]); 861227569Sphilip 862227569Sphilip AcpiDmIndent (Level + 1); 863283514Sarybchik AcpiDmDumpInteger32 (Resource->FixedMemory32.Address, "Address Base"); 864227569Sphilip 865227569Sphilip AcpiDmIndent (Level + 1); 866227569Sphilip AcpiDmDumpInteger32 (Resource->FixedMemory32.AddressLength, "Address Length"); 867283514Sarybchik 868227569Sphilip /* Insert a descriptor name */ 869227569Sphilip 870283514Sarybchik AcpiDmIndent (Level + 1); 871283514Sarybchik AcpiDmDescriptorName (); 872227569Sphilip AcpiOsPrintf (")\n"); 873227569Sphilip} 874227569Sphilip 875227569Sphilip 876227569Sphilip/******************************************************************************* 877291436Sarybchik * 878227569Sphilip * FUNCTION: AcpiDmGenericRegisterDescriptor 879227569Sphilip * 880227569Sphilip * PARAMETERS: Resource - Pointer to the resource descriptor 881227569Sphilip * Length - Length of the descriptor in bytes 882227569Sphilip * Level - Current source code indentation level 883227569Sphilip * 884291436Sarybchik * RETURN: None 885283514Sarybchik * 886227569Sphilip * DESCRIPTION: Decode a Generic Register descriptor 887227569Sphilip * 888227569Sphilip ******************************************************************************/ 889227569Sphilip 890227569Sphilipvoid 891227569SphilipAcpiDmGenericRegisterDescriptor ( 892291436Sarybchik AML_RESOURCE *Resource, 893227569Sphilip UINT32 Length, 894227569Sphilip UINT32 Level) 895227569Sphilip{ 896227569Sphilip 897227569Sphilip AcpiDmIndent (Level); 898227569Sphilip AcpiOsPrintf ("Register ("); 899227569Sphilip AcpiDmAddressSpace (Resource->GenericReg.AddressSpaceId); 900227569Sphilip AcpiOsPrintf ("\n"); 901227569Sphilip 902227569Sphilip AcpiDmIndent (Level + 1); 903227569Sphilip AcpiDmDumpInteger8 (Resource->GenericReg.BitWidth, "Bit Width"); 904227569Sphilip 905227569Sphilip AcpiDmIndent (Level + 1); 906283514Sarybchik AcpiDmDumpInteger8 (Resource->GenericReg.BitOffset, "Bit Offset"); 907227569Sphilip 908227569Sphilip AcpiDmIndent (Level + 1); 909227569Sphilip AcpiDmDumpInteger64 (Resource->GenericReg.Address, "Address"); 910227569Sphilip 911227569Sphilip /* Optional field for ACPI 3.0 */ 912227569Sphilip 913227569Sphilip AcpiDmIndent (Level + 1); 914283514Sarybchik if (Resource->GenericReg.AccessSize) 915227569Sphilip { 916227569Sphilip AcpiOsPrintf ("0x%2.2X, // %s\n", 917227569Sphilip Resource->GenericReg.AccessSize, "Access Size"); 918227569Sphilip AcpiDmIndent (Level + 1); 919227569Sphilip } 920227569Sphilip else 921283514Sarybchik { 922227569Sphilip AcpiOsPrintf (","); 923227569Sphilip } 924227569Sphilip 925283514Sarybchik /* DescriptorName was added for ACPI 3.0+ */ 926227569Sphilip 927227569Sphilip AcpiDmDescriptorName (); 928227569Sphilip AcpiOsPrintf (")\n"); 929227569Sphilip} 930227569Sphilip 931227569Sphilip 932227569Sphilip/******************************************************************************* 933227569Sphilip * 934227569Sphilip * FUNCTION: AcpiDmInterruptDescriptor 935227569Sphilip * 936227569Sphilip * PARAMETERS: Resource - Pointer to the resource descriptor 937227569Sphilip * Length - Length of the descriptor in bytes 938227569Sphilip * Level - Current source code indentation level 939291436Sarybchik * 940227569Sphilip * RETURN: None 941227569Sphilip * 942227569Sphilip * DESCRIPTION: Decode a extended Interrupt descriptor 943227569Sphilip * 944227569Sphilip ******************************************************************************/ 945293807Sarybchik 946293807Sarybchikvoid 947293807SarybchikAcpiDmInterruptDescriptor ( 948293807Sarybchik AML_RESOURCE *Resource, 949293807Sarybchik UINT32 Length, 950293807Sarybchik UINT32 Level) 951293807Sarybchik{ 952293807Sarybchik UINT32 i; 953293807Sarybchik 954293807Sarybchik 955293807Sarybchik AcpiDmIndent (Level); 956293807Sarybchik AcpiOsPrintf ("Interrupt (%s, %s, %s, %s, ", 957293807Sarybchik AcpiGbl_ConsumeDecode [ACPI_GET_1BIT_FLAG (Resource->ExtendedIrq.Flags)], 958293807Sarybchik AcpiGbl_HeDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->ExtendedIrq.Flags, 1)], 959293807Sarybchik AcpiGbl_LlDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->ExtendedIrq.Flags, 2)], 960293807Sarybchik AcpiGbl_ShrDecode [ACPI_EXTRACT_2BIT_FLAG (Resource->ExtendedIrq.Flags, 3)]); 961293807Sarybchik 962293807Sarybchik /* 963293807Sarybchik * The ResourceSource fields are optional and appear after the interrupt 964293807Sarybchik * list. Must compute length based on length of the list. First xrupt 965293807Sarybchik * is included in the struct (reason for -1 below) 966293807Sarybchik */ 967293807Sarybchik AcpiDmResourceSource (Resource, 968293807Sarybchik sizeof (AML_RESOURCE_EXTENDED_IRQ) + 969293807Sarybchik ((UINT32) Resource->ExtendedIrq.InterruptCount - 1) * sizeof (UINT32), 970293807Sarybchik Resource->ExtendedIrq.ResourceLength); 971293807Sarybchik 972293807Sarybchik /* Insert a descriptor name */ 973293807Sarybchik 974293807Sarybchik AcpiDmDescriptorName (); 975293807Sarybchik AcpiOsPrintf (")\n"); 976293807Sarybchik 977293807Sarybchik /* Dump the interrupt list */ 978293807Sarybchik 979293807Sarybchik AcpiDmIndent (Level); 980293807Sarybchik AcpiOsPrintf ("{\n"); 981293807Sarybchik for (i = 0; i < Resource->ExtendedIrq.InterruptCount; i++) 982293807Sarybchik { 983293807Sarybchik AcpiDmIndent (Level + 1); 984293807Sarybchik AcpiOsPrintf ("0x%8.8X,\n", 985293807Sarybchik (UINT32) Resource->ExtendedIrq.Interrupts[i]); 986293807Sarybchik } 987293807Sarybchik 988293807Sarybchik AcpiDmIndent (Level); 989293807Sarybchik AcpiOsPrintf ("}\n"); 990293807Sarybchik} 991293807Sarybchik 992293807Sarybchik 993293807Sarybchik/******************************************************************************* 994293807Sarybchik * 995293807Sarybchik * FUNCTION: AcpiDmVendorCommon 996293807Sarybchik * 997283514Sarybchik * PARAMETERS: Name - Descriptor name suffix 998283514Sarybchik * ByteData - Pointer to the vendor byte data 999227569Sphilip * Length - Length of the byte data 1000227569Sphilip * Level - Current source code indentation level 1001227569Sphilip * 1002227569Sphilip * RETURN: None 1003227569Sphilip * 1004227569Sphilip * DESCRIPTION: Decode a Vendor descriptor, both Large and Small 1005227569Sphilip * 1006227569Sphilip ******************************************************************************/ 1007227569Sphilip 1008227569Sphilipvoid 1009227569SphilipAcpiDmVendorCommon ( 1010227569Sphilip char *Name, 1011227569Sphilip UINT8 *ByteData, 1012227569Sphilip UINT32 Length, 1013227569Sphilip UINT32 Level) 1014227569Sphilip{ 1015227569Sphilip 1016227569Sphilip /* Dump macro name */ 1017227569Sphilip 1018227569Sphilip AcpiDmIndent (Level); 1019227569Sphilip AcpiOsPrintf ("Vendor%s (", Name); 1020227569Sphilip 1021227569Sphilip /* Insert a descriptor name */ 1022227569Sphilip 1023227569Sphilip AcpiDmDescriptorName (); 1024227569Sphilip AcpiOsPrintf (") // Length = 0x%.2X\n", Length); 1025227569Sphilip 1026227569Sphilip /* Dump the vendor bytes */ 1027227569Sphilip 1028227569Sphilip AcpiDmIndent (Level); 1029227569Sphilip AcpiOsPrintf ("{\n"); 1030227569Sphilip 1031227569Sphilip AcpiDmDisasmByteList (Level + 1, ByteData, Length); 1032227569Sphilip 1033227569Sphilip AcpiDmIndent (Level); 1034227569Sphilip AcpiOsPrintf ("}\n"); 1035283514Sarybchik} 1036283514Sarybchik 1037227569Sphilip 1038283514Sarybchik/******************************************************************************* 1039283514Sarybchik * 1040227569Sphilip * FUNCTION: AcpiDmVendorLargeDescriptor 1041227569Sphilip * 1042283514Sarybchik * PARAMETERS: Resource - Pointer to the resource descriptor 1043227569Sphilip * Length - Length of the descriptor in bytes 1044227569Sphilip * Level - Current source code indentation level 1045227569Sphilip * 1046227569Sphilip * RETURN: None 1047283514Sarybchik * 1048283514Sarybchik * DESCRIPTION: Decode a Vendor Large descriptor 1049227569Sphilip * 1050227569Sphilip ******************************************************************************/ 1051227569Sphilip 1052227569Sphilipvoid 1053227569SphilipAcpiDmVendorLargeDescriptor ( 1054227569Sphilip AML_RESOURCE *Resource, 1055227569Sphilip UINT32 Length, 1056227569Sphilip UINT32 Level) 1057227569Sphilip{ 1058283514Sarybchik 1059283514Sarybchik AcpiDmVendorCommon ("Long ", 1060283514Sarybchik ACPI_ADD_PTR (UINT8, Resource, sizeof (AML_RESOURCE_LARGE_HEADER)), 1061283514Sarybchik Length, Level); 1062283514Sarybchik} 1063227569Sphilip 1064227569Sphilip#endif 1065227569Sphilip