Merge "video: driver: update proper state in vb2_buffer_done"
This commit is contained in:

committed by
Gerrit - the friendly Code Review server

commit
992a58254f
@@ -3059,7 +3059,7 @@ int msm_vidc_release_internal_buffers(struct msm_vidc_inst *inst,
|
||||
int msm_vidc_vb2_buffer_done(struct msm_vidc_inst *inst,
|
||||
struct msm_vidc_buffer *buf)
|
||||
{
|
||||
int type, port;
|
||||
int type, port, state;
|
||||
struct vb2_queue *q;
|
||||
struct vb2_buffer *vb2;
|
||||
struct vb2_v4l2_buffer *vbuf;
|
||||
@@ -3096,11 +3096,21 @@ int msm_vidc_vb2_buffer_done(struct msm_vidc_inst *inst,
|
||||
print_vidc_buffer(VIDC_ERR, "err ", "vb2 not found for", inst, buf);
|
||||
return -EINVAL;
|
||||
}
|
||||
/**
|
||||
* v4l2 clears buffer state related flags. For driver errors
|
||||
* send state as error to avoid skipping V4L2_BUF_FLAG_ERROR
|
||||
* flag at v4l2 side.
|
||||
*/
|
||||
if (buf->flags & MSM_VIDC_BUF_FLAG_ERROR)
|
||||
state = VB2_BUF_STATE_ERROR;
|
||||
else
|
||||
state = VB2_BUF_STATE_DONE;
|
||||
|
||||
vbuf = to_vb2_v4l2_buffer(vb2);
|
||||
vbuf->flags = buf->flags;
|
||||
vb2->timestamp = buf->timestamp;
|
||||
vb2->planes[0].bytesused = buf->data_size + vb2->planes[0].data_offset;
|
||||
vb2_buffer_done(vb2, VB2_BUF_STATE_DONE);
|
||||
vb2_buffer_done(vb2, state);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user