mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 17:13:52 +02:00
media: iris: Fix buffer preparation failure during resolution change
When the resolution changes, the driver internally updates the width and
height, but the client continue to queue buffers with the older
resolution until the last flag is received. This results in a mismatch
when the buffers are prepared, causing failure due to outdated size.
Introduce a check to prevent size validation during buffer preparation
if a resolution reconfiguration is in progress, to handle this.
Cc: stable@vger.kernel.org
Fixes: 17f2a485ca ("media: iris: implement vb2 ops for buf_queue and firmware response")
Reviewed-by: Vikash Garodia <quic_vgarodia@quicinc.com>
Tested-by: Neil Armstrong <neil.armstrong@linaro.org> # on SM8550-QRD
Tested-by: Neil Armstrong <neil.armstrong@linaro.org> # on SM8550-HDK
Tested-by: Neil Armstrong <neil.armstrong@linaro.org> # on SM8650-QRD
Tested-by: Neil Armstrong <neil.armstrong@linaro.org> # on SM8650-HDK
Signed-off-by: Dikshita Agarwal <quic_dikshita@quicinc.com>
Tested-by: Vikash Garodia <quic_vgarodia@quicinc.com> # on sa8775p-ride
Signed-off-by: Bryan O'Donoghue <bod@kernel.org>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
This commit is contained in:
parent
9bf58db157
commit
91c6d55b47
|
|
@ -259,13 +259,14 @@ int iris_vb2_buf_prepare(struct vb2_buffer *vb)
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (vb->type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE &&
|
||||
vb2_plane_size(vb, 0) < iris_get_buffer_size(inst, BUF_OUTPUT))
|
||||
return -EINVAL;
|
||||
if (vb->type == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE &&
|
||||
vb2_plane_size(vb, 0) < iris_get_buffer_size(inst, BUF_INPUT))
|
||||
return -EINVAL;
|
||||
|
||||
if (!(inst->sub_state & IRIS_INST_SUB_DRC)) {
|
||||
if (vb->type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE &&
|
||||
vb2_plane_size(vb, 0) < iris_get_buffer_size(inst, BUF_OUTPUT))
|
||||
return -EINVAL;
|
||||
if (vb->type == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE &&
|
||||
vb2_plane_size(vb, 0) < iris_get_buffer_size(inst, BUF_INPUT))
|
||||
return -EINVAL;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user