Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) // SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) /******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4)  * Module Name: utdecode - Utility decoding routines (value-to-string)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6)  * Copyright (C) 2000 - 2020, Intel Corp.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8)  *****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) #include <acpi/acpi.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) #include "accommon.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) #include "acnamesp.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) #include "amlcode.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) #define _COMPONENT          ACPI_UTILITIES
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) ACPI_MODULE_NAME("utdecode")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19)  * Properties of the ACPI Object Types, both internal and external.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20)  * The table is indexed by values of acpi_object_type
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) const u8 acpi_gbl_ns_properties[ACPI_NUM_NS_TYPES] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) 	ACPI_NS_NORMAL,		/* 00 Any              */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) 	ACPI_NS_NORMAL,		/* 01 Number           */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) 	ACPI_NS_NORMAL,		/* 02 String           */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) 	ACPI_NS_NORMAL,		/* 03 Buffer           */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) 	ACPI_NS_NORMAL,		/* 04 Package          */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) 	ACPI_NS_NORMAL,		/* 05 field_unit       */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) 	ACPI_NS_NEWSCOPE,	/* 06 Device           */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) 	ACPI_NS_NORMAL,		/* 07 Event            */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) 	ACPI_NS_NEWSCOPE,	/* 08 Method           */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) 	ACPI_NS_NORMAL,		/* 09 Mutex            */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) 	ACPI_NS_NORMAL,		/* 10 Region           */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) 	ACPI_NS_NEWSCOPE,	/* 11 Power            */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) 	ACPI_NS_NEWSCOPE,	/* 12 Processor        */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) 	ACPI_NS_NEWSCOPE,	/* 13 Thermal          */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) 	ACPI_NS_NORMAL,		/* 14 buffer_field     */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) 	ACPI_NS_NORMAL,		/* 15 ddb_handle       */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) 	ACPI_NS_NORMAL,		/* 16 Debug Object     */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) 	ACPI_NS_NORMAL,		/* 17 def_field        */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) 	ACPI_NS_NORMAL,		/* 18 bank_field       */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) 	ACPI_NS_NORMAL,		/* 19 index_field      */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) 	ACPI_NS_NORMAL,		/* 20 Reference        */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) 	ACPI_NS_NORMAL,		/* 21 Alias            */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) 	ACPI_NS_NORMAL,		/* 22 method_alias     */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) 	ACPI_NS_NORMAL,		/* 23 Notify           */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) 	ACPI_NS_NORMAL,		/* 24 Address Handler  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) 	ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL,	/* 25 Resource Desc    */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) 	ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL,	/* 26 Resource Field   */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) 	ACPI_NS_NEWSCOPE,	/* 27 Scope            */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) 	ACPI_NS_NORMAL,		/* 28 Extra            */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) 	ACPI_NS_NORMAL,		/* 29 Data             */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) 	ACPI_NS_NORMAL		/* 30 Invalid          */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58)  * FUNCTION:    acpi_ut_get_region_name
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60)  * PARAMETERS:  Space ID            - ID for the region
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62)  * RETURN:      Decoded region space_id name
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64)  * DESCRIPTION: Translate a Space ID into a name string (Debug only)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66)  ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) /* Region type decoding */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) const char *acpi_gbl_region_types[ACPI_NUM_PREDEFINED_REGIONS] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) 	"SystemMemory",		/* 0x00 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) 	"SystemIO",		/* 0x01 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) 	"PCI_Config",		/* 0x02 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) 	"EmbeddedControl",	/* 0x03 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) 	"SMBus",		/* 0x04 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) 	"SystemCMOS",		/* 0x05 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) 	"PCIBARTarget",		/* 0x06 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) 	"IPMI",			/* 0x07 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) 	"GeneralPurposeIo",	/* 0x08 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) 	"GenericSerialBus",	/* 0x09 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) 	"PCC",			/* 0x0A */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) 	"PlatformRtMechanism"	/* 0x0B */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) const char *acpi_ut_get_region_name(u8 space_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) 	if (space_id >= ACPI_USER_REGION_BEGIN) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) 		return ("UserDefinedRegion");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) 	} else if (space_id == ACPI_ADR_SPACE_DATA_TABLE) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) 		return ("DataTable");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) 	} else if (space_id == ACPI_ADR_SPACE_FIXED_HARDWARE) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) 		return ("FunctionalFixedHW");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) 	} else if (space_id >= ACPI_NUM_PREDEFINED_REGIONS) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) 		return ("InvalidSpaceId");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) 	return (acpi_gbl_region_types[space_id]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103)  * FUNCTION:    acpi_ut_get_event_name
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105)  * PARAMETERS:  event_id            - Fixed event ID
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107)  * RETURN:      Decoded event ID name
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109)  * DESCRIPTION: Translate a Event ID into a name string (Debug only)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111)  ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) /* Event type decoding */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) static const char *acpi_gbl_event_types[ACPI_NUM_FIXED_EVENTS] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) 	"PM_Timer",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) 	"GlobalLock",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) 	"PowerButton",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) 	"SleepButton",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) 	"RealTimeClock",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) const char *acpi_ut_get_event_name(u32 event_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) 	if (event_id > ACPI_EVENT_MAX) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) 		return ("InvalidEventID");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) 	return (acpi_gbl_event_types[event_id]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135)  * FUNCTION:    acpi_ut_get_type_name
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137)  * PARAMETERS:  type                - An ACPI object type
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139)  * RETURN:      Decoded ACPI object type name
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141)  * DESCRIPTION: Translate a Type ID into a name string (Debug only)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143)  ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146)  * Elements of acpi_gbl_ns_type_names below must match
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147)  * one-to-one with values of acpi_object_type
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149)  * The type ACPI_TYPE_ANY (Untyped) is used as a "don't care" when searching;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150)  * when stored in a table it really means that we have thus far seen no
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151)  * evidence to indicate what type is actually going to be stored for this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152)  & entry.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) static const char acpi_gbl_bad_type[] = "UNDEFINED";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) /* Printable names of the ACPI object types */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) static const char *acpi_gbl_ns_type_names[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) 	/* 00 */ "Untyped",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) 	/* 01 */ "Integer",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) 	/* 02 */ "String",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) 	/* 03 */ "Buffer",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) 	/* 04 */ "Package",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) 	/* 05 */ "FieldUnit",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) 	/* 06 */ "Device",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) 	/* 07 */ "Event",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) 	/* 08 */ "Method",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) 	/* 09 */ "Mutex",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) 	/* 10 */ "Region",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) 	/* 11 */ "Power",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) 	/* 12 */ "Processor",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) 	/* 13 */ "Thermal",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) 	/* 14 */ "BufferField",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) 	/* 15 */ "DdbHandle",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) 	/* 16 */ "DebugObject",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) 	/* 17 */ "RegionField",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) 	/* 18 */ "BankField",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) 	/* 19 */ "IndexField",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) 	/* 20 */ "Reference",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) 	/* 21 */ "Alias",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) 	/* 22 */ "MethodAlias",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) 	/* 23 */ "Notify",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) 	/* 24 */ "AddrHandler",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) 	/* 25 */ "ResourceDesc",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) 	/* 26 */ "ResourceFld",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) 	/* 27 */ "Scope",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) 	/* 28 */ "Extra",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) 	/* 29 */ "Data",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) 	/* 30 */ "Invalid"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) const char *acpi_ut_get_type_name(acpi_object_type type)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) 	if (type > ACPI_TYPE_INVALID) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) 		return (acpi_gbl_bad_type);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) 	return (acpi_gbl_ns_type_names[type]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) const char *acpi_ut_get_object_type_name(union acpi_operand_object *obj_desc)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) 	ACPI_FUNCTION_TRACE(ut_get_object_type_name);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) 	if (!obj_desc) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) 		ACPI_DEBUG_PRINT((ACPI_DB_EXEC, "Null Object Descriptor\n"));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) 		return_STR("[NULL Object Descriptor]");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) 	/* These descriptor types share a common area */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) 	if ((ACPI_GET_DESCRIPTOR_TYPE(obj_desc) != ACPI_DESC_TYPE_OPERAND) &&
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) 	    (ACPI_GET_DESCRIPTOR_TYPE(obj_desc) != ACPI_DESC_TYPE_NAMED)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) 		ACPI_DEBUG_PRINT((ACPI_DB_EXEC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) 				  "Invalid object descriptor type: 0x%2.2X [%s] (%p)\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) 				  ACPI_GET_DESCRIPTOR_TYPE(obj_desc),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) 				  acpi_ut_get_descriptor_name(obj_desc),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) 				  obj_desc));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) 		return_STR("Invalid object");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) 	return_STR(acpi_ut_get_type_name(obj_desc->common.type));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229)  * FUNCTION:    acpi_ut_get_node_name
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231)  * PARAMETERS:  object               - A namespace node
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233)  * RETURN:      ASCII name of the node
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235)  * DESCRIPTION: Validate the node and return the node's ACPI name.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237)  ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) const char *acpi_ut_get_node_name(void *object)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) 	struct acpi_namespace_node *node = (struct acpi_namespace_node *)object;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) 	/* Must return a string of exactly 4 characters == ACPI_NAMESEG_SIZE */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) 	if (!object) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) 		return ("NULL");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) 	/* Check for Root node */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) 	if ((object == ACPI_ROOT_OBJECT) || (object == acpi_gbl_root_node)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) 		return ("\"\\\" ");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) 	/* Descriptor must be a namespace node */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) 	if (ACPI_GET_DESCRIPTOR_TYPE(node) != ACPI_DESC_TYPE_NAMED) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) 		return ("####");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) 	/*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) 	 * Ensure name is valid. The name was validated/repaired when the node
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) 	 * was created, but make sure it has not been corrupted.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) 	acpi_ut_repair_name(node->name.ascii);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) 	/* Return the name */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) 	return (node->name.ascii);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274)  * FUNCTION:    acpi_ut_get_descriptor_name
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276)  * PARAMETERS:  object               - An ACPI object
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278)  * RETURN:      Decoded name of the descriptor type
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280)  * DESCRIPTION: Validate object and return the descriptor type
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282)  ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) /* Printable names of object descriptor types */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) static const char *acpi_gbl_desc_type_names[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) 	/* 00 */ "Not a Descriptor",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) 	/* 01 */ "Cached Object",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) 	/* 02 */ "State-Generic",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) 	/* 03 */ "State-Update",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) 	/* 04 */ "State-Package",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) 	/* 05 */ "State-Control",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) 	/* 06 */ "State-RootParseScope",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) 	/* 07 */ "State-ParseScope",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) 	/* 08 */ "State-WalkScope",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) 	/* 09 */ "State-Result",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) 	/* 10 */ "State-Notify",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) 	/* 11 */ "State-Thread",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) 	/* 12 */ "Tree Walk State",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) 	/* 13 */ "Parse Tree Op",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) 	/* 14 */ "Operand Object",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) 	/* 15 */ "Namespace Node"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) const char *acpi_ut_get_descriptor_name(void *object)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) 	if (!object) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) 		return ("NULL OBJECT");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) 	if (ACPI_GET_DESCRIPTOR_TYPE(object) > ACPI_DESC_TYPE_MAX) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) 		return ("Not a Descriptor");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316) 	return (acpi_gbl_desc_type_names[ACPI_GET_DESCRIPTOR_TYPE(object)]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321)  * FUNCTION:    acpi_ut_get_reference_name
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323)  * PARAMETERS:  object               - An ACPI reference object
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325)  * RETURN:      Decoded name of the type of reference
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327)  * DESCRIPTION: Decode a reference object sub-type to a string.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329)  ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331) /* Printable names of reference object sub-types */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) static const char *acpi_gbl_ref_class_names[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334) 	/* 00 */ "Local",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335) 	/* 01 */ "Argument",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336) 	/* 02 */ "RefOf",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337) 	/* 03 */ "Index",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338) 	/* 04 */ "DdbHandle",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339) 	/* 05 */ "Named Object",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340) 	/* 06 */ "Debug"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 342) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 343) const char *acpi_ut_get_reference_name(union acpi_operand_object *object)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 344) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 345) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 346) 	if (!object) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 347) 		return ("NULL Object");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 348) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 349) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 350) 	if (ACPI_GET_DESCRIPTOR_TYPE(object) != ACPI_DESC_TYPE_OPERAND) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 351) 		return ("Not an Operand object");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 352) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 353) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 354) 	if (object->common.type != ACPI_TYPE_LOCAL_REFERENCE) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 355) 		return ("Not a Reference object");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 356) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 357) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 358) 	if (object->reference.class > ACPI_REFCLASS_MAX) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 359) 		return ("Unknown Reference class");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 360) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 361) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 362) 	return (acpi_gbl_ref_class_names[object->reference.class]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 363) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 364) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 365) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 366)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 367)  * FUNCTION:    acpi_ut_get_mutex_name
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 368)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 369)  * PARAMETERS:  mutex_id        - The predefined ID for this mutex.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 370)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 371)  * RETURN:      Decoded name of the internal mutex
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 372)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 373)  * DESCRIPTION: Translate a mutex ID into a name string (Debug only)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 374)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 375)  ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 376) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 377) /* Names for internal mutex objects, used for debug output */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 378) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 379) static const char *acpi_gbl_mutex_names[ACPI_NUM_MUTEX] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 380) 	"ACPI_MTX_Interpreter",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 381) 	"ACPI_MTX_Namespace",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 382) 	"ACPI_MTX_Tables",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 383) 	"ACPI_MTX_Events",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 384) 	"ACPI_MTX_Caches",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 385) 	"ACPI_MTX_Memory",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 386) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 387) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 388) const char *acpi_ut_get_mutex_name(u32 mutex_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 389) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 390) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 391) 	if (mutex_id > ACPI_MAX_MUTEX) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 392) 		return ("Invalid Mutex ID");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 393) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 394) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 395) 	return (acpi_gbl_mutex_names[mutex_id]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 396) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 397) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 398) #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 399) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 400) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 401)  * Strings and procedures used for debug only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 402)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 403) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 404) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 405)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 406)  * FUNCTION:    acpi_ut_get_notify_name
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 407)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 408)  * PARAMETERS:  notify_value    - Value from the Notify() request
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 409)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 410)  * RETURN:      Decoded name for the notify value
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 411)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 412)  * DESCRIPTION: Translate a Notify Value to a notify namestring.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 413)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 414)  ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 415) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 416) /* Names for Notify() values, used for debug output */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 417) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 418) static const char *acpi_gbl_generic_notify[ACPI_GENERIC_NOTIFY_MAX + 1] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 419) 	/* 00 */ "Bus Check",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 420) 	/* 01 */ "Device Check",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 421) 	/* 02 */ "Device Wake",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 422) 	/* 03 */ "Eject Request",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 423) 	/* 04 */ "Device Check Light",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 424) 	/* 05 */ "Frequency Mismatch",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 425) 	/* 06 */ "Bus Mode Mismatch",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 426) 	/* 07 */ "Power Fault",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 427) 	/* 08 */ "Capabilities Check",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 428) 	/* 09 */ "Device PLD Check",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 429) 	/* 0A */ "Reserved",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 430) 	/* 0B */ "System Locality Update",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 431) 								/* 0C */ "Reserved (was previously Shutdown Request)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 432) 								/* Reserved in ACPI 6.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 433) 	/* 0D */ "System Resource Affinity Update",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 434) 								/* 0E */ "Heterogeneous Memory Attributes Update",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 435) 								/* ACPI 6.2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 436) 						/* 0F */ "Error Disconnect Recover"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 437) 						/* ACPI 6.3 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 438) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 439) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 440) static const char *acpi_gbl_device_notify[5] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 441) 	/* 80 */ "Status Change",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 442) 	/* 81 */ "Information Change",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 443) 	/* 82 */ "Device-Specific Change",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 444) 	/* 83 */ "Device-Specific Change",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 445) 	/* 84 */ "Reserved"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 446) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 447) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 448) static const char *acpi_gbl_processor_notify[5] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 449) 	/* 80 */ "Performance Capability Change",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 450) 	/* 81 */ "C-State Change",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 451) 	/* 82 */ "Throttling Capability Change",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 452) 	/* 83 */ "Guaranteed Change",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 453) 	/* 84 */ "Minimum Excursion"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 454) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 455) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 456) static const char *acpi_gbl_thermal_notify[5] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 457) 	/* 80 */ "Thermal Status Change",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 458) 	/* 81 */ "Thermal Trip Point Change",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 459) 	/* 82 */ "Thermal Device List Change",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 460) 	/* 83 */ "Thermal Relationship Change",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 461) 	/* 84 */ "Reserved"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 462) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 463) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 464) const char *acpi_ut_get_notify_name(u32 notify_value, acpi_object_type type)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 465) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 466) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 467) 	/* 00 - 0F are "common to all object types" (from ACPI Spec) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 468) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 469) 	if (notify_value <= ACPI_GENERIC_NOTIFY_MAX) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 470) 		return (acpi_gbl_generic_notify[notify_value]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 471) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 472) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 473) 	/* 10 - 7F are reserved */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 474) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 475) 	if (notify_value <= ACPI_MAX_SYS_NOTIFY) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 476) 		return ("Reserved");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 477) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 478) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 479) 	/* 80 - 84 are per-object-type */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 480) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 481) 	if (notify_value <= ACPI_SPECIFIC_NOTIFY_MAX) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 482) 		switch (type) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 483) 		case ACPI_TYPE_ANY:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 484) 		case ACPI_TYPE_DEVICE:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 485) 			return (acpi_gbl_device_notify[notify_value - 0x80]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 486) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 487) 		case ACPI_TYPE_PROCESSOR:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 488) 			return (acpi_gbl_processor_notify[notify_value - 0x80]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 489) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 490) 		case ACPI_TYPE_THERMAL:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 491) 			return (acpi_gbl_thermal_notify[notify_value - 0x80]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 492) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 493) 		default:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 494) 			return ("Target object type does not support notifies");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 495) 		}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 496) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 497) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 498) 	/* 84 - BF are device-specific */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 499) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 500) 	if (notify_value <= ACPI_MAX_DEVICE_SPECIFIC_NOTIFY) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 501) 		return ("Device-Specific");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 502) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 503) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 504) 	/* C0 and above are hardware-specific */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 505) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 506) 	return ("Hardware-Specific");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 507) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 508) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 509) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 510)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 511)  * FUNCTION:    acpi_ut_get_argument_type_name
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 512)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 513)  * PARAMETERS:  arg_type            - an ARGP_* parser argument type
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 514)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 515)  * RETURN:      Decoded ARGP_* type
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 516)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 517)  * DESCRIPTION: Decode an ARGP_* parser type, as defined in the amlcode.h file,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 518)  *              and used in the acopcode.h file. For example, ARGP_TERMARG.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 519)  *              Used for debug only.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 520)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 521)  ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 522) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 523) static const char *acpi_gbl_argument_type[20] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 524) 	/* 00 */ "Unknown ARGP",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 525) 	/* 01 */ "ByteData",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 526) 	/* 02 */ "ByteList",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 527) 	/* 03 */ "CharList",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 528) 	/* 04 */ "DataObject",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 529) 	/* 05 */ "DataObjectList",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 530) 	/* 06 */ "DWordData",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 531) 	/* 07 */ "FieldList",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 532) 	/* 08 */ "Name",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 533) 	/* 09 */ "NameString",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 534) 	/* 0A */ "ObjectList",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 535) 	/* 0B */ "PackageLength",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 536) 	/* 0C */ "SuperName",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 537) 	/* 0D */ "Target",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 538) 	/* 0E */ "TermArg",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 539) 	/* 0F */ "TermList",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 540) 	/* 10 */ "WordData",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 541) 	/* 11 */ "QWordData",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 542) 	/* 12 */ "SimpleName",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 543) 	/* 13 */ "NameOrRef"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 544) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 545) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 546) const char *acpi_ut_get_argument_type_name(u32 arg_type)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 547) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 548) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 549) 	if (arg_type > ARGP_MAX) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 550) 		return ("Unknown ARGP");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 551) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 552) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 553) 	return (acpi_gbl_argument_type[arg_type]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 554) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 555) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 556) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 557) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 558) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 559)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 560)  * FUNCTION:    acpi_ut_valid_object_type
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 561)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 562)  * PARAMETERS:  type            - Object type to be validated
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 563)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 564)  * RETURN:      TRUE if valid object type, FALSE otherwise
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 565)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 566)  * DESCRIPTION: Validate an object type
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 567)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 568)  ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 569) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 570) u8 acpi_ut_valid_object_type(acpi_object_type type)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 571) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 572) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 573) 	if (type > ACPI_TYPE_LOCAL_MAX) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 574) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 575) 		/* Note: Assumes all TYPEs are contiguous (external/local) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 576) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 577) 		return (FALSE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 578) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 579) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 580) 	return (TRUE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 581) }