1100966Siwasaki/******************************************************************************* 2100966Siwasaki * 3100966Siwasaki * Module Name: dmresrcs.c - "Small" Resource Descriptor disassembly 4100966Siwasaki * 5100966Siwasaki ******************************************************************************/ 6100966Siwasaki 7217365Sjkim/* 8306536Sjkim * Copyright (C) 2000 - 2016, 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 49102550Siwasaki#define _COMPONENT ACPI_CA_DEBUGGER 50100966Siwasaki ACPI_MODULE_NAME ("dbresrcs") 51100966Siwasaki 52100966Siwasaki 53100966Siwasaki/******************************************************************************* 54100966Siwasaki * 55100966Siwasaki * FUNCTION: AcpiDmIrqDescriptor 56100966Siwasaki * 57281075Sdim * PARAMETERS: Info - Extra resource info 58281075Sdim * Resource - Pointer to the resource descriptor 59100966Siwasaki * Length - Length of the descriptor in bytes 60100966Siwasaki * Level - Current source code indentation level 61100966Siwasaki * 62100966Siwasaki * RETURN: None 63100966Siwasaki * 64151937Sjkim * DESCRIPTION: Decode a IRQ descriptor, either Irq() or IrqNoFlags() 65100966Siwasaki * 66100966Siwasaki ******************************************************************************/ 67100966Siwasaki 68100966Siwasakivoid 69100966SiwasakiAcpiDmIrqDescriptor ( 70281075Sdim ACPI_OP_WALK_INFO *Info, 71151937Sjkim AML_RESOURCE *Resource, 72100966Siwasaki UINT32 Length, 73100966Siwasaki UINT32 Level) 74100966Siwasaki{ 75100966Siwasaki 76100966Siwasaki AcpiDmIndent (Level); 77100966Siwasaki AcpiOsPrintf ("%s (", 78243347Sjkim AcpiGbl_IrqDecode [ACPI_GET_1BIT_FLAG (Length)]); 79100966Siwasaki 80151937Sjkim /* Decode flags byte if present */ 81151937Sjkim 82100966Siwasaki if (Length & 1) 83100966Siwasaki { 84167802Sjkim AcpiOsPrintf ("%s, %s, %s, ", 85243347Sjkim AcpiGbl_HeDecode [ACPI_GET_1BIT_FLAG (Resource->Irq.Flags)], 86243347Sjkim AcpiGbl_LlDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->Irq.Flags, 3)], 87243347Sjkim AcpiGbl_ShrDecode [ACPI_EXTRACT_2BIT_FLAG (Resource->Irq.Flags, 4)]); 88100966Siwasaki } 89167802Sjkim 90167802Sjkim /* Insert a descriptor name */ 91167802Sjkim 92167802Sjkim AcpiDmDescriptorName (); 93151937Sjkim AcpiOsPrintf (")\n"); 94100966Siwasaki 95151937Sjkim AcpiDmIndent (Level + 1); 96151937Sjkim AcpiDmBitList (Resource->Irq.IrqMask); 97100966Siwasaki} 98100966Siwasaki 99100966Siwasaki 100100966Siwasaki/******************************************************************************* 101100966Siwasaki * 102100966Siwasaki * FUNCTION: AcpiDmDmaDescriptor 103100966Siwasaki * 104281075Sdim * PARAMETERS: Info - Extra resource info 105281075Sdim * 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 ( 117281075Sdim ACPI_OP_WALK_INFO *Info, 118151937Sjkim AML_RESOURCE *Resource, 119100966Siwasaki UINT32 Length, 120100966Siwasaki UINT32 Level) 121100966Siwasaki{ 122100966Siwasaki 123100966Siwasaki AcpiDmIndent (Level); 124167802Sjkim AcpiOsPrintf ("DMA (%s, %s, %s, ", 125243347Sjkim AcpiGbl_TypDecode [ACPI_EXTRACT_2BIT_FLAG (Resource->Dma.Flags, 5)], 126243347Sjkim AcpiGbl_BmDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->Dma.Flags, 2)], 127243347Sjkim AcpiGbl_SizDecode [ACPI_GET_2BIT_FLAG (Resource->Dma.Flags)]); 128100966Siwasaki 129167802Sjkim /* Insert a descriptor name */ 130167802Sjkim 131167802Sjkim AcpiDmDescriptorName (); 132167802Sjkim AcpiOsPrintf (")\n"); 133167802Sjkim 134151937Sjkim AcpiDmIndent (Level + 1); 135151937Sjkim AcpiDmBitList (Resource->Dma.DmaChannelMask); 136100966Siwasaki} 137100966Siwasaki 138100966Siwasaki 139100966Siwasaki/******************************************************************************* 140100966Siwasaki * 141228110Sjkim * FUNCTION: AcpiDmFixedDmaDescriptor 142228110Sjkim * 143281075Sdim * PARAMETERS: Info - Extra resource info 144281075Sdim * Resource - Pointer to the resource descriptor 145228110Sjkim * Length - Length of the descriptor in bytes 146228110Sjkim * Level - Current source code indentation level 147228110Sjkim * 148228110Sjkim * RETURN: None 149228110Sjkim * 150228110Sjkim * DESCRIPTION: Decode a FixedDMA descriptor 151228110Sjkim * 152228110Sjkim ******************************************************************************/ 153228110Sjkim 154228110Sjkimvoid 155228110SjkimAcpiDmFixedDmaDescriptor ( 156281075Sdim ACPI_OP_WALK_INFO *Info, 157228110Sjkim AML_RESOURCE *Resource, 158228110Sjkim UINT32 Length, 159228110Sjkim UINT32 Level) 160228110Sjkim{ 161228110Sjkim 162228110Sjkim AcpiDmIndent (Level); 163228110Sjkim AcpiOsPrintf ("FixedDMA (0x%4.4X, 0x%4.4X, ", 164228110Sjkim Resource->FixedDma.RequestLines, 165228110Sjkim Resource->FixedDma.Channels); 166228110Sjkim 167228110Sjkim if (Resource->FixedDma.Width <= 5) 168228110Sjkim { 169228110Sjkim AcpiOsPrintf ("%s, ", 170228110Sjkim AcpiGbl_DtsDecode [Resource->FixedDma.Width]); 171228110Sjkim } 172228110Sjkim else 173228110Sjkim { 174306536Sjkim AcpiOsPrintf ("%X /* INVALID DMA WIDTH */, ", 175306536Sjkim Resource->FixedDma.Width); 176228110Sjkim } 177228110Sjkim 178228110Sjkim /* Insert a descriptor name */ 179228110Sjkim 180228110Sjkim AcpiDmDescriptorName (); 181228110Sjkim AcpiOsPrintf (")\n"); 182228110Sjkim} 183228110Sjkim 184228110Sjkim 185228110Sjkim/******************************************************************************* 186228110Sjkim * 187100966Siwasaki * FUNCTION: AcpiDmIoDescriptor 188100966Siwasaki * 189281075Sdim * PARAMETERS: Info - Extra resource info 190281075Sdim * Resource - Pointer to the resource descriptor 191100966Siwasaki * Length - Length of the descriptor in bytes 192100966Siwasaki * Level - Current source code indentation level 193100966Siwasaki * 194100966Siwasaki * RETURN: None 195100966Siwasaki * 196100966Siwasaki * DESCRIPTION: Decode an IO descriptor 197100966Siwasaki * 198100966Siwasaki ******************************************************************************/ 199100966Siwasaki 200100966Siwasakivoid 201100966SiwasakiAcpiDmIoDescriptor ( 202281075Sdim ACPI_OP_WALK_INFO *Info, 203151937Sjkim AML_RESOURCE *Resource, 204100966Siwasaki UINT32 Length, 205100966Siwasaki UINT32 Level) 206100966Siwasaki{ 207100966Siwasaki 208100966Siwasaki AcpiDmIndent (Level); 209151937Sjkim AcpiOsPrintf ("IO (%s,\n", 210243347Sjkim AcpiGbl_IoDecode [ACPI_GET_1BIT_FLAG (Resource->Io.Flags)]); 211151937Sjkim 212151937Sjkim AcpiDmIndent (Level + 1); 213167802Sjkim AcpiDmDumpInteger16 (Resource->Io.Minimum, "Range Minimum"); 214151937Sjkim 215151937Sjkim AcpiDmIndent (Level + 1); 216167802Sjkim AcpiDmDumpInteger16 (Resource->Io.Maximum, "Range Maximum"); 217151937Sjkim 218151937Sjkim AcpiDmIndent (Level + 1); 219167802Sjkim AcpiDmDumpInteger8 (Resource->Io.Alignment, "Alignment"); 220151937Sjkim 221151937Sjkim AcpiDmIndent (Level + 1); 222167802Sjkim AcpiDmDumpInteger8 (Resource->Io.AddressLength, "Length"); 223151937Sjkim 224167802Sjkim /* Insert a descriptor name */ 225167802Sjkim 226151937Sjkim AcpiDmIndent (Level + 1); 227167802Sjkim AcpiDmDescriptorName (); 228151937Sjkim AcpiOsPrintf (")\n"); 229100966Siwasaki} 230100966Siwasaki 231100966Siwasaki 232100966Siwasaki/******************************************************************************* 233100966Siwasaki * 234100966Siwasaki * FUNCTION: AcpiDmFixedIoDescriptor 235100966Siwasaki * 236281075Sdim * PARAMETERS: Info - Extra resource info 237281075Sdim * Resource - Pointer to the resource descriptor 238100966Siwasaki * Length - Length of the descriptor in bytes 239100966Siwasaki * Level - Current source code indentation level 240100966Siwasaki * 241100966Siwasaki * RETURN: None 242100966Siwasaki * 243100966Siwasaki * DESCRIPTION: Decode a Fixed IO descriptor 244100966Siwasaki * 245100966Siwasaki ******************************************************************************/ 246100966Siwasaki 247100966Siwasakivoid 248100966SiwasakiAcpiDmFixedIoDescriptor ( 249281075Sdim ACPI_OP_WALK_INFO *Info, 250151937Sjkim AML_RESOURCE *Resource, 251100966Siwasaki UINT32 Length, 252100966Siwasaki UINT32 Level) 253100966Siwasaki{ 254100966Siwasaki 255100966Siwasaki AcpiDmIndent (Level); 256151937Sjkim AcpiOsPrintf ("FixedIO (\n"); 257151937Sjkim 258151937Sjkim AcpiDmIndent (Level + 1); 259167802Sjkim AcpiDmDumpInteger16 (Resource->FixedIo.Address, "Address"); 260151937Sjkim 261151937Sjkim AcpiDmIndent (Level + 1); 262167802Sjkim AcpiDmDumpInteger8 (Resource->FixedIo.AddressLength, "Length"); 263151937Sjkim 264167802Sjkim /* Insert a descriptor name */ 265167802Sjkim 266151937Sjkim AcpiDmIndent (Level + 1); 267167802Sjkim AcpiDmDescriptorName (); 268151937Sjkim AcpiOsPrintf (")\n"); 269100966Siwasaki} 270100966Siwasaki 271100966Siwasaki 272100966Siwasaki/******************************************************************************* 273100966Siwasaki * 274100966Siwasaki * FUNCTION: AcpiDmStartDependentDescriptor 275100966Siwasaki * 276281075Sdim * PARAMETERS: Info - Extra resource info 277281075Sdim * Resource - Pointer to the resource descriptor 278100966Siwasaki * Length - Length of the descriptor in bytes 279100966Siwasaki * Level - Current source code indentation level 280100966Siwasaki * 281100966Siwasaki * RETURN: None 282100966Siwasaki * 283100966Siwasaki * DESCRIPTION: Decode a Start Dependendent functions descriptor 284100966Siwasaki * 285100966Siwasaki ******************************************************************************/ 286100966Siwasaki 287100966Siwasakivoid 288100966SiwasakiAcpiDmStartDependentDescriptor ( 289281075Sdim ACPI_OP_WALK_INFO *Info, 290151937Sjkim AML_RESOURCE *Resource, 291100966Siwasaki UINT32 Length, 292100966Siwasaki UINT32 Level) 293100966Siwasaki{ 294100966Siwasaki 295100966Siwasaki AcpiDmIndent (Level); 296100966Siwasaki 297100966Siwasaki if (Length & 1) 298100966Siwasaki { 299100966Siwasaki AcpiOsPrintf ("StartDependentFn (0x%2.2X, 0x%2.2X)\n", 300243347Sjkim (UINT32) ACPI_GET_2BIT_FLAG (Resource->StartDpf.Flags), 301243347Sjkim (UINT32) ACPI_EXTRACT_2BIT_FLAG (Resource->StartDpf.Flags, 2)); 302100966Siwasaki } 303100966Siwasaki else 304100966Siwasaki { 305100966Siwasaki AcpiOsPrintf ("StartDependentFnNoPri ()\n"); 306100966Siwasaki } 307100966Siwasaki 308100966Siwasaki AcpiDmIndent (Level); 309100966Siwasaki AcpiOsPrintf ("{\n"); 310100966Siwasaki} 311100966Siwasaki 312100966Siwasaki 313100966Siwasaki/******************************************************************************* 314100966Siwasaki * 315100966Siwasaki * FUNCTION: AcpiDmEndDependentDescriptor 316100966Siwasaki * 317281075Sdim * PARAMETERS: Info - Extra resource info 318281075Sdim * Resource - Pointer to the resource descriptor 319100966Siwasaki * Length - Length of the descriptor in bytes 320100966Siwasaki * Level - Current source code indentation level 321100966Siwasaki * 322100966Siwasaki * RETURN: None 323100966Siwasaki * 324100966Siwasaki * DESCRIPTION: Decode an End Dependent functions descriptor 325100966Siwasaki * 326100966Siwasaki ******************************************************************************/ 327100966Siwasaki 328100966Siwasakivoid 329100966SiwasakiAcpiDmEndDependentDescriptor ( 330281075Sdim ACPI_OP_WALK_INFO *Info, 331151937Sjkim AML_RESOURCE *Resource, 332100966Siwasaki UINT32 Length, 333100966Siwasaki UINT32 Level) 334100966Siwasaki{ 335100966Siwasaki 336100966Siwasaki AcpiDmIndent (Level); 337100966Siwasaki AcpiOsPrintf ("}\n"); 338100966Siwasaki AcpiDmIndent (Level); 339100966Siwasaki AcpiOsPrintf ("EndDependentFn ()\n"); 340100966Siwasaki} 341100966Siwasaki 342100966Siwasaki 343100966Siwasaki/******************************************************************************* 344100966Siwasaki * 345100966Siwasaki * FUNCTION: AcpiDmVendorSmallDescriptor 346100966Siwasaki * 347281075Sdim * PARAMETERS: Info - Extra resource info 348281075Sdim * Resource - Pointer to the resource descriptor 349100966Siwasaki * Length - Length of the descriptor in bytes 350100966Siwasaki * Level - Current source code indentation level 351100966Siwasaki * 352100966Siwasaki * RETURN: None 353100966Siwasaki * 354100966Siwasaki * DESCRIPTION: Decode a Vendor Small Descriptor 355100966Siwasaki * 356100966Siwasaki ******************************************************************************/ 357100966Siwasaki 358100966Siwasakivoid 359100966SiwasakiAcpiDmVendorSmallDescriptor ( 360281075Sdim ACPI_OP_WALK_INFO *Info, 361151937Sjkim AML_RESOURCE *Resource, 362100966Siwasaki UINT32 Length, 363100966Siwasaki UINT32 Level) 364100966Siwasaki{ 365100966Siwasaki 366167802Sjkim AcpiDmVendorCommon ("Short", 367167802Sjkim ACPI_ADD_PTR (UINT8, Resource, sizeof (AML_RESOURCE_SMALL_HEADER)), 368151937Sjkim Length, Level); 369100966Siwasaki} 370