xref: /rk3399_ARM-atf/include/plat/arm/common/fconf_ethosn_getter.h (revision 1142b38f1de53116b8e9231420363b4ad8bc0f9c)
176a21174SMikael Olsson /*
2*a19a0241SMikael Olsson  * Copyright (c) 2021-2023, 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>
11b139f1cfSMikael Olsson #include <stdbool.h>
1276a21174SMikael Olsson 
1376a21174SMikael Olsson #include <lib/fconf/fconf.h>
1476a21174SMikael Olsson 
1576a21174SMikael Olsson #define hw_config__ethosn_config_getter(prop) ethosn_config.prop
16b139f1cfSMikael Olsson #define hw_config__ethosn_device_getter(dev_idx) __extension__ ({	\
17b139f1cfSMikael Olsson 	assert(dev_idx < ethosn_config.num_devices);			\
18b139f1cfSMikael Olsson 	&ethosn_config.devices[dev_idx];				\
1976a21174SMikael Olsson })
2076a21174SMikael Olsson 
21b139f1cfSMikael Olsson #define ETHOSN_DEV_NUM_MAX U(2)
22b139f1cfSMikael Olsson #define ETHOSN_DEV_CORE_NUM_MAX U(8)
23b139f1cfSMikael Olsson #define ETHOSN_DEV_ASSET_ALLOCATOR_NUM_MAX U(16)
2476a21174SMikael Olsson 
25b139f1cfSMikael Olsson struct ethosn_allocator_t {
26b139f1cfSMikael Olsson 	uint32_t stream_id;
27b139f1cfSMikael Olsson };
28b139f1cfSMikael Olsson 
29b139f1cfSMikael Olsson struct ethosn_main_allocator_t {
30b139f1cfSMikael Olsson 	struct ethosn_allocator_t firmware;
31b139f1cfSMikael Olsson 	struct ethosn_allocator_t working_data;
32b139f1cfSMikael Olsson };
33b139f1cfSMikael Olsson 
34b139f1cfSMikael Olsson struct ethosn_asset_allocator_t {
35b139f1cfSMikael Olsson 	struct ethosn_allocator_t command_stream;
36b139f1cfSMikael Olsson 	struct ethosn_allocator_t weight_data;
37b139f1cfSMikael Olsson 	struct ethosn_allocator_t buffer_data;
38b139f1cfSMikael Olsson 	struct ethosn_allocator_t intermediate_data;
39b139f1cfSMikael Olsson };
4076a21174SMikael Olsson 
411c65989eSLaurent Carlier struct ethosn_core_t {
421c65989eSLaurent Carlier 	uint64_t addr;
43b139f1cfSMikael Olsson 	struct ethosn_main_allocator_t main_allocator;
44b139f1cfSMikael Olsson };
45b139f1cfSMikael Olsson 
46b139f1cfSMikael Olsson struct ethosn_device_t {
47b139f1cfSMikael Olsson 	bool has_reserved_memory;
48*a19a0241SMikael Olsson 	uint64_t reserved_memory_addr;
49b139f1cfSMikael Olsson 	uint32_t num_cores;
50b139f1cfSMikael Olsson 	struct ethosn_core_t cores[ETHOSN_DEV_CORE_NUM_MAX];
51b139f1cfSMikael Olsson 	uint32_t num_allocators;
52b139f1cfSMikael Olsson 	struct ethosn_asset_allocator_t asset_allocators[ETHOSN_DEV_ASSET_ALLOCATOR_NUM_MAX];
531c65989eSLaurent Carlier };
541c65989eSLaurent Carlier 
5576a21174SMikael Olsson struct ethosn_config_t {
56b139f1cfSMikael Olsson 	uint32_t num_devices;
57b139f1cfSMikael Olsson 	struct ethosn_device_t devices[ETHOSN_DEV_NUM_MAX];
5876a21174SMikael Olsson };
5976a21174SMikael Olsson 
6076a21174SMikael Olsson extern struct ethosn_config_t ethosn_config;
6176a21174SMikael Olsson 
6276a21174SMikael Olsson #endif /* FCONF_ETHOSN_GETTER_H */
63