utdecode.c revision 26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross/******************************************************************************
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * Module Name: utdecode - Utility decoding routines (value-to-string)
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *****************************************************************************/
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross/*
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * Copyright (C) 2000 - 2011, Intel Corp.
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * All rights reserved.
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * Redistribution and use in source and binary forms, with or without
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * modification, are permitted provided that the following conditions
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * are met:
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * 1. Redistributions of source code must retain the above copyright
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * notice, this list of conditions, and the following disclaimer,
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * without modification.
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * 2. Redistributions in binary form must reproduce at minimum a disclaimer
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * substantially similar to the "NO WARRANTY" disclaimer below
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * ("Disclaimer") and any redistribution must be conditioned upon
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * including a substantially similar Disclaimer requirement for further
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * binary redistribution.
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * 3. Neither the names of the above-listed copyright holders nor the names
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * of any contributors may be used to endorse or promote products derived
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * from this software without specific prior written permission.
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * Alternatively, this software may be distributed under the terms of the
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * GNU General Public License ("GPL") version 2 as published by the Free
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * Software Foundation.
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * NO WARRANTY
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * POSSIBILITY OF SUCH DAMAGES.
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross#define __UTDECODE_C__
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross#include "acpi.h"
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross#include "accommon.h"
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross#include "acnamesp.h"
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross#define _COMPONENT ACPI_UTILITIES
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ACPI_MODULE_NAME ("utdecode")
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross/*******************************************************************************
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * FUNCTION: AcpiFormatException
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * PARAMETERS: Status - The ACPI_STATUS code to be formatted
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * RETURN: A string containing the exception text. A valid pointer is
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * always returned.
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * DESCRIPTION: This function translates an ACPI exception into an ASCII string
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * It is here instead of utxface.c so it is always present.
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ******************************************************************************/
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Rossconst char *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon RossAcpiFormatException (
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ACPI_STATUS Status)
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross{
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross const char *Exception = NULL;
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ACPI_FUNCTION_ENTRY ();
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross Exception = AcpiUtValidateException (Status);
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross if (!Exception)
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross {
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* Exception code was not recognized */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ACPI_ERROR ((AE_INFO,
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross "Unknown exception code: 0x%8.8X", Status));
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross Exception = "UNKNOWN_STATUS_CODE";
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross }
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross return (ACPI_CAST_PTR (const char, Exception));
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross}
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon RossACPI_EXPORT_SYMBOL (AcpiFormatException)
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross/*
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * Properties of the ACPI Object Types, both internal and external.
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * The table is indexed by values of ACPI_OBJECT_TYPE
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Rossconst UINT8 AcpiGbl_NsProperties[ACPI_NUM_NS_TYPES] =
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross{
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ACPI_NS_NORMAL, /* 00 Any */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ACPI_NS_NORMAL, /* 01 Number */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ACPI_NS_NORMAL, /* 02 String */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ACPI_NS_NORMAL, /* 03 Buffer */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ACPI_NS_NORMAL, /* 04 Package */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ACPI_NS_NORMAL, /* 05 FieldUnit */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ACPI_NS_NEWSCOPE, /* 06 Device */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ACPI_NS_NORMAL, /* 07 Event */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ACPI_NS_NEWSCOPE, /* 08 Method */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ACPI_NS_NORMAL, /* 09 Mutex */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ACPI_NS_NORMAL, /* 10 Region */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ACPI_NS_NEWSCOPE, /* 11 Power */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ACPI_NS_NEWSCOPE, /* 12 Processor */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ACPI_NS_NEWSCOPE, /* 13 Thermal */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ACPI_NS_NORMAL, /* 14 BufferField */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ACPI_NS_NORMAL, /* 15 DdbHandle */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ACPI_NS_NORMAL, /* 16 Debug Object */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ACPI_NS_NORMAL, /* 17 DefField */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ACPI_NS_NORMAL, /* 18 BankField */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ACPI_NS_NORMAL, /* 19 IndexField */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ACPI_NS_NORMAL, /* 20 Reference */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ACPI_NS_NORMAL, /* 21 Alias */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ACPI_NS_NORMAL, /* 22 MethodAlias */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ACPI_NS_NORMAL, /* 23 Notify */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ACPI_NS_NORMAL, /* 24 Address Handler */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL, /* 25 Resource Desc */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL, /* 26 Resource Field */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ACPI_NS_NEWSCOPE, /* 27 Scope */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ACPI_NS_NORMAL, /* 28 Extra */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ACPI_NS_NORMAL, /* 29 Data */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ACPI_NS_NORMAL /* 30 Invalid */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross};
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross/*******************************************************************************
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * FUNCTION: AcpiUtHexToAsciiChar
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * PARAMETERS: Integer - Contains the hex digit
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * Position - bit position of the digit within the
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * integer (multiple of 4)
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * RETURN: The converted Ascii character
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * DESCRIPTION: Convert a hex digit to an Ascii character
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ******************************************************************************/
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross/* Hex to ASCII conversion table */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Rossstatic const char AcpiGbl_HexToAscii[] =
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross{
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross '0','1','2','3','4','5','6','7',
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross '8','9','A','B','C','D','E','F'
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross};
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Rosschar
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon RossAcpiUtHexToAsciiChar (
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross UINT64 Integer,
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross UINT32 Position)
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross{
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross return (AcpiGbl_HexToAscii[(Integer >> Position) & 0xF]);
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross}
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross/*******************************************************************************
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * FUNCTION: AcpiUtGetRegionName
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * PARAMETERS: Space ID - ID for the region
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * RETURN: Decoded region SpaceId name
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * DESCRIPTION: Translate a Space ID into a name string (Debug only)
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ******************************************************************************/
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross/* Region type decoding */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Rossconst char *AcpiGbl_RegionTypes[ACPI_NUM_PREDEFINED_REGIONS] =
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross{
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross "SystemMemory",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross "SystemIO",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross "PCI_Config",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross "EmbeddedControl",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross "SMBus",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross "SystemCMOS",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross "PCIBARTarget",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross "IPMI"
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross};
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Rosschar *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon RossAcpiUtGetRegionName (
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross UINT8 SpaceId)
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross{
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross if (SpaceId >= ACPI_USER_REGION_BEGIN)
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross {
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross return ("UserDefinedRegion");
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross }
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross else if (SpaceId == ACPI_ADR_SPACE_DATA_TABLE)
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross {
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross return ("DataTable");
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross }
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross else if (SpaceId == ACPI_ADR_SPACE_FIXED_HARDWARE)
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross {
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross return ("FunctionalFixedHW");
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross }
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross else if (SpaceId >= ACPI_NUM_PREDEFINED_REGIONS)
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross {
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross return ("InvalidSpaceId");
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross }
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross return (ACPI_CAST_PTR (char, AcpiGbl_RegionTypes[SpaceId]));
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross}
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross/*******************************************************************************
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * FUNCTION: AcpiUtGetEventName
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * PARAMETERS: EventId - Fixed event ID
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * RETURN: Decoded event ID name
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * DESCRIPTION: Translate a Event ID into a name string (Debug only)
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ******************************************************************************/
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross/* Event type decoding */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Rossstatic const char *AcpiGbl_EventTypes[ACPI_NUM_FIXED_EVENTS] =
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross{
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross "PM_Timer",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross "GlobalLock",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross "PowerButton",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross "SleepButton",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross "RealTimeClock",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross};
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Rosschar *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon RossAcpiUtGetEventName (
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross UINT32 EventId)
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross{
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross if (EventId > ACPI_EVENT_MAX)
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross {
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross return ("InvalidEventID");
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross }
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross return (ACPI_CAST_PTR (char, AcpiGbl_EventTypes[EventId]));
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross}
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross/*******************************************************************************
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * FUNCTION: AcpiUtGetTypeName
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * PARAMETERS: Type - An ACPI object type
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * RETURN: Decoded ACPI object type name
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * DESCRIPTION: Translate a Type ID into a name string (Debug only)
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ******************************************************************************/
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross/*
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * Elements of AcpiGbl_NsTypeNames below must match
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * one-to-one with values of ACPI_OBJECT_TYPE
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * The type ACPI_TYPE_ANY (Untyped) is used as a "don't care" when searching;
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * when stored in a table it really means that we have thus far seen no
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * evidence to indicate what type is actually going to be stored for this entry.
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Rossstatic const char AcpiGbl_BadType[] = "UNDEFINED";
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross/* Printable names of the ACPI object types */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Rossstatic const char *AcpiGbl_NsTypeNames[] =
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross{
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 00 */ "Untyped",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 01 */ "Integer",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 02 */ "String",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 03 */ "Buffer",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 04 */ "Package",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 05 */ "FieldUnit",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 06 */ "Device",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 07 */ "Event",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 08 */ "Method",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 09 */ "Mutex",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 10 */ "Region",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 11 */ "Power",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 12 */ "Processor",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 13 */ "Thermal",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 14 */ "BufferField",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 15 */ "DdbHandle",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 16 */ "DebugObject",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 17 */ "RegionField",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 18 */ "BankField",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 19 */ "IndexField",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 20 */ "Reference",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 21 */ "Alias",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 22 */ "MethodAlias",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 23 */ "Notify",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 24 */ "AddrHandler",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 25 */ "ResourceDesc",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 26 */ "ResourceFld",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 27 */ "Scope",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 28 */ "Extra",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 29 */ "Data",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 30 */ "Invalid"
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross};
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Rosschar *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon RossAcpiUtGetTypeName (
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ACPI_OBJECT_TYPE Type)
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross{
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross if (Type > ACPI_TYPE_INVALID)
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross {
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross return (ACPI_CAST_PTR (char, AcpiGbl_BadType));
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross }
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross return (ACPI_CAST_PTR (char, AcpiGbl_NsTypeNames[Type]));
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross}
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Rosschar *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon RossAcpiUtGetObjectTypeName (
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ACPI_OPERAND_OBJECT *ObjDesc)
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross{
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross if (!ObjDesc)
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross {
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross return ("[NULL Object Descriptor]");
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross }
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross return (AcpiUtGetTypeName (ObjDesc->Common.Type));
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross}
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross/*******************************************************************************
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * FUNCTION: AcpiUtGetNodeName
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * PARAMETERS: Object - A namespace node
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * RETURN: ASCII name of the node
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * DESCRIPTION: Validate the node and return the node's ACPI name.
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ******************************************************************************/
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Rosschar *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon RossAcpiUtGetNodeName (
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross void *Object)
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross{
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ACPI_NAMESPACE_NODE *Node = (ACPI_NAMESPACE_NODE *) Object;
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* Must return a string of exactly 4 characters == ACPI_NAME_SIZE */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross if (!Object)
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross {
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross return ("NULL");
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross }
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* Check for Root node */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross if ((Object == ACPI_ROOT_OBJECT) ||
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross (Object == AcpiGbl_RootNode))
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross {
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross return ("\"\\\" ");
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross }
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* Descriptor must be a namespace node */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross if (ACPI_GET_DESCRIPTOR_TYPE (Node) != ACPI_DESC_TYPE_NAMED)
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross {
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross return ("####");
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross }
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /*
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * Ensure name is valid. The name was validated/repaired when the node
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * was created, but make sure it has not been corrupted.
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross AcpiUtRepairName (Node->Name.Ascii);
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* Return the name */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross return (Node->Name.Ascii);
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross}
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross/*******************************************************************************
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * FUNCTION: AcpiUtGetDescriptorName
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * PARAMETERS: Object - An ACPI object
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * RETURN: Decoded name of the descriptor type
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * DESCRIPTION: Validate object and return the descriptor type
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ******************************************************************************/
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross/* Printable names of object descriptor types */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Rossstatic const char *AcpiGbl_DescTypeNames[] =
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross{
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 00 */ "Not a Descriptor",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 01 */ "Cached",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 02 */ "State-Generic",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 03 */ "State-Update",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 04 */ "State-Package",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 05 */ "State-Control",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 06 */ "State-RootParseScope",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 07 */ "State-ParseScope",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 08 */ "State-WalkScope",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 09 */ "State-Result",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 10 */ "State-Notify",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 11 */ "State-Thread",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 12 */ "Walk",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 13 */ "Parser",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 14 */ "Operand",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 15 */ "Node"
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross};
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Rosschar *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon RossAcpiUtGetDescriptorName (
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross void *Object)
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross{
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross if (!Object)
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross {
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross return ("NULL OBJECT");
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross }
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross if (ACPI_GET_DESCRIPTOR_TYPE (Object) > ACPI_DESC_TYPE_MAX)
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross {
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross return ("Not a Descriptor");
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross }
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross return (ACPI_CAST_PTR (char,
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross AcpiGbl_DescTypeNames[ACPI_GET_DESCRIPTOR_TYPE (Object)]));
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross}
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross/*******************************************************************************
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * FUNCTION: AcpiUtGetReferenceName
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * PARAMETERS: Object - An ACPI reference object
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * RETURN: Decoded name of the type of reference
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * DESCRIPTION: Decode a reference object sub-type to a string.
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ******************************************************************************/
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross/* Printable names of reference object sub-types */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Rossstatic const char *AcpiGbl_RefClassNames[] =
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross{
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 00 */ "Local",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 01 */ "Argument",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 02 */ "RefOf",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 03 */ "Index",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 04 */ "DdbHandle",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 05 */ "Named Object",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* 06 */ "Debug"
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross};
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Rossconst char *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon RossAcpiUtGetReferenceName (
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ACPI_OPERAND_OBJECT *Object)
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross{
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross if (!Object)
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross {
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross return ("NULL Object");
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross }
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross if (ACPI_GET_DESCRIPTOR_TYPE (Object) != ACPI_DESC_TYPE_OPERAND)
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross {
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross return ("Not an Operand object");
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross }
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross if (Object->Common.Type != ACPI_TYPE_LOCAL_REFERENCE)
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross {
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross return ("Not a Reference object");
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross }
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross if (Object->Reference.Class > ACPI_REFCLASS_MAX)
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross {
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross return ("Unknown Reference class");
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross }
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross return (AcpiGbl_RefClassNames[Object->Reference.Class]);
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross}
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross/*
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * Strings and procedures used for debug only
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross/*******************************************************************************
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * FUNCTION: AcpiUtGetMutexName
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * PARAMETERS: MutexId - The predefined ID for this mutex.
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * RETURN: Decoded name of the internal mutex
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * DESCRIPTION: Translate a mutex ID into a name string (Debug only)
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ******************************************************************************/
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross/* Names for internal mutex objects, used for debug output */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Rossstatic char *AcpiGbl_MutexNames[ACPI_NUM_MUTEX] =
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross{
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross "ACPI_MTX_Interpreter",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross "ACPI_MTX_Namespace",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross "ACPI_MTX_Tables",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross "ACPI_MTX_Events",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross "ACPI_MTX_Caches",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross "ACPI_MTX_Memory",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross "ACPI_MTX_CommandComplete",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross "ACPI_MTX_CommandReady"
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross};
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Rosschar *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon RossAcpiUtGetMutexName (
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross UINT32 MutexId)
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross{
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross if (MutexId > ACPI_MAX_MUTEX)
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross {
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross return ("Invalid Mutex ID");
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross }
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross return (AcpiGbl_MutexNames[MutexId]);
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross}
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross/*******************************************************************************
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * FUNCTION: AcpiUtGetNotifyName
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * PARAMETERS: NotifyValue - Value from the Notify() request
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * RETURN: Decoded name for the notify value
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * DESCRIPTION: Translate a Notify Value to a notify namestring.
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ******************************************************************************/
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross/* Names for Notify() values, used for debug output */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Rossstatic const char *AcpiGbl_NotifyValueNames[] =
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross{
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross "Bus Check",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross "Device Check",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross "Device Wake",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross "Eject Request",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross "Device Check Light",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross "Frequency Mismatch",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross "Bus Mode Mismatch",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross "Power Fault",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross "Capabilities Check",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross "Device PLD Check",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross "Reserved",
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross "System Locality Update"
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross};
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Rossconst char *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon RossAcpiUtGetNotifyName (
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross UINT32 NotifyValue)
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross{
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross if (NotifyValue <= ACPI_NOTIFY_MAX)
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross {
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross return (AcpiGbl_NotifyValueNames[NotifyValue]);
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross }
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross else if (NotifyValue <= ACPI_MAX_SYS_NOTIFY)
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross {
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross return ("Reserved");
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross }
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross else /* Greater or equal to 0x80 */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross {
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross return ("**Device Specific**");
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross }
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross}
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross#endif
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross/*******************************************************************************
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * FUNCTION: AcpiUtValidObjectType
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * PARAMETERS: Type - Object type to be validated
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * RETURN: TRUE if valid object type, FALSE otherwise
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross * DESCRIPTION: Validate an object type
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross *
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ******************************************************************************/
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon RossBOOLEAN
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon RossAcpiUtValidObjectType (
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross ACPI_OBJECT_TYPE Type)
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross{
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross if (Type > ACPI_TYPE_LOCAL_MAX)
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross {
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross /* Note: Assumes all TYPEs are contiguous (external/local) */
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross return (FALSE);
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross }
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross return (TRUE);
26f3cdf03f1adcc98f6d3d99843ee71e9229a8c0Gordon Ross}