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