1100966Siwasaki/******************************************************************************* 2100966Siwasaki * 3100966Siwasaki * Module Name: dmresrcs.c - "Small" Resource Descriptor disassembly 4100966Siwasaki * 5100966Siwasaki ******************************************************************************/ 6100966Siwasaki 7217365Sjkim/* 8217365Sjkim * Copyright (C) 2000 - 2011, Intel Corp. 9100966Siwasaki * All rights reserved. 10100966Siwasaki * 11217365Sjkim * Redistribution and use in source and binary forms, with or without 12217365Sjkim * modification, are permitted provided that the following conditions 13217365Sjkim * are met: 14217365Sjkim * 1. Redistributions of source code must retain the above copyright 15217365Sjkim * notice, this list of conditions, and the following disclaimer, 16217365Sjkim * without modification. 17217365Sjkim * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18217365Sjkim * substantially similar to the "NO WARRANTY" disclaimer below 19217365Sjkim * ("Disclaimer") and any redistribution must be conditioned upon 20217365Sjkim * including a substantially similar Disclaimer requirement for further 21217365Sjkim * binary redistribution. 22217365Sjkim * 3. Neither the names of the above-listed copyright holders nor the names 23217365Sjkim * of any contributors may be used to endorse or promote products derived 24217365Sjkim * from this software without specific prior written permission. 25100966Siwasaki * 26217365Sjkim * Alternatively, this software may be distributed under the terms of the 27217365Sjkim * GNU General Public License ("GPL") version 2 as published by the Free 28217365Sjkim * Software Foundation. 29100966Siwasaki * 30217365Sjkim * NO WARRANTY 31217365Sjkim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32217365Sjkim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33217365Sjkim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34217365Sjkim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35217365Sjkim * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36217365Sjkim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37217365Sjkim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38217365Sjkim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39217365Sjkim * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40217365Sjkim * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41217365Sjkim * POSSIBILITY OF SUCH DAMAGES. 42217365Sjkim */ 43100966Siwasaki 44100966Siwasaki 45193341Sjkim#include <contrib/dev/acpica/include/acpi.h> 46193341Sjkim#include <contrib/dev/acpica/include/accommon.h> 47193341Sjkim#include <contrib/dev/acpica/include/acdisasm.h> 48100966Siwasaki 49100966Siwasaki 50100966Siwasaki#ifdef ACPI_DISASSEMBLER 51100966Siwasaki 52102550Siwasaki#define _COMPONENT ACPI_CA_DEBUGGER 53100966Siwasaki ACPI_MODULE_NAME ("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 * 66151937Sjkim * DESCRIPTION: Decode a IRQ descriptor, either Irq() or IrqNoFlags() 67100966Siwasaki * 68100966Siwasaki ******************************************************************************/ 69100966Siwasaki 70100966Siwasakivoid 71100966SiwasakiAcpiDmIrqDescriptor ( 72151937Sjkim AML_RESOURCE *Resource, 73100966Siwasaki UINT32 Length, 74100966Siwasaki UINT32 Level) 75100966Siwasaki{ 76100966Siwasaki 77100966Siwasaki AcpiDmIndent (Level); 78100966Siwasaki AcpiOsPrintf ("%s (", 79100966Siwasaki AcpiGbl_IrqDecode [Length & 1]); 80100966Siwasaki 81151937Sjkim /* Decode flags byte if present */ 82151937Sjkim 83100966Siwasaki if (Length & 1) 84100966Siwasaki { 85167802Sjkim AcpiOsPrintf ("%s, %s, %s, ", 86167802Sjkim AcpiGbl_HeDecode [Resource->Irq.Flags & 1], 87167802Sjkim AcpiGbl_LlDecode [(Resource->Irq.Flags >> 3) & 1], 88167802Sjkim AcpiGbl_ShrDecode [(Resource->Irq.Flags >> 4) & 1]); 89100966Siwasaki } 90167802Sjkim 91167802Sjkim /* Insert a descriptor name */ 92167802Sjkim 93167802Sjkim AcpiDmDescriptorName (); 94151937Sjkim AcpiOsPrintf (")\n"); 95100966Siwasaki 96151937Sjkim AcpiDmIndent (Level + 1); 97151937Sjkim 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 ( 117151937Sjkim AML_RESOURCE *Resource, 118100966Siwasaki UINT32 Length, 119100966Siwasaki UINT32 Level) 120100966Siwasaki{ 121100966Siwasaki 122100966Siwasaki AcpiDmIndent (Level); 123167802Sjkim AcpiOsPrintf ("DMA (%s, %s, %s, ", 124167802Sjkim AcpiGbl_TypDecode [(Resource->Dma.Flags >> 5) & 3], 125167802Sjkim AcpiGbl_BmDecode [(Resource->Dma.Flags >> 2) & 1], 126167802Sjkim AcpiGbl_SizDecode [(Resource->Dma.Flags >> 0) & 3]); 127100966Siwasaki 128167802Sjkim /* Insert a descriptor name */ 129167802Sjkim 130167802Sjkim AcpiDmDescriptorName (); 131167802Sjkim AcpiOsPrintf (")\n"); 132167802Sjkim 133151937Sjkim AcpiDmIndent (Level + 1); 134151937Sjkim AcpiDmBitList (Resource->Dma.DmaChannelMask); 135100966Siwasaki} 136100966Siwasaki 137100966Siwasaki 138100966Siwasaki/******************************************************************************* 139100966Siwasaki * 140100966Siwasaki * FUNCTION: AcpiDmIoDescriptor 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 an IO descriptor 149100966Siwasaki * 150100966Siwasaki ******************************************************************************/ 151100966Siwasaki 152100966Siwasakivoid 153100966SiwasakiAcpiDmIoDescriptor ( 154151937Sjkim AML_RESOURCE *Resource, 155100966Siwasaki UINT32 Length, 156100966Siwasaki UINT32 Level) 157100966Siwasaki{ 158100966Siwasaki 159100966Siwasaki AcpiDmIndent (Level); 160151937Sjkim AcpiOsPrintf ("IO (%s,\n", 161151937Sjkim AcpiGbl_IoDecode [(Resource->Io.Flags & 1)]); 162151937Sjkim 163151937Sjkim AcpiDmIndent (Level + 1); 164167802Sjkim AcpiDmDumpInteger16 (Resource->Io.Minimum, "Range Minimum"); 165151937Sjkim 166151937Sjkim AcpiDmIndent (Level + 1); 167167802Sjkim AcpiDmDumpInteger16 (Resource->Io.Maximum, "Range Maximum"); 168151937Sjkim 169151937Sjkim AcpiDmIndent (Level + 1); 170167802Sjkim AcpiDmDumpInteger8 (Resource->Io.Alignment, "Alignment"); 171151937Sjkim 172151937Sjkim AcpiDmIndent (Level + 1); 173167802Sjkim AcpiDmDumpInteger8 (Resource->Io.AddressLength, "Length"); 174151937Sjkim 175167802Sjkim /* Insert a descriptor name */ 176167802Sjkim 177151937Sjkim AcpiDmIndent (Level + 1); 178167802Sjkim AcpiDmDescriptorName (); 179151937Sjkim AcpiOsPrintf (")\n"); 180100966Siwasaki} 181100966Siwasaki 182100966Siwasaki 183100966Siwasaki/******************************************************************************* 184100966Siwasaki * 185100966Siwasaki * FUNCTION: AcpiDmFixedIoDescriptor 186100966Siwasaki * 187100966Siwasaki * PARAMETERS: Resource - Pointer to the resource descriptor 188100966Siwasaki * Length - Length of the descriptor in bytes 189100966Siwasaki * Level - Current source code indentation level 190100966Siwasaki * 191100966Siwasaki * RETURN: None 192100966Siwasaki * 193100966Siwasaki * DESCRIPTION: Decode a Fixed IO descriptor 194100966Siwasaki * 195100966Siwasaki ******************************************************************************/ 196100966Siwasaki 197100966Siwasakivoid 198100966SiwasakiAcpiDmFixedIoDescriptor ( 199151937Sjkim AML_RESOURCE *Resource, 200100966Siwasaki UINT32 Length, 201100966Siwasaki UINT32 Level) 202100966Siwasaki{ 203100966Siwasaki 204100966Siwasaki AcpiDmIndent (Level); 205151937Sjkim AcpiOsPrintf ("FixedIO (\n"); 206151937Sjkim 207151937Sjkim AcpiDmIndent (Level + 1); 208167802Sjkim AcpiDmDumpInteger16 (Resource->FixedIo.Address, "Address"); 209151937Sjkim 210151937Sjkim AcpiDmIndent (Level + 1); 211167802Sjkim AcpiDmDumpInteger8 (Resource->FixedIo.AddressLength, "Length"); 212151937Sjkim 213167802Sjkim /* Insert a descriptor name */ 214167802Sjkim 215151937Sjkim AcpiDmIndent (Level + 1); 216167802Sjkim AcpiDmDescriptorName (); 217151937Sjkim AcpiOsPrintf (")\n"); 218100966Siwasaki} 219100966Siwasaki 220100966Siwasaki 221100966Siwasaki/******************************************************************************* 222100966Siwasaki * 223100966Siwasaki * FUNCTION: AcpiDmStartDependentDescriptor 224100966Siwasaki * 225100966Siwasaki * PARAMETERS: Resource - Pointer to the resource descriptor 226100966Siwasaki * Length - Length of the descriptor in bytes 227100966Siwasaki * Level - Current source code indentation level 228100966Siwasaki * 229100966Siwasaki * RETURN: None 230100966Siwasaki * 231100966Siwasaki * DESCRIPTION: Decode a Start Dependendent functions descriptor 232100966Siwasaki * 233100966Siwasaki ******************************************************************************/ 234100966Siwasaki 235100966Siwasakivoid 236100966SiwasakiAcpiDmStartDependentDescriptor ( 237151937Sjkim AML_RESOURCE *Resource, 238100966Siwasaki UINT32 Length, 239100966Siwasaki UINT32 Level) 240100966Siwasaki{ 241100966Siwasaki 242100966Siwasaki AcpiDmIndent (Level); 243100966Siwasaki 244100966Siwasaki if (Length & 1) 245100966Siwasaki { 246100966Siwasaki AcpiOsPrintf ("StartDependentFn (0x%2.2X, 0x%2.2X)\n", 247151937Sjkim (UINT32) Resource->StartDpf.Flags & 3, 248151937Sjkim (UINT32) (Resource->StartDpf.Flags >> 2) & 3); 249100966Siwasaki } 250100966Siwasaki else 251100966Siwasaki { 252100966Siwasaki AcpiOsPrintf ("StartDependentFnNoPri ()\n"); 253100966Siwasaki } 254100966Siwasaki 255100966Siwasaki AcpiDmIndent (Level); 256100966Siwasaki AcpiOsPrintf ("{\n"); 257100966Siwasaki} 258100966Siwasaki 259100966Siwasaki 260100966Siwasaki/******************************************************************************* 261100966Siwasaki * 262100966Siwasaki * FUNCTION: AcpiDmEndDependentDescriptor 263100966Siwasaki * 264100966Siwasaki * PARAMETERS: Resource - Pointer to the resource descriptor 265100966Siwasaki * Length - Length of the descriptor in bytes 266100966Siwasaki * Level - Current source code indentation level 267100966Siwasaki * 268100966Siwasaki * RETURN: None 269100966Siwasaki * 270100966Siwasaki * DESCRIPTION: Decode an End Dependent functions descriptor 271100966Siwasaki * 272100966Siwasaki ******************************************************************************/ 273100966Siwasaki 274100966Siwasakivoid 275100966SiwasakiAcpiDmEndDependentDescriptor ( 276151937Sjkim AML_RESOURCE *Resource, 277100966Siwasaki UINT32 Length, 278100966Siwasaki UINT32 Level) 279100966Siwasaki{ 280100966Siwasaki 281100966Siwasaki AcpiDmIndent (Level); 282100966Siwasaki AcpiOsPrintf ("}\n"); 283100966Siwasaki AcpiDmIndent (Level); 284100966Siwasaki AcpiOsPrintf ("EndDependentFn ()\n"); 285100966Siwasaki} 286100966Siwasaki 287100966Siwasaki 288100966Siwasaki/******************************************************************************* 289100966Siwasaki * 290100966Siwasaki * FUNCTION: AcpiDmVendorSmallDescriptor 291100966Siwasaki * 292100966Siwasaki * PARAMETERS: Resource - Pointer to the resource descriptor 293100966Siwasaki * Length - Length of the descriptor in bytes 294100966Siwasaki * Level - Current source code indentation level 295100966Siwasaki * 296100966Siwasaki * RETURN: None 297100966Siwasaki * 298100966Siwasaki * DESCRIPTION: Decode a Vendor Small Descriptor 299100966Siwasaki * 300100966Siwasaki ******************************************************************************/ 301100966Siwasaki 302100966Siwasakivoid 303100966SiwasakiAcpiDmVendorSmallDescriptor ( 304151937Sjkim AML_RESOURCE *Resource, 305100966Siwasaki UINT32 Length, 306100966Siwasaki UINT32 Level) 307100966Siwasaki{ 308100966Siwasaki 309167802Sjkim AcpiDmVendorCommon ("Short", 310167802Sjkim ACPI_ADD_PTR (UINT8, Resource, sizeof (AML_RESOURCE_SMALL_HEADER)), 311151937Sjkim Length, Level); 312100966Siwasaki} 313100966Siwasaki 314100966Siwasaki#endif 315100966Siwasaki 316