enum ia_css_err ia_css_spctrl_start(sp_ID_t sp_id) { unsigned int HIVE_ADDR_sp_start_isp_entry; #if defined(HAS_SEC_SP) unsigned int HIVE_ADDR_sp1_start_entry; #endif /* HAS_SEC_SP */ if ((sp_id >= N_SP_ID) || ((sp_id < N_SP_ID) && (!spctrl_loaded[sp_id]))) return IA_CSS_ERR_INVALID_ARGUMENTS; if (sp_id == SP0_ID) HIVE_ADDR_sp_start_isp_entry = spctrl_cofig_info[sp_id].sp_entry; #if defined(HAS_SEC_SP) else HIVE_ADDR_sp1_start_entry = spctrl_cofig_info[sp_id].sp_entry; #endif /* HAS_SEC_SP */ #if !defined(C_RUN) && !defined(HRT_UNSCHED) sp_dmem_store(sp_id, spctrl_cofig_info[sp_id].spctrl_config_dmem_addr, &spctrl_cofig_info[sp_id].dmem_config, sizeof(spctrl_cofig_info[sp_id].dmem_config)); #endif if (sp_id == SP0_ID) hrt_cell_start_function(SP, sp_start_isp); #if defined(HAS_SEC_SP) else /* Secondary SP is named as sp1 in the firmware however in SDK secondary SP is named as SP2 */ hrt_cell_start_function(SP2, sp1_start); #endif /* HAS_SEC_SP */ return IA_CSS_SUCCESS; }
enum ia_css_err ia_css_spctrl_start(sp_ID_t sp_id) { unsigned int HIVE_ADDR_sp_start_isp_entry; if ((sp_id >= N_SP_ID) || ((sp_id < N_SP_ID) && (!spctrl_loaded[sp_id]))) return IA_CSS_ERR_INVALID_ARGUMENTS; HIVE_ADDR_sp_start_isp_entry = spctrl_cofig_info[sp_id].sp_entry; #if !defined(C_RUN) && !defined(HRT_UNSCHED) sp_dmem_store(sp_id, spctrl_cofig_info[sp_id].spctrl_config_dmem_addr, &spctrl_cofig_info[sp_id].dmem_config, sizeof(spctrl_cofig_info[sp_id].dmem_config)); #endif hrt_cell_start_function(SP, sp_start_isp); return IA_CSS_SUCCESS; }