[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <26621fa7-d5b6-3f9c-8bac-7b1657ebfa1d@quicinc.com>
Date: Wed, 30 Apr 2025 16:05:33 +0530
From: Vikash Garodia <quic_vgarodia@...cinc.com>
To: Dikshita Agarwal <quic_dikshita@...cinc.com>,
Abhinav Kumar
<quic_abhinavk@...cinc.com>,
Mauro Carvalho Chehab <mchehab@...nel.org>,
Stefan Schmidt <stefan.schmidt@...aro.org>,
Hans Verkuil
<hverkuil@...all.nl>,
Bjorn Andersson <andersson@...nel.org>,
Konrad Dybcio
<konradybcio@...nel.org>, Rob Herring <robh@...nel.org>,
Krzysztof Kozlowski
<krzk+dt@...nel.org>,
Conor Dooley <conor+dt@...nel.org>
CC: Bryan O'Donoghue <bryan.odonoghue@...aro.org>,
Dmitry Baryshkov
<dmitry.baryshkov@....qualcomm.com>,
Neil Armstrong
<neil.armstrong@...aro.org>,
Nicolas Dufresne
<nicolas.dufresne@...labora.com>,
<linux-media@...r.kernel.org>, <linux-arm-msm@...r.kernel.org>,
<linux-kernel@...r.kernel.org>, <devicetree@...r.kernel.org>
Subject: Re: [PATCH v2 23/23] media: iris: Add codec specific check for VP9
decoder drain handling
On 4/28/2025 2:59 PM, 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.
>
> Signed-off-by: Dikshita Agarwal <quic_dikshita@...cinc.com>
> ---
> 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 837643741dc3..bc63189fc43c 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 01338baf3788..d39226efb3d9 100644
> --- a/drivers/media/platform/qcom/iris/iris_hfi_gen1_response.c
> +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1_response.c
> @@ -349,6 +349,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) {
>
Acked-by: Vikash Garodia <quic_vgarodia@...cinc.com>
Powered by blists - more mailing lists