dmresrcs.c revision 228110
1100966Siwasaki/******************************************************************************* 2100966Siwasaki * 3100966Siwasaki * Module Name: dmresrcs.c - "Small" Resource Descriptor disassembly 4100966Siwasaki * 5100966Siwasaki ******************************************************************************/ 6100966Siwasaki 7100966Siwasaki/* 8100966Siwasaki * Copyright (C) 2000 - 2011, Intel Corp. 9100966Siwasaki * All rights reserved. 10100966Siwasaki * 11100966Siwasaki * Redistribution and use in source and binary forms, with or without 12100966Siwasaki * modification, are permitted provided that the following conditions 13100966Siwasaki * are met: 14100966Siwasaki * 1. Redistributions of source code must retain the above copyright 15100966Siwasaki * notice, this list of conditions, and the following disclaimer, 16100966Siwasaki * without modification. 17100966Siwasaki * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18100966Siwasaki * substantially similar to the "NO WARRANTY" disclaimer below 19100966Siwasaki * ("Disclaimer") and any redistribution must be conditioned upon 20100966Siwasaki * including a substantially similar Disclaimer requirement for further 21100966Siwasaki * binary redistribution. 22100966Siwasaki * 3. Neither the names of the above-listed copyright holders nor the names 23100966Siwasaki * of any contributors may be used to endorse or promote products derived 24100966Siwasaki * from this software without specific prior written permission. 25100966Siwasaki * 26100966Siwasaki * Alternatively, this software may be distributed under the terms of the 27100966Siwasaki * GNU General Public License ("GPL") version 2 as published by the Free 28100966Siwasaki * Software Foundation. 29100966Siwasaki * 30100966Siwasaki * NO WARRANTY 31100966Siwasaki * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32100966Siwasaki * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33100966Siwasaki * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34100966Siwasaki * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35100966Siwasaki * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36100966Siwasaki * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37100966Siwasaki * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38100966Siwasaki * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39100966Siwasaki * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40100966Siwasaki * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41100966Siwasaki * POSSIBILITY OF SUCH DAMAGES. 42100966Siwasaki */ 43100966Siwasaki 44100966Siwasaki 45100966Siwasaki#include <contrib/dev/acpica/include/acpi.h> 46100966Siwasaki#include <contrib/dev/acpica/include/accommon.h> 47100966Siwasaki#include <contrib/dev/acpica/include/acdisasm.h> 48100966Siwasaki 49100966Siwasaki 50100966Siwasaki#ifdef ACPI_DISASSEMBLER 51100966Siwasaki 52100966Siwasaki#define _COMPONENT ACPI_CA_DEBUGGER 53100966Siwasaki ACPI_MODULE_NAME ("dbresrcs") 54100966Siwasaki 55100966Siwasaki 56100966Siwasaki/******************************************************************************* 57100966Siwasaki * 58100966Siwasaki * FUNCTION: AcpiDmIrqDescriptor 59100966Siwasaki * 60100966Siwasaki * PARAMETERS: Resource - Pointer to the resource descriptor 61100966Siwasaki * Length - Length of the descriptor in bytes 62100966Siwasaki * Level - Current source code indentation level 63100966Siwasaki * 64100966Siwasaki * RETURN: None 65100966Siwasaki * 66100966Siwasaki * DESCRIPTION: Decode a IRQ descriptor, either Irq() or IrqNoFlags() 67100966Siwasaki * 68100966Siwasaki ******************************************************************************/ 69100966Siwasaki 70100966Siwasakivoid 71100966SiwasakiAcpiDmIrqDescriptor ( 72100966Siwasaki AML_RESOURCE *Resource, 73100966Siwasaki UINT32 Length, 74100966Siwasaki UINT32 Level) 75100966Siwasaki{ 76100966Siwasaki 77100966Siwasaki AcpiDmIndent (Level); 78100966Siwasaki AcpiOsPrintf ("%s (", 79100966Siwasaki AcpiGbl_IrqDecode [Length & 1]); 80100966Siwasaki 81100966Siwasaki /* Decode flags byte if present */ 82100966Siwasaki 83100966Siwasaki if (Length & 1) 84100966Siwasaki { 85100966Siwasaki AcpiOsPrintf ("%s, %s, %s, ", 86100966Siwasaki AcpiGbl_HeDecode [Resource->Irq.Flags & 1], 87100966Siwasaki AcpiGbl_LlDecode [(Resource->Irq.Flags >> 3) & 1], 88100966Siwasaki AcpiGbl_ShrDecode [(Resource->Irq.Flags >> 4) & 1]); 89100966Siwasaki } 90100966Siwasaki 91100966Siwasaki /* Insert a descriptor name */ 92100966Siwasaki 93100966Siwasaki AcpiDmDescriptorName (); 94100966Siwasaki AcpiOsPrintf (")\n"); 95100966Siwasaki 96100966Siwasaki AcpiDmIndent (Level + 1); 97100966Siwasaki AcpiDmBitList (Resource->Irq.IrqMask); 98100966Siwasaki} 99100966Siwasaki 100100966Siwasaki 101100966Siwasaki/******************************************************************************* 102100966Siwasaki * 103100966Siwasaki * FUNCTION: AcpiDmDmaDescriptor 104100966Siwasaki * 105100966Siwasaki * PARAMETERS: Resource - Pointer to the resource descriptor 106100966Siwasaki * Length - Length of the descriptor in bytes 107100966Siwasaki * Level - Current source code indentation level 108100966Siwasaki * 109100966Siwasaki * RETURN: None 110100966Siwasaki * 111100966Siwasaki * DESCRIPTION: Decode a DMA descriptor 112100966Siwasaki * 113100966Siwasaki ******************************************************************************/ 114100966Siwasaki 115100966Siwasakivoid 116100966SiwasakiAcpiDmDmaDescriptor ( 117100966Siwasaki AML_RESOURCE *Resource, 118100966Siwasaki UINT32 Length, 119100966Siwasaki UINT32 Level) 120100966Siwasaki{ 121100966Siwasaki 122100966Siwasaki AcpiDmIndent (Level); 123100966Siwasaki AcpiOsPrintf ("DMA (%s, %s, %s, ", 124100966Siwasaki AcpiGbl_TypDecode [(Resource->Dma.Flags >> 5) & 3], 125100966Siwasaki AcpiGbl_BmDecode [(Resource->Dma.Flags >> 2) & 1], 126100966Siwasaki AcpiGbl_SizDecode [(Resource->Dma.Flags >> 0) & 3]); 127100966Siwasaki 128100966Siwasaki /* Insert a descriptor name */ 129100966Siwasaki 130100966Siwasaki AcpiDmDescriptorName (); 131100966Siwasaki AcpiOsPrintf (")\n"); 132100966Siwasaki 133100966Siwasaki AcpiDmIndent (Level + 1); 134100966Siwasaki AcpiDmBitList (Resource->Dma.DmaChannelMask); 135100966Siwasaki} 136100966Siwasaki 137100966Siwasaki 138100966Siwasaki/******************************************************************************* 139100966Siwasaki * 140100966Siwasaki * FUNCTION: AcpiDmFixedDmaDescriptor 141100966Siwasaki * 142100966Siwasaki * PARAMETERS: Resource - Pointer to the resource descriptor 143100966Siwasaki * Length - Length of the descriptor in bytes 144100966Siwasaki * Level - Current source code indentation level 145100966Siwasaki * 146100966Siwasaki * RETURN: None 147100966Siwasaki * 148100966Siwasaki * DESCRIPTION: Decode a FixedDMA descriptor 149100966Siwasaki * 150100966Siwasaki ******************************************************************************/ 151100966Siwasaki 152100966Siwasakivoid 153100966SiwasakiAcpiDmFixedDmaDescriptor ( 154100966Siwasaki AML_RESOURCE *Resource, 155100966Siwasaki UINT32 Length, 156100966Siwasaki UINT32 Level) 157100966Siwasaki{ 158100966Siwasaki 159100966Siwasaki AcpiDmIndent (Level); 160100966Siwasaki AcpiOsPrintf ("FixedDMA (0x%4.4X, 0x%4.4X, ", 161100966Siwasaki Resource->FixedDma.RequestLines, 162100966Siwasaki Resource->FixedDma.Channels); 163100966Siwasaki 164100966Siwasaki if (Resource->FixedDma.Width <= 5) 165100966Siwasaki { 166100966Siwasaki AcpiOsPrintf ("%s, ", 167100966Siwasaki AcpiGbl_DtsDecode [Resource->FixedDma.Width]); 168100966Siwasaki } 169100966Siwasaki else 170100966Siwasaki { 171100966Siwasaki AcpiOsPrintf ("%X /* INVALID DMA WIDTH */, ", Resource->FixedDma.Width); 172100966Siwasaki } 173100966Siwasaki 174100966Siwasaki /* Insert a descriptor name */ 175100966Siwasaki 176100966Siwasaki AcpiDmDescriptorName (); 177100966Siwasaki AcpiOsPrintf (")\n"); 178100966Siwasaki} 179100966Siwasaki 180100966Siwasaki 181100966Siwasaki/******************************************************************************* 182100966Siwasaki * 183100966Siwasaki * FUNCTION: AcpiDmIoDescriptor 184100966Siwasaki * 185100966Siwasaki * PARAMETERS: Resource - Pointer to the resource descriptor 186100966Siwasaki * Length - Length of the descriptor in bytes 187100966Siwasaki * Level - Current source code indentation level 188100966Siwasaki * 189100966Siwasaki * RETURN: None 190100966Siwasaki * 191100966Siwasaki * DESCRIPTION: Decode an IO descriptor 192100966Siwasaki * 193100966Siwasaki ******************************************************************************/ 194100966Siwasaki 195100966Siwasakivoid 196100966SiwasakiAcpiDmIoDescriptor ( 197100966Siwasaki AML_RESOURCE *Resource, 198100966Siwasaki UINT32 Length, 199100966Siwasaki UINT32 Level) 200100966Siwasaki{ 201100966Siwasaki 202100966Siwasaki AcpiDmIndent (Level); 203100966Siwasaki AcpiOsPrintf ("IO (%s,\n", 204100966Siwasaki AcpiGbl_IoDecode [(Resource->Io.Flags & 1)]); 205100966Siwasaki 206100966Siwasaki AcpiDmIndent (Level + 1); 207100966Siwasaki AcpiDmDumpInteger16 (Resource->Io.Minimum, "Range Minimum"); 208100966Siwasaki 209100966Siwasaki AcpiDmIndent (Level + 1); 210100966Siwasaki AcpiDmDumpInteger16 (Resource->Io.Maximum, "Range Maximum"); 211100966Siwasaki 212100966Siwasaki AcpiDmIndent (Level + 1); 213100966Siwasaki AcpiDmDumpInteger8 (Resource->Io.Alignment, "Alignment"); 214100966Siwasaki 215100966Siwasaki AcpiDmIndent (Level + 1); 216100966Siwasaki AcpiDmDumpInteger8 (Resource->Io.AddressLength, "Length"); 217100966Siwasaki 218100966Siwasaki /* Insert a descriptor name */ 219100966Siwasaki 220100966Siwasaki AcpiDmIndent (Level + 1); 221100966Siwasaki AcpiDmDescriptorName (); 222100966Siwasaki AcpiOsPrintf (")\n"); 223100966Siwasaki} 224100966Siwasaki 225100966Siwasaki 226100966Siwasaki/******************************************************************************* 227100966Siwasaki * 228100966Siwasaki * FUNCTION: AcpiDmFixedIoDescriptor 229100966Siwasaki * 230100966Siwasaki * PARAMETERS: Resource - Pointer to the resource descriptor 231100966Siwasaki * Length - Length of the descriptor in bytes 232100966Siwasaki * Level - Current source code indentation level 233100966Siwasaki * 234100966Siwasaki * RETURN: None 235100966Siwasaki * 236100966Siwasaki * DESCRIPTION: Decode a Fixed IO descriptor 237100966Siwasaki * 238100966Siwasaki ******************************************************************************/ 239100966Siwasaki 240100966Siwasakivoid 241100966SiwasakiAcpiDmFixedIoDescriptor ( 242100966Siwasaki AML_RESOURCE *Resource, 243100966Siwasaki UINT32 Length, 244100966Siwasaki UINT32 Level) 245100966Siwasaki{ 246100966Siwasaki 247100966Siwasaki AcpiDmIndent (Level); 248100966Siwasaki AcpiOsPrintf ("FixedIO (\n"); 249100966Siwasaki 250100966Siwasaki AcpiDmIndent (Level + 1); 251100966Siwasaki AcpiDmDumpInteger16 (Resource->FixedIo.Address, "Address"); 252100966Siwasaki 253100966Siwasaki AcpiDmIndent (Level + 1); 254100966Siwasaki AcpiDmDumpInteger8 (Resource->FixedIo.AddressLength, "Length"); 255100966Siwasaki 256100966Siwasaki /* Insert a descriptor name */ 257100966Siwasaki 258100966Siwasaki AcpiDmIndent (Level + 1); 259100966Siwasaki AcpiDmDescriptorName (); 260100966Siwasaki AcpiOsPrintf (")\n"); 261100966Siwasaki} 262100966Siwasaki 263100966Siwasaki 264100966Siwasaki/******************************************************************************* 265100966Siwasaki * 266100966Siwasaki * FUNCTION: AcpiDmStartDependentDescriptor 267100966Siwasaki * 268100966Siwasaki * PARAMETERS: Resource - Pointer to the resource descriptor 269100966Siwasaki * Length - Length of the descriptor in bytes 270100966Siwasaki * Level - Current source code indentation level 271100966Siwasaki * 272100966Siwasaki * RETURN: None 273100966Siwasaki * 274100966Siwasaki * DESCRIPTION: Decode a Start Dependendent functions descriptor 275100966Siwasaki * 276100966Siwasaki ******************************************************************************/ 277100966Siwasaki 278100966Siwasakivoid 279100966SiwasakiAcpiDmStartDependentDescriptor ( 280100966Siwasaki AML_RESOURCE *Resource, 281100966Siwasaki UINT32 Length, 282100966Siwasaki UINT32 Level) 283100966Siwasaki{ 284100966Siwasaki 285100966Siwasaki AcpiDmIndent (Level); 286100966Siwasaki 287100966Siwasaki if (Length & 1) 288100966Siwasaki { 289100966Siwasaki AcpiOsPrintf ("StartDependentFn (0x%2.2X, 0x%2.2X)\n", 290100966Siwasaki (UINT32) Resource->StartDpf.Flags & 3, 291100966Siwasaki (UINT32) (Resource->StartDpf.Flags >> 2) & 3); 292100966Siwasaki } 293100966Siwasaki else 294100966Siwasaki { 295100966Siwasaki AcpiOsPrintf ("StartDependentFnNoPri ()\n"); 296100966Siwasaki } 297100966Siwasaki 298100966Siwasaki AcpiDmIndent (Level); 299100966Siwasaki AcpiOsPrintf ("{\n"); 300100966Siwasaki} 301100966Siwasaki 302100966Siwasaki 303100966Siwasaki/******************************************************************************* 304100966Siwasaki * 305100966Siwasaki * FUNCTION: AcpiDmEndDependentDescriptor 306100966Siwasaki * 307100966Siwasaki * PARAMETERS: Resource - Pointer to the resource descriptor 308100966Siwasaki * Length - Length of the descriptor in bytes 309100966Siwasaki * Level - Current source code indentation level 310100966Siwasaki * 311100966Siwasaki * RETURN: None 312100966Siwasaki * 313100966Siwasaki * DESCRIPTION: Decode an End Dependent functions descriptor 314100966Siwasaki * 315100966Siwasaki ******************************************************************************/ 316100966Siwasaki 317100966Siwasakivoid 318100966SiwasakiAcpiDmEndDependentDescriptor ( 319100966Siwasaki AML_RESOURCE *Resource, 320100966Siwasaki UINT32 Length, 321100966Siwasaki UINT32 Level) 322100966Siwasaki{ 323100966Siwasaki 324100966Siwasaki AcpiDmIndent (Level); 325100966Siwasaki AcpiOsPrintf ("}\n"); 326100966Siwasaki AcpiDmIndent (Level); 327100966Siwasaki AcpiOsPrintf ("EndDependentFn ()\n"); 328100966Siwasaki} 329100966Siwasaki 330100966Siwasaki 331100966Siwasaki/******************************************************************************* 332100966Siwasaki * 333100966Siwasaki * FUNCTION: AcpiDmVendorSmallDescriptor 334100966Siwasaki * 335100966Siwasaki * PARAMETERS: Resource - Pointer to the resource descriptor 336100966Siwasaki * Length - Length of the descriptor in bytes 337100966Siwasaki * Level - Current source code indentation level 338100966Siwasaki * 339100966Siwasaki * RETURN: None 340100966Siwasaki * 341100966Siwasaki * DESCRIPTION: Decode a Vendor Small Descriptor 342100966Siwasaki * 343100966Siwasaki ******************************************************************************/ 344100966Siwasaki 345100966Siwasakivoid 346100966SiwasakiAcpiDmVendorSmallDescriptor ( 347100966Siwasaki AML_RESOURCE *Resource, 348100966Siwasaki UINT32 Length, 349100966Siwasaki UINT32 Level) 350100966Siwasaki{ 351100966Siwasaki 352100966Siwasaki AcpiDmVendorCommon ("Short", 353 ACPI_ADD_PTR (UINT8, Resource, sizeof (AML_RESOURCE_SMALL_HEADER)), 354 Length, Level); 355} 356 357#endif 358 359