From nobody Mon Jun 8 06:36:10 2026 Received: from mail-pl1-f171.google.com (mail-pl1-f171.google.com [209.85.214.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0BD2D3845A6 for ; Sat, 6 Jun 2026 11:47:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780746433; cv=none; b=CGdIbwl1617o+AA/xxLZCFl8nu1sA+fklQHqkD5lKznrF1XgaLPCzzpvCFVOI0Qhsujbd1znhsPLgU1BcV9ntowrWtS3tWMXZibHrMqLD5Sv+2k5tlw7HW55VO6l8qTpWDcoZ8+Xkwla1FaZCx/g5mzb8uK8zl1fWeqMF+Zons4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780746433; c=relaxed/simple; bh=Ud+L8RX0/ONTx9AN+SCwYHws8tWaBfr63/tQ2nKJTtM=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=AW8a2T3NbuErarrsG59+pX6dImp5IsF52rt5QPjIN9rVoEjnIVBH4VBpZUvtpHUyQl33n89d48H5Na2YBC3noAni5BpkqiLNwpZlxEYO9JSP1ylQSdyyncp1mnc+kGGAabnd2pIoenSJYLkRaPcmrIPkHcnwXQlhK1toeqDWqnE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=pEyimEt0; arc=none smtp.client-ip=209.85.214.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="pEyimEt0" Received: by mail-pl1-f171.google.com with SMTP id d9443c01a7336-2bf1f074a12so29344485ad.0 for ; Sat, 06 Jun 2026 04:47:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780746430; x=1781351230; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=sIR/QbzXK+b8Jr6rPykOzMarQ8n0SX4F6p7WAI1P/lE=; b=pEyimEt0TXlDJFMvwS4bfmgvAZxLZ+VHmNAEYSAmJjMW/yjg2dXQZBHL76n4r3aPQ3 A4q9R5txxYU+OLvu/ZwgMVKVtgPMOAp0SF8KSSK43l60w3VDgvtbbxVpU+tzh3tLnq6a 27/WXEJcS2mY29AKGHqHsIFdG35IAx1a7bB1Pu8wa7Ygp+gPG6X2E2M1xudLwNmZf1N8 wfdylZw6RufDd2sy8mJ35MfUWIJXsOZbTRj0xiL7dmZve56+QVqk2AbWjqN0iZwMCyUb ILAXK0tB13EpNGG4yeyDQvC7tLb/SF9uMtDpBw0ysjSXC7Lup/ek886qvwcVHVwasf4Z OCqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780746430; x=1781351230; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=sIR/QbzXK+b8Jr6rPykOzMarQ8n0SX4F6p7WAI1P/lE=; b=rqR9wby3VIJZstAsCjPv7E4t2R6GNyPkpd3NkYkMbPHIqthBhTvKxyd3zSJaanmXPy BF47lIk1g1KURSbdKKJM5/3Sd1MY+EwYufkT7fomIr2eNQWMrKw6dBvBxS4qJBdsp7Oh V9qZdJmk1uJkxnXjG8zyGqIyQlHo9N45tyx4Lh+5kyp8jQ7mTaYhdCD97ec+O/OGYOzv oWAL+pkOkyTIBam6wy4kBoKUySLEbif9/SEic+RZfL8Cwbw5VXxbuo8vvH3wXeAc1ZEp ZHRZm+ej5QrZUjNAykbNamMNRhVCLO+HiekJlPIqhe/dn2HBYB0j/XDpx9jI40RbPDyt Pw8g== X-Forwarded-Encrypted: i=1; AFNElJ+cTGw9BR+0MSh2CMTGBe+qFMMwIGm+vQUnvVCzJKGAw3nGmoHfFBlU0G3uHtR0bLvqTimPVSONSgERlBY=@vger.kernel.org X-Gm-Message-State: AOJu0YxDOsT2nFNZZwd/V5BqLQ3unDEn9VsBfepc1T4O9ujiKPG2S0px d5T8JPYdce6v/bk/xVHYpHx6VLVtkVA999OqOekeYk/FgQ3L6GU0umnc X-Gm-Gg: Acq92OEpBFuEJ9D7DEdkA1YRrsHi9BimRfhE6xD6FltByvGbi/2ClEj5bKnQYu6g3hs sS2QTI/lgW5xXqzEw96PMdFk/ecvYzrC1010V+TNvFYhzghJHniAbnshBKw6PMYepa5fOfSlj2x ANtwK2zgjHfcNJWIgBr7elC/0h0UP39PRg1l11dVtFLEr0Shu8gxl9ngGvVnwbTOKLeGB4Xo3Qx 8hZTAZkhh7CyIpit7pwo4ZS6XXs1+IuablTBntYBBtnD8jTcr/YharYql0djSIKyimcX0yafqVv XgjCHeCdjbLhXKTxzMihPlVNqRTQheip0XFBhjrLQarGswSUR/4XSJVJxNO0DnNPvTQbbJ830xY aT0hwamN7JTNhz3+JwAuXSX8qcWSH7SLS6qe9Ix7Eb/2eEcRn8eCJtCo8oeWvg1UM6HpS0mdE/k oJ3J/ON8EvdR+SOP2zpOKFdXIfDvhraIl38X0aY9zJtRYmMXCuSMjpHA== X-Received: by 2002:a17:902:c94c:b0:2c2:33a4:aa8f with SMTP id d9443c01a7336-2c233a4ade9mr13876565ad.13.1780746430022; Sat, 06 Jun 2026 04:47:10 -0700 (PDT) Received: from haichao.tail057a43.ts.net ([2001:da8:e000:1206:967f:7ce4:ec98:f08b]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c166391d53sm160933745ad.65.2026.06.06.04.47.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 06 Jun 2026 04:47:09 -0700 (PDT) From: Ruoyu Wang To: Vikash Garodia , Dikshita Agarwal Cc: Dmitry Baryshkov , Abhinav Kumar , Bryan O'Donoghue , Mauro Carvalho Chehab , linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Ruoyu Wang Subject: [PATCH v3] media: iris: store formats in the instance Date: Sat, 6 Jun 2026 19:47:03 +0800 Message-ID: <20260606114703.5-1-ruoyuw560@gmail.com> X-Mailer: git-send-email 2.51.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The source and destination v4l2_format objects are per-instance state with the same lifetime as struct iris_inst, but iris allocates them separately during decoder and encoder instance initialization. Keeping the formats as separate allocations adds failure paths before all users can safely dereference them. It also requires every later initialization failure to remember to free both objects before the instance is released. Store the formats directly in struct iris_inst and update users to take the address of the embedded objects where a pointer is needed. This removes the allocation failure path and the matching close-time frees. Suggested-by: Dmitry Baryshkov Signed-off-by: Ruoyu Wang Reviewed-by: Dmitry Baryshkov --- v3: - Embed source and destination formats in struct iris_inst. - Remove separate decoder and encoder format allocations and frees. - Update users to take addresses of the embedded formats. v2: - Allocate source and destination formats into local variables first. - Assign them to the instance only after both allocations succeed. - Free any partial allocation on failure. .../media/platform/qcom/iris/iris_buffer.c | 16 ++++----- drivers/media/platform/qcom/iris/iris_ctrls.c | 2 +- .../qcom/iris/iris_hfi_gen1_command.c | 22 ++++++------ .../qcom/iris/iris_hfi_gen1_response.c | 4 +-- .../qcom/iris/iris_hfi_gen2_command.c | 30 ++++++++-------- .../qcom/iris/iris_hfi_gen2_response.c | 8 ++--- .../media/platform/qcom/iris/iris_instance.h | 4 +-- drivers/media/platform/qcom/iris/iris_power.c | 2 +- drivers/media/platform/qcom/iris/iris_utils.c | 6 ++-- drivers/media/platform/qcom/iris/iris_vb2.c | 6 ++-- drivers/media/platform/qcom/iris/iris_vdec.c | 19 +++++----- drivers/media/platform/qcom/iris/iris_venc.c | 36 ++++++++----------- drivers/media/platform/qcom/iris/iris_vidc.c | 10 +++--- drivers/media/platform/qcom/iris/iris_vpu2.c | 2 +- .../platform/qcom/iris/iris_vpu_buffer.c | 28 +++++++-------- .../platform/qcom/iris/iris_vpu_common.c | 2 +- 16 files changed, 92 insertions(+), 105 deletions(-) diff --git a/drivers/media/platform/qcom/iris/iris_buffer.c b/drivers/media= /platform/qcom/iris/iris_buffer.c index 1d53c7414b754..95e77f4fb14e4 100644 --- a/drivers/media/platform/qcom/iris/iris_buffer.c +++ b/drivers/media/platform/qcom/iris/iris_buffer.c @@ -66,9 +66,9 @@ static u32 iris_yuv_buffer_size_nv12(struct iris_inst *in= st) struct v4l2_format *f; =20 if (inst->domain =3D=3D DECODER) - f =3D inst->fmt_dst; + f =3D &inst->fmt_dst; else - f =3D inst->fmt_src; + f =3D &inst->fmt_src; =20 y_stride =3D ALIGN(f->fmt.pix_mp.width, Y_STRIDE_ALIGN); uv_stride =3D ALIGN(f->fmt.pix_mp.width, UV_STRIDE_ALIGN); @@ -173,12 +173,12 @@ static u32 iris_yuv_buffer_size_qc08c(struct iris_ins= t *inst) u32 y_plane, uv_plane, y_stride, uv_stride; u32 uv_meta_stride, uv_meta_plane; u32 y_meta_stride, y_meta_plane; - struct v4l2_format *f =3D NULL; + struct v4l2_format *f; =20 if (inst->domain =3D=3D DECODER) - f =3D inst->fmt_dst; + f =3D &inst->fmt_dst; else - f =3D inst->fmt_src; + f =3D &inst->fmt_src; =20 y_meta_stride =3D ALIGN(DIV_ROUND_UP(f->fmt.pix_mp.width, META_STRIDE_ALI= GNED >> 1), META_STRIDE_ALIGNED); @@ -235,7 +235,7 @@ static u32 iris_enc_bitstream_buffer_size(struct iris_i= nst *inst) int bitrate_mode, frame_rc; struct v4l2_format *f; =20 - f =3D inst->fmt_dst; + f =3D &inst->fmt_dst; =20 bitrate_mode =3D inst->fw_caps[BITRATE_MODE].value; frame_rc =3D inst->fw_caps[FRAME_RC_ENABLE].value; @@ -266,7 +266,7 @@ int iris_get_buffer_size(struct iris_inst *inst, case BUF_INPUT: return iris_dec_bitstream_buffer_size(inst); case BUF_OUTPUT: - if (inst->fmt_dst->fmt.pix_mp.pixelformat =3D=3D V4L2_PIX_FMT_QC08C) + if (inst->fmt_dst.fmt.pix_mp.pixelformat =3D=3D V4L2_PIX_FMT_QC08C) return iris_yuv_buffer_size_qc08c(inst); else return iris_yuv_buffer_size_nv12(inst); @@ -278,7 +278,7 @@ int iris_get_buffer_size(struct iris_inst *inst, } else { switch (buffer_type) { case BUF_INPUT: - if (inst->fmt_src->fmt.pix_mp.pixelformat =3D=3D V4L2_PIX_FMT_QC08C) + if (inst->fmt_src.fmt.pix_mp.pixelformat =3D=3D V4L2_PIX_FMT_QC08C) return iris_yuv_buffer_size_qc08c(inst); else return iris_yuv_buffer_size_nv12(inst); diff --git a/drivers/media/platform/qcom/iris/iris_ctrls.c b/drivers/media/= platform/qcom/iris/iris_ctrls.c index 3cec957580f5e..fad64d95a413d 100644 --- a/drivers/media/platform/qcom/iris/iris_ctrls.c +++ b/drivers/media/platform/qcom/iris/iris_ctrls.c @@ -426,7 +426,7 @@ int iris_set_u32(struct iris_inst *inst, enum platform_= inst_fw_cap_type cap_id) int iris_set_stage(struct iris_inst *inst, enum platform_inst_fw_cap_type = cap_id) { const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; - struct v4l2_format *inp_f =3D inst->fmt_src; + struct v4l2_format *inp_f =3D &inst->fmt_src; u32 hfi_id =3D inst->fw_caps[cap_id].hfi_id; u32 height =3D inp_f->fmt.pix_mp.height; u32 width =3D inp_f->fmt.pix_mp.width; diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c b/dri= vers/media/platform/qcom/iris/iris_hfi_gen1_command.c index e42d17653c2c3..c9dba69e9c891 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c @@ -737,8 +737,8 @@ static int iris_hfi_gen1_set_resolution(struct iris_ins= t *inst, u32 plane) =20 if (!iris_drc_pending(inst) && !(inst->sub_state & IRIS_INST_SUB_FIRST_IP= SC)) { fs.buffer_type =3D HFI_BUFFER_INPUT; - fs.width =3D inst->fmt_src->fmt.pix_mp.width; - fs.height =3D inst->fmt_src->fmt.pix_mp.height; + fs.width =3D inst->fmt_src.fmt.pix_mp.width; + fs.height =3D inst->fmt_src.fmt.pix_mp.height; =20 ret =3D hfi_gen1_set_property(inst, ptype, &fs, sizeof(fs)); if (ret) @@ -749,8 +749,8 @@ static int iris_hfi_gen1_set_resolution(struct iris_ins= t *inst, u32 plane) else fs.buffer_type =3D HFI_BUFFER_OUTPUT; =20 - fs.width =3D inst->fmt_dst->fmt.pix_mp.width; - fs.height =3D inst->fmt_dst->fmt.pix_mp.height; + fs.width =3D inst->fmt_dst.fmt.pix_mp.width; + fs.height =3D inst->fmt_dst.fmt.pix_mp.height; =20 return hfi_gen1_set_property(inst, ptype, &fs, sizeof(fs)); } @@ -773,7 +773,7 @@ static int iris_hfi_gen1_set_raw_format(struct iris_ins= t *inst, u32 plane) int ret; =20 if (inst->domain =3D=3D DECODER) { - pixelformat =3D inst->fmt_dst->fmt.pix_mp.pixelformat; + pixelformat =3D inst->fmt_dst.fmt.pix_mp.pixelformat; if (iris_split_mode_enabled(inst)) { fmt.buffer_type =3D HFI_BUFFER_OUTPUT; fmt.format =3D HFI_COLOR_FORMAT_NV12_UBWC; @@ -795,7 +795,7 @@ static int iris_hfi_gen1_set_raw_format(struct iris_ins= t *inst, u32 plane) ret =3D hfi_gen1_set_property(inst, ptype, &fmt, sizeof(fmt)); } } else { - pixelformat =3D inst->fmt_src->fmt.pix_mp.pixelformat; + pixelformat =3D inst->fmt_src.fmt.pix_mp.pixelformat; fmt.buffer_type =3D HFI_BUFFER_INPUT; fmt.format =3D pixelformat =3D=3D V4L2_PIX_FMT_NV12 ? HFI_COLOR_FORMAT_NV12 : HFI_COLOR_FORMAT_NV12_UBWC; @@ -810,7 +810,7 @@ static int iris_hfi_gen1_set_format_constraints(struct = iris_inst *inst, u32 plan const u32 ptype =3D HFI_PROPERTY_PARAM_UNCOMPRESSED_PLANE_ACTUAL_CONSTRAI= NTS_INFO; struct hfi_uncompressed_plane_actual_constraints_info pconstraint; =20 - if (inst->fmt_dst->fmt.pix_mp.pixelformat =3D=3D V4L2_PIX_FMT_QC08C) + if (inst->fmt_dst.fmt.pix_mp.pixelformat =3D=3D V4L2_PIX_FMT_QC08C) return 0; =20 pconstraint.buffer_type =3D HFI_BUFFER_OUTPUT2; @@ -967,13 +967,13 @@ static int iris_hfi_gen1_set_stride(struct iris_inst = *inst, u32 plane) plane_actual_info.buffer_type =3D HFI_BUFFER_INPUT; plane_actual_info.num_planes =3D 2; plane_actual_info.plane_format[0].actual_stride =3D - ALIGN(inst->fmt_src->fmt.pix_mp.width, 128); + ALIGN(inst->fmt_src.fmt.pix_mp.width, 128); plane_actual_info.plane_format[0].actual_plane_buffer_height =3D - ALIGN(inst->fmt_src->fmt.pix_mp.height, 32); + ALIGN(inst->fmt_src.fmt.pix_mp.height, 32); plane_actual_info.plane_format[1].actual_stride =3D - ALIGN(inst->fmt_src->fmt.pix_mp.width, 128); + ALIGN(inst->fmt_src.fmt.pix_mp.width, 128); plane_actual_info.plane_format[1].actual_plane_buffer_height =3D - (ALIGN(inst->fmt_src->fmt.pix_mp.height, 32)) / 2; + (ALIGN(inst->fmt_src.fmt.pix_mp.height, 32)) / 2; =20 return hfi_gen1_set_property(inst, ptype, &plane_actual_info, sizeof(plan= e_actual_info)); } diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen1_response.c b/dr= ivers/media/platform/qcom/iris/iris_hfi_gen1_response.c index 8e864c239e293..e1aea0fc78608 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen1_response.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1_response.c @@ -15,8 +15,8 @@ static void iris_hfi_gen1_read_changed_params(struct iris_inst *inst, struct hfi_msg_event_notify_pkt *pkt) { - struct v4l2_pix_format_mplane *pixmp_ip =3D &inst->fmt_src->fmt.pix_mp; - struct v4l2_pix_format_mplane *pixmp_op =3D &inst->fmt_dst->fmt.pix_mp; + struct v4l2_pix_format_mplane *pixmp_ip =3D &inst->fmt_src.fmt.pix_mp; + struct v4l2_pix_format_mplane *pixmp_op =3D &inst->fmt_dst.fmt.pix_mp; u32 num_properties_changed =3D pkt->event_data2; u8 *data_ptr =3D (u8 *)&pkt->ext_event_data[0]; u32 primaries, matrix_coeff, transfer_char; diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c b/dri= vers/media/platform/qcom/iris/iris_hfi_gen2_command.c index 30bfd90d423ba..9b55d188ee58d 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c @@ -198,8 +198,8 @@ static int iris_hfi_gen2_set_bitstream_resolution(struc= t iris_inst *inst, u32 pl u32 resolution; =20 if (inst->domain =3D=3D DECODER) { - width =3D inst->fmt_src->fmt.pix_mp.width; - height =3D inst->fmt_src->fmt.pix_mp.height; + width =3D inst->fmt_src.fmt.pix_mp.width; + height =3D inst->fmt_src.fmt.pix_mp.height; resolution =3D iris_hfi_get_aligned_resolution(inst, width, height); inst_hfi_gen2->src_subcr_params.bitstream_resolution =3D resolution; payload_type =3D HFI_PAYLOAD_U32; @@ -235,13 +235,13 @@ static int iris_hfi_gen2_set_crop_offsets(struct iris= _inst *inst, u32 plane) =20 if (inst->domain =3D=3D DECODER) { if (V4L2_TYPE_IS_OUTPUT(plane)) { - bottom_offset =3D (inst->fmt_src->fmt.pix_mp.height - inst->crop.height= ); - right_offset =3D (inst->fmt_src->fmt.pix_mp.width - inst->crop.width); + bottom_offset =3D (inst->fmt_src.fmt.pix_mp.height - inst->crop.height); + right_offset =3D (inst->fmt_src.fmt.pix_mp.width - inst->crop.width); left_offset =3D inst->crop.left; top_offset =3D inst->crop.top; } else { - bottom_offset =3D (inst->fmt_dst->fmt.pix_mp.height - inst->compose.hei= ght); - right_offset =3D (inst->fmt_dst->fmt.pix_mp.width - inst->compose.width= ); + bottom_offset =3D (inst->fmt_dst.fmt.pix_mp.height - inst->compose.heig= ht); + right_offset =3D (inst->fmt_dst.fmt.pix_mp.width - inst->compose.width); left_offset =3D inst->compose.left; top_offset =3D inst->compose.top; } @@ -356,7 +356,7 @@ static int iris_hfi_gen2_set_picture_order_count(struct= iris_inst *inst, u32 pla static int iris_hfi_gen2_set_colorspace(struct iris_inst *inst, u32 plane) { struct iris_inst_hfi_gen2 *inst_hfi_gen2 =3D to_iris_inst_hfi_gen2(inst); - struct v4l2_pix_format_mplane *pixmp =3D &inst->fmt_src->fmt.pix_mp; + struct v4l2_pix_format_mplane *pixmp =3D &inst->fmt_src.fmt.pix_mp; u32 video_signal_type_present_flag =3D 0, color_info; u32 matrix_coeff =3D HFI_MATRIX_COEFF_RESERVED; u32 video_format =3D UNSPECIFIED_COLOR_FORMAT; @@ -480,11 +480,11 @@ static int iris_hfi_gen2_set_colorformat(struct iris_= inst *inst, u32 plane) u32 hfi_colorformat, pixelformat; =20 if (inst->domain =3D=3D DECODER) { - pixelformat =3D inst->fmt_dst->fmt.pix_mp.pixelformat; + pixelformat =3D inst->fmt_dst.fmt.pix_mp.pixelformat; hfi_colorformat =3D pixelformat =3D=3D V4L2_PIX_FMT_NV12 ? HFI_COLOR_FMT_NV12 : HFI_COLOR_FMT_NV12_UBWC; } else { - pixelformat =3D inst->fmt_src->fmt.pix_mp.pixelformat; + pixelformat =3D inst->fmt_src.fmt.pix_mp.pixelformat; hfi_colorformat =3D pixelformat =3D=3D V4L2_PIX_FMT_NV12 ? HFI_COLOR_FMT_NV12 : HFI_COLOR_FMT_NV12_UBWC; } @@ -505,13 +505,13 @@ static int iris_hfi_gen2_set_linear_stride_scanline(s= truct iris_inst *inst, u32 u32 payload[2]; =20 if (inst->domain =3D=3D DECODER) { - pixelformat =3D inst->fmt_dst->fmt.pix_mp.pixelformat; - stride_y =3D inst->fmt_dst->fmt.pix_mp.width; - scanline_y =3D inst->fmt_dst->fmt.pix_mp.height; + pixelformat =3D inst->fmt_dst.fmt.pix_mp.pixelformat; + stride_y =3D inst->fmt_dst.fmt.pix_mp.width; + scanline_y =3D inst->fmt_dst.fmt.pix_mp.height; } else { - pixelformat =3D inst->fmt_src->fmt.pix_mp.pixelformat; - stride_y =3D ALIGN(inst->fmt_src->fmt.pix_mp.width, 128); - scanline_y =3D ALIGN(inst->fmt_src->fmt.pix_mp.height, 32); + pixelformat =3D inst->fmt_src.fmt.pix_mp.pixelformat; + stride_y =3D ALIGN(inst->fmt_src.fmt.pix_mp.width, 128); + scanline_y =3D ALIGN(inst->fmt_src.fmt.pix_mp.height, 32); } =20 stride_uv =3D stride_y; diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen2_response.c b/dr= ivers/media/platform/qcom/iris/iris_hfi_gen2_response.c index 8e19f61bbbf9e..726e6af777034 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2_response.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2_response.c @@ -522,8 +522,8 @@ static int iris_hfi_gen2_handle_session_drain(struct ir= is_inst *inst, static void iris_hfi_gen2_read_input_subcr_params(struct iris_inst *inst) { struct iris_inst_hfi_gen2 *inst_hfi_gen2 =3D to_iris_inst_hfi_gen2(inst); - struct v4l2_pix_format_mplane *pixmp_ip =3D &inst->fmt_src->fmt.pix_mp; - struct v4l2_pix_format_mplane *pixmp_op =3D &inst->fmt_dst->fmt.pix_mp; + struct v4l2_pix_format_mplane *pixmp_ip =3D &inst->fmt_src.fmt.pix_mp; + struct v4l2_pix_format_mplane *pixmp_op =3D &inst->fmt_dst.fmt.pix_mp; u32 primaries, matrix_coeff, transfer_char; struct hfi_subscription_params subsc_params; u32 colour_description_present_flag; @@ -817,8 +817,8 @@ static int iris_hfi_gen2_handle_system_response(struct = iris_core *core, static void iris_hfi_gen2_init_src_change_param(struct iris_inst *inst) { struct iris_inst_hfi_gen2 *inst_hfi_gen2 =3D to_iris_inst_hfi_gen2(inst); - struct v4l2_pix_format_mplane *pixmp_ip =3D &inst->fmt_src->fmt.pix_mp; - struct v4l2_pix_format_mplane *pixmp_op =3D &inst->fmt_dst->fmt.pix_mp; + struct v4l2_pix_format_mplane *pixmp_ip =3D &inst->fmt_src.fmt.pix_mp; + struct v4l2_pix_format_mplane *pixmp_op =3D &inst->fmt_dst.fmt.pix_mp; u32 bottom_offset =3D (pixmp_ip->height - inst->crop.height); u32 right_offset =3D (pixmp_ip->width - inst->crop.width); struct hfi_subscription_params *subsc_params; diff --git a/drivers/media/platform/qcom/iris/iris_instance.h b/drivers/med= ia/platform/qcom/iris/iris_instance.h index 16965150f427b..996f724ed20a5 100644 --- a/drivers/media/platform/qcom/iris/iris_instance.h +++ b/drivers/media/platform/qcom/iris/iris_instance.h @@ -83,8 +83,8 @@ struct iris_inst { struct mutex ctx_q_lock;/* lock to serialize queues related ioctls */ struct mutex lock; /* lock to serialize forward and reverse threads */ struct v4l2_fh fh; - struct v4l2_format *fmt_src; - struct v4l2_format *fmt_dst; + struct v4l2_format fmt_src; + struct v4l2_format fmt_dst; struct v4l2_ctrl_handler ctrl_handler; enum domain_type domain; struct iris_hfi_rect_desc crop; diff --git a/drivers/media/platform/qcom/iris/iris_power.c b/drivers/media/= platform/qcom/iris/iris_power.c index 91aa21d4070eb..369ce43a103cd 100644 --- a/drivers/media/platform/qcom/iris/iris_power.c +++ b/drivers/media/platform/qcom/iris/iris_power.c @@ -64,7 +64,7 @@ static int iris_set_interconnects(struct iris_inst *inst) static int iris_vote_interconnects(struct iris_inst *inst) { struct icc_vote_data *vote_data =3D &inst->icc_data; - struct v4l2_format *inp_f =3D inst->fmt_src; + struct v4l2_format *inp_f =3D &inst->fmt_src; =20 vote_data->width =3D inp_f->fmt.pix_mp.width; vote_data->height =3D inp_f->fmt.pix_mp.height; diff --git a/drivers/media/platform/qcom/iris/iris_utils.c b/drivers/media/= platform/qcom/iris/iris_utils.c index cfc5b576ec56b..a694eb32edb6e 100644 --- a/drivers/media/platform/qcom/iris/iris_utils.c +++ b/drivers/media/platform/qcom/iris/iris_utils.c @@ -25,7 +25,7 @@ bool iris_res_is_less_than(u32 width, u32 height, =20 int iris_get_mbpf(struct iris_inst *inst) { - struct v4l2_format *inp_f =3D inst->fmt_src; + struct v4l2_format *inp_f =3D &inst->fmt_src; u32 height =3D max(inp_f->fmt.pix_mp.height, inst->crop.height); u32 width =3D max(inp_f->fmt.pix_mp.width, inst->crop.width); =20 @@ -34,8 +34,8 @@ int iris_get_mbpf(struct iris_inst *inst) =20 bool iris_split_mode_enabled(struct iris_inst *inst) { - return inst->fmt_dst->fmt.pix_mp.pixelformat =3D=3D V4L2_PIX_FMT_NV12 || - inst->fmt_dst->fmt.pix_mp.pixelformat =3D=3D V4L2_PIX_FMT_QC08C; + return inst->fmt_dst.fmt.pix_mp.pixelformat =3D=3D V4L2_PIX_FMT_NV12 || + inst->fmt_dst.fmt.pix_mp.pixelformat =3D=3D V4L2_PIX_FMT_QC08C; } =20 void iris_helper_buffers_done(struct iris_inst *inst, unsigned int type, diff --git a/drivers/media/platform/qcom/iris/iris_vb2.c b/drivers/media/pl= atform/qcom/iris/iris_vb2.c index bf0b8400996ec..5d2528d4e0aba 100644 --- a/drivers/media/platform/qcom/iris/iris_vb2.c +++ b/drivers/media/platform/qcom/iris/iris_vb2.c @@ -34,8 +34,8 @@ static int iris_check_resolution_supported(struct iris_in= st *inst) struct platform_inst_caps *caps; =20 caps =3D inst->core->iris_platform_data->inst_caps; - width =3D inst->fmt_src->fmt.pix_mp.width; - height =3D inst->fmt_src->fmt.pix_mp.height; + width =3D inst->fmt_src.fmt.pix_mp.width; + height =3D inst->fmt_src.fmt.pix_mp.height; =20 min_width =3D caps->min_frame_width; max_width =3D caps->max_frame_width; @@ -113,7 +113,7 @@ int iris_vb2_queue_setup(struct vb2_queue *q, } =20 core =3D inst->core; - f =3D V4L2_TYPE_IS_OUTPUT(q->type) ? inst->fmt_src : inst->fmt_dst; + f =3D V4L2_TYPE_IS_OUTPUT(q->type) ? &inst->fmt_src : &inst->fmt_dst; =20 if (*num_planes) { if (*num_planes !=3D f->fmt.pix_mp.num_planes || diff --git a/drivers/media/platform/qcom/iris/iris_vdec.c b/drivers/media/p= latform/qcom/iris/iris_vdec.c index 99d544e2af4f9..2f001302efc3e 100644 --- a/drivers/media/platform/qcom/iris/iris_vdec.c +++ b/drivers/media/platform/qcom/iris/iris_vdec.c @@ -21,12 +21,9 @@ int iris_vdec_inst_init(struct iris_inst *inst) struct iris_core *core =3D inst->core; struct v4l2_format *f; =20 - inst->fmt_src =3D kzalloc_obj(*inst->fmt_src); - inst->fmt_dst =3D kzalloc_obj(*inst->fmt_dst); - inst->fw_min_count =3D MIN_BUFFERS; =20 - f =3D inst->fmt_src; + f =3D &inst->fmt_src; f->type =3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE; f->fmt.pix_mp.width =3D DEFAULT_WIDTH; f->fmt.pix_mp.height =3D DEFAULT_HEIGHT; @@ -39,7 +36,7 @@ int iris_vdec_inst_init(struct iris_inst *inst) inst->buffers[BUF_INPUT].min_count =3D iris_vpu_buf_count(inst, BUF_INPUT= ); inst->buffers[BUF_INPUT].size =3D f->fmt.pix_mp.plane_fmt[0].sizeimage; =20 - f =3D inst->fmt_dst; + f =3D &inst->fmt_dst; f->type =3D V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE; f->fmt.pix_mp.pixelformat =3D V4L2_PIX_FMT_NV12; f->fmt.pix_mp.width =3D ALIGN(DEFAULT_WIDTH, 128); @@ -166,7 +163,7 @@ int iris_vdec_try_fmt(struct iris_inst *inst, struct v4= l2_format *f) switch (f->type) { case V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE: if (!fmt) { - f_inst =3D inst->fmt_src; + f_inst =3D &inst->fmt_src; f->fmt.pix_mp.width =3D f_inst->fmt.pix_mp.width; f->fmt.pix_mp.height =3D f_inst->fmt.pix_mp.height; f->fmt.pix_mp.pixelformat =3D f_inst->fmt.pix_mp.pixelformat; @@ -174,7 +171,7 @@ int iris_vdec_try_fmt(struct iris_inst *inst, struct v4= l2_format *f) break; case V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE: if (!fmt) { - f_inst =3D inst->fmt_dst; + f_inst =3D &inst->fmt_dst; f->fmt.pix_mp.pixelformat =3D f_inst->fmt.pix_mp.pixelformat; f->fmt.pix_mp.width =3D f_inst->fmt.pix_mp.width; f->fmt.pix_mp.height =3D f_inst->fmt.pix_mp.height; @@ -182,7 +179,7 @@ int iris_vdec_try_fmt(struct iris_inst *inst, struct v4= l2_format *f) =20 src_q =3D v4l2_m2m_get_src_vq(m2m_ctx); if (vb2_is_streaming(src_q)) { - f_inst =3D inst->fmt_src; + f_inst =3D &inst->fmt_src; f->fmt.pix_mp.height =3D f_inst->fmt.pix_mp.height; f->fmt.pix_mp.width =3D f_inst->fmt.pix_mp.width; } @@ -225,7 +222,7 @@ int iris_vdec_s_fmt(struct iris_inst *inst, struct v4l2= _format *f) if (!(find_format(inst, f->fmt.pix_mp.pixelformat, f->type))) return -EINVAL; =20 - fmt =3D inst->fmt_src; + fmt =3D &inst->fmt_src; fmt->type =3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE; fmt->fmt.pix_mp.pixelformat =3D f->fmt.pix_mp.pixelformat; inst->codec =3D fmt->fmt.pix_mp.pixelformat; @@ -243,7 +240,7 @@ int iris_vdec_s_fmt(struct iris_inst *inst, struct v4l2= _format *f) fmt->fmt.pix_mp.ycbcr_enc =3D f->fmt.pix_mp.ycbcr_enc; fmt->fmt.pix_mp.quantization =3D f->fmt.pix_mp.quantization; =20 - output_fmt =3D inst->fmt_dst; + output_fmt =3D &inst->fmt_dst; output_fmt->fmt.pix_mp.colorspace =3D f->fmt.pix_mp.colorspace; output_fmt->fmt.pix_mp.xfer_func =3D f->fmt.pix_mp.xfer_func; output_fmt->fmt.pix_mp.ycbcr_enc =3D f->fmt.pix_mp.ycbcr_enc; @@ -263,7 +260,7 @@ int iris_vdec_s_fmt(struct iris_inst *inst, struct v4l2= _format *f) if (!(find_format(inst, f->fmt.pix_mp.pixelformat, f->type))) return -EINVAL; =20 - fmt =3D inst->fmt_dst; + fmt =3D &inst->fmt_dst; fmt->type =3D V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE; fmt->fmt.pix_mp.pixelformat =3D f->fmt.pix_mp.pixelformat; fmt->fmt.pix_mp.width =3D ALIGN(f->fmt.pix_mp.width, 128); diff --git a/drivers/media/platform/qcom/iris/iris_venc.c b/drivers/media/p= latform/qcom/iris/iris_venc.c index 4d886769d958b..1efcf0fe80d58 100644 --- a/drivers/media/platform/qcom/iris/iris_venc.c +++ b/drivers/media/platform/qcom/iris/iris_venc.c @@ -19,15 +19,7 @@ int iris_venc_inst_init(struct iris_inst *inst) struct iris_core *core =3D inst->core; struct v4l2_format *f; =20 - inst->fmt_src =3D kzalloc_obj(*inst->fmt_src); - inst->fmt_dst =3D kzalloc_obj(*inst->fmt_dst); - if (!inst->fmt_src || !inst->fmt_dst) { - kfree(inst->fmt_src); - kfree(inst->fmt_dst); - return -ENOMEM; - } - - f =3D inst->fmt_dst; + f =3D &inst->fmt_dst; f->type =3D V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE; f->fmt.pix_mp.width =3D DEFAULT_WIDTH; f->fmt.pix_mp.height =3D DEFAULT_HEIGHT; @@ -44,7 +36,7 @@ int iris_venc_inst_init(struct iris_inst *inst) inst->buffers[BUF_OUTPUT].min_count =3D iris_vpu_buf_count(inst, BUF_OUTP= UT); inst->buffers[BUF_OUTPUT].size =3D f->fmt.pix_mp.plane_fmt[0].sizeimage; =20 - f =3D inst->fmt_src; + f =3D &inst->fmt_src; f->type =3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE; f->fmt.pix_mp.pixelformat =3D V4L2_PIX_FMT_NV12; f->fmt.pix_mp.width =3D ALIGN(DEFAULT_WIDTH, 128); @@ -194,7 +186,7 @@ int iris_venc_try_fmt(struct iris_inst *inst, struct v4= l2_format *f) switch (f->type) { case V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE: if (!fmt) { - f_inst =3D inst->fmt_src; + f_inst =3D &inst->fmt_src; f->fmt.pix_mp.width =3D f_inst->fmt.pix_mp.width; f->fmt.pix_mp.height =3D f_inst->fmt.pix_mp.height; f->fmt.pix_mp.pixelformat =3D f_inst->fmt.pix_mp.pixelformat; @@ -202,7 +194,7 @@ int iris_venc_try_fmt(struct iris_inst *inst, struct v4= l2_format *f) break; case V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE: if (!fmt) { - f_inst =3D inst->fmt_dst; + f_inst =3D &inst->fmt_dst; f->fmt.pix_mp.width =3D f_inst->fmt.pix_mp.width; f->fmt.pix_mp.height =3D f_inst->fmt.pix_mp.height; f->fmt.pix_mp.pixelformat =3D f_inst->fmt.pix_mp.pixelformat; @@ -234,15 +226,15 @@ static int iris_venc_s_fmt_output(struct iris_inst *i= nst, struct v4l2_format *f) =20 codec_align =3D venc_fmt->pixfmt =3D=3D V4L2_PIX_FMT_HEVC ? 32 : 16; =20 - fmt =3D inst->fmt_dst; + fmt =3D &inst->fmt_dst; fmt->type =3D V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE; /* * If output format size !=3D input format size, * it is considered a scaling case, * and the scaled size needs to be saved. */ - if (f->fmt.pix_mp.width !=3D inst->fmt_src->fmt.pix_mp.width || - f->fmt.pix_mp.height !=3D inst->fmt_src->fmt.pix_mp.height) { + if (f->fmt.pix_mp.width !=3D inst->fmt_src.fmt.pix_mp.width || + f->fmt.pix_mp.height !=3D inst->fmt_src.fmt.pix_mp.height) { inst->enc_scale_width =3D f->fmt.pix_mp.width; inst->enc_scale_height =3D f->fmt.pix_mp.height; fmt->fmt.pix_mp.width =3D ALIGN(f->fmt.pix_mp.width, codec_align); @@ -278,7 +270,7 @@ static int iris_venc_s_fmt_input(struct iris_inst *inst= , struct v4l2_format *f) if (!(find_format(inst, f->fmt.pix_mp.pixelformat, f->type))) return -EINVAL; =20 - fmt =3D inst->fmt_src; + fmt =3D &inst->fmt_src; fmt->type =3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE; fmt->fmt.pix_mp.width =3D ALIGN(f->fmt.pix_mp.width, 128); fmt->fmt.pix_mp.height =3D ALIGN(f->fmt.pix_mp.height, 32); @@ -292,7 +284,7 @@ static int iris_venc_s_fmt_input(struct iris_inst *inst= , struct v4l2_format *f) fmt->fmt.pix_mp.ycbcr_enc =3D f->fmt.pix_mp.ycbcr_enc; fmt->fmt.pix_mp.quantization =3D f->fmt.pix_mp.quantization; =20 - output_fmt =3D inst->fmt_dst; + output_fmt =3D &inst->fmt_dst; output_fmt->fmt.pix_mp.width =3D fmt->fmt.pix_mp.width; output_fmt->fmt.pix_mp.height =3D fmt->fmt.pix_mp.height; output_fmt->fmt.pix_mp.colorspace =3D fmt->fmt.pix_mp.colorspace; @@ -379,17 +371,17 @@ int iris_venc_s_selection(struct iris_inst *inst, str= uct v4l2_selection *s) s->r.left =3D 0; s->r.top =3D 0; =20 - if (s->r.width > inst->fmt_src->fmt.pix_mp.width || - s->r.height > inst->fmt_src->fmt.pix_mp.height) + if (s->r.width > inst->fmt_src.fmt.pix_mp.width || + s->r.height > inst->fmt_src.fmt.pix_mp.height) return -EINVAL; =20 inst->crop.left =3D s->r.left; inst->crop.top =3D s->r.top; inst->crop.width =3D s->r.width; inst->crop.height =3D s->r.height; - inst->fmt_dst->fmt.pix_mp.width =3D inst->crop.width; - inst->fmt_dst->fmt.pix_mp.height =3D inst->crop.height; - return iris_venc_s_fmt_output(inst, inst->fmt_dst); + inst->fmt_dst.fmt.pix_mp.width =3D inst->crop.width; + inst->fmt_dst.fmt.pix_mp.height =3D inst->crop.height; + return iris_venc_s_fmt_output(inst, &inst->fmt_dst); default: return -EINVAL; } diff --git a/drivers/media/platform/qcom/iris/iris_vidc.c b/drivers/media/p= latform/qcom/iris/iris_vidc.c index 5eb1786b07371..cfd95e8c57a3a 100644 --- a/drivers/media/platform/qcom/iris/iris_vidc.c +++ b/drivers/media/platform/qcom/iris/iris_vidc.c @@ -300,8 +300,6 @@ int iris_close(struct file *filp) mutex_unlock(&inst->lock); mutex_destroy(&inst->ctx_q_lock); mutex_destroy(&inst->lock); - kfree(inst->fmt_src); - kfree(inst->fmt_dst); kfree(inst); =20 return 0; @@ -360,9 +358,9 @@ static int iris_g_fmt_vid_mplane(struct file *filp, voi= d *fh, struct v4l2_format =20 mutex_lock(&inst->lock); if (V4L2_TYPE_IS_OUTPUT(f->type)) - *f =3D *inst->fmt_src; + *f =3D inst->fmt_src; else if (V4L2_TYPE_IS_CAPTURE(f->type)) - *f =3D *inst->fmt_dst; + *f =3D inst->fmt_dst; else ret =3D -EINVAL; =20 @@ -494,8 +492,8 @@ static int iris_g_selection(struct file *filp, void *fh= , struct v4l2_selection * switch (s->target) { case V4L2_SEL_TGT_CROP_BOUNDS: case V4L2_SEL_TGT_CROP_DEFAULT: - s->r.width =3D inst->fmt_src->fmt.pix_mp.width; - s->r.height =3D inst->fmt_src->fmt.pix_mp.height; + s->r.width =3D inst->fmt_src.fmt.pix_mp.width; + s->r.height =3D inst->fmt_src.fmt.pix_mp.height; break; case V4L2_SEL_TGT_CROP: s->r.width =3D inst->crop.width; diff --git a/drivers/media/platform/qcom/iris/iris_vpu2.c b/drivers/media/p= latform/qcom/iris/iris_vpu2.c index 01ef40f389574..574ff24ced0f5 100644 --- a/drivers/media/platform/qcom/iris/iris_vpu2.c +++ b/drivers/media/platform/qcom/iris/iris_vpu2.c @@ -15,7 +15,7 @@ static u64 iris_vpu2_calc_freq(struct iris_inst *inst, size_t data_size) { struct platform_inst_caps *caps =3D inst->core->iris_platform_data->inst_= caps; - struct v4l2_format *inp_f =3D inst->fmt_src; + struct v4l2_format *inp_f =3D &inst->fmt_src; u32 mbs_per_second, mbpf, height, width; unsigned long vpp_freq, vsp_freq; u32 fps =3D DEFAULT_FPS; diff --git a/drivers/media/platform/qcom/iris/iris_vpu_buffer.c b/drivers/m= edia/platform/qcom/iris/iris_vpu_buffer.c index 9270422c16019..bea3d4ed874a4 100644 --- a/drivers/media/platform/qcom/iris/iris_vpu_buffer.c +++ b/drivers/media/platform/qcom/iris/iris_vpu_buffer.c @@ -708,7 +708,7 @@ static u32 hfi_buffer_ibc_av1d(u32 frame_width, u32 fra= me_height) static u32 iris_vpu_dec_bin_size(struct iris_inst *inst) { u32 num_vpp_pipes =3D inst->core->iris_platform_data->num_vpp_pipe; - struct v4l2_format *f =3D inst->fmt_src; + struct v4l2_format *f =3D &inst->fmt_src; u32 height =3D f->fmt.pix_mp.height; u32 width =3D f->fmt.pix_mp.width; =20 @@ -727,7 +727,7 @@ static u32 iris_vpu_dec_bin_size(struct iris_inst *inst) static u32 iris_vpu_dec_comv_size(struct iris_inst *inst) { u32 num_comv =3D VIDEO_MAX_FRAME; - struct v4l2_format *f =3D inst->fmt_src; + struct v4l2_format *f =3D &inst->fmt_src; u32 height =3D f->fmt.pix_mp.height; u32 width =3D f->fmt.pix_mp.width; =20 @@ -778,7 +778,7 @@ static u32 iris_vpu_dec_dpb_size(struct iris_inst *inst) static u32 iris_vpu_dec_non_comv_size(struct iris_inst *inst) { u32 num_vpp_pipes =3D inst->core->iris_platform_data->num_vpp_pipe; - struct v4l2_format *f =3D inst->fmt_src; + struct v4l2_format *f =3D &inst->fmt_src; u32 height =3D f->fmt.pix_mp.height; u32 width =3D f->fmt.pix_mp.width; =20 @@ -793,7 +793,7 @@ static u32 iris_vpu_dec_non_comv_size(struct iris_inst = *inst) static u32 iris_vpu_dec_line_size(struct iris_inst *inst) { u32 num_vpp_pipes =3D inst->core->iris_platform_data->num_vpp_pipe; - struct v4l2_format *f =3D inst->fmt_src; + struct v4l2_format *f =3D &inst->fmt_src; u32 height =3D f->fmt.pix_mp.height; u32 width =3D f->fmt.pix_mp.width; bool is_opb =3D false; @@ -825,17 +825,17 @@ static u32 iris_vpu_dec_scratch1_size(struct iris_ins= t *inst) static inline u32 iris_vpu_enc_get_bitstream_width(struct iris_inst *inst) { if (is_rotation_90_or_270(inst)) - return inst->fmt_dst->fmt.pix_mp.height; + return inst->fmt_dst.fmt.pix_mp.height; else - return inst->fmt_dst->fmt.pix_mp.width; + return inst->fmt_dst.fmt.pix_mp.width; } =20 static inline u32 iris_vpu_enc_get_bitstream_height(struct iris_inst *inst) { if (is_rotation_90_or_270(inst)) - return inst->fmt_dst->fmt.pix_mp.width; + return inst->fmt_dst.fmt.pix_mp.width; else - return inst->fmt_dst->fmt.pix_mp.height; + return inst->fmt_dst.fmt.pix_mp.height; } =20 static inline u32 size_bin_bitstream_enc(u32 width, u32 height, @@ -936,7 +936,7 @@ static u32 iris_vpu_enc_bin_size(struct iris_inst *inst) =20 static u32 iris_vpu_dec_partial_size(struct iris_inst *inst) { - struct v4l2_format *f =3D inst->fmt_src; + struct v4l2_format *f =3D &inst->fmt_src; u32 height =3D f->fmt.pix_mp.height; u32 width =3D f->fmt.pix_mp.width; =20 @@ -1417,8 +1417,8 @@ static u32 iris_vpu_enc_arp_size(struct iris_inst *in= st) =20 inline bool is_scaling_enabled(struct iris_inst *inst) { - struct v4l2_pix_format_mplane *dst_fmt =3D &inst->fmt_dst->fmt.pix_mp; - struct v4l2_pix_format_mplane *src_fmt =3D &inst->fmt_src->fmt.pix_mp; + struct v4l2_pix_format_mplane *dst_fmt =3D &inst->fmt_dst.fmt.pix_mp; + struct v4l2_pix_format_mplane *src_fmt =3D &inst->fmt_src.fmt.pix_mp; =20 return dst_fmt->width !=3D src_fmt->width || dst_fmt->height !=3D src_fmt->height; @@ -1686,7 +1686,7 @@ static u32 iris_vpu_enc_scratch2_size(struct iris_ins= t *inst) static u32 iris_vpu_enc_vpss_size(struct iris_inst *inst) { u32 ds_enable =3D is_scaling_enabled(inst); - struct v4l2_format *f =3D inst->fmt_dst; + struct v4l2_format *f =3D &inst->fmt_dst; u32 height =3D f->fmt.pix_mp.height; u32 width =3D f->fmt.pix_mp.width; =20 @@ -1759,7 +1759,7 @@ static u32 iris_vpu4x_dec_line_size(struct iris_inst = *inst) { u32 num_vpp_pipes =3D inst->core->iris_platform_data->num_vpp_pipe; u32 out_min_count =3D inst->buffers[BUF_OUTPUT].min_count; - struct v4l2_format *f =3D inst->fmt_src; + struct v4l2_format *f =3D &inst->fmt_src; u32 height =3D f->fmt.pix_mp.height; u32 width =3D f->fmt.pix_mp.width; bool is_opb =3D false; @@ -1983,7 +1983,7 @@ static u32 iris_vpu4x_enc_line_size(struct iris_inst = *inst) { u32 num_vpp_pipes =3D inst->core->iris_platform_data->num_vpp_pipe; u32 lcu_size =3D inst->codec =3D=3D V4L2_PIX_FMT_HEVC ? 32 : 16; - struct v4l2_format *f =3D inst->fmt_dst; + struct v4l2_format *f =3D &inst->fmt_dst; u32 height =3D f->fmt.pix_mp.height; u32 width =3D f->fmt.pix_mp.width; =20 diff --git a/drivers/media/platform/qcom/iris/iris_vpu_common.c b/drivers/m= edia/platform/qcom/iris/iris_vpu_common.c index 69e6126dc4d95..8e68990afa73e 100644 --- a/drivers/media/platform/qcom/iris/iris_vpu_common.c +++ b/drivers/media/platform/qcom/iris/iris_vpu_common.c @@ -416,7 +416,7 @@ void iris_vpu35_vpu4x_program_bootup_registers(struct i= ris_core *core) u64 iris_vpu3x_vpu4x_calculate_frequency(struct iris_inst *inst, size_t da= ta_size) { struct platform_inst_caps *caps =3D inst->core->iris_platform_data->inst_= caps; - struct v4l2_format *inp_f =3D inst->fmt_src; + struct v4l2_format *inp_f =3D &inst->fmt_src; u32 height, width, mbs_per_second, mbpf; u64 fw_cycles, fw_vpp_cycles; u64 vsp_cycles, vpp_cycles; --=20 2.51.0