162306a36Sopenharmony_ci/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */
262306a36Sopenharmony_ci/******************************************************************************
362306a36Sopenharmony_ci *
462306a36Sopenharmony_ci * Name: actables.h - ACPI table management
562306a36Sopenharmony_ci *
662306a36Sopenharmony_ci * Copyright (C) 2000 - 2023, Intel Corp.
762306a36Sopenharmony_ci *
862306a36Sopenharmony_ci *****************************************************************************/
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci#ifndef __ACTABLES_H__
1162306a36Sopenharmony_ci#define __ACTABLES_H__
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ciacpi_status acpi_allocate_root_table(u32 initial_table_count);
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci/*
1662306a36Sopenharmony_ci * tbxfroot - Root pointer utilities
1762306a36Sopenharmony_ci */
1862306a36Sopenharmony_ciu32 acpi_tb_get_rsdp_length(struct acpi_table_rsdp *rsdp);
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ciacpi_status acpi_tb_validate_rsdp(struct acpi_table_rsdp *rsdp);
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ciu8 *acpi_tb_scan_memory_for_rsdp(u8 *start_address, u32 length);
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci/*
2562306a36Sopenharmony_ci * tbdata - table data structure management
2662306a36Sopenharmony_ci */
2762306a36Sopenharmony_ciacpi_status
2862306a36Sopenharmony_ciacpi_tb_get_next_table_descriptor(u32 *table_index,
2962306a36Sopenharmony_ci				  struct acpi_table_desc **table_desc);
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_civoid
3262306a36Sopenharmony_ciacpi_tb_init_table_descriptor(struct acpi_table_desc *table_desc,
3362306a36Sopenharmony_ci			      acpi_physical_address address,
3462306a36Sopenharmony_ci			      u8 flags, struct acpi_table_header *table);
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ciacpi_status
3762306a36Sopenharmony_ciacpi_tb_acquire_temp_table(struct acpi_table_desc *table_desc,
3862306a36Sopenharmony_ci			   acpi_physical_address address,
3962306a36Sopenharmony_ci			   u8 flags, struct acpi_table_header *table);
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_civoid acpi_tb_release_temp_table(struct acpi_table_desc *table_desc);
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ciacpi_status acpi_tb_validate_temp_table(struct acpi_table_desc *table_desc);
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ciacpi_status
4662306a36Sopenharmony_ciacpi_tb_verify_temp_table(struct acpi_table_desc *table_desc,
4762306a36Sopenharmony_ci			  char *signature, u32 *table_index);
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ciu8 acpi_tb_is_table_loaded(u32 table_index);
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_civoid acpi_tb_set_table_loaded_flag(u32 table_index, u8 is_loaded);
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ci/*
5462306a36Sopenharmony_ci * tbfadt - FADT parse/convert/validate
5562306a36Sopenharmony_ci */
5662306a36Sopenharmony_civoid acpi_tb_parse_fadt(void);
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_civoid acpi_tb_create_local_fadt(struct acpi_table_header *table, u32 length);
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ci/*
6162306a36Sopenharmony_ci * tbfind - find ACPI table
6262306a36Sopenharmony_ci */
6362306a36Sopenharmony_ciacpi_status
6462306a36Sopenharmony_ciacpi_tb_find_table(char *signature,
6562306a36Sopenharmony_ci		   char *oem_id, char *oem_table_id, u32 *table_index);
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ci/*
6862306a36Sopenharmony_ci * tbinstal - Table removal and deletion
6962306a36Sopenharmony_ci */
7062306a36Sopenharmony_ciacpi_status acpi_tb_resize_root_table_list(void);
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ciacpi_status acpi_tb_validate_table(struct acpi_table_desc *table_desc);
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_civoid acpi_tb_invalidate_table(struct acpi_table_desc *table_desc);
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_civoid acpi_tb_override_table(struct acpi_table_desc *old_table_desc);
7762306a36Sopenharmony_ci
7862306a36Sopenharmony_ciacpi_status
7962306a36Sopenharmony_ciacpi_tb_acquire_table(struct acpi_table_desc *table_desc,
8062306a36Sopenharmony_ci		      struct acpi_table_header **table_ptr,
8162306a36Sopenharmony_ci		      u32 *table_length, u8 *table_flags);
8262306a36Sopenharmony_ci
8362306a36Sopenharmony_civoid
8462306a36Sopenharmony_ciacpi_tb_release_table(struct acpi_table_header *table,
8562306a36Sopenharmony_ci		      u32 table_length, u8 table_flags);
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_ciacpi_status
8862306a36Sopenharmony_ciacpi_tb_install_standard_table(acpi_physical_address address,
8962306a36Sopenharmony_ci			       u8 flags,
9062306a36Sopenharmony_ci			       struct acpi_table_header *table,
9162306a36Sopenharmony_ci			       u8 reload, u8 override, u32 *table_index);
9262306a36Sopenharmony_ci
9362306a36Sopenharmony_civoid acpi_tb_uninstall_table(struct acpi_table_desc *table_desc);
9462306a36Sopenharmony_ci
9562306a36Sopenharmony_ciacpi_status
9662306a36Sopenharmony_ciacpi_tb_load_table(u32 table_index, struct acpi_namespace_node *parent_node);
9762306a36Sopenharmony_ci
9862306a36Sopenharmony_ciacpi_status
9962306a36Sopenharmony_ciacpi_tb_install_and_load_table(acpi_physical_address address,
10062306a36Sopenharmony_ci			       u8 flags,
10162306a36Sopenharmony_ci			       struct acpi_table_header *table,
10262306a36Sopenharmony_ci			       u8 override, u32 *table_index);
10362306a36Sopenharmony_ci
10462306a36Sopenharmony_ciacpi_status acpi_tb_unload_table(u32 table_index);
10562306a36Sopenharmony_ci
10662306a36Sopenharmony_civoid acpi_tb_notify_table(u32 event, void *table);
10762306a36Sopenharmony_ci
10862306a36Sopenharmony_civoid acpi_tb_terminate(void);
10962306a36Sopenharmony_ci
11062306a36Sopenharmony_ciacpi_status acpi_tb_delete_namespace_by_owner(u32 table_index);
11162306a36Sopenharmony_ci
11262306a36Sopenharmony_ciacpi_status acpi_tb_allocate_owner_id(u32 table_index);
11362306a36Sopenharmony_ci
11462306a36Sopenharmony_ciacpi_status acpi_tb_release_owner_id(u32 table_index);
11562306a36Sopenharmony_ci
11662306a36Sopenharmony_ciacpi_status acpi_tb_get_owner_id(u32 table_index, acpi_owner_id *owner_id);
11762306a36Sopenharmony_ci
11862306a36Sopenharmony_ci/*
11962306a36Sopenharmony_ci * tbutils - table manager utilities
12062306a36Sopenharmony_ci */
12162306a36Sopenharmony_ciacpi_status acpi_tb_initialize_facs(void);
12262306a36Sopenharmony_ci
12362306a36Sopenharmony_civoid
12462306a36Sopenharmony_ciacpi_tb_print_table_header(acpi_physical_address address,
12562306a36Sopenharmony_ci			   struct acpi_table_header *header);
12662306a36Sopenharmony_ci
12762306a36Sopenharmony_civoid acpi_tb_check_dsdt_header(void);
12862306a36Sopenharmony_ci
12962306a36Sopenharmony_cistruct acpi_table_header *acpi_tb_copy_dsdt(u32 table_index);
13062306a36Sopenharmony_ci
13162306a36Sopenharmony_civoid
13262306a36Sopenharmony_ciacpi_tb_install_table_with_override(struct acpi_table_desc *new_table_desc,
13362306a36Sopenharmony_ci				    u8 override, u32 *table_index);
13462306a36Sopenharmony_ci
13562306a36Sopenharmony_ciacpi_status acpi_tb_parse_root_table(acpi_physical_address rsdp_address);
13662306a36Sopenharmony_ci
13762306a36Sopenharmony_ciacpi_status
13862306a36Sopenharmony_ciacpi_tb_get_table(struct acpi_table_desc *table_desc,
13962306a36Sopenharmony_ci		  struct acpi_table_header **out_table);
14062306a36Sopenharmony_ci
14162306a36Sopenharmony_civoid acpi_tb_put_table(struct acpi_table_desc *table_desc);
14262306a36Sopenharmony_ci
14362306a36Sopenharmony_ci/*
14462306a36Sopenharmony_ci * tbxfload
14562306a36Sopenharmony_ci */
14662306a36Sopenharmony_ciacpi_status acpi_tb_load_namespace(void);
14762306a36Sopenharmony_ci
14862306a36Sopenharmony_ci#endif				/* __ACTABLES_H__ */
149