at v2.6.12-rc4 235 lines 6.2 kB view raw
1/****************************************************************************** 2 * 3 * Name: actables.h - ACPI table management 4 * 5 *****************************************************************************/ 6 7/* 8 * Copyright (C) 2000 - 2005, R. Byron Moore 9 * All rights reserved. 10 * 11 * Redistribution and use in source and binary forms, with or without 12 * modification, are permitted provided that the following conditions 13 * are met: 14 * 1. Redistributions of source code must retain the above copyright 15 * notice, this list of conditions, and the following disclaimer, 16 * without modification. 17 * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18 * substantially similar to the "NO WARRANTY" disclaimer below 19 * ("Disclaimer") and any redistribution must be conditioned upon 20 * including a substantially similar Disclaimer requirement for further 21 * binary redistribution. 22 * 3. Neither the names of the above-listed copyright holders nor the names 23 * of any contributors may be used to endorse or promote products derived 24 * from this software without specific prior written permission. 25 * 26 * Alternatively, this software may be distributed under the terms of the 27 * GNU General Public License ("GPL") version 2 as published by the Free 28 * Software Foundation. 29 * 30 * NO WARRANTY 31 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41 * POSSIBILITY OF SUCH DAMAGES. 42 */ 43 44#ifndef __ACTABLES_H__ 45#define __ACTABLES_H__ 46 47 48/* Used in acpi_tb_map_acpi_table for size parameter if table header is to be used */ 49 50#define SIZE_IN_HEADER 0 51 52 53#ifdef ACPI_FUTURE_USAGE 54acpi_status 55acpi_tb_handle_to_object ( 56 u16 table_id, 57 struct acpi_table_desc **table_desc); 58#endif 59 60/* 61 * tbconvrt - Table conversion routines 62 */ 63 64acpi_status 65acpi_tb_convert_to_xsdt ( 66 struct acpi_table_desc *table_info); 67 68acpi_status 69acpi_tb_convert_table_fadt ( 70 void); 71 72acpi_status 73acpi_tb_build_common_facs ( 74 struct acpi_table_desc *table_info); 75 76u32 77acpi_tb_get_table_count ( 78 struct rsdp_descriptor *RSDP, 79 struct acpi_table_header *RSDT); 80 81/* 82 * tbget - Table "get" routines 83 */ 84 85acpi_status 86acpi_tb_get_table ( 87 struct acpi_pointer *address, 88 struct acpi_table_desc *table_info); 89 90acpi_status 91acpi_tb_get_table_header ( 92 struct acpi_pointer *address, 93 struct acpi_table_header *return_header); 94 95acpi_status 96acpi_tb_get_table_body ( 97 struct acpi_pointer *address, 98 struct acpi_table_header *header, 99 struct acpi_table_desc *table_info); 100 101acpi_status 102acpi_tb_get_this_table ( 103 struct acpi_pointer *address, 104 struct acpi_table_header *header, 105 struct acpi_table_desc *table_info); 106 107acpi_status 108acpi_tb_table_override ( 109 struct acpi_table_header *header, 110 struct acpi_table_desc *table_info); 111 112acpi_status 113acpi_tb_get_table_ptr ( 114 acpi_table_type table_type, 115 u32 instance, 116 struct acpi_table_header **table_ptr_loc); 117 118acpi_status 119acpi_tb_verify_rsdp ( 120 struct acpi_pointer *address); 121 122void 123acpi_tb_get_rsdt_address ( 124 struct acpi_pointer *out_address); 125 126acpi_status 127acpi_tb_validate_rsdt ( 128 struct acpi_table_header *table_ptr); 129 130acpi_status 131acpi_tb_get_required_tables ( 132 void); 133 134acpi_status 135acpi_tb_get_primary_table ( 136 struct acpi_pointer *address, 137 struct acpi_table_desc *table_info); 138 139acpi_status 140acpi_tb_get_secondary_table ( 141 struct acpi_pointer *address, 142 acpi_string signature, 143 struct acpi_table_desc *table_info); 144 145/* 146 * tbinstall - Table installation 147 */ 148 149acpi_status 150acpi_tb_install_table ( 151 struct acpi_table_desc *table_info); 152 153acpi_status 154acpi_tb_match_signature ( 155 char *signature, 156 struct acpi_table_desc *table_info, 157 u8 search_type); 158 159acpi_status 160acpi_tb_recognize_table ( 161 struct acpi_table_desc *table_info, 162 u8 search_type); 163 164acpi_status 165acpi_tb_init_table_descriptor ( 166 acpi_table_type table_type, 167 struct acpi_table_desc *table_info); 168 169 170/* 171 * tbremove - Table removal and deletion 172 */ 173 174void 175acpi_tb_delete_all_tables ( 176 void); 177 178void 179acpi_tb_delete_tables_by_type ( 180 acpi_table_type type); 181 182void 183acpi_tb_delete_single_table ( 184 struct acpi_table_desc *table_desc); 185 186struct acpi_table_desc * 187acpi_tb_uninstall_table ( 188 struct acpi_table_desc *table_desc); 189 190 191/* 192 * tbrsd - RSDP, RSDT utilities 193 */ 194 195acpi_status 196acpi_tb_get_table_rsdt ( 197 void); 198 199u8 * 200acpi_tb_scan_memory_for_rsdp ( 201 u8 *start_address, 202 u32 length); 203 204acpi_status 205acpi_tb_find_rsdp ( 206 struct acpi_table_desc *table_info, 207 u32 flags); 208 209 210/* 211 * tbutils - common table utilities 212 */ 213 214acpi_status 215acpi_tb_find_table ( 216 char *signature, 217 char *oem_id, 218 char *oem_table_id, 219 struct acpi_table_header **table_ptr); 220 221acpi_status 222acpi_tb_verify_table_checksum ( 223 struct acpi_table_header *table_header); 224 225u8 226acpi_tb_checksum ( 227 void *buffer, 228 u32 length); 229 230acpi_status 231acpi_tb_validate_table_header ( 232 struct acpi_table_header *table_header); 233 234 235#endif /* __ACTABLES_H__ */