^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: nsdump - table dumping routines for debug
^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)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) /* TBD: This entire module is apparently obsolete and should be removed */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) #define _COMPONENT ACPI_NAMESPACE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) ACPI_MODULE_NAME("nsdumpdv")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) #ifdef ACPI_OBSOLETE_FUNCTIONS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) #include "acnamesp.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) * FUNCTION: acpi_ns_dump_one_device
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) * PARAMETERS: handle - Node to be dumped
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) * level - Nesting level of the handle
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) * context - Passed into walk_namespace
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) * return_value - Not used
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) * RETURN: Status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) * DESCRIPTION: Dump a single Node that represents a device
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) * This procedure is a user_function called by acpi_ns_walk_namespace.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) static acpi_status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) acpi_ns_dump_one_device(acpi_handle obj_handle,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) u32 level, void *context, void **return_value)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) struct acpi_buffer buffer;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) struct acpi_device_info *info;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) acpi_status status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) u32 i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) ACPI_FUNCTION_NAME(ns_dump_one_device);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) status =
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) acpi_ns_dump_one_object(obj_handle, level, context, return_value);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) buffer.length = ACPI_ALLOCATE_LOCAL_BUFFER;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) status = acpi_get_object_info(obj_handle, &buffer);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) if (ACPI_SUCCESS(status)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) info = buffer.pointer;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) for (i = 0; i < level; i++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) ACPI_DEBUG_PRINT_RAW((ACPI_DB_TABLES, " "));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) ACPI_DEBUG_PRINT_RAW((ACPI_DB_TABLES,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) " HID: %s, ADR: %8.8X%8.8X\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) info->hardware_id.value,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) ACPI_FORMAT_UINT64(info->address)));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) ACPI_FREE(info);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) return (status);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) }
^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) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) * FUNCTION: acpi_ns_dump_root_devices
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) * PARAMETERS: None
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) * RETURN: None
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) * DESCRIPTION: Dump all objects of type "device"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) void acpi_ns_dump_root_devices(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) acpi_handle sys_bus_handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) acpi_status status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) ACPI_FUNCTION_NAME(ns_dump_root_devices);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) /* Only dump the table if tracing is enabled */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) if (!(ACPI_LV_TABLES & acpi_dbg_level)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) return;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) status = acpi_get_handle(NULL, METHOD_NAME__SB_, &sys_bus_handle);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) if (ACPI_FAILURE(status)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) return;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) ACPI_DEBUG_PRINT((ACPI_DB_TABLES,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) "Display of all devices in the namespace:\n"));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) status = acpi_ns_walk_namespace(ACPI_TYPE_DEVICE, sys_bus_handle,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) ACPI_UINT32_MAX, ACPI_NS_WALK_NO_UNLOCK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) acpi_ns_dump_one_device, NULL, NULL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) NULL);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) #endif