From nobody Thu Apr 2 14:06:37 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 728DC394470 for ; Fri, 27 Mar 2026 23:28:50 +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=1774654131; cv=none; b=uENJKu06L8a6+gYXvrJ7uCFANn2RWlCJjETg0dYG9I2nvZkPWLKvdgT+G5ah+asogJvzbJ43bGidi33zld+X79tFFHk6DatuWPeGd8lGu5a0rLBICt5oJ7b3JCNsT4slcq7sG2QU5YVqp/MA6olusRplGTdb48LUPtSrFc4oowE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774654131; c=relaxed/simple; bh=R9G5DrWK7ZdreBHQ/NvwOHQkAkxN8nydMv+XrJUDCnI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Ucs6yYZyifZCN2Yzt29rFYl1YnR3SSorLJR55K6/dErrX/fIzZfj6Rx15asGnGVrXf70V/JH2VNm78SSWtcL9wC6/+jpYHLXDKeRzOpVCXQEorRX7ofSE3Tc4D1Mh2w8+5VBB/yyMwzLz/0nnrlQVPxVuH4IiGAoHc1RelxgWQc= 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=K+ErroJm; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=MFT/iLpg; 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="K+ErroJm"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="MFT/iLpg" Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62RN3vEF3772356 for ; Fri, 27 Mar 2026 23:28:49 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= Yu4Ju/BNMWhFePsUEYj76VBRHr5svFe8Za8zkvDfGq4=; b=K+ErroJmZN/PtmZm 5t5n34u4jSMg6IputzjXuqP7m3uRcthXbq0JsABVNMdYqP60Hxji0gn9aqFtw8jX mN0j/Jt8nmWJPiH8N0jTUAtaOgX0w+4FMLqOhmZvyyHFy2RY2HSt3lnZasrGlDu7 Fir7FxhlMVb614+8SlFCgk6ec3lzhq/uT+6DDMrC2fen2RDLhfEcolpmXB+W7KGG Sdea292aLyJ9WacfMJNimeN0cbXdMhB+BuYxtnP2I4euf/eyEXz0xExq8M6PXT4g p3KASCBEWqOH2jmEq9uV+F2NKOYpECVEOTAOoogXXiglrDdVQ5qvpmcXW/QKidCo RB4b7w== Received: from mail-qv1-f71.google.com (mail-qv1-f71.google.com [209.85.219.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d60fkrfcs-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 27 Mar 2026 23:28:49 +0000 (GMT) Received: by mail-qv1-f71.google.com with SMTP id 6a1803df08f44-89ce59dbdabso22758396d6.2 for ; Fri, 27 Mar 2026 16:28:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1774654129; x=1775258929; 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=Yu4Ju/BNMWhFePsUEYj76VBRHr5svFe8Za8zkvDfGq4=; b=MFT/iLpgePjvGU388tV/CeMR1QoFkSeVCiX85X84X/h5rTTx4DrYuhW6I+5vLB++pQ t6s5bP/UnpAf9PnKBy80QYn199m6fwH0y4MacoEBCSv8X0MG6FSEzkDvn2urGNbbMBpZ +OmDiFarcTqqItxnROVcJZph97wZzJXJMmueoz5FGAsScjQ9INnrLYvoG3ah/amLV2l9 Uh2ScDuATEe6W289Iarz4LS/yhdDvi72KUfZnU5Brbt6Xrva7V8MRRcGH0c+gNDEEhBx HKmWTvxXyDoYOJfrfzOwca505Pt9R/9RFxg6wLjruViuLw93n9JW5D3mk1dONC0xVpyP USDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774654129; x=1775258929; 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=Yu4Ju/BNMWhFePsUEYj76VBRHr5svFe8Za8zkvDfGq4=; b=ATa8dcUWsF6ilSS0iTaCkWwR5mRJ0V+3NWOvui0GNIg4Q6HLsGfpyPdhdB5kTy18QJ BXI8AC7JwVZTMdVRQDZny1XVF/kPv1Qe3H8QyON3ckLwp4rgxLosGefreA5imJoFDLBQ yoSGJx+iWs/s8iWvCInHfrzYc8ge3w3JGyvDLF5skf704h+SyqO/KFXCN4+L59Z/kNex feYyRfZb0M/aS0vMVCnSfqMrcMzzhZ/CCb1oOl7IEqQAZPcKzyvvkqY7DU4rbCydjZWc bZJskrnGeGgM1AEEZoUZFNJyKn82IyJl79YVOdI1K3KXQhmCypFv/cCOjQjqAbrmwfSe Ee/Q== X-Forwarded-Encrypted: i=1; AJvYcCWwLJ76TyRpaa66SarzV8ggz+1xi26mOf5+rxjmoZD6TKKNwhictP9+L6hIoc90heRFf+lDiud/9j1N46U=@vger.kernel.org X-Gm-Message-State: AOJu0YwYJLe9mUUhY/81ggRtQhdD8vNUYo/h7yo5XBWv8KgcAJ1YnAuq lrta3CtzoEPVeycnEiFxUeGh/DoPBOcX0jolbkibQYFdeNMcAE7WPmiMfOKJzaOzGOYgGK0kiv8 Ayfnm5vTSyXWslSbjq/wY3hj/gcQzDUb8/8C9OE6YBlnAuVIwAHPVOjwdtA3F9nS+iT4= X-Gm-Gg: ATEYQzxqJk0nS/JvBfFf2LJD1fVPu5IAoI2nDzT64yqBln+qPzOe0WuCT72yrlJiQlc p5l1aZNn+PfkPP06MxBSSrdwX/GAghDkgVDujQCGE8MaJxGoPLJUuiuo9BMJoxtyV7zlupHBOOv jk7PWYB6mGXkLO0RKmimnbgypc0DiZX48NAiIS2rm4tDl0HtVWnsdWLEgcwDPG1UQ3a2pUWDczr 7v3dXavp8WM6CDawcvKfBllWLV3iPgjMxwrkyVB4bOZVV4awhZSIe3wCZzyH1ZMbM+MfMerzMUu Rodq6N+5Ra/afa4EWohFQhEcOS2duOI7Hi8kSxIYLr3XQrnpjbAoWI2gmM7dCuyWDfgRgrHZq+0 16kXh60is5KJxodSrLl8oHa6cnAOhmZvOPRN/VqIK0km/56s1ZjAKD+GMlNfmWdiSD7kHV7OaUt fziUa27tq99s+W3gT0qZIXj++9qF/J93+JAuI= X-Received: by 2002:a05:6214:6018:b0:89c:d4c5:452b with SMTP id 6a1803df08f44-89ce8ecd0aamr61287636d6.38.1774654128541; Fri, 27 Mar 2026 16:28:48 -0700 (PDT) X-Received: by 2002:a05:6214:6018:b0:89c:d4c5:452b with SMTP id 6a1803df08f44-89ce8ecd0aamr61287406d6.38.1774654128060; Fri, 27 Mar 2026 16:28:48 -0700 (PDT) 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 38308e7fff4ca-38c83729522sm1177991fa.14.2026.03.27.16.28.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Mar 2026 16:28:45 -0700 (PDT) From: Dmitry Baryshkov Date: Sat, 28 Mar 2026 01:28:36 +0200 Subject: [PATCH v10 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: <20260328-iris-platform-data-v10-1-46b92bfe7b52@oss.qualcomm.com> References: <20260328-iris-platform-data-v10-0-46b92bfe7b52@oss.qualcomm.com> In-Reply-To: <20260328-iris-platform-data-v10-0-46b92bfe7b52@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, Konrad Dybcio X-Mailer: b4 0.15.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=6224; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=R9G5DrWK7ZdreBHQ/NvwOHQkAkxN8nydMv+XrJUDCnI=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpxxKnGzFzLWO/Mi2GmBFgvtEPZnhh5129inEBi 1vgr3eRpSiJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaccSpwAKCRCLPIo+Aiko 1WsiCAComoaAZ/Vpey1OTEqQAJ9lXi4tS8f+bzCYfowGHN/DSrhUlJCGb06jFf9gtf/FkY4Qs4o QeRfJZyjNU2YVWbiT+26AS9gePPKCqNRz9Cs1B/f/krHspR2ZRfHIzl8LHb7LLLq42/JCdmT1Sl 6/LnRv+T02jspPRxJS43Y3THaahoq972okgViMqK/XnGTy67wCEjtPdaW7uKNG18XU5tzX6QJ5e D7dcXOlZbPJF/vuhLzX6Nn0Y4byPzkbx/wjBSlg9VDBKdMYWlPONfo/EM9zCG0d+AHWboVFErXE JAKzsJxZm4R/4l0N0tARC7E6bc4Az7Am94lWHtZQgFFGFfvS X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Authority-Analysis: v=2.4 cv=U8CfzOru c=1 sm=1 tr=0 ts=69c712b1 cx=c_pps a=UgVkIMxJMSkC9lv97toC5g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=EUspDBNiAAAA:8 a=hYMYe-gnznq9qBW6PAEA:9 a=QEXdDO2ut3YA:10 a=1HOtulTD9v-eNWfpl4qZ:22 X-Proofpoint-GUID: Ee_ipM_OC09GfBEf54t8y79gkpUlGzxH X-Proofpoint-ORIG-GUID: Ee_ipM_OC09GfBEf54t8y79gkpUlGzxH X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzI3MDE2NCBTYWx0ZWRfX1dZJAZxoNVO3 RnmMyTDs4cQD+M2CCOXV7lnPQznjeVdGzOQ3KMRVzcPNd5uqUYqwd7Id1BU4V0DCeO5kZtrd/Az Ra+Eiuc7drn0Q68Z4V2NdZ1YfrDkVHNtlEf5h4hI6teGLj3JHGV1F757nKoYQ6SBr4HByTuAteg DDN/a3143zApl0aNEMOQ+LdSGjwl7X6zODgiLZno/IB3wZkdwcPMpVcA17GLk9tmFEb1b2h0dz5 h7VtJzfrn64cfP4hEpCRAYo8AKUEvPzgn72o2/YjzuqHNn+DoeCLL1Qeuk/C1CaJ+0oSUMo+ToL 3FABQ5gUzULbZMS9oZ9vV6dOijRgD1xh7dzVz8nGCaYkjHtVuePgPzKMTtf6aeEf5ydEjktbTVk 3SCJ9Ll+Nm071fTZ9s3YAdCe2qd46y1Nk0kwXS8e49sNyoK5+zA6+ewjELoZpGhVT8Y0MPJ0xLy 6FmDJzUoS+mNZXMqAXg== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-27_01,2026-03-26_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 lowpriorityscore=0 adultscore=0 clxscore=1015 priorityscore=1501 phishscore=0 impostorscore=0 bulkscore=0 malwarescore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603270164 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. Reviewed-by: Dikshita Agarwal Reviewed-by: Konrad Dybcio Reviewed-by: Vikash Garodia Signed-off-by: Dmitry Baryshkov --- 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 aa71f7f53ee3..07ed572e895b 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 Thu Apr 2 14:06:37 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 6FF223815E6 for ; Fri, 27 Mar 2026 23:28:52 +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=1774654133; cv=none; b=QwuNsNzhSJbnpFtQgTdlQwcG+hHqr9ovKxN71O3d3l7UZWDdYImjZXduQeEaSOg2dFF514sxWEftHC6F7TPy8W5sA3vI+/JiOOAIjxDddU3v/NFEd17hi4CuUbhDKf7QcAE6QFrcIwsd7hoUlxGFwspiABpRn9fMG9igXdX7Q4E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774654133; c=relaxed/simple; bh=UnGlccQOyrgjPF037WTnCf6++MPZK2sCDOcuFmLrNnQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ciXGDVRTWJDfgUOYrGYHayr/YNlY9b3hPfEYgQ1ClVo/8mf0Ln1Q2MWVH0cQ+rQCEdeQTxkSltoTKFGcY0qt88SXGh3V9DztKkAqkHS8KnqMRYY4JQTv89o+bAfujfQ73Lxzu95wysRKdUdEqQkATCw7lqcP7on8b0mb4gMROmU= 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=d0m7hhBB; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=cEZ2skM/; 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="d0m7hhBB"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="cEZ2skM/" 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 62RN448S2410669 for ; Fri, 27 Mar 2026 23:28:51 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= kKS7pL3yVGjvqx3jYCkzYbYDA12Tn9fOt01/J1qqmf4=; b=d0m7hhBBiHNeKU+z sZVVpLavVQS94t4NlSudUg7nnstVJkjuzv0VLL+5mv3zviqZMLyHhvOWJWtrPaFy /nBzVMZZ7ewJit5zMSWdqZzevsToXQyXcYfrZKLaXnS224vfW0ueaqiqR1QR9pl7 8FAzyPKQyPKvkJ2Tp9tN4WYkLXChcXQJvCOEg8k+2IlMB1X+lyK4Pg/rKfvTJgK/ jQ8WxAjck+dnu5GNmiKCeYXJ8E0xbkx0/1itjxuYYmuH45Jzx6FKFNjKELs65QL4 nkfO6e2zoxemkW9TmWyJCQhAhpaeKL4EPbUaIiFRMo8A/1Whj6w9tG9xP2yu1Plo 1qHuiw== Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d5vvv98qk-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 27 Mar 2026 23:28:50 +0000 (GMT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-50b4987c698so9064711cf.0 for ; Fri, 27 Mar 2026 16:28:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1774654130; x=1775258930; 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=kKS7pL3yVGjvqx3jYCkzYbYDA12Tn9fOt01/J1qqmf4=; b=cEZ2skM/+TToSe1TUXJNfL1sRfVxs5ISCV3TQXAyX5GL0I5SVk7D2g1+noH1pjMf+R dbxqlLFRIF0o1CtNtGydLdrGeLFwJS2XVc9478EV9iaxJVMG6ggqFQXdGgwxpkFiyR4O wr06mgf2ERjuU6fIlMWgVUfBEHflNHC73QLztdsaQa1TOndH0fzIycjLPFfcsc9T9m3p nF8olrKMonE+I+t63GC0nzIfNFpT/wRkqGln7+/WtxQuTwt7q6Aj9r0N7lz1Jzf3FdTA NOih8kFpLvdKfOUu3BhiSkQiT2k4DwwxJ6onPCwA4SfHfsdh5/nZKS7wrUbYMmKDyNEC z90A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774654130; x=1775258930; 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=kKS7pL3yVGjvqx3jYCkzYbYDA12Tn9fOt01/J1qqmf4=; b=NtBEeExBmNDkh+SKdsqyEdXD0C4/jIKFEXE/+ifYQwmy1z8xPDVte1VWg/klLb7THG C2f9PqN8r+7Vhr5XCqtr1T6Q+0guZ3LwqorsWMkoEIfGo2ykHUmPRW6snNrWgl6wvfL6 gesfkLCPlykS/lV1Xf+jj6uOde06m3QzrNV1J42oJ4Egw/B7Xu/xq5mn2E5yRq8lOrLS RV69psEQGDrEuXTSUpCo0aVSQOM7wrylxwfOxqMdzDpWJdAYc1Qt0L9hhuTPQAD7prHz GaE8uQDDAr42BAvM9Unng1n8YERxHwa0+SifUQHfh1eGGWyJCFrnl55nyfb8HJVoNPWt Dg8w== X-Forwarded-Encrypted: i=1; AJvYcCXoTBmGn/IpqfHcly1mDL+VqBuKcea/Q/o/3oqV2/lZLM98iRRoJ6EcuCJ0HHz0mACU9AdYYJPWAiloCZs=@vger.kernel.org X-Gm-Message-State: AOJu0YysY886arfwKYiZYXvjvjkkmOiKgzbwnzv3cTwzgKbcqyhqjpy1 Jl89FE3sZCVFhey57vquiE7J14LhNt2J257OVqgX/m6v/dBfwtPiObwZldRBx2q51UjeC4+UpoY EmcCiZKzOZzpM0UnVdZctCe1FjCe469QJS6fDujaVcUuBqGUkUbDbig6cvvHeMj6w3nMqPtmlXI I= X-Gm-Gg: ATEYQzxIpRkOvyrAqdPr8q1wvOdHYFOkM8CL1rPOTcK986E2Kd9dFEw/hO/3kyHP4Ug S4FvjvVPQxyEQg5rDEaF4l4Vggw0ajqXI1yYWJR1n1D3K0aCKfCYW+L2s6ywUSRntaIdtPwCyXk daosbjt1A/FYE/alNw5q3XU3kIHIFbjrH58vsbPW3CbiK3cvupBxuJzrnivt4eM/54PtokdeixC EuBsV9N5skmS+TvVh2CqdN7KlKaYYKnQYjmc+7R88QYOIQJ765cOoyVtchvz8alrlEvlm7nj36S YMF4KSX6te+ElhKCsrli4IHdtKaciglTuYuZ3New76yumiDuEd93LDz8QqJCrCLRQBFgmnqiiPe kboxBB1kFU134Lnw9Svs9scsLxI3Dx0u4x9/qeegGK4EpmeF6dJDhnKLaS9spGqh5ATbfpfqCZ1 ZPGYnj9SOk48NZf45MHjMFUt4GWY0zJn2Kepc= X-Received: by 2002:ac8:58d4:0:b0:509:1ad4:6309 with SMTP id d75a77b69052e-50b9951400emr91811041cf.32.1774654130076; Fri, 27 Mar 2026 16:28:50 -0700 (PDT) X-Received: by 2002:ac8:58d4:0:b0:509:1ad4:6309 with SMTP id d75a77b69052e-50b9951400emr91810781cf.32.1774654129572; Fri, 27 Mar 2026 16:28:49 -0700 (PDT) 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 38308e7fff4ca-38c83729522sm1177991fa.14.2026.03.27.16.28.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Mar 2026 16:28:48 -0700 (PDT) From: Dmitry Baryshkov Date: Sat, 28 Mar 2026 01:28:37 +0200 Subject: [PATCH v10 02/11] media: qcom: iris: use 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: <20260328-iris-platform-data-v10-2-46b92bfe7b52@oss.qualcomm.com> References: <20260328-iris-platform-data-v10-0-46b92bfe7b52@oss.qualcomm.com> In-Reply-To: <20260328-iris-platform-data-v10-0-46b92bfe7b52@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.15.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=6562; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=UnGlccQOyrgjPF037WTnCf6++MPZK2sCDOcuFmLrNnQ=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpxxKnknao5cwxwtx/tODLX97PFOQlLoKrQC3mq n0o1GuWJweJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaccSpwAKCRCLPIo+Aiko 1TRMB/sEC9oTn6QZbQQe6V/cu1z+0oxm6QhCGecX/uEyUttkSQNovTeNauSZeZZhYmfsu/6crku 7nBXOZ8y9ETKirkYO5RO+BSZJIsTaHXuR6U2zmFZ5A3OBHeIl394ZKhHfcN7baOkPXs6kur/cU1 6L024DixfVTK7aF+9BlHbd1boWt54Y1cqK/0PvfFfhu/q17PHk3dcgty4ALl67BWVeKRClFrHlW 1jq3O4yq/o8ZJCucDQiikaEHp9ZWC6oXuGubs1kZUfQsD0HGbhqip17Uep2eTx7MRtycZBtjCer BzAskuXtkNmcKs+KdjqBdbIgQyoTR9A7GF1394426UhQWiJ1 X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-ORIG-GUID: 1NcPGYkCFD_AdxhWHYvYSOP8ZX22wA_W X-Proofpoint-GUID: 1NcPGYkCFD_AdxhWHYvYSOP8ZX22wA_W X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzI3MDE2NCBTYWx0ZWRfX7Nm6qwqCjgNz v114Z6c4ZLBCeljEKfmG5ErGYVK0L2EIlo1ddv/Z6fU+UuIT++LoSnXVVx77WRA+qLqITUzqG0e EvHLuC/JggHar1S3jwyo6dctHHymZjbv0owsJD2hhtq/VZOw1uXXvCrhbLbkFBbGXLiYNedXeab BdIy6xDSuHWSjExerkdSw9M6OC7ainIcVpH2UyzXaczrG1jUByl2oelJ95eE7jacsC4mkpvd2kF i2qUD+/tZmd0KQ7m92nPp7jc81K6kbpua8bRwE93f4IGut8ssHL7q7erdtAHAbvQGSYTcSfi6iz xY/YXkbX3EQIByuE33z1Lh4eNqOspxvtW6uDyjuPN3l1raO67FXqRZC6ni7nCPqWbwqbSosnjew 5yIRhNZkMcUSGWpxWYlW+DAtgNa8WO6aIq7pdYG9gi3LsVx8YNMV++Q6gUXaL/3y51s1usWrbQQ 9EcDGm/qo+TJDegzNCg== X-Authority-Analysis: v=2.4 cv=PL0COPqC c=1 sm=1 tr=0 ts=69c712b3 cx=c_pps a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=EUspDBNiAAAA:8 a=LmgrmXmU8fDMlo1BKrQA:9 a=QEXdDO2ut3YA:10 a=dawVfQjAaf238kedN5IG:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-27_01,2026-03-26_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 impostorscore=0 lowpriorityscore=0 bulkscore=0 malwarescore=0 phishscore=0 spamscore=0 clxscore=1015 adultscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603270164 The set_preset_registers is (currently) common to all supported devices. Extract it to a iris_vpu_common.c and call it directly from iris_vpu_power_on(). Later, if any of the devices requires special handling, it can be sorted out separately. Reviewed-by: Dikshita Agarwal Reviewed-by: Vikash Garodia Signed-off-by: Dmitry Baryshkov --- drivers/media/platform/qcom/iris/iris_platform_common.h | 1 - drivers/media/platform/qcom/iris/iris_platform_gen1.c | 7 ------- drivers/media/platform/qcom/iris/iris_platform_gen2.c | 9 --------- drivers/media/platform/qcom/iris/iris_vpu_common.c | 7 ++++++- drivers/media/platform/qcom/iris/iris_vpu_common.h | 2 ++ 5 files changed, 8 insertions(+), 18 deletions(-) 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..d7106902698c 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_common.h +++ b/drivers/media/platform/qcom/iris/iris_platform_common.h @@ -207,7 +207,6 @@ struct iris_platform_data { 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); const struct icc_info *icc_tbl; unsigned int icc_tbl_size; const struct bw_info *bw_tbl_dec; diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen1.c b/driver= s/media/platform/qcom/iris/iris_platform_gen1.c index 07ed572e895b..ed07d1b00e43 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,6 @@ 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, .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 +391,6 @@ 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, .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..c84d4399f84d 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,6 @@ 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, .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 +1012,6 @@ 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, .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 +1107,6 @@ 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, .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 +1204,6 @@ 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, .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..faabf53126f3 100644 --- a/drivers/media/platform/qcom/iris/iris_vpu_common.c +++ b/drivers/media/platform/qcom/iris/iris_vpu_common.c @@ -468,7 +468,7 @@ int iris_vpu_power_on(struct iris_core *core) =20 iris_opp_set_rate(core->dev, freq); =20 - core->iris_platform_data->set_preset_registers(core); + iris_vpu_set_preset_registers(core); =20 iris_vpu_interrupt_init(core); core->intr_status =3D 0; @@ -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 Thu Apr 2 14:06:37 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 7F458376BF2 for ; Fri, 27 Mar 2026 23:28:54 +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=1774654138; cv=none; b=odhQrE1RQibjyDRnfcJVDQjwR7C2Ti+dqJGZBQMKReVOYEs1+dKV3oMx8OvzV6vPSuUgdvTQRoBrmusFBKlaL9dbri0U1uYxEbcZP+J8zLsHSWO3qEjMNNOoynK+cYoZ1rMXKbEqp1zVRcZuGSqT63hGHyZLyOLKtINNdULM4Xw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774654138; c=relaxed/simple; bh=xFJdeT3yOlq/oRgFq0BzLBs7EsRlJjjKB4aOCgE5Kn8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=TQHZ/hscUHJzdOLbnIb1bZC2h4YYZhyqQs1Mejd6H9LqyMulKyNFgQQoIN8r4PdXKL1jzdefea3DEAiT4l3WRZPZ5iuYnfHcKbq/o0oGpQYInAIPh77mt4k+qf2Y3b6XvinDMUJJ0IgVltJn9yASwtUeVAw2ilEPrcqA5fiWsNM= 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=n4bSSAJN; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=dq5rYIRT; 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="n4bSSAJN"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="dq5rYIRT" 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 62RN42oQ2096158 for ; Fri, 27 Mar 2026 23:28:53 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= kiX3oiS3V2FER92MkVmW6VCS+AmFEidamWAh+fCmPtk=; b=n4bSSAJNDFooxQxG +S0V3GGikP+dmUmxUYSI5db2ehNnRbVwfDpnPUV1dbsH9MmzxD7tecujL9YVjsn+ qrFrh9jRkrX8g5EqExB+0vLVDJYvkQMDqF2jbIqsOBrZkHVuw/qUnbDVKF65UtRE d2Rzrzz1QOLr3NzAETJPKrnThqlqz1Ag56c5SWAG8SnBFr36ahUYkldLPE93H+/9 irv9NFuYs601q69i4XcEJdDg6LogArRtaGyClP3Uv0vTSMmhu4ZhpGzDu8zEr0Hx xEevQwgF6Rwg1sQtnvKxh6o+2UsAr1iZ9gk4EYIuBFa6matTnI4PIeDBOBhAotBj RSCbXA== Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d631q02du-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 27 Mar 2026 23:28:53 +0000 (GMT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-5093b92f327so60724941cf.1 for ; Fri, 27 Mar 2026 16:28:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1774654133; x=1775258933; 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=kiX3oiS3V2FER92MkVmW6VCS+AmFEidamWAh+fCmPtk=; b=dq5rYIRTttVAFdD0mDlWNYynEbY9ub61gSbR8c6lNaBqj1ge+fIhzijmxkmgTuTe6N yp2sNTotDPDp03Od3G0kEGgqRajLX7d7iBeDdteOQU/KenICiH7deX0HdPIefuqlqT63 3p/ODgKGMpwBGa+NH6wHS2+8YPEJ+apJI3HeFJV4QECeHf6Pf7TYdyJrRR10YULfxETI X/zDtEaNteqZEHw3VKJv0KaWt+k3Nv/nSwBRvv/AtmALduO/Dhv0gMFbxinaYHzF/eUK Qp5BUXqzc+Byw39t2OWqLwaThfJhufNL4Um79JOrvQiW+GoWo4Frak63xHlzx/DwmCj4 EeRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774654133; x=1775258933; 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=kiX3oiS3V2FER92MkVmW6VCS+AmFEidamWAh+fCmPtk=; b=SyeZJORtpq44xQw9QToTZTsvhCCWI9Az46ZqDie09b9eP/dxa2JOoZn5VVgBqqxPv5 AKZyaylgEIxu4EzZwu5nb0oDjw1pb3T51Z4jpToRaEAuS4cDwazpsfXXhVh2Nu4IT4Y6 HD0Bt3sDZZ+XiNIDQMvUOmKyMC7KFUvJOGzSB79bw7/L2B7M7T53roiPFhOJ3a/ptNwn ns+VYE/N7sNg1GLySrAR/OpQRi+HB14///zmSPQvJGRiYMiTmXuMHvyvnu7rve9Mvlpm ZRvXw7j1NXbNm+YADg8zw3V8dd2UjP9UQPe+0g/YtLxbEXtkhd7euGYdZDUhKSkNimGW 9l+Q== X-Forwarded-Encrypted: i=1; AJvYcCUUGEsIKF3GeVWKcVXCpgEBnwIyiw3vVJhcWG5MRIMr0BPlup7pUYO8AdN6+z0ZCVLTeaqBPXA6teiFhiQ=@vger.kernel.org X-Gm-Message-State: AOJu0YwVF/XiBY5wij/vxme9wJOk8BCS1ARCr39yGjMtyCNciYNBFtp+ z4rOp+noQ5O6a9HYObvHYv209BS4JgD0UuYWHMyWbVtO2NU4VFjsumXmeGptnK0Z+aIZoEZK6QV d7xJ6DqC74AEUPIfrpZTHTi4/n3ZNYvCGFIgw1XF0ApZTLf1RQLkP9/+v2ak9oF7LLUw= X-Gm-Gg: ATEYQzybR0RRiTWy0tDf8rPhncyJZ4r1KZhZO/PNxd86VirvSlExDd19CjoH2i+ZBgo CkhqqtRHBSDRpbkv0d0nQTrAWE3JXr7L2HBVtdunot/rlXSNHj4vsk/QrsgnV9ft73EcougdQDO 1R/vvyq01k3G8soo8Zs4458b+YVSYJ7GuXpS6g7OZYqaPUHWMsUSTIdd+Itdm+he4MmSLZfH+rn TQxqkacUCPtP/hORQhHRnjNncvkpYq7nvEF24y1L3IaHMhYVwek+RyAncefsqbvQcEgcKz3dMOs kznzFm5G3d5QXtO/Gs53xH7XIhayvJclilCjpE8rJ+jd1envASa0Sdgl86fnkNy1g6Tn92FkSLr 5CeKVFvH5uBfhBQbPEgI98AVPMK+/4qZfEvh7BjGWipNoTe4RY35BHHBusLHand7bTvTWcXWs00 wBKhtw3nhud6i65IB4l3dZLOa7XerJahrl1EY= X-Received: by 2002:ac8:5f06:0:b0:50b:3c7e:a33c with SMTP id d75a77b69052e-50ba391a1a7mr64638771cf.38.1774654132756; Fri, 27 Mar 2026 16:28:52 -0700 (PDT) X-Received: by 2002:ac8:5f06:0:b0:50b:3c7e:a33c with SMTP id d75a77b69052e-50ba391a1a7mr64638531cf.38.1774654132326; Fri, 27 Mar 2026 16:28:52 -0700 (PDT) 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 38308e7fff4ca-38c83729522sm1177991fa.14.2026.03.27.16.28.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Mar 2026 16:28:51 -0700 (PDT) From: Dmitry Baryshkov Date: Sat, 28 Mar 2026 01:28:38 +0200 Subject: [PATCH v10 03/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: <20260328-iris-platform-data-v10-3-46b92bfe7b52@oss.qualcomm.com> References: <20260328-iris-platform-data-v10-0-46b92bfe7b52@oss.qualcomm.com> In-Reply-To: <20260328-iris-platform-data-v10-0-46b92bfe7b52@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, Konrad Dybcio X-Mailer: b4 0.15.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2232; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=xFJdeT3yOlq/oRgFq0BzLBs7EsRlJjjKB4aOCgE5Kn8=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpxxKoJkbS0xXQbX5XbyM2uOG87ScKh1z/jaayf IBdI+KDyQCJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaccSqAAKCRCLPIo+Aiko 1bLwCACKdwmcSusnFmzpaRvfa8yzxiGYxL60Mwp7+0QTU3vmOFw9agKjOvgeNwmvSxQ/kUICvZx UzncWn+j/ATknLssZoCzBlFz86LR58cxtER18ZspERLvc6L+4p5+RJNqgZvY52iaY67zvwD6IDf Lrgpzd4x3epR7ejkXdYMUUs9UcOAGWSVrhWkBSNNFEh0WxOXrHlQod0qghkkiEYvF0iEcAFMcQ0 bY89ZQxedYt7DLp4G5T/iC1uKV5q6bpETEGzaE7l1wVaJcqCo+S8bu41SmPyw4ZhlhVU4alvTsz F+MomIMySZ0riZoD/A7RB5TS2WBdwbLIxG8RpA/nUdeLPlJe X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Authority-Analysis: v=2.4 cv=OcyVzxTY c=1 sm=1 tr=0 ts=69c712b5 cx=c_pps a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=EUspDBNiAAAA:8 a=yEfzmaBkz_6XQGMMuZMA:9 a=QEXdDO2ut3YA:10 a=dawVfQjAaf238kedN5IG:22 X-Proofpoint-ORIG-GUID: G5OLm9_X1qc0wBrZVJ4UkbV_f8KAv15q X-Proofpoint-GUID: G5OLm9_X1qc0wBrZVJ4UkbV_f8KAv15q X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzI3MDE2NCBTYWx0ZWRfXwE9Z7fYJXr6h nYc2PbmQ+pL5yw0NURvceM6ULQkHtZ8ycJWHcADpo/IFmUgoaOjoHPQltVn8D3gKqV9j9pCokaA d+MQ3S0EYCSc4Xb42NeNd8nFtw2oKoh5N/RM2FK8PklXI1Ul4WohhNkEzG7Aw5qtGd4opBYASLm a9B4bPbwjWuqLqJZSx9ALji2m0IQ9ScSlIIyF8hNgBtEXO0V7gebzet0wzPdc+L3KDxNAyjZpAh DL2JzWfCXjxxI8WTf9TzmwBpA+TCCvHcGkkZhB/AVYSiB4foScrVzix0JBqzw67gc4l/YTrlGMl QasvtXa4yw/zaRPxz4jR49dS2IbjaX2JB7nkvgHwIFAC6TzNsdwkRpzutpSCXvBe2EkQYBw7ZDN DhEP78tckudUjHzkmpR3GEQVgbDZAwfxnR9OPlNwet+0betpZ+ZhQIqFxlYk/5fwUC3gHtPxnfM yF/84F4BsOST4CwkCtQ== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-27_01,2026-03-26_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 lowpriorityscore=0 priorityscore=1501 malwarescore=0 clxscore=1015 impostorscore=0 spamscore=0 adultscore=0 bulkscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603270164 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). Reviewed-by: Dikshita Agarwal Reviewed-by: Konrad Dybcio Reviewed-by: Vikash Garodia Signed-off-by: Dmitry Baryshkov --- 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 30bfd90d423b..e4f25b7f5d04 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c @@ -1205,7 +1205,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; @@ -1220,12 +1220,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, @@ -1257,7 +1257,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 Thu Apr 2 14:06:37 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 CCD85388E67 for ; Fri, 27 Mar 2026 23:28:58 +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=1774654140; cv=none; b=mwkyHkLZD5DEZmyJPB55OL8yfrgP9T8lHQLW101chkgZAg59hN/dd8TujPdiuSlLBOHu87UmQGckzD7nuOXmzD0A1+st+b6h9VfaYaJFboYN/c3ft6L1Ffo59Kvhge75UXXR/sT2Ro/DhjCxBnN6AmyV74pc5sqsQ9mhaMQqCqY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774654140; c=relaxed/simple; bh=zxKHrPvxoidgL7dgWtDDRmoHHDeuNIL77Ya8mIt8yiQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=XqxyHYlRwuoPHRlZB0vdS2tJnt11OwXvn2Go6uHU+HGHCVGCdh130szlamhO7Y0x2InZbxQ0Ar/qWMaa+C352yYGE+vyFxmU+uPUayctpnbnsiIONREq2pIur6lOOuIM6UojB2ccETZpZvhVP/5zuSKfMqmCgVKoouxmy8QNlNk= 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=ZQFb/qVe; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=a7tGEmrK; 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="ZQFb/qVe"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="a7tGEmrK" 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 62RN3xQv2410506 for ; Fri, 27 Mar 2026 23:28:57 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= GP1/j9iPrI0sglCjoXgnt69EFsYgdF0neK0NN3kO93o=; b=ZQFb/qVeRJpaFI9p Ejvz/3+iBL8XXpDk+tjL7cXN81J7HV7IcL/mJLfJPV2E8U3fFtjWaR+4wYHIlaEZ LmBGl7VdkNZtlleGU292iHj+t2fWnNLYbKEpOAJbYY//pWs5DQfra5/rh3Dq3yNb Kn8RjiMyJ2skD66SexJmL9c4x6b1FP7+aDN3lQRN8vjtUHSl1kQ3L/QYtDYSCsjs 12/BAO3RG5RU23fREKn7kskvIQA07b2poiTLtiRGn3UQ2psOkXgaLgFQaTneiqtT 3dcPVrj4KGFIWGmHyitDt0ngiitYD1kqs+5rr9WYbzF7x+9bTbV5/0g2A+VMadEx ttmHWg== Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d5vvv98qr-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 27 Mar 2026 23:28:57 +0000 (GMT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-50b31cff27fso27385341cf.3 for ; Fri, 27 Mar 2026 16:28:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1774654137; x=1775258937; 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=GP1/j9iPrI0sglCjoXgnt69EFsYgdF0neK0NN3kO93o=; b=a7tGEmrKsxqlWVQuRcSZmxhGYgD1oHAWzZ7L8EI7vB0w5oBmctbxyhvE4A3AUewMAY g+6asuHkwJimPi9t5FlOQy0N/czyisjcO+UfWYCsLZi+iMSqNkrhy/bwGlNalG3Id57u KU9MAmFIR7n9dDt882rPsEYGe9uZ00Lecm+lP9pjsl8lz4UiZkGkCGug7gjoRcCRKUvC 1/kFfwT1RLUoQ8nF3me5qkNLwpDX4mlzGAVNvV2rUG4jlubB400+C3t7AI5UzBB6Iz8t vjCZOn8QKiGX/NFCURVKfS0zLhOmeoG6vz/fPbRjkwf/nUSWqJ6SvXbrgp4shu/g4hje nHag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774654137; x=1775258937; 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=GP1/j9iPrI0sglCjoXgnt69EFsYgdF0neK0NN3kO93o=; b=Qdfko/9IxSO9VOO8v8zfSDcdovFg/mDT6DN61rn2AuUeRdpJe4bOOg9cwoBwp6Sksv Rg4nNTHoWTS5ziVh4Gc6GnDlFJsPpU6qqEbJsdrmPzoxWlkRyKhUw4nNk1BQxh3oObx7 NEGn8l6+AVqfadfSyqtN+yMXwJ9SmzA8Bmrw3SmRhQdP2CyiAPg7NQHl1Ot08rUH1Xdx H2eWJalaEI2TLxv9QhAzsLWnmn7VUVImjL8e1/f/UJneICtUKpE8Khk6CqibWjlPz+mX x0N+8IzVG0RwuCXT/nNHA7txji0L13q1LKpyKLPb9jIu8qmRYgx3hNX7Y/suwlLkJCd1 eeAw== X-Forwarded-Encrypted: i=1; AJvYcCV1XKbuRa2AKw1qE1LSzwkXln1LU+c/8taLIBfpuSSKaNeG6CxrRLqtYN0FrKZ8mDYl5h2UlxD/vL0l9HM=@vger.kernel.org X-Gm-Message-State: AOJu0YwDDSOK2wDOwS/n4y75G9Na/25pbZQAIH+22HC44veEGN9QPjhN XFl+FPWqHvmNil9rTeFkE676760BD3rGFOwH/yoTjG2+82vQXMcrvV19McckhhH1fNvIgrUZUzB XnVTZ6nrOd7O/eTl4k1MVtElun2D/dGfq5ATbu33f7BzTIL6zrkBBpBJmuHjJ63b7MUk= X-Gm-Gg: ATEYQzxkwYLZdARwoAtDshUlzMGwa6ajwpYkDbp2lEHEMWLPkJXwyisef/QCylT78oj FVI3lraF50HcE8OFyxUWXJRc7yRXsNInKvm4WZ1Qcyx/1GTEa0ooTqJM0jL7KpArfV80gwAYlna oJlR39LyWjed0CBqAXLyz9xkGX5miIFzlRxltbIYqM9uEWPpwXzv2iwrmHfGypLWIWQtJjTiGt+ cZm++M2wcwiB/lFAG7ujTrYj/LO2Ri1SraylXXUQj+9C1zih3bPQPKz5x/+BK7cKJqJOuZqQqol YaShm3O3d9Bel2QKdXgpJqhO/ahLrVpyHxRq0gDWhEceCsPJRKOgs0VhPfEr+CO7CdlZTNSuVJI 5jtxwifB7waWN5Fiom7snrfC9HLDwHthXI3SqgW0m9/oCU+e8lK8Pgk0ydbEAT1qTA+2T6QUZKE PLjtdPWJmYAptiGuVj4OexFbXSwV44jWfRvSM= X-Received: by 2002:ac8:58c1:0:b0:50b:50a5:d61e with SMTP id d75a77b69052e-50ba38365cfmr61204511cf.17.1774654136831; Fri, 27 Mar 2026 16:28:56 -0700 (PDT) X-Received: by 2002:ac8:58c1:0:b0:50b:50a5:d61e with SMTP id d75a77b69052e-50ba38365cfmr61204241cf.17.1774654136295; Fri, 27 Mar 2026 16:28:56 -0700 (PDT) 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 38308e7fff4ca-38c83729522sm1177991fa.14.2026.03.27.16.28.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Mar 2026 16:28:53 -0700 (PDT) From: Dmitry Baryshkov Date: Sat, 28 Mar 2026 01:28:39 +0200 Subject: [PATCH v10 04/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: <20260328-iris-platform-data-v10-4-46b92bfe7b52@oss.qualcomm.com> References: <20260328-iris-platform-data-v10-0-46b92bfe7b52@oss.qualcomm.com> In-Reply-To: <20260328-iris-platform-data-v10-0-46b92bfe7b52@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.15.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=23792; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=zxKHrPvxoidgL7dgWtDDRmoHHDeuNIL77Ya8mIt8yiQ=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpxxKoku0Tja1zLFCOaK5bsx9Ai4UNuoWbSsozr gIKRk2mWdWJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaccSqAAKCRCLPIo+Aiko 1ebHCACOCTa06B9OseGDEGR5eQZIBZxRXFAcCqi3zpTIbwkVkV9rk3Q8NTteBxyQuWW37Ldafpj H44ZEKHle0djbaV+Rgd5grAAyWrNdj+aTF0qQ4rIQpoDBnyv4RYfK+0CosUhFXafATpfcosM18K aUc/Ky1IGHL58B4kd6AT3EAeQIkxP4Yrof3qnDjLis59SJgLgEFp4a8OmYhlVTFLjU3CYN1jnoT yY/x+OK7IfERJlXFn1ZiTGnJkrmDNyi7UaluhVTmggQsLOKseuWJAKqrZ/gpbeaXlGGOxhk6iaq Da+GFp+6T8Bao1/puZLZ+VflWAq0hOVhUxt5IrHGYFvrYciX X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-ORIG-GUID: APoozI4xIbjt_wT723wO5e42G7xLFUlN X-Proofpoint-GUID: APoozI4xIbjt_wT723wO5e42G7xLFUlN X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzI3MDE2NSBTYWx0ZWRfX45a4VOObLbxx 17z7VXygB3/J/0FA1atB/0fqy30qfwgmHUmy6eb3OntXT+YoQAqhjIFY/C32wZk9qia00Dq/56O NVneKd4Ioh2X0BZdY6TjxzmRsU/Je6MO1zH4j3DJvhwnZ5Q4ALdpR/GXmcwmar0pjeJefezJXXr kr5b3xTfNT6tjaOLHJVUA46/fdQY/ZE/CCn57zZW7IAzvtTAcqE0CcHsl2GgOfxbeI1j+GvqKCU 5etSCgFGPBDYKLKbqQWs6sLuMrJmdwm+H3VVqyUk/yORdxoKpJUHqdGe1Ksh7Oks+YTOJRKMuCC HPIPOJT+jp+jZVnKjXrVnnZN1TPRvbxnOcGUzxuJu91/pQ5YwbkeCUD6cyZCmUiO654m9/1Ums2 TuUtRB/Vw912+OVzpOIMVFubinn8aJLci9nDp3EyqQVUsHHsv1o0IzoMdM55V8tPvl+tZz5L2YA tNH4sKU/hQSfPp0cvFg== X-Authority-Analysis: v=2.4 cv=PL0COPqC c=1 sm=1 tr=0 ts=69c712b9 cx=c_pps a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=EUspDBNiAAAA:8 a=GJ9kf5zHVpckMw0GqqUA:9 a=QEXdDO2ut3YA:10 a=dawVfQjAaf238kedN5IG:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-27_01,2026-03-26_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 impostorscore=0 lowpriorityscore=0 bulkscore=0 malwarescore=0 phishscore=0 spamscore=0 clxscore=1015 adultscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603270165 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. Reviewed-by: Dikshita Agarwal Reviewed-by: Vikash Garodia 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..f55b7c608116 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_session_ops *hfi_ops =3D inst->hfi_session_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_session_ops *hfi_ops =3D inst->hfi_session_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..25836561bcf3 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_session_ops *hfi_ops =3D inst->hfi_session_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_session_ops *hfi_ops =3D inst->hfi_session_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_session_ops *hfi_ops =3D inst->hfi_session_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_session_ops *hfi_ops =3D inst->hfi_session_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..5a24aa869b2d 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_session_ops *hfi_ops =3D inst->hfi_session_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_session_ops *hfi_ops =3D inst->hfi_session_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_session_ops *hfi_ops =3D inst->hfi_session_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_session_ops *hfi_ops =3D inst->hfi_session_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_session_ops *hfi_ops =3D inst->hfi_session_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_session_ops *hfi_ops =3D inst->hfi_session_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_session_ops *hfi_ops =3D inst->hfi_session_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_session_ops *hfi_ops =3D inst->hfi_session_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_session_ops *hfi_ops =3D inst->hfi_session_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_session_ops *hfi_ops =3D inst->hfi_session_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_session_ops *hfi_ops =3D inst->hfi_session_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_session_ops *hfi_ops =3D inst->hfi_session_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_session_ops *hfi_ops =3D inst->hfi_session_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_session_ops *hfi_ops =3D inst->hfi_session_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_session_ops *hfi_ops =3D inst->hfi_session_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_session_ops *hfi_ops =3D inst->hfi_session_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_session_ops *hfi_ops =3D inst->hfi_session_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_session_ops *hfi_ops =3D inst->hfi_session_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_session_ops *hfi_ops =3D inst->hfi_session_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_session_ops *hfi_ops =3D inst->hfi_session_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_session_ops *hfi_ops =3D inst->hfi_session_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_session_ops *hfi_ops =3D inst->hfi_session_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_session_ops *hfi_ops =3D inst->hfi_session_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..18684ada78b2 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_session_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 e42d17653c2c..a28b0c7ebbad 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c @@ -1063,11 +1063,7 @@ static int iris_hfi_gen1_session_set_config_params(s= truct iris_inst *inst, u32 p return 0; } =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_session_ops iris_hfi_gen1_session_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, @@ -1080,6 +1076,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; @@ -1087,5 +1090,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_session_ops =3D &iris_hfi_gen1_session_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 e4f25b7f5d04..ffb70fd9499c 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c @@ -1300,11 +1300,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_session_ops iris_hfi_gen2_session_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, @@ -1319,6 +1315,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; @@ -1330,6 +1333,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_session_ops =3D &iris_hfi_gen2_session_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..352af99699dd 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_session_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_session_ops: iris HFI session 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_session_ops *hfi_session_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..a2ea2d67f60d 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_session_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..ccda3b9fb845 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_session_ops *hfi_ops =3D inst->hfi_session_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_session_ops *hfi_ops =3D inst->hfi_session_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_session_ops *hfi_ops =3D inst->hfi_session_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..aeed756ee9ca 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_session_ops *hfi_ops =3D inst->hfi_session_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_session_ops *hfi_ops =3D inst->hfi_session_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..7e03d63578e1 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_session_ops *hfi_ops =3D inst->hfi_session_ops; bool wait_for_response =3D true; int ret; =20 --=20 2.47.3 From nobody Thu Apr 2 14:06:37 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 0E2553542F4 for ; Fri, 27 Mar 2026 23:29:02 +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=1774654144; cv=none; b=quoBqBbUoDCrWNNyLfwdrNV5kxcpggwlgAEwqb5FwpizHC4Y5OiMdcgDe1HYfs+Pl7EnQqSdcBOsvOOn0aUrJ6XMCcYc9CUAUGOieVHlB6ntjCMOkB6K8LzjGEYBhwy9AL1LIh/eT10Gnzm3ejz+pl1zU4Z9/VxsA4VThIcV+2M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774654144; c=relaxed/simple; bh=IShqxTkADtDQW3CMBXgFdhh3KcR1qyw1KyQi3vVr0rs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=NLMCd8yp8PiD9OWuB8s7g6Qfj2uTQQF2pejFwAGlnpPSfkuL4flBHNF+HQNaY27vBimkiv3UKx0nroJNzCtnendvJZd5lfdehJ3MVZxxKFomSW05qVzdyESX0s1rNfBl+nP9jLT+xz2+Q4mYPHLt/JP76IqqzVSUfdzqSnwk3mc= 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=nqD72wIR; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=cPDLlZ9/; 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="nqD72wIR"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="cPDLlZ9/" 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 62RN3p0D2410453 for ; Fri, 27 Mar 2026 23:29:02 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= LTwg8Ray2KFhbuMU3wn8Jce8o346Gp0YHy3SLl+GLyg=; b=nqD72wIRhYIXilns fS6aP7XbwnLaJnFCUcn8DusatKkdJwywOH35xzhLyHkdIwEscF8MBxP4aZfR98h/ q/faCVLurBAl8m4w4oIg4kRB77wmCDlbJxeVG26z/nz8Rkbyvb+91OmOlwhcVhEa 8UU7NJGTBDRH1q25QUkWHbDpgbQembaWv3w47P/acsyb2tkxrQwEnIJAy3Emh9pd 1gCfmXUMmh1qvko+xjGEtOmw1xR1IdhcPKK5Ht/wvcpiSzexUVd8YPjeylLJY+KI 4p2E8LBx+XFXRyUlem8zM2Pfw+ARyOkQn1pXCdRCzbzxmWZIu8nEnnZNURAQdkol yiWEVQ== Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d5vvv98qy-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 27 Mar 2026 23:29:01 +0000 (GMT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-5090e08dcfcso73969301cf.0 for ; Fri, 27 Mar 2026 16:29:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1774654141; x=1775258941; 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=LTwg8Ray2KFhbuMU3wn8Jce8o346Gp0YHy3SLl+GLyg=; b=cPDLlZ9/XtwMqJEZZbltRgE7On8inF07YXp3N94CdRcdpZUjj3APsyhEsejIZnxgjL JLiy0xNiye5IAQmbVyppfNqXMdIdBsfg1hARaobsASKCQAtEhAHDvS3nOrASPS6l8xbb i+0mUPxWBEJiZG1EOJIb6iNolmnQ0mgkzv3Lc7VlixvZDI8uunpUxJdmPo2MOjgGHuxw OjZqsR14k8HIjLKXIAp5pFvxw1JZBF7noG2qWIgtkl+FuaYa7bad3gR3z62NJI4S1cUq r6j9N7jAO2VQ3jKpPr4RKKKayu0kb1U5jhwDFzhROn24vzJc4IhT7k0Og+aiZAIHhTxY BS/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774654141; x=1775258941; 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=LTwg8Ray2KFhbuMU3wn8Jce8o346Gp0YHy3SLl+GLyg=; b=MUy0Vj3653GjFM4hZQYFiJX4UM7Z0YEZVl6NFRm053UaRa4a/Ty7JkfDREt2B7gSOE 7cGjOYsl3JyzTwnk8ZfBiuybyNemefnMM6ga2E/D9VyTdsESbY+a2uNfZ0FzxjWjMUQ0 4cD8BkEYjAvOill3FJnOqGX7J9/Q5jXlqB6JM3ch8OWh+b/8vrvKKquFvTMMp2ls5VQ4 c6glfbrIu2I+hboI/htXs6y9Aogp4ou5p1wi9z18AME2/b870AJklun7XORbOqlwl4VZ wu+mQOhdcjcAZ0zFILUnKZJBuerHam8oT2SYPBjHgnndaEMH0HrrurI8PGinpSmO9S+i tsag== X-Forwarded-Encrypted: i=1; AJvYcCVa0zWO2G38lq/QGIot0tUpmYtTxde9VN029PPaaeXU09HXMCTQ2j65BgGotuwP7nX74rYtqxdxPH0UyEI=@vger.kernel.org X-Gm-Message-State: AOJu0Yy55mgrvSs47bXzD38PLawu+rIYgeZYXk32F8iyCZzLS67hZsgf toF0PBTl2dc60WWEBej3IrFQx75uMtfOX5FqIJ/BPvKlqdDGXSIGVZKf2uHPkB7fnOjz2iofVgh Np7QmQLKJuSPE3tKs9g7VdXaukcuWYetVMWOxRaH5HjCU8AmxOesHmUnqkEU1k7FD9OWDuAAgyC U= X-Gm-Gg: ATEYQzzJ63CuylE3CH+AR6T8Jp6XUNk9hG6NScvK+kCigMFMVfw8rKKcjDlPsyLmn+B GZUPJagBRBCGEkA90kEwKm8QjcTZrepLlu+kuAuLnZKG/HqWJii/k4740zpl0zgLrV5olGJaOov fqCG8wslSXV5TGKzT+E7ILkF04f0XwT/jseEzM5a0tK5htQfw9vR5FQGoh1jUcSpDeTJC3yKG5n cDRWe3N/ECPqdoNKbgEnd8WG+bJBtdsUK0swHEZg/8U5osc9ym8kgr359Beeh2s32pkSflKzlrJ j/FjpjY0zjrviZGbdYJ6bYUvhNKi0CgDy/3DZd+13CdPcWlEqn31GtW3bFoJWXbPGRIZoc7aOl7 WcTw5AtH+l0wxAwQpdiw+Uv5QJYYAbHkcl/tM05EhjALcdbU9wheDPQk+DRbUR/G0jhmKHXqicW VNzJpmd2HHzcxuaZReRJixJ5hMXZwZ4GmMT9c= X-Received: by 2002:ac8:7d4b:0:b0:509:26f4:64e9 with SMTP id d75a77b69052e-50ba3994b30mr57050241cf.51.1774654140800; Fri, 27 Mar 2026 16:29:00 -0700 (PDT) X-Received: by 2002:ac8:7d4b:0:b0:509:26f4:64e9 with SMTP id d75a77b69052e-50ba3994b30mr57050051cf.51.1774654140350; Fri, 27 Mar 2026 16:29:00 -0700 (PDT) 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 38308e7fff4ca-38c83729522sm1177991fa.14.2026.03.27.16.28.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Mar 2026 16:28:57 -0700 (PDT) From: Dmitry Baryshkov Date: Sat, 28 Mar 2026 01:28:40 +0200 Subject: [PATCH v10 05/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: <20260328-iris-platform-data-v10-5-46b92bfe7b52@oss.qualcomm.com> References: <20260328-iris-platform-data-v10-0-46b92bfe7b52@oss.qualcomm.com> In-Reply-To: <20260328-iris-platform-data-v10-0-46b92bfe7b52@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.15.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=15797; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=IShqxTkADtDQW3CMBXgFdhh3KcR1qyw1KyQi3vVr0rs=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpxxKo+zuFc/jhGK2Eb6F0STcF+J/inpjklaWXt BBKF4CoUR2JATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaccSqAAKCRCLPIo+Aiko 1d0zB/96Me1KkRi1Y0oI7w8Fi5V4qBdqBRlHL28E+v6Em9gCKbiHD6kXmorFwpxqvclVyh2snEf PZ0aqOXaHRmq6U5Ri7q9ihdqc4gEG/INs8Pi8Z5WoiXKRPuA7g16MIwxR6Vstl3a9xmH+2Myo0T TVcz8B0d/kY9ajol8Y8WlUEb86qlp1wGVl94f4U2xRRasbdwcxLkell3VtnB10M3JjPH5elJoHD VW7j1sqH3vS3nWN6yIdhu8u+lr1Bc51NJy+ytNIYTEwK/UwuBN3YtDVEK/Aqi9Y4MVNDqfLBxqc msNVzUcJJsrOmtkj9ibgSyvsXLwW7jm06jeT0fW/ML8VkTbL X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-ORIG-GUID: M-Vyky_RwyvhvQPeG4_t0eANahm1HH2X X-Proofpoint-GUID: M-Vyky_RwyvhvQPeG4_t0eANahm1HH2X X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzI3MDE2NSBTYWx0ZWRfX0BqKo4GBufoJ aDuw0QtHN8vEdlmymCx2xTGMy47s5b95l+m72D7gZxqP9BxEpuNhA/JgTJFAUmQjvWu+gFg2gZy u83Qwjh/NTaE/6ZOsxj+rn9sk1NnYacsTMOS3LXwT0t0bs4Zf5FBRONfo/DJgcaHRjdk+1U19aN siZDICci4WPr63/HdX3Owj3WtUwZKNZAUa/Pc7aXPwwQONkSK9joIC8DqerEYWQTgmpNA68o37b qSZLn7EJsBHz/vg2ULBTI3EQuTIIM6Zd5DV0q3mywpyBb7zmxe+OFNCuNE+3fSDspExj7uyDQH1 WBiAE13OFFqhwabLL8m3XHdexrpixsAjIoeqvIoty0PDXdDN1zXi8UVtmTXFrHMNDmDgksjJl6g DyUM9rTWlcEj+96mtosn8vd72lIqjOIV78SGJXBixl/nD8QtkPLsaI6lSePihnFvyeqhWwsh3Lw FROWPrhNBeIfGGwLybQ== X-Authority-Analysis: v=2.4 cv=PL0COPqC c=1 sm=1 tr=0 ts=69c712bd cx=c_pps a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=EUspDBNiAAAA:8 a=6t3FZmZJ4ffncKB-xNAA:9 a=QEXdDO2ut3YA:10 a=dawVfQjAaf238kedN5IG:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-27_01,2026-03-26_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 impostorscore=0 lowpriorityscore=0 bulkscore=0 malwarescore=0 phishscore=0 spamscore=0 clxscore=1015 adultscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603270165 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. Reviewed-by: Dikshita Agarwal Reviewed-by: Vikash Garodia Signed-off-by: Dmitry Baryshkov --- drivers/media/platform/qcom/iris/iris_core.h | 6 ++---- 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 +-- drivers/media/platform/qcom/iris/iris_vpu_common.c | 2 +- 14 files changed, 33 insertions(+), 59 deletions(-) diff --git a/drivers/media/platform/qcom/iris/iris_core.h b/drivers/media/p= latform/qcom/iris/iris_core.h index d10a03aa5685..1592681640ab 100644 --- a/drivers/media/platform/qcom/iris/iris_core.h +++ b/drivers/media/platform/qcom/iris/iris_core.h @@ -68,8 +68,7 @@ struct qcom_ubwc_cfg_data; * @header_id: id of packet header * @packet_id: id of packet * @power: a structure for clock and bw information - * @hfi_ops: iris hfi command ops - * @hfi_response_ops: iris hfi response ops + * @hfi_sys_ops: iris HFI system ops * @core_init_done: structure of signal completion for system response * @intr_status: interrupt status * @sys_error_handler: a delayed work for handling system fatal error @@ -112,8 +111,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_response_ops *hfi_response_ops; + const struct iris_hfi_sys_ops *hfi_sys_ops; struct completion core_init_done; u32 intr_status; struct delayed_work sys_error_handler; 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..ad8e4ecb8605 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_sys_ops *hfi_ops =3D core->hfi_sys_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_sys_ops->sys_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_sys_ops *ops =3D core->hfi_sys_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 18684ada78b2..9aa84a1d8f95 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_sys_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 (*sys_hfi_response_handler)(struct iris_core *core); }; =20 struct iris_hfi_session_ops { @@ -129,10 +131,6 @@ struct iris_hfi_session_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..38e9d262d7df 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_sys_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 a28b0c7ebbad..26b7feb05d15 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c @@ -1076,16 +1076,18 @@ static const struct iris_hfi_session_ops iris_hfi_g= en1_session_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_sys_ops iris_hfi_gen1_sys_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, + + .sys_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_sys_ops_init(struct iris_core *core) { - core->hfi_ops =3D &iris_hfi_gen1_command_ops; + core->hfi_sys_ops =3D &iris_hfi_gen1_sys_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..6cc6d9890c12 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_sys_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 ffb70fd9499c..0c98d680bf09 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c @@ -1315,16 +1315,18 @@ static const struct iris_hfi_session_ops iris_hfi_g= en2_session_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_sys_ops iris_hfi_gen2_sys_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, + + .sys_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_sys_ops_init(struct iris_core *core) { - core->hfi_ops =3D &iris_hfi_gen2_command_ops; + core->hfi_sys_ops =3D &iris_hfi_gen2_sys_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 d7106902698c..6b76a9046f9a 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 ed07d1b00e43..dc74da04771b 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen1.c +++ b/drivers/media/platform/qcom/iris/iris_platform_gen1.c @@ -334,8 +334,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_sys_ops_init, .get_vpu_buffer_size =3D iris_vpu_buf_size, .vpu_ops =3D &iris_vpu2_ops, .icc_tbl =3D sm8250_icc_table, @@ -387,8 +386,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_sys_ops_init, .get_vpu_buffer_size =3D iris_vpu_buf_size, .vpu_ops =3D &iris_vpu2_ops, .icc_tbl =3D sm8250_icc_table, diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen2.c b/driver= s/media/platform/qcom/iris/iris_platform_gen2.c index c84d4399f84d..19e99e1c2aff 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen2.c +++ b/drivers/media/platform/qcom/iris/iris_platform_gen2.c @@ -908,8 +908,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_sys_ops_init, .get_vpu_buffer_size =3D iris_vpu_buf_size, .vpu_ops =3D &iris_vpu3_ops, .icc_tbl =3D sm8550_icc_table, @@ -1008,8 +1007,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_sys_ops_init, .get_vpu_buffer_size =3D iris_vpu33_buf_size, .vpu_ops =3D &iris_vpu33_ops, .icc_tbl =3D sm8550_icc_table, @@ -1103,8 +1101,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_sys_ops_init, .get_vpu_buffer_size =3D iris_vpu33_buf_size, .vpu_ops =3D &iris_vpu35_ops, .icc_tbl =3D sm8550_icc_table, @@ -1200,8 +1197,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_sys_ops_init, .get_vpu_buffer_size =3D iris_vpu_buf_size, .vpu_ops =3D &iris_vpu3_ops, .icc_tbl =3D sm8550_icc_table, diff --git a/drivers/media/platform/qcom/iris/iris_probe.c b/drivers/media/= platform/qcom/iris/iris_probe.c index baa13cc5c209..fa561f6a736c 100644 --- a/drivers/media/platform/qcom/iris/iris_probe.c +++ b/drivers/media/platform/qcom/iris/iris_probe.c @@ -264,8 +264,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) diff --git a/drivers/media/platform/qcom/iris/iris_vpu_common.c b/drivers/m= edia/platform/qcom/iris/iris_vpu_common.c index faabf53126f3..dbce5aeba06c 100644 --- a/drivers/media/platform/qcom/iris/iris_vpu_common.c +++ b/drivers/media/platform/qcom/iris/iris_vpu_common.c @@ -149,7 +149,7 @@ int iris_vpu_prepare_pc(struct iris_core *core) if (!wfi_status || !idle_status) goto skip_power_off; =20 - ret =3D core->hfi_ops->sys_pc_prep(core); + ret =3D core->hfi_sys_ops->sys_pc_prep(core); if (ret) goto skip_power_off; =20 --=20 2.47.3 From nobody Thu Apr 2 14:06:37 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 42B9137998A for ; Fri, 27 Mar 2026 23:29:05 +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=1774654147; cv=none; b=Xknwtoa5hZAiKRom2wIcxQsbSsaxyGAMlv6IskqPr2dv86Yzj/d+2WukUvtudBXggwv6fXVc3GBR5YE+neepav/G9Iap5N12uQHBvc+O6uW7iqzAKkfAQAgjxSVx7wv9yS7KWT1A75HUYeYM0HpDmXBAgyneS2B43+EdEuD7pAw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774654147; c=relaxed/simple; bh=mN2B8mMErlly0rhOY6EnYewAknm6tdZRVcCuF6xiQiQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Ag3J9oK9i4UBV0wJvPRjx+/mhyxJvLVMgKolcnYGWvD/1S/7rCLDibBQhEeMNMhEdgJGKA83QrPPm0IZVXFvWCJY8KEim22bmP3oGGTk9OuIRyK7B8XaO05vJSx2ddqTUV2BYxwhYz18jTHSAsmMQEbhFe3fHLWYCXfjdWeTbjg= 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=c9Ss2vws; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=dL2p8eR4; 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="c9Ss2vws"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="dL2p8eR4" 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 62RN3p0E2410453 for ; Fri, 27 Mar 2026 23:29:04 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= X3roVKO9HbGyFQCP9qFC8PS8kvPsGONebIVZO3TAK2Y=; b=c9Ss2vwsNBKl2Q3r SxtTLc47Zt6UcpP6NpQjlQTMZSC8WfC890IrmbzmobGJ90IlzWY9uxKUcSoe8qJ/ FbhzGiahJv/8JOEvrRxIJ8P3H0txfB85bENJAefatEn8fV6UZU/pbHIBBMZD9aWq mWoKH0BgMilv4+ZO0w/5bPh6kGYDduVio4bCG13AVF4MjNQnD6s9mpYNk1+uk83v aXaKjaeQGBzhAlSu5oQFmYoFdUxAKdXrEnp7xS+YmX5enAOl/FcrbMJr/inqOceS Unr7dQpIgWYbdkVosGk1J/hd1I1tZY8hxJRyFqsNMurrV5YAldBSkQIIxj2grlZD 3W2sUQ== Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d5vvv98r8-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 27 Mar 2026 23:29:04 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-509219f94b0so29229931cf.3 for ; Fri, 27 Mar 2026 16:29:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1774654143; x=1775258943; 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=X3roVKO9HbGyFQCP9qFC8PS8kvPsGONebIVZO3TAK2Y=; b=dL2p8eR4tptS7hIqSSmrlPMZ1B3jQTHDU102r+XXhrFm2UWaQJQBAjGv0cxNhLBWWU pmtTdw1PYwKwO+H3cngFddThzrZHYBK8tzI+V6VKyhgfo7ZqJpq8E3bQkW5n4g7ZmkXM B5mhHdmLVebrVC1iiOcc4Q78FlDOzHvAE7CbYVHMZ1VRZpdaNf925n52U6iyi6LGuZ4B IqK/Wq6crcifs8GhhMMgguFwxY/1hC6RfgDddaswWfw+SnVuuc30CTSod5RTJYGQDNav mMfbXKd5iPcao07O9fctNzYtPVYMnC9c8TpsNCs618YD1CfpCBRRvp1i5uzbwPzwoj3M 5+6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774654143; x=1775258943; 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=X3roVKO9HbGyFQCP9qFC8PS8kvPsGONebIVZO3TAK2Y=; b=lJMQAAC3JG8tjf42304AU3EEsfV4HqPdRbqp1mFCfcf6tAJpT9QS3ZDLUlSxTl7bbK ICstqiNaNiZ3tJzeM49tUIwazxJu+IRG0IFveREmtdhcAEftep8x26cDDptULS6YWyKf PYlCfnjmwPSxyJprIDW672Ph0THwaCvXDGZpwtpPvNnNN67Ic80rhljkee5xu+3eWip9 OPmP97QSHK6QX8Kn2soH8wnKNxXRhe3vIBAVhdgGL94q4Q87GqUHdgxx9YJBoppFb0uV VIb3Jwnp+EVpmC0+rAuP0eheRld9KE2+HZT5SZfGlsMZK2D17W76p38Njf9uh9vsIYI5 5GCw== X-Forwarded-Encrypted: i=1; AJvYcCWakLmAPz/83XRRUnNk4/MTyNUjdQ8p/Dg7ECGRULkrOqenecpRQaZLQXD7sZaDwy4PrPJXumGi/2wbfu0=@vger.kernel.org X-Gm-Message-State: AOJu0YxtNyAIgmFoNymaje87eaS1CSatehSRxDBIa6ggbDQVJVoj5lXg 0T8KGgs2vB95oRG5Mw/3ktaNjPNcFmV5S8pIBXW9EOGkrnLUaq/d+NFbcujnXJ2ctXFjMAr5v7a RuWb7BmzW/rc0EstXER84VQ8MJ9VesYkVMYV9VNcayImiIMoaJeRWipsPOQaClMFYuqo= X-Gm-Gg: ATEYQzwXAUfNs4pyPf8i3lwdoIdzUMZOkzOYok3DVCprPgMBZt4Y0BvQw9NhNl3WTcj LorjyAbJKKwbJ9Lw0YmK3+1+7ly3HqjA4RI+Tq34Wxrf+JCws3BUfjR80UiWjVY6+FGjDHdxc/b OZ5wr3HUW8nSFJBmFnXL15wKN2YKaMo5BOIi9H7FVtChsYn13MXCyKNxnt8Vq/00fUxqr7O7kRH w+m+EhbopZ/V6h4CO5IF4WVafkA0ZdAXbrAnfyhgp1V5yCWhPDt20Qyt331XY4Ms6TtDpXRSnOk TLaGMiyBu6iibhqXIyfhKcQ4YqjMwlW6XGGm2Pqja3XCT4lZPzJEsJUExuAMpZSAM/u8sn6draJ NZbz597i8dVzncK64+M+1bxRlweRW7cy3d0FYyrvkXmVursosyZWiuzVemhnJ4TpR4rKXqZ3DFC 1I5ocV69OoMac4v5CJOpdGRYM61DL+49cbBBk= X-Received: by 2002:a05:622a:112:b0:509:348f:bc1a with SMTP id d75a77b69052e-50ba380a83cmr64799061cf.26.1774654143378; Fri, 27 Mar 2026 16:29:03 -0700 (PDT) X-Received: by 2002:a05:622a:112:b0:509:348f:bc1a with SMTP id d75a77b69052e-50ba380a83cmr64798811cf.26.1774654142934; Fri, 27 Mar 2026 16:29:02 -0700 (PDT) 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 38308e7fff4ca-38c83729522sm1177991fa.14.2026.03.27.16.29.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Mar 2026 16:29:00 -0700 (PDT) From: Dmitry Baryshkov Date: Sat, 28 Mar 2026 01:28:41 +0200 Subject: [PATCH v10 06/11] media: qcom: iris: move get_instance to iris_hfi_sys_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: <20260328-iris-platform-data-v10-6-46b92bfe7b52@oss.qualcomm.com> References: <20260328-iris-platform-data-v10-0-46b92bfe7b52@oss.qualcomm.com> In-Reply-To: <20260328-iris-platform-data-v10-0-46b92bfe7b52@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.15.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=9259; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=mN2B8mMErlly0rhOY6EnYewAknm6tdZRVcCuF6xiQiQ=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpxxKopP+XuPMDggwn0LhwPGjWJdziRQP26rtLm hHPaCAbkBGJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaccSqAAKCRCLPIo+Aiko 1Z0LB/9msNlqSH7tW8qtDYs1MbYGwUORgRNu6HlmjIH0FdlIqJgLoAX3/YB6lzMINmdsL2Yyvvi I04isIeSiA9HIq/L6lpX3NuIp78QqThlcfuU5lCRlem15KEdZg+wjukZbC3tcVl3eS4mwVxt887 UyBfAAyr9j4X7X3mPm44zRX7hSNqwyS/4oE7H1QJYlAQGcNsyA0Vyh71jgPLKNQLlkLiHqhBilc W01e0YfwYe1DYbQT6KuCIyicmuSSr7tfshY2BDmrWtSsHtLmYPE6vDRUlz00rodjt0NSXt6EOKa sv6BKAi4SWiGDJjXB7votLKjRy6L1xpHaPPot8m56VllPGFV X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-ORIG-GUID: nceXcKUkk0qV9_lWFYPlbCizVX4z-K_l X-Proofpoint-GUID: nceXcKUkk0qV9_lWFYPlbCizVX4z-K_l X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzI3MDE2NSBTYWx0ZWRfX5LEVlk6lxImN NHnBhDwbvNlMWumDNstUiH+p3v8HJFz9fKh3UnF1LRae6HBc4bRQi0E0bJjrv+i2DqNn7UpBBmF cKNj4EGeVY8ptNx2sqKdjv2h4B3GV1+E4ABcacZ+7eKm5e6E+l1WuR1jR8vX6BtZ13wsU+7eEy+ gQZFk377cNWgfrq6T009RjltchHy0tX6JTVOu+q/35GdT/9VimmnQ4DuBsNzcbG5bE2taiR717J RC0OummeJFp35DXfOJ30PkqFB1hUDP+ovZIFJNRPrFqqYc4sFHxZMYDIbkZcXdUvHpEXu75jrI/ vxW8djLJZwL/+PdhPWTh91w6l0d9D28QmUozPeFFjk4xlcf0hGjqzfml9dT/0peJ5kU587OnqBD HuYHbQdpVBMjclw+Hfyp45m8RlUMGG5Fjp3wZdAJBqs4TQaNPPKOvZi2EZTd+USmJJS98u2Ytq5 VSmP0bcXfyDtfT1Yyug== X-Authority-Analysis: v=2.4 cv=PL0COPqC c=1 sm=1 tr=0 ts=69c712c0 cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=EUspDBNiAAAA:8 a=2oeCRJBNelE_HTcD8YQA:9 a=QEXdDO2ut3YA:10 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-27_01,2026-03-26_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 impostorscore=0 lowpriorityscore=0 bulkscore=0 malwarescore=0 phishscore=0 spamscore=0 clxscore=1015 adultscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603270165 The get_instance() is a callback tightly connected to the HFI implementation. Move it into the new iris_hfi_sys_ops structure, merging all core callbacks into a single vtable. Reviewed-by: Dikshita Agarwal Reviewed-by: Vikash Garodia 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 9aa84a1d8f95..a27447eb2519 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_sys_ops { int (*sys_pc_prep)(struct iris_core *core); =20 void (*sys_hfi_response_handler)(struct iris_core *core); + + struct iris_inst *(*sys_get_instance)(void); }; =20 struct iris_hfi_session_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 38e9d262d7df..c37adf65055a 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_sys_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 26b7feb05d15..0017ade4adbd 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c @@ -1076,6 +1076,19 @@ static const struct iris_hfi_session_ops iris_hfi_ge= n1_session_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_session_ops =3D &iris_hfi_gen1_session_ops; + + return out; +} + static const struct iris_hfi_sys_ops iris_hfi_gen1_sys_ops =3D { .sys_init =3D iris_hfi_gen1_sys_init, .sys_image_version =3D iris_hfi_gen1_sys_image_version, @@ -1083,22 +1096,11 @@ static const struct iris_hfi_sys_ops iris_hfi_gen1_= sys_ops =3D { .sys_pc_prep =3D iris_hfi_gen1_sys_pc_prep, =20 .sys_hfi_response_handler =3D iris_hfi_gen1_response_handler, + + .sys_get_instance =3D iris_hfi_gen1_get_instance, }; =20 void iris_hfi_gen1_sys_ops_init(struct iris_core *core) { core->hfi_sys_ops =3D &iris_hfi_gen1_sys_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_session_ops =3D &iris_hfi_gen1_session_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 6cc6d9890c12..21ab58e0aa84 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_sys_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 0c98d680bf09..639b75fca1ab 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c @@ -1315,6 +1315,20 @@ static const struct iris_hfi_session_ops iris_hfi_ge= n2_session_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_session_ops =3D &iris_hfi_gen2_session_ops; + + return &out->inst; +} + static const struct iris_hfi_sys_ops iris_hfi_gen2_sys_ops =3D { .sys_init =3D iris_hfi_gen2_sys_init, .sys_image_version =3D iris_hfi_gen2_sys_image_version, @@ -1322,23 +1336,11 @@ static const struct iris_hfi_sys_ops iris_hfi_gen2_= sys_ops =3D { .sys_pc_prep =3D iris_hfi_gen2_sys_pc_prep, =20 .sys_hfi_response_handler =3D iris_hfi_gen2_response_handler, + + .sys_get_instance =3D iris_hfi_gen2_get_instance, }; =20 void iris_hfi_gen2_sys_ops_init(struct iris_core *core) { core->hfi_sys_ops =3D &iris_hfi_gen2_sys_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_session_ops =3D &iris_hfi_gen2_session_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 6b76a9046f9a..d1daef2d874b 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; const struct icc_info *icc_tbl; diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen1.c b/driver= s/media/platform/qcom/iris/iris_platform_gen1.c index dc74da04771b..9925a893b404 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen1.c +++ b/drivers/media/platform/qcom/iris/iris_platform_gen1.c @@ -333,7 +333,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_sys_ops_init, .get_vpu_buffer_size =3D iris_vpu_buf_size, .vpu_ops =3D &iris_vpu2_ops, @@ -385,7 +384,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_sys_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 19e99e1c2aff..10a972f96cbe 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen2.c +++ b/drivers/media/platform/qcom/iris/iris_platform_gen2.c @@ -907,7 +907,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_sys_ops_init, .get_vpu_buffer_size =3D iris_vpu_buf_size, .vpu_ops =3D &iris_vpu3_ops, @@ -1006,7 +1005,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_sys_ops_init, .get_vpu_buffer_size =3D iris_vpu33_buf_size, .vpu_ops =3D &iris_vpu33_ops, @@ -1100,7 +1098,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_sys_ops_init, .get_vpu_buffer_size =3D iris_vpu33_buf_size, .vpu_ops =3D &iris_vpu35_ops, @@ -1196,7 +1193,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_sys_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 7e03d63578e1..ecd8a20fedbf 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_sys_ops->sys_get_instance(); if (!inst) return -ENOMEM; =20 --=20 2.47.3 From nobody Thu Apr 2 14:06:37 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 B4F1739B49D for ; Fri, 27 Mar 2026 23:29:07 +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=1774654149; cv=none; b=dmyHiu7QHHTfOXtWH2BcBG+JUZjhrl+EDdS/2QbFqgLmAzR1GFdzlxSdRAi3hcnTLO7dPDLwGkQRBIqqnxQrWJ6T5I795r8Glf0CcqiOVJLgfKXV0tADAH6PPwZzcMEg0P6beIOAoL1tiLJOhy+ZIdAynhCXAZtzZ/bB+FRcOy0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774654149; c=relaxed/simple; bh=LyKW9a4ahjfp9UqYl+c9Z+AjjY5xRtESGt5zAt7he4s=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=RFw/0GTmt7jlYEAv48H1/ibBRBoIzsuxUpFXgB0MXtx2dZOJ0FOMZUYDeFqrSDEpoBWE8HcYcR/j5WP9/ACPIKjFWlzbL7Zw4ACopJueDxw58jdkTlRRL1j+RYmgKENzTu3y6uk54EmITiQPsaBRJYFikszxdTaWqJgDeJZibH4= 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=o6iB1hCF; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=DBwWPjD7; 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="o6iB1hCF"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="DBwWPjD7" 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 62RN4MTc3833901 for ; Fri, 27 Mar 2026 23:29:07 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= ZhDAQJJ+GZc5YlpYLZVgOxWSZEdxeXyNt/r9yrd96NU=; b=o6iB1hCFdxQu864u EnsTH2k7MIpwhD47J21IwY0zXdMoq5KXeYGKm81JD5mTa8kr1RfNMzFYn+kReusI 3TbS1gYnw0kMv8qi/+nnKYOjyb8ViO2aFA0umpfoyUPukbqcNYI/B/uSLKQHdJ9a 7XWAv/zUg2H4uEB6+NWx6lFwsCdoitVx9nukiB2bhECWbOH1MlpqpJWWvjd0kZqs tKgux72qS2TqVqRXENJq1K0eUpoXaAzRSuqYNCy8Hb2j8WVJS6BJwfqwv0xTPvME cgCNou7rK/GwwLDbUeKzTY2ppo7xPla1GEfZAu36sYJ1fYsEK2aEU/dSs1kBQKYS IY2tcw== Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d5y2grrcc-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 27 Mar 2026 23:29:07 +0000 (GMT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-50925fed647so82541741cf.3 for ; Fri, 27 Mar 2026 16:29:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1774654146; x=1775258946; 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=ZhDAQJJ+GZc5YlpYLZVgOxWSZEdxeXyNt/r9yrd96NU=; b=DBwWPjD7Llbcyix6yhHkpOhj/ruFGttihJjT6rwaFVRZ5iuIi6LQDoMUWAADJfXWLB nW88Dcw6VD5WcIzmjiK3ZwXNkJOtyH25Y7IS7UQBbL9+1QhWnkcxmzxTuD1OfiEl7/qS A9LrjdmzwM4RlNGehRkBQYPe8wlYLPh+GvT3RCdqZyrZREA9bp/ZTkTEOlpI5P/WHlef rUkhoeqqTaUm0TJF3ASsKDB5Gcuff7WtlRtLFZg8qzDZqdwm5CewMJ1rv4EcWUFgQXDK 7h8TBGSnv1AaaDc5LRcplpw/7CAhmy/6qnz51PWB+ZKG7HwPF2Ti7ERcOuiZYIAdEjiZ 7tRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774654146; x=1775258946; 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=ZhDAQJJ+GZc5YlpYLZVgOxWSZEdxeXyNt/r9yrd96NU=; b=ejEEyHZXX/A6/5G3I2vJLVlUVIM4iprcLmmCp3ArcK71cpR364t8o9qcUIF9P6LHo/ NyPKEwcTb/YV8vq747cF7r0l2RJ6Iz/usFrqTSM9UOAscw+h5IE018A0hqE0/LXQ/AMN cQQ/I0SOzOdczvlLNx2Vy2Fodh8gYb2u9ocHFkIqv8JytRAH6ou5URNyjKqi1eSg7I/6 rz6KY5Rir24xr7+m6NEkJPofH7+CABFUJyNHRPD3sfdim7/avoi2wNgaLAD/vZJDAXzQ fSpseEbgglshvVgRcZ31HvF36sJjDXhf5UkgkCphp/yUPnOj2cckbSqi3Na1e2wQpQuL ohyQ== X-Forwarded-Encrypted: i=1; AJvYcCXkNx7Qp63oIJ5UeUhl9iO2nTL0uusQP1zZR34q5RtRW2pCYb8ZFjnH7GU0hJU7Bi9+1TJVtYOQ6c1Cjk0=@vger.kernel.org X-Gm-Message-State: AOJu0YyrMOzG59q7f5rQLc8A9ZaVunG+qpwoFIDNRT8jLznI67+WJhZR cREYMCSHcyor6LiAd29r8IWrMnmvYAgT70d0FVCetwqviVlKyWkvSPIiNJFMImmOFxtTe1JUY+1 PvJQyya3HZuz2Q3r/sSJO/94c0msRnDlNQDp1fBoGMA1WCF1+R/MfM7Quus998RGoXPs= X-Gm-Gg: ATEYQzzwN+jhFL8lZiYGtv6VY9tb6CuPLrG7KsG7RzGnsKy8e5NQ+iHqtvHek/tshnf ntG1GlMhnZWbCjJcQShn2bCOSWo4cx7zfoZjDBCQ4w0n6U8vLCsenu5ZhqVK3xlDAJgCrNypOp0 v8EcHB9A87MwhLZT7c0grtDnJj49C4EBEw+3/aV7oZSgGSuajkqEMsoaE8PGTPmHn4jLzS7Ip/+ yCztygByPemIZRbpeGH//NUK8N0xOM94oLj+xfNdCDxfQWMlJEJrrNXdlYfKkjg1wwAPxWXmyHr /7Vk9oLQKDEgpjEv40yrGUUTc5CQNI1RL9Pxez8XVTo2B6NoO42uBC+w/PQuXw14E3Tf+po0yD2 G2m1vIOwj/uKXkSMd1YUWrQ1m2VgxWpMJIaw22C4KtKbvlE1Jh91S5VT7hNrMxhCg30WqGkubx/ 9ZydwKVEy+7TOGnONanfVBoeK+eY+2qyzJfhQ= X-Received: by 2002:a05:622a:345:b0:50b:7113:7170 with SMTP id d75a77b69052e-50ba395d15cmr60863051cf.39.1774654146003; Fri, 27 Mar 2026 16:29:06 -0700 (PDT) X-Received: by 2002:a05:622a:345:b0:50b:7113:7170 with SMTP id d75a77b69052e-50ba395d15cmr60862691cf.39.1774654145589; Fri, 27 Mar 2026 16:29:05 -0700 (PDT) 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 38308e7fff4ca-38c83729522sm1177991fa.14.2026.03.27.16.29.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Mar 2026 16:29:03 -0700 (PDT) From: Dmitry Baryshkov Date: Sat, 28 Mar 2026 01:28:42 +0200 Subject: [PATCH v10 07/11] media: qcom: iris: drop hw_response_timeout_val from 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: <20260328-iris-platform-data-v10-7-46b92bfe7b52@oss.qualcomm.com> References: <20260328-iris-platform-data-v10-0-46b92bfe7b52@oss.qualcomm.com> In-Reply-To: <20260328-iris-platform-data-v10-0-46b92bfe7b52@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.15.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=5819; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=LyKW9a4ahjfp9UqYl+c9Z+AjjY5xRtESGt5zAt7he4s=; b=kA0DAAoBizyKPgIpKNUByyZiAGnHEqjIotzbXdYr8CW0X4SWcrOF9UoePc8sSmrUVE6Tv5y2q YkBMwQAAQoAHRYhBExwhJVcsmNW8LiVf4s8ij4CKSjVBQJpxxKoAAoJEIs8ij4CKSjVRIEH/iaw 4KfjIU95Dn5u0BzSUIOCaqSnj6ozDgo8bb7BAfgTkpee+WfdkHPhgWWcWj4aPV2iTVAv0dLxSgd n/LPDFx1DvqwZdPLZLiIaxAc4dCdiTHSpbtRxMCZiEKS9xOVUIcBs6uv1jD+dDtkff0Tm/zyiq1 N9ErG22nYAOwcptBFtXzCbry7pZtEM9/xuxos6a+q6bLIHoLB2IA3wh/ksljDMqWF54Q83XLsmx L7CDm/HK+xNGuubzFHSuakcZFYFVbAjpXphyLvhn75F3b5AX5BbEs77D925boPkU4g+icS9Wq+q jkshVEIGDZo2ReXF9z3OhPQCRwi8Ue3LgayMpVc= X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzI3MDE2NSBTYWx0ZWRfX6lcTzdaToT7I MaL5/lyu2mPL30QCDcd6a3h6LTPab2Byxb8NkDCwUBs2qLvXFDJrFLMQgz5cQ6QwzsuQdXNBLGY BcVp+4jG3nTuWMECmU6EW+XC67z1RE0mhbbbnR1Br9MZWbo5dViC2V5W9+7ie2NsfRjZ2txbTAV 3Gx9KlWJ2g8Uu3Zu/ICkbRL0cMNhR0VreKrlnzlCX5ErsXYBRF9nL0W/+4+WJxxjiKDMPRzxc1W zg80uC1d1SIQsIM7vyald64y1LDqlL1TTr2k4KQHGyNkgE5l/i33xv4CgL00Ny9BL/rVMGVTegq vo8V6rJS6OD/8JeNpPyJGHWjVxHM2ldS7NdzURXzy0BM57l/SX4RXu8xKwbPHYgBr9IVeY9w9Bt LrL2XfSbmhUG5nTFkY7g4JyYWcyEjk6mxwMijefVRDcvJqnsCQBJ1v95cuzA2xtgNcxLcIuxHi8 MuUU39NSt5r9G4OschA== X-Proofpoint-GUID: F0jR_M6PZs5vHk0DDPj18pUDk2uZVcFL X-Authority-Analysis: v=2.4 cv=M7RA6iws c=1 sm=1 tr=0 ts=69c712c3 cx=c_pps a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=EUspDBNiAAAA:8 a=qqQcAvOoDgVuqrtd-OoA:9 a=QEXdDO2ut3YA:10 a=dawVfQjAaf238kedN5IG:22 X-Proofpoint-ORIG-GUID: F0jR_M6PZs5vHk0DDPj18pUDk2uZVcFL X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-27_02,2026-03-26_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 suspectscore=0 priorityscore=1501 lowpriorityscore=0 malwarescore=0 clxscore=1015 phishscore=0 adultscore=0 spamscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603270165 The HW response time is a constant between platforms. Remove it from the iris_platform_data structure and use it directly. Suggested-by: Vikash Garodia Reviewed-by: Vikash Garodia Reviewed-by: Dikshita Agarwal Signed-off-by: Dmitry Baryshkov --- drivers/media/platform/qcom/iris/iris_core.c | 3 +-- drivers/media/platform/qcom/iris/iris_platform_common.h | 1 - drivers/media/platform/qcom/iris/iris_platform_gen1.c | 2 -- drivers/media/platform/qcom/iris/iris_platform_gen2.c | 4 ---- drivers/media/platform/qcom/iris/iris_utils.c | 5 +---- 5 files changed, 2 insertions(+), 13 deletions(-) diff --git a/drivers/media/platform/qcom/iris/iris_core.c b/drivers/media/p= latform/qcom/iris/iris_core.c index 8406c48d635b..e6141012cd3d 100644 --- a/drivers/media/platform/qcom/iris/iris_core.c +++ b/drivers/media/platform/qcom/iris/iris_core.c @@ -28,14 +28,13 @@ void iris_core_deinit(struct iris_core *core) =20 static int iris_wait_for_system_response(struct iris_core *core) { - u32 hw_response_timeout_val =3D core->iris_platform_data->hw_response_tim= eout; int ret; =20 if (core->state =3D=3D IRIS_CORE_ERROR) return -EIO; =20 ret =3D wait_for_completion_timeout(&core->core_init_done, - msecs_to_jiffies(hw_response_timeout_val)); + msecs_to_jiffies(HW_RESPONSE_TIMEOUT_VALUE)); if (!ret) { core->state =3D IRIS_CORE_ERROR; return -ETIMEDOUT; diff --git a/drivers/media/platform/qcom/iris/iris_platform_common.h b/driv= ers/media/platform/qcom/iris/iris_platform_common.h index d1daef2d874b..e8a219023aaa 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_common.h +++ b/drivers/media/platform/qcom/iris/iris_platform_common.h @@ -232,7 +232,6 @@ struct iris_platform_data { const struct tz_cp_config *tz_cp_config_data; u32 tz_cp_config_data_size; u32 core_arch; - u32 hw_response_timeout; u32 num_vpp_pipe; bool no_aon; u32 max_session_count; diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen1.c b/driver= s/media/platform/qcom/iris/iris_platform_gen1.c index 9925a893b404..6ed4c4ae4056 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen1.c +++ b/drivers/media/platform/qcom/iris/iris_platform_gen1.c @@ -361,7 +361,6 @@ const struct iris_platform_data sm8250_data =3D { .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, .num_vpp_pipe =3D 4, .max_session_count =3D 16, .max_core_mbpf =3D NUM_MBS_8K, @@ -410,7 +409,6 @@ const struct iris_platform_data sc7280_data =3D { .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, .num_vpp_pipe =3D 1, .no_aon =3D true, .max_session_count =3D 16, diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen2.c b/driver= s/media/platform/qcom/iris/iris_platform_gen2.c index 10a972f96cbe..abe523db45c2 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen2.c +++ b/drivers/media/platform/qcom/iris/iris_platform_gen2.c @@ -936,7 +936,6 @@ const struct iris_platform_data sm8550_data =3D { .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, @@ -1036,7 +1035,6 @@ const struct iris_platform_data sm8650_data =3D { .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, @@ -1127,7 +1125,6 @@ const struct iris_platform_data sm8750_data =3D { .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, @@ -1222,7 +1219,6 @@ const struct iris_platform_data qcs8300_data =3D { .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, diff --git a/drivers/media/platform/qcom/iris/iris_utils.c b/drivers/media/= platform/qcom/iris/iris_utils.c index cfc5b576ec56..29b07d88507e 100644 --- a/drivers/media/platform/qcom/iris/iris_utils.c +++ b/drivers/media/platform/qcom/iris/iris_utils.c @@ -55,16 +55,13 @@ void iris_helper_buffers_done(struct iris_inst *inst, u= nsigned int type, =20 int iris_wait_for_session_response(struct iris_inst *inst, bool is_flush) { - struct iris_core *core =3D inst->core; - u32 hw_response_timeout_val; struct completion *done; int ret; =20 - hw_response_timeout_val =3D core->iris_platform_data->hw_response_timeout; done =3D is_flush ? &inst->flush_completion : &inst->completion; =20 mutex_unlock(&inst->lock); - ret =3D wait_for_completion_timeout(done, msecs_to_jiffies(hw_response_ti= meout_val)); + ret =3D wait_for_completion_timeout(done, msecs_to_jiffies(HW_RESPONSE_TI= MEOUT_VALUE)); mutex_lock(&inst->lock); if (!ret) { iris_inst_change_state(inst, IRIS_INST_ERROR); --=20 2.47.3 From nobody Thu Apr 2 14:06:37 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 CC8DE392C5A for ; Fri, 27 Mar 2026 23:29:12 +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=1774654155; cv=none; b=FX/MeQxk0QGLJx3FaEY8VTPU93yM1+dLH2RKd3kUxQA5ZjVIvnj2IrzoZwK2d47hYd9vhOtWH2UBnKlJeznvvZ89Slr8MqS1PguW7v0joTUzWpKhcikgNTEjn6snsEAmP4/X+61ly86KVQTTS1ND+UitwT2wzf6cscdN8g41CU4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774654155; c=relaxed/simple; bh=UhZWNd6l0HxA/VI+9hfnxPG7vSjIOIWwoQlRnWC6Ofw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=W21Ri7YlYhxJcnmJCfUGQ2iKx8zxMO9hqfSP0VdPqAFZLfnWBDME3R/bcB/hcxZwYi02XWByG/+kUoCjyTh2fNHF2qJ3voVY0U0nRMr1G3MvQ6+9N92gQRTqoJPHn+WT0ShrUeAHG4CfBEGtXRZ1dO/V60+k347bYPixFhi7gUg= 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=fkeG08n3; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=U6qyCSiO; 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="fkeG08n3"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="U6qyCSiO" 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 62RN425i3991264 for ; Fri, 27 Mar 2026 23:29:12 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= BlvHsT8F7+tcl4hnQRhDGYrJgeZ7rNNhMur463hE0d0=; b=fkeG08n3B17B+QiH aw9g9H/k5I1+X1vz9dp5EN5ypw++CnxW95XKZvfhaK8nPFwrBl2H/baR7HzROM0c vz78tRTbap5KQHreA7e265kVdrnZSN5+dMQy31ZfvuSsEtUxLeSPH/CofPa9JYuO ei46qpn7H00ss2/X/0pZbFhPb5wUAI2jv/G6o7JoxzH1YhZdLmVaLJcCnhNXib3M Y9kpfjSkRsAiHSP2LRUSOmKQ0HItUY50GdADbYeCndlMwZVzo+tvuk2bkHiTN5Tm uHzJnTMYEnMuVVMdj++4gOSzhJgF4OXoT2MV6bxazhF+Jb0xo65+RKYmdGAMBdc5 tQKiOg== Received: from mail-qv1-f72.google.com (mail-qv1-f72.google.com [209.85.219.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d61m7091q-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 27 Mar 2026 23:29:11 +0000 (GMT) Received: by mail-qv1-f72.google.com with SMTP id 6a1803df08f44-89a0684d05dso110308166d6.1 for ; Fri, 27 Mar 2026 16:29:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1774654151; x=1775258951; 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=BlvHsT8F7+tcl4hnQRhDGYrJgeZ7rNNhMur463hE0d0=; b=U6qyCSiO1oci+iWnkHbO3zaDj81XDYA2vBIiq+wfh6aL3dE8h5fGfozKCFLaZ+nA5h m4r78wYFd0+UPMNrAUtMi0tx7Dx+f1Jg0zu5yysNpor+ilozNgQCPdFwMJVMxgRBTmsZ JAR+4bQfbR9m4Jgb8+Skz2vYC3N2CvvD4L+3sr2wr35IdGbhhCSDUC/aa+MIkjAUNPTS soJFkIrOBn4oU+O8nCLdHO1Mo6ige6i5AkDbH0biWW/5cFZMzWwDBJiudSLGn9AZyZNo AwNVqiR1ub6c5hkNFWhysrECWrDZL3lYqJUylDzWXjXXOqAHu1WR/SbKiNSNytl9FX5V 6EcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774654151; x=1775258951; 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=BlvHsT8F7+tcl4hnQRhDGYrJgeZ7rNNhMur463hE0d0=; b=Uz9wGeByuusQsnoO8ffqGLbS0hvCnySSYoxf0GRXADtCU0jxfnBFZLyLUSKz7IzNYT P7dfYcIkls5HlKncUqt2VO5eAL3sfp0Mr3N/XRbKrex6bIV8mdP6Vpuhr5gmanFOuH8a xiTCO+gY3LArjTrk4QW40dSwZUZSMZHPZ9o6XQEJIf9FetbPbGAkKNmALmXN37Lkvzds 4BoTl9MDaHJfltg8BY1CRbdQkLunBaxzCiS2R0ASItx5VWd1xPabecEhStSiyI4ANScH crGrZI+WMUx9+MVbsn1cvnjUT1W85l4lKrRZpUMthqUI4gvKfhDbMvavhjzrB1fh9LkG q+gQ== X-Forwarded-Encrypted: i=1; AJvYcCVdAnWH/mKX4Qz/xPmBLVFUR5imOkqRaynVH3g3txaKdnbOMR7/uvK7wEn7kjhtIzjJQ9EA6vBixGO65MQ=@vger.kernel.org X-Gm-Message-State: AOJu0YzF+Ptcuzw8ZYP1njirC2QdDc65VCFGiAR0nU+v/YEczFf4Bfzn 9/VgITgc7cR43s7Fll4dTNqHdDdjwH2rA55agQfJ+sQaE2cVe6KFGCglnsQ9lv0zx+jEccCSwFy 16RbMWVAxhdZwQW6RvnY5HGZ3YJwdx0+FF1R7vfX5qLsG+wznEFm/iwt/LLyXOX/GJ7U= X-Gm-Gg: ATEYQzzZ/ThUzgUcnLSeuId17CPXktiD66ky8O23VDzf/8zKrD5gWwSAYPvXq4J0a97 uYkl/F6XRCIPpSUJm913MOTmBqWlwWw95xNtU/918liYmzoWeLULgU45m0+25LzDLrOeMWPNDv3 ttFuSKVqWj1FofAjHRx8/rV/uvjIv+s1PU46OzzUygy2uNkAlB76O1GzQn5RkHLSK3gH34hX2av r/iWodLGfABuMCfv5SXnTyWlKvBj1sFr6o78ltA1xAmL8hnMK2yt55qFOeaHYw84ye/48fFFEda f8kVYE9AltSyebjjLpFn9l33Bt87AyKxZBAxWIgXr7mwSQoASeu26IlNUnZH7tw+QyP/9E/paPy SjN/jbL96U5JO4SPNopUb/NXerP83WHBWxxgf1S8LmdFIP8UlAg/4VsbwRAo/rNrgK6VzwMd+Cr anwlJQ2XyoRhifo7gGcG2e5rwT0NB9QFr/pTQ= X-Received: by 2002:ac8:7d05:0:b0:506:baf9:5dd9 with SMTP id d75a77b69052e-50b993e4965mr90205631cf.17.1774654150404; Fri, 27 Mar 2026 16:29:10 -0700 (PDT) X-Received: by 2002:ac8:7d05:0:b0:506:baf9:5dd9 with SMTP id d75a77b69052e-50b993e4965mr90205431cf.17.1774654149765; Fri, 27 Mar 2026 16:29:09 -0700 (PDT) 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 38308e7fff4ca-38c83729522sm1177991fa.14.2026.03.27.16.29.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Mar 2026 16:29:07 -0700 (PDT) From: Dmitry Baryshkov Date: Sat, 28 Mar 2026 01:28:43 +0200 Subject: [PATCH v10 08/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: <20260328-iris-platform-data-v10-8-46b92bfe7b52@oss.qualcomm.com> References: <20260328-iris-platform-data-v10-0-46b92bfe7b52@oss.qualcomm.com> In-Reply-To: <20260328-iris-platform-data-v10-0-46b92bfe7b52@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.15.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=45663; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=UhZWNd6l0HxA/VI+9hfnxPG7vSjIOIWwoQlRnWC6Ofw=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpxxKoQiiVkp54K/QIII78Y51rqBD1sWo1+5SiC u+aJfn8om6JATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaccSqAAKCRCLPIo+Aiko 1X9gB/9LJLPA0b86pFuVCiiaptODHTZJ6ojZ0yW5cjaQOlHrKXbCqgHAInkyc5RMb+aOwvJB0L9 pKDprfzS3/DdG5AdbjUdlJ5crK06hPTweMEYrcymPPKulxTeFGO8gGOXUSPtoo9uRaNrRz/OVjJ /6DbLBjHhbUsMeSVVtd9lAK3MjJlH128Ub5ZnsRbAyAVHxyBYGQsMLigEoMk+RRycOBCL3W6FZG 6kRvub/WKzHgwWvyvT5A73GjKVZt7wyoWH+UVLF+dcNrAkojOVHtX3bEHsgxM5Kd/ZKTDPv1DA4 zxCyK5P4CZ7kNcDpNGq5s1AKtjvryjbIUWEcT096Ai3rO/el X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzI3MDE2NSBTYWx0ZWRfX2D0DyC5d6mk8 8jMUJSb8ICs9xCCnJy9UQ+1zpN9Kg7z032WTSX/1bCTSLTkSvcTakJ9w+xieGwu09BKQuRHQ4/1 V+2F1p3WV7gLS98/fcSJ+t+MFzbtKnMJO822WjJdvPevFoSGJI+RFvx0pZi/+vKy6OyCfvjAEeN 1UY1g0dp8CKiNfRTdO6VGWUJTEmMuaKovN8msNnBnXbFhpxLvOz1rVSqi1la140GOeXYsAjB3F4 8OFCkvmiMJsWbX954rHKQZNMC/KaveiWPDk5ZSD1NaHhzL/EQD4SgLayRhmv8kZtknSMSuFpzB4 JadNSNQcSCz1H+yMMVfBa1i+ziHRt6+ovQnTUUbOG2KR+nnWnkMQP7C19zD2vikOTaSSs1Ixg36 9Dvup5Vc/Y09Ds9e8INFoHKfaKI/jrHjrx/21IJw+qACzI5NnutICQ31VVVDCv6i1cou4OxoT9w 4olzSEIDueNniiax25g== X-Proofpoint-ORIG-GUID: s2zqIdYmYF0F23dz2yv5v7S-OoBV4LyP X-Authority-Analysis: v=2.4 cv=aoC/yCZV c=1 sm=1 tr=0 ts=69c712c7 cx=c_pps a=7E5Bxpl4vBhpaufnMqZlrw==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=EUspDBNiAAAA:8 a=coRdw7kJwGx05Zhg8iIA:9 a=QEXdDO2ut3YA:10 a=pJ04lnu7RYOZP9TFuWaZ:22 X-Proofpoint-GUID: s2zqIdYmYF0F23dz2yv5v7S-OoBV4LyP X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-27_02,2026-03-26_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 impostorscore=0 spamscore=0 malwarescore=0 lowpriorityscore=0 bulkscore=0 phishscore=0 suspectscore=0 clxscore=1015 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603270165 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. Reviewed-by: Dikshita Agarwal Signed-off-by: Dmitry Baryshkov --- drivers/media/platform/qcom/iris/iris_buffer.c | 82 +++---- drivers/media/platform/qcom/iris/iris_core.h | 2 + drivers/media/platform/qcom/iris/iris_ctrls.c | 8 +- .../platform/qcom/iris/iris_hfi_gen1_command.c | 8 +- .../platform/qcom/iris/iris_hfi_gen2_command.c | 66 +++--- .../platform/qcom/iris/iris_platform_common.h | 81 ++++--- .../media/platform/qcom/iris/iris_platform_gen1.c | 67 +++--- .../media/platform/qcom/iris/iris_platform_gen2.c | 248 ++++-------------= ---- drivers/media/platform/qcom/iris/iris_probe.c | 3 +- drivers/media/platform/qcom/iris/iris_vidc.c | 10 +- drivers/media/platform/qcom/iris/iris_vpu_common.c | 2 +- 11 files changed, 206 insertions(+), 371 deletions(-) diff --git a/drivers/media/platform/qcom/iris/iris_buffer.c b/drivers/media= /platform/qcom/iris/iris_buffer.c index f55b7c608116..fbe136360aa1 100644 --- a/drivers/media/platform/qcom/iris/iris_buffer.c +++ b/drivers/media/platform/qcom/iris/iris_buffer.c @@ -301,31 +301,31 @@ static void iris_fill_internal_buf_info(struct iris_i= nst *inst, =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 1592681640ab..e0ca245c8c63 100644 --- a/drivers/media/platform/qcom/iris/iris_core.h +++ b/drivers/media/platform/qcom/iris/iris_core.h @@ -54,6 +54,7 @@ struct qcom_ubwc_cfg_data; * @resets: table of iris reset clocks * @controller_resets: table of controller reset clocks * @iris_platform_data: a structure for platform data + * @iris_firmware_data: a pointer to the firmware (or HFI) specific data * @ubwc_cfg: UBWC configuration for the platform * @state: current state of core * @iface_q_table_daddr: device address for interface queue table memory @@ -97,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 5a24aa869b2d..ef7adac3764d 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 0017ade4adbd..3fb90a466a64 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c @@ -1033,8 +1033,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 core->iris_firmware_data->dec_input_config_params_defa= ult; + config_params_size =3D core->iris_firmware_data->dec_input_config_params= _default_size; 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 +1043,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 core->iris_firmware_data->enc_input_config_params; + config_params_size =3D core->iris_firmware_data->enc_input_config_params= _size; 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 639b75fca1ab..c90b22a75bc5 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c @@ -601,7 +601,7 @@ static int iris_hfi_gen2_set_super_block(struct iris_in= st *inst, u32 plane) =20 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; + const struct iris_firmware_data *fdata =3D inst->core->iris_firmware_data; u32 config_params_size =3D 0, i, j; const u32 *config_params =3D NULL; int ret; @@ -630,31 +630,31 @@ 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 fdata->dec_input_config_params_default; + config_params_size =3D fdata->dec_input_config_params_default_size; } 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 fdata->dec_input_config_params_hevc; + config_params_size =3D fdata->dec_input_config_params_hevc_size; } 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 fdata->dec_input_config_params_vp9; + config_params_size =3D fdata->dec_input_config_params_vp9_size; } 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 fdata->dec_input_config_params_av1; + config_params_size =3D fdata->dec_input_config_params_av1_size; } 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 fdata->dec_output_config_params; + config_params_size =3D fdata->dec_output_config_params_size; } } 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 fdata->enc_input_config_params; + config_params_size =3D fdata->enc_input_config_params_size; } else { - config_params =3D pdata->enc_output_config_params; - config_params_size =3D pdata->enc_output_config_params_size; + config_params =3D fdata->enc_output_config_params; + config_params_size =3D fdata->enc_output_config_params_size; } } =20 @@ -849,24 +849,24 @@ 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 =3D core->iris_firmware_data->dec_input_config_params_defau= lt; change_param_size =3D - core->iris_platform_data->dec_input_config_params_default_size; + core->iris_firmware_data->dec_input_config_params_default_size; break; case V4L2_PIX_FMT_HEVC: - change_param =3D core->iris_platform_data->dec_input_config_params_hevc; + change_param =3D core->iris_firmware_data->dec_input_config_params_hevc; change_param_size =3D - core->iris_platform_data->dec_input_config_params_hevc_size; + core->iris_firmware_data->dec_input_config_params_hevc_size; break; case V4L2_PIX_FMT_VP9: - change_param =3D core->iris_platform_data->dec_input_config_params_vp9; + change_param =3D core->iris_firmware_data->dec_input_config_params_vp9; change_param_size =3D - core->iris_platform_data->dec_input_config_params_vp9_size; + core->iris_firmware_data->dec_input_config_params_vp9_size; break; case V4L2_PIX_FMT_AV1: - change_param =3D core->iris_platform_data->dec_input_config_params_av1; + change_param =3D core->iris_firmware_data->dec_input_config_params_av1; change_param_size =3D - core->iris_platform_data->dec_input_config_params_av1_size; + core->iris_firmware_data->dec_input_config_params_av1_size; break; } =20 @@ -996,29 +996,29 @@ static int iris_hfi_gen2_subscribe_property(struct ir= is_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 core->iris_firmware_data->dec_input_prop_size; + subcribe_prop =3D core->iris_firmware_data->dec_input_prop; } else { switch (inst->codec) { case V4L2_PIX_FMT_H264: - subcribe_prop =3D core->iris_platform_data->dec_output_prop_avc; + subcribe_prop =3D core->iris_firmware_data->dec_output_prop_avc; subscribe_prop_size =3D - core->iris_platform_data->dec_output_prop_avc_size; + core->iris_firmware_data->dec_output_prop_avc_size; break; case V4L2_PIX_FMT_HEVC: - subcribe_prop =3D core->iris_platform_data->dec_output_prop_hevc; + subcribe_prop =3D core->iris_firmware_data->dec_output_prop_hevc; subscribe_prop_size =3D - core->iris_platform_data->dec_output_prop_hevc_size; + core->iris_firmware_data->dec_output_prop_hevc_size; break; case V4L2_PIX_FMT_VP9: - subcribe_prop =3D core->iris_platform_data->dec_output_prop_vp9; + subcribe_prop =3D core->iris_firmware_data->dec_output_prop_vp9; subscribe_prop_size =3D - core->iris_platform_data->dec_output_prop_vp9_size; + core->iris_firmware_data->dec_output_prop_vp9_size; break; case V4L2_PIX_FMT_AV1: - subcribe_prop =3D core->iris_platform_data->dec_output_prop_av1; + subcribe_prop =3D core->iris_firmware_data->dec_output_prop_av1; subscribe_prop_size =3D - core->iris_platform_data->dec_output_prop_av1_size; + core->iris_firmware_data->dec_output_prop_av1_size; break; } } diff --git a/drivers/media/platform/qcom/iris/iris_platform_common.h b/driv= ers/media/platform/qcom/iris/iris_platform_common.h index e8a219023aaa..5af6d9f49f01 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_common.h +++ b/drivers/media/platform/qcom/iris/iris_platform_common.h @@ -201,44 +201,16 @@ 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 vpu_ops *vpu_ops; - const struct icc_info *icc_tbl; - unsigned int icc_tbl_size; - const struct bw_info *bw_tbl_dec; - unsigned int bw_tbl_dec_size; - const char * const *pmdomain_tbl; - unsigned int pmdomain_tbl_size; - const char * const *opp_pd_tbl; - unsigned int opp_pd_tbl_size; - const struct platform_clk_data *clk_tbl; - const char * const *opp_clk_tbl; - unsigned int clk_tbl_size; - const char * const *clk_rst_tbl; - unsigned int clk_rst_tbl_size; - const char * const *controller_rst_tbl; - unsigned int controller_rst_tbl_size; - u64 dma_mask; - const char *fwname; - struct iris_fmt *inst_iris_fmts; - u32 inst_iris_fmts_size; - struct platform_inst_caps *inst_caps; + + u32 core_arch; + 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; - u32 num_vpp_pipe; - bool no_aon; - u32 max_session_count; - /* max number of macroblocks per frame supported */ - 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; @@ -253,6 +225,7 @@ struct iris_platform_data { 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; @@ -263,6 +236,7 @@ struct iris_platform_data { 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; @@ -273,4 +247,45 @@ struct iris_platform_data { unsigned int enc_op_int_buf_tbl_size; }; =20 +struct iris_platform_data { + /* + * XXX: remove firmware_data pointer and consider moving + * get_vpu_buffer_size pointer once we have platforms supporting both + * firmware kinds. + */ + const struct iris_firmware_data *firmware_data; + u32 (*get_vpu_buffer_size)(struct iris_inst *inst, enum iris_buffer_type = buffer_type); + + const struct vpu_ops *vpu_ops; + const struct icc_info *icc_tbl; + unsigned int icc_tbl_size; + const struct bw_info *bw_tbl_dec; + unsigned int bw_tbl_dec_size; + const char * const *pmdomain_tbl; + unsigned int pmdomain_tbl_size; + const char * const *opp_pd_tbl; + unsigned int opp_pd_tbl_size; + const struct platform_clk_data *clk_tbl; + const char * const *opp_clk_tbl; + unsigned int clk_tbl_size; + const char * const *clk_rst_tbl; + unsigned int clk_rst_tbl_size; + const char * const *controller_rst_tbl; + unsigned int controller_rst_tbl_size; + u64 dma_mask; + const char *fwname; + struct iris_fmt *inst_iris_fmts; + u32 inst_iris_fmts_size; + struct platform_inst_caps *inst_caps; + const struct tz_cp_config *tz_cp_config_data; + u32 tz_cp_config_data_size; + u32 num_vpp_pipe; + bool no_aon; + u32 max_session_count; + /* max number of macroblocks per frame supported */ + u32 max_core_mbpf; + /* max number of macroblocks per second supported */ + u32 max_core_mbps; +}; + #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 6ed4c4ae4056..8875f90d487e 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen1.c +++ b/drivers/media/platform/qcom/iris/iris_platform_gen1.c @@ -332,8 +332,33 @@ 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_sys_ops_init, + + .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_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), + + .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, .get_vpu_buffer_size =3D iris_vpu_buf_size, .vpu_ops =3D &iris_vpu2_ops, .icc_tbl =3D sm8250_icc_table, @@ -355,35 +380,16 @@ 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), .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, - .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), - - .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_sys_ops_init, + .firmware_data =3D &iris_hfi_gen1_data, .get_vpu_buffer_size =3D iris_vpu_buf_size, .vpu_ops =3D &iris_vpu2_ops, .icc_tbl =3D sm8250_icc_table, @@ -403,10 +409,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), .num_vpp_pipe =3D 1, @@ -415,19 +417,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_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), - - .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 abe523db45c2..05fbab276100 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen2.c +++ b/drivers/media/platform/qcom/iris/iris_platform_gen2.c @@ -906,40 +906,16 @@ 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_sys_ops_init, - .get_vpu_buffer_size =3D iris_vpu_buf_size, - .vpu_ops =3D &iris_vpu3_ops, - .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, + + .core_arch =3D VIDEO_ARCH_LX, + .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, - .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, + .dec_input_config_params_default =3D sm8550_vdec_input_config_params_default, .dec_input_config_params_default_size =3D @@ -996,6 +972,37 @@ const struct iris_platform_data sm8550_data =3D { .enc_op_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_enc_op_int_buf_tbl), }; =20 +const struct iris_platform_data sm8550_data =3D { + .firmware_data =3D &iris_hfi_gen2_data, + .get_vpu_buffer_size =3D iris_vpu_buf_size, + .vpu_ops =3D &iris_vpu3_ops, + .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), + .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 @@ -1004,7 +1011,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_sys_ops_init, + .firmware_data =3D &iris_hfi_gen2_data, .get_vpu_buffer_size =3D iris_vpu33_buf_size, .vpu_ops =3D &iris_vpu33_ops, .icc_tbl =3D sm8550_icc_table, @@ -1028,75 +1035,16 @@ 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, .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, - .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), - - .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, - .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_sys_ops_init, + .firmware_data =3D &iris_hfi_gen2_data, .get_vpu_buffer_size =3D iris_vpu33_buf_size, .vpu_ops =3D &iris_vpu35_ops, .icc_tbl =3D sm8550_icc_table, @@ -1118,71 +1066,12 @@ 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, .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, - .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), - - .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, - .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 /* @@ -1190,7 +1079,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_sys_ops_init, + .firmware_data =3D &iris_hfi_gen2_data, .get_vpu_buffer_size =3D iris_vpu_buf_size, .vpu_ops =3D &iris_vpu3_ops, .icc_tbl =3D sm8550_icc_table, @@ -1212,69 +1101,10 @@ 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, .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), - .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), - - .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, - .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 fa561f6a736c..dd87504c2e67 100644 --- a/drivers/media/platform/qcom/iris/iris_probe.c +++ b/drivers/media/platform/qcom/iris/iris_probe.c @@ -251,6 +251,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)) @@ -264,7 +265,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 ecd8a20fedbf..807c9a20b6ba 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++) { diff --git a/drivers/media/platform/qcom/iris/iris_vpu_common.c b/drivers/m= edia/platform/qcom/iris/iris_vpu_common.c index dbce5aeba06c..c6cfc1d9fd9e 100644 --- a/drivers/media/platform/qcom/iris/iris_vpu_common.c +++ b/drivers/media/platform/qcom/iris/iris_vpu_common.c @@ -63,7 +63,7 @@ static void iris_vpu_setup_ucregion_memory_map(struct iri= s_core *core) writel(QTBL_ENABLE, core->reg_base + QTBL_INFO); =20 if (core->sfr_daddr) { - value =3D (u32)core->sfr_daddr + core->iris_platform_data->core_arch; + value =3D (u32)core->sfr_daddr + core->iris_firmware_data->core_arch; writel(value, core->reg_base + SFR_ADDR); } =20 --=20 2.47.3 From nobody Thu Apr 2 14:06:37 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 5E24837E31D for ; Fri, 27 Mar 2026 23:29:16 +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=1774654158; cv=none; b=sDRFWorHfOoIaZ83NJPQgr5EdlaQc95Ei7bXE/kyN6li2ECU3bMjtkpYgHmdYTljAreorugeSdLpCHErCW4TaPxPEmYnq1WIs0gTuWG4hO102TVk9+H1mrrFZ41kIVft7xJ9y5pDzdiSI29VoUMw3oAtRrFi4taFVvxrOH3x8Og= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774654158; c=relaxed/simple; bh=kcfLdyf/i3n/sbqGsrBheZhzMefHPbw3GIuF/eF39z8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=h14UJxprMSgTS0i9U/iTdbmS99I3Jti5byAYnCGDmOLW9nDJdUuMdBba1du3sp1VS0EpdOYWnB8A4HNPB5HNRJwx14ICkdBrKDKURAYqlgRB7Q1aKMqgKnuM+kK08Z4KNNgWSe0lqR6/KIuZjM37KTdOz/4yiluC2WLnRC0BBnA= 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=Ru+Oz+FA; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=JH0AZIwQ; 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="Ru+Oz+FA"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="JH0AZIwQ" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62RN3nxa1525059 for ; Fri, 27 Mar 2026 23:29:15 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= SHGz70sVQAWjt0T4tpLvkWNhrXs1fZmLj6aUbGd/pwE=; b=Ru+Oz+FA68X11Kwh 84lihMEc484WM9ulcgznTvovn/idfWR1zSnyiD9VwnpSY9SXO8lRETlRiY3Lu7jT vLL5eFaHbxPCx8swOTWmtu40/8HWPcjY7E85pBEXoiuVUl0+Ql2K7fHhY+pUA64e SXDSIVgAECP+oz56+WZN0DrHyPaOAHekGUPqSGuG3N8QMwvM7ZkmzjHvv0Qj9ho1 5L9MW8cvsKt5dnJ5A3/m2VhuCJyIDA9Md4AqEG3Vg9GQuhhP4Ky/m+a1fbEn4wsD SRMHwMl7xTi8vydrvOblYbWEuJltjEGtU8VFbeDc8vWex0SxMdr6r0dK+Jo1EM53 bwkSaQ== Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d5vf6saw9-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 27 Mar 2026 23:29:15 +0000 (GMT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-5093a985e21so23059961cf.3 for ; Fri, 27 Mar 2026 16:29:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1774654155; x=1775258955; 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=SHGz70sVQAWjt0T4tpLvkWNhrXs1fZmLj6aUbGd/pwE=; b=JH0AZIwQ/JF5QAdCKHaScpGGve53J60gkdD5uZ1hzAHYCh+IhaOxvk9eqKDE7w63Ji C+ZvD2Fsh8DnfDVhOKPywoPeke0TtG7fYWrBvB7eszBT8P7pzsi2O9ZrzTzrgZRvQZhr +puCIy4/WfYgZkaEzMCs6MS2f331TL8YOhl0hBOiv1hoXq9BdOPxOa+dZYP47KjP6B8j vBNGQGHwpwOmkqElV10v1d2FpTM0AWmKlu7kpsVzR82YBA/RgJV/dgmDQiETPGcQ3hi8 l8rhV2ejdQerxaU3tCJo7nVDkWoE20BTsmgq+PcXuLk2cRyX5MTOjGVo/JKVU0wsGhbS GrKA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774654155; x=1775258955; 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=SHGz70sVQAWjt0T4tpLvkWNhrXs1fZmLj6aUbGd/pwE=; b=DrDwk7aKI5yqg/zrxDVUPmfCU3cV5fgwUjDj/onSlT4O4/8fxmhBYZ79vX4LcBMXUh Dfnib+9rwDmILiMyagIZAPzE2eJtpcus2njMuxorPaH28emaGQyYO6xewUEanWZ/bLUd fCnjV0tM7VGazT79KAL3YZdSdDAdVvTVlTQh+vqX4PVVvUMaVp4MidNYZcOGv+I6ZGHG FRD1N6cBarLqLy9Wy1P/5qcEQ2J8WMfTY8eN1s8sakn76g6vbQHjJ7pbcPqf05HUr8M6 md8svv4WMt18oROIPmLFZa2WTTwX3uLSbRZbDu9yEpw0OO91fT4fcJGKrm0AdP30NT3R Q/8Q== X-Forwarded-Encrypted: i=1; AJvYcCXDSL9l6tRHBElTcbLt9Z4HnI3cn2r+iYzqHc/DdvovGQnGyN3dsLSKeKYx7x4BQRX279lEw5ZLTVlP8LQ=@vger.kernel.org X-Gm-Message-State: AOJu0Yz4Zty1YnHcIdYV3ytHesp4lib+Ln0hZXCCcVfwnBTnSrplFzDg 0k3evatviW07I4MpgTEzGTqtahSLW1BrmPrMCFvoHiKLBcD+rC/v6ZNHyhxggKVPLLgPQgLlzDS v+tIXtfglt0gagNnDI9MT07YbGVJhWm0E9cByQebCCqzChzP2nMdi+ECdAJfnSWhfNyE= X-Gm-Gg: ATEYQzxtYwCKSJw1fXfKIiZIjgJNaqzMU93J1ToPuw523Yj3R2pypsCGGr9f3nWbBm4 gF7ypShBxf7p+NsFlhiX/6wIMq5/bUZKDtyhV3q1Aa8gi0Sm6MoTfNKorNr29uqnjMrrYyoKNQF j+9bSqZCjuklHZKSI6s4bE8EiiIpuAzpAo562fWxDLCds6d+pRTWkjtp+Di4hlZBtV4n1KZpV2/ +Cu4WcoUQuA2guydchowzkpbxyXIiOqZDwte1RFTCKdhaf4F9sDWoYF3ujTc+Ci5h6a/aoQSdQl jUQcXo2bykKZvMV9FPev1aC/a1gHIf6dmV0pLHrWXOzZUCGVxOmwbBzO6kffFyXKx5hW3eRun5C qM329qrfxT1dutUPYtwLe2JSQcJPIU7CFpkGg+6OMvG4Hd7v1oNS6htIfYHwL/Na4k5JMgm/MUW zbqPBFuNH9XajZOn8IYjH7jo/PUylbx5+44mw= X-Received: by 2002:a05:622a:1e1a:b0:509:2d05:6979 with SMTP id d75a77b69052e-50ba385b3cbmr61063381cf.26.1774654154210; Fri, 27 Mar 2026 16:29:14 -0700 (PDT) X-Received: by 2002:a05:622a:1e1a:b0:509:2d05:6979 with SMTP id d75a77b69052e-50ba385b3cbmr61063091cf.26.1774654153618; Fri, 27 Mar 2026 16:29:13 -0700 (PDT) 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 38308e7fff4ca-38c83729522sm1177991fa.14.2026.03.27.16.29.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Mar 2026 16:29:11 -0700 (PDT) From: Dmitry Baryshkov Date: Sat, 28 Mar 2026 01:28:44 +0200 Subject: [PATCH v10 09/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: <20260328-iris-platform-data-v10-9-46b92bfe7b52@oss.qualcomm.com> References: <20260328-iris-platform-data-v10-0-46b92bfe7b52@oss.qualcomm.com> In-Reply-To: <20260328-iris-platform-data-v10-0-46b92bfe7b52@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.15.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=31819; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=kcfLdyf/i3n/sbqGsrBheZhzMefHPbw3GIuF/eF39z8=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpxxKpJ2B43dF6QzU9if4EqpYDlT1Lf0M/q36Fx +B9z1pSrWuJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaccSqQAKCRCLPIo+Aiko 1XeEB/4p/HYSwMiHDi2Nioa8wmkprBu5ETrHzcDwrnskoPcxw13FMmSgT+Tp8JvnRjF5FpetMDX cso3lt2kOM3Rq6fSl5IwQt43mni63PFstV6xQac/MDsO0mGp9OBIyQhqizgBpZd79fiz0kykxXJ 6c+75f0BgBsgc0pfE1FdUej+fw/+GV5tHA1ro5eNsQcbFV+oLmeZc+Q9a47QSTzi8mU3r41mS9N m02kPI3Dg7RTrZQTq/qOsRWXaxsOp2iEy4wy+3YXi8iwgksOOxMuRVlMwQ1oIqt3fLuG617/z9r VlvLAZmqSVT0EGD4qY7uy0H4iF2BjPqXyPvr87960vWMbX9B X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Authority-Analysis: v=2.4 cv=X/Zf6WTe c=1 sm=1 tr=0 ts=69c712cb cx=c_pps a=JbAStetqSzwMeJznSMzCyw==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=EUspDBNiAAAA:8 a=UeMVAvltljHvvOQHH34A:9 a=QEXdDO2ut3YA:10 a=uxP6HrT_eTzRwkO_Te1X:22 X-Proofpoint-ORIG-GUID: XSgSbAsVxjXhasdIfwJs70mpjDq7m-bV X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzI3MDE2NSBTYWx0ZWRfX1/MYJS49FPJn L1uJk/DU/eDf724YvE8hqCAkOl685ErLs+wYz/RwkAR0H4kBYUAFPOmLn80eshNQyI4u+s+QgTC mC3XHy8aXNHPsWNC47oCrNtNPj7K/zEqYCJ2ONOrn2jSfgXuOwTDQFKP/cPTsQSkmM8fWhKHE2T sfUMyE9opKcxm329diZrEPFkJC0afdZ95jPA4FndFGRRmmtuYDFp6y16N/qQR1RmIJ8TGcNw+e0 M8ksXD4pN+pJUTmMRjuXSEeGeMrvONrjaooTXwbiTwv8Ux2mzfnqbGBLkyyfv+3G/s85LvPrlmJ GDZtpKB6Dx8EnAgzxWYJXaUCkNiDWCZuqScJdh6+WBg+J5SHLqcrEs71vXprjHM4aVvfc77x9Sq /hqGEopbWX2LTQPZiB7um6BcY/E7zLbJg4fCzXRZwoYrmPlw0toq5u8HxkjHdkNzwZj97JjI+xE zNylCVmwqST+5teESVQ== X-Proofpoint-GUID: XSgSbAsVxjXhasdIfwJs70mpjDq7m-bV X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-27_01,2026-03-26_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 malwarescore=0 priorityscore=1501 adultscore=0 impostorscore=0 spamscore=0 clxscore=1015 phishscore=0 suspectscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603270165 Finalize the logical separation of the software and hardware interface descriptions by moving hardware properties to the files specific to the particular VPU version. Reviewed-by: Dikshita Agarwal Signed-off-by: Dmitry Baryshkov --- drivers/media/platform/qcom/iris/Makefile | 6 +- .../iris/{iris_platform_gen1.c =3D> iris_hfi_gen1.c} | 134 ------------- .../iris/{iris_platform_gen2.c =3D> iris_hfi_gen2.c} | 214 ---------------= ------ .../platform/qcom/iris/iris_platform_common.h | 3 + .../platform/qcom/iris/iris_platform_sm8250.h | 29 +++ .../platform/qcom/iris/iris_platform_sm8550.h | 31 +++ .../media/platform/qcom/iris/iris_platform_vpu2.c | 124 ++++++++++++ .../media/platform/qcom/iris/iris_platform_vpu3x.c | 204 +++++++++++++++++= +++ 8 files changed, 395 insertions(+), 350 deletions(-) diff --git a/drivers/media/platform/qcom/iris/Makefile b/drivers/media/plat= form/qcom/iris/Makefile index 2fde45f81727..48e415cbc439 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_vpu3x.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 67% rename from drivers/media/platform/qcom/iris/iris_platform_gen1.c rename to drivers/media/platform/qcom/iris/iris_hfi_gen1.c index 8875f90d487e..60f51a1ba941 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen1.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1.c @@ -3,38 +3,16 @@ * 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 +226,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", "mmcx" }; - -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_vdec_input_config_param_default[] =3D { HFI_PROPERTY_CONFIG_VIDEOCORES_USAGE, HFI_PROPERTY_PARAM_UNCOMPRESSED_FORMAT_SELECT, @@ -356,65 +284,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, - .get_vpu_buffer_size =3D iris_vpu_buf_size, - .vpu_ops =3D &iris_vpu2_ops, - .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), - .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, - .get_vpu_buffer_size =3D iris_vpu_buf_size, - .vpu_ops =3D &iris_vpu2_ops, - .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), - .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 77% rename from drivers/media/platform/qcom/iris/iris_platform_gen2.c rename to drivers/media/platform/qcom/iris/iris_hfi_gen2.c index 05fbab276100..ce8490d64854 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_vdec_input_config_params_default[] =3D { HFI_PROP_BITSTREAM_RESOLUTION, HFI_PROP_CROP_OFFSETS, @@ -971,140 +894,3 @@ const struct iris_firmware_data iris_hfi_gen2_data = =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, - .get_vpu_buffer_size =3D iris_vpu_buf_size, - .vpu_ops =3D &iris_vpu3_ops, - .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), - .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_data, - .get_vpu_buffer_size =3D iris_vpu33_buf_size, - .vpu_ops =3D &iris_vpu33_ops, - .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), - .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_data, - .get_vpu_buffer_size =3D iris_vpu33_buf_size, - .vpu_ops =3D &iris_vpu35_ops, - .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), - .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, - .get_vpu_buffer_size =3D iris_vpu_buf_size, - .vpu_ops =3D &iris_vpu3_ops, - .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), - .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 5af6d9f49f01..6dfead673393 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_common.h +++ b/drivers/media/platform/qcom/iris/iris_platform_common.h @@ -40,6 +40,9 @@ 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_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..50306043eb8e --- /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", "mmcx" }; + +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..ab2a19aa9c36 --- /dev/null +++ b/drivers/media/platform/qcom/iris/iris_platform_vpu2.c @@ -0,0 +1,124 @@ +// 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 iris_fmts_vpu2_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_vpu2 =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 iris_icc_info_vpu2[] =3D { + { "cpu-cfg", 1000, 1000 }, + { "video-mem", 1000, 15000000 }, +}; + +static const char * const iris_clk_reset_table_vpu2[] =3D { "bus", "core" = }; + +static const char * const iris_pmdomain_table_vpu2[] =3D { "venus", "vcode= c0" }; + +static const struct tz_cp_config tz_cp_config_vpu2[] =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, + .get_vpu_buffer_size =3D iris_vpu_buf_size, + .vpu_ops =3D &iris_vpu2_ops, + .icc_tbl =3D iris_icc_info_vpu2, + .icc_tbl_size =3D ARRAY_SIZE(iris_icc_info_vpu2), + .bw_tbl_dec =3D sc7280_bw_table_dec, + .bw_tbl_dec_size =3D ARRAY_SIZE(sc7280_bw_table_dec), + .pmdomain_tbl =3D iris_pmdomain_table_vpu2, + .pmdomain_tbl_size =3D ARRAY_SIZE(iris_pmdomain_table_vpu2), + .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 iris_fmts_vpu2_dec, + .inst_iris_fmts_size =3D ARRAY_SIZE(iris_fmts_vpu2_dec), + .inst_caps =3D &platform_inst_cap_vpu2, + .tz_cp_config_data =3D tz_cp_config_vpu2, + .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_vpu2), + .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, + .get_vpu_buffer_size =3D iris_vpu_buf_size, + .vpu_ops =3D &iris_vpu2_ops, + .icc_tbl =3D iris_icc_info_vpu2, + .icc_tbl_size =3D ARRAY_SIZE(iris_icc_info_vpu2), + .clk_rst_tbl =3D iris_clk_reset_table_vpu2, + .clk_rst_tbl_size =3D ARRAY_SIZE(iris_clk_reset_table_vpu2), + .bw_tbl_dec =3D sm8250_bw_table_dec, + .bw_tbl_dec_size =3D ARRAY_SIZE(sm8250_bw_table_dec), + .pmdomain_tbl =3D iris_pmdomain_table_vpu2, + .pmdomain_tbl_size =3D ARRAY_SIZE(iris_pmdomain_table_vpu2), + .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 iris_fmts_vpu2_dec, + .inst_iris_fmts_size =3D ARRAY_SIZE(iris_fmts_vpu2_dec), + .inst_caps =3D &platform_inst_cap_vpu2, + .tz_cp_config_data =3D tz_cp_config_vpu2, + .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_vpu2), + .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_vpu3x.c b/drive= rs/media/platform/qcom/iris/iris_platform_vpu3x.c new file mode 100644 index 000000000000..c2496aa0f851 --- /dev/null +++ b/drivers/media/platform/qcom/iris/iris_platform_vpu3x.c @@ -0,0 +1,204 @@ +// 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" + +static struct iris_fmt iris_fmts_vpu3x_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 iris_icc_info_vpu3x[] =3D { + { "cpu-cfg", 1000, 1000 }, + { "video-mem", 1000, 15000000 }, +}; + +static const struct bw_info iris_bw_table_dec_vpu3x[] =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 iris_pmdomain_table_vpu3x[] =3D { "venus", "vcod= ec0" }; + +static const char * const iris_opp_pd_table_vpu3x[] =3D { "mxc", "mmcx" }; + +static const char * const iris_opp_clk_table_vpu3x[] =3D { + "vcodec0_core", + NULL, +}; + +static const struct tz_cp_config tz_cp_config_vpu3[] =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, + .get_vpu_buffer_size =3D iris_vpu_buf_size, + .vpu_ops =3D &iris_vpu3_ops, + .icc_tbl =3D iris_icc_info_vpu3x, + .icc_tbl_size =3D ARRAY_SIZE(iris_icc_info_vpu3x), + .clk_rst_tbl =3D sm8550_clk_reset_table, + .clk_rst_tbl_size =3D ARRAY_SIZE(sm8550_clk_reset_table), + .bw_tbl_dec =3D iris_bw_table_dec_vpu3x, + .bw_tbl_dec_size =3D ARRAY_SIZE(iris_bw_table_dec_vpu3x), + .pmdomain_tbl =3D iris_pmdomain_table_vpu3x, + .pmdomain_tbl_size =3D ARRAY_SIZE(iris_pmdomain_table_vpu3x), + .opp_pd_tbl =3D iris_opp_pd_table_vpu3x, + .opp_pd_tbl_size =3D ARRAY_SIZE(iris_opp_pd_table_vpu3x), + .clk_tbl =3D sm8550_clk_table, + .clk_tbl_size =3D ARRAY_SIZE(sm8550_clk_table), + .opp_clk_tbl =3D iris_opp_clk_table_vpu3x, + /* Upper bound of DMA address range */ + .dma_mask =3D 0xe0000000 - 1, + .fwname =3D "qcom/vpu/vpu30_p4_s6.mbn", + .inst_iris_fmts =3D iris_fmts_vpu3x_dec, + .inst_iris_fmts_size =3D ARRAY_SIZE(iris_fmts_vpu3x_dec), + .inst_caps =3D &platform_inst_cap_qcs8300, + .tz_cp_config_data =3D tz_cp_config_vpu3, + .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_vpu3), + .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, + .get_vpu_buffer_size =3D iris_vpu_buf_size, + .vpu_ops =3D &iris_vpu3_ops, + .icc_tbl =3D iris_icc_info_vpu3x, + .icc_tbl_size =3D ARRAY_SIZE(iris_icc_info_vpu3x), + .clk_rst_tbl =3D sm8550_clk_reset_table, + .clk_rst_tbl_size =3D ARRAY_SIZE(sm8550_clk_reset_table), + .bw_tbl_dec =3D iris_bw_table_dec_vpu3x, + .bw_tbl_dec_size =3D ARRAY_SIZE(iris_bw_table_dec_vpu3x), + .pmdomain_tbl =3D iris_pmdomain_table_vpu3x, + .pmdomain_tbl_size =3D ARRAY_SIZE(iris_pmdomain_table_vpu3x), + .opp_pd_tbl =3D iris_opp_pd_table_vpu3x, + .opp_pd_tbl_size =3D ARRAY_SIZE(iris_opp_pd_table_vpu3x), + .clk_tbl =3D sm8550_clk_table, + .clk_tbl_size =3D ARRAY_SIZE(sm8550_clk_table), + .opp_clk_tbl =3D iris_opp_clk_table_vpu3x, + /* Upper bound of DMA address range */ + .dma_mask =3D 0xe0000000 - 1, + .fwname =3D "qcom/vpu/vpu30_p4.mbn", + .inst_iris_fmts =3D iris_fmts_vpu3x_dec, + .inst_iris_fmts_size =3D ARRAY_SIZE(iris_fmts_vpu3x_dec), + .inst_caps =3D &platform_inst_cap_sm8550, + .tz_cp_config_data =3D tz_cp_config_vpu3, + .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_vpu3), + .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_data, + .get_vpu_buffer_size =3D iris_vpu33_buf_size, + .vpu_ops =3D &iris_vpu33_ops, + .icc_tbl =3D iris_icc_info_vpu3x, + .icc_tbl_size =3D ARRAY_SIZE(iris_icc_info_vpu3x), + .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 iris_bw_table_dec_vpu3x, + .bw_tbl_dec_size =3D ARRAY_SIZE(iris_bw_table_dec_vpu3x), + .pmdomain_tbl =3D iris_pmdomain_table_vpu3x, + .pmdomain_tbl_size =3D ARRAY_SIZE(iris_pmdomain_table_vpu3x), + .opp_pd_tbl =3D iris_opp_pd_table_vpu3x, + .opp_pd_tbl_size =3D ARRAY_SIZE(iris_opp_pd_table_vpu3x), + .clk_tbl =3D sm8550_clk_table, + .clk_tbl_size =3D ARRAY_SIZE(sm8550_clk_table), + .opp_clk_tbl =3D iris_opp_clk_table_vpu3x, + /* Upper bound of DMA address range */ + .dma_mask =3D 0xe0000000 - 1, + .fwname =3D "qcom/vpu/vpu33_p4.mbn", + .inst_iris_fmts =3D iris_fmts_vpu3x_dec, + .inst_iris_fmts_size =3D ARRAY_SIZE(iris_fmts_vpu3x_dec), + .inst_caps =3D &platform_inst_cap_sm8550, + .tz_cp_config_data =3D tz_cp_config_vpu3, + .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_vpu3), + .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_data, + .get_vpu_buffer_size =3D iris_vpu33_buf_size, + .vpu_ops =3D &iris_vpu35_ops, + .icc_tbl =3D iris_icc_info_vpu3x, + .icc_tbl_size =3D ARRAY_SIZE(iris_icc_info_vpu3x), + .clk_rst_tbl =3D sm8750_clk_reset_table, + .clk_rst_tbl_size =3D ARRAY_SIZE(sm8750_clk_reset_table), + .bw_tbl_dec =3D iris_bw_table_dec_vpu3x, + .bw_tbl_dec_size =3D ARRAY_SIZE(iris_bw_table_dec_vpu3x), + .pmdomain_tbl =3D iris_pmdomain_table_vpu3x, + .pmdomain_tbl_size =3D ARRAY_SIZE(iris_pmdomain_table_vpu3x), + .opp_pd_tbl =3D iris_opp_pd_table_vpu3x, + .opp_pd_tbl_size =3D ARRAY_SIZE(iris_opp_pd_table_vpu3x), + .clk_tbl =3D sm8750_clk_table, + .clk_tbl_size =3D ARRAY_SIZE(sm8750_clk_table), + .opp_clk_tbl =3D iris_opp_clk_table_vpu3x, + /* Upper bound of DMA address range */ + .dma_mask =3D 0xe0000000 - 1, + .fwname =3D "qcom/vpu/vpu35_p4.mbn", + .inst_iris_fmts =3D iris_fmts_vpu3x_dec, + .inst_iris_fmts_size =3D ARRAY_SIZE(iris_fmts_vpu3x_dec), + .inst_caps =3D &platform_inst_cap_sm8550, + .tz_cp_config_data =3D tz_cp_config_vpu3, + .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_vpu3), + .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 From nobody Thu Apr 2 14:06:37 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 986D539BFEC for ; Fri, 27 Mar 2026 23:29:18 +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=1774654160; cv=none; b=ZOsy647820rBvSg2GMc0qQqSiOCHlFbp0j70XbmffFK7Ym48sIifEXSpX1S+tGfnRZqvV8zHRDtd7ahOPywXpZfy6dskNHo+x6tvoTHILBiGFXjiaiPduUEbXJgsDFpA+ilBnAlOBYP86QU13ALMSpnPERH+Rc0oiTAjIt4LdSw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774654160; c=relaxed/simple; bh=zh1ftPGxeFGHAkFhmHaCfKwMjNGnY1Er2XhYuU4Xt8E=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Pg0vTZi9uQnoXrPDmTCcoZveZY/pWL5Yw8WjEMDkkgKq+g0hl1EDZ/lpLehphpm+jDtfRs+TiRIpsJpqNhap8bymFR3QibPiuUFIcDBjv699Pglxv9YBBeudExe9w5r3giFqw/mY7S4qpCT9uf2WvZNwVtAxi7AOO+ozlDow7w4= 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=YRKpaYiV; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=aDmPw/Hc; 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="YRKpaYiV"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="aDmPw/Hc" Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62RN4PDa103343 for ; Fri, 27 Mar 2026 23:29:17 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= J6Tdn/7Z1pLbIgw5i2DyFx+KougHn1YOQ3OOkdYRo/Q=; b=YRKpaYiVwFW2YWOT g6TER3OYDv3QWnDTMnhmCx/XA+O8fvv+AIetbnOfD7LThhRD9aOyVZrfHQf4msYv /z4a1lXSdOzr7o93GfVrwcPOGsPzsPaB1m6Xoy2ec6wy+wKygrarfWyyzmjlLKXn hBcwrCS8e7mp2cLlwn4wuF+IoXlUPsp2XA18rnlpVykmp99zW68US27UlBx7Hp4S J6SyRP2/nGWKfoZmImAIovqIS3YAGL2+FG2nz019g7YV6wskzafBDf8mY0oEuChW OQ3Wolgk/rjzPiMp1yue33remPztWT8Rpy3+htxyk25Oby2xwvJVjcYwaz+QfAOs awtfxA== Received: from mail-qv1-f71.google.com (mail-qv1-f71.google.com [209.85.219.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d5mn1388q-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 27 Mar 2026 23:29:17 +0000 (GMT) Received: by mail-qv1-f71.google.com with SMTP id 6a1803df08f44-89cc5305180so8781266d6.0 for ; Fri, 27 Mar 2026 16:29:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1774654157; x=1775258957; 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=J6Tdn/7Z1pLbIgw5i2DyFx+KougHn1YOQ3OOkdYRo/Q=; b=aDmPw/HckA9D7QHzsxzqDdG4/KiHTosCWNemXFGIoTtzbUH7x8QhGPcy+QBcawffAs aO/DUufqYyTSRVHeOxom0hXjDpvxsErjl0xlP/jhFzO9Z4igsjOqkoTGHX4flIARXy1+ GqzAf8ug5xoE7OgiqAGE7O+0mnw8A5cnSd0boetse3kXiBzFYbABTDJTS5UPKsALnquO VZxt1WtFscOIKGAOum+NensLNdPNkAVfExlzQSso2fArtPCWIEuL5owoLX1gyptCppNl F7BNx/V1/F5LJIdySszK8vH6fm2O+4v2bRBtUwZZ10ZRybdzobqZuaSpL9qYnrFkA7qg 7JRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774654157; x=1775258957; 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=J6Tdn/7Z1pLbIgw5i2DyFx+KougHn1YOQ3OOkdYRo/Q=; b=dQJGC1JhSVPPPl2mR5+Ry7EceOQKs+d7NTeKiOfysaeyrVn6B29vopPM9754kPihg2 6vpqWD3qvHM/k6qMThycq7KwPbAxwsmvJUKSludxsCovVwwyXF53bnc46nHZso51TC/H G9ibBex4O0rdpFxe0uT3AE/qplzHgNgodpEAZCfvc0TVvkmniAur3Da1fw+niqnmOSdp kaP2LDEK0DAQHr7rsfez83GNs/9qFNRgy54UUdoho8RD7EW6sOx+GoHWwGhgaOHvi8Du iPjv5t6PmqIGnu+eAp0P+I5P4Fg5GtIpwlv7KI7oB70jj5ZzpwDxsaNptDyEktQcup4K 2oRQ== X-Forwarded-Encrypted: i=1; AJvYcCVay7m9TlKEqzqWAbTS62G7vx8XrOqdv+ArtlLlE0+JAEWO4u+aZ3i01zAJ5Fzxx/+RLCoxta0e92u1t6Q=@vger.kernel.org X-Gm-Message-State: AOJu0YxOjrS3UYI+xjbFX7dylLxAwwKziGaIp1JIVI+1r18zoM/mDs41 1GxspOYjGeFKVcuupqPkESKaCAUfTAuepKnYFHiPxrk5G+AAArQ24S0ypfSWhYkw/WoHwoY9vFH Fvs3xJGr81/SqppZrBJsHAdG1t7cgXh0r7Q9lbmbj4AWyfMYYJ1ewEgAiiWxLBafxozE= X-Gm-Gg: ATEYQzwME7lPtcw7UZM+tUrB+KLh/EDCEQYZStXscTrYjIU1QTPcLzEtphor87vBONK SJtqOMFli5kidIPKpZivxX5oQnx7ijFDt7bvWiW5LTxUhAD7snIoBisXqXljY5EtsEmAbMqh7XB NNTQOrUZpIv4+Sfd34yBlEvyoJ5v2PTr35IChQhjySyFaPOu4DsOgeFDVxvKoAdQ4/4XM8w3G0I LapyxxGKKywyO8EMpYg5wEZdee4LcHIunZih0ZH2wrcFAk3H0PJucUfv8LgpOvtfj7qagmJxxWN w+pDmmhxyrf4wODAWq+g9Q7O7nk1FoSFibA5jFKU8wtuVC51RojP3oD8VRZO0W2y4jmPIL70qKS GVgKkMaC/UQunJxwPmEBhITu06PccjjQLaUHUGBlqZbAy7l7J0MsBwzWB0/eY80hbasitcNaeWA 89pMseChWQQUnz/T8sWqfwE3xrBsFnpxUHf0E= X-Received: by 2002:a05:622a:2d6:b0:50b:3705:c0af with SMTP id d75a77b69052e-50ba394948fmr63612381cf.53.1774654156980; Fri, 27 Mar 2026 16:29:16 -0700 (PDT) X-Received: by 2002:a05:622a:2d6:b0:50b:3705:c0af with SMTP id d75a77b69052e-50ba394948fmr63612141cf.53.1774654156600; Fri, 27 Mar 2026 16:29:16 -0700 (PDT) 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 38308e7fff4ca-38c83729522sm1177991fa.14.2026.03.27.16.29.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Mar 2026 16:29:15 -0700 (PDT) From: Dmitry Baryshkov Date: Sat, 28 Mar 2026 01:28:45 +0200 Subject: [PATCH v10 10/11] media: qcom: iris: use new firmware name for SM8250 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: <20260328-iris-platform-data-v10-10-46b92bfe7b52@oss.qualcomm.com> References: <20260328-iris-platform-data-v10-0-46b92bfe7b52@oss.qualcomm.com> In-Reply-To: <20260328-iris-platform-data-v10-0-46b92bfe7b52@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.15.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1239; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=zh1ftPGxeFGHAkFhmHaCfKwMjNGnY1Er2XhYuU4Xt8E=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpxxKpDo8Iy/TNwBKnNbG3wNNE39XRmWHnOAm51 W51u0ONOBGJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaccSqQAKCRCLPIo+Aiko 1Z5pB/0YMDCtwu2NMmtnBz3kfo586cFtwbvzjs0uwJrg58mzZOLcnTlJ3lGAdsK8/hmq1Qg1wat Q57DZvDv4aZhIsN8oN4LVydFk3pyTv8YXtTPnlZ1y2L/UfDEGq556EoNvF8IasIP76DBNhCzDmE JReT9vZWW4MG1V1BPDSssxBcB6xb2QSbIMXMDUE6OcrnAbdE5/iyd7O6aCO2zsSRxEAIq4gYXhn bnD94akGnIFuXs8qcOq87IGJxYDUHl56gNB8IoUEgRoPwP9S7+AwWWoIsCAtoqShI0pC0UCtooM HzANrWiSfAHtWlycDJarz+DhTalUuKyVQbflhAA/gF3c0j51 X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzI3MDE2NSBTYWx0ZWRfX0VmNtLltart/ 8Ib0XxbjYcK8kd8Fz3fXie02QJVRxY3COd+aYXtMIBN389jdVjUyy4T1lg0/eiyGJZM1GGKRiWQ UWFEhCkYEu+HXQrBgp031PCOk7/qCdZvVq6zZiyUVPyQNGsyLDCiUIoRlx8pTT1gv8y/Mk7H6yp pImqggRHaxjYr7kjWmNiqsLyBdQc5MUNzCGh9JK36L5VmtoVzecuk1R7fY8phdPp62PoTxlmdgJ Y6kbz459GfBls7hAGzEK1fDFbIIaLyr0zyB7/8JOHcZN61soKyBgnUeVEVXh8azTCv2i2Knb5RR +XTGELSn2yHFy2jFG/lZDMYupLjaFMygjNWxmaxrf/qcwLzh9k08CIyxMBXNugw3sV3Z728OhaR Lgapmhtpml291lSAGOdieIKev/caLz89OrFjkr3wf6Z/Vi0LlblWCKWIhmzosdR1IRSWxblqMgS OvNv63mGw8U3QIpX/AQ== X-Authority-Analysis: v=2.4 cv=CcwFJbrl c=1 sm=1 tr=0 ts=69c712cd cx=c_pps a=UgVkIMxJMSkC9lv97toC5g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22 a=EUspDBNiAAAA:8 a=nz9G3-SO7wN5dIpBwN0A:9 a=QEXdDO2ut3YA:10 a=1HOtulTD9v-eNWfpl4qZ:22 X-Proofpoint-ORIG-GUID: BRgFNowlDI-gHmFJ4x6PFCNxvdgnq0ML X-Proofpoint-GUID: BRgFNowlDI-gHmFJ4x6PFCNxvdgnq0ML X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-27_01,2026-03-26_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 spamscore=0 malwarescore=0 adultscore=0 lowpriorityscore=0 bulkscore=0 impostorscore=0 priorityscore=1501 clxscore=1015 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603270165 The linux-firmware is providing the vpuNN_pM.mbn firmware for SM8250 since August of 2024. Stop using the legacy firmware name (vpu-1.0/venus.mbn) and switch to the standard firmware name schema (vpu/vpu20_p4.mbn). Reviewed-by: Vikash Garodia Reviewed-by: Dikshita Agarwal Signed-off-by: Dmitry Baryshkov --- drivers/media/platform/qcom/iris/iris_platform_vpu2.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/media/platform/qcom/iris/iris_platform_vpu2.c b/driver= s/media/platform/qcom/iris/iris_platform_vpu2.c index ab2a19aa9c36..692fbc2aab56 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_vpu2.c +++ b/drivers/media/platform/qcom/iris/iris_platform_vpu2.c @@ -111,7 +111,7 @@ const struct iris_platform_data sm8250_data =3D { .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", + .fwname =3D "qcom/vpu/vpu20_p4.mbn", .inst_iris_fmts =3D iris_fmts_vpu2_dec, .inst_iris_fmts_size =3D ARRAY_SIZE(iris_fmts_vpu2_dec), .inst_caps =3D &platform_inst_cap_vpu2, --=20 2.47.3 From nobody Thu Apr 2 14:06:37 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 D5F1B3A0B1C for ; Fri, 27 Mar 2026 23:29:22 +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=1774654166; cv=none; b=OCTZOSw7vGymizUUSfCJs8OSHpuIHdN5IhJbD6/MEVjHwG3voK8zl6e6wUjOq/c94TMWkoLruSCXrQpl53G1Kov2ZYE5yunY3yQSEoK4zvVJZZ/9unY2eNQAUjxUipFvs3+lpWrVofZscVpMzCjXWkcZmN0kYKG49UOsKEMZIPQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774654166; c=relaxed/simple; bh=tosnyhh8DtswMdbD6EGU7YTtdFXnAzWlifAthWRXRV0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=QSQxM+youeNzKE5WLNC9noH2tNtkD/8apFaJSUGMOw3C3MA9D4i5nX6pXVLCJhFcWrJ5As6WDaAUGYUuZTUNly6OQFEON3r7LQUbzo7hH4ed67BJZfnUUi0/WUuS/IPLKRDIX8DQDq7Mc7WNqpEgUChh4uG5eOAwGrxHGXMye+U= 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=ZF7LbMiw; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=TJwDfu9K; 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="ZF7LbMiw"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="TJwDfu9K" Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62RN42ep102913 for ; Fri, 27 Mar 2026 23:29:22 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= zAAZ9np3vSaZuqX49z75F1UXFOFKtBEtrhQT2MwCAZg=; b=ZF7LbMiwEIWTAXC4 uET66UTjd2FfQFN/f+6QfhVeZPv7kCAqT6INm2CKzgWS2aAfHPbjEh9gLvH6u5rz SqeXeW/oJR/q/SSON3wifZ49R8pQZSdBZpBBsKA25UB8G740nViSgYEiLwKR3Ajw TGvDPTUfaZlpr+v1rvbhRVLZWCeAJkB1OWs+spT5PwUIiIYZH0atPAhbOnBtAL9n Ioe8RTrERxNqYUDbv7DZfgXQ0zmCtbnlItjacixof2f4FIsmhk9iD3oeOQdnxi/L OSr3m8TOCEQ1cyxqr88svMCM/oHvsTt5lO0wbUme+noo5kvg0tLvNM+O35C5/4dj e0rEqA== Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d5mn1388u-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 27 Mar 2026 23:29:21 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-50917996cfaso27589501cf.0 for ; Fri, 27 Mar 2026 16:29:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1774654161; x=1775258961; 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=zAAZ9np3vSaZuqX49z75F1UXFOFKtBEtrhQT2MwCAZg=; b=TJwDfu9KPXSjtT9tamYHnk05IMovnBONh6z1Bn09ZnUUD5E5Px/QtOk0muSvlopOuw bY1pypVSiAweKilINQlN+cG3OOIhhZ93H1iuE25DFgHT8c+mURcY7eyI85W0RvkrC9Dx t7WP9ieaI4eOPI+3ZyJeMLKRceEbNQHYcY2ERAICCmx6NemX5WKrJPZ4A6fd9/QIhh7w DqzFg5rmZpiGA4WiUTLGIkyH/As4yk+d2VwiTzfbYqx1QiQRRXTkMAYJPFSc71FUc5Of TsYZTRd+rFF6p7mH4wO1tzXn4lYU8PBujxssv73/j6pQ1TB0raCF014iA0mkbcOHVU96 5xNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774654161; x=1775258961; 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=zAAZ9np3vSaZuqX49z75F1UXFOFKtBEtrhQT2MwCAZg=; b=ZgrMZEEhN6C1tXb9CQSDplxGwSbrFmSuNgtGaRTfOVEdb9UIrMjirADrfpsGNp86dz IAY9wGbrA2JSQX5zw+TmyBkw3mPWKGLdiucgdrAMTxV3yLhdeCopZFmFxxFl6n0aXpGJ vewOCPgV6CfndEI/heWnKbuWB3EiwPD5NvHiK2ZrU4d3UnvH/ViEgulPDBPVBsFs38Sd P0C64sZ2M4BtytOwiqvCG23UZRGZI31wIJqocb9BUoeI4pQAVutnP0yBjbfNEqvYobFO DHZ4djwp6kpcwu06BeoZ9lyXnJHQUYq2OBNg+E9DrFwoMYrJRxLp5Mdhyf8q/Wrt9ANW oHHA== X-Forwarded-Encrypted: i=1; AJvYcCXXra6au3Yaese/RM4WOuHhkkUehjwCJOzmzREH1Q1CQeJ6YZHq3PWm0TarC7A+UveedbvO3RPMQkQuea4=@vger.kernel.org X-Gm-Message-State: AOJu0YxMA+ISnckMom9JVgDHu7SbyuTJi98ZJPgivNOX+ZeThW2FVt2B PFOHZBSJ5tHxNyM/SaWxfw1/Cb2P6lKKPhofX+YPFBi465rfZpSIlZgLHgOmKbikuaduyvUOc8V vfLyLZw0tkeNtt5fPFPGECpAaJicuEXRzKxX3fCYIKmv40vE89zArIw9IBZ7iUDK/3/4= X-Gm-Gg: ATEYQzwh126EmSK0d0tvrLi9Y1JfOw6KFH2/QWkh1GrijSssdOcuKVVJDk01wLN3OKC t2iKBnXEE7tNS9JIRrpw/hFrurVcwsvR5735F5hlDGtjI4tsN8g3PaIJVj3bPUnPWTDwnUYd8u0 mXgLY7stbydNUXkjMuAL4Vr/bF0AQMa9OdETcKbWneDWM0q3bvcZKCR/Z3AUFwH4glTRFSlQcJG 71I1PXzywh8LfmUbLI9ccIJH1CWGonxNfIFnJxll3VSiOy71wYHBIP6BYz7uUySyUQFK+Z1mTVh 46sWZahqs0sXEdw3JW6tpY93RPt3ouX/rDVZEhtn24N8wJBh/wPmcgt3f7UvF2OO1d3zdHLcbU9 2GbdbSAaAuwe5xDbQzPBaNrauhAZM8JsrHMaNJmxpJ/Fqly+p3hhMmHATTM5pGc7IL+7Usxu8vI oQ6zBztMY9h59NoO8L+rr/0H4Jpuso/+79I90= X-Received: by 2002:a05:622a:581a:b0:50b:29f0:299c with SMTP id d75a77b69052e-50ba393eaa2mr68083561cf.60.1774654160947; Fri, 27 Mar 2026 16:29:20 -0700 (PDT) X-Received: by 2002:a05:622a:581a:b0:50b:29f0:299c with SMTP id d75a77b69052e-50ba393eaa2mr68083331cf.60.1774654160465; Fri, 27 Mar 2026 16:29:20 -0700 (PDT) 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 38308e7fff4ca-38c83729522sm1177991fa.14.2026.03.27.16.29.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Mar 2026 16:29:18 -0700 (PDT) From: Dmitry Baryshkov Date: Sat, 28 Mar 2026 01:28:46 +0200 Subject: [PATCH v10 11/11] media: qcom: iris: extract firmware description 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: <20260328-iris-platform-data-v10-11-46b92bfe7b52@oss.qualcomm.com> References: <20260328-iris-platform-data-v10-0-46b92bfe7b52@oss.qualcomm.com> In-Reply-To: <20260328-iris-platform-data-v10-0-46b92bfe7b52@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.15.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=12526; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=tosnyhh8DtswMdbD6EGU7YTtdFXnAzWlifAthWRXRV0=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpxxKpRlhJX4rfp+Vq7KdTmoWr9BA+9M3leZX3B 3zJ9PanK8KJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaccSqQAKCRCLPIo+Aiko 1QTZB/9ChAlgKNgSaGngIWIaE1Cg9NLwfgnOHvNEDqCIn3l09rKLQGlLSuqIFBa2K68rqpzx4fU ArE+qN5ZjUBGjEhC8tE1wwo4ioYZ8TbMid+j2d2y8+4hvahe1/1k68c68i72A3Fqnzu1SG+FHNl GFcI66RpS4yLecr/JVpj0QHX1aoRxZJK6IwoUJ/PQaYZrmq8lHdK/Q6IEOVPJ0YN0RREKMZTUUW gKQc5qfxHq1JhFb/UjvszWU5ETjd2KgixWGQ91a6X3g5+rfCr4wV89KR7FYcW5METx80khN1YbM +eVJYcs1mKsPzPq42AJK/6sKbRkdqbIogYSqFS9FMNIPFjAC X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzI3MDE2NSBTYWx0ZWRfX148xEteWehda 3DhKHy3s5wAl2lZqRc/Qa+9jk2ZluxRh1GTSvyBR8VahNPpctBipk8y69daoWVcINGtsF72xW1T v+ujrLVinAipzR/Vicfq71NgF/5eyx+hbm1kxoqII3o1rgyDGwSHBdYOL9gUtbQLAmTGewkpx5H pa7RPRiLBvW4Qta89CCmR/LtBqJGJ/W+eOwrG8ykf/j7y3XFvEzPL2ETZegMhmTnPMzyB7IYk02 sNTN5jdQb8aBkITU8bO41Q+Gg7zlXby0EwMrAptHJxR7jliVoiVEq8b27iE5Rth3kGalQ9CK10X ifPeDPMaF5Bdwu8LKBslr+6RsYNg8YCq1pncma7YY3zoZKzCLY+4G+zBMMa94BvaX8bk5mxA+il /3luzF9VgFfdQZNV5leSl3jmO0HvO4BQonlZppaQk3thC1AGUSTyrV//S1QsvF0p8CYzzsuVyAp xVC6OTx5RSbdQNKXxEw== X-Authority-Analysis: v=2.4 cv=CcwFJbrl c=1 sm=1 tr=0 ts=69c712d1 cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22 a=EUspDBNiAAAA:8 a=pn2aoerzR4tYcExiNNwA:9 a=QEXdDO2ut3YA:10 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-ORIG-GUID: ckWzYzODqYcDtso2mZTdUPkS2cPvenII X-Proofpoint-GUID: ckWzYzODqYcDtso2mZTdUPkS2cPvenII X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-27_01,2026-03-26_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 spamscore=0 malwarescore=0 adultscore=0 lowpriorityscore=0 bulkscore=0 impostorscore=0 priorityscore=1501 clxscore=1015 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603270165 In preparation to adding support for several firmware revisions to be used for a platform, extract the firmware description data. It incorporates firmware name, HFI ops and buffer requirements of the particular firmware build. Signed-off-by: Dmitry Baryshkov --- drivers/media/platform/qcom/iris/iris_buffer.c | 2 +- drivers/media/platform/qcom/iris/iris_core.h | 1 + drivers/media/platform/qcom/iris/iris_firmware.c | 2 +- .../platform/qcom/iris/iris_hfi_gen1_command.c | 2 +- .../platform/qcom/iris/iris_platform_common.h | 15 ++++---- .../media/platform/qcom/iris/iris_platform_vpu2.c | 20 +++++++---- .../media/platform/qcom/iris/iris_platform_vpu3x.c | 41 +++++++++++++++---= ---- drivers/media/platform/qcom/iris/iris_probe.c | 3 +- 8 files changed, 57 insertions(+), 29 deletions(-) diff --git a/drivers/media/platform/qcom/iris/iris_buffer.c b/drivers/media= /platform/qcom/iris/iris_buffer.c index fbe136360aa1..ef7f6f931557 100644 --- a/drivers/media/platform/qcom/iris/iris_buffer.c +++ b/drivers/media/platform/qcom/iris/iris_buffer.c @@ -295,7 +295,7 @@ static void iris_fill_internal_buf_info(struct iris_ins= t *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_desc->get_vpu_buffer_size(ins= t, buffer_type); buffers->min_count =3D iris_vpu_buf_count(inst, buffer_type); } =20 diff --git a/drivers/media/platform/qcom/iris/iris_core.h b/drivers/media/p= latform/qcom/iris/iris_core.h index e0ca245c8c63..7f36eb65dcbf 100644 --- a/drivers/media/platform/qcom/iris/iris_core.h +++ b/drivers/media/platform/qcom/iris/iris_core.h @@ -99,6 +99,7 @@ struct iris_core { 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 iris_firmware_desc *iris_firmware_desc; 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_firmware.c b/drivers/med= ia/platform/qcom/iris/iris_firmware.c index bc6c5c3e00c3..1a476146d758 100644 --- a/drivers/media/platform/qcom/iris/iris_firmware.c +++ b/drivers/media/platform/qcom/iris/iris_firmware.c @@ -72,7 +72,7 @@ int iris_fw_load(struct iris_core *core) ret =3D of_property_read_string_index(core->dev->of_node, "firmware-name"= , 0, &fwpath); if (ret) - fwpath =3D core->iris_platform_data->fwname; + fwpath =3D core->iris_firmware_desc->fwname; =20 ret =3D iris_load_fw_to_memory(core, fwpath); if (ret) { 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 3fb90a466a64..83373862655f 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_desc->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 6dfead673393..6a108173be35 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_common.h +++ b/drivers/media/platform/qcom/iris/iris_platform_common.h @@ -250,14 +250,18 @@ struct iris_firmware_data { unsigned int enc_op_int_buf_tbl_size; }; =20 +struct iris_firmware_desc { + const struct iris_firmware_data *firmware_data; + u32 (*get_vpu_buffer_size)(struct iris_inst *inst, enum iris_buffer_type = buffer_type); + const char *fwname; +}; + struct iris_platform_data { /* - * XXX: remove firmware_data pointer and consider moving - * get_vpu_buffer_size pointer once we have platforms supporting both - * firmware kinds. + * XXX: replace with gen1 / gen2 pointers once we have platforms + * supporting both firmware kinds. */ - const struct iris_firmware_data *firmware_data; - u32 (*get_vpu_buffer_size)(struct iris_inst *inst, enum iris_buffer_type = buffer_type); + const struct iris_firmware_desc *firmware_desc; =20 const struct vpu_ops *vpu_ops; const struct icc_info *icc_tbl; @@ -276,7 +280,6 @@ struct iris_platform_data { const char * const *controller_rst_tbl; unsigned int controller_rst_tbl_size; u64 dma_mask; - const char *fwname; 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_vpu2.c b/driver= s/media/platform/qcom/iris/iris_platform_vpu2.c index 692fbc2aab56..ff8ce078238a 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_vpu2.c +++ b/drivers/media/platform/qcom/iris/iris_platform_vpu2.c @@ -16,6 +16,18 @@ #include "iris_platform_sc7280.h" #include "iris_platform_sm8250.h" =20 +const struct iris_firmware_desc iris_vpu20_p1_gen1_desc =3D { + .firmware_data =3D &iris_hfi_gen1_data, + .get_vpu_buffer_size =3D iris_vpu_buf_size, + .fwname =3D "qcom/vpu/vpu20_p1.mbn", +}; + +const struct iris_firmware_desc iris_vpu20_p4_gen1_desc =3D { + .firmware_data =3D &iris_hfi_gen1_data, + .get_vpu_buffer_size =3D iris_vpu_buf_size, + .fwname =3D "qcom/vpu/vpu20_p4.mbn", +}; + static struct iris_fmt iris_fmts_vpu2_dec[] =3D { [IRIS_FMT_H264] =3D { .pixfmt =3D V4L2_PIX_FMT_H264, @@ -62,8 +74,7 @@ static const struct tz_cp_config tz_cp_config_vpu2[] =3D { }; =20 const struct iris_platform_data sc7280_data =3D { - .firmware_data =3D &iris_hfi_gen1_data, - .get_vpu_buffer_size =3D iris_vpu_buf_size, + .firmware_desc =3D &iris_vpu20_p1_gen1_desc, .vpu_ops =3D &iris_vpu2_ops, .icc_tbl =3D iris_icc_info_vpu2, .icc_tbl_size =3D ARRAY_SIZE(iris_icc_info_vpu2), @@ -78,7 +89,6 @@ const struct iris_platform_data sc7280_data =3D { .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 iris_fmts_vpu2_dec, .inst_iris_fmts_size =3D ARRAY_SIZE(iris_fmts_vpu2_dec), .inst_caps =3D &platform_inst_cap_vpu2, @@ -93,8 +103,7 @@ const struct iris_platform_data sc7280_data =3D { }; =20 const struct iris_platform_data sm8250_data =3D { - .firmware_data =3D &iris_hfi_gen1_data, - .get_vpu_buffer_size =3D iris_vpu_buf_size, + .firmware_desc =3D &iris_vpu20_p4_gen1_desc, .vpu_ops =3D &iris_vpu2_ops, .icc_tbl =3D iris_icc_info_vpu2, .icc_tbl_size =3D ARRAY_SIZE(iris_icc_info_vpu2), @@ -111,7 +120,6 @@ const struct iris_platform_data sm8250_data =3D { .opp_clk_tbl =3D sm8250_opp_clk_table, /* Upper bound of DMA address range */ .dma_mask =3D 0xe0000000 - 1, - .fwname =3D "qcom/vpu/vpu20_p4.mbn", .inst_iris_fmts =3D iris_fmts_vpu2_dec, .inst_iris_fmts_size =3D ARRAY_SIZE(iris_fmts_vpu2_dec), .inst_caps =3D &platform_inst_cap_vpu2, diff --git a/drivers/media/platform/qcom/iris/iris_platform_vpu3x.c b/drive= rs/media/platform/qcom/iris/iris_platform_vpu3x.c index c2496aa0f851..c3b6cd6fe777 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_vpu3x.c +++ b/drivers/media/platform/qcom/iris/iris_platform_vpu3x.c @@ -17,6 +17,30 @@ #include "iris_platform_sm8650.h" #include "iris_platform_sm8750.h" =20 +const struct iris_firmware_desc iris_vpu30_p4_s6_gen2_desc =3D { + .firmware_data =3D &iris_hfi_gen2_data, + .get_vpu_buffer_size =3D iris_vpu_buf_size, + .fwname =3D "qcom/vpu/vpu30_p4_s6.mbn", +}; + +const struct iris_firmware_desc iris_vpu30_p4_gen2_desc =3D { + .firmware_data =3D &iris_hfi_gen2_data, + .get_vpu_buffer_size =3D iris_vpu_buf_size, + .fwname =3D "qcom/vpu/vpu30_p4.mbn", +}; + +const struct iris_firmware_desc iris_vpu33_p4_gen2_desc =3D { + .firmware_data =3D &iris_hfi_gen2_data, + .get_vpu_buffer_size =3D iris_vpu33_buf_size, + .fwname =3D "qcom/vpu/vpu33_p4.mbn", +}; + +const struct iris_firmware_desc iris_vpu35_p4_gen2_desc =3D { + .firmware_data =3D &iris_hfi_gen2_data, + .get_vpu_buffer_size =3D iris_vpu33_buf_size, + .fwname =3D "qcom/vpu/vpu35_p4.mbn", +}; + static struct iris_fmt iris_fmts_vpu3x_dec[] =3D { [IRIS_FMT_H264] =3D { .pixfmt =3D V4L2_PIX_FMT_H264, @@ -71,8 +95,7 @@ static const struct tz_cp_config tz_cp_config_vpu3[] =3D { * - inst_caps to platform_inst_cap_qcs8300 */ const struct iris_platform_data qcs8300_data =3D { - .firmware_data =3D &iris_hfi_gen2_data, - .get_vpu_buffer_size =3D iris_vpu_buf_size, + .firmware_desc =3D &iris_vpu30_p4_s6_gen2_desc, .vpu_ops =3D &iris_vpu3_ops, .icc_tbl =3D iris_icc_info_vpu3x, .icc_tbl_size =3D ARRAY_SIZE(iris_icc_info_vpu3x), @@ -89,7 +112,6 @@ const struct iris_platform_data qcs8300_data =3D { .opp_clk_tbl =3D iris_opp_clk_table_vpu3x, /* Upper bound of DMA address range */ .dma_mask =3D 0xe0000000 - 1, - .fwname =3D "qcom/vpu/vpu30_p4_s6.mbn", .inst_iris_fmts =3D iris_fmts_vpu3x_dec, .inst_iris_fmts_size =3D ARRAY_SIZE(iris_fmts_vpu3x_dec), .inst_caps =3D &platform_inst_cap_qcs8300, @@ -102,8 +124,7 @@ const struct iris_platform_data qcs8300_data =3D { }; =20 const struct iris_platform_data sm8550_data =3D { - .firmware_data =3D &iris_hfi_gen2_data, - .get_vpu_buffer_size =3D iris_vpu_buf_size, + .firmware_desc =3D &iris_vpu30_p4_gen2_desc, .vpu_ops =3D &iris_vpu3_ops, .icc_tbl =3D iris_icc_info_vpu3x, .icc_tbl_size =3D ARRAY_SIZE(iris_icc_info_vpu3x), @@ -120,7 +141,6 @@ const struct iris_platform_data sm8550_data =3D { .opp_clk_tbl =3D iris_opp_clk_table_vpu3x, /* Upper bound of DMA address range */ .dma_mask =3D 0xe0000000 - 1, - .fwname =3D "qcom/vpu/vpu30_p4.mbn", .inst_iris_fmts =3D iris_fmts_vpu3x_dec, .inst_iris_fmts_size =3D ARRAY_SIZE(iris_fmts_vpu3x_dec), .inst_caps =3D &platform_inst_cap_sm8550, @@ -137,11 +157,9 @@ const struct iris_platform_data sm8550_data =3D { * - 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_data, - .get_vpu_buffer_size =3D iris_vpu33_buf_size, + .firmware_desc =3D &iris_vpu33_p4_gen2_desc, .vpu_ops =3D &iris_vpu33_ops, .icc_tbl =3D iris_icc_info_vpu3x, .icc_tbl_size =3D ARRAY_SIZE(iris_icc_info_vpu3x), @@ -160,7 +178,6 @@ const struct iris_platform_data sm8650_data =3D { .opp_clk_tbl =3D iris_opp_clk_table_vpu3x, /* Upper bound of DMA address range */ .dma_mask =3D 0xe0000000 - 1, - .fwname =3D "qcom/vpu/vpu33_p4.mbn", .inst_iris_fmts =3D iris_fmts_vpu3x_dec, .inst_iris_fmts_size =3D ARRAY_SIZE(iris_fmts_vpu3x_dec), .inst_caps =3D &platform_inst_cap_sm8550, @@ -173,8 +190,7 @@ const struct iris_platform_data sm8650_data =3D { }; =20 const struct iris_platform_data sm8750_data =3D { - .firmware_data =3D &iris_hfi_gen2_data, - .get_vpu_buffer_size =3D iris_vpu33_buf_size, + .firmware_desc =3D &iris_vpu35_p4_gen2_desc, .vpu_ops =3D &iris_vpu35_ops, .icc_tbl =3D iris_icc_info_vpu3x, .icc_tbl_size =3D ARRAY_SIZE(iris_icc_info_vpu3x), @@ -191,7 +207,6 @@ const struct iris_platform_data sm8750_data =3D { .opp_clk_tbl =3D iris_opp_clk_table_vpu3x, /* Upper bound of DMA address range */ .dma_mask =3D 0xe0000000 - 1, - .fwname =3D "qcom/vpu/vpu35_p4.mbn", .inst_iris_fmts =3D iris_fmts_vpu3x_dec, .inst_iris_fmts_size =3D ARRAY_SIZE(iris_fmts_vpu3x_dec), .inst_caps =3D &platform_inst_cap_sm8550, diff --git a/drivers/media/platform/qcom/iris/iris_probe.c b/drivers/media/= platform/qcom/iris/iris_probe.c index dd87504c2e67..d36f0c0e785b 100644 --- a/drivers/media/platform/qcom/iris/iris_probe.c +++ b/drivers/media/platform/qcom/iris/iris_probe.c @@ -251,7 +251,8 @@ 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; + core->iris_firmware_desc =3D core->iris_platform_data->firmware_desc; + core->iris_firmware_data =3D core->iris_firmware_desc->firmware_data; =20 core->ubwc_cfg =3D qcom_ubwc_config_get_data(); if (IS_ERR(core->ubwc_cfg)) --=20 2.47.3