On Fri May 9 14:09:12 2025 +0530, Dikshita Agarwal wrote: > Add a codec specific for the VP9 decoder to ensure that a non-null > buffer is sent to the firmware during drain. The firmware enforces a > check for VP9 decoder that the number of buffers queued and dequeued on > the output plane should match. When a null buffer is sent, the firmware > does not return a response for it, leading to a count mismatch and an > assertion failure from the firmware. > > Acked-by: Vikash Garodia <quic_vgaro...@quicinc.com> > Tested-by: Neil Armstrong <neil.armstr...@linaro.org> # on SM8550-QRD > Tested-by: Neil Armstrong <neil.armstr...@linaro.org> # on SM8550-HDK > Tested-by: Neil Armstrong <neil.armstr...@linaro.org> # on SM8650-QRD > Tested-by: Neil Armstrong <neil.armstr...@linaro.org> # on SM8650-HDK > Signed-off-by: Dikshita Agarwal <quic_diksh...@quicinc.com> > Tested-by: Vikash Garodia <quic_vgaro...@quicinc.com> # on sa8775p-ride > Signed-off-by: Bryan O'Donoghue <b...@kernel.org> > Signed-off-by: Hans Verkuil <hverk...@xs4all.nl>
Patch committed. Thanks, Hans Verkuil drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c | 2 ++ drivers/media/platform/qcom/iris/iris_hfi_gen1_response.c | 4 ++++ 2 files changed, 6 insertions(+) --- diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c b/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c index 2e3f5a6b2ff1..5fc30d54af4d 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c @@ -401,6 +401,8 @@ static int iris_hfi_gen1_session_drain(struct iris_inst *inst, u32 plane) ip_pkt.shdr.hdr.pkt_type = HFI_CMD_SESSION_EMPTY_BUFFER; ip_pkt.shdr.session_id = inst->session_id; ip_pkt.flags = HFI_BUFFERFLAG_EOS; + if (inst->codec == V4L2_PIX_FMT_VP9) + ip_pkt.packet_buffer = 0xdeadb000; return iris_hfi_queue_cmd_write(inst->core, &ip_pkt, ip_pkt.shdr.hdr.size); } diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen1_response.c b/drivers/media/platform/qcom/iris/iris_hfi_gen1_response.c index 926acee1f48c..8d1ce8a19a45 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen1_response.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1_response.c @@ -348,6 +348,10 @@ static void iris_hfi_gen1_session_etb_done(struct iris_inst *inst, void *packet) struct iris_buffer *buf = NULL; bool found = false; + /* EOS buffer sent via drain won't be in v4l2 buffer list */ + if (pkt->packet_buffer == 0xdeadb000) + return; + v4l2_m2m_for_each_src_buf_safe(m2m_ctx, m2m_buffer, n) { buf = to_iris_buffer(&m2m_buffer->vb); if (buf->index == pkt->input_tag) {