static void sh_css_store_sp_per_frame_data(enum sh_css_pipe_id pipe_id, const struct sh_css_fw_info *sp_fw) { if (!sp_fw) sp_fw = &sh_css_sp_fw; store_sp_stage_data(pipe_id, 0); store_sp_group_data(); store_sp_per_frame_data(sp_fw); }
static void sh_css_store_sp_per_frame_data(enum ia_css_pipe_id pipe_id, unsigned int pipe_num, const struct ia_css_fw_info *sp_fw) { if (!sp_fw) sp_fw = &sh_css_sp_fw; store_sp_stage_data(pipe_id, pipe_num, 0); store_sp_group_data(); store_sp_per_frame_data(sp_fw); }
void sh_css_sp_start_isp(void) { const struct ia_css_fw_info *fw; unsigned int HIVE_ADDR_sp_sw_state; fw = &sh_css_sp_fw; HIVE_ADDR_sp_sw_state = fw->info.sp.sw_state; if (sp_running) return; (void)HIVE_ADDR_sp_sw_state; /* Suppres warnings in CRUN */ /* no longer here, sp started immediately */ /*sh_css_debug_pipe_graph_dump_epilogue();*/ store_sp_group_data(); store_sp_per_frame_data(fw); sp_dmem_store_uint32(SP0_ID, (unsigned int)sp_address_of(sp_sw_state), (uint32_t)(SP_SW_STATE_NULL)); //init_host2sp_command(); /* Note 1: The sp_start_isp function contains a wait till * the input network is configured by the SP. * Note 2: Not all SP binaries supports host2sp_commands. * In case a binary does support it, the host2sp_command * will have status cmd_ready after return of the function * sh_css_hrt_sp_start_isp. There is no race-condition here * because only after the process_frame command has been * received, the SP starts configuring the input network. */ ia_css_mmu_invalidate_cache(); sh_css_hrt_sp_start_isp(); sp_running = true; }