summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@quicinc.com>2017-06-13 08:48:39 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2017-06-13 08:48:38 -0700
commit4d3e69274e1e82605ad612aaf22e04b97d446635 (patch)
treece8319edbff24720e33ec16c21151e37ed1c5e31
parent650bcc069bf794c2b6f6934e007691d526ae9526 (diff)
parent7203cff502736dc71b1e5f0267ffb071c85a1424 (diff)
Merge "msm: vidc: Return only active state VBs during flush"
-rw-r--r--drivers/media/platform/msm/vidc/msm_vdec.c6
-rw-r--r--drivers/media/platform/msm/vidc/msm_venc.c6
-rw-r--r--drivers/media/platform/msm/vidc/msm_vidc_common.c13
3 files changed, 17 insertions, 8 deletions
diff --git a/drivers/media/platform/msm/vidc/msm_vdec.c b/drivers/media/platform/msm/vidc/msm_vdec.c
index 8ac84ece2c2a..3b5fbea512ba 100644
--- a/drivers/media/platform/msm/vidc/msm_vdec.c
+++ b/drivers/media/platform/msm/vidc/msm_vdec.c
@@ -1781,8 +1781,10 @@ static int msm_vdec_start_streaming(struct vb2_queue *q, unsigned int count)
if (inst->state == MSM_VIDC_CORE_INVALID ||
inst->core->state == VIDC_CORE_INVALID ||
- inst->core->state == VIDC_CORE_UNINIT)
- return -EINVAL;
+ inst->core->state == VIDC_CORE_UNINIT) {
+ rc = -EINVAL;
+ goto stream_start_failed;
+ }
hdev = inst->core->device;
dprintk(VIDC_DBG, "Streamon called on: %d capability for inst: %pK\n",
diff --git a/drivers/media/platform/msm/vidc/msm_venc.c b/drivers/media/platform/msm/vidc/msm_venc.c
index cdf91dd80ed3..a4cd4e34c7d0 100644
--- a/drivers/media/platform/msm/vidc/msm_venc.c
+++ b/drivers/media/platform/msm/vidc/msm_venc.c
@@ -1908,8 +1908,10 @@ static int msm_venc_start_streaming(struct vb2_queue *q, unsigned int count)
if (inst->state == MSM_VIDC_CORE_INVALID ||
inst->core->state == VIDC_CORE_INVALID ||
- inst->core->state == VIDC_CORE_UNINIT)
- return -EINVAL;
+ inst->core->state == VIDC_CORE_UNINIT) {
+ rc = -EINVAL;
+ goto stream_start_failed;
+ }
dprintk(VIDC_DBG, "Streamon called on: %d capability for inst: %pK\n",
q->type, inst);
diff --git a/drivers/media/platform/msm/vidc/msm_vidc_common.c b/drivers/media/platform/msm/vidc/msm_vidc_common.c
index 7b28e80979f2..fc817dc57351 100644
--- a/drivers/media/platform/msm/vidc/msm_vidc_common.c
+++ b/drivers/media/platform/msm/vidc/msm_vidc_common.c
@@ -4524,10 +4524,15 @@ static void msm_comm_flush_in_invalid_state(struct msm_vidc_inst *inst)
struct vb2_buffer *vb = container_of(ptr,
struct vb2_buffer, queued_entry);
- vb->planes[0].bytesused = 0;
- vb->planes[0].data_offset = 0;
-
- vb2_buffer_done(vb, VB2_BUF_STATE_DONE);
+ if (vb->state == VB2_BUF_STATE_ACTIVE) {
+ vb->planes[0].bytesused = 0;
+ vb->planes[0].data_offset = 0;
+ vb2_buffer_done(vb, VB2_BUF_STATE_DONE);
+ } else {
+ dprintk(VIDC_WARN,
+ "%s VB is in state %d not in ACTIVE state\n"
+ , __func__, vb->state);
+ }
}
mutex_unlock(&inst->bufq[port].lock);
}