1 /*
2  * Copyright (c) 2019-2022, Arm Limited. All rights reserved.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #ifndef FCONF_DYN_CFG_GETTER_H
8 #define FCONF_DYN_CFG_GETTER_H
9 
10 #include <lib/fconf/fconf.h>
11 
12 #define FCONF_INVALID_IDX	0xFFFFFFFFU
13 
14 /* Dynamic configuration related getter */
15 #define dyn_cfg__dtb_getter(id)	dyn_cfg_dtb_info_getter(id)
16 
17 struct dyn_cfg_dtb_info_t {
18 	uintptr_t config_addr;
19 	uint32_t config_max_size;
20 	unsigned int config_id;
21 	/*
22 	 * Load address in non-secure memory. Only needed by those
23 	 * configuration files which require being loaded in secure
24 	 * memory (at config_addr) as well as in non-secure memory
25 	 * - e.g. HW_CONFIG
26 	 */
27 	uintptr_t ns_config_addr;
28 };
29 
30 unsigned int dyn_cfg_dtb_info_get_index(unsigned int config_id);
31 struct dyn_cfg_dtb_info_t *dyn_cfg_dtb_info_getter(unsigned int config_id);
32 int fconf_populate_dtb_registry(uintptr_t config);
33 
34 /* Set config information in global DTB array */
35 void set_config_info(uintptr_t config_addr, uintptr_t ns_config_addr,
36 		     uint32_t config_max_size,
37 		     unsigned int config_id);
38 
39 #endif /* FCONF_DYN_CFG_GETTER_H */
40