167754Smsmith/*******************************************************************************
267754Smsmith *
3281687Sjkim * Module Name: rsdump - AML debugger support for resource structures.
467754Smsmith *
567754Smsmith ******************************************************************************/
667754Smsmith
7217365Sjkim/*
8281075Sdim * Copyright (C) 2000 - 2015, Intel Corp.
970243Smsmith * All rights reserved.
1067754Smsmith *
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.
2567754Smsmith *
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.
2967754Smsmith *
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 */
4367754Smsmith
44193341Sjkim#include <contrib/dev/acpica/include/acpi.h>
45193341Sjkim#include <contrib/dev/acpica/include/accommon.h>
46193341Sjkim#include <contrib/dev/acpica/include/acresrc.h>
4767754Smsmith
4877424Smsmith#define _COMPONENT          ACPI_RESOURCES
4991116Smsmith        ACPI_MODULE_NAME    ("rsdump")
5067754Smsmith
51281687Sjkim/*
52281687Sjkim * All functions in this module are used by the AML Debugger only
53281687Sjkim */
54281687Sjkim#if defined(ACPI_DEBUGGER)
5567754Smsmith
56151937Sjkim/* Local prototypes */
5767754Smsmith
58151937Sjkimstatic void
59151937SjkimAcpiRsOutString (
60151937Sjkim    char                    *Title,
61151937Sjkim    char                    *Value);
6267754Smsmith
63151937Sjkimstatic void
64151937SjkimAcpiRsOutInteger8 (
65151937Sjkim    char                    *Title,
66151937Sjkim    UINT8                   Value);
6767754Smsmith
68151937Sjkimstatic void
69151937SjkimAcpiRsOutInteger16 (
70151937Sjkim    char                    *Title,
71151937Sjkim    UINT16                  Value);
7283174Smsmith
73151937Sjkimstatic void
74151937SjkimAcpiRsOutInteger32 (
75151937Sjkim    char                    *Title,
76151937Sjkim    UINT32                  Value);
7783174Smsmith
78151937Sjkimstatic void
79151937SjkimAcpiRsOutInteger64 (
80151937Sjkim    char                    *Title,
81151937Sjkim    UINT64                  Value);
8267754Smsmith
83151937Sjkimstatic void
84151937SjkimAcpiRsOutTitle (
85151937Sjkim    char                    *Title);
8667754Smsmith
87151937Sjkimstatic void
88151937SjkimAcpiRsDumpByteList (
89151937Sjkim    UINT16                  Length,
90151937Sjkim    UINT8                   *Data);
9167754Smsmith
92151937Sjkimstatic void
93228110SjkimAcpiRsDumpWordList (
94281687Sjkim    UINT16                  Length,
95281687Sjkim    UINT16                  *Data);
96228110Sjkim
97228110Sjkimstatic void
98151937SjkimAcpiRsDumpDwordList (
99151937Sjkim    UINT8                   Length,
100151937Sjkim    UINT32                  *Data);
10167754Smsmith
102151937Sjkimstatic void
103151937SjkimAcpiRsDumpShortByteList (
104281687Sjkim    UINT8                   Length,
105281687Sjkim    UINT8                   *Data);
10667754Smsmith
107151937Sjkimstatic void
108151937SjkimAcpiRsDumpResourceSource (
109151937Sjkim    ACPI_RESOURCE_SOURCE    *ResourceSource);
11067754Smsmith
111151937Sjkimstatic void
112151937SjkimAcpiRsDumpAddressCommon (
113151937Sjkim    ACPI_RESOURCE_DATA      *Resource);
11467754Smsmith
115151937Sjkimstatic void
116151937SjkimAcpiRsDumpDescriptor (
117151937Sjkim    void                    *Resource,
118281687Sjkim    ACPI_RSDUMP_INFO        *Table);
11967754Smsmith
12067754Smsmith
12167754Smsmith/*******************************************************************************
12267754Smsmith *
123281687Sjkim * FUNCTION:    AcpiRsDumpResourceList
124281687Sjkim *
125281687Sjkim * PARAMETERS:  ResourceList        - Pointer to a resource descriptor list
126281687Sjkim *
127281687Sjkim * RETURN:      None
128281687Sjkim *
129281687Sjkim * DESCRIPTION: Dispatches the structure to the correct dump routine.
130281687Sjkim *
131281687Sjkim ******************************************************************************/
132281687Sjkim
133281687Sjkimvoid
134281687SjkimAcpiRsDumpResourceList (
135281687Sjkim    ACPI_RESOURCE           *ResourceList)
136281687Sjkim{
137281687Sjkim    UINT32                  Count = 0;
138281687Sjkim    UINT32                  Type;
139281687Sjkim
140281687Sjkim
141281687Sjkim    ACPI_FUNCTION_ENTRY ();
142281687Sjkim
143281687Sjkim
144281687Sjkim    /* Check if debug output enabled */
145281687Sjkim
146281687Sjkim    if (!ACPI_IS_DEBUG_ENABLED (ACPI_LV_RESOURCES, _COMPONENT))
147281687Sjkim    {
148281687Sjkim        return;
149281687Sjkim    }
150281687Sjkim
151281687Sjkim    /* Walk list and dump all resource descriptors (END_TAG terminates) */
152281687Sjkim
153281687Sjkim    do
154281687Sjkim    {
155281687Sjkim        AcpiOsPrintf ("\n[%02X] ", Count);
156281687Sjkim        Count++;
157281687Sjkim
158281687Sjkim        /* Validate Type before dispatch */
159281687Sjkim
160281687Sjkim        Type = ResourceList->Type;
161281687Sjkim        if (Type > ACPI_RESOURCE_TYPE_MAX)
162281687Sjkim        {
163281687Sjkim            AcpiOsPrintf (
164281687Sjkim                "Invalid descriptor type (%X) in resource list\n",
165281687Sjkim                ResourceList->Type);
166281687Sjkim            return;
167281687Sjkim        }
168281687Sjkim
169281687Sjkim        /* Sanity check the length. It must not be zero, or we loop forever */
170281687Sjkim
171281687Sjkim        if (!ResourceList->Length)
172281687Sjkim        {
173281687Sjkim            AcpiOsPrintf (
174281687Sjkim                "Invalid zero length descriptor in resource list\n");
175281687Sjkim            return;
176281687Sjkim        }
177281687Sjkim
178281687Sjkim        /* Dump the resource descriptor */
179281687Sjkim
180281687Sjkim        if (Type == ACPI_RESOURCE_TYPE_SERIAL_BUS)
181281687Sjkim        {
182281687Sjkim            AcpiRsDumpDescriptor (&ResourceList->Data,
183281687Sjkim                AcpiGbl_DumpSerialBusDispatch[
184281687Sjkim                    ResourceList->Data.CommonSerialBus.Type]);
185281687Sjkim        }
186281687Sjkim        else
187281687Sjkim        {
188281687Sjkim            AcpiRsDumpDescriptor (&ResourceList->Data,
189281687Sjkim                AcpiGbl_DumpResourceDispatch[Type]);
190281687Sjkim        }
191281687Sjkim
192281687Sjkim        /* Point to the next resource structure */
193281687Sjkim
194281687Sjkim        ResourceList = ACPI_NEXT_RESOURCE (ResourceList);
195281687Sjkim
196281687Sjkim        /* Exit when END_TAG descriptor is reached */
197281687Sjkim
198281687Sjkim    } while (Type != ACPI_RESOURCE_TYPE_END_TAG);
199281687Sjkim}
200281687Sjkim
201281687Sjkim
202281687Sjkim/*******************************************************************************
203281687Sjkim *
204281687Sjkim * FUNCTION:    AcpiRsDumpIrqList
205281687Sjkim *
206281687Sjkim * PARAMETERS:  RouteTable      - Pointer to the routing table to dump.
207281687Sjkim *
208281687Sjkim * RETURN:      None
209281687Sjkim *
210281687Sjkim * DESCRIPTION: Print IRQ routing table
211281687Sjkim *
212281687Sjkim ******************************************************************************/
213281687Sjkim
214281687Sjkimvoid
215281687SjkimAcpiRsDumpIrqList (
216281687Sjkim    UINT8                   *RouteTable)
217281687Sjkim{
218281687Sjkim    ACPI_PCI_ROUTING_TABLE  *PrtElement;
219281687Sjkim    UINT8                   Count;
220281687Sjkim
221281687Sjkim
222281687Sjkim    ACPI_FUNCTION_ENTRY ();
223281687Sjkim
224281687Sjkim
225281687Sjkim    /* Check if debug output enabled */
226281687Sjkim
227281687Sjkim    if (!ACPI_IS_DEBUG_ENABLED (ACPI_LV_RESOURCES, _COMPONENT))
228281687Sjkim    {
229281687Sjkim        return;
230281687Sjkim    }
231281687Sjkim
232281687Sjkim    PrtElement = ACPI_CAST_PTR (ACPI_PCI_ROUTING_TABLE, RouteTable);
233281687Sjkim
234281687Sjkim    /* Dump all table elements, Exit on zero length element */
235281687Sjkim
236281687Sjkim    for (Count = 0; PrtElement->Length; Count++)
237281687Sjkim    {
238281687Sjkim        AcpiOsPrintf ("\n[%02X] PCI IRQ Routing Table Package\n", Count);
239281687Sjkim        AcpiRsDumpDescriptor (PrtElement, AcpiRsDumpPrt);
240281687Sjkim
241281687Sjkim        PrtElement = ACPI_ADD_PTR (ACPI_PCI_ROUTING_TABLE,
242281687Sjkim            PrtElement, PrtElement->Length);
243281687Sjkim    }
244281687Sjkim}
245281687Sjkim
246281687Sjkim
247281687Sjkim/*******************************************************************************
248281687Sjkim *
249151937Sjkim * FUNCTION:    AcpiRsDumpDescriptor
25067754Smsmith *
251245582Sjkim * PARAMETERS:  Resource            - Buffer containing the resource
252245582Sjkim *              Table               - Table entry to decode the resource
25367754Smsmith *
25477424Smsmith * RETURN:      None
25567754Smsmith *
256245582Sjkim * DESCRIPTION: Dump a resource descriptor based on a dump table entry.
25767754Smsmith *
25867754Smsmith ******************************************************************************/
25967754Smsmith
260151937Sjkimstatic void
261151937SjkimAcpiRsDumpDescriptor (
262151937Sjkim    void                    *Resource,
263151937Sjkim    ACPI_RSDUMP_INFO        *Table)
26467754Smsmith{
265167802Sjkim    UINT8                   *Target = NULL;
266167802Sjkim    UINT8                   *PreviousTarget;
267151937Sjkim    char                    *Name;
268151937Sjkim    UINT8                    Count;
26967754Smsmith
27067754Smsmith
271151937Sjkim    /* First table entry must contain the table length (# of table entries) */
27283174Smsmith
273151937Sjkim    Count = Table->Offset;
27483174Smsmith
275151937Sjkim    while (Count)
27667754Smsmith    {
277151937Sjkim        PreviousTarget = Target;
278167802Sjkim        Target = ACPI_ADD_PTR (UINT8, Resource, Table->Offset);
279151937Sjkim        Name = Table->Name;
28067754Smsmith
281151937Sjkim        switch (Table->Opcode)
282151937Sjkim        {
283151937Sjkim        case ACPI_RSD_TITLE:
284151937Sjkim            /*
285151937Sjkim             * Optional resource title
286151937Sjkim             */
287151937Sjkim            if (Table->Name)
288151937Sjkim            {
289151937Sjkim                AcpiOsPrintf ("%s Resource\n", Name);
290151937Sjkim            }
291151937Sjkim            break;
29267754Smsmith
293151937Sjkim        /* Strings */
29467754Smsmith
295151937Sjkim        case ACPI_RSD_LITERAL:
296250838Sjkim
297167802Sjkim            AcpiRsOutString (Name, ACPI_CAST_PTR (char, Table->Pointer));
298151937Sjkim            break;
29967754Smsmith
300151937Sjkim        case ACPI_RSD_STRING:
301250838Sjkim
302167802Sjkim            AcpiRsOutString (Name, ACPI_CAST_PTR (char, Target));
303151937Sjkim            break;
30467754Smsmith
305151937Sjkim        /* Data items, 8/16/32/64 bit */
30667754Smsmith
307151937Sjkim        case ACPI_RSD_UINT8:
308250838Sjkim
309228110Sjkim            if (Table->Pointer)
310228110Sjkim            {
311228110Sjkim                AcpiRsOutString (Name, ACPI_CAST_PTR (char,
312228110Sjkim                    Table->Pointer [*Target]));
313228110Sjkim            }
314228110Sjkim            else
315228110Sjkim            {
316228110Sjkim                AcpiRsOutInteger8 (Name, ACPI_GET8 (Target));
317228110Sjkim            }
318151937Sjkim            break;
31983174Smsmith
320151937Sjkim        case ACPI_RSD_UINT16:
321250838Sjkim
322167802Sjkim            AcpiRsOutInteger16 (Name, ACPI_GET16 (Target));
323151937Sjkim            break;
32483174Smsmith
325151937Sjkim        case ACPI_RSD_UINT32:
326250838Sjkim
327167802Sjkim            AcpiRsOutInteger32 (Name, ACPI_GET32 (Target));
328151937Sjkim            break;
32967754Smsmith
330151937Sjkim        case ACPI_RSD_UINT64:
331252279Sjkim
332167802Sjkim            AcpiRsOutInteger64 (Name, ACPI_GET64 (Target));
333151937Sjkim            break;
33467754Smsmith
335151937Sjkim        /* Flags: 1-bit and 2-bit flags supported */
33667754Smsmith
337151937Sjkim        case ACPI_RSD_1BITFLAG:
338250838Sjkim
339167802Sjkim            AcpiRsOutString (Name, ACPI_CAST_PTR (char,
340167802Sjkim                Table->Pointer [*Target & 0x01]));
341151937Sjkim            break;
34267754Smsmith
343151937Sjkim        case ACPI_RSD_2BITFLAG:
344250838Sjkim
345167802Sjkim            AcpiRsOutString (Name, ACPI_CAST_PTR (char,
346167802Sjkim                Table->Pointer [*Target & 0x03]));
347151937Sjkim            break;
34867754Smsmith
349228110Sjkim        case ACPI_RSD_3BITFLAG:
350250838Sjkim
351228110Sjkim            AcpiRsOutString (Name, ACPI_CAST_PTR (char,
352228110Sjkim                Table->Pointer [*Target & 0x07]));
353228110Sjkim            break;
354228110Sjkim
355151937Sjkim        case ACPI_RSD_SHORTLIST:
356151937Sjkim            /*
357151937Sjkim             * Short byte list (single line output) for DMA and IRQ resources
358151937Sjkim             * Note: The list length is obtained from the previous table entry
359151937Sjkim             */
360151937Sjkim            if (PreviousTarget)
361151937Sjkim            {
362151937Sjkim                AcpiRsOutTitle (Name);
363167802Sjkim                AcpiRsDumpShortByteList (*PreviousTarget, Target);
364151937Sjkim            }
365151937Sjkim            break;
36667754Smsmith
367228110Sjkim        case ACPI_RSD_SHORTLISTX:
368228110Sjkim            /*
369228110Sjkim             * Short byte list (single line output) for GPIO vendor data
370228110Sjkim             * Note: The list length is obtained from the previous table entry
371228110Sjkim             */
372228110Sjkim            if (PreviousTarget)
373228110Sjkim            {
374228110Sjkim                AcpiRsOutTitle (Name);
375228110Sjkim                AcpiRsDumpShortByteList (*PreviousTarget,
376228110Sjkim                    *(ACPI_CAST_INDIRECT_PTR (UINT8, Target)));
377228110Sjkim            }
378228110Sjkim            break;
379228110Sjkim
380151937Sjkim        case ACPI_RSD_LONGLIST:
381151937Sjkim            /*
382151937Sjkim             * Long byte list for Vendor resource data
383151937Sjkim             * Note: The list length is obtained from the previous table entry
384151937Sjkim             */
385151937Sjkim            if (PreviousTarget)
386151937Sjkim            {
387167802Sjkim                AcpiRsDumpByteList (ACPI_GET16 (PreviousTarget), Target);
388151937Sjkim            }
389151937Sjkim            break;
39067754Smsmith
391151937Sjkim        case ACPI_RSD_DWORDLIST:
392151937Sjkim            /*
393151937Sjkim             * Dword list for Extended Interrupt resources
394151937Sjkim             * Note: The list length is obtained from the previous table entry
395151937Sjkim             */
396151937Sjkim            if (PreviousTarget)
397151937Sjkim            {
398167802Sjkim                AcpiRsDumpDwordList (*PreviousTarget,
399167802Sjkim                    ACPI_CAST_PTR (UINT32, Target));
400151937Sjkim            }
401151937Sjkim            break;
40267754Smsmith
403228110Sjkim        case ACPI_RSD_WORDLIST:
404228110Sjkim            /*
405228110Sjkim             * Word list for GPIO Pin Table
406228110Sjkim             * Note: The list length is obtained from the previous table entry
407228110Sjkim             */
408228110Sjkim            if (PreviousTarget)
409228110Sjkim            {
410228110Sjkim                AcpiRsDumpWordList (*PreviousTarget,
411228110Sjkim                    *(ACPI_CAST_INDIRECT_PTR (UINT16, Target)));
412228110Sjkim            }
413228110Sjkim            break;
414228110Sjkim
415151937Sjkim        case ACPI_RSD_ADDRESS:
416151937Sjkim            /*
417151937Sjkim             * Common flags for all Address resources
418151937Sjkim             */
419281687Sjkim            AcpiRsDumpAddressCommon (ACPI_CAST_PTR (
420281687Sjkim                ACPI_RESOURCE_DATA, Target));
421151937Sjkim            break;
42267754Smsmith
423151937Sjkim        case ACPI_RSD_SOURCE:
424151937Sjkim            /*
425151937Sjkim             * Optional ResourceSource for Address resources
426151937Sjkim             */
427281687Sjkim            AcpiRsDumpResourceSource (ACPI_CAST_PTR (
428281687Sjkim                ACPI_RESOURCE_SOURCE, Target));
429151937Sjkim            break;
43067754Smsmith
431151937Sjkim        default:
432250838Sjkim
433151937Sjkim            AcpiOsPrintf ("**** Invalid table opcode [%X] ****\n",
434151937Sjkim                Table->Opcode);
435151937Sjkim            return;
436151937Sjkim        }
43767754Smsmith
438151937Sjkim        Table++;
439151937Sjkim        Count--;
440151937Sjkim    }
44167754Smsmith}
44267754Smsmith
44367754Smsmith
44467754Smsmith/*******************************************************************************
44567754Smsmith *
446151937Sjkim * FUNCTION:    AcpiRsDumpResourceSource
44767754Smsmith *
448151937Sjkim * PARAMETERS:  ResourceSource      - Pointer to a Resource Source struct
44967754Smsmith *
450151937Sjkim * RETURN:      None
45167754Smsmith *
452151937Sjkim * DESCRIPTION: Common routine for dumping the optional ResourceSource and the
453151937Sjkim *              corresponding ResourceSourceIndex.
45467754Smsmith *
45567754Smsmith ******************************************************************************/
45667754Smsmith
457151937Sjkimstatic void
458151937SjkimAcpiRsDumpResourceSource (
459151937Sjkim    ACPI_RESOURCE_SOURCE    *ResourceSource)
46067754Smsmith{
46191116Smsmith    ACPI_FUNCTION_ENTRY ();
46283174Smsmith
46383174Smsmith
464151937Sjkim    if (ResourceSource->Index == 0xFF)
465151937Sjkim    {
466151937Sjkim        return;
467151937Sjkim    }
46867754Smsmith
469151937Sjkim    AcpiRsOutInteger8 ("Resource Source Index",
470151937Sjkim        ResourceSource->Index);
47167754Smsmith
472151937Sjkim    AcpiRsOutString ("Resource Source",
473151937Sjkim        ResourceSource->StringPtr ?
474151937Sjkim            ResourceSource->StringPtr : "[Not Specified]");
47567754Smsmith}
47667754Smsmith
47767754Smsmith
47867754Smsmith/*******************************************************************************
47967754Smsmith *
480151937Sjkim * FUNCTION:    AcpiRsDumpAddressCommon
48167754Smsmith *
482151937Sjkim * PARAMETERS:  Resource        - Pointer to an internal resource descriptor
48367754Smsmith *
48477424Smsmith * RETURN:      None
48567754Smsmith *
486151937Sjkim * DESCRIPTION: Dump the fields that are common to all Address resource
487151937Sjkim *              descriptors
48867754Smsmith *
48967754Smsmith ******************************************************************************/
49067754Smsmith
491151937Sjkimstatic void
492151937SjkimAcpiRsDumpAddressCommon (
493151937Sjkim    ACPI_RESOURCE_DATA      *Resource)
49467754Smsmith{
49591116Smsmith    ACPI_FUNCTION_ENTRY ();
49683174Smsmith
49783174Smsmith
498151937Sjkim   /* Decode the type-specific flags */
49967754Smsmith
500151937Sjkim    switch (Resource->Address.ResourceType)
50167754Smsmith    {
50291116Smsmith    case ACPI_MEMORY_RANGE:
50367754Smsmith
504151937Sjkim        AcpiRsDumpDescriptor (Resource, AcpiRsDumpMemoryFlags);
50567754Smsmith        break;
50667754Smsmith
50791116Smsmith    case ACPI_IO_RANGE:
50867754Smsmith
509151937Sjkim        AcpiRsDumpDescriptor (Resource, AcpiRsDumpIoFlags);
51067754Smsmith        break;
51167754Smsmith
51291116Smsmith    case ACPI_BUS_NUMBER_RANGE:
51367754Smsmith
514151937Sjkim        AcpiRsOutString ("Resource Type", "Bus Number Range");
51567754Smsmith        break;
51667754Smsmith
51767754Smsmith    default:
51867754Smsmith
519151937Sjkim        AcpiRsOutInteger8 ("Resource Type",
520151937Sjkim            (UINT8) Resource->Address.ResourceType);
521151937Sjkim        break;
52267754Smsmith    }
52367754Smsmith
524151937Sjkim    /* Decode the general flags */
52567754Smsmith
526151937Sjkim    AcpiRsDumpDescriptor (Resource, AcpiRsDumpGeneralFlags);
52767754Smsmith}
52867754Smsmith
52967754Smsmith
53067754Smsmith/*******************************************************************************
53167754Smsmith *
532151937Sjkim * FUNCTION:    AcpiRsOut*
53367754Smsmith *
534151937Sjkim * PARAMETERS:  Title       - Name of the resource field
535151937Sjkim *              Value       - Value of the resource field
53667754Smsmith *
53777424Smsmith * RETURN:      None
53867754Smsmith *
539151937Sjkim * DESCRIPTION: Miscellaneous helper functions to consistently format the
540151937Sjkim *              output of the resource dump routines
54167754Smsmith *
54267754Smsmith ******************************************************************************/
54367754Smsmith
544151937Sjkimstatic void
545151937SjkimAcpiRsOutString (
546151937Sjkim    char                    *Title,
547151937Sjkim    char                    *Value)
54867754Smsmith{
549167802Sjkim    AcpiOsPrintf ("%27s : %s", Title, Value);
550167802Sjkim    if (!*Value)
551167802Sjkim    {
552167802Sjkim        AcpiOsPrintf ("[NULL NAMESTRING]");
553167802Sjkim    }
554167802Sjkim    AcpiOsPrintf ("\n");
555151937Sjkim}
55667754Smsmith
557151937Sjkimstatic void
558151937SjkimAcpiRsOutInteger8 (
559151937Sjkim    char                    *Title,
560151937Sjkim    UINT8                   Value)
561151937Sjkim{
562151937Sjkim    AcpiOsPrintf ("%27s : %2.2X\n", Title, Value);
563151937Sjkim}
56467754Smsmith
565151937Sjkimstatic void
566151937SjkimAcpiRsOutInteger16 (
567151937Sjkim    char                    *Title,
568151937Sjkim    UINT16                  Value)
569151937Sjkim{
570151937Sjkim    AcpiOsPrintf ("%27s : %4.4X\n", Title, Value);
571151937Sjkim}
57283174Smsmith
573151937Sjkimstatic void
574151937SjkimAcpiRsOutInteger32 (
575151937Sjkim    char                    *Title,
576151937Sjkim    UINT32                  Value)
577151937Sjkim{
578151937Sjkim    AcpiOsPrintf ("%27s : %8.8X\n", Title, Value);
579151937Sjkim}
58083174Smsmith
581151937Sjkimstatic void
582151937SjkimAcpiRsOutInteger64 (
583151937Sjkim    char                    *Title,
584151937Sjkim    UINT64                  Value)
585151937Sjkim{
586151937Sjkim    AcpiOsPrintf ("%27s : %8.8X%8.8X\n", Title,
587151937Sjkim        ACPI_FORMAT_UINT64 (Value));
588151937Sjkim}
58967754Smsmith
590151937Sjkimstatic void
591151937SjkimAcpiRsOutTitle (
592151937Sjkim    char                    *Title)
593151937Sjkim{
594151937Sjkim    AcpiOsPrintf ("%27s : ", Title);
59567754Smsmith}
59667754Smsmith
59767754Smsmith
59867754Smsmith/*******************************************************************************
59967754Smsmith *
600151937Sjkim * FUNCTION:    AcpiRsDump*List
60167754Smsmith *
602151937Sjkim * PARAMETERS:  Length      - Number of elements in the list
603151937Sjkim *              Data        - Start of the list
60467754Smsmith *
60577424Smsmith * RETURN:      None
60667754Smsmith *
607151937Sjkim * DESCRIPTION: Miscellaneous functions to dump lists of raw data
60867754Smsmith *
60967754Smsmith ******************************************************************************/
61067754Smsmith
611151937Sjkimstatic void
612151937SjkimAcpiRsDumpByteList (
613151937Sjkim    UINT16                  Length,
614151937Sjkim    UINT8                   *Data)
61567754Smsmith{
616151937Sjkim    UINT8                   i;
61767754Smsmith
61867754Smsmith
619151937Sjkim    for (i = 0; i < Length; i++)
62067754Smsmith    {
621151937Sjkim        AcpiOsPrintf ("%25s%2.2X : %2.2X\n",
622151937Sjkim            "Byte", i, Data[i]);
623151937Sjkim    }
624151937Sjkim}
62567754Smsmith
626151937Sjkimstatic void
627151937SjkimAcpiRsDumpShortByteList (
628281687Sjkim    UINT8                   Length,
629281687Sjkim    UINT8                   *Data)
630151937Sjkim{
631151937Sjkim    UINT8                   i;
63267754Smsmith
63367754Smsmith
634151937Sjkim    for (i = 0; i < Length; i++)
635151937Sjkim    {
636151937Sjkim        AcpiOsPrintf ("%X ", Data[i]);
63767754Smsmith    }
638151937Sjkim    AcpiOsPrintf ("\n");
63967754Smsmith}
64067754Smsmith
641151937Sjkimstatic void
642151937SjkimAcpiRsDumpDwordList (
643151937Sjkim    UINT8                   Length,
644151937Sjkim    UINT32                  *Data)
64567754Smsmith{
646151937Sjkim    UINT8                   i;
64767754Smsmith
64867754Smsmith
649151937Sjkim    for (i = 0; i < Length; i++)
65067754Smsmith    {
651151937Sjkim        AcpiOsPrintf ("%25s%2.2X : %8.8X\n",
652151937Sjkim            "Dword", i, Data[i]);
65367754Smsmith    }
65467754Smsmith}
65567754Smsmith
656228110Sjkimstatic void
657228110SjkimAcpiRsDumpWordList (
658228110Sjkim    UINT16                  Length,
659228110Sjkim    UINT16                  *Data)
660228110Sjkim{
661228110Sjkim    UINT16                  i;
662228110Sjkim
663228110Sjkim
664228110Sjkim    for (i = 0; i < Length; i++)
665228110Sjkim    {
666228110Sjkim        AcpiOsPrintf ("%25s%2.2X : %4.4X\n",
667228110Sjkim            "Word", i, Data[i]);
668228110Sjkim    }
669228110Sjkim}
670228110Sjkim
67183174Smsmith#endif
672