162306a36Sopenharmony_ci// SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 262306a36Sopenharmony_ci/****************************************************************************** 362306a36Sopenharmony_ci * 462306a36Sopenharmony_ci * Module Name: nsdump - table dumping routines for debug 562306a36Sopenharmony_ci * 662306a36Sopenharmony_ci * Copyright (C) 2000 - 2023, Intel Corp. 762306a36Sopenharmony_ci * 862306a36Sopenharmony_ci *****************************************************************************/ 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci#include <acpi/acpi.h> 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci/* TBD: This entire module is apparently obsolete and should be removed */ 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci#define _COMPONENT ACPI_NAMESPACE 1562306a36Sopenharmony_ciACPI_MODULE_NAME("nsdumpdv") 1662306a36Sopenharmony_ci#ifdef ACPI_OBSOLETE_FUNCTIONS 1762306a36Sopenharmony_ci#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) 1862306a36Sopenharmony_ci#include "acnamesp.h" 1962306a36Sopenharmony_ci/******************************************************************************* 2062306a36Sopenharmony_ci * 2162306a36Sopenharmony_ci * FUNCTION: acpi_ns_dump_one_device 2262306a36Sopenharmony_ci * 2362306a36Sopenharmony_ci * PARAMETERS: handle - Node to be dumped 2462306a36Sopenharmony_ci * level - Nesting level of the handle 2562306a36Sopenharmony_ci * context - Passed into walk_namespace 2662306a36Sopenharmony_ci * return_value - Not used 2762306a36Sopenharmony_ci * 2862306a36Sopenharmony_ci * RETURN: Status 2962306a36Sopenharmony_ci * 3062306a36Sopenharmony_ci * DESCRIPTION: Dump a single Node that represents a device 3162306a36Sopenharmony_ci * This procedure is a user_function called by acpi_ns_walk_namespace. 3262306a36Sopenharmony_ci * 3362306a36Sopenharmony_ci ******************************************************************************/ 3462306a36Sopenharmony_cistatic acpi_status 3562306a36Sopenharmony_ciacpi_ns_dump_one_device(acpi_handle obj_handle, 3662306a36Sopenharmony_ci u32 level, void *context, void **return_value) 3762306a36Sopenharmony_ci{ 3862306a36Sopenharmony_ci struct acpi_buffer buffer; 3962306a36Sopenharmony_ci struct acpi_device_info *info; 4062306a36Sopenharmony_ci acpi_status status; 4162306a36Sopenharmony_ci u32 i; 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ci ACPI_FUNCTION_NAME(ns_dump_one_device); 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_ci status = 4662306a36Sopenharmony_ci acpi_ns_dump_one_object(obj_handle, level, context, return_value); 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_ci buffer.length = ACPI_ALLOCATE_LOCAL_BUFFER; 4962306a36Sopenharmony_ci status = acpi_get_object_info(obj_handle, &buffer); 5062306a36Sopenharmony_ci if (ACPI_SUCCESS(status)) { 5162306a36Sopenharmony_ci info = buffer.pointer; 5262306a36Sopenharmony_ci for (i = 0; i < level; i++) { 5362306a36Sopenharmony_ci ACPI_DEBUG_PRINT_RAW((ACPI_DB_TABLES, " ")); 5462306a36Sopenharmony_ci } 5562306a36Sopenharmony_ci 5662306a36Sopenharmony_ci ACPI_DEBUG_PRINT_RAW((ACPI_DB_TABLES, 5762306a36Sopenharmony_ci " HID: %s, ADR: %8.8X%8.8X\n", 5862306a36Sopenharmony_ci info->hardware_id.value, 5962306a36Sopenharmony_ci ACPI_FORMAT_UINT64(info->address))); 6062306a36Sopenharmony_ci ACPI_FREE(info); 6162306a36Sopenharmony_ci } 6262306a36Sopenharmony_ci 6362306a36Sopenharmony_ci return (status); 6462306a36Sopenharmony_ci} 6562306a36Sopenharmony_ci 6662306a36Sopenharmony_ci/******************************************************************************* 6762306a36Sopenharmony_ci * 6862306a36Sopenharmony_ci * FUNCTION: acpi_ns_dump_root_devices 6962306a36Sopenharmony_ci * 7062306a36Sopenharmony_ci * PARAMETERS: None 7162306a36Sopenharmony_ci * 7262306a36Sopenharmony_ci * RETURN: None 7362306a36Sopenharmony_ci * 7462306a36Sopenharmony_ci * DESCRIPTION: Dump all objects of type "device" 7562306a36Sopenharmony_ci * 7662306a36Sopenharmony_ci ******************************************************************************/ 7762306a36Sopenharmony_ci 7862306a36Sopenharmony_civoid acpi_ns_dump_root_devices(void) 7962306a36Sopenharmony_ci{ 8062306a36Sopenharmony_ci acpi_handle sys_bus_handle; 8162306a36Sopenharmony_ci acpi_status status; 8262306a36Sopenharmony_ci 8362306a36Sopenharmony_ci ACPI_FUNCTION_NAME(ns_dump_root_devices); 8462306a36Sopenharmony_ci 8562306a36Sopenharmony_ci /* Only dump the table if tracing is enabled */ 8662306a36Sopenharmony_ci 8762306a36Sopenharmony_ci if (!(ACPI_LV_TABLES & acpi_dbg_level)) { 8862306a36Sopenharmony_ci return; 8962306a36Sopenharmony_ci } 9062306a36Sopenharmony_ci 9162306a36Sopenharmony_ci status = acpi_get_handle(NULL, METHOD_NAME__SB_, &sys_bus_handle); 9262306a36Sopenharmony_ci if (ACPI_FAILURE(status)) { 9362306a36Sopenharmony_ci return; 9462306a36Sopenharmony_ci } 9562306a36Sopenharmony_ci 9662306a36Sopenharmony_ci ACPI_DEBUG_PRINT((ACPI_DB_TABLES, 9762306a36Sopenharmony_ci "Display of all devices in the namespace:\n")); 9862306a36Sopenharmony_ci 9962306a36Sopenharmony_ci status = acpi_ns_walk_namespace(ACPI_TYPE_DEVICE, sys_bus_handle, 10062306a36Sopenharmony_ci ACPI_UINT32_MAX, ACPI_NS_WALK_NO_UNLOCK, 10162306a36Sopenharmony_ci acpi_ns_dump_one_device, NULL, NULL, 10262306a36Sopenharmony_ci NULL); 10362306a36Sopenharmony_ci} 10462306a36Sopenharmony_ci 10562306a36Sopenharmony_ci#endif 10662306a36Sopenharmony_ci#endif 107