static u32 vcd_flush_in_eos(struct vcd_clnt_ctxt *cctxt, u32 mode) { u32 rc = VCD_S_SUCCESS; VCD_MSG_LOW("vcd_flush_in_eos:"); if (mode > VCD_FLUSH_ALL || !mode) { VCD_MSG_ERROR("Invalid flush mode %d", mode); return VCD_ERR_ILLEGAL_PARM; } VCD_MSG_MED("Flush mode requested %d", mode); if (!(cctxt->status.frame_submitted) && (!cctxt->decoding)) { rc = vcd_flush_buffers(cctxt, mode); if (!VCD_FAILED(rc)) { VCD_MSG_HIGH("All buffers are flushed"); cctxt->status.mask |= (mode & VCD_FLUSH_ALL); vcd_send_flush_done(cctxt, VCD_S_SUCCESS); } } else cctxt->status.mask |= (mode & VCD_FLUSH_ALL); return rc; }
static u32 vcd_flush_in_flushing (struct vcd_clnt_ctxt_type_t *p_cctxt, u32 n_mode) { u32 rc = VCD_S_SUCCESS; VCD_MSG_LOW("vcd_flush_in_flushing:"); rc = vcd_flush_buffers(p_cctxt, n_mode); return rc; }
static u32 vcd_flush_in_flushing (struct vcd_clnt_ctxt *cctxt, u32 mode) { u32 rc = VCD_S_SUCCESS; VCD_MSG_LOW("vcd_flush_in_flushing:"); rc = vcd_flush_buffers(cctxt, mode); return rc; }
static u32 vcd_stop_in_invalid(struct vcd_clnt_ctxt *cctxt) { VCD_MSG_LOW("vcd_stop_in_invalid:"); if (cctxt->status.mask & VCD_CLEANING_UP) { cctxt->status.mask |= VCD_STOP_PENDING; } else { (void) vcd_flush_buffers(cctxt, VCD_FLUSH_ALL); cctxt->callback(VCD_EVT_RESP_STOP, VCD_S_SUCCESS, NULL, 0, cctxt, cctxt->client_data); } return VCD_S_SUCCESS; }
static u32 vcd_stop_in_invalid(struct vcd_clnt_ctxt_type_t *p_cctxt) { VCD_MSG_LOW("vcd_stop_in_invalid:"); if (p_cctxt->status.b_cleaning_up) { p_cctxt->status.b_stop_pending = TRUE; } else { (void) vcd_flush_buffers(p_cctxt, VCD_FLUSH_ALL); p_cctxt->callback(VCD_EVT_RESP_STOP, VCD_S_SUCCESS, NULL, 0, p_cctxt, p_cctxt->p_client_data); } return VCD_S_SUCCESS; }
static u32 vcd_stop_cmn(struct vcd_clnt_ctxt *cctxt) { struct vcd_dev_ctxt *dev_ctxt = cctxt->dev_ctxt; u32 rc = VCD_S_SUCCESS; struct vcd_transc *transc; VCD_MSG_LOW("vcd_stop_cmn in %d:", cctxt->clnt_state.state); rc = vcd_flush_buffers(cctxt, VCD_FLUSH_ALL); VCD_FAILED_RETURN(rc, "Failed: vcd_flush_buffers"); if (!cctxt->status.frame_submitted) { if (vcd_get_command_channel(dev_ctxt, &transc)) { rc = vcd_power_event(dev_ctxt, cctxt, VCD_EVT_PWR_CLNT_CMD_BEGIN); if (!VCD_FAILED(rc)) { transc->type = VCD_CMD_CODEC_STOP; transc->cctxt = cctxt; rc = vcd_submit_cmd_sess_end(transc); } else { VCD_MSG_ERROR("Failed:" " VCD_EVT_PWR_CLNT_CMD_BEGIN"); } if (VCD_FAILED(rc)) { vcd_release_command_channel(dev_ctxt, transc); } } else { vcd_client_cmd_flush_and_en_q(cctxt, VCD_CMD_CODEC_STOP); } } if (VCD_FAILED(rc)) { (void)vcd_power_event(dev_ctxt, cctxt, VCD_EVT_PWR_CLNT_CMD_FAIL); } else { vcd_do_client_state_transition(cctxt, VCD_CLIENT_STATE_STOPPING, CLIENT_STATE_EVENT_NUMBER (stop)); } return rc; }
static u32 vcd_flush_in_invalid(struct vcd_clnt_ctxt *cctxt, u32 mode) { u32 rc = VCD_S_SUCCESS; VCD_MSG_LOW("vcd_flush_in_invalid:"); if (!(cctxt->status.mask & VCD_CLEANING_UP)) { rc = vcd_flush_buffers(cctxt, mode); if (!VCD_FAILED(rc)) { VCD_MSG_HIGH("All buffers are flushed"); cctxt->status.mask |= (mode & VCD_FLUSH_ALL); vcd_send_flush_done(cctxt, VCD_S_SUCCESS); } } return rc; }
static u32 vcd_flush_in_invalid(struct vcd_clnt_ctxt_type_t *p_cctxt, u32 mode) { u32 rc = VCD_S_SUCCESS; VCD_MSG_LOW("vcd_flush_in_invalid:"); if (!p_cctxt->status.b_cleaning_up) { rc = vcd_flush_buffers(p_cctxt, mode); if (!VCD_FAILED(rc)) { VCD_MSG_HIGH("All buffers are flushed"); p_cctxt->status.n_flush_mode = mode; vcd_send_flush_done(p_cctxt, VCD_S_SUCCESS); } } return rc; }
static u32 vcd_flush_cmn(struct vcd_clnt_ctxt *cctxt, u32 mode) { u32 rc = VCD_S_SUCCESS; VCD_MSG_LOW("vcd_flush_cmn in %d:", cctxt->clnt_state.state); rc = vcd_flush_buffers(cctxt, mode); VCD_FAILED_RETURN(rc, "Failed: vcd_flush_buffers"); if (cctxt->status.frame_submitted > 0) { vcd_do_client_state_transition(cctxt, VCD_CLIENT_STATE_FLUSHING, CLIENT_STATE_EVENT_NUMBER (flush)); } else { VCD_MSG_HIGH("All buffers are flushed"); cctxt->status.mask |= (mode & VCD_FLUSH_ALL); vcd_send_flush_done(cctxt, VCD_S_SUCCESS); } return rc; }
static u32 vcd_flush_cmn(struct vcd_clnt_ctxt_type_t *p_cctxt, u32 n_mode) { u32 rc = VCD_S_SUCCESS; VCD_MSG_LOW("vcd_flush_cmn in %d:", p_cctxt->clnt_state.e_state); rc = vcd_flush_buffers(p_cctxt, n_mode); VCD_FAILED_RETURN(rc, "Failed: vcd_flush_buffers"); if (p_cctxt->status.n_frame_submitted > 0) { vcd_do_client_state_transition(p_cctxt, VCD_CLIENT_STATE_FLUSHING, CLIENT_STATE_EVENT_NUMBER (pf_flush)); } else { VCD_MSG_HIGH("All buffers are flushed"); p_cctxt->status.n_flush_mode = n_mode; vcd_send_flush_done(p_cctxt, VCD_S_SUCCESS); } return rc; }