Home | History | Annotate | Line # | Download | only in disassembler
dmresrcs.c revision 1.1.1.2
      1 /*******************************************************************************
      2  *
      3  * Module Name: dmresrcs.c - "Small" Resource Descriptor disassembly
      4  *
      5  ******************************************************************************/
      6 
      7 /*
      8  * Copyright (C) 2000 - 2011, Intel Corp.
      9  * All rights reserved.
     10  *
     11  * Redistribution and use in source and binary forms, with or without
     12  * modification, are permitted provided that the following conditions
     13  * are met:
     14  * 1. Redistributions of source code must retain the above copyright
     15  *    notice, this list of conditions, and the following disclaimer,
     16  *    without modification.
     17  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
     18  *    substantially similar to the "NO WARRANTY" disclaimer below
     19  *    ("Disclaimer") and any redistribution must be conditioned upon
     20  *    including a substantially similar Disclaimer requirement for further
     21  *    binary redistribution.
     22  * 3. Neither the names of the above-listed copyright holders nor the names
     23  *    of any contributors may be used to endorse or promote products derived
     24  *    from this software without specific prior written permission.
     25  *
     26  * Alternatively, this software may be distributed under the terms of the
     27  * GNU General Public License ("GPL") version 2 as published by the Free
     28  * Software Foundation.
     29  *
     30  * NO WARRANTY
     31  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     32  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     33  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
     34  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     35  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     36  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     37  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     38  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
     39  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
     40  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     41  * POSSIBILITY OF SUCH DAMAGES.
     42  */
     43 
     44 
     45 #include "acpi.h"
     46 #include "accommon.h"
     47 #include "acdisasm.h"
     48 
     49 
     50 #ifdef ACPI_DISASSEMBLER
     51 
     52 #define _COMPONENT          ACPI_CA_DEBUGGER
     53         ACPI_MODULE_NAME    ("dbresrcs")
     54 
     55 
     56 /*******************************************************************************
     57  *
     58  * FUNCTION:    AcpiDmIrqDescriptor
     59  *
     60  * PARAMETERS:  Resource            - Pointer to the resource descriptor
     61  *              Length              - Length of the descriptor in bytes
     62  *              Level               - Current source code indentation level
     63  *
     64  * RETURN:      None
     65  *
     66  * DESCRIPTION: Decode a IRQ descriptor, either Irq() or IrqNoFlags()
     67  *
     68  ******************************************************************************/
     69 
     70 void
     71 AcpiDmIrqDescriptor (
     72     AML_RESOURCE            *Resource,
     73     UINT32                  Length,
     74     UINT32                  Level)
     75 {
     76 
     77     AcpiDmIndent (Level);
     78     AcpiOsPrintf ("%s (",
     79         AcpiGbl_IrqDecode [Length & 1]);
     80 
     81     /* Decode flags byte if present */
     82 
     83     if (Length & 1)
     84     {
     85         AcpiOsPrintf ("%s, %s, %s, ",
     86             AcpiGbl_HeDecode [Resource->Irq.Flags & 1],
     87             AcpiGbl_LlDecode [(Resource->Irq.Flags >> 3) & 1],
     88             AcpiGbl_ShrDecode [(Resource->Irq.Flags >> 4) & 1]);
     89     }
     90 
     91     /* Insert a descriptor name */
     92 
     93     AcpiDmDescriptorName ();
     94     AcpiOsPrintf (")\n");
     95 
     96     AcpiDmIndent (Level + 1);
     97     AcpiDmBitList (Resource->Irq.IrqMask);
     98 }
     99 
    100 
    101 /*******************************************************************************
    102  *
    103  * FUNCTION:    AcpiDmDmaDescriptor
    104  *
    105  * PARAMETERS:  Resource            - Pointer to the resource descriptor
    106  *              Length              - Length of the descriptor in bytes
    107  *              Level               - Current source code indentation level
    108  *
    109  * RETURN:      None
    110  *
    111  * DESCRIPTION: Decode a DMA descriptor
    112  *
    113  ******************************************************************************/
    114 
    115 void
    116 AcpiDmDmaDescriptor (
    117     AML_RESOURCE            *Resource,
    118     UINT32                  Length,
    119     UINT32                  Level)
    120 {
    121 
    122     AcpiDmIndent (Level);
    123     AcpiOsPrintf ("DMA (%s, %s, %s, ",
    124             AcpiGbl_TypDecode [(Resource->Dma.Flags >> 5) & 3],
    125             AcpiGbl_BmDecode  [(Resource->Dma.Flags >> 2) & 1],
    126             AcpiGbl_SizDecode [(Resource->Dma.Flags >> 0) & 3]);
    127 
    128     /* Insert a descriptor name */
    129 
    130     AcpiDmDescriptorName ();
    131     AcpiOsPrintf (")\n");
    132 
    133     AcpiDmIndent (Level + 1);
    134     AcpiDmBitList (Resource->Dma.DmaChannelMask);
    135 }
    136 
    137 
    138 /*******************************************************************************
    139  *
    140  * FUNCTION:    AcpiDmIoDescriptor
    141  *
    142  * PARAMETERS:  Resource            - Pointer to the resource descriptor
    143  *              Length              - Length of the descriptor in bytes
    144  *              Level               - Current source code indentation level
    145  *
    146  * RETURN:      None
    147  *
    148  * DESCRIPTION: Decode an IO descriptor
    149  *
    150  ******************************************************************************/
    151 
    152 void
    153 AcpiDmIoDescriptor (
    154     AML_RESOURCE            *Resource,
    155     UINT32                  Length,
    156     UINT32                  Level)
    157 {
    158 
    159     AcpiDmIndent (Level);
    160     AcpiOsPrintf ("IO (%s,\n",
    161         AcpiGbl_IoDecode [(Resource->Io.Flags & 1)]);
    162 
    163     AcpiDmIndent (Level + 1);
    164     AcpiDmDumpInteger16 (Resource->Io.Minimum, "Range Minimum");
    165 
    166     AcpiDmIndent (Level + 1);
    167     AcpiDmDumpInteger16 (Resource->Io.Maximum, "Range Maximum");
    168 
    169     AcpiDmIndent (Level + 1);
    170     AcpiDmDumpInteger8 (Resource->Io.Alignment, "Alignment");
    171 
    172     AcpiDmIndent (Level + 1);
    173     AcpiDmDumpInteger8 (Resource->Io.AddressLength, "Length");
    174 
    175     /* Insert a descriptor name */
    176 
    177     AcpiDmIndent (Level + 1);
    178     AcpiDmDescriptorName ();
    179     AcpiOsPrintf (")\n");
    180 }
    181 
    182 
    183 /*******************************************************************************
    184  *
    185  * FUNCTION:    AcpiDmFixedIoDescriptor
    186  *
    187  * PARAMETERS:  Resource            - Pointer to the resource descriptor
    188  *              Length              - Length of the descriptor in bytes
    189  *              Level               - Current source code indentation level
    190  *
    191  * RETURN:      None
    192  *
    193  * DESCRIPTION: Decode a Fixed IO descriptor
    194  *
    195  ******************************************************************************/
    196 
    197 void
    198 AcpiDmFixedIoDescriptor (
    199     AML_RESOURCE            *Resource,
    200     UINT32                  Length,
    201     UINT32                  Level)
    202 {
    203 
    204     AcpiDmIndent (Level);
    205     AcpiOsPrintf ("FixedIO (\n");
    206 
    207     AcpiDmIndent (Level + 1);
    208     AcpiDmDumpInteger16 (Resource->FixedIo.Address, "Address");
    209 
    210     AcpiDmIndent (Level + 1);
    211     AcpiDmDumpInteger8 (Resource->FixedIo.AddressLength, "Length");
    212 
    213     /* Insert a descriptor name */
    214 
    215     AcpiDmIndent (Level + 1);
    216     AcpiDmDescriptorName ();
    217     AcpiOsPrintf (")\n");
    218 }
    219 
    220 
    221 /*******************************************************************************
    222  *
    223  * FUNCTION:    AcpiDmStartDependentDescriptor
    224  *
    225  * PARAMETERS:  Resource            - Pointer to the resource descriptor
    226  *              Length              - Length of the descriptor in bytes
    227  *              Level               - Current source code indentation level
    228  *
    229  * RETURN:      None
    230  *
    231  * DESCRIPTION: Decode a Start Dependendent functions descriptor
    232  *
    233  ******************************************************************************/
    234 
    235 void
    236 AcpiDmStartDependentDescriptor (
    237     AML_RESOURCE            *Resource,
    238     UINT32                  Length,
    239     UINT32                  Level)
    240 {
    241 
    242     AcpiDmIndent (Level);
    243 
    244     if (Length & 1)
    245     {
    246         AcpiOsPrintf ("StartDependentFn (0x%2.2X, 0x%2.2X)\n",
    247             (UINT32) Resource->StartDpf.Flags & 3,
    248             (UINT32) (Resource->StartDpf.Flags >> 2) & 3);
    249     }
    250     else
    251     {
    252         AcpiOsPrintf ("StartDependentFnNoPri ()\n");
    253     }
    254 
    255     AcpiDmIndent (Level);
    256     AcpiOsPrintf ("{\n");
    257 }
    258 
    259 
    260 /*******************************************************************************
    261  *
    262  * FUNCTION:    AcpiDmEndDependentDescriptor
    263  *
    264  * PARAMETERS:  Resource            - Pointer to the resource descriptor
    265  *              Length              - Length of the descriptor in bytes
    266  *              Level               - Current source code indentation level
    267  *
    268  * RETURN:      None
    269  *
    270  * DESCRIPTION: Decode an End Dependent functions descriptor
    271  *
    272  ******************************************************************************/
    273 
    274 void
    275 AcpiDmEndDependentDescriptor (
    276     AML_RESOURCE            *Resource,
    277     UINT32                  Length,
    278     UINT32                  Level)
    279 {
    280 
    281     AcpiDmIndent (Level);
    282     AcpiOsPrintf ("}\n");
    283     AcpiDmIndent (Level);
    284     AcpiOsPrintf ("EndDependentFn ()\n");
    285 }
    286 
    287 
    288 /*******************************************************************************
    289  *
    290  * FUNCTION:    AcpiDmVendorSmallDescriptor
    291  *
    292  * PARAMETERS:  Resource            - Pointer to the resource descriptor
    293  *              Length              - Length of the descriptor in bytes
    294  *              Level               - Current source code indentation level
    295  *
    296  * RETURN:      None
    297  *
    298  * DESCRIPTION: Decode a Vendor Small Descriptor
    299  *
    300  ******************************************************************************/
    301 
    302 void
    303 AcpiDmVendorSmallDescriptor (
    304     AML_RESOURCE            *Resource,
    305     UINT32                  Length,
    306     UINT32                  Level)
    307 {
    308 
    309     AcpiDmVendorCommon ("Short",
    310         ACPI_ADD_PTR (UINT8, Resource, sizeof (AML_RESOURCE_SMALL_HEADER)),
    311         Length, Level);
    312 }
    313 
    314 #endif
    315 
    316