From nobody Sat Apr 18 09:30:54 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4610B4657F9 for ; Sat, 28 Feb 2026 15:26:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772292398; cv=none; b=PIsXNvSyTsI0s9C4x7YLcBGh3+hvaHW27hgdEy1R/kVCav9ZPb4RTAylIebjQg4GaBWDEyxmXT/h88VvFPxPK1kgooWHxRL9EwV/lJb9L1NSuDgK6CI9rgYB9K8k+zWeUg5KgKjfTV03u5cN5JY+PMB8YxzaFcdTbV99lbluyFU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772292398; c=relaxed/simple; bh=M54qLiSx0tAuQGp4cYCiU0fjAE2JjhmPrU/j/fMoZxg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=osmHGSVeZFRg4T04dWY4vgT7nXXwHs0bZCMAkNCnwQX9ohTO4MB0xlJ1O2+A3wvWc0kbTcooQBeS213poFk2juqAUt25Dyo2moQmxZrngJhpKINgNtk3yBtZ5YSQXreHciTxoVVmoomUg/UffykpP4X0Nypmk2PF5lEVCnK+31Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=E+emVWye; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=XONw6AAh; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="E+emVWye"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="XONw6AAh" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61SEQo6R2738347 for ; Sat, 28 Feb 2026 15:26:35 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= +utxNAm/m2FGs9Q1dMAeV4ThMYgtQg6P+gmWB/t/PiY=; b=E+emVWyeisHTsacX EWMONZIeQHNIEUBiyesotPfVARs0ZTGv42Onw/OBx2UW4KGlU6e1LdQG2etp1bKE k9W6e2uErueIpuqQRrAin4HpPl0H5XVmt9EK0AaEqEP77LGy/uDt+/FwQzlc9CjJ exUuTw1HN3513+tAFlznYvFxolb0YEGqGJ69EFcKiRivsPd+fCd7JDJM+9dPeDvF I4c75VOctP0Vk05t8IBTBJ/R8SfR86QZjQXskZoGvRo6O/YSAefWH175GUdZ8E8R 7lLcMo+e6F4SaO3x5/q0LC1SkPn8uPwczbcCyPL9nTdeDCGCbFNzMYR0LREQjTPg A+f4gQ== Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cksgrs5v2-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 28 Feb 2026 15:26:35 +0000 (GMT) Received: by mail-qk1-f198.google.com with SMTP id af79cd13be357-8cb42f56c4aso2768470285a.3 for ; Sat, 28 Feb 2026 07:26:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1772292395; x=1772897195; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=+utxNAm/m2FGs9Q1dMAeV4ThMYgtQg6P+gmWB/t/PiY=; b=XONw6AAhKV19KTvjiuxAkzL5tN/wzw65i+/VfQxBRaO7zzc4s1TbeYHokZLI5EM1hK 3LAaneQKlNj/SfUbEUZ6QpaNdI71O1ByokIRsw7JuqsTIvIuAxQmCoR1F213yQ6yiNcx JDcbKL1QDaLoXCMfxrsntbd2ZncsPnag7eBEb9DJcIBXa34p6Nnb9NoK4AhBMDlOVAN4 hL2xLP2CDUFZ8TqYr4DqojpXZenpvsjmx9Zl7PW4u6xIvp0u8Jh7PaB+/xI/3rcoIncm QuDd4rZNQBrE397D1V+6Eg+AZvmXul6D6OOu5d5xJdmkPGMLKYEw6AF8X/sNYiDc7ljN OBvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772292395; x=1772897195; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=+utxNAm/m2FGs9Q1dMAeV4ThMYgtQg6P+gmWB/t/PiY=; b=Swrd+fP1ugPsf+8tdTRAe7l6mhqsSCcL+bMQ7/IlSbuw4ADDYmtT2CYwvXM//AmX27 SguBZ50f2YNsaMHHPzVsGZlCCpks+hRSs/aG8CnOZqY1xbmLZV7bNp7/Z+YjuCkd2/na rF/Cx1nUwHCfYv9XgExODQsyHJp5QI23jXUIV7XwoOVkvFxy+6AJWoVedqHXAb+JSr6+ CrHltKZuGMiZlrpZ6sOIMUF9ONw7Jjj16jSEAYtjKR2VN/9q2YM5QvWK1bIv1mP5JNWu s/djcRi3wDuJMP0nqSZkdtk1gsapSu4ZfsyK3b8iQzaCtD/CQkkmuhlU0RZvSDqqZK0u CrVA== X-Forwarded-Encrypted: i=1; AJvYcCWnsQD7QqkfqSjpWIJkW3hcJVMgVkfPcaDhaj9n45I2Ba9+oHC7DsYtzAqSXcZSPhJAk97DPsbcc8wF4nA=@vger.kernel.org X-Gm-Message-State: AOJu0YxALQw92CIfL1F5R4jIQQqNETx2BQxkdVRtVVzdLVDHczxuaoxe vKAN9zQq5uvp1IfNCBNPjUe4YmhYg3qHLJ41JJz9qMTAMU6YaNF7TznQPXM2CpBBrzQ64xD4etB zIV5yNplWQe1GSWE8Rhf1CSwQYug/oWTKa7BJoVyoLLTCl4pHvsgLBhb5k2YnyumPQkc= X-Gm-Gg: ATEYQzw7X/ArZ590dn6c5UBm1IYyVBe6a1iVWvTiM5wHZukF7oHUCLJcBCfmOSH8zTU Mp2ju/YAYMVghTwDG63no0ll0NqQMPhdb3lfty1njQNuL/YTcvZxb/zTCZkTcd69YF7DuwISgCF b5luK4bjFLSm2BTOWfkpa/GYq+IXrn4IbyNSwvORWI1oqhGllXDU7a4VlBgTG0Noj/qW4xJLBe9 81nHz6mLsJoB1IwsJ4twjRiCYW/tNvhoql1+hE8xmQPZp0lWIxnYzdSQhUpv7/l6hVBT6NOLNvA 94l1lK4inOQTgCC8K5tl7ottolHLKFb/AwZhY4B/ySiGHGnS2dJYPCsHiXQv8q2tCZXFuCmjhtX YbVXCKogU6GVGJW2qqurQWxwnsxdWgnDJoDatkXKsvW0imaVyBocUkchYCsMcBdqDjltn3VxjU2 ix7NlwgN1prByZBUJWNa2kH130TFPH8bGEAc8= X-Received: by 2002:a05:620a:3949:b0:8c7:1b3f:7d0c with SMTP id af79cd13be357-8cbc8e55216mr837955585a.16.1772292394659; Sat, 28 Feb 2026 07:26:34 -0800 (PST) X-Received: by 2002:a05:620a:3949:b0:8c7:1b3f:7d0c with SMTP id af79cd13be357-8cbc8e55216mr837952385a.16.1772292394167; Sat, 28 Feb 2026 07:26:34 -0800 (PST) Received: from umbar.lan (2001-14ba-a073-af00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a073:af00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5a115b57922sm625558e87.63.2026.02.28.07.26.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 28 Feb 2026 07:26:33 -0800 (PST) From: Dmitry Baryshkov Date: Sat, 28 Feb 2026 17:26:28 +0200 Subject: [PATCH v2 01/11] media: qcom: iris: drop pas_id from the iris_platform_data struct Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260228-iris-platform-data-v2-1-acf036a3c84c@oss.qualcomm.com> References: <20260228-iris-platform-data-v2-0-acf036a3c84c@oss.qualcomm.com> In-Reply-To: <20260228-iris-platform-data-v2-0-acf036a3c84c@oss.qualcomm.com> To: Vikash Garodia , Dikshita Agarwal , Abhinav Kumar , Bryan O'Donoghue , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=6033; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=M54qLiSx0tAuQGp4cYCiU0fjAE2JjhmPrU/j/fMoZxg=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpowkmTu4QornIC7qeD88xt8cB+FYEbe9Tcm2Ex jaQGrf+A+GJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaaMJJgAKCRCLPIo+Aiko 1cYyCACfspNGGzFvCAUwZeNzBL76kgvuZeUa45t5mMAtX0bBrjrpqktER9q6edzQ8sJ0649YyvI heHAL74yQm9UHn20EH4/sfze01NlfNVOQ0h9su2JxbrgdBk6wTpNYmSBvlM+BkMWiFaUrUN4gxj v7MnQN0pXZSiR+lv6MpqiO3MSXw0+1zx4RNJYFJ+hrkVWqJK/Q+zLZkKjZA1F+ORtLbhyGJxrzZ qFb8R2S3FdR3sMW1X33Pa/n406ap+I9oScvT3xM+sby2BYcsy+ZziAA4GkpglTVgWWzinZUgfRz i73KjwPpgAlO1O81/H/3w62no0g/fGSpQegB2dtXAJ0REP6v X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI4MDE0MiBTYWx0ZWRfX39WV4YGlhhdG +rinflUupzXcKh0c6l7RATO5kzxje/mUabV1pZj+alqHllJvdMGR15NpPTmGTW50vMu/XGU1Vls Jrfvxr5PGCphFwSoMR8aWiScY35vSeBk/13YIFJIFj6bZtYxKpAe5dOSlmNzTtUUrHwUyzAIvSN YWlLm+iFd5uBPzAuSxMwwLp6mglKnHm+FtsaiHhhNyqES0sUycKNkg82XoTv+KxLXYt4OLomH+O TGeSXsisZtl9Z6Wh43tRSAM77RjEMbAfdA+mAVWQpyd9uk3Qyhwjt8zIa9Cgj1isoS0vviIfgt4 /6MQYZsNLxgogwyhRDm/Xusu+fHbcMs5SYDUnCArl0F1cnJLNk4o2r30OiILJIcyr2A+VxjOjy1 ZYUKYX3vfJdXAa/yfKH6DweExka/X9Lq30G2fm22gm07y6C1p4x6haEpEMM6aGpDWtTJokxtn2x hLII1X/7rBTLMq7L+3A== X-Proofpoint-GUID: Ya4sPcbrSF305Rf2NESHoD5ZnQdiN9Cx X-Proofpoint-ORIG-GUID: Ya4sPcbrSF305Rf2NESHoD5ZnQdiN9Cx X-Authority-Analysis: v=2.4 cv=Zqzg6t7G c=1 sm=1 tr=0 ts=69a3092b cx=c_pps a=qKBjSQ1v91RyAK45QCPf5w==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=EUspDBNiAAAA:8 a=iXhRqYnz1ivtNB1IvZoA:9 a=QEXdDO2ut3YA:10 a=NFOGd7dJGGMPyQGDc5-O:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-28_05,2026-02-27_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 lowpriorityscore=0 spamscore=0 priorityscore=1501 phishscore=0 suspectscore=0 impostorscore=0 malwarescore=0 bulkscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2602280142 The PAS ID, the authentication service ID, used by the Iris is a constant and it is not expected to change anytime. Drop it from the platform data and use the constant instead. Signed-off-by: Dmitry Baryshkov Reviewed-by: Dikshita Agarwal Reviewed-by: Konrad Dybcio --- drivers/media/platform/qcom/iris/iris_firmware.c | 11 ++++++----- drivers/media/platform/qcom/iris/iris_platform_common.h | 2 -- drivers/media/platform/qcom/iris/iris_platform_gen1.c | 2 -- drivers/media/platform/qcom/iris/iris_platform_gen2.c | 4 ---- 4 files changed, 6 insertions(+), 13 deletions(-) diff --git a/drivers/media/platform/qcom/iris/iris_firmware.c b/drivers/med= ia/platform/qcom/iris/iris_firmware.c index 5f408024e967..bc6c5c3e00c3 100644 --- a/drivers/media/platform/qcom/iris/iris_firmware.c +++ b/drivers/media/platform/qcom/iris/iris_firmware.c @@ -12,11 +12,12 @@ #include "iris_core.h" #include "iris_firmware.h" =20 +#define IRIS_PAS_ID 9 + #define MAX_FIRMWARE_NAME_SIZE 128 =20 static int iris_load_fw_to_memory(struct iris_core *core, const char *fw_n= ame) { - u32 pas_id =3D core->iris_platform_data->pas_id; const struct firmware *firmware =3D NULL; struct device *dev =3D core->dev; struct resource res; @@ -53,7 +54,7 @@ static int iris_load_fw_to_memory(struct iris_core *core,= const char *fw_name) } =20 ret =3D qcom_mdt_load(dev, firmware, fw_name, - pas_id, mem_virt, mem_phys, res_size, NULL); + IRIS_PAS_ID, mem_virt, mem_phys, res_size, NULL); =20 memunmap(mem_virt); err_release_fw: @@ -79,7 +80,7 @@ int iris_fw_load(struct iris_core *core) return -ENOMEM; } =20 - ret =3D qcom_scm_pas_auth_and_reset(core->iris_platform_data->pas_id); + ret =3D qcom_scm_pas_auth_and_reset(IRIS_PAS_ID); if (ret) { dev_err(core->dev, "auth and reset failed: %d\n", ret); return ret; @@ -93,7 +94,7 @@ int iris_fw_load(struct iris_core *core) cp_config->cp_nonpixel_size); if (ret) { dev_err(core->dev, "qcom_scm_mem_protect_video_var failed: %d\n", ret); - qcom_scm_pas_shutdown(core->iris_platform_data->pas_id); + qcom_scm_pas_shutdown(IRIS_PAS_ID); return ret; } } @@ -103,7 +104,7 @@ int iris_fw_load(struct iris_core *core) =20 int iris_fw_unload(struct iris_core *core) { - return qcom_scm_pas_shutdown(core->iris_platform_data->pas_id); + return qcom_scm_pas_shutdown(IRIS_PAS_ID); } =20 int iris_set_hw_state(struct iris_core *core, bool resume) diff --git a/drivers/media/platform/qcom/iris/iris_platform_common.h b/driv= ers/media/platform/qcom/iris/iris_platform_common.h index f42e1798747c..e4eefc646c7f 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_common.h +++ b/drivers/media/platform/qcom/iris/iris_platform_common.h @@ -12,7 +12,6 @@ struct iris_core; struct iris_inst; =20 -#define IRIS_PAS_ID 9 #define HW_RESPONSE_TIMEOUT_VALUE (1000) /* milliseconds */ #define AUTOSUSPEND_DELAY_VALUE (HW_RESPONSE_TIMEOUT_VALUE + 500) /* mil= liseconds */ =20 @@ -226,7 +225,6 @@ struct iris_platform_data { unsigned int controller_rst_tbl_size; u64 dma_mask; const char *fwname; - u32 pas_id; struct iris_fmt *inst_iris_fmts; u32 inst_iris_fmts_size; struct platform_inst_caps *inst_caps; diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen1.c b/driver= s/media/platform/qcom/iris/iris_platform_gen1.c index df8e6bf9430e..1bbdefc48d71 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen1.c +++ b/drivers/media/platform/qcom/iris/iris_platform_gen1.c @@ -360,7 +360,6 @@ const struct iris_platform_data sm8250_data =3D { /* Upper bound of DMA address range */ .dma_mask =3D 0xe0000000 - 1, .fwname =3D "qcom/vpu-1.0/venus.mbn", - .pas_id =3D IRIS_PAS_ID, .inst_iris_fmts =3D platform_fmts_sm8250_dec, .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8250_dec), .inst_caps =3D &platform_inst_cap_sm8250, @@ -413,7 +412,6 @@ const struct iris_platform_data sc7280_data =3D { /* Upper bound of DMA address range */ .dma_mask =3D 0xe0000000 - 1, .fwname =3D "qcom/vpu/vpu20_p1.mbn", - .pas_id =3D IRIS_PAS_ID, .inst_iris_fmts =3D platform_fmts_sm8250_dec, .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8250_dec), .inst_caps =3D &platform_inst_cap_sm8250, diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen2.c b/driver= s/media/platform/qcom/iris/iris_platform_gen2.c index a526b50a1cd3..1f23ddb972f0 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen2.c +++ b/drivers/media/platform/qcom/iris/iris_platform_gen2.c @@ -934,7 +934,6 @@ const struct iris_platform_data sm8550_data =3D { /* Upper bound of DMA address range */ .dma_mask =3D 0xe0000000 - 1, .fwname =3D "qcom/vpu/vpu30_p4.mbn", - .pas_id =3D IRIS_PAS_ID, .inst_iris_fmts =3D platform_fmts_sm8550_dec, .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8550_dec), .inst_caps =3D &platform_inst_cap_sm8550, @@ -1038,7 +1037,6 @@ const struct iris_platform_data sm8650_data =3D { /* Upper bound of DMA address range */ .dma_mask =3D 0xe0000000 - 1, .fwname =3D "qcom/vpu/vpu33_p4.mbn", - .pas_id =3D IRIS_PAS_ID, .inst_iris_fmts =3D platform_fmts_sm8550_dec, .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8550_dec), .inst_caps =3D &platform_inst_cap_sm8550, @@ -1133,7 +1131,6 @@ const struct iris_platform_data sm8750_data =3D { /* Upper bound of DMA address range */ .dma_mask =3D 0xe0000000 - 1, .fwname =3D "qcom/vpu/vpu35_p4.mbn", - .pas_id =3D IRIS_PAS_ID, .inst_iris_fmts =3D platform_fmts_sm8550_dec, .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8550_dec), .inst_caps =3D &platform_inst_cap_sm8550, @@ -1232,7 +1229,6 @@ const struct iris_platform_data qcs8300_data =3D { /* Upper bound of DMA address range */ .dma_mask =3D 0xe0000000 - 1, .fwname =3D "qcom/vpu/vpu30_p4_s6.mbn", - .pas_id =3D IRIS_PAS_ID, .inst_iris_fmts =3D platform_fmts_sm8550_dec, .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8550_dec), .inst_caps =3D &platform_inst_cap_qcs8300, --=20 2.47.3 From nobody Sat Apr 18 09:30:54 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6A0EC47AF76 for ; Sat, 28 Feb 2026 15:26:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772292398; cv=none; b=QlhJC/oOSvUHt2hZ0X00dhyHw/7ftUC7Jn+cO2e6I5fbsh/NEXCfWmq+6kcmAlvCBnVAwVHD9JWarWFaQDagKRXYwdRSDrdskZ+Ed/YdJiC0r9SCKkmmW4n52F6nVGqtVuv4SxgL27w7+/HX4KXoGbD5tjRhCsswkldjyANouiM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772292398; c=relaxed/simple; bh=cozHaXyel6vCnb2b5CRPNm/bE4FmckiolWb20IIUyEw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=HHgNXhMqDDuMcAmgDvDna+tJtc2sBQuGNGfJjnvAjLiOuF2hhkT+/zV7bdu5DvxvPve5X3RIWgqaGsytIORP1watTcM8H0QCvyDbYp5iCt533Gh0JjKXTMqsUbsl+C7GlwqdTvKZStS4Ne0duaswf519EtXtnHjgA0Wt4AnEFt4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=Ml+5kW9J; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=DeNBG2b1; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="Ml+5kW9J"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="DeNBG2b1" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61SEPtxv2778692 for ; Sat, 28 Feb 2026 15:26:37 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= 5zBOTIVuC5vt+qq5eN9os89kcIjnyYdPrkuDKQfByL0=; b=Ml+5kW9JxP5y7FAE gRZH9/eD+67CGhU4oHAWVuuGPIavOVeS+LvAO41lni90vbOfI52FQfrkHBjJoIVB zHJjNj2skBGI65I/rPCVae0kfs++WPpq+A1s+BvIfM+v0o8S4OK5IwLnpRBSRJld 3bXwPRiZw11OO/JwVuP7WG8kZE2CXakN3gBildGBidpn6z8eXz+hPt/fP7rYcXUu b6CunkdfecRTPr/coR2jNUMA/R4DtpaL4+9GgzbFHRNRiqr+ExuP4eQoxl5fsOVR delfWAFeVvNaYmxHWIdxQ10JHfKMXwZPPdDxsxUFjbKEAi4sWKyjyp+C4FlK3oN9 tB8eqQ== Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cksgq15tb-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 28 Feb 2026 15:26:36 +0000 (GMT) Received: by mail-qk1-f200.google.com with SMTP id af79cd13be357-8c882774f0dso2495792285a.2 for ; Sat, 28 Feb 2026 07:26:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1772292396; x=1772897196; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=5zBOTIVuC5vt+qq5eN9os89kcIjnyYdPrkuDKQfByL0=; b=DeNBG2b1HcNuO3/VCfxSImAjSSM+LUPtS7TUb4L5wyLcwtQ6lhpJ7ufP0nq+0s4fiQ IQl2u1EitcndcSMfdNCvOZ1FCS1Uxa9tgvtk+vwKohFWSb6FGbZGL+VFuVeESdD1+LFh B59laWK+5XPTC6a4vOWTiR4mSOW0WUFFTNnrjYOqS4N4YoWh9SEuXRJic2C+KQp8k5mW Uo4aG/2GppWUbXk1vUgJWagi//MJM3dw8kkWYu5tezaaOcUHEs7UNxviNbDp0eKdbZMw 3Kv0iYwJwKyr9nhtpuez4oHJzUSv/KDg74e+JxwrvgZ0+O9D0tEgpesJd3DqGGHem254 yKOQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772292396; x=1772897196; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=5zBOTIVuC5vt+qq5eN9os89kcIjnyYdPrkuDKQfByL0=; b=UhWiFX/OSTHLQ0TyjmVe3+dU+2An9nmoii6dF5n2ENVwE6QnEieaQZO3ODNjOkdRoM gPcTm86tlb7p8M+e0Q59Ex7ZZwwXxrf7Ad47b59o1apBUfwHrctZ5QOpjfl6NRtLA0JW wwo698LuvTiy/cIjoXDdDtpf29v8sGXwH7xTcAfD1ERVBe/HUfMfbkfUOEZrtTpIQ5LF q7Mu8TuJWi4WlikeC0fYaO2xBT4BVBOwhlJUu+mf9qoTIrgsZBHrEJmMx1MJtZO6rcyn wcN6nZtL7qaKk8wzj6Ik3Kyw63jJXL4vcP4Jt/eSS3AA7j158+493aKj1WqytKu/6QYG wpeA== X-Forwarded-Encrypted: i=1; AJvYcCUoORvnAEsJAoWSzmDhL2wC5cBEL1W4YNzpFzqO3t2nZ24R8YiAWXz+FCRmTRT5YDDCrFciKOdyssKqR7s=@vger.kernel.org X-Gm-Message-State: AOJu0YwsPZ3wnYkq5qmlcAcf/JzstvyORKOCoBpoblIwDS3p+B2aDnKG MEHq/+Jo7zipJivPydSKK2TYQCACMiY9gF6oXK5RS3FRmed25vk9wj8XmGyg2z18xmJRxaiFxq4 FAIyTRlaqJiMO5XiI1HSX5hRwR4lNjVNr74naWfvck2Sgk1FxllBIy03cFKXLxBYf8z8= X-Gm-Gg: ATEYQzwmh/bICqsI9mgKEJNDjaTB/ReM0Xsu1NmiV9QWUedcV8UPtltuErRO03fQV/v BiQ9ljRq88mZ/B3Xl3w7uJCafKDYgTjBWhSTFIvkwPS/KcfXsij3y6CAyt3uogxjc91BB0feYzq dMoDpyO/xZ7W1/87Uildm5eDAHPp7hYQ/4dtUeP2sSrOFkDQy4gW2XAd9qufZr0XbZa5LH5A4tP 8y2mQWC0DGiERq/wJ34eLL063w+kmYVq6QOfGK4ozpn+0lJQS2GfmZj857I42IdmNaC4y76wxCN ly7wQPUGBSoqK8rCSYkCxGYO0FffRptMCBl1ExzULytA8/AqSJJopg3PyaLwv18lsumQwtWRHja 7crxNNxqcekAeG1s87TxkqgyOfMjLwxlLPOqucjxe38fcJ2kgQwMALdY7cdVdqJQchU/zTmzDIJ LbT8dTWh1KHMVKdcQiROCA/6yYjzl0Kqh6QyI= X-Received: by 2002:a05:620a:28c5:b0:8cb:72b2:2a05 with SMTP id af79cd13be357-8cbc8d7345emr827980985a.2.1772292395731; Sat, 28 Feb 2026 07:26:35 -0800 (PST) X-Received: by 2002:a05:620a:28c5:b0:8cb:72b2:2a05 with SMTP id af79cd13be357-8cbc8d7345emr827977485a.2.1772292395223; Sat, 28 Feb 2026 07:26:35 -0800 (PST) Received: from umbar.lan (2001-14ba-a073-af00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a073:af00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5a115b57922sm625558e87.63.2026.02.28.07.26.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 28 Feb 2026 07:26:34 -0800 (PST) From: Dmitry Baryshkov Date: Sat, 28 Feb 2026 17:26:29 +0200 Subject: [PATCH v2 02/11] media: qcom: iris: extract common set_preset_registers function Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260228-iris-platform-data-v2-2-acf036a3c84c@oss.qualcomm.com> References: <20260228-iris-platform-data-v2-0-acf036a3c84c@oss.qualcomm.com> In-Reply-To: <20260228-iris-platform-data-v2-0-acf036a3c84c@oss.qualcomm.com> To: Vikash Garodia , Dikshita Agarwal , Abhinav Kumar , Bryan O'Donoghue , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=5636; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=cozHaXyel6vCnb2b5CRPNm/bE4FmckiolWb20IIUyEw=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpowkmTaHj2gM+eOMF0djIbpJDd7s5WlEmFtE9A H7lsYeElGSJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaaMJJgAKCRCLPIo+Aiko 1dNSB/9hGaQ5l4ara/jaUecIEv8kxqM7/68hFhxBA/l68TmHvQGvvHluIzyG5IZ5xxAI3qBnibW wcf53+J7mqdnlg9Bmo1PZuReGdYYt+ixcHbnyrOYtwtMTbr+pRLb6RKPUjvVlgDDUDm+QqRkkEC t1WHLb5KdRwsBXXXU60gH+M8K12IxQ6ygmAqyNTPKfPapA/AwD0XLg9p+TpDvn/rqk0Rp6E+MYP 1d3YDr10sY2i6SVNOFRXTwpnSbHCW/7CS7XX5YYE6QiHcaRqdeUyapOvlCQCDm5lp1irsxFCN9v Mg1850k6qlo2+O8JEy2VV2iTqYzZNssTDAV/77nZ8OzdpoyN X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-GUID: b3ArL4uRVNGJPO-wD3-kgmQcwsR9n6j0 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI4MDE0MiBTYWx0ZWRfXz9eU7r0IbISD tThXDhLGWdSQpxjIUxAxXTYM5KDd7L6xyh5t/CaDEJX1rgjW5Bg9kl3ByiyC+xW4Kq0rNiD/jyU 3WU2E870qOQPU5mK5nfYsYwwuDu5dZZzAFaBYZsksCKGCnzPXUBYIz26ILwlG2t4vDC1mFfJW17 OTgqsuGsOgWK+Rj0em7g4HKiqQci9RU2RfjPK2/YOdZGZenQc+o5Yih+fwNh6p58lW4oobkYsE4 ACFaQv1xVwJXi98W0FFerPkRrxJcmpeOZnPvmqL/yVEW2y6z2r6gn3msxh/l/wZeh7Mm6EEOnA+ /RfnpIfdmUaHEVbnNHk9zOETVHG6HylJpiqSDGz2dlNL/qDJR0IVpwXzTw8lcpHHRoV3LsCR3Og N6nbyUPzvBsMnU0bT5pqfK3tD7FgbSksMmGoHtDSr3SbjNryH1gZDS76wGpE/SZ1A/taNTZ2Mai Rx7a1U6usjWZghuhekw== X-Authority-Analysis: v=2.4 cv=bdRmkePB c=1 sm=1 tr=0 ts=69a3092c cx=c_pps a=hnmNkyzTK/kJ09Xio7VxxA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=EUspDBNiAAAA:8 a=h-rriOPNHJBWU_5FlFgA:9 a=QEXdDO2ut3YA:10 a=PEH46H7Ffwr30OY-TuGO:22 X-Proofpoint-ORIG-GUID: b3ArL4uRVNGJPO-wD3-kgmQcwsR9n6j0 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-28_05,2026-02-27_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 bulkscore=0 priorityscore=1501 clxscore=1015 malwarescore=0 impostorscore=0 suspectscore=0 adultscore=0 spamscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2602280142 The set_preset_registers is (currently) common to all supported devices. Extract it to a iris_vpu_common.c Signed-off-by: Dmitry Baryshkov --- drivers/media/platform/qcom/iris/iris_platform_gen1.c | 9 ++------- drivers/media/platform/qcom/iris/iris_platform_gen2.c | 13 ++++--------- drivers/media/platform/qcom/iris/iris_vpu_common.c | 5 +++++ drivers/media/platform/qcom/iris/iris_vpu_common.h | 2 ++ 4 files changed, 13 insertions(+), 16 deletions(-) diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen1.c b/driver= s/media/platform/qcom/iris/iris_platform_gen1.c index 1bbdefc48d71..a3eebcacba7b 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen1.c +++ b/drivers/media/platform/qcom/iris/iris_platform_gen1.c @@ -260,11 +260,6 @@ static struct platform_inst_caps platform_inst_cap_sm8= 250 =3D { .max_operating_rate =3D MAXIMUM_FPS, }; =20 -static void iris_set_sm8250_preset_registers(struct iris_core *core) -{ - writel(0x0, core->reg_base + 0xB0088); -} - static const struct icc_info sm8250_icc_table[] =3D { { "cpu-cfg", 1000, 1000 }, { "video-mem", 1000, 15000000 }, @@ -343,7 +338,7 @@ const struct iris_platform_data sm8250_data =3D { .init_hfi_response_ops =3D iris_hfi_gen1_response_ops_init, .get_vpu_buffer_size =3D iris_vpu_buf_size, .vpu_ops =3D &iris_vpu2_ops, - .set_preset_registers =3D iris_set_sm8250_preset_registers, + .set_preset_registers =3D iris_vpu_set_preset_registers, .icc_tbl =3D sm8250_icc_table, .icc_tbl_size =3D ARRAY_SIZE(sm8250_icc_table), .clk_rst_tbl =3D sm8250_clk_reset_table, @@ -397,7 +392,7 @@ const struct iris_platform_data sc7280_data =3D { .init_hfi_response_ops =3D iris_hfi_gen1_response_ops_init, .get_vpu_buffer_size =3D iris_vpu_buf_size, .vpu_ops =3D &iris_vpu2_ops, - .set_preset_registers =3D iris_set_sm8250_preset_registers, + .set_preset_registers =3D iris_vpu_set_preset_registers, .icc_tbl =3D sm8250_icc_table, .icc_tbl_size =3D ARRAY_SIZE(sm8250_icc_table), .bw_tbl_dec =3D sc7280_bw_table_dec, diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen2.c b/driver= s/media/platform/qcom/iris/iris_platform_gen2.c index 1f23ddb972f0..f8754451ac18 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen2.c +++ b/drivers/media/platform/qcom/iris/iris_platform_gen2.c @@ -756,11 +756,6 @@ static struct platform_inst_caps platform_inst_cap_sm8= 550 =3D { .max_operating_rate =3D MAXIMUM_FPS, }; =20 -static void iris_set_sm8550_preset_registers(struct iris_core *core) -{ - writel(0x0, core->reg_base + 0xB0088); -} - static const struct icc_info sm8550_icc_table[] =3D { { "cpu-cfg", 1000, 1000 }, { "video-mem", 1000, 15000000 }, @@ -917,7 +912,7 @@ const struct iris_platform_data sm8550_data =3D { .init_hfi_response_ops =3D iris_hfi_gen2_response_ops_init, .get_vpu_buffer_size =3D iris_vpu_buf_size, .vpu_ops =3D &iris_vpu3_ops, - .set_preset_registers =3D iris_set_sm8550_preset_registers, + .set_preset_registers =3D iris_vpu_set_preset_registers, .icc_tbl =3D sm8550_icc_table, .icc_tbl_size =3D ARRAY_SIZE(sm8550_icc_table), .clk_rst_tbl =3D sm8550_clk_reset_table, @@ -1018,7 +1013,7 @@ const struct iris_platform_data sm8650_data =3D { .init_hfi_response_ops =3D iris_hfi_gen2_response_ops_init, .get_vpu_buffer_size =3D iris_vpu33_buf_size, .vpu_ops =3D &iris_vpu33_ops, - .set_preset_registers =3D iris_set_sm8550_preset_registers, + .set_preset_registers =3D iris_vpu_set_preset_registers, .icc_tbl =3D sm8550_icc_table, .icc_tbl_size =3D ARRAY_SIZE(sm8550_icc_table), .clk_rst_tbl =3D sm8650_clk_reset_table, @@ -1114,7 +1109,7 @@ const struct iris_platform_data sm8750_data =3D { .init_hfi_response_ops =3D iris_hfi_gen2_response_ops_init, .get_vpu_buffer_size =3D iris_vpu33_buf_size, .vpu_ops =3D &iris_vpu35_ops, - .set_preset_registers =3D iris_set_sm8550_preset_registers, + .set_preset_registers =3D iris_vpu_set_preset_registers, .icc_tbl =3D sm8550_icc_table, .icc_tbl_size =3D ARRAY_SIZE(sm8550_icc_table), .clk_rst_tbl =3D sm8750_clk_reset_table, @@ -1212,7 +1207,7 @@ const struct iris_platform_data qcs8300_data =3D { .init_hfi_response_ops =3D iris_hfi_gen2_response_ops_init, .get_vpu_buffer_size =3D iris_vpu_buf_size, .vpu_ops =3D &iris_vpu3_ops, - .set_preset_registers =3D iris_set_sm8550_preset_registers, + .set_preset_registers =3D iris_vpu_set_preset_registers, .icc_tbl =3D sm8550_icc_table, .icc_tbl_size =3D ARRAY_SIZE(sm8550_icc_table), .clk_rst_tbl =3D sm8550_clk_reset_table, diff --git a/drivers/media/platform/qcom/iris/iris_vpu_common.c b/drivers/m= edia/platform/qcom/iris/iris_vpu_common.c index 548e5f1727fd..e07e47dc9977 100644 --- a/drivers/media/platform/qcom/iris/iris_vpu_common.c +++ b/drivers/media/platform/qcom/iris/iris_vpu_common.c @@ -485,3 +485,8 @@ int iris_vpu_power_on(struct iris_core *core) =20 return ret; } + +void iris_vpu_set_preset_registers(struct iris_core *core) +{ + writel(0x0, core->reg_base + 0xb0088); +} diff --git a/drivers/media/platform/qcom/iris/iris_vpu_common.h b/drivers/m= edia/platform/qcom/iris/iris_vpu_common.h index f6dffc613b82..07728c4c72b6 100644 --- a/drivers/media/platform/qcom/iris/iris_vpu_common.h +++ b/drivers/media/platform/qcom/iris/iris_vpu_common.h @@ -39,4 +39,6 @@ int iris_vpu35_vpu4x_power_on_controller(struct iris_core= *core); void iris_vpu35_vpu4x_program_bootup_registers(struct iris_core *core); u64 iris_vpu3x_vpu4x_calculate_frequency(struct iris_inst *inst, size_t da= ta_size); =20 +void iris_vpu_set_preset_registers(struct iris_core *core); + #endif --=20 2.47.3 From nobody Sat Apr 18 09:30:54 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D2B8B47B414 for ; Sat, 28 Feb 2026 15:26:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772292400; cv=none; b=lrOPGhBpe3x4VQE00pmf0LnHresX7MaFszV6uLUhu82rfS/fiEeszPVYXg4pKffaVAnFgKBSghr41U5MT9j7ZbYWvhKJKRB62B4B5WGBgF7vVpcf8qmqfR9AFsKXnkjeV2t57hwMouDtk7RLUZrztOaoXWjsCT2osiOZm4q7s8M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772292400; c=relaxed/simple; bh=6TsWtLYNg9p/vjDc7JhCuNKMNVpYI8ZUlJV+Pv7jEg0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hbx1OR+mXxKWxEijD4zefT9j70Ctl0mU4NQdKNvWaLC62TZ4hvH+1xaGcLPEGsBAjNOIQN/tevwZ1AYOXIjhXcjz/3Jgt5Z/uAgLVmHXaNiyYsy8b8VAkEq37czy6XVNXlru2kvVp/IPCqYuHnt03UHJ7Di7uBHbBVMMgTVC/aQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=JKkVT+9H; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=aPrTXM1/; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="JKkVT+9H"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="aPrTXM1/" Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61SEO6dO3331783 for ; Sat, 28 Feb 2026 15:26:38 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= WoP9BzumgBDLVCZMb/+BVP8Jay38f71Fg7L2oRhFNBQ=; b=JKkVT+9HBOVYvMbA Kb5rjYkcurwucK+vlWMHYFIkDCRymwjyQluerAukYmg9u2sSnt+07VgiTYL//5EV +mBReIRjSChteEsf+XVppxcg/NY2/QDJwDcKc3zi52FxvwjAzJJ1RcSCjxGAq3BC W3M9RXROXE2CguF66wIy/mRAS10ZXWqMIqjgNAel2GYoo2rpJZ/S4O05p2Se1waK mLa36VQmxVgLN+KKZPtavlpCk5T36mvjlL6dZ89Ae2Hnpo1J+7IJxsFLvU0+LM2K T1OLIzA4jUlO/c9Hf29Vb29JdjmOvfk0BgIU4hElMFQVSK3zHSXQ+ggHpMWX/CWB K+P2Kw== Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ckshd1617-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 28 Feb 2026 15:26:38 +0000 (GMT) Received: by mail-qk1-f198.google.com with SMTP id af79cd13be357-8cb3ad1b81aso3883226985a.2 for ; Sat, 28 Feb 2026 07:26:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1772292397; x=1772897197; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=WoP9BzumgBDLVCZMb/+BVP8Jay38f71Fg7L2oRhFNBQ=; b=aPrTXM1/bHtFG3ttfQHjB484DaoOJEUGg5zBzsSQ5MEu+rhaHvq8YMbt9PYMDttj8q 1Sc06nIVGaLjbmgQmaFK35vP9sCI+wD/NAObQ+kd7SYGz8oBbw4PqR4wv0LXFzM1GuBp XC/lCul9mQjhObA1qt97UxPjX1F9bCplll/CKMbaRL9xMMOCbNI8eedj6aYaKuCToWYu 56kAmRKRTSlFtvj/GtzKcdaf+RgZyQoU56udT8RtCjBEHjijjudWJCmn9vq+86pDWsXk dJR9KDb9PnPuU62JR9L7IVXOjHEGdTOCzRaK/WCOV+tSySSozqEb5VN67dfHfPNVDJm0 VaNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772292397; x=1772897197; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=WoP9BzumgBDLVCZMb/+BVP8Jay38f71Fg7L2oRhFNBQ=; b=ns0Oc3Doftv0kDB3SK6Vy32fwFwu4amL77JcLkicKL+2wpdm9l8MMQESVp2JgONg8c PvGjuGm494xzyPvqRVaAQN/ZN40C/RJQ7Ii1RzVeZbCeUoPd+uE9SX6VStA6CAdBsbRE abVSy4LP6v6p4i8azYDB6cff2nKdSU/9Iqr/VnK035Qgnz06Ajpu/dHd525/drSX+iAK YRSXSeG0khNnsUkW6eKmjR/6HLvBWfvncH6+JKZP6tDnbRlwkYYbrhGHU20fXrROx7uU c6mVrHQnlCEYh2qcfbPYL5QUe4qBiSwhdbbIXxYBmiTv6H2Svl/lPXmaF1exjJonmNSU yfdQ== X-Forwarded-Encrypted: i=1; AJvYcCXkyQ7jbrm7znRqLriwuRdfZcpZP+JE4m1bIDWclab4GbG7U9vTEM5F4LSlqhKwgDs2YKvyCEF1dKzyErk=@vger.kernel.org X-Gm-Message-State: AOJu0YxDe5H3CWJ31bWfntSpuSji1sBhtDcAtQG/0YKtnCOkFF0vxuy+ QzhOooVkjyABWDMcvc2+B8OQzAYfzW3fFj6T/mwSZz4xb8ajot2aXiy9HFc2avZQtAgiFLPnNAW s3dU1Hexl6yIkt+C3npMQ7F8tmsNrVpsqKLN5MsZmDuEqY0qZ6j4ibkDvBPrJa/Ew5N0= X-Gm-Gg: ATEYQzyKYYJ+3iok8Jsum6rVAA8mKY1JrGntf4KyCxRrR/KvDKG0lDjW2Oo96Ac5DLG qAWue/79DYCLGYICUwxLl5Ujw49kaFIaw3YdauZ8pOIzfWISxuDZnmz9RSm+Xeb4BnQi5L3KFiN +BvMeRIZnvU+BxXYurwaLW0LTDPih13hWhCTdvemiPfBRTc4DZKfbGOhrfuQlXDYymsMiSfv4Uq wr6/XcRsgvWT5sQTtfqNdeBRx23/3XgtoHtLU5otYzdW7zKzf12w+oAtftU7elBGoo+mFI9+Jb2 MFdmH03Rm/8PjBGLVP++HIWN9+Rkd919ipwDqN3+ZnVr70kwhpYgg5xIspxsA3N9AzhpYULuG+a NlrOwdnyZAQPNAVD3FFSWYRmkZxgIeovi3ECGfnhKztLa7U3qND4VAa6jukeHULXwqkSNlFK/aW HWWEHc0EiPVH3q9r3Ydw8T6Tfyj1OJmj5bK+g= X-Received: by 2002:a05:620a:19a8:b0:8ca:3ed2:175c with SMTP id af79cd13be357-8cbc8e4fbfcmr923069085a.43.1772292396900; Sat, 28 Feb 2026 07:26:36 -0800 (PST) X-Received: by 2002:a05:620a:19a8:b0:8ca:3ed2:175c with SMTP id af79cd13be357-8cbc8e4fbfcmr923065985a.43.1772292396300; Sat, 28 Feb 2026 07:26:36 -0800 (PST) Received: from umbar.lan (2001-14ba-a073-af00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a073:af00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5a115b57922sm625558e87.63.2026.02.28.07.26.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 28 Feb 2026 07:26:35 -0800 (PST) From: Dmitry Baryshkov Date: Sat, 28 Feb 2026 17:26:30 +0200 Subject: [PATCH v2 03/11] media: qcom: iris: handle HFI params directly Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260228-iris-platform-data-v2-3-acf036a3c84c@oss.qualcomm.com> References: <20260228-iris-platform-data-v2-0-acf036a3c84c@oss.qualcomm.com> In-Reply-To: <20260228-iris-platform-data-v2-0-acf036a3c84c@oss.qualcomm.com> To: Vikash Garodia , Dikshita Agarwal , Abhinav Kumar , Bryan O'Donoghue , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=21708; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=6TsWtLYNg9p/vjDc7JhCuNKMNVpYI8ZUlJV+Pv7jEg0=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpowkm9P0QjmZbNe12+P0hyIpflIAlLSZxmvFGC 8kzm4ds89GJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaaMJJgAKCRCLPIo+Aiko 1VRhCACSl8QRqkFL1U+wpjFsaOgGPJMQ7DB7mwq44hcBjxy+5X6MoLXQ3sr1bqbY6oDOHc7RGv2 zMbwXO3tT3Yt4tye/03CWMongpuDZ04SZSRhMwnijwtciwnar2dQoihpo95ciFUOYQxAA0E0uk5 NnlGksudMYbODscJss0DW+J6b5DKWM+uIa46YAVPPFR07SefBUbqiJKWWiCZKuv50ozS97PYMJ1 taQLWhktOb0ytOZ/1H3dYu9cOrDtstEtcDRxNH6gkhGArFP7+eoRcQ2CBOxWSvgLVhiJr49j6DE F2gHisJm11mjMI3ZAM74J14ZlY9AvltG5Fpq01SSSNA14qjx X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI4MDE0MiBTYWx0ZWRfXz9y8r/pkFRDq 1dlgnH02IFCXj0neYQXgHGN7/KipD6aia5B50TxC/ikqixwyNFyZdNZxtvfM9Z3vExgtESc80Iu ah9svSam26rPeDwMLtCUKmuVPAmnqnsEX2eeW5/C5Q5TEU4zia6rsjJAaUlEOg2ZH99Qyjsd5EV tuQizzlXPsy76SeV2I2O5LOIfraR1yPaX3Vfw88GNtu0gtUMwu/8YB9OeWkG4dtymSIHjBvt3kV IsZlUGHKw9AKb+0DwjqKP3CsaW/4BgoU4LEsqNXavHt+aLuNlOcOYu294ZZGpEqc+9DbEEHlVQn mVwV/iPB2FKdDzS3+r2kwt8nO3HrNZfvO5+AwRGv5unXGm/J9nUOOkcjNxpYGeGun4yIyQ7PhJ3 7TbAUqkX0dLynmO7T2semM4fdbRp0Z4DSMRYsf+kJqpyPMyhC2JOB6WhH1tvQ+y2csj8SRkK8z/ tUatH+iaqhmTJnMVPsQ== X-Proofpoint-ORIG-GUID: 2LmbWzEOb8CAFnnOhTPBjYMhDNg1jR9v X-Proofpoint-GUID: 2LmbWzEOb8CAFnnOhTPBjYMhDNg1jR9v X-Authority-Analysis: v=2.4 cv=COYnnBrD c=1 sm=1 tr=0 ts=69a3092e cx=c_pps a=qKBjSQ1v91RyAK45QCPf5w==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=EUspDBNiAAAA:8 a=0V4xn3LT2fnV2DziLREA:9 a=QEXdDO2ut3YA:10 a=NFOGd7dJGGMPyQGDc5-O:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-28_05,2026-02-27_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 spamscore=0 adultscore=0 impostorscore=0 clxscore=1015 malwarescore=0 lowpriorityscore=0 bulkscore=0 suspectscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2602280142 The HFI params are set per the HFI generation, they don't change between different platforms with the same HFI interface. Instead of copy-pasting the same params between platform data over and over again, move them to the corresponding HFI generation source file and drop them from the HFI platform data. Signed-off-by: Dmitry Baryshkov --- .../platform/qcom/iris/iris_hfi_gen1_command.c | 28 +++- .../platform/qcom/iris/iris_hfi_gen2_command.c | 118 +++++++++++--- .../platform/qcom/iris/iris_platform_common.h | 14 -- .../media/platform/qcom/iris/iris_platform_gen1.c | 33 ---- .../media/platform/qcom/iris/iris_platform_gen2.c | 181 -----------------= ---- 5 files changed, 114 insertions(+), 260 deletions(-) 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 e42d17653c2c..d5eaf8763f6d 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c @@ -978,11 +978,29 @@ static int iris_hfi_gen1_set_stride(struct iris_inst = *inst, u32 plane) return hfi_gen1_set_property(inst, ptype, &plane_actual_info, sizeof(plan= e_actual_info)); } =20 +static const u32 iris_hfi_gen1_vdec_input_config_param[] =3D { + HFI_PROPERTY_CONFIG_VIDEOCORES_USAGE, + HFI_PROPERTY_PARAM_UNCOMPRESSED_FORMAT_SELECT, + HFI_PROPERTY_PARAM_UNCOMPRESSED_PLANE_ACTUAL_CONSTRAINTS_INFO, + HFI_PROPERTY_PARAM_BUFFER_COUNT_ACTUAL, + HFI_PROPERTY_PARAM_VDEC_MULTI_STREAM, + HFI_PROPERTY_PARAM_FRAME_SIZE, + HFI_PROPERTY_PARAM_BUFFER_SIZE_ACTUAL, + HFI_PROPERTY_PARAM_BUFFER_ALLOC_MODE, +}; + +static const u32 iris_hfi_gen1_venc_input_config_param[] =3D { + HFI_PROPERTY_CONFIG_FRAME_RATE, + HFI_PROPERTY_PARAM_UNCOMPRESSED_PLANE_ACTUAL_INFO, + HFI_PROPERTY_PARAM_FRAME_SIZE, + HFI_PROPERTY_PARAM_UNCOMPRESSED_FORMAT_SELECT, + HFI_PROPERTY_PARAM_BUFFER_COUNT_ACTUAL, +}; + static int iris_hfi_gen1_session_set_config_params(struct iris_inst *inst,= u32 plane) { struct iris_hfi_prop_type_handle const *handler =3D NULL; u32 handler_size =3D 0; - struct iris_core *core =3D inst->core; u32 config_params_size, i, j; const u32 *config_params; int ret; @@ -1033,8 +1051,8 @@ static int iris_hfi_gen1_session_set_config_params(st= ruct iris_inst *inst, u32 p }; =20 if (inst->domain =3D=3D DECODER) { - config_params =3D core->iris_platform_data->dec_input_config_params_defa= ult; - config_params_size =3D core->iris_platform_data->dec_input_config_params= _default_size; + config_params =3D iris_hfi_gen1_vdec_input_config_param; + config_params_size =3D ARRAY_SIZE(iris_hfi_gen1_vdec_input_config_param); if (V4L2_TYPE_IS_OUTPUT(plane)) { handler =3D vdec_prop_type_handle_inp_arr; handler_size =3D ARRAY_SIZE(vdec_prop_type_handle_inp_arr); @@ -1043,8 +1061,8 @@ static int iris_hfi_gen1_session_set_config_params(st= ruct iris_inst *inst, u32 p handler_size =3D ARRAY_SIZE(vdec_prop_type_handle_out_arr); } } else { - config_params =3D core->iris_platform_data->enc_input_config_params; - config_params_size =3D core->iris_platform_data->enc_input_config_params= _size; + config_params =3D iris_hfi_gen1_venc_input_config_param; + config_params_size =3D ARRAY_SIZE(iris_hfi_gen1_venc_input_config_param); handler =3D venc_prop_type_handle_inp_arr; handler_size =3D ARRAY_SIZE(venc_prop_type_handle_inp_arr); } 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 30bfd90d423b..52fd1fd51946 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c @@ -599,9 +599,73 @@ static int iris_hfi_gen2_set_super_block(struct iris_i= nst *inst, u32 plane) sizeof(u32)); } =20 +static const u32 iris_hfi_gen2_vdec_input_config_params_avc[] =3D { + HFI_PROP_BITSTREAM_RESOLUTION, + HFI_PROP_CROP_OFFSETS, + HFI_PROP_LUMA_CHROMA_BIT_DEPTH, + HFI_PROP_CODED_FRAMES, + HFI_PROP_BUFFER_FW_MIN_OUTPUT_COUNT, + HFI_PROP_PIC_ORDER_CNT_TYPE, + HFI_PROP_PROFILE, + HFI_PROP_LEVEL, + HFI_PROP_SIGNAL_COLOR_INFO, +}; + +static const u32 iris_hfi_gen2_vdec_input_config_params_hevc[] =3D { + HFI_PROP_BITSTREAM_RESOLUTION, + HFI_PROP_CROP_OFFSETS, + HFI_PROP_LUMA_CHROMA_BIT_DEPTH, + HFI_PROP_BUFFER_FW_MIN_OUTPUT_COUNT, + HFI_PROP_PROFILE, + HFI_PROP_LEVEL, + HFI_PROP_TIER, + HFI_PROP_SIGNAL_COLOR_INFO, +}; + +static const u32 iris_hfi_gen2_vdec_input_config_params_vp9[] =3D { + HFI_PROP_BITSTREAM_RESOLUTION, + HFI_PROP_CROP_OFFSETS, + HFI_PROP_LUMA_CHROMA_BIT_DEPTH, + HFI_PROP_BUFFER_FW_MIN_OUTPUT_COUNT, + HFI_PROP_PROFILE, + HFI_PROP_LEVEL, +}; + +static const u32 iris_hfi_gen2_vdec_input_config_params_av1[] =3D { + HFI_PROP_BITSTREAM_RESOLUTION, + HFI_PROP_CROP_OFFSETS, + HFI_PROP_LUMA_CHROMA_BIT_DEPTH, + HFI_PROP_BUFFER_FW_MIN_OUTPUT_COUNT, + HFI_PROP_PROFILE, + HFI_PROP_LEVEL, + HFI_PROP_TIER, + HFI_PROP_AV1_FILM_GRAIN_PRESENT, + HFI_PROP_AV1_SUPER_BLOCK_ENABLED, + HFI_PROP_SIGNAL_COLOR_INFO, +}; + +static const u32 iris_hfi_gen2_venc_input_config_params[] =3D { + HFI_PROP_COLOR_FORMAT, + HFI_PROP_RAW_RESOLUTION, + HFI_PROP_CROP_OFFSETS, + HFI_PROP_LINEAR_STRIDE_SCANLINE, + HFI_PROP_SIGNAL_COLOR_INFO, +}; + +static const u32 iris_hfi_gen2_vdec_output_config_params[] =3D { + HFI_PROP_OPB_ENABLE, + HFI_PROP_COLOR_FORMAT, + HFI_PROP_LINEAR_STRIDE_SCANLINE, +}; + +static const u32 iris_hfi_gen2_venc_output_config_params[] =3D { + HFI_PROP_BITSTREAM_RESOLUTION, + HFI_PROP_CROP_OFFSETS, + HFI_PROP_FRAME_RATE, +}; + static int iris_hfi_gen2_session_set_config_params(struct iris_inst *inst,= u32 plane) { - const struct iris_platform_data *pdata =3D inst->core->iris_platform_data; u32 config_params_size =3D 0, i, j; const u32 *config_params =3D NULL; int ret; @@ -630,31 +694,35 @@ static int iris_hfi_gen2_session_set_config_params(st= ruct iris_inst *inst, u32 p if (inst->domain =3D=3D DECODER) { if (V4L2_TYPE_IS_OUTPUT(plane)) { if (inst->codec =3D=3D V4L2_PIX_FMT_H264) { - config_params =3D pdata->dec_input_config_params_default; - config_params_size =3D pdata->dec_input_config_params_default_size; + config_params =3D iris_hfi_gen2_vdec_input_config_params_avc; + config_params_size =3D + ARRAY_SIZE(iris_hfi_gen2_vdec_input_config_params_avc); } else if (inst->codec =3D=3D V4L2_PIX_FMT_HEVC) { - config_params =3D pdata->dec_input_config_params_hevc; - config_params_size =3D pdata->dec_input_config_params_hevc_size; + config_params =3D iris_hfi_gen2_vdec_input_config_params_hevc; + config_params_size =3D + ARRAY_SIZE(iris_hfi_gen2_vdec_input_config_params_hevc); } else if (inst->codec =3D=3D V4L2_PIX_FMT_VP9) { - config_params =3D pdata->dec_input_config_params_vp9; - config_params_size =3D pdata->dec_input_config_params_vp9_size; + config_params =3D iris_hfi_gen2_vdec_input_config_params_vp9; + config_params_size =3D + ARRAY_SIZE(iris_hfi_gen2_vdec_input_config_params_vp9); } else if (inst->codec =3D=3D V4L2_PIX_FMT_AV1) { - config_params =3D pdata->dec_input_config_params_av1; - config_params_size =3D pdata->dec_input_config_params_av1_size; + config_params =3D iris_hfi_gen2_vdec_input_config_params_av1; + config_params_size =3D + ARRAY_SIZE(iris_hfi_gen2_vdec_input_config_params_av1); } else { return -EINVAL; } } else { - config_params =3D pdata->dec_output_config_params; - config_params_size =3D pdata->dec_output_config_params_size; + config_params =3D iris_hfi_gen2_vdec_output_config_params; + config_params_size =3D ARRAY_SIZE(iris_hfi_gen2_vdec_output_config_para= ms); } } else { if (V4L2_TYPE_IS_OUTPUT(plane)) { - config_params =3D pdata->enc_input_config_params; - config_params_size =3D pdata->enc_input_config_params_size; + config_params =3D iris_hfi_gen2_venc_input_config_params; + config_params_size =3D ARRAY_SIZE(iris_hfi_gen2_venc_input_config_param= s); } else { - config_params =3D pdata->enc_output_config_params; - config_params_size =3D pdata->enc_output_config_params_size; + config_params =3D iris_hfi_gen2_venc_output_config_params; + config_params_size =3D ARRAY_SIZE(iris_hfi_gen2_venc_output_config_para= ms); } } =20 @@ -849,24 +917,20 @@ static int iris_hfi_gen2_subscribe_change_param(struc= t iris_inst *inst, u32 plan =20 switch (inst->codec) { case V4L2_PIX_FMT_H264: - change_param =3D core->iris_platform_data->dec_input_config_params_defau= lt; - change_param_size =3D - core->iris_platform_data->dec_input_config_params_default_size; + change_param =3D iris_hfi_gen2_vdec_input_config_params_avc; + change_param_size =3D ARRAY_SIZE(iris_hfi_gen2_vdec_input_config_params_= avc); break; case V4L2_PIX_FMT_HEVC: - change_param =3D core->iris_platform_data->dec_input_config_params_hevc; - change_param_size =3D - core->iris_platform_data->dec_input_config_params_hevc_size; + change_param =3D iris_hfi_gen2_vdec_input_config_params_hevc; + change_param_size =3D ARRAY_SIZE(iris_hfi_gen2_vdec_input_config_params_= hevc); break; case V4L2_PIX_FMT_VP9: - change_param =3D core->iris_platform_data->dec_input_config_params_vp9; - change_param_size =3D - core->iris_platform_data->dec_input_config_params_vp9_size; + change_param =3D iris_hfi_gen2_vdec_input_config_params_vp9; + change_param_size =3D ARRAY_SIZE(iris_hfi_gen2_vdec_input_config_params_= vp9); break; case V4L2_PIX_FMT_AV1: - change_param =3D core->iris_platform_data->dec_input_config_params_av1; - change_param_size =3D - core->iris_platform_data->dec_input_config_params_av1_size; + change_param =3D iris_hfi_gen2_vdec_input_config_params_av1; + change_param_size =3D ARRAY_SIZE(iris_hfi_gen2_vdec_input_config_params_= av1); break; } =20 diff --git a/drivers/media/platform/qcom/iris/iris_platform_common.h b/driv= ers/media/platform/qcom/iris/iris_platform_common.h index e4eefc646c7f..00e40590d5ec 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_common.h +++ b/drivers/media/platform/qcom/iris/iris_platform_common.h @@ -243,20 +243,6 @@ struct iris_platform_data { u32 max_core_mbpf; /* max number of macroblocks per second supported */ u32 max_core_mbps; - const u32 *dec_input_config_params_default; - unsigned int dec_input_config_params_default_size; - const u32 *dec_input_config_params_hevc; - unsigned int dec_input_config_params_hevc_size; - const u32 *dec_input_config_params_vp9; - unsigned int dec_input_config_params_vp9_size; - const u32 *dec_input_config_params_av1; - unsigned int dec_input_config_params_av1_size; - const u32 *dec_output_config_params; - unsigned int dec_output_config_params_size; - const u32 *enc_input_config_params; - unsigned int enc_input_config_params_size; - const u32 *enc_output_config_params; - unsigned int enc_output_config_params_size; const u32 *dec_input_prop; unsigned int dec_input_prop_size; const u32 *dec_output_prop_avc; diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen1.c b/driver= s/media/platform/qcom/iris/iris_platform_gen1.c index a3eebcacba7b..392f9ed94ba8 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen1.c +++ b/drivers/media/platform/qcom/iris/iris_platform_gen1.c @@ -298,25 +298,6 @@ static const struct tz_cp_config tz_cp_config_sm8250[]= =3D { }, }; =20 -static const u32 sm8250_vdec_input_config_param_default[] =3D { - HFI_PROPERTY_CONFIG_VIDEOCORES_USAGE, - HFI_PROPERTY_PARAM_UNCOMPRESSED_FORMAT_SELECT, - HFI_PROPERTY_PARAM_UNCOMPRESSED_PLANE_ACTUAL_CONSTRAINTS_INFO, - HFI_PROPERTY_PARAM_BUFFER_COUNT_ACTUAL, - HFI_PROPERTY_PARAM_VDEC_MULTI_STREAM, - HFI_PROPERTY_PARAM_FRAME_SIZE, - HFI_PROPERTY_PARAM_BUFFER_SIZE_ACTUAL, - HFI_PROPERTY_PARAM_BUFFER_ALLOC_MODE, -}; - -static const u32 sm8250_venc_input_config_param[] =3D { - HFI_PROPERTY_CONFIG_FRAME_RATE, - HFI_PROPERTY_PARAM_UNCOMPRESSED_PLANE_ACTUAL_INFO, - HFI_PROPERTY_PARAM_FRAME_SIZE, - HFI_PROPERTY_PARAM_UNCOMPRESSED_FORMAT_SELECT, - HFI_PROPERTY_PARAM_BUFFER_COUNT_ACTUAL, -}; - static const u32 sm8250_dec_ip_int_buf_tbl[] =3D { BUF_BIN, BUF_SCRATCH_1, @@ -369,13 +350,6 @@ const struct iris_platform_data sm8250_data =3D { .max_session_count =3D 16, .max_core_mbpf =3D NUM_MBS_8K, .max_core_mbps =3D ((7680 * 4320) / 256) * 60, - .dec_input_config_params_default =3D - sm8250_vdec_input_config_param_default, - .dec_input_config_params_default_size =3D - ARRAY_SIZE(sm8250_vdec_input_config_param_default), - .enc_input_config_params =3D sm8250_venc_input_config_param, - .enc_input_config_params_size =3D - ARRAY_SIZE(sm8250_venc_input_config_param), =20 .dec_ip_int_buf_tbl =3D sm8250_dec_ip_int_buf_tbl, .dec_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8250_dec_ip_int_buf_tbl), @@ -423,13 +397,6 @@ const struct iris_platform_data sc7280_data =3D { .max_core_mbpf =3D 4096 * 2176 / 256 * 2 + 1920 * 1088 / 256, /* max spec for SC7280 is 4096x2176@60fps */ .max_core_mbps =3D 4096 * 2176 / 256 * 60, - .dec_input_config_params_default =3D - sm8250_vdec_input_config_param_default, - .dec_input_config_params_default_size =3D - ARRAY_SIZE(sm8250_vdec_input_config_param_default), - .enc_input_config_params =3D sm8250_venc_input_config_param, - .enc_input_config_params_size =3D - ARRAY_SIZE(sm8250_venc_input_config_param), =20 .dec_ip_int_buf_tbl =3D sm8250_dec_ip_int_buf_tbl, .dec_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8250_dec_ip_int_buf_tbl), diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen2.c b/driver= s/media/platform/qcom/iris/iris_platform_gen2.c index f8754451ac18..5b157697d478 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen2.c +++ b/drivers/media/platform/qcom/iris/iris_platform_gen2.c @@ -794,71 +794,6 @@ static const struct tz_cp_config tz_cp_config_sm8550[]= =3D { }, }; =20 -static const u32 sm8550_vdec_input_config_params_default[] =3D { - HFI_PROP_BITSTREAM_RESOLUTION, - HFI_PROP_CROP_OFFSETS, - HFI_PROP_LUMA_CHROMA_BIT_DEPTH, - HFI_PROP_CODED_FRAMES, - HFI_PROP_BUFFER_FW_MIN_OUTPUT_COUNT, - HFI_PROP_PIC_ORDER_CNT_TYPE, - HFI_PROP_PROFILE, - HFI_PROP_LEVEL, - HFI_PROP_SIGNAL_COLOR_INFO, -}; - -static const u32 sm8550_vdec_input_config_param_hevc[] =3D { - HFI_PROP_BITSTREAM_RESOLUTION, - HFI_PROP_CROP_OFFSETS, - HFI_PROP_LUMA_CHROMA_BIT_DEPTH, - HFI_PROP_BUFFER_FW_MIN_OUTPUT_COUNT, - HFI_PROP_PROFILE, - HFI_PROP_LEVEL, - HFI_PROP_TIER, - HFI_PROP_SIGNAL_COLOR_INFO, -}; - -static const u32 sm8550_vdec_input_config_param_vp9[] =3D { - HFI_PROP_BITSTREAM_RESOLUTION, - HFI_PROP_CROP_OFFSETS, - HFI_PROP_LUMA_CHROMA_BIT_DEPTH, - HFI_PROP_BUFFER_FW_MIN_OUTPUT_COUNT, - HFI_PROP_PROFILE, - HFI_PROP_LEVEL, -}; - -static const u32 sm8550_vdec_input_config_param_av1[] =3D { - HFI_PROP_BITSTREAM_RESOLUTION, - HFI_PROP_CROP_OFFSETS, - HFI_PROP_LUMA_CHROMA_BIT_DEPTH, - HFI_PROP_BUFFER_FW_MIN_OUTPUT_COUNT, - HFI_PROP_PROFILE, - HFI_PROP_LEVEL, - HFI_PROP_TIER, - HFI_PROP_AV1_FILM_GRAIN_PRESENT, - HFI_PROP_AV1_SUPER_BLOCK_ENABLED, - HFI_PROP_SIGNAL_COLOR_INFO, -}; - -static const u32 sm8550_venc_input_config_params[] =3D { - HFI_PROP_COLOR_FORMAT, - HFI_PROP_RAW_RESOLUTION, - HFI_PROP_CROP_OFFSETS, - HFI_PROP_LINEAR_STRIDE_SCANLINE, - HFI_PROP_SIGNAL_COLOR_INFO, -}; - -static const u32 sm8550_vdec_output_config_params[] =3D { - HFI_PROP_OPB_ENABLE, - HFI_PROP_COLOR_FORMAT, - HFI_PROP_LINEAR_STRIDE_SCANLINE, -}; - -static const u32 sm8550_venc_output_config_params[] =3D { - HFI_PROP_BITSTREAM_RESOLUTION, - HFI_PROP_CROP_OFFSETS, - HFI_PROP_FRAME_RATE, -}; - static const u32 sm8550_vdec_subscribe_input_properties[] =3D { HFI_PROP_NO_OUTPUT, }; @@ -944,35 +879,6 @@ const struct iris_platform_data sm8550_data =3D { .max_session_count =3D 16, .max_core_mbpf =3D NUM_MBS_8K * 2, .max_core_mbps =3D ((7680 * 4320) / 256) * 60, - .dec_input_config_params_default =3D - sm8550_vdec_input_config_params_default, - .dec_input_config_params_default_size =3D - ARRAY_SIZE(sm8550_vdec_input_config_params_default), - .dec_input_config_params_hevc =3D - sm8550_vdec_input_config_param_hevc, - .dec_input_config_params_hevc_size =3D - ARRAY_SIZE(sm8550_vdec_input_config_param_hevc), - .dec_input_config_params_vp9 =3D - sm8550_vdec_input_config_param_vp9, - .dec_input_config_params_vp9_size =3D - ARRAY_SIZE(sm8550_vdec_input_config_param_vp9), - .dec_input_config_params_av1 =3D - sm8550_vdec_input_config_param_av1, - .dec_input_config_params_av1_size =3D - ARRAY_SIZE(sm8550_vdec_input_config_param_av1), - .dec_output_config_params =3D - sm8550_vdec_output_config_params, - .dec_output_config_params_size =3D - ARRAY_SIZE(sm8550_vdec_output_config_params), - - .enc_input_config_params =3D - sm8550_venc_input_config_params, - .enc_input_config_params_size =3D - ARRAY_SIZE(sm8550_venc_input_config_params), - .enc_output_config_params =3D - sm8550_venc_output_config_params, - .enc_output_config_params_size =3D - ARRAY_SIZE(sm8550_venc_output_config_params), =20 .dec_input_prop =3D sm8550_vdec_subscribe_input_properties, .dec_input_prop_size =3D ARRAY_SIZE(sm8550_vdec_subscribe_input_propertie= s), @@ -1047,35 +953,6 @@ const struct iris_platform_data sm8650_data =3D { .max_session_count =3D 16, .max_core_mbpf =3D NUM_MBS_8K * 2, .max_core_mbps =3D ((7680 * 4320) / 256) * 60, - .dec_input_config_params_default =3D - sm8550_vdec_input_config_params_default, - .dec_input_config_params_default_size =3D - ARRAY_SIZE(sm8550_vdec_input_config_params_default), - .dec_input_config_params_hevc =3D - sm8550_vdec_input_config_param_hevc, - .dec_input_config_params_hevc_size =3D - ARRAY_SIZE(sm8550_vdec_input_config_param_hevc), - .dec_input_config_params_vp9 =3D - sm8550_vdec_input_config_param_vp9, - .dec_input_config_params_vp9_size =3D - ARRAY_SIZE(sm8550_vdec_input_config_param_vp9), - .dec_input_config_params_av1 =3D - sm8550_vdec_input_config_param_av1, - .dec_input_config_params_av1_size =3D - ARRAY_SIZE(sm8550_vdec_input_config_param_av1), - .dec_output_config_params =3D - sm8550_vdec_output_config_params, - .dec_output_config_params_size =3D - ARRAY_SIZE(sm8550_vdec_output_config_params), - - .enc_input_config_params =3D - sm8550_venc_input_config_params, - .enc_input_config_params_size =3D - ARRAY_SIZE(sm8550_venc_input_config_params), - .enc_output_config_params =3D - sm8550_venc_output_config_params, - .enc_output_config_params_size =3D - ARRAY_SIZE(sm8550_venc_output_config_params), =20 .dec_input_prop =3D sm8550_vdec_subscribe_input_properties, .dec_input_prop_size =3D ARRAY_SIZE(sm8550_vdec_subscribe_input_propertie= s), @@ -1141,35 +1018,6 @@ const struct iris_platform_data sm8750_data =3D { .max_session_count =3D 16, .max_core_mbpf =3D NUM_MBS_8K * 2, .max_core_mbps =3D ((7680 * 4320) / 256) * 60, - .dec_input_config_params_default =3D - sm8550_vdec_input_config_params_default, - .dec_input_config_params_default_size =3D - ARRAY_SIZE(sm8550_vdec_input_config_params_default), - .dec_input_config_params_hevc =3D - sm8550_vdec_input_config_param_hevc, - .dec_input_config_params_hevc_size =3D - ARRAY_SIZE(sm8550_vdec_input_config_param_hevc), - .dec_input_config_params_vp9 =3D - sm8550_vdec_input_config_param_vp9, - .dec_input_config_params_vp9_size =3D - ARRAY_SIZE(sm8550_vdec_input_config_param_vp9), - .dec_input_config_params_av1 =3D - sm8550_vdec_input_config_param_av1, - .dec_input_config_params_av1_size =3D - ARRAY_SIZE(sm8550_vdec_input_config_param_av1), - .dec_output_config_params =3D - sm8550_vdec_output_config_params, - .dec_output_config_params_size =3D - ARRAY_SIZE(sm8550_vdec_output_config_params), - - .enc_input_config_params =3D - sm8550_venc_input_config_params, - .enc_input_config_params_size =3D - ARRAY_SIZE(sm8550_venc_input_config_params), - .enc_output_config_params =3D - sm8550_venc_output_config_params, - .enc_output_config_params_size =3D - ARRAY_SIZE(sm8550_venc_output_config_params), =20 .dec_input_prop =3D sm8550_vdec_subscribe_input_properties, .dec_input_prop_size =3D ARRAY_SIZE(sm8550_vdec_subscribe_input_propertie= s), @@ -1239,35 +1087,6 @@ const struct iris_platform_data qcs8300_data =3D { .max_session_count =3D 16, .max_core_mbpf =3D ((4096 * 2176) / 256) * 4, .max_core_mbps =3D (((3840 * 2176) / 256) * 120), - .dec_input_config_params_default =3D - sm8550_vdec_input_config_params_default, - .dec_input_config_params_default_size =3D - ARRAY_SIZE(sm8550_vdec_input_config_params_default), - .dec_input_config_params_hevc =3D - sm8550_vdec_input_config_param_hevc, - .dec_input_config_params_hevc_size =3D - ARRAY_SIZE(sm8550_vdec_input_config_param_hevc), - .dec_input_config_params_vp9 =3D - sm8550_vdec_input_config_param_vp9, - .dec_input_config_params_vp9_size =3D - ARRAY_SIZE(sm8550_vdec_input_config_param_vp9), - .dec_input_config_params_av1 =3D - sm8550_vdec_input_config_param_av1, - .dec_input_config_params_av1_size =3D - ARRAY_SIZE(sm8550_vdec_input_config_param_av1), - .dec_output_config_params =3D - sm8550_vdec_output_config_params, - .dec_output_config_params_size =3D - ARRAY_SIZE(sm8550_vdec_output_config_params), - - .enc_input_config_params =3D - sm8550_venc_input_config_params, - .enc_input_config_params_size =3D - ARRAY_SIZE(sm8550_venc_input_config_params), - .enc_output_config_params =3D - sm8550_venc_output_config_params, - .enc_output_config_params_size =3D - ARRAY_SIZE(sm8550_venc_output_config_params), =20 .dec_input_prop =3D sm8550_vdec_subscribe_input_properties, .dec_input_prop_size =3D ARRAY_SIZE(sm8550_vdec_subscribe_input_propertie= s), --=20 2.47.3 From nobody Sat Apr 18 09:30:54 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C5D384657F2 for ; Sat, 28 Feb 2026 15:26:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772292401; cv=none; b=j7SqMu2pLpF/ZDcZlQfnUJ2TI5Aq/t2OQ3OS0dx7nYf5IKd3FW/5NbVLx0t017A4C+Ut1zMx0UG7lU7cammR0nbYQEHauINgJfxspM08Wf2CzM3uBGj9GU5dmQENK7VnY6CCPePfJKRAP08nZi8E6TJeKXG4oqyOpilu3CNbc7M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772292401; c=relaxed/simple; bh=nUSa520FLKqjEX950txivtgMTRsmndZ/Adu76XEOkRc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Qqjo2ybZ1C/WIxNUiotWrmioGH9IMO6DW753FU9Zak2w2LnZWXWQM+bOPL3tDynyVZ0w8E7GK8TQLt8IGgA7l+E+OfHiNjTadzbY2L0lTLAmQhMvHyE9BbecKkYMC1kOnyMcrn6OZt58yNIlkQF6IuO8Dl2i7ryMTm4Mmd8GSzA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=HIucIMYh; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=gaBawpGr; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="HIucIMYh"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="gaBawpGr" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61SEO9oU2733687 for ; Sat, 28 Feb 2026 15:26:39 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= avNSzgeO+24+c0meZaN0I+ujV4RCxkpDE+1NQpcaAkg=; b=HIucIMYhsFYUezuc x2Ztq5nbcDLbvEQncHrKTIGLJTDvOzlksoeTdLddwnOOhC/B9LURYmgvZ7DnxYOV xPP0KMNPGgNeZzJSPREuz4xxFtccZ/7CuQ7DFJCIInWnSX1H+w8FtzLYVyb1Ok0t Hj5p3JSJ4V62w25dT5xwSvnMYHg4K74tPhYqLCvfm+vvRgWsrB0CckRqS7VNgBlR mIhzeUxds3NtW+bPY+panTxoqNp6LYDOn+XT4gLooZyuXz6OB+4rPqYegTrdUbD0 5YAdLzHzzgB6ZWGHGDUyhVzlnlzamcDlzs3xar126XP/ffrLIWzYe/cgPrU6wBBe ly/3qw== Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cksgrs5vb-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 28 Feb 2026 15:26:39 +0000 (GMT) Received: by mail-qk1-f198.google.com with SMTP id af79cd13be357-8c70ed6c849so2428898985a.1 for ; Sat, 28 Feb 2026 07:26:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1772292398; x=1772897198; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=avNSzgeO+24+c0meZaN0I+ujV4RCxkpDE+1NQpcaAkg=; b=gaBawpGrQ8PQaGFESrulz3HtolfGpAi74Qtla9/Y2RLq3iycar+sDdPtnBXid9SAtk SPc9KElO9M0f4mSc7KqvVHtxE1TOe9ngZYZp2WX1RM/XRjaS2V3WJAUhm6Rkx80JttG1 UshR9FO4juOggtIpdIHih7njyRcySl6FS3S5PLwqzO2vKLVHTltlf3ptnCAZ2o7yadgZ tkQ+CCf5uUqxIokGvbaI7IG4THtpvV8EdlZP3NwM9TScThTPeg9gjpxY0Gt9BW4gSxyc i4uRI3BlSCPakJnbS/NAvu3/qIBUEzy1wjpiPGnqh5O8apd+ALuFILmaYJDCpsyBUQ1C +kyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772292398; x=1772897198; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=avNSzgeO+24+c0meZaN0I+ujV4RCxkpDE+1NQpcaAkg=; b=ampID7f/hvwAhF9rm4Zx1/hJKG1VAPvImgNuseAN1xj1lmHvhzVh/FNvpjKUGWwOsX 7NHZXC/p+1hSK/mdSEYQWB5Bk5ROByN30xIN47TMvg9yYQ/P7RGsHiYqykQ31nY0D6U3 SIRi11VobyW5g1/AmzY6cof7xErkc9rsJgoya3aFD81z+oSTJyApZ3vFZxrsmmDBCdNU wk1b44FIxlcfCWJBNA/DDEEHr9KJjY7pl62XE3/WyjRBmTZ/CUVRDkt9lxdcEIeqFQWB WB8L5y8tZfyUjM+a9VPYTqKKX5YERfjJUzREq4RZhZD2pPyvMJhddPcnNF/rEKyAlH5k wBDg== X-Forwarded-Encrypted: i=1; AJvYcCUM7dcq6c6PUDFT/T9T3ZvUDfNDZ91t9fbyx+05GLRG6pBqn38k0S2/U1oFHiCd5Pwd1g3BfIiW4+1X3oM=@vger.kernel.org X-Gm-Message-State: AOJu0YzGP3E7/MzXb+uHThzHHdSx4T/5WIatHOyKbP7EFiM5e9NrLWVK DopyVQLDG5kYY/qfKID774MLgdgPxQnLtB6rFWY8owIrTcTaxufstCPhn6MOY8RiHsYAzRxXbUz GcP07/2W8rHhfCNeeXMJgyzPUbivz0OfhfqtkTXR5CZqk1aFsrWEBV+d9Pbx1WYOsdZw= X-Gm-Gg: ATEYQzzkdtjOjEVfB+ZGw9ixQDF1OKk4bHcx8aQ8K2AAoT6seyFvfsfSHy0lr0cIdux jg2A6P+waBPdKpaWRcrrS0mk7Zlmz/a6ovjryQ/hZhro+dDmD3GRKdRZS/4kk7Zy9xtmKR6xLV5 vliK97TLoQ4CBUyCZezJrQfYU3/0ROQKPMO1rgrrj/eG3jmV49472qfRdvRDkHSzpVGraVJVzwk 2VVVGsii3WSmqgRNgjfynyOMbfZOpcwaB65M1DiVbiJ9JaKJVMJvU2M/+IM7lHgSBwcEx2Vrk+8 rQW53dfhn8dJeC9Ad6Ku91w13qPIHXNz9E4MXJVkBhireL8hgoWXz10h2IGwiEyxbEXJiQjV5A+ EKEjQgd/0CR55yyFIJKvaUP/Vy5yLbMzOIVwX0O6OogL57RZHdsykd68us4+Ig2hJNUk8p2Aez8 s2b5RhkoF5E09uc73mjkQvlxCtx676B/A3OHQ= X-Received: by 2002:a05:620a:28c3:b0:8ca:305b:748e with SMTP id af79cd13be357-8cbc8e1d7a1mr877884785a.57.1772292398034; Sat, 28 Feb 2026 07:26:38 -0800 (PST) X-Received: by 2002:a05:620a:28c3:b0:8ca:305b:748e with SMTP id af79cd13be357-8cbc8e1d7a1mr877880885a.57.1772292397473; Sat, 28 Feb 2026 07:26:37 -0800 (PST) Received: from umbar.lan (2001-14ba-a073-af00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a073:af00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5a115b57922sm625558e87.63.2026.02.28.07.26.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 28 Feb 2026 07:26:36 -0800 (PST) From: Dmitry Baryshkov Date: Sat, 28 Feb 2026 17:26:31 +0200 Subject: [PATCH v2 04/11] media: qcom: iris: simplify HFI params handling Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260228-iris-platform-data-v2-4-acf036a3c84c@oss.qualcomm.com> References: <20260228-iris-platform-data-v2-0-acf036a3c84c@oss.qualcomm.com> In-Reply-To: <20260228-iris-platform-data-v2-0-acf036a3c84c@oss.qualcomm.com> To: Vikash Garodia , Dikshita Agarwal , Abhinav Kumar , Bryan O'Donoghue , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=13412; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=nUSa520FLKqjEX950txivtgMTRsmndZ/Adu76XEOkRc=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpowkmWPzUAIzZaOKjb4RERqOA7q7zuS7QbQ8xj KjTKuGP8GaJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaaMJJgAKCRCLPIo+Aiko 1fTDB/9hj4z70Xtx0qQ38HDijDws2yRgN2YtT1X7BrRUCXJFr7CvqPd/486bibTH0iOwNNxP7rn xp5D4fJjZPQGczcSx25VvCYqo6wdoQjIVBnsLuymwdvsXpIkOhptqZhrryZIVu43U+k4obkdk7/ 4ZT1SuYdoGu0iImclsGdyDN6DgU1K9oRUvqrtYp87PueQPu+xicTOUtxB2wEKVm00s6kTgv7Kr3 irA9AczCPQQTMcRWSizzbkAVfbvmDX6hY9kp6Lz9ecS+66tScqTUN6K1vPBry0/GBL0FSnylBFS Z5ls90n85eeuasBGV0o0tmEOtNvewEd4w4eao2Vag+2aDm8/ X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI4MDE0MiBTYWx0ZWRfX/nVto19BSkuy Tbb2P177k5VekggIgCb2aNIYjHE7tUH9t7DZPUmzdT3VF+U5a0I8/sreCTGtXCvFraZyJ9r0j9g Lwm7jMQjAjja0WCqGDzOg5mW/awQ5P5aVwdQI7vfs7QZxoGxJEDY2Q3oD3d+Tg8yQn2aZQD2Cnd s4f8OMrFP3M1/Br7PO8F4NX/IT2Kajm+6Qcp1En08Eqakxal5jqH780qG0GBLrAvY5YYs9LSySU ResVMKhGsFDkhkpLf9lxw/wTule7lZcydbUuKNrOy0gGuYnTRTuFdWeg1+rXLnDZiNbI9YJwRr8 aXa/5xVurHgs75yfI2xi4Y/VkqxAVRej90CLV89zwIQt9Cv7Qct8pwpRzHP/RGHwpU8X8hL1x2o rkd8DGOigRlORlihz5rR+gfOSnYTbkiLpf7AOkBEsEj1I2C25N2SQh/1Mv7s4NbuUF7rn2BbhD1 KiS0bH2vS8xx3FpEf2w== X-Proofpoint-GUID: lVjWtU3j7XhJ8X2s9cZxpWRKMxBcqLEJ X-Proofpoint-ORIG-GUID: lVjWtU3j7XhJ8X2s9cZxpWRKMxBcqLEJ X-Authority-Analysis: v=2.4 cv=Zqzg6t7G c=1 sm=1 tr=0 ts=69a3092f cx=c_pps a=qKBjSQ1v91RyAK45QCPf5w==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=EUspDBNiAAAA:8 a=vZ3IETys5ARFP0fKc9YA:9 a=QEXdDO2ut3YA:10 a=NFOGd7dJGGMPyQGDc5-O:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-28_05,2026-02-27_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 lowpriorityscore=0 spamscore=0 priorityscore=1501 phishscore=0 suspectscore=0 impostorscore=0 malwarescore=0 bulkscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2602280142 Instead of looping over two tables to select the static order of functions, call necessary functsions directly in the correct order. Signed-off-by: Dmitry Baryshkov Reviewed-by: Konrad Dybcio --- .../platform/qcom/iris/iris_hfi_gen1_command.c | 116 ++++----------- .../platform/qcom/iris/iris_hfi_gen2_command.c | 160 +++++++++++------= ---- 2 files changed, 108 insertions(+), 168 deletions(-) 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 d5eaf8763f6d..b7aafda1d99e 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c @@ -978,107 +978,41 @@ static int iris_hfi_gen1_set_stride(struct iris_inst= *inst, u32 plane) return hfi_gen1_set_property(inst, ptype, &plane_actual_info, sizeof(plan= e_actual_info)); } =20 -static const u32 iris_hfi_gen1_vdec_input_config_param[] =3D { - HFI_PROPERTY_CONFIG_VIDEOCORES_USAGE, - HFI_PROPERTY_PARAM_UNCOMPRESSED_FORMAT_SELECT, - HFI_PROPERTY_PARAM_UNCOMPRESSED_PLANE_ACTUAL_CONSTRAINTS_INFO, - HFI_PROPERTY_PARAM_BUFFER_COUNT_ACTUAL, - HFI_PROPERTY_PARAM_VDEC_MULTI_STREAM, - HFI_PROPERTY_PARAM_FRAME_SIZE, - HFI_PROPERTY_PARAM_BUFFER_SIZE_ACTUAL, - HFI_PROPERTY_PARAM_BUFFER_ALLOC_MODE, -}; - -static const u32 iris_hfi_gen1_venc_input_config_param[] =3D { - HFI_PROPERTY_CONFIG_FRAME_RATE, - HFI_PROPERTY_PARAM_UNCOMPRESSED_PLANE_ACTUAL_INFO, - HFI_PROPERTY_PARAM_FRAME_SIZE, - HFI_PROPERTY_PARAM_UNCOMPRESSED_FORMAT_SELECT, - HFI_PROPERTY_PARAM_BUFFER_COUNT_ACTUAL, -}; - static int iris_hfi_gen1_session_set_config_params(struct iris_inst *inst,= u32 plane) { - struct iris_hfi_prop_type_handle const *handler =3D NULL; - u32 handler_size =3D 0; - u32 config_params_size, i, j; - const u32 *config_params; int ret; =20 - static const struct iris_hfi_prop_type_handle vdec_prop_type_handle_inp_a= rr[] =3D { - {HFI_PROPERTY_PARAM_FRAME_SIZE, - iris_hfi_gen1_set_resolution}, - {HFI_PROPERTY_CONFIG_VIDEOCORES_USAGE, - iris_hfi_gen1_decide_core}, - {HFI_PROPERTY_PARAM_UNCOMPRESSED_FORMAT_SELECT, - iris_hfi_gen1_set_raw_format}, - {HFI_PROPERTY_PARAM_UNCOMPRESSED_PLANE_ACTUAL_CONSTRAINTS_INFO, - iris_hfi_gen1_set_format_constraints}, - {HFI_PROPERTY_PARAM_BUFFER_COUNT_ACTUAL, - iris_hfi_gen1_set_num_bufs}, - {HFI_PROPERTY_PARAM_VDEC_MULTI_STREAM, - iris_hfi_gen1_set_multistream}, - {HFI_PROPERTY_PARAM_BUFFER_SIZE_ACTUAL, - iris_hfi_gen1_set_bufsize}, - }; - - static const struct iris_hfi_prop_type_handle vdec_prop_type_handle_out_a= rr[] =3D { - {HFI_PROPERTY_PARAM_FRAME_SIZE, - iris_hfi_gen1_set_resolution}, - {HFI_PROPERTY_PARAM_UNCOMPRESSED_FORMAT_SELECT, - iris_hfi_gen1_set_raw_format}, - {HFI_PROPERTY_PARAM_UNCOMPRESSED_PLANE_ACTUAL_CONSTRAINTS_INFO, - iris_hfi_gen1_set_format_constraints}, - {HFI_PROPERTY_PARAM_BUFFER_COUNT_ACTUAL, - iris_hfi_gen1_set_num_bufs}, - {HFI_PROPERTY_PARAM_VDEC_MULTI_STREAM, - iris_hfi_gen1_set_multistream}, - {HFI_PROPERTY_PARAM_BUFFER_SIZE_ACTUAL, - iris_hfi_gen1_set_bufsize}, - }; - - static const struct iris_hfi_prop_type_handle venc_prop_type_handle_inp_a= rr[] =3D { - {HFI_PROPERTY_CONFIG_FRAME_RATE, - iris_hfi_gen1_set_frame_rate}, - {HFI_PROPERTY_PARAM_UNCOMPRESSED_PLANE_ACTUAL_INFO, - iris_hfi_gen1_set_stride}, - {HFI_PROPERTY_PARAM_FRAME_SIZE, - iris_hfi_gen1_set_resolution}, - {HFI_PROPERTY_PARAM_UNCOMPRESSED_FORMAT_SELECT, - iris_hfi_gen1_set_raw_format}, - {HFI_PROPERTY_PARAM_BUFFER_COUNT_ACTUAL, - iris_hfi_gen1_set_num_bufs}, - }; - if (inst->domain =3D=3D DECODER) { - config_params =3D iris_hfi_gen1_vdec_input_config_param; - config_params_size =3D ARRAY_SIZE(iris_hfi_gen1_vdec_input_config_param); if (V4L2_TYPE_IS_OUTPUT(plane)) { - handler =3D vdec_prop_type_handle_inp_arr; - handler_size =3D ARRAY_SIZE(vdec_prop_type_handle_inp_arr); - } else if (V4L2_TYPE_IS_CAPTURE(plane)) { - handler =3D vdec_prop_type_handle_out_arr; - handler_size =3D ARRAY_SIZE(vdec_prop_type_handle_out_arr); + ret =3D iris_hfi_gen1_decide_core(inst, plane); + if (ret) + return ret; } - } else { - config_params =3D iris_hfi_gen1_venc_input_config_param; - config_params_size =3D ARRAY_SIZE(iris_hfi_gen1_venc_input_config_param); - handler =3D venc_prop_type_handle_inp_arr; - handler_size =3D ARRAY_SIZE(venc_prop_type_handle_inp_arr); - } =20 - for (i =3D 0; i < config_params_size; i++) { - for (j =3D 0; j < handler_size; j++) { - if (handler[j].type =3D=3D config_params[i]) { - ret =3D handler[j].handle(inst, plane); - if (ret) - return ret; - break; - } - } + ret =3D iris_hfi_gen1_set_raw_format(inst, plane); + if (!ret) + ret =3D iris_hfi_gen1_set_format_constraints(inst, plane); + if (!ret) + ret =3D iris_hfi_gen1_set_num_bufs(inst, plane); + if (!ret) + ret =3D iris_hfi_gen1_set_multistream(inst, plane); + if (!ret) + ret =3D iris_hfi_gen1_set_resolution(inst, plane); + if (!ret) + ret =3D iris_hfi_gen1_set_bufsize(inst, plane); + } else { + ret =3D iris_hfi_gen1_set_frame_rate(inst, plane); + if (!ret) + ret =3D iris_hfi_gen1_set_stride(inst, plane); + if (!ret) + ret =3D iris_hfi_gen1_set_resolution(inst, plane); + if (!ret) + ret =3D iris_hfi_gen1_set_raw_format(inst, plane); + if (!ret) + ret =3D iris_hfi_gen1_set_num_bufs(inst, plane); } =20 - return 0; + return ret; } =20 static const struct iris_hfi_command_ops iris_hfi_gen1_command_ops =3D { 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 52fd1fd51946..28f352d99bf0 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c @@ -644,103 +644,109 @@ static const u32 iris_hfi_gen2_vdec_input_config_pa= rams_av1[] =3D { HFI_PROP_SIGNAL_COLOR_INFO, }; =20 -static const u32 iris_hfi_gen2_venc_input_config_params[] =3D { - HFI_PROP_COLOR_FORMAT, - HFI_PROP_RAW_RESOLUTION, - HFI_PROP_CROP_OFFSETS, - HFI_PROP_LINEAR_STRIDE_SCANLINE, - HFI_PROP_SIGNAL_COLOR_INFO, -}; - -static const u32 iris_hfi_gen2_vdec_output_config_params[] =3D { - HFI_PROP_OPB_ENABLE, - HFI_PROP_COLOR_FORMAT, - HFI_PROP_LINEAR_STRIDE_SCANLINE, -}; - -static const u32 iris_hfi_gen2_venc_output_config_params[] =3D { - HFI_PROP_BITSTREAM_RESOLUTION, - HFI_PROP_CROP_OFFSETS, - HFI_PROP_FRAME_RATE, -}; - static int iris_hfi_gen2_session_set_config_params(struct iris_inst *inst,= u32 plane) { - u32 config_params_size =3D 0, i, j; - const u32 *config_params =3D NULL; int ret; =20 - static const struct iris_hfi_prop_type_handle prop_type_handle_arr[] =3D { - {HFI_PROP_RAW_RESOLUTION, iris_hfi_gen2_set_raw_resolution = }, - {HFI_PROP_BITSTREAM_RESOLUTION, iris_hfi_gen2_set_bitstream_resolu= tion }, - {HFI_PROP_CROP_OFFSETS, iris_hfi_gen2_set_crop_offsets = }, - {HFI_PROP_CODED_FRAMES, iris_hfi_gen2_set_coded_frames = }, - {HFI_PROP_LUMA_CHROMA_BIT_DEPTH, iris_hfi_gen2_set_bit_depth = }, - {HFI_PROP_BUFFER_FW_MIN_OUTPUT_COUNT, iris_hfi_gen2_set_min_output_count= }, - {HFI_PROP_PIC_ORDER_CNT_TYPE, iris_hfi_gen2_set_picture_order_co= unt }, - {HFI_PROP_SIGNAL_COLOR_INFO, iris_hfi_gen2_set_colorspace = }, - {HFI_PROP_PROFILE, iris_hfi_gen2_set_profile = }, - {HFI_PROP_LEVEL, iris_hfi_gen2_set_level = }, - {HFI_PROP_OPB_ENABLE, iris_hfi_gen2_set_opb_enable = }, - {HFI_PROP_COLOR_FORMAT, iris_hfi_gen2_set_colorformat = }, - {HFI_PROP_LINEAR_STRIDE_SCANLINE, iris_hfi_gen2_set_linear_stride_sc= anline }, - {HFI_PROP_TIER, iris_hfi_gen2_set_tier = }, - {HFI_PROP_FRAME_RATE, iris_hfi_gen2_set_frame_rate = }, - {HFI_PROP_AV1_FILM_GRAIN_PRESENT, iris_hfi_gen2_set_film_grain = }, - {HFI_PROP_AV1_SUPER_BLOCK_ENABLED, iris_hfi_gen2_set_super_block = }, - {HFI_PROP_OPB_ENABLE, iris_hfi_gen2_set_opb_enable = }, - }; - if (inst->domain =3D=3D DECODER) { if (V4L2_TYPE_IS_OUTPUT(plane)) { if (inst->codec =3D=3D V4L2_PIX_FMT_H264) { - config_params =3D iris_hfi_gen2_vdec_input_config_params_avc; - config_params_size =3D - ARRAY_SIZE(iris_hfi_gen2_vdec_input_config_params_avc); + ret =3D iris_hfi_gen2_set_bitstream_resolution(inst, plane); + if (!ret) + ret =3D iris_hfi_gen2_set_crop_offsets(inst, plane); + if (!ret) + ret =3D iris_hfi_gen2_set_bit_depth(inst, plane); + if (!ret) + ret =3D iris_hfi_gen2_set_coded_frames(inst, plane); + if (!ret) + ret =3D iris_hfi_gen2_set_min_output_count(inst, plane); + if (!ret) + ret =3D iris_hfi_gen2_set_picture_order_count(inst, plane); + if (!ret) + ret =3D iris_hfi_gen2_set_profile(inst, plane); + if (!ret) + ret =3D iris_hfi_gen2_set_level(inst, plane); + if (!ret) + ret =3D iris_hfi_gen2_set_colorspace(inst, plane); } else if (inst->codec =3D=3D V4L2_PIX_FMT_HEVC) { - config_params =3D iris_hfi_gen2_vdec_input_config_params_hevc; - config_params_size =3D - ARRAY_SIZE(iris_hfi_gen2_vdec_input_config_params_hevc); + ret =3D iris_hfi_gen2_set_bitstream_resolution(inst, plane); + if (!ret) + ret =3D iris_hfi_gen2_set_crop_offsets(inst, plane); + if (!ret) + ret =3D iris_hfi_gen2_set_bit_depth(inst, plane); + if (!ret) + ret =3D iris_hfi_gen2_set_min_output_count(inst, plane); + if (!ret) + ret =3D iris_hfi_gen2_set_profile(inst, plane); + if (!ret) + ret =3D iris_hfi_gen2_set_level(inst, plane); + if (!ret) + ret =3D iris_hfi_gen2_set_tier(inst, plane); + if (!ret) + ret =3D iris_hfi_gen2_set_colorspace(inst, plane); } else if (inst->codec =3D=3D V4L2_PIX_FMT_VP9) { - config_params =3D iris_hfi_gen2_vdec_input_config_params_vp9; - config_params_size =3D - ARRAY_SIZE(iris_hfi_gen2_vdec_input_config_params_vp9); + ret =3D iris_hfi_gen2_set_bitstream_resolution(inst, plane); + if (!ret) + ret =3D iris_hfi_gen2_set_crop_offsets(inst, plane); + if (!ret) + ret =3D iris_hfi_gen2_set_bit_depth(inst, plane); + if (!ret) + ret =3D iris_hfi_gen2_set_min_output_count(inst, plane); + if (!ret) + ret =3D iris_hfi_gen2_set_profile(inst, plane); + if (!ret) + ret =3D iris_hfi_gen2_set_level(inst, plane); } else if (inst->codec =3D=3D V4L2_PIX_FMT_AV1) { - config_params =3D iris_hfi_gen2_vdec_input_config_params_av1; - config_params_size =3D - ARRAY_SIZE(iris_hfi_gen2_vdec_input_config_params_av1); + ret =3D iris_hfi_gen2_set_bitstream_resolution(inst, plane); + if (!ret) + ret =3D iris_hfi_gen2_set_crop_offsets(inst, plane); + if (!ret) + ret =3D iris_hfi_gen2_set_bit_depth(inst, plane); + if (!ret) + ret =3D iris_hfi_gen2_set_min_output_count(inst, plane); + if (!ret) + ret =3D iris_hfi_gen2_set_profile(inst, plane); + if (!ret) + ret =3D iris_hfi_gen2_set_level(inst, plane); + if (!ret) + ret =3D iris_hfi_gen2_set_tier(inst, plane); + if (!ret) + ret =3D iris_hfi_gen2_set_film_grain(inst, plane); + if (!ret) + ret =3D iris_hfi_gen2_set_super_block(inst, plane); + if (!ret) + ret =3D iris_hfi_gen2_set_colorspace(inst, plane); } else { - return -EINVAL; + ret =3D -EINVAL; } } else { - config_params =3D iris_hfi_gen2_vdec_output_config_params; - config_params_size =3D ARRAY_SIZE(iris_hfi_gen2_vdec_output_config_para= ms); + ret =3D iris_hfi_gen2_set_opb_enable(inst, plane); + if (!ret) + ret =3D iris_hfi_gen2_set_colorformat(inst, plane); + if (!ret) + ret =3D iris_hfi_gen2_set_linear_stride_scanline(inst, plane); } } else { if (V4L2_TYPE_IS_OUTPUT(plane)) { - config_params =3D iris_hfi_gen2_venc_input_config_params; - config_params_size =3D ARRAY_SIZE(iris_hfi_gen2_venc_input_config_param= s); + ret =3D iris_hfi_gen2_set_colorformat(inst, plane); + if (!ret) + ret =3D iris_hfi_gen2_set_raw_resolution(inst, plane); + if (!ret) + ret =3D iris_hfi_gen2_set_crop_offsets(inst, plane); + if (!ret) + ret =3D iris_hfi_gen2_set_linear_stride_scanline(inst, plane); + if (!ret) + ret =3D iris_hfi_gen2_set_colorspace(inst, plane); } else { - config_params =3D iris_hfi_gen2_venc_output_config_params; - config_params_size =3D ARRAY_SIZE(iris_hfi_gen2_venc_output_config_para= ms); + ret =3D iris_hfi_gen2_set_bitstream_resolution(inst, plane); + if (!ret) + ret =3D iris_hfi_gen2_set_crop_offsets(inst, plane); + if (!ret) + ret =3D iris_hfi_gen2_set_frame_rate(inst, plane); } } =20 - if (!config_params || !config_params_size) - return -EINVAL; - - for (i =3D 0; i < config_params_size; i++) { - for (j =3D 0; j < ARRAY_SIZE(prop_type_handle_arr); j++) { - if (prop_type_handle_arr[j].type =3D=3D config_params[i]) { - ret =3D prop_type_handle_arr[j].handle(inst, plane); - if (ret) - return ret; - break; - } - } - } - - return 0; + return ret; } =20 static int iris_hfi_gen2_session_set_codec(struct iris_inst *inst) --=20 2.47.3 From nobody Sat Apr 18 09:30:54 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D26FE47B43C for ; Sat, 28 Feb 2026 15:26:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772292402; cv=none; b=tXxVpSmUAtnCkmoTz+1YRQPPOdfF5qVT1aJA8dveVgaONQU3mGk+xNySFR/WUpJqhIRDJZSW2GTXoeV1HVck624pIIB8Hui2NBgK0xPQAx67hLRjcJvsgWpLpMh7hADnIJ82Yf9k4HgPb7jiCPWVQFmoylWH3g+lK5n+G7rdQbY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772292402; c=relaxed/simple; bh=UTDd4q7OJ9ElblHjzyWaiYHRBQRX00Jcn7/ePPmgxl8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=DRAn7JS8qJ8zWBCegQT0rxUkhtBMeyr/dzTItWWN1xKynsiIIVaGp1E4WdzbkZMPghgmlVnrpZeayew0FFEvljwIAGAv6qbC78VHAeEFBM1abvx3gwRshxyQ4mGfUB+HvfXzejnKZ21+UPNxxG3NpVx+CmroHsP5AuMH0QCO+Ss= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=Xs6Gvsgk; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=CJYbR5Vs; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="Xs6Gvsgk"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="CJYbR5Vs" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61SEO2J62774174 for ; Sat, 28 Feb 2026 15:26:40 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= 5hCSj4BVNzP/ybKc2el5rIGmk2I7+zGs50Rsmhype+o=; b=Xs6GvsgkwprcBaMq 0Qhbd+iya897oZFglK8jPAjSwdqrvgC10QiEdmSIpPpankF/CECcgfsTwDsYRJZK yWLJVynaoe0vbZ3AGprmVQ/pflVUIfVHuV9iC4r6O+7UmPYaU1HVarWRPkGV81cW 8tmTMo3KQlkqA440oCkJvp4ZWGmFeUEU1Vtwx5PGz/cTRfVtp+x22KWCf2hwvc9s n//TrodlABw31FSOyM6G8ziVcUYLW98uW/dEObuYxqp08QG3Hs0ZC1TjgP5bqwzD hMFUbWNEiZaiVWlirEEQsgjqOC/Ml+Vwx87p8/XOqeuCGtHXmu+M9Lh2nFKnvVqu BrfVmg== Received: from mail-qk1-f197.google.com (mail-qk1-f197.google.com [209.85.222.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cksgq15tk-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 28 Feb 2026 15:26:40 +0000 (GMT) Received: by mail-qk1-f197.google.com with SMTP id af79cd13be357-8c711251ac5so2453975385a.1 for ; Sat, 28 Feb 2026 07:26:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1772292399; x=1772897199; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=5hCSj4BVNzP/ybKc2el5rIGmk2I7+zGs50Rsmhype+o=; b=CJYbR5VsmnxWTy/KTND3ljROK9IPAIbOT3GngGWX7YxEW/zs/Cs+aB1fM+WdnPOJ14 BqrAv06lb12lADbq++UTdVAod2BA6D6kkXBzECE5WtPp9uVToxlHj9su6w0VZepZyJQ5 eFT4dPa+MpdueDeuH17H4kFLNplOOLo/gIThJdJ0m+dJ/s3s8a6ak8XppFlXQi+WVlMp 6x2XuD5DdHN6vDm1Gxg/Yv8Ksxqm+IgN/CWR1BI5KoMWOITh/B3U5sX9eq1RGQcYFAP+ cEXvGQPepbBUZlGIqRtCNUZzlOitq2UD5fbbUZ9mLUla4wM7Nz4ghcEQgixrWf0c7diS JJkg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772292399; x=1772897199; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=5hCSj4BVNzP/ybKc2el5rIGmk2I7+zGs50Rsmhype+o=; b=LuN5cvAZQ4KUo4KxE/kBB65oiHTjMl7ni0Mj/Z85CHX3bMWcKxCCqyGmOrzSW1tiyx mWpgoU/kTYlNSKKvqhdZ1gTGgxUropUr40sLcWmZrL3c6dbl6VwvcVyh+DtYSSDYqQF0 kixfz2LIM8IqW7F3w4zaiGyv33wR8+0uP+wUG/HM6sXUW8WCDaEEeQrBwsE3Tn1a3riJ 6qDjHEZ6zGVlImumD7RwEd1KMSCj8QIIGUYtdbEkds0Ees17i59d6ZJ1MNZmsmNQ8tFS s8G6Uj4Ul6JeCFGf6nEItYSsUe/EeK5HMWixfT02qBSz5GmGt2Zn9BExTEkohYGN5+Jr dfjQ== X-Forwarded-Encrypted: i=1; AJvYcCWFbe+im7UV1NVAcrIWAWfUTWYoI0Ki2Htl19Ohw89HH23/tuD1QVOe2lz08mZZRxaWCOJA1j6ZJ8t8nw8=@vger.kernel.org X-Gm-Message-State: AOJu0YzujZqMrzxECOuuV3TMABr2ZdhK+9UwbVa2lxWL9Xc3oCR/wCZo AVjL9+HiL+U00k+BGY+QQ06Vp9Rcz6BbVsldDCka6VDisJ2XtQRBLgkv9vvFOq4VuTNWD1C0Er9 kZi/wjbrH3X00DuAicz3Tci47ZQd4efIrP+hZXZyh1xCTyr9LII+awQvFf29UAreNuGc= X-Gm-Gg: ATEYQzyOTENqEBU8n16KHT4fcXrrYH/K68mOJyhN52p9MsuRnS7W3LJV452lt68IriU Zvy0O2eexs4KJbp45JvfJe+21oEt+etDXZd0wQ3Z/noa7nFgq0hhv+SfpNQfoze4vFC1t2MOTZY 3aCMj0pQnjAWCL83a6dWDhVKe0FtjslVeTQ0dyiUbE7m8jRWr9Mqgcn0msar3f7tmy+WbqZDsvI rvy6JZmAJ5Ren+GkRZnfAiwa6YWhde4qCBM5SciDeI/c7984V8f3uC1QuH61J4yZgcaZMmUx94p GpTbhg1VjcT5xT2VWf86u0x9S+Vb5DuZNVO7HgRpxU/9hqfR1b189G//LFN0SFsJTfkwFOr3otB /xWhzvOaZhx2f0fuFrWTXUnqIzybyJqX2w+QJSFPZKHCZJGX1tr06TZdhwkTzv/N5yf52MIvJvI VZDX0eyfSrIE3Ej/6zb7uQrQWjbcdjU2g32/U= X-Received: by 2002:a05:620a:4409:b0:8c6:a628:8608 with SMTP id af79cd13be357-8cbc8d71072mr739578885a.6.1772292399126; Sat, 28 Feb 2026 07:26:39 -0800 (PST) X-Received: by 2002:a05:620a:4409:b0:8c6:a628:8608 with SMTP id af79cd13be357-8cbc8d71072mr739576685a.6.1772292398661; Sat, 28 Feb 2026 07:26:38 -0800 (PST) Received: from umbar.lan (2001-14ba-a073-af00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a073:af00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5a115b57922sm625558e87.63.2026.02.28.07.26.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 28 Feb 2026 07:26:37 -0800 (PST) From: Dmitry Baryshkov Date: Sat, 28 Feb 2026 17:26:32 +0200 Subject: [PATCH v2 05/11] media: qcom: iris: handle HFI subscription properties directly Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260228-iris-platform-data-v2-5-acf036a3c84c@oss.qualcomm.com> References: <20260228-iris-platform-data-v2-0-acf036a3c84c@oss.qualcomm.com> In-Reply-To: <20260228-iris-platform-data-v2-0-acf036a3c84c@oss.qualcomm.com> To: Vikash Garodia , Dikshita Agarwal , Abhinav Kumar , Bryan O'Donoghue , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=10234; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=UTDd4q7OJ9ElblHjzyWaiYHRBQRX00Jcn7/ePPmgxl8=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpowkmJoUbM/bJVcd8YEJpVlTqcbJiVkix/KhSC P7maXrzFMWJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaaMJJgAKCRCLPIo+Aiko 1bwcB/9gEEly6MMYnOeG4BOjaxedwgB1aHHdiFGDWQ10o+9Ps57D6FMamxoG27mE1eID9jVMBQL FA0rOstJBdlFCOslIlXPpNnxDVIWAn4N2rNlEEe/ELgxhKjNZFSMVv96wOnN6NHGKSwZ1K5KlzV rC3lz6aoMgiW7rmhImMsdFSoSzf9JAioTAMuSVaQJ9KicTx/N9QPvk2XJNwaWikuUVWZAg8MHWN oSdGMQ3VJgyXbtcBkrUjYbazXDk0KLQsbbFmq0OoexB6C8PthE6bPYzrMjzeEXdPAeiH4fQdCCP As5dSgKiT5b3Qxv73JYShjixvijITAfkWjX06q0LMvvMrkht X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-GUID: u123bugyIyT-xUi2lAEdYi45TGTbrq8j X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI4MDE0MiBTYWx0ZWRfXzGJonsoNZSIV mfIRuu/e6OKN8Hy2lCikrPk8o+7OriST5qZIb5F+KJZfyJxnKAXWo49UJRu60KfpPYmTnfZAa0/ UYSo2pmqHsvG485CDv27e8vgm5ohk9Doau5HrW6niB8BgFquujJvO5voOanlnVusFtoqhvywz4R 7jv+LoOfMueg6+2QznYyz/mYnixxyeDRtoyAfI0w3EgFgBx5P/iGg5CtwHG2+khwCdr/iwEg+jm hqz89p29hcLz6vzN9LHuaOJdnrTjm+haGRWwKY4K/Kf4RwUofstKF9lYKJII5zi4Gx6R5Tn/PLK yKh59VOr1KHkt7PlpooedVaujkLtXoq1Lqc/6G5PkJiQhoU4i0cuKCjFTBOfb08IxSkA2O7R1ue vx3/Q1UT/0BI1uhI0BZxuyferST5Ol1pmo9Y6xwKeyjtH8Z4RtyTMKYp8gZOGn8hhn+MRcnth88 nkIpd29wX3AO+ausg9w== X-Authority-Analysis: v=2.4 cv=bdRmkePB c=1 sm=1 tr=0 ts=69a30930 cx=c_pps a=50t2pK5VMbmlHzFWWp8p/g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=EUspDBNiAAAA:8 a=GYkPiPrV-DgmlJk3dwoA:9 a=QEXdDO2ut3YA:10 a=IoWCM6iH3mJn3m4BftBB:22 X-Proofpoint-ORIG-GUID: u123bugyIyT-xUi2lAEdYi45TGTbrq8j X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-28_05,2026-02-27_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 bulkscore=0 priorityscore=1501 clxscore=1015 malwarescore=0 impostorscore=0 suspectscore=0 adultscore=0 spamscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2602280142 The HFI subscriptions properties are set per the HFI generation, they don't change between different platforms with the same HFI interface. Instead of copy-pasting the same properties between platform data over and over again, move them to the corresponding HFI generation source file and drop them from the HFI platform data. Signed-off-by: Dmitry Baryshkov --- .../platform/qcom/iris/iris_hfi_gen2_command.c | 50 +++++++++---- .../platform/qcom/iris/iris_platform_common.h | 10 --- .../media/platform/qcom/iris/iris_platform_gen2.c | 83 ------------------= ---- 3 files changed, 35 insertions(+), 108 deletions(-) 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 28f352d99bf0..fd8a055c4acc 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c @@ -1053,9 +1053,31 @@ static int iris_hfi_gen2_subscribe_change_param(stru= ct iris_inst *inst, u32 plan return 0; } =20 +static const u32 iris_hfi_gen2_vdec_input_prop[] =3D { + HFI_PROP_NO_OUTPUT, +}; + +static const u32 iris_hfi_gen2_vdec_output_prop_avc[] =3D { + HFI_PROP_PICTURE_TYPE, + HFI_PROP_CABAC_SESSION, +}; + +static const u32 iris_hfi_gen2_vdec_output_prop_hevc[] =3D { + HFI_PROP_PICTURE_TYPE, +}; + +static const u32 iris_hfi_gen2_vdec_output_prop_vp9[] =3D { + HFI_PROP_PICTURE_TYPE, +}; + +static const u32 iris_hfi_gen2_vdec_output_prop_av1[] =3D { + HFI_PROP_PICTURE_TYPE, + HFI_PROP_WORST_COMPRESSION_RATIO, + HFI_PROP_WORST_COMPLEXITY_FACTOR, +}; + static int iris_hfi_gen2_subscribe_property(struct iris_inst *inst, u32 pl= ane) { - struct iris_core *core =3D inst->core; u32 subscribe_prop_size =3D 0, i; const u32 *subcribe_prop =3D NULL; u32 payload[32] =3D {0}; @@ -1066,30 +1088,28 @@ static int iris_hfi_gen2_subscribe_property(struct = iris_inst *inst, u32 plane) return 0; =20 if (V4L2_TYPE_IS_OUTPUT(plane)) { - subscribe_prop_size =3D core->iris_platform_data->dec_input_prop_size; - subcribe_prop =3D core->iris_platform_data->dec_input_prop; + subscribe_prop_size =3D ARRAY_SIZE(iris_hfi_gen2_vdec_input_prop); + subcribe_prop =3D iris_hfi_gen2_vdec_input_prop; } else { switch (inst->codec) { case V4L2_PIX_FMT_H264: - subcribe_prop =3D core->iris_platform_data->dec_output_prop_avc; - subscribe_prop_size =3D - core->iris_platform_data->dec_output_prop_avc_size; + subcribe_prop =3D iris_hfi_gen2_vdec_output_prop_avc; + subscribe_prop_size =3D ARRAY_SIZE(iris_hfi_gen2_vdec_output_prop_avc); break; case V4L2_PIX_FMT_HEVC: - subcribe_prop =3D core->iris_platform_data->dec_output_prop_hevc; - subscribe_prop_size =3D - core->iris_platform_data->dec_output_prop_hevc_size; + subcribe_prop =3D iris_hfi_gen2_vdec_output_prop_hevc; + subscribe_prop_size =3D ARRAY_SIZE(iris_hfi_gen2_vdec_output_prop_hevc); break; case V4L2_PIX_FMT_VP9: - subcribe_prop =3D core->iris_platform_data->dec_output_prop_vp9; - subscribe_prop_size =3D - core->iris_platform_data->dec_output_prop_vp9_size; + subcribe_prop =3D iris_hfi_gen2_vdec_output_prop_vp9; + subscribe_prop_size =3D ARRAY_SIZE(iris_hfi_gen2_vdec_output_prop_vp9); break; case V4L2_PIX_FMT_AV1: - subcribe_prop =3D core->iris_platform_data->dec_output_prop_av1; - subscribe_prop_size =3D - core->iris_platform_data->dec_output_prop_av1_size; + subcribe_prop =3D iris_hfi_gen2_vdec_output_prop_av1; + subscribe_prop_size =3D ARRAY_SIZE(iris_hfi_gen2_vdec_output_prop_av1); break; + default: + return -EINVAL; } } =20 diff --git a/drivers/media/platform/qcom/iris/iris_platform_common.h b/driv= ers/media/platform/qcom/iris/iris_platform_common.h index 00e40590d5ec..f5eb17ae072c 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_common.h +++ b/drivers/media/platform/qcom/iris/iris_platform_common.h @@ -243,16 +243,6 @@ struct iris_platform_data { u32 max_core_mbpf; /* max number of macroblocks per second supported */ u32 max_core_mbps; - const u32 *dec_input_prop; - unsigned int dec_input_prop_size; - const u32 *dec_output_prop_avc; - unsigned int dec_output_prop_avc_size; - const u32 *dec_output_prop_hevc; - unsigned int dec_output_prop_hevc_size; - const u32 *dec_output_prop_vp9; - unsigned int dec_output_prop_vp9_size; - const u32 *dec_output_prop_av1; - unsigned int dec_output_prop_av1_size; const u32 *dec_ip_int_buf_tbl; unsigned int dec_ip_int_buf_tbl_size; const u32 *dec_op_int_buf_tbl; diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen2.c b/driver= s/media/platform/qcom/iris/iris_platform_gen2.c index 5b157697d478..ef70472ecde5 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen2.c +++ b/drivers/media/platform/qcom/iris/iris_platform_gen2.c @@ -794,29 +794,6 @@ static const struct tz_cp_config tz_cp_config_sm8550[]= =3D { }, }; =20 -static const u32 sm8550_vdec_subscribe_input_properties[] =3D { - HFI_PROP_NO_OUTPUT, -}; - -static const u32 sm8550_vdec_subscribe_output_properties_avc[] =3D { - HFI_PROP_PICTURE_TYPE, - HFI_PROP_CABAC_SESSION, -}; - -static const u32 sm8550_vdec_subscribe_output_properties_hevc[] =3D { - HFI_PROP_PICTURE_TYPE, -}; - -static const u32 sm8550_vdec_subscribe_output_properties_vp9[] =3D { - HFI_PROP_PICTURE_TYPE, -}; - -static const u32 sm8550_vdec_subscribe_output_properties_av1[] =3D { - HFI_PROP_PICTURE_TYPE, - HFI_PROP_WORST_COMPRESSION_RATIO, - HFI_PROP_WORST_COMPLEXITY_FACTOR, -}; - static const u32 sm8550_dec_ip_int_buf_tbl[] =3D { BUF_BIN, BUF_COMV, @@ -880,21 +857,6 @@ const struct iris_platform_data sm8550_data =3D { .max_core_mbpf =3D NUM_MBS_8K * 2, .max_core_mbps =3D ((7680 * 4320) / 256) * 60, =20 - .dec_input_prop =3D sm8550_vdec_subscribe_input_properties, - .dec_input_prop_size =3D ARRAY_SIZE(sm8550_vdec_subscribe_input_propertie= s), - .dec_output_prop_avc =3D sm8550_vdec_subscribe_output_properties_avc, - .dec_output_prop_avc_size =3D - ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_avc), - .dec_output_prop_hevc =3D sm8550_vdec_subscribe_output_properties_hevc, - .dec_output_prop_hevc_size =3D - ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_hevc), - .dec_output_prop_vp9 =3D sm8550_vdec_subscribe_output_properties_vp9, - .dec_output_prop_vp9_size =3D - ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_vp9), - .dec_output_prop_av1 =3D sm8550_vdec_subscribe_output_properties_av1, - .dec_output_prop_av1_size =3D - ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_av1), - .dec_ip_int_buf_tbl =3D sm8550_dec_ip_int_buf_tbl, .dec_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_dec_ip_int_buf_tbl), .dec_op_int_buf_tbl =3D sm8550_dec_op_int_buf_tbl, @@ -954,21 +916,6 @@ const struct iris_platform_data sm8650_data =3D { .max_core_mbpf =3D NUM_MBS_8K * 2, .max_core_mbps =3D ((7680 * 4320) / 256) * 60, =20 - .dec_input_prop =3D sm8550_vdec_subscribe_input_properties, - .dec_input_prop_size =3D ARRAY_SIZE(sm8550_vdec_subscribe_input_propertie= s), - .dec_output_prop_avc =3D sm8550_vdec_subscribe_output_properties_avc, - .dec_output_prop_avc_size =3D - ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_avc), - .dec_output_prop_hevc =3D sm8550_vdec_subscribe_output_properties_hevc, - .dec_output_prop_hevc_size =3D - ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_hevc), - .dec_output_prop_vp9 =3D sm8550_vdec_subscribe_output_properties_vp9, - .dec_output_prop_vp9_size =3D - ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_vp9), - .dec_output_prop_av1 =3D sm8550_vdec_subscribe_output_properties_av1, - .dec_output_prop_av1_size =3D - ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_av1), - .dec_ip_int_buf_tbl =3D sm8550_dec_ip_int_buf_tbl, .dec_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_dec_ip_int_buf_tbl), .dec_op_int_buf_tbl =3D sm8550_dec_op_int_buf_tbl, @@ -1019,21 +966,6 @@ const struct iris_platform_data sm8750_data =3D { .max_core_mbpf =3D NUM_MBS_8K * 2, .max_core_mbps =3D ((7680 * 4320) / 256) * 60, =20 - .dec_input_prop =3D sm8550_vdec_subscribe_input_properties, - .dec_input_prop_size =3D ARRAY_SIZE(sm8550_vdec_subscribe_input_propertie= s), - .dec_output_prop_avc =3D sm8550_vdec_subscribe_output_properties_avc, - .dec_output_prop_avc_size =3D - ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_avc), - .dec_output_prop_hevc =3D sm8550_vdec_subscribe_output_properties_hevc, - .dec_output_prop_hevc_size =3D - ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_hevc), - .dec_output_prop_vp9 =3D sm8550_vdec_subscribe_output_properties_vp9, - .dec_output_prop_vp9_size =3D - ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_vp9), - .dec_output_prop_av1 =3D sm8550_vdec_subscribe_output_properties_av1, - .dec_output_prop_av1_size =3D - ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_av1), - .dec_ip_int_buf_tbl =3D sm8550_dec_ip_int_buf_tbl, .dec_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_dec_ip_int_buf_tbl), .dec_op_int_buf_tbl =3D sm8550_dec_op_int_buf_tbl, @@ -1088,21 +1020,6 @@ const struct iris_platform_data qcs8300_data =3D { .max_core_mbpf =3D ((4096 * 2176) / 256) * 4, .max_core_mbps =3D (((3840 * 2176) / 256) * 120), =20 - .dec_input_prop =3D sm8550_vdec_subscribe_input_properties, - .dec_input_prop_size =3D ARRAY_SIZE(sm8550_vdec_subscribe_input_propertie= s), - .dec_output_prop_avc =3D sm8550_vdec_subscribe_output_properties_avc, - .dec_output_prop_avc_size =3D - ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_avc), - .dec_output_prop_hevc =3D sm8550_vdec_subscribe_output_properties_hevc, - .dec_output_prop_hevc_size =3D - ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_hevc), - .dec_output_prop_vp9 =3D sm8550_vdec_subscribe_output_properties_vp9, - .dec_output_prop_vp9_size =3D - ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_vp9), - .dec_output_prop_av1 =3D sm8550_vdec_subscribe_output_properties_av1, - .dec_output_prop_av1_size =3D - ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_av1), - .dec_ip_int_buf_tbl =3D sm8550_dec_ip_int_buf_tbl, .dec_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_dec_ip_int_buf_tbl), .dec_op_int_buf_tbl =3D sm8550_dec_op_int_buf_tbl, --=20 2.47.3 From nobody Sat Apr 18 09:30:54 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C6CC547CC77 for ; Sat, 28 Feb 2026 15:26:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772292403; cv=none; b=rdCKqpyO+/LMTrL7knkjmIb3PhNO8322aQs3DXQx+JLJJDoY58bFcPaIpiG3soK/LY0zPpR+7NYSvefV2+O8n7Pummrl4X8Oi5dGURD41MVMHc3fYaWxtCnJcSC88pZD64Vl9WDaGVNAonlFtgBeiHbaOSaeO2p343KP1jCLJAs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772292403; c=relaxed/simple; bh=1Kf6KXU4l/H3LFKNax4FrB33AhXXcXlylE0Nbe0Lz8s=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=s6L88OiuLlE8r7D2XqHKyCaVSIeC9WlXW/Q2R03NtVg5pyRvtDwu28gmx7BkJzE7l9xrcYZsGvzvSj87oXfKz7TaCnntE7aQiaFVM93g13n5iExlaJHvm/DQZuLNNaZMFUY9Dc9g9Uujio7nqQJ7co/wO0QKh6/HqFm8MNbqNWg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=EDo742fm; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=NUFSq6Rp; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="EDo742fm"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="NUFSq6Rp" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61SEPEcb2736226 for ; Sat, 28 Feb 2026 15:26:41 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= LsBjgLUYF1aZBbJeQlRJX02GwU16qfWJ7mXVf2mm2d4=; b=EDo742fm1U4pjaFt 14ATFu8PIkQth83hpJRJnNoJp/iGgkzoc05C3mq2CwYPczZv7wyX7K66ZbroCFc9 AHTxsaAt8o1wBxTAyJR1mauvJC23cqIpXOgSqn4rp4SOmK9XOQo4/kEnZ8TJS95Q XffAAKGSLV6hceS71Z1EVPPrj/EjT1coMgQkgsIBMywIK11/l8A/+oZI2XaovRS1 ADO8Eb4uWzL+kMj/KHdHG4afiDkgPqOsheHBJAgrUUZI4667+gjD3+YHHYw3fLCs 9o8dJsmeP22e2sXqZb/YASMiMA2Ryw0IyafHsDPrujoIJ1juHIkz6cXDjb8BXmhg lh8XQA== Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cksgrs5vk-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 28 Feb 2026 15:26:41 +0000 (GMT) Received: by mail-qk1-f199.google.com with SMTP id af79cd13be357-8c70e610242so2635222485a.2 for ; Sat, 28 Feb 2026 07:26:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1772292400; x=1772897200; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=LsBjgLUYF1aZBbJeQlRJX02GwU16qfWJ7mXVf2mm2d4=; b=NUFSq6RpnC1tDsvmENtw1v8+IGkhcPwLns7a8QF6dydND9ZwajK78cszowOaNscxoI 1XHZGGfdKeXTfh5IfoSNtLYdoI5iYbcApCMESzLMPvT6fzAqwAE/czUPDGctcW9d6EnV uJ0J/rBCfrpRsTSDJqxA6Rr1OBceRf9fshf/sizws3rOXYDfn0LUTEtVU3tM8uYgrFd5 ys1MTsdYjl0ZmOUIMpmsBiWDLQ275cgS8VWzRJtW5OyV8jcn1Y5ZhvROAbQTqTeF6X0R bVx20qpT2Px0LXNEm4cQrpV8NlOb1J+moAuN+bJC5TgQdJh6j7SAYt7+bLp4wpOBZgZe lCMw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772292400; x=1772897200; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=LsBjgLUYF1aZBbJeQlRJX02GwU16qfWJ7mXVf2mm2d4=; b=All+WtChG6OcfMAQfI/cu9idR6YH7Xcx1VIpeMDIJk9TzBOFT+PLsU92a51ir5cPxa 99DsHtFox9FSRNXF+BudrQ/akTSPXS08z6EvjNGU0J+Mn0RB1EBznZ/Dze+tBXdnS/5D 3asq+xm8PLWqxUsJP+UbfEwe5kwJKJOnyTX3sTzurvj8QbzFjhsnmBQPdYvcAgJIEu6i QvD8WvHm1/IeRpdtPY4yQwsLLr0AWtR8hC5wMVj+IK5hWRcN0o+t5ubh+DtcI4RM1P1j pPqnAnGNqrl2XD7nRYESSwNtq5tXC8HJU2Nqcd4u+qrgHI6Pn5Wi70qKgrMRV2GPhyaT 1hPQ== X-Forwarded-Encrypted: i=1; AJvYcCVaixfOIsFZ70WbtzDJ9kzY8qCGOTKJ2Lsu8rRTA7ovhtolrMvSjBLtXYR/o8DxNtBPFY5ekhidH7hxPaw=@vger.kernel.org X-Gm-Message-State: AOJu0Yz2Ck/yq6LTQ2UBvAT2T+VSTzSLd9/swuOsbZKZHxu+DmQPz0Qk xj4NlMJpA5rVU5lvf9mmVzkwau6KZ1Pg+Dd1YUtJR/bAEy9otMJddlskAqYK64WCR71eHyKZxX5 CalHBDrPYGIaF3Nb3fh2wpllipfuqBw7L6Tb6UK9Jy7BhOSh9EwpnOGguNkFfEAfW1Z4= X-Gm-Gg: ATEYQzxg9B+htJ4QBQwPX874k05FggIu0NRtG7Qs6z3C8DOttbrnhJ7tMJjFSmYwrxy qqgQR2QZ2eQiGMNsxyFJY1gjimuQRZtO4Fim+gmiMRQ17b1CAPQ7ye/CMOoty/gDAUmcFJu7Zt6 ZGiEh6XE5E8vDD+QqHrsNMtjB4ZCWM/gNDwwvTMd5rzpNWx7XQrbmCwWAbEZ1mt1XgwIlJqPxEh mcGrSCSJRrrEqOFzthSMAN5aIkxak2cX5ueEgzkXV/+p8gEtmldB+mqG6G9IDUylDBXP3JG5cX9 r9Of91poXKeJHadAZn1TvbzCwJTAohoH/YKV8ORv9H/dgHb0IwcH62qS0l9dMj5eFBltltW5Atl Ry5359EGg9o3PaoJoYS+y0exj30AJSDfBlZ97DdIIpJDtDr2YTdWIwBLwoj7e/7jkYV68fzS/ES fee6xJkaq/xKF7+zwjvHsXcRlkV8IjsWII34Q= X-Received: by 2002:a05:620a:1a23:b0:8cb:3d7a:c009 with SMTP id af79cd13be357-8cbc8e4f79dmr792112085a.78.1772292400145; Sat, 28 Feb 2026 07:26:40 -0800 (PST) X-Received: by 2002:a05:620a:1a23:b0:8cb:3d7a:c009 with SMTP id af79cd13be357-8cbc8e4f79dmr792108885a.78.1772292399646; Sat, 28 Feb 2026 07:26:39 -0800 (PST) Received: from umbar.lan (2001-14ba-a073-af00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a073:af00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5a115b57922sm625558e87.63.2026.02.28.07.26.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 28 Feb 2026 07:26:39 -0800 (PST) From: Dmitry Baryshkov Date: Sat, 28 Feb 2026 17:26:33 +0200 Subject: [PATCH v2 06/11] media: qcom: iris: don't use function indirection in gen2-specific code Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260228-iris-platform-data-v2-6-acf036a3c84c@oss.qualcomm.com> References: <20260228-iris-platform-data-v2-0-acf036a3c84c@oss.qualcomm.com> In-Reply-To: <20260228-iris-platform-data-v2-0-acf036a3c84c@oss.qualcomm.com> To: Vikash Garodia , Dikshita Agarwal , Abhinav Kumar , Bryan O'Donoghue , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2041; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=1Kf6KXU4l/H3LFKNax4FrB33AhXXcXlylE0Nbe0Lz8s=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpowkn9Rkxhu8q1tIOJNFLc6Hb0OW4uCpE/0ULV 4cb/6Ga1ZOJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaaMJJwAKCRCLPIo+Aiko 1UkdB/91mSSpM5aORi+V4Fq5qbye4ha6nI5ILJpzuTF5H+jJdEx5P9ehg4pRPewJENn0DlSPOEX fI1tEIw+I/Yj9AtG+ax1ZLMT75i/MgicNQDHFMxiJRPbAWcOPZOIJDQh0neTv0XRqVLO6s+YhlD oFTOD3g32oDRBY6VNg08hRAmbA8mhejkstrttHG2I/pbcHkhLu5c2Zhwpy2QPDlLFmw9R2usRfG AKKX2yEjKi435+on2cIQYNe96Wbzh5pyesI6jYPP5L/Z0YldY1xoqvccONRzu7VAjJcsK80WiXG BRbPbaLjNE3sszuC9knCQklzBTVQTDPp8QcGp/INTDkj1pba X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI4MDE0MiBTYWx0ZWRfX7nleFF+kU0BO mSzw5XLj2RMFDGL/KZ6dZbOI2wfIdOH4hDtvEPoEAfSOaESMAEbkGv+3Dk5bEWCvUi+tIK9piB2 IIgrT8mXHUuuXocXmPGWHFHu1+qqx1wQ143E738h7tEtvAJ7U6GgIzuXTTKtRoC9JorvvaAEFzj xPqOI3z2Tyo1pgeyhPy9XfcYelmp/t3K2riZzPpnVl8F96kT5EBtpmNI0+9h6aswRxq0+HRLp66 TipMZuheyzFYUWRByJZdADQuEVHIsYyBsXhRWmmTEa0VTzsGNKCu4ozAQ8mZaY3AQQJ90gxbLzB kCkRjqapDQkuJIM1DlZRHBwnA/OYuEplVfel/Dm/Omd2YdaqF2z4Ezh/5rzfZP6oGakq51ffrcK 6V1PzG3he17k4kFJnzhY8qde+tEIOFeI9my39APuiB7vo1LD+im70MXt5LoScfpSbxzuVlrlnU/ 8C90l+O1lb8B39UJa4g== X-Proofpoint-GUID: WGq6uiR7aYvF1onDsyRJUCk5lyvmC6K9 X-Proofpoint-ORIG-GUID: WGq6uiR7aYvF1onDsyRJUCk5lyvmC6K9 X-Authority-Analysis: v=2.4 cv=Zqzg6t7G c=1 sm=1 tr=0 ts=69a30931 cx=c_pps a=HLyN3IcIa5EE8TELMZ618Q==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=EUspDBNiAAAA:8 a=M7otsm39oOdpNaC3G74A:9 a=QEXdDO2ut3YA:10 a=bTQJ7kPSJx9SKPbeHEYW:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-28_05,2026-02-27_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 lowpriorityscore=0 spamscore=0 priorityscore=1501 phishscore=0 suspectscore=0 impostorscore=0 malwarescore=0 bulkscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2602280142 To note that iris_set_num_comv() is gen2-internal, rename it to iris_hfi_gen2_set_num_comv() and then stop using hfi_ops indirection to set session property (like other functions in this file do). Signed-off-by: Dmitry Baryshkov Reviewed-by: Dikshita Agarwal Reviewed-by: Konrad Dybcio --- drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c | 16 ++++++++----= ---- 1 file changed, 8 insertions(+), 8 deletions(-) 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 fd8a055c4acc..93ce7ac3a19c 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c @@ -1295,7 +1295,7 @@ static u32 iris_hfi_gen2_buf_type_from_driver(u32 dom= ain, enum iris_buffer_type } } =20 -static int iris_set_num_comv(struct iris_inst *inst) +static int iris_hfi_gen2_set_num_comv(struct iris_inst *inst) { struct platform_inst_caps *caps; struct iris_core *core =3D inst->core; @@ -1310,12 +1310,12 @@ static int iris_set_num_comv(struct iris_inst *inst) num_comv =3D (inst->codec =3D=3D V4L2_PIX_FMT_AV1) ? NUM_COMV_AV1 : caps->num_comv; =20 - return core->hfi_ops->session_set_property(inst, - HFI_PROP_COMV_BUFFER_COUNT, - HFI_HOST_FLAGS_NONE, - HFI_PORT_BITSTREAM, - HFI_PAYLOAD_U32, - &num_comv, sizeof(u32)); + return iris_hfi_gen2_session_set_property(inst, + HFI_PROP_COMV_BUFFER_COUNT, + HFI_HOST_FLAGS_NONE, + HFI_PORT_BITSTREAM, + HFI_PAYLOAD_U32, + &num_comv, sizeof(u32)); } =20 static void iris_hfi_gen2_get_buffer(u32 domain, struct iris_buffer *buffe= r, @@ -1347,7 +1347,7 @@ static int iris_hfi_gen2_session_queue_buffer(struct = iris_inst *inst, struct iri =20 iris_hfi_gen2_get_buffer(inst->domain, buffer, &hfi_buffer); if (buffer->type =3D=3D BUF_COMV) { - ret =3D iris_set_num_comv(inst); + ret =3D iris_hfi_gen2_set_num_comv(inst); if (ret) return ret; } --=20 2.47.3 From nobody Sat Apr 18 09:30:54 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5F53747D92B for ; Sat, 28 Feb 2026 15:26:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772292406; cv=none; b=tJLMZshRV47TE3utW7VfAemgGYCcjU5Opr7JgoUayGxgB0OwNerBLs7ik/uXOQ+cnUu8WSj0Jp7BKO2mj420HU4JQpQVdthMk6Vkp50eb7hrPXUX3i06kYP5jPkAj6+n6V9eNpzMyQrV30FFg8sPSvpYJZFrw6Pj3s01rKTwByg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772292406; c=relaxed/simple; bh=nPWlbPRwsXZVfwQmKm3wZD8OkNXC6N8lxinghO/HpnU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=vCOlrY81xsxlG1CQVxmuap0rgq3V5f9jkraRKAFAThyVgUgVKttt3gfX6A/8ia3dvYmqBQMjkb1O4MgVR9GPTawiYSqVeErZIn0pqgnysQDXi5IGl1H3+kuGUKji+PnjNoONegWYYEg/hgw/ZqQWac9IcWYhw33n6DK4EX8lbVY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=lQtX/pzM; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=WQUf7c28; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="lQtX/pzM"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="WQUf7c28" Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61SEQRjI315627 for ; Sat, 28 Feb 2026 15:26:42 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= a8vVHLs9G2VfYXiJO1fa6c8sJ/CO/xLj0FBiqoOTKWk=; b=lQtX/pzM++efW/lP DhFuiLbEHJCLOgliG8sHyDWIBDh5/7bfbjthMrTy26/rVCunC7y1A0SJtLw3jiWZ txb168Fiu7bbdzIzV830GKagpg4DMuIeJwr/Hpc0t5MsHd4ALftc64LR4KRA0QeE ud75giagHKNNOZ1AfslIeC5ync+Pbi1g6WGE+jKII9SUfHmuV6f0wz7TxpDjP+Pw AhHk7XuUC5tfPs0dkA0j5lMKNlfaXVXIuMpmTK+LbwkY3x4zI/0hjhj5svVSMWGK YT8b0YVhXg3yIb++pEMCYzlA4CU5auxp3VjnU429UpVRAb5+URhie5qVrR6tIv9S pJMpjA== Received: from mail-qv1-f69.google.com (mail-qv1-f69.google.com [209.85.219.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cksf6h3pg-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 28 Feb 2026 15:26:42 +0000 (GMT) Received: by mail-qv1-f69.google.com with SMTP id 6a1803df08f44-89463017976so326260616d6.2 for ; Sat, 28 Feb 2026 07:26:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1772292401; x=1772897201; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=a8vVHLs9G2VfYXiJO1fa6c8sJ/CO/xLj0FBiqoOTKWk=; b=WQUf7c28TlpbQDF54OyP/faSrmIzh/FC5nQGjDXQVnCXGlIyUJLHcu4oCJjDJzv+ez Po9x/xnU1R3vBW2MT06Wtp6Tzz2JHikjgwl+a5f/BvUUH3gTmQGrH6y3hT5A5rNxnxLK Gl/423Ty4x3Fy4bcDtYwvSfFsaytZu988Jb7h4X5g8jkF7yMRNIICgOcXRpG8DduvQ2d NjAHtJ23PPc8THG15BCNysdJqgyVF0QHnAMngM53fFfJxLaaENmoOpiNcJld31G/YG6I mFMwWSCI80TmOA3xFGLS/nLNzkEkTy7QVUoTH8e8Jlk7icL03hyKNJziIROuMeoAWdoz 1hQA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772292401; x=1772897201; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=a8vVHLs9G2VfYXiJO1fa6c8sJ/CO/xLj0FBiqoOTKWk=; b=jVY1X4BLgprwXSlBB/VGWALjIZFpmez0+ub8x15knC5PYt3fp8W1HOpkhETVGNK3V9 Doo6dxrXKH4E8V1q4EA2GXiejRi+wTRK0nGpkjNJeVTpnPWbtcP9rPhum2XD03yM/dUl q0pCAFcyZ4wiDH6cCRgRRopBLiYG8s3YbrMBsafk2KxEppXcn+zK0hYGJ+GeAK4qAJ3f RVqVOiVo84Txuk2Q5pdBpT72PgR6U18jHiHo1X5FpVAqevGuGPOu50cQ0zeOZALUDWg9 Aaf/xbxck17CE5PqQtIPMrkxzKQefFNVtRgCd7Qyjz6vGok+fITwaMLO1CjM7c+IAMDE Juvw== X-Forwarded-Encrypted: i=1; AJvYcCXiIK0oj+FCNrXBj9xKlDKLAjftxFdBdCroWVoKP1ZGyyG79ajMFYdCluzSfU7pGjs9R/gD3NqzzDVkYZY=@vger.kernel.org X-Gm-Message-State: AOJu0Ywt0KK7X7a1ZQDD7ND0dwyyIkqAolMe4f+YLEdPPDX3AGnNqwZC lxn07X+oIyQxa9d0b2d9htha0v13sVAV5KbGT8nh7310LnLS47osOW+7Zy82Xc1Tjw/fHr3QTEt mP1IZNANSD4ttWozSuXJGjSnpmzc8nefiKKNGxOoeBRIq6vCaGEjJGRMuctxj2a+bQuM= X-Gm-Gg: ATEYQzyQjMNYumv/F+Ja9Y8y/B5VFVrKg853fadOBOooQDk6hSW657jSjStwjE6nuVD gEpJDkUoa05VjAloFqng614x8hAPctwkDXZpbGBk4w0LaCfHl5h4uuszF18W6wnBdghDY4+E/7C uichrpXM5OZx4RQa/gnlIKrvauRR85mgmqguOPS2+b5LqFIuuxaV3fwWvekgbaKBQoscYormIGS Hue9j1hwqsE+mhnvKdXO8+qHKucUN+9Qg0ces1+4vH5vj1gmmouw/iA45qulYypcxsOicfK36Ql C2yPSOq4a+RptkWG+eQZ8k7oUv/unc17C8pVtryFqafhS13oGf00pMZeyfB/Af7r2jT3inKkcLQ 1BnfWmcwgKXkTRfoN0TbdDI4xnoBdZZY1BnxhgLUYUttb1CbdibFUtvJE+1FqOarIahXbdbBJaA dOkq6QMSNofe8Lp7gP5ON5oliS3CMjQuMdSyU= X-Received: by 2002:a05:620a:4543:b0:8cb:7ad7:4696 with SMTP id af79cd13be357-8cbc8d86b01mr871907285a.19.1772292401310; Sat, 28 Feb 2026 07:26:41 -0800 (PST) X-Received: by 2002:a05:620a:4543:b0:8cb:7ad7:4696 with SMTP id af79cd13be357-8cbc8d86b01mr871904485a.19.1772292400761; Sat, 28 Feb 2026 07:26:40 -0800 (PST) Received: from umbar.lan (2001-14ba-a073-af00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a073:af00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5a115b57922sm625558e87.63.2026.02.28.07.26.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 28 Feb 2026 07:26:40 -0800 (PST) From: Dmitry Baryshkov Date: Sat, 28 Feb 2026 17:26:34 +0200 Subject: [PATCH v2 07/11] media: qcom: iris: split HFI session ops from core ops Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260228-iris-platform-data-v2-7-acf036a3c84c@oss.qualcomm.com> References: <20260228-iris-platform-data-v2-0-acf036a3c84c@oss.qualcomm.com> In-Reply-To: <20260228-iris-platform-data-v2-0-acf036a3c84c@oss.qualcomm.com> To: Vikash Garodia , Dikshita Agarwal , Abhinav Kumar , Bryan O'Donoghue , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=23213; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=nPWlbPRwsXZVfwQmKm3wZD8OkNXC6N8lxinghO/HpnU=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpowknH4dG7ui+ZZ66txIzSulZl9oiudFvFX43o +5hhQMrnzyJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaaMJJwAKCRCLPIo+Aiko 1S+KCACqhT1lNsnbQeC7iPC5lCfdNODZ4cmR2LgZaJTRA8n/HEuY6svomulrpt1C+cFukaOqIoZ 3vKxWZUxYk3SoAWVhE6TvtWksT3DbEok/N6V5qbB/7yhAIfTNH6Pwdbm7e6lUlitzdTKjPwHu2i QrRX9Wby2j6WtN1ubCPUUApQbC08jXiDj53q0P13Zofomz/J8ymV9BpwR3d/x9wUWEcwA2GqMpr uEGupmcJKLQEA7WO/cf+D0Uz4V/U08FBXxJY/AdXHnPjsfj3ARSYRFABsjgu6FwzId3I1QN0IIZ SyxvnxIiyVlTmVTzM64A9QBkY9dK8iBj6WX271v+e2YiesNS X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-ORIG-GUID: klIiHXAt_-vRDjU9IbvIPryjiSJso9Ng X-Authority-Analysis: v=2.4 cv=JoL8bc4C c=1 sm=1 tr=0 ts=69a30932 cx=c_pps a=wEM5vcRIz55oU/E2lInRtA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=EUspDBNiAAAA:8 a=47BYzmHmuV1SJ7SkGigA:9 a=QEXdDO2ut3YA:10 a=OIgjcC2v60KrkQgK7BGD:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI4MDE0MiBTYWx0ZWRfX23PnnkHldbWe wlbTt4aT+Kr3k7aAiQM4XD/o1eqQwcYMq3h+tSB2qIIAXu+nMh9EgaJodo3Gw2pb+HEpX+RjFXD Vn6qhrPDaAu8Fr8OvB35iETof9XG16pPQh4bzQOLr6TmwLkU/Qa27JYuf6u/yG2Q2sLPnvnGbKM ogc2DLGZM2AfDmaFL4rtDmkbeU1614MWcu/Nrr8xovYfesl+0MrEc1MP4iHxCfbX0TnB33/6ORF OC5jhMbYWmexeWORLMMf1/wCHEXqgbj8x3jIxvPkqwx4sPJlsLnq+KkP4InyT7CngCVrGond62U bhZALnws6U/EqPQG3dvO+5fcCmbAdrP+j5hWI1iQw9t4F7NV0omLaQcqizIMbr5CdliX8EQNgeg RgiN+rb+wjTLUpi3VRxs9gF5pIxwpEx/3DFqTWHL3jR4oYAF8f/0brDBJl9RjUNBFJLKow4op2y bWEWdSsuzl3CpWGOiNQ== X-Proofpoint-GUID: klIiHXAt_-vRDjU9IbvIPryjiSJso9Ng X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-28_05,2026-02-27_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 suspectscore=0 malwarescore=0 priorityscore=1501 adultscore=0 bulkscore=0 clxscore=1015 impostorscore=0 spamscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2602280142 Calling HFI instance-specific ops should not require double indirection through the core ops. Split instance-specific ops to a separate struct, keep a pointer to it in struct iris_inst and set it directly in the get_instance function. Signed-off-by: Dmitry Baryshkov --- drivers/media/platform/qcom/iris/iris_buffer.c | 4 +- drivers/media/platform/qcom/iris/iris_common.c | 8 ++-- drivers/media/platform/qcom/iris/iris_ctrls.c | 46 +++++++++++-------= ---- drivers/media/platform/qcom/iris/iris_hfi_common.h | 3 ++ .../platform/qcom/iris/iris_hfi_gen1_command.c | 23 ++++++++--- .../platform/qcom/iris/iris_hfi_gen2_command.c | 17 +++++--- drivers/media/platform/qcom/iris/iris_instance.h | 4 ++ drivers/media/platform/qcom/iris/iris_vb2.c | 2 +- drivers/media/platform/qcom/iris/iris_vdec.c | 6 +-- drivers/media/platform/qcom/iris/iris_venc.c | 4 +- drivers/media/platform/qcom/iris/iris_vidc.c | 2 +- 11 files changed, 72 insertions(+), 47 deletions(-) diff --git a/drivers/media/platform/qcom/iris/iris_buffer.c b/drivers/media= /platform/qcom/iris/iris_buffer.c index 9151f43bc6b9..915096b21279 100644 --- a/drivers/media/platform/qcom/iris/iris_buffer.c +++ b/drivers/media/platform/qcom/iris/iris_buffer.c @@ -404,7 +404,7 @@ int iris_create_internal_buffers(struct iris_inst *inst= , u32 plane) =20 int iris_queue_buffer(struct iris_inst *inst, struct iris_buffer *buf) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_inst_ops *hfi_ops =3D inst->hfi_ops; int ret; =20 ret =3D hfi_ops->session_queue_buf(inst, buf); @@ -572,7 +572,7 @@ int iris_destroy_dequeued_internal_buffers(struct iris_= inst *inst, u32 plane) static int iris_release_internal_buffers(struct iris_inst *inst, enum iris_buffer_type buffer_type) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_inst_ops *hfi_ops =3D inst->hfi_ops; struct iris_buffers *buffers =3D &inst->buffers[buffer_type]; struct iris_buffer *buffer, *next; int ret; diff --git a/drivers/media/platform/qcom/iris/iris_common.c b/drivers/media= /platform/qcom/iris/iris_common.c index 7f1c7fe144f7..69748e5764f3 100644 --- a/drivers/media/platform/qcom/iris/iris_common.c +++ b/drivers/media/platform/qcom/iris/iris_common.c @@ -48,7 +48,7 @@ void iris_set_ts_metadata(struct iris_inst *inst, struct = vb2_v4l2_buffer *vbuf) =20 int iris_process_streamon_input(struct iris_inst *inst) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_inst_ops *hfi_ops =3D inst->hfi_ops; enum iris_inst_sub_state set_sub_state =3D 0; int ret; =20 @@ -90,7 +90,7 @@ int iris_process_streamon_input(struct iris_inst *inst) =20 int iris_process_streamon_output(struct iris_inst *inst) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_inst_ops *hfi_ops =3D inst->hfi_ops; enum iris_inst_sub_state clear_sub_state =3D 0; bool drain_active, drc_active, first_ipsc; int ret =3D 0; @@ -189,7 +189,7 @@ static void iris_flush_deferred_buffers(struct iris_ins= t *inst, =20 static void iris_kill_session(struct iris_inst *inst) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_inst_ops *hfi_ops =3D inst->hfi_ops; =20 if (!inst->session_id) return; @@ -200,7 +200,7 @@ static void iris_kill_session(struct iris_inst *inst) =20 int iris_session_streamoff(struct iris_inst *inst, u32 plane) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_inst_ops *hfi_ops =3D inst->hfi_ops; enum iris_buffer_type buffer_type; int ret; =20 diff --git a/drivers/media/platform/qcom/iris/iris_ctrls.c b/drivers/media/= platform/qcom/iris/iris_ctrls.c index 3cec957580f5..f5032c5eb5a5 100644 --- a/drivers/media/platform/qcom/iris/iris_ctrls.c +++ b/drivers/media/platform/qcom/iris/iris_ctrls.c @@ -399,7 +399,7 @@ static u32 iris_get_port_info(struct iris_inst *inst, =20 int iris_set_u32_enum(struct iris_inst *inst, enum platform_inst_fw_cap_ty= pe cap_id) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_inst_ops *hfi_ops =3D inst->hfi_ops; u32 hfi_value =3D inst->fw_caps[cap_id].value; u32 hfi_id =3D inst->fw_caps[cap_id].hfi_id; =20 @@ -412,7 +412,7 @@ int iris_set_u32_enum(struct iris_inst *inst, enum plat= form_inst_fw_cap_type cap =20 int iris_set_u32(struct iris_inst *inst, enum platform_inst_fw_cap_type ca= p_id) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_inst_ops *hfi_ops =3D inst->hfi_ops; u32 hfi_value =3D inst->fw_caps[cap_id].value; u32 hfi_id =3D inst->fw_caps[cap_id].hfi_id; =20 @@ -425,7 +425,7 @@ int iris_set_u32(struct iris_inst *inst, enum platform_= inst_fw_cap_type cap_id) =20 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; + const struct iris_hfi_inst_ops *hfi_ops =3D inst->hfi_ops; 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; @@ -446,7 +446,7 @@ int iris_set_stage(struct iris_inst *inst, enum platfor= m_inst_fw_cap_type cap_id =20 int iris_set_pipe(struct iris_inst *inst, enum platform_inst_fw_cap_type c= ap_id) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_inst_ops *hfi_ops =3D inst->hfi_ops; u32 work_route =3D inst->fw_caps[PIPE].value; u32 hfi_id =3D inst->fw_caps[cap_id].hfi_id; =20 @@ -459,7 +459,7 @@ int iris_set_pipe(struct iris_inst *inst, enum platform= _inst_fw_cap_type cap_id) =20 int iris_set_profile(struct iris_inst *inst, enum platform_inst_fw_cap_typ= e cap_id) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_inst_ops *hfi_ops =3D inst->hfi_ops; u32 hfi_id, hfi_value; =20 if (inst->codec =3D=3D V4L2_PIX_FMT_H264) { @@ -479,7 +479,7 @@ int iris_set_profile(struct iris_inst *inst, enum platf= orm_inst_fw_cap_type cap_ =20 int iris_set_level(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; + const struct iris_hfi_inst_ops *hfi_ops =3D inst->hfi_ops; u32 hfi_id, hfi_value; =20 if (inst->codec =3D=3D V4L2_PIX_FMT_H264) { @@ -499,7 +499,7 @@ int iris_set_level(struct iris_inst *inst, enum platfor= m_inst_fw_cap_type cap_id =20 int iris_set_profile_level_gen1(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; + const struct iris_hfi_inst_ops *hfi_ops =3D inst->hfi_ops; u32 hfi_id =3D inst->fw_caps[cap_id].hfi_id; struct hfi_profile_level pl; =20 @@ -520,7 +520,7 @@ int iris_set_profile_level_gen1(struct iris_inst *inst,= enum platform_inst_fw_ca =20 int iris_set_header_mode_gen1(struct iris_inst *inst, enum platform_inst_f= w_cap_type cap_id) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_inst_ops *hfi_ops =3D inst->hfi_ops; u32 header_mode =3D inst->fw_caps[cap_id].value; u32 hfi_id =3D inst->fw_caps[cap_id].hfi_id; u32 hfi_val; @@ -539,7 +539,7 @@ int iris_set_header_mode_gen1(struct iris_inst *inst, e= num platform_inst_fw_cap_ =20 int iris_set_header_mode_gen2(struct iris_inst *inst, enum platform_inst_f= w_cap_type cap_id) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_inst_ops *hfi_ops =3D inst->hfi_ops; u32 prepend_sps_pps =3D inst->fw_caps[PREPEND_SPSPPS_TO_IDR].value; u32 header_mode =3D inst->fw_caps[cap_id].value; u32 hfi_id =3D inst->fw_caps[cap_id].hfi_id; @@ -561,7 +561,7 @@ int iris_set_header_mode_gen2(struct iris_inst *inst, e= num platform_inst_fw_cap_ =20 int iris_set_bitrate(struct iris_inst *inst, enum platform_inst_fw_cap_typ= e cap_id) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_inst_ops *hfi_ops =3D inst->hfi_ops; u32 entropy_mode =3D inst->fw_caps[ENTROPY_MODE].value; u32 bitrate =3D inst->fw_caps[cap_id].value; u32 hfi_id =3D inst->fw_caps[cap_id].hfi_id; @@ -586,7 +586,7 @@ int iris_set_bitrate(struct iris_inst *inst, enum platf= orm_inst_fw_cap_type cap_ =20 int iris_set_peak_bitrate(struct iris_inst *inst, enum platform_inst_fw_ca= p_type cap_id) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_inst_ops *hfi_ops =3D inst->hfi_ops; u32 rc_mode =3D inst->fw_caps[BITRATE_MODE].value; u32 peak_bitrate =3D inst->fw_caps[cap_id].value; u32 bitrate =3D inst->fw_caps[BITRATE].value; @@ -613,7 +613,7 @@ int iris_set_peak_bitrate(struct iris_inst *inst, enum = platform_inst_fw_cap_type =20 int iris_set_bitrate_mode_gen1(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; + const struct iris_hfi_inst_ops *hfi_ops =3D inst->hfi_ops; u32 bitrate_mode =3D inst->fw_caps[BITRATE_MODE].value; u32 frame_rc =3D inst->fw_caps[FRAME_RC_ENABLE].value; u32 frame_skip =3D inst->fw_caps[FRAME_SKIP_MODE].value; @@ -640,7 +640,7 @@ int iris_set_bitrate_mode_gen1(struct iris_inst *inst, = enum platform_inst_fw_cap =20 int iris_set_bitrate_mode_gen2(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; + const struct iris_hfi_inst_ops *hfi_ops =3D inst->hfi_ops; u32 bitrate_mode =3D inst->fw_caps[BITRATE_MODE].value; u32 frame_rc =3D inst->fw_caps[FRAME_RC_ENABLE].value; u32 frame_skip =3D inst->fw_caps[FRAME_SKIP_MODE].value; @@ -667,7 +667,7 @@ int iris_set_bitrate_mode_gen2(struct iris_inst *inst, = enum platform_inst_fw_cap =20 int iris_set_entropy_mode_gen1(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; + const struct iris_hfi_inst_ops *hfi_ops =3D inst->hfi_ops; u32 entropy_mode =3D inst->fw_caps[cap_id].value; u32 hfi_id =3D inst->fw_caps[cap_id].hfi_id; u32 hfi_val; @@ -687,7 +687,7 @@ int iris_set_entropy_mode_gen1(struct iris_inst *inst, = enum platform_inst_fw_cap =20 int iris_set_entropy_mode_gen2(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; + const struct iris_hfi_inst_ops *hfi_ops =3D inst->hfi_ops; u32 entropy_mode =3D inst->fw_caps[cap_id].value; u32 hfi_id =3D inst->fw_caps[cap_id].hfi_id; u32 profile; @@ -712,7 +712,7 @@ int iris_set_entropy_mode_gen2(struct iris_inst *inst, = enum platform_inst_fw_cap =20 int iris_set_min_qp(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; + const struct iris_hfi_inst_ops *hfi_ops =3D inst->hfi_ops; u32 i_qp_enable =3D 0, p_qp_enable =3D 0, b_qp_enable =3D 0; u32 i_frame_qp =3D 0, p_frame_qp =3D 0, b_frame_qp =3D 0; u32 min_qp_enable =3D 0, client_qp_enable =3D 0; @@ -776,7 +776,7 @@ int iris_set_min_qp(struct iris_inst *inst, enum platfo= rm_inst_fw_cap_type cap_i =20 int iris_set_max_qp(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; + const struct iris_hfi_inst_ops *hfi_ops =3D inst->hfi_ops; u32 i_qp_enable =3D 0, p_qp_enable =3D 0, b_qp_enable =3D 0; u32 max_qp_enable =3D 0, client_qp_enable; u32 i_frame_qp, p_frame_qp, b_frame_qp; @@ -841,7 +841,7 @@ int iris_set_max_qp(struct iris_inst *inst, enum platfo= rm_inst_fw_cap_type cap_i =20 int iris_set_frame_qp(struct iris_inst *inst, enum platform_inst_fw_cap_ty= pe cap_id) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_inst_ops *hfi_ops =3D inst->hfi_ops; u32 i_qp_enable =3D 0, p_qp_enable =3D 0, b_qp_enable =3D 0, client_qp_en= able; u32 i_frame_qp, p_frame_qp, b_frame_qp; u32 hfi_id =3D inst->fw_caps[cap_id].hfi_id; @@ -902,7 +902,7 @@ int iris_set_frame_qp(struct iris_inst *inst, enum plat= form_inst_fw_cap_type cap =20 int iris_set_qp_range(struct iris_inst *inst, enum platform_inst_fw_cap_ty= pe cap_id) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_inst_ops *hfi_ops =3D inst->hfi_ops; struct hfi_quantization_range_v2 range; u32 hfi_id =3D inst->fw_caps[cap_id].hfi_id; =20 @@ -923,7 +923,7 @@ int iris_set_qp_range(struct iris_inst *inst, enum plat= form_inst_fw_cap_type cap =20 int iris_set_rotation(struct iris_inst *inst, enum platform_inst_fw_cap_ty= pe cap_id) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_inst_ops *hfi_ops =3D inst->hfi_ops; u32 hfi_id =3D inst->fw_caps[cap_id].hfi_id; u32 hfi_val; =20 @@ -953,7 +953,7 @@ int iris_set_rotation(struct iris_inst *inst, enum plat= form_inst_fw_cap_type cap =20 int iris_set_flip(struct iris_inst *inst, enum platform_inst_fw_cap_type c= ap_id) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_inst_ops *hfi_ops =3D inst->hfi_ops; u32 hfi_id =3D inst->fw_caps[cap_id].hfi_id; u32 hfi_val =3D HFI_DISABLE_FLIP; =20 @@ -972,7 +972,7 @@ int iris_set_flip(struct iris_inst *inst, enum platform= _inst_fw_cap_type cap_id) =20 int iris_set_ir_period(struct iris_inst *inst, enum platform_inst_fw_cap_t= ype cap_id) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_inst_ops *hfi_ops =3D inst->hfi_ops; struct vb2_queue *q =3D v4l2_m2m_get_dst_vq(inst->m2m_ctx); u32 ir_period =3D inst->fw_caps[cap_id].value; u32 ir_type =3D 0; @@ -998,7 +998,7 @@ int iris_set_ir_period(struct iris_inst *inst, enum pla= tform_inst_fw_cap_type ca =20 int iris_set_properties(struct iris_inst *inst, u32 plane) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_inst_ops *hfi_ops =3D inst->hfi_ops; struct platform_inst_fw_cap *cap; int ret; u32 i; diff --git a/drivers/media/platform/qcom/iris/iris_hfi_common.h b/drivers/m= edia/platform/qcom/iris/iris_hfi_common.h index 3edb5ae582b4..4f26b010249a 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_common.h +++ b/drivers/media/platform/qcom/iris/iris_hfi_common.h @@ -110,6 +110,9 @@ struct iris_hfi_command_ops { int (*sys_image_version)(struct iris_core *core); int (*sys_interframe_powercollapse)(struct iris_core *core); int (*sys_pc_prep)(struct iris_core *core); +}; + +struct iris_hfi_inst_ops { int (*session_set_config_params)(struct iris_inst *inst, u32 plane); int (*session_set_property)(struct iris_inst *inst, u32 packet_type, u32 flag, u32 plane, u32 payload_type, 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 b7aafda1d99e..fde8219309b0 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c @@ -1015,11 +1015,7 @@ static int iris_hfi_gen1_session_set_config_params(s= truct iris_inst *inst, u32 p return ret; } =20 -static const struct iris_hfi_command_ops iris_hfi_gen1_command_ops =3D { - .sys_init =3D iris_hfi_gen1_sys_init, - .sys_image_version =3D iris_hfi_gen1_sys_image_version, - .sys_interframe_powercollapse =3D iris_hfi_gen1_sys_interframe_powercolla= pse, - .sys_pc_prep =3D iris_hfi_gen1_sys_pc_prep, +static const struct iris_hfi_inst_ops iris_hfi_gen1_inst_ops =3D { .session_open =3D iris_hfi_gen1_session_open, .session_set_config_params =3D iris_hfi_gen1_session_set_config_params, .session_set_property =3D iris_hfi_gen1_session_set_property, @@ -1032,6 +1028,13 @@ static const struct iris_hfi_command_ops iris_hfi_ge= n1_command_ops =3D { .session_close =3D iris_hfi_gen1_session_close, }; =20 +static const struct iris_hfi_command_ops iris_hfi_gen1_command_ops =3D { + .sys_init =3D iris_hfi_gen1_sys_init, + .sys_image_version =3D iris_hfi_gen1_sys_image_version, + .sys_interframe_powercollapse =3D iris_hfi_gen1_sys_interframe_powercolla= pse, + .sys_pc_prep =3D iris_hfi_gen1_sys_pc_prep, +}; + void iris_hfi_gen1_command_ops_init(struct iris_core *core) { core->hfi_ops =3D &iris_hfi_gen1_command_ops; @@ -1039,5 +1042,13 @@ void iris_hfi_gen1_command_ops_init(struct iris_core= *core) =20 struct iris_inst *iris_hfi_gen1_get_instance(void) { - return kzalloc_obj(struct iris_inst); + struct iris_inst *out; + + out =3D kzalloc_obj(*out); + if (!out) + return NULL; + + out->hfi_ops =3D &iris_hfi_gen1_inst_ops; + + return out; } 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 93ce7ac3a19c..502767f1593d 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c @@ -1390,11 +1390,7 @@ static int iris_hfi_gen2_session_release_buffer(stru= ct iris_inst *inst, struct i inst_hfi_gen2->packet->size); } =20 -static const struct iris_hfi_command_ops iris_hfi_gen2_command_ops =3D { - .sys_init =3D iris_hfi_gen2_sys_init, - .sys_image_version =3D iris_hfi_gen2_sys_image_version, - .sys_interframe_powercollapse =3D iris_hfi_gen2_sys_interframe_powercolla= pse, - .sys_pc_prep =3D iris_hfi_gen2_sys_pc_prep, +static const struct iris_hfi_inst_ops iris_hfi_gen2_inst_ops =3D { .session_open =3D iris_hfi_gen2_session_open, .session_set_config_params =3D iris_hfi_gen2_session_set_config_params, .session_set_property =3D iris_hfi_gen2_session_set_property, @@ -1409,6 +1405,13 @@ static const struct iris_hfi_command_ops iris_hfi_ge= n2_command_ops =3D { .session_close =3D iris_hfi_gen2_session_close, }; =20 +static const struct iris_hfi_command_ops iris_hfi_gen2_command_ops =3D { + .sys_init =3D iris_hfi_gen2_sys_init, + .sys_image_version =3D iris_hfi_gen2_sys_image_version, + .sys_interframe_powercollapse =3D iris_hfi_gen2_sys_interframe_powercolla= pse, + .sys_pc_prep =3D iris_hfi_gen2_sys_pc_prep, +}; + void iris_hfi_gen2_command_ops_init(struct iris_core *core) { core->hfi_ops =3D &iris_hfi_gen2_command_ops; @@ -1420,6 +1423,10 @@ struct iris_inst *iris_hfi_gen2_get_instance(void) =20 /* The allocation is intentionally larger than struct iris_inst. */ out =3D kzalloc_obj(*out); + if (!out) + return NULL; + + out->inst.hfi_ops =3D &iris_hfi_gen2_inst_ops; =20 return &out->inst; } diff --git a/drivers/media/platform/qcom/iris/iris_instance.h b/drivers/med= ia/platform/qcom/iris/iris_instance.h index 16965150f427..c58e8ec24c62 100644 --- a/drivers/media/platform/qcom/iris/iris_instance.h +++ b/drivers/media/platform/qcom/iris/iris_instance.h @@ -15,6 +15,8 @@ #define DEFAULT_WIDTH 320 #define DEFAULT_HEIGHT 240 =20 +struct iris_hfi_inst_ops; + enum iris_fmt_type_out { IRIS_FMT_H264, IRIS_FMT_HEVC, @@ -38,6 +40,7 @@ struct iris_fmt { * @list: used for attach an instance to the core * @core: pointer to core structure * @session_id: id of current video session + * @hfi_ops: iris HFI instance ops * @ctx_q_lock: lock to serialize queues related ioctls * @lock: lock to seralise forward and reverse threads * @fh: reference of v4l2 file handler @@ -80,6 +83,7 @@ struct iris_inst { struct list_head list; struct iris_core *core; u32 session_id; + const struct iris_hfi_inst_ops *hfi_ops; 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; diff --git a/drivers/media/platform/qcom/iris/iris_vb2.c b/drivers/media/pl= atform/qcom/iris/iris_vb2.c index bf0b8400996e..104910419dd1 100644 --- a/drivers/media/platform/qcom/iris/iris_vb2.c +++ b/drivers/media/platform/qcom/iris/iris_vb2.c @@ -129,7 +129,7 @@ int iris_vb2_queue_setup(struct vb2_queue *q, if (!inst->once_per_session_set) { inst->once_per_session_set =3D true; =20 - ret =3D core->hfi_ops->session_open(inst); + ret =3D inst->hfi_ops->session_open(inst); if (ret) { ret =3D -EINVAL; dev_err(core->dev, "session open failed\n"); diff --git a/drivers/media/platform/qcom/iris/iris_vdec.c b/drivers/media/p= latform/qcom/iris/iris_vdec.c index 719217399a30..a48771687c10 100644 --- a/drivers/media/platform/qcom/iris/iris_vdec.c +++ b/drivers/media/platform/qcom/iris/iris_vdec.c @@ -374,7 +374,7 @@ int iris_vdec_streamon_input(struct iris_inst *inst) =20 int iris_vdec_streamon_output(struct iris_inst *inst) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_inst_ops *hfi_ops =3D inst->hfi_ops; int ret; =20 ret =3D hfi_ops->session_set_config_params(inst, V4L2_BUF_TYPE_VIDEO_CAPT= URE_MPLANE); @@ -434,7 +434,7 @@ int iris_vdec_qbuf(struct iris_inst *inst, struct vb2_v= 4l2_buffer *vbuf) =20 int iris_vdec_start_cmd(struct iris_inst *inst) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_inst_ops *hfi_ops =3D inst->hfi_ops; enum iris_inst_sub_state clear_sub_state =3D 0; struct vb2_queue *dst_vq; int ret; @@ -497,7 +497,7 @@ int iris_vdec_start_cmd(struct iris_inst *inst) =20 int iris_vdec_stop_cmd(struct iris_inst *inst) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_inst_ops *hfi_ops =3D inst->hfi_ops; int ret; =20 ret =3D hfi_ops->session_drain(inst, V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE); diff --git a/drivers/media/platform/qcom/iris/iris_venc.c b/drivers/media/p= latform/qcom/iris/iris_venc.c index aa27b22704eb..ffa7d5a91d15 100644 --- a/drivers/media/platform/qcom/iris/iris_venc.c +++ b/drivers/media/platform/qcom/iris/iris_venc.c @@ -581,7 +581,7 @@ int iris_venc_qbuf(struct iris_inst *inst, struct vb2_v= 4l2_buffer *vbuf) =20 int iris_venc_start_cmd(struct iris_inst *inst) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_inst_ops *hfi_ops =3D inst->hfi_ops; enum iris_inst_sub_state clear_sub_state =3D 0; struct vb2_queue *dst_vq; int ret; @@ -623,7 +623,7 @@ int iris_venc_start_cmd(struct iris_inst *inst) =20 int iris_venc_stop_cmd(struct iris_inst *inst) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_inst_ops *hfi_ops =3D inst->hfi_ops; int ret; =20 ret =3D hfi_ops->session_drain(inst, V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE); diff --git a/drivers/media/platform/qcom/iris/iris_vidc.c b/drivers/media/p= latform/qcom/iris/iris_vidc.c index bd38d84c9cc7..eddf2694e759 100644 --- a/drivers/media/platform/qcom/iris/iris_vidc.c +++ b/drivers/media/platform/qcom/iris/iris_vidc.c @@ -224,7 +224,7 @@ int iris_open(struct file *filp) =20 static void iris_session_close(struct iris_inst *inst) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_inst_ops *hfi_ops =3D inst->hfi_ops; bool wait_for_response =3D true; int ret; =20 --=20 2.47.3 From nobody Sat Apr 18 09:30:54 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4670847B40D for ; Sat, 28 Feb 2026 15:26:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772292406; cv=none; b=OswknR1AmhgCcUOqdnZcJKYMPBBTm+pDnkXUUH+Cy/h0b4AcCCZP+LoFQk4IBk5VhCHhFRaXa9k/HoPCrBnjYbwobiQ5z5UQ4T8Z3zCGAbjxolIBDTWpTvL04VuSfBywKdcE04eE9DhZF+4lA7i8WsGuib44hbaMI/le7Qw0FLg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772292406; c=relaxed/simple; bh=lcFLNWS2IG7XBP2GmwBY21dnUEBknQz29whO0klw2/U=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dtmcW0MbYWWiPK/JeSY94penRou8zZnXs/bOKkZSmRa5d7+PDs9GIyca1o0HG1/DU1ZzucSQz8nQpOAVT3Pr9xYYj5SgEZX8drpIoF6OFYRawn9ti7z16IPaHXSdtsTe90U4r8ChdVCMCOp4u+5ylvirUJyw/NdSjdVoairpVLQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=XtP6mMf1; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=j4pmZzQe; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="XtP6mMf1"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="j4pmZzQe" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61SEPsCD2736851 for ; Sat, 28 Feb 2026 15:26:43 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= Z67VGHsM9CA5Ay41Du2N1HGupggcwxzardoZ4R1Zmmc=; b=XtP6mMf11s7JU7m8 4zt/ZJg+EKifu3PQSMN9sTFYSPECA75s9fTfU4+hUXu0lOhT+JIEZBZYhdxZtW3Z rrEAKM7vrn5pNdibYxksMpUyKUCGEPHwlUoaO7kXOWHNUbSbeiDXPzNY3kWrNq08 QZ21dyDcyglmS1qX6+aKV7/gJY78cDpZbX1qD0AlEkodjJdY5a8BXCG4bXNHHayH BlzVG9TPPrUtUXv8Svev0Nz/jYAcoEmqd/PblbC7rgHzry5FADWoa51C2CBk+syH qoNpEX6NY7453VS+7H7Dr9gPlnqumjlwnC2W/apBfo+qkyqkccLUUPgh+134YH6H O0KSHA== Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cksgrs5vv-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 28 Feb 2026 15:26:43 +0000 (GMT) Received: by mail-qk1-f199.google.com with SMTP id af79cd13be357-8cb3a2eb984so1268824985a.0 for ; Sat, 28 Feb 2026 07:26:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1772292402; x=1772897202; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=Z67VGHsM9CA5Ay41Du2N1HGupggcwxzardoZ4R1Zmmc=; b=j4pmZzQejyPLiv9VcPAj93aShE0UPTvCkO6IwyKIFMVN4PbPA5s/4dfkpngcqhXe4n 3xsMbyA5tH7UHy9CFJvhAJd6sgrFYQNZe14rvybngr26OsVE9PPMnqcHaEQO0DzI0dBe Y4fLjaQ7E4xznHo/F+Jy3cHgALQ6yPNqpbnD/Uok5pdYg7shjzjuMD4d4zh5LdqVgQiE NxQvH5zDwBtYHaWIYkVdvffYa+5mSea5T0SP4yuzCOQxMBlN8cPJt1PaWZS46zP3IOaE V9+lKWcPPV3IxaKmij/k+3uexUFntBqLoime4x4EH4Y2am3g1Bo1uQa2L7Ll39BZHX8E UzsQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772292402; x=1772897202; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Z67VGHsM9CA5Ay41Du2N1HGupggcwxzardoZ4R1Zmmc=; b=lXnAbNaPyUUSK0ud6SmMNK73LLd7+F1n+xh2E8j9KiXurba3gHtfFF46eFtgajnsGM TVBJZISGibZfa9ZIN3dzYIRtX46nUOZHyXimpkr1w9GpJ/UBMvyT7pDl2r8u+57F+57B rGm1F6JwZ/lKX/a2/3qmRA2qOBHcLwkueij9CXPpojab3AFMncIxeycn1D+ncYDDyuWZ nx4iWgT+xd4ChL3PpRiv+a2KBvQAp+TbOYYGdz573T/tsQW62V8RdglZ4xxCgME5OyIX MHGP1YiQh/5B32XM0lbnWOrkUhKU7YW1QgKCYP9zr6uaBA6zVxX0okl11UKuWqrzHB03 q0Ag== X-Forwarded-Encrypted: i=1; AJvYcCUweGSjMzDKou96mQAahe30lc6WoBGl3eBpxOtVY9qz/sXzlMKWkI6W47RjrH0q5MPZXOz6/c0ZzQGQMWM=@vger.kernel.org X-Gm-Message-State: AOJu0Yxvee8A8jMO5NKBDoSE+mqLfUfBr3F4MeJkKDx5JZz94vOWp1vh 3k7qFzJmR4pV2PhsVTHzv0Q/QhHlNS8f/Ab6yLOT58Q9OSKxQ/TRpmSzTULUmP/W0y7Ajb1xTpb RKrXGZQJtC2G6hK8AY4hLktPtHfurVpsyuLGW+ZwZoiinPsc3xqkcSSvijMPWa0799aM= X-Gm-Gg: ATEYQzwaTrIl/rW+dHFYTre5tjETaXamuJUan+xBeAa7JxjzQl6RlX7OUrXuby6u97V lzrbgT6IMilusMg2fg4Gkdb3GKcMLMVvb2eyYfL8S0886PFQEm33jess0Ldr2/y4hEScTvk11W2 fU9obXyjPxlh9IrxHHIW8OsIVC+EdK4wcg2ydvES3iGSFh+Fc7BzIxo3OtKTgfKBmbkmkb+DD3Q HuiAttTK+AL/U5rZs/Rel62zzvcovun4s1KGjtYDgwJrrs7fooXbsm+WgRb2+IOX6Jy7LRooIUK O79jy3dKP+au5QgpEMRU98UJKFaGrog7aAtACYnCJtijSfKh9e4k1GwCWprWZjiuVJCe17qJAgv RD94PLFSSNHZwuT73OV2Za3cvXpDUP2RyX4A3/8vF0wlMUcZiNX5nFjC1Gep75r0AZwIjSYgGa7 SFv1j0cf0j9vh0YEFiK41kJmb9ZgWxsP1a12M= X-Received: by 2002:a05:620a:172c:b0:8c5:2b63:2d1d with SMTP id af79cd13be357-8cbc8e1dab5mr830789685a.73.1772292402355; Sat, 28 Feb 2026 07:26:42 -0800 (PST) X-Received: by 2002:a05:620a:172c:b0:8c5:2b63:2d1d with SMTP id af79cd13be357-8cbc8e1dab5mr830787085a.73.1772292401829; Sat, 28 Feb 2026 07:26:41 -0800 (PST) Received: from umbar.lan (2001-14ba-a073-af00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a073:af00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5a115b57922sm625558e87.63.2026.02.28.07.26.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 28 Feb 2026 07:26:41 -0800 (PST) From: Dmitry Baryshkov Date: Sat, 28 Feb 2026 17:26:35 +0200 Subject: [PATCH v2 08/11] media: qcom: iris: merge hfi_response_ops and hfi_command_ops Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260228-iris-platform-data-v2-8-acf036a3c84c@oss.qualcomm.com> References: <20260228-iris-platform-data-v2-0-acf036a3c84c@oss.qualcomm.com> In-Reply-To: <20260228-iris-platform-data-v2-0-acf036a3c84c@oss.qualcomm.com> To: Vikash Garodia , Dikshita Agarwal , Abhinav Kumar , Bryan O'Donoghue , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=14556; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=lcFLNWS2IG7XBP2GmwBY21dnUEBknQz29whO0klw2/U=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpowkn9N4g38/goWO0A9FkmtFcdwFlPbz6szGyG HG07rcNOtmJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaaMJJwAKCRCLPIo+Aiko 1T2YB/9OXyzw9CF6Co3npWwqsYl26Fea5+Q/Y80FC5NlJjIeFXYTWAc0J8Kloh2cWf/Yh2UqY1l mqYS6/w2ZQNG8vVNhHDSPxfjSFszPegghNUbdQT0EsxawPOSLTEC08FuHXBGh+7daeZTNzhs91W 8OKND8mUaRuGGzC+J3oOxT61VslfePGjrzh2gpesljD5lZqLIkGBHXRB58Nj15ACxx8BEOipZpF 6rqKNiMBS2IeorMmNY3W0xwcOq8K0/KAKYVGmCg3jqGAEUvukbN8bJnyKwoG5h/TeN0tqliPQ6S mEr0TgulHJFrjTWfBpLc/BsZN1wvU4QhFXqvISuuMyH9IeZy X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI4MDE0MiBTYWx0ZWRfX1ajyQN/2BdmU cWwOPAsOdX3b6VWFcSkSFT9kyGxAHM31Q60pNXWxpxtjFZB73PQXs4FvBNZNxNdXQ/aG27kIrP8 Z6RlV9T3JsVvthNHwOv22s7iVBZDSkzb7BRNQ6Vl0cjBIMUsgZKdnSG3kI3t5h8Cw3+BxRfB8CC bovi9CJDEO7sFYfG6rIS5YwKt15raJBfXOG2ILHvJEFHkOGWx6XMGrSPbr2KZMRQ00GtohzJ6xn 9ml4AYtJmwyHeNbg02J7rji2ysuRAThFW6icMAsbISzXGbsZfO3KkJjk4kvkOxNmg7vLqlU5DE5 3s28/w9SAcim+ErEWWlCPMSbRYGhVbhGTWZe7izBwJE+xPq8BrUnR8vckDIAJswUO+/bBZi4UjG nbPTpX+4w4BJH+9GJeIRP+cy2eEMC27L3vMQLTAWdkRa6569zS4mTzPoXqowt7UzRJhlHurNzXE hxstTfuDYueiBPR3Rsg== X-Proofpoint-GUID: rpIfkHXlfNDwoKuvV1Y8lxOcRoACss1W X-Proofpoint-ORIG-GUID: rpIfkHXlfNDwoKuvV1Y8lxOcRoACss1W X-Authority-Analysis: v=2.4 cv=Zqzg6t7G c=1 sm=1 tr=0 ts=69a30933 cx=c_pps a=HLyN3IcIa5EE8TELMZ618Q==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=EUspDBNiAAAA:8 a=mB4mtV4qES501vYzmaIA:9 a=QEXdDO2ut3YA:10 a=bTQJ7kPSJx9SKPbeHEYW:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-28_05,2026-02-27_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 lowpriorityscore=0 spamscore=0 priorityscore=1501 phishscore=0 suspectscore=0 impostorscore=0 malwarescore=0 bulkscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2602280142 There is little point in having two different structures for HFI-related core ops. Merge both of them into the new iris_hfi_ops structure. Signed-off-by: Dmitry Baryshkov --- drivers/media/platform/qcom/iris/iris_core.h | 2 +- drivers/media/platform/qcom/iris/iris_hfi_common.c | 6 +++--- drivers/media/platform/qcom/iris/iris_hfi_common.h | 8 +++----- drivers/media/platform/qcom/iris/iris_hfi_gen1.h | 4 ++-- drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c | 8 +++++--- drivers/media/platform/qcom/iris/iris_hfi_gen1_response.c | 11 +---------- drivers/media/platform/qcom/iris/iris_hfi_gen2.h | 4 ++-- drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c | 8 +++++--- drivers/media/platform/qcom/iris/iris_hfi_gen2_response.c | 11 +---------- drivers/media/platform/qcom/iris/iris_platform_common.h | 3 +-- drivers/media/platform/qcom/iris/iris_platform_gen1.c | 6 ++---- drivers/media/platform/qcom/iris/iris_platform_gen2.c | 12 ++++-------- drivers/media/platform/qcom/iris/iris_probe.c | 3 +-- 13 files changed, 31 insertions(+), 55 deletions(-) diff --git a/drivers/media/platform/qcom/iris/iris_core.h b/drivers/media/p= latform/qcom/iris/iris_core.h index d10a03aa5685..d919c7c16106 100644 --- a/drivers/media/platform/qcom/iris/iris_core.h +++ b/drivers/media/platform/qcom/iris/iris_core.h @@ -112,7 +112,7 @@ struct iris_core { u32 header_id; u32 packet_id; struct iris_core_power power; - const struct iris_hfi_command_ops *hfi_ops; + const struct iris_hfi_ops *hfi_ops; const struct iris_hfi_response_ops *hfi_response_ops; struct completion core_init_done; u32 intr_status; diff --git a/drivers/media/platform/qcom/iris/iris_hfi_common.c b/drivers/m= edia/platform/qcom/iris/iris_hfi_common.c index 92112eb16c11..d6496e0fabde 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_common.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_common.c @@ -76,7 +76,7 @@ u32 iris_hfi_get_v4l2_matrix_coefficients(u32 hfi_coeffic= ients) =20 int iris_hfi_core_init(struct iris_core *core) { - const struct iris_hfi_command_ops *hfi_ops =3D core->hfi_ops; + const struct iris_hfi_ops *hfi_ops =3D core->hfi_ops; int ret; =20 ret =3D hfi_ops->sys_init(core); @@ -109,7 +109,7 @@ irqreturn_t iris_hfi_isr_handler(int irq, void *data) iris_vpu_clear_interrupt(core); mutex_unlock(&core->lock); =20 - core->hfi_response_ops->hfi_response_handler(core); + core->hfi_ops->hfi_response_handler(core); =20 if (!iris_vpu_watchdog(core, core->intr_status)) enable_irq(irq); @@ -144,7 +144,7 @@ int iris_hfi_pm_suspend(struct iris_core *core) =20 int iris_hfi_pm_resume(struct iris_core *core) { - const struct iris_hfi_command_ops *ops =3D core->hfi_ops; + const struct iris_hfi_ops *ops =3D core->hfi_ops; int ret; =20 ret =3D iris_vpu_power_on(core); diff --git a/drivers/media/platform/qcom/iris/iris_hfi_common.h b/drivers/m= edia/platform/qcom/iris/iris_hfi_common.h index 4f26b010249a..21bb35261073 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_common.h +++ b/drivers/media/platform/qcom/iris/iris_hfi_common.h @@ -105,11 +105,13 @@ struct iris_hfi_prop_type_handle { int (*handle)(struct iris_inst *inst, u32 plane); }; =20 -struct iris_hfi_command_ops { +struct iris_hfi_ops { int (*sys_init)(struct iris_core *core); int (*sys_image_version)(struct iris_core *core); int (*sys_interframe_powercollapse)(struct iris_core *core); int (*sys_pc_prep)(struct iris_core *core); + + void (*hfi_response_handler)(struct iris_core *core); }; =20 struct iris_hfi_inst_ops { @@ -129,10 +131,6 @@ struct iris_hfi_inst_ops { int (*session_close)(struct iris_inst *inst); }; =20 -struct iris_hfi_response_ops { - void (*hfi_response_handler)(struct iris_core *core); -}; - struct hfi_subscription_params { u32 bitstream_resolution; u32 crop_offsets[2]; diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen1.h b/drivers/med= ia/platform/qcom/iris/iris_hfi_gen1.h index 19b8e9054a75..1c970243532a 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen1.h +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1.h @@ -9,8 +9,8 @@ struct iris_core; struct iris_inst; =20 -void iris_hfi_gen1_command_ops_init(struct iris_core *core); -void iris_hfi_gen1_response_ops_init(struct iris_core *core); +void iris_hfi_gen1_ops_init(struct iris_core *core); +void iris_hfi_gen1_response_handler(struct iris_core *core); struct iris_inst *iris_hfi_gen1_get_instance(void); =20 #endif 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 fde8219309b0..7f0e5a75a301 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c @@ -1028,16 +1028,18 @@ static const struct iris_hfi_inst_ops iris_hfi_gen1= _inst_ops =3D { .session_close =3D iris_hfi_gen1_session_close, }; =20 -static const struct iris_hfi_command_ops iris_hfi_gen1_command_ops =3D { +static const struct iris_hfi_ops iris_hfi_gen1_ops =3D { .sys_init =3D iris_hfi_gen1_sys_init, .sys_image_version =3D iris_hfi_gen1_sys_image_version, .sys_interframe_powercollapse =3D iris_hfi_gen1_sys_interframe_powercolla= pse, .sys_pc_prep =3D iris_hfi_gen1_sys_pc_prep, + + .hfi_response_handler =3D iris_hfi_gen1_response_handler, }; =20 -void iris_hfi_gen1_command_ops_init(struct iris_core *core) +void iris_hfi_gen1_ops_init(struct iris_core *core) { - core->hfi_ops =3D &iris_hfi_gen1_command_ops; + core->hfi_ops =3D &iris_hfi_gen1_ops; } =20 struct iris_inst *iris_hfi_gen1_get_instance(void) 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 8e864c239e29..bfd7495bf44f 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen1_response.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1_response.c @@ -688,7 +688,7 @@ static void iris_hfi_gen1_flush_debug_queue(struct iris= _core *core, u8 *packet) } } =20 -static void iris_hfi_gen1_response_handler(struct iris_core *core) +void iris_hfi_gen1_response_handler(struct iris_core *core) { memset(core->response_packet, 0, sizeof(struct hfi_pkt_hdr)); while (!iris_hfi_queue_msg_read(core, core->response_packet)) { @@ -698,12 +698,3 @@ static void iris_hfi_gen1_response_handler(struct iris= _core *core) =20 iris_hfi_gen1_flush_debug_queue(core, core->response_packet); } - -static const struct iris_hfi_response_ops iris_hfi_gen1_response_ops =3D { - .hfi_response_handler =3D iris_hfi_gen1_response_handler, -}; - -void iris_hfi_gen1_response_ops_init(struct iris_core *core) -{ - core->hfi_response_ops =3D &iris_hfi_gen1_response_ops; -} diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen2.h b/drivers/med= ia/platform/qcom/iris/iris_hfi_gen2.h index b9d3749a10ef..b981a1ba6954 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2.h +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2.h @@ -34,8 +34,8 @@ struct iris_inst_hfi_gen2 { struct hfi_subscription_params dst_subcr_params; }; =20 -void iris_hfi_gen2_command_ops_init(struct iris_core *core); -void iris_hfi_gen2_response_ops_init(struct iris_core *core); +void iris_hfi_gen2_ops_init(struct iris_core *core); +void iris_hfi_gen2_response_handler(struct iris_core *core); struct iris_inst *iris_hfi_gen2_get_instance(void); =20 #endif 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 502767f1593d..12d286be94a8 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c @@ -1405,16 +1405,18 @@ static const struct iris_hfi_inst_ops iris_hfi_gen2= _inst_ops =3D { .session_close =3D iris_hfi_gen2_session_close, }; =20 -static const struct iris_hfi_command_ops iris_hfi_gen2_command_ops =3D { +static const struct iris_hfi_ops iris_hfi_gen2_ops =3D { .sys_init =3D iris_hfi_gen2_sys_init, .sys_image_version =3D iris_hfi_gen2_sys_image_version, .sys_interframe_powercollapse =3D iris_hfi_gen2_sys_interframe_powercolla= pse, .sys_pc_prep =3D iris_hfi_gen2_sys_pc_prep, + + .hfi_response_handler =3D iris_hfi_gen2_response_handler, }; =20 -void iris_hfi_gen2_command_ops_init(struct iris_core *core) +void iris_hfi_gen2_ops_init(struct iris_core *core) { - core->hfi_ops =3D &iris_hfi_gen2_command_ops; + core->hfi_ops =3D &iris_hfi_gen2_ops; } =20 struct iris_inst *iris_hfi_gen2_get_instance(void) 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 8e19f61bbbf9..c350d231265e 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2_response.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2_response.c @@ -977,7 +977,7 @@ static void iris_hfi_gen2_flush_debug_queue(struct iris= _core *core, u8 *packet) } } =20 -static void iris_hfi_gen2_response_handler(struct iris_core *core) +void iris_hfi_gen2_response_handler(struct iris_core *core) { if (iris_vpu_watchdog(core, core->intr_status)) { struct iris_hfi_packet pkt =3D {.type =3D HFI_SYS_ERROR_WD_TIMEOUT}; @@ -997,12 +997,3 @@ static void iris_hfi_gen2_response_handler(struct iris= _core *core) =20 iris_hfi_gen2_flush_debug_queue(core, core->response_packet); } - -static const struct iris_hfi_response_ops iris_hfi_gen2_response_ops =3D { - .hfi_response_handler =3D iris_hfi_gen2_response_handler, -}; - -void iris_hfi_gen2_response_ops_init(struct iris_core *core) -{ - core->hfi_response_ops =3D &iris_hfi_gen2_response_ops; -} diff --git a/drivers/media/platform/qcom/iris/iris_platform_common.h b/driv= ers/media/platform/qcom/iris/iris_platform_common.h index f5eb17ae072c..8e330ce5e726 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_common.h +++ b/drivers/media/platform/qcom/iris/iris_platform_common.h @@ -202,8 +202,7 @@ enum platform_pm_domain_type { }; =20 struct iris_platform_data { - void (*init_hfi_command_ops)(struct iris_core *core); - void (*init_hfi_response_ops)(struct iris_core *core); + void (*init_hfi_ops)(struct iris_core *core); struct iris_inst *(*get_instance)(void); u32 (*get_vpu_buffer_size)(struct iris_inst *inst, enum iris_buffer_type = buffer_type); const struct vpu_ops *vpu_ops; diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen1.c b/driver= s/media/platform/qcom/iris/iris_platform_gen1.c index 392f9ed94ba8..1906e480e2ec 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen1.c +++ b/drivers/media/platform/qcom/iris/iris_platform_gen1.c @@ -315,8 +315,7 @@ static const u32 sm8250_enc_ip_int_buf_tbl[] =3D { =20 const struct iris_platform_data sm8250_data =3D { .get_instance =3D iris_hfi_gen1_get_instance, - .init_hfi_command_ops =3D &iris_hfi_gen1_command_ops_init, - .init_hfi_response_ops =3D iris_hfi_gen1_response_ops_init, + .init_hfi_ops =3D &iris_hfi_gen1_ops_init, .get_vpu_buffer_size =3D iris_vpu_buf_size, .vpu_ops =3D &iris_vpu2_ops, .set_preset_registers =3D iris_vpu_set_preset_registers, @@ -362,8 +361,7 @@ const struct iris_platform_data sm8250_data =3D { =20 const struct iris_platform_data sc7280_data =3D { .get_instance =3D iris_hfi_gen1_get_instance, - .init_hfi_command_ops =3D &iris_hfi_gen1_command_ops_init, - .init_hfi_response_ops =3D iris_hfi_gen1_response_ops_init, + .init_hfi_ops =3D &iris_hfi_gen1_ops_init, .get_vpu_buffer_size =3D iris_vpu_buf_size, .vpu_ops =3D &iris_vpu2_ops, .set_preset_registers =3D iris_vpu_set_preset_registers, diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen2.c b/driver= s/media/platform/qcom/iris/iris_platform_gen2.c index ef70472ecde5..09dcf01047c5 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen2.c +++ b/drivers/media/platform/qcom/iris/iris_platform_gen2.c @@ -820,8 +820,7 @@ static const u32 sm8550_enc_op_int_buf_tbl[] =3D { =20 const struct iris_platform_data sm8550_data =3D { .get_instance =3D iris_hfi_gen2_get_instance, - .init_hfi_command_ops =3D iris_hfi_gen2_command_ops_init, - .init_hfi_response_ops =3D iris_hfi_gen2_response_ops_init, + .init_hfi_ops =3D iris_hfi_gen2_ops_init, .get_vpu_buffer_size =3D iris_vpu_buf_size, .vpu_ops =3D &iris_vpu3_ops, .set_preset_registers =3D iris_vpu_set_preset_registers, @@ -877,8 +876,7 @@ const struct iris_platform_data sm8550_data =3D { */ const struct iris_platform_data sm8650_data =3D { .get_instance =3D iris_hfi_gen2_get_instance, - .init_hfi_command_ops =3D iris_hfi_gen2_command_ops_init, - .init_hfi_response_ops =3D iris_hfi_gen2_response_ops_init, + .init_hfi_ops =3D iris_hfi_gen2_ops_init, .get_vpu_buffer_size =3D iris_vpu33_buf_size, .vpu_ops =3D &iris_vpu33_ops, .set_preset_registers =3D iris_vpu_set_preset_registers, @@ -929,8 +927,7 @@ const struct iris_platform_data sm8650_data =3D { =20 const struct iris_platform_data sm8750_data =3D { .get_instance =3D iris_hfi_gen2_get_instance, - .init_hfi_command_ops =3D iris_hfi_gen2_command_ops_init, - .init_hfi_response_ops =3D iris_hfi_gen2_response_ops_init, + .init_hfi_ops =3D iris_hfi_gen2_ops_init, .get_vpu_buffer_size =3D iris_vpu33_buf_size, .vpu_ops =3D &iris_vpu35_ops, .set_preset_registers =3D iris_vpu_set_preset_registers, @@ -983,8 +980,7 @@ const struct iris_platform_data sm8750_data =3D { */ const struct iris_platform_data qcs8300_data =3D { .get_instance =3D iris_hfi_gen2_get_instance, - .init_hfi_command_ops =3D iris_hfi_gen2_command_ops_init, - .init_hfi_response_ops =3D iris_hfi_gen2_response_ops_init, + .init_hfi_ops =3D iris_hfi_gen2_ops_init, .get_vpu_buffer_size =3D iris_vpu_buf_size, .vpu_ops =3D &iris_vpu3_ops, .set_preset_registers =3D iris_vpu_set_preset_registers, diff --git a/drivers/media/platform/qcom/iris/iris_probe.c b/drivers/media/= platform/qcom/iris/iris_probe.c index 17bb11513648..c2d174a6e160 100644 --- a/drivers/media/platform/qcom/iris/iris_probe.c +++ b/drivers/media/platform/qcom/iris/iris_probe.c @@ -257,8 +257,7 @@ static int iris_probe(struct platform_device *pdev) disable_irq_nosync(core->irq); =20 iris_init_ops(core); - core->iris_platform_data->init_hfi_command_ops(core); - core->iris_platform_data->init_hfi_response_ops(core); + core->iris_platform_data->init_hfi_ops(core); =20 ret =3D iris_init_resources(core); if (ret) --=20 2.47.3 From nobody Sat Apr 18 09:30:54 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F269D47D95D for ; Sat, 28 Feb 2026 15:26:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772292406; cv=none; b=cAtwR8fzD7SajBeGA1h6oPccMBQKuOu2URjzKqlxtjYci4G6sPsS48TZfYDVZQDbfZAZXMLdVHWm5I++myhYN4K05B/NjRfX9RrfK3nc9BnfQIx+a7K0OTWZAXN82erXryN89hpR2xJam3WneovD+cmqV/OXo+HeGuCgKjkLogs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772292406; c=relaxed/simple; bh=D2ds+EqPKOCJKa58h2afy1b8aa1tTO2Jv/xccI8QzNM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=CmLkrnqrUJnPs5QyyeaoGqQhcYb4SMexq75jw/kRKzv5t9+54CmBYnM4CyqPLhv4CJLKSh+KUxiulWOF7OkhxY9Dq5Yb+C3gTpTeVus5JpeuuQHDMf1A1TNiTnnz5hFEhEExBnDD6V+Q/2EEwiThalpN69GQOYX2OUn7+dsFEEQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=YreRKWAE; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=gjPOntQW; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="YreRKWAE"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="gjPOntQW" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61SEOY1A2646833 for ; Sat, 28 Feb 2026 15:26:44 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= o3RuzPJp0cLL4gWGIuH6YePBKq2/LnO2jmhoxtNAj60=; b=YreRKWAEFXs9Z994 eGSkzU/nLBtT9f+TFiLVBEYv3MM+4YCyrYvSSLTfbdj/r9GN8we/QNvq8Munpauz Ndx5kq0P5XdfMFVxW4hbCskoZ1karBqQ/YBD97Sht23Kz3PlDh0bHSbCFgHRKuLC i5thMXcUdFljFqgMoWCEe7HYsRRSTlctni/gzbfc5s5xJzfMnhkTnOUzc1YBH34N DWDpb1ye3rUh4F7vZd7WxbTGW9ZS/O/Cy4mIg29kDqd1cOClOH318O3vBAUBuBl9 xG0a8T54LliRJavUpqPK+oblNF09ZoLXu0dnKOVszoXuJlx/mPFwiof7YyTR/Z/c LiNOlw== Received: from mail-qv1-f69.google.com (mail-qv1-f69.google.com [209.85.219.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cksg7120w-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 28 Feb 2026 15:26:43 +0000 (GMT) Received: by mail-qv1-f69.google.com with SMTP id 6a1803df08f44-899c3239a28so212934656d6.0 for ; Sat, 28 Feb 2026 07:26:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1772292403; x=1772897203; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=o3RuzPJp0cLL4gWGIuH6YePBKq2/LnO2jmhoxtNAj60=; b=gjPOntQWQVeBYJCeLMqt4p24fbsdEAI4yrama/9JecJwykTXTG5R5OlTZhfdHe3cvM Cs5faYLi6ofevubh1FInx0KcsYcXnkNaWJOg76RxbTRM80R1xuhL1FNQbCyGJFOIfzG6 nwyEK9DyPJ6w8pU4SzpBLFP3FLFvT81liKdPWmGs8u2QOkv7UYCuuxU4gFhOg0f1s2cs R9MuQA8/4MUllIwAA6qISCBTU6jBJA5WtV8gclEI/99BjQb8WAOgZBWPbWneKsYTjNlB 31vObvwH1InrzfuwekhRZYspaUluXkYVmYsm8aBB0nrOujze0k7/MMYK6/sNHNdxjFdy zidw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772292403; x=1772897203; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=o3RuzPJp0cLL4gWGIuH6YePBKq2/LnO2jmhoxtNAj60=; b=SskiPTgYx47cBNPTjaKp1Tb4tjF+C7agkiy5PqETFFTGtQYM0/lf2brVoKeZXrgVxt gENT9Uu4kYfOFFzAORLaDA+A7FUHD5kyo1aIQ/wfACSvNzbZ4o7z0Sc8lx97VX0PsAEh bxvet/n6KJY3hPSUwwq0gwDgRbQAEYYc8NdRakB7PazFkMhlxN+iayzwNkI8fDw2GB2x 6k5Gf/6ADtnfFTRmlsEkkXAjt2zRlq4k6K5nxVlplHahAUDD2dWeehMMC9rgMgsWHg20 rAos67wE0pPvFZqWnCSTaK7vzMzToMbzJ3fjAVW93io5K+zZ1a+eopWcM+9+1efHUiQQ Ssgg== X-Forwarded-Encrypted: i=1; AJvYcCXJvaWfTgVU16w91OrFBfIpn1I9n6rO9oAF3akkmWnhwz3tJO4TwOUkxz/tSwfTxgDG9i/Hl+9UydZHHIg=@vger.kernel.org X-Gm-Message-State: AOJu0YycxZlMd3amfv/xk3c3/UoXuOAX7Vd5CMKQMlIMEi2FNuNM3nl7 pj8tT7JrUctKstM5y1QouEYGj8vcrd6QUUrJr1T/M15Fp9gxeyqbon7WaQw2QVFoJzgn6yVuCJX 5xSCm5ZGNeF5yksW/6nFYSKoO8f5FmAm3289jPzwEqTH4iDiYHEaJE5hachrd7TLZXRI= X-Gm-Gg: ATEYQzwTP3q2/Xl4O8pzmNuFK95QbNHMXcUrJfoiJgkJWwpLNQ+CdlyefzAp0w9xaGa apKSKnBN1Rhq6kGWjGq34P+nBY3CD+7VkM/dq2Ym0ywqsJ9q3aEpCKGa78iLLJ3SFPOseJA2ewv dE9eWXkm27vlUzrmcULTJ2Fh/N096LRniZpunXa2tAXPihuzdcrAl4vuh7cILmkc6KsrwzPhbM+ PWOGCxYUiJz4CDYdOkJgtapZiHi/XvBYKMBaaTUbc25Qr4yL5pFHS9WnqsPxqfmo/aVMGZjC1zB F/6Yl6McnitbK7mKvni2Jq3GEGVlkKj6j9yMizSFa78czAad3XRZYbma0/mewKfnhoDF1ADG9jr rCdseQ2RF4ur9fjlytIz14DkRCNUuC1Y8Bt41pSswKF7XFonWPcpT6uAflOKRopGJ8CE1p9SgJC Ny+vwImxcD09MjQK42QBaeMjE5PTKF01ReBLg= X-Received: by 2002:a05:620a:1908:b0:8b2:eea5:3311 with SMTP id af79cd13be357-8cbc8d94aabmr779321185a.26.1772292403387; Sat, 28 Feb 2026 07:26:43 -0800 (PST) X-Received: by 2002:a05:620a:1908:b0:8b2:eea5:3311 with SMTP id af79cd13be357-8cbc8d94aabmr779318085a.26.1772292402916; Sat, 28 Feb 2026 07:26:42 -0800 (PST) Received: from umbar.lan (2001-14ba-a073-af00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a073:af00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5a115b57922sm625558e87.63.2026.02.28.07.26.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 28 Feb 2026 07:26:42 -0800 (PST) From: Dmitry Baryshkov Date: Sat, 28 Feb 2026 17:26:36 +0200 Subject: [PATCH v2 09/11] media: qcom: iris: move get_instance to iris_hfi_ops Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260228-iris-platform-data-v2-9-acf036a3c84c@oss.qualcomm.com> References: <20260228-iris-platform-data-v2-0-acf036a3c84c@oss.qualcomm.com> In-Reply-To: <20260228-iris-platform-data-v2-0-acf036a3c84c@oss.qualcomm.com> To: Vikash Garodia , Dikshita Agarwal , Abhinav Kumar , Bryan O'Donoghue , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=8958; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=D2ds+EqPKOCJKa58h2afy1b8aa1tTO2Jv/xccI8QzNM=; b=owGbwMvMwMXYbdNlx6SpcZXxtFoSQ+ZiTvV/xSqV5gEfG9Z+a8ixlc61+tweus9qwVclge5bK w0ZD+h1MhqzMDByMciKKbL4FLRMjdmUHPZhx9R6mEGsTCBTGLg4BWAiLELs/3PtHOXEuoWeBDgf z0jezvf2RrF3U8V2p+R1Hg9lrk0x0PiQHWptJf5seYO2mvHMRbONfd1fsmman4zYEDid80qpwIl Flomilq8+fb1qIr6TvdT/+aGckzZ/tvvM5mOfYXBKfNHNteKHjkwz339xeYaf4ZNHFyuLkndK6a 96KzfdzjDT9pXj3TKVCIve3HSWOlexWXxTttg2tzYYBW63iOWoNHzQulFye+pzrsoux0qLI8tWC zw9fZX/OmOSQNjMSTNblh+Y8PFnynaf7aeunOZf4nw3X/XDbeXsLRV6OyNWb+LxDtjQbBVowKzR 8OO7x8nA5U5HAjW4OibdlmrJLDST1xCJMG9+Psn7z+Z9AA== X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-ORIG-GUID: bTAKHrcH5yQOVaMILsg89O8U8U7l2NWl X-Proofpoint-GUID: bTAKHrcH5yQOVaMILsg89O8U8U7l2NWl X-Authority-Analysis: v=2.4 cv=FaA6BZ+6 c=1 sm=1 tr=0 ts=69a30934 cx=c_pps a=wEM5vcRIz55oU/E2lInRtA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=EUspDBNiAAAA:8 a=65xn1vM8G5_EQ4liwbMA:9 a=QEXdDO2ut3YA:10 a=OIgjcC2v60KrkQgK7BGD:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI4MDE0MiBTYWx0ZWRfX67eSSJl43r+i fqx5/sDWMna5BJFB69YtmXIl41s1c4eG4yQXKWIYsiiK/Yq3iFkAg9AJvnTZuVjT2Vsdo3Bwq7K 3MN5TWVrMrEosf7nB0xw7K9hSNgUc9A2dwNWR2sB47nwrGWGKW6l/F9YNLhj9vTVVT7+/x3qXeI dQg9M+AmUJysfNJCHGuggSsHfH0lAoQ76b6Ym7qEopHNctI7HnhoQXs8LM5j1kLEmcAgGkkvgUa zXqzPnfstlnyW0m9TmeH7IfqwErBR/90letblIqk7wcnYR6QDSRSkb4rOGIUjef0pqbGL/Og1bp YeCL7SC8n+JoGe1JdFXYTVdNRVNDdZBkVytjWsdnb12PvH+aTrj1DvDmxZLyOqWv1Ll5l/ejlxB ubjSp9kPnip02xxZ8wF69a1bmuvzD79LZGHJOFn4BAzLDDeNy4e8DVacRMI6hsmr0egxkn6TMdK L9uKSQeh4HWKu3Pf7Kg== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-28_05,2026-02-27_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 clxscore=1015 phishscore=0 lowpriorityscore=0 priorityscore=1501 spamscore=0 bulkscore=0 adultscore=0 malwarescore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2602280142 The get_instance() is a callback tightly connected to the HFI implementation. Move it into the new iris_hfi_ops structure, merging all core callbacks into a single vtable. Signed-off-by: Dmitry Baryshkov --- drivers/media/platform/qcom/iris/iris_hfi_common.h | 2 ++ drivers/media/platform/qcom/iris/iris_hfi_gen1.h | 2 -- .../platform/qcom/iris/iris_hfi_gen1_command.c | 28 ++++++++++--------= -- drivers/media/platform/qcom/iris/iris_hfi_gen2.h | 1 - .../platform/qcom/iris/iris_hfi_gen2_command.c | 30 ++++++++++++------= ---- .../platform/qcom/iris/iris_platform_common.h | 1 - .../media/platform/qcom/iris/iris_platform_gen1.c | 2 -- .../media/platform/qcom/iris/iris_platform_gen2.c | 4 --- drivers/media/platform/qcom/iris/iris_vidc.c | 2 +- 9 files changed, 34 insertions(+), 38 deletions(-) diff --git a/drivers/media/platform/qcom/iris/iris_hfi_common.h b/drivers/m= edia/platform/qcom/iris/iris_hfi_common.h index 21bb35261073..de181d0be320 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_common.h +++ b/drivers/media/platform/qcom/iris/iris_hfi_common.h @@ -112,6 +112,8 @@ struct iris_hfi_ops { int (*sys_pc_prep)(struct iris_core *core); =20 void (*hfi_response_handler)(struct iris_core *core); + + struct iris_inst *(*get_instance)(void); }; =20 struct iris_hfi_inst_ops { diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen1.h b/drivers/med= ia/platform/qcom/iris/iris_hfi_gen1.h index 1c970243532a..0479ba442b09 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen1.h +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1.h @@ -7,10 +7,8 @@ #define __IRIS_HFI_GEN1_H__ =20 struct iris_core; -struct iris_inst; =20 void iris_hfi_gen1_ops_init(struct iris_core *core); void iris_hfi_gen1_response_handler(struct iris_core *core); -struct iris_inst *iris_hfi_gen1_get_instance(void); =20 #endif 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 7f0e5a75a301..253edf2f62bb 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c @@ -1028,6 +1028,19 @@ static const struct iris_hfi_inst_ops iris_hfi_gen1_= inst_ops =3D { .session_close =3D iris_hfi_gen1_session_close, }; =20 +static struct iris_inst *iris_hfi_gen1_get_instance(void) +{ + struct iris_inst *out; + + out =3D kzalloc_obj(*out); + if (!out) + return NULL; + + out->hfi_ops =3D &iris_hfi_gen1_inst_ops; + + return out; +} + static const struct iris_hfi_ops iris_hfi_gen1_ops =3D { .sys_init =3D iris_hfi_gen1_sys_init, .sys_image_version =3D iris_hfi_gen1_sys_image_version, @@ -1035,22 +1048,11 @@ static const struct iris_hfi_ops iris_hfi_gen1_ops = =3D { .sys_pc_prep =3D iris_hfi_gen1_sys_pc_prep, =20 .hfi_response_handler =3D iris_hfi_gen1_response_handler, + + .get_instance =3D iris_hfi_gen1_get_instance, }; =20 void iris_hfi_gen1_ops_init(struct iris_core *core) { core->hfi_ops =3D &iris_hfi_gen1_ops; } - -struct iris_inst *iris_hfi_gen1_get_instance(void) -{ - struct iris_inst *out; - - out =3D kzalloc_obj(*out); - if (!out) - return NULL; - - out->hfi_ops =3D &iris_hfi_gen1_inst_ops; - - return out; -} diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen2.h b/drivers/med= ia/platform/qcom/iris/iris_hfi_gen2.h index b981a1ba6954..f1d293759bc6 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2.h +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2.h @@ -36,6 +36,5 @@ struct iris_inst_hfi_gen2 { =20 void iris_hfi_gen2_ops_init(struct iris_core *core); void iris_hfi_gen2_response_handler(struct iris_core *core); -struct iris_inst *iris_hfi_gen2_get_instance(void); =20 #endif 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 12d286be94a8..3676af51894c 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c @@ -1405,6 +1405,20 @@ static const struct iris_hfi_inst_ops iris_hfi_gen2_= inst_ops =3D { .session_close =3D iris_hfi_gen2_session_close, }; =20 +static struct iris_inst *iris_hfi_gen2_get_instance(void) +{ + struct iris_inst_hfi_gen2 *out; + + /* The allocation is intentionally larger than struct iris_inst. */ + out =3D kzalloc_obj(*out); + if (!out) + return NULL; + + out->inst.hfi_ops =3D &iris_hfi_gen2_inst_ops; + + return &out->inst; +} + static const struct iris_hfi_ops iris_hfi_gen2_ops =3D { .sys_init =3D iris_hfi_gen2_sys_init, .sys_image_version =3D iris_hfi_gen2_sys_image_version, @@ -1412,23 +1426,11 @@ static const struct iris_hfi_ops iris_hfi_gen2_ops = =3D { .sys_pc_prep =3D iris_hfi_gen2_sys_pc_prep, =20 .hfi_response_handler =3D iris_hfi_gen2_response_handler, + + .get_instance =3D iris_hfi_gen2_get_instance, }; =20 void iris_hfi_gen2_ops_init(struct iris_core *core) { core->hfi_ops =3D &iris_hfi_gen2_ops; } - -struct iris_inst *iris_hfi_gen2_get_instance(void) -{ - struct iris_inst_hfi_gen2 *out; - - /* The allocation is intentionally larger than struct iris_inst. */ - out =3D kzalloc_obj(*out); - if (!out) - return NULL; - - out->inst.hfi_ops =3D &iris_hfi_gen2_inst_ops; - - return &out->inst; -} diff --git a/drivers/media/platform/qcom/iris/iris_platform_common.h b/driv= ers/media/platform/qcom/iris/iris_platform_common.h index 8e330ce5e726..a936ab2aedaf 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_common.h +++ b/drivers/media/platform/qcom/iris/iris_platform_common.h @@ -203,7 +203,6 @@ enum platform_pm_domain_type { =20 struct iris_platform_data { void (*init_hfi_ops)(struct iris_core *core); - struct iris_inst *(*get_instance)(void); u32 (*get_vpu_buffer_size)(struct iris_inst *inst, enum iris_buffer_type = buffer_type); const struct vpu_ops *vpu_ops; void (*set_preset_registers)(struct iris_core *core); diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen1.c b/driver= s/media/platform/qcom/iris/iris_platform_gen1.c index 1906e480e2ec..622164ca9c65 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen1.c +++ b/drivers/media/platform/qcom/iris/iris_platform_gen1.c @@ -314,7 +314,6 @@ static const u32 sm8250_enc_ip_int_buf_tbl[] =3D { }; =20 const struct iris_platform_data sm8250_data =3D { - .get_instance =3D iris_hfi_gen1_get_instance, .init_hfi_ops =3D &iris_hfi_gen1_ops_init, .get_vpu_buffer_size =3D iris_vpu_buf_size, .vpu_ops =3D &iris_vpu2_ops, @@ -360,7 +359,6 @@ const struct iris_platform_data sm8250_data =3D { }; =20 const struct iris_platform_data sc7280_data =3D { - .get_instance =3D iris_hfi_gen1_get_instance, .init_hfi_ops =3D &iris_hfi_gen1_ops_init, .get_vpu_buffer_size =3D iris_vpu_buf_size, .vpu_ops =3D &iris_vpu2_ops, diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen2.c b/driver= s/media/platform/qcom/iris/iris_platform_gen2.c index 09dcf01047c5..7745a3481f6c 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen2.c +++ b/drivers/media/platform/qcom/iris/iris_platform_gen2.c @@ -819,7 +819,6 @@ static const u32 sm8550_enc_op_int_buf_tbl[] =3D { }; =20 const struct iris_platform_data sm8550_data =3D { - .get_instance =3D iris_hfi_gen2_get_instance, .init_hfi_ops =3D iris_hfi_gen2_ops_init, .get_vpu_buffer_size =3D iris_vpu_buf_size, .vpu_ops =3D &iris_vpu3_ops, @@ -875,7 +874,6 @@ const struct iris_platform_data sm8550_data =3D { * - fwname to "qcom/vpu/vpu33_p4.mbn" */ const struct iris_platform_data sm8650_data =3D { - .get_instance =3D iris_hfi_gen2_get_instance, .init_hfi_ops =3D iris_hfi_gen2_ops_init, .get_vpu_buffer_size =3D iris_vpu33_buf_size, .vpu_ops =3D &iris_vpu33_ops, @@ -926,7 +924,6 @@ const struct iris_platform_data sm8650_data =3D { }; =20 const struct iris_platform_data sm8750_data =3D { - .get_instance =3D iris_hfi_gen2_get_instance, .init_hfi_ops =3D iris_hfi_gen2_ops_init, .get_vpu_buffer_size =3D iris_vpu33_buf_size, .vpu_ops =3D &iris_vpu35_ops, @@ -979,7 +976,6 @@ const struct iris_platform_data sm8750_data =3D { * - inst_caps to platform_inst_cap_qcs8300 */ const struct iris_platform_data qcs8300_data =3D { - .get_instance =3D iris_hfi_gen2_get_instance, .init_hfi_ops =3D iris_hfi_gen2_ops_init, .get_vpu_buffer_size =3D iris_vpu_buf_size, .vpu_ops =3D &iris_vpu3_ops, diff --git a/drivers/media/platform/qcom/iris/iris_vidc.c b/drivers/media/p= latform/qcom/iris/iris_vidc.c index eddf2694e759..d4608ae756fc 100644 --- a/drivers/media/platform/qcom/iris/iris_vidc.c +++ b/drivers/media/platform/qcom/iris/iris_vidc.c @@ -156,7 +156,7 @@ int iris_open(struct file *filp) =20 pm_runtime_put_sync(core->dev); =20 - inst =3D core->iris_platform_data->get_instance(); + inst =3D core->hfi_ops->get_instance(); if (!inst) return -ENOMEM; =20 --=20 2.47.3 From nobody Sat Apr 18 09:30:54 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C32E947DD6D for ; Sat, 28 Feb 2026 15:26:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772292410; cv=none; b=EqvJJ0lkxF78IwZwWU0S9VbN14ZrZt2IUB8cuI//m/QcqZKI+nY65N7aUZD2woYRyDwGmrFso65+G06kxU28kI1Ali5U1XwnELX6lGNTXuXbzhbDR08rfsYL+vYouWCDjgINvAlJVtggfRWIGfjL3d7VNkqHG058hMcX6auXr28= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772292410; c=relaxed/simple; bh=vetv6j3Y1I2cL0djztzZDTSzVMASyS0g/vyZ9H7QWqk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pEt4NlAXGaLASRMLUceyvg3P5FrXWFa4pnk1CwKL1KzSEPu8DqZ+PCtBLVb8wkB3CMG2+4WWMV9hCiXwHEJE20mBkjOQE+TojmELlcqpSRD9VcybPdE2nG8b36OQXR5llGWLsLwLlWIuxRj/wQy5MansmL+KKH89stouYxnStTw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=XgGhXEUk; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=LOvE4QSJ; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="XgGhXEUk"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="LOvE4QSJ" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61SEO6en1894306 for ; Sat, 28 Feb 2026 15:26:46 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= vZc90H64t6GdyBScKTuOlxaZrvvmLddh/a5MbeqIweE=; b=XgGhXEUkr/q3sNmD Yqf+jEMKClMzbEIcl25gVDkN5INCtJAgEOuwwFuPR9c8U2X6sqoUm9e+0rZEuK2c Bc+xTke4ZUFEfigp9BH1Ymf/wRrSBZHNWjnONSs66YRRQysRsCdsBHEBJIP+rUth NRg1cqr9JEYmuJr3/LKYwVIZDhEB2Urk5DsTB4AKEmjWq0IIsD7D+VuCRKTVkfSd /0ez/DOPk0e3ChUTt20njitBq9F4P+9dO3+pH+m0DPKAWN44Fp5y8Gg4r0YSDMjf JzqOlRnE11BNcqu+oc8Dfh0KYC6neqq9q7q7x8KYG50wL2TybnN2xd+jVnHaqzll ckPdQQ== Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cksn41594-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 28 Feb 2026 15:26:46 +0000 (GMT) Received: by mail-qk1-f200.google.com with SMTP id af79cd13be357-8cb3b0d938dso2819913685a.2 for ; Sat, 28 Feb 2026 07:26:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1772292405; x=1772897205; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=vZc90H64t6GdyBScKTuOlxaZrvvmLddh/a5MbeqIweE=; b=LOvE4QSJFFiAq4tVAEre1yh00eVe0MPNBDHfHs6Zc6uifRkkk76UeeuTJjND/RBIKu en+C96te8gKmTAy1vsCwcQm4PdBSRtR+GP4rt9T7r+oib4dAWGvzGP8JB5fHS/52Eza6 14APDhlTLLRD4aYXSrRwyY035IPMbIDxQrUHTnclk5EIi3/NO6IWumJxsMOvlpeNWLPF 2LBaM5hs0hgQRxKC+ySpZAOkyw2OaB5VOJfJmL9xBhzjWAyQMgNXuXPITj0B84BTlc9m bnlP9mjZJ5n7tx+c3CZkJgMsNuhEBd0aPXl392/BOECXV3KYBbMMUmIdo41xZfeIfy9O Mu+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772292405; x=1772897205; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=vZc90H64t6GdyBScKTuOlxaZrvvmLddh/a5MbeqIweE=; b=tT/EoxAEIOTAYOb9GbFAml9QzZMYVZAlCPpmqa7Px8hzBobdYsjqsd3dTUazY4N+dC Ats86ljbultPc8TfwpdIK1rHtSSvK3k9+CCMW6ggdoRxd9xXCg0w3FYq8D6mvmDUZMfX rDiUr6BRBaxPJynBCwdzeY26tSB5SjL48oLYde1spu0n0kC23pTJz8aS8rHdjtc5wzWe rv84ZODMFBN3mvwDojxSA+++vX6SmJS94pLlBsUsHOBN6GC0YaauhWhrvvqfCGzQH9YO SuLcvS9C3REYt5ircJp5BX6Ti60ucdJgBYlslW7CB5ZBBJZWlGtJgkMnm1gvTNL8iI9m 2mSA== X-Forwarded-Encrypted: i=1; AJvYcCWleBmYtGS5utv6nYEoNpRHrvKAC/S0b+f2UiWBk3XQGxTiOm9+S1XdAieao2iDlTv/a7imiMqj2m71icU=@vger.kernel.org X-Gm-Message-State: AOJu0YyZtoMi+gIrnWCbM+pxeQVzH5A+aOXmgLTdg+Nq37Gxf5VFcjbf DLD9Kh2Ws/B/OVix34ZCo3/4ScdBOqIX14/rd9KH0DcbkxIY0IdE5URh+0a4KYSUcdDDoImod8K SLKv/koy4T63EI0cii7B3M/SwZ+npcPi3vCnlX6dCKlU6D1YZdiZHAMI8IL5cI3QPL0S0ERXGyA U= X-Gm-Gg: ATEYQzynFjxEJZx1Py6VOtQPcPmNWE2wtRDzB6CG8Rlu3RnpGMmX+q/52K3iJ5klmp3 QFAWfmZl0mkNy7Q18hJwQg03lNUqnmjk+0LV//bsgZ9aaOnf7bgCkBhUYIAeX+IvBfN2/kuZzm3 xLTFkp5XxvHNN/q02n3JzPEuCTnl+QCppaSLyWaLDehDiPO18pGL1+znZeowAt3tRuLXi8IBWiu lXRzP/8GYAJ7UxWR/BxqfgrCSOYI7vWvDHk6fB8JOUfJI2iigByDtC6BNO+Tqb022DXimPyENBr RL7OJKFVxnBlFZkZ0lqtRFK52X2YDIT/qh70suaYU/CIlg9URyZ2MWTf8vq7pwxt9QFMnhsL+IF 3klEiNajT1UawrfDszc0BE3pKKHqmOOg0hXpoQI1+Rg3nn3/Brkp38qhhoay7kSpy8rKPudVKDC aBoL8jrDYMAlxyplUjqku4YIim3Ryl04vC/pY= X-Received: by 2002:a05:620a:1aa1:b0:8c9:f9c1:5ed with SMTP id af79cd13be357-8cbc8f35ca7mr852199085a.63.1772292404654; Sat, 28 Feb 2026 07:26:44 -0800 (PST) X-Received: by 2002:a05:620a:1aa1:b0:8c9:f9c1:5ed with SMTP id af79cd13be357-8cbc8f35ca7mr852195985a.63.1772292404122; Sat, 28 Feb 2026 07:26:44 -0800 (PST) Received: from umbar.lan (2001-14ba-a073-af00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a073:af00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5a115b57922sm625558e87.63.2026.02.28.07.26.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 28 Feb 2026 07:26:43 -0800 (PST) From: Dmitry Baryshkov Date: Sat, 28 Feb 2026 17:26:37 +0200 Subject: [PATCH v2 10/11] media: qcom: iris: split firmware_data from raw platform data Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260228-iris-platform-data-v2-10-acf036a3c84c@oss.qualcomm.com> References: <20260228-iris-platform-data-v2-0-acf036a3c84c@oss.qualcomm.com> In-Reply-To: <20260228-iris-platform-data-v2-0-acf036a3c84c@oss.qualcomm.com> To: Vikash Garodia , Dikshita Agarwal , Abhinav Kumar , Bryan O'Donoghue , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=29717; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=vetv6j3Y1I2cL0djztzZDTSzVMASyS0g/vyZ9H7QWqk=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpowkn09jZ3ZI1wpLQybE6n7LXvRMXuqfbYXebF QWIAm0Y9RGJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaaMJJwAKCRCLPIo+Aiko 1ZchB/wMmWQbo6mOZfWx6swbsxqLCwVRGVCUZsyTiXGtS9HU1RL+6CwKd8R9f984TcGA0AbagVY knvLNAXaXga9ZSNljGWbswel34ulZTbpiqmJIYTGodiVwiB7gVWgiojK/NItLd/ncmzA7lcM7ge a/kzsg21jLugv17/17enSZ4w5ZPMzzLzJgoW3Fn28Kp8MDdjFRmQHrsthv230s5Dpr3EpzRtVHs rAmG58EUX+pCgU2e3rGjf1VZX/lTqtiH/z2rabLioHFXW6SYBj/IY+qByr1COh8/9+2BwiCfTq6 IU8vuiwB+MJ7PE/9pqzheX+IUe9RMYxq2gqopclgU411jSZE X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Authority-Analysis: v=2.4 cv=Tq3rRTXh c=1 sm=1 tr=0 ts=69a30936 cx=c_pps a=hnmNkyzTK/kJ09Xio7VxxA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=H-15yB1S3qbtgeSRvWYA:9 a=QEXdDO2ut3YA:10 a=PEH46H7Ffwr30OY-TuGO:22 X-Proofpoint-ORIG-GUID: V17spg-rFP7zNjgyiRRc7KWxdGSJZ4nm X-Proofpoint-GUID: V17spg-rFP7zNjgyiRRc7KWxdGSJZ4nm X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI4MDE0MiBTYWx0ZWRfX4Sv1zd0QtFDj ay3EHt15MAKOqhJXCDRhkU/rTtm1Xsz9ZGQ8vCakrD9pwKuyPUdOJk+9u4XexCBJVTxoC9O435I LXPPK8gKx3uqYBnf4jyeIYunS0XHH2KL16CoUczjvrlivnftAVfkoPKkH7xm1Dwk6gSVFROMs3F sPlZ5bLqZyP3iy5ywyRGXZzt2ZJFKGL6pXEU9D3uBJhMHIKr9U7q0X8LNiMFdLZ51Zo+uxsqCdG +OnmS+U+Pll6GoDOCMSjpaspE8Vg6haEUy34+AOrgjHVEC/ceVBeHlldE2upZr89LHFNryePxqj p7Zn1wPozSdqc2AQC8Vpbz0gF3dRCrFh8P9QQjjWTv+z+wDRmRWi0EIQAztwHTdZOasc0i1D3tf SSAwAXriuA8WQFPvEO6C8H+olgTK3gFcz/CwASIYxCIIGdGJAMzk7UTZVzNtjPhM8aDbmhgSzUV lU+VoLiJJry3CE6aPBQ== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-28_05,2026-02-27_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 bulkscore=0 suspectscore=0 impostorscore=0 lowpriorityscore=0 adultscore=0 priorityscore=1501 malwarescore=0 phishscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2602280142 Having firmware-related fields in platform data results in the tying platform data to the HFI firmware data rather than the actual hardware. For example, SM8450 uses Gen2 firmware, so currently its platform data should be placed next to the other gen2 platforms, although it has the VPU2.0 core, similar to the one found on SM8250 and SC7280 and so the hardware-specific platform data is also close to those devices. Split firmware data to a separate struct, separating hardware-related data from the firmware interfaces. Signed-off-by: Dmitry Baryshkov --- drivers/media/platform/qcom/iris/iris_buffer.c | 84 ++++++++-------- drivers/media/platform/qcom/iris/iris_core.h | 1 + drivers/media/platform/qcom/iris/iris_ctrls.c | 8 +- .../platform/qcom/iris/iris_hfi_gen1_command.c | 2 +- .../platform/qcom/iris/iris_platform_common.h | 37 ++++--- .../media/platform/qcom/iris/iris_platform_gen1.c | 46 ++++----- .../media/platform/qcom/iris/iris_platform_gen2.c | 106 +++++++++--------= ---- drivers/media/platform/qcom/iris/iris_probe.c | 3 +- drivers/media/platform/qcom/iris/iris_vidc.c | 10 +- 9 files changed, 141 insertions(+), 156 deletions(-) diff --git a/drivers/media/platform/qcom/iris/iris_buffer.c b/drivers/media= /platform/qcom/iris/iris_buffer.c index 915096b21279..96ad6f5af23f 100644 --- a/drivers/media/platform/qcom/iris/iris_buffer.c +++ b/drivers/media/platform/qcom/iris/iris_buffer.c @@ -295,37 +295,37 @@ static void iris_fill_internal_buf_info(struct iris_i= nst *inst, { struct iris_buffers *buffers =3D &inst->buffers[buffer_type]; =20 - buffers->size =3D inst->core->iris_platform_data->get_vpu_buffer_size(ins= t, buffer_type); + buffers->size =3D inst->core->iris_firmware_data->get_vpu_buffer_size(ins= t, buffer_type); buffers->min_count =3D iris_vpu_buf_count(inst, buffer_type); } =20 void iris_get_internal_buffers(struct iris_inst *inst, u32 plane) { - const struct iris_platform_data *platform_data =3D inst->core->iris_platf= orm_data; + const struct iris_firmware_data *firmware_data =3D inst->core->iris_firmw= are_data; const u32 *internal_buf_type; u32 internal_buffer_count, i; =20 if (inst->domain =3D=3D DECODER) { if (V4L2_TYPE_IS_OUTPUT(plane)) { - internal_buf_type =3D platform_data->dec_ip_int_buf_tbl; - internal_buffer_count =3D platform_data->dec_ip_int_buf_tbl_size; + internal_buf_type =3D firmware_data->dec_ip_int_buf_tbl; + internal_buffer_count =3D firmware_data->dec_ip_int_buf_tbl_size; for (i =3D 0; i < internal_buffer_count; i++) iris_fill_internal_buf_info(inst, internal_buf_type[i]); } else { - internal_buf_type =3D platform_data->dec_op_int_buf_tbl; - internal_buffer_count =3D platform_data->dec_op_int_buf_tbl_size; + internal_buf_type =3D firmware_data->dec_op_int_buf_tbl; + internal_buffer_count =3D firmware_data->dec_op_int_buf_tbl_size; for (i =3D 0; i < internal_buffer_count; i++) iris_fill_internal_buf_info(inst, internal_buf_type[i]); } } else { if (V4L2_TYPE_IS_OUTPUT(plane)) { - internal_buf_type =3D platform_data->enc_ip_int_buf_tbl; - internal_buffer_count =3D platform_data->enc_ip_int_buf_tbl_size; + internal_buf_type =3D firmware_data->enc_ip_int_buf_tbl; + internal_buffer_count =3D firmware_data->enc_ip_int_buf_tbl_size; for (i =3D 0; i < internal_buffer_count; i++) iris_fill_internal_buf_info(inst, internal_buf_type[i]); } else { - internal_buf_type =3D platform_data->enc_op_int_buf_tbl; - internal_buffer_count =3D platform_data->enc_op_int_buf_tbl_size; + internal_buf_type =3D firmware_data->enc_op_int_buf_tbl; + internal_buffer_count =3D firmware_data->enc_op_int_buf_tbl_size; for (i =3D 0; i < internal_buffer_count; i++) iris_fill_internal_buf_info(inst, internal_buf_type[i]); } @@ -366,7 +366,7 @@ static int iris_create_internal_buffer(struct iris_inst= *inst, =20 int iris_create_internal_buffers(struct iris_inst *inst, u32 plane) { - const struct iris_platform_data *platform_data =3D inst->core->iris_platf= orm_data; + const struct iris_firmware_data *firmware_data =3D inst->core->iris_firmw= are_data; u32 internal_buffer_count, i, j; struct iris_buffers *buffers; const u32 *internal_buf_type; @@ -374,19 +374,19 @@ int iris_create_internal_buffers(struct iris_inst *in= st, u32 plane) =20 if (inst->domain =3D=3D DECODER) { if (V4L2_TYPE_IS_OUTPUT(plane)) { - internal_buf_type =3D platform_data->dec_ip_int_buf_tbl; - internal_buffer_count =3D platform_data->dec_ip_int_buf_tbl_size; + internal_buf_type =3D firmware_data->dec_ip_int_buf_tbl; + internal_buffer_count =3D firmware_data->dec_ip_int_buf_tbl_size; } else { - internal_buf_type =3D platform_data->dec_op_int_buf_tbl; - internal_buffer_count =3D platform_data->dec_op_int_buf_tbl_size; + internal_buf_type =3D firmware_data->dec_op_int_buf_tbl; + internal_buffer_count =3D firmware_data->dec_op_int_buf_tbl_size; } } else { if (V4L2_TYPE_IS_OUTPUT(plane)) { - internal_buf_type =3D platform_data->enc_ip_int_buf_tbl; - internal_buffer_count =3D platform_data->enc_ip_int_buf_tbl_size; + internal_buf_type =3D firmware_data->enc_ip_int_buf_tbl; + internal_buffer_count =3D firmware_data->enc_ip_int_buf_tbl_size; } else { - internal_buf_type =3D platform_data->enc_op_int_buf_tbl; - internal_buffer_count =3D platform_data->enc_op_int_buf_tbl_size; + internal_buf_type =3D firmware_data->enc_op_int_buf_tbl; + internal_buffer_count =3D firmware_data->enc_op_int_buf_tbl_size; } } =20 @@ -442,7 +442,7 @@ int iris_queue_internal_deferred_buffers(struct iris_in= st *inst, enum iris_buffe =20 int iris_queue_internal_buffers(struct iris_inst *inst, u32 plane) { - const struct iris_platform_data *platform_data =3D inst->core->iris_platf= orm_data; + const struct iris_firmware_data *firmware_data =3D inst->core->iris_firmw= are_data; struct iris_buffer *buffer, *next; struct iris_buffers *buffers; const u32 *internal_buf_type; @@ -451,19 +451,19 @@ int iris_queue_internal_buffers(struct iris_inst *ins= t, u32 plane) =20 if (inst->domain =3D=3D DECODER) { if (V4L2_TYPE_IS_OUTPUT(plane)) { - internal_buf_type =3D platform_data->dec_ip_int_buf_tbl; - internal_buffer_count =3D platform_data->dec_ip_int_buf_tbl_size; + internal_buf_type =3D firmware_data->dec_ip_int_buf_tbl; + internal_buffer_count =3D firmware_data->dec_ip_int_buf_tbl_size; } else { - internal_buf_type =3D platform_data->dec_op_int_buf_tbl; - internal_buffer_count =3D platform_data->dec_op_int_buf_tbl_size; + internal_buf_type =3D firmware_data->dec_op_int_buf_tbl; + internal_buffer_count =3D firmware_data->dec_op_int_buf_tbl_size; } } else { if (V4L2_TYPE_IS_OUTPUT(plane)) { - internal_buf_type =3D platform_data->enc_ip_int_buf_tbl; - internal_buffer_count =3D platform_data->enc_ip_int_buf_tbl_size; + internal_buf_type =3D firmware_data->enc_ip_int_buf_tbl; + internal_buffer_count =3D firmware_data->enc_ip_int_buf_tbl_size; } else { - internal_buf_type =3D platform_data->enc_op_int_buf_tbl; - internal_buffer_count =3D platform_data->enc_op_int_buf_tbl_size; + internal_buf_type =3D firmware_data->enc_op_int_buf_tbl; + internal_buffer_count =3D firmware_data->enc_op_int_buf_tbl_size; } } =20 @@ -501,7 +501,7 @@ int iris_destroy_internal_buffer(struct iris_inst *inst= , struct iris_buffer *buf =20 static int iris_destroy_internal_buffers(struct iris_inst *inst, u32 plane= , bool force) { - const struct iris_platform_data *platform_data =3D inst->core->iris_platf= orm_data; + const struct iris_firmware_data *firmware_data =3D inst->core->iris_firmw= are_data; struct iris_buffer *buf, *next; struct iris_buffers *buffers; const u32 *internal_buf_type; @@ -510,19 +510,19 @@ static int iris_destroy_internal_buffers(struct iris_= inst *inst, u32 plane, bool =20 if (inst->domain =3D=3D DECODER) { if (V4L2_TYPE_IS_OUTPUT(plane)) { - internal_buf_type =3D platform_data->dec_ip_int_buf_tbl; - len =3D platform_data->dec_ip_int_buf_tbl_size; + internal_buf_type =3D firmware_data->dec_ip_int_buf_tbl; + len =3D firmware_data->dec_ip_int_buf_tbl_size; } else { - internal_buf_type =3D platform_data->dec_op_int_buf_tbl; - len =3D platform_data->dec_op_int_buf_tbl_size; + internal_buf_type =3D firmware_data->dec_op_int_buf_tbl; + len =3D firmware_data->dec_op_int_buf_tbl_size; } } else { if (V4L2_TYPE_IS_OUTPUT(plane)) { - internal_buf_type =3D platform_data->enc_ip_int_buf_tbl; - len =3D platform_data->enc_ip_int_buf_tbl_size; + internal_buf_type =3D firmware_data->enc_ip_int_buf_tbl; + len =3D firmware_data->enc_ip_int_buf_tbl_size; } else { - internal_buf_type =3D platform_data->enc_op_int_buf_tbl; - len =3D platform_data->enc_op_int_buf_tbl_size; + internal_buf_type =3D firmware_data->enc_op_int_buf_tbl; + len =3D firmware_data->enc_op_int_buf_tbl_size; } } =20 @@ -593,17 +593,17 @@ static int iris_release_internal_buffers(struct iris_= inst *inst, =20 static int iris_release_input_internal_buffers(struct iris_inst *inst) { - const struct iris_platform_data *platform_data =3D inst->core->iris_platf= orm_data; + const struct iris_firmware_data *firmware_data =3D inst->core->iris_firmw= are_data; const u32 *internal_buf_type; u32 internal_buffer_count, i; int ret; =20 if (inst->domain =3D=3D DECODER) { - internal_buf_type =3D platform_data->dec_ip_int_buf_tbl; - internal_buffer_count =3D platform_data->dec_ip_int_buf_tbl_size; + internal_buf_type =3D firmware_data->dec_ip_int_buf_tbl; + internal_buffer_count =3D firmware_data->dec_ip_int_buf_tbl_size; } else { - internal_buf_type =3D platform_data->enc_ip_int_buf_tbl; - internal_buffer_count =3D platform_data->enc_ip_int_buf_tbl_size; + internal_buf_type =3D firmware_data->enc_ip_int_buf_tbl; + internal_buffer_count =3D firmware_data->enc_ip_int_buf_tbl_size; } =20 for (i =3D 0; i < internal_buffer_count; i++) { diff --git a/drivers/media/platform/qcom/iris/iris_core.h b/drivers/media/p= latform/qcom/iris/iris_core.h index d919c7c16106..a3caeb2c1d7a 100644 --- a/drivers/media/platform/qcom/iris/iris_core.h +++ b/drivers/media/platform/qcom/iris/iris_core.h @@ -98,6 +98,7 @@ struct iris_core { struct reset_control_bulk_data *resets; struct reset_control_bulk_data *controller_resets; const struct iris_platform_data *iris_platform_data; + const struct iris_firmware_data *iris_firmware_data; const struct qcom_ubwc_cfg_data *ubwc_cfg; enum iris_core_state state; dma_addr_t iface_q_table_daddr; diff --git a/drivers/media/platform/qcom/iris/iris_ctrls.c b/drivers/media/= platform/qcom/iris/iris_ctrls.c index f5032c5eb5a5..782fc3da224e 100644 --- a/drivers/media/platform/qcom/iris/iris_ctrls.c +++ b/drivers/media/platform/qcom/iris/iris_ctrls.c @@ -332,8 +332,8 @@ void iris_session_init_caps(struct iris_core *core) const struct platform_inst_fw_cap *caps; u32 i, num_cap, cap_id; =20 - caps =3D core->iris_platform_data->inst_fw_caps_dec; - num_cap =3D core->iris_platform_data->inst_fw_caps_dec_size; + caps =3D core->iris_firmware_data->inst_fw_caps_dec; + num_cap =3D core->iris_firmware_data->inst_fw_caps_dec_size; =20 for (i =3D 0; i < num_cap; i++) { cap_id =3D caps[i].cap_id; @@ -360,8 +360,8 @@ void iris_session_init_caps(struct iris_core *core) } } =20 - caps =3D core->iris_platform_data->inst_fw_caps_enc; - num_cap =3D core->iris_platform_data->inst_fw_caps_enc_size; + caps =3D core->iris_firmware_data->inst_fw_caps_enc; + num_cap =3D core->iris_firmware_data->inst_fw_caps_enc_size; =20 for (i =3D 0; i < num_cap; i++) { cap_id =3D caps[i].cap_id; 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 253edf2f62bb..2cda05f7d52a 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c @@ -918,7 +918,7 @@ static int iris_hfi_gen1_set_bufsize(struct iris_inst *= inst, u32 plane) =20 if (iris_split_mode_enabled(inst)) { bufsz.type =3D HFI_BUFFER_OUTPUT; - bufsz.size =3D inst->core->iris_platform_data->get_vpu_buffer_size(inst,= BUF_DPB); + bufsz.size =3D inst->core->iris_firmware_data->get_vpu_buffer_size(inst,= BUF_DPB); =20 ret =3D hfi_gen1_set_property(inst, ptype, &bufsz, sizeof(bufsz)); if (ret) diff --git a/drivers/media/platform/qcom/iris/iris_platform_common.h b/driv= ers/media/platform/qcom/iris/iris_platform_common.h index a936ab2aedaf..be3449861993 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_common.h +++ b/drivers/media/platform/qcom/iris/iris_platform_common.h @@ -201,9 +201,32 @@ enum platform_pm_domain_type { IRIS_APV_HW_POWER_DOMAIN, }; =20 -struct iris_platform_data { +struct iris_firmware_data { void (*init_hfi_ops)(struct iris_core *core); + u32 (*get_vpu_buffer_size)(struct iris_inst *inst, enum iris_buffer_type = buffer_type); + + const struct platform_inst_fw_cap *inst_fw_caps_dec; + u32 inst_fw_caps_dec_size; + const struct platform_inst_fw_cap *inst_fw_caps_enc; + u32 inst_fw_caps_enc_size; + + const u32 *dec_ip_int_buf_tbl; + unsigned int dec_ip_int_buf_tbl_size; + const u32 *dec_op_int_buf_tbl; + unsigned int dec_op_int_buf_tbl_size; + const u32 *enc_ip_int_buf_tbl; + unsigned int enc_ip_int_buf_tbl_size; + const u32 *enc_op_int_buf_tbl; + unsigned int enc_op_int_buf_tbl_size; +}; + +struct iris_platform_data { + /* + * XXX: remove firmware_data pointer once we have platforms supporting + * both firmware kinds. + */ + const struct iris_firmware_data *firmware_data; const struct vpu_ops *vpu_ops; void (*set_preset_registers)(struct iris_core *core); const struct icc_info *icc_tbl; @@ -226,10 +249,6 @@ struct iris_platform_data { struct iris_fmt *inst_iris_fmts; u32 inst_iris_fmts_size; struct platform_inst_caps *inst_caps; - const struct platform_inst_fw_cap *inst_fw_caps_dec; - u32 inst_fw_caps_dec_size; - const struct platform_inst_fw_cap *inst_fw_caps_enc; - u32 inst_fw_caps_enc_size; const struct tz_cp_config *tz_cp_config_data; u32 tz_cp_config_data_size; u32 core_arch; @@ -241,14 +260,6 @@ struct iris_platform_data { u32 max_core_mbpf; /* max number of macroblocks per second supported */ u32 max_core_mbps; - const u32 *dec_ip_int_buf_tbl; - unsigned int dec_ip_int_buf_tbl_size; - const u32 *dec_op_int_buf_tbl; - unsigned int dec_op_int_buf_tbl_size; - const u32 *enc_ip_int_buf_tbl; - unsigned int enc_ip_int_buf_tbl_size; - const u32 *enc_op_int_buf_tbl; - unsigned int enc_op_int_buf_tbl_size; }; =20 #endif diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen1.c b/driver= s/media/platform/qcom/iris/iris_platform_gen1.c index 622164ca9c65..961a78729306 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen1.c +++ b/drivers/media/platform/qcom/iris/iris_platform_gen1.c @@ -313,9 +313,26 @@ static const u32 sm8250_enc_ip_int_buf_tbl[] =3D { BUF_SCRATCH_2, }; =20 -const struct iris_platform_data sm8250_data =3D { +const struct iris_firmware_data iris_hfi_gen1_data =3D { .init_hfi_ops =3D &iris_hfi_gen1_ops_init, .get_vpu_buffer_size =3D iris_vpu_buf_size, + + .inst_fw_caps_dec =3D inst_fw_cap_sm8250_dec, + .inst_fw_caps_dec_size =3D ARRAY_SIZE(inst_fw_cap_sm8250_dec), + .inst_fw_caps_enc =3D inst_fw_cap_sm8250_enc, + .inst_fw_caps_enc_size =3D ARRAY_SIZE(inst_fw_cap_sm8250_enc), + + .dec_ip_int_buf_tbl =3D sm8250_dec_ip_int_buf_tbl, + .dec_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8250_dec_ip_int_buf_tbl), + .dec_op_int_buf_tbl =3D sm8250_dec_op_int_buf_tbl, + .dec_op_int_buf_tbl_size =3D ARRAY_SIZE(sm8250_dec_op_int_buf_tbl), + + .enc_ip_int_buf_tbl =3D sm8250_enc_ip_int_buf_tbl, + .enc_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8250_enc_ip_int_buf_tbl), +}; + +const struct iris_platform_data sm8250_data =3D { + .firmware_data =3D &iris_hfi_gen1_data, .vpu_ops =3D &iris_vpu2_ops, .set_preset_registers =3D iris_vpu_set_preset_registers, .icc_tbl =3D sm8250_icc_table, @@ -337,10 +354,6 @@ const struct iris_platform_data sm8250_data =3D { .inst_iris_fmts =3D platform_fmts_sm8250_dec, .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8250_dec), .inst_caps =3D &platform_inst_cap_sm8250, - .inst_fw_caps_dec =3D inst_fw_cap_sm8250_dec, - .inst_fw_caps_dec_size =3D ARRAY_SIZE(inst_fw_cap_sm8250_dec), - .inst_fw_caps_enc =3D inst_fw_cap_sm8250_enc, - .inst_fw_caps_enc_size =3D ARRAY_SIZE(inst_fw_cap_sm8250_enc), .tz_cp_config_data =3D tz_cp_config_sm8250, .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8250), .hw_response_timeout =3D HW_RESPONSE_TIMEOUT_VALUE, @@ -348,19 +361,10 @@ const struct iris_platform_data sm8250_data =3D { .max_session_count =3D 16, .max_core_mbpf =3D NUM_MBS_8K, .max_core_mbps =3D ((7680 * 4320) / 256) * 60, - - .dec_ip_int_buf_tbl =3D sm8250_dec_ip_int_buf_tbl, - .dec_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8250_dec_ip_int_buf_tbl), - .dec_op_int_buf_tbl =3D sm8250_dec_op_int_buf_tbl, - .dec_op_int_buf_tbl_size =3D ARRAY_SIZE(sm8250_dec_op_int_buf_tbl), - - .enc_ip_int_buf_tbl =3D sm8250_enc_ip_int_buf_tbl, - .enc_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8250_enc_ip_int_buf_tbl), }; =20 const struct iris_platform_data sc7280_data =3D { - .init_hfi_ops =3D &iris_hfi_gen1_ops_init, - .get_vpu_buffer_size =3D iris_vpu_buf_size, + .firmware_data =3D &iris_hfi_gen1_data, .vpu_ops =3D &iris_vpu2_ops, .set_preset_registers =3D iris_vpu_set_preset_registers, .icc_tbl =3D sm8250_icc_table, @@ -380,10 +384,6 @@ const struct iris_platform_data sc7280_data =3D { .inst_iris_fmts =3D platform_fmts_sm8250_dec, .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8250_dec), .inst_caps =3D &platform_inst_cap_sm8250, - .inst_fw_caps_dec =3D inst_fw_cap_sm8250_dec, - .inst_fw_caps_dec_size =3D ARRAY_SIZE(inst_fw_cap_sm8250_dec), - .inst_fw_caps_enc =3D inst_fw_cap_sm8250_enc, - .inst_fw_caps_enc_size =3D ARRAY_SIZE(inst_fw_cap_sm8250_enc), .tz_cp_config_data =3D tz_cp_config_sm8250, .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8250), .hw_response_timeout =3D HW_RESPONSE_TIMEOUT_VALUE, @@ -393,12 +393,4 @@ const struct iris_platform_data sc7280_data =3D { .max_core_mbpf =3D 4096 * 2176 / 256 * 2 + 1920 * 1088 / 256, /* max spec for SC7280 is 4096x2176@60fps */ .max_core_mbps =3D 4096 * 2176 / 256 * 60, - - .dec_ip_int_buf_tbl =3D sm8250_dec_ip_int_buf_tbl, - .dec_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8250_dec_ip_int_buf_tbl), - .dec_op_int_buf_tbl =3D sm8250_dec_op_int_buf_tbl, - .dec_op_int_buf_tbl_size =3D ARRAY_SIZE(sm8250_dec_op_int_buf_tbl), - - .enc_ip_int_buf_tbl =3D sm8250_enc_ip_int_buf_tbl, - .enc_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8250_enc_ip_int_buf_tbl), }; diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen2.c b/driver= s/media/platform/qcom/iris/iris_platform_gen2.c index 7745a3481f6c..92e9c7812e0f 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen2.c +++ b/drivers/media/platform/qcom/iris/iris_platform_gen2.c @@ -818,9 +818,48 @@ static const u32 sm8550_enc_op_int_buf_tbl[] =3D { BUF_SCRATCH_2, }; =20 -const struct iris_platform_data sm8550_data =3D { +const struct iris_firmware_data iris_hfi_gen2_data =3D { .init_hfi_ops =3D iris_hfi_gen2_ops_init, .get_vpu_buffer_size =3D iris_vpu_buf_size, + + .inst_fw_caps_dec =3D inst_fw_cap_sm8550_dec, + .inst_fw_caps_dec_size =3D ARRAY_SIZE(inst_fw_cap_sm8550_dec), + .inst_fw_caps_enc =3D inst_fw_cap_sm8550_enc, + .inst_fw_caps_enc_size =3D ARRAY_SIZE(inst_fw_cap_sm8550_enc), + + .dec_ip_int_buf_tbl =3D sm8550_dec_ip_int_buf_tbl, + .dec_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_dec_ip_int_buf_tbl), + .dec_op_int_buf_tbl =3D sm8550_dec_op_int_buf_tbl, + .dec_op_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_dec_op_int_buf_tbl), + + .enc_ip_int_buf_tbl =3D sm8550_enc_ip_int_buf_tbl, + .enc_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_enc_ip_int_buf_tbl), + .enc_op_int_buf_tbl =3D sm8550_enc_op_int_buf_tbl, + .enc_op_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_enc_op_int_buf_tbl), +}; + +const struct iris_firmware_data iris_hfi_gen2_vpu33_data =3D { + .init_hfi_ops =3D iris_hfi_gen2_ops_init, + .get_vpu_buffer_size =3D iris_vpu33_buf_size, + + .inst_fw_caps_dec =3D inst_fw_cap_sm8550_dec, + .inst_fw_caps_dec_size =3D ARRAY_SIZE(inst_fw_cap_sm8550_dec), + .inst_fw_caps_enc =3D inst_fw_cap_sm8550_enc, + .inst_fw_caps_enc_size =3D ARRAY_SIZE(inst_fw_cap_sm8550_enc), + + .dec_ip_int_buf_tbl =3D sm8550_dec_ip_int_buf_tbl, + .dec_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_dec_ip_int_buf_tbl), + .dec_op_int_buf_tbl =3D sm8550_dec_op_int_buf_tbl, + .dec_op_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_dec_op_int_buf_tbl), + + .enc_ip_int_buf_tbl =3D sm8550_enc_ip_int_buf_tbl, + .enc_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_enc_ip_int_buf_tbl), + .enc_op_int_buf_tbl =3D sm8550_enc_op_int_buf_tbl, + .enc_op_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_enc_op_int_buf_tbl), +}; + +const struct iris_platform_data sm8550_data =3D { + .firmware_data =3D &iris_hfi_gen2_data, .vpu_ops =3D &iris_vpu3_ops, .set_preset_registers =3D iris_vpu_set_preset_registers, .icc_tbl =3D sm8550_icc_table, @@ -842,10 +881,6 @@ const struct iris_platform_data sm8550_data =3D { .inst_iris_fmts =3D platform_fmts_sm8550_dec, .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8550_dec), .inst_caps =3D &platform_inst_cap_sm8550, - .inst_fw_caps_dec =3D inst_fw_cap_sm8550_dec, - .inst_fw_caps_dec_size =3D ARRAY_SIZE(inst_fw_cap_sm8550_dec), - .inst_fw_caps_enc =3D inst_fw_cap_sm8550_enc, - .inst_fw_caps_enc_size =3D ARRAY_SIZE(inst_fw_cap_sm8550_enc), .tz_cp_config_data =3D tz_cp_config_sm8550, .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8550), .core_arch =3D VIDEO_ARCH_LX, @@ -854,16 +889,6 @@ const struct iris_platform_data sm8550_data =3D { .max_session_count =3D 16, .max_core_mbpf =3D NUM_MBS_8K * 2, .max_core_mbps =3D ((7680 * 4320) / 256) * 60, - - .dec_ip_int_buf_tbl =3D sm8550_dec_ip_int_buf_tbl, - .dec_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_dec_ip_int_buf_tbl), - .dec_op_int_buf_tbl =3D sm8550_dec_op_int_buf_tbl, - .dec_op_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_dec_op_int_buf_tbl), - - .enc_ip_int_buf_tbl =3D sm8550_enc_ip_int_buf_tbl, - .enc_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_enc_ip_int_buf_tbl), - .enc_op_int_buf_tbl =3D sm8550_enc_op_int_buf_tbl, - .enc_op_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_enc_op_int_buf_tbl), }; =20 /* @@ -874,8 +899,7 @@ const struct iris_platform_data sm8550_data =3D { * - fwname to "qcom/vpu/vpu33_p4.mbn" */ const struct iris_platform_data sm8650_data =3D { - .init_hfi_ops =3D iris_hfi_gen2_ops_init, - .get_vpu_buffer_size =3D iris_vpu33_buf_size, + .firmware_data =3D &iris_hfi_gen2_vpu33_data, .vpu_ops =3D &iris_vpu33_ops, .set_preset_registers =3D iris_vpu_set_preset_registers, .icc_tbl =3D sm8550_icc_table, @@ -899,10 +923,6 @@ const struct iris_platform_data sm8650_data =3D { .inst_iris_fmts =3D platform_fmts_sm8550_dec, .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8550_dec), .inst_caps =3D &platform_inst_cap_sm8550, - .inst_fw_caps_dec =3D inst_fw_cap_sm8550_dec, - .inst_fw_caps_dec_size =3D ARRAY_SIZE(inst_fw_cap_sm8550_dec), - .inst_fw_caps_enc =3D inst_fw_cap_sm8550_enc, - .inst_fw_caps_enc_size =3D ARRAY_SIZE(inst_fw_cap_sm8550_enc), .tz_cp_config_data =3D tz_cp_config_sm8550, .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8550), .core_arch =3D VIDEO_ARCH_LX, @@ -911,21 +931,10 @@ const struct iris_platform_data sm8650_data =3D { .max_session_count =3D 16, .max_core_mbpf =3D NUM_MBS_8K * 2, .max_core_mbps =3D ((7680 * 4320) / 256) * 60, - - .dec_ip_int_buf_tbl =3D sm8550_dec_ip_int_buf_tbl, - .dec_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_dec_ip_int_buf_tbl), - .dec_op_int_buf_tbl =3D sm8550_dec_op_int_buf_tbl, - .dec_op_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_dec_op_int_buf_tbl), - - .enc_ip_int_buf_tbl =3D sm8550_enc_ip_int_buf_tbl, - .enc_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_enc_ip_int_buf_tbl), - .enc_op_int_buf_tbl =3D sm8550_enc_op_int_buf_tbl, - .enc_op_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_enc_op_int_buf_tbl), }; =20 const struct iris_platform_data sm8750_data =3D { - .init_hfi_ops =3D iris_hfi_gen2_ops_init, - .get_vpu_buffer_size =3D iris_vpu33_buf_size, + .firmware_data =3D &iris_hfi_gen2_vpu33_data, .vpu_ops =3D &iris_vpu35_ops, .set_preset_registers =3D iris_vpu_set_preset_registers, .icc_tbl =3D sm8550_icc_table, @@ -947,10 +956,6 @@ const struct iris_platform_data sm8750_data =3D { .inst_iris_fmts =3D platform_fmts_sm8550_dec, .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8550_dec), .inst_caps =3D &platform_inst_cap_sm8550, - .inst_fw_caps_dec =3D inst_fw_cap_sm8550_dec, - .inst_fw_caps_dec_size =3D ARRAY_SIZE(inst_fw_cap_sm8550_dec), - .inst_fw_caps_enc =3D inst_fw_cap_sm8550_enc, - .inst_fw_caps_enc_size =3D ARRAY_SIZE(inst_fw_cap_sm8550_enc), .tz_cp_config_data =3D tz_cp_config_sm8550, .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8550), .core_arch =3D VIDEO_ARCH_LX, @@ -959,16 +964,6 @@ const struct iris_platform_data sm8750_data =3D { .max_session_count =3D 16, .max_core_mbpf =3D NUM_MBS_8K * 2, .max_core_mbps =3D ((7680 * 4320) / 256) * 60, - - .dec_ip_int_buf_tbl =3D sm8550_dec_ip_int_buf_tbl, - .dec_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_dec_ip_int_buf_tbl), - .dec_op_int_buf_tbl =3D sm8550_dec_op_int_buf_tbl, - .dec_op_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_dec_op_int_buf_tbl), - - .enc_ip_int_buf_tbl =3D sm8550_enc_ip_int_buf_tbl, - .enc_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_enc_ip_int_buf_tbl), - .enc_op_int_buf_tbl =3D sm8550_enc_op_int_buf_tbl, - .enc_op_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_enc_op_int_buf_tbl), }; =20 /* @@ -976,8 +971,7 @@ const struct iris_platform_data sm8750_data =3D { * - inst_caps to platform_inst_cap_qcs8300 */ const struct iris_platform_data qcs8300_data =3D { - .init_hfi_ops =3D iris_hfi_gen2_ops_init, - .get_vpu_buffer_size =3D iris_vpu_buf_size, + .firmware_data =3D &iris_hfi_gen2_data, .vpu_ops =3D &iris_vpu3_ops, .set_preset_registers =3D iris_vpu_set_preset_registers, .icc_tbl =3D sm8550_icc_table, @@ -999,10 +993,6 @@ const struct iris_platform_data qcs8300_data =3D { .inst_iris_fmts =3D platform_fmts_sm8550_dec, .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8550_dec), .inst_caps =3D &platform_inst_cap_qcs8300, - .inst_fw_caps_dec =3D inst_fw_cap_sm8550_dec, - .inst_fw_caps_dec_size =3D ARRAY_SIZE(inst_fw_cap_sm8550_dec), - .inst_fw_caps_enc =3D inst_fw_cap_sm8550_enc, - .inst_fw_caps_enc_size =3D ARRAY_SIZE(inst_fw_cap_sm8550_enc), .tz_cp_config_data =3D tz_cp_config_sm8550, .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8550), .core_arch =3D VIDEO_ARCH_LX, @@ -1011,14 +1001,4 @@ const struct iris_platform_data qcs8300_data =3D { .max_session_count =3D 16, .max_core_mbpf =3D ((4096 * 2176) / 256) * 4, .max_core_mbps =3D (((3840 * 2176) / 256) * 120), - - .dec_ip_int_buf_tbl =3D sm8550_dec_ip_int_buf_tbl, - .dec_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_dec_ip_int_buf_tbl), - .dec_op_int_buf_tbl =3D sm8550_dec_op_int_buf_tbl, - .dec_op_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_dec_op_int_buf_tbl), - - .enc_ip_int_buf_tbl =3D sm8550_enc_ip_int_buf_tbl, - .enc_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_enc_ip_int_buf_tbl), - .enc_op_int_buf_tbl =3D sm8550_enc_op_int_buf_tbl, - .enc_op_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_enc_op_int_buf_tbl), }; diff --git a/drivers/media/platform/qcom/iris/iris_probe.c b/drivers/media/= platform/qcom/iris/iris_probe.c index c2d174a6e160..009aaa6d82e7 100644 --- a/drivers/media/platform/qcom/iris/iris_probe.c +++ b/drivers/media/platform/qcom/iris/iris_probe.c @@ -244,6 +244,7 @@ static int iris_probe(struct platform_device *pdev) return core->irq; =20 core->iris_platform_data =3D of_device_get_match_data(core->dev); + core->iris_firmware_data =3D core->iris_platform_data->firmware_data; =20 core->ubwc_cfg =3D qcom_ubwc_config_get_data(); if (IS_ERR(core->ubwc_cfg)) @@ -257,7 +258,7 @@ static int iris_probe(struct platform_device *pdev) disable_irq_nosync(core->irq); =20 iris_init_ops(core); - core->iris_platform_data->init_hfi_ops(core); + core->iris_firmware_data->init_hfi_ops(core); =20 ret =3D iris_init_resources(core); if (ret) diff --git a/drivers/media/platform/qcom/iris/iris_vidc.c b/drivers/media/p= latform/qcom/iris/iris_vidc.c index d4608ae756fc..fd49177d9594 100644 --- a/drivers/media/platform/qcom/iris/iris_vidc.c +++ b/drivers/media/platform/qcom/iris/iris_vidc.c @@ -243,7 +243,7 @@ static void iris_session_close(struct iris_inst *inst) =20 static void iris_check_num_queued_internal_buffers(struct iris_inst *inst,= u32 plane) { - const struct iris_platform_data *platform_data =3D inst->core->iris_platf= orm_data; + const struct iris_firmware_data *firmware_data =3D inst->core->iris_firmw= are_data; struct iris_buffer *buf, *next; struct iris_buffers *buffers; const u32 *internal_buf_type; @@ -251,11 +251,11 @@ static void iris_check_num_queued_internal_buffers(st= ruct iris_inst *inst, u32 p u32 count =3D 0; =20 if (V4L2_TYPE_IS_OUTPUT(plane)) { - internal_buf_type =3D platform_data->dec_ip_int_buf_tbl; - internal_buffer_count =3D platform_data->dec_ip_int_buf_tbl_size; + internal_buf_type =3D firmware_data->dec_ip_int_buf_tbl; + internal_buffer_count =3D firmware_data->dec_ip_int_buf_tbl_size; } else { - internal_buf_type =3D platform_data->dec_op_int_buf_tbl; - internal_buffer_count =3D platform_data->dec_op_int_buf_tbl_size; + internal_buf_type =3D firmware_data->dec_op_int_buf_tbl; + internal_buffer_count =3D firmware_data->dec_op_int_buf_tbl_size; } =20 for (i =3D 0; i < internal_buffer_count; i++) { --=20 2.47.3 From nobody Sat Apr 18 09:30:54 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 821F847DF9C for ; Sat, 28 Feb 2026 15:26:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772292411; cv=none; b=DXa6ITNPvffCapKSmZcmm6PDnua2L2qrMHeM7RRPt8WlC1ZhkdPW8pzudtLlq8Jy8JwOrJkTO5xOR1pSeudd9vrE7ZYuC17hhORgrj612P6jHkGg9gMDMJmWEefshiNa9UD/DVU9/umhjAJL73qtFUdNkXujFv0HBQbjyhJMS+w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772292411; c=relaxed/simple; bh=EGwtk4/Q786oGO+56F/YtWheBA+VGafzEs1d33vHWUw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=VNrBUJ9oOrljSbrbP1i1bsDKhaZ2UFiLUc39uZojqr/IzrD7P9nhTj9RWKt6eJFUtfy3nxA3OjT/eEVKC7JNMRn3+fMyedWroOPHOzasfZLA9rTj4shw4V+9bEA6k1N9fk0d+7nlyenoOKuFEnc5p+fpUd32ThKN6up/5ktSblk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=phCeuvQS; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=UUFgcuJH; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="phCeuvQS"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="UUFgcuJH" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61SEO6eo1894306 for ; Sat, 28 Feb 2026 15:26:47 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= NMtpybunnBrEGaDlAfxVunE0cG5JQGsdkZLlqKCz2h8=; b=phCeuvQScASnEmPa 3Hr6LfDc/T8kHc60rPmoOjLYrxmZMSywU3SlYIQVY9NtMzk64Fx/lNADDUuTG0MM pMadp3w0wOOecOuhRLKrELEnFa7UgRi0ANDsEZDTxzzZTJki91Ulo7EtcINFCZ51 tb2p8n4Ggj4yweVUT4SVhrqZ+Zukm9aBJeTseSb7oo1fIhGbTW+V1s0F6UwP3x8R PAmHULnrfWp2vsAx31d05uP/4nMJO7fM3rX8PD+cz/DmOKA4a8FLou2CtB5uMQFG 31M72OrTMKpx1aXVh8/ZY2hIFCs4miIOzuRSDEdb7Iy2xEPIB/iG/Ypr9k3v09SM Lc4wRQ== Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cksn41598-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 28 Feb 2026 15:26:47 +0000 (GMT) Received: by mail-qk1-f200.google.com with SMTP id af79cd13be357-8c71156fe09so2398907485a.0 for ; Sat, 28 Feb 2026 07:26:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1772292406; x=1772897206; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=NMtpybunnBrEGaDlAfxVunE0cG5JQGsdkZLlqKCz2h8=; b=UUFgcuJH7rhwohf36FbgZdr63E1rviDQRG72qsYUOAKQWvOougSHzsOLfKLELkbWWC PzspMWYNWzbKl5VdvJMM6xVWBUipxidxySp4+GaQ13pwlqp69603bgPZnYmafaPWGNMk xVAotCd/+HIZ0T31DtvN9zFmhoLMm0s6z/SXGrbYxI/KbdPvxFd/LIKXDCrimJiHrmAk t8Ts/vsa+6WDOf3qX0kNcO0lRoH6WSugq2W4WcFVU0Q91DykbQLDwmpX+1z9FfIeobmS UOBo3YGkEotEqLo4ao9CslbYSbvwU8QS6fxzCCm5iM0+ASXCNIcQC/UT2dOXQX4uf1w2 r7Gw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772292406; x=1772897206; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=NMtpybunnBrEGaDlAfxVunE0cG5JQGsdkZLlqKCz2h8=; b=tM7T13stZG54xTEA0MVFGCfUn8q7f+O1roAI4jypOuyEdberaLd2ZcWKrXQcaDkEDZ nn7JcgBzygm1uyuQivq9JQd9xktxHSAGg9JyS928uD9VRwXju6ipU76EWm28QY1L+kqU AwZvy01JvgitoOnyE4QAgFzuDUFCegqWojXJcdMcgX8n+5YEwD4OKwrOWajccJ01mYX1 1QfDxFOrMrZEKLhPnzEewd4oGPwl0DgaWVK69Gm91sT+4YydrJJOyXJsdv80sFPZ/Cgq /G/x+NiqRTv6eFaP4cOohbFAainn+BAAiDJ3FA4LTxv2bzUXDmCbU5YpVqFHoAvCdX5t ZQeA== X-Forwarded-Encrypted: i=1; AJvYcCVSzZJeId7UrU1K8NQ+Z3YBXxlUIeg0BS6wuX3DUd1EVwoSVwF/KWvWe98SXh++p+cQTMpXTj04Dgld8Yc=@vger.kernel.org X-Gm-Message-State: AOJu0Yxq9+xRSId+oEZtjQFYoU/FepK58EwXl4kbYAF5TQ2xxJvkhcUF VLdNDmbgPOs5wBzbh3h2oRUTV+jtBfSBf/ifQgkuDNP7nt+M+Rsx7+GivqMqKEZbTttAsIUhvph NVJ4UkaCwBvfS2gbVPE+4HA08hZSl2jENy6vs7CzgejjqlfW67cAst+R7LkTPTHdfKp8= X-Gm-Gg: ATEYQzz4w1An0o3QgJX1Wmr1fxVeEhEY7IjmPqPxT0lHFiK/alZx7I8W4L5NaDFoDIm ApHb//x9ZkyeEcqcdo6UNtknfmYwheO+b1+uzjYGhsDSsnMW0gv9Gweg4djyicqkoGv15yLixSW ebkkFcCWAoXNTn9Z2NxZyUc/hASxMvEwvyQK9vxB6Ws0Y0YPlklacZwT13DGt7s7/vHNJ45F/MJ h1ZjZp4FFqvPhSB2IeiO0/qA0Qxe3eysZp5PiiL2GtRyBjlF6ZaNgmATpcMeDPX5FSrwGr0LGca Udqci23Oj7fpCW9CZcIB3/Dh1Go6tbw5Be0gveBp1Lg31LW+JHww/V0Ej5AFVe/GmLvl8SvBaSt 4Rx2GDEZTEXpM2AJOOa0zdzWpym0j22uT19wPME9U6xUzGiXOVqAKukfrtHmb2vedVwH+Orsli6 zMiyO/MM2JP2xB59FMdslu1aQRej0+m28I9sc= X-Received: by 2002:a05:620a:4410:b0:8ca:3d7c:e767 with SMTP id af79cd13be357-8cbc8df1c36mr853724585a.52.1772292406034; Sat, 28 Feb 2026 07:26:46 -0800 (PST) X-Received: by 2002:a05:620a:4410:b0:8ca:3d7c:e767 with SMTP id af79cd13be357-8cbc8df1c36mr853719685a.52.1772292405376; Sat, 28 Feb 2026 07:26:45 -0800 (PST) Received: from umbar.lan (2001-14ba-a073-af00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a073:af00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5a115b57922sm625558e87.63.2026.02.28.07.26.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 28 Feb 2026 07:26:44 -0800 (PST) From: Dmitry Baryshkov Date: Sat, 28 Feb 2026 17:26:38 +0200 Subject: [PATCH v2 11/11] media: qcom: iris: split platform data from firmware data Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260228-iris-platform-data-v2-11-acf036a3c84c@oss.qualcomm.com> References: <20260228-iris-platform-data-v2-0-acf036a3c84c@oss.qualcomm.com> In-Reply-To: <20260228-iris-platform-data-v2-0-acf036a3c84c@oss.qualcomm.com> To: Vikash Garodia , Dikshita Agarwal , Abhinav Kumar , Bryan O'Donoghue , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=32688; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=EGwtk4/Q786oGO+56F/YtWheBA+VGafzEs1d33vHWUw=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpowkoAl8wAEY/RHelraYhd7XuAbvSxG/P25fhe ezW+o2S0HKJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaaMJKAAKCRCLPIo+Aiko 1RemB/0SeJwcbNQiHe3CI00L5N9Z61POJNLpKotrpxu9r4BQN2t1NcoRtxjXSqmpSCScw6bbxcl U0VCt1+cuhkjAHR2v65mrHGnIeq2YWwzjDJjaGvqdBQTE69cpQoCRGUnyhCcUQANRsl1zLZy3y1 +CiMkCSmNe9zOeOqD3qAoReLjebm4/IXlHBOmhamzfRG6dJlL6naHxoxU6Cw3Qb3JG4O18S2QHf uG8A/5mXFovqCySj8Of3dAGs7T5E3XjD1G9fTy6NK0ipLXlC1mQSn2I8i0V1TpbppKXhGXctw7B 0JzD4CxRvUadyqKtit5ciBE3aAACict0s0OzmXpuaahYpRZW X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Authority-Analysis: v=2.4 cv=Tq3rRTXh c=1 sm=1 tr=0 ts=69a30937 cx=c_pps a=hnmNkyzTK/kJ09Xio7VxxA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=_HI30331fBvO9VzV5UUA:9 a=QEXdDO2ut3YA:10 a=PEH46H7Ffwr30OY-TuGO:22 X-Proofpoint-ORIG-GUID: yZyAJn7aSxttYBiq2Y_D5ZKXVHnfB9X7 X-Proofpoint-GUID: yZyAJn7aSxttYBiq2Y_D5ZKXVHnfB9X7 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI4MDE0MiBTYWx0ZWRfX6d/K9Ucqb9z5 zyz+iI9x6wW20Zo6tawjj3sG955afaCNbMUXaeVwp7wc1SFvCBuvNXtTStXLTpzG3po0Tet7pmE 7lXiyUmjRpdBNazBv38ddSXjuBEr4pb/2uoWETScjLT6x/4FbkekapcVOVGNegxOMh0704HueiJ A2sycTsipEMujm7rPT7FsBK2g85TGxGEYFXdkhgFGoEyC0URhFdnhAITkojpaiXnU6FqlwUWG9s 0LJvWH59Udzj5xdXWzQz7UTCaxezTp2ZmC+UAAlD3KwrfDTuy/ONScQbsrJoIeVhEqnXI6gVrH1 OE8rvsarYNz0t0fYlxFnLGLsMXYG+ESNzT8b6+++n8zLNyAIP6WHta0LqSNTcHbuWWpfH2ZU2/z fLcrMbbULJ/xWZMqN4Myhpx49LY2Gi+2ZnHE6kma0FgfZDWmkdAPJM1WwiWMSjt9wUg49YbugDA yGVt+2bOyBW/kYXXxPA== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-28_05,2026-02-27_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 bulkscore=0 suspectscore=0 impostorscore=0 lowpriorityscore=0 adultscore=0 priorityscore=1501 malwarescore=0 phishscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2602280142 Finalize the logical separation of the software and hardware interface descriptions by moving hardware properties to the files specific to the particular VPU version. Signed-off-by: Dmitry Baryshkov --- drivers/media/platform/qcom/iris/Makefile | 6 +- .../iris/{iris_platform_gen1.c =3D> iris_hfi_gen1.c} | 135 ------------- .../iris/{iris_platform_gen2.c =3D> iris_hfi_gen2.c} | 222 ---------------= ------ .../platform/qcom/iris/iris_platform_common.h | 4 + .../platform/qcom/iris/iris_platform_sm8250.h | 29 +++ .../platform/qcom/iris/iris_platform_sm8550.h | 31 +++ .../media/platform/qcom/iris/iris_platform_vpu2.c | 126 ++++++++++++ .../media/platform/qcom/iris/iris_platform_vpu3.c | 214 +++++++++++++++++= +++ 8 files changed, 408 insertions(+), 359 deletions(-) diff --git a/drivers/media/platform/qcom/iris/Makefile b/drivers/media/plat= form/qcom/iris/Makefile index 2fde45f81727..67a12f42b3a6 100644 --- a/drivers/media/platform/qcom/iris/Makefile +++ b/drivers/media/platform/qcom/iris/Makefile @@ -4,14 +4,16 @@ qcom-iris-objs +=3D iris_buffer.o \ iris_ctrls.o \ iris_firmware.o \ iris_hfi_common.o \ + iris_hfi_gen1.o \ iris_hfi_gen1_command.o \ iris_hfi_gen1_response.o \ + iris_hfi_gen2.o \ iris_hfi_gen2_command.o \ iris_hfi_gen2_packet.o \ iris_hfi_gen2_response.o \ iris_hfi_queue.o \ - iris_platform_gen1.o \ - iris_platform_gen2.o \ + iris_platform_vpu2.o \ + iris_platform_vpu3.o \ iris_power.o \ iris_probe.o \ iris_resources.o \ diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen1.c b/driver= s/media/platform/qcom/iris/iris_hfi_gen1.c similarity index 65% rename from drivers/media/platform/qcom/iris/iris_platform_gen1.c rename to drivers/media/platform/qcom/iris/iris_hfi_gen1.c index 961a78729306..b316d800dab6 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen1.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1.c @@ -3,38 +3,17 @@ * Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights res= erved. */ =20 -#include "iris_core.h" #include "iris_ctrls.h" #include "iris_platform_common.h" -#include "iris_resources.h" #include "iris_hfi_gen1.h" #include "iris_hfi_gen1_defines.h" #include "iris_vpu_buffer.h" -#include "iris_vpu_common.h" -#include "iris_instance.h" - -#include "iris_platform_sc7280.h" =20 #define BITRATE_MIN 32000 #define BITRATE_MAX 160000000 #define BITRATE_PEAK_DEFAULT (BITRATE_DEFAULT * 2) #define BITRATE_STEP 100 =20 -static struct iris_fmt platform_fmts_sm8250_dec[] =3D { - [IRIS_FMT_H264] =3D { - .pixfmt =3D V4L2_PIX_FMT_H264, - .type =3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, - }, - [IRIS_FMT_HEVC] =3D { - .pixfmt =3D V4L2_PIX_FMT_HEVC, - .type =3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, - }, - [IRIS_FMT_VP9] =3D { - .pixfmt =3D V4L2_PIX_FMT_VP9, - .type =3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, - }, -}; - static struct platform_inst_fw_cap inst_fw_cap_sm8250_dec[] =3D { { .cap_id =3D PIPE, @@ -248,56 +227,6 @@ static const struct platform_inst_fw_cap inst_fw_cap_s= m8250_enc[] =3D { }, }; =20 -static struct platform_inst_caps platform_inst_cap_sm8250 =3D { - .min_frame_width =3D 128, - .max_frame_width =3D 8192, - .min_frame_height =3D 128, - .max_frame_height =3D 8192, - .max_mbpf =3D 138240, - .mb_cycles_vsp =3D 25, - .mb_cycles_vpp =3D 200, - .max_frame_rate =3D MAXIMUM_FPS, - .max_operating_rate =3D MAXIMUM_FPS, -}; - -static const struct icc_info sm8250_icc_table[] =3D { - { "cpu-cfg", 1000, 1000 }, - { "video-mem", 1000, 15000000 }, -}; - -static const char * const sm8250_clk_reset_table[] =3D { "bus", "core" }; - -static const struct bw_info sm8250_bw_table_dec[] =3D { - { ((4096 * 2160) / 256) * 60, 2403000 }, - { ((4096 * 2160) / 256) * 30, 1224000 }, - { ((1920 * 1080) / 256) * 60, 812000 }, - { ((1920 * 1080) / 256) * 30, 416000 }, -}; - -static const char * const sm8250_pmdomain_table[] =3D { "venus", "vcodec0"= }; - -static const char * const sm8250_opp_pd_table[] =3D { "mx" }; - -static const struct platform_clk_data sm8250_clk_table[] =3D { - {IRIS_AXI_CLK, "iface" }, - {IRIS_CTRL_CLK, "core" }, - {IRIS_HW_CLK, "vcodec0_core" }, -}; - -static const char * const sm8250_opp_clk_table[] =3D { - "vcodec0_core", - NULL, -}; - -static const struct tz_cp_config tz_cp_config_sm8250[] =3D { - { - .cp_start =3D 0, - .cp_size =3D 0x25800000, - .cp_nonpixel_start =3D 0x01000000, - .cp_nonpixel_size =3D 0x24800000, - }, -}; - static const u32 sm8250_dec_ip_int_buf_tbl[] =3D { BUF_BIN, BUF_SCRATCH_1, @@ -330,67 +259,3 @@ const struct iris_firmware_data iris_hfi_gen1_data =3D= { .enc_ip_int_buf_tbl =3D sm8250_enc_ip_int_buf_tbl, .enc_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8250_enc_ip_int_buf_tbl), }; - -const struct iris_platform_data sm8250_data =3D { - .firmware_data =3D &iris_hfi_gen1_data, - .vpu_ops =3D &iris_vpu2_ops, - .set_preset_registers =3D iris_vpu_set_preset_registers, - .icc_tbl =3D sm8250_icc_table, - .icc_tbl_size =3D ARRAY_SIZE(sm8250_icc_table), - .clk_rst_tbl =3D sm8250_clk_reset_table, - .clk_rst_tbl_size =3D ARRAY_SIZE(sm8250_clk_reset_table), - .bw_tbl_dec =3D sm8250_bw_table_dec, - .bw_tbl_dec_size =3D ARRAY_SIZE(sm8250_bw_table_dec), - .pmdomain_tbl =3D sm8250_pmdomain_table, - .pmdomain_tbl_size =3D ARRAY_SIZE(sm8250_pmdomain_table), - .opp_pd_tbl =3D sm8250_opp_pd_table, - .opp_pd_tbl_size =3D ARRAY_SIZE(sm8250_opp_pd_table), - .clk_tbl =3D sm8250_clk_table, - .clk_tbl_size =3D ARRAY_SIZE(sm8250_clk_table), - .opp_clk_tbl =3D sm8250_opp_clk_table, - /* Upper bound of DMA address range */ - .dma_mask =3D 0xe0000000 - 1, - .fwname =3D "qcom/vpu-1.0/venus.mbn", - .inst_iris_fmts =3D platform_fmts_sm8250_dec, - .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8250_dec), - .inst_caps =3D &platform_inst_cap_sm8250, - .tz_cp_config_data =3D tz_cp_config_sm8250, - .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8250), - .hw_response_timeout =3D HW_RESPONSE_TIMEOUT_VALUE, - .num_vpp_pipe =3D 4, - .max_session_count =3D 16, - .max_core_mbpf =3D NUM_MBS_8K, - .max_core_mbps =3D ((7680 * 4320) / 256) * 60, -}; - -const struct iris_platform_data sc7280_data =3D { - .firmware_data =3D &iris_hfi_gen1_data, - .vpu_ops =3D &iris_vpu2_ops, - .set_preset_registers =3D iris_vpu_set_preset_registers, - .icc_tbl =3D sm8250_icc_table, - .icc_tbl_size =3D ARRAY_SIZE(sm8250_icc_table), - .bw_tbl_dec =3D sc7280_bw_table_dec, - .bw_tbl_dec_size =3D ARRAY_SIZE(sc7280_bw_table_dec), - .pmdomain_tbl =3D sm8250_pmdomain_table, - .pmdomain_tbl_size =3D ARRAY_SIZE(sm8250_pmdomain_table), - .opp_pd_tbl =3D sc7280_opp_pd_table, - .opp_pd_tbl_size =3D ARRAY_SIZE(sc7280_opp_pd_table), - .clk_tbl =3D sc7280_clk_table, - .clk_tbl_size =3D ARRAY_SIZE(sc7280_clk_table), - .opp_clk_tbl =3D sc7280_opp_clk_table, - /* Upper bound of DMA address range */ - .dma_mask =3D 0xe0000000 - 1, - .fwname =3D "qcom/vpu/vpu20_p1.mbn", - .inst_iris_fmts =3D platform_fmts_sm8250_dec, - .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8250_dec), - .inst_caps =3D &platform_inst_cap_sm8250, - .tz_cp_config_data =3D tz_cp_config_sm8250, - .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8250), - .hw_response_timeout =3D HW_RESPONSE_TIMEOUT_VALUE, - .num_vpp_pipe =3D 1, - .no_aon =3D true, - .max_session_count =3D 16, - .max_core_mbpf =3D 4096 * 2176 / 256 * 2 + 1920 * 1088 / 256, - /* max spec for SC7280 is 4096x2176@60fps */ - .max_core_mbps =3D 4096 * 2176 / 256 * 60, -}; diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen2.c b/driver= s/media/platform/qcom/iris/iris_hfi_gen2.c similarity index 73% rename from drivers/media/platform/qcom/iris/iris_platform_gen2.c rename to drivers/media/platform/qcom/iris/iris_hfi_gen2.c index 92e9c7812e0f..a0bad72fe5b0 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen2.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2.c @@ -4,40 +4,15 @@ * Copyright (c) 2025 Linaro Ltd */ =20 -#include "iris_core.h" #include "iris_ctrls.h" #include "iris_hfi_gen2.h" #include "iris_hfi_gen2_defines.h" #include "iris_platform_common.h" #include "iris_vpu_buffer.h" -#include "iris_vpu_common.h" - -#include "iris_platform_qcs8300.h" -#include "iris_platform_sm8650.h" -#include "iris_platform_sm8750.h" =20 #define VIDEO_ARCH_LX 1 #define BITRATE_MAX 245000000 =20 -static struct iris_fmt platform_fmts_sm8550_dec[] =3D { - [IRIS_FMT_H264] =3D { - .pixfmt =3D V4L2_PIX_FMT_H264, - .type =3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, - }, - [IRIS_FMT_HEVC] =3D { - .pixfmt =3D V4L2_PIX_FMT_HEVC, - .type =3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, - }, - [IRIS_FMT_VP9] =3D { - .pixfmt =3D V4L2_PIX_FMT_VP9, - .type =3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, - }, - [IRIS_FMT_AV1] =3D { - .pixfmt =3D V4L2_PIX_FMT_AV1, - .type =3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, - }, -}; - static const struct platform_inst_fw_cap inst_fw_cap_sm8550_dec[] =3D { { .cap_id =3D PROFILE_H264, @@ -742,58 +717,6 @@ static const struct platform_inst_fw_cap inst_fw_cap_s= m8550_enc[] =3D { }, }; =20 -static struct platform_inst_caps platform_inst_cap_sm8550 =3D { - .min_frame_width =3D 96, - .max_frame_width =3D 8192, - .min_frame_height =3D 96, - .max_frame_height =3D 8192, - .max_mbpf =3D (8192 * 4352) / 256, - .mb_cycles_vpp =3D 200, - .mb_cycles_fw =3D 489583, - .mb_cycles_fw_vpp =3D 66234, - .num_comv =3D 0, - .max_frame_rate =3D MAXIMUM_FPS, - .max_operating_rate =3D MAXIMUM_FPS, -}; - -static const struct icc_info sm8550_icc_table[] =3D { - { "cpu-cfg", 1000, 1000 }, - { "video-mem", 1000, 15000000 }, -}; - -static const char * const sm8550_clk_reset_table[] =3D { "bus" }; - -static const struct bw_info sm8550_bw_table_dec[] =3D { - { ((4096 * 2160) / 256) * 60, 1608000 }, - { ((4096 * 2160) / 256) * 30, 826000 }, - { ((1920 * 1080) / 256) * 60, 567000 }, - { ((1920 * 1080) / 256) * 30, 294000 }, -}; - -static const char * const sm8550_pmdomain_table[] =3D { "venus", "vcodec0"= }; - -static const char * const sm8550_opp_pd_table[] =3D { "mxc", "mmcx" }; - -static const struct platform_clk_data sm8550_clk_table[] =3D { - {IRIS_AXI_CLK, "iface" }, - {IRIS_CTRL_CLK, "core" }, - {IRIS_HW_CLK, "vcodec0_core" }, -}; - -static const char * const sm8550_opp_clk_table[] =3D { - "vcodec0_core", - NULL, -}; - -static const struct tz_cp_config tz_cp_config_sm8550[] =3D { - { - .cp_start =3D 0, - .cp_size =3D 0x25800000, - .cp_nonpixel_start =3D 0x01000000, - .cp_nonpixel_size =3D 0x24800000, - }, -}; - static const u32 sm8550_dec_ip_int_buf_tbl[] =3D { BUF_BIN, BUF_COMV, @@ -857,148 +780,3 @@ const struct iris_firmware_data iris_hfi_gen2_vpu33_d= ata =3D { .enc_op_int_buf_tbl =3D sm8550_enc_op_int_buf_tbl, .enc_op_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_enc_op_int_buf_tbl), }; - -const struct iris_platform_data sm8550_data =3D { - .firmware_data =3D &iris_hfi_gen2_data, - .vpu_ops =3D &iris_vpu3_ops, - .set_preset_registers =3D iris_vpu_set_preset_registers, - .icc_tbl =3D sm8550_icc_table, - .icc_tbl_size =3D ARRAY_SIZE(sm8550_icc_table), - .clk_rst_tbl =3D sm8550_clk_reset_table, - .clk_rst_tbl_size =3D ARRAY_SIZE(sm8550_clk_reset_table), - .bw_tbl_dec =3D sm8550_bw_table_dec, - .bw_tbl_dec_size =3D ARRAY_SIZE(sm8550_bw_table_dec), - .pmdomain_tbl =3D sm8550_pmdomain_table, - .pmdomain_tbl_size =3D ARRAY_SIZE(sm8550_pmdomain_table), - .opp_pd_tbl =3D sm8550_opp_pd_table, - .opp_pd_tbl_size =3D ARRAY_SIZE(sm8550_opp_pd_table), - .clk_tbl =3D sm8550_clk_table, - .clk_tbl_size =3D ARRAY_SIZE(sm8550_clk_table), - .opp_clk_tbl =3D sm8550_opp_clk_table, - /* Upper bound of DMA address range */ - .dma_mask =3D 0xe0000000 - 1, - .fwname =3D "qcom/vpu/vpu30_p4.mbn", - .inst_iris_fmts =3D platform_fmts_sm8550_dec, - .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8550_dec), - .inst_caps =3D &platform_inst_cap_sm8550, - .tz_cp_config_data =3D tz_cp_config_sm8550, - .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8550), - .core_arch =3D VIDEO_ARCH_LX, - .hw_response_timeout =3D HW_RESPONSE_TIMEOUT_VALUE, - .num_vpp_pipe =3D 4, - .max_session_count =3D 16, - .max_core_mbpf =3D NUM_MBS_8K * 2, - .max_core_mbps =3D ((7680 * 4320) / 256) * 60, -}; - -/* - * Shares most of SM8550 data except: - * - vpu_ops to iris_vpu33_ops - * - clk_rst_tbl to sm8650_clk_reset_table - * - controller_rst_tbl to sm8650_controller_reset_table - * - fwname to "qcom/vpu/vpu33_p4.mbn" - */ -const struct iris_platform_data sm8650_data =3D { - .firmware_data =3D &iris_hfi_gen2_vpu33_data, - .vpu_ops =3D &iris_vpu33_ops, - .set_preset_registers =3D iris_vpu_set_preset_registers, - .icc_tbl =3D sm8550_icc_table, - .icc_tbl_size =3D ARRAY_SIZE(sm8550_icc_table), - .clk_rst_tbl =3D sm8650_clk_reset_table, - .clk_rst_tbl_size =3D ARRAY_SIZE(sm8650_clk_reset_table), - .controller_rst_tbl =3D sm8650_controller_reset_table, - .controller_rst_tbl_size =3D ARRAY_SIZE(sm8650_controller_reset_table), - .bw_tbl_dec =3D sm8550_bw_table_dec, - .bw_tbl_dec_size =3D ARRAY_SIZE(sm8550_bw_table_dec), - .pmdomain_tbl =3D sm8550_pmdomain_table, - .pmdomain_tbl_size =3D ARRAY_SIZE(sm8550_pmdomain_table), - .opp_pd_tbl =3D sm8550_opp_pd_table, - .opp_pd_tbl_size =3D ARRAY_SIZE(sm8550_opp_pd_table), - .clk_tbl =3D sm8550_clk_table, - .clk_tbl_size =3D ARRAY_SIZE(sm8550_clk_table), - .opp_clk_tbl =3D sm8550_opp_clk_table, - /* Upper bound of DMA address range */ - .dma_mask =3D 0xe0000000 - 1, - .fwname =3D "qcom/vpu/vpu33_p4.mbn", - .inst_iris_fmts =3D platform_fmts_sm8550_dec, - .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8550_dec), - .inst_caps =3D &platform_inst_cap_sm8550, - .tz_cp_config_data =3D tz_cp_config_sm8550, - .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8550), - .core_arch =3D VIDEO_ARCH_LX, - .hw_response_timeout =3D HW_RESPONSE_TIMEOUT_VALUE, - .num_vpp_pipe =3D 4, - .max_session_count =3D 16, - .max_core_mbpf =3D NUM_MBS_8K * 2, - .max_core_mbps =3D ((7680 * 4320) / 256) * 60, -}; - -const struct iris_platform_data sm8750_data =3D { - .firmware_data =3D &iris_hfi_gen2_vpu33_data, - .vpu_ops =3D &iris_vpu35_ops, - .set_preset_registers =3D iris_vpu_set_preset_registers, - .icc_tbl =3D sm8550_icc_table, - .icc_tbl_size =3D ARRAY_SIZE(sm8550_icc_table), - .clk_rst_tbl =3D sm8750_clk_reset_table, - .clk_rst_tbl_size =3D ARRAY_SIZE(sm8750_clk_reset_table), - .bw_tbl_dec =3D sm8550_bw_table_dec, - .bw_tbl_dec_size =3D ARRAY_SIZE(sm8550_bw_table_dec), - .pmdomain_tbl =3D sm8550_pmdomain_table, - .pmdomain_tbl_size =3D ARRAY_SIZE(sm8550_pmdomain_table), - .opp_pd_tbl =3D sm8550_opp_pd_table, - .opp_pd_tbl_size =3D ARRAY_SIZE(sm8550_opp_pd_table), - .clk_tbl =3D sm8750_clk_table, - .clk_tbl_size =3D ARRAY_SIZE(sm8750_clk_table), - .opp_clk_tbl =3D sm8550_opp_clk_table, - /* Upper bound of DMA address range */ - .dma_mask =3D 0xe0000000 - 1, - .fwname =3D "qcom/vpu/vpu35_p4.mbn", - .inst_iris_fmts =3D platform_fmts_sm8550_dec, - .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8550_dec), - .inst_caps =3D &platform_inst_cap_sm8550, - .tz_cp_config_data =3D tz_cp_config_sm8550, - .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8550), - .core_arch =3D VIDEO_ARCH_LX, - .hw_response_timeout =3D HW_RESPONSE_TIMEOUT_VALUE, - .num_vpp_pipe =3D 4, - .max_session_count =3D 16, - .max_core_mbpf =3D NUM_MBS_8K * 2, - .max_core_mbps =3D ((7680 * 4320) / 256) * 60, -}; - -/* - * Shares most of SM8550 data except: - * - inst_caps to platform_inst_cap_qcs8300 - */ -const struct iris_platform_data qcs8300_data =3D { - .firmware_data =3D &iris_hfi_gen2_data, - .vpu_ops =3D &iris_vpu3_ops, - .set_preset_registers =3D iris_vpu_set_preset_registers, - .icc_tbl =3D sm8550_icc_table, - .icc_tbl_size =3D ARRAY_SIZE(sm8550_icc_table), - .clk_rst_tbl =3D sm8550_clk_reset_table, - .clk_rst_tbl_size =3D ARRAY_SIZE(sm8550_clk_reset_table), - .bw_tbl_dec =3D sm8550_bw_table_dec, - .bw_tbl_dec_size =3D ARRAY_SIZE(sm8550_bw_table_dec), - .pmdomain_tbl =3D sm8550_pmdomain_table, - .pmdomain_tbl_size =3D ARRAY_SIZE(sm8550_pmdomain_table), - .opp_pd_tbl =3D sm8550_opp_pd_table, - .opp_pd_tbl_size =3D ARRAY_SIZE(sm8550_opp_pd_table), - .clk_tbl =3D sm8550_clk_table, - .clk_tbl_size =3D ARRAY_SIZE(sm8550_clk_table), - .opp_clk_tbl =3D sm8550_opp_clk_table, - /* Upper bound of DMA address range */ - .dma_mask =3D 0xe0000000 - 1, - .fwname =3D "qcom/vpu/vpu30_p4_s6.mbn", - .inst_iris_fmts =3D platform_fmts_sm8550_dec, - .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8550_dec), - .inst_caps =3D &platform_inst_cap_qcs8300, - .tz_cp_config_data =3D tz_cp_config_sm8550, - .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8550), - .core_arch =3D VIDEO_ARCH_LX, - .hw_response_timeout =3D HW_RESPONSE_TIMEOUT_VALUE, - .num_vpp_pipe =3D 2, - .max_session_count =3D 16, - .max_core_mbpf =3D ((4096 * 2176) / 256) * 4, - .max_core_mbps =3D (((3840 * 2176) / 256) * 120), -}; diff --git a/drivers/media/platform/qcom/iris/iris_platform_common.h b/driv= ers/media/platform/qcom/iris/iris_platform_common.h index be3449861993..0a918abe43bc 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_common.h +++ b/drivers/media/platform/qcom/iris/iris_platform_common.h @@ -40,6 +40,10 @@ enum pipe_type { PIPE_4 =3D 4, }; =20 +extern const struct iris_firmware_data iris_hfi_gen1_data; +extern const struct iris_firmware_data iris_hfi_gen2_data; +extern const struct iris_firmware_data iris_hfi_gen2_vpu33_data; + extern const struct iris_platform_data qcs8300_data; extern const struct iris_platform_data sc7280_data; extern const struct iris_platform_data sm8250_data; diff --git a/drivers/media/platform/qcom/iris/iris_platform_sm8250.h b/driv= ers/media/platform/qcom/iris/iris_platform_sm8250.h new file mode 100644 index 000000000000..9c4cab5c9d0e --- /dev/null +++ b/drivers/media/platform/qcom/iris/iris_platform_sm8250.h @@ -0,0 +1,29 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + */ + +#ifndef __IRIS_PLATFORM_SM8250_H__ +#define __IRIS_PLATFORM_SM8250_H__ + +static const struct bw_info sm8250_bw_table_dec[] =3D { + { ((4096 * 2160) / 256) * 60, 2403000 }, + { ((4096 * 2160) / 256) * 30, 1224000 }, + { ((1920 * 1080) / 256) * 60, 812000 }, + { ((1920 * 1080) / 256) * 30, 416000 }, +}; + +static const char * const sm8250_opp_pd_table[] =3D { "mx" }; + +static const struct platform_clk_data sm8250_clk_table[] =3D { + {IRIS_AXI_CLK, "iface" }, + {IRIS_CTRL_CLK, "core" }, + {IRIS_HW_CLK, "vcodec0_core" }, +}; + +static const char * const sm8250_opp_clk_table[] =3D { + "vcodec0_core", + NULL, +}; + +#endif diff --git a/drivers/media/platform/qcom/iris/iris_platform_sm8550.h b/driv= ers/media/platform/qcom/iris/iris_platform_sm8550.h new file mode 100644 index 000000000000..a9d9709c2e35 --- /dev/null +++ b/drivers/media/platform/qcom/iris/iris_platform_sm8550.h @@ -0,0 +1,31 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * Copyright (c) Qualcomm Innovation Center, Inc. All rights reserved. + */ + +#ifndef __IRIS_PLATFORM_SM8550_H__ +#define __IRIS_PLATFORM_SM8550_H__ + +static const char * const sm8550_clk_reset_table[] =3D { "bus" }; + +static const struct platform_clk_data sm8550_clk_table[] =3D { + {IRIS_AXI_CLK, "iface" }, + {IRIS_CTRL_CLK, "core" }, + {IRIS_HW_CLK, "vcodec0_core" }, +}; + +static struct platform_inst_caps platform_inst_cap_sm8550 =3D { + .min_frame_width =3D 96, + .max_frame_width =3D 8192, + .min_frame_height =3D 96, + .max_frame_height =3D 8192, + .max_mbpf =3D (8192 * 4352) / 256, + .mb_cycles_vpp =3D 200, + .mb_cycles_fw =3D 489583, + .mb_cycles_fw_vpp =3D 66234, + .num_comv =3D 0, + .max_frame_rate =3D MAXIMUM_FPS, + .max_operating_rate =3D MAXIMUM_FPS, +}; + +#endif diff --git a/drivers/media/platform/qcom/iris/iris_platform_vpu2.c b/driver= s/media/platform/qcom/iris/iris_platform_vpu2.c new file mode 100644 index 000000000000..b029229cede5 --- /dev/null +++ b/drivers/media/platform/qcom/iris/iris_platform_vpu2.c @@ -0,0 +1,126 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright (c) Qualcomm Innovation Center, Inc. All rights reserved. + */ + +#include "iris_core.h" +#include "iris_ctrls.h" +#include "iris_platform_common.h" +#include "iris_resources.h" +#include "iris_hfi_gen1.h" +#include "iris_hfi_gen1_defines.h" +#include "iris_vpu_buffer.h" +#include "iris_vpu_common.h" +#include "iris_instance.h" + +#include "iris_platform_sc7280.h" +#include "iris_platform_sm8250.h" + +static struct iris_fmt platform_fmts_sm8250_dec[] =3D { + [IRIS_FMT_H264] =3D { + .pixfmt =3D V4L2_PIX_FMT_H264, + .type =3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, + }, + [IRIS_FMT_HEVC] =3D { + .pixfmt =3D V4L2_PIX_FMT_HEVC, + .type =3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, + }, + [IRIS_FMT_VP9] =3D { + .pixfmt =3D V4L2_PIX_FMT_VP9, + .type =3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, + }, +}; + +static struct platform_inst_caps platform_inst_cap_sm8250 =3D { + .min_frame_width =3D 128, + .max_frame_width =3D 8192, + .min_frame_height =3D 128, + .max_frame_height =3D 8192, + .max_mbpf =3D 138240, + .mb_cycles_vsp =3D 25, + .mb_cycles_vpp =3D 200, + .max_frame_rate =3D MAXIMUM_FPS, + .max_operating_rate =3D MAXIMUM_FPS, +}; + +static const struct icc_info sm8250_icc_table[] =3D { + { "cpu-cfg", 1000, 1000 }, + { "video-mem", 1000, 15000000 }, +}; + +static const char * const sm8250_clk_reset_table[] =3D { "bus", "core" }; + +static const char * const sm8250_pmdomain_table[] =3D { "venus", "vcodec0"= }; + +static const struct tz_cp_config tz_cp_config_sm8250[] =3D { + { + .cp_start =3D 0, + .cp_size =3D 0x25800000, + .cp_nonpixel_start =3D 0x01000000, + .cp_nonpixel_size =3D 0x24800000, + }, +}; + +const struct iris_platform_data sc7280_data =3D { + .firmware_data =3D &iris_hfi_gen1_data, + .vpu_ops =3D &iris_vpu2_ops, + .set_preset_registers =3D iris_vpu_set_preset_registers, + .icc_tbl =3D sm8250_icc_table, + .icc_tbl_size =3D ARRAY_SIZE(sm8250_icc_table), + .bw_tbl_dec =3D sc7280_bw_table_dec, + .bw_tbl_dec_size =3D ARRAY_SIZE(sc7280_bw_table_dec), + .pmdomain_tbl =3D sm8250_pmdomain_table, + .pmdomain_tbl_size =3D ARRAY_SIZE(sm8250_pmdomain_table), + .opp_pd_tbl =3D sc7280_opp_pd_table, + .opp_pd_tbl_size =3D ARRAY_SIZE(sc7280_opp_pd_table), + .clk_tbl =3D sc7280_clk_table, + .clk_tbl_size =3D ARRAY_SIZE(sc7280_clk_table), + .opp_clk_tbl =3D sc7280_opp_clk_table, + /* Upper bound of DMA address range */ + .dma_mask =3D 0xe0000000 - 1, + .fwname =3D "qcom/vpu/vpu20_p1.mbn", + .inst_iris_fmts =3D platform_fmts_sm8250_dec, + .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8250_dec), + .inst_caps =3D &platform_inst_cap_sm8250, + .tz_cp_config_data =3D tz_cp_config_sm8250, + .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8250), + .hw_response_timeout =3D HW_RESPONSE_TIMEOUT_VALUE, + .num_vpp_pipe =3D 1, + .no_aon =3D true, + .max_session_count =3D 16, + .max_core_mbpf =3D 4096 * 2176 / 256 * 2 + 1920 * 1088 / 256, + /* max spec for SC7280 is 4096x2176@60fps */ + .max_core_mbps =3D 4096 * 2176 / 256 * 60, +}; + +const struct iris_platform_data sm8250_data =3D { + .firmware_data =3D &iris_hfi_gen1_data, + .vpu_ops =3D &iris_vpu2_ops, + .set_preset_registers =3D iris_vpu_set_preset_registers, + .icc_tbl =3D sm8250_icc_table, + .icc_tbl_size =3D ARRAY_SIZE(sm8250_icc_table), + .clk_rst_tbl =3D sm8250_clk_reset_table, + .clk_rst_tbl_size =3D ARRAY_SIZE(sm8250_clk_reset_table), + .bw_tbl_dec =3D sm8250_bw_table_dec, + .bw_tbl_dec_size =3D ARRAY_SIZE(sm8250_bw_table_dec), + .pmdomain_tbl =3D sm8250_pmdomain_table, + .pmdomain_tbl_size =3D ARRAY_SIZE(sm8250_pmdomain_table), + .opp_pd_tbl =3D sm8250_opp_pd_table, + .opp_pd_tbl_size =3D ARRAY_SIZE(sm8250_opp_pd_table), + .clk_tbl =3D sm8250_clk_table, + .clk_tbl_size =3D ARRAY_SIZE(sm8250_clk_table), + .opp_clk_tbl =3D sm8250_opp_clk_table, + /* Upper bound of DMA address range */ + .dma_mask =3D 0xe0000000 - 1, + .fwname =3D "qcom/vpu-1.0/venus.mbn", + .inst_iris_fmts =3D platform_fmts_sm8250_dec, + .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8250_dec), + .inst_caps =3D &platform_inst_cap_sm8250, + .tz_cp_config_data =3D tz_cp_config_sm8250, + .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8250), + .hw_response_timeout =3D HW_RESPONSE_TIMEOUT_VALUE, + .num_vpp_pipe =3D 4, + .max_session_count =3D 16, + .max_core_mbpf =3D NUM_MBS_8K, + .max_core_mbps =3D ((7680 * 4320) / 256) * 60, +}; diff --git a/drivers/media/platform/qcom/iris/iris_platform_vpu3.c b/driver= s/media/platform/qcom/iris/iris_platform_vpu3.c new file mode 100644 index 000000000000..fb7fd2604169 --- /dev/null +++ b/drivers/media/platform/qcom/iris/iris_platform_vpu3.c @@ -0,0 +1,214 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright (c) Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2025 Linaro Ltd + */ + +#include "iris_core.h" +#include "iris_ctrls.h" +#include "iris_hfi_gen2.h" +#include "iris_hfi_gen2_defines.h" +#include "iris_platform_common.h" +#include "iris_vpu_buffer.h" +#include "iris_vpu_common.h" + +#include "iris_platform_qcs8300.h" +#include "iris_platform_sm8550.h" +#include "iris_platform_sm8650.h" +#include "iris_platform_sm8750.h" + +#define VIDEO_ARCH_LX 1 + +static struct iris_fmt platform_fmts_sm8550_dec[] =3D { + [IRIS_FMT_H264] =3D { + .pixfmt =3D V4L2_PIX_FMT_H264, + .type =3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, + }, + [IRIS_FMT_HEVC] =3D { + .pixfmt =3D V4L2_PIX_FMT_HEVC, + .type =3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, + }, + [IRIS_FMT_VP9] =3D { + .pixfmt =3D V4L2_PIX_FMT_VP9, + .type =3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, + }, + [IRIS_FMT_AV1] =3D { + .pixfmt =3D V4L2_PIX_FMT_AV1, + .type =3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, + }, +}; + +static const struct icc_info sm8550_icc_table[] =3D { + { "cpu-cfg", 1000, 1000 }, + { "video-mem", 1000, 15000000 }, +}; + +static const struct bw_info sm8550_bw_table_dec[] =3D { + { ((4096 * 2160) / 256) * 60, 1608000 }, + { ((4096 * 2160) / 256) * 30, 826000 }, + { ((1920 * 1080) / 256) * 60, 567000 }, + { ((1920 * 1080) / 256) * 30, 294000 }, +}; + +static const char * const sm8550_pmdomain_table[] =3D { "venus", "vcodec0"= }; + +static const char * const sm8550_opp_pd_table[] =3D { "mxc", "mmcx" }; + +static const char * const sm8550_opp_clk_table[] =3D { + "vcodec0_core", + NULL, +}; + +static const struct tz_cp_config tz_cp_config_sm8550[] =3D { + { + .cp_start =3D 0, + .cp_size =3D 0x25800000, + .cp_nonpixel_start =3D 0x01000000, + .cp_nonpixel_size =3D 0x24800000, + }, +}; + +/* + * Shares most of SM8550 data except: + * - inst_caps to platform_inst_cap_qcs8300 + */ +const struct iris_platform_data qcs8300_data =3D { + .firmware_data =3D &iris_hfi_gen2_data, + .vpu_ops =3D &iris_vpu3_ops, + .set_preset_registers =3D iris_vpu_set_preset_registers, + .icc_tbl =3D sm8550_icc_table, + .icc_tbl_size =3D ARRAY_SIZE(sm8550_icc_table), + .clk_rst_tbl =3D sm8550_clk_reset_table, + .clk_rst_tbl_size =3D ARRAY_SIZE(sm8550_clk_reset_table), + .bw_tbl_dec =3D sm8550_bw_table_dec, + .bw_tbl_dec_size =3D ARRAY_SIZE(sm8550_bw_table_dec), + .pmdomain_tbl =3D sm8550_pmdomain_table, + .pmdomain_tbl_size =3D ARRAY_SIZE(sm8550_pmdomain_table), + .opp_pd_tbl =3D sm8550_opp_pd_table, + .opp_pd_tbl_size =3D ARRAY_SIZE(sm8550_opp_pd_table), + .clk_tbl =3D sm8550_clk_table, + .clk_tbl_size =3D ARRAY_SIZE(sm8550_clk_table), + .opp_clk_tbl =3D sm8550_opp_clk_table, + /* Upper bound of DMA address range */ + .dma_mask =3D 0xe0000000 - 1, + .fwname =3D "qcom/vpu/vpu30_p4_s6.mbn", + .inst_iris_fmts =3D platform_fmts_sm8550_dec, + .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8550_dec), + .inst_caps =3D &platform_inst_cap_qcs8300, + .tz_cp_config_data =3D tz_cp_config_sm8550, + .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8550), + .core_arch =3D VIDEO_ARCH_LX, + .hw_response_timeout =3D HW_RESPONSE_TIMEOUT_VALUE, + .num_vpp_pipe =3D 2, + .max_session_count =3D 16, + .max_core_mbpf =3D ((4096 * 2176) / 256) * 4, + .max_core_mbps =3D (((3840 * 2176) / 256) * 120), +}; + +const struct iris_platform_data sm8550_data =3D { + .firmware_data =3D &iris_hfi_gen2_data, + .vpu_ops =3D &iris_vpu3_ops, + .set_preset_registers =3D iris_vpu_set_preset_registers, + .icc_tbl =3D sm8550_icc_table, + .icc_tbl_size =3D ARRAY_SIZE(sm8550_icc_table), + .clk_rst_tbl =3D sm8550_clk_reset_table, + .clk_rst_tbl_size =3D ARRAY_SIZE(sm8550_clk_reset_table), + .bw_tbl_dec =3D sm8550_bw_table_dec, + .bw_tbl_dec_size =3D ARRAY_SIZE(sm8550_bw_table_dec), + .pmdomain_tbl =3D sm8550_pmdomain_table, + .pmdomain_tbl_size =3D ARRAY_SIZE(sm8550_pmdomain_table), + .opp_pd_tbl =3D sm8550_opp_pd_table, + .opp_pd_tbl_size =3D ARRAY_SIZE(sm8550_opp_pd_table), + .clk_tbl =3D sm8550_clk_table, + .clk_tbl_size =3D ARRAY_SIZE(sm8550_clk_table), + .opp_clk_tbl =3D sm8550_opp_clk_table, + /* Upper bound of DMA address range */ + .dma_mask =3D 0xe0000000 - 1, + .fwname =3D "qcom/vpu/vpu30_p4.mbn", + .inst_iris_fmts =3D platform_fmts_sm8550_dec, + .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8550_dec), + .inst_caps =3D &platform_inst_cap_sm8550, + .tz_cp_config_data =3D tz_cp_config_sm8550, + .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8550), + .core_arch =3D VIDEO_ARCH_LX, + .hw_response_timeout =3D HW_RESPONSE_TIMEOUT_VALUE, + .num_vpp_pipe =3D 4, + .max_session_count =3D 16, + .max_core_mbpf =3D NUM_MBS_8K * 2, + .max_core_mbps =3D ((7680 * 4320) / 256) * 60, +}; + +/* + * Shares most of SM8550 data except: + * - vpu_ops to iris_vpu33_ops + * - clk_rst_tbl to sm8650_clk_reset_table + * - controller_rst_tbl to sm8650_controller_reset_table + * - fwname to "qcom/vpu/vpu33_p4.mbn" + */ +const struct iris_platform_data sm8650_data =3D { + .firmware_data =3D &iris_hfi_gen2_vpu33_data, + .vpu_ops =3D &iris_vpu33_ops, + .set_preset_registers =3D iris_vpu_set_preset_registers, + .icc_tbl =3D sm8550_icc_table, + .icc_tbl_size =3D ARRAY_SIZE(sm8550_icc_table), + .clk_rst_tbl =3D sm8650_clk_reset_table, + .clk_rst_tbl_size =3D ARRAY_SIZE(sm8650_clk_reset_table), + .controller_rst_tbl =3D sm8650_controller_reset_table, + .controller_rst_tbl_size =3D ARRAY_SIZE(sm8650_controller_reset_table), + .bw_tbl_dec =3D sm8550_bw_table_dec, + .bw_tbl_dec_size =3D ARRAY_SIZE(sm8550_bw_table_dec), + .pmdomain_tbl =3D sm8550_pmdomain_table, + .pmdomain_tbl_size =3D ARRAY_SIZE(sm8550_pmdomain_table), + .opp_pd_tbl =3D sm8550_opp_pd_table, + .opp_pd_tbl_size =3D ARRAY_SIZE(sm8550_opp_pd_table), + .clk_tbl =3D sm8550_clk_table, + .clk_tbl_size =3D ARRAY_SIZE(sm8550_clk_table), + .opp_clk_tbl =3D sm8550_opp_clk_table, + /* Upper bound of DMA address range */ + .dma_mask =3D 0xe0000000 - 1, + .fwname =3D "qcom/vpu/vpu33_p4.mbn", + .inst_iris_fmts =3D platform_fmts_sm8550_dec, + .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8550_dec), + .inst_caps =3D &platform_inst_cap_sm8550, + .tz_cp_config_data =3D tz_cp_config_sm8550, + .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8550), + .core_arch =3D VIDEO_ARCH_LX, + .hw_response_timeout =3D HW_RESPONSE_TIMEOUT_VALUE, + .num_vpp_pipe =3D 4, + .max_session_count =3D 16, + .max_core_mbpf =3D NUM_MBS_8K * 2, + .max_core_mbps =3D ((7680 * 4320) / 256) * 60, +}; + +const struct iris_platform_data sm8750_data =3D { + .firmware_data =3D &iris_hfi_gen2_vpu33_data, + .vpu_ops =3D &iris_vpu35_ops, + .set_preset_registers =3D iris_vpu_set_preset_registers, + .icc_tbl =3D sm8550_icc_table, + .icc_tbl_size =3D ARRAY_SIZE(sm8550_icc_table), + .clk_rst_tbl =3D sm8750_clk_reset_table, + .clk_rst_tbl_size =3D ARRAY_SIZE(sm8750_clk_reset_table), + .bw_tbl_dec =3D sm8550_bw_table_dec, + .bw_tbl_dec_size =3D ARRAY_SIZE(sm8550_bw_table_dec), + .pmdomain_tbl =3D sm8550_pmdomain_table, + .pmdomain_tbl_size =3D ARRAY_SIZE(sm8550_pmdomain_table), + .opp_pd_tbl =3D sm8550_opp_pd_table, + .opp_pd_tbl_size =3D ARRAY_SIZE(sm8550_opp_pd_table), + .clk_tbl =3D sm8750_clk_table, + .clk_tbl_size =3D ARRAY_SIZE(sm8750_clk_table), + .opp_clk_tbl =3D sm8550_opp_clk_table, + /* Upper bound of DMA address range */ + .dma_mask =3D 0xe0000000 - 1, + .fwname =3D "qcom/vpu/vpu35_p4.mbn", + .inst_iris_fmts =3D platform_fmts_sm8550_dec, + .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8550_dec), + .inst_caps =3D &platform_inst_cap_sm8550, + .tz_cp_config_data =3D tz_cp_config_sm8550, + .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8550), + .core_arch =3D VIDEO_ARCH_LX, + .hw_response_timeout =3D HW_RESPONSE_TIMEOUT_VALUE, + .num_vpp_pipe =3D 4, + .max_session_count =3D 16, + .max_core_mbpf =3D NUM_MBS_8K * 2, + .max_core_mbps =3D ((7680 * 4320) / 256) * 60, +}; --=20 2.47.3