xref: /rk3399_ARM-atf/include/plat/arm/common/fconf_ethosn_getter.h (revision 1c65989e70c9734defc666e824628620b2060b92)
176a21174SMikael Olsson /*
276a21174SMikael Olsson  * Copyright (c) 2021, Arm Limited. All rights reserved.
376a21174SMikael Olsson  *
476a21174SMikael Olsson  * SPDX-License-Identifier: BSD-3-Clause
576a21174SMikael Olsson  */
676a21174SMikael Olsson 
776a21174SMikael Olsson #ifndef FCONF_ETHOSN_GETTER_H
876a21174SMikael Olsson #define FCONF_ETHOSN_GETTER_H
976a21174SMikael Olsson 
1076a21174SMikael Olsson #include <assert.h>
1176a21174SMikael Olsson 
1276a21174SMikael Olsson #include <lib/fconf/fconf.h>
1376a21174SMikael Olsson 
1476a21174SMikael Olsson #define hw_config__ethosn_config_getter(prop) ethosn_config.prop
1576a21174SMikael Olsson #define hw_config__ethosn_core_addr_getter(idx) __extension__ ({	\
1676a21174SMikael Olsson 	assert(idx < ethosn_config.num_cores);				\
17*1c65989eSLaurent Carlier 	ethosn_config.core[idx].addr;					\
1876a21174SMikael Olsson })
1976a21174SMikael Olsson 
2076a21174SMikael Olsson #define ETHOSN_STATUS_DISABLED U(0)
2176a21174SMikael Olsson #define ETHOSN_STATUS_ENABLED  U(1)
2276a21174SMikael Olsson 
2376a21174SMikael Olsson #define ETHOSN_CORE_NUM_MAX U(64)
2476a21174SMikael Olsson 
25*1c65989eSLaurent Carlier struct ethosn_core_t {
26*1c65989eSLaurent Carlier 	uint64_t addr;
27*1c65989eSLaurent Carlier };
28*1c65989eSLaurent Carlier 
2976a21174SMikael Olsson struct ethosn_config_t {
3076a21174SMikael Olsson 	uint32_t num_cores;
31*1c65989eSLaurent Carlier 	struct ethosn_core_t core[ETHOSN_CORE_NUM_MAX];
3276a21174SMikael Olsson };
3376a21174SMikael Olsson 
3476a21174SMikael Olsson int fconf_populate_arm_ethosn(uintptr_t config);
3576a21174SMikael Olsson 
3676a21174SMikael Olsson extern struct ethosn_config_t ethosn_config;
3776a21174SMikael Olsson 
3876a21174SMikael Olsson #endif /* FCONF_ETHOSN_GETTER_H */
39