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