xref: /openbmc/linux/drivers/acpi/acpica/nsdumpdv.c (revision 612c2932)
195857638SErik Schmauss // SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0
295b482a8SLen Brown /******************************************************************************
395b482a8SLen Brown  *
495b482a8SLen Brown  * Module Name: nsdump - table dumping routines for debug
595b482a8SLen Brown  *
6*612c2932SBob Moore  * Copyright (C) 2000 - 2023, Intel Corp.
795b482a8SLen Brown  *
895857638SErik Schmauss  *****************************************************************************/
995b482a8SLen Brown 
1095b482a8SLen Brown #include <acpi/acpi.h>
1195b482a8SLen Brown 
1295b482a8SLen Brown /* TBD: This entire module is apparently obsolete and should be removed */
1395b482a8SLen Brown 
1495b482a8SLen Brown #define _COMPONENT          ACPI_NAMESPACE
1595b482a8SLen Brown ACPI_MODULE_NAME("nsdumpdv")
1695b482a8SLen Brown #ifdef ACPI_OBSOLETE_FUNCTIONS
1795b482a8SLen Brown #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
18e2f7a777SLen Brown #include "acnamesp.h"
1995b482a8SLen Brown /*******************************************************************************
2095b482a8SLen Brown  *
2195b482a8SLen Brown  * FUNCTION:    acpi_ns_dump_one_device
2295b482a8SLen Brown  *
23ba494beeSBob Moore  * PARAMETERS:  handle              - Node to be dumped
24ba494beeSBob Moore  *              level               - Nesting level of the handle
25ba494beeSBob Moore  *              context             - Passed into walk_namespace
2695b482a8SLen Brown  *              return_value        - Not used
2795b482a8SLen Brown  *
2895b482a8SLen Brown  * RETURN:      Status
2995b482a8SLen Brown  *
3095b482a8SLen Brown  * DESCRIPTION: Dump a single Node that represents a device
3195b482a8SLen Brown  *              This procedure is a user_function called by acpi_ns_walk_namespace.
3295b482a8SLen Brown  *
3395b482a8SLen Brown  ******************************************************************************/
3495b482a8SLen Brown static acpi_status
acpi_ns_dump_one_device(acpi_handle obj_handle,u32 level,void * context,void ** return_value)3595b482a8SLen Brown acpi_ns_dump_one_device(acpi_handle obj_handle,
3695b482a8SLen Brown 			u32 level, void *context, void **return_value)
3795b482a8SLen Brown {
3898f7eb87SLv Zheng 	struct acpi_buffer buffer;
3995b482a8SLen Brown 	struct acpi_device_info *info;
4095b482a8SLen Brown 	acpi_status status;
4195b482a8SLen Brown 	u32 i;
4295b482a8SLen Brown 
4395b482a8SLen Brown 	ACPI_FUNCTION_NAME(ns_dump_one_device);
4495b482a8SLen Brown 
4595b482a8SLen Brown 	status =
4695b482a8SLen Brown 	    acpi_ns_dump_one_object(obj_handle, level, context, return_value);
4795b482a8SLen Brown 
4898f7eb87SLv Zheng 	buffer.length = ACPI_ALLOCATE_LOCAL_BUFFER;
4998f7eb87SLv Zheng 	status = acpi_get_object_info(obj_handle, &buffer);
5095b482a8SLen Brown 	if (ACPI_SUCCESS(status)) {
5198f7eb87SLv Zheng 		info = buffer.pointer;
5295b482a8SLen Brown 		for (i = 0; i < level; i++) {
5395b482a8SLen Brown 			ACPI_DEBUG_PRINT_RAW((ACPI_DB_TABLES, " "));
5495b482a8SLen Brown 		}
5595b482a8SLen Brown 
5695b482a8SLen Brown 		ACPI_DEBUG_PRINT_RAW((ACPI_DB_TABLES,
57e7c2c3c9SHans de Goede 				      "    HID: %s, ADR: %8.8X%8.8X\n",
5898f7eb87SLv Zheng 				      info->hardware_id.value,
59e7c2c3c9SHans de Goede 				      ACPI_FORMAT_UINT64(info->address)));
6095b482a8SLen Brown 		ACPI_FREE(info);
6195b482a8SLen Brown 	}
6295b482a8SLen Brown 
6395b482a8SLen Brown 	return (status);
6495b482a8SLen Brown }
6595b482a8SLen Brown 
6695b482a8SLen Brown /*******************************************************************************
6795b482a8SLen Brown  *
6895b482a8SLen Brown  * FUNCTION:    acpi_ns_dump_root_devices
6995b482a8SLen Brown  *
7095b482a8SLen Brown  * PARAMETERS:  None
7195b482a8SLen Brown  *
7295b482a8SLen Brown  * RETURN:      None
7395b482a8SLen Brown  *
7495b482a8SLen Brown  * DESCRIPTION: Dump all objects of type "device"
7595b482a8SLen Brown  *
7695b482a8SLen Brown  ******************************************************************************/
7795b482a8SLen Brown 
acpi_ns_dump_root_devices(void)7895b482a8SLen Brown void acpi_ns_dump_root_devices(void)
7995b482a8SLen Brown {
8095b482a8SLen Brown 	acpi_handle sys_bus_handle;
8195b482a8SLen Brown 	acpi_status status;
8295b482a8SLen Brown 
8395b482a8SLen Brown 	ACPI_FUNCTION_NAME(ns_dump_root_devices);
8495b482a8SLen Brown 
8595b482a8SLen Brown 	/* Only dump the table if tracing is enabled */
8695b482a8SLen Brown 
8795b482a8SLen Brown 	if (!(ACPI_LV_TABLES & acpi_dbg_level)) {
8895b482a8SLen Brown 		return;
8995b482a8SLen Brown 	}
9095b482a8SLen Brown 
914efeeecdSBob Moore 	status = acpi_get_handle(NULL, METHOD_NAME__SB_, &sys_bus_handle);
9295b482a8SLen Brown 	if (ACPI_FAILURE(status)) {
9395b482a8SLen Brown 		return;
9495b482a8SLen Brown 	}
9595b482a8SLen Brown 
9695b482a8SLen Brown 	ACPI_DEBUG_PRINT((ACPI_DB_TABLES,
9795b482a8SLen Brown 			  "Display of all devices in the namespace:\n"));
9895b482a8SLen Brown 
9995b482a8SLen Brown 	status = acpi_ns_walk_namespace(ACPI_TYPE_DEVICE, sys_bus_handle,
10095b482a8SLen Brown 					ACPI_UINT32_MAX, ACPI_NS_WALK_NO_UNLOCK,
1012263576cSLin Ming 					acpi_ns_dump_one_device, NULL, NULL,
1022263576cSLin Ming 					NULL);
10395b482a8SLen Brown }
10495b482a8SLen Brown 
10595b482a8SLen Brown #endif
10695b482a8SLen Brown #endif
107