1100966Siwasaki/******************************************************************************* 2100966Siwasaki * 3100966Siwasaki * Module Name: dmresrcs.c - "Small" Resource Descriptor disassembly 4100966Siwasaki * 5100966Siwasaki ******************************************************************************/ 6100966Siwasaki 7217365Sjkim/* 8281075Sdim * Copyright (C) 2000 - 2015, 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 49100966Siwasaki#ifdef ACPI_DISASSEMBLER 50100966Siwasaki 51102550Siwasaki#define _COMPONENT ACPI_CA_DEBUGGER 52100966Siwasaki ACPI_MODULE_NAME ("dbresrcs") 53100966Siwasaki 54100966Siwasaki 55100966Siwasaki/******************************************************************************* 56100966Siwasaki * 57100966Siwasaki * FUNCTION: AcpiDmIrqDescriptor 58100966Siwasaki * 59281075Sdim * PARAMETERS: Info - Extra resource info 60281075Sdim * 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 ( 72281075Sdim ACPI_OP_WALK_INFO *Info, 73151937Sjkim AML_RESOURCE *Resource, 74100966Siwasaki UINT32 Length, 75100966Siwasaki UINT32 Level) 76100966Siwasaki{ 77100966Siwasaki 78100966Siwasaki AcpiDmIndent (Level); 79100966Siwasaki AcpiOsPrintf ("%s (", 80243347Sjkim AcpiGbl_IrqDecode [ACPI_GET_1BIT_FLAG (Length)]); 81100966Siwasaki 82151937Sjkim /* Decode flags byte if present */ 83151937Sjkim 84100966Siwasaki if (Length & 1) 85100966Siwasaki { 86167802Sjkim AcpiOsPrintf ("%s, %s, %s, ", 87243347Sjkim AcpiGbl_HeDecode [ACPI_GET_1BIT_FLAG (Resource->Irq.Flags)], 88243347Sjkim AcpiGbl_LlDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->Irq.Flags, 3)], 89243347Sjkim AcpiGbl_ShrDecode [ACPI_EXTRACT_2BIT_FLAG (Resource->Irq.Flags, 4)]); 90100966Siwasaki } 91167802Sjkim 92167802Sjkim /* Insert a descriptor name */ 93167802Sjkim 94167802Sjkim AcpiDmDescriptorName (); 95151937Sjkim AcpiOsPrintf (")\n"); 96100966Siwasaki 97151937Sjkim AcpiDmIndent (Level + 1); 98151937Sjkim AcpiDmBitList (Resource->Irq.IrqMask); 99100966Siwasaki} 100100966Siwasaki 101100966Siwasaki 102100966Siwasaki/******************************************************************************* 103100966Siwasaki * 104100966Siwasaki * FUNCTION: AcpiDmDmaDescriptor 105100966Siwasaki * 106281075Sdim * PARAMETERS: Info - Extra resource info 107281075Sdim * Resource - Pointer to the resource descriptor 108100966Siwasaki * Length - Length of the descriptor in bytes 109100966Siwasaki * Level - Current source code indentation level 110100966Siwasaki * 111100966Siwasaki * RETURN: None 112100966Siwasaki * 113100966Siwasaki * DESCRIPTION: Decode a DMA descriptor 114100966Siwasaki * 115100966Siwasaki ******************************************************************************/ 116100966Siwasaki 117100966Siwasakivoid 118100966SiwasakiAcpiDmDmaDescriptor ( 119281075Sdim ACPI_OP_WALK_INFO *Info, 120151937Sjkim AML_RESOURCE *Resource, 121100966Siwasaki UINT32 Length, 122100966Siwasaki UINT32 Level) 123100966Siwasaki{ 124100966Siwasaki 125100966Siwasaki AcpiDmIndent (Level); 126167802Sjkim AcpiOsPrintf ("DMA (%s, %s, %s, ", 127243347Sjkim AcpiGbl_TypDecode [ACPI_EXTRACT_2BIT_FLAG (Resource->Dma.Flags, 5)], 128243347Sjkim AcpiGbl_BmDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->Dma.Flags, 2)], 129243347Sjkim AcpiGbl_SizDecode [ACPI_GET_2BIT_FLAG (Resource->Dma.Flags)]); 130100966Siwasaki 131167802Sjkim /* Insert a descriptor name */ 132167802Sjkim 133167802Sjkim AcpiDmDescriptorName (); 134167802Sjkim AcpiOsPrintf (")\n"); 135167802Sjkim 136151937Sjkim AcpiDmIndent (Level + 1); 137151937Sjkim AcpiDmBitList (Resource->Dma.DmaChannelMask); 138100966Siwasaki} 139100966Siwasaki 140100966Siwasaki 141100966Siwasaki/******************************************************************************* 142100966Siwasaki * 143228110Sjkim * FUNCTION: AcpiDmFixedDmaDescriptor 144228110Sjkim * 145281075Sdim * PARAMETERS: Info - Extra resource info 146281075Sdim * Resource - Pointer to the resource descriptor 147228110Sjkim * Length - Length of the descriptor in bytes 148228110Sjkim * Level - Current source code indentation level 149228110Sjkim * 150228110Sjkim * RETURN: None 151228110Sjkim * 152228110Sjkim * DESCRIPTION: Decode a FixedDMA descriptor 153228110Sjkim * 154228110Sjkim ******************************************************************************/ 155228110Sjkim 156228110Sjkimvoid 157228110SjkimAcpiDmFixedDmaDescriptor ( 158281075Sdim ACPI_OP_WALK_INFO *Info, 159228110Sjkim AML_RESOURCE *Resource, 160228110Sjkim UINT32 Length, 161228110Sjkim UINT32 Level) 162228110Sjkim{ 163228110Sjkim 164228110Sjkim AcpiDmIndent (Level); 165228110Sjkim AcpiOsPrintf ("FixedDMA (0x%4.4X, 0x%4.4X, ", 166228110Sjkim Resource->FixedDma.RequestLines, 167228110Sjkim Resource->FixedDma.Channels); 168228110Sjkim 169228110Sjkim if (Resource->FixedDma.Width <= 5) 170228110Sjkim { 171228110Sjkim AcpiOsPrintf ("%s, ", 172228110Sjkim AcpiGbl_DtsDecode [Resource->FixedDma.Width]); 173228110Sjkim } 174228110Sjkim else 175228110Sjkim { 176228110Sjkim AcpiOsPrintf ("%X /* INVALID DMA WIDTH */, ", Resource->FixedDma.Width); 177228110Sjkim } 178228110Sjkim 179228110Sjkim /* Insert a descriptor name */ 180228110Sjkim 181228110Sjkim AcpiDmDescriptorName (); 182228110Sjkim AcpiOsPrintf (")\n"); 183228110Sjkim} 184228110Sjkim 185228110Sjkim 186228110Sjkim/******************************************************************************* 187228110Sjkim * 188100966Siwasaki * FUNCTION: AcpiDmIoDescriptor 189100966Siwasaki * 190281075Sdim * PARAMETERS: Info - Extra resource info 191281075Sdim * Resource - Pointer to the resource descriptor 192100966Siwasaki * Length - Length of the descriptor in bytes 193100966Siwasaki * Level - Current source code indentation level 194100966Siwasaki * 195100966Siwasaki * RETURN: None 196100966Siwasaki * 197100966Siwasaki * DESCRIPTION: Decode an IO descriptor 198100966Siwasaki * 199100966Siwasaki ******************************************************************************/ 200100966Siwasaki 201100966Siwasakivoid 202100966SiwasakiAcpiDmIoDescriptor ( 203281075Sdim ACPI_OP_WALK_INFO *Info, 204151937Sjkim AML_RESOURCE *Resource, 205100966Siwasaki UINT32 Length, 206100966Siwasaki UINT32 Level) 207100966Siwasaki{ 208100966Siwasaki 209100966Siwasaki AcpiDmIndent (Level); 210151937Sjkim AcpiOsPrintf ("IO (%s,\n", 211243347Sjkim AcpiGbl_IoDecode [ACPI_GET_1BIT_FLAG (Resource->Io.Flags)]); 212151937Sjkim 213151937Sjkim AcpiDmIndent (Level + 1); 214167802Sjkim AcpiDmDumpInteger16 (Resource->Io.Minimum, "Range Minimum"); 215151937Sjkim 216151937Sjkim AcpiDmIndent (Level + 1); 217167802Sjkim AcpiDmDumpInteger16 (Resource->Io.Maximum, "Range Maximum"); 218151937Sjkim 219151937Sjkim AcpiDmIndent (Level + 1); 220167802Sjkim AcpiDmDumpInteger8 (Resource->Io.Alignment, "Alignment"); 221151937Sjkim 222151937Sjkim AcpiDmIndent (Level + 1); 223167802Sjkim AcpiDmDumpInteger8 (Resource->Io.AddressLength, "Length"); 224151937Sjkim 225167802Sjkim /* Insert a descriptor name */ 226167802Sjkim 227151937Sjkim AcpiDmIndent (Level + 1); 228167802Sjkim AcpiDmDescriptorName (); 229151937Sjkim AcpiOsPrintf (")\n"); 230100966Siwasaki} 231100966Siwasaki 232100966Siwasaki 233100966Siwasaki/******************************************************************************* 234100966Siwasaki * 235100966Siwasaki * FUNCTION: AcpiDmFixedIoDescriptor 236100966Siwasaki * 237281075Sdim * PARAMETERS: Info - Extra resource info 238281075Sdim * Resource - Pointer to the resource descriptor 239100966Siwasaki * Length - Length of the descriptor in bytes 240100966Siwasaki * Level - Current source code indentation level 241100966Siwasaki * 242100966Siwasaki * RETURN: None 243100966Siwasaki * 244100966Siwasaki * DESCRIPTION: Decode a Fixed IO descriptor 245100966Siwasaki * 246100966Siwasaki ******************************************************************************/ 247100966Siwasaki 248100966Siwasakivoid 249100966SiwasakiAcpiDmFixedIoDescriptor ( 250281075Sdim ACPI_OP_WALK_INFO *Info, 251151937Sjkim AML_RESOURCE *Resource, 252100966Siwasaki UINT32 Length, 253100966Siwasaki UINT32 Level) 254100966Siwasaki{ 255100966Siwasaki 256100966Siwasaki AcpiDmIndent (Level); 257151937Sjkim AcpiOsPrintf ("FixedIO (\n"); 258151937Sjkim 259151937Sjkim AcpiDmIndent (Level + 1); 260167802Sjkim AcpiDmDumpInteger16 (Resource->FixedIo.Address, "Address"); 261151937Sjkim 262151937Sjkim AcpiDmIndent (Level + 1); 263167802Sjkim AcpiDmDumpInteger8 (Resource->FixedIo.AddressLength, "Length"); 264151937Sjkim 265167802Sjkim /* Insert a descriptor name */ 266167802Sjkim 267151937Sjkim AcpiDmIndent (Level + 1); 268167802Sjkim AcpiDmDescriptorName (); 269151937Sjkim AcpiOsPrintf (")\n"); 270100966Siwasaki} 271100966Siwasaki 272100966Siwasaki 273100966Siwasaki/******************************************************************************* 274100966Siwasaki * 275100966Siwasaki * FUNCTION: AcpiDmStartDependentDescriptor 276100966Siwasaki * 277281075Sdim * PARAMETERS: Info - Extra resource info 278281075Sdim * Resource - Pointer to the resource descriptor 279100966Siwasaki * Length - Length of the descriptor in bytes 280100966Siwasaki * Level - Current source code indentation level 281100966Siwasaki * 282100966Siwasaki * RETURN: None 283100966Siwasaki * 284100966Siwasaki * DESCRIPTION: Decode a Start Dependendent functions descriptor 285100966Siwasaki * 286100966Siwasaki ******************************************************************************/ 287100966Siwasaki 288100966Siwasakivoid 289100966SiwasakiAcpiDmStartDependentDescriptor ( 290281075Sdim ACPI_OP_WALK_INFO *Info, 291151937Sjkim AML_RESOURCE *Resource, 292100966Siwasaki UINT32 Length, 293100966Siwasaki UINT32 Level) 294100966Siwasaki{ 295100966Siwasaki 296100966Siwasaki AcpiDmIndent (Level); 297100966Siwasaki 298100966Siwasaki if (Length & 1) 299100966Siwasaki { 300100966Siwasaki AcpiOsPrintf ("StartDependentFn (0x%2.2X, 0x%2.2X)\n", 301243347Sjkim (UINT32) ACPI_GET_2BIT_FLAG (Resource->StartDpf.Flags), 302243347Sjkim (UINT32) ACPI_EXTRACT_2BIT_FLAG (Resource->StartDpf.Flags, 2)); 303100966Siwasaki } 304100966Siwasaki else 305100966Siwasaki { 306100966Siwasaki AcpiOsPrintf ("StartDependentFnNoPri ()\n"); 307100966Siwasaki } 308100966Siwasaki 309100966Siwasaki AcpiDmIndent (Level); 310100966Siwasaki AcpiOsPrintf ("{\n"); 311100966Siwasaki} 312100966Siwasaki 313100966Siwasaki 314100966Siwasaki/******************************************************************************* 315100966Siwasaki * 316100966Siwasaki * FUNCTION: AcpiDmEndDependentDescriptor 317100966Siwasaki * 318281075Sdim * PARAMETERS: Info - Extra resource info 319281075Sdim * Resource - Pointer to the resource descriptor 320100966Siwasaki * Length - Length of the descriptor in bytes 321100966Siwasaki * Level - Current source code indentation level 322100966Siwasaki * 323100966Siwasaki * RETURN: None 324100966Siwasaki * 325100966Siwasaki * DESCRIPTION: Decode an End Dependent functions descriptor 326100966Siwasaki * 327100966Siwasaki ******************************************************************************/ 328100966Siwasaki 329100966Siwasakivoid 330100966SiwasakiAcpiDmEndDependentDescriptor ( 331281075Sdim ACPI_OP_WALK_INFO *Info, 332151937Sjkim AML_RESOURCE *Resource, 333100966Siwasaki UINT32 Length, 334100966Siwasaki UINT32 Level) 335100966Siwasaki{ 336100966Siwasaki 337100966Siwasaki AcpiDmIndent (Level); 338100966Siwasaki AcpiOsPrintf ("}\n"); 339100966Siwasaki AcpiDmIndent (Level); 340100966Siwasaki AcpiOsPrintf ("EndDependentFn ()\n"); 341100966Siwasaki} 342100966Siwasaki 343100966Siwasaki 344100966Siwasaki/******************************************************************************* 345100966Siwasaki * 346100966Siwasaki * FUNCTION: AcpiDmVendorSmallDescriptor 347100966Siwasaki * 348281075Sdim * PARAMETERS: Info - Extra resource info 349281075Sdim * Resource - Pointer to the resource descriptor 350100966Siwasaki * Length - Length of the descriptor in bytes 351100966Siwasaki * Level - Current source code indentation level 352100966Siwasaki * 353100966Siwasaki * RETURN: None 354100966Siwasaki * 355100966Siwasaki * DESCRIPTION: Decode a Vendor Small Descriptor 356100966Siwasaki * 357100966Siwasaki ******************************************************************************/ 358100966Siwasaki 359100966Siwasakivoid 360100966SiwasakiAcpiDmVendorSmallDescriptor ( 361281075Sdim ACPI_OP_WALK_INFO *Info, 362151937Sjkim AML_RESOURCE *Resource, 363100966Siwasaki UINT32 Length, 364100966Siwasaki UINT32 Level) 365100966Siwasaki{ 366100966Siwasaki 367167802Sjkim AcpiDmVendorCommon ("Short", 368167802Sjkim ACPI_ADD_PTR (UINT8, Resource, sizeof (AML_RESOURCE_SMALL_HEADER)), 369151937Sjkim Length, Level); 370100966Siwasaki} 371100966Siwasaki 372100966Siwasaki#endif 373