From: Dikshita Agarwal <quic_dikshita@quicinc.com>
To: Vikash Garodia <quic_vgarodia@quicinc.com>,
Abhinav Kumar <quic_abhinavk@quicinc.com>,
Mauro Carvalho Chehab <mchehab@kernel.org>,
Stefan Schmidt <stefan.schmidt@linaro.org>,
Hans Verkuil <hverkuil@xs4all.nl>,
Bjorn Andersson <andersson@kernel.org>,
Konrad Dybcio <konradybcio@kernel.org>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>
Cc: Bryan O'Donoghue <bryan.odonoghue@linaro.org>,
Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>,
Neil Armstrong <neil.armstrong@linaro.org>,
Nicolas Dufresne <nicolas.dufresne@collabora.com>,
<linux-media@vger.kernel.org>, <linux-arm-msm@vger.kernel.org>,
<linux-kernel@vger.kernel.org>, <devicetree@vger.kernel.org>,
Dikshita Agarwal <quic_dikshita@quicinc.com>,
<20250417-topic-sm8x50-iris-v10-v7-0-f020cb1d0e98@linaro.org>,
<20250424-qcs8300_iris-v5-0-f118f505c300@quicinc.com>,
<stable@vger.kernel.org>
Subject: [PATCH v2 04/23] media: iris: Avoid updating frame size to firmware during reconfig
Date: Mon, 28 Apr 2025 14:58:52 +0530 [thread overview]
Message-ID: <20250428-qcom-iris-hevc-vp9-v2-4-3a6013ecb8a5@quicinc.com> (raw)
In-Reply-To: <20250428-qcom-iris-hevc-vp9-v2-0-3a6013ecb8a5@quicinc.com>
During reconfig, the firmware sends the resolution aligned to 8 bytes.
If the driver sends the same resolution back to the firmware the resolution
will be aligned to 16 bytes not 8.
The alignment mismatch would then subsequently cause the firmware to
send another redundant sequence change.
Fix this by not setting the resolution property during reconfig.
Cc: stable@vger.kernel.org
Fixes: 3a19d7b9e08b ("media: iris: implement set properties to firmware during streamon")
Signed-off-by: Dikshita Agarwal <quic_dikshita@quicinc.com>
---
drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c | 15 ++++++++-------
drivers/media/platform/qcom/iris/iris_hfi_gen1_response.c | 1 +
drivers/media/platform/qcom/iris/iris_hfi_gen2_response.c | 1 +
drivers/media/platform/qcom/iris/iris_instance.h | 2 ++
drivers/media/platform/qcom/iris/iris_vdec.c | 1 +
5 files changed, 13 insertions(+), 7 deletions(-)
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 64f887d9a17d..2239708d2d7e 100644
--- a/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c
+++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c
@@ -546,14 +546,15 @@ static int iris_hfi_gen1_set_resolution(struct iris_inst *inst)
struct hfi_framesize fs;
int ret;
- fs.buffer_type = HFI_BUFFER_INPUT;
- fs.width = inst->fmt_src->fmt.pix_mp.width;
- fs.height = inst->fmt_src->fmt.pix_mp.height;
-
- ret = hfi_gen1_set_property(inst, ptype, &fs, sizeof(fs));
- if (ret)
- return ret;
+ if (!inst->in_reconfig) {
+ fs.buffer_type = HFI_BUFFER_INPUT;
+ fs.width = inst->fmt_src->fmt.pix_mp.width;
+ fs.height = inst->fmt_src->fmt.pix_mp.height;
+ ret = hfi_gen1_set_property(inst, ptype, &fs, sizeof(fs));
+ if (ret)
+ return ret;
+ }
fs.buffer_type = HFI_BUFFER_OUTPUT2;
fs.width = inst->fmt_dst->fmt.pix_mp.width;
fs.height = inst->fmt_dst->fmt.pix_mp.height;
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 91d95eed68aa..6576496fdbdf 100644
--- a/drivers/media/platform/qcom/iris/iris_hfi_gen1_response.c
+++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1_response.c
@@ -155,6 +155,7 @@ static void iris_hfi_gen1_read_changed_params(struct iris_inst *inst,
inst->crop.height = event.height;
}
+ inst->in_reconfig = true;
inst->fw_min_count = event.buf_count;
inst->buffers[BUF_OUTPUT].min_count = iris_vpu_buf_count(inst, BUF_OUTPUT);
inst->buffers[BUF_OUTPUT].size = pixmp_op->plane_fmt[0].sizeimage;
diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen2_response.c b/drivers/media/platform/qcom/iris/iris_hfi_gen2_response.c
index b75a01641d5d..0e889d07e997 100644
--- a/drivers/media/platform/qcom/iris/iris_hfi_gen2_response.c
+++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2_response.c
@@ -508,6 +508,7 @@ static void iris_hfi_gen2_read_input_subcr_params(struct iris_inst *inst)
struct vb2_queue *dst_q;
struct v4l2_ctrl *ctrl;
+ inst->in_reconfig = true;
subsc_params = inst_hfi_gen2->src_subcr_params;
width = (subsc_params.bitstream_resolution &
HFI_BITMASK_BITSTREAM_WIDTH) >> 16;
diff --git a/drivers/media/platform/qcom/iris/iris_instance.h b/drivers/media/platform/qcom/iris/iris_instance.h
index caa3c6507006..a893751766ca 100644
--- a/drivers/media/platform/qcom/iris/iris_instance.h
+++ b/drivers/media/platform/qcom/iris/iris_instance.h
@@ -42,6 +42,7 @@
* @sequence_out: a sequence counter for output queue
* @tss: timestamp metadata
* @metadata_idx: index for metadata buffer
+ * @in_reconfig: a flag raised by decoder when the stream resolution changes
*/
struct iris_inst {
@@ -72,6 +73,7 @@ struct iris_inst {
u32 sequence_out;
struct iris_ts_metadata tss[VIDEO_MAX_FRAME];
u32 metadata_idx;
+ bool in_reconfig;
};
#endif
diff --git a/drivers/media/platform/qcom/iris/iris_vdec.c b/drivers/media/platform/qcom/iris/iris_vdec.c
index 71751365b000..46abdc47420f 100644
--- a/drivers/media/platform/qcom/iris/iris_vdec.c
+++ b/drivers/media/platform/qcom/iris/iris_vdec.c
@@ -487,6 +487,7 @@ static int iris_vdec_process_streamon_output(struct iris_inst *inst)
if (ret)
return ret;
+ inst->in_reconfig = false;
return iris_inst_change_sub_state(inst, clear_sub_state, 0);
}
--
2.34.1
next prev parent reply other threads:[~2025-04-28 9:30 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-28 9:28 [PATCH v2 00/23] Add support for HEVC and VP9 codecs in decoder Dikshita Agarwal
2025-04-28 9:28 ` [PATCH v2 01/23] media: iris: Skip destroying internal buffer if not dequeued Dikshita Agarwal
2025-04-29 9:24 ` Vikash Garodia
2025-04-29 9:27 ` Vikash Garodia
2025-04-29 11:07 ` Dikshita Agarwal
2025-04-29 9:43 ` Bryan O'Donoghue
2025-04-29 10:58 ` Dikshita Agarwal
2025-04-29 12:47 ` Nicolas Dufresne
2025-04-30 5:38 ` Dikshita Agarwal
2025-04-30 7:22 ` Vikash Garodia
2025-04-28 9:28 ` [PATCH v2 02/23] media: iris: Update CAPTURE format info based on OUTPUT format Dikshita Agarwal
2025-04-29 9:29 ` Vikash Garodia
2025-04-28 9:28 ` [PATCH v2 03/23] media: iris: Add handling for corrupt and drop frames Dikshita Agarwal
2025-04-29 9:35 ` Vikash Garodia
2025-04-28 9:28 ` Dikshita Agarwal [this message]
2025-04-29 9:50 ` [PATCH v2 04/23] media: iris: Avoid updating frame size to firmware during reconfig Vikash Garodia
2025-04-28 9:28 ` [PATCH v2 05/23] media: iris: Send V4L2_BUF_FLAG_ERROR for buffers with 0 filled length Dikshita Agarwal
2025-04-29 10:00 ` Vikash Garodia
2025-04-28 9:28 ` [PATCH v2 06/23] media: iris: Drop port check for session property response Dikshita Agarwal
2025-04-29 10:04 ` Vikash Garodia
2025-04-28 9:28 ` [PATCH v2 07/23] media: iris: Add handling for no show frames Dikshita Agarwal
2025-04-29 10:06 ` Vikash Garodia
2025-04-28 9:28 ` [PATCH v2 08/23] media: iris: Improve last flag handling Dikshita Agarwal
2025-04-29 10:17 ` Vikash Garodia
2025-04-28 9:28 ` [PATCH v2 09/23] media: iris: Skip flush on first sequence change Dikshita Agarwal
2025-04-29 10:19 ` Vikash Garodia
2025-04-28 9:28 ` [PATCH v2 10/23] media: iris: Prevent HFI queue writes when core is in deinit state Dikshita Agarwal
2025-04-29 10:23 ` Vikash Garodia
2025-04-28 9:28 ` [PATCH v2 11/23] media: iris: Remove redundant buffer count check in stream off Dikshita Agarwal
2025-04-29 10:24 ` Vikash Garodia
2025-04-28 9:29 ` [PATCH v2 12/23] media: iris: Remove deprecated property setting to firmware Dikshita Agarwal
2025-04-29 10:26 ` Vikash Garodia
2025-04-28 9:29 ` [PATCH v2 13/23] media: iris: Fix missing function pointer initialization Dikshita Agarwal
2025-04-29 10:30 ` Vikash Garodia
2025-04-28 9:29 ` [PATCH v2 14/23] media: iris: Fix NULL pointer dereference Dikshita Agarwal
2025-04-28 9:40 ` Dan Carpenter
2025-04-28 12:10 ` Dikshita Agarwal
2025-04-28 12:38 ` Dan Carpenter
2025-04-29 10:31 ` Vikash Garodia
2025-04-28 9:29 ` [PATCH v2 15/23] media: iris: Fix typo in depth variable Dikshita Agarwal
2025-04-29 10:32 ` Vikash Garodia
2025-04-28 9:29 ` [PATCH v2 16/23] media: iris: Add a comment to explain usage of MBPS Dikshita Agarwal
2025-04-29 10:34 ` Vikash Garodia
2025-04-28 9:29 ` [PATCH v2 17/23] media: iris: Track flush responses to prevent premature completion Dikshita Agarwal
2025-04-30 10:40 ` Vikash Garodia
2025-04-28 9:29 ` [PATCH v2 18/23] media: iris: Fix buffer preparation failure during resolution change Dikshita Agarwal
2025-04-29 10:46 ` Vikash Garodia
2025-04-28 9:29 ` [PATCH v2 19/23] media: iris: Add HEVC and VP9 formats for decoder Dikshita Agarwal
2025-04-30 10:29 ` Vikash Garodia
2025-04-28 9:29 ` [PATCH v2 20/23] media: iris: Add platform capabilities for HEVC and VP9 decoders Dikshita Agarwal
2025-04-30 10:30 ` Vikash Garodia
2025-04-28 9:29 ` [PATCH v2 21/23] media: iris: Set mandatory properties " Dikshita Agarwal
2025-04-30 10:32 ` Vikash Garodia
2025-04-28 9:29 ` [PATCH v2 22/23] media: iris: Add internal buffer calculation " Dikshita Agarwal
2025-04-30 10:33 ` Vikash Garodia
2025-04-28 9:29 ` [PATCH v2 23/23] media: iris: Add codec specific check for VP9 decoder drain handling Dikshita Agarwal
2025-04-30 10:35 ` Vikash Garodia
2025-04-28 11:07 ` [PATCH v2 00/23] Add support for HEVC and VP9 codecs in decoder Dmitry Baryshkov
2025-04-28 12:11 ` Dikshita Agarwal
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250428-qcom-iris-hevc-vp9-v2-4-3a6013ecb8a5@quicinc.com \
--to=quic_dikshita@quicinc.com \
--cc=20250417-topic-sm8x50-iris-v10-v7-0-f020cb1d0e98@linaro.org \
--cc=20250424-qcs8300_iris-v5-0-f118f505c300@quicinc.com \
--cc=andersson@kernel.org \
--cc=bryan.odonoghue@linaro.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=dmitry.baryshkov@oss.qualcomm.com \
--cc=hverkuil@xs4all.nl \
--cc=konradybcio@kernel.org \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=mchehab@kernel.org \
--cc=neil.armstrong@linaro.org \
--cc=nicolas.dufresne@collabora.com \
--cc=quic_abhinavk@quicinc.com \
--cc=quic_vgarodia@quicinc.com \
--cc=robh@kernel.org \
--cc=stable@vger.kernel.org \
--cc=stefan.schmidt@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox