static void ddl_eos_done_callback(struct ddl_context_type *p_ddl_context) { struct ddl_client_context_type *p_ddl = p_ddl_context->p_current_ddl; u32 n_displaystatus; if (!DDLCOMMAND_STATE_IS(p_ddl_context, DDL_CMD_EOS)) { VIDC_LOGERR_STRING("UNKWN_EOSDONE"); ddl_client_fatal_cb(p_ddl_context); return; } if (!p_ddl || !p_ddl->b_decoding || !DDLCLIENT_STATE_IS(p_ddl, DDL_CLIENT_WAIT_FOR_EOS_DONE) ) { VIDC_LOG_STRING("STATE-CRITICAL-EOSDONE"); ddl_client_fatal_cb(p_ddl_context); return; } ddl_move_command_state(p_ddl_context, DDL_CMD_INVALID); vidc_720p_eos_info(&n_displaystatus); if ((enum vidc_720p_display_status_type)n_displaystatus != VIDC_720P_EMPTY_BUFFER) { VIDC_LOG_STRING("EOSDONE-EMPTYBUF-ISSUE"); } ddl_decode_dynamic_property(p_ddl, FALSE); ddl_move_client_state(p_ddl, DDL_CLIENT_WAIT_FOR_FRAME); VIDC_LOG_STRING("EOS_DONE"); p_ddl_context->ddl_callback(VCD_EVT_RESP_EOS_DONE, VCD_S_SUCCESS, NULL, 0, (u32 *) p_ddl, p_ddl_context->p_client_data); DDL_IDLE(p_ddl_context); }
static void ddl_sys_init_done_callback(struct ddl_context *ddl_context, u32 fw_size) { u32 vcd_status = VCD_S_SUCCESS; u8 *fw_ver; DDL_MSG_MED("ddl_sys_init_done_callback"); if (!DDLCOMMAND_STATE_IS(ddl_context, DDL_CMD_DMA_INIT)) { DDL_MSG_ERROR("UNKNOWN_SYS_INIT_DONE"); } else { ddl_context->cmd_state = DDL_CMD_INVALID; DDL_MSG_LOW("SYS_INIT_DONE"); vidc_1080p_get_fw_version(&ddl_context->fw_version); fw_ver = (u8 *)&ddl_context->fw_version; DDL_MSG_ERROR("fw_version %x:%x:20%x", fw_ver[1]&0xFF, fw_ver[0]&0xFF, fw_ver[2]&0xFF); if (ddl_context->fw_memory_size >= fw_size) { ddl_context->device_state = DDL_DEVICE_INITED; vcd_status = VCD_S_SUCCESS; } else vcd_status = VCD_ERR_FAIL; ddl_context->ddl_callback(VCD_EVT_RESP_DEVICE_INIT, vcd_status, NULL, 0, NULL, ddl_context->client_data); DDL_IDLE(ddl_context); } }
static void ddl_dma_done_callback(struct ddl_context *ddl_context) { if (!DDLCOMMAND_STATE_IS(ddl_context, DDL_CMD_DMA_INIT)) { VIDC_LOGERR_STRING("UNKWN_DMADONE"); return; } ddl_move_command_state(ddl_context, DDL_CMD_INVALID); VIDC_LOG_STRING("DMA_DONE"); ddl_core_start_cpu(ddl_context); }
static void ddl_fw_status_done_callback(struct ddl_context_type *p_ddl_context) { DDL_MSG_MED("ddl_fw_status_done_callback"); if (!DDLCOMMAND_STATE_IS(p_ddl_context, DDL_CMD_DMA_INIT)) { DDL_MSG_ERROR("UNKWN_DMADONE"); } else { DDL_MSG_LOW("FW_STATUS_DONE"); vidc_1080p_set_host2risc_cmd(VIDC_1080P_HOST2RISC_CMD_SYS_INIT, p_ddl_context->n_fw_ctxt_memory_size, 0, 0, 0); } }
static u32 ddl_eos_done_callback(struct ddl_context *ddl_context) { struct ddl_client_context *ddl = ddl_context->current_ddl; u32 displaystatus, resl_change; if (!DDLCOMMAND_STATE_IS(ddl_context, DDL_CMD_EOS)) { VIDC_LOGERR_STRING("UNKWN_EOSDONE"); ddl_client_fatal_cb(ddl_context); return true; } if (!ddl || !ddl->decoding || !DDLCLIENT_STATE_IS(ddl, DDL_CLIENT_WAIT_FOR_EOS_DONE) ) { VIDC_LOG_STRING("STATE-CRITICAL-EOSDONE"); ddl_client_fatal_cb(ddl_context); return true; } ddl_move_command_state(ddl_context, DDL_CMD_INVALID); vidc_720p_eos_info(&displaystatus, &resl_change); if ((enum vidc_720p_display_status)displaystatus != VIDC_720P_EMPTY_BUFFER) { VIDC_LOG_STRING("EOSDONE-EMPTYBUF-ISSUE"); } ddl_decode_dynamic_property(ddl, false); if (resl_change == 0x1) { ddl->codec_data.decoder.header_in_start = false; ddl->codec_data.decoder.decode_config.sequence_header = ddl->input_frame.vcd_frm.physical; ddl->codec_data.decoder.decode_config.sequence_header_len = ddl->input_frame.vcd_frm.data_len; ddl_decode_init_codec(ddl); return false; } ddl_move_client_state(ddl, DDL_CLIENT_WAIT_FOR_FRAME); VIDC_LOG_STRING("EOS_DONE"); ddl_context->ddl_callback(VCD_EVT_RESP_EOS_DONE, VCD_S_SUCCESS, NULL, 0, (u32 *) ddl, ddl_context->client_data); DDL_IDLE(ddl_context); return true; }
static void ddl_sys_init_done_callback(struct ddl_context_type *p_ddl_context, u32 n_fw_size) { u32 vcd_status = VCD_S_SUCCESS; DDL_MSG_MED("ddl_sys_init_done_callback"); if (!DDLCOMMAND_STATE_IS(p_ddl_context, DDL_CMD_DMA_INIT)) { DDL_MSG_ERROR("UNKNOWN_SYS_INIT_DONE"); } else { p_ddl_context->e_cmd_state = DDL_CMD_INVALID; DDL_MSG_LOW("SYS_INIT_DONE"); vidc_1080p_get_fw_version(&p_ddl_context->n_fw_version); if (p_ddl_context->n_fw_memory_size >= n_fw_size) { p_ddl_context->n_device_state = DDL_DEVICE_INITED; vcd_status = VCD_S_SUCCESS; } else vcd_status = VCD_ERR_FAIL; p_ddl_context->ddl_callback(VCD_EVT_RESP_DEVICE_INIT, vcd_status, NULL, 0, NULL, p_ddl_context->p_client_data); DDL_IDLE(p_ddl_context); } }