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