^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: exresnte - AML Interpreter object resolution
^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 "acdispat.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) #include "acinterp.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) #include "acnamesp.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) #define _COMPONENT ACPI_EXECUTER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) ACPI_MODULE_NAME("exresnte")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) * FUNCTION: acpi_ex_resolve_node_to_value
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) * PARAMETERS: object_ptr - Pointer to a location that contains
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) * a pointer to a NS node, and will receive a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) * pointer to the resolved object.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) * walk_state - Current state. Valid only if executing AML
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) * code. NULL if simply resolving an object
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) * RETURN: Status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) * DESCRIPTION: Resolve a Namespace node to a valued object
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) * Note: for some of the data types, the pointer attached to the Node
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) * can be either a pointer to an actual internal object or a pointer into the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) * AML stream itself. These types are currently:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) * ACPI_TYPE_INTEGER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) * ACPI_TYPE_STRING
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) * ACPI_TYPE_BUFFER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) * ACPI_TYPE_MUTEX
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) * ACPI_TYPE_PACKAGE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) acpi_status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) acpi_ex_resolve_node_to_value(struct acpi_namespace_node **object_ptr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) struct acpi_walk_state *walk_state)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) acpi_status status = AE_OK;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) union acpi_operand_object *source_desc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) union acpi_operand_object *obj_desc = NULL;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) struct acpi_namespace_node *node;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) acpi_object_type entry_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) ACPI_FUNCTION_TRACE(ex_resolve_node_to_value);
^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) * The stack pointer points to a struct acpi_namespace_node (Node). Get the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) * object that is attached to the Node.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) node = *object_ptr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) source_desc = acpi_ns_get_attached_object(node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) entry_type = acpi_ns_get_type((acpi_handle)node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) ACPI_DEBUG_PRINT((ACPI_DB_EXEC, "Entry=%p SourceDesc=%p [%s]\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) node, source_desc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) acpi_ut_get_type_name(entry_type)));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) if ((entry_type == ACPI_TYPE_LOCAL_ALIAS) ||
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) (entry_type == ACPI_TYPE_LOCAL_METHOD_ALIAS)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) /* There is always exactly one level of indirection */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) node = ACPI_CAST_PTR(struct acpi_namespace_node, node->object);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) source_desc = acpi_ns_get_attached_object(node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) entry_type = acpi_ns_get_type((acpi_handle)node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) *object_ptr = node;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) * Several object types require no further processing:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) * 1) Device/Thermal objects don't have a "real" subobject, return Node
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) * 2) Method locals and arguments have a pseudo-Node
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) * 3) 10/2007: Added method type to assist with Package construction.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) if ((entry_type == ACPI_TYPE_DEVICE) ||
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) (entry_type == ACPI_TYPE_THERMAL) ||
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) (entry_type == ACPI_TYPE_METHOD) ||
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) (node->flags & (ANOBJ_METHOD_ARG | ANOBJ_METHOD_LOCAL))) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) return_ACPI_STATUS(AE_OK);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) if (!source_desc) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) ACPI_ERROR((AE_INFO, "No object attached to node [%4.4s] %p",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) node->name.ascii, node));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) return_ACPI_STATUS(AE_AML_UNINITIALIZED_NODE);
^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) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) * Action is based on the type of the Node, which indicates the type
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) * of the attached object or pointer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) switch (entry_type) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) case ACPI_TYPE_PACKAGE:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) if (source_desc->common.type != ACPI_TYPE_PACKAGE) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) ACPI_ERROR((AE_INFO, "Object not a Package, type %s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) acpi_ut_get_object_type_name(source_desc)));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) return_ACPI_STATUS(AE_AML_OPERAND_TYPE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) status = acpi_ds_get_package_arguments(source_desc);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) if (ACPI_SUCCESS(status)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) /* Return an additional reference to the object */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) obj_desc = source_desc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) acpi_ut_add_reference(obj_desc);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) case ACPI_TYPE_BUFFER:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) if (source_desc->common.type != ACPI_TYPE_BUFFER) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) ACPI_ERROR((AE_INFO, "Object not a Buffer, type %s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) acpi_ut_get_object_type_name(source_desc)));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) return_ACPI_STATUS(AE_AML_OPERAND_TYPE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) status = acpi_ds_get_buffer_arguments(source_desc);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) if (ACPI_SUCCESS(status)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) /* Return an additional reference to the object */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) obj_desc = source_desc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) acpi_ut_add_reference(obj_desc);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) case ACPI_TYPE_STRING:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) if (source_desc->common.type != ACPI_TYPE_STRING) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) ACPI_ERROR((AE_INFO, "Object not a String, type %s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) acpi_ut_get_object_type_name(source_desc)));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) return_ACPI_STATUS(AE_AML_OPERAND_TYPE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) /* Return an additional reference to the object */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) obj_desc = source_desc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) acpi_ut_add_reference(obj_desc);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) case ACPI_TYPE_INTEGER:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) if (source_desc->common.type != ACPI_TYPE_INTEGER) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) ACPI_ERROR((AE_INFO, "Object not a Integer, type %s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) acpi_ut_get_object_type_name(source_desc)));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) return_ACPI_STATUS(AE_AML_OPERAND_TYPE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) /* Return an additional reference to the object */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) obj_desc = source_desc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) acpi_ut_add_reference(obj_desc);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) case ACPI_TYPE_BUFFER_FIELD:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) case ACPI_TYPE_LOCAL_REGION_FIELD:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) case ACPI_TYPE_LOCAL_BANK_FIELD:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) case ACPI_TYPE_LOCAL_INDEX_FIELD:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) ACPI_DEBUG_PRINT((ACPI_DB_EXEC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) "FieldRead Node=%p SourceDesc=%p Type=%X\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) node, source_desc, entry_type));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) status =
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) acpi_ex_read_data_from_field(walk_state, source_desc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) &obj_desc);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) /* For these objects, just return the object attached to the Node */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) case ACPI_TYPE_MUTEX:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) case ACPI_TYPE_POWER:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) case ACPI_TYPE_PROCESSOR:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) case ACPI_TYPE_EVENT:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) case ACPI_TYPE_REGION:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) /* Return an additional reference to the object */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) obj_desc = source_desc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) acpi_ut_add_reference(obj_desc);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) /* TYPE_ANY is untyped, and thus there is no object associated with it */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) case ACPI_TYPE_ANY:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) ACPI_ERROR((AE_INFO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) "Untyped entry %p, no attached object!", node));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) return_ACPI_STATUS(AE_AML_OPERAND_TYPE); /* Cannot be AE_TYPE */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) case ACPI_TYPE_LOCAL_REFERENCE:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) switch (source_desc->reference.class) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) case ACPI_REFCLASS_TABLE: /* This is a ddb_handle */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) case ACPI_REFCLASS_REFOF:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) case ACPI_REFCLASS_INDEX:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) /* Return an additional reference to the object */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) obj_desc = source_desc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) acpi_ut_add_reference(obj_desc);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) default:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) /* No named references are allowed here */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) ACPI_ERROR((AE_INFO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) "Unsupported Reference type 0x%X",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) source_desc->reference.class));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) return_ACPI_STATUS(AE_AML_OPERAND_TYPE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) default:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) /* Default case is for unknown types */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) ACPI_ERROR((AE_INFO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) "Node %p - Unknown object type 0x%X",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) node, entry_type));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) return_ACPI_STATUS(AE_AML_OPERAND_TYPE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) } /* switch (entry_type) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) /* Return the object descriptor */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) *object_ptr = (void *)obj_desc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) return_ACPI_STATUS(status);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) }