From: Dikshita Agarwal <dikshita.agarwal@oss.qualcomm.com>
To: Vikash Garodia <vikash.garodia@oss.qualcomm.com>,
Abhinav Kumar <abhinav.kumar@linux.dev>,
Bryan O'Donoghue <bod@kernel.org>,
Mauro Carvalho Chehab <mchehab@kernel.org>,
Hans Verkuil <hverkuil@kernel.org>,
Stefan Schmidt <stefan.schmidt@linaro.org>,
Hans Verkuil <hverkuil+cisco@kernel.org>,
Deepa Guthyappa Madivalara <deepa.madivalara@oss.qualcomm.com>
Cc: linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org,
linux-kernel@vger.kernel.org,
Bryan O'Donoghue <bryan.odonoghue@linaro.org>,
Dikshita Agarwal <dikshita.agarwal@oss.qualcomm.com>
Subject: [PATCH 1/7] media: qcom: iris: Centralize internal buffer table selection
Date: Wed, 22 Apr 2026 16:46:34 +0530 [thread overview]
Message-ID: <20260422-iris-code-improvement-v1-1-8e150482212d@oss.qualcomm.com> (raw)
In-Reply-To: <20260422-iris-code-improvement-v1-0-8e150482212d@oss.qualcomm.com>
Internal buffer table dispatch is duplicated across multiple Iris code
paths, which is error‑prone and makes future changes harder to reason
about.
Consolidate the buffer dispatch logic into a single helper so that table
selection is defined in exactly one place and keep call sites minimal.
No functional change intended.
Signed-off-by: Dikshita Agarwal <dikshita.agarwal@oss.qualcomm.com>
---
drivers/media/platform/qcom/iris/iris_buffer.c | 107 ++++++-------------------
1 file changed, 26 insertions(+), 81 deletions(-)
diff --git a/drivers/media/platform/qcom/iris/iris_buffer.c b/drivers/media/platform/qcom/iris/iris_buffer.c
index 9151f43bc6b9c2c34c803de4231d1e6de0bec6c4..137a69c99bcc24a72f4f27e516b8fb4d6509c0ad 100644
--- a/drivers/media/platform/qcom/iris/iris_buffer.c
+++ b/drivers/media/platform/qcom/iris/iris_buffer.c
@@ -299,39 +299,41 @@ static void iris_fill_internal_buf_info(struct iris_inst *inst,
buffers->min_count = iris_vpu_buf_count(inst, buffer_type);
}
-void iris_get_internal_buffers(struct iris_inst *inst, u32 plane)
+static void iris_get_int_buf_tbl(struct iris_inst *inst, u32 plane,
+ const u32 **buf_tbl, u32 *buf_tbl_size)
{
const struct iris_platform_data *platform_data = inst->core->iris_platform_data;
- const u32 *internal_buf_type;
- u32 internal_buffer_count, i;
if (inst->domain == DECODER) {
if (V4L2_TYPE_IS_OUTPUT(plane)) {
- internal_buf_type = platform_data->dec_ip_int_buf_tbl;
- internal_buffer_count = platform_data->dec_ip_int_buf_tbl_size;
- for (i = 0; i < internal_buffer_count; i++)
- iris_fill_internal_buf_info(inst, internal_buf_type[i]);
+ *buf_tbl = platform_data->dec_ip_int_buf_tbl;
+ *buf_tbl_size = platform_data->dec_ip_int_buf_tbl_size;
} else {
- internal_buf_type = platform_data->dec_op_int_buf_tbl;
- internal_buffer_count = platform_data->dec_op_int_buf_tbl_size;
- for (i = 0; i < internal_buffer_count; i++)
- iris_fill_internal_buf_info(inst, internal_buf_type[i]);
+ *buf_tbl = platform_data->dec_op_int_buf_tbl;
+ *buf_tbl_size = platform_data->dec_op_int_buf_tbl_size;
}
} else {
if (V4L2_TYPE_IS_OUTPUT(plane)) {
- internal_buf_type = platform_data->enc_ip_int_buf_tbl;
- internal_buffer_count = platform_data->enc_ip_int_buf_tbl_size;
- for (i = 0; i < internal_buffer_count; i++)
- iris_fill_internal_buf_info(inst, internal_buf_type[i]);
+ *buf_tbl = platform_data->enc_ip_int_buf_tbl;
+ *buf_tbl_size = platform_data->enc_ip_int_buf_tbl_size;
} else {
- internal_buf_type = platform_data->enc_op_int_buf_tbl;
- internal_buffer_count = platform_data->enc_op_int_buf_tbl_size;
- for (i = 0; i < internal_buffer_count; i++)
- iris_fill_internal_buf_info(inst, internal_buf_type[i]);
+ *buf_tbl = platform_data->enc_op_int_buf_tbl;
+ *buf_tbl_size = platform_data->enc_op_int_buf_tbl_size;
}
}
}
+void iris_get_internal_buffers(struct iris_inst *inst, u32 plane)
+{
+ const u32 *internal_buf_type;
+ u32 internal_buffer_count, i;
+
+ iris_get_int_buf_tbl(inst, plane, &internal_buf_type, &internal_buffer_count);
+
+ for (i = 0; i < internal_buffer_count; i++)
+ iris_fill_internal_buf_info(inst, internal_buf_type[i]);
+}
+
static int iris_create_internal_buffer(struct iris_inst *inst,
enum iris_buffer_type buffer_type, u32 index)
{
@@ -366,29 +368,12 @@ static int iris_create_internal_buffer(struct iris_inst *inst,
int iris_create_internal_buffers(struct iris_inst *inst, u32 plane)
{
- const struct iris_platform_data *platform_data = inst->core->iris_platform_data;
u32 internal_buffer_count, i, j;
struct iris_buffers *buffers;
const u32 *internal_buf_type;
int ret;
- if (inst->domain == DECODER) {
- if (V4L2_TYPE_IS_OUTPUT(plane)) {
- internal_buf_type = platform_data->dec_ip_int_buf_tbl;
- internal_buffer_count = platform_data->dec_ip_int_buf_tbl_size;
- } else {
- internal_buf_type = platform_data->dec_op_int_buf_tbl;
- internal_buffer_count = platform_data->dec_op_int_buf_tbl_size;
- }
- } else {
- if (V4L2_TYPE_IS_OUTPUT(plane)) {
- internal_buf_type = platform_data->enc_ip_int_buf_tbl;
- internal_buffer_count = platform_data->enc_ip_int_buf_tbl_size;
- } else {
- internal_buf_type = platform_data->enc_op_int_buf_tbl;
- internal_buffer_count = platform_data->enc_op_int_buf_tbl_size;
- }
- }
+ iris_get_int_buf_tbl(inst, plane, &internal_buf_type, &internal_buffer_count);
for (i = 0; i < internal_buffer_count; i++) {
buffers = &inst->buffers[internal_buf_type[i]];
@@ -442,30 +427,13 @@ int iris_queue_internal_deferred_buffers(struct iris_inst *inst, enum iris_buffe
int iris_queue_internal_buffers(struct iris_inst *inst, u32 plane)
{
- const struct iris_platform_data *platform_data = inst->core->iris_platform_data;
struct iris_buffer *buffer, *next;
struct iris_buffers *buffers;
const u32 *internal_buf_type;
u32 internal_buffer_count, i;
int ret;
- if (inst->domain == DECODER) {
- if (V4L2_TYPE_IS_OUTPUT(plane)) {
- internal_buf_type = platform_data->dec_ip_int_buf_tbl;
- internal_buffer_count = platform_data->dec_ip_int_buf_tbl_size;
- } else {
- internal_buf_type = platform_data->dec_op_int_buf_tbl;
- internal_buffer_count = platform_data->dec_op_int_buf_tbl_size;
- }
- } else {
- if (V4L2_TYPE_IS_OUTPUT(plane)) {
- internal_buf_type = platform_data->enc_ip_int_buf_tbl;
- internal_buffer_count = platform_data->enc_ip_int_buf_tbl_size;
- } else {
- internal_buf_type = platform_data->enc_op_int_buf_tbl;
- internal_buffer_count = platform_data->enc_op_int_buf_tbl_size;
- }
- }
+ iris_get_int_buf_tbl(inst, plane, &internal_buf_type, &internal_buffer_count);
for (i = 0; i < internal_buffer_count; i++) {
buffers = &inst->buffers[internal_buf_type[i]];
@@ -501,30 +469,13 @@ int iris_destroy_internal_buffer(struct iris_inst *inst, struct iris_buffer *buf
static int iris_destroy_internal_buffers(struct iris_inst *inst, u32 plane, bool force)
{
- const struct iris_platform_data *platform_data = inst->core->iris_platform_data;
struct iris_buffer *buf, *next;
struct iris_buffers *buffers;
const u32 *internal_buf_type;
u32 i, len;
int ret;
- if (inst->domain == DECODER) {
- if (V4L2_TYPE_IS_OUTPUT(plane)) {
- internal_buf_type = platform_data->dec_ip_int_buf_tbl;
- len = platform_data->dec_ip_int_buf_tbl_size;
- } else {
- internal_buf_type = platform_data->dec_op_int_buf_tbl;
- len = platform_data->dec_op_int_buf_tbl_size;
- }
- } else {
- if (V4L2_TYPE_IS_OUTPUT(plane)) {
- internal_buf_type = platform_data->enc_ip_int_buf_tbl;
- len = platform_data->enc_ip_int_buf_tbl_size;
- } else {
- internal_buf_type = platform_data->enc_op_int_buf_tbl;
- len = platform_data->enc_op_int_buf_tbl_size;
- }
- }
+ iris_get_int_buf_tbl(inst, plane, &internal_buf_type, &len);
for (i = 0; i < len; i++) {
buffers = &inst->buffers[internal_buf_type[i]];
@@ -593,18 +544,12 @@ static int iris_release_internal_buffers(struct iris_inst *inst,
static int iris_release_input_internal_buffers(struct iris_inst *inst)
{
- const struct iris_platform_data *platform_data = inst->core->iris_platform_data;
const u32 *internal_buf_type;
u32 internal_buffer_count, i;
int ret;
- if (inst->domain == DECODER) {
- internal_buf_type = platform_data->dec_ip_int_buf_tbl;
- internal_buffer_count = platform_data->dec_ip_int_buf_tbl_size;
- } else {
- internal_buf_type = platform_data->enc_ip_int_buf_tbl;
- internal_buffer_count = platform_data->enc_ip_int_buf_tbl_size;
- }
+ iris_get_int_buf_tbl(inst, V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE,
+ &internal_buf_type, &internal_buffer_count);
for (i = 0; i < internal_buffer_count; i++) {
ret = iris_release_internal_buffers(inst, internal_buf_type[i]);
--
2.34.1
next prev parent reply other threads:[~2026-04-22 11:16 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-22 11:16 [PATCH 0/7] media: qcom: iris: miscellaneous code-quality fixes Dikshita Agarwal
2026-04-22 11:16 ` Dikshita Agarwal [this message]
2026-04-23 9:17 ` [PATCH 1/7] media: qcom: iris: Centralize internal buffer table selection Bryan O'Donoghue
2026-04-22 11:16 ` [PATCH 2/7] media: qcom: iris: fix state-change debug log printing stale value Dikshita Agarwal
2026-04-22 12:20 ` Konrad Dybcio
2026-04-23 9:18 ` Bryan O'Donoghue
2026-04-22 11:16 ` [PATCH 3/7] media: qcom: iris: Fix bitmask test in iris_allow_cmd() Dikshita Agarwal
2026-04-23 9:23 ` Bryan O'Donoghue
2026-04-22 11:16 ` [PATCH 4/7] media: qcom: iris: Remove dead assignment in iris_hfi_gen2_set_tier() Dikshita Agarwal
2026-04-22 12:23 ` Konrad Dybcio
2026-04-23 5:09 ` Dikshita Agarwal
2026-04-23 9:25 ` Bryan O'Donoghue
2026-04-23 9:52 ` Dikshita Agarwal
2026-04-22 11:16 ` [PATCH 5/7] media: qcom: iris: Remove duplicate HFI_PROP_OPB_ENABLE entry Dikshita Agarwal
2026-04-22 12:25 ` Konrad Dybcio
2026-04-22 11:16 ` [PATCH 6/7] media: qcom: iris: Add missing break in iris_hfi_gen2_session_set_codec() Dikshita Agarwal
2026-04-22 12:25 ` Konrad Dybcio
2026-04-23 9:32 ` Bryan O'Donoghue
2026-04-22 11:16 ` [PATCH 7/7] media: qcom: iris: Make iris_destroy_internal_buffer() return void Dikshita Agarwal
2026-04-22 12:26 ` Konrad Dybcio
2026-04-22 12:26 ` Konrad Dybcio
2026-04-23 9:42 ` Bryan O'Donoghue
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=20260422-iris-code-improvement-v1-1-8e150482212d@oss.qualcomm.com \
--to=dikshita.agarwal@oss.qualcomm.com \
--cc=abhinav.kumar@linux.dev \
--cc=bod@kernel.org \
--cc=bryan.odonoghue@linaro.org \
--cc=deepa.madivalara@oss.qualcomm.com \
--cc=hverkuil+cisco@kernel.org \
--cc=hverkuil@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=stefan.schmidt@linaro.org \
--cc=vikash.garodia@oss.qualcomm.com \
/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