dmresrcs.c revision 243347
1238438Sdteske/******************************************************************************* 2238438Sdteske * 3249746Sdteske * Module Name: dmresrcs.c - "Small" Resource Descriptor disassembly 4252980Sdteske * 5238438Sdteske ******************************************************************************/ 6238438Sdteske 7238438Sdteske/* 8238438Sdteske * Copyright (C) 2000 - 2012, Intel Corp. 9238438Sdteske * All rights reserved. 10238438Sdteske * 11238438Sdteske * Redistribution and use in source and binary forms, with or without 12238438Sdteske * modification, are permitted provided that the following conditions 13238438Sdteske * are met: 14238438Sdteske * 1. Redistributions of source code must retain the above copyright 15238438Sdteske * notice, this list of conditions, and the following disclaimer, 16252987Sdteske * without modification. 17238438Sdteske * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18238438Sdteske * substantially similar to the "NO WARRANTY" disclaimer below 19238438Sdteske * ("Disclaimer") and any redistribution must be conditioned upon 20252987Sdteske * including a substantially similar Disclaimer requirement for further 21238438Sdteske * binary redistribution. 22238438Sdteske * 3. Neither the names of the above-listed copyright holders nor the names 23238438Sdteske * of any contributors may be used to endorse or promote products derived 24238438Sdteske * from this software without specific prior written permission. 25238438Sdteske * 26238438Sdteske * Alternatively, this software may be distributed under the terms of the 27238438Sdteske * GNU General Public License ("GPL") version 2 as published by the Free 28238438Sdteske * Software Foundation. 29238438Sdteske * 30238438Sdteske * NO WARRANTY 31240684Sdteske * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32240684Sdteske * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33244675Sdteske * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34240684Sdteske * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35240684Sdteske * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36240684Sdteske * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37238438Sdteske * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38240684Sdteske * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39238438Sdteske * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40238438Sdteske * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41260678Sdteske * POSSIBILITY OF SUCH DAMAGES. 42260678Sdteske */ 43238438Sdteske 44238438Sdteske 45238438Sdteske#include <contrib/dev/acpica/include/acpi.h> 46238438Sdteske#include <contrib/dev/acpica/include/accommon.h> 47238438Sdteske#include <contrib/dev/acpica/include/acdisasm.h> 48238438Sdteske 49238438Sdteske 50238438Sdteske#ifdef ACPI_DISASSEMBLER 51238438Sdteske 52238438Sdteske#define _COMPONENT ACPI_CA_DEBUGGER 53238438Sdteske ACPI_MODULE_NAME ("dbresrcs") 54238438Sdteske 55238438Sdteske 56238438Sdteske/******************************************************************************* 57238438Sdteske * 58238438Sdteske * FUNCTION: AcpiDmIrqDescriptor 59238438Sdteske * 60238438Sdteske * PARAMETERS: Resource - Pointer to the resource descriptor 61238438Sdteske * Length - Length of the descriptor in bytes 62238438Sdteske * Level - Current source code indentation level 63238438Sdteske * 64238438Sdteske * RETURN: None 65238438Sdteske * 66238438Sdteske * DESCRIPTION: Decode a IRQ descriptor, either Irq() or IrqNoFlags() 67238438Sdteske * 68238438Sdteske ******************************************************************************/ 69238438Sdteske 70238438Sdteskevoid 71238438SdteskeAcpiDmIrqDescriptor ( 72238438Sdteske AML_RESOURCE *Resource, 73238438Sdteske UINT32 Length, 74238438Sdteske UINT32 Level) 75238438Sdteske{ 76238438Sdteske 77238438Sdteske AcpiDmIndent (Level); 78238438Sdteske AcpiOsPrintf ("%s (", 79238438Sdteske AcpiGbl_IrqDecode [ACPI_GET_1BIT_FLAG (Length)]); 80251264Sdteske 81251264Sdteske /* Decode flags byte if present */ 82238438Sdteske 83238438Sdteske if (Length & 1) 84238438Sdteske { 85238438Sdteske AcpiOsPrintf ("%s, %s, %s, ", 86238438Sdteske AcpiGbl_HeDecode [ACPI_GET_1BIT_FLAG (Resource->Irq.Flags)], 87238438Sdteske AcpiGbl_LlDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->Irq.Flags, 3)], 88238438Sdteske AcpiGbl_ShrDecode [ACPI_EXTRACT_2BIT_FLAG (Resource->Irq.Flags, 4)]); 89238438Sdteske } 90238438Sdteske 91238438Sdteske /* Insert a descriptor name */ 92238438Sdteske 93238438Sdteske AcpiDmDescriptorName (); 94238438Sdteske AcpiOsPrintf (")\n"); 95238438Sdteske 96238438Sdteske AcpiDmIndent (Level + 1); 97238438Sdteske AcpiDmBitList (Resource->Irq.IrqMask); 98238438Sdteske} 99238438Sdteske 100238438Sdteske 101238438Sdteske/******************************************************************************* 102238438Sdteske * 103238438Sdteske * FUNCTION: AcpiDmDmaDescriptor 104238438Sdteske * 105238438Sdteske * PARAMETERS: Resource - Pointer to the resource descriptor 106238438Sdteske * Length - Length of the descriptor in bytes 107238438Sdteske * Level - Current source code indentation level 108238438Sdteske * 109238438Sdteske * RETURN: None 110238438Sdteske * 111238438Sdteske * DESCRIPTION: Decode a DMA descriptor 112238438Sdteske * 113251190Sdteske ******************************************************************************/ 114251190Sdteske 115251190Sdteskevoid 116251190SdteskeAcpiDmDmaDescriptor ( 117251190Sdteske AML_RESOURCE *Resource, 118251190Sdteske UINT32 Length, 119251190Sdteske UINT32 Level) 120238438Sdteske{ 121249751Sdteske 122251904Sdteske AcpiDmIndent (Level); 123251904Sdteske AcpiOsPrintf ("DMA (%s, %s, %s, ", 124251904Sdteske AcpiGbl_TypDecode [ACPI_EXTRACT_2BIT_FLAG (Resource->Dma.Flags, 5)], 125251904Sdteske AcpiGbl_BmDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->Dma.Flags, 2)], 126251904Sdteske AcpiGbl_SizDecode [ACPI_GET_2BIT_FLAG (Resource->Dma.Flags)]); 127251904Sdteske 128251904Sdteske /* Insert a descriptor name */ 129251904Sdteske 130251904Sdteske AcpiDmDescriptorName (); 131251904Sdteske AcpiOsPrintf (")\n"); 132251904Sdteske 133251904Sdteske AcpiDmIndent (Level + 1); 134251904Sdteske AcpiDmBitList (Resource->Dma.DmaChannelMask); 135251904Sdteske} 136251904Sdteske 137251904Sdteske 138251904Sdteske/******************************************************************************* 139251904Sdteske * 140251904Sdteske * FUNCTION: AcpiDmFixedDmaDescriptor 141251904Sdteske * 142251904Sdteske * PARAMETERS: Resource - Pointer to the resource descriptor 143251904Sdteske * Length - Length of the descriptor in bytes 144251904Sdteske * Level - Current source code indentation level 145251904Sdteske * 146251904Sdteske * RETURN: None 147251904Sdteske * 148251904Sdteske * DESCRIPTION: Decode a FixedDMA descriptor 149251904Sdteske * 150251904Sdteske ******************************************************************************/ 151251904Sdteske 152251904Sdteskevoid 153251904SdteskeAcpiDmFixedDmaDescriptor ( 154251904Sdteske AML_RESOURCE *Resource, 155251904Sdteske UINT32 Length, 156251904Sdteske UINT32 Level) 157251904Sdteske{ 158251904Sdteske 159251904Sdteske AcpiDmIndent (Level); 160251904Sdteske AcpiOsPrintf ("FixedDMA (0x%4.4X, 0x%4.4X, ", 161251904Sdteske Resource->FixedDma.RequestLines, 162251904Sdteske Resource->FixedDma.Channels); 163251904Sdteske 164251904Sdteske if (Resource->FixedDma.Width <= 5) 165251904Sdteske { 166251904Sdteske AcpiOsPrintf ("%s, ", 167251904Sdteske AcpiGbl_DtsDecode [Resource->FixedDma.Width]); 168251904Sdteske } 169251904Sdteske else 170251904Sdteske { 171251904Sdteske AcpiOsPrintf ("%X /* INVALID DMA WIDTH */, ", Resource->FixedDma.Width); 172251904Sdteske } 173251904Sdteske 174251904Sdteske /* Insert a descriptor name */ 175251904Sdteske 176251904Sdteske AcpiDmDescriptorName (); 177251904Sdteske AcpiOsPrintf (")\n"); 178251904Sdteske} 179251904Sdteske 180251904Sdteske 181251904Sdteske/******************************************************************************* 182249751Sdteske * 183249751Sdteske * FUNCTION: AcpiDmIoDescriptor 184249751Sdteske * 185249751Sdteske * PARAMETERS: Resource - Pointer to the resource descriptor 186249751Sdteske * Length - Length of the descriptor in bytes 187249751Sdteske * Level - Current source code indentation level 188249751Sdteske * 189249751Sdteske * RETURN: None 190249751Sdteske * 191249751Sdteske * DESCRIPTION: Decode an IO descriptor 192249751Sdteske * 193249751Sdteske ******************************************************************************/ 194249751Sdteske 195249751Sdteskevoid 196251236SdteskeAcpiDmIoDescriptor ( 197251236Sdteske AML_RESOURCE *Resource, 198249751Sdteske UINT32 Length, 199238438Sdteske UINT32 Level) 200238438Sdteske{ 201238438Sdteske 202238438Sdteske AcpiDmIndent (Level); 203249751Sdteske AcpiOsPrintf ("IO (%s,\n", 204251190Sdteske AcpiGbl_IoDecode [ACPI_GET_1BIT_FLAG (Resource->Io.Flags)]); 205251190Sdteske 206238438Sdteske AcpiDmIndent (Level + 1); 207240768Sdteske AcpiDmDumpInteger16 (Resource->Io.Minimum, "Range Minimum"); 208240768Sdteske 209240768Sdteske AcpiDmIndent (Level + 1); 210251236Sdteske AcpiDmDumpInteger16 (Resource->Io.Maximum, "Range Maximum"); 211240768Sdteske 212238438Sdteske AcpiDmIndent (Level + 1); 213238438Sdteske AcpiDmDumpInteger8 (Resource->Io.Alignment, "Alignment"); 214238438Sdteske 215238438Sdteske AcpiDmIndent (Level + 1); 216238438Sdteske AcpiDmDumpInteger8 (Resource->Io.AddressLength, "Length"); 217238438Sdteske 218238438Sdteske /* Insert a descriptor name */ 219238438Sdteske 220238438Sdteske AcpiDmIndent (Level + 1); 221238438Sdteske AcpiDmDescriptorName (); 222250633Sdteske AcpiOsPrintf (")\n"); 223238438Sdteske} 224252178Sdteske 225238438Sdteske 226238438Sdteske/******************************************************************************* 227238438Sdteske * 228238438Sdteske * FUNCTION: AcpiDmFixedIoDescriptor 229238438Sdteske * 230238438Sdteske * PARAMETERS: Resource - Pointer to the resource descriptor 231238438Sdteske * Length - Length of the descriptor in bytes 232238438Sdteske * Level - Current source code indentation level 233238438Sdteske * 234238438Sdteske * RETURN: None 235238438Sdteske * 236238438Sdteske * DESCRIPTION: Decode a Fixed IO descriptor 237238438Sdteske * 238238438Sdteske ******************************************************************************/ 239238438Sdteske 240251236Sdteskevoid 241251236SdteskeAcpiDmFixedIoDescriptor ( 242238438Sdteske AML_RESOURCE *Resource, 243238438Sdteske UINT32 Length, 244238438Sdteske UINT32 Level) 245238438Sdteske{ 246238438Sdteske 247238438Sdteske AcpiDmIndent (Level); 248238438Sdteske AcpiOsPrintf ("FixedIO (\n"); 249260678Sdteske 250260678Sdteske AcpiDmIndent (Level + 1); 251238438Sdteske AcpiDmDumpInteger16 (Resource->FixedIo.Address, "Address"); 252238438Sdteske 253238438Sdteske AcpiDmIndent (Level + 1); 254238438Sdteske AcpiDmDumpInteger8 (Resource->FixedIo.AddressLength, "Length"); 255251905Sdteske 256238438Sdteske /* Insert a descriptor name */ 257251905Sdteske 258251905Sdteske AcpiDmIndent (Level + 1); 259251905Sdteske AcpiDmDescriptorName (); 260251905Sdteske AcpiOsPrintf (")\n"); 261251905Sdteske} 262251905Sdteske 263251905Sdteske 264251905Sdteske/******************************************************************************* 265251905Sdteske * 266251905Sdteske * FUNCTION: AcpiDmStartDependentDescriptor 267251905Sdteske * 268251905Sdteske * PARAMETERS: Resource - Pointer to the resource descriptor 269251905Sdteske * Length - Length of the descriptor in bytes 270251905Sdteske * Level - Current source code indentation level 271251905Sdteske * 272251905Sdteske * RETURN: None 273251905Sdteske * 274251905Sdteske * DESCRIPTION: Decode a Start Dependendent functions descriptor 275251905Sdteske * 276251905Sdteske ******************************************************************************/ 277251905Sdteske 278251905Sdteskevoid 279251905SdteskeAcpiDmStartDependentDescriptor ( 280251905Sdteske AML_RESOURCE *Resource, 281251905Sdteske UINT32 Length, 282251905Sdteske UINT32 Level) 283251905Sdteske{ 284251905Sdteske 285251905Sdteske AcpiDmIndent (Level); 286251905Sdteske 287251905Sdteske if (Length & 1) 288251905Sdteske { 289251905Sdteske AcpiOsPrintf ("StartDependentFn (0x%2.2X, 0x%2.2X)\n", 290251905Sdteske (UINT32) ACPI_GET_2BIT_FLAG (Resource->StartDpf.Flags), 291251905Sdteske (UINT32) ACPI_EXTRACT_2BIT_FLAG (Resource->StartDpf.Flags, 2)); 292251905Sdteske } 293251905Sdteske else 294251905Sdteske { 295251905Sdteske AcpiOsPrintf ("StartDependentFnNoPri ()\n"); 296251905Sdteske } 297251905Sdteske 298251905Sdteske AcpiDmIndent (Level); 299251905Sdteske AcpiOsPrintf ("{\n"); 300251905Sdteske} 301251905Sdteske 302251905Sdteske 303251905Sdteske/******************************************************************************* 304251905Sdteske * 305251905Sdteske * FUNCTION: AcpiDmEndDependentDescriptor 306251905Sdteske * 307251905Sdteske * PARAMETERS: Resource - Pointer to the resource descriptor 308251905Sdteske * Length - Length of the descriptor in bytes 309251905Sdteske * Level - Current source code indentation level 310251905Sdteske * 311251905Sdteske * RETURN: None 312251905Sdteske * 313251905Sdteske * DESCRIPTION: Decode an End Dependent functions descriptor 314251905Sdteske * 315251905Sdteske ******************************************************************************/ 316251905Sdteske 317238438Sdteskevoid 318251905SdteskeAcpiDmEndDependentDescriptor ( 319251905Sdteske AML_RESOURCE *Resource, 320260678Sdteske UINT32 Length, 321260678Sdteske UINT32 Level) 322251905Sdteske{ 323251905Sdteske 324251907Sdteske AcpiDmIndent (Level); 325251905Sdteske AcpiOsPrintf ("}\n"); 326238438Sdteske AcpiDmIndent (Level); 327238438Sdteske AcpiOsPrintf ("EndDependentFn ()\n"); 328238438Sdteske} 329238438Sdteske 330238438Sdteske 331238438Sdteske/******************************************************************************* 332238438Sdteske * 333 * FUNCTION: AcpiDmVendorSmallDescriptor 334 * 335 * PARAMETERS: Resource - Pointer to the resource descriptor 336 * Length - Length of the descriptor in bytes 337 * Level - Current source code indentation level 338 * 339 * RETURN: None 340 * 341 * DESCRIPTION: Decode a Vendor Small Descriptor 342 * 343 ******************************************************************************/ 344 345void 346AcpiDmVendorSmallDescriptor ( 347 AML_RESOURCE *Resource, 348 UINT32 Length, 349 UINT32 Level) 350{ 351 352 AcpiDmVendorCommon ("Short", 353 ACPI_ADD_PTR (UINT8, Resource, sizeof (AML_RESOURCE_SMALL_HEADER)), 354 Length, Level); 355} 356 357#endif 358