1 /* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */
2 /******************************************************************************
4 * Name: actables.h - ACPI table management
6 * Copyright (C) 2000 - 2023, Intel Corp.
8 *****************************************************************************/
10 #ifndef __ACTABLES_H__
11 #define __ACTABLES_H__
13 acpi_status
acpi_allocate_root_table(u32 initial_table_count
);
16 * tbxfroot - Root pointer utilities
18 u32
acpi_tb_get_rsdp_length(struct acpi_table_rsdp
*rsdp
);
20 acpi_status
acpi_tb_validate_rsdp(struct acpi_table_rsdp
*rsdp
);
22 u8
*acpi_tb_scan_memory_for_rsdp(u8
*start_address
, u32 length
);
25 * tbdata - table data structure management
28 acpi_tb_get_next_table_descriptor(u32
*table_index
,
29 struct acpi_table_desc
**table_desc
);
32 acpi_tb_init_table_descriptor(struct acpi_table_desc
*table_desc
,
33 acpi_physical_address address
,
34 u8 flags
, struct acpi_table_header
*table
);
37 acpi_tb_acquire_temp_table(struct acpi_table_desc
*table_desc
,
38 acpi_physical_address address
,
39 u8 flags
, struct acpi_table_header
*table
);
41 void acpi_tb_release_temp_table(struct acpi_table_desc
*table_desc
);
43 acpi_status
acpi_tb_validate_temp_table(struct acpi_table_desc
*table_desc
);
46 acpi_tb_verify_temp_table(struct acpi_table_desc
*table_desc
,
47 char *signature
, u32
*table_index
);
49 u8
acpi_tb_is_table_loaded(u32 table_index
);
51 void acpi_tb_set_table_loaded_flag(u32 table_index
, u8 is_loaded
);
54 * tbfadt - FADT parse/convert/validate
56 void acpi_tb_parse_fadt(void);
58 void acpi_tb_create_local_fadt(struct acpi_table_header
*table
, u32 length
);
61 * tbfind - find ACPI table
64 acpi_tb_find_table(char *signature
,
65 char *oem_id
, char *oem_table_id
, u32
*table_index
);
68 * tbinstal - Table removal and deletion
70 acpi_status
acpi_tb_resize_root_table_list(void);
72 acpi_status
acpi_tb_validate_table(struct acpi_table_desc
*table_desc
);
74 void acpi_tb_invalidate_table(struct acpi_table_desc
*table_desc
);
76 void acpi_tb_override_table(struct acpi_table_desc
*old_table_desc
);
79 acpi_tb_acquire_table(struct acpi_table_desc
*table_desc
,
80 struct acpi_table_header
**table_ptr
,
81 u32
*table_length
, u8
*table_flags
);
84 acpi_tb_release_table(struct acpi_table_header
*table
,
85 u32 table_length
, u8 table_flags
);
88 acpi_tb_install_standard_table(acpi_physical_address address
,
90 struct acpi_table_header
*table
,
91 u8 reload
, u8 override
, u32
*table_index
);
93 void acpi_tb_uninstall_table(struct acpi_table_desc
*table_desc
);
96 acpi_tb_load_table(u32 table_index
, struct acpi_namespace_node
*parent_node
);
99 acpi_tb_install_and_load_table(acpi_physical_address address
,
101 struct acpi_table_header
*table
,
102 u8 override
, u32
*table_index
);
104 acpi_status
acpi_tb_unload_table(u32 table_index
);
106 void acpi_tb_notify_table(u32 event
, void *table
);
108 void acpi_tb_terminate(void);
110 acpi_status
acpi_tb_delete_namespace_by_owner(u32 table_index
);
112 acpi_status
acpi_tb_allocate_owner_id(u32 table_index
);
114 acpi_status
acpi_tb_release_owner_id(u32 table_index
);
116 acpi_status
acpi_tb_get_owner_id(u32 table_index
, acpi_owner_id
*owner_id
);
119 * tbutils - table manager utilities
121 acpi_status
acpi_tb_initialize_facs(void);
124 acpi_tb_print_table_header(acpi_physical_address address
,
125 struct acpi_table_header
*header
);
127 void acpi_tb_check_dsdt_header(void);
129 struct acpi_table_header
*acpi_tb_copy_dsdt(u32 table_index
);
132 acpi_tb_install_table_with_override(struct acpi_table_desc
*new_table_desc
,
133 u8 override
, u32
*table_index
);
135 acpi_status
acpi_tb_parse_root_table(acpi_physical_address rsdp_address
);
138 acpi_tb_get_table(struct acpi_table_desc
*table_desc
,
139 struct acpi_table_header
**out_table
);
141 void acpi_tb_put_table(struct acpi_table_desc
*table_desc
);
146 acpi_status
acpi_tb_load_namespace(void);
148 #endif /* __ACTABLES_H__ */