mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 00:34:52 +00:00
media: vim2m: add buf_out_validate callback
Validate the field for an output buffer. This ensures that the field is validated when the buffer is queued to a request, and not when the request itself is queued, which is too late. Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
This commit is contained in:
parent
28d77c21cb
commit
ab7afaf332
1 changed files with 16 additions and 11 deletions
|
@ -743,25 +743,29 @@ static int vim2m_queue_setup(struct vb2_queue *vq,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int vim2m_buf_prepare(struct vb2_buffer *vb)
|
||||
static int vim2m_buf_out_validate(struct vb2_buffer *vb)
|
||||
{
|
||||
struct vb2_v4l2_buffer *vbuf = to_vb2_v4l2_buffer(vb);
|
||||
struct vim2m_ctx *ctx = vb2_get_drv_priv(vb->vb2_queue);
|
||||
|
||||
if (vbuf->field == V4L2_FIELD_ANY)
|
||||
vbuf->field = V4L2_FIELD_NONE;
|
||||
if (vbuf->field != V4L2_FIELD_NONE) {
|
||||
dprintk(ctx->dev, "%s field isn't supported\n", __func__);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int vim2m_buf_prepare(struct vb2_buffer *vb)
|
||||
{
|
||||
struct vim2m_ctx *ctx = vb2_get_drv_priv(vb->vb2_queue);
|
||||
struct vim2m_q_data *q_data;
|
||||
|
||||
dprintk(ctx->dev, "type: %d\n", vb->vb2_queue->type);
|
||||
|
||||
q_data = get_q_data(ctx, vb->vb2_queue->type);
|
||||
if (V4L2_TYPE_IS_OUTPUT(vb->vb2_queue->type)) {
|
||||
if (vbuf->field == V4L2_FIELD_ANY)
|
||||
vbuf->field = V4L2_FIELD_NONE;
|
||||
if (vbuf->field != V4L2_FIELD_NONE) {
|
||||
dprintk(ctx->dev, "%s field isn't supported\n",
|
||||
__func__);
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (vb2_plane_size(vb, 0) < q_data->sizeimage) {
|
||||
dprintk(ctx->dev, "%s data will not fit into plane (%lu < %lu)\n",
|
||||
__func__, vb2_plane_size(vb, 0), (long)q_data->sizeimage);
|
||||
|
@ -822,6 +826,7 @@ static void vim2m_buf_request_complete(struct vb2_buffer *vb)
|
|||
|
||||
static const struct vb2_ops vim2m_qops = {
|
||||
.queue_setup = vim2m_queue_setup,
|
||||
.buf_out_validate = vim2m_buf_out_validate,
|
||||
.buf_prepare = vim2m_buf_prepare,
|
||||
.buf_queue = vim2m_buf_queue,
|
||||
.start_streaming = vim2m_start_streaming,
|
||||
|
|
Loading…
Add table
Reference in a new issue