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: 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) }