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;
}