1e1e9a4bfSMitsuru IWASAKI /*- 24d846d26SWarner Losh * SPDX-License-Identifier: BSD-2-Clause 31de7b4b8SPedro F. Giffuni * 4e1e9a4bfSMitsuru IWASAKI * Copyright (c) 1999 Doug Rabson 5e1e9a4bfSMitsuru IWASAKI * Copyright (c) 2000 Mitsuru IWASAKI <iwasaki@FreeBSD.org> 6e1e9a4bfSMitsuru IWASAKI * All rights reserved. 7e1e9a4bfSMitsuru IWASAKI * 8e1e9a4bfSMitsuru IWASAKI * Redistribution and use in source and binary forms, with or without 9e1e9a4bfSMitsuru IWASAKI * modification, are permitted provided that the following conditions 10e1e9a4bfSMitsuru IWASAKI * are met: 11e1e9a4bfSMitsuru IWASAKI * 1. Redistributions of source code must retain the above copyright 12e1e9a4bfSMitsuru IWASAKI * notice, this list of conditions and the following disclaimer. 13e1e9a4bfSMitsuru IWASAKI * 2. Redistributions in binary form must reproduce the above copyright 14e1e9a4bfSMitsuru IWASAKI * notice, this list of conditions and the following disclaimer in the 15e1e9a4bfSMitsuru IWASAKI * documentation and/or other materials provided with the distribution. 16e1e9a4bfSMitsuru IWASAKI * 17e1e9a4bfSMitsuru IWASAKI * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 18e1e9a4bfSMitsuru IWASAKI * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19e1e9a4bfSMitsuru IWASAKI * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20e1e9a4bfSMitsuru IWASAKI * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 21e1e9a4bfSMitsuru IWASAKI * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22e1e9a4bfSMitsuru IWASAKI * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23e1e9a4bfSMitsuru IWASAKI * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24e1e9a4bfSMitsuru IWASAKI * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25e1e9a4bfSMitsuru IWASAKI * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26e1e9a4bfSMitsuru IWASAKI * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27e1e9a4bfSMitsuru IWASAKI * SUCH DAMAGE. 28e1e9a4bfSMitsuru IWASAKI */ 29e1e9a4bfSMitsuru IWASAKI 30e1e9a4bfSMitsuru IWASAKI #ifndef _ACPIDUMP_H_ 31e1e9a4bfSMitsuru IWASAKI #define _ACPIDUMP_H_ 32e1e9a4bfSMitsuru IWASAKI 3329a6b727SKonstantin Belousov #pragma GCC diagnostic push 3429a6b727SKonstantin Belousov #pragma GCC diagnostic ignored "-Wunused-parameter" 35986dffafSJohn Baldwin #include <contrib/dev/acpica/include/acpi.h> 36986dffafSJohn Baldwin #include <contrib/dev/acpica/include/acconfig.h> 37986dffafSJohn Baldwin #include <contrib/dev/acpica/include/actbl1.h> 3829a6b727SKonstantin Belousov #pragma GCC diagnostic pop 39986dffafSJohn Baldwin 40986dffafSJohn Baldwin /* GAS address space ID constants. */ 41d3f4a2caSMitsuru IWASAKI #define ACPI_GAS_MEMORY 0 42d3f4a2caSMitsuru IWASAKI #define ACPI_GAS_IO 1 43d3f4a2caSMitsuru IWASAKI #define ACPI_GAS_PCI 2 44d3f4a2caSMitsuru IWASAKI #define ACPI_GAS_EMBEDDED 3 45d3f4a2caSMitsuru IWASAKI #define ACPI_GAS_SMBUS 4 46986dffafSJohn Baldwin #define ACPI_GAS_CMOS 5 47986dffafSJohn Baldwin #define ACPI_GAS_PCIBAR 6 48986dffafSJohn Baldwin #define ACPI_GAS_DATATABLE 7 49d3f4a2caSMitsuru IWASAKI #define ACPI_GAS_FIXED 0x7f 50d3f4a2caSMitsuru IWASAKI 51986dffafSJohn Baldwin /* Subfields in the HPET Id member. */ 52986dffafSJohn Baldwin #define ACPI_HPET_ID_HARDWARE_REV_ID 0x000000ff 53986dffafSJohn Baldwin #define ACPI_HPET_ID_COMPARATORS 0x00001f00 54986dffafSJohn Baldwin #define ACPI_HPET_ID_COUNT_SIZE_CAP 0x00002000 55986dffafSJohn Baldwin #define ACPI_HPET_ID_LEGACY_CAPABLE 0x00008000 56986dffafSJohn Baldwin #define ACPI_HPET_ID_PCI_VENDOR_ID 0xffff0000 578fc0f4c6SNate Lawson 58945137d9SNate Lawson /* Find and map the RSD PTR structure and return it for parsing */ 59986dffafSJohn Baldwin ACPI_TABLE_HEADER *sdt_load_devmem(void); 60945137d9SNate Lawson 61c031c93bSTakanori Watanabe /* TCPA */ 62c031c93bSTakanori Watanabe struct TCPAbody { 63c031c93bSTakanori Watanabe ACPI_TABLE_HEADER header; 64c031c93bSTakanori Watanabe uint16_t platform_class; 65c031c93bSTakanori Watanabe #define ACPI_TCPA_BIOS_CLIENT 0x00 66c031c93bSTakanori Watanabe #define ACPI_TCPA_BIOS_SERVER 0x01 67c031c93bSTakanori Watanabe union { 68c031c93bSTakanori Watanabe struct client_hdr { 69c031c93bSTakanori Watanabe uint32_t log_max_len __packed; 70c031c93bSTakanori Watanabe uint64_t log_start_addr __packed; 71c031c93bSTakanori Watanabe } client; 72c031c93bSTakanori Watanabe struct server_hdr { 73c031c93bSTakanori Watanabe uint16_t reserved; 74c031c93bSTakanori Watanabe uint64_t log_max_len __packed; 75c031c93bSTakanori Watanabe uint64_t log_start_addr __packed; 76c031c93bSTakanori Watanabe } server; 77c031c93bSTakanori Watanabe }; 78c031c93bSTakanori Watanabe } __packed; 79c031c93bSTakanori Watanabe 80c031c93bSTakanori Watanabe struct TCPAevent { 81c031c93bSTakanori Watanabe u_int32_t pcr_index; 82c031c93bSTakanori Watanabe u_int32_t event_type; 83c031c93bSTakanori Watanabe u_int8_t pcr_value[20]; 84c031c93bSTakanori Watanabe u_int32_t event_size; 85c031c93bSTakanori Watanabe u_int8_t event_data[0]; 86c031c93bSTakanori Watanabe }; 87c031c93bSTakanori Watanabe 88c031c93bSTakanori Watanabe struct TCPApc_event { 89c031c93bSTakanori Watanabe u_int32_t event_id; 90c031c93bSTakanori Watanabe u_int32_t event_size; 91c031c93bSTakanori Watanabe u_int8_t event_data[0]; 92c031c93bSTakanori Watanabe }; 93c031c93bSTakanori Watanabe 94c031c93bSTakanori Watanabe enum TCPAevent_types { 95c031c93bSTakanori Watanabe PREBOOT = 0, 96c031c93bSTakanori Watanabe POST_CODE, 97c031c93bSTakanori Watanabe UNUSED, 98c031c93bSTakanori Watanabe NO_ACTION, 99c031c93bSTakanori Watanabe SEPARATOR, 100c031c93bSTakanori Watanabe ACTION, 101c031c93bSTakanori Watanabe EVENT_TAG, 102c031c93bSTakanori Watanabe SCRTM_CONTENTS, 103c031c93bSTakanori Watanabe SCRTM_VERSION, 104c031c93bSTakanori Watanabe CPU_MICROCODE, 105c031c93bSTakanori Watanabe PLATFORM_CONFIG_FLAGS, 106c031c93bSTakanori Watanabe TABLE_OF_DEVICES, 107c031c93bSTakanori Watanabe COMPACT_HASH, 108c031c93bSTakanori Watanabe IPL, 109c031c93bSTakanori Watanabe IPL_PARTITION_DATA, 110c031c93bSTakanori Watanabe NONHOST_CODE, 111c031c93bSTakanori Watanabe NONHOST_CONFIG, 112c031c93bSTakanori Watanabe NONHOST_INFO, 113c031c93bSTakanori Watanabe EVENT_TYPE_MAX, 114c031c93bSTakanori Watanabe }; 115c031c93bSTakanori Watanabe 116c031c93bSTakanori Watanabe enum TCPApcclient_ids { 117c031c93bSTakanori Watanabe SMBIOS = 1, 118c031c93bSTakanori Watanabe BIS_CERT, 119c031c93bSTakanori Watanabe POST_BIOS_ROM, 120c031c93bSTakanori Watanabe ESCD, 121c031c93bSTakanori Watanabe CMOS, 122c031c93bSTakanori Watanabe NVRAM, 123c031c93bSTakanori Watanabe OPTION_ROM_EXEC, 124c031c93bSTakanori Watanabe OPTION_ROM_CONFIG, 125c031c93bSTakanori Watanabe OPTION_ROM_MICROCODE = 10, 126c031c93bSTakanori Watanabe S_CRTM_VERSION, 127c031c93bSTakanori Watanabe S_CRTM_CONTENTS, 128c031c93bSTakanori Watanabe POST_CONTENTS, 129c031c93bSTakanori Watanabe HOST_TABLE_OF_DEVICES, 130c031c93bSTakanori Watanabe PCCLIENT_ID_MAX, 131c031c93bSTakanori Watanabe }; 132c031c93bSTakanori Watanabe 133945137d9SNate Lawson /* 134945137d9SNate Lawson * Load the DSDT from a previous save file. Note that other tables are 135945137d9SNate Lawson * not saved (i.e. FADT) 136945137d9SNate Lawson */ 137986dffafSJohn Baldwin ACPI_TABLE_HEADER *dsdt_load_file(char *); 138945137d9SNate Lawson 139945137d9SNate Lawson /* Save the DSDT to a file */ 140986dffafSJohn Baldwin void dsdt_save_file(char *, ACPI_TABLE_HEADER *, ACPI_TABLE_HEADER *); 141945137d9SNate Lawson 142945137d9SNate Lawson /* Print out as many fixed tables as possible, given the RSD PTR */ 143*3ff9ea7dSWarner Losh void sdt_print_all(ACPI_TABLE_HEADER *, const char *); 144945137d9SNate Lawson 145945137d9SNate Lawson /* Disassemble the AML in the DSDT */ 146986dffafSJohn Baldwin void aml_disassemble(ACPI_TABLE_HEADER *, ACPI_TABLE_HEADER *); 147f5a04b16STakanori Watanabe void aml_disassemble_separate(ACPI_TABLE_HEADER *, ACPI_TABLE_HEADER *); 148945137d9SNate Lawson 149945137d9SNate Lawson /* Routines for accessing tables in physical memory */ 150986dffafSJohn Baldwin ACPI_TABLE_RSDP *acpi_find_rsd_ptr(void); 151945137d9SNate Lawson void *acpi_map_physical(vm_offset_t, size_t); 152986dffafSJohn Baldwin ACPI_TABLE_HEADER *sdt_from_rsdt(ACPI_TABLE_HEADER *, const char *, 153986dffafSJohn Baldwin ACPI_TABLE_HEADER *); 154986dffafSJohn Baldwin ACPI_TABLE_HEADER *dsdt_from_fadt(ACPI_TABLE_FADT *); 155945137d9SNate Lawson int acpi_checksum(void *, size_t); 156945137d9SNate Lawson 157945137d9SNate Lawson /* Command line flags */ 158945137d9SNate Lawson extern int dflag; 159945137d9SNate Lawson extern int tflag; 160945137d9SNate Lawson extern int vflag; 161e1e9a4bfSMitsuru IWASAKI 162e1e9a4bfSMitsuru IWASAKI #endif /* !_ACPIDUMP_H_ */ 163