1 /* 2 * Copyright (c) 2023-2024, Arm Limited. All rights reserved. 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 * 6 */ 7 8 #ifndef __NI_TOWER_RSE_DRV_H__ 9 #define __NI_TOWER_RSE_DRV_H__ 10 11 #include <stdbool.h> 12 #include <stdint.h> 13 14 #include "ni_tower_drv.h" 15 #include "apu/ni_tower_apu_drv.h" 16 #include "discovery/ni_tower_discovery_drv.h" 17 #include "psam/ni_tower_psam_drv.h" 18 19 /** 20 * \brief NI-Tower PSAM config structure 21 */ 22 struct ni_tower_psam_cfgs { 23 /* Pointer to the PSAM device configuration */ 24 const struct ni_tower_component_node* component; 25 /* Number of non-hashed regions that needs to be configured */ 26 const uint32_t nh_region_count; 27 /* List of all region configuration information */ 28 const struct ni_tower_psam_reg_cfg_info* regions; 29 /* Whether to add chip address offset to the memory map regions */ 30 const bool add_chip_addr_offset; 31 }; 32 33 /** 34 * \brief NI-Tower APU config structure 35 */ 36 struct ni_tower_apu_cfgs { 37 /* Pointer to the APU device configuration */ 38 const struct ni_tower_component_node* component; 39 /* Number of address regions that needs to be configured */ 40 const uint32_t region_count; 41 /* List of all region configuration information */ 42 const struct ni_tower_apu_reg_cfg_info* regions; 43 /* Whether to add chip address offset to the memory map regions */ 44 const bool add_chip_addr_offset; 45 }; 46 47 /** 48 * \brief Program NI-Tower PSAM from PSAM configs 49 * 50 * \param[in] dev NI-Tower struct \ref ni_tower_dev. 51 * \param[in] psam_table Array of all PSAM configs for a particular 52 * NI-Tower \ref ni_tower_psam_cfgs. 53 * \param[in] psam_table_count Number of PSAM that needs to be configured. 54 * 55 * \return Returns error code as specified in \ref ni_tower_err 56 */ 57 enum ni_tower_err ni_tower_program_psam_table( 58 const struct ni_tower_dev *dev, 59 const struct ni_tower_psam_cfgs psam_table[], 60 const uint32_t psam_table_count); 61 62 /** 63 * \brief Program NI-Tower APU from APU configs 64 * 65 * \param[in] dev NI-Tower struct \ref ni_tower_dev. 66 * \param[in] apu_table Array of all APU configs for a particular 67 * NI-Tower \ref ni_tower_apu_cfgs. 68 * \param[in] apu_table_count Number of APUs that needs to be configured. 69 * 70 * \return Returns error code as specified in \ref ni_tower_err 71 */ 72 enum ni_tower_err ni_tower_program_apu_table( 73 const struct ni_tower_dev *dev, 74 const struct ni_tower_apu_cfgs apu_table[], 75 const uint32_t apu_table_count); 76 77 #endif /* __NI_TOWER_RSE_DRV_H__ */ 78