xref: /openbmc/linux/tools/power/acpi/tools/acpidump/acpidump.h (revision 1ac731c529cd4d6adbce134754b51ff7d822b145)
195857638SErik Schmauss /* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */
2506f57ddSLv Zheng /******************************************************************************
3506f57ddSLv Zheng  *
4506f57ddSLv Zheng  * Module Name: acpidump.h - Include file for acpi_dump utility
5506f57ddSLv Zheng  *
6*612c2932SBob Moore  * Copyright (C) 2000 - 2023, Intel Corp.
7506f57ddSLv Zheng  *
895857638SErik Schmauss  *****************************************************************************/
9506f57ddSLv Zheng 
10c7932267SLv Zheng /*
11c7932267SLv Zheng  * Global variables. Defined in main.c only, externed in all other files
12c7932267SLv Zheng  */
13c7932267SLv Zheng #ifdef _DECLARE_GLOBALS
14c7932267SLv Zheng #define EXTERN
15c7932267SLv Zheng #define INIT_GLOBAL(a,b)        a=b
16c7932267SLv Zheng #else
17c7932267SLv Zheng #define EXTERN                  extern
18c7932267SLv Zheng #define INIT_GLOBAL(a,b)        a
19c7932267SLv Zheng #endif
20c7932267SLv Zheng 
21506f57ddSLv Zheng #include <acpi/acpi.h>
22506f57ddSLv Zheng #include "accommon.h"
23506f57ddSLv Zheng #include "actables.h"
24e323c02dSLv Zheng #include "acapps.h"
25506f57ddSLv Zheng 
26506f57ddSLv Zheng /* Globals */
27506f57ddSLv Zheng 
28506f57ddSLv Zheng EXTERN u8 INIT_GLOBAL(gbl_summary_mode, FALSE);
29506f57ddSLv Zheng EXTERN u8 INIT_GLOBAL(gbl_verbose_mode, FALSE);
30506f57ddSLv Zheng EXTERN u8 INIT_GLOBAL(gbl_binary_mode, FALSE);
314fb80c37SLv Zheng EXTERN u8 INIT_GLOBAL(gbl_dump_customized_tables, TRUE);
32c7932267SLv Zheng EXTERN u8 INIT_GLOBAL(gbl_do_not_dump_xsdt, FALSE);
33dcaff16dSLv Zheng EXTERN ACPI_FILE INIT_GLOBAL(gbl_output_file, NULL);
34506f57ddSLv Zheng EXTERN char INIT_GLOBAL(*gbl_output_filename, NULL);
35506f57ddSLv Zheng EXTERN u64 INIT_GLOBAL(gbl_rsdp_base, 0);
36506f57ddSLv Zheng 
37506f57ddSLv Zheng /* Action table used to defer requested options */
38506f57ddSLv Zheng 
39506f57ddSLv Zheng struct ap_dump_action {
40506f57ddSLv Zheng 	char *argument;
41506f57ddSLv Zheng 	u32 to_be_done;
42506f57ddSLv Zheng };
43506f57ddSLv Zheng 
44506f57ddSLv Zheng #define AP_MAX_ACTIONS              32
45506f57ddSLv Zheng 
46506f57ddSLv Zheng #define AP_DUMP_ALL_TABLES          0
47506f57ddSLv Zheng #define AP_DUMP_TABLE_BY_ADDRESS    1
48506f57ddSLv Zheng #define AP_DUMP_TABLE_BY_NAME       2
49506f57ddSLv Zheng #define AP_DUMP_TABLE_BY_FILE       3
50506f57ddSLv Zheng 
51506f57ddSLv Zheng #define AP_MAX_ACPI_FILES           256	/* Prevent infinite loops */
52506f57ddSLv Zheng 
53506f57ddSLv Zheng /* Minimum FADT sizes for various table addresses */
54506f57ddSLv Zheng 
55506f57ddSLv Zheng #define MIN_FADT_FOR_DSDT           (ACPI_FADT_OFFSET (dsdt) + sizeof (u32))
56506f57ddSLv Zheng #define MIN_FADT_FOR_FACS           (ACPI_FADT_OFFSET (facs) + sizeof (u32))
57506f57ddSLv Zheng #define MIN_FADT_FOR_XDSDT          (ACPI_FADT_OFFSET (Xdsdt) + sizeof (u64))
58506f57ddSLv Zheng #define MIN_FADT_FOR_XFACS          (ACPI_FADT_OFFSET (Xfacs) + sizeof (u64))
59506f57ddSLv Zheng 
60506f57ddSLv Zheng /*
61506f57ddSLv Zheng  * apdump - Table get/dump routines
62506f57ddSLv Zheng  */
63506f57ddSLv Zheng int ap_dump_table_from_file(char *pathname);
64506f57ddSLv Zheng 
65506f57ddSLv Zheng int ap_dump_table_by_name(char *signature);
66506f57ddSLv Zheng 
67506f57ddSLv Zheng int ap_dump_table_by_address(char *ascii_address);
68506f57ddSLv Zheng 
69506f57ddSLv Zheng int ap_dump_all_tables(void);
70506f57ddSLv Zheng 
71506f57ddSLv Zheng u8 ap_is_valid_header(struct acpi_table_header *table);
72506f57ddSLv Zheng 
73506f57ddSLv Zheng u8 ap_is_valid_checksum(struct acpi_table_header *table);
74506f57ddSLv Zheng 
75506f57ddSLv Zheng u32 ap_get_table_length(struct acpi_table_header *table);
76506f57ddSLv Zheng 
77506f57ddSLv Zheng /*
78506f57ddSLv Zheng  * apfiles - File I/O utilities
79506f57ddSLv Zheng  */
80506f57ddSLv Zheng int ap_open_output_file(char *pathname);
81506f57ddSLv Zheng 
82506f57ddSLv Zheng int ap_write_to_binary_file(struct acpi_table_header *table, u32 instance);
83506f57ddSLv Zheng 
84506f57ddSLv Zheng struct acpi_table_header *ap_get_table_from_file(char *pathname,
85506f57ddSLv Zheng 						 u32 *file_size);
86