162306a36Sopenharmony_ci// SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0
262306a36Sopenharmony_ci/*******************************************************************************
362306a36Sopenharmony_ci *
462306a36Sopenharmony_ci * Module Name: utxferror - Various error/warning output functions
562306a36Sopenharmony_ci *
662306a36Sopenharmony_ci ******************************************************************************/
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci#define EXPORT_ACPI_INTERFACES
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci#include <acpi/acpi.h>
1162306a36Sopenharmony_ci#include "accommon.h"
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci#define _COMPONENT          ACPI_UTILITIES
1462306a36Sopenharmony_ciACPI_MODULE_NAME("utxferror")
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci/*
1762306a36Sopenharmony_ci * This module is used for the in-kernel ACPICA as well as the ACPICA
1862306a36Sopenharmony_ci * tools/applications.
1962306a36Sopenharmony_ci */
2062306a36Sopenharmony_ci#ifndef ACPI_NO_ERROR_MESSAGES	/* Entire module */
2162306a36Sopenharmony_ci/*******************************************************************************
2262306a36Sopenharmony_ci *
2362306a36Sopenharmony_ci * FUNCTION:    acpi_error
2462306a36Sopenharmony_ci *
2562306a36Sopenharmony_ci * PARAMETERS:  module_name         - Caller's module name (for error output)
2662306a36Sopenharmony_ci *              line_number         - Caller's line number (for error output)
2762306a36Sopenharmony_ci *              format              - Printf format string + additional args
2862306a36Sopenharmony_ci *
2962306a36Sopenharmony_ci * RETURN:      None
3062306a36Sopenharmony_ci *
3162306a36Sopenharmony_ci * DESCRIPTION: Print "ACPI Error" message with module/line/version info
3262306a36Sopenharmony_ci *
3362306a36Sopenharmony_ci ******************************************************************************/
3462306a36Sopenharmony_civoid ACPI_INTERNAL_VAR_XFACE
3562306a36Sopenharmony_ciacpi_error(const char *module_name, u32 line_number, const char *format, ...)
3662306a36Sopenharmony_ci{
3762306a36Sopenharmony_ci	va_list arg_list;
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci	ACPI_MSG_REDIRECT_BEGIN;
4062306a36Sopenharmony_ci	acpi_os_printf(ACPI_MSG_ERROR);
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci	va_start(arg_list, format);
4362306a36Sopenharmony_ci	acpi_os_vprintf(format, arg_list);
4462306a36Sopenharmony_ci	ACPI_MSG_SUFFIX;
4562306a36Sopenharmony_ci	va_end(arg_list);
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ci	ACPI_MSG_REDIRECT_END;
4862306a36Sopenharmony_ci}
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ciACPI_EXPORT_SYMBOL(acpi_error)
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ci/*******************************************************************************
5362306a36Sopenharmony_ci *
5462306a36Sopenharmony_ci * FUNCTION:    acpi_exception
5562306a36Sopenharmony_ci *
5662306a36Sopenharmony_ci * PARAMETERS:  module_name         - Caller's module name (for error output)
5762306a36Sopenharmony_ci *              line_number         - Caller's line number (for error output)
5862306a36Sopenharmony_ci *              status              - Status value to be decoded/formatted
5962306a36Sopenharmony_ci *              format              - Printf format string + additional args
6062306a36Sopenharmony_ci *
6162306a36Sopenharmony_ci * RETURN:      None
6262306a36Sopenharmony_ci *
6362306a36Sopenharmony_ci * DESCRIPTION: Print an "ACPI Error" message with module/line/version
6462306a36Sopenharmony_ci *              info as well as decoded acpi_status.
6562306a36Sopenharmony_ci *
6662306a36Sopenharmony_ci ******************************************************************************/
6762306a36Sopenharmony_civoid ACPI_INTERNAL_VAR_XFACE
6862306a36Sopenharmony_ciacpi_exception(const char *module_name,
6962306a36Sopenharmony_ci	       u32 line_number, acpi_status status, const char *format, ...)
7062306a36Sopenharmony_ci{
7162306a36Sopenharmony_ci	va_list arg_list;
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_ci	ACPI_MSG_REDIRECT_BEGIN;
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_ci	/* For AE_OK, just print the message */
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ci	if (ACPI_SUCCESS(status)) {
7862306a36Sopenharmony_ci		acpi_os_printf(ACPI_MSG_ERROR);
7962306a36Sopenharmony_ci
8062306a36Sopenharmony_ci	} else {
8162306a36Sopenharmony_ci		acpi_os_printf(ACPI_MSG_ERROR "%s, ",
8262306a36Sopenharmony_ci			       acpi_format_exception(status));
8362306a36Sopenharmony_ci	}
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_ci	va_start(arg_list, format);
8662306a36Sopenharmony_ci	acpi_os_vprintf(format, arg_list);
8762306a36Sopenharmony_ci	ACPI_MSG_SUFFIX;
8862306a36Sopenharmony_ci	va_end(arg_list);
8962306a36Sopenharmony_ci
9062306a36Sopenharmony_ci	ACPI_MSG_REDIRECT_END;
9162306a36Sopenharmony_ci}
9262306a36Sopenharmony_ci
9362306a36Sopenharmony_ciACPI_EXPORT_SYMBOL(acpi_exception)
9462306a36Sopenharmony_ci
9562306a36Sopenharmony_ci/*******************************************************************************
9662306a36Sopenharmony_ci *
9762306a36Sopenharmony_ci * FUNCTION:    acpi_warning
9862306a36Sopenharmony_ci *
9962306a36Sopenharmony_ci * PARAMETERS:  module_name         - Caller's module name (for warning output)
10062306a36Sopenharmony_ci *              line_number         - Caller's line number (for warning output)
10162306a36Sopenharmony_ci *              format              - Printf format string + additional args
10262306a36Sopenharmony_ci *
10362306a36Sopenharmony_ci * RETURN:      None
10462306a36Sopenharmony_ci *
10562306a36Sopenharmony_ci * DESCRIPTION: Print "ACPI Warning" message with module/line/version info
10662306a36Sopenharmony_ci *
10762306a36Sopenharmony_ci ******************************************************************************/
10862306a36Sopenharmony_civoid ACPI_INTERNAL_VAR_XFACE
10962306a36Sopenharmony_ciacpi_warning(const char *module_name, u32 line_number, const char *format, ...)
11062306a36Sopenharmony_ci{
11162306a36Sopenharmony_ci	va_list arg_list;
11262306a36Sopenharmony_ci
11362306a36Sopenharmony_ci	ACPI_MSG_REDIRECT_BEGIN;
11462306a36Sopenharmony_ci	acpi_os_printf(ACPI_MSG_WARNING);
11562306a36Sopenharmony_ci
11662306a36Sopenharmony_ci	va_start(arg_list, format);
11762306a36Sopenharmony_ci	acpi_os_vprintf(format, arg_list);
11862306a36Sopenharmony_ci	ACPI_MSG_SUFFIX;
11962306a36Sopenharmony_ci	va_end(arg_list);
12062306a36Sopenharmony_ci
12162306a36Sopenharmony_ci	ACPI_MSG_REDIRECT_END;
12262306a36Sopenharmony_ci}
12362306a36Sopenharmony_ci
12462306a36Sopenharmony_ciACPI_EXPORT_SYMBOL(acpi_warning)
12562306a36Sopenharmony_ci
12662306a36Sopenharmony_ci/*******************************************************************************
12762306a36Sopenharmony_ci *
12862306a36Sopenharmony_ci * FUNCTION:    acpi_info
12962306a36Sopenharmony_ci *
13062306a36Sopenharmony_ci * PARAMETERS:  format              - Printf format string + additional args
13162306a36Sopenharmony_ci *
13262306a36Sopenharmony_ci * RETURN:      None
13362306a36Sopenharmony_ci *
13462306a36Sopenharmony_ci * DESCRIPTION: Print generic "ACPI:" information message. There is no
13562306a36Sopenharmony_ci *              module/line/version info in order to keep the message simple.
13662306a36Sopenharmony_ci *
13762306a36Sopenharmony_ci ******************************************************************************/
13862306a36Sopenharmony_civoid ACPI_INTERNAL_VAR_XFACE acpi_info(const char *format, ...)
13962306a36Sopenharmony_ci{
14062306a36Sopenharmony_ci	va_list arg_list;
14162306a36Sopenharmony_ci
14262306a36Sopenharmony_ci	ACPI_MSG_REDIRECT_BEGIN;
14362306a36Sopenharmony_ci	acpi_os_printf(ACPI_MSG_INFO);
14462306a36Sopenharmony_ci
14562306a36Sopenharmony_ci	va_start(arg_list, format);
14662306a36Sopenharmony_ci	acpi_os_vprintf(format, arg_list);
14762306a36Sopenharmony_ci	acpi_os_printf("\n");
14862306a36Sopenharmony_ci	va_end(arg_list);
14962306a36Sopenharmony_ci
15062306a36Sopenharmony_ci	ACPI_MSG_REDIRECT_END;
15162306a36Sopenharmony_ci}
15262306a36Sopenharmony_ci
15362306a36Sopenharmony_ciACPI_EXPORT_SYMBOL(acpi_info)
15462306a36Sopenharmony_ci
15562306a36Sopenharmony_ci/*******************************************************************************
15662306a36Sopenharmony_ci *
15762306a36Sopenharmony_ci * FUNCTION:    acpi_bios_error
15862306a36Sopenharmony_ci *
15962306a36Sopenharmony_ci * PARAMETERS:  module_name         - Caller's module name (for error output)
16062306a36Sopenharmony_ci *              line_number         - Caller's line number (for error output)
16162306a36Sopenharmony_ci *              format              - Printf format string + additional args
16262306a36Sopenharmony_ci *
16362306a36Sopenharmony_ci * RETURN:      None
16462306a36Sopenharmony_ci *
16562306a36Sopenharmony_ci * DESCRIPTION: Print "ACPI Firmware Error" message with module/line/version
16662306a36Sopenharmony_ci *              info
16762306a36Sopenharmony_ci *
16862306a36Sopenharmony_ci ******************************************************************************/
16962306a36Sopenharmony_civoid ACPI_INTERNAL_VAR_XFACE
17062306a36Sopenharmony_ciacpi_bios_error(const char *module_name,
17162306a36Sopenharmony_ci		u32 line_number, const char *format, ...)
17262306a36Sopenharmony_ci{
17362306a36Sopenharmony_ci	va_list arg_list;
17462306a36Sopenharmony_ci
17562306a36Sopenharmony_ci	ACPI_MSG_REDIRECT_BEGIN;
17662306a36Sopenharmony_ci	acpi_os_printf(ACPI_MSG_BIOS_ERROR);
17762306a36Sopenharmony_ci
17862306a36Sopenharmony_ci	va_start(arg_list, format);
17962306a36Sopenharmony_ci	acpi_os_vprintf(format, arg_list);
18062306a36Sopenharmony_ci	ACPI_MSG_SUFFIX;
18162306a36Sopenharmony_ci	va_end(arg_list);
18262306a36Sopenharmony_ci
18362306a36Sopenharmony_ci	ACPI_MSG_REDIRECT_END;
18462306a36Sopenharmony_ci}
18562306a36Sopenharmony_ci
18662306a36Sopenharmony_ciACPI_EXPORT_SYMBOL(acpi_bios_error)
18762306a36Sopenharmony_ci
18862306a36Sopenharmony_ci/*******************************************************************************
18962306a36Sopenharmony_ci *
19062306a36Sopenharmony_ci * FUNCTION:    acpi_bios_exception
19162306a36Sopenharmony_ci *
19262306a36Sopenharmony_ci * PARAMETERS:  module_name         - Caller's module name (for error output)
19362306a36Sopenharmony_ci *              line_number         - Caller's line number (for error output)
19462306a36Sopenharmony_ci *              status              - Status value to be decoded/formatted
19562306a36Sopenharmony_ci *              format              - Printf format string + additional args
19662306a36Sopenharmony_ci *
19762306a36Sopenharmony_ci * RETURN:      None
19862306a36Sopenharmony_ci *
19962306a36Sopenharmony_ci * DESCRIPTION: Print an "ACPI Firmware Error" message with module/line/version
20062306a36Sopenharmony_ci *              info as well as decoded acpi_status.
20162306a36Sopenharmony_ci *
20262306a36Sopenharmony_ci ******************************************************************************/
20362306a36Sopenharmony_civoid ACPI_INTERNAL_VAR_XFACE
20462306a36Sopenharmony_ciacpi_bios_exception(const char *module_name,
20562306a36Sopenharmony_ci		    u32 line_number,
20662306a36Sopenharmony_ci		    acpi_status status, const char *format, ...)
20762306a36Sopenharmony_ci{
20862306a36Sopenharmony_ci	va_list arg_list;
20962306a36Sopenharmony_ci
21062306a36Sopenharmony_ci	ACPI_MSG_REDIRECT_BEGIN;
21162306a36Sopenharmony_ci
21262306a36Sopenharmony_ci	/* For AE_OK, just print the message */
21362306a36Sopenharmony_ci
21462306a36Sopenharmony_ci	if (ACPI_SUCCESS(status)) {
21562306a36Sopenharmony_ci		acpi_os_printf(ACPI_MSG_BIOS_ERROR);
21662306a36Sopenharmony_ci
21762306a36Sopenharmony_ci	} else {
21862306a36Sopenharmony_ci		acpi_os_printf(ACPI_MSG_BIOS_ERROR "%s, ",
21962306a36Sopenharmony_ci			       acpi_format_exception(status));
22062306a36Sopenharmony_ci	}
22162306a36Sopenharmony_ci
22262306a36Sopenharmony_ci	va_start(arg_list, format);
22362306a36Sopenharmony_ci	acpi_os_vprintf(format, arg_list);
22462306a36Sopenharmony_ci	ACPI_MSG_SUFFIX;
22562306a36Sopenharmony_ci	va_end(arg_list);
22662306a36Sopenharmony_ci
22762306a36Sopenharmony_ci	ACPI_MSG_REDIRECT_END;
22862306a36Sopenharmony_ci}
22962306a36Sopenharmony_ci
23062306a36Sopenharmony_ciACPI_EXPORT_SYMBOL(acpi_bios_exception)
23162306a36Sopenharmony_ci
23262306a36Sopenharmony_ci/*******************************************************************************
23362306a36Sopenharmony_ci *
23462306a36Sopenharmony_ci * FUNCTION:    acpi_bios_warning
23562306a36Sopenharmony_ci *
23662306a36Sopenharmony_ci * PARAMETERS:  module_name         - Caller's module name (for warning output)
23762306a36Sopenharmony_ci *              line_number         - Caller's line number (for warning output)
23862306a36Sopenharmony_ci *              format              - Printf format string + additional args
23962306a36Sopenharmony_ci *
24062306a36Sopenharmony_ci * RETURN:      None
24162306a36Sopenharmony_ci *
24262306a36Sopenharmony_ci * DESCRIPTION: Print "ACPI Firmware Warning" message with module/line/version
24362306a36Sopenharmony_ci *              info
24462306a36Sopenharmony_ci *
24562306a36Sopenharmony_ci ******************************************************************************/
24662306a36Sopenharmony_civoid ACPI_INTERNAL_VAR_XFACE
24762306a36Sopenharmony_ciacpi_bios_warning(const char *module_name,
24862306a36Sopenharmony_ci		  u32 line_number, const char *format, ...)
24962306a36Sopenharmony_ci{
25062306a36Sopenharmony_ci	va_list arg_list;
25162306a36Sopenharmony_ci
25262306a36Sopenharmony_ci	ACPI_MSG_REDIRECT_BEGIN;
25362306a36Sopenharmony_ci	acpi_os_printf(ACPI_MSG_BIOS_WARNING);
25462306a36Sopenharmony_ci
25562306a36Sopenharmony_ci	va_start(arg_list, format);
25662306a36Sopenharmony_ci	acpi_os_vprintf(format, arg_list);
25762306a36Sopenharmony_ci	ACPI_MSG_SUFFIX;
25862306a36Sopenharmony_ci	va_end(arg_list);
25962306a36Sopenharmony_ci
26062306a36Sopenharmony_ci	ACPI_MSG_REDIRECT_END;
26162306a36Sopenharmony_ci}
26262306a36Sopenharmony_ci
26362306a36Sopenharmony_ciACPI_EXPORT_SYMBOL(acpi_bios_warning)
26462306a36Sopenharmony_ci#endif				/* ACPI_NO_ERROR_MESSAGES */
265