^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: exdump - Interpreter debug output routines
^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 "acinterp.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) #include "amlcode.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("exdump")
^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) * The following routines are used for debug output only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) /* Local prototypes */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) static void acpi_ex_out_string(const char *title, const char *value);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) static void acpi_ex_out_pointer(const char *title, const void *value);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) static void
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) acpi_ex_dump_object(union acpi_operand_object *obj_desc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) struct acpi_exdump_info *info);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) static void acpi_ex_dump_reference_obj(union acpi_operand_object *obj_desc);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) static void
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) acpi_ex_dump_package_obj(union acpi_operand_object *obj_desc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) u32 level, u32 index);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) * Object Descriptor info tables
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) * Note: The first table entry must be an INIT opcode and must contain
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) * the table length (number of table entries)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) static struct acpi_exdump_info acpi_ex_dump_integer[2] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE(acpi_ex_dump_integer), NULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) {ACPI_EXD_UINT64, ACPI_EXD_OFFSET(integer.value), "Value"}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) static struct acpi_exdump_info acpi_ex_dump_string[4] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE(acpi_ex_dump_string), NULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) {ACPI_EXD_UINT32, ACPI_EXD_OFFSET(string.length), "Length"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(string.pointer), "Pointer"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) {ACPI_EXD_STRING, 0, NULL}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) static struct acpi_exdump_info acpi_ex_dump_buffer[5] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE(acpi_ex_dump_buffer), NULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) {ACPI_EXD_UINT32, ACPI_EXD_OFFSET(buffer.length), "Length"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(buffer.pointer), "Pointer"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) {ACPI_EXD_NODE, ACPI_EXD_OFFSET(buffer.node), "Parent Node"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) {ACPI_EXD_BUFFER, 0, NULL}
^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) static struct acpi_exdump_info acpi_ex_dump_package[6] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE(acpi_ex_dump_package), NULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) {ACPI_EXD_NODE, ACPI_EXD_OFFSET(package.node), "Parent Node"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) {ACPI_EXD_UINT8, ACPI_EXD_OFFSET(package.flags), "Flags"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) {ACPI_EXD_UINT32, ACPI_EXD_OFFSET(package.count), "Element Count"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(package.elements), "Element List"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) {ACPI_EXD_PACKAGE, 0, NULL}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) static struct acpi_exdump_info acpi_ex_dump_device[4] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE(acpi_ex_dump_device), NULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(device.notify_list[0]),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) "System Notify"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(device.notify_list[1]),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) "Device Notify"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) {ACPI_EXD_HDLR_LIST, ACPI_EXD_OFFSET(device.handler), "Handler"}
^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) static struct acpi_exdump_info acpi_ex_dump_event[2] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE(acpi_ex_dump_event), NULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(event.os_semaphore), "OsSemaphore"}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) static struct acpi_exdump_info acpi_ex_dump_method[9] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE(acpi_ex_dump_method), NULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) {ACPI_EXD_UINT8, ACPI_EXD_OFFSET(method.info_flags), "Info Flags"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) {ACPI_EXD_UINT8, ACPI_EXD_OFFSET(method.param_count),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) "Parameter Count"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) {ACPI_EXD_UINT8, ACPI_EXD_OFFSET(method.sync_level), "Sync Level"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(method.mutex), "Mutex"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) {ACPI_EXD_UINT16, ACPI_EXD_OFFSET(method.owner_id), "Owner Id"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) {ACPI_EXD_UINT8, ACPI_EXD_OFFSET(method.thread_count), "Thread Count"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) {ACPI_EXD_UINT32, ACPI_EXD_OFFSET(method.aml_length), "Aml Length"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(method.aml_start), "Aml Start"}
^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) static struct acpi_exdump_info acpi_ex_dump_mutex[6] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE(acpi_ex_dump_mutex), NULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) {ACPI_EXD_UINT8, ACPI_EXD_OFFSET(mutex.sync_level), "Sync Level"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) {ACPI_EXD_UINT8, ACPI_EXD_OFFSET(mutex.original_sync_level),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) "Original Sync Level"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(mutex.owner_thread), "Owner Thread"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) {ACPI_EXD_UINT16, ACPI_EXD_OFFSET(mutex.acquisition_depth),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) "Acquire Depth"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(mutex.os_mutex), "OsMutex"}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) static struct acpi_exdump_info acpi_ex_dump_region[8] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE(acpi_ex_dump_region), NULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) {ACPI_EXD_UINT8, ACPI_EXD_OFFSET(region.space_id), "Space Id"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) {ACPI_EXD_UINT8, ACPI_EXD_OFFSET(region.flags), "Flags"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) {ACPI_EXD_NODE, ACPI_EXD_OFFSET(region.node), "Parent Node"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) {ACPI_EXD_ADDRESS, ACPI_EXD_OFFSET(region.address), "Address"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) {ACPI_EXD_UINT32, ACPI_EXD_OFFSET(region.length), "Length"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) {ACPI_EXD_HDLR_LIST, ACPI_EXD_OFFSET(region.handler), "Handler"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(region.next), "Next"}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) static struct acpi_exdump_info acpi_ex_dump_power[6] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE(acpi_ex_dump_power), NULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) {ACPI_EXD_UINT32, ACPI_EXD_OFFSET(power_resource.system_level),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) "System Level"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) {ACPI_EXD_UINT32, ACPI_EXD_OFFSET(power_resource.resource_order),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) "Resource Order"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(power_resource.notify_list[0]),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) "System Notify"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(power_resource.notify_list[1]),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) "Device Notify"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(power_resource.handler), "Handler"}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) static struct acpi_exdump_info acpi_ex_dump_processor[7] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE(acpi_ex_dump_processor), NULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) {ACPI_EXD_UINT8, ACPI_EXD_OFFSET(processor.proc_id), "Processor ID"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) {ACPI_EXD_UINT8, ACPI_EXD_OFFSET(processor.length), "Length"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) {ACPI_EXD_ADDRESS, ACPI_EXD_OFFSET(processor.address), "Address"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(processor.notify_list[0]),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) "System Notify"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(processor.notify_list[1]),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) "Device Notify"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(processor.handler), "Handler"}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) static struct acpi_exdump_info acpi_ex_dump_thermal[4] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE(acpi_ex_dump_thermal), NULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(thermal_zone.notify_list[0]),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) "System Notify"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(thermal_zone.notify_list[1]),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) "Device Notify"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(thermal_zone.handler), "Handler"}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) static struct acpi_exdump_info acpi_ex_dump_buffer_field[3] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE(acpi_ex_dump_buffer_field), NULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) {ACPI_EXD_FIELD, 0, NULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(buffer_field.buffer_obj),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) "Buffer Object"}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) static struct acpi_exdump_info acpi_ex_dump_region_field[5] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE(acpi_ex_dump_region_field), NULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) {ACPI_EXD_FIELD, 0, NULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) {ACPI_EXD_UINT8, ACPI_EXD_OFFSET(field.access_length), "AccessLength"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(field.region_obj), "Region Object"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(field.resource_buffer),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) "ResourceBuffer"}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) static struct acpi_exdump_info acpi_ex_dump_bank_field[5] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE(acpi_ex_dump_bank_field), NULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) {ACPI_EXD_FIELD, 0, NULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) {ACPI_EXD_UINT32, ACPI_EXD_OFFSET(bank_field.value), "Value"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(bank_field.region_obj),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) "Region Object"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(bank_field.bank_obj), "Bank Object"}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) static struct acpi_exdump_info acpi_ex_dump_index_field[5] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE(acpi_ex_dump_bank_field), NULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) {ACPI_EXD_FIELD, 0, NULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) {ACPI_EXD_UINT32, ACPI_EXD_OFFSET(index_field.value), "Value"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(index_field.index_obj),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) "Index Object"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(index_field.data_obj), "Data Object"}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) static struct acpi_exdump_info acpi_ex_dump_reference[9] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE(acpi_ex_dump_reference), NULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) {ACPI_EXD_UINT8, ACPI_EXD_OFFSET(reference.class), "Class"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) {ACPI_EXD_UINT8, ACPI_EXD_OFFSET(reference.target_type), "Target Type"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) {ACPI_EXD_UINT32, ACPI_EXD_OFFSET(reference.value), "Value"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(reference.object), "Object Desc"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) {ACPI_EXD_NODE, ACPI_EXD_OFFSET(reference.node), "Node"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(reference.where), "Where"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(reference.index_pointer),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) "Index Pointer"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) {ACPI_EXD_REFERENCE, 0, NULL}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) static struct acpi_exdump_info acpi_ex_dump_address_handler[6] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE(acpi_ex_dump_address_handler),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) NULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) {ACPI_EXD_UINT8, ACPI_EXD_OFFSET(address_space.space_id), "Space Id"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) {ACPI_EXD_HDLR_LIST, ACPI_EXD_OFFSET(address_space.next), "Next"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) {ACPI_EXD_RGN_LIST, ACPI_EXD_OFFSET(address_space.region_list),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) "Region List"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) {ACPI_EXD_NODE, ACPI_EXD_OFFSET(address_space.node), "Node"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(address_space.context), "Context"}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) static struct acpi_exdump_info acpi_ex_dump_notify[7] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE(acpi_ex_dump_notify), NULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) {ACPI_EXD_NODE, ACPI_EXD_OFFSET(notify.node), "Node"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) {ACPI_EXD_UINT32, ACPI_EXD_OFFSET(notify.handler_type), "Handler Type"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(notify.handler), "Handler"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(notify.context), "Context"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(notify.next[0]),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) "Next System Notify"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(notify.next[1]), "Next Device Notify"}
^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) static struct acpi_exdump_info acpi_ex_dump_extra[6] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE(acpi_ex_dump_extra), NULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(extra.method_REG), "_REG Method"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) {ACPI_EXD_NODE, ACPI_EXD_OFFSET(extra.scope_node), "Scope Node"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(extra.region_context),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) "Region Context"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(extra.aml_start), "Aml Start"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) {ACPI_EXD_UINT32, ACPI_EXD_OFFSET(extra.aml_length), "Aml Length"}
^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) static struct acpi_exdump_info acpi_ex_dump_data[3] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE(acpi_ex_dump_data), NULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(data.handler), "Handler"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(data.pointer), "Raw Data"}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) /* Miscellaneous tables */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) static struct acpi_exdump_info acpi_ex_dump_common[5] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE(acpi_ex_dump_common), NULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) {ACPI_EXD_TYPE, 0, NULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) {ACPI_EXD_UINT16, ACPI_EXD_OFFSET(common.reference_count),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) "Reference Count"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) {ACPI_EXD_UINT8, ACPI_EXD_OFFSET(common.flags), "Flags"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) {ACPI_EXD_LIST, ACPI_EXD_OFFSET(common.next_object), "Object List"}
^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) static struct acpi_exdump_info acpi_ex_dump_field_common[7] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE(acpi_ex_dump_field_common), NULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) {ACPI_EXD_UINT8, ACPI_EXD_OFFSET(common_field.field_flags),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) "Field Flags"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) {ACPI_EXD_UINT8, ACPI_EXD_OFFSET(common_field.access_byte_width),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) "Access Byte Width"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) {ACPI_EXD_UINT32, ACPI_EXD_OFFSET(common_field.bit_length),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) "Bit Length"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) {ACPI_EXD_UINT8, ACPI_EXD_OFFSET(common_field.start_field_bit_offset),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) "Field Bit Offset"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) {ACPI_EXD_UINT32, ACPI_EXD_OFFSET(common_field.base_byte_offset),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) "Base Byte Offset"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) {ACPI_EXD_NODE, ACPI_EXD_OFFSET(common_field.node), "Parent Node"}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) static struct acpi_exdump_info acpi_ex_dump_node[7] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE(acpi_ex_dump_node), NULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) {ACPI_EXD_UINT16, ACPI_EXD_NSOFFSET(flags), "Flags"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) {ACPI_EXD_UINT16, ACPI_EXD_NSOFFSET(owner_id), "Owner Id"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) {ACPI_EXD_LIST, ACPI_EXD_NSOFFSET(object), "Object List"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) {ACPI_EXD_NODE, ACPI_EXD_NSOFFSET(parent), "Parent"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276) {ACPI_EXD_NODE, ACPI_EXD_NSOFFSET(child), "Child"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) {ACPI_EXD_NODE, ACPI_EXD_NSOFFSET(peer), "Peer"}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) /* Dispatch table, indexed by object type */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) static struct acpi_exdump_info *acpi_ex_dump_info[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) NULL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) acpi_ex_dump_integer,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) acpi_ex_dump_string,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) acpi_ex_dump_buffer,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) acpi_ex_dump_package,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) NULL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) acpi_ex_dump_device,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) acpi_ex_dump_event,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) acpi_ex_dump_method,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) acpi_ex_dump_mutex,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) acpi_ex_dump_region,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) acpi_ex_dump_power,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) acpi_ex_dump_processor,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) acpi_ex_dump_thermal,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) acpi_ex_dump_buffer_field,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) NULL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) NULL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) acpi_ex_dump_region_field,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) acpi_ex_dump_bank_field,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) acpi_ex_dump_index_field,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) acpi_ex_dump_reference,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) NULL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) NULL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) acpi_ex_dump_notify,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) acpi_ex_dump_address_handler,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) NULL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) NULL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) NULL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) acpi_ex_dump_extra,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) acpi_ex_dump_data
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) };
^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) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317) * FUNCTION: acpi_ex_dump_object
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319) * PARAMETERS: obj_desc - Descriptor to dump
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320) * info - Info table corresponding to this object
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321) * type
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323) * RETURN: None
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325) * DESCRIPTION: Walk the info table for this object
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327) ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329) static void
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330) acpi_ex_dump_object(union acpi_operand_object *obj_desc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331) struct acpi_exdump_info *info)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) u8 *target;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334) const char *name;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335) u8 count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336) union acpi_operand_object *start;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337) union acpi_operand_object *data = NULL;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338) union acpi_operand_object *next;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339) struct acpi_namespace_node *node;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341) if (!info) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 342) acpi_os_printf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 343) ("ExDumpObject: Display not implemented for object type %s\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 344) acpi_ut_get_object_type_name(obj_desc));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 345) return;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 346) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 347)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 348) /* First table entry must contain the table length (# of table entries) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 349)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 350) count = info->offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 351)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 352) while (count) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 353) if (!obj_desc) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 354) return;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 355) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 356)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 357) target = ACPI_ADD_PTR(u8, obj_desc, info->offset);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 358) name = info->name;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 359)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 360) switch (info->opcode) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 361) case ACPI_EXD_INIT:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 362)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 363) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 364)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 365) case ACPI_EXD_TYPE:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 366)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 367) acpi_os_printf("%20s : %2.2X [%s]\n", "Type",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 368) obj_desc->common.type,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 369) acpi_ut_get_object_type_name(obj_desc));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 370) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 371)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 372) case ACPI_EXD_UINT8:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 373)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 374) acpi_os_printf("%20s : %2.2X\n", name, *target);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 375) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 376)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 377) case ACPI_EXD_UINT16:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 378)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 379) acpi_os_printf("%20s : %4.4X\n", name,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 380) ACPI_GET16(target));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 381) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 382)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 383) case ACPI_EXD_UINT32:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 384)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 385) acpi_os_printf("%20s : %8.8X\n", name,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 386) ACPI_GET32(target));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 387) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 388)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 389) case ACPI_EXD_UINT64:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 390)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 391) acpi_os_printf("%20s : %8.8X%8.8X\n", "Value",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 392) ACPI_FORMAT_UINT64(ACPI_GET64(target)));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 393) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 394)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 395) case ACPI_EXD_POINTER:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 396) case ACPI_EXD_ADDRESS:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 397)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 398) acpi_ex_out_pointer(name,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 399) *ACPI_CAST_PTR(void *, target));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 400) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 401)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 402) case ACPI_EXD_STRING:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 403)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 404) acpi_ut_print_string(obj_desc->string.pointer,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 405) ACPI_UINT8_MAX);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 406) acpi_os_printf("\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 407) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 408)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 409) case ACPI_EXD_BUFFER:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 410)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 411) ACPI_DUMP_BUFFER(obj_desc->buffer.pointer,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 412) obj_desc->buffer.length);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 413) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 414)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 415) case ACPI_EXD_PACKAGE:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 416)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 417) /* Dump the package contents */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 418)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 419) acpi_os_printf("\nPackage Contents:\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 420) acpi_ex_dump_package_obj(obj_desc, 0, 0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 421) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 422)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 423) case ACPI_EXD_FIELD:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 424)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 425) acpi_ex_dump_object(obj_desc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 426) acpi_ex_dump_field_common);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 427) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 428)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 429) case ACPI_EXD_REFERENCE:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 430)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 431) acpi_ex_out_string("Class Name",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 432) acpi_ut_get_reference_name
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 433) (obj_desc));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 434) acpi_ex_dump_reference_obj(obj_desc);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 435) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 436)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 437) case ACPI_EXD_LIST:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 438)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 439) start = *ACPI_CAST_PTR(void *, target);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 440) next = start;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 441)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 442) acpi_os_printf("%20s : %p ", name, next);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 443) if (next) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 444) acpi_os_printf("%s (Type %2.2X)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 445) acpi_ut_get_object_type_name
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 446) (next), next->common.type);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 447)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 448) while (next->common.next_object) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 449) if ((next->common.type ==
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 450) ACPI_TYPE_LOCAL_DATA) && !data) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 451) data = next;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 452) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 453)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 454) next = next->common.next_object;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 455) acpi_os_printf("->%p(%s %2.2X)", next,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 456) acpi_ut_get_object_type_name
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 457) (next),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 458) next->common.type);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 459)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 460) if ((next == start) || (next == data)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 461) acpi_os_printf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 462) ("\n**** Error: Object list appears to be circular linked");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 463) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 464) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 465) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 466) } else {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 467) acpi_os_printf("- No attached objects");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 468) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 469)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 470) acpi_os_printf("\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 471) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 472)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 473) case ACPI_EXD_HDLR_LIST:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 474)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 475) start = *ACPI_CAST_PTR(void *, target);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 476) next = start;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 477)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 478) acpi_os_printf("%20s : %p", name, next);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 479) if (next) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 480) acpi_os_printf("(%s %2.2X)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 481) acpi_ut_get_object_type_name
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 482) (next),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 483) next->address_space.space_id);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 484)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 485) while (next->address_space.next) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 486) if ((next->common.type ==
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 487) ACPI_TYPE_LOCAL_DATA) && !data) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 488) data = next;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 489) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 490)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 491) next = next->address_space.next;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 492) acpi_os_printf("->%p(%s %2.2X)", next,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 493) acpi_ut_get_object_type_name
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 494) (next),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 495) next->address_space.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 496) space_id);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 497)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 498) if ((next == start) || (next == data)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 499) acpi_os_printf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 500) ("\n**** Error: Handler list appears to be circular linked");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 501) break;
^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) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 505)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 506) acpi_os_printf("\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 507) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 508)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 509) case ACPI_EXD_RGN_LIST:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 510)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 511) start = *ACPI_CAST_PTR(void *, target);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 512) next = start;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 513)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 514) acpi_os_printf("%20s : %p", name, next);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 515) if (next) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 516) acpi_os_printf("(%s %2.2X)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 517) acpi_ut_get_object_type_name
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 518) (next), next->common.type);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 519)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 520) while (next->region.next) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 521) if ((next->common.type ==
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 522) ACPI_TYPE_LOCAL_DATA) && !data) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 523) data = next;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 524) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 525)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 526) next = next->region.next;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 527) acpi_os_printf("->%p(%s %2.2X)", next,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 528) acpi_ut_get_object_type_name
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 529) (next),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 530) next->common.type);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 531)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 532) if ((next == start) || (next == data)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 533) acpi_os_printf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 534) ("\n**** Error: Region list appears to be circular linked");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 535) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 536) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 537) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 538) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 539)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 540) acpi_os_printf("\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 541) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 542)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 543) case ACPI_EXD_NODE:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 544)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 545) node =
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 546) *ACPI_CAST_PTR(struct acpi_namespace_node *,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 547) target);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 548)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 549) acpi_os_printf("%20s : %p", name, node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 550) if (node) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 551) acpi_os_printf(" [%4.4s]", node->name.ascii);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 552) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 553) acpi_os_printf("\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 554) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 555)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 556) default:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 557)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 558) acpi_os_printf("**** Invalid table opcode [%X] ****\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 559) info->opcode);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 560) return;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 561) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 562)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 563) info++;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 564) count--;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 565) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 566) }
^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) * FUNCTION: acpi_ex_dump_operand
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 571) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 572) * PARAMETERS: *obj_desc - Pointer to entry to be dumped
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 573) * depth - Current nesting depth
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 574) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 575) * RETURN: None
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 576) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 577) * DESCRIPTION: Dump an operand object
^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)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 581) void acpi_ex_dump_operand(union acpi_operand_object *obj_desc, u32 depth)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 582) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 583) u32 length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 584) u32 index;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 585)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 586) ACPI_FUNCTION_NAME(ex_dump_operand);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 587)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 588) /* Check if debug output enabled */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 589)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 590) if (!ACPI_IS_DEBUG_ENABLED(ACPI_LV_EXEC, _COMPONENT)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 591) return;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 592) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 593)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 594) if (!obj_desc) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 595)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 596) /* This could be a null element of a package */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 597)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 598) ACPI_DEBUG_PRINT((ACPI_DB_EXEC, "Null Object Descriptor\n"));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 599) return;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 600) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 601)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 602) if (ACPI_GET_DESCRIPTOR_TYPE(obj_desc) == ACPI_DESC_TYPE_NAMED) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 603) ACPI_DEBUG_PRINT((ACPI_DB_EXEC, "%p Namespace Node: ",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 604) obj_desc));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 605) ACPI_DUMP_ENTRY(obj_desc, ACPI_LV_EXEC);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 606) return;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 607) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 608)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 609) if (ACPI_GET_DESCRIPTOR_TYPE(obj_desc) != ACPI_DESC_TYPE_OPERAND) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 610) ACPI_DEBUG_PRINT((ACPI_DB_EXEC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 611) "%p is not a node or operand object: [%s]\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 612) obj_desc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 613) acpi_ut_get_descriptor_name(obj_desc)));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 614) ACPI_DUMP_BUFFER(obj_desc, sizeof(union acpi_operand_object));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 615) return;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 616) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 617)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 618) /* obj_desc is a valid object */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 619)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 620) if (depth > 0) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 621) ACPI_DEBUG_PRINT((ACPI_DB_EXEC, "%*s[%u] %p Refs=%u ",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 622) depth, " ", depth, obj_desc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 623) obj_desc->common.reference_count));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 624) } else {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 625) ACPI_DEBUG_PRINT((ACPI_DB_EXEC, "%p Refs=%u ",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 626) obj_desc, obj_desc->common.reference_count));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 627) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 628)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 629) /* Decode object type */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 630)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 631) switch (obj_desc->common.type) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 632) case ACPI_TYPE_LOCAL_REFERENCE:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 633)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 634) acpi_os_printf("Reference: [%s] ",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 635) acpi_ut_get_reference_name(obj_desc));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 636)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 637) switch (obj_desc->reference.class) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 638) case ACPI_REFCLASS_DEBUG:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 639)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 640) acpi_os_printf("\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 641) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 642)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 643) case ACPI_REFCLASS_INDEX:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 644)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 645) acpi_os_printf("%p\n", obj_desc->reference.object);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 646) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 647)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 648) case ACPI_REFCLASS_TABLE:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 649)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 650) acpi_os_printf("Table Index %X\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 651) obj_desc->reference.value);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 652) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 653)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 654) case ACPI_REFCLASS_REFOF:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 655)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 656) acpi_os_printf("%p [%s]\n", obj_desc->reference.object,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 657) acpi_ut_get_type_name(((union
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 658) acpi_operand_object
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 659) *)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 660) obj_desc->
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 661) reference.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 662) object)->common.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 663) type));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 664) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 665)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 666) case ACPI_REFCLASS_NAME:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 667)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 668) acpi_ut_repair_name(obj_desc->reference.node->name.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 669) ascii);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 670) acpi_os_printf("- [%4.4s] (Node %p)\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 671) obj_desc->reference.node->name.ascii,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 672) obj_desc->reference.node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 673) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 674)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 675) case ACPI_REFCLASS_ARG:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 676) case ACPI_REFCLASS_LOCAL:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 677)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 678) acpi_os_printf("%X\n", obj_desc->reference.value);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 679) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 680)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 681) default: /* Unknown reference class */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 682)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 683) acpi_os_printf("%2.2X\n", obj_desc->reference.class);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 684) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 685) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 686) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 687)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 688) case ACPI_TYPE_BUFFER:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 689)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 690) acpi_os_printf("Buffer length %.2X @ %p\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 691) obj_desc->buffer.length,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 692) obj_desc->buffer.pointer);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 693)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 694) /* Debug only -- dump the buffer contents */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 695)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 696) if (obj_desc->buffer.pointer) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 697) length = obj_desc->buffer.length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 698) if (length > 128) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 699) length = 128;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 700) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 701)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 702) acpi_os_printf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 703) ("Buffer Contents: (displaying length 0x%.2X)\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 704) length);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 705) ACPI_DUMP_BUFFER(obj_desc->buffer.pointer, length);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 706) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 707) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 708)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 709) case ACPI_TYPE_INTEGER:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 710)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 711) acpi_os_printf("Integer %8.8X%8.8X\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 712) ACPI_FORMAT_UINT64(obj_desc->integer.value));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 713) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 714)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 715) case ACPI_TYPE_PACKAGE:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 716)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 717) acpi_os_printf("Package [Len %X] ElementArray %p\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 718) obj_desc->package.count,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 719) obj_desc->package.elements);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 720)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 721) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 722) * If elements exist, package element pointer is valid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 723) * and debug_level exceeds 1, dump package's elements.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 724) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 725) if (obj_desc->package.count &&
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 726) obj_desc->package.elements && acpi_dbg_level > 1) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 727) for (index = 0; index < obj_desc->package.count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 728) index++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 729) acpi_ex_dump_operand(obj_desc->package.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 730) elements[index],
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 731) depth + 1);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 732) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 733) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 734) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 735)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 736) case ACPI_TYPE_REGION:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 737)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 738) acpi_os_printf("Region %s (%X)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 739) acpi_ut_get_region_name(obj_desc->region.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 740) space_id),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 741) obj_desc->region.space_id);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 742)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 743) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 744) * If the address and length have not been evaluated,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 745) * don't print them.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 746) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 747) if (!(obj_desc->region.flags & AOPOBJ_DATA_VALID)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 748) acpi_os_printf("\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 749) } else {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 750) acpi_os_printf(" base %8.8X%8.8X Length %X\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 751) ACPI_FORMAT_UINT64(obj_desc->region.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 752) address),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 753) obj_desc->region.length);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 754) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 755) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 756)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 757) case ACPI_TYPE_STRING:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 758)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 759) acpi_os_printf("String length %X @ %p ",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 760) obj_desc->string.length,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 761) obj_desc->string.pointer);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 762)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 763) acpi_ut_print_string(obj_desc->string.pointer, ACPI_UINT8_MAX);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 764) acpi_os_printf("\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 765) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 766)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 767) case ACPI_TYPE_LOCAL_BANK_FIELD:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 768)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 769) acpi_os_printf("BankField\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 770) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 771)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 772) case ACPI_TYPE_LOCAL_REGION_FIELD:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 773)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 774) acpi_os_printf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 775) ("RegionField: Bits=%X AccWidth=%X Lock=%X Update=%X at "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 776) "byte=%X bit=%X of below:\n", obj_desc->field.bit_length,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 777) obj_desc->field.access_byte_width,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 778) obj_desc->field.field_flags & AML_FIELD_LOCK_RULE_MASK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 779) obj_desc->field.field_flags & AML_FIELD_UPDATE_RULE_MASK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 780) obj_desc->field.base_byte_offset,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 781) obj_desc->field.start_field_bit_offset);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 782)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 783) acpi_ex_dump_operand(obj_desc->field.region_obj, depth + 1);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 784) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 785)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 786) case ACPI_TYPE_LOCAL_INDEX_FIELD:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 787)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 788) acpi_os_printf("IndexField\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 789) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 790)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 791) case ACPI_TYPE_BUFFER_FIELD:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 792)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 793) acpi_os_printf("BufferField: %X bits at byte %X bit %X of\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 794) obj_desc->buffer_field.bit_length,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 795) obj_desc->buffer_field.base_byte_offset,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 796) obj_desc->buffer_field.start_field_bit_offset);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 797)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 798) if (!obj_desc->buffer_field.buffer_obj) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 799) ACPI_DEBUG_PRINT((ACPI_DB_EXEC, "*NULL*\n"));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 800) } else if ((obj_desc->buffer_field.buffer_obj)->common.type !=
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 801) ACPI_TYPE_BUFFER) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 802) acpi_os_printf("*not a Buffer*\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 803) } else {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 804) acpi_ex_dump_operand(obj_desc->buffer_field.buffer_obj,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 805) depth + 1);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 806) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 807) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 808)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 809) case ACPI_TYPE_EVENT:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 810)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 811) acpi_os_printf("Event\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 812) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 813)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 814) case ACPI_TYPE_METHOD:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 815)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 816) acpi_os_printf("Method(%X) @ %p:%X\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 817) obj_desc->method.param_count,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 818) obj_desc->method.aml_start,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 819) obj_desc->method.aml_length);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 820) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 821)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 822) case ACPI_TYPE_MUTEX:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 823)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 824) acpi_os_printf("Mutex\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 825) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 826)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 827) case ACPI_TYPE_DEVICE:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 828)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 829) acpi_os_printf("Device\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 830) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 831)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 832) case ACPI_TYPE_POWER:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 833)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 834) acpi_os_printf("Power\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 835) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 836)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 837) case ACPI_TYPE_PROCESSOR:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 838)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 839) acpi_os_printf("Processor\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 840) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 841)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 842) case ACPI_TYPE_THERMAL:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 843)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 844) acpi_os_printf("Thermal\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 845) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 846)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 847) default:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 848)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 849) /* Unknown Type */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 850)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 851) acpi_os_printf("Unknown Type %X\n", obj_desc->common.type);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 852) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 853) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 854)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 855) return;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 856) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 857)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 858) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 859) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 860) * FUNCTION: acpi_ex_dump_operands
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 861) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 862) * PARAMETERS: operands - A list of Operand objects
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 863) * opcode_name - AML opcode name
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 864) * num_operands - Operand count for this opcode
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 865) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 866) * DESCRIPTION: Dump the operands associated with the opcode
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 867) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 868) ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 869)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 870) void
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 871) acpi_ex_dump_operands(union acpi_operand_object **operands,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 872) const char *opcode_name, u32 num_operands)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 873) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 874) ACPI_FUNCTION_TRACE(ex_dump_operands);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 875)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 876) if (!opcode_name) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 877) opcode_name = "UNKNOWN";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 878) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 879)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 880) ACPI_DEBUG_PRINT((ACPI_DB_EXEC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 881) "**** Start operand dump for opcode [%s], %u operands\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 882) opcode_name, num_operands));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 883)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 884) if (num_operands == 0) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 885) num_operands = 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 886) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 887)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 888) /* Dump the individual operands */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 889)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 890) while (num_operands) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 891) acpi_ex_dump_operand(*operands, 0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 892) operands++;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 893) num_operands--;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 894) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 895)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 896) ACPI_DEBUG_PRINT((ACPI_DB_EXEC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 897) "**** End operand dump for [%s]\n", opcode_name));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 898) return_VOID;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 899) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 900)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 901) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 902) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 903) * FUNCTION: acpi_ex_out* functions
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 904) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 905) * PARAMETERS: title - Descriptive text
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 906) * value - Value to be displayed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 907) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 908) * DESCRIPTION: Object dump output formatting functions. These functions
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 909) * reduce the number of format strings required and keeps them
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 910) * all in one place for easy modification.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 911) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 912) ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 913)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 914) static void acpi_ex_out_string(const char *title, const char *value)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 915) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 916) acpi_os_printf("%20s : %s\n", title, value);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 917) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 918)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 919) static void acpi_ex_out_pointer(const char *title, const void *value)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 920) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 921) acpi_os_printf("%20s : %p\n", title, value);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 922) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 923)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 924) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 925) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 926) * FUNCTION: acpi_ex_dump_namespace_node
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 927) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 928) * PARAMETERS: node - Descriptor to dump
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 929) * flags - Force display if TRUE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 930) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 931) * DESCRIPTION: Dumps the members of the given.Node
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 932) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 933) ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 934)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 935) void acpi_ex_dump_namespace_node(struct acpi_namespace_node *node, u32 flags)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 936) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 937)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 938) ACPI_FUNCTION_ENTRY();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 939)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 940) if (!flags) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 941)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 942) /* Check if debug output enabled */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 943)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 944) if (!ACPI_IS_DEBUG_ENABLED(ACPI_LV_OBJECTS, _COMPONENT)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 945) return;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 946) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 947) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 948)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 949) acpi_os_printf("%20s : %4.4s\n", "Name", acpi_ut_get_node_name(node));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 950) acpi_os_printf("%20s : %2.2X [%s]\n", "Type",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 951) node->type, acpi_ut_get_type_name(node->type));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 952)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 953) acpi_ex_dump_object(ACPI_CAST_PTR(union acpi_operand_object, node),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 954) acpi_ex_dump_node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 955) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 956)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 957) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 958) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 959) * FUNCTION: acpi_ex_dump_reference_obj
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 960) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 961) * PARAMETERS: object - Descriptor to dump
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 962) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 963) * DESCRIPTION: Dumps a reference object
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 964) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 965) ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 966)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 967) static void acpi_ex_dump_reference_obj(union acpi_operand_object *obj_desc)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 968) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 969) struct acpi_buffer ret_buf;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 970) acpi_status status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 971)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 972) ret_buf.length = ACPI_ALLOCATE_LOCAL_BUFFER;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 973)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 974) if (obj_desc->reference.class == ACPI_REFCLASS_NAME) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 975) acpi_os_printf(" %p ", obj_desc->reference.node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 976)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 977) status = acpi_ns_handle_to_pathname(obj_desc->reference.node,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 978) &ret_buf, TRUE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 979) if (ACPI_FAILURE(status)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 980) acpi_os_printf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 981) (" Could not convert name to pathname: %s\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 982) acpi_format_exception(status));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 983) } else {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 984) acpi_os_printf("%s: %s\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 985) acpi_ut_get_type_name(obj_desc->
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 986) reference.node->
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 987) type),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 988) (char *)ret_buf.pointer);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 989) ACPI_FREE(ret_buf.pointer);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 990) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 991) } else if (obj_desc->reference.object) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 992) if (ACPI_GET_DESCRIPTOR_TYPE(obj_desc) ==
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 993) ACPI_DESC_TYPE_OPERAND) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 994) acpi_os_printf("%22s %p", "Target :",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 995) obj_desc->reference.object);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 996) if (obj_desc->reference.class == ACPI_REFCLASS_TABLE) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 997) acpi_os_printf(" Table Index: %X\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 998) obj_desc->reference.value);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 999) } else {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1000) acpi_os_printf(" [%s]\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1001) acpi_ut_get_type_name(((union
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1002) acpi_operand_object
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1003) *)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1004) obj_desc->
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1005) reference.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1006) object)->
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1007) common.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1008) type));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1009) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1010) } else {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1011) acpi_os_printf(" Target: %p\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1012) obj_desc->reference.object);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1013) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1014) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1015) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1016)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1017) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1018) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1019) * FUNCTION: acpi_ex_dump_package_obj
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1020) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1021) * PARAMETERS: obj_desc - Descriptor to dump
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1022) * level - Indentation Level
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1023) * index - Package index for this object
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1024) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1025) * DESCRIPTION: Dumps the elements of the package
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1026) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1027) ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1028)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1029) static void
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1030) acpi_ex_dump_package_obj(union acpi_operand_object *obj_desc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1031) u32 level, u32 index)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1032) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1033) u32 i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1034)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1035) /* Indentation and index output */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1036)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1037) if (level > 0) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1038) for (i = 0; i < level; i++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1039) acpi_os_printf(" ");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1040) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1041)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1042) acpi_os_printf("[%.2d] ", index);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1043) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1044)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1045) acpi_os_printf("%p ", obj_desc);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1046)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1047) /* Null package elements are allowed */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1048)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1049) if (!obj_desc) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1050) acpi_os_printf("[Null Object]\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1051) return;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1052) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1053)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1054) /* Packages may only contain a few object types */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1055)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1056) switch (obj_desc->common.type) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1057) case ACPI_TYPE_INTEGER:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1058)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1059) acpi_os_printf("[Integer] = %8.8X%8.8X\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1060) ACPI_FORMAT_UINT64(obj_desc->integer.value));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1061) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1062)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1063) case ACPI_TYPE_STRING:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1064)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1065) acpi_os_printf("[String] Value: ");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1066) acpi_ut_print_string(obj_desc->string.pointer, ACPI_UINT8_MAX);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1067) acpi_os_printf("\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1068) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1069)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1070) case ACPI_TYPE_BUFFER:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1071)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1072) acpi_os_printf("[Buffer] Length %.2X = ",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1073) obj_desc->buffer.length);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1074) if (obj_desc->buffer.length) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1075) acpi_ut_debug_dump_buffer(ACPI_CAST_PTR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1076) (u8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1077) obj_desc->buffer.pointer),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1078) obj_desc->buffer.length,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1079) DB_DWORD_DISPLAY, _COMPONENT);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1080) } else {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1081) acpi_os_printf("\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1082) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1083) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1084)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1085) case ACPI_TYPE_PACKAGE:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1086)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1087) acpi_os_printf("[Package] Contains %u Elements:\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1088) obj_desc->package.count);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1089)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1090) for (i = 0; i < obj_desc->package.count; i++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1091) acpi_ex_dump_package_obj(obj_desc->package.elements[i],
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1092) level + 1, i);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1093) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1094) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1095)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1096) case ACPI_TYPE_LOCAL_REFERENCE:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1097)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1098) acpi_os_printf("[Object Reference] Class [%s]",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1099) acpi_ut_get_reference_name(obj_desc));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1100) acpi_ex_dump_reference_obj(obj_desc);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1101) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1102)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1103) default:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1104)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1105) acpi_os_printf("[%s] Type: %2.2X\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1106) acpi_ut_get_type_name(obj_desc->common.type),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1107) obj_desc->common.type);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1108) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1109) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1110) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1111)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1112) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1113) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1114) * FUNCTION: acpi_ex_dump_object_descriptor
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1115) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1116) * PARAMETERS: obj_desc - Descriptor to dump
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1117) * flags - Force display if TRUE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1118) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1119) * DESCRIPTION: Dumps the members of the object descriptor given.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1120) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1121) ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1122)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1123) void
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1124) acpi_ex_dump_object_descriptor(union acpi_operand_object *obj_desc, u32 flags)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1125) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1126) ACPI_FUNCTION_TRACE(ex_dump_object_descriptor);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1127)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1128) if (!obj_desc) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1129) return_VOID;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1130) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1131)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1132) if (!flags) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1133)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1134) /* Check if debug output enabled */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1135)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1136) if (!ACPI_IS_DEBUG_ENABLED(ACPI_LV_OBJECTS, _COMPONENT)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1137) return_VOID;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1138) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1139) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1140)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1141) if (ACPI_GET_DESCRIPTOR_TYPE(obj_desc) == ACPI_DESC_TYPE_NAMED) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1142) acpi_ex_dump_namespace_node((struct acpi_namespace_node *)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1143) obj_desc, flags);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1144)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1145) obj_desc = ((struct acpi_namespace_node *)obj_desc)->object;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1146) if (!obj_desc) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1147) return_VOID;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1148) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1149)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1150) acpi_os_printf("\nAttached Object %p", obj_desc);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1151) if (ACPI_GET_DESCRIPTOR_TYPE(obj_desc) == ACPI_DESC_TYPE_NAMED) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1152) acpi_os_printf(" - Namespace Node");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1153) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1154)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1155) acpi_os_printf(":\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1156) goto dump_object;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1157) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1158)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1159) if (ACPI_GET_DESCRIPTOR_TYPE(obj_desc) != ACPI_DESC_TYPE_OPERAND) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1160) acpi_os_printf("%p is not an ACPI operand object: [%s]\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1161) obj_desc, acpi_ut_get_descriptor_name(obj_desc));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1162) return_VOID;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1163) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1164)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1165) /* Validate the object type */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1166)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1167) if (obj_desc->common.type > ACPI_TYPE_LOCAL_MAX) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1168) acpi_os_printf("Not a known object type: %2.2X\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1169) obj_desc->common.type);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1170) return_VOID;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1171) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1172)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1173) dump_object:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1174)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1175) if (!obj_desc) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1176) return_VOID;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1177) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1178)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1179) /* Common Fields */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1180)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1181) acpi_ex_dump_object(obj_desc, acpi_ex_dump_common);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1182)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1183) /* Object-specific fields */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1184)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1185) acpi_ex_dump_object(obj_desc, acpi_ex_dump_info[obj_desc->common.type]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1186)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1187) if (obj_desc->common.type == ACPI_TYPE_REGION) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1188) obj_desc = obj_desc->common.next_object;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1189) if (obj_desc->common.type > ACPI_TYPE_LOCAL_MAX) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1190) acpi_os_printf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1191) ("Secondary object is not a known object type: %2.2X\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1192) obj_desc->common.type);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1193)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1194) return_VOID;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1195) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1196)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1197) acpi_os_printf("\nExtra attached Object (%p):\n", obj_desc);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1198) acpi_ex_dump_object(obj_desc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1199) acpi_ex_dump_info[obj_desc->common.type]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1200) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1201)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1202) return_VOID;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1203) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1204)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1205) #endif