mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-18 18:44:22 +00:00

The FCONF parsing of the HW_CONFIG for the Arm(R) Ethos(TM)-N NPU now supports reading the address of the reserved memory setup for the NPU so the address can be used in the SiP service for the NPU. Change-Id: I0968255a966e84896b00ea935d6aa3d5232c5f7b Signed-off-by: Mikael Olsson <mikael.olsson@arm.com>
64 lines
1.5 KiB
C
64 lines
1.5 KiB
C
/*
|
|
* Copyright (c) 2021-2023, Arm Limited. All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
#ifndef FCONF_ETHOSN_GETTER_H
|
|
#define FCONF_ETHOSN_GETTER_H
|
|
|
|
#include <assert.h>
|
|
#include <stdbool.h>
|
|
|
|
#include <lib/fconf/fconf.h>
|
|
|
|
#define hw_config__ethosn_config_getter(prop) ethosn_config.prop
|
|
#define hw_config__ethosn_device_getter(dev_idx) __extension__ ({ \
|
|
assert(dev_idx < ethosn_config.num_devices); \
|
|
ðosn_config.devices[dev_idx]; \
|
|
})
|
|
|
|
#define ETHOSN_DEV_NUM_MAX U(2)
|
|
#define ETHOSN_DEV_CORE_NUM_MAX U(8)
|
|
#define ETHOSN_DEV_ASSET_ALLOCATOR_NUM_MAX U(16)
|
|
|
|
struct ethosn_allocator_t {
|
|
uint32_t stream_id;
|
|
};
|
|
|
|
struct ethosn_main_allocator_t {
|
|
struct ethosn_allocator_t firmware;
|
|
struct ethosn_allocator_t working_data;
|
|
};
|
|
|
|
struct ethosn_asset_allocator_t {
|
|
struct ethosn_allocator_t command_stream;
|
|
struct ethosn_allocator_t weight_data;
|
|
struct ethosn_allocator_t buffer_data;
|
|
struct ethosn_allocator_t intermediate_data;
|
|
};
|
|
|
|
struct ethosn_core_t {
|
|
uint64_t addr;
|
|
struct ethosn_main_allocator_t main_allocator;
|
|
};
|
|
|
|
struct ethosn_device_t {
|
|
bool has_reserved_memory;
|
|
uint64_t reserved_memory_addr;
|
|
uint32_t num_cores;
|
|
struct ethosn_core_t cores[ETHOSN_DEV_CORE_NUM_MAX];
|
|
uint32_t num_allocators;
|
|
struct ethosn_asset_allocator_t asset_allocators[ETHOSN_DEV_ASSET_ALLOCATOR_NUM_MAX];
|
|
};
|
|
|
|
struct ethosn_config_t {
|
|
uint32_t num_devices;
|
|
struct ethosn_device_t devices[ETHOSN_DEV_NUM_MAX];
|
|
};
|
|
|
|
int fconf_populate_arm_ethosn(uintptr_t config);
|
|
|
|
extern struct ethosn_config_t ethosn_config;
|
|
|
|
#endif /* FCONF_ETHOSN_GETTER_H */
|